handsontable 0.0.0-next-08765b9-20230809 → 0.0.0-next-912c214-20230818

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/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
  4. package/3rdparty/walkontable/src/cell/coords.js +11 -50
  5. package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
  6. package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
  7. package/3rdparty/walkontable/src/cell/range.js +7 -38
  8. package/3rdparty/walkontable/src/cell/range.mjs +7 -38
  9. package/3rdparty/walkontable/src/core/_base.js +3 -9
  10. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  11. package/3rdparty/walkontable/src/core/clone.js +2 -2
  12. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  13. package/3rdparty/walkontable/src/core/core.js +2 -3
  14. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  15. package/3rdparty/walkontable/src/event.js +7 -7
  16. package/3rdparty/walkontable/src/event.mjs +7 -7
  17. package/3rdparty/walkontable/src/facade/core.js +2 -2
  18. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  19. package/3rdparty/walkontable/src/index.js +2 -10
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +6 -2
  26. package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
  27. package/3rdparty/walkontable/src/selection.js +295 -0
  28. package/3rdparty/walkontable/src/selection.mjs +290 -0
  29. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  30. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  31. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  32. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  33. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  34. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  35. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  36. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  37. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  38. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  39. package/3rdparty/walkontable/src/table.js +78 -6
  40. package/3rdparty/walkontable/src/table.mjs +79 -7
  41. package/base.js +2 -2
  42. package/base.mjs +2 -2
  43. package/common.d.ts +1 -1
  44. package/core.d.ts +3 -6
  45. package/core.js +290 -173
  46. package/core.mjs +290 -173
  47. package/dataMap/metaManager/metaSchema.js +0 -41
  48. package/dataMap/metaManager/metaSchema.mjs +0 -41
  49. package/dist/handsontable.css +4 -24
  50. package/dist/handsontable.full.css +4 -24
  51. package/dist/handsontable.full.js +5589 -8684
  52. package/dist/handsontable.full.min.css +3 -3
  53. package/dist/handsontable.full.min.js +25 -25
  54. package/dist/handsontable.js +8036 -11131
  55. package/dist/handsontable.min.css +3 -3
  56. package/dist/handsontable.min.js +19 -19
  57. package/editorManager.js +75 -11
  58. package/editorManager.mjs +74 -11
  59. package/editors/baseEditor/baseEditor.d.ts +1 -0
  60. package/editors/textEditor/textEditor.js +11 -3
  61. package/editors/textEditor/textEditor.mjs +12 -4
  62. package/helpers/mixed.js +1 -1
  63. package/helpers/mixed.mjs +1 -1
  64. package/helpers/number.d.ts +0 -1
  65. package/helpers/number.js +0 -18
  66. package/helpers/number.mjs +0 -17
  67. package/package.json +1 -1
  68. package/pluginHooks.d.ts +1 -7
  69. package/pluginHooks.js +1 -106
  70. package/pluginHooks.mjs +1 -106
  71. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -58
  72. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -58
  73. package/plugins/columnSorting/columnSorting.js +0 -38
  74. package/plugins/columnSorting/columnSorting.mjs +2 -38
  75. package/plugins/columnSorting/index.js +1 -3
  76. package/plugins/columnSorting/index.mjs +1 -1
  77. package/plugins/comments/commentEditor.js +0 -1
  78. package/plugins/comments/commentEditor.mjs +0 -1
  79. package/plugins/comments/comments.js +189 -251
  80. package/plugins/comments/comments.mjs +190 -250
  81. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  82. package/plugins/contextMenu/contextMenu.js +30 -72
  83. package/plugins/contextMenu/contextMenu.mjs +31 -73
  84. package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
  85. package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
  86. package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
  87. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
  88. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
  89. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
  90. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
  91. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
  92. package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
  93. package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
  94. package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
  95. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
  96. package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
  97. package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
  98. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
  99. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
  100. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
  101. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
  102. package/plugins/contextMenu/utils.js +16 -28
  103. package/plugins/contextMenu/utils.mjs +15 -27
  104. package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
  105. package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
  106. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
  107. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
  108. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
  109. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
  110. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
  111. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
  112. package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
  113. package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
  114. package/plugins/copyPaste/copyPaste.js +10 -14
  115. package/plugins/copyPaste/copyPaste.mjs +10 -14
  116. package/plugins/customBorders/customBorders.js +20 -23
  117. package/plugins/customBorders/customBorders.mjs +21 -24
  118. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  119. package/plugins/dropdownMenu/dropdownMenu.js +32 -89
  120. package/plugins/dropdownMenu/dropdownMenu.mjs +32 -89
  121. package/plugins/filters/filters.js +14 -31
  122. package/plugins/filters/filters.mjs +13 -30
  123. package/plugins/manualColumnResize/manualColumnResize.js +6 -0
  124. package/plugins/manualColumnResize/manualColumnResize.mjs +7 -1
  125. package/plugins/mergeCells/mergeCells.js +17 -5
  126. package/plugins/mergeCells/mergeCells.mjs +17 -5
  127. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
  128. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
  129. package/plugins/nestedHeaders/nestedHeaders.js +8 -121
  130. package/plugins/nestedHeaders/nestedHeaders.mjs +8 -121
  131. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  132. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  133. package/plugins/nestedRows/nestedRows.js +0 -41
  134. package/plugins/nestedRows/nestedRows.mjs +0 -41
  135. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  136. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  137. package/selection/highlight/constants.js +15 -0
  138. package/selection/highlight/constants.mjs +6 -0
  139. package/selection/highlight/highlight.js +71 -256
  140. package/selection/highlight/highlight.mjs +71 -250
  141. package/selection/highlight/types/activeHeader.js +8 -10
  142. package/selection/highlight/types/activeHeader.mjs +8 -10
  143. package/selection/highlight/types/area.js +18 -6
  144. package/selection/highlight/types/area.mjs +18 -6
  145. package/selection/highlight/types/{focus.js → cell.js} +7 -5
  146. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  147. package/selection/highlight/types/customSelection.js +9 -7
  148. package/selection/highlight/types/customSelection.mjs +9 -7
  149. package/selection/highlight/types/fill.js +7 -5
  150. package/selection/highlight/types/fill.mjs +7 -5
  151. package/selection/highlight/types/header.js +18 -9
  152. package/selection/highlight/types/header.mjs +18 -9
  153. package/selection/highlight/types/index.js +35 -0
  154. package/selection/highlight/types/index.mjs +31 -0
  155. package/selection/highlight/visualSelection.js +27 -31
  156. package/selection/highlight/visualSelection.mjs +27 -31
  157. package/selection/index.js +7 -4
  158. package/selection/index.mjs +3 -2
  159. package/selection/mouseEventHandler.js +1 -1
  160. package/selection/mouseEventHandler.mjs +1 -1
  161. package/selection/range.js +8 -8
  162. package/selection/range.mjs +8 -8
  163. package/selection/selection.js +154 -290
  164. package/selection/selection.mjs +153 -287
  165. package/selection/transformation.js +90 -232
  166. package/selection/transformation.mjs +90 -232
  167. package/selection/utils.js +21 -15
  168. package/selection/utils.mjs +21 -16
  169. package/settings.d.ts +0 -2
  170. package/shortcuts/manager.js +0 -2
  171. package/shortcuts/manager.mjs +0 -2
  172. package/shortcuts/recorder.js +2 -2
  173. package/shortcuts/recorder.mjs +2 -2
  174. package/shortcuts/utils.js +5 -19
  175. package/shortcuts/utils.mjs +4 -18
  176. package/tableView.js +13 -67
  177. package/tableView.mjs +13 -67
  178. package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
  179. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  180. package/3rdparty/walkontable/src/selection/constants.js +0 -62
  181. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  182. package/3rdparty/walkontable/src/selection/index.js +0 -26
  183. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  184. package/3rdparty/walkontable/src/selection/manager.js +0 -259
  185. package/3rdparty/walkontable/src/selection/manager.mjs +0 -254
  186. package/3rdparty/walkontable/src/selection/scanner.js +0 -270
  187. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
  188. package/3rdparty/walkontable/src/selection/selection.js +0 -101
  189. package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
  190. package/core/focusCatcher/focusDetector.js +0 -58
  191. package/core/focusCatcher/focusDetector.mjs +0 -54
  192. package/core/focusCatcher/index.js +0 -142
  193. package/core/focusCatcher/index.mjs +0 -138
  194. package/core/index.js +0 -9
  195. package/core/index.mjs +0 -1
  196. package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
  197. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
  198. package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
  199. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
  200. package/plugins/comments/contextMenuItem/removeComment.js +0 -38
  201. package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
  202. package/selection/highlight/types/areaLayered.js +0 -31
  203. package/selection/highlight/types/areaLayered.mjs +0 -26
  204. package/selection/highlight/types/column.js +0 -27
  205. package/selection/highlight/types/column.mjs +0 -22
  206. package/selection/highlight/types/row.js +0 -27
  207. package/selection/highlight/types/row.mjs +0 -22
  208. package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
  209. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
  210. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
  211. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  212. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  213. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
  214. package/shortcutContexts/commands/editor/index.js +0 -16
  215. package/shortcutContexts/commands/editor/index.mjs +0 -12
  216. package/shortcutContexts/commands/editor/open.js +0 -27
  217. package/shortcutContexts/commands/editor/open.mjs +0 -23
  218. package/shortcutContexts/commands/emptySelectedCells.js +0 -11
  219. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  220. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  221. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
  222. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  223. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -17
  224. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  225. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  226. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  227. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
  228. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  229. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
  230. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  231. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
  232. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
  233. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
  234. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
  235. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
  236. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
  237. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
  238. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
  239. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
  240. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
  241. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
  242. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
  243. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
  244. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  245. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
  246. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  247. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
  248. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  249. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -17
  250. package/shortcutContexts/commands/index.js +0 -35
  251. package/shortcutContexts/commands/index.mjs +0 -31
  252. package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
  253. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
  254. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -31
  255. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -27
  256. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  257. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  258. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
  259. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  260. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
  261. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  262. package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
  263. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  264. package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
  265. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  266. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
  267. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
  268. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
  269. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
  270. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
  271. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
  272. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
  273. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
  274. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
  275. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
  276. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
  277. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
  278. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
  279. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
  280. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
  281. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
  282. package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
  283. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
  284. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -31
  285. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -27
  286. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
  287. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
  288. package/shortcutContexts/commands/scrollToFocusedCell.js +0 -36
  289. package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -32
  290. package/shortcutContexts/commands/selectAll.js +0 -10
  291. package/shortcutContexts/commands/selectAll.mjs +0 -6
  292. package/shortcutContexts/constants.js +0 -13
  293. package/shortcutContexts/constants.mjs +0 -8
  294. package/shortcutContexts/editor.js +0 -25
  295. package/shortcutContexts/editor.mjs +0 -21
  296. package/shortcutContexts/grid.js +0 -163
  297. package/shortcutContexts/grid.mjs +0 -159
  298. package/shortcutContexts/index.js +0 -24
  299. package/shortcutContexts/index.mjs +0 -11
@@ -1,96 +0,0 @@
1
- import { mixin } from "../../../../helpers/object.mjs";
2
- import localHooks from "../../../../mixins/localHooks.mjs";
3
- /**
4
- * The Selection class allows highlighting (by applying CSS class) the table's cells or headers
5
- * and setting up the borders if defined in the settings.
6
- *
7
- * The Selection coordinates may point to the cells (positive numbers) or headers (negative numbers).
8
- *
9
- * @class Selection
10
- */
11
- class Selection {
12
- /**
13
- * @param {object} settings The selection settings object. @todo type.
14
- * @param {CellRange} cellRange The cell range instance.
15
- */
16
- constructor(settings, cellRange) {
17
- this.settings = settings;
18
- this.cellRange = cellRange || null;
19
- }
20
-
21
- /**
22
- * Checks if selection is empty.
23
- *
24
- * @returns {boolean}
25
- */
26
- isEmpty() {
27
- return this.cellRange === null;
28
- }
29
-
30
- /**
31
- * Adds a cell coords to the selection.
32
- *
33
- * @param {CellCoords} coords The cell coordinates to add.
34
- * @returns {Selection}
35
- */
36
- add(coords) {
37
- if (this.isEmpty()) {
38
- this.cellRange = this.settings.createCellRange(coords);
39
- } else {
40
- this.cellRange.expand(coords);
41
- }
42
- return this;
43
- }
44
-
45
- /**
46
- * If selection range from or to property equals oldCoords, replace it with newCoords. Return boolean
47
- * information about success.
48
- *
49
- * @param {CellCoords} oldCoords An old cell coordinates to replace.
50
- * @param {CellCoords} newCoords The new cell coordinates.
51
- * @returns {boolean}
52
- */
53
- replace(oldCoords, newCoords) {
54
- if (!this.isEmpty()) {
55
- if (this.cellRange.from.isEqual(oldCoords)) {
56
- this.cellRange.from = newCoords;
57
- return true;
58
- }
59
- if (this.cellRange.to.isEqual(oldCoords)) {
60
- this.cellRange.to = newCoords;
61
- return true;
62
- }
63
- }
64
- return false;
65
- }
66
-
67
- /**
68
- * Clears selection.
69
- *
70
- * @returns {Selection}
71
- */
72
- clear() {
73
- this.cellRange = null;
74
- return this;
75
- }
76
-
77
- /**
78
- * Returns the top left (or top right in RTL) and bottom right (or bottom left in RTL) selection coordinates.
79
- *
80
- * @returns {number[]} Returns array of coordinates for example `[1, 1, 5, 5]`.
81
- */
82
- getCorners() {
83
- const topStart = this.cellRange.getOuterTopStartCorner();
84
- const bottomEnd = this.cellRange.getOuterBottomEndCorner();
85
- return [topStart.row, topStart.col, bottomEnd.row, bottomEnd.col];
86
- }
87
-
88
- /**
89
- * Destroys the instance.
90
- */
91
- destroy() {
92
- this.runLocalHooks('destroy');
93
- }
94
- }
95
- mixin(Selection, localHooks);
96
- export default Selection;
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.installFocusDetector = installFocusDetector;
5
- /**
6
- * Installs a focus detector module. The module appends two input elements into the DOM side by side.
7
- * When the first input is focused, then it means that a user entered to the component using the TAB key
8
- * from the element above. When the second input is focused, a user enters to the component from
9
- * the element below the table. Each action, once detected, triggers the specific hook.
10
- *
11
- * @param {Handsontable} hot The Handsontable instance.
12
- * @param {{ onFocusFromTop: Function, onFocusFromBottom: Function }} hooks An object with defined callbacks to call.
13
- * @returns {{ activate: Function, deactivate: Function }}
14
- */
15
- function installFocusDetector(hot) {
16
- let hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17
- const rootDocument = hot.rootDocument;
18
- const rootElement = hot.rootElement;
19
- const inputTrapTop = createInputElement(rootDocument);
20
- const inputTrapBottom = createInputElement(rootDocument);
21
- inputTrapTop.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromTop());
22
- inputTrapBottom.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromBottom());
23
- rootElement.firstChild.before(inputTrapTop);
24
- rootElement.lastChild.after(inputTrapBottom);
25
- return {
26
- /**
27
- * Activates the detector by resetting the tabIndex of the input elements.
28
- */
29
- activate() {
30
- hot._registerTimeout(() => {
31
- inputTrapTop.tabIndex = 0;
32
- inputTrapBottom.tabIndex = 0;
33
- }, 10);
34
- },
35
- /**
36
- * Deactivates the detector by setting tabIndex to -1.
37
- */
38
- deactivate() {
39
- hot._registerTimeout(() => {
40
- inputTrapTop.tabIndex = -1;
41
- inputTrapBottom.tabIndex = -1;
42
- }, 10);
43
- }
44
- };
45
- }
46
-
47
- /**
48
- * Creates a new HTML input element.
49
- *
50
- * @param {Document} rootDocument The owner document element.
51
- * @returns {HTMLInputElement}
52
- */
53
- function createInputElement(rootDocument) {
54
- const input = rootDocument.createElement('input');
55
- input.type = 'text';
56
- input.classList.add('htFocusCatcher');
57
- return input;
58
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * Installs a focus detector module. The module appends two input elements into the DOM side by side.
3
- * When the first input is focused, then it means that a user entered to the component using the TAB key
4
- * from the element above. When the second input is focused, a user enters to the component from
5
- * the element below the table. Each action, once detected, triggers the specific hook.
6
- *
7
- * @param {Handsontable} hot The Handsontable instance.
8
- * @param {{ onFocusFromTop: Function, onFocusFromBottom: Function }} hooks An object with defined callbacks to call.
9
- * @returns {{ activate: Function, deactivate: Function }}
10
- */
11
- export function installFocusDetector(hot) {
12
- let hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13
- const rootDocument = hot.rootDocument;
14
- const rootElement = hot.rootElement;
15
- const inputTrapTop = createInputElement(rootDocument);
16
- const inputTrapBottom = createInputElement(rootDocument);
17
- inputTrapTop.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromTop());
18
- inputTrapBottom.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromBottom());
19
- rootElement.firstChild.before(inputTrapTop);
20
- rootElement.lastChild.after(inputTrapBottom);
21
- return {
22
- /**
23
- * Activates the detector by resetting the tabIndex of the input elements.
24
- */
25
- activate() {
26
- hot._registerTimeout(() => {
27
- inputTrapTop.tabIndex = 0;
28
- inputTrapBottom.tabIndex = 0;
29
- }, 10);
30
- },
31
- /**
32
- * Deactivates the detector by setting tabIndex to -1.
33
- */
34
- deactivate() {
35
- hot._registerTimeout(() => {
36
- inputTrapTop.tabIndex = -1;
37
- inputTrapBottom.tabIndex = -1;
38
- }, 10);
39
- }
40
- };
41
- }
42
-
43
- /**
44
- * Creates a new HTML input element.
45
- *
46
- * @param {Document} rootDocument The owner document element.
47
- * @returns {HTMLInputElement}
48
- */
49
- function createInputElement(rootDocument) {
50
- const input = rootDocument.createElement('input');
51
- input.type = 'text';
52
- input.classList.add('htFocusCatcher');
53
- return input;
54
- }
@@ -1,142 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.installFocusCatcher = installFocusCatcher;
5
- var _shortcutContexts = require("../../shortcutContexts");
6
- var _focusDetector = require("./focusDetector");
7
- /**
8
- * Installs a focus catcher module. The module observes when the table is focused and depending on
9
- * from the which side it was focused on it selects a specified cell or releases the TAB navigation
10
- * to the browser.
11
- *
12
- * @param {Core} hot The Handsontable instance.
13
- */
14
- function installFocusCatcher(hot) {
15
- let recentlyAddedFocusCoords;
16
- const {
17
- activate,
18
- deactivate
19
- } = (0, _focusDetector.installFocusDetector)(hot, {
20
- onFocusFromTop() {
21
- var _recentlyAddedFocusCo;
22
- const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
23
- if (mostTopStartCoords) {
24
- hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
25
- hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
26
- }
27
- hot.listen();
28
- },
29
- onFocusFromBottom() {
30
- var _recentlyAddedFocusCo2;
31
- const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
32
- if (mostBottomEndCoords) {
33
- hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
34
- hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
35
- }
36
- hot.listen();
37
- }
38
- });
39
- hot.addHook('afterListen', () => deactivate());
40
- hot.addHook('afterUnlisten', () => activate());
41
- hot.addHook('afterSelection', () => {
42
- var _hot$getSelectedRange;
43
- recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
44
- });
45
- hot.getShortcutManager().getContext('grid').addShortcut({
46
- keys: [['Tab'], ['Shift', 'Tab']],
47
- callback: event => {
48
- var _hot$getSelectedRange2;
49
- const {
50
- disableTabNavigation,
51
- autoWrapRow
52
- } = hot.getSettings();
53
- if (disableTabNavigation) {
54
- hot.deselectCell();
55
- hot.unlisten();
56
- return false;
57
- }
58
- const isSelected = hot.selection.isSelected();
59
- const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
60
- const mostTopStartCoords = getMostTopStartPosition(hot);
61
- const mostBottomEndCoords = getMostBottomEndPosition(hot);
62
-
63
- // For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
64
- if (!autoWrapRow) {
65
- mostTopStartCoords.row = highlight.row;
66
- mostBottomEndCoords.row = highlight.row;
67
- }
68
- if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
69
- hot.deselectCell();
70
- hot.unlisten();
71
- return false;
72
- }
73
- return true;
74
- },
75
- runOnlyIf: () => !hot.getSettings().minSpareCols,
76
- preventDefault: false,
77
- stopPropagation: false,
78
- position: 'before',
79
- relativeToGroup: _shortcutContexts.GRID_GROUP,
80
- group: 'focusCatcher'
81
- });
82
- }
83
-
84
- /**
85
- * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
86
- *
87
- * @param {Core} hot The Handsontable instance.
88
- * @returns {CellCoords|null}
89
- */
90
- function getMostTopStartPosition(hot) {
91
- const {
92
- rowIndexMapper,
93
- columnIndexMapper
94
- } = hot;
95
- const {
96
- navigableHeaders
97
- } = hot.getSettings();
98
- let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
99
- let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
100
- if (topRow === 0) {
101
- topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
102
- }
103
- if (startColumn === 0) {
104
- startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
105
- }
106
- if (topRow === null || startColumn === null) {
107
- return null;
108
- }
109
- return hot._createCellCoords(topRow, startColumn);
110
- }
111
-
112
- /**
113
- * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
114
- *
115
- * @param {Core} hot The Handsontable instance.
116
- * @returns {CellCoords|null}
117
- */
118
- function getMostBottomEndPosition(hot) {
119
- var _rowIndexMapper$getVi, _columnIndexMapper$ge;
120
- const {
121
- rowIndexMapper,
122
- columnIndexMapper
123
- } = hot;
124
- const {
125
- navigableHeaders
126
- } = hot.getSettings();
127
- let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
128
- let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
129
- if (bottomRow < 0) {
130
- if (!navigableHeaders || hot.countColHeaders() === 0) {
131
- return null;
132
- }
133
- bottomRow = -1;
134
- }
135
- if (endColumn < 0) {
136
- if (!navigableHeaders || hot.countColHeaders() === 0) {
137
- return null;
138
- }
139
- endColumn = -1;
140
- }
141
- return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
142
- }
@@ -1,138 +0,0 @@
1
- import { GRID_GROUP } from "../../shortcutContexts/index.mjs";
2
- import { installFocusDetector } from "./focusDetector.mjs";
3
- /**
4
- * Installs a focus catcher module. The module observes when the table is focused and depending on
5
- * from the which side it was focused on it selects a specified cell or releases the TAB navigation
6
- * to the browser.
7
- *
8
- * @param {Core} hot The Handsontable instance.
9
- */
10
- export function installFocusCatcher(hot) {
11
- let recentlyAddedFocusCoords;
12
- const {
13
- activate,
14
- deactivate
15
- } = installFocusDetector(hot, {
16
- onFocusFromTop() {
17
- var _recentlyAddedFocusCo;
18
- const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
19
- if (mostTopStartCoords) {
20
- hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
21
- hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
22
- }
23
- hot.listen();
24
- },
25
- onFocusFromBottom() {
26
- var _recentlyAddedFocusCo2;
27
- const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
28
- if (mostBottomEndCoords) {
29
- hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
30
- hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
31
- }
32
- hot.listen();
33
- }
34
- });
35
- hot.addHook('afterListen', () => deactivate());
36
- hot.addHook('afterUnlisten', () => activate());
37
- hot.addHook('afterSelection', () => {
38
- var _hot$getSelectedRange;
39
- recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
40
- });
41
- hot.getShortcutManager().getContext('grid').addShortcut({
42
- keys: [['Tab'], ['Shift', 'Tab']],
43
- callback: event => {
44
- var _hot$getSelectedRange2;
45
- const {
46
- disableTabNavigation,
47
- autoWrapRow
48
- } = hot.getSettings();
49
- if (disableTabNavigation) {
50
- hot.deselectCell();
51
- hot.unlisten();
52
- return false;
53
- }
54
- const isSelected = hot.selection.isSelected();
55
- const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
56
- const mostTopStartCoords = getMostTopStartPosition(hot);
57
- const mostBottomEndCoords = getMostBottomEndPosition(hot);
58
-
59
- // For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
60
- if (!autoWrapRow) {
61
- mostTopStartCoords.row = highlight.row;
62
- mostBottomEndCoords.row = highlight.row;
63
- }
64
- if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
65
- hot.deselectCell();
66
- hot.unlisten();
67
- return false;
68
- }
69
- return true;
70
- },
71
- runOnlyIf: () => !hot.getSettings().minSpareCols,
72
- preventDefault: false,
73
- stopPropagation: false,
74
- position: 'before',
75
- relativeToGroup: GRID_GROUP,
76
- group: 'focusCatcher'
77
- });
78
- }
79
-
80
- /**
81
- * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
82
- *
83
- * @param {Core} hot The Handsontable instance.
84
- * @returns {CellCoords|null}
85
- */
86
- function getMostTopStartPosition(hot) {
87
- const {
88
- rowIndexMapper,
89
- columnIndexMapper
90
- } = hot;
91
- const {
92
- navigableHeaders
93
- } = hot.getSettings();
94
- let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
95
- let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
96
- if (topRow === 0) {
97
- topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
98
- }
99
- if (startColumn === 0) {
100
- startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
101
- }
102
- if (topRow === null || startColumn === null) {
103
- return null;
104
- }
105
- return hot._createCellCoords(topRow, startColumn);
106
- }
107
-
108
- /**
109
- * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
110
- *
111
- * @param {Core} hot The Handsontable instance.
112
- * @returns {CellCoords|null}
113
- */
114
- function getMostBottomEndPosition(hot) {
115
- var _rowIndexMapper$getVi, _columnIndexMapper$ge;
116
- const {
117
- rowIndexMapper,
118
- columnIndexMapper
119
- } = hot;
120
- const {
121
- navigableHeaders
122
- } = hot.getSettings();
123
- let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
124
- let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
125
- if (bottomRow < 0) {
126
- if (!navigableHeaders || hot.countColHeaders() === 0) {
127
- return null;
128
- }
129
- bottomRow = -1;
130
- }
131
- if (endColumn < 0) {
132
- if (!navigableHeaders || hot.countColHeaders() === 0) {
133
- return null;
134
- }
135
- endColumn = -1;
136
- }
137
- return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
138
- }
package/core/index.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- var _focusCatcher = require("./focusCatcher");
5
- Object.keys(_focusCatcher).forEach(function (key) {
6
- if (key === "default" || key === "__esModule") return;
7
- if (key in exports && exports[key] === _focusCatcher[key]) return;
8
- exports[key] = _focusCatcher[key];
9
- });
package/core/index.mjs DELETED
@@ -1 +0,0 @@
1
- export * from "./focusCatcher/index.mjs";
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.default = addEditCommentItem;
5
- var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
7
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
8
- /**
9
- * @param {Comments} plugin The Comments plugin instance.
10
- * @returns {object}
11
- */
12
- function addEditCommentItem(plugin) {
13
- return {
14
- key: 'commentsAddEdit',
15
- name() {
16
- var _this$getSelectedRang;
17
- const highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
18
- if (highlight && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
19
- return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
20
- }
21
- return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
22
- },
23
- callback() {
24
- const range = this.getSelectedRangeLast();
25
- this.deselectCell();
26
- plugin.setRange(range);
27
- plugin.show();
28
- plugin.focusEditor();
29
- },
30
- disabled() {
31
- const range = this.getSelectedRangeLast();
32
- if (!range) {
33
- return true;
34
- }
35
- if (range.highlight.isHeader()) {
36
- return true;
37
- }
38
- return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
39
- }
40
- };
41
- }
@@ -1,35 +0,0 @@
1
- import * as C from "../../../i18n/constants.mjs";
2
- /**
3
- * @param {Comments} plugin The Comments plugin instance.
4
- * @returns {object}
5
- */
6
- export default function addEditCommentItem(plugin) {
7
- return {
8
- key: 'commentsAddEdit',
9
- name() {
10
- var _this$getSelectedRang;
11
- const highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
12
- if (highlight && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
13
- return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
14
- }
15
- return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
16
- },
17
- callback() {
18
- const range = this.getSelectedRangeLast();
19
- this.deselectCell();
20
- plugin.setRange(range);
21
- plugin.show();
22
- plugin.focusEditor();
23
- },
24
- disabled() {
25
- const range = this.getSelectedRangeLast();
26
- if (!range) {
27
- return true;
28
- }
29
- if (range.highlight.isHeader()) {
30
- return true;
31
- }
32
- return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
33
- }
34
- };
35
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.default = readOnlyCommentItem;
5
- var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
- var _utils = require("../../contextMenu/utils");
7
- var _comments = require("../comments");
8
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
- /**
11
- * @param {Comments} plugin The Comments plugin instance.
12
- * @returns {object}
13
- */
14
- function readOnlyCommentItem(plugin) {
15
- return {
16
- key: 'commentsReadOnly',
17
- name() {
18
- const label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
19
- const areReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
20
- return plugin.getCommentMeta(row, col, _comments.META_READONLY);
21
- });
22
- return areReadOnly ? (0, _utils.markLabelAsSelected)(label) : label;
23
- },
24
- callback() {
25
- const range = this.getSelectedRangeLast();
26
- range.forAll((row, column) => {
27
- if (row >= 0 && column >= 0) {
28
- const currentState = !!plugin.getCommentMeta(row, column, _comments.META_READONLY);
29
- plugin.updateCommentMeta(row, column, {
30
- [_comments.META_READONLY]: !currentState
31
- });
32
- }
33
- });
34
- },
35
- disabled() {
36
- const range = this.getSelectedRangeLast();
37
- if (!range) {
38
- return true;
39
- }
40
- if (range.highlight.isHeader()) {
41
- return true;
42
- }
43
- if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
44
- return true;
45
- }
46
- return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
47
- }
48
- };
49
- }
@@ -1,43 +0,0 @@
1
- import * as C from "../../../i18n/constants.mjs";
2
- import { checkSelectionConsistency, markLabelAsSelected } from "../../contextMenu/utils.mjs";
3
- import { META_READONLY } from "../comments.mjs";
4
- /**
5
- * @param {Comments} plugin The Comments plugin instance.
6
- * @returns {object}
7
- */
8
- export default function readOnlyCommentItem(plugin) {
9
- return {
10
- key: 'commentsReadOnly',
11
- name() {
12
- const label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
13
- const areReadOnly = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
14
- return plugin.getCommentMeta(row, col, META_READONLY);
15
- });
16
- return areReadOnly ? markLabelAsSelected(label) : label;
17
- },
18
- callback() {
19
- const range = this.getSelectedRangeLast();
20
- range.forAll((row, column) => {
21
- if (row >= 0 && column >= 0) {
22
- const currentState = !!plugin.getCommentMeta(row, column, META_READONLY);
23
- plugin.updateCommentMeta(row, column, {
24
- [META_READONLY]: !currentState
25
- });
26
- }
27
- });
28
- },
29
- disabled() {
30
- const range = this.getSelectedRangeLast();
31
- if (!range) {
32
- return true;
33
- }
34
- if (range.highlight.isHeader()) {
35
- return true;
36
- }
37
- if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
38
- return true;
39
- }
40
- return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
41
- }
42
- };
43
- }