handsontable 13.1.0 → 14.0.0-next-e8f87aa-20231030

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/3rdparty/walkontable/src/calculator/constants.js +3 -6
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
  4. package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
  5. package/3rdparty/walkontable/src/cell/coords.js +81 -13
  6. package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
  7. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  8. package/3rdparty/walkontable/src/cell/range.js +39 -9
  9. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  10. package/3rdparty/walkontable/src/core/_base.js +9 -3
  11. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  12. package/3rdparty/walkontable/src/core/clone.js +2 -2
  13. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  14. package/3rdparty/walkontable/src/core/core.js +3 -2
  15. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  16. package/3rdparty/walkontable/src/event.js +13 -12
  17. package/3rdparty/walkontable/src/event.mjs +12 -10
  18. package/3rdparty/walkontable/src/facade/core.js +2 -2
  19. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  20. package/3rdparty/walkontable/src/filter/column.js +1 -2
  21. package/3rdparty/walkontable/src/filter/row.js +1 -2
  22. package/3rdparty/walkontable/src/index.js +12 -4
  23. package/3rdparty/walkontable/src/index.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  25. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  26. package/3rdparty/walkontable/src/overlay/constants.js +7 -14
  27. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  28. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  29. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  30. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  31. package/3rdparty/walkontable/src/overlays.js +1 -2
  32. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  33. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  34. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -0
  35. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
  36. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
  37. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -0
  38. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  39. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  40. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  41. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  42. package/3rdparty/walkontable/src/scroll.js +3 -2
  43. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  44. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
  45. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  46. package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
  47. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  48. package/3rdparty/walkontable/src/selection/constants.js +54 -0
  49. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  50. package/3rdparty/walkontable/src/selection/index.js +26 -0
  51. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  52. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  53. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  54. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  55. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  56. package/3rdparty/walkontable/src/selection/selection.js +100 -0
  57. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  58. package/3rdparty/walkontable/src/settings.js +13 -4
  59. package/3rdparty/walkontable/src/settings.mjs +13 -4
  60. package/3rdparty/walkontable/src/table/bottom.js +1 -2
  61. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
  62. package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
  63. package/3rdparty/walkontable/src/table/master.js +3 -6
  64. package/3rdparty/walkontable/src/table/master.mjs +2 -4
  65. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
  66. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  67. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
  68. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  69. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
  70. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
  72. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  73. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
  74. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  75. package/3rdparty/walkontable/src/table/top.js +1 -2
  76. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
  77. package/3rdparty/walkontable/src/table.js +20 -80
  78. package/3rdparty/walkontable/src/table.mjs +20 -79
  79. package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
  80. package/3rdparty/walkontable/src/viewport.js +1 -2
  81. package/CHANGELOG.md +51 -0
  82. package/base.js +3 -4
  83. package/base.mjs +2 -2
  84. package/cellTypes/autocompleteType/autocompleteType.js +3 -5
  85. package/cellTypes/checkboxType/checkboxType.js +3 -5
  86. package/cellTypes/dateType/dateType.d.ts +3 -3
  87. package/cellTypes/dateType/dateType.js +5 -7
  88. package/cellTypes/dateType/dateType.mjs +2 -2
  89. package/cellTypes/dropdownType/dropdownType.js +3 -5
  90. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  91. package/cellTypes/handsontableType/handsontableType.js +5 -7
  92. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  93. package/cellTypes/index.d.ts +3 -0
  94. package/cellTypes/index.js +4 -0
  95. package/cellTypes/index.mjs +3 -1
  96. package/cellTypes/numericType/numericType.js +3 -5
  97. package/cellTypes/passwordType/passwordType.js +3 -5
  98. package/cellTypes/selectType/index.d.ts +1 -0
  99. package/cellTypes/selectType/index.js +6 -0
  100. package/cellTypes/selectType/index.mjs +1 -0
  101. package/cellTypes/selectType/selectType.d.ts +14 -0
  102. package/cellTypes/selectType/selectType.js +11 -0
  103. package/cellTypes/selectType/selectType.mjs +8 -0
  104. package/cellTypes/textType/textType.js +3 -5
  105. package/cellTypes/timeType/timeType.js +3 -5
  106. package/common.d.ts +1 -1
  107. package/core/focusCatcher/focusDetector.js +63 -0
  108. package/core/focusCatcher/focusDetector.mjs +59 -0
  109. package/core/focusCatcher/index.js +148 -0
  110. package/core/focusCatcher/index.mjs +144 -0
  111. package/core/index.js +9 -0
  112. package/core/index.mjs +1 -0
  113. package/core.d.ts +10 -5
  114. package/core.js +327 -359
  115. package/core.mjs +327 -359
  116. package/dataMap/dataMap.js +1 -2
  117. package/dataMap/dataSource.js +1 -2
  118. package/dataMap/metaManager/metaSchema.js +65 -0
  119. package/dataMap/metaManager/metaSchema.mjs +65 -0
  120. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  121. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  122. package/dataMap/replaceData.js +5 -0
  123. package/dataMap/replaceData.mjs +5 -0
  124. package/dist/handsontable.css +94 -76
  125. package/dist/handsontable.full.css +94 -76
  126. package/dist/handsontable.full.js +23133 -15992
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +21856 -15085
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +30 -22
  132. package/dist/languages/all.js +47 -40
  133. package/dist/languages/all.min.js +1 -1
  134. package/dist/languages/ar-AR.js +1 -2
  135. package/dist/languages/cs-CZ.js +1 -2
  136. package/dist/languages/de-CH.js +1 -2
  137. package/dist/languages/de-DE.js +1 -2
  138. package/dist/languages/en-US.js +15 -3
  139. package/dist/languages/en-US.min.js +1 -1
  140. package/dist/languages/es-MX.js +1 -2
  141. package/dist/languages/fr-FR.js +1 -2
  142. package/dist/languages/it-IT.js +1 -2
  143. package/dist/languages/ja-JP.js +1 -2
  144. package/dist/languages/ko-KR.js +1 -2
  145. package/dist/languages/lv-LV.js +1 -2
  146. package/dist/languages/nb-NO.js +1 -2
  147. package/dist/languages/nl-NL.js +1 -2
  148. package/dist/languages/pl-PL.js +15 -3
  149. package/dist/languages/pl-PL.min.js +1 -1
  150. package/dist/languages/pt-BR.js +1 -2
  151. package/dist/languages/ru-RU.js +1 -2
  152. package/dist/languages/sr-SP.js +1 -2
  153. package/dist/languages/zh-CN.js +1 -2
  154. package/dist/languages/zh-TW.js +1 -2
  155. package/editorManager.js +17 -91
  156. package/editorManager.mjs +16 -87
  157. package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
  158. package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
  159. package/editors/baseEditor/baseEditor.js +19 -13
  160. package/editors/baseEditor/baseEditor.mjs +16 -7
  161. package/editors/checkboxEditor/checkboxEditor.js +1 -2
  162. package/editors/dateEditor/dateEditor.js +27 -9
  163. package/editors/dateEditor/dateEditor.mjs +27 -8
  164. package/editors/dropdownEditor/dropdownEditor.js +1 -2
  165. package/editors/handsontableEditor/handsontableEditor.js +14 -7
  166. package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
  167. package/editors/numericEditor/numericEditor.js +1 -2
  168. package/editors/passwordEditor/passwordEditor.js +1 -2
  169. package/editors/selectEditor/selectEditor.js +1 -2
  170. package/editors/textEditor/textEditor.js +20 -29
  171. package/editors/textEditor/textEditor.mjs +22 -30
  172. package/editors/timeEditor/timeEditor.js +1 -2
  173. package/eventManager.js +1 -2
  174. package/focusManager.d.ts +12 -0
  175. package/focusManager.js +265 -0
  176. package/focusManager.mjs +261 -0
  177. package/helpers/a11y.js +81 -0
  178. package/helpers/a11y.mjs +39 -0
  179. package/helpers/dom/element.js +224 -12
  180. package/helpers/dom/element.mjs +216 -10
  181. package/helpers/dom/event.d.ts +1 -0
  182. package/helpers/dom/event.js +25 -0
  183. package/helpers/dom/event.mjs +24 -0
  184. package/helpers/mixed.js +2 -2
  185. package/helpers/mixed.mjs +2 -2
  186. package/helpers/number.d.ts +1 -0
  187. package/helpers/number.js +18 -0
  188. package/helpers/number.mjs +17 -0
  189. package/helpers/unicode.js +1 -2
  190. package/i18n/constants.js +97 -160
  191. package/i18n/constants.mjs +17 -1
  192. package/i18n/languages/ar-AR.js +3 -4
  193. package/i18n/languages/cs-CZ.js +3 -4
  194. package/i18n/languages/de-CH.js +3 -4
  195. package/i18n/languages/de-DE.js +3 -4
  196. package/i18n/languages/en-US.js +17 -5
  197. package/i18n/languages/en-US.mjs +14 -1
  198. package/i18n/languages/es-MX.js +3 -4
  199. package/i18n/languages/fr-FR.js +3 -4
  200. package/i18n/languages/it-IT.js +3 -4
  201. package/i18n/languages/ja-JP.js +3 -4
  202. package/i18n/languages/ko-KR.js +3 -4
  203. package/i18n/languages/lv-LV.js +3 -4
  204. package/i18n/languages/nb-NO.js +3 -4
  205. package/i18n/languages/nl-NL.js +3 -4
  206. package/i18n/languages/pl-PL.js +17 -5
  207. package/i18n/languages/pl-PL.mjs +14 -1
  208. package/i18n/languages/pt-BR.js +3 -4
  209. package/i18n/languages/ru-RU.js +3 -4
  210. package/i18n/languages/sr-SP.js +3 -4
  211. package/i18n/languages/zh-CN.js +3 -4
  212. package/i18n/languages/zh-TW.js +3 -4
  213. package/i18n/registry.js +4 -6
  214. package/index.js +3 -4
  215. package/languages/all.js +47 -40
  216. package/languages/ar-AR.js +1 -2
  217. package/languages/cs-CZ.js +1 -2
  218. package/languages/de-CH.js +1 -2
  219. package/languages/de-DE.js +1 -2
  220. package/languages/en-US.js +15 -3
  221. package/languages/en-US.mjs +14 -1
  222. package/languages/es-MX.js +1 -2
  223. package/languages/fr-FR.js +1 -2
  224. package/languages/index.js +47 -40
  225. package/languages/it-IT.js +1 -2
  226. package/languages/ja-JP.js +1 -2
  227. package/languages/ko-KR.js +1 -2
  228. package/languages/lv-LV.js +1 -2
  229. package/languages/nb-NO.js +1 -2
  230. package/languages/nl-NL.js +1 -2
  231. package/languages/pl-PL.js +15 -3
  232. package/languages/pl-PL.mjs +14 -1
  233. package/languages/pt-BR.js +1 -2
  234. package/languages/ru-RU.js +1 -2
  235. package/languages/sr-SP.js +1 -2
  236. package/languages/zh-CN.js +1 -2
  237. package/languages/zh-TW.js +1 -2
  238. package/mixins/hooksRefRegisterer.js +1 -2
  239. package/mixins/localHooks.js +1 -2
  240. package/package.json +119 -96
  241. package/pluginHooks.d.ts +42 -7
  242. package/pluginHooks.js +301 -65
  243. package/pluginHooks.mjs +300 -63
  244. package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
  245. package/plugins/autoColumnSize/autoColumnSize.js +2 -4
  246. package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
  247. package/plugins/autoRowSize/autoRowSize.js +15 -10
  248. package/plugins/autoRowSize/autoRowSize.mjs +13 -6
  249. package/plugins/autofill/autofill.js +2 -4
  250. package/plugins/autofill/utils.js +1 -2
  251. package/plugins/base/base.js +1 -2
  252. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
  253. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
  254. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
  255. package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
  256. package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
  257. package/plugins/columnSorting/columnSorting.js +71 -6
  258. package/plugins/columnSorting/columnSorting.mjs +70 -3
  259. package/plugins/columnSorting/index.js +3 -1
  260. package/plugins/columnSorting/index.mjs +1 -1
  261. package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
  262. package/plugins/columnSorting/sortFunction/date.js +1 -2
  263. package/plugins/columnSorting/sortFunction/default.js +1 -2
  264. package/plugins/columnSorting/sortFunction/numeric.js +1 -2
  265. package/plugins/columnSorting/sortService/engine.js +3 -6
  266. package/plugins/columnSorting/utils.js +3 -6
  267. package/plugins/columnSummary/columnSummary.js +2 -4
  268. package/plugins/columnSummary/endpoints.js +1 -2
  269. package/plugins/comments/commentEditor.js +2 -2
  270. package/plugins/comments/commentEditor.mjs +1 -0
  271. package/plugins/comments/comments.js +254 -197
  272. package/plugins/comments/comments.mjs +251 -190
  273. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  274. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  275. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  276. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  277. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  278. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  279. package/plugins/comments/displaySwitch.js +1 -2
  280. package/plugins/contextMenu/commandExecutor.js +2 -3
  281. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  282. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  283. package/plugins/contextMenu/contextMenu.js +77 -40
  284. package/plugins/contextMenu/contextMenu.mjs +74 -35
  285. package/plugins/contextMenu/itemsFactory.js +2 -3
  286. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  287. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  288. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  289. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  290. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  291. package/plugins/contextMenu/menu/index.js +9 -0
  292. package/plugins/contextMenu/menu/index.mjs +1 -0
  293. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  294. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  295. package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
  296. package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
  297. package/plugins/contextMenu/menu/navigator.js +27 -0
  298. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  299. package/plugins/contextMenu/menu/positioner.js +213 -0
  300. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  301. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  302. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  303. package/plugins/contextMenu/menu/utils.js +177 -0
  304. package/plugins/contextMenu/menu/utils.mjs +163 -0
  305. package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
  306. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  307. package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
  308. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  309. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
  310. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  311. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
  312. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  313. package/plugins/contextMenu/predefinedItems/index.js +75 -0
  314. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  315. package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
  316. package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
  317. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  318. package/plugins/contextMenu/predefinedItems/redo.js +3 -4
  319. package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
  320. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  321. package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
  322. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  323. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
  324. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  325. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
  326. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  327. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  328. package/plugins/contextMenu/predefinedItems/undo.js +3 -4
  329. package/plugins/contextMenu/utils.js +35 -151
  330. package/plugins/contextMenu/utils.mjs +35 -144
  331. package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
  332. package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
  333. package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
  334. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
  335. package/plugins/copyPaste/clipboardData/index.js +9 -0
  336. package/plugins/copyPaste/clipboardData/index.mjs +4 -0
  337. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
  338. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
  339. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  340. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  341. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  342. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  343. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  344. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  345. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  346. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  347. package/plugins/copyPaste/contextMenuItem/cut.js +9 -2
  348. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  349. package/plugins/copyPaste/copyPaste.js +160 -167
  350. package/plugins/copyPaste/copyPaste.mjs +161 -166
  351. package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
  352. package/plugins/customBorders/contextMenuItem/left.js +2 -2
  353. package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
  354. package/plugins/customBorders/contextMenuItem/right.js +2 -2
  355. package/plugins/customBorders/contextMenuItem/top.js +2 -2
  356. package/plugins/customBorders/customBorders.js +27 -26
  357. package/plugins/customBorders/customBorders.mjs +24 -21
  358. package/plugins/dragToScroll/dragToScroll.js +2 -4
  359. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  360. package/plugins/dropdownMenu/dropdownMenu.js +130 -44
  361. package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
  362. package/plugins/exportFile/dataProvider.js +1 -2
  363. package/plugins/exportFile/exportFile.js +4 -6
  364. package/plugins/exportFile/typeFactory.js +5 -8
  365. package/plugins/exportFile/types/_base.js +1 -2
  366. package/plugins/exportFile/types/csv.js +1 -2
  367. package/plugins/filters/component/_base.js +23 -8
  368. package/plugins/filters/component/_base.mjs +23 -8
  369. package/plugins/filters/component/actionBar.js +31 -29
  370. package/plugins/filters/component/actionBar.mjs +26 -23
  371. package/plugins/filters/component/condition.js +48 -61
  372. package/plugins/filters/component/condition.mjs +40 -52
  373. package/plugins/filters/component/operators.js +21 -22
  374. package/plugins/filters/component/operators.mjs +18 -18
  375. package/plugins/filters/component/value.js +37 -28
  376. package/plugins/filters/component/value.mjs +32 -22
  377. package/plugins/filters/condition/beginsWith.js +3 -4
  378. package/plugins/filters/condition/between.js +3 -4
  379. package/plugins/filters/condition/byValue.js +1 -2
  380. package/plugins/filters/condition/contains.js +3 -4
  381. package/plugins/filters/condition/date/after.js +3 -4
  382. package/plugins/filters/condition/date/before.js +3 -4
  383. package/plugins/filters/condition/date/today.js +3 -4
  384. package/plugins/filters/condition/date/tomorrow.js +3 -4
  385. package/plugins/filters/condition/date/yesterday.js +3 -4
  386. package/plugins/filters/condition/empty.js +3 -4
  387. package/plugins/filters/condition/endsWith.js +3 -4
  388. package/plugins/filters/condition/equal.js +3 -4
  389. package/plugins/filters/condition/false.js +1 -2
  390. package/plugins/filters/condition/greaterThan.js +3 -4
  391. package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
  392. package/plugins/filters/condition/lessThan.js +3 -4
  393. package/plugins/filters/condition/lessThanOrEqual.js +3 -4
  394. package/plugins/filters/condition/none.js +3 -4
  395. package/plugins/filters/condition/notBetween.js +3 -4
  396. package/plugins/filters/condition/notContains.js +3 -4
  397. package/plugins/filters/condition/notEmpty.js +3 -4
  398. package/plugins/filters/condition/notEqual.js +3 -4
  399. package/plugins/filters/condition/true.js +1 -2
  400. package/plugins/filters/conditionCollection.d.ts +3 -2
  401. package/plugins/filters/conditionCollection.js +1 -2
  402. package/plugins/filters/conditionRegisterer.js +1 -2
  403. package/plugins/filters/conditionUpdateObserver.js +1 -2
  404. package/plugins/filters/constants.js +4 -8
  405. package/plugins/filters/constants.mjs +1 -1
  406. package/plugins/filters/dataFilter.js +1 -2
  407. package/plugins/filters/filters.d.ts +3 -5
  408. package/plugins/filters/filters.js +118 -67
  409. package/plugins/filters/filters.mjs +109 -56
  410. package/plugins/filters/logicalOperationRegisterer.js +1 -2
  411. package/plugins/filters/logicalOperations/conjunction.js +4 -6
  412. package/plugins/filters/logicalOperations/disjunction.js +4 -6
  413. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
  414. package/plugins/filters/menu/focusController.js +123 -0
  415. package/plugins/filters/menu/focusController.mjs +119 -0
  416. package/plugins/filters/menu/focusNavigator.js +30 -0
  417. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  418. package/plugins/filters/ui/_base.js +37 -15
  419. package/plugins/filters/ui/_base.mjs +35 -13
  420. package/plugins/filters/ui/input.js +43 -35
  421. package/plugins/filters/ui/input.mjs +42 -33
  422. package/plugins/filters/ui/link.js +44 -12
  423. package/plugins/filters/ui/link.mjs +44 -11
  424. package/plugins/filters/ui/multipleSelect.js +237 -133
  425. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  426. package/plugins/filters/ui/radioInput.js +42 -18
  427. package/plugins/filters/ui/radioInput.mjs +42 -17
  428. package/plugins/filters/ui/select.js +152 -77
  429. package/plugins/filters/ui/select.mjs +148 -72
  430. package/plugins/formulas/engine/settings.js +2 -4
  431. package/plugins/formulas/formulas.js +3 -6
  432. package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
  433. package/plugins/formulas/indexSyncer/index.js +1 -2
  434. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
  435. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  436. package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
  437. package/plugins/hiddenColumns/hiddenColumns.js +49 -6
  438. package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
  439. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
  440. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  441. package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
  442. package/plugins/hiddenRows/hiddenRows.js +49 -6
  443. package/plugins/hiddenRows/hiddenRows.mjs +48 -3
  444. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
  445. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
  446. package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
  447. package/plugins/manualColumnMove/manualColumnMove.js +9 -17
  448. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
  449. package/plugins/manualColumnMove/ui/_base.js +1 -2
  450. package/plugins/manualColumnMove/ui/backlight.js +1 -2
  451. package/plugins/manualColumnMove/ui/guideline.js +1 -2
  452. package/plugins/manualColumnResize/manualColumnResize.js +2 -4
  453. package/plugins/manualRowMove/manualRowMove.js +6 -23
  454. package/plugins/manualRowMove/manualRowMove.mjs +4 -19
  455. package/plugins/manualRowMove/ui/_base.js +1 -2
  456. package/plugins/manualRowMove/ui/backlight.js +1 -2
  457. package/plugins/manualRowMove/ui/guideline.js +1 -2
  458. package/plugins/manualRowResize/manualRowResize.js +2 -4
  459. package/plugins/mergeCells/calculations/autofill.js +1 -2
  460. package/plugins/mergeCells/calculations/selection.js +1 -2
  461. package/plugins/mergeCells/cellCoords.js +1 -2
  462. package/plugins/mergeCells/cellsCollection.js +1 -2
  463. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
  464. package/plugins/mergeCells/mergeCells.js +7 -20
  465. package/plugins/mergeCells/mergeCells.mjs +5 -16
  466. package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
  467. package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
  468. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
  469. package/plugins/nestedHeaders/nestedHeaders.js +263 -36
  470. package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
  471. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  472. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  473. package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
  474. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  475. package/plugins/nestedRows/data/dataManager.js +1 -2
  476. package/plugins/nestedRows/nestedRows.js +47 -10
  477. package/plugins/nestedRows/nestedRows.mjs +45 -6
  478. package/plugins/nestedRows/ui/_base.js +1 -2
  479. package/plugins/nestedRows/ui/collapsing.js +1 -2
  480. package/plugins/nestedRows/ui/contextMenu.js +3 -4
  481. package/plugins/nestedRows/ui/headers.js +13 -3
  482. package/plugins/nestedRows/ui/headers.mjs +13 -2
  483. package/plugins/persistentState/persistentState.js +2 -4
  484. package/plugins/persistentState/storage.js +1 -2
  485. package/plugins/search/search.js +2 -4
  486. package/plugins/touchScroll/touchScroll.js +2 -4
  487. package/plugins/trimRows/trimRows.js +2 -4
  488. package/plugins/undoRedo/index.js +2 -2
  489. package/plugins/undoRedo/undoRedo.js +2 -4
  490. package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
  491. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  492. package/renderers/baseRenderer/baseRenderer.js +18 -2
  493. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  494. package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
  495. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  496. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  497. package/renderers/dateRenderer/dateRenderer.js +28 -0
  498. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  499. package/renderers/dateRenderer/index.d.ts +1 -0
  500. package/renderers/dateRenderer/index.js +6 -0
  501. package/renderers/dateRenderer/index.mjs +1 -0
  502. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  503. package/renderers/handsontableRenderer/handsontableRenderer.js +28 -0
  504. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  505. package/renderers/handsontableRenderer/index.d.ts +1 -0
  506. package/renderers/handsontableRenderer/index.js +6 -0
  507. package/renderers/handsontableRenderer/index.mjs +1 -0
  508. package/renderers/htmlRenderer/htmlRenderer.js +1 -2
  509. package/renderers/index.d.ts +9 -0
  510. package/renderers/numericRenderer/numericRenderer.js +1 -2
  511. package/renderers/passwordRenderer/passwordRenderer.js +1 -2
  512. package/renderers/selectRenderer/index.d.ts +1 -0
  513. package/renderers/selectRenderer/index.js +6 -0
  514. package/renderers/selectRenderer/index.mjs +1 -0
  515. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  516. package/renderers/selectRenderer/selectRenderer.js +26 -0
  517. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  518. package/renderers/textRenderer/textRenderer.js +1 -2
  519. package/renderers/timeRenderer/timeRenderer.js +1 -2
  520. package/selection/highlight/highlight.js +257 -73
  521. package/selection/highlight/highlight.mjs +250 -71
  522. package/selection/highlight/types/activeHeader.js +10 -8
  523. package/selection/highlight/types/activeHeader.mjs +10 -8
  524. package/selection/highlight/types/area.js +6 -18
  525. package/selection/highlight/types/area.mjs +6 -18
  526. package/selection/highlight/types/areaLayered.js +31 -0
  527. package/selection/highlight/types/areaLayered.mjs +26 -0
  528. package/selection/highlight/types/column.js +27 -0
  529. package/selection/highlight/types/column.mjs +22 -0
  530. package/selection/highlight/types/customSelection.js +7 -9
  531. package/selection/highlight/types/customSelection.mjs +7 -9
  532. package/selection/highlight/types/fill.js +5 -7
  533. package/selection/highlight/types/fill.mjs +5 -7
  534. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  535. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  536. package/selection/highlight/types/header.js +9 -18
  537. package/selection/highlight/types/header.mjs +9 -18
  538. package/selection/highlight/types/row.js +27 -0
  539. package/selection/highlight/types/row.mjs +22 -0
  540. package/selection/highlight/visualSelection.js +32 -29
  541. package/selection/highlight/visualSelection.mjs +31 -27
  542. package/selection/index.js +4 -7
  543. package/selection/index.mjs +2 -3
  544. package/selection/mouseEventHandler.js +7 -1
  545. package/selection/mouseEventHandler.mjs +7 -1
  546. package/selection/range.js +9 -10
  547. package/selection/range.mjs +8 -8
  548. package/selection/selection.js +334 -154
  549. package/selection/selection.mjs +330 -151
  550. package/selection/transformation.js +233 -94
  551. package/selection/transformation.mjs +232 -92
  552. package/selection/utils.js +20 -31
  553. package/selection/utils.mjs +16 -21
  554. package/settings.d.ts +4 -0
  555. package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
  556. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  557. package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
  558. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  559. package/shortcutContexts/commands/editor/fastOpen.js +15 -0
  560. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  561. package/shortcutContexts/commands/editor/index.js +16 -0
  562. package/shortcutContexts/commands/editor/index.mjs +12 -0
  563. package/shortcutContexts/commands/editor/open.js +26 -0
  564. package/shortcutContexts/commands/editor/open.mjs +23 -0
  565. package/shortcutContexts/commands/emptySelectedCells.js +10 -0
  566. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  567. package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
  568. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  569. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -0
  570. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  571. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  572. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  573. package/shortcutContexts/commands/extendCellsSelection/left.js +14 -0
  574. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  575. package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
  576. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  577. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
  578. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  579. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
  580. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  581. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
  582. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  583. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
  584. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  585. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
  586. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  587. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
  588. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  589. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
  590. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  591. package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
  592. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  593. package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
  594. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  595. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -0
  596. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  597. package/shortcutContexts/commands/index.js +35 -0
  598. package/shortcutContexts/commands/index.mjs +31 -0
  599. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  600. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  601. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -0
  602. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  603. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  604. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  605. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +11 -0
  606. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  607. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
  608. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  609. package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
  610. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  611. package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
  612. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  613. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  614. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  615. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  616. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  617. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  618. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  619. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  620. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  621. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
  622. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  623. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
  624. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  625. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  626. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  627. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  628. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  629. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  630. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  631. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
  632. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  633. package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
  634. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  635. package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
  636. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  637. package/shortcutContexts/commands/selectAll.js +11 -0
  638. package/shortcutContexts/commands/selectAll.mjs +8 -0
  639. package/shortcutContexts/constants.js +11 -0
  640. package/shortcutContexts/constants.mjs +8 -0
  641. package/shortcutContexts/editor.js +25 -0
  642. package/shortcutContexts/editor.mjs +21 -0
  643. package/shortcutContexts/grid.js +167 -0
  644. package/shortcutContexts/grid.mjs +163 -0
  645. package/shortcutContexts/index.js +24 -0
  646. package/shortcutContexts/index.mjs +11 -0
  647. package/shortcuts/context.d.ts +1 -0
  648. package/shortcuts/context.js +23 -4
  649. package/shortcuts/context.mjs +23 -5
  650. package/shortcuts/manager.js +31 -7
  651. package/shortcuts/manager.mjs +32 -7
  652. package/shortcuts/recorder.js +30 -14
  653. package/shortcuts/recorder.mjs +30 -14
  654. package/shortcuts/utils.js +19 -5
  655. package/shortcuts/utils.mjs +18 -4
  656. package/tableView.js +113 -16
  657. package/tableView.mjs +113 -15
  658. package/utils/dataStructures/linkedList.js +1 -2
  659. package/utils/dataStructures/priorityMap.js +2 -4
  660. package/utils/dataStructures/queue.js +1 -2
  661. package/utils/dataStructures/stack.js +1 -2
  662. package/utils/dataStructures/tree.js +3 -6
  663. package/utils/ghostTable.js +32 -17
  664. package/utils/ghostTable.mjs +31 -15
  665. package/utils/interval.js +1 -2
  666. package/utils/paginator.js +151 -0
  667. package/utils/paginator.mjs +147 -0
  668. package/utils/parseTable.js +527 -83
  669. package/utils/parseTable.mjs +523 -82
  670. package/utils/rootInstance.js +2 -4
  671. package/utils/samplesGenerator.js +21 -13
  672. package/utils/samplesGenerator.mjs +20 -11
  673. package/utils/staticRegister.js +1 -2
  674. package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
  675. package/validators/dateValidator/dateValidator.js +1 -2
  676. package/validators/numericValidator/numericValidator.js +1 -2
  677. package/validators/timeValidator/timeValidator.js +1 -2
  678. package/3rdparty/walkontable/src/selection.js +0 -295
  679. package/3rdparty/walkontable/src/selection.mjs +0 -290
  680. package/plugins/contextMenu/predefinedItems.js +0 -76
  681. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  682. package/plugins/copyPaste/clipboardData.js +0 -18
  683. package/plugins/copyPaste/clipboardData.mjs +0 -14
  684. package/plugins/copyPaste/focusableElement.js +0 -186
  685. package/plugins/copyPaste/focusableElement.mjs +0 -180
  686. package/plugins/copyPaste/pasteEvent.js +0 -14
  687. package/plugins/copyPaste/pasteEvent.mjs +0 -9
  688. package/selection/highlight/constants.js +0 -15
  689. package/selection/highlight/constants.mjs +0 -6
  690. package/selection/highlight/types/index.js +0 -35
  691. package/selection/highlight/types/index.mjs +0 -31
@@ -4,25 +4,35 @@ 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 }; }
17
- const PLUGIN_KEY = 'comments';
18
- exports.PLUGIN_KEY = PLUGIN_KEY;
19
- const PLUGIN_PRIORITY = 60;
20
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
21
- const privatePool = new WeakMap();
22
- const META_COMMENT = 'comment';
23
- const META_COMMENT_VALUE = 'value';
24
- const META_STYLE = 'style';
25
- const META_READONLY = 'readOnly';
18
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
19
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
20
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
22
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
23
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
24
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
25
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
26
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
27
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
28
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'comments';
29
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 60;
30
+ const META_COMMENT = exports.META_COMMENT = 'comment';
31
+ const META_COMMENT_VALUE = exports.META_COMMENT_VALUE = 'value';
32
+ const META_STYLE = exports.META_STYLE = 'style';
33
+ const META_READONLY = exports.META_READONLY = 'readOnly';
34
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
35
+ const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
26
36
 
27
37
  /* eslint-disable jsdoc/require-description-complete-sentence */
28
38
  /**
@@ -114,55 +124,107 @@ const META_READONLY = 'readOnly';
114
124
  * ```
115
125
  * :::
116
126
  */
127
+ var _editor = /*#__PURE__*/new WeakMap();
128
+ var _displaySwitch = /*#__PURE__*/new WeakMap();
129
+ var _preventEditorAutoSwitch = /*#__PURE__*/new WeakMap();
130
+ var _preventEditorHiding = /*#__PURE__*/new WeakMap();
131
+ var _tempEditorDimensions = /*#__PURE__*/new WeakMap();
132
+ var _cellBelowCursor = /*#__PURE__*/new WeakMap();
133
+ var _commentValueBeforeSave = /*#__PURE__*/new WeakMap();
117
134
  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);
135
+ constructor() {
136
+ super(...arguments);
137
+ /**
138
+ * Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
139
+ *
140
+ * @type {object}
141
+ */
142
+ _defineProperty(this, "range", {});
143
+ /**
144
+ * Instance of {@link EventManager}.
145
+ *
146
+ * @protected
147
+ * @type {EventManager}
148
+ */
149
+ _defineProperty(this, "eventManager", null);
126
150
  /**
127
151
  * Instance of {@link CommentEditor}.
128
152
  *
129
153
  * @private
130
154
  * @type {CommentEditor}
131
155
  */
132
- this.editor = null;
156
+ _classPrivateFieldInitSpec(this, _editor, {
157
+ writable: true,
158
+ value: null
159
+ });
133
160
  /**
134
161
  * Instance of {@link DisplaySwitch}.
135
162
  *
136
163
  * @private
137
164
  * @type {DisplaySwitch}
138
165
  */
139
- this.displaySwitch = null;
166
+ _classPrivateFieldInitSpec(this, _displaySwitch, {
167
+ writable: true,
168
+ value: null
169
+ });
140
170
  /**
141
- * Instance of {@link EventManager}.
171
+ * Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
142
172
  *
143
173
  * @private
144
- * @type {EventManager}
174
+ * @type {boolean}
145
175
  */
146
- this.eventManager = null;
176
+ _classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
177
+ writable: true,
178
+ value: false
179
+ });
147
180
  /**
148
- * Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
181
+ * Prevents hiding editor when the table viewport is scrolled and that scroll is triggered by the
182
+ * keyboard shortcut that insert or edits the comment.
149
183
  *
184
+ * @private
185
+ * @type {boolean}
186
+ */
187
+ _classPrivateFieldInitSpec(this, _preventEditorHiding, {
188
+ writable: true,
189
+ value: false
190
+ });
191
+ /**
192
+ * The property for holding editor dimensions for further processing.
193
+ *
194
+ * @private
150
195
  * @type {object}
151
196
  */
152
- this.range = {};
197
+ _classPrivateFieldInitSpec(this, _tempEditorDimensions, {
198
+ writable: true,
199
+ value: {}
200
+ });
153
201
  /**
154
- * Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
202
+ * The flag that allows processing mousedown event correctly when comments editor is triggered.
155
203
  *
156
204
  * @private
157
205
  * @type {boolean}
158
206
  */
159
- this.preventEditorAutoSwitch = false;
160
- privatePool.set(this, {
161
- tempEditorDimensions: {},
162
- cellBelowCursor: null
207
+ _classPrivateFieldInitSpec(this, _cellBelowCursor, {
208
+ writable: true,
209
+ value: null
210
+ });
211
+ /**
212
+ * Holds the comment value before it's actually saved to the cell meta.
213
+ *
214
+ * @private
215
+ * @type {string}
216
+ */
217
+ _classPrivateFieldInitSpec(this, _commentValueBeforeSave, {
218
+ writable: true,
219
+ value: ''
163
220
  });
164
221
  }
165
-
222
+ static get PLUGIN_KEY() {
223
+ return PLUGIN_KEY;
224
+ }
225
+ static get PLUGIN_PRIORITY() {
226
+ return PLUGIN_PRIORITY;
227
+ }
166
228
  /**
167
229
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
168
230
  * hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
@@ -180,22 +242,23 @@ class Comments extends _base.BasePlugin {
180
242
  if (this.enabled) {
181
243
  return;
182
244
  }
183
- if (!this.editor) {
184
- this.editor = new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl());
245
+ if (!_classPrivateFieldGet(this, _editor)) {
246
+ _classPrivateFieldSet(this, _editor, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()));
185
247
  }
186
248
  if (!this.eventManager) {
187
249
  this.eventManager = new _eventManager.default(this);
188
250
  }
189
- if (!this.displaySwitch) {
190
- this.displaySwitch = new _displaySwitch.default(this.getDisplayDelaySetting());
251
+ if (!_classPrivateFieldGet(this, _displaySwitch)) {
252
+ _classPrivateFieldSet(this, _displaySwitch, new _displaySwitch2.default(this.getDisplayDelaySetting()));
191
253
  }
192
254
  this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
193
255
  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());
256
+ this.addHook('afterScroll', () => this.onAfterScroll());
196
257
  this.addHook('afterBeginEditing', () => this.hide());
197
- this.displaySwitch.addLocalHook('hide', () => this.hide());
198
- this.displaySwitch.addLocalHook('show', (row, col) => this.showAtCell(row, col));
258
+ this.addHook('afterDocumentKeyDown', event => this.onAfterDocumentKeyDown(event));
259
+ _classPrivateFieldGet(this, _displaySwitch).addLocalHook('hide', () => this.hide());
260
+ _classPrivateFieldGet(this, _displaySwitch).addLocalHook('show', (row, col) => this.showAtCell(row, col));
261
+ this.registerShortcuts();
199
262
  this.registerListeners();
200
263
  super.enablePlugin();
201
264
  }
@@ -207,19 +270,85 @@ class Comments extends _base.BasePlugin {
207
270
  * - [`comments`](@/api/options.md#comments)
208
271
  */
209
272
  updatePlugin() {
210
- this.disablePlugin();
211
- this.enablePlugin();
273
+ _classPrivateFieldGet(this, _displaySwitch).updateDelay(this.getDisplayDelaySetting());
212
274
  super.updatePlugin();
213
- this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
214
275
  }
215
276
 
216
277
  /**
217
278
  * Disables the plugin functionality for this Handsontable instance.
218
279
  */
219
280
  disablePlugin() {
281
+ this.unregisterShortcuts();
220
282
  super.disablePlugin();
221
283
  }
222
284
 
285
+ /**
286
+ * Register shortcuts responsible for toggling context menu.
287
+ *
288
+ * @private
289
+ */
290
+ registerShortcuts() {
291
+ const manager = this.hot.getShortcutManager();
292
+ const gridContext = manager.getContext('grid');
293
+ const pluginContext = manager.addContext(SHORTCUTS_CONTEXT_NAME);
294
+ gridContext.addShortcut({
295
+ keys: [['Control', 'Alt', 'M']],
296
+ callback: () => {
297
+ const range = this.hot.getSelectedRangeLast();
298
+ _classPrivateFieldSet(this, _preventEditorHiding, true);
299
+ this.hot.scrollToFocusedCell(() => {
300
+ this.setRange(range);
301
+ this.show();
302
+ this.focusEditor();
303
+ manager.setActiveContextName(SHORTCUTS_CONTEXT_NAME);
304
+ this.hot._registerTimeout(() => {
305
+ _classPrivateFieldSet(this, _preventEditorHiding, false);
306
+ });
307
+ });
308
+ },
309
+ stopPropagation: true,
310
+ runOnlyIf: () => {
311
+ var _this$hot$getSelected;
312
+ return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(this, _editor).isVisible();
313
+ },
314
+ group: SHORTCUTS_GROUP
315
+ });
316
+ pluginContext.addShortcut({
317
+ keys: [['Escape']],
318
+ callback: () => {
319
+ _classPrivateFieldGet(this, _editor).setValue(_classPrivateFieldGet(this, _commentValueBeforeSave));
320
+ this.hide();
321
+ manager.setActiveContextName('grid');
322
+ },
323
+ runOnlyIf: () => {
324
+ var _this$hot$getSelected2;
325
+ return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
326
+ },
327
+ group: SHORTCUTS_GROUP
328
+ });
329
+ pluginContext.addShortcut({
330
+ keys: [['Control/Meta', 'Enter']],
331
+ callback: () => {
332
+ this.hide();
333
+ manager.setActiveContextName('grid');
334
+ },
335
+ runOnlyIf: () => {
336
+ var _this$hot$getSelected3;
337
+ return ((_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
338
+ },
339
+ group: SHORTCUTS_GROUP
340
+ });
341
+ }
342
+
343
+ /**
344
+ * Unregister shortcuts responsible for toggling context menu.
345
+ *
346
+ * @private
347
+ */
348
+ unregisterShortcuts() {
349
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
350
+ }
351
+
223
352
  /**
224
353
  * Registers all necessary DOM listeners.
225
354
  *
@@ -229,12 +358,14 @@ class Comments extends _base.BasePlugin {
229
358
  const {
230
359
  rootDocument
231
360
  } = this.hot;
361
+ const editorElement = this.getEditorInputElement();
232
362
  this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
233
363
  this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
234
364
  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));
365
+ this.eventManager.addEventListener(editorElement, 'focus', () => this.onEditorFocus());
366
+ this.eventManager.addEventListener(editorElement, 'blur', () => this.onEditorBlur());
367
+ this.eventManager.addEventListener(editorElement, 'mousedown', event => this.onEditorMouseDown(event));
368
+ this.eventManager.addEventListener(editorElement, 'mouseup', event => this.onEditorMouseUp(event));
238
369
  }
239
370
 
240
371
  /**
@@ -273,7 +404,7 @@ class Comments extends _base.BasePlugin {
273
404
  * @returns {boolean}
274
405
  */
275
406
  targetIsCommentTextArea(event) {
276
- return this.editor.getInputElement() === event.target;
407
+ return this.getEditorInputElement() === event.target;
277
408
  }
278
409
 
279
410
  /**
@@ -285,7 +416,7 @@ class Comments extends _base.BasePlugin {
285
416
  if (!this.range.from) {
286
417
  throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
287
418
  }
288
- const editorValue = this.editor.getValue();
419
+ const editorValue = _classPrivateFieldGet(this, _editor).getValue();
289
420
  let comment = '';
290
421
  if (value !== null && value !== void 0) {
291
422
  comment = value;
@@ -374,6 +505,7 @@ class Comments extends _base.BasePlugin {
374
505
  * @returns {boolean} Returns `true` if comment editor was shown.
375
506
  */
376
507
  show() {
508
+ var _ref;
377
509
  if (!this.range.from) {
378
510
  throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
379
511
  }
@@ -387,8 +519,9 @@ class Comments extends _base.BasePlugin {
387
519
  return false;
388
520
  }
389
521
  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();
522
+ _classPrivateFieldGet(this, _displaySwitch).cancelHiding();
523
+ _classPrivateFieldGet(this, _editor).setValue((_ref = meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null) !== null && _ref !== void 0 ? _ref : '');
524
+ _classPrivateFieldGet(this, _editor).show();
392
525
  this.refreshEditor(true);
393
526
  return true;
394
527
  }
@@ -411,7 +544,7 @@ class Comments extends _base.BasePlugin {
411
544
  * Hides the comment editor.
412
545
  */
413
546
  hide() {
414
- this.editor.hide();
547
+ _classPrivateFieldGet(this, _editor).hide();
415
548
  }
416
549
 
417
550
  /**
@@ -422,7 +555,7 @@ class Comments extends _base.BasePlugin {
422
555
  refreshEditor() {
423
556
  var _renderableRow, _renderableColumn;
424
557
  let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
425
- if (!force && (!this.range.from || !this.editor.isVisible())) {
558
+ if (!force && (!this.range.from || !_classPrivateFieldGet(this, _editor).isVisible())) {
426
559
  return;
427
560
  }
428
561
  const {
@@ -440,7 +573,7 @@ class Comments extends _base.BasePlugin {
440
573
 
441
574
  // Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
442
575
  // previous position
443
- this.editor.setPosition(0, 0);
576
+ _classPrivateFieldGet(this, _editor).setPosition(0, 0);
444
577
  if (renderableRow === null) {
445
578
  renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
446
579
  }
@@ -468,9 +601,9 @@ class Comments extends _base.BasePlugin {
468
601
  }, true);
469
602
  const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
470
603
  if (commentStyle) {
471
- this.editor.setSize(commentStyle.width, commentStyle.height);
604
+ _classPrivateFieldGet(this, _editor).setSize(commentStyle.width, commentStyle.height);
472
605
  } else {
473
- this.editor.resetSize();
606
+ _classPrivateFieldGet(this, _editor).resetSize();
474
607
  }
475
608
  const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
476
609
  const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? (0, _element.outerHeight)(TD) : 0;
@@ -483,7 +616,7 @@ class Comments extends _base.BasePlugin {
483
616
  const {
484
617
  width: editorWidth,
485
618
  height: editorHeight
486
- } = this.editor.getSize();
619
+ } = _classPrivateFieldGet(this, _editor).getSize();
487
620
  const {
488
621
  innerWidth,
489
622
  innerHeight
@@ -504,28 +637,15 @@ class Comments extends _base.BasePlugin {
504
637
  if (top + editorHeight > innerHeight) {
505
638
  y -= editorHeight - cellHeight + 1;
506
639
  }
507
- this.editor.setPosition(x, y);
508
- this.editor.setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
640
+ _classPrivateFieldGet(this, _editor).setPosition(x, y);
641
+ _classPrivateFieldGet(this, _editor).setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
509
642
  }
510
643
 
511
644
  /**
512
- * Checks if there is a comment for selected range.
513
- *
514
- * @private
515
- * @returns {boolean}
645
+ * Focuses the comments editor element.
516
646
  */
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;
647
+ focusEditor() {
648
+ _classPrivateFieldGet(this, _editor).focus();
529
649
  }
530
650
 
531
651
  /**
@@ -573,7 +693,7 @@ class Comments extends _base.BasePlugin {
573
693
  if (!this.hot.view || !this.hot.view._wt) {
574
694
  return;
575
695
  }
576
- if (!this.preventEditorAutoSwitch && !this.targetIsCommentTextArea(event)) {
696
+ if (!_classPrivateFieldGet(this, _preventEditorAutoSwitch) && !this.targetIsCommentTextArea(event)) {
577
697
  const eventCell = (0, _element.closest)(event.target, 'TD', 'TBODY');
578
698
  let coordinates = null;
579
699
  if (eventCell) {
@@ -592,19 +712,18 @@ class Comments extends _base.BasePlugin {
592
712
  * @param {MouseEvent} event The `mouseover` event.
593
713
  */
594
714
  onMouseOver(event) {
595
- const priv = privatePool.get(this);
596
715
  const {
597
716
  rootDocument
598
717
  } = this.hot;
599
- if (this.preventEditorAutoSwitch || this.editor.isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || priv.cellBelowCursor === event.target || !this.editor) {
718
+ if (_classPrivateFieldGet(this, _preventEditorAutoSwitch) || _classPrivateFieldGet(this, _editor).isFocused() || (0, _element.hasClass)(event.target, 'wtBorder') || _classPrivateFieldGet(this, _cellBelowCursor) === event.target || !_classPrivateFieldGet(this, _editor)) {
600
719
  return;
601
720
  }
602
- priv.cellBelowCursor = rootDocument.elementFromPoint(event.clientX, event.clientY);
721
+ _classPrivateFieldSet(this, _cellBelowCursor, rootDocument.elementFromPoint(event.clientX, event.clientY));
603
722
  if (this.targetIsCellWithComment(event)) {
604
723
  const range = this.hot._createCellRange(this.hot.getCoords(event.target));
605
- this.displaySwitch.show(range);
724
+ _classPrivateFieldGet(this, _displaySwitch).show(range);
606
725
  } else if ((0, _element.isChildOf)(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
607
- this.displaySwitch.hide();
726
+ _classPrivateFieldGet(this, _displaySwitch).hide();
608
727
  }
609
728
  }
610
729
 
@@ -614,7 +733,7 @@ class Comments extends _base.BasePlugin {
614
733
  * @private
615
734
  */
616
735
  onMouseUp() {
617
- this.preventEditorAutoSwitch = false;
736
+ _classPrivateFieldSet(this, _preventEditorAutoSwitch, false);
618
737
  }
619
738
 
620
739
  /**
@@ -631,14 +750,29 @@ class Comments extends _base.BasePlugin {
631
750
  }
632
751
 
633
752
  /**
634
- * `blur` event callback for the comment editor.
753
+ * Hook observer the "blur" event from the comments editor element. The hook clears the
754
+ * editor content and gives back the keyboard shortcuts control by switching to the "grid" context.
635
755
  *
636
756
  * @private
637
757
  */
638
758
  onEditorBlur() {
759
+ _classPrivateFieldSet(this, _commentValueBeforeSave, '');
760
+ this.hot.getShortcutManager().setActiveContextName('grid');
639
761
  this.setComment();
640
762
  }
641
763
 
764
+ /**
765
+ * Hook observer the "focus" event from the comments editor element. The hook takes the control of
766
+ * the keyboard shortcuts by switching the context to plugins one.
767
+ *
768
+ * @private
769
+ */
770
+ onEditorFocus() {
771
+ _classPrivateFieldSet(this, _commentValueBeforeSave, this.getComment());
772
+ this.hot.listen();
773
+ this.hot.getShortcutManager().setActiveContextName(SHORTCUTS_CONTEXT_NAME);
774
+ }
775
+
642
776
  /**
643
777
  * `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
644
778
  *
@@ -646,11 +780,10 @@ class Comments extends _base.BasePlugin {
646
780
  * @param {MouseEvent} event The `mousedown` event.
647
781
  */
648
782
  onEditorMouseDown(event) {
649
- const priv = privatePool.get(this);
650
- priv.tempEditorDimensions = {
783
+ _classPrivateFieldSet(this, _tempEditorDimensions, {
651
784
  width: (0, _element.outerWidth)(event.target),
652
785
  height: (0, _element.outerHeight)(event.target)
653
- };
786
+ });
654
787
  }
655
788
 
656
789
  /**
@@ -660,10 +793,9 @@ class Comments extends _base.BasePlugin {
660
793
  * @param {MouseEvent} event The `mouseup` event.
661
794
  */
662
795
  onEditorMouseUp(event) {
663
- const priv = privatePool.get(this);
664
796
  const currentWidth = (0, _element.outerWidth)(event.target);
665
797
  const currentHeight = (0, _element.outerHeight)(event.target);
666
- if (currentWidth !== priv.tempEditorDimensions.width + 1 || currentHeight !== priv.tempEditorDimensions.height + 2) {
798
+ if (currentWidth !== _classPrivateFieldGet(this, _tempEditorDimensions).width + 1 || currentHeight !== _classPrivateFieldGet(this, _tempEditorDimensions).height + 2) {
667
799
  this.updateCommentMeta(this.range.from.row, this.range.from.col, {
668
800
  [META_STYLE]: {
669
801
  width: currentWidth,
@@ -674,121 +806,36 @@ class Comments extends _base.BasePlugin {
674
806
  }
675
807
 
676
808
  /**
677
- * Context Menu's "Add comment" callback. Results in showing the comment editor.
809
+ * Observes the pressed keys and if there is already opened the comment editor prevents open
810
+ * the table editor into the fast edit mode.
678
811
  *
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
812
+ * @param {Event} event The keydown event.
697
813
  */
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();
814
+ onAfterDocumentKeyDown(event) {
815
+ if (_classPrivateFieldGet(this, _editor).isVisible()) {
816
+ (0, _event.stopImmediatePropagation)(event);
817
+ }
707
818
  }
708
819
 
709
820
  /**
710
- * Context Menu's "make comment read-only" callback.
711
- *
712
- * @private
821
+ * Observes the changes in the scroll position if triggered it hides the comment editor.
713
822
  */
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
- });
823
+ onAfterScroll() {
824
+ if (!_classPrivateFieldGet(this, _preventEditorHiding)) {
825
+ this.hide();
826
+ }
725
827
  }
726
828
 
727
829
  /**
728
830
  * Add Comments plugin options to the Context Menu.
729
831
  *
730
832
  * @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
- });
833
+ * @param {object} options The menu options.
834
+ */
835
+ addToContextMenu(options) {
836
+ options.items.push({
837
+ name: _predefinedItems.SEPARATOR
838
+ }, (0, _addEditComment.default)(this), (0, _removeComment.default)(this), (0, _readOnlyComment.default)(this));
792
839
  }
793
840
 
794
841
  /**
@@ -804,15 +851,25 @@ class Comments extends _base.BasePlugin {
804
851
  }
805
852
  }
806
853
 
854
+ /**
855
+ * Gets the editors input element.
856
+ *
857
+ * @private
858
+ * @returns {HTMLTextAreaElement}
859
+ */
860
+ getEditorInputElement() {
861
+ return _classPrivateFieldGet(this, _editor).getInputElement();
862
+ }
863
+
807
864
  /**
808
865
  * Destroys the plugin instance.
809
866
  */
810
867
  destroy() {
811
- if (this.editor) {
812
- this.editor.destroy();
868
+ if (_classPrivateFieldGet(this, _editor)) {
869
+ _classPrivateFieldGet(this, _editor).destroy();
813
870
  }
814
- if (this.displaySwitch) {
815
- this.displaySwitch.destroy();
871
+ if (_classPrivateFieldGet(this, _displaySwitch)) {
872
+ _classPrivateFieldGet(this, _displaySwitch).destroy();
816
873
  }
817
874
  super.destroy();
818
875
  }