handsontable 0.0.0-next-08765b9-20230714 → 0.0.0-next-6b996e8-20230714

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (296) 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 +3 -19
  50. package/dist/handsontable.full.css +3 -19
  51. package/dist/handsontable.full.js +5369 -8671
  52. package/dist/handsontable.full.min.css +3 -3
  53. package/dist/handsontable.full.min.js +25 -25
  54. package/dist/handsontable.js +8117 -11419
  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/textEditor/textEditor.js +11 -3
  60. package/editors/textEditor/textEditor.mjs +12 -4
  61. package/helpers/mixed.js +1 -1
  62. package/helpers/mixed.mjs +1 -1
  63. package/helpers/number.d.ts +0 -1
  64. package/helpers/number.js +0 -18
  65. package/helpers/number.mjs +0 -17
  66. package/package.json +1 -1
  67. package/pluginHooks.d.ts +1 -7
  68. package/pluginHooks.js +1 -106
  69. package/pluginHooks.mjs +1 -106
  70. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -58
  71. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -58
  72. package/plugins/columnSorting/columnSorting.js +0 -38
  73. package/plugins/columnSorting/columnSorting.mjs +2 -38
  74. package/plugins/columnSorting/index.js +1 -3
  75. package/plugins/columnSorting/index.mjs +1 -1
  76. package/plugins/comments/commentEditor.js +0 -1
  77. package/plugins/comments/commentEditor.mjs +0 -1
  78. package/plugins/comments/comments.js +189 -251
  79. package/plugins/comments/comments.mjs +190 -250
  80. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  81. package/plugins/contextMenu/contextMenu.js +30 -72
  82. package/plugins/contextMenu/contextMenu.mjs +31 -73
  83. package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
  84. package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
  85. package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
  86. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
  87. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
  88. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
  89. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
  90. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
  91. package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
  92. package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
  93. package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
  94. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
  95. package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
  96. package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
  97. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
  98. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
  99. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
  100. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
  101. package/plugins/contextMenu/utils.js +16 -28
  102. package/plugins/contextMenu/utils.mjs +15 -27
  103. package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
  104. package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
  105. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
  106. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
  107. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
  108. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
  109. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
  110. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
  111. package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
  112. package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
  113. package/plugins/copyPaste/copyPaste.js +2 -6
  114. package/plugins/copyPaste/copyPaste.mjs +2 -6
  115. package/plugins/customBorders/customBorders.js +20 -23
  116. package/plugins/customBorders/customBorders.mjs +21 -24
  117. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  118. package/plugins/dropdownMenu/dropdownMenu.js +32 -89
  119. package/plugins/dropdownMenu/dropdownMenu.mjs +32 -89
  120. package/plugins/filters/filters.js +14 -31
  121. package/plugins/filters/filters.mjs +13 -30
  122. package/plugins/mergeCells/mergeCells.js +16 -5
  123. package/plugins/mergeCells/mergeCells.mjs +16 -5
  124. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
  125. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
  126. package/plugins/nestedHeaders/nestedHeaders.js +8 -121
  127. package/plugins/nestedHeaders/nestedHeaders.mjs +8 -121
  128. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  129. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  130. package/plugins/nestedRows/nestedRows.js +0 -41
  131. package/plugins/nestedRows/nestedRows.mjs +0 -41
  132. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  133. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  134. package/selection/highlight/constants.js +15 -0
  135. package/selection/highlight/constants.mjs +6 -0
  136. package/selection/highlight/highlight.js +71 -256
  137. package/selection/highlight/highlight.mjs +71 -250
  138. package/selection/highlight/types/activeHeader.js +8 -10
  139. package/selection/highlight/types/activeHeader.mjs +8 -10
  140. package/selection/highlight/types/area.js +18 -6
  141. package/selection/highlight/types/area.mjs +18 -6
  142. package/selection/highlight/types/{focus.js → cell.js} +7 -5
  143. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  144. package/selection/highlight/types/customSelection.js +9 -7
  145. package/selection/highlight/types/customSelection.mjs +9 -7
  146. package/selection/highlight/types/fill.js +7 -5
  147. package/selection/highlight/types/fill.mjs +7 -5
  148. package/selection/highlight/types/header.js +18 -9
  149. package/selection/highlight/types/header.mjs +18 -9
  150. package/selection/highlight/types/index.js +35 -0
  151. package/selection/highlight/types/index.mjs +31 -0
  152. package/selection/highlight/visualSelection.js +27 -31
  153. package/selection/highlight/visualSelection.mjs +27 -31
  154. package/selection/index.js +7 -4
  155. package/selection/index.mjs +3 -2
  156. package/selection/mouseEventHandler.js +1 -1
  157. package/selection/mouseEventHandler.mjs +1 -1
  158. package/selection/range.js +8 -8
  159. package/selection/range.mjs +8 -8
  160. package/selection/selection.js +154 -290
  161. package/selection/selection.mjs +153 -287
  162. package/selection/transformation.js +90 -232
  163. package/selection/transformation.mjs +90 -232
  164. package/selection/utils.js +21 -15
  165. package/selection/utils.mjs +21 -16
  166. package/settings.d.ts +0 -2
  167. package/shortcuts/manager.js +0 -2
  168. package/shortcuts/manager.mjs +0 -2
  169. package/shortcuts/recorder.js +2 -2
  170. package/shortcuts/recorder.mjs +2 -2
  171. package/shortcuts/utils.js +5 -19
  172. package/shortcuts/utils.mjs +4 -18
  173. package/tableView.js +13 -67
  174. package/tableView.mjs +13 -67
  175. package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
  176. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  177. package/3rdparty/walkontable/src/selection/constants.js +0 -62
  178. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  179. package/3rdparty/walkontable/src/selection/index.js +0 -26
  180. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  181. package/3rdparty/walkontable/src/selection/manager.js +0 -259
  182. package/3rdparty/walkontable/src/selection/manager.mjs +0 -254
  183. package/3rdparty/walkontable/src/selection/scanner.js +0 -270
  184. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
  185. package/3rdparty/walkontable/src/selection/selection.js +0 -101
  186. package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
  187. package/core/focusCatcher/focusDetector.js +0 -58
  188. package/core/focusCatcher/focusDetector.mjs +0 -54
  189. package/core/focusCatcher/index.js +0 -142
  190. package/core/focusCatcher/index.mjs +0 -138
  191. package/core/index.js +0 -9
  192. package/core/index.mjs +0 -1
  193. package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
  194. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
  195. package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
  196. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
  197. package/plugins/comments/contextMenuItem/removeComment.js +0 -38
  198. package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
  199. package/selection/highlight/types/areaLayered.js +0 -31
  200. package/selection/highlight/types/areaLayered.mjs +0 -26
  201. package/selection/highlight/types/column.js +0 -27
  202. package/selection/highlight/types/column.mjs +0 -22
  203. package/selection/highlight/types/row.js +0 -27
  204. package/selection/highlight/types/row.mjs +0 -22
  205. package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
  206. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
  207. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
  208. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  209. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  210. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
  211. package/shortcutContexts/commands/editor/index.js +0 -16
  212. package/shortcutContexts/commands/editor/index.mjs +0 -12
  213. package/shortcutContexts/commands/editor/open.js +0 -27
  214. package/shortcutContexts/commands/editor/open.mjs +0 -23
  215. package/shortcutContexts/commands/emptySelectedCells.js +0 -11
  216. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  217. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  218. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
  219. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  220. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -17
  221. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  222. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  223. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  224. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
  225. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  226. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
  227. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  228. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
  229. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
  230. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
  231. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
  232. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
  233. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
  234. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
  235. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
  236. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
  237. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
  238. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
  239. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
  240. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
  241. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  242. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
  243. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  244. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
  245. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  246. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -17
  247. package/shortcutContexts/commands/index.js +0 -35
  248. package/shortcutContexts/commands/index.mjs +0 -31
  249. package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
  250. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
  251. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -31
  252. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -27
  253. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  254. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  255. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
  256. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  257. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
  258. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  259. package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
  260. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  261. package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
  262. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  263. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
  264. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
  265. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
  266. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
  267. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
  268. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
  269. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
  270. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
  271. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
  272. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
  273. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
  274. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
  275. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
  276. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
  277. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
  278. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
  279. package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
  280. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
  281. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -31
  282. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -27
  283. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
  284. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
  285. package/shortcutContexts/commands/scrollToFocusedCell.js +0 -36
  286. package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -32
  287. package/shortcutContexts/commands/selectAll.js +0 -10
  288. package/shortcutContexts/commands/selectAll.mjs +0 -6
  289. package/shortcutContexts/constants.js +0 -13
  290. package/shortcutContexts/constants.mjs +0 -8
  291. package/shortcutContexts/editor.js +0 -25
  292. package/shortcutContexts/editor.mjs +0 -21
  293. package/shortcutContexts/grid.js +0 -163
  294. package/shortcutContexts/grid.mjs +0 -159
  295. package/shortcutContexts/index.js +0 -24
  296. package/shortcutContexts/index.mjs +0 -11
@@ -4,41 +4,25 @@ exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  require("core-js/modules/es.array.push.js");
6
6
  var _element = require("../../helpers/dom/element");
7
- var _event = require("../../helpers/dom/event");
8
7
  var _object = require("../../helpers/object");
9
8
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
10
9
  var _base = require("../base");
11
10
  var _commentEditor = _interopRequireDefault(require("./commentEditor"));
12
- var _displaySwitch2 = _interopRequireDefault(require("./displaySwitch"));
13
- var _predefinedItems = require("../contextMenu/predefinedItems");
14
- var _addEditComment = _interopRequireDefault(require("./contextMenuItem/addEditComment"));
15
- var _removeComment = _interopRequireDefault(require("./contextMenuItem/removeComment"));
16
- var _readOnlyComment = _interopRequireDefault(require("./contextMenuItem/readOnlyComment"));
11
+ var _utils = require("../contextMenu/utils");
12
+ var _displaySwitch = _interopRequireDefault(require("./displaySwitch"));
13
+ var C = _interopRequireWildcard(require("../../i18n/constants"));
14
+ 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); }
15
+ 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; }
17
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
19
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
20
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
22
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
23
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
24
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
25
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
26
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
27
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
28
17
  const PLUGIN_KEY = 'comments';
29
18
  exports.PLUGIN_KEY = PLUGIN_KEY;
30
19
  const PLUGIN_PRIORITY = 60;
31
20
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
21
+ const privatePool = new WeakMap();
32
22
  const META_COMMENT = 'comment';
33
- exports.META_COMMENT = META_COMMENT;
34
23
  const META_COMMENT_VALUE = 'value';
35
- exports.META_COMMENT_VALUE = META_COMMENT_VALUE;
36
24
  const META_STYLE = 'style';
37
- exports.META_STYLE = META_STYLE;
38
25
  const META_READONLY = 'readOnly';
39
- exports.META_READONLY = META_READONLY;
40
- const SHORTCUTS_GROUP = PLUGIN_KEY;
41
- const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
42
26
 
43
27
  /* eslint-disable jsdoc/require-description-complete-sentence */
44
28
  /**
@@ -130,107 +114,55 @@ const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
130
114
  * ```
131
115
  * :::
132
116
  */
133
- var _editor = /*#__PURE__*/new WeakMap();
134
- var _displaySwitch = /*#__PURE__*/new WeakMap();
135
- var _preventEditorAutoSwitch = /*#__PURE__*/new WeakMap();
136
- var _preventEditorHiding = /*#__PURE__*/new WeakMap();
137
- var _tempEditorDimensions = /*#__PURE__*/new WeakMap();
138
- var _cellBelowCursor = /*#__PURE__*/new WeakMap();
139
- var _commentValueBeforeSave = /*#__PURE__*/new WeakMap();
140
117
  class Comments extends _base.BasePlugin {
141
- constructor() {
142
- super(...arguments);
143
- /**
144
- * Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
145
- *
146
- * @type {object}
147
- */
148
- _defineProperty(this, "range", {});
149
- /**
150
- * Instance of {@link EventManager}.
151
- *
152
- * @protected
153
- * @type {EventManager}
154
- */
155
- _defineProperty(this, "eventManager", null);
118
+ static get PLUGIN_KEY() {
119
+ return PLUGIN_KEY;
120
+ }
121
+ static get PLUGIN_PRIORITY() {
122
+ return PLUGIN_PRIORITY;
123
+ }
124
+ constructor(hotInstance) {
125
+ super(hotInstance);
156
126
  /**
157
127
  * Instance of {@link CommentEditor}.
158
128
  *
159
129
  * @private
160
130
  * @type {CommentEditor}
161
131
  */
162
- _classPrivateFieldInitSpec(this, _editor, {
163
- writable: true,
164
- value: null
165
- });
132
+ this.editor = null;
166
133
  /**
167
134
  * Instance of {@link DisplaySwitch}.
168
135
  *
169
136
  * @private
170
137
  * @type {DisplaySwitch}
171
138
  */
172
- _classPrivateFieldInitSpec(this, _displaySwitch, {
173
- writable: true,
174
- value: null
175
- });
139
+ this.displaySwitch = null;
176
140
  /**
177
- * Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
178
- *
179
- * @private
180
- * @type {boolean}
181
- */
182
- _classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
183
- writable: true,
184
- value: false
185
- });
186
- /**
187
- * Prevents hiding editor when the table viewport is scrolled and that scroll is triggered by the
188
- * keyboard shortcut that insert or edits the comment.
141
+ * Instance of {@link EventManager}.
189
142
  *
190
143
  * @private
191
- * @type {boolean}
144
+ * @type {EventManager}
192
145
  */
193
- _classPrivateFieldInitSpec(this, _preventEditorHiding, {
194
- writable: true,
195
- value: false
196
- });
146
+ this.eventManager = null;
197
147
  /**
198
- * The property for holding editor dimensions for further processing.
148
+ * Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
199
149
  *
200
- * @private
201
150
  * @type {object}
202
151
  */
203
- _classPrivateFieldInitSpec(this, _tempEditorDimensions, {
204
- writable: true,
205
- value: {}
206
- });
152
+ this.range = {};
207
153
  /**
208
- * The flag that allows processing mousedown event correctly when comments editor is triggered.
154
+ * Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
209
155
  *
210
156
  * @private
211
157
  * @type {boolean}
212
158
  */
213
- _classPrivateFieldInitSpec(this, _cellBelowCursor, {
214
- writable: true,
215
- value: null
216
- });
217
- /**
218
- * Holds the comment value before it's actually saved to the cell meta.
219
- *
220
- * @private
221
- * @type {string}
222
- */
223
- _classPrivateFieldInitSpec(this, _commentValueBeforeSave, {
224
- writable: true,
225
- value: ''
159
+ this.preventEditorAutoSwitch = false;
160
+ privatePool.set(this, {
161
+ tempEditorDimensions: {},
162
+ cellBelowCursor: null
226
163
  });
227
164
  }
228
- static get PLUGIN_KEY() {
229
- return PLUGIN_KEY;
230
- }
231
- static get PLUGIN_PRIORITY() {
232
- return PLUGIN_PRIORITY;
233
- }
165
+
234
166
  /**
235
167
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
236
168
  * hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
@@ -248,23 +180,22 @@ class Comments extends _base.BasePlugin {
248
180
  if (this.enabled) {
249
181
  return;
250
182
  }
251
- if (!_classPrivateFieldGet(this, _editor)) {
252
- _classPrivateFieldSet(this, _editor, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()));
183
+ if (!this.editor) {
184
+ this.editor = new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl());
253
185
  }
254
186
  if (!this.eventManager) {
255
187
  this.eventManager = new _eventManager.default(this);
256
188
  }
257
- if (!_classPrivateFieldGet(this, _displaySwitch)) {
258
- _classPrivateFieldSet(this, _displaySwitch, new _displaySwitch2.default(this.getDisplayDelaySetting()));
189
+ if (!this.displaySwitch) {
190
+ this.displaySwitch = new _displaySwitch.default(this.getDisplayDelaySetting());
259
191
  }
260
192
  this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
261
193
  this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => this.onAfterRenderer(TD, cellProperties));
262
- this.addHook('afterScroll', () => this.onAfterScroll());
194
+ this.addHook('afterScrollHorizontally', () => this.hide());
195
+ this.addHook('afterScrollVertically', () => this.hide());
263
196
  this.addHook('afterBeginEditing', () => this.hide());
264
- this.addHook('afterDocumentKeyDown', event => this.onAfterDocumentKeyDown(event));
265
- _classPrivateFieldGet(this, _displaySwitch).addLocalHook('hide', () => this.hide());
266
- _classPrivateFieldGet(this, _displaySwitch).addLocalHook('show', (row, col) => this.showAtCell(row, col));
267
- this.registerShortcuts();
197
+ this.displaySwitch.addLocalHook('hide', () => this.hide());
198
+ this.displaySwitch.addLocalHook('show', (row, col) => this.showAtCell(row, col));
268
199
  this.registerListeners();
269
200
  super.enablePlugin();
270
201
  }
@@ -276,85 +207,19 @@ class Comments extends _base.BasePlugin {
276
207
  * - [`comments`](@/api/options.md#comments)
277
208
  */
278
209
  updatePlugin() {
279
- _classPrivateFieldGet(this, _displaySwitch).updateDelay(this.getDisplayDelaySetting());
210
+ this.disablePlugin();
211
+ this.enablePlugin();
280
212
  super.updatePlugin();
213
+ this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
281
214
  }
282
215
 
283
216
  /**
284
217
  * Disables the plugin functionality for this Handsontable instance.
285
218
  */
286
219
  disablePlugin() {
287
- this.unregisterShortcuts();
288
220
  super.disablePlugin();
289
221
  }
290
222
 
291
- /**
292
- * Register shortcuts responsible for toggling context menu.
293
- *
294
- * @private
295
- */
296
- registerShortcuts() {
297
- const manager = this.hot.getShortcutManager();
298
- const gridContext = manager.getContext('grid');
299
- const pluginContext = manager.addContext(SHORTCUTS_CONTEXT_NAME);
300
- gridContext.addShortcut({
301
- keys: [['Control', 'Alt', 'M']],
302
- callback: () => {
303
- const range = this.hot.getSelectedRangeLast();
304
- _classPrivateFieldSet(this, _preventEditorHiding, true);
305
- this.hot.scrollToFocusedCell(() => {
306
- this.setRange(range);
307
- this.show();
308
- this.focusEditor();
309
- manager.setActiveContextName(SHORTCUTS_CONTEXT_NAME);
310
- this.hot._registerTimeout(() => {
311
- _classPrivateFieldSet(this, _preventEditorHiding, false);
312
- });
313
- });
314
- },
315
- stopPropagation: true,
316
- runOnlyIf: () => {
317
- var _this$hot$getSelected;
318
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(this, _editor).isVisible();
319
- },
320
- group: SHORTCUTS_GROUP
321
- });
322
- pluginContext.addShortcut({
323
- keys: [['Escape']],
324
- callback: () => {
325
- _classPrivateFieldGet(this, _editor).setValue(_classPrivateFieldGet(this, _commentValueBeforeSave));
326
- this.hide();
327
- manager.setActiveContextName('grid');
328
- },
329
- runOnlyIf: () => {
330
- var _this$hot$getSelected2;
331
- return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
332
- },
333
- group: SHORTCUTS_GROUP
334
- });
335
- pluginContext.addShortcut({
336
- keys: [['Control/Meta', 'Enter']],
337
- callback: () => {
338
- this.hide();
339
- manager.setActiveContextName('grid');
340
- },
341
- runOnlyIf: () => {
342
- var _this$hot$getSelected3;
343
- return ((_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
344
- },
345
- group: SHORTCUTS_GROUP
346
- });
347
- }
348
-
349
- /**
350
- * Unregister shortcuts responsible for toggling context menu.
351
- *
352
- * @private
353
- */
354
- unregisterShortcuts() {
355
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
356
- }
357
-
358
223
  /**
359
224
  * Registers all necessary DOM listeners.
360
225
  *
@@ -364,14 +229,12 @@ class Comments extends _base.BasePlugin {
364
229
  const {
365
230
  rootDocument
366
231
  } = this.hot;
367
- const editorElement = this.getEditorInputElement();
368
232
  this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
369
233
  this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
370
234
  this.eventManager.addEventListener(rootDocument, 'mouseup', () => this.onMouseUp());
371
- this.eventManager.addEventListener(editorElement, 'focus', () => this.onEditorFocus());
372
- this.eventManager.addEventListener(editorElement, 'blur', () => this.onEditorBlur());
373
- this.eventManager.addEventListener(editorElement, 'mousedown', event => this.onEditorMouseDown(event));
374
- this.eventManager.addEventListener(editorElement, 'mouseup', event => this.onEditorMouseUp(event));
235
+ this.eventManager.addEventListener(this.editor.getInputElement(), 'blur', () => this.onEditorBlur());
236
+ this.eventManager.addEventListener(this.editor.getInputElement(), 'mousedown', event => this.onEditorMouseDown(event));
237
+ this.eventManager.addEventListener(this.editor.getInputElement(), 'mouseup', event => this.onEditorMouseUp(event));
375
238
  }
376
239
 
377
240
  /**
@@ -410,7 +273,7 @@ class Comments extends _base.BasePlugin {
410
273
  * @returns {boolean}
411
274
  */
412
275
  targetIsCommentTextArea(event) {
413
- return this.getEditorInputElement() === event.target;
276
+ return this.editor.getInputElement() === event.target;
414
277
  }
415
278
 
416
279
  /**
@@ -422,7 +285,7 @@ class Comments extends _base.BasePlugin {
422
285
  if (!this.range.from) {
423
286
  throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
424
287
  }
425
- const editorValue = _classPrivateFieldGet(this, _editor).getValue();
288
+ const editorValue = this.editor.getValue();
426
289
  let comment = '';
427
290
  if (value !== null && value !== void 0) {
428
291
  comment = value;
@@ -524,9 +387,8 @@ class Comments extends _base.BasePlugin {
524
387
  return false;
525
388
  }
526
389
  const meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col);
527
- _classPrivateFieldGet(this, _displaySwitch).cancelHiding();
528
- _classPrivateFieldGet(this, _editor).setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || '');
529
- _classPrivateFieldGet(this, _editor).show();
390
+ this.editor.setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || '');
391
+ this.editor.show();
530
392
  this.refreshEditor(true);
531
393
  return true;
532
394
  }
@@ -549,7 +411,7 @@ class Comments extends _base.BasePlugin {
549
411
  * Hides the comment editor.
550
412
  */
551
413
  hide() {
552
- _classPrivateFieldGet(this, _editor).hide();
414
+ this.editor.hide();
553
415
  }
554
416
 
555
417
  /**
@@ -560,7 +422,7 @@ class Comments extends _base.BasePlugin {
560
422
  refreshEditor() {
561
423
  var _renderableRow, _renderableColumn;
562
424
  let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
563
- if (!force && (!this.range.from || !_classPrivateFieldGet(this, _editor).isVisible())) {
425
+ if (!force && (!this.range.from || !this.editor.isVisible())) {
564
426
  return;
565
427
  }
566
428
  const {
@@ -578,7 +440,7 @@ class Comments extends _base.BasePlugin {
578
440
 
579
441
  // Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
580
442
  // previous position
581
- _classPrivateFieldGet(this, _editor).setPosition(0, 0);
443
+ this.editor.setPosition(0, 0);
582
444
  if (renderableRow === null) {
583
445
  renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
584
446
  }
@@ -606,9 +468,9 @@ class Comments extends _base.BasePlugin {
606
468
  }, true);
607
469
  const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
608
470
  if (commentStyle) {
609
- _classPrivateFieldGet(this, _editor).setSize(commentStyle.width, commentStyle.height);
471
+ this.editor.setSize(commentStyle.width, commentStyle.height);
610
472
  } else {
611
- _classPrivateFieldGet(this, _editor).resetSize();
473
+ this.editor.resetSize();
612
474
  }
613
475
  const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
614
476
  const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? (0, _element.outerHeight)(TD) : 0;
@@ -621,7 +483,7 @@ class Comments extends _base.BasePlugin {
621
483
  const {
622
484
  width: editorWidth,
623
485
  height: editorHeight
624
- } = _classPrivateFieldGet(this, _editor).getSize();
486
+ } = this.editor.getSize();
625
487
  const {
626
488
  innerWidth,
627
489
  innerHeight
@@ -642,15 +504,28 @@ class Comments extends _base.BasePlugin {
642
504
  if (top + editorHeight > innerHeight) {
643
505
  y -= editorHeight - cellHeight + 1;
644
506
  }
645
- _classPrivateFieldGet(this, _editor).setPosition(x, y);
646
- _classPrivateFieldGet(this, _editor).setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
507
+ this.editor.setPosition(x, y);
508
+ this.editor.setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
647
509
  }
648
510
 
649
511
  /**
650
- * Focuses the comments editor element.
512
+ * Checks if there is a comment for selected range.
513
+ *
514
+ * @private
515
+ * @returns {boolean}
651
516
  */
652
- focusEditor() {
653
- _classPrivateFieldGet(this, _editor).focus();
517
+ checkSelectionCommentsConsistency() {
518
+ const selected = this.hot.getSelectedRangeLast();
519
+ if (!selected) {
520
+ return false;
521
+ }
522
+ let hasComment = false;
523
+ const cell = selected.getTopStartCorner(); // IN EXCEL THERE IS COMMENT ONLY FOR TOP LEFT CELL IN SELECTION
524
+
525
+ if (this.getCommentMeta(cell.row, cell.col, META_COMMENT_VALUE)) {
526
+ hasComment = true;
527
+ }
528
+ return hasComment;
654
529
  }
655
530
 
656
531
  /**
@@ -698,7 +573,7 @@ class Comments extends _base.BasePlugin {
698
573
  if (!this.hot.view || !this.hot.view._wt) {
699
574
  return;
700
575
  }
701
- if (!_classPrivateFieldGet(this, _preventEditorAutoSwitch) && !this.targetIsCommentTextArea(event)) {
576
+ if (!this.preventEditorAutoSwitch && !this.targetIsCommentTextArea(event)) {
702
577
  const eventCell = (0, _element.closest)(event.target, 'TD', 'TBODY');
703
578
  let coordinates = null;
704
579
  if (eventCell) {
@@ -717,18 +592,19 @@ class Comments extends _base.BasePlugin {
717
592
  * @param {MouseEvent} event The `mouseover` event.
718
593
  */
719
594
  onMouseOver(event) {
595
+ const priv = privatePool.get(this);
720
596
  const {
721
597
  rootDocument
722
598
  } = this.hot;
723
- if (_classPrivateFieldGet(this, _preventEditorAutoSwitch) || _classPrivateFieldGet(this, _editor).isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || _classPrivateFieldGet(this, _cellBelowCursor) === event.target || !_classPrivateFieldGet(this, _editor)) {
599
+ if (this.preventEditorAutoSwitch || this.editor.isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || priv.cellBelowCursor === event.target || !this.editor) {
724
600
  return;
725
601
  }
726
- _classPrivateFieldSet(this, _cellBelowCursor, rootDocument.elementFromPoint(event.clientX, event.clientY));
602
+ priv.cellBelowCursor = rootDocument.elementFromPoint(event.clientX, event.clientY);
727
603
  if (this.targetIsCellWithComment(event)) {
728
604
  const range = this.hot._createCellRange(this.hot.getCoords(event.target));
729
- _classPrivateFieldGet(this, _displaySwitch).show(range);
605
+ this.displaySwitch.show(range);
730
606
  } else if ((0, _element.isChildOf)(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
731
- _classPrivateFieldGet(this, _displaySwitch).hide();
607
+ this.displaySwitch.hide();
732
608
  }
733
609
  }
734
610
 
@@ -738,7 +614,7 @@ class Comments extends _base.BasePlugin {
738
614
  * @private
739
615
  */
740
616
  onMouseUp() {
741
- _classPrivateFieldSet(this, _preventEditorAutoSwitch, false);
617
+ this.preventEditorAutoSwitch = false;
742
618
  }
743
619
 
744
620
  /**
@@ -755,29 +631,14 @@ class Comments extends _base.BasePlugin {
755
631
  }
756
632
 
757
633
  /**
758
- * Hook observer the "blur" event from the comments editor element. The hook clears the
759
- * editor content and gives back the keyboard shortcuts control by switching to the "grid" context.
634
+ * `blur` event callback for the comment editor.
760
635
  *
761
636
  * @private
762
637
  */
763
638
  onEditorBlur() {
764
- _classPrivateFieldSet(this, _commentValueBeforeSave, '');
765
- this.hot.getShortcutManager().setActiveContextName('grid');
766
639
  this.setComment();
767
640
  }
768
641
 
769
- /**
770
- * Hook observer the "focus" event from the comments editor element. The hook takes the control of
771
- * the keyboard shortcuts by switching the context to plugins one.
772
- *
773
- * @private
774
- */
775
- onEditorFocus() {
776
- _classPrivateFieldSet(this, _commentValueBeforeSave, this.getComment());
777
- this.hot.listen();
778
- this.hot.getShortcutManager().setActiveContextName(SHORTCUTS_CONTEXT_NAME);
779
- }
780
-
781
642
  /**
782
643
  * `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
783
644
  *
@@ -785,10 +646,11 @@ class Comments extends _base.BasePlugin {
785
646
  * @param {MouseEvent} event The `mousedown` event.
786
647
  */
787
648
  onEditorMouseDown(event) {
788
- _classPrivateFieldSet(this, _tempEditorDimensions, {
649
+ const priv = privatePool.get(this);
650
+ priv.tempEditorDimensions = {
789
651
  width: (0, _element.outerWidth)(event.target),
790
652
  height: (0, _element.outerHeight)(event.target)
791
- });
653
+ };
792
654
  }
793
655
 
794
656
  /**
@@ -798,9 +660,10 @@ class Comments extends _base.BasePlugin {
798
660
  * @param {MouseEvent} event The `mouseup` event.
799
661
  */
800
662
  onEditorMouseUp(event) {
663
+ const priv = privatePool.get(this);
801
664
  const currentWidth = (0, _element.outerWidth)(event.target);
802
665
  const currentHeight = (0, _element.outerHeight)(event.target);
803
- if (currentWidth !== _classPrivateFieldGet(this, _tempEditorDimensions).width + 1 || currentHeight !== _classPrivateFieldGet(this, _tempEditorDimensions).height + 2) {
666
+ if (currentWidth !== priv.tempEditorDimensions.width + 1 || currentHeight !== priv.tempEditorDimensions.height + 2) {
804
667
  this.updateCommentMeta(this.range.from.row, this.range.from.col, {
805
668
  [META_STYLE]: {
806
669
  width: currentWidth,
@@ -811,36 +674,121 @@ class Comments extends _base.BasePlugin {
811
674
  }
812
675
 
813
676
  /**
814
- * Observes the pressed keys and if there is already opened the comment editor prevents open
815
- * the table editor into the fast edit mode.
677
+ * Context Menu's "Add comment" callback. Results in showing the comment editor.
816
678
  *
817
- * @param {Event} event The keydown event.
679
+ * @private
818
680
  */
819
- onAfterDocumentKeyDown(event) {
820
- if (_classPrivateFieldGet(this, _editor).isVisible()) {
821
- (0, _event.stopImmediatePropagation)(event);
822
- }
681
+ onContextMenuAddComment() {
682
+ const coords = this.hot.getSelectedRangeLast();
683
+ this.preventEditorAutoSwitch = true;
684
+ this.displaySwitch.cancelHiding();
685
+ this.setRange({
686
+ from: coords.highlight
687
+ });
688
+ this.show();
689
+ this.hot.deselectCell();
690
+ this.editor.focus();
823
691
  }
824
692
 
825
693
  /**
826
- * Observes the changes in the scroll position if triggered it hides the comment editor.
694
+ * Context Menu's "remove comment" callback.
695
+ *
696
+ * @private
827
697
  */
828
- onAfterScroll() {
829
- if (!_classPrivateFieldGet(this, _preventEditorHiding)) {
830
- this.hide();
831
- }
698
+ onContextMenuRemoveComment() {
699
+ const coords = this.hot.getSelectedRangeLast();
700
+ this.preventEditorAutoSwitch = true;
701
+ coords.forAll((row, column) => {
702
+ if (row >= 0 && column >= 0) {
703
+ this.removeCommentAtCell(row, column, false);
704
+ }
705
+ });
706
+ this.hot.render();
832
707
  }
833
708
 
834
709
  /**
835
- * Add Comments plugin options to the Context Menu.
710
+ * Context Menu's "make comment read-only" callback.
836
711
  *
837
712
  * @private
838
- * @param {object} options The menu options.
839
713
  */
840
- addToContextMenu(options) {
841
- options.items.push({
842
- name: _predefinedItems.SEPARATOR
843
- }, (0, _addEditComment.default)(this), (0, _removeComment.default)(this), (0, _readOnlyComment.default)(this));
714
+ onContextMenuMakeReadOnly() {
715
+ const coords = this.hot.getSelectedRangeLast();
716
+ this.preventEditorAutoSwitch = true;
717
+ coords.forAll((row, column) => {
718
+ if (row >= 0 && column >= 0) {
719
+ const currentState = !!this.getCommentMeta(row, column, META_READONLY);
720
+ this.updateCommentMeta(row, column, {
721
+ [META_READONLY]: !currentState
722
+ });
723
+ }
724
+ });
725
+ }
726
+
727
+ /**
728
+ * Add Comments plugin options to the Context Menu.
729
+ *
730
+ * @private
731
+ * @param {object} defaultOptions The menu options.
732
+ */
733
+ addToContextMenu(defaultOptions) {
734
+ const isThereAnyCellRendered = () => {
735
+ return this.hot.rowIndexMapper.getRenderableIndexesLength() > 0 && this.hot.columnIndexMapper.getRenderableIndexesLength() > 0;
736
+ };
737
+ defaultOptions.items.push({
738
+ name: '---------'
739
+ }, {
740
+ key: 'commentsAddEdit',
741
+ name: () => {
742
+ if (this.checkSelectionCommentsConsistency()) {
743
+ return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
744
+ }
745
+ return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
746
+ },
747
+ callback: () => this.onContextMenuAddComment(),
748
+ disabled: () => {
749
+ if (!isThereAnyCellRendered()) {
750
+ return true;
751
+ }
752
+ return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
753
+ }
754
+ }, {
755
+ key: 'commentsRemove',
756
+ name() {
757
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
758
+ },
759
+ callback: () => this.onContextMenuRemoveComment(),
760
+ disabled: () => {
761
+ if (!isThereAnyCellRendered()) {
762
+ return true;
763
+ }
764
+ return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
765
+ }
766
+ }, {
767
+ key: 'commentsReadOnly',
768
+ name() {
769
+ let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
770
+ const hasProperty = (0, _utils.checkSelectionConsistency)(this.getSelectedRangeLast(), (row, col) => {
771
+ let readOnlyProperty = this.getCellMeta(row, col)[META_COMMENT];
772
+ if (readOnlyProperty) {
773
+ readOnlyProperty = readOnlyProperty[META_READONLY];
774
+ }
775
+ if (readOnlyProperty) {
776
+ return true;
777
+ }
778
+ });
779
+ if (hasProperty) {
780
+ label = (0, _utils.markLabelAsSelected)(label);
781
+ }
782
+ return label;
783
+ },
784
+ callback: () => this.onContextMenuMakeReadOnly(),
785
+ disabled: () => {
786
+ if (!isThereAnyCellRendered()) {
787
+ return true;
788
+ }
789
+ return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner()) || !this.checkSelectionCommentsConsistency();
790
+ }
791
+ });
844
792
  }
845
793
 
846
794
  /**
@@ -856,25 +804,15 @@ class Comments extends _base.BasePlugin {
856
804
  }
857
805
  }
858
806
 
859
- /**
860
- * Gets the editors input element.
861
- *
862
- * @private
863
- * @returns {HTMLTextAreaElement}
864
- */
865
- getEditorInputElement() {
866
- return _classPrivateFieldGet(this, _editor).getInputElement();
867
- }
868
-
869
807
  /**
870
808
  * Destroys the plugin instance.
871
809
  */
872
810
  destroy() {
873
- if (_classPrivateFieldGet(this, _editor)) {
874
- _classPrivateFieldGet(this, _editor).destroy();
811
+ if (this.editor) {
812
+ this.editor.destroy();
875
813
  }
876
- if (_classPrivateFieldGet(this, _displaySwitch)) {
877
- _classPrivateFieldGet(this, _displaySwitch).destroy();
814
+ if (this.displaySwitch) {
815
+ this.displaySwitch.destroy();
878
816
  }
879
817
  super.destroy();
880
818
  }