handsontable 11.1.0 → 12.1.0

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 (461) hide show
  1. package/3rdparty/walkontable/src/border.js +120 -98
  2. package/3rdparty/walkontable/src/border.mjs +120 -94
  3. package/3rdparty/walkontable/src/cell/coords.js +59 -17
  4. package/3rdparty/walkontable/src/cell/coords.mjs +55 -17
  5. package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
  6. package/3rdparty/walkontable/src/cell/range.js +278 -99
  7. package/3rdparty/walkontable/src/cell/range.mjs +273 -99
  8. package/3rdparty/walkontable/src/core/_base.js +452 -0
  9. package/3rdparty/walkontable/src/core/_base.mjs +440 -0
  10. package/3rdparty/walkontable/src/core/clone.js +97 -0
  11. package/3rdparty/walkontable/src/core/clone.mjs +80 -0
  12. package/3rdparty/walkontable/src/core/core.js +183 -0
  13. package/3rdparty/walkontable/src/core/core.mjs +160 -0
  14. package/3rdparty/walkontable/src/event.js +99 -66
  15. package/3rdparty/walkontable/src/event.mjs +99 -63
  16. package/3rdparty/walkontable/src/facade/core.js +251 -0
  17. package/3rdparty/walkontable/src/facade/core.mjs +243 -0
  18. package/3rdparty/walkontable/src/index.js +2 -46
  19. package/3rdparty/walkontable/src/index.mjs +3 -13
  20. package/3rdparty/walkontable/src/overlay/_base.js +124 -57
  21. package/3rdparty/walkontable/src/overlay/_base.mjs +124 -57
  22. package/3rdparty/walkontable/src/overlay/bottom.js +96 -80
  23. package/3rdparty/walkontable/src/overlay/bottom.mjs +96 -80
  24. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +45 -62
  25. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +44 -61
  26. package/3rdparty/walkontable/src/overlay/constants.js +25 -9
  27. package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
  28. package/3rdparty/walkontable/src/overlay/index.js +10 -19
  29. package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
  30. package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +113 -82
  31. package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +112 -81
  32. package/3rdparty/walkontable/src/overlay/top.js +93 -68
  33. package/3rdparty/walkontable/src/overlay/top.mjs +93 -68
  34. package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
  35. package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
  36. package/3rdparty/walkontable/src/overlays.js +225 -156
  37. package/3rdparty/walkontable/src/overlays.mjs +224 -154
  38. package/3rdparty/walkontable/src/renderer/cells.js +4 -3
  39. package/3rdparty/walkontable/src/renderer/cells.mjs +4 -3
  40. package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
  41. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  42. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  43. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  44. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  45. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
  46. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  47. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  48. package/3rdparty/walkontable/src/scroll.js +125 -104
  49. package/3rdparty/walkontable/src/scroll.mjs +124 -104
  50. package/3rdparty/walkontable/src/selection.js +10 -14
  51. package/3rdparty/walkontable/src/selection.mjs +10 -12
  52. package/3rdparty/walkontable/src/settings.js +235 -126
  53. package/3rdparty/walkontable/src/settings.mjs +235 -125
  54. package/3rdparty/walkontable/src/table/bottom.js +16 -5
  55. package/3rdparty/walkontable/src/table/bottom.mjs +15 -5
  56. package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +27 -15
  57. package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +26 -15
  58. package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +23 -15
  59. package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +22 -15
  60. package/3rdparty/walkontable/src/table/master.js +22 -12
  61. package/3rdparty/walkontable/src/table/master.mjs +22 -12
  62. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
  63. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
  64. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
  65. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
  66. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
  67. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
  68. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
  69. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
  70. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
  72. package/3rdparty/walkontable/src/table/top.js +16 -5
  73. package/3rdparty/walkontable/src/table/top.mjs +15 -5
  74. package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +27 -15
  75. package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +26 -15
  76. package/3rdparty/walkontable/src/table.js +235 -140
  77. package/3rdparty/walkontable/src/table.mjs +231 -134
  78. package/3rdparty/walkontable/src/types.js +103 -0
  79. package/3rdparty/walkontable/src/types.mjs +102 -0
  80. package/3rdparty/walkontable/src/utils/column.js +22 -33
  81. package/3rdparty/walkontable/src/utils/column.mjs +22 -30
  82. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
  83. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  84. package/3rdparty/walkontable/src/utils/row.js +9 -4
  85. package/3rdparty/walkontable/src/utils/row.mjs +9 -4
  86. package/3rdparty/walkontable/src/viewport.js +89 -100
  87. package/3rdparty/walkontable/src/viewport.mjs +89 -97
  88. package/CHANGELOG.md +92 -0
  89. package/LICENSE.txt +1 -1
  90. package/README.md +0 -1
  91. package/base.js +2 -2
  92. package/base.mjs +2 -2
  93. package/cellTypes/timeType/timeType.d.ts +6 -6
  94. package/cellTypes/timeType/timeType.js +4 -5
  95. package/cellTypes/timeType/timeType.mjs +4 -5
  96. package/core.d.ts +6 -1
  97. package/core.js +508 -80
  98. package/core.mjs +517 -92
  99. package/dataMap/index.js +4 -0
  100. package/dataMap/index.mjs +2 -1
  101. package/dataMap/metaManager/index.js +2 -2
  102. package/dataMap/metaManager/index.mjs +2 -2
  103. package/dataMap/metaManager/metaLayers/globalMeta.js +4 -0
  104. package/dataMap/metaManager/metaLayers/globalMeta.mjs +4 -0
  105. package/dataMap/metaManager/metaLayers/tableMeta.js +2 -2
  106. package/dataMap/metaManager/metaLayers/tableMeta.mjs +2 -2
  107. package/dataMap/metaManager/metaSchema.js +282 -187
  108. package/dataMap/metaManager/metaSchema.mjs +282 -187
  109. package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
  110. package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
  111. package/dataMap/replaceData.js +3 -17
  112. package/dataMap/replaceData.mjs +3 -17
  113. package/dist/handsontable.css +268 -92
  114. package/dist/handsontable.full.css +269 -103
  115. package/dist/handsontable.full.js +41990 -35658
  116. package/dist/handsontable.full.min.css +9 -9
  117. package/dist/handsontable.full.min.js +144 -144
  118. package/dist/handsontable.js +29561 -25597
  119. package/dist/handsontable.min.css +8 -8
  120. package/dist/handsontable.min.js +4 -4
  121. package/dist/languages/all.js +131 -34
  122. package/dist/languages/all.min.js +1 -1
  123. package/dist/languages/ar-AR.js +167 -0
  124. package/dist/languages/ar-AR.min.js +1 -0
  125. package/dist/languages/cs-CZ.js +167 -0
  126. package/dist/languages/cs-CZ.min.js +1 -0
  127. package/dist/languages/de-CH.js +31 -29
  128. package/dist/languages/de-CH.min.js +1 -1
  129. package/dist/languages/de-DE.js +4 -2
  130. package/dist/languages/de-DE.min.js +1 -1
  131. package/dist/languages/en-US.js +4 -2
  132. package/dist/languages/en-US.min.js +1 -1
  133. package/dist/languages/es-MX.js +4 -2
  134. package/dist/languages/es-MX.min.js +1 -1
  135. package/dist/languages/fr-FR.js +4 -2
  136. package/dist/languages/fr-FR.min.js +1 -1
  137. package/dist/languages/it-IT.js +4 -2
  138. package/dist/languages/it-IT.min.js +1 -1
  139. package/dist/languages/ja-JP.js +36 -38
  140. package/dist/languages/ja-JP.min.js +1 -1
  141. package/dist/languages/ko-KR.js +36 -39
  142. package/dist/languages/ko-KR.min.js +1 -1
  143. package/dist/languages/lv-LV.js +2 -2
  144. package/dist/languages/lv-LV.min.js +1 -1
  145. package/dist/languages/nb-NO.js +2 -2
  146. package/dist/languages/nb-NO.min.js +1 -1
  147. package/dist/languages/nl-NL.js +2 -2
  148. package/dist/languages/nl-NL.min.js +1 -1
  149. package/dist/languages/pl-PL.js +2 -2
  150. package/dist/languages/pl-PL.min.js +1 -1
  151. package/dist/languages/pt-BR.js +2 -2
  152. package/dist/languages/pt-BR.min.js +1 -1
  153. package/dist/languages/ru-RU.js +2 -2
  154. package/dist/languages/ru-RU.min.js +1 -1
  155. package/dist/languages/sr-SP.js +171 -0
  156. package/dist/languages/sr-SP.min.js +1 -0
  157. package/dist/languages/zh-CN.js +24 -24
  158. package/dist/languages/zh-CN.min.js +1 -1
  159. package/dist/languages/zh-TW.js +24 -24
  160. package/dist/languages/zh-TW.min.js +1 -1
  161. package/editorManager.js +120 -267
  162. package/editorManager.mjs +128 -278
  163. package/editors/autocompleteEditor/autocompleteEditor.js +22 -25
  164. package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -25
  165. package/editors/baseEditor/baseEditor.js +205 -34
  166. package/editors/baseEditor/baseEditor.mjs +200 -32
  167. package/editors/checkboxEditor/checkboxEditor.js +2 -2
  168. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  169. package/editors/dateEditor/dateEditor.js +21 -8
  170. package/editors/dateEditor/dateEditor.mjs +22 -9
  171. package/editors/dropdownEditor/dropdownEditor.js +3 -3
  172. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  173. package/editors/handsontableEditor/handsontableEditor.js +106 -55
  174. package/editors/handsontableEditor/handsontableEditor.mjs +106 -55
  175. package/editors/index.d.ts +3 -0
  176. package/editors/index.js +6 -0
  177. package/editors/index.mjs +3 -1
  178. package/editors/numericEditor/numericEditor.js +2 -2
  179. package/editors/numericEditor/numericEditor.mjs +2 -2
  180. package/editors/passwordEditor/passwordEditor.js +3 -3
  181. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  182. package/editors/selectEditor/selectEditor.js +65 -110
  183. package/editors/selectEditor/selectEditor.mjs +66 -109
  184. package/editors/textEditor/caretPositioner.js +49 -0
  185. package/editors/textEditor/caretPositioner.mjs +42 -0
  186. package/editors/textEditor/textEditor.js +205 -181
  187. package/editors/textEditor/textEditor.mjs +199 -179
  188. package/editors/timeEditor/index.d.ts +1 -0
  189. package/editors/timeEditor/index.js +9 -0
  190. package/editors/timeEditor/index.mjs +1 -0
  191. package/editors/timeEditor/timeEditor.d.ts +7 -0
  192. package/editors/timeEditor/timeEditor.js +105 -0
  193. package/editors/timeEditor/timeEditor.mjs +84 -0
  194. package/eventManager.js +4 -2
  195. package/eventManager.mjs +4 -2
  196. package/helpers/mixed.js +2 -2
  197. package/helpers/mixed.mjs +2 -2
  198. package/i18n/languages/ar-AR.js +41 -0
  199. package/i18n/languages/ar-AR.mjs +17 -0
  200. package/i18n/languages/cs-CZ.js +40 -0
  201. package/i18n/languages/cs-CZ.mjs +16 -0
  202. package/i18n/languages/index.js +12 -0
  203. package/i18n/languages/index.mjs +4 -1
  204. package/i18n/languages/sr-SP.js +40 -0
  205. package/i18n/languages/sr-SP.mjs +16 -0
  206. package/index.d.ts +4 -0
  207. package/languages/all.js +131 -34
  208. package/languages/ar-AR.js +167 -0
  209. package/languages/ar-AR.mjs +19 -0
  210. package/languages/cs-CZ.js +167 -0
  211. package/languages/cs-CZ.mjs +18 -0
  212. package/languages/de-CH.js +31 -29
  213. package/languages/de-DE.js +4 -2
  214. package/languages/en-US.js +4 -2
  215. package/languages/es-MX.js +4 -2
  216. package/languages/fr-FR.js +4 -2
  217. package/languages/index.js +131 -34
  218. package/languages/index.mjs +4 -1
  219. package/languages/it-IT.js +4 -2
  220. package/languages/ja-JP.js +36 -38
  221. package/languages/ko-KR.js +36 -39
  222. package/languages/lv-LV.js +2 -2
  223. package/languages/nb-NO.js +2 -2
  224. package/languages/nl-NL.js +2 -2
  225. package/languages/pl-PL.js +2 -2
  226. package/languages/pt-BR.js +2 -2
  227. package/languages/ru-RU.js +2 -2
  228. package/languages/sr-SP.js +171 -0
  229. package/languages/sr-SP.mjs +18 -0
  230. package/languages/zh-CN.js +24 -24
  231. package/languages/zh-TW.js +24 -24
  232. package/package.json +44 -4
  233. package/pluginHooks.js +49 -13
  234. package/pluginHooks.mjs +49 -13
  235. package/plugins/autoColumnSize/autoColumnSize.js +15 -10
  236. package/plugins/autoColumnSize/autoColumnSize.mjs +15 -10
  237. package/plugins/autoRowSize/autoRowSize.js +14 -9
  238. package/plugins/autoRowSize/autoRowSize.mjs +14 -9
  239. package/plugins/autofill/autofill.js +49 -33
  240. package/plugins/autofill/autofill.mjs +49 -32
  241. package/plugins/autofill/utils.js +10 -11
  242. package/plugins/autofill/utils.mjs +10 -10
  243. package/plugins/base/base.d.ts +8 -2
  244. package/plugins/base/base.js +67 -4
  245. package/plugins/base/base.mjs +66 -4
  246. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
  247. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  248. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
  249. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  250. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
  251. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
  252. package/plugins/collapsibleColumns/collapsibleColumns.js +27 -9
  253. package/plugins/collapsibleColumns/collapsibleColumns.mjs +27 -9
  254. package/plugins/columnSorting/columnSorting.js +5 -7
  255. package/plugins/columnSorting/columnSorting.mjs +5 -6
  256. package/plugins/columnSummary/columnSummary.js +3 -3
  257. package/plugins/columnSummary/columnSummary.mjs +3 -3
  258. package/plugins/comments/commentEditor.js +18 -2
  259. package/plugins/comments/commentEditor.mjs +19 -3
  260. package/plugins/comments/comments.js +57 -46
  261. package/plugins/comments/comments.mjs +58 -46
  262. package/plugins/contextMenu/contextMenu.js +10 -6
  263. package/plugins/contextMenu/contextMenu.mjs +10 -6
  264. package/plugins/contextMenu/menu.js +222 -110
  265. package/plugins/contextMenu/menu.mjs +219 -111
  266. package/plugins/contextMenu/predefinedItems/columnLeft.js +12 -4
  267. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
  268. package/plugins/contextMenu/predefinedItems/columnRight.js +9 -9
  269. package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
  270. package/plugins/contextMenu/utils.js +2 -2
  271. package/plugins/contextMenu/utils.mjs +2 -2
  272. package/plugins/copyPaste/copyPaste.js +31 -21
  273. package/plugins/copyPaste/copyPaste.mjs +30 -21
  274. package/plugins/customBorders/contextMenuItem/left.js +4 -3
  275. package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
  276. package/plugins/customBorders/contextMenuItem/right.js +4 -3
  277. package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
  278. package/plugins/customBorders/customBorders.js +144 -87
  279. package/plugins/customBorders/customBorders.mjs +143 -85
  280. package/plugins/customBorders/utils.js +131 -27
  281. package/plugins/customBorders/utils.mjs +115 -27
  282. package/plugins/dragToScroll/dragToScroll.js +10 -5
  283. package/plugins/dragToScroll/dragToScroll.mjs +10 -5
  284. package/plugins/dropdownMenu/dropdownMenu.js +9 -7
  285. package/plugins/dropdownMenu/dropdownMenu.mjs +9 -7
  286. package/plugins/exportFile/exportFile.js +2 -2
  287. package/plugins/exportFile/exportFile.mjs +2 -2
  288. package/plugins/exportFile/types/csv.js +2 -2
  289. package/plugins/exportFile/types/csv.mjs +2 -2
  290. package/plugins/filters/component/actionBar.js +2 -2
  291. package/plugins/filters/component/actionBar.mjs +2 -2
  292. package/plugins/filters/component/condition.js +3 -3
  293. package/plugins/filters/component/condition.mjs +3 -3
  294. package/plugins/filters/component/operators.js +2 -2
  295. package/plugins/filters/component/operators.mjs +2 -2
  296. package/plugins/filters/component/value.js +3 -3
  297. package/plugins/filters/component/value.mjs +3 -3
  298. package/plugins/filters/filters.js +11 -8
  299. package/plugins/filters/filters.mjs +11 -8
  300. package/plugins/filters/ui/input.js +3 -3
  301. package/plugins/filters/ui/input.mjs +3 -3
  302. package/plugins/filters/ui/link.js +3 -3
  303. package/plugins/filters/ui/link.mjs +3 -3
  304. package/plugins/filters/ui/multipleSelect.js +18 -31
  305. package/plugins/filters/ui/multipleSelect.mjs +18 -31
  306. package/plugins/filters/ui/radioInput.js +3 -3
  307. package/plugins/filters/ui/radioInput.mjs +3 -3
  308. package/plugins/filters/ui/select.js +4 -4
  309. package/plugins/filters/ui/select.mjs +4 -4
  310. package/plugins/formulas/formulas.js +14 -9
  311. package/plugins/formulas/formulas.mjs +14 -9
  312. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
  313. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
  314. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -5
  315. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -5
  316. package/plugins/hiddenColumns/hiddenColumns.js +9 -4
  317. package/plugins/hiddenColumns/hiddenColumns.mjs +9 -4
  318. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
  319. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
  320. package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -5
  321. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -5
  322. package/plugins/hiddenRows/hiddenRows.js +9 -4
  323. package/plugins/hiddenRows/hiddenRows.mjs +9 -4
  324. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  325. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  326. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  327. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  328. package/plugins/manualColumnFreeze/manualColumnFreeze.js +54 -15
  329. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +49 -15
  330. package/plugins/manualColumnMove/manualColumnMove.js +70 -70
  331. package/plugins/manualColumnMove/manualColumnMove.mjs +71 -71
  332. package/plugins/manualColumnMove/ui/_base.js +25 -12
  333. package/plugins/manualColumnMove/ui/_base.mjs +24 -12
  334. package/plugins/manualColumnMove/ui/backlight.js +3 -3
  335. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  336. package/plugins/manualColumnMove/ui/guideline.js +3 -3
  337. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  338. package/plugins/manualColumnResize/manualColumnResize.js +37 -21
  339. package/plugins/manualColumnResize/manualColumnResize.mjs +37 -21
  340. package/plugins/manualRowMove/manualRowMove.js +26 -34
  341. package/plugins/manualRowMove/manualRowMove.mjs +26 -34
  342. package/plugins/manualRowMove/ui/backlight.js +3 -3
  343. package/plugins/manualRowMove/ui/backlight.mjs +3 -3
  344. package/plugins/manualRowMove/ui/guideline.js +3 -3
  345. package/plugins/manualRowMove/ui/guideline.mjs +3 -3
  346. package/plugins/manualRowResize/manualRowResize.js +34 -19
  347. package/plugins/manualRowResize/manualRowResize.mjs +34 -19
  348. package/plugins/mergeCells/calculations/autofill.js +6 -5
  349. package/plugins/mergeCells/calculations/autofill.mjs +6 -4
  350. package/plugins/mergeCells/calculations/selection.js +9 -4
  351. package/plugins/mergeCells/calculations/selection.mjs +9 -4
  352. package/plugins/mergeCells/cellCoords.js +16 -4
  353. package/plugins/mergeCells/cellCoords.mjs +16 -3
  354. package/plugins/mergeCells/cellsCollection.js +30 -23
  355. package/plugins/mergeCells/cellsCollection.mjs +30 -22
  356. package/plugins/mergeCells/mergeCells.js +94 -61
  357. package/plugins/mergeCells/mergeCells.mjs +94 -59
  358. package/plugins/multiColumnSorting/multiColumnSorting.js +4 -6
  359. package/plugins/multiColumnSorting/multiColumnSorting.mjs +4 -5
  360. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +51 -57
  361. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +52 -57
  362. package/plugins/nestedHeaders/nestedHeaders.js +31 -20
  363. package/plugins/nestedHeaders/nestedHeaders.mjs +31 -20
  364. package/plugins/nestedHeaders/stateManager/utils.js +3 -4
  365. package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
  366. package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
  367. package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
  368. package/plugins/nestedRows/nestedRows.js +9 -4
  369. package/plugins/nestedRows/nestedRows.mjs +9 -4
  370. package/plugins/nestedRows/ui/collapsing.js +2 -2
  371. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  372. package/plugins/nestedRows/ui/contextMenu.js +2 -2
  373. package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
  374. package/plugins/nestedRows/ui/headers.js +2 -2
  375. package/plugins/nestedRows/ui/headers.mjs +2 -2
  376. package/plugins/nestedRows/utils/rowMoveController.js +2 -4
  377. package/plugins/nestedRows/utils/rowMoveController.mjs +2 -3
  378. package/plugins/persistentState/persistentState.js +9 -4
  379. package/plugins/persistentState/persistentState.mjs +9 -4
  380. package/plugins/search/search.js +9 -4
  381. package/plugins/search/search.mjs +9 -4
  382. package/plugins/touchScroll/touchScroll.js +27 -21
  383. package/plugins/touchScroll/touchScroll.mjs +27 -21
  384. package/plugins/trimRows/trimRows.js +9 -4
  385. package/plugins/trimRows/trimRows.mjs +9 -4
  386. package/plugins/undoRedo/undoRedo.js +53 -47
  387. package/plugins/undoRedo/undoRedo.mjs +53 -46
  388. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
  389. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
  390. package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
  391. package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
  392. package/renderers/index.d.ts +4 -1
  393. package/renderers/index.js +6 -0
  394. package/renderers/index.mjs +3 -1
  395. package/renderers/numericRenderer/numericRenderer.js +1 -0
  396. package/renderers/numericRenderer/numericRenderer.mjs +1 -0
  397. package/renderers/timeRenderer/index.d.ts +1 -0
  398. package/renderers/timeRenderer/index.js +9 -0
  399. package/renderers/timeRenderer/index.mjs +1 -0
  400. package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
  401. package/renderers/timeRenderer/timeRenderer.js +31 -0
  402. package/renderers/timeRenderer/timeRenderer.mjs +20 -0
  403. package/selection/highlight/visualSelection.js +94 -220
  404. package/selection/highlight/visualSelection.mjs +91 -213
  405. package/selection/mouseEventHandler.js +15 -10
  406. package/selection/mouseEventHandler.mjs +15 -9
  407. package/selection/range.js +4 -5
  408. package/selection/range.mjs +4 -5
  409. package/selection/selection.js +35 -22
  410. package/selection/selection.mjs +35 -20
  411. package/selection/transformation.js +4 -6
  412. package/selection/transformation.mjs +4 -5
  413. package/settings.d.ts +3 -1
  414. package/shortcuts/context.d.ts +20 -0
  415. package/shortcuts/context.js +296 -0
  416. package/shortcuts/context.mjs +268 -0
  417. package/shortcuts/index.d.ts +1 -0
  418. package/shortcuts/index.js +8 -0
  419. package/shortcuts/index.mjs +1 -0
  420. package/shortcuts/keyObserver.js +67 -0
  421. package/shortcuts/keyObserver.mjs +58 -0
  422. package/shortcuts/manager.d.ts +10 -0
  423. package/shortcuts/manager.js +185 -0
  424. package/shortcuts/manager.mjs +176 -0
  425. package/shortcuts/recorder.js +192 -0
  426. package/shortcuts/recorder.mjs +180 -0
  427. package/shortcuts/utils.js +77 -0
  428. package/shortcuts/utils.mjs +54 -0
  429. package/tableView.js +164 -84
  430. package/tableView.mjs +164 -74
  431. package/translations/changesObservable/observer.js +0 -1
  432. package/translations/changesObservable/observer.mjs +0 -1
  433. package/translations/indexMapper.d.ts +3 -1
  434. package/translations/indexMapper.js +89 -11
  435. package/translations/indexMapper.mjs +91 -20
  436. package/translations/mapCollections/aggregatedCollection.js +2 -2
  437. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  438. package/translations/maps/hidingMap.js +4 -2
  439. package/translations/maps/hidingMap.mjs +4 -2
  440. package/translations/maps/indexMap.js +2 -0
  441. package/translations/maps/indexMap.mjs +2 -0
  442. package/translations/maps/indexesSequence.js +5 -3
  443. package/translations/maps/indexesSequence.mjs +5 -3
  444. package/translations/maps/linkedPhysicalIndexToValueMap.js +5 -3
  445. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +5 -3
  446. package/translations/maps/physicalIndexToValueMap.js +5 -3
  447. package/translations/maps/physicalIndexToValueMap.mjs +5 -3
  448. package/translations/maps/trimmingMap.js +4 -2
  449. package/translations/maps/trimmingMap.mjs +4 -2
  450. package/utils/dataStructures/uniqueMap.js +14 -1
  451. package/utils/dataStructures/uniqueMap.mjs +14 -1
  452. package/utils/dataStructures/uniqueSet.js +9 -0
  453. package/utils/dataStructures/uniqueSet.mjs +9 -0
  454. package/utils/ghostTable.js +1 -1
  455. package/utils/ghostTable.mjs +1 -1
  456. package/3rdparty/walkontable/src/core.js +0 -309
  457. package/3rdparty/walkontable/src/core.mjs +0 -293
  458. package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
  459. package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
  460. package/utils/keyStateObserver.js +0 -121
  461. package/utils/keyStateObserver.mjs +0 -103
@@ -33,8 +33,6 @@ require("core-js/modules/es.array.splice.js");
33
33
 
34
34
  var _cellCoords = _interopRequireDefault(require("./cellCoords"));
35
35
 
36
- var _index = require("../../3rdparty/walkontable/src/index");
37
-
38
36
  var _number = require("../../helpers/number");
39
37
 
40
38
  var _console = require("../../helpers/console");
@@ -165,21 +163,27 @@ var MergedCellsCollection = /*#__PURE__*/function () {
165
163
  }, {
166
164
  key: "getWithinRange",
167
165
  value: function getWithinRange(range) {
166
+ var _this = this;
167
+
168
168
  var countPartials = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
169
169
  var mergedCells = this.mergedCells;
170
170
  var foundMergedCells = [];
171
171
  var testedRange = range;
172
172
 
173
173
  if (!testedRange.includesRange) {
174
- var from = new _index.CellCoords(testedRange.from.row, testedRange.from.col);
175
- var to = new _index.CellCoords(testedRange.to.row, testedRange.to.col);
176
- testedRange = new _index.CellRange(from, from, to);
174
+ var from = this.hot._createCellCoords(testedRange.from.row, testedRange.from.col);
175
+
176
+ var to = this.hot._createCellCoords(testedRange.to.row, testedRange.to.col);
177
+
178
+ testedRange = this.hot._createCellRange(from, from, to);
177
179
  }
178
180
 
179
181
  (0, _array.arrayEach)(mergedCells, function (mergedCell) {
180
- var mergedCellTopLeft = new _index.CellCoords(mergedCell.row, mergedCell.col);
181
- var mergedCellBottomRight = new _index.CellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1);
182
- var mergedCellRange = new _index.CellRange(mergedCellTopLeft, mergedCellTopLeft, mergedCellBottomRight);
182
+ var mergedCellTopLeft = _this.hot._createCellCoords(mergedCell.row, mergedCell.col);
183
+
184
+ var mergedCellBottomRight = _this.hot._createCellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1);
185
+
186
+ var mergedCellRange = _this.hot._createCellRange(mergedCellTopLeft, mergedCellTopLeft, mergedCellBottomRight);
183
187
 
184
188
  if (countPartials) {
185
189
  if (testedRange.overlaps(mergedCellRange)) {
@@ -206,7 +210,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
206
210
  var column = mergedCellInfo.col;
207
211
  var rowspan = mergedCellInfo.rowspan;
208
212
  var colspan = mergedCellInfo.colspan;
209
- var newMergedCell = new _cellCoords.default(row, column, rowspan, colspan);
213
+ var newMergedCell = new _cellCoords.default(row, column, rowspan, colspan, this.hot._createCellCoords, this.hot._createCellRange);
210
214
  var alreadyExists = this.get(row, column);
211
215
  var isOverlapping = this.isOverlapping(newMergedCell);
212
216
 
@@ -252,16 +256,16 @@ var MergedCellsCollection = /*#__PURE__*/function () {
252
256
  }, {
253
257
  key: "clear",
254
258
  value: function clear() {
255
- var _this = this;
259
+ var _this2 = this;
256
260
 
257
261
  var mergedCells = this.mergedCells;
258
262
  var mergedCellParentsToClear = [];
259
263
  var hiddenCollectionElements = [];
260
264
  (0, _array.arrayEach)(mergedCells, function (mergedCell) {
261
- var TD = _this.hot.getCell(mergedCell.row, mergedCell.col);
265
+ var TD = _this2.hot.getCell(mergedCell.row, mergedCell.col);
262
266
 
263
267
  if (TD) {
264
- mergedCellParentsToClear.push([TD, _this.get(mergedCell.row, mergedCell.col), mergedCell.row, mergedCell.col]);
268
+ mergedCellParentsToClear.push([TD, _this2.get(mergedCell.row, mergedCell.col), mergedCell.row, mergedCell.col]);
265
269
  }
266
270
  });
267
271
  this.mergedCells.length = 0;
@@ -269,7 +273,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
269
273
  (0, _number.rangeEach)(0, mergedCell.rowspan - 1, function (j) {
270
274
  (0, _number.rangeEach)(0, mergedCell.colspan - 1, function (k) {
271
275
  if (k !== 0 || j !== 0) {
272
- var TD = _this.hot.getCell(mergedCell.row + j, mergedCell.col + k);
276
+ var TD = _this2.hot.getCell(mergedCell.row + j, mergedCell.col + k);
273
277
 
274
278
  if (TD) {
275
279
  hiddenCollectionElements.push([TD, null, null, null]);
@@ -296,10 +300,13 @@ var MergedCellsCollection = /*#__PURE__*/function () {
296
300
  }, {
297
301
  key: "isOverlapping",
298
302
  value: function isOverlapping(mergedCell) {
299
- var mergedCellRange = new _index.CellRange(new _index.CellCoords(0, 0), new _index.CellCoords(mergedCell.row, mergedCell.col), new _index.CellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1));
303
+ var _this3 = this;
304
+
305
+ var mergedCellRange = this.hot._createCellRange(this.hot._createCellCoords(0, 0), this.hot._createCellCoords(mergedCell.row, mergedCell.col), this.hot._createCellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1));
306
+
300
307
  var result = false;
301
308
  (0, _array.arrayEach)(this.mergedCells, function (col) {
302
- var currentRange = new _index.CellRange(new _index.CellCoords(0, 0), new _index.CellCoords(col.row, col.col), new _index.CellCoords(col.row + col.rowspan - 1, col.col + col.colspan - 1));
309
+ var currentRange = _this3.hot._createCellRange(_this3.hot._createCellCoords(0, 0), _this3.hot._createCellCoords(col.row, col.col), _this3.hot._createCellCoords(col.row + col.rowspan - 1, col.col + col.colspan - 1));
303
310
 
304
311
  if (currentRange.overlaps(mergedCellRange)) {
305
312
  result = true;
@@ -323,7 +330,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
323
330
  value: function isFirstRenderableMergedCell(row, column) {
324
331
  var mergeParent = this.get(row, column); // Return if row and column indexes are within merge area and if they are first rendered indexes within the area.
325
332
 
326
- return mergeParent && this.hot.rowIndexMapper.getFirstNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getFirstNotHiddenIndex(mergeParent.col, 1) === column;
333
+ return mergeParent && this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1) === column;
327
334
  }
328
335
  /**
329
336
  * Get the first renderable coords of the merged cell at the provided coordinates.
@@ -340,12 +347,12 @@ var MergedCellsCollection = /*#__PURE__*/function () {
340
347
  var mergeParent = this.get(row, column);
341
348
 
342
349
  if (!mergeParent || this.isFirstRenderableMergedCell(row, column)) {
343
- return new _index.CellCoords(row, column);
350
+ return this.hot._createCellCoords(row, column);
344
351
  }
345
352
 
346
- var firstRenderableRow = this.hot.rowIndexMapper.getFirstNotHiddenIndex(mergeParent.row, 1);
347
- var firstRenderableColumn = this.hot.columnIndexMapper.getFirstNotHiddenIndex(mergeParent.col, 1);
348
- return new _index.CellCoords(firstRenderableRow, firstRenderableColumn);
353
+ var firstRenderableRow = this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1);
354
+ var firstRenderableColumn = this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1);
355
+ return this.hot._createCellCoords(firstRenderableRow, firstRenderableColumn);
349
356
  }
350
357
  /**
351
358
  * Shift the merged cell in the direction and by an offset defined in the arguments.
@@ -358,7 +365,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
358
365
  }, {
359
366
  key: "shiftCollections",
360
367
  value: function shiftCollections(direction, index, count) {
361
- var _this2 = this;
368
+ var _this4 = this;
362
369
 
363
370
  var shiftVector = [0, 0];
364
371
 
@@ -386,10 +393,10 @@ var MergedCellsCollection = /*#__PURE__*/function () {
386
393
  currentMerge.shift(shiftVector, index);
387
394
  });
388
395
  (0, _number.rangeEachReverse)(this.mergedCells.length - 1, 0, function (i) {
389
- var currentMerge = _this2.mergedCells[i];
396
+ var currentMerge = _this4.mergedCells[i];
390
397
 
391
398
  if (currentMerge && currentMerge.removed) {
392
- _this2.mergedCells.splice(_this2.mergedCells.indexOf(currentMerge), 1);
399
+ _this4.mergedCells.splice(_this4.mergedCells.indexOf(currentMerge), 1);
393
400
  }
394
401
  });
395
402
  }
@@ -36,7 +36,6 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
36
36
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
37
37
 
38
38
  import MergedCellCoords from "./cellCoords.mjs";
39
- import { CellCoords, CellRange } from "../../3rdparty/walkontable/src/index.mjs";
40
39
  import { rangeEach, rangeEachReverse } from "../../helpers/number.mjs";
41
40
  import { warn } from "../../helpers/console.mjs";
42
41
  import { arrayEach } from "../../helpers/array.mjs";
@@ -139,21 +138,27 @@ var MergedCellsCollection = /*#__PURE__*/function () {
139
138
  }, {
140
139
  key: "getWithinRange",
141
140
  value: function getWithinRange(range) {
141
+ var _this = this;
142
+
142
143
  var countPartials = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
143
144
  var mergedCells = this.mergedCells;
144
145
  var foundMergedCells = [];
145
146
  var testedRange = range;
146
147
 
147
148
  if (!testedRange.includesRange) {
148
- var from = new CellCoords(testedRange.from.row, testedRange.from.col);
149
- var to = new CellCoords(testedRange.to.row, testedRange.to.col);
150
- testedRange = new CellRange(from, from, to);
149
+ var from = this.hot._createCellCoords(testedRange.from.row, testedRange.from.col);
150
+
151
+ var to = this.hot._createCellCoords(testedRange.to.row, testedRange.to.col);
152
+
153
+ testedRange = this.hot._createCellRange(from, from, to);
151
154
  }
152
155
 
153
156
  arrayEach(mergedCells, function (mergedCell) {
154
- var mergedCellTopLeft = new CellCoords(mergedCell.row, mergedCell.col);
155
- var mergedCellBottomRight = new CellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1);
156
- var mergedCellRange = new CellRange(mergedCellTopLeft, mergedCellTopLeft, mergedCellBottomRight);
157
+ var mergedCellTopLeft = _this.hot._createCellCoords(mergedCell.row, mergedCell.col);
158
+
159
+ var mergedCellBottomRight = _this.hot._createCellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1);
160
+
161
+ var mergedCellRange = _this.hot._createCellRange(mergedCellTopLeft, mergedCellTopLeft, mergedCellBottomRight);
157
162
 
158
163
  if (countPartials) {
159
164
  if (testedRange.overlaps(mergedCellRange)) {
@@ -180,7 +185,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
180
185
  var column = mergedCellInfo.col;
181
186
  var rowspan = mergedCellInfo.rowspan;
182
187
  var colspan = mergedCellInfo.colspan;
183
- var newMergedCell = new MergedCellCoords(row, column, rowspan, colspan);
188
+ var newMergedCell = new MergedCellCoords(row, column, rowspan, colspan, this.hot._createCellCoords, this.hot._createCellRange);
184
189
  var alreadyExists = this.get(row, column);
185
190
  var isOverlapping = this.isOverlapping(newMergedCell);
186
191
 
@@ -226,16 +231,16 @@ var MergedCellsCollection = /*#__PURE__*/function () {
226
231
  }, {
227
232
  key: "clear",
228
233
  value: function clear() {
229
- var _this = this;
234
+ var _this2 = this;
230
235
 
231
236
  var mergedCells = this.mergedCells;
232
237
  var mergedCellParentsToClear = [];
233
238
  var hiddenCollectionElements = [];
234
239
  arrayEach(mergedCells, function (mergedCell) {
235
- var TD = _this.hot.getCell(mergedCell.row, mergedCell.col);
240
+ var TD = _this2.hot.getCell(mergedCell.row, mergedCell.col);
236
241
 
237
242
  if (TD) {
238
- mergedCellParentsToClear.push([TD, _this.get(mergedCell.row, mergedCell.col), mergedCell.row, mergedCell.col]);
243
+ mergedCellParentsToClear.push([TD, _this2.get(mergedCell.row, mergedCell.col), mergedCell.row, mergedCell.col]);
239
244
  }
240
245
  });
241
246
  this.mergedCells.length = 0;
@@ -243,7 +248,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
243
248
  rangeEach(0, mergedCell.rowspan - 1, function (j) {
244
249
  rangeEach(0, mergedCell.colspan - 1, function (k) {
245
250
  if (k !== 0 || j !== 0) {
246
- var TD = _this.hot.getCell(mergedCell.row + j, mergedCell.col + k);
251
+ var TD = _this2.hot.getCell(mergedCell.row + j, mergedCell.col + k);
247
252
 
248
253
  if (TD) {
249
254
  hiddenCollectionElements.push([TD, null, null, null]);
@@ -270,10 +275,13 @@ var MergedCellsCollection = /*#__PURE__*/function () {
270
275
  }, {
271
276
  key: "isOverlapping",
272
277
  value: function isOverlapping(mergedCell) {
273
- var mergedCellRange = new CellRange(new CellCoords(0, 0), new CellCoords(mergedCell.row, mergedCell.col), new CellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1));
278
+ var _this3 = this;
279
+
280
+ var mergedCellRange = this.hot._createCellRange(this.hot._createCellCoords(0, 0), this.hot._createCellCoords(mergedCell.row, mergedCell.col), this.hot._createCellCoords(mergedCell.row + mergedCell.rowspan - 1, mergedCell.col + mergedCell.colspan - 1));
281
+
274
282
  var result = false;
275
283
  arrayEach(this.mergedCells, function (col) {
276
- var currentRange = new CellRange(new CellCoords(0, 0), new CellCoords(col.row, col.col), new CellCoords(col.row + col.rowspan - 1, col.col + col.colspan - 1));
284
+ var currentRange = _this3.hot._createCellRange(_this3.hot._createCellCoords(0, 0), _this3.hot._createCellCoords(col.row, col.col), _this3.hot._createCellCoords(col.row + col.rowspan - 1, col.col + col.colspan - 1));
277
285
 
278
286
  if (currentRange.overlaps(mergedCellRange)) {
279
287
  result = true;
@@ -297,7 +305,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
297
305
  value: function isFirstRenderableMergedCell(row, column) {
298
306
  var mergeParent = this.get(row, column); // Return if row and column indexes are within merge area and if they are first rendered indexes within the area.
299
307
 
300
- return mergeParent && this.hot.rowIndexMapper.getFirstNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getFirstNotHiddenIndex(mergeParent.col, 1) === column;
308
+ return mergeParent && this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1) === column;
301
309
  }
302
310
  /**
303
311
  * Get the first renderable coords of the merged cell at the provided coordinates.
@@ -314,12 +322,12 @@ var MergedCellsCollection = /*#__PURE__*/function () {
314
322
  var mergeParent = this.get(row, column);
315
323
 
316
324
  if (!mergeParent || this.isFirstRenderableMergedCell(row, column)) {
317
- return new CellCoords(row, column);
325
+ return this.hot._createCellCoords(row, column);
318
326
  }
319
327
 
320
- var firstRenderableRow = this.hot.rowIndexMapper.getFirstNotHiddenIndex(mergeParent.row, 1);
321
- var firstRenderableColumn = this.hot.columnIndexMapper.getFirstNotHiddenIndex(mergeParent.col, 1);
322
- return new CellCoords(firstRenderableRow, firstRenderableColumn);
328
+ var firstRenderableRow = this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1);
329
+ var firstRenderableColumn = this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1);
330
+ return this.hot._createCellCoords(firstRenderableRow, firstRenderableColumn);
323
331
  }
324
332
  /**
325
333
  * Shift the merged cell in the direction and by an offset defined in the arguments.
@@ -332,7 +340,7 @@ var MergedCellsCollection = /*#__PURE__*/function () {
332
340
  }, {
333
341
  key: "shiftCollections",
334
342
  value: function shiftCollections(direction, index, count) {
335
- var _this2 = this;
343
+ var _this4 = this;
336
344
 
337
345
  var shiftVector = [0, 0];
338
346
 
@@ -360,10 +368,10 @@ var MergedCellsCollection = /*#__PURE__*/function () {
360
368
  currentMerge.shift(shiftVector, index);
361
369
  });
362
370
  rangeEachReverse(this.mergedCells.length - 1, 0, function (i) {
363
- var currentMerge = _this2.mergedCells[i];
371
+ var currentMerge = _this4.mergedCells[i];
364
372
 
365
373
  if (currentMerge && currentMerge.removed) {
366
- _this2.mergedCells.splice(_this2.mergedCells.indexOf(currentMerge), 1);
374
+ _this4.mergedCells.splice(_this4.mergedCells.indexOf(currentMerge), 1);
367
375
  }
368
376
  });
369
377
  }
@@ -53,10 +53,6 @@ var _base = require("../base");
53
53
 
54
54
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
55
55
 
56
- var _event = require("../../helpers/dom/event");
57
-
58
- var _src = require("../../3rdparty/walkontable/src");
59
-
60
56
  var _cellsCollection = _interopRequireDefault(require("./cellsCollection"));
61
57
 
62
58
  var _cellCoords = _interopRequireDefault(require("./cellCoords"));
@@ -105,13 +101,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
105
101
 
106
102
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
107
103
 
108
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
104
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
109
105
 
110
106
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
111
107
 
112
108
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
113
109
 
114
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
110
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
115
111
 
116
112
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
117
113
 
@@ -121,7 +117,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
121
117
 
122
118
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
123
119
 
124
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
120
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
125
121
 
126
122
  _pluginHooks.default.getSingleton().register('beforeMergeCells');
127
123
 
@@ -136,6 +132,9 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
136
132
  var PLUGIN_PRIORITY = 150;
137
133
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
138
134
  var privatePool = new WeakMap();
135
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
136
+ /* eslint-disable jsdoc/require-description-complete-sentence */
137
+
139
138
  /**
140
139
  * @plugin MergeCells
141
140
  * @class MergeCells
@@ -228,9 +227,6 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
228
227
  this.addHook('afterInit', function () {
229
228
  return _this2.onAfterInit.apply(_this2, arguments);
230
229
  });
231
- this.addHook('beforeKeyDown', function () {
232
- return _this2.onBeforeKeyDown.apply(_this2, arguments);
233
- });
234
230
  this.addHook('modifyTransformStart', function () {
235
231
  return _this2.onModifyTransformStart.apply(_this2, arguments);
236
232
  });
@@ -302,6 +298,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
302
298
  return false;
303
299
  }
304
300
  });
301
+ this.registerShortcuts();
305
302
 
306
303
  _get(_getPrototypeOf(MergeCells.prototype), "enablePlugin", this).call(this);
307
304
  }
@@ -313,12 +310,16 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
313
310
  key: "disablePlugin",
314
311
  value: function disablePlugin() {
315
312
  this.clearCollections();
313
+ this.unregisterShortcuts();
316
314
  this.hot.render();
317
315
 
318
316
  _get(_getPrototypeOf(MergeCells.prototype), "disablePlugin", this).call(this);
319
317
  }
320
318
  /**
321
- * Updates the plugin state. This method is executed when {@link Core#updateSettings} is invoked.
319
+ * Updates the plugin's state.
320
+ *
321
+ * This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
322
+ * - [`mergeCells`](@/api/options.md#mergecells)
322
323
  */
323
324
 
324
325
  }, {
@@ -385,9 +386,12 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
385
386
  return;
386
387
  }
387
388
 
388
- var highlight = new _src.CellCoords(setting.row, setting.col);
389
- var rangeEnd = new _src.CellCoords(setting.row + setting.rowspan - 1, setting.col + setting.colspan - 1);
390
- var mergeRange = new _src.CellRange(highlight, highlight, rangeEnd);
389
+ var highlight = _this3.hot._createCellCoords(setting.row, setting.col);
390
+
391
+ var rangeEnd = _this3.hot._createCellCoords(setting.row + setting.rowspan - 1, setting.col + setting.colspan - 1);
392
+
393
+ var mergeRange = _this3.hot._createCellRange(highlight, highlight, rangeEnd);
394
+
391
395
  populationArgumentsList.push(_this3.mergeRange(mergeRange, true, true));
392
396
  }); // remove 'empty' setting objects, caused by improper merge range declarations
393
397
 
@@ -497,7 +501,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
497
501
  return;
498
502
  }
499
503
 
500
- currentRange.setDirection('NW-SE');
504
+ currentRange.setDirection(this.hot.isRtl() ? 'NE-SW' : 'NW-SE');
501
505
  var from = currentRange.from,
502
506
  to = currentRange.to;
503
507
  this.toggleMerge(currentRange);
@@ -518,7 +522,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
518
522
  return;
519
523
  }
520
524
 
521
- cellRange.setDirection('NW-SE');
525
+ cellRange.setDirection(this.hot.isRtl() ? 'NE-SW' : 'NW-SE');
522
526
  var from = cellRange.from,
523
527
  to = cellRange.to;
524
528
  this.unmergeRange(cellRange, true);
@@ -564,13 +568,13 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
564
568
 
565
569
  var auto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
566
570
  var preventPopulation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
567
- var topLeft = cellRange.getTopLeftCorner();
568
- var bottomRight = cellRange.getBottomRightCorner();
571
+ var topStart = cellRange.getTopStartCorner();
572
+ var bottomEnd = cellRange.getBottomEndCorner();
569
573
  var mergeParent = {
570
- row: topLeft.row,
571
- col: topLeft.col,
572
- rowspan: bottomRight.row - topLeft.row + 1,
573
- colspan: bottomRight.col - topLeft.col + 1
574
+ row: topStart.row,
575
+ col: topStart.col,
576
+ rowspan: bottomEnd.row - topStart.row + 1,
577
+ colspan: bottomEnd.col - topStart.col + 1
574
578
  };
575
579
  var clearedData = [];
576
580
  var populationInfo = null;
@@ -684,9 +688,11 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
684
688
  }, {
685
689
  key: "merge",
686
690
  value: function merge(startRow, startColumn, endRow, endColumn) {
687
- var start = new _src.CellCoords(startRow, startColumn);
688
- var end = new _src.CellCoords(endRow, endColumn);
689
- this.mergeRange(new _src.CellRange(start, start, end));
691
+ var start = this.hot._createCellCoords(startRow, startColumn);
692
+
693
+ var end = this.hot._createCellCoords(endRow, endColumn);
694
+
695
+ this.mergeRange(this.hot._createCellRange(start, start, end));
690
696
  }
691
697
  /**
692
698
  * Unmerges the merged cell in the provided range.
@@ -702,9 +708,11 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
702
708
  }, {
703
709
  key: "unmerge",
704
710
  value: function unmerge(startRow, startColumn, endRow, endColumn) {
705
- var start = new _src.CellCoords(startRow, startColumn);
706
- var end = new _src.CellCoords(endRow, endColumn);
707
- this.unmergeRange(new _src.CellRange(start, start, end));
711
+ var start = this.hot._createCellCoords(startRow, startColumn);
712
+
713
+ var end = this.hot._createCellCoords(endRow, endColumn);
714
+
715
+ this.unmergeRange(this.hot._createCellRange(start, start, end));
708
716
  }
709
717
  /**
710
718
  * `afterInit` hook callback.
@@ -719,23 +727,44 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
719
727
  this.hot.render();
720
728
  }
721
729
  /**
722
- * `beforeKeyDown` hook callback.
730
+ * Register shortcuts responsible for toggling a merge.
723
731
  *
724
732
  * @private
725
- * @param {KeyboardEvent} event The `keydown` event object.
726
733
  */
727
734
 
728
735
  }, {
729
- key: "onBeforeKeyDown",
730
- value: function onBeforeKeyDown(event) {
731
- var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey;
732
-
733
- if (ctrlDown && event.keyCode === 77) {
734
- // CTRL + M
735
- this.toggleMerge(this.hot.getSelectedRangeLast());
736
- this.hot.render();
737
- (0, _event.stopImmediatePropagation)(event);
738
- }
736
+ key: "registerShortcuts",
737
+ value: function registerShortcuts() {
738
+ var _this6 = this;
739
+
740
+ var shortcutManager = this.hot.getShortcutManager();
741
+ var gridContext = shortcutManager.getContext('grid');
742
+ gridContext.addShortcut({
743
+ keys: [['Control', 'm']],
744
+ callback: function callback() {
745
+ _this6.toggleMerge(_this6.hot.getSelectedRangeLast());
746
+
747
+ _this6.hot.render();
748
+ },
749
+ runOnlyIf: function runOnlyIf(event) {
750
+ return !event.altKey;
751
+ },
752
+ // right ALT in some systems triggers ALT+CTRL
753
+ group: SHORTCUTS_GROUP
754
+ });
755
+ }
756
+ /**
757
+ * Unregister shortcuts responsible for toggling a merge.
758
+ *
759
+ * @private
760
+ */
761
+
762
+ }, {
763
+ key: "unregisterShortcuts",
764
+ value: function unregisterShortcuts() {
765
+ var shortcutManager = this.hot.getShortcutManager();
766
+ var gridContext = shortcutManager.getContext('grid');
767
+ gridContext.removeShortcutsByGroup(SHORTCUTS_GROUP);
739
768
  }
740
769
  /**
741
770
  * Modifies the information on whether the current selection contains multiple cells. The `afterIsMultipleSelection` hook callback.
@@ -778,21 +807,25 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
778
807
  col: delta.col
779
808
  };
780
809
  var nextPosition = null;
781
- var currentPosition = new _src.CellCoords(currentlySelectedRange.highlight.row, currentlySelectedRange.highlight.col);
810
+
811
+ var currentPosition = this.hot._createCellCoords(currentlySelectedRange.highlight.row, currentlySelectedRange.highlight.col);
812
+
782
813
  var mergedParent = this.mergedCellsCollection.get(currentPosition.row, currentPosition.col);
783
814
 
784
815
  if (!priv.lastDesiredCoords) {
785
- priv.lastDesiredCoords = new _src.CellCoords(null, null);
816
+ priv.lastDesiredCoords = this.hot._createCellCoords(null, null);
786
817
  }
787
818
 
788
819
  if (mergedParent) {
789
820
  // only merge selected
790
- var mergeTopLeft = new _src.CellCoords(mergedParent.row, mergedParent.col);
791
- var mergeBottomRight = new _src.CellCoords(mergedParent.row + mergedParent.rowspan - 1, mergedParent.col + mergedParent.colspan - 1);
792
- var mergeRange = new _src.CellRange(mergeTopLeft, mergeTopLeft, mergeBottomRight);
821
+ var mergeTopLeft = this.hot._createCellCoords(mergedParent.row, mergedParent.col);
822
+
823
+ var mergeBottomRight = this.hot._createCellCoords(mergedParent.row + mergedParent.rowspan - 1, mergedParent.col + mergedParent.colspan - 1);
824
+
825
+ var mergeRange = this.hot._createCellRange(mergeTopLeft, mergeTopLeft, mergeBottomRight);
793
826
 
794
827
  if (!mergeRange.includes(priv.lastDesiredCoords)) {
795
- priv.lastDesiredCoords = new _src.CellCoords(null, null); // reset outdated version of lastDesiredCoords
828
+ priv.lastDesiredCoords = this.hot._createCellCoords(null, null); // reset outdated version of lastDesiredCoords
796
829
  }
797
830
 
798
831
  newDelta.row = priv.lastDesiredCoords.row ? priv.lastDesiredCoords.row - currentPosition.row : newDelta.row;
@@ -815,7 +848,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
815
848
  }
816
849
  }
817
850
 
818
- nextPosition = new _src.CellCoords(currentlySelectedRange.highlight.row + newDelta.row, currentlySelectedRange.highlight.col + newDelta.col);
851
+ nextPosition = this.hot._createCellCoords(currentlySelectedRange.highlight.row + newDelta.row, currentlySelectedRange.highlight.col + newDelta.col);
819
852
  var nextPositionMergedCell = this.mergedCellsCollection.get(nextPosition.row, nextPosition.col);
820
853
 
821
854
  if (nextPositionMergedCell) {
@@ -846,7 +879,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
846
879
  }, {
847
880
  key: "onModifyTransformEnd",
848
881
  value: function onModifyTransformEnd(delta) {
849
- var _this6 = this;
882
+ var _this7 = this;
850
883
 
851
884
  var currentSelectionRange = this.hot.getSelectedRangeLast();
852
885
  var newDelta = (0, _object.clone)(delta);
@@ -858,7 +891,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
858
891
  tempDelta = (0, _object.clone)(newDelta);
859
892
  this.selectionCalculations.getUpdatedSelectionRange(currentSelectionRange, newDelta);
860
893
  (0, _array.arrayEach)(mergedCellsWithinRange, function (mergedCell) {
861
- _this6.selectionCalculations.snapDelta(newDelta, currentSelectionRange, mergedCell);
894
+ _this7.selectionCalculations.snapDelta(newDelta, currentSelectionRange, mergedCell);
862
895
  });
863
896
  } while (newDelta.row !== tempDelta.row || newDelta.col !== tempDelta.col);
864
897
 
@@ -946,9 +979,9 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
946
979
  var maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
947
980
  // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
948
981
 
949
- mergedCellCopy.row = rowMapper.getFirstNotHiddenIndex(mergedCellCopy.row, 1); // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
982
+ mergedCellCopy.row = rowMapper.getNearestNotHiddenIndex(mergedCellCopy.row, 1); // We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
950
983
 
951
- mergedCellCopy.col = columnMapper.getFirstNotHiddenIndex(mergedCellCopy.col, 1); // The `rowSpan` property for a `TD` element should be at most equal to number of rendered rows in the merge area.
984
+ mergedCellCopy.col = columnMapper.getNearestNotHiddenIndex(mergedCellCopy.col, 1); // The `rowSpan` property for a `TD` element should be at most equal to number of rendered rows in the merge area.
952
985
 
953
986
  mergedCellCopy.rowspan = Math.min(mergedCellCopy.rowspan, maxRowSpan); // The `colSpan` property for a `TD` element should be at most equal to number of rendered columns in the merge area.
954
987
 
@@ -994,7 +1027,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
994
1027
  key: "onBeforeSetRangeEnd",
995
1028
  value: function onBeforeSetRangeEnd(coords) {
996
1029
  var selRange = this.hot.getSelectedRangeLast();
997
- selRange.highlight = new _src.CellCoords(selRange.highlight.row, selRange.highlight.col); // clone in case we will modify its reference
1030
+ selRange.highlight = this.hot._createCellCoords(selRange.highlight.row, selRange.highlight.col); // clone in case we will modify its reference
998
1031
 
999
1032
  selRange.to = coords;
1000
1033
  var rangeExpanded = false;
@@ -1073,7 +1106,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1073
1106
  var mergeParentForViewportStart = this.mergedCellsCollection.get(visualStartRow, visualColumnIndex);
1074
1107
 
1075
1108
  if ((0, _object.isObject)(mergeParentForViewportStart)) {
1076
- var renderableIndexAtMergeStart = rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(mergeParentForViewportStart.row, 1)); // Merge start is out of the viewport (i.e. when we scrolled to the bottom and we can see just part of a merge).
1109
+ var renderableIndexAtMergeStart = rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(mergeParentForViewportStart.row, 1)); // Merge start is out of the viewport (i.e. when we scrolled to the bottom and we can see just part of a merge).
1077
1110
 
1078
1111
  if (renderableIndexAtMergeStart < calc.startRow) {
1079
1112
  // We extend viewport when some rows have been merged.
@@ -1105,7 +1138,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1105
1138
 
1106
1139
  if ((0, _object.isObject)(mergeParentForViewportEnd)) {
1107
1140
  var mergeEnd = mergeParentForViewportEnd.row + mergeParentForViewportEnd.rowspan - 1;
1108
- var renderableIndexAtMergeEnd = rowMapper.getRenderableFromVisualIndex(rowMapper.getFirstNotHiddenIndex(mergeEnd, -1)); // Merge end is out of the viewport.
1141
+ var renderableIndexAtMergeEnd = rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(mergeEnd, -1)); // Merge end is out of the viewport.
1109
1142
 
1110
1143
  if (renderableIndexAtMergeEnd > calc.endRow) {
1111
1144
  // We extend the viewport when some rows have been merged.
@@ -1150,7 +1183,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1150
1183
  var mergeParentForViewportStart = this.mergedCellsCollection.get(visualRowIndex, visualStartCol);
1151
1184
 
1152
1185
  if ((0, _object.isObject)(mergeParentForViewportStart)) {
1153
- var renderableIndexAtMergeStart = columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(mergeParentForViewportStart.col, 1)); // Merge start is out of the viewport (i.e. when we scrolled to the right and we can see just part of a merge).
1186
+ var renderableIndexAtMergeStart = columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(mergeParentForViewportStart.col, 1)); // Merge start is out of the viewport (i.e. when we scrolled to the right and we can see just part of a merge).
1154
1187
 
1155
1188
  if (renderableIndexAtMergeStart < calc.startColumn) {
1156
1189
  // We extend viewport when some columns have been merged.
@@ -1182,7 +1215,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1182
1215
 
1183
1216
  if ((0, _object.isObject)(mergeParentForViewportEnd)) {
1184
1217
  var mergeEnd = mergeParentForViewportEnd.col + mergeParentForViewportEnd.colspan - 1;
1185
- var renderableIndexAtMergeEnd = columnMapper.getRenderableFromVisualIndex(columnMapper.getFirstNotHiddenIndex(mergeEnd, -1)); // Merge end is out of the viewport.
1218
+ var renderableIndexAtMergeEnd = columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(mergeEnd, -1)); // Merge end is out of the viewport.
1186
1219
 
1187
1220
  if (renderableIndexAtMergeEnd > calc.endColumn) {
1188
1221
  // We extend the viewport when some columns have been merged.
@@ -1222,15 +1255,15 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1222
1255
  var firstNonHiddenColumn;
1223
1256
 
1224
1257
  if (rowspan === 0) {
1225
- firstNonHiddenRow = rowMapper.getFirstNotHiddenIndex(parentRow, 1);
1258
+ firstNonHiddenRow = rowMapper.getNearestNotHiddenIndex(parentRow, 1);
1226
1259
  } else {
1227
- firstNonHiddenRow = rowMapper.getFirstNotHiddenIndex(parentRow + rowspan - 1, -1);
1260
+ firstNonHiddenRow = rowMapper.getNearestNotHiddenIndex(parentRow + rowspan - 1, -1);
1228
1261
  }
1229
1262
 
1230
1263
  if (colspan === 0) {
1231
- firstNonHiddenColumn = columnMapper.getFirstNotHiddenIndex(parentColumn, 1);
1264
+ firstNonHiddenColumn = columnMapper.getNearestNotHiddenIndex(parentColumn, 1);
1232
1265
  } else {
1233
- firstNonHiddenColumn = columnMapper.getFirstNotHiddenIndex(parentColumn + colspan - 1, -1);
1266
+ firstNonHiddenColumn = columnMapper.getNearestNotHiddenIndex(parentColumn + colspan - 1, -1);
1234
1267
  }
1235
1268
 
1236
1269
  var renderableRow = parentRow >= 0 ? rowMapper.getRenderableFromVisualIndex(firstNonHiddenRow) : parentRow;
@@ -1365,7 +1398,7 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1365
1398
  var selectedRange = this.hot.getSelectedRangeLast();
1366
1399
  var mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(selectedRange);
1367
1400
  (0, _array.arrayEach)(mergedCellsWithinRange, function (mergedCell) {
1368
- if (selectedRange.getBottomRightCorner().row === mergedCell.getLastRow() && selectedRange.getBottomRightCorner().col === mergedCell.getLastColumn()) {
1401
+ if (selectedRange.getBottomEndCorner().row === mergedCell.getLastRow() && selectedRange.getBottomEndCorner().col === mergedCell.getLastColumn()) {
1369
1402
  corners[2] = mergedCell.row;
1370
1403
  corners[3] = mergedCell.col;
1371
1404
  }