handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-20231025

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