handsontable 0.0.0-next-baf2fcf-20230809 → 0.0.0-next-08765b9-20230809

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

Potentially problematic release.


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

Files changed (299) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +26 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +6 -78
  50. package/3rdparty/walkontable/src/table.mjs +7 -79
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/common.d.ts +1 -1
  54. package/core/focusCatcher/focusDetector.js +58 -0
  55. package/core/focusCatcher/focusDetector.mjs +54 -0
  56. package/core/focusCatcher/index.js +142 -0
  57. package/core/focusCatcher/index.mjs +138 -0
  58. package/core/index.js +9 -0
  59. package/core/index.mjs +1 -0
  60. package/core.d.ts +6 -3
  61. package/core.js +173 -290
  62. package/core.mjs +173 -290
  63. package/dataMap/metaManager/metaSchema.js +41 -0
  64. package/dataMap/metaManager/metaSchema.mjs +41 -0
  65. package/dist/handsontable.css +24 -4
  66. package/dist/handsontable.full.css +24 -4
  67. package/dist/handsontable.full.js +8676 -5381
  68. package/dist/handsontable.full.min.css +3 -3
  69. package/dist/handsontable.full.min.js +25 -25
  70. package/dist/handsontable.js +10984 -7689
  71. package/dist/handsontable.min.css +3 -3
  72. package/dist/handsontable.min.js +19 -19
  73. package/editorManager.js +11 -75
  74. package/editorManager.mjs +11 -74
  75. package/editors/baseEditor/baseEditor.d.ts +0 -1
  76. package/editors/textEditor/textEditor.js +3 -11
  77. package/editors/textEditor/textEditor.mjs +4 -12
  78. package/helpers/mixed.js +1 -1
  79. package/helpers/mixed.mjs +1 -1
  80. package/helpers/number.d.ts +1 -0
  81. package/helpers/number.js +18 -0
  82. package/helpers/number.mjs +17 -0
  83. package/package.json +1 -1
  84. package/pluginHooks.d.ts +7 -1
  85. package/pluginHooks.js +106 -1
  86. package/pluginHooks.mjs +106 -1
  87. package/plugins/collapsibleColumns/collapsibleColumns.js +58 -4
  88. package/plugins/collapsibleColumns/collapsibleColumns.mjs +58 -4
  89. package/plugins/columnSorting/columnSorting.js +38 -0
  90. package/plugins/columnSorting/columnSorting.mjs +38 -2
  91. package/plugins/columnSorting/index.js +3 -1
  92. package/plugins/columnSorting/index.mjs +1 -1
  93. package/plugins/comments/commentEditor.js +1 -0
  94. package/plugins/comments/commentEditor.mjs +1 -0
  95. package/plugins/comments/comments.js +251 -189
  96. package/plugins/comments/comments.mjs +250 -190
  97. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  98. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  99. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  100. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  101. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  102. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  103. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  104. package/plugins/contextMenu/contextMenu.js +72 -30
  105. package/plugins/contextMenu/contextMenu.mjs +73 -31
  106. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  107. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  108. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  109. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  110. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  111. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  112. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  113. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  114. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  115. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  116. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  117. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  118. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  119. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  120. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  121. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  122. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  123. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  124. package/plugins/contextMenu/utils.js +28 -16
  125. package/plugins/contextMenu/utils.mjs +27 -15
  126. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  127. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  128. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  129. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  130. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  131. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  132. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  133. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  134. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  135. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  136. package/plugins/copyPaste/copyPaste.js +14 -10
  137. package/plugins/copyPaste/copyPaste.mjs +14 -10
  138. package/plugins/customBorders/customBorders.js +23 -20
  139. package/plugins/customBorders/customBorders.mjs +24 -21
  140. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  141. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  142. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  143. package/plugins/filters/filters.js +31 -14
  144. package/plugins/filters/filters.mjs +30 -13
  145. package/plugins/manualColumnResize/manualColumnResize.js +0 -6
  146. package/plugins/manualColumnResize/manualColumnResize.mjs +1 -7
  147. package/plugins/mergeCells/mergeCells.js +5 -17
  148. package/plugins/mergeCells/mergeCells.mjs +5 -17
  149. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  150. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  151. package/plugins/nestedHeaders/nestedHeaders.js +121 -8
  152. package/plugins/nestedHeaders/nestedHeaders.mjs +121 -8
  153. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  154. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  155. package/plugins/nestedRows/nestedRows.js +41 -0
  156. package/plugins/nestedRows/nestedRows.mjs +41 -0
  157. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  158. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  159. package/selection/highlight/highlight.js +256 -71
  160. package/selection/highlight/highlight.mjs +250 -71
  161. package/selection/highlight/types/activeHeader.js +10 -8
  162. package/selection/highlight/types/activeHeader.mjs +10 -8
  163. package/selection/highlight/types/area.js +6 -18
  164. package/selection/highlight/types/area.mjs +6 -18
  165. package/selection/highlight/types/areaLayered.js +31 -0
  166. package/selection/highlight/types/areaLayered.mjs +26 -0
  167. package/selection/highlight/types/column.js +27 -0
  168. package/selection/highlight/types/column.mjs +22 -0
  169. package/selection/highlight/types/customSelection.js +7 -9
  170. package/selection/highlight/types/customSelection.mjs +7 -9
  171. package/selection/highlight/types/fill.js +5 -7
  172. package/selection/highlight/types/fill.mjs +5 -7
  173. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  174. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  175. package/selection/highlight/types/header.js +9 -18
  176. package/selection/highlight/types/header.mjs +9 -18
  177. package/selection/highlight/types/row.js +27 -0
  178. package/selection/highlight/types/row.mjs +22 -0
  179. package/selection/highlight/visualSelection.js +31 -27
  180. package/selection/highlight/visualSelection.mjs +31 -27
  181. package/selection/index.js +4 -7
  182. package/selection/index.mjs +2 -3
  183. package/selection/mouseEventHandler.js +1 -1
  184. package/selection/mouseEventHandler.mjs +1 -1
  185. package/selection/range.js +8 -8
  186. package/selection/range.mjs +8 -8
  187. package/selection/selection.js +290 -154
  188. package/selection/selection.mjs +287 -153
  189. package/selection/transformation.js +232 -90
  190. package/selection/transformation.mjs +232 -90
  191. package/selection/utils.js +15 -21
  192. package/selection/utils.mjs +16 -21
  193. package/settings.d.ts +2 -0
  194. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  195. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  196. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  197. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  198. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  199. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  200. package/shortcutContexts/commands/editor/index.js +16 -0
  201. package/shortcutContexts/commands/editor/index.mjs +12 -0
  202. package/shortcutContexts/commands/editor/open.js +27 -0
  203. package/shortcutContexts/commands/editor/open.mjs +23 -0
  204. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  205. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  206. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  207. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  208. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  209. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  210. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  211. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  212. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  213. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  214. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  215. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  216. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  217. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  218. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  219. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  220. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  221. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  222. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  223. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  224. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  225. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  226. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  227. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  228. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  229. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  230. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  231. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  232. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  233. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  234. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  235. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  236. package/shortcutContexts/commands/index.js +35 -0
  237. package/shortcutContexts/commands/index.mjs +31 -0
  238. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  239. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  240. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  241. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  242. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  243. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  244. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  245. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  246. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  247. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  248. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  249. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  250. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  251. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  252. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  253. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  254. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  255. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  256. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  257. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  258. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  259. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  260. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  261. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  262. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  263. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  264. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  265. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  266. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  267. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  268. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  269. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  270. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  271. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  272. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  273. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  274. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  275. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  276. package/shortcutContexts/commands/selectAll.js +10 -0
  277. package/shortcutContexts/commands/selectAll.mjs +6 -0
  278. package/shortcutContexts/constants.js +13 -0
  279. package/shortcutContexts/constants.mjs +8 -0
  280. package/shortcutContexts/editor.js +25 -0
  281. package/shortcutContexts/editor.mjs +21 -0
  282. package/shortcutContexts/grid.js +163 -0
  283. package/shortcutContexts/grid.mjs +159 -0
  284. package/shortcutContexts/index.js +24 -0
  285. package/shortcutContexts/index.mjs +11 -0
  286. package/shortcuts/manager.js +2 -0
  287. package/shortcuts/manager.mjs +2 -0
  288. package/shortcuts/recorder.js +2 -2
  289. package/shortcuts/recorder.mjs +2 -2
  290. package/shortcuts/utils.js +19 -5
  291. package/shortcuts/utils.mjs +18 -4
  292. package/tableView.js +67 -13
  293. package/tableView.mjs +67 -13
  294. package/3rdparty/walkontable/src/selection.js +0 -295
  295. package/3rdparty/walkontable/src/selection.mjs +0 -290
  296. package/selection/highlight/constants.js +0 -15
  297. package/selection/highlight/constants.mjs +0 -6
  298. package/selection/highlight/types/index.js +0 -35
  299. package/selection/highlight/types/index.mjs +0 -31
@@ -4,25 +4,41 @@ 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");
7
8
  var _object = require("../../helpers/object");
8
9
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
9
10
  var _base = require("../base");
10
11
  var _commentEditor = _interopRequireDefault(require("./commentEditor"));
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; }
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"));
16
17
  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; }
17
28
  const PLUGIN_KEY = 'comments';
18
29
  exports.PLUGIN_KEY = PLUGIN_KEY;
19
30
  const PLUGIN_PRIORITY = 60;
20
31
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
21
- const privatePool = new WeakMap();
22
32
  const META_COMMENT = 'comment';
33
+ exports.META_COMMENT = META_COMMENT;
23
34
  const META_COMMENT_VALUE = 'value';
35
+ exports.META_COMMENT_VALUE = META_COMMENT_VALUE;
24
36
  const META_STYLE = 'style';
37
+ exports.META_STYLE = META_STYLE;
25
38
  const META_READONLY = 'readOnly';
39
+ exports.META_READONLY = META_READONLY;
40
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
41
+ const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
26
42
 
27
43
  /* eslint-disable jsdoc/require-description-complete-sentence */
28
44
  /**
@@ -114,55 +130,107 @@ const META_READONLY = 'readOnly';
114
130
  * ```
115
131
  * :::
116
132
  */
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();
117
140
  class Comments extends _base.BasePlugin {
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);
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);
126
156
  /**
127
157
  * Instance of {@link CommentEditor}.
128
158
  *
129
159
  * @private
130
160
  * @type {CommentEditor}
131
161
  */
132
- this.editor = null;
162
+ _classPrivateFieldInitSpec(this, _editor, {
163
+ writable: true,
164
+ value: null
165
+ });
133
166
  /**
134
167
  * Instance of {@link DisplaySwitch}.
135
168
  *
136
169
  * @private
137
170
  * @type {DisplaySwitch}
138
171
  */
139
- this.displaySwitch = null;
172
+ _classPrivateFieldInitSpec(this, _displaySwitch, {
173
+ writable: true,
174
+ value: null
175
+ });
140
176
  /**
141
- * Instance of {@link EventManager}.
177
+ * Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
142
178
  *
143
179
  * @private
144
- * @type {EventManager}
180
+ * @type {boolean}
145
181
  */
146
- this.eventManager = null;
182
+ _classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
183
+ writable: true,
184
+ value: false
185
+ });
147
186
  /**
148
- * Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
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.
149
189
  *
190
+ * @private
191
+ * @type {boolean}
192
+ */
193
+ _classPrivateFieldInitSpec(this, _preventEditorHiding, {
194
+ writable: true,
195
+ value: false
196
+ });
197
+ /**
198
+ * The property for holding editor dimensions for further processing.
199
+ *
200
+ * @private
150
201
  * @type {object}
151
202
  */
152
- this.range = {};
203
+ _classPrivateFieldInitSpec(this, _tempEditorDimensions, {
204
+ writable: true,
205
+ value: {}
206
+ });
153
207
  /**
154
- * Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
208
+ * The flag that allows processing mousedown event correctly when comments editor is triggered.
155
209
  *
156
210
  * @private
157
211
  * @type {boolean}
158
212
  */
159
- this.preventEditorAutoSwitch = false;
160
- privatePool.set(this, {
161
- tempEditorDimensions: {},
162
- cellBelowCursor: null
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: ''
163
226
  });
164
227
  }
165
-
228
+ static get PLUGIN_KEY() {
229
+ return PLUGIN_KEY;
230
+ }
231
+ static get PLUGIN_PRIORITY() {
232
+ return PLUGIN_PRIORITY;
233
+ }
166
234
  /**
167
235
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
168
236
  * hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
@@ -180,22 +248,23 @@ class Comments extends _base.BasePlugin {
180
248
  if (this.enabled) {
181
249
  return;
182
250
  }
183
- if (!this.editor) {
184
- this.editor = new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl());
251
+ if (!_classPrivateFieldGet(this, _editor)) {
252
+ _classPrivateFieldSet(this, _editor, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()));
185
253
  }
186
254
  if (!this.eventManager) {
187
255
  this.eventManager = new _eventManager.default(this);
188
256
  }
189
- if (!this.displaySwitch) {
190
- this.displaySwitch = new _displaySwitch.default(this.getDisplayDelaySetting());
257
+ if (!_classPrivateFieldGet(this, _displaySwitch)) {
258
+ _classPrivateFieldSet(this, _displaySwitch, new _displaySwitch2.default(this.getDisplayDelaySetting()));
191
259
  }
192
260
  this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
193
261
  this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => this.onAfterRenderer(TD, cellProperties));
194
- this.addHook('afterScrollHorizontally', () => this.hide());
195
- this.addHook('afterScrollVertically', () => this.hide());
262
+ this.addHook('afterScroll', () => this.onAfterScroll());
196
263
  this.addHook('afterBeginEditing', () => this.hide());
197
- this.displaySwitch.addLocalHook('hide', () => this.hide());
198
- this.displaySwitch.addLocalHook('show', (row, col) => this.showAtCell(row, col));
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();
199
268
  this.registerListeners();
200
269
  super.enablePlugin();
201
270
  }
@@ -207,19 +276,85 @@ class Comments extends _base.BasePlugin {
207
276
  * - [`comments`](@/api/options.md#comments)
208
277
  */
209
278
  updatePlugin() {
210
- this.disablePlugin();
211
- this.enablePlugin();
279
+ _classPrivateFieldGet(this, _displaySwitch).updateDelay(this.getDisplayDelaySetting());
212
280
  super.updatePlugin();
213
- this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
214
281
  }
215
282
 
216
283
  /**
217
284
  * Disables the plugin functionality for this Handsontable instance.
218
285
  */
219
286
  disablePlugin() {
287
+ this.unregisterShortcuts();
220
288
  super.disablePlugin();
221
289
  }
222
290
 
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
+
223
358
  /**
224
359
  * Registers all necessary DOM listeners.
225
360
  *
@@ -229,12 +364,14 @@ class Comments extends _base.BasePlugin {
229
364
  const {
230
365
  rootDocument
231
366
  } = this.hot;
367
+ const editorElement = this.getEditorInputElement();
232
368
  this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
233
369
  this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
234
370
  this.eventManager.addEventListener(rootDocument, 'mouseup', () => this.onMouseUp());
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));
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));
238
375
  }
239
376
 
240
377
  /**
@@ -273,7 +410,7 @@ class Comments extends _base.BasePlugin {
273
410
  * @returns {boolean}
274
411
  */
275
412
  targetIsCommentTextArea(event) {
276
- return this.editor.getInputElement() === event.target;
413
+ return this.getEditorInputElement() === event.target;
277
414
  }
278
415
 
279
416
  /**
@@ -285,7 +422,7 @@ class Comments extends _base.BasePlugin {
285
422
  if (!this.range.from) {
286
423
  throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
287
424
  }
288
- const editorValue = this.editor.getValue();
425
+ const editorValue = _classPrivateFieldGet(this, _editor).getValue();
289
426
  let comment = '';
290
427
  if (value !== null && value !== void 0) {
291
428
  comment = value;
@@ -387,8 +524,9 @@ class Comments extends _base.BasePlugin {
387
524
  return false;
388
525
  }
389
526
  const meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col);
390
- this.editor.setValue(meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null || '');
391
- this.editor.show();
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();
392
530
  this.refreshEditor(true);
393
531
  return true;
394
532
  }
@@ -411,7 +549,7 @@ class Comments extends _base.BasePlugin {
411
549
  * Hides the comment editor.
412
550
  */
413
551
  hide() {
414
- this.editor.hide();
552
+ _classPrivateFieldGet(this, _editor).hide();
415
553
  }
416
554
 
417
555
  /**
@@ -422,7 +560,7 @@ class Comments extends _base.BasePlugin {
422
560
  refreshEditor() {
423
561
  var _renderableRow, _renderableColumn;
424
562
  let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
425
- if (!force && (!this.range.from || !this.editor.isVisible())) {
563
+ if (!force && (!this.range.from || !_classPrivateFieldGet(this, _editor).isVisible())) {
426
564
  return;
427
565
  }
428
566
  const {
@@ -440,7 +578,7 @@ class Comments extends _base.BasePlugin {
440
578
 
441
579
  // Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
442
580
  // previous position
443
- this.editor.setPosition(0, 0);
581
+ _classPrivateFieldGet(this, _editor).setPosition(0, 0);
444
582
  if (renderableRow === null) {
445
583
  renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
446
584
  }
@@ -468,9 +606,9 @@ class Comments extends _base.BasePlugin {
468
606
  }, true);
469
607
  const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
470
608
  if (commentStyle) {
471
- this.editor.setSize(commentStyle.width, commentStyle.height);
609
+ _classPrivateFieldGet(this, _editor).setSize(commentStyle.width, commentStyle.height);
472
610
  } else {
473
- this.editor.resetSize();
611
+ _classPrivateFieldGet(this, _editor).resetSize();
474
612
  }
475
613
  const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
476
614
  const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? (0, _element.outerHeight)(TD) : 0;
@@ -483,7 +621,7 @@ class Comments extends _base.BasePlugin {
483
621
  const {
484
622
  width: editorWidth,
485
623
  height: editorHeight
486
- } = this.editor.getSize();
624
+ } = _classPrivateFieldGet(this, _editor).getSize();
487
625
  const {
488
626
  innerWidth,
489
627
  innerHeight
@@ -504,28 +642,15 @@ class Comments extends _base.BasePlugin {
504
642
  if (top + editorHeight > innerHeight) {
505
643
  y -= editorHeight - cellHeight + 1;
506
644
  }
507
- this.editor.setPosition(x, y);
508
- this.editor.setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
645
+ _classPrivateFieldGet(this, _editor).setPosition(x, y);
646
+ _classPrivateFieldGet(this, _editor).setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
509
647
  }
510
648
 
511
649
  /**
512
- * Checks if there is a comment for selected range.
513
- *
514
- * @private
515
- * @returns {boolean}
650
+ * Focuses the comments editor element.
516
651
  */
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;
652
+ focusEditor() {
653
+ _classPrivateFieldGet(this, _editor).focus();
529
654
  }
530
655
 
531
656
  /**
@@ -573,7 +698,7 @@ class Comments extends _base.BasePlugin {
573
698
  if (!this.hot.view || !this.hot.view._wt) {
574
699
  return;
575
700
  }
576
- if (!this.preventEditorAutoSwitch && !this.targetIsCommentTextArea(event)) {
701
+ if (!_classPrivateFieldGet(this, _preventEditorAutoSwitch) && !this.targetIsCommentTextArea(event)) {
577
702
  const eventCell = (0, _element.closest)(event.target, 'TD', 'TBODY');
578
703
  let coordinates = null;
579
704
  if (eventCell) {
@@ -592,19 +717,18 @@ class Comments extends _base.BasePlugin {
592
717
  * @param {MouseEvent} event The `mouseover` event.
593
718
  */
594
719
  onMouseOver(event) {
595
- const priv = privatePool.get(this);
596
720
  const {
597
721
  rootDocument
598
722
  } = this.hot;
599
- if (this.preventEditorAutoSwitch || this.editor.isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || priv.cellBelowCursor === event.target || !this.editor) {
723
+ if (_classPrivateFieldGet(this, _preventEditorAutoSwitch) || _classPrivateFieldGet(this, _editor).isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || _classPrivateFieldGet(this, _cellBelowCursor) === event.target || !_classPrivateFieldGet(this, _editor)) {
600
724
  return;
601
725
  }
602
- priv.cellBelowCursor = rootDocument.elementFromPoint(event.clientX, event.clientY);
726
+ _classPrivateFieldSet(this, _cellBelowCursor, rootDocument.elementFromPoint(event.clientX, event.clientY));
603
727
  if (this.targetIsCellWithComment(event)) {
604
728
  const range = this.hot._createCellRange(this.hot.getCoords(event.target));
605
- this.displaySwitch.show(range);
729
+ _classPrivateFieldGet(this, _displaySwitch).show(range);
606
730
  } else if ((0, _element.isChildOf)(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
607
- this.displaySwitch.hide();
731
+ _classPrivateFieldGet(this, _displaySwitch).hide();
608
732
  }
609
733
  }
610
734
 
@@ -614,7 +738,7 @@ class Comments extends _base.BasePlugin {
614
738
  * @private
615
739
  */
616
740
  onMouseUp() {
617
- this.preventEditorAutoSwitch = false;
741
+ _classPrivateFieldSet(this, _preventEditorAutoSwitch, false);
618
742
  }
619
743
 
620
744
  /**
@@ -631,14 +755,29 @@ class Comments extends _base.BasePlugin {
631
755
  }
632
756
 
633
757
  /**
634
- * `blur` event callback for the comment editor.
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.
635
760
  *
636
761
  * @private
637
762
  */
638
763
  onEditorBlur() {
764
+ _classPrivateFieldSet(this, _commentValueBeforeSave, '');
765
+ this.hot.getShortcutManager().setActiveContextName('grid');
639
766
  this.setComment();
640
767
  }
641
768
 
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
+
642
781
  /**
643
782
  * `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
644
783
  *
@@ -646,11 +785,10 @@ class Comments extends _base.BasePlugin {
646
785
  * @param {MouseEvent} event The `mousedown` event.
647
786
  */
648
787
  onEditorMouseDown(event) {
649
- const priv = privatePool.get(this);
650
- priv.tempEditorDimensions = {
788
+ _classPrivateFieldSet(this, _tempEditorDimensions, {
651
789
  width: (0, _element.outerWidth)(event.target),
652
790
  height: (0, _element.outerHeight)(event.target)
653
- };
791
+ });
654
792
  }
655
793
 
656
794
  /**
@@ -660,10 +798,9 @@ class Comments extends _base.BasePlugin {
660
798
  * @param {MouseEvent} event The `mouseup` event.
661
799
  */
662
800
  onEditorMouseUp(event) {
663
- const priv = privatePool.get(this);
664
801
  const currentWidth = (0, _element.outerWidth)(event.target);
665
802
  const currentHeight = (0, _element.outerHeight)(event.target);
666
- if (currentWidth !== priv.tempEditorDimensions.width + 1 || currentHeight !== priv.tempEditorDimensions.height + 2) {
803
+ if (currentWidth !== _classPrivateFieldGet(this, _tempEditorDimensions).width + 1 || currentHeight !== _classPrivateFieldGet(this, _tempEditorDimensions).height + 2) {
667
804
  this.updateCommentMeta(this.range.from.row, this.range.from.col, {
668
805
  [META_STYLE]: {
669
806
  width: currentWidth,
@@ -674,121 +811,36 @@ class Comments extends _base.BasePlugin {
674
811
  }
675
812
 
676
813
  /**
677
- * Context Menu's "Add comment" callback. Results in showing the comment editor.
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.
678
816
  *
679
- * @private
680
- */
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();
691
- }
692
-
693
- /**
694
- * Context Menu's "remove comment" callback.
695
- *
696
- * @private
817
+ * @param {Event} event The keydown event.
697
818
  */
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();
819
+ onAfterDocumentKeyDown(event) {
820
+ if (_classPrivateFieldGet(this, _editor).isVisible()) {
821
+ (0, _event.stopImmediatePropagation)(event);
822
+ }
707
823
  }
708
824
 
709
825
  /**
710
- * Context Menu's "make comment read-only" callback.
711
- *
712
- * @private
826
+ * Observes the changes in the scroll position if triggered it hides the comment editor.
713
827
  */
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
- });
828
+ onAfterScroll() {
829
+ if (!_classPrivateFieldGet(this, _preventEditorHiding)) {
830
+ this.hide();
831
+ }
725
832
  }
726
833
 
727
834
  /**
728
835
  * Add Comments plugin options to the Context Menu.
729
836
  *
730
837
  * @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
- });
838
+ * @param {object} options The menu options.
839
+ */
840
+ addToContextMenu(options) {
841
+ options.items.push({
842
+ name: _predefinedItems.SEPARATOR
843
+ }, (0, _addEditComment.default)(this), (0, _removeComment.default)(this), (0, _readOnlyComment.default)(this));
792
844
  }
793
845
 
794
846
  /**
@@ -804,15 +856,25 @@ class Comments extends _base.BasePlugin {
804
856
  }
805
857
  }
806
858
 
859
+ /**
860
+ * Gets the editors input element.
861
+ *
862
+ * @private
863
+ * @returns {HTMLTextAreaElement}
864
+ */
865
+ getEditorInputElement() {
866
+ return _classPrivateFieldGet(this, _editor).getInputElement();
867
+ }
868
+
807
869
  /**
808
870
  * Destroys the plugin instance.
809
871
  */
810
872
  destroy() {
811
- if (this.editor) {
812
- this.editor.destroy();
873
+ if (_classPrivateFieldGet(this, _editor)) {
874
+ _classPrivateFieldGet(this, _editor).destroy();
813
875
  }
814
- if (this.displaySwitch) {
815
- this.displaySwitch.destroy();
876
+ if (_classPrivateFieldGet(this, _displaySwitch)) {
877
+ _classPrivateFieldGet(this, _displaySwitch).destroy();
816
878
  }
817
879
  super.destroy();
818
880
  }