handsontable 14.4.0 → 14.5.0-next-ede811d-20240717

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 (446) hide show
  1. package/3rdparty/walkontable/src/calculator/renderAllColumns.js +1 -1
  2. package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
  3. package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
  4. package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
  5. package/3rdparty/walkontable/src/calculator/viewportColumns.js +3 -3
  6. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +3 -3
  7. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  8. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  9. package/3rdparty/walkontable/src/cell/coords.js +3 -3
  10. package/3rdparty/walkontable/src/cell/coords.mjs +3 -3
  11. package/3rdparty/walkontable/src/cell/range.js +4 -4
  12. package/3rdparty/walkontable/src/cell/range.mjs +3 -3
  13. package/3rdparty/walkontable/src/core/_base.js +2 -2
  14. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  15. package/3rdparty/walkontable/src/core/clone.js +2 -2
  16. package/3rdparty/walkontable/src/core/clone.mjs +1 -1
  17. package/3rdparty/walkontable/src/core/core.js +17 -1
  18. package/3rdparty/walkontable/src/core/core.mjs +16 -0
  19. package/3rdparty/walkontable/src/event.js +2 -2
  20. package/3rdparty/walkontable/src/event.mjs +2 -2
  21. package/3rdparty/walkontable/src/facade/core.js +4 -1
  22. package/3rdparty/walkontable/src/facade/core.mjs +3 -0
  23. package/3rdparty/walkontable/src/filter/column.js +1 -1
  24. package/3rdparty/walkontable/src/filter/column.mjs +1 -1
  25. package/3rdparty/walkontable/src/filter/row.js +1 -1
  26. package/3rdparty/walkontable/src/filter/row.mjs +1 -1
  27. package/3rdparty/walkontable/src/index.js +1 -1
  28. package/3rdparty/walkontable/src/overlay/_base.js +2 -2
  29. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  30. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  31. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  32. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +1 -1
  33. package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -1
  34. package/3rdparty/walkontable/src/overlay/top.js +2 -2
  35. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  36. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +2 -2
  37. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
  38. package/3rdparty/walkontable/src/overlays.js +36 -4
  39. package/3rdparty/walkontable/src/overlays.mjs +36 -4
  40. package/3rdparty/walkontable/src/renderer/_base.js +2 -2
  41. package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
  42. package/3rdparty/walkontable/src/renderer/cells.js +2 -2
  43. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
  44. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  45. package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
  46. package/3rdparty/walkontable/src/renderer/index.js +12 -1
  47. package/3rdparty/walkontable/src/renderer/index.mjs +11 -0
  48. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  49. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
  50. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  51. package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
  52. package/3rdparty/walkontable/src/renderer/table.js +17 -2
  53. package/3rdparty/walkontable/src/renderer/table.mjs +17 -2
  54. package/3rdparty/walkontable/src/scroll.js +3 -3
  55. package/3rdparty/walkontable/src/scroll.mjs +3 -3
  56. package/3rdparty/walkontable/src/selection/index.js +1 -1
  57. package/3rdparty/walkontable/src/selection/manager.js +4 -4
  58. package/3rdparty/walkontable/src/selection/manager.mjs +3 -3
  59. package/3rdparty/walkontable/src/selection/scanner.js +3 -3
  60. package/3rdparty/walkontable/src/selection/scanner.mjs +3 -3
  61. package/3rdparty/walkontable/src/selection/selection.js +1 -1
  62. package/3rdparty/walkontable/src/settings.js +6 -2
  63. package/3rdparty/walkontable/src/settings.mjs +6 -2
  64. package/3rdparty/walkontable/src/table/bottom.js +1 -1
  65. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -1
  66. package/3rdparty/walkontable/src/table/inlineStart.js +1 -1
  67. package/3rdparty/walkontable/src/table/master.js +1 -1
  68. package/3rdparty/walkontable/src/table/top.js +1 -1
  69. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -1
  70. package/3rdparty/walkontable/src/table.js +3 -3
  71. package/3rdparty/walkontable/src/table.mjs +2 -2
  72. package/3rdparty/walkontable/src/utils/column.js +1 -1
  73. package/3rdparty/walkontable/src/utils/column.mjs +1 -1
  74. package/3rdparty/walkontable/src/utils/columnStretching.js +3 -3
  75. package/3rdparty/walkontable/src/utils/columnStretching.mjs +3 -3
  76. package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
  77. package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
  78. package/3rdparty/walkontable/src/utils/orderView/index.js +1 -1
  79. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +1 -1
  80. package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
  81. package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
  82. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  83. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  84. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +2 -2
  85. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
  86. package/3rdparty/walkontable/src/utils/row.js +17 -1
  87. package/3rdparty/walkontable/src/utils/row.mjs +17 -1
  88. package/CHANGELOG.md +27 -1
  89. package/base.js +3 -3
  90. package/base.mjs +2 -2
  91. package/cellTypes/registry.js +1 -1
  92. package/common.d.ts +3 -0
  93. package/core.d.ts +2 -0
  94. package/core.js +36 -31
  95. package/core.mjs +35 -30
  96. package/dataMap/dataMap.js +1 -1
  97. package/dataMap/dataMap.mjs +1 -1
  98. package/dataMap/dataSource.js +1 -1
  99. package/dataMap/dataSource.mjs +1 -1
  100. package/dataMap/index.js +1 -1
  101. package/dataMap/metaManager/index.js +1 -1
  102. package/dataMap/metaManager/lazyFactoryMap.js +1 -1
  103. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -1
  104. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
  105. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
  106. package/dataMap/metaManager/metaLayers/columnMeta.js +2 -2
  107. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
  108. package/dataMap/metaManager/metaLayers/globalMeta.js +2 -2
  109. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  110. package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
  111. package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
  112. package/dataMap/metaManager/metaSchema.js +25 -0
  113. package/dataMap/metaManager/metaSchema.mjs +25 -0
  114. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -2
  115. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  116. package/dataMap/metaManager/mods/extendMetaProperties.js +3 -3
  117. package/dataMap/metaManager/mods/extendMetaProperties.mjs +3 -3
  118. package/dataMap/replaceData.js +1 -1
  119. package/dist/handsontable.css +134 -88
  120. package/dist/handsontable.full.css +134 -88
  121. package/dist/handsontable.full.js +2191 -1503
  122. package/dist/handsontable.full.min.css +7 -7
  123. package/dist/handsontable.full.min.js +86 -86
  124. package/dist/handsontable.js +2180 -1440
  125. package/dist/handsontable.min.css +6 -6
  126. package/dist/handsontable.min.js +23 -23
  127. package/dist/languages/all.js +3 -3
  128. package/dist/languages/ar-AR.js +3 -3
  129. package/dist/languages/cs-CZ.js +3 -3
  130. package/dist/languages/de-CH.js +3 -3
  131. package/dist/languages/de-DE.js +3 -3
  132. package/dist/languages/en-US.js +3 -3
  133. package/dist/languages/es-MX.js +3 -3
  134. package/dist/languages/fr-FR.js +3 -3
  135. package/dist/languages/hr-HR.js +3 -3
  136. package/dist/languages/it-IT.js +3 -3
  137. package/dist/languages/ja-JP.js +3 -3
  138. package/dist/languages/ko-KR.js +3 -3
  139. package/dist/languages/lv-LV.js +3 -3
  140. package/dist/languages/nb-NO.js +3 -3
  141. package/dist/languages/nl-NL.js +3 -3
  142. package/dist/languages/pl-PL.js +3 -3
  143. package/dist/languages/pt-BR.js +3 -3
  144. package/dist/languages/ru-RU.js +3 -3
  145. package/dist/languages/sr-SP.js +3 -3
  146. package/dist/languages/zh-CN.js +3 -3
  147. package/dist/languages/zh-TW.js +3 -3
  148. package/editorManager.js +4 -4
  149. package/editorManager.mjs +3 -3
  150. package/editors/autocompleteEditor/autocompleteEditor.js +3 -3
  151. package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -3
  152. package/editors/baseEditor/baseEditor.js +2 -2
  153. package/editors/baseEditor/baseEditor.mjs +1 -1
  154. package/editors/dateEditor/dateEditor.js +2 -2
  155. package/editors/dateEditor/dateEditor.mjs +1 -1
  156. package/editors/dropdownEditor/dropdownEditor.js +1 -1
  157. package/editors/registry.js +1 -1
  158. package/editors/textEditor/textEditor.js +2 -2
  159. package/editors/textEditor/textEditor.mjs +1 -1
  160. package/eventManager.js +1 -1
  161. package/eventManager.mjs +1 -1
  162. package/focusManager.js +3 -3
  163. package/focusManager.mjs +3 -3
  164. package/helpers/dom/event.d.ts +1 -0
  165. package/helpers/dom/event.js +11 -0
  166. package/helpers/dom/event.mjs +10 -0
  167. package/helpers/mixed.js +3 -3
  168. package/helpers/mixed.mjs +2 -2
  169. package/helpers/string.js +1 -1
  170. package/i18n/languages/index.js +1 -1
  171. package/i18n/phraseFormatters/index.js +1 -1
  172. package/i18n/registry.js +1 -1
  173. package/index.js +1 -1
  174. package/languages/all.js +3 -3
  175. package/languages/ar-AR.js +3 -3
  176. package/languages/cs-CZ.js +3 -3
  177. package/languages/de-CH.js +3 -3
  178. package/languages/de-DE.js +3 -3
  179. package/languages/en-US.js +3 -3
  180. package/languages/es-MX.js +3 -3
  181. package/languages/fr-FR.js +3 -3
  182. package/languages/hr-HR.js +3 -3
  183. package/languages/index.js +3 -3
  184. package/languages/it-IT.js +3 -3
  185. package/languages/ja-JP.js +3 -3
  186. package/languages/ko-KR.js +3 -3
  187. package/languages/lv-LV.js +3 -3
  188. package/languages/nb-NO.js +3 -3
  189. package/languages/nl-NL.js +3 -3
  190. package/languages/pl-PL.js +3 -3
  191. package/languages/pt-BR.js +3 -3
  192. package/languages/ru-RU.js +3 -3
  193. package/languages/sr-SP.js +3 -3
  194. package/languages/zh-CN.js +3 -3
  195. package/languages/zh-TW.js +3 -3
  196. package/package.json +1 -5
  197. package/pluginHooks.d.ts +3 -1
  198. package/pluginHooks.js +12 -1
  199. package/pluginHooks.mjs +12 -1
  200. package/plugins/autoColumnSize/autoColumnSize.d.ts +1 -1
  201. package/plugins/autoColumnSize/autoColumnSize.js +123 -123
  202. package/plugins/autoColumnSize/autoColumnSize.mjs +122 -122
  203. package/plugins/autoRowSize/autoRowSize.d.ts +2 -1
  204. package/plugins/autoRowSize/autoRowSize.js +162 -100
  205. package/plugins/autoRowSize/autoRowSize.mjs +161 -99
  206. package/plugins/autofill/autofill.js +4 -4
  207. package/plugins/autofill/autofill.mjs +3 -3
  208. package/plugins/base/base.js +5 -5
  209. package/plugins/base/base.mjs +4 -4
  210. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -4
  211. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  212. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -4
  213. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -4
  214. package/plugins/columnSorting/columnSorting.js +6 -5
  215. package/plugins/columnSorting/columnSorting.mjs +5 -4
  216. package/plugins/columnSorting/columnStatesManager.js +1 -1
  217. package/plugins/columnSorting/columnStatesManager.mjs +1 -1
  218. package/plugins/columnSorting/sortService/registry.js +1 -1
  219. package/plugins/columnSorting/utils.js +1 -1
  220. package/plugins/columnSummary/columnSummary.d.ts +1 -1
  221. package/plugins/columnSummary/columnSummary.js +4 -4
  222. package/plugins/columnSummary/columnSummary.mjs +3 -3
  223. package/plugins/columnSummary/endpoints.js +1 -1
  224. package/plugins/columnSummary/endpoints.mjs +1 -1
  225. package/plugins/comments/commentEditor.js +74 -39
  226. package/plugins/comments/commentEditor.mjs +73 -39
  227. package/plugins/comments/comments.js +25 -44
  228. package/plugins/comments/comments.mjs +25 -44
  229. package/plugins/comments/displaySwitch.js +2 -2
  230. package/plugins/comments/displaySwitch.mjs +1 -1
  231. package/plugins/comments/editorResizeObserver.js +100 -0
  232. package/plugins/comments/editorResizeObserver.mjs +95 -0
  233. package/plugins/contextMenu/commandExecutor.js +1 -1
  234. package/plugins/contextMenu/commandExecutor.mjs +1 -1
  235. package/plugins/contextMenu/contextMenu.js +4 -4
  236. package/plugins/contextMenu/contextMenu.mjs +3 -3
  237. package/plugins/contextMenu/itemsFactory.js +1 -1
  238. package/plugins/contextMenu/itemsFactory.mjs +1 -1
  239. package/plugins/contextMenu/menu/cursor.js +1 -1
  240. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  241. package/plugins/contextMenu/menu/menu.js +5 -4
  242. package/plugins/contextMenu/menu/menu.mjs +4 -3
  243. package/plugins/contextMenu/menu/positioner.js +2 -2
  244. package/plugins/contextMenu/menu/positioner.mjs +2 -2
  245. package/plugins/copyPaste/copyPaste.js +5 -5
  246. package/plugins/copyPaste/copyPaste.mjs +4 -4
  247. package/plugins/copyPaste/copyableRanges.js +3 -3
  248. package/plugins/copyPaste/copyableRanges.mjs +3 -3
  249. package/plugins/copyPaste/pasteEvent.js +1 -1
  250. package/plugins/customBorders/contextMenuItem/index.js +1 -1
  251. package/plugins/customBorders/customBorders.js +3 -3
  252. package/plugins/customBorders/customBorders.mjs +3 -3
  253. package/plugins/dragToScroll/dragToScroll.js +4 -4
  254. package/plugins/dragToScroll/dragToScroll.mjs +4 -4
  255. package/plugins/dropdownMenu/dropdownMenu.js +5 -5
  256. package/plugins/dropdownMenu/dropdownMenu.mjs +4 -4
  257. package/plugins/exportFile/dataProvider.js +1 -1
  258. package/plugins/exportFile/dataProvider.mjs +1 -1
  259. package/plugins/exportFile/exportFile.js +1 -1
  260. package/plugins/exportFile/typeFactory.js +1 -1
  261. package/plugins/exportFile/types/_base.js +1 -1
  262. package/plugins/exportFile/types/_base.mjs +1 -1
  263. package/plugins/exportFile/types/csv.js +1 -1
  264. package/plugins/filters/component/_base.js +2 -2
  265. package/plugins/filters/component/_base.mjs +1 -1
  266. package/plugins/filters/component/actionBar.js +3 -3
  267. package/plugins/filters/component/actionBar.mjs +3 -3
  268. package/plugins/filters/component/condition.js +3 -3
  269. package/plugins/filters/component/condition.mjs +3 -3
  270. package/plugins/filters/component/operators.js +3 -3
  271. package/plugins/filters/component/operators.mjs +3 -3
  272. package/plugins/filters/component/value.js +3 -3
  273. package/plugins/filters/component/value.mjs +3 -3
  274. package/plugins/filters/condition/date/after.js +1 -1
  275. package/plugins/filters/condition/date/before.js +1 -1
  276. package/plugins/filters/condition/date/today.js +1 -1
  277. package/plugins/filters/condition/date/tomorrow.js +1 -1
  278. package/plugins/filters/condition/date/yesterday.js +1 -1
  279. package/plugins/filters/conditionCollection.js +2 -2
  280. package/plugins/filters/conditionCollection.mjs +1 -1
  281. package/plugins/filters/conditionUpdateObserver.js +4 -4
  282. package/plugins/filters/conditionUpdateObserver.mjs +3 -3
  283. package/plugins/filters/dataFilter.js +1 -1
  284. package/plugins/filters/dataFilter.mjs +1 -1
  285. package/plugins/filters/filters.js +5 -5
  286. package/plugins/filters/filters.mjs +4 -4
  287. package/plugins/filters/ui/_base.js +2 -2
  288. package/plugins/filters/ui/_base.mjs +1 -1
  289. package/plugins/filters/ui/input.js +3 -3
  290. package/plugins/filters/ui/input.mjs +3 -3
  291. package/plugins/filters/ui/link.js +2 -2
  292. package/plugins/filters/ui/link.mjs +2 -2
  293. package/plugins/filters/ui/multipleSelect.js +3 -3
  294. package/plugins/filters/ui/multipleSelect.mjs +3 -3
  295. package/plugins/filters/ui/radioInput.js +2 -2
  296. package/plugins/filters/ui/radioInput.mjs +2 -2
  297. package/plugins/filters/ui/select.js +3 -3
  298. package/plugins/filters/ui/select.mjs +3 -3
  299. package/plugins/formulas/engine/register.js +1 -1
  300. package/plugins/formulas/formulas.js +7 -7
  301. package/plugins/formulas/formulas.mjs +6 -6
  302. package/plugins/formulas/indexSyncer/axisSyncer.js +2 -2
  303. package/plugins/formulas/indexSyncer/axisSyncer.mjs +2 -2
  304. package/plugins/formulas/indexSyncer/index.js +3 -3
  305. package/plugins/formulas/indexSyncer/index.mjs +2 -2
  306. package/plugins/formulas/utils.js +1 -1
  307. package/plugins/hiddenColumns/hiddenColumns.js +4 -4
  308. package/plugins/hiddenColumns/hiddenColumns.mjs +3 -3
  309. package/plugins/hiddenRows/hiddenRows.js +4 -4
  310. package/plugins/hiddenRows/hiddenRows.mjs +3 -3
  311. package/plugins/manualColumnFreeze/manualColumnFreeze.js +4 -4
  312. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -3
  313. package/plugins/manualColumnMove/manualColumnMove.js +4 -4
  314. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -3
  315. package/plugins/manualColumnMove/ui/_base.js +1 -1
  316. package/plugins/manualColumnMove/ui/_base.mjs +1 -1
  317. package/plugins/manualColumnMove/ui/backlight.js +1 -1
  318. package/plugins/manualColumnMove/ui/guideline.js +1 -1
  319. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  320. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  321. package/plugins/manualRowMove/manualRowMove.js +4 -4
  322. package/plugins/manualRowMove/manualRowMove.mjs +3 -3
  323. package/plugins/manualRowMove/ui/_base.js +1 -1
  324. package/plugins/manualRowMove/ui/_base.mjs +1 -1
  325. package/plugins/manualRowMove/ui/backlight.js +1 -1
  326. package/plugins/manualRowMove/ui/guideline.js +1 -1
  327. package/plugins/manualRowResize/manualRowResize.js +3 -3
  328. package/plugins/manualRowResize/manualRowResize.mjs +3 -3
  329. package/plugins/mergeCells/calculations/autofill.js +2 -2
  330. package/plugins/mergeCells/calculations/autofill.mjs +2 -2
  331. package/plugins/mergeCells/calculations/selection.js +1 -1
  332. package/plugins/mergeCells/calculations/selection.mjs +1 -1
  333. package/plugins/mergeCells/cellCoords.js +81 -24
  334. package/plugins/mergeCells/cellCoords.mjs +81 -24
  335. package/plugins/mergeCells/cellsCollection.js +167 -91
  336. package/plugins/mergeCells/cellsCollection.mjs +166 -90
  337. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -1
  338. package/plugins/mergeCells/focusOrder.js +4 -4
  339. package/plugins/mergeCells/focusOrder.mjs +3 -3
  340. package/plugins/mergeCells/mergeCells.js +171 -122
  341. package/plugins/mergeCells/mergeCells.mjs +171 -122
  342. package/plugins/mergeCells/renderer.js +74 -0
  343. package/plugins/mergeCells/renderer.mjs +70 -0
  344. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -1
  345. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -1
  346. package/plugins/multiColumnSorting/utils.js +1 -1
  347. package/plugins/multiColumnSorting/utils.mjs +1 -1
  348. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
  349. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
  350. package/plugins/nestedHeaders/nestedHeaders.d.ts +1 -0
  351. package/plugins/nestedHeaders/nestedHeaders.js +20 -9
  352. package/plugins/nestedHeaders/nestedHeaders.mjs +20 -9
  353. package/plugins/nestedHeaders/stateManager/headersTree.js +3 -3
  354. package/plugins/nestedHeaders/stateManager/headersTree.mjs +2 -2
  355. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  356. package/plugins/nestedHeaders/stateManager/index.mjs +2 -2
  357. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  358. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  359. package/plugins/nestedHeaders/stateManager/sourceSettings.js +2 -2
  360. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +2 -2
  361. package/plugins/nestedHeaders/stateManager/utils.js +6 -2
  362. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -2
  363. package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
  364. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
  365. package/plugins/nestedRows/data/dataManager.js +1 -1
  366. package/plugins/nestedRows/data/dataManager.mjs +1 -1
  367. package/plugins/nestedRows/nestedRows.js +5 -5
  368. package/plugins/nestedRows/nestedRows.mjs +4 -4
  369. package/plugins/nestedRows/ui/_base.js +1 -1
  370. package/plugins/nestedRows/ui/_base.mjs +1 -1
  371. package/plugins/nestedRows/ui/collapsing.js +1 -1
  372. package/plugins/nestedRows/ui/contextMenu.js +4 -4
  373. package/plugins/nestedRows/ui/contextMenu.mjs +3 -3
  374. package/plugins/nestedRows/ui/headers.js +1 -1
  375. package/plugins/nestedRows/utils/rowMoveController.js +1 -1
  376. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
  377. package/plugins/persistentState/persistentState.js +2 -2
  378. package/plugins/persistentState/persistentState.mjs +1 -1
  379. package/plugins/persistentState/storage.js +1 -1
  380. package/plugins/persistentState/storage.mjs +1 -1
  381. package/plugins/search/search.js +3 -3
  382. package/plugins/search/search.mjs +3 -3
  383. package/plugins/touchScroll/touchScroll.js +3 -3
  384. package/plugins/touchScroll/touchScroll.mjs +3 -3
  385. package/plugins/trimRows/trimRows.js +3 -3
  386. package/plugins/trimRows/trimRows.mjs +3 -3
  387. package/plugins/undoRedo/undoRedo.js +38 -1
  388. package/plugins/undoRedo/undoRedo.mjs +37 -0
  389. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  390. package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
  391. package/renderers/numericRenderer/numericRenderer.js +1 -1
  392. package/renderers/registry.js +1 -1
  393. package/selection/highlight/highlight.js +3 -3
  394. package/selection/highlight/highlight.mjs +3 -3
  395. package/selection/highlight/types/activeHeader.js +1 -1
  396. package/selection/highlight/types/area.js +1 -1
  397. package/selection/highlight/types/areaLayered.js +1 -1
  398. package/selection/highlight/types/column.js +1 -1
  399. package/selection/highlight/types/customSelection.js +1 -1
  400. package/selection/highlight/types/fill.js +1 -1
  401. package/selection/highlight/types/focus.js +1 -1
  402. package/selection/highlight/types/header.js +1 -1
  403. package/selection/highlight/types/row.js +1 -1
  404. package/selection/highlight/visualSelection.js +1 -1
  405. package/selection/highlight/visualSelection.mjs +1 -1
  406. package/selection/index.js +1 -1
  407. package/selection/range.js +1 -1
  408. package/selection/range.mjs +1 -1
  409. package/selection/selection.js +8 -4
  410. package/selection/selection.mjs +7 -3
  411. package/selection/transformation.js +14 -4
  412. package/selection/transformation.mjs +13 -3
  413. package/settings.d.ts +1 -0
  414. package/shortcuts/utils.js +18 -27
  415. package/shortcuts/utils.mjs +18 -27
  416. package/tableView.js +126 -28
  417. package/tableView.mjs +125 -27
  418. package/translations/changesObservable/observable.js +2 -2
  419. package/translations/changesObservable/observable.mjs +2 -2
  420. package/translations/changesObservable/observer.js +3 -3
  421. package/translations/changesObservable/observer.mjs +2 -2
  422. package/translations/indexMapper.js +2 -2
  423. package/translations/indexMapper.mjs +1 -1
  424. package/translations/mapCollections/aggregatedCollection.js +1 -1
  425. package/translations/mapCollections/aggregatedCollection.mjs +1 -1
  426. package/translations/mapCollections/mapCollection.js +2 -2
  427. package/translations/mapCollections/mapCollection.mjs +1 -1
  428. package/translations/maps/indexMap.js +2 -2
  429. package/translations/maps/indexMap.mjs +1 -1
  430. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
  431. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
  432. package/utils/dataStructures/linkedList.js +1 -1
  433. package/utils/dataStructures/linkedList.mjs +1 -1
  434. package/utils/dataStructures/tree.js +1 -1
  435. package/utils/dataStructures/tree.mjs +1 -1
  436. package/utils/ghostTable.js +1 -1
  437. package/utils/ghostTable.mjs +1 -1
  438. package/utils/interval.js +4 -4
  439. package/utils/interval.mjs +4 -4
  440. package/utils/samplesGenerator.js +1 -1
  441. package/utils/samplesGenerator.mjs +1 -1
  442. package/validators/dateValidator/dateValidator.js +1 -1
  443. package/validators/registry.js +1 -1
  444. package/validators/timeValidator/timeValidator.js +1 -1
  445. package/plugins/mergeCells/utils.js +0 -28
  446. package/plugins/mergeCells/utils.mjs +0 -24
@@ -21,15 +21,15 @@ var _array = require("../../helpers/array");
21
21
  var _object = require("../../helpers/object");
22
22
  var _console = require("../../helpers/console");
23
23
  var _number = require("../../helpers/number");
24
- var _utils = require("./utils");
25
24
  var _element = require("../../helpers/dom/element");
26
25
  var _browser = require("../../helpers/browser");
27
26
  var _focusOrder2 = require("./focusOrder");
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
30
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
31
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
32
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
+ var _renderer = require("./renderer");
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
30
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
31
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
32
+ 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; }
33
33
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
34
34
  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); }
35
35
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
@@ -83,6 +83,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
83
83
  var _lastSelectedFocus = /*#__PURE__*/new WeakMap();
84
84
  var _lastFocusDelta = /*#__PURE__*/new WeakMap();
85
85
  var _focusOrder = /*#__PURE__*/new WeakMap();
86
+ var _cellRenderer = /*#__PURE__*/new WeakMap();
86
87
  var _MergeCells_brand = /*#__PURE__*/new WeakSet();
87
88
  class MergeCells extends _base.BasePlugin {
88
89
  constructor() {
@@ -139,6 +140,12 @@ class MergeCells extends _base.BasePlugin {
139
140
  rowIndexMapper: this.hot.rowIndexMapper,
140
141
  columnIndexMapper: this.hot.columnIndexMapper
141
142
  }));
143
+ /**
144
+ * The cell renderer responsible for rendering the merged cells.
145
+ *
146
+ * @type {{before: Function, after: Function}}
147
+ */
148
+ _classPrivateFieldInitSpec(this, _cellRenderer, (0, _renderer.createMergeCellRenderer)(this));
142
149
  }
143
150
  static get PLUGIN_KEY() {
144
151
  return PLUGIN_KEY;
@@ -240,94 +247,97 @@ class MergeCells extends _base.BasePlugin {
240
247
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
241
248
  });
242
249
  this.addHook('afterRenderer', function () {
250
+ return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
251
+ });
252
+ this.addHook('afterContextMenuDefaultOptions', function () {
243
253
  for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
244
254
  args[_key13] = arguments[_key13];
245
255
  }
246
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterRenderer).call(_this, ...args);
256
+ return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
247
257
  });
248
- this.addHook('afterContextMenuDefaultOptions', function () {
258
+ this.addHook('afterGetCellMeta', function () {
249
259
  for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
250
260
  args[_key14] = arguments[_key14];
251
261
  }
252
- return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
262
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
253
263
  });
254
- this.addHook('afterGetCellMeta', function () {
264
+ this.addHook('afterViewportRowCalculatorOverride', function () {
255
265
  for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
256
266
  args[_key15] = arguments[_key15];
257
267
  }
258
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
268
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
259
269
  });
260
- this.addHook('afterViewportRowCalculatorOverride', function () {
270
+ this.addHook('afterViewportColumnCalculatorOverride', function () {
261
271
  for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
262
272
  args[_key16] = arguments[_key16];
263
273
  }
264
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
274
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
265
275
  });
266
- this.addHook('afterViewportColumnCalculatorOverride', function () {
276
+ this.addHook('modifyAutofillRange', function () {
267
277
  for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
268
278
  args[_key17] = arguments[_key17];
269
279
  }
270
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
280
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
271
281
  });
272
- this.addHook('modifyAutofillRange', function () {
282
+ this.addHook('afterCreateCol', function () {
273
283
  for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
274
284
  args[_key18] = arguments[_key18];
275
285
  }
276
- return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
286
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
277
287
  });
278
- this.addHook('afterCreateCol', function () {
288
+ this.addHook('afterRemoveCol', function () {
279
289
  for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
280
290
  args[_key19] = arguments[_key19];
281
291
  }
282
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
292
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
283
293
  });
284
- this.addHook('afterRemoveCol', function () {
294
+ this.addHook('afterCreateRow', function () {
285
295
  for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
286
296
  args[_key20] = arguments[_key20];
287
297
  }
288
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
298
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
289
299
  });
290
- this.addHook('afterCreateRow', function () {
300
+ this.addHook('afterRemoveRow', function () {
291
301
  for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
292
302
  args[_key21] = arguments[_key21];
293
303
  }
294
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
304
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
295
305
  });
296
- this.addHook('afterRemoveRow', function () {
306
+ this.addHook('afterChange', function () {
297
307
  for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
298
308
  args[_key22] = arguments[_key22];
299
309
  }
300
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
310
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
301
311
  });
302
- this.addHook('afterChange', function () {
312
+ this.addHook('beforeDrawBorders', function () {
303
313
  for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
304
314
  args[_key23] = arguments[_key23];
305
315
  }
306
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
316
+ return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
307
317
  });
308
- this.addHook('beforeDrawBorders', function () {
318
+ this.addHook('afterDrawSelection', function () {
309
319
  for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
310
320
  args[_key24] = arguments[_key24];
311
321
  }
312
- return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
322
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
313
323
  });
314
- this.addHook('afterDrawSelection', function () {
324
+ this.addHook('beforeRemoveCellClassNames', function () {
315
325
  for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
316
326
  args[_key25] = arguments[_key25];
317
327
  }
318
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
328
+ return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
319
329
  });
320
- this.addHook('beforeRemoveCellClassNames', function () {
330
+ this.addHook('beforeBeginEditing', function () {
321
331
  for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
322
332
  args[_key26] = arguments[_key26];
323
333
  }
324
- return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
334
+ return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
325
335
  });
326
- this.addHook('beforeBeginEditing', function () {
336
+ this.addHook('modifyRowHeightByOverlayName', function () {
327
337
  for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
328
338
  args[_key27] = arguments[_key27];
329
339
  }
330
- return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
340
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
331
341
  });
332
342
  this.addHook('beforeUndoStackChange', (action, source) => {
333
343
  if (source === 'MergeCells') {
@@ -418,24 +428,26 @@ class MergeCells extends _base.BasePlugin {
418
428
  * @returns {boolean}
419
429
  */
420
430
  validateSetting(setting) {
421
- let valid = true;
422
431
  if (!setting) {
423
432
  return false;
424
433
  }
425
434
  if (_cellCoords.default.containsNegativeValues(setting)) {
426
435
  (0, _console.warn)(_cellCoords.default.NEGATIVE_VALUES_WARNING(setting));
427
- valid = false;
428
- } else if (_cellCoords.default.isOutOfBounds(setting, this.hot.countRows(), this.hot.countCols())) {
436
+ return false;
437
+ }
438
+ if (_cellCoords.default.isOutOfBounds(setting, this.hot.countRows(), this.hot.countCols())) {
429
439
  (0, _console.warn)(_cellCoords.default.IS_OUT_OF_BOUNDS_WARNING(setting));
430
- valid = false;
431
- } else if (_cellCoords.default.isSingleCell(setting)) {
440
+ return false;
441
+ }
442
+ if (_cellCoords.default.isSingleCell(setting)) {
432
443
  (0, _console.warn)(_cellCoords.default.IS_SINGLE_CELL(setting));
433
- valid = false;
434
- } else if (_cellCoords.default.containsZeroSpan(setting)) {
444
+ return false;
445
+ }
446
+ if (_cellCoords.default.containsZeroSpan(setting)) {
435
447
  (0, _console.warn)(_cellCoords.default.ZERO_SPAN_WARNING(setting));
436
- valid = false;
448
+ return false;
437
449
  }
438
- return valid;
450
+ return true;
439
451
  }
440
452
 
441
453
  /**
@@ -445,36 +457,42 @@ class MergeCells extends _base.BasePlugin {
445
457
  * @param {Array|boolean} settings The settings provided to the plugin.
446
458
  */
447
459
  generateFromSettings(settings) {
448
- if (Array.isArray(settings)) {
449
- const populatedNulls = [];
450
- (0, _array.arrayEach)(settings, setting => {
451
- if (!this.validateSetting(setting)) {
452
- return;
453
- }
454
- const highlight = this.hot._createCellCoords(setting.row, setting.col);
455
- const rangeEnd = this.hot._createCellCoords(setting.row + setting.rowspan - 1, setting.col + setting.colspan - 1);
456
- const mergeRange = this.hot._createCellRange(highlight, highlight, rangeEnd);
457
-
458
- // Merging without data population.
459
- this.mergeRange(mergeRange, true, true);
460
- (0, _number.rangeEach)(setting.row, setting.row + setting.rowspan - 1, rowIndex => {
461
- (0, _number.rangeEach)(setting.col, setting.col + setting.colspan - 1, columnIndex => {
462
- // Not resetting a cell representing a merge area's value.
463
- if ((rowIndex === setting.row && columnIndex === setting.col) === false) {
464
- populatedNulls.push([rowIndex, columnIndex, null]);
465
- }
466
- });
467
- });
468
- });
460
+ if (!Array.isArray(settings)) {
461
+ return;
462
+ }
463
+ const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
464
+ const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
465
+ const populatedNulls = [];
466
+ nonOverlappingSettings.forEach(mergeCellInfo => {
467
+ const {
468
+ row,
469
+ col,
470
+ rowspan,
471
+ colspan
472
+ } = mergeCellInfo;
473
+ const from = this.hot._createCellCoords(row, col);
474
+ const to = this.hot._createCellCoords(row + rowspan - 1, col + colspan - 1);
475
+ const mergeRange = this.hot._createCellRange(from, from, to);
469
476
 
470
- // There are no merged cells. Thus, no data population is needed.
471
- if (populatedNulls.length === 0) {
472
- return;
477
+ // Merging without data population.
478
+ this.mergeRange(mergeRange, true, true);
479
+ for (let r = row; r < row + rowspan; r++) {
480
+ for (let c = col; c < col + colspan; c++) {
481
+ // Not resetting a cell representing a merge area's value.
482
+ if (r !== row || c !== col) {
483
+ populatedNulls.push([r, c, null]);
484
+ }
485
+ }
473
486
  }
487
+ });
474
488
 
475
- // TODO: Change the `source` argument to a more meaningful value, e.g. `${this.pluginName}.clearCells`.
476
- this.hot.setDataAtCell(populatedNulls, undefined, undefined, this.pluginName);
489
+ // There are no merged cells. Thus, no data population is needed.
490
+ if (populatedNulls.length === 0) {
491
+ return;
477
492
  }
493
+
494
+ // TODO: Change the `source` argument to a more meaningful value, e.g. `${this.pluginName}.clearCells`.
495
+ this.hot.setDataAtCell(populatedNulls, undefined, undefined, this.pluginName);
478
496
  }
479
497
 
480
498
  /**
@@ -580,7 +598,7 @@ class MergeCells extends _base.BasePlugin {
580
598
  });
581
599
  });
582
600
  this.hot.setCellMeta(mergeParent.row, mergeParent.col, 'spanned', true);
583
- const mergedCellAdded = this.mergedCellsCollection.add(mergeParent);
601
+ const mergedCellAdded = this.mergedCellsCollection.add(mergeParent, auto);
584
602
  if (mergedCellAdded) {
585
603
  if (preventPopulation) {
586
604
  populationInfo = [mergeParent.row, mergeParent.col, clearedData];
@@ -610,7 +628,7 @@ class MergeCells extends _base.BasePlugin {
610
628
  unmergeRange(cellRange) {
611
629
  let auto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
612
630
  const mergedCells = this.mergedCellsCollection.getWithinRange(cellRange);
613
- if (!mergedCells) {
631
+ if (mergedCells.length === 0) {
614
632
  return;
615
633
  }
616
634
  this.hot.runHooks('beforeUnmergeCells', cellRange, auto);
@@ -1115,45 +1133,6 @@ function _addMergeActionsToContextMenu(defaultOptions) {
1115
1133
  name: '---------'
1116
1134
  }, (0, _toggleMerge.default)(this));
1117
1135
  }
1118
- /**
1119
- * `afterRenderer` hook callback.
1120
- *
1121
- * @param {HTMLElement} TD The cell to be modified.
1122
- * @param {number} row Row index.
1123
- * @param {number} col Visual column index.
1124
- */
1125
- function _onAfterRenderer(TD, row, col) {
1126
- const mergedCell = this.mergedCellsCollection.get(row, col);
1127
- // We shouldn't override data in the collection.
1128
- const mergedCellCopy = (0, _object.isObject)(mergedCell) ? (0, _object.clone)(mergedCell) : undefined;
1129
- if ((0, _object.isObject)(mergedCellCopy)) {
1130
- const {
1131
- rowIndexMapper: rowMapper,
1132
- columnIndexMapper: columnMapper
1133
- } = this.hot;
1134
- const {
1135
- row: mergeRow,
1136
- col: mergeColumn,
1137
- colspan,
1138
- rowspan
1139
- } = mergedCellCopy;
1140
- const [lastMergedRowIndex, lastMergedColumnIndex] = this.translateMergedCellToRenderable(mergeRow, rowspan, mergeColumn, colspan);
1141
- const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
1142
- const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
1143
- const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
1144
- const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
1145
-
1146
- // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
1147
- mergedCellCopy.row = rowMapper.getNearestNotHiddenIndex(mergedCellCopy.row, 1);
1148
- // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
1149
- mergedCellCopy.col = columnMapper.getNearestNotHiddenIndex(mergedCellCopy.col, 1);
1150
- // The `rowSpan` property for a `TD` element should be at most equal to number of rendered rows in the merge area.
1151
- mergedCellCopy.rowspan = Math.min(mergedCellCopy.rowspan, maxRowSpan);
1152
- // The `colSpan` property for a `TD` element should be at most equal to number of rendered columns in the merge area.
1153
- mergedCellCopy.colspan = Math.min(mergedCellCopy.colspan, maxColSpan);
1154
- }
1155
- (0, _utils.applySpanProperties)(TD, mergedCellCopy, row, col);
1156
- }
1157
1136
  /**
1158
1137
  * Clears the last selected coordinates before setting a new selection range.
1159
1138
  */
@@ -1295,17 +1274,11 @@ function _onModifyAutofillRange(drag, select) {
1295
1274
  dragArea = select;
1296
1275
  return dragArea;
1297
1276
  }
1298
- const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange({
1299
- from: {
1300
- row: select[0],
1301
- col: select[1]
1302
- },
1303
- to: {
1304
- row: select[2],
1305
- col: select[3]
1306
- }
1307
- });
1308
- if (!mergedCellsWithinSelectionArea) {
1277
+ const from = this.hot._createCellCoords(select[0], select[1]);
1278
+ const to = this.hot._createCellCoords(select[2], select[3]);
1279
+ const range = this.hot._createCellRange(from, from, to);
1280
+ const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange(range);
1281
+ if (mergedCellsWithinSelectionArea.length === 0) {
1309
1282
  return dragArea;
1310
1283
  }
1311
1284
  dragArea = this.autofillCalculations.snapDragArea(select, dragArea, dragDirection, mergedCellsWithinSelectionArea);
@@ -1429,4 +1402,80 @@ function _onBeforeBeginEditing(row, column, initialValue, event) {
1429
1402
  const from = this.hot._createCellCoords(mergeCell.row, mergeCell.col);
1430
1403
  const to = this.hot._createCellCoords(mergeCell.row + mergeCell.rowspan - 1, mergeCell.col + mergeCell.colspan - 1);
1431
1404
  return this.hot.selection.getLayerLevel() === 0 && selection.isEqual(this.hot._createCellRange(from, from, to));
1405
+ }
1406
+ /**
1407
+ * Hook used to modify the row height depends on the merged cells in the row.
1408
+ *
1409
+ * @param {number} height The row height value provided by the Core.
1410
+ * @param {number} row The visual row index.
1411
+ * @param {string} overlayType The overlay type that is currently rendered.
1412
+ * @returns {number}
1413
+ */
1414
+ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1415
+ if (this.hot.getSettings().rowHeaders ||
1416
+ // merged cells do not work with the bottom overlays
1417
+ overlayType === 'bottom' || overlayType === 'bottom_inline_start_corner') {
1418
+ return height;
1419
+ }
1420
+ let firstColumn;
1421
+ let lastColumn;
1422
+ if (overlayType === 'master') {
1423
+ firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
1424
+ lastColumn = this.hot.view.getLastRenderedVisibleColumn();
1425
+ } else {
1426
+ const activeOverlay = this.hot.view.getOverlayByName(overlayType);
1427
+ firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
1428
+ lastColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getLastRenderedColumn());
1429
+ }
1430
+ const firstMergedCellInRow = this.mergedCellsCollection.get(row, firstColumn);
1431
+ if (!firstMergedCellInRow) {
1432
+ return height;
1433
+ }
1434
+ const from = this.hot._createCellCoords(row, firstColumn);
1435
+ const to = this.hot._createCellCoords(row, lastColumn);
1436
+ const viewportRange = this.hot._createCellRange(from, from, to);
1437
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
1438
+ const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
1439
+ let {
1440
+ rowspan
1441
+ } = _ref;
1442
+ return Math.max(acc, rowspan);
1443
+ }, 1);
1444
+ let rowspanCorrection = 0;
1445
+ if (mergedCellsWithinRange.length > 1 && mergedCellsWithinRange[0].rowspan < maxRowspan) {
1446
+ rowspanCorrection = maxRowspan - mergedCellsWithinRange[0].rowspan;
1447
+ }
1448
+ mergedCellsWithinRange.forEach(_ref2 => {
1449
+ var _height;
1450
+ let {
1451
+ rowspan
1452
+ } = _ref2;
1453
+ let rowspanAfterCorrection = 0;
1454
+ if (overlayType === 'top' || overlayType === 'top_inline_start_corner') {
1455
+ rowspanAfterCorrection = Math.min(maxRowspan, this.hot.view.countNotHiddenFixedRowsTop() - row);
1456
+ } else {
1457
+ rowspanAfterCorrection = rowspan - rowspanCorrection;
1458
+ }
1459
+ height = Math.max((_height = height) !== null && _height !== void 0 ? _height : 0, _assertClassBrand(_MergeCells_brand, this, _sumCellsHeights).call(this, row, rowspanAfterCorrection));
1460
+ });
1461
+ return height;
1462
+ }
1463
+ /**
1464
+ * Sums the heights of the all cells that the merge cell consists of.
1465
+ *
1466
+ * @param {number} row The visual row index of the merged cell.
1467
+ * @param {number} rowspan The rowspan value of the merged cell.
1468
+ * @returns {number}
1469
+ */
1470
+ function _sumCellsHeights(row, rowspan) {
1471
+ const defaultHeight = this.hot.view._wt.wtSettings.getSettingPure('defaultRowHeight');
1472
+ const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
1473
+ let height = 0;
1474
+ for (let i = row; i < row + rowspan; i++) {
1475
+ if (!this.hot.rowIndexMapper.isHidden(i)) {
1476
+ var _autoRowSizePlugin$ge;
1477
+ height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
1478
+ }
1479
+ }
1480
+ return height;
1432
1481
  }