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
@@ -7,10 +7,10 @@ import "core-js/modules/esnext.set.is-subset-of.v2.js";
7
7
  import "core-js/modules/esnext.set.is-superset-of.v2.js";
8
8
  import "core-js/modules/esnext.set.symmetric-difference.v2.js";
9
9
  import "core-js/modules/esnext.set.union.v2.js";
10
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
11
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
12
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
13
- 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; }
10
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
11
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
12
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
13
+ 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; }
14
14
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
15
  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
16
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
@@ -24,13 +24,13 @@ import AutofillCalculations from "./calculations/autofill.mjs";
24
24
  import SelectionCalculations from "./calculations/selection.mjs";
25
25
  import toggleMergeItem from "./contextMenuItem/toggleMerge.mjs";
26
26
  import { arrayEach } from "../../helpers/array.mjs";
27
- import { isObject, clone } from "../../helpers/object.mjs";
27
+ import { isObject } from "../../helpers/object.mjs";
28
28
  import { warn } from "../../helpers/console.mjs";
29
29
  import { rangeEach } from "../../helpers/number.mjs";
30
- import { applySpanProperties } from "./utils.mjs";
31
30
  import { getStyle } from "../../helpers/dom/element.mjs";
32
31
  import { isChrome } from "../../helpers/browser.mjs";
33
32
  import { FocusOrder } from "./focusOrder.mjs";
33
+ import { createMergeCellRenderer } from "./renderer.mjs";
34
34
  Hooks.getSingleton().register('beforeMergeCells');
35
35
  Hooks.getSingleton().register('afterMergeCells');
36
36
  Hooks.getSingleton().register('beforeUnmergeCells');
@@ -79,6 +79,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
79
79
  var _lastSelectedFocus = /*#__PURE__*/new WeakMap();
80
80
  var _lastFocusDelta = /*#__PURE__*/new WeakMap();
81
81
  var _focusOrder = /*#__PURE__*/new WeakMap();
82
+ var _cellRenderer = /*#__PURE__*/new WeakMap();
82
83
  var _MergeCells_brand = /*#__PURE__*/new WeakSet();
83
84
  export class MergeCells extends BasePlugin {
84
85
  constructor() {
@@ -135,6 +136,12 @@ export class MergeCells extends BasePlugin {
135
136
  rowIndexMapper: this.hot.rowIndexMapper,
136
137
  columnIndexMapper: this.hot.columnIndexMapper
137
138
  }));
139
+ /**
140
+ * The cell renderer responsible for rendering the merged cells.
141
+ *
142
+ * @type {{before: Function, after: Function}}
143
+ */
144
+ _classPrivateFieldInitSpec(this, _cellRenderer, createMergeCellRenderer(this));
138
145
  }
139
146
  static get PLUGIN_KEY() {
140
147
  return PLUGIN_KEY;
@@ -236,94 +243,97 @@ export class MergeCells extends BasePlugin {
236
243
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
237
244
  });
238
245
  this.addHook('afterRenderer', function () {
246
+ return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
247
+ });
248
+ this.addHook('afterContextMenuDefaultOptions', function () {
239
249
  for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
240
250
  args[_key13] = arguments[_key13];
241
251
  }
242
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterRenderer).call(_this, ...args);
252
+ return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
243
253
  });
244
- this.addHook('afterContextMenuDefaultOptions', function () {
254
+ this.addHook('afterGetCellMeta', function () {
245
255
  for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
246
256
  args[_key14] = arguments[_key14];
247
257
  }
248
- return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
258
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
249
259
  });
250
- this.addHook('afterGetCellMeta', function () {
260
+ this.addHook('afterViewportRowCalculatorOverride', function () {
251
261
  for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
252
262
  args[_key15] = arguments[_key15];
253
263
  }
254
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
264
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
255
265
  });
256
- this.addHook('afterViewportRowCalculatorOverride', function () {
266
+ this.addHook('afterViewportColumnCalculatorOverride', function () {
257
267
  for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
258
268
  args[_key16] = arguments[_key16];
259
269
  }
260
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
270
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
261
271
  });
262
- this.addHook('afterViewportColumnCalculatorOverride', function () {
272
+ this.addHook('modifyAutofillRange', function () {
263
273
  for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
264
274
  args[_key17] = arguments[_key17];
265
275
  }
266
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
276
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
267
277
  });
268
- this.addHook('modifyAutofillRange', function () {
278
+ this.addHook('afterCreateCol', function () {
269
279
  for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
270
280
  args[_key18] = arguments[_key18];
271
281
  }
272
- return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
282
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
273
283
  });
274
- this.addHook('afterCreateCol', function () {
284
+ this.addHook('afterRemoveCol', function () {
275
285
  for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
276
286
  args[_key19] = arguments[_key19];
277
287
  }
278
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
288
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
279
289
  });
280
- this.addHook('afterRemoveCol', function () {
290
+ this.addHook('afterCreateRow', function () {
281
291
  for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
282
292
  args[_key20] = arguments[_key20];
283
293
  }
284
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
294
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
285
295
  });
286
- this.addHook('afterCreateRow', function () {
296
+ this.addHook('afterRemoveRow', function () {
287
297
  for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
288
298
  args[_key21] = arguments[_key21];
289
299
  }
290
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
300
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
291
301
  });
292
- this.addHook('afterRemoveRow', function () {
302
+ this.addHook('afterChange', function () {
293
303
  for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
294
304
  args[_key22] = arguments[_key22];
295
305
  }
296
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
306
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
297
307
  });
298
- this.addHook('afterChange', function () {
308
+ this.addHook('beforeDrawBorders', function () {
299
309
  for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
300
310
  args[_key23] = arguments[_key23];
301
311
  }
302
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
312
+ return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
303
313
  });
304
- this.addHook('beforeDrawBorders', function () {
314
+ this.addHook('afterDrawSelection', function () {
305
315
  for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
306
316
  args[_key24] = arguments[_key24];
307
317
  }
308
- return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
318
+ return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
309
319
  });
310
- this.addHook('afterDrawSelection', function () {
320
+ this.addHook('beforeRemoveCellClassNames', function () {
311
321
  for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
312
322
  args[_key25] = arguments[_key25];
313
323
  }
314
- return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
324
+ return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
315
325
  });
316
- this.addHook('beforeRemoveCellClassNames', function () {
326
+ this.addHook('beforeBeginEditing', function () {
317
327
  for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
318
328
  args[_key26] = arguments[_key26];
319
329
  }
320
- return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
330
+ return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
321
331
  });
322
- this.addHook('beforeBeginEditing', function () {
332
+ this.addHook('modifyRowHeightByOverlayName', function () {
323
333
  for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
324
334
  args[_key27] = arguments[_key27];
325
335
  }
326
- return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
336
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
327
337
  });
328
338
  this.addHook('beforeUndoStackChange', (action, source) => {
329
339
  if (source === 'MergeCells') {
@@ -414,24 +424,26 @@ export class MergeCells extends BasePlugin {
414
424
  * @returns {boolean}
415
425
  */
416
426
  validateSetting(setting) {
417
- let valid = true;
418
427
  if (!setting) {
419
428
  return false;
420
429
  }
421
430
  if (MergedCellCoords.containsNegativeValues(setting)) {
422
431
  warn(MergedCellCoords.NEGATIVE_VALUES_WARNING(setting));
423
- valid = false;
424
- } else if (MergedCellCoords.isOutOfBounds(setting, this.hot.countRows(), this.hot.countCols())) {
432
+ return false;
433
+ }
434
+ if (MergedCellCoords.isOutOfBounds(setting, this.hot.countRows(), this.hot.countCols())) {
425
435
  warn(MergedCellCoords.IS_OUT_OF_BOUNDS_WARNING(setting));
426
- valid = false;
427
- } else if (MergedCellCoords.isSingleCell(setting)) {
436
+ return false;
437
+ }
438
+ if (MergedCellCoords.isSingleCell(setting)) {
428
439
  warn(MergedCellCoords.IS_SINGLE_CELL(setting));
429
- valid = false;
430
- } else if (MergedCellCoords.containsZeroSpan(setting)) {
440
+ return false;
441
+ }
442
+ if (MergedCellCoords.containsZeroSpan(setting)) {
431
443
  warn(MergedCellCoords.ZERO_SPAN_WARNING(setting));
432
- valid = false;
444
+ return false;
433
445
  }
434
- return valid;
446
+ return true;
435
447
  }
436
448
 
437
449
  /**
@@ -441,36 +453,42 @@ export class MergeCells extends BasePlugin {
441
453
  * @param {Array|boolean} settings The settings provided to the plugin.
442
454
  */
443
455
  generateFromSettings(settings) {
444
- if (Array.isArray(settings)) {
445
- const populatedNulls = [];
446
- arrayEach(settings, setting => {
447
- if (!this.validateSetting(setting)) {
448
- return;
449
- }
450
- const highlight = this.hot._createCellCoords(setting.row, setting.col);
451
- const rangeEnd = this.hot._createCellCoords(setting.row + setting.rowspan - 1, setting.col + setting.colspan - 1);
452
- const mergeRange = this.hot._createCellRange(highlight, highlight, rangeEnd);
453
-
454
- // Merging without data population.
455
- this.mergeRange(mergeRange, true, true);
456
- rangeEach(setting.row, setting.row + setting.rowspan - 1, rowIndex => {
457
- rangeEach(setting.col, setting.col + setting.colspan - 1, columnIndex => {
458
- // Not resetting a cell representing a merge area's value.
459
- if ((rowIndex === setting.row && columnIndex === setting.col) === false) {
460
- populatedNulls.push([rowIndex, columnIndex, null]);
461
- }
462
- });
463
- });
464
- });
456
+ if (!Array.isArray(settings)) {
457
+ return;
458
+ }
459
+ const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
460
+ const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
461
+ const populatedNulls = [];
462
+ nonOverlappingSettings.forEach(mergeCellInfo => {
463
+ const {
464
+ row,
465
+ col,
466
+ rowspan,
467
+ colspan
468
+ } = mergeCellInfo;
469
+ const from = this.hot._createCellCoords(row, col);
470
+ const to = this.hot._createCellCoords(row + rowspan - 1, col + colspan - 1);
471
+ const mergeRange = this.hot._createCellRange(from, from, to);
465
472
 
466
- // There are no merged cells. Thus, no data population is needed.
467
- if (populatedNulls.length === 0) {
468
- return;
473
+ // Merging without data population.
474
+ this.mergeRange(mergeRange, true, true);
475
+ for (let r = row; r < row + rowspan; r++) {
476
+ for (let c = col; c < col + colspan; c++) {
477
+ // Not resetting a cell representing a merge area's value.
478
+ if (r !== row || c !== col) {
479
+ populatedNulls.push([r, c, null]);
480
+ }
481
+ }
469
482
  }
483
+ });
470
484
 
471
- // TODO: Change the `source` argument to a more meaningful value, e.g. `${this.pluginName}.clearCells`.
472
- this.hot.setDataAtCell(populatedNulls, undefined, undefined, this.pluginName);
485
+ // There are no merged cells. Thus, no data population is needed.
486
+ if (populatedNulls.length === 0) {
487
+ return;
473
488
  }
489
+
490
+ // TODO: Change the `source` argument to a more meaningful value, e.g. `${this.pluginName}.clearCells`.
491
+ this.hot.setDataAtCell(populatedNulls, undefined, undefined, this.pluginName);
474
492
  }
475
493
 
476
494
  /**
@@ -576,7 +594,7 @@ export class MergeCells extends BasePlugin {
576
594
  });
577
595
  });
578
596
  this.hot.setCellMeta(mergeParent.row, mergeParent.col, 'spanned', true);
579
- const mergedCellAdded = this.mergedCellsCollection.add(mergeParent);
597
+ const mergedCellAdded = this.mergedCellsCollection.add(mergeParent, auto);
580
598
  if (mergedCellAdded) {
581
599
  if (preventPopulation) {
582
600
  populationInfo = [mergeParent.row, mergeParent.col, clearedData];
@@ -606,7 +624,7 @@ export class MergeCells extends BasePlugin {
606
624
  unmergeRange(cellRange) {
607
625
  let auto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
608
626
  const mergedCells = this.mergedCellsCollection.getWithinRange(cellRange);
609
- if (!mergedCells) {
627
+ if (mergedCells.length === 0) {
610
628
  return;
611
629
  }
612
630
  this.hot.runHooks('beforeUnmergeCells', cellRange, auto);
@@ -1110,45 +1128,6 @@ function _addMergeActionsToContextMenu(defaultOptions) {
1110
1128
  name: '---------'
1111
1129
  }, toggleMergeItem(this));
1112
1130
  }
1113
- /**
1114
- * `afterRenderer` hook callback.
1115
- *
1116
- * @param {HTMLElement} TD The cell to be modified.
1117
- * @param {number} row Row index.
1118
- * @param {number} col Visual column index.
1119
- */
1120
- function _onAfterRenderer(TD, row, col) {
1121
- const mergedCell = this.mergedCellsCollection.get(row, col);
1122
- // We shouldn't override data in the collection.
1123
- const mergedCellCopy = isObject(mergedCell) ? clone(mergedCell) : undefined;
1124
- if (isObject(mergedCellCopy)) {
1125
- const {
1126
- rowIndexMapper: rowMapper,
1127
- columnIndexMapper: columnMapper
1128
- } = this.hot;
1129
- const {
1130
- row: mergeRow,
1131
- col: mergeColumn,
1132
- colspan,
1133
- rowspan
1134
- } = mergedCellCopy;
1135
- const [lastMergedRowIndex, lastMergedColumnIndex] = this.translateMergedCellToRenderable(mergeRow, rowspan, mergeColumn, colspan);
1136
- const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
1137
- const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
1138
- const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
1139
- const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
1140
-
1141
- // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
1142
- mergedCellCopy.row = rowMapper.getNearestNotHiddenIndex(mergedCellCopy.row, 1);
1143
- // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
1144
- mergedCellCopy.col = columnMapper.getNearestNotHiddenIndex(mergedCellCopy.col, 1);
1145
- // The `rowSpan` property for a `TD` element should be at most equal to number of rendered rows in the merge area.
1146
- mergedCellCopy.rowspan = Math.min(mergedCellCopy.rowspan, maxRowSpan);
1147
- // The `colSpan` property for a `TD` element should be at most equal to number of rendered columns in the merge area.
1148
- mergedCellCopy.colspan = Math.min(mergedCellCopy.colspan, maxColSpan);
1149
- }
1150
- applySpanProperties(TD, mergedCellCopy, row, col);
1151
- }
1152
1131
  /**
1153
1132
  * Clears the last selected coordinates before setting a new selection range.
1154
1133
  */
@@ -1290,17 +1269,11 @@ function _onModifyAutofillRange(drag, select) {
1290
1269
  dragArea = select;
1291
1270
  return dragArea;
1292
1271
  }
1293
- const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange({
1294
- from: {
1295
- row: select[0],
1296
- col: select[1]
1297
- },
1298
- to: {
1299
- row: select[2],
1300
- col: select[3]
1301
- }
1302
- });
1303
- if (!mergedCellsWithinSelectionArea) {
1272
+ const from = this.hot._createCellCoords(select[0], select[1]);
1273
+ const to = this.hot._createCellCoords(select[2], select[3]);
1274
+ const range = this.hot._createCellRange(from, from, to);
1275
+ const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange(range);
1276
+ if (mergedCellsWithinSelectionArea.length === 0) {
1304
1277
  return dragArea;
1305
1278
  }
1306
1279
  dragArea = this.autofillCalculations.snapDragArea(select, dragArea, dragDirection, mergedCellsWithinSelectionArea);
@@ -1424,4 +1397,80 @@ function _onBeforeBeginEditing(row, column, initialValue, event) {
1424
1397
  const from = this.hot._createCellCoords(mergeCell.row, mergeCell.col);
1425
1398
  const to = this.hot._createCellCoords(mergeCell.row + mergeCell.rowspan - 1, mergeCell.col + mergeCell.colspan - 1);
1426
1399
  return this.hot.selection.getLayerLevel() === 0 && selection.isEqual(this.hot._createCellRange(from, from, to));
1400
+ }
1401
+ /**
1402
+ * Hook used to modify the row height depends on the merged cells in the row.
1403
+ *
1404
+ * @param {number} height The row height value provided by the Core.
1405
+ * @param {number} row The visual row index.
1406
+ * @param {string} overlayType The overlay type that is currently rendered.
1407
+ * @returns {number}
1408
+ */
1409
+ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1410
+ if (this.hot.getSettings().rowHeaders ||
1411
+ // merged cells do not work with the bottom overlays
1412
+ overlayType === 'bottom' || overlayType === 'bottom_inline_start_corner') {
1413
+ return height;
1414
+ }
1415
+ let firstColumn;
1416
+ let lastColumn;
1417
+ if (overlayType === 'master') {
1418
+ firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
1419
+ lastColumn = this.hot.view.getLastRenderedVisibleColumn();
1420
+ } else {
1421
+ const activeOverlay = this.hot.view.getOverlayByName(overlayType);
1422
+ firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
1423
+ lastColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getLastRenderedColumn());
1424
+ }
1425
+ const firstMergedCellInRow = this.mergedCellsCollection.get(row, firstColumn);
1426
+ if (!firstMergedCellInRow) {
1427
+ return height;
1428
+ }
1429
+ const from = this.hot._createCellCoords(row, firstColumn);
1430
+ const to = this.hot._createCellCoords(row, lastColumn);
1431
+ const viewportRange = this.hot._createCellRange(from, from, to);
1432
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
1433
+ const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
1434
+ let {
1435
+ rowspan
1436
+ } = _ref;
1437
+ return Math.max(acc, rowspan);
1438
+ }, 1);
1439
+ let rowspanCorrection = 0;
1440
+ if (mergedCellsWithinRange.length > 1 && mergedCellsWithinRange[0].rowspan < maxRowspan) {
1441
+ rowspanCorrection = maxRowspan - mergedCellsWithinRange[0].rowspan;
1442
+ }
1443
+ mergedCellsWithinRange.forEach(_ref2 => {
1444
+ var _height;
1445
+ let {
1446
+ rowspan
1447
+ } = _ref2;
1448
+ let rowspanAfterCorrection = 0;
1449
+ if (overlayType === 'top' || overlayType === 'top_inline_start_corner') {
1450
+ rowspanAfterCorrection = Math.min(maxRowspan, this.hot.view.countNotHiddenFixedRowsTop() - row);
1451
+ } else {
1452
+ rowspanAfterCorrection = rowspan - rowspanCorrection;
1453
+ }
1454
+ height = Math.max((_height = height) !== null && _height !== void 0 ? _height : 0, _assertClassBrand(_MergeCells_brand, this, _sumCellsHeights).call(this, row, rowspanAfterCorrection));
1455
+ });
1456
+ return height;
1457
+ }
1458
+ /**
1459
+ * Sums the heights of the all cells that the merge cell consists of.
1460
+ *
1461
+ * @param {number} row The visual row index of the merged cell.
1462
+ * @param {number} rowspan The rowspan value of the merged cell.
1463
+ * @returns {number}
1464
+ */
1465
+ function _sumCellsHeights(row, rowspan) {
1466
+ const defaultHeight = this.hot.view._wt.wtSettings.getSettingPure('defaultRowHeight');
1467
+ const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
1468
+ let height = 0;
1469
+ for (let i = row; i < row + rowspan; i++) {
1470
+ if (!this.hot.rowIndexMapper.isHidden(i)) {
1471
+ var _autoRowSizePlugin$ge;
1472
+ height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
1473
+ }
1474
+ }
1475
+ return height;
1427
1476
  }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createMergeCellRenderer = createMergeCellRenderer;
5
+ var _object = require("../../helpers/object");
6
+ /**
7
+ * Creates a renderer object for the `MergeCells` plugin.
8
+ *
9
+ * @private
10
+ * @param {MergeCells} plugin The `MergeCells` plugin instance.
11
+ * @returns {{before: Function, after: Function}}
12
+ */
13
+ function createMergeCellRenderer(plugin) {
14
+ const {
15
+ hot
16
+ } = plugin;
17
+ const {
18
+ rowIndexMapper: rowMapper,
19
+ columnIndexMapper: columnMapper
20
+ } = hot;
21
+
22
+ /**
23
+ * Runs before the cell is rendered.
24
+ *
25
+ * @private
26
+ */
27
+ function before() {}
28
+
29
+ /**
30
+ * Runs after the cell is rendered.
31
+ *
32
+ * @private
33
+ * @param {HTMLElement} TD The cell to be modified.
34
+ * @param {number} row Row index.
35
+ * @param {number} col Visual column index.
36
+ */
37
+ function after(TD, row, col) {
38
+ const mergedCell = plugin.mergedCellsCollection.get(row, col);
39
+ if (!(0, _object.isObject)(mergedCell)) {
40
+ TD.removeAttribute('rowspan');
41
+ TD.removeAttribute('colspan');
42
+ TD.style.display = '';
43
+ return;
44
+ }
45
+ const {
46
+ row: origRow,
47
+ col: origColumn,
48
+ colspan: origColspan,
49
+ rowspan: origRowspan
50
+ } = mergedCell;
51
+ const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
52
+ const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
53
+ const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
54
+ const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
55
+ const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
56
+
57
+ const notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
58
+ const notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
59
+ const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
60
+ const notHiddenColspan = Math.min(origColspan, maxColSpan);
61
+ if (notHiddenRow === row && notHiddenColumn === col) {
62
+ TD.setAttribute('rowspan', notHiddenRowspan);
63
+ TD.setAttribute('colspan', notHiddenColspan);
64
+ } else {
65
+ TD.removeAttribute('rowspan');
66
+ TD.removeAttribute('colspan');
67
+ TD.style.display = 'none';
68
+ }
69
+ }
70
+ return {
71
+ before,
72
+ after
73
+ };
74
+ }
@@ -0,0 +1,70 @@
1
+ import { isObject } from "../../helpers/object.mjs";
2
+ /**
3
+ * Creates a renderer object for the `MergeCells` plugin.
4
+ *
5
+ * @private
6
+ * @param {MergeCells} plugin The `MergeCells` plugin instance.
7
+ * @returns {{before: Function, after: Function}}
8
+ */
9
+ export function createMergeCellRenderer(plugin) {
10
+ const {
11
+ hot
12
+ } = plugin;
13
+ const {
14
+ rowIndexMapper: rowMapper,
15
+ columnIndexMapper: columnMapper
16
+ } = hot;
17
+
18
+ /**
19
+ * Runs before the cell is rendered.
20
+ *
21
+ * @private
22
+ */
23
+ function before() {}
24
+
25
+ /**
26
+ * Runs after the cell is rendered.
27
+ *
28
+ * @private
29
+ * @param {HTMLElement} TD The cell to be modified.
30
+ * @param {number} row Row index.
31
+ * @param {number} col Visual column index.
32
+ */
33
+ function after(TD, row, col) {
34
+ const mergedCell = plugin.mergedCellsCollection.get(row, col);
35
+ if (!isObject(mergedCell)) {
36
+ TD.removeAttribute('rowspan');
37
+ TD.removeAttribute('colspan');
38
+ TD.style.display = '';
39
+ return;
40
+ }
41
+ const {
42
+ row: origRow,
43
+ col: origColumn,
44
+ colspan: origColspan,
45
+ rowspan: origRowspan
46
+ } = mergedCell;
47
+ const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
48
+ const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
49
+ const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
50
+ const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
51
+ const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
52
+
53
+ const notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
54
+ const notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
55
+ const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
56
+ const notHiddenColspan = Math.min(origColspan, maxColSpan);
57
+ if (notHiddenRow === row && notHiddenColumn === col) {
58
+ TD.setAttribute('rowspan', notHiddenRowspan);
59
+ TD.setAttribute('colspan', notHiddenColspan);
60
+ } else {
61
+ TD.removeAttribute('rowspan');
62
+ TD.removeAttribute('colspan');
63
+ TD.style.display = 'none';
64
+ }
65
+ }
66
+ return {
67
+ before,
68
+ after
69
+ };
70
+ }
@@ -10,7 +10,7 @@ var _rootComparator = require("./rootComparator");
10
10
  var _utils2 = require("./utils");
11
11
  var _domHelpers = require("./domHelpers");
12
12
  var _shortcutContexts = require("../../shortcutContexts");
13
- 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; }
13
+ 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; }
14
14
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
15
  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
16
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'multiColumnSorting';
@@ -104,6 +104,7 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
104
104
  enablePlugin() {
105
105
  if (!this.enabled && this.hot.getSettings()[this.pluginKey] && this.hot.getSettings()[CONFLICTED_PLUGIN_KEY]) {
106
106
  (0, _utils2.warnAboutPluginsConflict)();
107
+ this.hot.getPlugin(CONFLICTED_PLUGIN_KEY).disablePlugin();
107
108
  }
108
109
  super.enablePlugin();
109
110
  }
@@ -1,5 +1,5 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
- 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; }
2
+ 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; }
3
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  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); }
5
5
  import { APPEND_COLUMN_CONFIG_STRATEGY, ColumnSorting } from "../columnSorting/index.mjs";
@@ -101,6 +101,7 @@ export class MultiColumnSorting extends ColumnSorting {
101
101
  enablePlugin() {
102
102
  if (!this.enabled && this.hot.getSettings()[this.pluginKey] && this.hot.getSettings()[CONFLICTED_PLUGIN_KEY]) {
103
103
  warnAboutPluginsConflict();
104
+ this.hot.getPlugin(CONFLICTED_PLUGIN_KEY).disablePlugin();
104
105
  }
105
106
  super.enablePlugin();
106
107
  }
@@ -9,5 +9,5 @@ var _templateLiteralTag = require("../../helpers/templateLiteralTag");
9
9
  */
10
10
  function warnAboutPluginsConflict() {
11
11
  (0, _console.warn)((0, _templateLiteralTag.toSingleLine)`Plugins \`columnSorting\` and \`multiColumnSorting\` should not be enabled simultaneously.
12
- Only \`multiColumnSorting\` will work.`);
12
+ Only \`multiColumnSorting\` will work. The \`columnSorting\` plugin will be disabled.`);
13
13
  }
@@ -5,5 +5,5 @@ import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
5
5
  */
6
6
  export function warnAboutPluginsConflict() {
7
7
  warn(toSingleLine`Plugins \`columnSorting\` and \`multiColumnSorting\` should not be enabled simultaneously.
8
- Only \`multiColumnSorting\` will work.`);
8
+ Only \`multiColumnSorting\` will work. The \`columnSorting\` plugin will be disabled.`);
9
9
  }