handsontable 0.0.0-next-baf2fcf-20230809 → 0.0.0-next-be16baf-20230809

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 (299) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  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 +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  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 +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +26 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +6 -78
  50. package/3rdparty/walkontable/src/table.mjs +7 -79
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/common.d.ts +1 -1
  54. package/core/focusCatcher/focusDetector.js +58 -0
  55. package/core/focusCatcher/focusDetector.mjs +54 -0
  56. package/core/focusCatcher/index.js +142 -0
  57. package/core/focusCatcher/index.mjs +138 -0
  58. package/core/index.js +9 -0
  59. package/core/index.mjs +1 -0
  60. package/core.d.ts +6 -3
  61. package/core.js +176 -293
  62. package/core.mjs +176 -293
  63. package/dataMap/metaManager/metaSchema.js +41 -0
  64. package/dataMap/metaManager/metaSchema.mjs +41 -0
  65. package/dist/handsontable.css +24 -4
  66. package/dist/handsontable.full.css +24 -4
  67. package/dist/handsontable.full.js +8682 -5384
  68. package/dist/handsontable.full.min.css +3 -3
  69. package/dist/handsontable.full.min.js +25 -25
  70. package/dist/handsontable.js +10989 -7691
  71. package/dist/handsontable.min.css +3 -3
  72. package/dist/handsontable.min.js +19 -19
  73. package/editorManager.js +11 -75
  74. package/editorManager.mjs +11 -74
  75. package/editors/baseEditor/baseEditor.d.ts +0 -1
  76. package/editors/textEditor/textEditor.js +3 -11
  77. package/editors/textEditor/textEditor.mjs +4 -12
  78. package/helpers/mixed.js +1 -1
  79. package/helpers/mixed.mjs +1 -1
  80. package/helpers/number.d.ts +1 -0
  81. package/helpers/number.js +18 -0
  82. package/helpers/number.mjs +17 -0
  83. package/package.json +1 -1
  84. package/pluginHooks.d.ts +7 -1
  85. package/pluginHooks.js +106 -1
  86. package/pluginHooks.mjs +106 -1
  87. package/plugins/collapsibleColumns/collapsibleColumns.js +58 -4
  88. package/plugins/collapsibleColumns/collapsibleColumns.mjs +58 -4
  89. package/plugins/columnSorting/columnSorting.js +38 -0
  90. package/plugins/columnSorting/columnSorting.mjs +38 -2
  91. package/plugins/columnSorting/index.js +3 -1
  92. package/plugins/columnSorting/index.mjs +1 -1
  93. package/plugins/comments/commentEditor.js +1 -0
  94. package/plugins/comments/commentEditor.mjs +1 -0
  95. package/plugins/comments/comments.js +251 -189
  96. package/plugins/comments/comments.mjs +250 -190
  97. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  98. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  99. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  100. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  101. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  102. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  103. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  104. package/plugins/contextMenu/contextMenu.js +72 -30
  105. package/plugins/contextMenu/contextMenu.mjs +73 -31
  106. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  107. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  108. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  109. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  110. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  111. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  112. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  113. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  114. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  115. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  116. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  117. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  118. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  119. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  120. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  121. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  122. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  123. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  124. package/plugins/contextMenu/utils.js +28 -16
  125. package/plugins/contextMenu/utils.mjs +27 -15
  126. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  127. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  128. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  129. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  130. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  131. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  132. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  133. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  134. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  135. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  136. package/plugins/copyPaste/copyPaste.js +14 -10
  137. package/plugins/copyPaste/copyPaste.mjs +14 -10
  138. package/plugins/customBorders/customBorders.js +23 -20
  139. package/plugins/customBorders/customBorders.mjs +24 -21
  140. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  141. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  142. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  143. package/plugins/filters/filters.js +31 -14
  144. package/plugins/filters/filters.mjs +30 -13
  145. package/plugins/manualColumnResize/manualColumnResize.js +0 -6
  146. package/plugins/manualColumnResize/manualColumnResize.mjs +1 -7
  147. package/plugins/mergeCells/mergeCells.js +5 -17
  148. package/plugins/mergeCells/mergeCells.mjs +5 -17
  149. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  150. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  151. package/plugins/nestedHeaders/nestedHeaders.js +121 -8
  152. package/plugins/nestedHeaders/nestedHeaders.mjs +121 -8
  153. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  154. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  155. package/plugins/nestedRows/nestedRows.js +41 -0
  156. package/plugins/nestedRows/nestedRows.mjs +41 -0
  157. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  158. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  159. package/selection/highlight/highlight.js +256 -71
  160. package/selection/highlight/highlight.mjs +250 -71
  161. package/selection/highlight/types/activeHeader.js +10 -8
  162. package/selection/highlight/types/activeHeader.mjs +10 -8
  163. package/selection/highlight/types/area.js +6 -18
  164. package/selection/highlight/types/area.mjs +6 -18
  165. package/selection/highlight/types/areaLayered.js +31 -0
  166. package/selection/highlight/types/areaLayered.mjs +26 -0
  167. package/selection/highlight/types/column.js +27 -0
  168. package/selection/highlight/types/column.mjs +22 -0
  169. package/selection/highlight/types/customSelection.js +7 -9
  170. package/selection/highlight/types/customSelection.mjs +7 -9
  171. package/selection/highlight/types/fill.js +5 -7
  172. package/selection/highlight/types/fill.mjs +5 -7
  173. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  174. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  175. package/selection/highlight/types/header.js +9 -18
  176. package/selection/highlight/types/header.mjs +9 -18
  177. package/selection/highlight/types/row.js +27 -0
  178. package/selection/highlight/types/row.mjs +22 -0
  179. package/selection/highlight/visualSelection.js +31 -27
  180. package/selection/highlight/visualSelection.mjs +31 -27
  181. package/selection/index.js +4 -7
  182. package/selection/index.mjs +2 -3
  183. package/selection/mouseEventHandler.js +1 -1
  184. package/selection/mouseEventHandler.mjs +1 -1
  185. package/selection/range.js +8 -8
  186. package/selection/range.mjs +8 -8
  187. package/selection/selection.js +293 -154
  188. package/selection/selection.mjs +290 -153
  189. package/selection/transformation.js +232 -90
  190. package/selection/transformation.mjs +232 -90
  191. package/selection/utils.js +15 -21
  192. package/selection/utils.mjs +16 -21
  193. package/settings.d.ts +2 -0
  194. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  195. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  196. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  197. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  198. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  199. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  200. package/shortcutContexts/commands/editor/index.js +16 -0
  201. package/shortcutContexts/commands/editor/index.mjs +12 -0
  202. package/shortcutContexts/commands/editor/open.js +27 -0
  203. package/shortcutContexts/commands/editor/open.mjs +23 -0
  204. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  205. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  206. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  207. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  208. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  209. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  210. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  211. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  212. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  213. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  214. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  215. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  216. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  217. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  218. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  219. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  220. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  221. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  222. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  223. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  224. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  225. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  226. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  227. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  228. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  229. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  230. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  231. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  232. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  233. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  234. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  235. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  236. package/shortcutContexts/commands/index.js +35 -0
  237. package/shortcutContexts/commands/index.mjs +31 -0
  238. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  239. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  240. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  241. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  242. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  243. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  244. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  245. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  246. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  247. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  248. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  249. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  250. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  251. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  252. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  253. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  254. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  255. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  256. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  257. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  258. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  259. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  260. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  261. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  262. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  263. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  264. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  265. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  266. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  267. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  268. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  269. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  270. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  271. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  272. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  273. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  274. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  275. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  276. package/shortcutContexts/commands/selectAll.js +10 -0
  277. package/shortcutContexts/commands/selectAll.mjs +6 -0
  278. package/shortcutContexts/constants.js +13 -0
  279. package/shortcutContexts/constants.mjs +8 -0
  280. package/shortcutContexts/editor.js +25 -0
  281. package/shortcutContexts/editor.mjs +21 -0
  282. package/shortcutContexts/grid.js +163 -0
  283. package/shortcutContexts/grid.mjs +159 -0
  284. package/shortcutContexts/index.js +24 -0
  285. package/shortcutContexts/index.mjs +11 -0
  286. package/shortcuts/manager.js +2 -0
  287. package/shortcuts/manager.mjs +2 -0
  288. package/shortcuts/recorder.js +2 -2
  289. package/shortcuts/recorder.mjs +2 -2
  290. package/shortcuts/utils.js +19 -5
  291. package/shortcuts/utils.mjs +18 -4
  292. package/tableView.js +67 -13
  293. package/tableView.mjs +67 -13
  294. package/3rdparty/walkontable/src/selection.js +0 -295
  295. package/3rdparty/walkontable/src/selection.mjs +0 -290
  296. package/selection/highlight/constants.js +0 -15
  297. package/selection/highlight/constants.mjs +0 -6
  298. package/selection/highlight/types/index.js +0 -35
  299. 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
+ }
@@ -62,10 +62,6 @@ class VisualSelection extends _src.Selection {
62
62
  return null;
63
63
  }
64
64
  if (visibleFromCoords.row > visibleToCoords.row || visibleFromCoords.col > visibleToCoords.col) {
65
- const isHeaderTypeSelection = this.settings.type === 'header' || this.settings.type === 'active-header';
66
- if (!isHeaderTypeSelection) {
67
- return null;
68
- }
69
65
  visibleFromCoords = from;
70
66
  visibleToCoords = to;
71
67
  }
@@ -85,13 +81,13 @@ class VisualSelection extends _src.Selection {
85
81
  */
86
82
  getNearestNotHiddenCoords(coords, rowSearchDirection) {
87
83
  let columnSearchDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rowSearchDirection;
88
- const nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper(), coords.row, rowSearchDirection);
84
+ const nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper, coords.row, rowSearchDirection);
89
85
 
90
86
  // There are no more visual rows in the range.
91
87
  if (nextVisibleRow === null) {
92
88
  return null;
93
89
  }
94
- const nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper(), coords.col, columnSearchDirection);
90
+ const nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper, coords.col, columnSearchDirection);
95
91
 
96
92
  // There are no more visual columns in the range.
97
93
  if (nextVisibleColumn === null) {
@@ -114,12 +110,7 @@ class VisualSelection extends _src.Selection {
114
110
  if (visualIndex < 0) {
115
111
  return visualIndex;
116
112
  }
117
- const nearestVisualIndex = indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
118
- const isHeaderSelectionType = this.settings.type === 'header' || this.settings.type === 'active-header';
119
- if (isHeaderSelectionType && nearestVisualIndex === null) {
120
- return -1;
121
- }
122
- return nearestVisualIndex;
113
+ return indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
123
114
  }
124
115
 
125
116
  /**
@@ -156,24 +147,38 @@ class VisualSelection extends _src.Selection {
156
147
  * @returns {VisualSelection}
157
148
  */
158
149
  syncWith(broaderCellRange) {
150
+ const coordsFrom = broaderCellRange.from.clone().normalize();
159
151
  const rowDirection = broaderCellRange.getVerticalDirection() === 'N-S' ? 1 : -1;
160
152
  const columnDirection = broaderCellRange.getHorizontalDirection() === 'W-E' ? 1 : -1;
161
- const singleCellRangeVisual = this.getNearestNotHiddenCoords(broaderCellRange.from.clone().normalize(), rowDirection, columnDirection);
162
- if (singleCellRangeVisual !== null && broaderCellRange.overlaps(singleCellRangeVisual)) {
163
- // 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.
164
168
  if (this.cellRange === null) {
165
- const singleCellRangeRenderable = this.settings.visualToRenderableCoords(singleCellRangeVisual);
166
- this.cellRange = this.settings.createCellRange(singleCellRangeRenderable);
169
+ const cellCoordsRenderable = this.settings.visualToRenderableCoords(currentHighlight);
170
+ this.cellRange = this.settings.createCellRange(cellCoordsRenderable);
167
171
  }
168
172
 
169
173
  // We set new highlight as it might change (for example, when showing/hiding some cells from the broader selection range)
170
174
  // TODO: It is also handled by the `MergeCells` plugin while adjusting already modified coordinates. Should it?
171
- broaderCellRange.setHighlight(singleCellRangeVisual);
172
- return this;
175
+ broaderCellRange.setHighlight(currentHighlight);
173
176
  }
174
177
 
175
- // Fallback to the start of the range. It resets the previous highlight (for example, when all columns have been hidden).
176
- 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
+ }
177
182
  return this;
178
183
  }
179
184
 
@@ -190,11 +195,7 @@ class VisualSelection extends _src.Selection {
190
195
  from,
191
196
  to
192
197
  } = this.cellRange;
193
- const isRowUndefined = from.row === null || to.row === null;
194
- const isColumnUndefined = from.col === null || to.col === null;
195
- const topLeftCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.min(from.row, to.row), isColumnUndefined ? null : Math.min(from.col, to.col));
196
- const bottomRightCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.max(from.row, to.row), isColumnUndefined ? null : Math.max(from.col, to.col));
197
- 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)];
198
199
  }
199
200
 
200
201
  /**
@@ -217,11 +218,14 @@ class VisualSelection extends _src.Selection {
217
218
  * points to the beginning of the selection.
218
219
  * @param {CellCoords} visualToCoords The CellCoords object which contains coordinates that
219
220
  * points to the end of the selection.
220
- * @returns {CellRange}
221
+ * @returns {CellRange|null}
221
222
  */
222
223
  createRenderableCellRange(visualFromCoords, visualToCoords) {
223
224
  const renderableFromCoords = this.settings.visualToRenderableCoords(visualFromCoords);
224
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
+ }
225
229
  return this.settings.createCellRange(renderableFromCoords, renderableFromCoords, renderableToCoords);
226
230
  }
227
231
  }
@@ -59,10 +59,6 @@ class VisualSelection extends Selection {
59
59
  return null;
60
60
  }
61
61
  if (visibleFromCoords.row > visibleToCoords.row || visibleFromCoords.col > visibleToCoords.col) {
62
- const isHeaderTypeSelection = this.settings.type === 'header' || this.settings.type === 'active-header';
63
- if (!isHeaderTypeSelection) {
64
- return null;
65
- }
66
62
  visibleFromCoords = from;
67
63
  visibleToCoords = to;
68
64
  }
@@ -82,13 +78,13 @@ class VisualSelection extends Selection {
82
78
  */
83
79
  getNearestNotHiddenCoords(coords, rowSearchDirection) {
84
80
  let columnSearchDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : rowSearchDirection;
85
- const nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper(), coords.row, rowSearchDirection);
81
+ const nextVisibleRow = this.getNearestNotHiddenIndex(this.settings.rowIndexMapper, coords.row, rowSearchDirection);
86
82
 
87
83
  // There are no more visual rows in the range.
88
84
  if (nextVisibleRow === null) {
89
85
  return null;
90
86
  }
91
- const nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper(), coords.col, columnSearchDirection);
87
+ const nextVisibleColumn = this.getNearestNotHiddenIndex(this.settings.columnIndexMapper, coords.col, columnSearchDirection);
92
88
 
93
89
  // There are no more visual columns in the range.
94
90
  if (nextVisibleColumn === null) {
@@ -111,12 +107,7 @@ class VisualSelection extends Selection {
111
107
  if (visualIndex < 0) {
112
108
  return visualIndex;
113
109
  }
114
- const nearestVisualIndex = indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
115
- const isHeaderSelectionType = this.settings.type === 'header' || this.settings.type === 'active-header';
116
- if (isHeaderSelectionType && nearestVisualIndex === null) {
117
- return -1;
118
- }
119
- return nearestVisualIndex;
110
+ return indexMapper.getNearestNotHiddenIndex(visualIndex, searchDirection);
120
111
  }
121
112
 
122
113
  /**
@@ -153,24 +144,38 @@ class VisualSelection extends Selection {
153
144
  * @returns {VisualSelection}
154
145
  */
155
146
  syncWith(broaderCellRange) {
147
+ const coordsFrom = broaderCellRange.from.clone().normalize();
156
148
  const rowDirection = broaderCellRange.getVerticalDirection() === 'N-S' ? 1 : -1;
157
149
  const columnDirection = broaderCellRange.getHorizontalDirection() === 'W-E' ? 1 : -1;
158
- const singleCellRangeVisual = this.getNearestNotHiddenCoords(broaderCellRange.from.clone().normalize(), rowDirection, columnDirection);
159
- if (singleCellRangeVisual !== null && broaderCellRange.overlaps(singleCellRangeVisual)) {
160
- // We can't show selection visually now, but we found fist visible range in the broader cell range.
150
+ const renderableHighlight = this.settings.visualToRenderableCoords(this.visualCellRange.highlight);
151
+ let cellCoordsVisual = null;
152
+ if (renderableHighlight === null || renderableHighlight.col === null || renderableHighlight.row === null) {
153
+ cellCoordsVisual = this.getNearestNotHiddenCoords(coordsFrom, rowDirection, columnDirection);
154
+ }
155
+ if (cellCoordsVisual !== null && broaderCellRange.overlaps(cellCoordsVisual)) {
156
+ const currentHighlight = broaderCellRange.highlight.clone();
157
+ if (currentHighlight.row >= 0) {
158
+ currentHighlight.row = cellCoordsVisual.row;
159
+ }
160
+ if (currentHighlight.col >= 0) {
161
+ currentHighlight.col = cellCoordsVisual.col;
162
+ }
163
+
164
+ // We can't show selection visually now, but we found first visible range in the broader cell range.
161
165
  if (this.cellRange === null) {
162
- const singleCellRangeRenderable = this.settings.visualToRenderableCoords(singleCellRangeVisual);
163
- this.cellRange = this.settings.createCellRange(singleCellRangeRenderable);
166
+ const cellCoordsRenderable = this.settings.visualToRenderableCoords(currentHighlight);
167
+ this.cellRange = this.settings.createCellRange(cellCoordsRenderable);
164
168
  }
165
169
 
166
170
  // We set new highlight as it might change (for example, when showing/hiding some cells from the broader selection range)
167
171
  // TODO: It is also handled by the `MergeCells` plugin while adjusting already modified coordinates. Should it?
168
- broaderCellRange.setHighlight(singleCellRangeVisual);
169
- return this;
172
+ broaderCellRange.setHighlight(currentHighlight);
170
173
  }
171
174
 
172
- // Fallback to the start of the range. It resets the previous highlight (for example, when all columns have been hidden).
173
- broaderCellRange.setHighlight(broaderCellRange.from);
175
+ // Sync the highlight coords from the visual selection layer with logical coords.
176
+ if (this.settings.selectionType === 'focus' && renderableHighlight !== null && cellCoordsVisual === null) {
177
+ broaderCellRange.setHighlight(this.visualCellRange.highlight);
178
+ }
174
179
  return this;
175
180
  }
176
181
 
@@ -187,11 +192,7 @@ class VisualSelection extends Selection {
187
192
  from,
188
193
  to
189
194
  } = this.cellRange;
190
- const isRowUndefined = from.row === null || to.row === null;
191
- const isColumnUndefined = from.col === null || to.col === null;
192
- const topLeftCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.min(from.row, to.row), isColumnUndefined ? null : Math.min(from.col, to.col));
193
- const bottomRightCorner = this.settings.createCellCoords(isRowUndefined ? null : Math.max(from.row, to.row), isColumnUndefined ? null : Math.max(from.col, to.col));
194
- return [topLeftCorner.row, topLeftCorner.col, bottomRightCorner.row, bottomRightCorner.col];
195
+ 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)];
195
196
  }
196
197
 
197
198
  /**
@@ -214,11 +215,14 @@ class VisualSelection extends Selection {
214
215
  * points to the beginning of the selection.
215
216
  * @param {CellCoords} visualToCoords The CellCoords object which contains coordinates that
216
217
  * points to the end of the selection.
217
- * @returns {CellRange}
218
+ * @returns {CellRange|null}
218
219
  */
219
220
  createRenderableCellRange(visualFromCoords, visualToCoords) {
220
221
  const renderableFromCoords = this.settings.visualToRenderableCoords(visualFromCoords);
221
222
  const renderableToCoords = this.settings.visualToRenderableCoords(visualToCoords);
223
+ if (renderableFromCoords.row === null || renderableFromCoords.col === null || renderableToCoords.row === null || renderableToCoords.col === null) {
224
+ return null;
225
+ }
222
226
  return this.settings.createCellRange(renderableFromCoords, renderableFromCoords, renderableToCoords);
223
227
  }
224
228
  }
@@ -2,14 +2,11 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  var _exportNames = {
5
- Highlight: true,
6
5
  Selection: true,
7
6
  handleMouseEvent: true,
8
7
  detectSelectionType: true,
9
8
  normalizeSelectionFactory: true
10
9
  };
11
- var _highlight = _interopRequireDefault(require("./highlight/highlight"));
12
- exports.Highlight = _highlight.default;
13
10
  var _selection = _interopRequireDefault(require("./selection"));
14
11
  exports.Selection = _selection.default;
15
12
  var _mouseEventHandler = require("./mouseEventHandler");
@@ -17,11 +14,11 @@ exports.handleMouseEvent = _mouseEventHandler.handleMouseEvent;
17
14
  var _utils = require("./utils");
18
15
  exports.detectSelectionType = _utils.detectSelectionType;
19
16
  exports.normalizeSelectionFactory = _utils.normalizeSelectionFactory;
20
- var _constants = require("./highlight/constants");
21
- Object.keys(_constants).forEach(function (key) {
17
+ var _highlight = require("./highlight/highlight");
18
+ Object.keys(_highlight).forEach(function (key) {
22
19
  if (key === "default" || key === "__esModule") return;
23
20
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
24
- if (key in exports && exports[key] === _constants[key]) return;
25
- exports[key] = _constants[key];
21
+ if (key in exports && exports[key] === _highlight[key]) return;
22
+ exports[key] = _highlight[key];
26
23
  });
27
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }