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
@@ -1,290 +0,0 @@
1
- import "core-js/modules/es.array.push.js";
2
- import { addClass, hasClass } from "./../../../helpers/dom/element.mjs";
3
- import Border from "./border.mjs";
4
- /**
5
- * @class Selection
6
- */
7
- class Selection {
8
- /**
9
- * @param {object} settings The selection settings object. @todo type.
10
- * @param {CellRange} cellRange The cell range instance.
11
- */
12
- constructor(settings, cellRange) {
13
- this.settings = settings;
14
- this.cellRange = cellRange || null;
15
- this.instanceBorders = {};
16
- this.classNames = [this.settings.className];
17
- this.classNameGenerator = this.linearClassNameGenerator(this.settings.className, this.settings.layerLevel);
18
- }
19
-
20
- /**
21
- * Each Walkontable clone requires it's own border for every selection. This method creates and returns selection
22
- * borders per instance.
23
- *
24
- * @param {WalkontableFacade} wotInstance The Walkontable instance.
25
- * @returns {Border}
26
- */
27
- getBorder(wotInstance) {
28
- if (!this.instanceBorders[wotInstance.guid]) {
29
- this.instanceBorders[wotInstance.guid] = new Border(wotInstance, this.settings);
30
- }
31
- return this.instanceBorders[wotInstance.guid];
32
- }
33
-
34
- /**
35
- * Checks if selection is empty.
36
- *
37
- * @returns {boolean}
38
- */
39
- isEmpty() {
40
- return this.cellRange === null;
41
- }
42
-
43
- /**
44
- * Adds a cell coords to the selection.
45
- *
46
- * @param {CellCoords} coords The cell coordinates to add.
47
- * @returns {Selection}
48
- */
49
- add(coords) {
50
- if (this.isEmpty()) {
51
- this.cellRange = this.settings.createCellRange(coords);
52
- } else {
53
- this.cellRange.expand(coords);
54
- }
55
- return this;
56
- }
57
-
58
- /**
59
- * If selection range from or to property equals oldCoords, replace it with newCoords. Return boolean
60
- * information about success.
61
- *
62
- * @param {CellCoords} oldCoords An old cell coordinates to replace.
63
- * @param {CellCoords} newCoords The new cell coordinates.
64
- * @returns {boolean}
65
- */
66
- replace(oldCoords, newCoords) {
67
- if (!this.isEmpty()) {
68
- if (this.cellRange.from.isEqual(oldCoords)) {
69
- this.cellRange.from = newCoords;
70
- return true;
71
- }
72
- if (this.cellRange.to.isEqual(oldCoords)) {
73
- this.cellRange.to = newCoords;
74
- return true;
75
- }
76
- }
77
- return false;
78
- }
79
-
80
- /**
81
- * Clears selection.
82
- *
83
- * @returns {Selection}
84
- */
85
- clear() {
86
- this.cellRange = null;
87
- return this;
88
- }
89
-
90
- /**
91
- * Returns the top left (or top right in RTL) and bottom right (or bottom left in RTL) selection coordinates.
92
- *
93
- * @returns {Array} Returns array of coordinates for example `[1, 1, 5, 5]`.
94
- */
95
- getCorners() {
96
- const topStart = this.cellRange.getOuterTopStartCorner();
97
- const bottomEnd = this.cellRange.getOuterBottomEndCorner();
98
- return [topStart.row, topStart.col, bottomEnd.row, bottomEnd.col];
99
- }
100
-
101
- /**
102
- * Adds class name to cell element at given coords.
103
- *
104
- * @param {WalkontableFacade} wotInstance Walkontable instance.
105
- * @param {number} sourceRow Cell row coord.
106
- * @param {number} sourceColumn Cell column coord.
107
- * @param {string} className Class name.
108
- * @param {boolean} [markIntersections=false] If `true`, linear className generator will be used to add CSS classes
109
- * in a continuous way.
110
- * @returns {Selection}
111
- */
112
- addClassAtCoords(wotInstance, sourceRow, sourceColumn, className) {
113
- let markIntersections = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
114
- const TD = wotInstance.wtTable.getCell(this.settings.createCellCoords(sourceRow, sourceColumn));
115
- if (typeof TD === 'object') {
116
- let cellClassName = className;
117
- if (markIntersections) {
118
- cellClassName = this.classNameGenerator(TD);
119
- if (!this.classNames.includes(cellClassName)) {
120
- this.classNames.push(cellClassName);
121
- }
122
- }
123
- addClass(TD, cellClassName);
124
- }
125
- return this;
126
- }
127
-
128
- /**
129
- * Generate helper for calculating classNames based on previously added base className.
130
- * The generated className is always generated as a continuation of the previous className. For example, when
131
- * the currently checked element has 'area-2' className the generated new className will be 'area-3'. When
132
- * the element doesn't have any classNames than the base className will be returned ('area');.
133
- *
134
- * @param {string} baseClassName Base className to be used.
135
- * @param {number} layerLevelOwner Layer level which the instance of the Selection belongs to.
136
- * @returns {Function}
137
- */
138
- linearClassNameGenerator(baseClassName, layerLevelOwner) {
139
- // TODO: Make this recursive function Proper Tail Calls (TCO/PTC) friendly.
140
- return function calcClassName(element) {
141
- let previousIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
142
- if (layerLevelOwner === 0 || previousIndex === 0) {
143
- return baseClassName;
144
- }
145
- let index = previousIndex >= 0 ? previousIndex : layerLevelOwner;
146
- let className = baseClassName;
147
- index -= 1;
148
- const previousClassName = index === 0 ? baseClassName : `${baseClassName}-${index}`;
149
- if (hasClass(element, previousClassName)) {
150
- const currentLayer = index + 1;
151
- className = `${baseClassName}-${currentLayer}`;
152
- } else {
153
- className = calcClassName(element, index);
154
- }
155
- return className;
156
- };
157
- }
158
-
159
- /**
160
- * @param {WalkontableFacade} wotInstance The Walkontable instance.
161
- */
162
- draw(wotInstance) {
163
- if (this.isEmpty()) {
164
- if (this.settings.border) {
165
- this.getBorder(wotInstance).disappear();
166
- }
167
- return;
168
- }
169
- const renderedRows = wotInstance.wtTable.getRenderedRowsCount();
170
- const renderedColumns = wotInstance.wtTable.getRenderedColumnsCount();
171
- const corners = this.getCorners();
172
- const [topRow, topColumn, bottomRow, bottomColumn] = corners;
173
- const {
174
- highlightHeaderClassName,
175
- highlightColumnClassName,
176
- highlightRowClassName,
177
- highlightOnlyClosestHeader,
178
- selectionType
179
- } = this.settings;
180
- const isHeaderSelectionType = selectionType === void 0 || ['active-header', 'header'].includes(selectionType);
181
- if (isHeaderSelectionType && topColumn !== null && bottomColumn !== null) {
182
- let selectionColumnCursor = 0;
183
- for (let column = 0; column < renderedColumns; column += 1) {
184
- const sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
185
- if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
186
- let THs = wotInstance.wtTable.getColumnHeaders(sourceCol);
187
- const closestHeaderLevel = THs.length - 1;
188
- if (highlightOnlyClosestHeader && THs.length > 1) {
189
- THs = [THs[closestHeaderLevel]];
190
- }
191
- for (let headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
192
- const newClasses = [];
193
- let TH = THs[headerLevel];
194
- if (highlightHeaderClassName) {
195
- newClasses.push(highlightHeaderClassName);
196
- }
197
- if (highlightColumnClassName) {
198
- newClasses.push(highlightColumnClassName);
199
- }
200
- headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
201
- const newSourceCol = wotInstance.getSetting('onBeforeHighlightingColumnHeader', sourceCol, headerLevel, {
202
- selectionType,
203
- columnCursor: selectionColumnCursor,
204
- selectionWidth: bottomColumn - topColumn + 1,
205
- classNames: newClasses
206
- });
207
- if (newSourceCol !== sourceCol) {
208
- TH = wotInstance.wtTable.getColumnHeader(newSourceCol, headerLevel);
209
- }
210
- addClass(TH, newClasses);
211
- }
212
- selectionColumnCursor += 1;
213
- }
214
- }
215
- }
216
- if (topRow !== null && bottomRow !== null) {
217
- let selectionRowCursor = 0;
218
- for (let row = 0; row < renderedRows; row += 1) {
219
- const sourceRow = wotInstance.wtTable.rowFilter.renderedToSource(row);
220
- if (isHeaderSelectionType && sourceRow >= topRow && sourceRow <= bottomRow) {
221
- let THs = wotInstance.wtTable.getRowHeaders(sourceRow);
222
- const closestHeaderLevel = THs.length - 1;
223
- if (highlightOnlyClosestHeader && THs.length > 1) {
224
- THs = [THs[closestHeaderLevel]];
225
- }
226
- for (let headerLevel = 0; headerLevel < THs.length; headerLevel += 1) {
227
- const newClasses = [];
228
- let TH = THs[headerLevel];
229
- if (highlightHeaderClassName) {
230
- newClasses.push(highlightHeaderClassName);
231
- }
232
- if (highlightRowClassName) {
233
- newClasses.push(highlightRowClassName);
234
- }
235
- headerLevel = highlightOnlyClosestHeader ? closestHeaderLevel : headerLevel;
236
- const newSourceRow = wotInstance.getSetting('onBeforeHighlightingRowHeader', sourceRow, headerLevel, {
237
- selectionType,
238
- rowCursor: selectionRowCursor,
239
- selectionHeight: bottomRow - topRow + 1,
240
- classNames: newClasses
241
- });
242
- if (newSourceRow !== sourceRow) {
243
- TH = wotInstance.wtTable.getRowHeader(newSourceRow, headerLevel);
244
- }
245
- addClass(TH, newClasses);
246
- }
247
- selectionRowCursor += 1;
248
- }
249
- if (topColumn !== null && bottomColumn !== null) {
250
- for (let column = 0; column < renderedColumns; column += 1) {
251
- const sourceCol = wotInstance.wtTable.columnFilter.renderedToSource(column);
252
- if (sourceRow >= topRow && sourceRow <= bottomRow && sourceCol >= topColumn && sourceCol <= bottomColumn) {
253
- // selected cell
254
- if (this.settings.className) {
255
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, this.settings.className, this.settings.markIntersections);
256
- }
257
- } else if (sourceRow >= topRow && sourceRow <= bottomRow) {
258
- // selection is in this row
259
- if (highlightRowClassName) {
260
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, highlightRowClassName);
261
- }
262
- } else if (sourceCol >= topColumn && sourceCol <= bottomColumn) {
263
- // selection is in this column
264
- if (highlightColumnClassName) {
265
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, highlightColumnClassName);
266
- }
267
- }
268
- const additionalSelectionClass = wotInstance.getSetting('onAfterDrawSelection', sourceRow, sourceCol, this.settings.layerLevel);
269
- if (typeof additionalSelectionClass === 'string') {
270
- this.addClassAtCoords(wotInstance, sourceRow, sourceCol, additionalSelectionClass);
271
- }
272
- }
273
- }
274
- }
275
- }
276
- wotInstance.getSetting('onBeforeDrawBorders', corners, this.settings.className);
277
- if (this.settings.border) {
278
- // warning! border.appear modifies corners!
279
- this.getBorder(wotInstance).appear(corners);
280
- }
281
- }
282
-
283
- /**
284
- * Cleans up all the DOM state related to a Selection instance. Call this prior to deleting a Selection instance.
285
- */
286
- destroy() {
287
- Object.values(this.instanceBorders).forEach(border => border.destroy());
288
- }
289
- }
290
- export default Selection;
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- const ACTIVE_HEADER_TYPE = 'active-header';
5
- exports.ACTIVE_HEADER_TYPE = ACTIVE_HEADER_TYPE;
6
- const AREA_TYPE = 'area';
7
- exports.AREA_TYPE = AREA_TYPE;
8
- const CELL_TYPE = 'cell';
9
- exports.CELL_TYPE = CELL_TYPE;
10
- const FILL_TYPE = 'fill';
11
- exports.FILL_TYPE = FILL_TYPE;
12
- const HEADER_TYPE = 'header';
13
- exports.HEADER_TYPE = HEADER_TYPE;
14
- const CUSTOM_SELECTION_TYPE = 'custom-selection';
15
- exports.CUSTOM_SELECTION_TYPE = CUSTOM_SELECTION_TYPE;
@@ -1,6 +0,0 @@
1
- export const ACTIVE_HEADER_TYPE = 'active-header';
2
- export const AREA_TYPE = 'area';
3
- export const CELL_TYPE = 'cell';
4
- export const FILL_TYPE = 'fill';
5
- export const HEADER_TYPE = 'header';
6
- export const CUSTOM_SELECTION_TYPE = 'custom-selection';
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.createHighlight = createHighlight;
5
- var _staticRegister = _interopRequireDefault(require("./../../../utils/staticRegister"));
6
- var _constants = require("../constants");
7
- var _activeHeader = _interopRequireDefault(require("./activeHeader"));
8
- var _area = _interopRequireDefault(require("./area"));
9
- var _cell = _interopRequireDefault(require("./cell"));
10
- var _customSelection = _interopRequireDefault(require("./customSelection"));
11
- var _fill = _interopRequireDefault(require("./fill"));
12
- var _header = _interopRequireDefault(require("./header"));
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- const {
15
- register,
16
- getItem
17
- } = (0, _staticRegister.default)('highlight/types');
18
- register(_constants.ACTIVE_HEADER_TYPE, _activeHeader.default);
19
- register(_constants.AREA_TYPE, _area.default);
20
- register(_constants.CELL_TYPE, _cell.default);
21
- register(_constants.CUSTOM_SELECTION_TYPE, _customSelection.default);
22
- register(_constants.FILL_TYPE, _fill.default);
23
- register(_constants.HEADER_TYPE, _header.default);
24
-
25
- /**
26
- * @param {string} highlightType The selection type.
27
- * @param {object} options The selection options.
28
- * @returns {Selection}
29
- */
30
- function createHighlight(highlightType, options) {
31
- return getItem(highlightType)({
32
- type: highlightType,
33
- ...options
34
- });
35
- }
@@ -1,31 +0,0 @@
1
- import staticRegister from "./../../../utils/staticRegister.mjs";
2
- import { ACTIVE_HEADER_TYPE, AREA_TYPE, CELL_TYPE, CUSTOM_SELECTION_TYPE, FILL_TYPE, HEADER_TYPE } from "../constants.mjs";
3
- import activeHeaderHighlight from "./activeHeader.mjs";
4
- import areaHighlight from "./area.mjs";
5
- import cellHighlight from "./cell.mjs";
6
- import customSelection from "./customSelection.mjs";
7
- import fillHighlight from "./fill.mjs";
8
- import headerHighlight from "./header.mjs";
9
- const {
10
- register,
11
- getItem
12
- } = staticRegister('highlight/types');
13
- register(ACTIVE_HEADER_TYPE, activeHeaderHighlight);
14
- register(AREA_TYPE, areaHighlight);
15
- register(CELL_TYPE, cellHighlight);
16
- register(CUSTOM_SELECTION_TYPE, customSelection);
17
- register(FILL_TYPE, fillHighlight);
18
- register(HEADER_TYPE, headerHighlight);
19
-
20
- /**
21
- * @param {string} highlightType The selection type.
22
- * @param {object} options The selection options.
23
- * @returns {Selection}
24
- */
25
- function createHighlight(highlightType, options) {
26
- return getItem(highlightType)({
27
- type: highlightType,
28
- ...options
29
- });
30
- }
31
- export { createHighlight };