handsontable 0.0.0-next-b66c79f-20230713 → 0.0.0-next-08765b9-20230714

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 (373) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +87 -33
  3. package/3rdparty/walkontable/src/cell/coords.mjs +87 -33
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +92 -46
  6. package/3rdparty/walkontable/src/cell/range.mjs +92 -46
  7. package/3rdparty/walkontable/src/core/_base.js +41 -33
  8. package/3rdparty/walkontable/src/core/_base.mjs +41 -33
  9. package/3rdparty/walkontable/src/core/clone.js +8 -5
  10. package/3rdparty/walkontable/src/core/clone.mjs +8 -5
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +9 -8
  14. package/3rdparty/walkontable/src/event.mjs +9 -8
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +11 -9
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +11 -9
  21. package/3rdparty/walkontable/src/overlay/bottom.js +10 -8
  22. package/3rdparty/walkontable/src/overlay/bottom.mjs +10 -8
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  25. package/3rdparty/walkontable/src/overlay/top.js +12 -14
  26. package/3rdparty/walkontable/src/overlay/top.mjs +12 -14
  27. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +16 -13
  28. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +16 -13
  29. package/3rdparty/walkontable/src/overlays.js +75 -80
  30. package/3rdparty/walkontable/src/overlays.mjs +75 -80
  31. package/3rdparty/walkontable/src/scroll.js +27 -24
  32. package/3rdparty/walkontable/src/scroll.mjs +27 -24
  33. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  34. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  35. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  36. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  37. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  38. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  39. package/3rdparty/walkontable/src/selection/index.js +26 -0
  40. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  41. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  42. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  43. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  44. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  45. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  46. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  47. package/3rdparty/walkontable/src/settings.js +18 -17
  48. package/3rdparty/walkontable/src/settings.mjs +18 -17
  49. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  50. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  51. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  52. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  53. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  59. package/3rdparty/walkontable/src/table.js +48 -115
  60. package/3rdparty/walkontable/src/table.mjs +49 -116
  61. package/base.js +2 -2
  62. package/base.mjs +2 -2
  63. package/core/focusCatcher/focusDetector.js +58 -0
  64. package/core/focusCatcher/focusDetector.mjs +54 -0
  65. package/core/focusCatcher/index.js +142 -0
  66. package/core/focusCatcher/index.mjs +138 -0
  67. package/core/index.js +9 -0
  68. package/core/index.mjs +1 -0
  69. package/core.d.ts +6 -3
  70. package/core.js +181 -298
  71. package/core.mjs +181 -298
  72. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -1
  73. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
  74. package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
  75. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  76. package/dataMap/metaManager/metaSchema.js +41 -0
  77. package/dataMap/metaManager/metaSchema.mjs +41 -0
  78. package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
  79. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +3 -2
  80. package/dataMap/metaManager/utils.js +4 -2
  81. package/dataMap/metaManager/utils.mjs +4 -2
  82. package/dist/handsontable.css +19 -3
  83. package/dist/handsontable.full.css +19 -3
  84. package/dist/handsontable.full.js +10739 -7037
  85. package/dist/handsontable.full.min.css +3 -3
  86. package/dist/handsontable.full.min.js +25 -25
  87. package/dist/handsontable.js +24884 -21182
  88. package/dist/handsontable.min.css +3 -3
  89. package/dist/handsontable.min.js +19 -19
  90. package/editorManager.js +11 -75
  91. package/editorManager.mjs +11 -74
  92. package/editors/autocompleteEditor/autocompleteEditor.js +70 -67
  93. package/editors/autocompleteEditor/autocompleteEditor.mjs +70 -67
  94. package/editors/baseEditor/baseEditor.js +1 -1
  95. package/editors/baseEditor/baseEditor.mjs +1 -1
  96. package/editors/dateEditor/dateEditor.js +2 -1
  97. package/editors/dateEditor/dateEditor.mjs +2 -1
  98. package/editors/textEditor/textEditor.js +3 -11
  99. package/editors/textEditor/textEditor.mjs +4 -12
  100. package/helpers/mixed.js +1 -1
  101. package/helpers/mixed.mjs +1 -1
  102. package/helpers/number.d.ts +1 -0
  103. package/helpers/number.js +18 -0
  104. package/helpers/number.mjs +17 -0
  105. package/helpers/object.js +1 -0
  106. package/helpers/object.mjs +1 -0
  107. package/index.js +5 -5
  108. package/index.mjs +5 -5
  109. package/package.json +1 -1
  110. package/pluginHooks.d.ts +7 -1
  111. package/pluginHooks.js +106 -1
  112. package/pluginHooks.mjs +106 -1
  113. package/plugins/autoColumnSize/autoColumnSize.js +4 -1
  114. package/plugins/autoColumnSize/autoColumnSize.mjs +4 -1
  115. package/plugins/collapsibleColumns/collapsibleColumns.js +110 -40
  116. package/plugins/collapsibleColumns/collapsibleColumns.mjs +110 -40
  117. package/plugins/columnSorting/columnSorting.js +40 -1
  118. package/plugins/columnSorting/columnSorting.mjs +40 -3
  119. package/plugins/columnSorting/columnStatesManager.js +2 -1
  120. package/plugins/columnSorting/columnStatesManager.mjs +2 -1
  121. package/plugins/columnSorting/index.js +3 -1
  122. package/plugins/columnSorting/index.mjs +1 -1
  123. package/plugins/comments/commentEditor.js +1 -0
  124. package/plugins/comments/commentEditor.mjs +1 -0
  125. package/plugins/comments/comments.js +253 -191
  126. package/plugins/comments/comments.mjs +252 -192
  127. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  128. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  129. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  130. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  131. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  132. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  133. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  134. package/plugins/contextMenu/contextMenu.js +72 -30
  135. package/plugins/contextMenu/contextMenu.mjs +73 -31
  136. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  137. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  138. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  139. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  140. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  141. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  142. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  143. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  144. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  145. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  146. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  147. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  148. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  149. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  150. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  151. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  152. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  153. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  154. package/plugins/contextMenu/utils.js +28 -16
  155. package/plugins/contextMenu/utils.mjs +27 -15
  156. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  157. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  158. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  159. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  160. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  161. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  162. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  163. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  164. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  165. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  166. package/plugins/copyPaste/copyPaste.js +12 -6
  167. package/plugins/copyPaste/copyPaste.mjs +12 -6
  168. package/plugins/customBorders/customBorders.js +36 -29
  169. package/plugins/customBorders/customBorders.mjs +37 -30
  170. package/plugins/customBorders/utils.js +3 -3
  171. package/plugins/customBorders/utils.mjs +3 -3
  172. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  173. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  174. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  175. package/plugins/filters/conditionCollection.js +6 -5
  176. package/plugins/filters/conditionCollection.mjs +6 -5
  177. package/plugins/filters/filters.js +44 -21
  178. package/plugins/filters/filters.mjs +43 -20
  179. package/plugins/formulas/engine/register.js +3 -3
  180. package/plugins/formulas/engine/register.mjs +3 -3
  181. package/plugins/formulas/engine/settings.js +6 -3
  182. package/plugins/formulas/engine/settings.mjs +6 -3
  183. package/plugins/formulas/formulas.js +151 -143
  184. package/plugins/formulas/formulas.mjs +151 -143
  185. package/plugins/formulas/indexSyncer/axisSyncer.js +115 -79
  186. package/plugins/formulas/indexSyncer/axisSyncer.mjs +115 -79
  187. package/plugins/formulas/indexSyncer/index.js +100 -64
  188. package/plugins/formulas/indexSyncer/index.mjs +100 -64
  189. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  190. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
  191. package/plugins/hiddenColumns/hiddenColumns.js +51 -34
  192. package/plugins/hiddenColumns/hiddenColumns.mjs +51 -34
  193. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  194. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
  195. package/plugins/hiddenRows/hiddenRows.js +50 -33
  196. package/plugins/hiddenRows/hiddenRows.mjs +50 -33
  197. package/plugins/manualRowResize/manualRowResize.js +2 -1
  198. package/plugins/manualRowResize/manualRowResize.mjs +2 -1
  199. package/plugins/mergeCells/mergeCells.js +6 -17
  200. package/plugins/mergeCells/mergeCells.mjs +6 -17
  201. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  202. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  203. package/plugins/nestedHeaders/nestedHeaders.js +209 -75
  204. package/plugins/nestedHeaders/nestedHeaders.mjs +208 -74
  205. package/plugins/nestedHeaders/stateManager/headersTree.js +58 -38
  206. package/plugins/nestedHeaders/stateManager/headersTree.mjs +58 -38
  207. package/plugins/nestedHeaders/stateManager/index.js +107 -49
  208. package/plugins/nestedHeaders/stateManager/index.mjs +105 -47
  209. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +1 -1
  210. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +1 -1
  211. package/plugins/nestedHeaders/stateManager/sourceSettings.js +57 -37
  212. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +57 -37
  213. package/plugins/nestedHeaders/utils/ghostTable.js +39 -35
  214. package/plugins/nestedHeaders/utils/ghostTable.mjs +39 -35
  215. package/plugins/nestedRows/data/dataManager.js +4 -2
  216. package/plugins/nestedRows/data/dataManager.mjs +4 -2
  217. package/plugins/nestedRows/nestedRows.js +41 -0
  218. package/plugins/nestedRows/nestedRows.mjs +41 -0
  219. package/plugins/persistentState/storage.js +1 -0
  220. package/plugins/persistentState/storage.mjs +1 -0
  221. package/plugins/undoRedo/undoRedo.js +2 -1
  222. package/plugins/undoRedo/undoRedo.mjs +2 -1
  223. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  224. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  225. package/selection/highlight/highlight.js +256 -71
  226. package/selection/highlight/highlight.mjs +250 -71
  227. package/selection/highlight/types/activeHeader.js +10 -8
  228. package/selection/highlight/types/activeHeader.mjs +10 -8
  229. package/selection/highlight/types/area.js +6 -18
  230. package/selection/highlight/types/area.mjs +6 -18
  231. package/selection/highlight/types/areaLayered.js +31 -0
  232. package/selection/highlight/types/areaLayered.mjs +26 -0
  233. package/selection/highlight/types/column.js +27 -0
  234. package/selection/highlight/types/column.mjs +22 -0
  235. package/selection/highlight/types/customSelection.js +7 -9
  236. package/selection/highlight/types/customSelection.mjs +7 -9
  237. package/selection/highlight/types/fill.js +5 -7
  238. package/selection/highlight/types/fill.mjs +5 -7
  239. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  240. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  241. package/selection/highlight/types/header.js +9 -18
  242. package/selection/highlight/types/header.mjs +9 -18
  243. package/selection/highlight/types/row.js +27 -0
  244. package/selection/highlight/types/row.mjs +22 -0
  245. package/selection/highlight/visualSelection.js +41 -33
  246. package/selection/highlight/visualSelection.mjs +41 -33
  247. package/selection/index.js +4 -7
  248. package/selection/index.mjs +2 -3
  249. package/selection/mouseEventHandler.js +1 -1
  250. package/selection/mouseEventHandler.mjs +1 -1
  251. package/selection/range.js +8 -8
  252. package/selection/range.mjs +8 -8
  253. package/selection/selection.js +290 -154
  254. package/selection/selection.mjs +287 -153
  255. package/selection/transformation.js +232 -90
  256. package/selection/transformation.mjs +232 -90
  257. package/selection/utils.js +15 -21
  258. package/selection/utils.mjs +16 -21
  259. package/settings.d.ts +2 -0
  260. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  261. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  262. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  263. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  264. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  265. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  266. package/shortcutContexts/commands/editor/index.js +16 -0
  267. package/shortcutContexts/commands/editor/index.mjs +12 -0
  268. package/shortcutContexts/commands/editor/open.js +27 -0
  269. package/shortcutContexts/commands/editor/open.mjs +23 -0
  270. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  271. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  272. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  273. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  274. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  275. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  276. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  277. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  278. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  279. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  280. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  281. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  282. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  283. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  284. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  285. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  286. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  287. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  288. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  289. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  290. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  291. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  292. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  293. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  294. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  295. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  296. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  297. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  298. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  299. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  300. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  301. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  302. package/shortcutContexts/commands/index.js +35 -0
  303. package/shortcutContexts/commands/index.mjs +31 -0
  304. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  305. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  306. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  307. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  308. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  309. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  310. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  311. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  312. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  313. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  314. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  315. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  316. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  317. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  318. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  319. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  320. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  321. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  322. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  323. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  324. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  325. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  326. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  327. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  328. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  329. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  330. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  331. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  332. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  333. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  334. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  335. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  336. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  337. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  338. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  339. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  340. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  341. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  342. package/shortcutContexts/commands/selectAll.js +10 -0
  343. package/shortcutContexts/commands/selectAll.mjs +6 -0
  344. package/shortcutContexts/constants.js +13 -0
  345. package/shortcutContexts/constants.mjs +8 -0
  346. package/shortcutContexts/editor.js +25 -0
  347. package/shortcutContexts/editor.mjs +21 -0
  348. package/shortcutContexts/grid.js +163 -0
  349. package/shortcutContexts/grid.mjs +159 -0
  350. package/shortcutContexts/index.js +24 -0
  351. package/shortcutContexts/index.mjs +11 -0
  352. package/shortcuts/manager.js +2 -0
  353. package/shortcuts/manager.mjs +2 -0
  354. package/shortcuts/recorder.js +2 -2
  355. package/shortcuts/recorder.mjs +2 -2
  356. package/shortcuts/utils.js +19 -5
  357. package/shortcuts/utils.mjs +18 -4
  358. package/tableView.js +163 -91
  359. package/tableView.mjs +163 -91
  360. package/translations/changesObservable/observable.js +82 -54
  361. package/translations/changesObservable/observable.mjs +82 -54
  362. package/translations/changesObservable/observer.js +24 -11
  363. package/translations/changesObservable/observer.mjs +24 -11
  364. package/translations/maps/linkedPhysicalIndexToValueMap.js +14 -8
  365. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +14 -8
  366. package/utils/dataStructures/tree.js +21 -18
  367. package/utils/dataStructures/tree.mjs +21 -18
  368. package/3rdparty/walkontable/src/selection.js +0 -295
  369. package/3rdparty/walkontable/src/selection.mjs +0 -290
  370. package/selection/highlight/constants.js +0 -15
  371. package/selection/highlight/constants.mjs +0 -6
  372. package/selection/highlight/types/index.js +0 -35
  373. package/selection/highlight/types/index.mjs +0 -31
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createHighlight = createHighlight;
5
+ var _src = require("../../../3rdparty/walkontable/src");
6
+ var _visualSelection = _interopRequireDefault(require("../visualSelection"));
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ /**
9
+ * Creates the new instance of Selection, responsible for highlighting cells in a columns and
10
+ * column headers.
11
+ * This type of selection can occur multiple times.
12
+ *
13
+ * @param {object} highlightParams A configuration object to create a highlight.
14
+ * @param {string} highlightParams.columnClassName Highlighted column' class name.
15
+ * @returns {Selection}
16
+ */
17
+ function createHighlight(_ref) {
18
+ let {
19
+ columnClassName,
20
+ ...restOptions
21
+ } = _ref;
22
+ return new _visualSelection.default({
23
+ className: columnClassName,
24
+ ...restOptions,
25
+ selectionType: _src.HIGHLIGHT_COLUMN_TYPE
26
+ });
27
+ }
@@ -0,0 +1,22 @@
1
+ import { HIGHLIGHT_COLUMN_TYPE } from "../../../3rdparty/walkontable/src/index.mjs";
2
+ import VisualSelection from "../visualSelection.mjs";
3
+ /**
4
+ * Creates the new instance of Selection, responsible for highlighting cells in a columns and
5
+ * column headers.
6
+ * This type of selection can occur multiple times.
7
+ *
8
+ * @param {object} highlightParams A configuration object to create a highlight.
9
+ * @param {string} highlightParams.columnClassName Highlighted column' class name.
10
+ * @returns {Selection}
11
+ */
12
+ export function createHighlight(_ref) {
13
+ let {
14
+ columnClassName,
15
+ ...restOptions
16
+ } = _ref;
17
+ return new VisualSelection({
18
+ className: columnClassName,
19
+ ...restOptions,
20
+ selectionType: HIGHLIGHT_COLUMN_TYPE
21
+ });
22
+ }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _constants = require("../constants");
4
+ exports.createHighlight = createHighlight;
5
+ var _src = require("../../../3rdparty/walkontable/src");
5
6
  var _visualSelection = _interopRequireDefault(require("../visualSelection"));
6
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
8
  /**
8
- * Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
9
- * can present on the table only one at the time.
9
+ * Creates the new instance of Selection responsible for highlighting currently selected cell.
10
+ * This type of selection can present on the table only one at the time.
10
11
  *
11
12
  * @param {object} highlightParams A configuration object to create a highlight.
12
13
  * @param {object} highlightParams.border Border configuration.
@@ -19,12 +20,9 @@ function createHighlight(_ref) {
19
20
  visualCellRange,
20
21
  ...restOptions
21
22
  } = _ref;
22
- const s = new _visualSelection.default({
23
+ return new _visualSelection.default({
23
24
  ...border,
24
25
  ...restOptions,
25
- selectionType: _constants.CUSTOM_SELECTION_TYPE
26
+ selectionType: _src.HIGHLIGHT_CUSTOM_SELECTION_TYPE
26
27
  }, visualCellRange);
27
- return s;
28
- }
29
- var _default = createHighlight;
30
- exports.default = _default;
28
+ }
@@ -1,25 +1,23 @@
1
- import { CUSTOM_SELECTION_TYPE } from "../constants.mjs";
1
+ import { HIGHLIGHT_CUSTOM_SELECTION_TYPE } from "../../../3rdparty/walkontable/src/index.mjs";
2
2
  import VisualSelection from "../visualSelection.mjs";
3
3
  /**
4
- * Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
5
- * can present on the table only one at the time.
4
+ * Creates the new instance of Selection responsible for highlighting currently selected cell.
5
+ * This type of selection can present on the table only one at the time.
6
6
  *
7
7
  * @param {object} highlightParams A configuration object to create a highlight.
8
8
  * @param {object} highlightParams.border Border configuration.
9
9
  * @param {object} highlightParams.visualCellRange Function to translate visual to renderable coords.
10
10
  * @returns {Selection}
11
11
  */
12
- function createHighlight(_ref) {
12
+ export function createHighlight(_ref) {
13
13
  let {
14
14
  border,
15
15
  visualCellRange,
16
16
  ...restOptions
17
17
  } = _ref;
18
- const s = new VisualSelection({
18
+ return new VisualSelection({
19
19
  ...border,
20
20
  ...restOptions,
21
- selectionType: CUSTOM_SELECTION_TYPE
21
+ selectionType: HIGHLIGHT_CUSTOM_SELECTION_TYPE
22
22
  }, visualCellRange);
23
- return s;
24
- }
25
- export default createHighlight;
23
+ }
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _constants = require("../constants");
4
+ exports.createHighlight = createHighlight;
5
+ var _src = require("../../../3rdparty/walkontable/src");
5
6
  var _visualSelection = _interopRequireDefault(require("../visualSelection"));
6
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
8
  /**
@@ -15,16 +16,13 @@ function createHighlight(_ref) {
15
16
  let {
16
17
  ...restOptions
17
18
  } = _ref;
18
- const s = new _visualSelection.default({
19
+ return new _visualSelection.default({
19
20
  className: 'fill',
20
21
  border: {
21
22
  width: 1,
22
23
  color: '#ff0000'
23
24
  },
24
25
  ...restOptions,
25
- selectionType: _constants.FILL_TYPE
26
+ selectionType: _src.HIGHLIGHT_FILL_TYPE
26
27
  });
27
- return s;
28
- }
29
- var _default = createHighlight;
30
- exports.default = _default;
28
+ }
@@ -1,4 +1,4 @@
1
- import { FILL_TYPE } from "../constants.mjs";
1
+ import { HIGHLIGHT_FILL_TYPE } from "../../../3rdparty/walkontable/src/index.mjs";
2
2
  import VisualSelection from "../visualSelection.mjs";
3
3
  /**
4
4
  * Creates the new instance of Selection, responsible for highlighting cells which are covered by fill handle
@@ -7,19 +7,17 @@ import VisualSelection from "../visualSelection.mjs";
7
7
  * @param {object} highlightParams A configuration object to create a highlight.
8
8
  * @returns {Selection}
9
9
  */
10
- function createHighlight(_ref) {
10
+ export function createHighlight(_ref) {
11
11
  let {
12
12
  ...restOptions
13
13
  } = _ref;
14
- const s = new VisualSelection({
14
+ return new VisualSelection({
15
15
  className: 'fill',
16
16
  border: {
17
17
  width: 1,
18
18
  color: '#ff0000'
19
19
  },
20
20
  ...restOptions,
21
- selectionType: FILL_TYPE
21
+ selectionType: HIGHLIGHT_FILL_TYPE
22
22
  });
23
- return s;
24
- }
25
- export default createHighlight;
23
+ }
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _constants = require("../constants");
4
+ exports.createHighlight = createHighlight;
5
+ var _src = require("../../../3rdparty/walkontable/src");
5
6
  var _visualSelection = _interopRequireDefault(require("../visualSelection"));
6
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
8
  /**
@@ -17,7 +18,7 @@ function createHighlight(_ref) {
17
18
  cellCornerVisible,
18
19
  ...restOptions
19
20
  } = _ref;
20
- const s = new _visualSelection.default({
21
+ return new _visualSelection.default({
21
22
  className: 'current',
22
23
  border: {
23
24
  width: 2,
@@ -25,9 +26,6 @@ function createHighlight(_ref) {
25
26
  cornerVisible: cellCornerVisible
26
27
  },
27
28
  ...restOptions,
28
- selectionType: _constants.CELL_TYPE
29
+ selectionType: _src.HIGHLIGHT_FOCUS_TYPE
29
30
  });
30
- return s;
31
- }
32
- var _default = createHighlight;
33
- exports.default = _default;
31
+ }
@@ -1,4 +1,4 @@
1
- import { CELL_TYPE } from "../constants.mjs";
1
+ import { HIGHLIGHT_FOCUS_TYPE } from "../../../3rdparty/walkontable/src/index.mjs";
2
2
  import VisualSelection from "../visualSelection.mjs";
3
3
  /**
4
4
  * Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
@@ -8,12 +8,12 @@ import VisualSelection from "../visualSelection.mjs";
8
8
  * @param {Function} highlightParams.cellCornerVisible Function to determine if cell's corner should be visible.
9
9
  * @returns {Selection}
10
10
  */
11
- function createHighlight(_ref) {
11
+ export function createHighlight(_ref) {
12
12
  let {
13
13
  cellCornerVisible,
14
14
  ...restOptions
15
15
  } = _ref;
16
- const s = new VisualSelection({
16
+ return new VisualSelection({
17
17
  className: 'current',
18
18
  border: {
19
19
  width: 2,
@@ -21,8 +21,6 @@ function createHighlight(_ref) {
21
21
  cornerVisible: cellCornerVisible
22
22
  },
23
23
  ...restOptions,
24
- selectionType: CELL_TYPE
24
+ selectionType: HIGHLIGHT_FOCUS_TYPE
25
25
  });
26
- return s;
27
- }
28
- export default createHighlight;
26
+ }
@@ -1,36 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- var _constants = require("../constants");
4
+ exports.createHighlight = createHighlight;
5
+ var _src = require("../../../3rdparty/walkontable/src");
5
6
  var _visualSelection = _interopRequireDefault(require("../visualSelection"));
6
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
8
  /**
8
- * Creates the new instance of Selection, responsible for highlighting row and column headers. This type of selection
9
- * can occur multiple times.
9
+ * Creates the new instance of Selection, responsible for highlighting column or row headers when
10
+ * any cell is selected.
11
+ * This type of selection can occur multiple times.
10
12
  *
11
13
  * @param {object} highlightParams A configuration object to create a highlight.
12
14
  * @param {string} highlightParams.headerClassName Highlighted headers' class name.
13
- * @param {string} highlightParams.rowClassName Highlighted row' class name.
14
- * @param {string} highlightParams.columnClassName Highlighted column' class name.
15
15
  * @returns {Selection}
16
16
  */
17
17
  function createHighlight(_ref) {
18
18
  let {
19
19
  headerClassName,
20
- rowClassName,
21
- columnClassName,
22
20
  ...restOptions
23
21
  } = _ref;
24
- const s = new _visualSelection.default({
25
- className: 'highlight',
26
- highlightHeaderClassName: headerClassName,
27
- highlightRowClassName: rowClassName,
28
- highlightColumnClassName: columnClassName,
22
+ return new _visualSelection.default({
23
+ className: headerClassName,
29
24
  ...restOptions,
30
- highlightOnlyClosestHeader: true,
31
- selectionType: _constants.HEADER_TYPE
25
+ selectionType: _src.HIGHLIGHT_HEADER_TYPE
32
26
  });
33
- return s;
34
- }
35
- var _default = createHighlight;
36
- exports.default = _default;
27
+ }
@@ -1,31 +1,22 @@
1
- import { HEADER_TYPE } from "../constants.mjs";
1
+ import { HIGHLIGHT_HEADER_TYPE } from "../../../3rdparty/walkontable/src/index.mjs";
2
2
  import VisualSelection from "../visualSelection.mjs";
3
3
  /**
4
- * Creates the new instance of Selection, responsible for highlighting row and column headers. This type of selection
5
- * can occur multiple times.
4
+ * Creates the new instance of Selection, responsible for highlighting column or row headers when
5
+ * any cell is selected.
6
+ * This type of selection can occur multiple times.
6
7
  *
7
8
  * @param {object} highlightParams A configuration object to create a highlight.
8
9
  * @param {string} highlightParams.headerClassName Highlighted headers' class name.
9
- * @param {string} highlightParams.rowClassName Highlighted row' class name.
10
- * @param {string} highlightParams.columnClassName Highlighted column' class name.
11
10
  * @returns {Selection}
12
11
  */
13
- function createHighlight(_ref) {
12
+ export function createHighlight(_ref) {
14
13
  let {
15
14
  headerClassName,
16
- rowClassName,
17
- columnClassName,
18
15
  ...restOptions
19
16
  } = _ref;
20
- const s = new VisualSelection({
21
- className: 'highlight',
22
- highlightHeaderClassName: headerClassName,
23
- highlightRowClassName: rowClassName,
24
- highlightColumnClassName: columnClassName,
17
+ return new VisualSelection({
18
+ className: headerClassName,
25
19
  ...restOptions,
26
- highlightOnlyClosestHeader: true,
27
- selectionType: HEADER_TYPE
20
+ selectionType: HIGHLIGHT_HEADER_TYPE
28
21
  });
29
- return s;
30
- }
31
- export default createHighlight;
22
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.createHighlight = createHighlight;
5
+ var _src = require("../../../3rdparty/walkontable/src");
6
+ var _visualSelection = _interopRequireDefault(require("../visualSelection"));
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ /**
9
+ * Creates the new instance of Selection, responsible for highlighting cells in a rows and
10
+ * row headers.
11
+ * This type of selection can occur multiple times.
12
+ *
13
+ * @param {object} highlightParams A configuration object to create a highlight.
14
+ * @param {string} highlightParams.rowClassName Highlighted row' class name.
15
+ * @returns {Selection}
16
+ */
17
+ function createHighlight(_ref) {
18
+ let {
19
+ rowClassName,
20
+ ...restOptions
21
+ } = _ref;
22
+ return new _visualSelection.default({
23
+ className: rowClassName,
24
+ ...restOptions,
25
+ selectionType: _src.HIGHLIGHT_ROW_TYPE
26
+ });
27
+ }
@@ -0,0 +1,22 @@
1
+ import { HIGHLIGHT_ROW_TYPE } from "../../../3rdparty/walkontable/src/index.mjs";
2
+ import VisualSelection from "../visualSelection.mjs";
3
+ /**
4
+ * Creates the new instance of Selection, responsible for highlighting cells in a rows and
5
+ * row headers.
6
+ * This type of selection can occur multiple times.
7
+ *
8
+ * @param {object} highlightParams A configuration object to create a highlight.
9
+ * @param {string} highlightParams.rowClassName Highlighted row' class name.
10
+ * @returns {Selection}
11
+ */
12
+ export function createHighlight(_ref) {
13
+ let {
14
+ rowClassName,
15
+ ...restOptions
16
+ } = _ref;
17
+ return new VisualSelection({
18
+ className: rowClassName,
19
+ ...restOptions,
20
+ selectionType: HIGHLIGHT_ROW_TYPE
21
+ });
22
+ }
@@ -1,16 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
4
5
  var _src = require("./../../3rdparty/walkontable/src");
6
+ 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; }
7
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
8
+ 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); }
5
9
  class VisualSelection extends _src.Selection {
6
- /**
7
- * Range of selection visually. Visual representation may have representation in a rendered selection.
8
- *
9
- * @type {null|CellRange}
10
- */
11
- visualCellRange = null;
12
10
  constructor(settings, visualCellRange) {
13
11
  super(settings, null);
12
+ /**
13
+ * Range of selection visually. Visual representation may have representation in a rendered selection.
14
+ *
15
+ * @type {null|CellRange}
16
+ */
17
+ _defineProperty(this, "visualCellRange", null);
14
18
  this.visualCellRange = visualCellRange || null;
15
19
  this.commit();
16
20
  }
@@ -58,10 +62,6 @@ class VisualSelection extends _src.Selection {
58
62
  return null;
59
63
  }
60
64
  if (visibleFromCoords.row > visibleToCoords.row || visibleFromCoords.col > visibleToCoords.col) {
61
- const isHeaderTypeSelection = this.settings.type === 'header' || this.settings.type === 'active-header';
62
- if (!isHeaderTypeSelection) {
63
- return null;
64
- }
65
65
  visibleFromCoords = from;
66
66
  visibleToCoords = to;
67
67
  }
@@ -81,13 +81,13 @@ class VisualSelection extends _src.Selection {
81
81
  */
82
82
  getNearestNotHiddenCoords(coords, rowSearchDirection) {
83
83
  let columnSearchDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rowSearchDirection;
84
- const nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper(), coords.row, rowSearchDirection);
84
+ const nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper, coords.row, rowSearchDirection);
85
85
 
86
86
  // There are no more visual rows in the range.
87
87
  if (nextVisibleRow === null) {
88
88
  return null;
89
89
  }
90
- const nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper(), coords.col, columnSearchDirection);
90
+ const nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper, coords.col, columnSearchDirection);
91
91
 
92
92
  // There are no more visual columns in the range.
93
93
  if (nextVisibleColumn === null) {
@@ -110,12 +110,7 @@ class VisualSelection extends _src.Selection {
110
110
  if (visualIndex < 0) {
111
111
  return visualIndex;
112
112
  }
113
- const nearestVisualIndex = indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
114
- const isHeaderSelectionType = this.settings.type === 'header' || this.settings.type === 'active-header';
115
- if (isHeaderSelectionType && nearestVisualIndex === null) {
116
- return -1;
117
- }
118
- return nearestVisualIndex;
113
+ return indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
119
114
  }
120
115
 
121
116
  /**
@@ -152,24 +147,38 @@ class VisualSelection extends _src.Selection {
152
147
  * @returns {VisualSelection}
153
148
  */
154
149
  syncWith(broaderCellRange) {
150
+ const coordsFrom = broaderCellRange.from.clone().normalize();
155
151
  const rowDirection = broaderCellRange.getVerticalDirection() === 'N-S' ? 1 : -1;
156
152
  const columnDirection = broaderCellRange.getHorizontalDirection() === 'W-E' ? 1 : -1;
157
- const singleCellRangeVisual = this.getNearestNotHiddenCoords(broaderCellRange.from.clone().normalize(), rowDirection, columnDirection);
158
- if (singleCellRangeVisual !== null && broaderCellRange.overlaps(singleCellRangeVisual)) {
159
- // We can't show selection visually now, but we found fist visible range in the broader cell range.
153
+ const renderableHighlight = this.settings.visualToRenderableCoords(this.visualCellRange.highlight);
154
+ let cellCoordsVisual = null;
155
+ if (renderableHighlight === null || renderableHighlight.col === null || renderableHighlight.row === null) {
156
+ cellCoordsVisual = this.getNearestNotHiddenCoords(coordsFrom, rowDirection, columnDirection);
157
+ }
158
+ if (cellCoordsVisual !== null && broaderCellRange.overlaps(cellCoordsVisual)) {
159
+ const currentHighlight = broaderCellRange.highlight.clone();
160
+ if (currentHighlight.row >= 0) {
161
+ currentHighlight.row = cellCoordsVisual.row;
162
+ }
163
+ if (currentHighlight.col >= 0) {
164
+ currentHighlight.col = cellCoordsVisual.col;
165
+ }
166
+
167
+ // We can't show selection visually now, but we found first visible range in the broader cell range.
160
168
  if (this.cellRange === null) {
161
- const singleCellRangeRenderable = this.settings.visualToRenderableCoords(singleCellRangeVisual);
162
- this.cellRange = this.settings.createCellRange(singleCellRangeRenderable);
169
+ const cellCoordsRenderable = this.settings.visualToRenderableCoords(currentHighlight);
170
+ this.cellRange = this.settings.createCellRange(cellCoordsRenderable);
163
171
  }
164
172
 
165
173
  // We set new highlight as it might change (for example, when showing/hiding some cells from the broader selection range)
166
174
  // TODO: It is also handled by the `MergeCells` plugin while adjusting already modified coordinates. Should it?
167
- broaderCellRange.setHighlight(singleCellRangeVisual);
168
- return this;
175
+ broaderCellRange.setHighlight(currentHighlight);
169
176
  }
170
177
 
171
- // Fallback to the start of the range. It resets the previous highlight (for example, when all columns have been hidden).
172
- broaderCellRange.setHighlight(broaderCellRange.from);
178
+ // Sync the highlight coords from the visual selection layer with logical coords.
179
+ if (this.settings.selectionType === 'focus' && renderableHighlight !== null && cellCoordsVisual === null) {
180
+ broaderCellRange.setHighlight(this.visualCellRange.highlight);
181
+ }
173
182
  return this;
174
183
  }
175
184
 
@@ -186,11 +195,7 @@ class VisualSelection extends _src.Selection {
186
195
  from,
187
196
  to
188
197
  } = this.cellRange;
189
- const isRowUndefined = from.row === null || to.row === null;
190
- const isColumnUndefined = from.col === null || to.col === null;
191
- const topLeftCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.min(from.row, to.row), isColumnUndefined ? null : Math.min(from.col, to.col));
192
- const bottomRightCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.max(from.row, to.row), isColumnUndefined ? null : Math.max(from.col, to.col));
193
- return [topLeftCorner.row, topLeftCorner.col, bottomRightCorner.row, bottomRightCorner.col];
198
+ return [Math.min(from.row, to.row), Math.min(from.col, to.col), Math.max(from.row, to.row), Math.max(from.col, to.col)];
194
199
  }
195
200
 
196
201
  /**
@@ -213,11 +218,14 @@ class VisualSelection extends _src.Selection {
213
218
  * points to the beginning of the selection.
214
219
  * @param {CellCoords} visualToCoords The CellCoords object which contains coordinates that
215
220
  * points to the end of the selection.
216
- * @returns {CellRange}
221
+ * @returns {CellRange|null}
217
222
  */
218
223
  createRenderableCellRange(visualFromCoords, visualToCoords) {
219
224
  const renderableFromCoords = this.settings.visualToRenderableCoords(visualFromCoords);
220
225
  const renderableToCoords = this.settings.visualToRenderableCoords(visualToCoords);
226
+ if (renderableFromCoords.row === null || renderableFromCoords.col === null || renderableToCoords.row === null || renderableToCoords.col === null) {
227
+ return null;
228
+ }
221
229
  return this.settings.createCellRange(renderableFromCoords, renderableFromCoords, renderableToCoords);
222
230
  }
223
231
  }