handsontable 0.0.0-next-7026906-20231107 → 0.0.0-next-7b93b7d-20231107

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (316) hide show
  1. package/3rdparty/SheetClip/SheetClip.js +2 -2
  2. package/3rdparty/SheetClip/SheetClip.mjs +2 -2
  3. package/3rdparty/autoResize/autoResize.js +2 -2
  4. package/3rdparty/autoResize/autoResize.mjs +2 -2
  5. package/3rdparty/walkontable/src/calculator/viewportColumns.js +108 -85
  6. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +108 -85
  7. package/3rdparty/walkontable/src/calculator/viewportRows.js +60 -52
  8. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +60 -52
  9. package/3rdparty/walkontable/src/core/clone.js +6 -0
  10. package/3rdparty/walkontable/src/core/clone.mjs +6 -0
  11. package/3rdparty/walkontable/src/event.js +125 -74
  12. package/3rdparty/walkontable/src/event.mjs +125 -74
  13. package/3rdparty/walkontable/src/filter/column.js +16 -0
  14. package/3rdparty/walkontable/src/filter/column.mjs +16 -0
  15. package/3rdparty/walkontable/src/filter/row.js +16 -0
  16. package/3rdparty/walkontable/src/filter/row.mjs +16 -0
  17. package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
  18. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  19. package/3rdparty/walkontable/src/overlay/top.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  21. package/3rdparty/walkontable/src/renderer/_base.js +12 -5
  22. package/3rdparty/walkontable/src/renderer/_base.mjs +12 -5
  23. package/3rdparty/walkontable/src/renderer/cells.js +6 -2
  24. package/3rdparty/walkontable/src/renderer/cells.mjs +6 -2
  25. package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -2
  26. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +6 -2
  27. package/3rdparty/walkontable/src/renderer/rows.js +5 -0
  28. package/3rdparty/walkontable/src/renderer/rows.mjs +5 -0
  29. package/3rdparty/walkontable/src/renderer/table.js +24 -17
  30. package/3rdparty/walkontable/src/renderer/table.mjs +24 -17
  31. package/3rdparty/walkontable/src/scroll.js +2 -2
  32. package/3rdparty/walkontable/src/scroll.mjs +2 -2
  33. package/3rdparty/walkontable/src/selection/border/border.js +1 -1
  34. package/3rdparty/walkontable/src/selection/border/border.mjs +1 -1
  35. package/3rdparty/walkontable/src/settings.js +10 -10
  36. package/3rdparty/walkontable/src/settings.mjs +10 -10
  37. package/3rdparty/walkontable/src/table.js +3 -3
  38. package/3rdparty/walkontable/src/table.mjs +3 -3
  39. package/3rdparty/walkontable/src/utils/column.js +19 -4
  40. package/3rdparty/walkontable/src/utils/column.mjs +19 -4
  41. package/3rdparty/walkontable/src/utils/nodesPool.js +5 -0
  42. package/3rdparty/walkontable/src/utils/nodesPool.mjs +5 -0
  43. package/3rdparty/walkontable/src/utils/orderView/view.js +13 -6
  44. package/3rdparty/walkontable/src/utils/orderView/view.mjs +13 -6
  45. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +9 -6
  46. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +9 -6
  47. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +7 -4
  48. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +7 -4
  49. package/3rdparty/walkontable/src/utils/row.js +14 -2
  50. package/3rdparty/walkontable/src/utils/row.mjs +14 -2
  51. package/3rdparty/walkontable/src/viewport.js +9 -9
  52. package/3rdparty/walkontable/src/viewport.mjs +9 -9
  53. package/base.js +2 -2
  54. package/base.mjs +2 -2
  55. package/core.js +25 -25
  56. package/core.mjs +25 -25
  57. package/dataMap/dataMap.js +99 -90
  58. package/dataMap/dataMap.mjs +99 -90
  59. package/dataMap/dataSource.js +14 -8
  60. package/dataMap/dataSource.mjs +14 -8
  61. package/dataMap/metaManager/lazyFactoryMap.js +19 -7
  62. package/dataMap/metaManager/lazyFactoryMap.mjs +19 -7
  63. package/dataMap/metaManager/metaLayers/cellMeta.js +8 -3
  64. package/dataMap/metaManager/metaLayers/cellMeta.mjs +8 -3
  65. package/dataMap/metaManager/metaLayers/columnMeta.js +7 -1
  66. package/dataMap/metaManager/metaLayers/columnMeta.mjs +7 -1
  67. package/dataMap/metaManager/metaLayers/globalMeta.js +6 -1
  68. package/dataMap/metaManager/metaLayers/globalMeta.mjs +6 -1
  69. package/dataMap/metaManager/metaLayers/tableMeta.js +6 -2
  70. package/dataMap/metaManager/metaLayers/tableMeta.mjs +6 -2
  71. package/dataMap/metaManager/metaSchema.js +55 -55
  72. package/dataMap/metaManager/metaSchema.mjs +55 -55
  73. package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -2
  74. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -2
  75. package/dataMap/metaManager/mods/extendMetaProperties.js +8 -4
  76. package/dataMap/metaManager/mods/extendMetaProperties.mjs +8 -4
  77. package/dataMap/metaManager/utils.js +2 -2
  78. package/dataMap/metaManager/utils.mjs +2 -2
  79. package/dist/handsontable.css +2 -2
  80. package/dist/handsontable.full.css +2 -2
  81. package/dist/handsontable.full.js +7244 -6347
  82. package/dist/handsontable.full.min.css +2 -2
  83. package/dist/handsontable.full.min.js +120 -120
  84. package/dist/handsontable.js +7243 -6346
  85. package/dist/handsontable.min.css +2 -2
  86. package/dist/handsontable.min.js +28 -28
  87. package/editorManager.js +105 -95
  88. package/editorManager.mjs +105 -95
  89. package/editors/autocompleteEditor/autocompleteEditor.js +47 -46
  90. package/editors/autocompleteEditor/autocompleteEditor.mjs +46 -45
  91. package/editors/baseEditor/baseEditor.js +23 -26
  92. package/editors/baseEditor/baseEditor.mjs +23 -26
  93. package/editors/dateEditor/dateEditor.js +24 -15
  94. package/editors/dateEditor/dateEditor.mjs +24 -15
  95. package/editors/dropdownEditor/dropdownEditor.js +1 -1
  96. package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
  97. package/editors/handsontableEditor/handsontableEditor.js +4 -4
  98. package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
  99. package/editors/textEditor/textEditor.js +23 -17
  100. package/editors/textEditor/textEditor.mjs +24 -18
  101. package/eventManager.js +8 -0
  102. package/eventManager.mjs +8 -0
  103. package/helpers/array.js +2 -2
  104. package/helpers/array.mjs +2 -2
  105. package/helpers/dom/element.js +7 -7
  106. package/helpers/dom/element.mjs +7 -7
  107. package/helpers/function.js +1 -1
  108. package/helpers/function.mjs +1 -1
  109. package/helpers/mixed.js +1 -1
  110. package/helpers/mixed.mjs +1 -1
  111. package/helpers/object.js +4 -4
  112. package/helpers/object.mjs +4 -4
  113. package/helpers/string.js +1 -1
  114. package/helpers/string.mjs +1 -1
  115. package/package.json +1 -1
  116. package/pluginHooks.d.ts +0 -2
  117. package/pluginHooks.js +12 -3
  118. package/pluginHooks.mjs +12 -3
  119. package/plugins/autoColumnSize/autoColumnSize.js +141 -130
  120. package/plugins/autoColumnSize/autoColumnSize.mjs +140 -129
  121. package/plugins/autoRowSize/autoRowSize.js +112 -125
  122. package/plugins/autoRowSize/autoRowSize.mjs +110 -123
  123. package/plugins/autofill/autofill.js +97 -102
  124. package/plugins/autofill/autofill.mjs +96 -101
  125. package/plugins/base/base.js +57 -22
  126. package/plugins/base/base.mjs +56 -22
  127. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +29 -24
  128. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +28 -23
  129. package/plugins/collapsibleColumns/collapsibleColumns.js +104 -107
  130. package/plugins/collapsibleColumns/collapsibleColumns.mjs +102 -104
  131. package/plugins/columnSorting/columnSorting.js +105 -98
  132. package/plugins/columnSorting/columnSorting.mjs +104 -97
  133. package/plugins/columnSorting/columnStatesManager.js +12 -6
  134. package/plugins/columnSorting/columnStatesManager.mjs +12 -6
  135. package/plugins/columnSummary/columnSummary.js +71 -58
  136. package/plugins/columnSummary/columnSummary.mjs +70 -57
  137. package/plugins/columnSummary/endpoints.js +20 -14
  138. package/plugins/columnSummary/endpoints.mjs +20 -14
  139. package/plugins/comments/commentEditor.js +30 -2
  140. package/plugins/comments/commentEditor.mjs +30 -2
  141. package/plugins/comments/comments.js +158 -169
  142. package/plugins/comments/comments.mjs +157 -168
  143. package/plugins/comments/displaySwitch.js +7 -3
  144. package/plugins/comments/displaySwitch.mjs +7 -3
  145. package/plugins/contextMenu/commandExecutor.js +15 -2
  146. package/plugins/contextMenu/commandExecutor.mjs +15 -2
  147. package/plugins/contextMenu/contextMenu.js +91 -101
  148. package/plugins/contextMenu/contextMenu.mjs +90 -100
  149. package/plugins/contextMenu/itemsFactory.js +19 -4
  150. package/plugins/contextMenu/itemsFactory.mjs +19 -4
  151. package/plugins/contextMenu/menu/cursor.js +36 -0
  152. package/plugins/contextMenu/menu/cursor.mjs +36 -0
  153. package/plugins/contextMenu/menu/menu.js +57 -5
  154. package/plugins/contextMenu/menu/menu.mjs +57 -5
  155. package/plugins/copyPaste/copyPaste.js +74 -75
  156. package/plugins/copyPaste/copyPaste.mjs +74 -75
  157. package/plugins/customBorders/customBorders.js +49 -48
  158. package/plugins/customBorders/customBorders.mjs +48 -47
  159. package/plugins/dragToScroll/dragToScroll.js +50 -54
  160. package/plugins/dragToScroll/dragToScroll.mjs +49 -52
  161. package/plugins/dropdownMenu/dropdownMenu.js +132 -129
  162. package/plugins/dropdownMenu/dropdownMenu.mjs +132 -129
  163. package/plugins/exportFile/dataProvider.js +7 -2
  164. package/plugins/exportFile/dataProvider.mjs +7 -2
  165. package/plugins/exportFile/exportFile.js +1 -1
  166. package/plugins/exportFile/exportFile.mjs +1 -1
  167. package/plugins/exportFile/types/_base.js +14 -6
  168. package/plugins/exportFile/types/_base.mjs +14 -6
  169. package/plugins/filters/component/actionBar.js +9 -0
  170. package/plugins/filters/component/actionBar.mjs +9 -0
  171. package/plugins/filters/component/condition.js +13 -0
  172. package/plugins/filters/component/condition.mjs +13 -0
  173. package/plugins/filters/component/operators.js +9 -0
  174. package/plugins/filters/component/operators.mjs +9 -0
  175. package/plugins/filters/component/value.js +9 -0
  176. package/plugins/filters/component/value.mjs +9 -0
  177. package/plugins/filters/conditionCollection.js +9 -4
  178. package/plugins/filters/conditionCollection.mjs +9 -4
  179. package/plugins/filters/conditionUpdateObserver.js +53 -42
  180. package/plugins/filters/conditionUpdateObserver.mjs +53 -42
  181. package/plugins/filters/dataFilter.js +9 -3
  182. package/plugins/filters/dataFilter.mjs +9 -3
  183. package/plugins/filters/filters.js +184 -189
  184. package/plugins/filters/filters.mjs +182 -187
  185. package/plugins/filters/ui/_base.js +1 -1
  186. package/plugins/filters/ui/_base.mjs +1 -1
  187. package/plugins/filters/utils.js +1 -1
  188. package/plugins/filters/utils.mjs +1 -1
  189. package/plugins/formulas/engine/settings.js +1 -1
  190. package/plugins/formulas/engine/settings.mjs +1 -1
  191. package/plugins/formulas/formulas.js +684 -602
  192. package/plugins/formulas/formulas.mjs +682 -600
  193. package/plugins/hiddenColumns/hiddenColumns.js +174 -169
  194. package/plugins/hiddenColumns/hiddenColumns.mjs +173 -168
  195. package/plugins/hiddenRows/hiddenRows.js +170 -165
  196. package/plugins/hiddenRows/hiddenRows.mjs +169 -164
  197. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  198. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  199. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  200. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  201. package/plugins/manualColumnFreeze/manualColumnFreeze.js +67 -54
  202. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +64 -51
  203. package/plugins/manualColumnMove/manualColumnMove.js +287 -232
  204. package/plugins/manualColumnMove/manualColumnMove.mjs +286 -231
  205. package/plugins/manualColumnMove/ui/_base.js +9 -3
  206. package/plugins/manualColumnMove/ui/_base.mjs +9 -3
  207. package/plugins/manualColumnResize/manualColumnResize.js +291 -246
  208. package/plugins/manualColumnResize/manualColumnResize.mjs +290 -244
  209. package/plugins/manualRowMove/manualRowMove.js +223 -208
  210. package/plugins/manualRowMove/manualRowMove.mjs +222 -207
  211. package/plugins/manualRowMove/ui/_base.js +10 -5
  212. package/plugins/manualRowMove/ui/_base.mjs +10 -5
  213. package/plugins/manualRowResize/manualRowResize.js +254 -209
  214. package/plugins/manualRowResize/manualRowResize.mjs +253 -207
  215. package/plugins/mergeCells/calculations/autofill.js +9 -3
  216. package/plugins/mergeCells/calculations/autofill.mjs +9 -3
  217. package/plugins/mergeCells/calculations/selection.js +10 -4
  218. package/plugins/mergeCells/calculations/selection.mjs +10 -4
  219. package/plugins/mergeCells/cellCoords.js +16 -6
  220. package/plugins/mergeCells/cellCoords.mjs +16 -6
  221. package/plugins/mergeCells/cellsCollection.js +10 -4
  222. package/plugins/mergeCells/cellsCollection.mjs +10 -4
  223. package/plugins/mergeCells/mergeCells.js +582 -502
  224. package/plugins/mergeCells/mergeCells.mjs +580 -500
  225. package/plugins/multiColumnSorting/multiColumnSorting.js +13 -10
  226. package/plugins/multiColumnSorting/multiColumnSorting.mjs +13 -10
  227. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +16 -28
  228. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +16 -27
  229. package/plugins/nestedHeaders/nestedHeaders.js +542 -499
  230. package/plugins/nestedHeaders/nestedHeaders.mjs +554 -511
  231. package/plugins/nestedHeaders/stateManager/index.js +1 -1
  232. package/plugins/nestedHeaders/stateManager/index.mjs +1 -1
  233. package/plugins/nestedRows/data/dataManager.js +21 -15
  234. package/plugins/nestedRows/data/dataManager.mjs +21 -15
  235. package/plugins/nestedRows/nestedRows.js +326 -278
  236. package/plugins/nestedRows/nestedRows.mjs +325 -277
  237. package/plugins/nestedRows/ui/_base.js +7 -1
  238. package/plugins/nestedRows/ui/_base.mjs +7 -1
  239. package/plugins/nestedRows/ui/collapsing.js +2 -2
  240. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  241. package/plugins/nestedRows/ui/contextMenu.js +28 -18
  242. package/plugins/nestedRows/ui/contextMenu.mjs +28 -18
  243. package/plugins/nestedRows/utils/rowMoveController.js +12 -4
  244. package/plugins/nestedRows/utils/rowMoveController.mjs +12 -4
  245. package/plugins/persistentState/persistentState.js +14 -11
  246. package/plugins/persistentState/persistentState.mjs +14 -11
  247. package/plugins/persistentState/storage.js +11 -6
  248. package/plugins/persistentState/storage.mjs +11 -6
  249. package/plugins/registry.js +2 -2
  250. package/plugins/registry.mjs +2 -2
  251. package/plugins/search/search.js +57 -46
  252. package/plugins/search/search.mjs +56 -45
  253. package/plugins/touchScroll/touchScroll.js +102 -100
  254. package/plugins/touchScroll/touchScroll.mjs +100 -98
  255. package/plugins/trimRows/trimRows.js +33 -28
  256. package/plugins/trimRows/trimRows.mjs +32 -27
  257. package/plugins/undoRedo/undoRedo.js +2 -2
  258. package/plugins/undoRedo/undoRedo.mjs +2 -2
  259. package/renderers/autocompleteRenderer/autocompleteRenderer.js +11 -11
  260. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +11 -11
  261. package/renderers/baseRenderer/baseRenderer.js +2 -2
  262. package/renderers/baseRenderer/baseRenderer.mjs +2 -2
  263. package/renderers/checkboxRenderer/checkboxRenderer.js +23 -23
  264. package/renderers/checkboxRenderer/checkboxRenderer.mjs +23 -23
  265. package/renderers/dateRenderer/dateRenderer.js +4 -4
  266. package/renderers/dateRenderer/dateRenderer.mjs +4 -4
  267. package/renderers/handsontableRenderer/handsontableRenderer.js +4 -4
  268. package/renderers/handsontableRenderer/handsontableRenderer.mjs +4 -4
  269. package/renderers/htmlRenderer/htmlRenderer.js +4 -4
  270. package/renderers/htmlRenderer/htmlRenderer.mjs +4 -4
  271. package/renderers/numericRenderer/numericRenderer.js +3 -3
  272. package/renderers/numericRenderer/numericRenderer.mjs +3 -3
  273. package/renderers/passwordRenderer/passwordRenderer.js +3 -3
  274. package/renderers/passwordRenderer/passwordRenderer.mjs +3 -3
  275. package/renderers/selectRenderer/selectRenderer.js +4 -4
  276. package/renderers/selectRenderer/selectRenderer.mjs +4 -4
  277. package/renderers/textRenderer/textRenderer.js +5 -5
  278. package/renderers/textRenderer/textRenderer.mjs +5 -5
  279. package/renderers/timeRenderer/timeRenderer.js +3 -3
  280. package/renderers/timeRenderer/timeRenderer.mjs +3 -3
  281. package/selection/range.js +12 -2
  282. package/selection/range.mjs +12 -2
  283. package/selection/selection.js +3 -3
  284. package/selection/selection.mjs +3 -3
  285. package/tableView.js +208 -200
  286. package/tableView.mjs +208 -200
  287. package/translations/changesObservable/utils.js +2 -2
  288. package/translations/changesObservable/utils.mjs +2 -2
  289. package/translations/indexMapper.js +25 -22
  290. package/translations/indexMapper.mjs +25 -22
  291. package/translations/mapCollections/aggregatedCollection.js +8 -2
  292. package/translations/mapCollections/aggregatedCollection.mjs +8 -2
  293. package/translations/mapCollections/mapCollection.js +5 -2
  294. package/translations/mapCollections/mapCollection.mjs +5 -2
  295. package/translations/maps/indexMap.js +6 -1
  296. package/translations/maps/indexMap.mjs +6 -1
  297. package/translations/maps/utils/physicallyIndexed.js +2 -2
  298. package/translations/maps/utils/physicallyIndexed.mjs +2 -2
  299. package/utils/dataStructures/linkedList.js +10 -6
  300. package/utils/dataStructures/linkedList.mjs +10 -6
  301. package/utils/dataStructures/queue.js +1 -1
  302. package/utils/dataStructures/queue.mjs +1 -1
  303. package/utils/dataStructures/stack.js +1 -1
  304. package/utils/dataStructures/stack.mjs +1 -1
  305. package/utils/ghostTable.js +2 -2
  306. package/utils/ghostTable.mjs +2 -2
  307. package/utils/interval.js +73 -36
  308. package/utils/interval.mjs +73 -36
  309. package/utils/parseTable.js +1 -1
  310. package/utils/parseTable.mjs +1 -1
  311. package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
  312. package/validators/autocompleteValidator/autocompleteValidator.mjs +1 -1
  313. package/validators/dateValidator/dateValidator.js +1 -1
  314. package/validators/dateValidator/dateValidator.mjs +1 -1
  315. package/validators/numericValidator/numericValidator.js +1 -1
  316. package/validators/numericValidator/numericValidator.mjs +1 -1
@@ -2,6 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.array.push.js");
5
+ require("core-js/modules/es.error.cause.js");
5
6
  var _base = require("../base");
6
7
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
7
8
  var _cellsCollection = _interopRequireDefault(require("./cellsCollection"));
@@ -17,6 +18,18 @@ var _utils = require("./utils");
17
18
  var _element = require("../../helpers/dom/element");
18
19
  var _browser = require("../../helpers/browser");
19
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
22
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
23
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
24
+ 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; }
25
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
26
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
27
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
28
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
29
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
30
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
31
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
32
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
20
33
  _pluginHooks.default.getSingleton().register('beforeMergeCells');
21
34
  _pluginHooks.default.getSingleton().register('afterMergeCells');
22
35
  _pluginHooks.default.getSingleton().register('beforeUnmergeCells');
@@ -25,7 +38,6 @@ const PLUGIN_KEY = 'mergeCells';
25
38
  exports.PLUGIN_KEY = PLUGIN_KEY;
26
39
  const PLUGIN_PRIORITY = 150;
27
40
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
28
- const privatePool = new WeakMap();
29
41
  const SHORTCUTS_GROUP = PLUGIN_KEY;
30
42
 
31
43
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -65,42 +77,231 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
65
77
  * ```
66
78
  * :::
67
79
  */
80
+ var _lastDesiredCoords = /*#__PURE__*/new WeakMap();
81
+ var _onAfterInit = /*#__PURE__*/new WeakSet();
82
+ var _onAfterIsMultipleSelection = /*#__PURE__*/new WeakSet();
83
+ var _onModifyTransformStart = /*#__PURE__*/new WeakSet();
84
+ var _onModifyTransformEnd = /*#__PURE__*/new WeakSet();
85
+ var _onModifyGetCellCoords = /*#__PURE__*/new WeakSet();
86
+ var _addMergeActionsToContextMenu = /*#__PURE__*/new WeakSet();
87
+ var _onAfterRenderer = /*#__PURE__*/new WeakSet();
88
+ var _onBeforeSetRangeStart = /*#__PURE__*/new WeakSet();
89
+ var _onBeforeSetRangeEnd = /*#__PURE__*/new WeakSet();
90
+ var _onAfterGetCellMeta = /*#__PURE__*/new WeakSet();
91
+ var _onAfterViewportRowCalculatorOverride = /*#__PURE__*/new WeakSet();
92
+ var _onAfterViewportColumnCalculatorOverride = /*#__PURE__*/new WeakSet();
93
+ var _onModifyAutofillRange = /*#__PURE__*/new WeakSet();
94
+ var _onAfterCreateCol = /*#__PURE__*/new WeakSet();
95
+ var _onAfterRemoveCol = /*#__PURE__*/new WeakSet();
96
+ var _onAfterCreateRow = /*#__PURE__*/new WeakSet();
97
+ var _onAfterRemoveRow = /*#__PURE__*/new WeakSet();
98
+ var _onAfterChange = /*#__PURE__*/new WeakSet();
99
+ var _onBeforeDrawAreaBorders = /*#__PURE__*/new WeakSet();
100
+ var _onAfterModifyTransformStart = /*#__PURE__*/new WeakSet();
101
+ var _onAfterDrawSelection = /*#__PURE__*/new WeakSet();
102
+ var _onBeforeRemoveCellClassNames = /*#__PURE__*/new WeakSet();
68
103
  class MergeCells extends _base.BasePlugin {
69
- static get PLUGIN_KEY() {
70
- return PLUGIN_KEY;
71
- }
72
- static get PLUGIN_PRIORITY() {
73
- return PLUGIN_PRIORITY;
74
- }
75
- constructor(hotInstance) {
76
- super(hotInstance);
77
- privatePool.set(this, {
78
- lastDesiredCoords: null
79
- });
80
-
104
+ constructor() {
105
+ super(...arguments);
106
+ /**
107
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
108
+ *
109
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
110
+ * all the cells in the table.
111
+ */
112
+ _classPrivateMethodInitSpec(this, _onBeforeRemoveCellClassNames);
113
+ /**
114
+ * `afterDrawSelection` hook callback. Used to add the additional class name for the entirely-selected merged cells.
115
+ *
116
+ * @param {number} currentRow Visual row index of the currently processed cell.
117
+ * @param {number} currentColumn Visual column index of the currently cell.
118
+ * @param {Array} cornersOfSelection Array of the current selection in a form of `[startRow, startColumn, endRow,
119
+ * endColumn]`.
120
+ * @param {number|undefined} layerLevel Number indicating which layer of selection is currently processed.
121
+ * @returns {string|undefined} A `String`, which will act as an additional `className` to be added to the currently
122
+ * processed cell.
123
+ */
124
+ _classPrivateMethodInitSpec(this, _onAfterDrawSelection);
125
+ /**
126
+ * `afterModifyTransformStart` hook callback. Fixes a problem with navigating through merged cells at the edges of
127
+ * the table with the ENTER/SHIFT+ENTER/TAB/SHIFT+TAB keys.
128
+ *
129
+ * @param {CellCoords} coords Coordinates of the to-be-selected cell.
130
+ * @param {number} rowTransformDir Row transformation direction (negative value = up, 0 = none, positive value =
131
+ * down).
132
+ * @param {number} colTransformDir Column transformation direction (negative value = up, 0 = none, positive value =
133
+ * down).
134
+ */
135
+ _classPrivateMethodInitSpec(this, _onAfterModifyTransformStart);
136
+ /**
137
+ * `beforeDrawAreaBorders` hook callback.
138
+ *
139
+ * @param {Array} corners Visual coordinates of the area corners.
140
+ * @param {string} className Class name for the area.
141
+ */
142
+ _classPrivateMethodInitSpec(this, _onBeforeDrawAreaBorders);
143
+ /**
144
+ * `afterChange` hook callback. Used to propagate merged cells after using Autofill.
145
+ *
146
+ * @param {Array} changes The changes array.
147
+ * @param {string} source Determines the source of the change.
148
+ */
149
+ _classPrivateMethodInitSpec(this, _onAfterChange);
150
+ /**
151
+ * `afterRemoveRow` hook callback.
152
+ *
153
+ * @param {number} row Row index.
154
+ * @param {number} count Number of removed rows.
155
+ */
156
+ _classPrivateMethodInitSpec(this, _onAfterRemoveRow);
157
+ /**
158
+ * `afterCreateRow` hook callback.
159
+ *
160
+ * @param {number} row Row index.
161
+ * @param {number} count Number of created rows.
162
+ * @param {string} source Source of change.
163
+ */
164
+ _classPrivateMethodInitSpec(this, _onAfterCreateRow);
165
+ /**
166
+ * `afterRemoveCol` hook callback.
167
+ *
168
+ * @param {number} column Column index.
169
+ * @param {number} count Number of removed columns.
170
+ */
171
+ _classPrivateMethodInitSpec(this, _onAfterRemoveCol);
172
+ /**
173
+ * `afterCreateCol` hook callback.
174
+ *
175
+ * @param {number} column Column index.
176
+ * @param {number} count Number of created columns.
177
+ */
178
+ _classPrivateMethodInitSpec(this, _onAfterCreateCol);
179
+ /**
180
+ * The `modifyAutofillRange` hook callback.
181
+ *
182
+ * @param {Array} drag The drag area coordinates.
183
+ * @param {Array} select The selection information.
184
+ * @returns {Array} The new drag area.
185
+ */
186
+ _classPrivateMethodInitSpec(this, _onModifyAutofillRange);
187
+ /**
188
+ * `afterViewportColumnCalculatorOverride` hook callback.
189
+ *
190
+ * @param {object} calc The column calculator object.
191
+ */
192
+ _classPrivateMethodInitSpec(this, _onAfterViewportColumnCalculatorOverride);
193
+ /**
194
+ * `afterViewportRowCalculatorOverride` hook callback.
195
+ *
196
+ * @param {object} calc The row calculator object.
197
+ */
198
+ _classPrivateMethodInitSpec(this, _onAfterViewportRowCalculatorOverride);
199
+ /**
200
+ * The `afterGetCellMeta` hook callback.
201
+ *
202
+ * @param {number} row Row index.
203
+ * @param {number} col Column index.
204
+ * @param {object} cellProperties The cell properties object.
205
+ */
206
+ _classPrivateMethodInitSpec(this, _onAfterGetCellMeta);
207
+ /**
208
+ * `beforeSetRangeEnd` hook callback.
209
+ * While selecting cells with keyboard or mouse, make sure that rectangular area is expanded to the extent of the
210
+ * merged cell.
211
+ *
212
+ * Note: Please keep in mind that callback may modify both start and end range coordinates by the reference.
213
+ *
214
+ * @param {object} coords Cell coords.
215
+ */
216
+ _classPrivateMethodInitSpec(this, _onBeforeSetRangeEnd);
217
+ /**
218
+ * `beforeSetRangeStart` and `beforeSetRangeStartOnly` hook callback.
219
+ * A selection within merge area should be rewritten to the start of merge area.
220
+ *
221
+ * @param {object} coords Cell coords.
222
+ */
223
+ _classPrivateMethodInitSpec(this, _onBeforeSetRangeStart);
224
+ /**
225
+ * `afterRenderer` hook callback.
226
+ *
227
+ * @param {HTMLElement} TD The cell to be modified.
228
+ * @param {number} row Row index.
229
+ * @param {number} col Visual column index.
230
+ */
231
+ _classPrivateMethodInitSpec(this, _onAfterRenderer);
232
+ /**
233
+ * `afterContextMenuDefaultOptions` hook callback.
234
+ *
235
+ * @param {object} defaultOptions The default context menu options.
236
+ */
237
+ _classPrivateMethodInitSpec(this, _addMergeActionsToContextMenu);
238
+ /**
239
+ * `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
240
+ *
241
+ * @param {number} row Row index.
242
+ * @param {number} column Visual column index.
243
+ * @returns {Array|undefined} Visual coordinates of the merge.
244
+ */
245
+ _classPrivateMethodInitSpec(this, _onModifyGetCellCoords);
246
+ /**
247
+ * `modifyTransformEnd` hook callback. Needed to handle "jumping over" merged merged cells, while selecting.
248
+ *
249
+ * @param {object} delta The transformation delta.
250
+ */
251
+ _classPrivateMethodInitSpec(this, _onModifyTransformEnd);
252
+ /**
253
+ * `modifyTransformStart` hook callback.
254
+ *
255
+ * @param {object} delta The transformation delta.
256
+ */
257
+ _classPrivateMethodInitSpec(this, _onModifyTransformStart);
258
+ /**
259
+ * Modifies the information on whether the current selection contains multiple cells. The `afterIsMultipleSelection`
260
+ * hook callback.
261
+ *
262
+ * @param {boolean} isMultiple Determines whether the current selection contains multiple cells.
263
+ * @returns {boolean}
264
+ */
265
+ _classPrivateMethodInitSpec(this, _onAfterIsMultipleSelection);
266
+ /**
267
+ * `afterInit` hook callback.
268
+ */
269
+ _classPrivateMethodInitSpec(this, _onAfterInit);
81
270
  /**
82
271
  * A container for all the merged cells.
83
272
  *
84
273
  * @private
85
274
  * @type {MergedCellsCollection}
86
275
  */
87
- this.mergedCellsCollection = null;
276
+ _defineProperty(this, "mergedCellsCollection", null);
88
277
  /**
89
278
  * Instance of the class responsible for all the autofill-related calculations.
90
279
  *
91
280
  * @private
92
281
  * @type {AutofillCalculations}
93
282
  */
94
- this.autofillCalculations = null;
283
+ _defineProperty(this, "autofillCalculations", null);
95
284
  /**
96
285
  * Instance of the class responsible for the selection-related calculations.
97
286
  *
98
287
  * @private
99
288
  * @type {SelectionCalculations}
100
289
  */
101
- this.selectionCalculations = null;
290
+ _defineProperty(this, "selectionCalculations", null);
291
+ /**
292
+ * @type {CellCoords}
293
+ */
294
+ _classPrivateFieldInitSpec(this, _lastDesiredCoords, {
295
+ writable: true,
296
+ value: null
297
+ });
298
+ }
299
+ static get PLUGIN_KEY() {
300
+ return PLUGIN_KEY;
301
+ }
302
+ static get PLUGIN_PRIORITY() {
303
+ return PLUGIN_PRIORITY;
102
304
  }
103
-
104
305
  /**
105
306
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
106
307
  * hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
@@ -123,73 +324,142 @@ class MergeCells extends _base.BasePlugin {
123
324
  this.autofillCalculations = new _autofill.default(this);
124
325
  this.selectionCalculations = new _selection.default(this);
125
326
  this.addHook('afterInit', function () {
126
- return _this.onAfterInit(...arguments);
327
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
328
+ args[_key] = arguments[_key];
329
+ }
330
+ return _classPrivateMethodGet(_this, _onAfterInit, _onAfterInit2).call(_this, ...args);
127
331
  });
128
332
  this.addHook('modifyTransformStart', function () {
129
- return _this.onModifyTransformStart(...arguments);
333
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
334
+ args[_key2] = arguments[_key2];
335
+ }
336
+ return _classPrivateMethodGet(_this, _onModifyTransformStart, _onModifyTransformStart2).call(_this, ...args);
130
337
  });
131
338
  this.addHook('afterModifyTransformStart', function () {
132
- return _this.onAfterModifyTransformStart(...arguments);
339
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
340
+ args[_key3] = arguments[_key3];
341
+ }
342
+ return _classPrivateMethodGet(_this, _onAfterModifyTransformStart, _onAfterModifyTransformStart2).call(_this, ...args);
133
343
  });
134
344
  this.addHook('modifyTransformEnd', function () {
135
- return _this.onModifyTransformEnd(...arguments);
345
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
346
+ args[_key4] = arguments[_key4];
347
+ }
348
+ return _classPrivateMethodGet(_this, _onModifyTransformEnd, _onModifyTransformEnd2).call(_this, ...args);
136
349
  });
137
350
  this.addHook('modifyGetCellCoords', function () {
138
- return _this.onModifyGetCellCoords(...arguments);
351
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
352
+ args[_key5] = arguments[_key5];
353
+ }
354
+ return _classPrivateMethodGet(_this, _onModifyGetCellCoords, _onModifyGetCellCoords2).call(_this, ...args);
139
355
  });
140
356
  this.addHook('beforeSetRangeStart', function () {
141
- return _this.onBeforeSetRangeStart(...arguments);
357
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
358
+ args[_key6] = arguments[_key6];
359
+ }
360
+ return _classPrivateMethodGet(_this, _onBeforeSetRangeStart, _onBeforeSetRangeStart2).call(_this, ...args);
142
361
  });
143
362
  this.addHook('beforeSetRangeStartOnly', function () {
144
- return _this.onBeforeSetRangeStart(...arguments);
363
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
364
+ args[_key7] = arguments[_key7];
365
+ }
366
+ return _classPrivateMethodGet(_this, _onBeforeSetRangeStart, _onBeforeSetRangeStart2).call(_this, ...args);
145
367
  });
146
368
  this.addHook('beforeSetRangeEnd', function () {
147
- return _this.onBeforeSetRangeEnd(...arguments);
369
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
370
+ args[_key8] = arguments[_key8];
371
+ }
372
+ return _classPrivateMethodGet(_this, _onBeforeSetRangeEnd, _onBeforeSetRangeEnd2).call(_this, ...args);
148
373
  });
149
374
  this.addHook('afterIsMultipleSelection', function () {
150
- return _this.onAfterIsMultipleSelection(...arguments);
375
+ for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
376
+ args[_key9] = arguments[_key9];
377
+ }
378
+ return _classPrivateMethodGet(_this, _onAfterIsMultipleSelection, _onAfterIsMultipleSelection2).call(_this, ...args);
151
379
  });
152
380
  this.addHook('afterRenderer', function () {
153
- return _this.onAfterRenderer(...arguments);
381
+ for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
382
+ args[_key10] = arguments[_key10];
383
+ }
384
+ return _classPrivateMethodGet(_this, _onAfterRenderer, _onAfterRenderer2).call(_this, ...args);
154
385
  });
155
386
  this.addHook('afterContextMenuDefaultOptions', function () {
156
- return _this.addMergeActionsToContextMenu(...arguments);
387
+ for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
388
+ args[_key11] = arguments[_key11];
389
+ }
390
+ return _classPrivateMethodGet(_this, _addMergeActionsToContextMenu, _addMergeActionsToContextMenu2).call(_this, ...args);
157
391
  });
158
392
  this.addHook('afterGetCellMeta', function () {
159
- return _this.onAfterGetCellMeta(...arguments);
393
+ for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
394
+ args[_key12] = arguments[_key12];
395
+ }
396
+ return _classPrivateMethodGet(_this, _onAfterGetCellMeta, _onAfterGetCellMeta2).call(_this, ...args);
160
397
  });
161
398
  this.addHook('afterViewportRowCalculatorOverride', function () {
162
- return _this.onAfterViewportRowCalculatorOverride(...arguments);
399
+ for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
400
+ args[_key13] = arguments[_key13];
401
+ }
402
+ return _classPrivateMethodGet(_this, _onAfterViewportRowCalculatorOverride, _onAfterViewportRowCalculatorOverride2).call(_this, ...args);
163
403
  });
164
404
  this.addHook('afterViewportColumnCalculatorOverride', function () {
165
- return _this.onAfterViewportColumnCalculatorOverride(...arguments);
405
+ for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
406
+ args[_key14] = arguments[_key14];
407
+ }
408
+ return _classPrivateMethodGet(_this, _onAfterViewportColumnCalculatorOverride, _onAfterViewportColumnCalculatorOverride2).call(_this, ...args);
166
409
  });
167
410
  this.addHook('modifyAutofillRange', function () {
168
- return _this.onModifyAutofillRange(...arguments);
411
+ for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
412
+ args[_key15] = arguments[_key15];
413
+ }
414
+ return _classPrivateMethodGet(_this, _onModifyAutofillRange, _onModifyAutofillRange2).call(_this, ...args);
169
415
  });
170
416
  this.addHook('afterCreateCol', function () {
171
- return _this.onAfterCreateCol(...arguments);
417
+ for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
418
+ args[_key16] = arguments[_key16];
419
+ }
420
+ return _classPrivateMethodGet(_this, _onAfterCreateCol, _onAfterCreateCol2).call(_this, ...args);
172
421
  });
173
422
  this.addHook('afterRemoveCol', function () {
174
- return _this.onAfterRemoveCol(...arguments);
423
+ for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
424
+ args[_key17] = arguments[_key17];
425
+ }
426
+ return _classPrivateMethodGet(_this, _onAfterRemoveCol, _onAfterRemoveCol2).call(_this, ...args);
175
427
  });
176
428
  this.addHook('afterCreateRow', function () {
177
- return _this.onAfterCreateRow(...arguments);
429
+ for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
430
+ args[_key18] = arguments[_key18];
431
+ }
432
+ return _classPrivateMethodGet(_this, _onAfterCreateRow, _onAfterCreateRow2).call(_this, ...args);
178
433
  });
179
434
  this.addHook('afterRemoveRow', function () {
180
- return _this.onAfterRemoveRow(...arguments);
435
+ for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
436
+ args[_key19] = arguments[_key19];
437
+ }
438
+ return _classPrivateMethodGet(_this, _onAfterRemoveRow, _onAfterRemoveRow2).call(_this, ...args);
181
439
  });
182
440
  this.addHook('afterChange', function () {
183
- return _this.onAfterChange(...arguments);
441
+ for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
442
+ args[_key20] = arguments[_key20];
443
+ }
444
+ return _classPrivateMethodGet(_this, _onAfterChange, _onAfterChange2).call(_this, ...args);
184
445
  });
185
446
  this.addHook('beforeDrawBorders', function () {
186
- return _this.onBeforeDrawAreaBorders(...arguments);
447
+ for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
448
+ args[_key21] = arguments[_key21];
449
+ }
450
+ return _classPrivateMethodGet(_this, _onBeforeDrawAreaBorders, _onBeforeDrawAreaBorders2).call(_this, ...args);
187
451
  });
188
452
  this.addHook('afterDrawSelection', function () {
189
- return _this.onAfterDrawSelection(...arguments);
453
+ for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
454
+ args[_key22] = arguments[_key22];
455
+ }
456
+ return _classPrivateMethodGet(_this, _onAfterDrawSelection, _onAfterDrawSelection2).call(_this, ...args);
190
457
  });
191
458
  this.addHook('beforeRemoveCellClassNames', function () {
192
- return _this.onBeforeRemoveCellClassNames(...arguments);
459
+ for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
460
+ args[_key23] = arguments[_key23];
461
+ }
462
+ return _classPrivateMethodGet(_this, _onBeforeRemoveCellClassNames, _onBeforeRemoveCellClassNames2).call(_this, ...args);
193
463
  });
194
464
  this.addHook('beforeUndoStackChange', (action, source) => {
195
465
  if (source === 'MergeCells') {
@@ -464,7 +734,7 @@ class MergeCells extends _base.BasePlugin {
464
734
  if (preventPopulation) {
465
735
  populationInfo = [mergeParent.row, mergeParent.col, clearedData];
466
736
  } else {
467
- this.hot.populateFromArray(mergeParent.row, mergeParent.col, clearedData, void 0, void 0, this.pluginName);
737
+ this.hot.populateFromArray(mergeParent.row, mergeParent.col, clearedData, undefined, undefined, this.pluginName);
468
738
  }
469
739
  if (!auto) {
470
740
  this.ifChromeForceRepaint();
@@ -553,17 +823,6 @@ class MergeCells extends _base.BasePlugin {
553
823
  const end = this.hot._createCellCoords(endRow, endColumn);
554
824
  this.unmergeRange(this.hot._createCellRange(start, start, end));
555
825
  }
556
-
557
- /**
558
- * `afterInit` hook callback.
559
- *
560
- * @private
561
- */
562
- onAfterInit() {
563
- this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
564
- this.hot.render();
565
- }
566
-
567
826
  /**
568
827
  * Register shortcuts responsible for toggling a merge.
569
828
  *
@@ -597,280 +856,6 @@ class MergeCells extends _base.BasePlugin {
597
856
  const gridContext = shortcutManager.getContext('grid');
598
857
  gridContext.removeShortcutsByGroup(SHORTCUTS_GROUP);
599
858
  }
600
-
601
- /**
602
- * Modifies the information on whether the current selection contains multiple cells. The `afterIsMultipleSelection`
603
- * hook callback.
604
- *
605
- * @private
606
- * @param {boolean} isMultiple Determines whether the current selection contains multiple cells.
607
- * @returns {boolean}
608
- */
609
- onAfterIsMultipleSelection(isMultiple) {
610
- if (isMultiple) {
611
- const mergedCells = this.mergedCellsCollection.mergedCells;
612
- const selectionRange = this.hot.getSelectedRangeLast();
613
- for (let group = 0; group < mergedCells.length; group += 1) {
614
- if (selectionRange.from.row === mergedCells[group].row && selectionRange.from.col === mergedCells[group].col && selectionRange.to.row === mergedCells[group].row + mergedCells[group].rowspan - 1 && selectionRange.to.col === mergedCells[group].col + mergedCells[group].colspan - 1) {
615
- return false;
616
- }
617
- }
618
- }
619
- return isMultiple;
620
- }
621
-
622
- /**
623
- * `modifyTransformStart` hook callback.
624
- *
625
- * @private
626
- * @param {object} delta The transformation delta.
627
- */
628
- onModifyTransformStart(delta) {
629
- const priv = privatePool.get(this);
630
- const currentlySelectedRange = this.hot.getSelectedRangeLast();
631
- let newDelta = {
632
- row: delta.row,
633
- col: delta.col
634
- };
635
- let nextPosition = null;
636
- const currentPosition = this.hot._createCellCoords(currentlySelectedRange.highlight.row, currentlySelectedRange.highlight.col);
637
- const mergedParent = this.mergedCellsCollection.get(currentPosition.row, currentPosition.col);
638
- if (!priv.lastDesiredCoords) {
639
- priv.lastDesiredCoords = this.hot._createCellCoords(null, null);
640
- }
641
- if (mergedParent) {
642
- // only merge selected
643
- const mergeTopLeft = this.hot._createCellCoords(mergedParent.row, mergedParent.col);
644
- const mergeBottomRight = this.hot._createCellCoords(mergedParent.row + mergedParent.rowspan - 1, mergedParent.col + mergedParent.colspan - 1);
645
- const mergeRange = this.hot._createCellRange(mergeTopLeft, mergeTopLeft, mergeBottomRight);
646
- if (!mergeRange.includes(priv.lastDesiredCoords)) {
647
- priv.lastDesiredCoords = this.hot._createCellCoords(null, null); // reset outdated version of lastDesiredCoords
648
- }
649
-
650
- newDelta.row = priv.lastDesiredCoords.row ? priv.lastDesiredCoords.row - currentPosition.row : newDelta.row;
651
- newDelta.col = priv.lastDesiredCoords.col ? priv.lastDesiredCoords.col - currentPosition.col : newDelta.col;
652
- if (delta.row > 0) {
653
- // moving down
654
- newDelta.row = mergedParent.row + mergedParent.rowspan - 1 - currentPosition.row + delta.row;
655
- } else if (delta.row < 0) {
656
- // moving up
657
- newDelta.row = currentPosition.row - mergedParent.row + delta.row;
658
- }
659
- if (delta.col > 0) {
660
- // moving right
661
- newDelta.col = mergedParent.col + mergedParent.colspan - 1 - currentPosition.col + delta.col;
662
- } else if (delta.col < 0) {
663
- // moving left
664
- newDelta.col = currentPosition.col - mergedParent.col + delta.col;
665
- }
666
- }
667
- nextPosition = this.hot._createCellCoords(currentlySelectedRange.highlight.row + newDelta.row, currentlySelectedRange.highlight.col + newDelta.col);
668
- const nextPositionMergedCell = this.mergedCellsCollection.get(nextPosition.row, nextPosition.col);
669
- if (nextPositionMergedCell) {
670
- // skipping the invisible cells in the merge range
671
- const firstRenderableCoords = this.mergedCellsCollection.getFirstRenderableCoords(nextPositionMergedCell.row, nextPositionMergedCell.col);
672
- priv.lastDesiredCoords = nextPosition;
673
- newDelta = {
674
- row: firstRenderableCoords.row - currentPosition.row,
675
- col: firstRenderableCoords.col - currentPosition.col
676
- };
677
- }
678
- if (newDelta.row !== 0) {
679
- delta.row = newDelta.row;
680
- }
681
- if (newDelta.col !== 0) {
682
- delta.col = newDelta.col;
683
- }
684
- }
685
-
686
- /**
687
- * `modifyTransformEnd` hook callback. Needed to handle "jumping over" merged merged cells, while selecting.
688
- *
689
- * @private
690
- * @param {object} delta The transformation delta.
691
- */
692
- onModifyTransformEnd(delta) {
693
- const currentSelectionRange = this.hot.getSelectedRangeLast();
694
- const newDelta = (0, _object.clone)(delta);
695
- const newSelectionRange = this.selectionCalculations.getUpdatedSelectionRange(currentSelectionRange, delta);
696
- let tempDelta = (0, _object.clone)(newDelta);
697
- const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(newSelectionRange, true);
698
- do {
699
- tempDelta = (0, _object.clone)(newDelta);
700
- this.selectionCalculations.getUpdatedSelectionRange(currentSelectionRange, newDelta);
701
- (0, _array.arrayEach)(mergedCellsWithinRange, mergedCell => {
702
- this.selectionCalculations.snapDelta(newDelta, currentSelectionRange, mergedCell);
703
- });
704
- } while (newDelta.row !== tempDelta.row || newDelta.col !== tempDelta.col);
705
- delta.row = newDelta.row;
706
- delta.col = newDelta.col;
707
- }
708
-
709
- /**
710
- * `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
711
- *
712
- * @private
713
- * @param {number} row Row index.
714
- * @param {number} column Visual column index.
715
- * @returns {Array|undefined} Visual coordinates of the merge.
716
- */
717
- onModifyGetCellCoords(row, column) {
718
- if (row < 0 || column < 0) {
719
- return;
720
- }
721
- const mergeParent = this.mergedCellsCollection.get(row, column);
722
- if (!mergeParent) {
723
- return;
724
- }
725
- const {
726
- row: mergeRow,
727
- col: mergeColumn,
728
- colspan,
729
- rowspan
730
- } = mergeParent;
731
- return [
732
- // Most top-left merged cell coords.
733
- mergeRow, mergeColumn,
734
- // Most bottom-right merged cell coords.
735
- mergeRow + rowspan - 1, mergeColumn + colspan - 1];
736
- }
737
-
738
- /**
739
- * `afterContextMenuDefaultOptions` hook callback.
740
- *
741
- * @private
742
- * @param {object} defaultOptions The default context menu options.
743
- */
744
- addMergeActionsToContextMenu(defaultOptions) {
745
- defaultOptions.items.push({
746
- name: '---------'
747
- }, (0, _toggleMerge.default)(this));
748
- }
749
-
750
- /**
751
- * `afterRenderer` hook callback.
752
- *
753
- * @private
754
- * @param {HTMLElement} TD The cell to be modified.
755
- * @param {number} row Row index.
756
- * @param {number} col Visual column index.
757
- */
758
- onAfterRenderer(TD, row, col) {
759
- const mergedCell = this.mergedCellsCollection.get(row, col);
760
- // We shouldn't override data in the collection.
761
- const mergedCellCopy = (0, _object.isObject)(mergedCell) ? (0, _object.clone)(mergedCell) : void 0;
762
- if ((0, _object.isObject)(mergedCellCopy)) {
763
- const {
764
- rowIndexMapper: rowMapper,
765
- columnIndexMapper: columnMapper
766
- } = this.hot;
767
- const {
768
- row: mergeRow,
769
- col: mergeColumn,
770
- colspan,
771
- rowspan
772
- } = mergedCellCopy;
773
- const [lastMergedRowIndex, lastMergedColumnIndex] = this.translateMergedCellToRenderable(mergeRow, rowspan, mergeColumn, colspan);
774
- const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
775
- const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
776
- const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
777
- const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
778
-
779
- // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
780
- mergedCellCopy.row = rowMapper.getNearestNotHiddenIndex(mergedCellCopy.row, 1);
781
- // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
782
- mergedCellCopy.col = columnMapper.getNearestNotHiddenIndex(mergedCellCopy.col, 1);
783
- // The `rowSpan` property for a `TD` element should be at most equal to number of rendered rows in the merge area.
784
- mergedCellCopy.rowspan = Math.min(mergedCellCopy.rowspan, maxRowSpan);
785
- // The `colSpan` property for a `TD` element should be at most equal to number of rendered columns in the merge area.
786
- mergedCellCopy.colspan = Math.min(mergedCellCopy.colspan, maxColSpan);
787
- }
788
- (0, _utils.applySpanProperties)(TD, mergedCellCopy, row, col);
789
- }
790
-
791
- /**
792
- * `beforeSetRangeStart` and `beforeSetRangeStartOnly` hook callback.
793
- * A selection within merge area should be rewritten to the start of merge area.
794
- *
795
- * @private
796
- * @param {object} coords Cell coords.
797
- */
798
- onBeforeSetRangeStart(coords) {
799
- // TODO: It is a workaround, but probably this hook may be needed. Every selection on the merge area
800
- // could set start point of the selection to the start of the merge area. However, logic inside `expandByRange` need
801
- // an initial start point. Click on the merge cell when there are some hidden indexes break the logic in some cases.
802
- // Please take a look at #7010 for more information. I'm not sure if selection directions are calculated properly
803
- // and what was idea for flipping direction inside `expandByRange` method.
804
- if (this.mergedCellsCollection.isFirstRenderableMergedCell(coords.row, coords.col)) {
805
- const mergeParent = this.mergedCellsCollection.get(coords.row, coords.col);
806
- [coords.row, coords.col] = [mergeParent.row, mergeParent.col];
807
- }
808
- }
809
-
810
- /**
811
- * `beforeSetRangeEnd` hook callback.
812
- * While selecting cells with keyboard or mouse, make sure that rectangular area is expanded to the extent of the
813
- * merged cell.
814
- *
815
- * Note: Please keep in mind that callback may modify both start and end range coordinates by the reference.
816
- *
817
- * @private
818
- * @param {object} coords Cell coords.
819
- */
820
- onBeforeSetRangeEnd(coords) {
821
- const selRange = this.hot.getSelectedRangeLast();
822
- selRange.highlight = this.hot._createCellCoords(selRange.highlight.row, selRange.highlight.col); // clone in case we will modify its reference
823
- selRange.to = coords;
824
- let rangeExpanded = false;
825
- if (this.hot.selection.isSelectedByColumnHeader() || this.hot.selection.isSelectedByRowHeader()) {
826
- return;
827
- }
828
- do {
829
- rangeExpanded = false;
830
- for (let i = 0; i < this.mergedCellsCollection.mergedCells.length; i += 1) {
831
- const cellInfo = this.mergedCellsCollection.mergedCells[i];
832
- const mergedCellRange = cellInfo.getRange();
833
- if (selRange.expandByRange(mergedCellRange)) {
834
- coords.row = selRange.to.row;
835
- coords.col = selRange.to.col;
836
- rangeExpanded = true;
837
- }
838
- }
839
- } while (rangeExpanded);
840
- }
841
-
842
- /**
843
- * The `afterGetCellMeta` hook callback.
844
- *
845
- * @private
846
- * @param {number} row Row index.
847
- * @param {number} col Column index.
848
- * @param {object} cellProperties The cell properties object.
849
- */
850
- onAfterGetCellMeta(row, col, cellProperties) {
851
- const mergeParent = this.mergedCellsCollection.get(row, col);
852
- if (mergeParent) {
853
- if (mergeParent.row !== row || mergeParent.col !== col) {
854
- cellProperties.copyable = false;
855
- } else {
856
- cellProperties.rowspan = mergeParent.rowspan;
857
- cellProperties.colspan = mergeParent.colspan;
858
- }
859
- }
860
- }
861
-
862
- /**
863
- * `afterViewportRowCalculatorOverride` hook callback.
864
- *
865
- * @private
866
- * @param {object} calc The row calculator object.
867
- */
868
- onAfterViewportRowCalculatorOverride(calc) {
869
- const nrOfColumns = this.hot.countCols();
870
- this.modifyViewportRowStart(calc, nrOfColumns);
871
- this.modifyViewportRowEnd(calc, nrOfColumns);
872
- }
873
-
874
859
  /**
875
860
  * Modify viewport start when needed. We extend viewport when merged cells aren't fully visible.
876
861
  *
@@ -928,18 +913,6 @@ class MergeCells extends _base.BasePlugin {
928
913
  }
929
914
  }
930
915
 
931
- /**
932
- * `afterViewportColumnCalculatorOverride` hook callback.
933
- *
934
- * @private
935
- * @param {object} calc The column calculator object.
936
- */
937
- onAfterViewportColumnCalculatorOverride(calc) {
938
- const nrOfRows = this.hot.countRows();
939
- this.modifyViewportColumnStart(calc, nrOfRows);
940
- this.modifyViewportColumnEnd(calc, nrOfRows);
941
- }
942
-
943
916
  /**
944
917
  * Modify viewport start when needed. We extend viewport when merged cells aren't fully visible.
945
918
  *
@@ -1034,184 +1007,291 @@ class MergeCells extends _base.BasePlugin {
1034
1007
  const renderableColumn = parentColumn >= 0 ? columnMapper.getRenderableFromVisualIndex(firstNonHiddenColumn) : parentColumn;
1035
1008
  return [renderableRow, renderableColumn];
1036
1009
  }
1037
-
1038
- /**
1039
- * The `modifyAutofillRange` hook callback.
1040
- *
1041
- * @private
1042
- * @param {Array} drag The drag area coordinates.
1043
- * @param {Array} select The selection information.
1044
- * @returns {Array} The new drag area.
1045
- */
1046
- onModifyAutofillRange(drag, select) {
1047
- this.autofillCalculations.correctSelectionAreaSize(select);
1048
- const dragDirection = this.autofillCalculations.getDirection(select, drag);
1049
- let dragArea = drag;
1050
- if (this.autofillCalculations.dragAreaOverlapsCollections(select, dragArea, dragDirection)) {
1051
- dragArea = select;
1052
- return dragArea;
1053
- }
1054
- const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange({
1055
- from: {
1056
- row: select[0],
1057
- col: select[1]
1058
- },
1059
- to: {
1060
- row: select[2],
1061
- col: select[3]
1010
+ }
1011
+ exports.MergeCells = MergeCells;
1012
+ function _onAfterInit2() {
1013
+ this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
1014
+ this.hot.render();
1015
+ }
1016
+ function _onAfterIsMultipleSelection2(isMultiple) {
1017
+ if (isMultiple) {
1018
+ const mergedCells = this.mergedCellsCollection.mergedCells;
1019
+ const selectionRange = this.hot.getSelectedRangeLast();
1020
+ for (let group = 0; group < mergedCells.length; group += 1) {
1021
+ if (selectionRange.from.row === mergedCells[group].row && selectionRange.from.col === mergedCells[group].col && selectionRange.to.row === mergedCells[group].row + mergedCells[group].rowspan - 1 && selectionRange.to.col === mergedCells[group].col + mergedCells[group].colspan - 1) {
1022
+ return false;
1062
1023
  }
1063
- });
1064
- if (!mergedCellsWithinSelectionArea) {
1065
- return dragArea;
1066
1024
  }
1067
- dragArea = this.autofillCalculations.snapDragArea(select, dragArea, dragDirection, mergedCellsWithinSelectionArea);
1068
- return dragArea;
1069
1025
  }
1070
-
1071
- /**
1072
- * `afterCreateCol` hook callback.
1073
- *
1074
- * @private
1075
- * @param {number} column Column index.
1076
- * @param {number} count Number of created columns.
1077
- */
1078
- onAfterCreateCol(column, count) {
1079
- this.mergedCellsCollection.shiftCollections('right', column, count);
1080
- }
1081
-
1082
- /**
1083
- * `afterRemoveCol` hook callback.
1084
- *
1085
- * @private
1086
- * @param {number} column Column index.
1087
- * @param {number} count Number of removed columns.
1088
- */
1089
- onAfterRemoveCol(column, count) {
1090
- this.mergedCellsCollection.shiftCollections('left', column, count);
1026
+ return isMultiple;
1027
+ }
1028
+ function _onModifyTransformStart2(delta) {
1029
+ const currentlySelectedRange = this.hot.getSelectedRangeLast();
1030
+ let newDelta = {
1031
+ row: delta.row,
1032
+ col: delta.col
1033
+ };
1034
+ let nextPosition = null;
1035
+ const currentPosition = this.hot._createCellCoords(currentlySelectedRange.highlight.row, currentlySelectedRange.highlight.col);
1036
+ const mergedParent = this.mergedCellsCollection.get(currentPosition.row, currentPosition.col);
1037
+ if (!_classPrivateFieldGet(this, _lastDesiredCoords)) {
1038
+ _classPrivateFieldSet(this, _lastDesiredCoords, this.hot._createCellCoords(null, null));
1091
1039
  }
1040
+ if (mergedParent) {
1041
+ // only merge selected
1042
+ const mergeTopLeft = this.hot._createCellCoords(mergedParent.row, mergedParent.col);
1043
+ const mergeBottomRight = this.hot._createCellCoords(mergedParent.row + mergedParent.rowspan - 1, mergedParent.col + mergedParent.colspan - 1);
1044
+ const mergeRange = this.hot._createCellRange(mergeTopLeft, mergeTopLeft, mergeBottomRight);
1045
+ if (!mergeRange.includes(_classPrivateFieldGet(this, _lastDesiredCoords))) {
1046
+ _classPrivateFieldSet(this, _lastDesiredCoords, this.hot._createCellCoords(null, null)); // reset outdated version of lastDesiredCoords
1047
+ }
1092
1048
 
1093
- /**
1094
- * `afterCreateRow` hook callback.
1095
- *
1096
- * @private
1097
- * @param {number} row Row index.
1098
- * @param {number} count Number of created rows.
1099
- * @param {string} source Source of change.
1100
- */
1101
- onAfterCreateRow(row, count, source) {
1102
- if (source === 'auto') {
1103
- return;
1049
+ newDelta.row = _classPrivateFieldGet(this, _lastDesiredCoords).row ? _classPrivateFieldGet(this, _lastDesiredCoords).row - currentPosition.row : newDelta.row;
1050
+ newDelta.col = _classPrivateFieldGet(this, _lastDesiredCoords).col ? _classPrivateFieldGet(this, _lastDesiredCoords).col - currentPosition.col : newDelta.col;
1051
+ if (delta.row > 0) {
1052
+ // moving down
1053
+ newDelta.row = mergedParent.row + mergedParent.rowspan - 1 - currentPosition.row + delta.row;
1054
+ } else if (delta.row < 0) {
1055
+ // moving up
1056
+ newDelta.row = currentPosition.row - mergedParent.row + delta.row;
1057
+ }
1058
+ if (delta.col > 0) {
1059
+ // moving right
1060
+ newDelta.col = mergedParent.col + mergedParent.colspan - 1 - currentPosition.col + delta.col;
1061
+ } else if (delta.col < 0) {
1062
+ // moving left
1063
+ newDelta.col = currentPosition.col - mergedParent.col + delta.col;
1104
1064
  }
1105
- this.mergedCellsCollection.shiftCollections('down', row, count);
1106
1065
  }
1107
-
1108
- /**
1109
- * `afterRemoveRow` hook callback.
1110
- *
1111
- * @private
1112
- * @param {number} row Row index.
1113
- * @param {number} count Number of removed rows.
1114
- */
1115
- onAfterRemoveRow(row, count) {
1116
- this.mergedCellsCollection.shiftCollections('up', row, count);
1066
+ nextPosition = this.hot._createCellCoords(currentlySelectedRange.highlight.row + newDelta.row, currentlySelectedRange.highlight.col + newDelta.col);
1067
+ const nextPositionMergedCell = this.mergedCellsCollection.get(nextPosition.row, nextPosition.col);
1068
+ if (nextPositionMergedCell) {
1069
+ // skipping the invisible cells in the merge range
1070
+ const firstRenderableCoords = this.mergedCellsCollection.getFirstRenderableCoords(nextPositionMergedCell.row, nextPositionMergedCell.col);
1071
+ _classPrivateFieldSet(this, _lastDesiredCoords, nextPosition);
1072
+ newDelta = {
1073
+ row: firstRenderableCoords.row - currentPosition.row,
1074
+ col: firstRenderableCoords.col - currentPosition.col
1075
+ };
1117
1076
  }
1118
-
1119
- /**
1120
- * `afterChange` hook callback. Used to propagate merged cells after using Autofill.
1121
- *
1122
- * @private
1123
- * @param {Array} changes The changes array.
1124
- * @param {string} source Determines the source of the change.
1125
- */
1126
- onAfterChange(changes, source) {
1127
- if (source !== 'Autofill.fill') {
1128
- return;
1129
- }
1130
- this.autofillCalculations.recreateAfterDataPopulation(changes);
1077
+ if (newDelta.row !== 0) {
1078
+ delta.row = newDelta.row;
1131
1079
  }
1132
-
1133
- /**
1134
- * `beforeDrawAreaBorders` hook callback.
1135
- *
1136
- * @private
1137
- * @param {Array} corners Visual coordinates of the area corners.
1138
- * @param {string} className Class name for the area.
1139
- */
1140
- onBeforeDrawAreaBorders(corners, className) {
1141
- if (className && className === 'area') {
1142
- const selectedRange = this.hot.getSelectedRangeLast();
1143
- const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(selectedRange);
1144
- (0, _array.arrayEach)(mergedCellsWithinRange, mergedCell => {
1145
- if (selectedRange.getBottomEndCorner().row === mergedCell.getLastRow() && selectedRange.getBottomEndCorner().col === mergedCell.getLastColumn()) {
1146
- corners[2] = mergedCell.row;
1147
- corners[3] = mergedCell.col;
1148
- }
1149
- });
1150
- }
1080
+ if (newDelta.col !== 0) {
1081
+ delta.col = newDelta.col;
1151
1082
  }
1152
-
1153
- /**
1154
- * `afterModifyTransformStart` hook callback. Fixes a problem with navigating through merged cells at the edges of
1155
- * the table with the ENTER/SHIFT+ENTER/TAB/SHIFT+TAB keys.
1156
- *
1157
- * @private
1158
- * @param {CellCoords} coords Coordinates of the to-be-selected cell.
1159
- * @param {number} rowTransformDir Row transformation direction (negative value = up, 0 = none, positive value =
1160
- * down).
1161
- * @param {number} colTransformDir Column transformation direction (negative value = up, 0 = none, positive value =
1162
- * down).
1163
- */
1164
- onAfterModifyTransformStart(coords, rowTransformDir, colTransformDir) {
1165
- if (!this.enabled) {
1166
- return;
1167
- }
1168
- const mergedCellAtCoords = this.mergedCellsCollection.get(coords.row, coords.col);
1169
- if (!mergedCellAtCoords) {
1170
- return;
1083
+ }
1084
+ function _onModifyTransformEnd2(delta) {
1085
+ const currentSelectionRange = this.hot.getSelectedRangeLast();
1086
+ const newDelta = (0, _object.clone)(delta);
1087
+ const newSelectionRange = this.selectionCalculations.getUpdatedSelectionRange(currentSelectionRange, delta);
1088
+ let tempDelta = (0, _object.clone)(newDelta);
1089
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(newSelectionRange, true);
1090
+ do {
1091
+ tempDelta = (0, _object.clone)(newDelta);
1092
+ this.selectionCalculations.getUpdatedSelectionRange(currentSelectionRange, newDelta);
1093
+ (0, _array.arrayEach)(mergedCellsWithinRange, mergedCell => {
1094
+ this.selectionCalculations.snapDelta(newDelta, currentSelectionRange, mergedCell);
1095
+ });
1096
+ } while (newDelta.row !== tempDelta.row || newDelta.col !== tempDelta.col);
1097
+ delta.row = newDelta.row;
1098
+ delta.col = newDelta.col;
1099
+ }
1100
+ function _onModifyGetCellCoords2(row, column) {
1101
+ if (row < 0 || column < 0) {
1102
+ return;
1103
+ }
1104
+ const mergeParent = this.mergedCellsCollection.get(row, column);
1105
+ if (!mergeParent) {
1106
+ return;
1107
+ }
1108
+ const {
1109
+ row: mergeRow,
1110
+ col: mergeColumn,
1111
+ colspan,
1112
+ rowspan
1113
+ } = mergeParent;
1114
+ return [
1115
+ // Most top-left merged cell coords.
1116
+ mergeRow, mergeColumn,
1117
+ // Most bottom-right merged cell coords.
1118
+ mergeRow + rowspan - 1, mergeColumn + colspan - 1];
1119
+ }
1120
+ function _addMergeActionsToContextMenu2(defaultOptions) {
1121
+ defaultOptions.items.push({
1122
+ name: '---------'
1123
+ }, (0, _toggleMerge.default)(this));
1124
+ }
1125
+ function _onAfterRenderer2(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
+ function _onBeforeSetRangeStart2(coords) {
1158
+ // TODO: It is a workaround, but probably this hook may be needed. Every selection on the merge area
1159
+ // could set start point of the selection to the start of the merge area. However, logic inside `expandByRange` need
1160
+ // an initial start point. Click on the merge cell when there are some hidden indexes break the logic in some cases.
1161
+ // Please take a look at #7010 for more information. I'm not sure if selection directions are calculated properly
1162
+ // and what was idea for flipping direction inside `expandByRange` method.
1163
+ if (this.mergedCellsCollection.isFirstRenderableMergedCell(coords.row, coords.col)) {
1164
+ const mergeParent = this.mergedCellsCollection.get(coords.row, coords.col);
1165
+ [coords.row, coords.col] = [mergeParent.row, mergeParent.col];
1166
+ }
1167
+ }
1168
+ function _onBeforeSetRangeEnd2(coords) {
1169
+ const selRange = this.hot.getSelectedRangeLast();
1170
+ selRange.highlight = this.hot._createCellCoords(selRange.highlight.row, selRange.highlight.col); // clone in case we will modify its reference
1171
+ selRange.to = coords;
1172
+ let rangeExpanded = false;
1173
+ if (this.hot.selection.isSelectedByColumnHeader() || this.hot.selection.isSelectedByRowHeader()) {
1174
+ return;
1175
+ }
1176
+ do {
1177
+ rangeExpanded = false;
1178
+ for (let i = 0; i < this.mergedCellsCollection.mergedCells.length; i += 1) {
1179
+ const cellInfo = this.mergedCellsCollection.mergedCells[i];
1180
+ const mergedCellRange = cellInfo.getRange();
1181
+ if (selRange.expandByRange(mergedCellRange)) {
1182
+ coords.row = selRange.to.row;
1183
+ coords.col = selRange.to.col;
1184
+ rangeExpanded = true;
1185
+ }
1171
1186
  }
1172
- const goingDown = rowTransformDir > 0;
1173
- const goingUp = rowTransformDir < 0;
1174
- const goingLeft = colTransformDir < 0;
1175
- const goingRight = colTransformDir > 0;
1176
- const mergedCellOnBottomEdge = mergedCellAtCoords.row + mergedCellAtCoords.rowspan - 1 === this.hot.countRows() - 1;
1177
- const mergedCellOnTopEdge = mergedCellAtCoords.row === 0;
1178
- const mergedCellOnRightEdge = mergedCellAtCoords.col + mergedCellAtCoords.colspan - 1 === this.hot.countCols() - 1;
1179
- const mergedCellOnLeftEdge = mergedCellAtCoords.col === 0;
1180
- if (goingDown && mergedCellOnBottomEdge || goingUp && mergedCellOnTopEdge || goingRight && mergedCellOnRightEdge || goingLeft && mergedCellOnLeftEdge) {
1181
- coords.row = mergedCellAtCoords.row;
1182
- coords.col = mergedCellAtCoords.col;
1187
+ } while (rangeExpanded);
1188
+ }
1189
+ function _onAfterGetCellMeta2(row, col, cellProperties) {
1190
+ const mergeParent = this.mergedCellsCollection.get(row, col);
1191
+ if (mergeParent) {
1192
+ if (mergeParent.row !== row || mergeParent.col !== col) {
1193
+ cellProperties.copyable = false;
1194
+ } else {
1195
+ cellProperties.rowspan = mergeParent.rowspan;
1196
+ cellProperties.colspan = mergeParent.colspan;
1183
1197
  }
1184
1198
  }
1185
-
1186
- /**
1187
- * `afterDrawSelection` hook callback. Used to add the additional class name for the entirely-selected merged cells.
1188
- *
1189
- * @private
1190
- * @param {number} currentRow Visual row index of the currently processed cell.
1191
- * @param {number} currentColumn Visual column index of the currently cell.
1192
- * @param {Array} cornersOfSelection Array of the current selection in a form of `[startRow, startColumn, endRow,
1193
- * endColumn]`.
1194
- * @param {number|undefined} layerLevel Number indicating which layer of selection is currently processed.
1195
- * @returns {string|undefined} A `String`, which will act as an additional `className` to be added to the currently
1196
- * processed cell.
1197
- */
1198
- onAfterDrawSelection(currentRow, currentColumn, cornersOfSelection, layerLevel) {
1199
- // Nothing's selected (hook might be triggered by the custom borders)
1200
- if (!cornersOfSelection) {
1201
- return;
1199
+ }
1200
+ function _onAfterViewportRowCalculatorOverride2(calc) {
1201
+ const nrOfColumns = this.hot.countCols();
1202
+ this.modifyViewportRowStart(calc, nrOfColumns);
1203
+ this.modifyViewportRowEnd(calc, nrOfColumns);
1204
+ }
1205
+ function _onAfterViewportColumnCalculatorOverride2(calc) {
1206
+ const nrOfRows = this.hot.countRows();
1207
+ this.modifyViewportColumnStart(calc, nrOfRows);
1208
+ this.modifyViewportColumnEnd(calc, nrOfRows);
1209
+ }
1210
+ function _onModifyAutofillRange2(drag, select) {
1211
+ this.autofillCalculations.correctSelectionAreaSize(select);
1212
+ const dragDirection = this.autofillCalculations.getDirection(select, drag);
1213
+ let dragArea = drag;
1214
+ if (this.autofillCalculations.dragAreaOverlapsCollections(select, dragArea, dragDirection)) {
1215
+ dragArea = select;
1216
+ return dragArea;
1217
+ }
1218
+ const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange({
1219
+ from: {
1220
+ row: select[0],
1221
+ col: select[1]
1222
+ },
1223
+ to: {
1224
+ row: select[2],
1225
+ col: select[3]
1202
1226
  }
1203
- return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1227
+ });
1228
+ if (!mergedCellsWithinSelectionArea) {
1229
+ return dragArea;
1204
1230
  }
1205
-
1206
- /**
1207
- * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1208
- *
1209
- * @private
1210
- * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1211
- * all the cells in the table.
1212
- */
1213
- onBeforeRemoveCellClassNames() {
1214
- return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1231
+ dragArea = this.autofillCalculations.snapDragArea(select, dragArea, dragDirection, mergedCellsWithinSelectionArea);
1232
+ return dragArea;
1233
+ }
1234
+ function _onAfterCreateCol2(column, count) {
1235
+ this.mergedCellsCollection.shiftCollections('right', column, count);
1236
+ }
1237
+ function _onAfterRemoveCol2(column, count) {
1238
+ this.mergedCellsCollection.shiftCollections('left', column, count);
1239
+ }
1240
+ function _onAfterCreateRow2(row, count, source) {
1241
+ if (source === 'auto') {
1242
+ return;
1243
+ }
1244
+ this.mergedCellsCollection.shiftCollections('down', row, count);
1245
+ }
1246
+ function _onAfterRemoveRow2(row, count) {
1247
+ this.mergedCellsCollection.shiftCollections('up', row, count);
1248
+ }
1249
+ function _onAfterChange2(changes, source) {
1250
+ if (source !== 'Autofill.fill') {
1251
+ return;
1252
+ }
1253
+ this.autofillCalculations.recreateAfterDataPopulation(changes);
1254
+ }
1255
+ function _onBeforeDrawAreaBorders2(corners, className) {
1256
+ if (className && className === 'area') {
1257
+ const selectedRange = this.hot.getSelectedRangeLast();
1258
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(selectedRange);
1259
+ (0, _array.arrayEach)(mergedCellsWithinRange, mergedCell => {
1260
+ if (selectedRange.getBottomEndCorner().row === mergedCell.getLastRow() && selectedRange.getBottomEndCorner().col === mergedCell.getLastColumn()) {
1261
+ corners[2] = mergedCell.row;
1262
+ corners[3] = mergedCell.col;
1263
+ }
1264
+ });
1265
+ }
1266
+ }
1267
+ function _onAfterModifyTransformStart2(coords, rowTransformDir, colTransformDir) {
1268
+ if (!this.enabled) {
1269
+ return;
1270
+ }
1271
+ const mergedCellAtCoords = this.mergedCellsCollection.get(coords.row, coords.col);
1272
+ if (!mergedCellAtCoords) {
1273
+ return;
1274
+ }
1275
+ const goingDown = rowTransformDir > 0;
1276
+ const goingUp = rowTransformDir < 0;
1277
+ const goingLeft = colTransformDir < 0;
1278
+ const goingRight = colTransformDir > 0;
1279
+ const mergedCellOnBottomEdge = mergedCellAtCoords.row + mergedCellAtCoords.rowspan - 1 === this.hot.countRows() - 1;
1280
+ const mergedCellOnTopEdge = mergedCellAtCoords.row === 0;
1281
+ const mergedCellOnRightEdge = mergedCellAtCoords.col + mergedCellAtCoords.colspan - 1 === this.hot.countCols() - 1;
1282
+ const mergedCellOnLeftEdge = mergedCellAtCoords.col === 0;
1283
+ if (goingDown && mergedCellOnBottomEdge || goingUp && mergedCellOnTopEdge || goingRight && mergedCellOnRightEdge || goingLeft && mergedCellOnLeftEdge) {
1284
+ coords.row = mergedCellAtCoords.row;
1285
+ coords.col = mergedCellAtCoords.col;
1286
+ }
1287
+ }
1288
+ function _onAfterDrawSelection2(currentRow, currentColumn, cornersOfSelection, layerLevel) {
1289
+ // Nothing's selected (hook might be triggered by the custom borders)
1290
+ if (!cornersOfSelection) {
1291
+ return;
1215
1292
  }
1293
+ return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1216
1294
  }
1217
- exports.MergeCells = MergeCells;
1295
+ function _onBeforeRemoveCellClassNames2() {
1296
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1297
+ }