handsontable 11.1.0 → 12.1.0

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 (461) hide show
  1. package/3rdparty/walkontable/src/border.js +120 -98
  2. package/3rdparty/walkontable/src/border.mjs +120 -94
  3. package/3rdparty/walkontable/src/cell/coords.js +59 -17
  4. package/3rdparty/walkontable/src/cell/coords.mjs +55 -17
  5. package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
  6. package/3rdparty/walkontable/src/cell/range.js +278 -99
  7. package/3rdparty/walkontable/src/cell/range.mjs +273 -99
  8. package/3rdparty/walkontable/src/core/_base.js +452 -0
  9. package/3rdparty/walkontable/src/core/_base.mjs +440 -0
  10. package/3rdparty/walkontable/src/core/clone.js +97 -0
  11. package/3rdparty/walkontable/src/core/clone.mjs +80 -0
  12. package/3rdparty/walkontable/src/core/core.js +183 -0
  13. package/3rdparty/walkontable/src/core/core.mjs +160 -0
  14. package/3rdparty/walkontable/src/event.js +99 -66
  15. package/3rdparty/walkontable/src/event.mjs +99 -63
  16. package/3rdparty/walkontable/src/facade/core.js +251 -0
  17. package/3rdparty/walkontable/src/facade/core.mjs +243 -0
  18. package/3rdparty/walkontable/src/index.js +2 -46
  19. package/3rdparty/walkontable/src/index.mjs +3 -13
  20. package/3rdparty/walkontable/src/overlay/_base.js +124 -57
  21. package/3rdparty/walkontable/src/overlay/_base.mjs +124 -57
  22. package/3rdparty/walkontable/src/overlay/bottom.js +96 -80
  23. package/3rdparty/walkontable/src/overlay/bottom.mjs +96 -80
  24. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +45 -62
  25. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +44 -61
  26. package/3rdparty/walkontable/src/overlay/constants.js +25 -9
  27. package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
  28. package/3rdparty/walkontable/src/overlay/index.js +10 -19
  29. package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
  30. package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +113 -82
  31. package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +112 -81
  32. package/3rdparty/walkontable/src/overlay/top.js +93 -68
  33. package/3rdparty/walkontable/src/overlay/top.mjs +93 -68
  34. package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
  35. package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
  36. package/3rdparty/walkontable/src/overlays.js +225 -156
  37. package/3rdparty/walkontable/src/overlays.mjs +224 -154
  38. package/3rdparty/walkontable/src/renderer/cells.js +4 -3
  39. package/3rdparty/walkontable/src/renderer/cells.mjs +4 -3
  40. package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
  41. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  42. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  43. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  44. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  45. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
  46. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  47. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  48. package/3rdparty/walkontable/src/scroll.js +125 -104
  49. package/3rdparty/walkontable/src/scroll.mjs +124 -104
  50. package/3rdparty/walkontable/src/selection.js +10 -14
  51. package/3rdparty/walkontable/src/selection.mjs +10 -12
  52. package/3rdparty/walkontable/src/settings.js +235 -126
  53. package/3rdparty/walkontable/src/settings.mjs +235 -125
  54. package/3rdparty/walkontable/src/table/bottom.js +16 -5
  55. package/3rdparty/walkontable/src/table/bottom.mjs +15 -5
  56. package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +27 -15
  57. package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +26 -15
  58. package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +23 -15
  59. package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +22 -15
  60. package/3rdparty/walkontable/src/table/master.js +22 -12
  61. package/3rdparty/walkontable/src/table/master.mjs +22 -12
  62. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
  63. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
  64. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
  65. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
  66. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
  67. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
  68. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
  69. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
  70. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
  72. package/3rdparty/walkontable/src/table/top.js +16 -5
  73. package/3rdparty/walkontable/src/table/top.mjs +15 -5
  74. package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +27 -15
  75. package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +26 -15
  76. package/3rdparty/walkontable/src/table.js +235 -140
  77. package/3rdparty/walkontable/src/table.mjs +231 -134
  78. package/3rdparty/walkontable/src/types.js +103 -0
  79. package/3rdparty/walkontable/src/types.mjs +102 -0
  80. package/3rdparty/walkontable/src/utils/column.js +22 -33
  81. package/3rdparty/walkontable/src/utils/column.mjs +22 -30
  82. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
  83. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  84. package/3rdparty/walkontable/src/utils/row.js +9 -4
  85. package/3rdparty/walkontable/src/utils/row.mjs +9 -4
  86. package/3rdparty/walkontable/src/viewport.js +89 -100
  87. package/3rdparty/walkontable/src/viewport.mjs +89 -97
  88. package/CHANGELOG.md +92 -0
  89. package/LICENSE.txt +1 -1
  90. package/README.md +0 -1
  91. package/base.js +2 -2
  92. package/base.mjs +2 -2
  93. package/cellTypes/timeType/timeType.d.ts +6 -6
  94. package/cellTypes/timeType/timeType.js +4 -5
  95. package/cellTypes/timeType/timeType.mjs +4 -5
  96. package/core.d.ts +6 -1
  97. package/core.js +508 -80
  98. package/core.mjs +517 -92
  99. package/dataMap/index.js +4 -0
  100. package/dataMap/index.mjs +2 -1
  101. package/dataMap/metaManager/index.js +2 -2
  102. package/dataMap/metaManager/index.mjs +2 -2
  103. package/dataMap/metaManager/metaLayers/globalMeta.js +4 -0
  104. package/dataMap/metaManager/metaLayers/globalMeta.mjs +4 -0
  105. package/dataMap/metaManager/metaLayers/tableMeta.js +2 -2
  106. package/dataMap/metaManager/metaLayers/tableMeta.mjs +2 -2
  107. package/dataMap/metaManager/metaSchema.js +282 -187
  108. package/dataMap/metaManager/metaSchema.mjs +282 -187
  109. package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
  110. package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
  111. package/dataMap/replaceData.js +3 -17
  112. package/dataMap/replaceData.mjs +3 -17
  113. package/dist/handsontable.css +268 -92
  114. package/dist/handsontable.full.css +269 -103
  115. package/dist/handsontable.full.js +41990 -35658
  116. package/dist/handsontable.full.min.css +9 -9
  117. package/dist/handsontable.full.min.js +144 -144
  118. package/dist/handsontable.js +29561 -25597
  119. package/dist/handsontable.min.css +8 -8
  120. package/dist/handsontable.min.js +4 -4
  121. package/dist/languages/all.js +131 -34
  122. package/dist/languages/all.min.js +1 -1
  123. package/dist/languages/ar-AR.js +167 -0
  124. package/dist/languages/ar-AR.min.js +1 -0
  125. package/dist/languages/cs-CZ.js +167 -0
  126. package/dist/languages/cs-CZ.min.js +1 -0
  127. package/dist/languages/de-CH.js +31 -29
  128. package/dist/languages/de-CH.min.js +1 -1
  129. package/dist/languages/de-DE.js +4 -2
  130. package/dist/languages/de-DE.min.js +1 -1
  131. package/dist/languages/en-US.js +4 -2
  132. package/dist/languages/en-US.min.js +1 -1
  133. package/dist/languages/es-MX.js +4 -2
  134. package/dist/languages/es-MX.min.js +1 -1
  135. package/dist/languages/fr-FR.js +4 -2
  136. package/dist/languages/fr-FR.min.js +1 -1
  137. package/dist/languages/it-IT.js +4 -2
  138. package/dist/languages/it-IT.min.js +1 -1
  139. package/dist/languages/ja-JP.js +36 -38
  140. package/dist/languages/ja-JP.min.js +1 -1
  141. package/dist/languages/ko-KR.js +36 -39
  142. package/dist/languages/ko-KR.min.js +1 -1
  143. package/dist/languages/lv-LV.js +2 -2
  144. package/dist/languages/lv-LV.min.js +1 -1
  145. package/dist/languages/nb-NO.js +2 -2
  146. package/dist/languages/nb-NO.min.js +1 -1
  147. package/dist/languages/nl-NL.js +2 -2
  148. package/dist/languages/nl-NL.min.js +1 -1
  149. package/dist/languages/pl-PL.js +2 -2
  150. package/dist/languages/pl-PL.min.js +1 -1
  151. package/dist/languages/pt-BR.js +2 -2
  152. package/dist/languages/pt-BR.min.js +1 -1
  153. package/dist/languages/ru-RU.js +2 -2
  154. package/dist/languages/ru-RU.min.js +1 -1
  155. package/dist/languages/sr-SP.js +171 -0
  156. package/dist/languages/sr-SP.min.js +1 -0
  157. package/dist/languages/zh-CN.js +24 -24
  158. package/dist/languages/zh-CN.min.js +1 -1
  159. package/dist/languages/zh-TW.js +24 -24
  160. package/dist/languages/zh-TW.min.js +1 -1
  161. package/editorManager.js +120 -267
  162. package/editorManager.mjs +128 -278
  163. package/editors/autocompleteEditor/autocompleteEditor.js +22 -25
  164. package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -25
  165. package/editors/baseEditor/baseEditor.js +205 -34
  166. package/editors/baseEditor/baseEditor.mjs +200 -32
  167. package/editors/checkboxEditor/checkboxEditor.js +2 -2
  168. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  169. package/editors/dateEditor/dateEditor.js +21 -8
  170. package/editors/dateEditor/dateEditor.mjs +22 -9
  171. package/editors/dropdownEditor/dropdownEditor.js +3 -3
  172. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  173. package/editors/handsontableEditor/handsontableEditor.js +106 -55
  174. package/editors/handsontableEditor/handsontableEditor.mjs +106 -55
  175. package/editors/index.d.ts +3 -0
  176. package/editors/index.js +6 -0
  177. package/editors/index.mjs +3 -1
  178. package/editors/numericEditor/numericEditor.js +2 -2
  179. package/editors/numericEditor/numericEditor.mjs +2 -2
  180. package/editors/passwordEditor/passwordEditor.js +3 -3
  181. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  182. package/editors/selectEditor/selectEditor.js +65 -110
  183. package/editors/selectEditor/selectEditor.mjs +66 -109
  184. package/editors/textEditor/caretPositioner.js +49 -0
  185. package/editors/textEditor/caretPositioner.mjs +42 -0
  186. package/editors/textEditor/textEditor.js +205 -181
  187. package/editors/textEditor/textEditor.mjs +199 -179
  188. package/editors/timeEditor/index.d.ts +1 -0
  189. package/editors/timeEditor/index.js +9 -0
  190. package/editors/timeEditor/index.mjs +1 -0
  191. package/editors/timeEditor/timeEditor.d.ts +7 -0
  192. package/editors/timeEditor/timeEditor.js +105 -0
  193. package/editors/timeEditor/timeEditor.mjs +84 -0
  194. package/eventManager.js +4 -2
  195. package/eventManager.mjs +4 -2
  196. package/helpers/mixed.js +2 -2
  197. package/helpers/mixed.mjs +2 -2
  198. package/i18n/languages/ar-AR.js +41 -0
  199. package/i18n/languages/ar-AR.mjs +17 -0
  200. package/i18n/languages/cs-CZ.js +40 -0
  201. package/i18n/languages/cs-CZ.mjs +16 -0
  202. package/i18n/languages/index.js +12 -0
  203. package/i18n/languages/index.mjs +4 -1
  204. package/i18n/languages/sr-SP.js +40 -0
  205. package/i18n/languages/sr-SP.mjs +16 -0
  206. package/index.d.ts +4 -0
  207. package/languages/all.js +131 -34
  208. package/languages/ar-AR.js +167 -0
  209. package/languages/ar-AR.mjs +19 -0
  210. package/languages/cs-CZ.js +167 -0
  211. package/languages/cs-CZ.mjs +18 -0
  212. package/languages/de-CH.js +31 -29
  213. package/languages/de-DE.js +4 -2
  214. package/languages/en-US.js +4 -2
  215. package/languages/es-MX.js +4 -2
  216. package/languages/fr-FR.js +4 -2
  217. package/languages/index.js +131 -34
  218. package/languages/index.mjs +4 -1
  219. package/languages/it-IT.js +4 -2
  220. package/languages/ja-JP.js +36 -38
  221. package/languages/ko-KR.js +36 -39
  222. package/languages/lv-LV.js +2 -2
  223. package/languages/nb-NO.js +2 -2
  224. package/languages/nl-NL.js +2 -2
  225. package/languages/pl-PL.js +2 -2
  226. package/languages/pt-BR.js +2 -2
  227. package/languages/ru-RU.js +2 -2
  228. package/languages/sr-SP.js +171 -0
  229. package/languages/sr-SP.mjs +18 -0
  230. package/languages/zh-CN.js +24 -24
  231. package/languages/zh-TW.js +24 -24
  232. package/package.json +44 -4
  233. package/pluginHooks.js +49 -13
  234. package/pluginHooks.mjs +49 -13
  235. package/plugins/autoColumnSize/autoColumnSize.js +15 -10
  236. package/plugins/autoColumnSize/autoColumnSize.mjs +15 -10
  237. package/plugins/autoRowSize/autoRowSize.js +14 -9
  238. package/plugins/autoRowSize/autoRowSize.mjs +14 -9
  239. package/plugins/autofill/autofill.js +49 -33
  240. package/plugins/autofill/autofill.mjs +49 -32
  241. package/plugins/autofill/utils.js +10 -11
  242. package/plugins/autofill/utils.mjs +10 -10
  243. package/plugins/base/base.d.ts +8 -2
  244. package/plugins/base/base.js +67 -4
  245. package/plugins/base/base.mjs +66 -4
  246. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
  247. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  248. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
  249. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  250. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
  251. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
  252. package/plugins/collapsibleColumns/collapsibleColumns.js +27 -9
  253. package/plugins/collapsibleColumns/collapsibleColumns.mjs +27 -9
  254. package/plugins/columnSorting/columnSorting.js +5 -7
  255. package/plugins/columnSorting/columnSorting.mjs +5 -6
  256. package/plugins/columnSummary/columnSummary.js +3 -3
  257. package/plugins/columnSummary/columnSummary.mjs +3 -3
  258. package/plugins/comments/commentEditor.js +18 -2
  259. package/plugins/comments/commentEditor.mjs +19 -3
  260. package/plugins/comments/comments.js +57 -46
  261. package/plugins/comments/comments.mjs +58 -46
  262. package/plugins/contextMenu/contextMenu.js +10 -6
  263. package/plugins/contextMenu/contextMenu.mjs +10 -6
  264. package/plugins/contextMenu/menu.js +222 -110
  265. package/plugins/contextMenu/menu.mjs +219 -111
  266. package/plugins/contextMenu/predefinedItems/columnLeft.js +12 -4
  267. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
  268. package/plugins/contextMenu/predefinedItems/columnRight.js +9 -9
  269. package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
  270. package/plugins/contextMenu/utils.js +2 -2
  271. package/plugins/contextMenu/utils.mjs +2 -2
  272. package/plugins/copyPaste/copyPaste.js +31 -21
  273. package/plugins/copyPaste/copyPaste.mjs +30 -21
  274. package/plugins/customBorders/contextMenuItem/left.js +4 -3
  275. package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
  276. package/plugins/customBorders/contextMenuItem/right.js +4 -3
  277. package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
  278. package/plugins/customBorders/customBorders.js +144 -87
  279. package/plugins/customBorders/customBorders.mjs +143 -85
  280. package/plugins/customBorders/utils.js +131 -27
  281. package/plugins/customBorders/utils.mjs +115 -27
  282. package/plugins/dragToScroll/dragToScroll.js +10 -5
  283. package/plugins/dragToScroll/dragToScroll.mjs +10 -5
  284. package/plugins/dropdownMenu/dropdownMenu.js +9 -7
  285. package/plugins/dropdownMenu/dropdownMenu.mjs +9 -7
  286. package/plugins/exportFile/exportFile.js +2 -2
  287. package/plugins/exportFile/exportFile.mjs +2 -2
  288. package/plugins/exportFile/types/csv.js +2 -2
  289. package/plugins/exportFile/types/csv.mjs +2 -2
  290. package/plugins/filters/component/actionBar.js +2 -2
  291. package/plugins/filters/component/actionBar.mjs +2 -2
  292. package/plugins/filters/component/condition.js +3 -3
  293. package/plugins/filters/component/condition.mjs +3 -3
  294. package/plugins/filters/component/operators.js +2 -2
  295. package/plugins/filters/component/operators.mjs +2 -2
  296. package/plugins/filters/component/value.js +3 -3
  297. package/plugins/filters/component/value.mjs +3 -3
  298. package/plugins/filters/filters.js +11 -8
  299. package/plugins/filters/filters.mjs +11 -8
  300. package/plugins/filters/ui/input.js +3 -3
  301. package/plugins/filters/ui/input.mjs +3 -3
  302. package/plugins/filters/ui/link.js +3 -3
  303. package/plugins/filters/ui/link.mjs +3 -3
  304. package/plugins/filters/ui/multipleSelect.js +18 -31
  305. package/plugins/filters/ui/multipleSelect.mjs +18 -31
  306. package/plugins/filters/ui/radioInput.js +3 -3
  307. package/plugins/filters/ui/radioInput.mjs +3 -3
  308. package/plugins/filters/ui/select.js +4 -4
  309. package/plugins/filters/ui/select.mjs +4 -4
  310. package/plugins/formulas/formulas.js +14 -9
  311. package/plugins/formulas/formulas.mjs +14 -9
  312. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
  313. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
  314. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -5
  315. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -5
  316. package/plugins/hiddenColumns/hiddenColumns.js +9 -4
  317. package/plugins/hiddenColumns/hiddenColumns.mjs +9 -4
  318. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
  319. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
  320. package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -5
  321. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -5
  322. package/plugins/hiddenRows/hiddenRows.js +9 -4
  323. package/plugins/hiddenRows/hiddenRows.mjs +9 -4
  324. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  325. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  326. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  327. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  328. package/plugins/manualColumnFreeze/manualColumnFreeze.js +54 -15
  329. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +49 -15
  330. package/plugins/manualColumnMove/manualColumnMove.js +70 -70
  331. package/plugins/manualColumnMove/manualColumnMove.mjs +71 -71
  332. package/plugins/manualColumnMove/ui/_base.js +25 -12
  333. package/plugins/manualColumnMove/ui/_base.mjs +24 -12
  334. package/plugins/manualColumnMove/ui/backlight.js +3 -3
  335. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  336. package/plugins/manualColumnMove/ui/guideline.js +3 -3
  337. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  338. package/plugins/manualColumnResize/manualColumnResize.js +37 -21
  339. package/plugins/manualColumnResize/manualColumnResize.mjs +37 -21
  340. package/plugins/manualRowMove/manualRowMove.js +26 -34
  341. package/plugins/manualRowMove/manualRowMove.mjs +26 -34
  342. package/plugins/manualRowMove/ui/backlight.js +3 -3
  343. package/plugins/manualRowMove/ui/backlight.mjs +3 -3
  344. package/plugins/manualRowMove/ui/guideline.js +3 -3
  345. package/plugins/manualRowMove/ui/guideline.mjs +3 -3
  346. package/plugins/manualRowResize/manualRowResize.js +34 -19
  347. package/plugins/manualRowResize/manualRowResize.mjs +34 -19
  348. package/plugins/mergeCells/calculations/autofill.js +6 -5
  349. package/plugins/mergeCells/calculations/autofill.mjs +6 -4
  350. package/plugins/mergeCells/calculations/selection.js +9 -4
  351. package/plugins/mergeCells/calculations/selection.mjs +9 -4
  352. package/plugins/mergeCells/cellCoords.js +16 -4
  353. package/plugins/mergeCells/cellCoords.mjs +16 -3
  354. package/plugins/mergeCells/cellsCollection.js +30 -23
  355. package/plugins/mergeCells/cellsCollection.mjs +30 -22
  356. package/plugins/mergeCells/mergeCells.js +94 -61
  357. package/plugins/mergeCells/mergeCells.mjs +94 -59
  358. package/plugins/multiColumnSorting/multiColumnSorting.js +4 -6
  359. package/plugins/multiColumnSorting/multiColumnSorting.mjs +4 -5
  360. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +51 -57
  361. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +52 -57
  362. package/plugins/nestedHeaders/nestedHeaders.js +31 -20
  363. package/plugins/nestedHeaders/nestedHeaders.mjs +31 -20
  364. package/plugins/nestedHeaders/stateManager/utils.js +3 -4
  365. package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
  366. package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
  367. package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
  368. package/plugins/nestedRows/nestedRows.js +9 -4
  369. package/plugins/nestedRows/nestedRows.mjs +9 -4
  370. package/plugins/nestedRows/ui/collapsing.js +2 -2
  371. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  372. package/plugins/nestedRows/ui/contextMenu.js +2 -2
  373. package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
  374. package/plugins/nestedRows/ui/headers.js +2 -2
  375. package/plugins/nestedRows/ui/headers.mjs +2 -2
  376. package/plugins/nestedRows/utils/rowMoveController.js +2 -4
  377. package/plugins/nestedRows/utils/rowMoveController.mjs +2 -3
  378. package/plugins/persistentState/persistentState.js +9 -4
  379. package/plugins/persistentState/persistentState.mjs +9 -4
  380. package/plugins/search/search.js +9 -4
  381. package/plugins/search/search.mjs +9 -4
  382. package/plugins/touchScroll/touchScroll.js +27 -21
  383. package/plugins/touchScroll/touchScroll.mjs +27 -21
  384. package/plugins/trimRows/trimRows.js +9 -4
  385. package/plugins/trimRows/trimRows.mjs +9 -4
  386. package/plugins/undoRedo/undoRedo.js +53 -47
  387. package/plugins/undoRedo/undoRedo.mjs +53 -46
  388. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
  389. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
  390. package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
  391. package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
  392. package/renderers/index.d.ts +4 -1
  393. package/renderers/index.js +6 -0
  394. package/renderers/index.mjs +3 -1
  395. package/renderers/numericRenderer/numericRenderer.js +1 -0
  396. package/renderers/numericRenderer/numericRenderer.mjs +1 -0
  397. package/renderers/timeRenderer/index.d.ts +1 -0
  398. package/renderers/timeRenderer/index.js +9 -0
  399. package/renderers/timeRenderer/index.mjs +1 -0
  400. package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
  401. package/renderers/timeRenderer/timeRenderer.js +31 -0
  402. package/renderers/timeRenderer/timeRenderer.mjs +20 -0
  403. package/selection/highlight/visualSelection.js +94 -220
  404. package/selection/highlight/visualSelection.mjs +91 -213
  405. package/selection/mouseEventHandler.js +15 -10
  406. package/selection/mouseEventHandler.mjs +15 -9
  407. package/selection/range.js +4 -5
  408. package/selection/range.mjs +4 -5
  409. package/selection/selection.js +35 -22
  410. package/selection/selection.mjs +35 -20
  411. package/selection/transformation.js +4 -6
  412. package/selection/transformation.mjs +4 -5
  413. package/settings.d.ts +3 -1
  414. package/shortcuts/context.d.ts +20 -0
  415. package/shortcuts/context.js +296 -0
  416. package/shortcuts/context.mjs +268 -0
  417. package/shortcuts/index.d.ts +1 -0
  418. package/shortcuts/index.js +8 -0
  419. package/shortcuts/index.mjs +1 -0
  420. package/shortcuts/keyObserver.js +67 -0
  421. package/shortcuts/keyObserver.mjs +58 -0
  422. package/shortcuts/manager.d.ts +10 -0
  423. package/shortcuts/manager.js +185 -0
  424. package/shortcuts/manager.mjs +176 -0
  425. package/shortcuts/recorder.js +192 -0
  426. package/shortcuts/recorder.mjs +180 -0
  427. package/shortcuts/utils.js +77 -0
  428. package/shortcuts/utils.mjs +54 -0
  429. package/tableView.js +164 -84
  430. package/tableView.mjs +164 -74
  431. package/translations/changesObservable/observer.js +0 -1
  432. package/translations/changesObservable/observer.mjs +0 -1
  433. package/translations/indexMapper.d.ts +3 -1
  434. package/translations/indexMapper.js +89 -11
  435. package/translations/indexMapper.mjs +91 -20
  436. package/translations/mapCollections/aggregatedCollection.js +2 -2
  437. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  438. package/translations/maps/hidingMap.js +4 -2
  439. package/translations/maps/hidingMap.mjs +4 -2
  440. package/translations/maps/indexMap.js +2 -0
  441. package/translations/maps/indexMap.mjs +2 -0
  442. package/translations/maps/indexesSequence.js +5 -3
  443. package/translations/maps/indexesSequence.mjs +5 -3
  444. package/translations/maps/linkedPhysicalIndexToValueMap.js +5 -3
  445. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +5 -3
  446. package/translations/maps/physicalIndexToValueMap.js +5 -3
  447. package/translations/maps/physicalIndexToValueMap.mjs +5 -3
  448. package/translations/maps/trimmingMap.js +4 -2
  449. package/translations/maps/trimmingMap.mjs +4 -2
  450. package/utils/dataStructures/uniqueMap.js +14 -1
  451. package/utils/dataStructures/uniqueMap.mjs +14 -1
  452. package/utils/dataStructures/uniqueSet.js +9 -0
  453. package/utils/dataStructures/uniqueSet.mjs +9 -0
  454. package/utils/ghostTable.js +1 -1
  455. package/utils/ghostTable.mjs +1 -1
  456. package/3rdparty/walkontable/src/core.js +0 -309
  457. package/3rdparty/walkontable/src/core.mjs +0 -293
  458. package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
  459. package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
  460. package/utils/keyStateObserver.js +0 -121
  461. package/utils/keyStateObserver.mjs +0 -103
@@ -6,13 +6,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
6
6
 
7
7
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8
8
 
9
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
9
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
10
10
 
11
11
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
12
12
 
13
13
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
14
14
 
15
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
16
16
 
17
17
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
18
18
 
@@ -22,7 +22,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
22
22
 
23
23
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
24
24
 
25
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
25
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
26
26
 
27
27
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
28
28
 
@@ -226,6 +226,9 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
226
226
  scrollbarWidth += 15; // default scroll bar width if scroll bars are visible only when scrolling
227
227
  }
228
228
 
229
+ this.addHook('beforeKeyDown', function (event) {
230
+ return _this3.onBeforeKeyDown(event);
231
+ });
229
232
  choicesListHot.updateSettings({
230
233
  colWidths: trimDropdown ? [outerWidth(this.TEXTAREA) - 2] : void 0,
231
234
  width: trimDropdown ? outerWidth(this.TEXTAREA) + scrollbarWidth : void 0,
@@ -384,21 +387,20 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
384
387
  }, {
385
388
  key: "flipDropdownIfNeeded",
386
389
  value: function flipDropdownIfNeeded() {
390
+ var trimmingContainer = getTrimmingContainer(this.hot.view._wt.wtTable.TABLE);
391
+ var isWindowAsScrollableElement = trimmingContainer === this.hot.rootWindow;
392
+ var preventOverflow = this.cellProperties.preventOverflow;
393
+
394
+ if (isWindowAsScrollableElement || !isWindowAsScrollableElement && (preventOverflow || preventOverflow === 'horizontal')) {
395
+ return false;
396
+ }
397
+
387
398
  var textareaOffset = offset(this.TEXTAREA);
388
399
  var textareaHeight = outerHeight(this.TEXTAREA);
389
400
  var dropdownHeight = this.getDropdownHeight();
390
- var trimmingContainer = getTrimmingContainer(this.hot.view.wt.wtTable.TABLE);
391
401
  var trimmingContainerScrollTop = trimmingContainer.scrollTop;
392
- var headersHeight = outerHeight(this.hot.view.wt.wtTable.THEAD);
393
- var containerOffset = {
394
- row: 0,
395
- col: 0
396
- };
397
-
398
- if (trimmingContainer !== this.hot.rootWindow) {
399
- containerOffset = offset(trimmingContainer);
400
- }
401
-
402
+ var headersHeight = outerHeight(this.hot.view._wt.wtTable.THEAD);
403
+ var containerOffset = offset(trimmingContainer);
402
404
  var spaceAbove = textareaOffset.top - containerOffset.top - headersHeight + trimmingContainerScrollTop;
403
405
  var spaceBelow = trimmingContainer.scrollHeight - spaceAbove - headersHeight - textareaHeight;
404
406
  var flipNeeded = dropdownHeight > spaceBelow && spaceAbove > spaceBelow;
@@ -416,7 +418,7 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
416
418
  * Checks if the internal table should generate scrollbar or could be rendered without it.
417
419
  *
418
420
  * @private
419
- * @param {number} spaceAvailable The free space as height definded in px available for dropdown list.
421
+ * @param {number} spaceAvailable The free space as height defined in px available for dropdown list.
420
422
  * @param {number} dropdownHeight The dropdown height.
421
423
  */
422
424
 
@@ -430,7 +432,7 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
430
432
  var height = null;
431
433
 
432
434
  do {
433
- lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view.wt.wtSettings.settings.defaultRowHeight;
435
+ lastRowHeight = this.htEditor.getRowHeight(i) || this.htEditor.view._wt.getSetting('defaultRowHeight');
434
436
  tempHeight += lastRowHeight;
435
437
  i += 1;
436
438
  } while (tempHeight < spaceAvailable);
@@ -469,12 +471,8 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
469
471
  key: "unflipDropdown",
470
472
  value: function unflipDropdown() {
471
473
  var dropdownStyle = this.htEditor.rootElement.style;
472
-
473
- if (dropdownStyle.position === 'absolute') {
474
- dropdownStyle.position = '';
475
- dropdownStyle.top = '';
476
- }
477
-
474
+ dropdownStyle.position = 'absolute';
475
+ dropdownStyle.top = '';
478
476
  this.htEditor.flipped = void 0;
479
477
  }
480
478
  /**
@@ -492,7 +490,8 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
492
490
  height: this.getDropdownHeight(),
493
491
  width: trimDropdown ? void 0 : currentDropdownWidth
494
492
  });
495
- this.htEditor.view.wt.wtTable.alignOverlaysWithTrimmingContainer();
493
+
494
+ this.htEditor.view._wt.wtTable.alignOverlaysWithTrimmingContainer();
496
495
  }
497
496
  /**
498
497
  * Sets new height of the internal Handsontable's instance.
@@ -636,8 +635,6 @@ export var AutocompleteEditor = /*#__PURE__*/function (_HandsontableEditor) {
636
635
  }, timeOffset);
637
636
  }
638
637
  }
639
-
640
- _get(_getPrototypeOf(AutocompleteEditor.prototype), "onBeforeKeyDown", this).call(this, event);
641
638
  }
642
639
  /**
643
640
  * Filters and sorts by relevance.
@@ -24,27 +24,31 @@ require("core-js/modules/web.dom-collections.iterator.js");
24
24
 
25
25
  require("core-js/modules/es.array.slice.js");
26
26
 
27
- require("core-js/modules/es.function.name.js");
28
-
29
27
  require("core-js/modules/es.array.from.js");
30
28
 
31
29
  require("core-js/modules/es.regexp.exec.js");
32
30
 
33
31
  exports.__esModule = true;
34
- exports.EDITOR_TYPE = exports.EDITOR_STATE = exports.BaseEditor = void 0;
32
+ exports.SHORTCUTS_GROUP_EDITOR = exports.EDITOR_TYPE = exports.EDITOR_STATE = exports.BaseEditor = void 0;
35
33
 
36
34
  require("core-js/modules/es.object.freeze.js");
37
35
 
38
36
  require("core-js/modules/es.string.trim.js");
39
37
 
40
- var _src = require("../../3rdparty/walkontable/src");
38
+ require("core-js/modules/es.function.name.js");
39
+
40
+ require("core-js/modules/es.array.includes.js");
41
41
 
42
42
  var _mixed = require("../../helpers/mixed");
43
43
 
44
44
  var _object = require("../../helpers/object");
45
45
 
46
+ var _editorManager = require("../../editorManager");
47
+
46
48
  var _hooksRefRegisterer = _interopRequireDefault(require("../../mixins/hooksRefRegisterer"));
47
49
 
50
+ var _element = require("../../helpers/dom/element");
51
+
48
52
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49
53
 
50
54
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -61,7 +65,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
61
65
 
62
66
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
63
67
 
64
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
68
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
65
69
 
66
70
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
67
71
 
@@ -71,7 +75,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
71
75
 
72
76
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
73
77
 
74
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
78
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
75
79
 
76
80
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
77
81
 
@@ -89,11 +93,13 @@ var EDITOR_STATE = Object.freeze({
89
93
  // waiting for async validation
90
94
  FINISHED: 'STATE_FINISHED'
91
95
  });
96
+ exports.EDITOR_STATE = EDITOR_STATE;
97
+ var SHORTCUTS_GROUP_EDITOR = 'baseEditor';
92
98
  /**
93
99
  * @class BaseEditor
94
100
  */
95
101
 
96
- exports.EDITOR_STATE = EDITOR_STATE;
102
+ exports.SHORTCUTS_GROUP_EDITOR = SHORTCUTS_GROUP_EDITOR;
97
103
 
98
104
  var BaseEditor = /*#__PURE__*/function () {
99
105
  /**
@@ -308,6 +314,8 @@ var BaseEditor = /*#__PURE__*/function () {
308
314
  }, {
309
315
  key: "saveValue",
310
316
  value: function saveValue(value, ctrlDown) {
317
+ var _this = this;
318
+
311
319
  var visualRowFrom;
312
320
  var visualColumnFrom;
313
321
  var visualRowTo;
@@ -336,6 +344,39 @@ var BaseEditor = /*#__PURE__*/function () {
336
344
 
337
345
  visualRowFrom = _modifiedCellCoords[0];
338
346
  visualColumnFrom = _modifiedCellCoords[1];
347
+ }
348
+
349
+ var shortcutManager = this.hot.getShortcutManager();
350
+ var editorContext = shortcutManager.getContext('editor');
351
+ var contextConfig = {
352
+ runOnlyIf: function runOnlyIf() {
353
+ return (0, _mixed.isDefined)(_this.hot.getSelected());
354
+ },
355
+ group: SHORTCUTS_GROUP_EDITOR
356
+ };
357
+
358
+ if (this.isInFullEditMode()) {
359
+ editorContext.addShortcuts([{
360
+ keys: [['ArrowUp']],
361
+ callback: function callback() {
362
+ _this.hot.selection.transformStart(-1, 0);
363
+ }
364
+ }, {
365
+ keys: [['ArrowDown']],
366
+ callback: function callback() {
367
+ _this.hot.selection.transformStart(1, 0);
368
+ }
369
+ }, {
370
+ keys: [['ArrowLeft']],
371
+ callback: function callback() {
372
+ _this.hot.selection.transformStart(0, -1 * _this.hot.getDirectionFactor());
373
+ }
374
+ }, {
375
+ keys: [['ArrowRight']],
376
+ callback: function callback() {
377
+ _this.hot.selection.transformStart(0, _this.hot.getDirectionFactor());
378
+ }
379
+ }], contextConfig);
339
380
  } // Saving values using the modified coordinates.
340
381
 
341
382
 
@@ -360,7 +401,7 @@ var BaseEditor = /*#__PURE__*/function () {
360
401
 
361
402
  var renderableRowIndex = hotInstance.rowIndexMapper.getRenderableFromVisualIndex(this.row);
362
403
  var renderableColumnIndex = hotInstance.columnIndexMapper.getRenderableFromVisualIndex(this.col);
363
- hotInstance.view.scrollViewport(new _src.CellCoords(renderableRowIndex, renderableColumnIndex));
404
+ hotInstance.view.scrollViewport(hotInstance._createCellCoords(renderableRowIndex, renderableColumnIndex));
364
405
  this.state = EDITOR_STATE.EDITING; // Set the editor value only in the full edit mode. In other mode the focusable element has to be empty,
365
406
  // otherwise IME (editor for Asia users) doesn't work.
366
407
 
@@ -387,7 +428,7 @@ var BaseEditor = /*#__PURE__*/function () {
387
428
  }, {
388
429
  key: "finishEditing",
389
430
  value: function finishEditing(restoreOriginalValue, ctrlDown, callback) {
390
- var _this = this;
431
+ var _this2 = this;
391
432
 
392
433
  var val;
393
434
 
@@ -401,7 +442,7 @@ var BaseEditor = /*#__PURE__*/function () {
401
442
 
402
443
  callback(result);
403
444
 
404
- _this.hot.view.render();
445
+ _this2.hot.view.render();
405
446
  };
406
447
  }
407
448
 
@@ -409,9 +450,14 @@ var BaseEditor = /*#__PURE__*/function () {
409
450
  return;
410
451
  }
411
452
 
453
+ var shortcutManager = this.hot.getShortcutManager();
454
+ var editorContext = shortcutManager.getContext('editor');
455
+ editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
456
+ editorContext.removeShortcutsByGroup(_editorManager.SHORTCUTS_GROUP_NAVIGATION);
457
+
412
458
  if (this.state === EDITOR_STATE.VIRGIN) {
413
459
  this.hot._registerTimeout(function () {
414
- _this._fireCallbacks(true);
460
+ _this2._fireCallbacks(true);
415
461
  });
416
462
 
417
463
  return;
@@ -438,9 +484,9 @@ var BaseEditor = /*#__PURE__*/function () {
438
484
 
439
485
  if (this.hot.getCellValidator(this.cellProperties)) {
440
486
  this.hot.addHookOnce('postAfterValidate', function (result) {
441
- _this.state = EDITOR_STATE.FINISHED;
487
+ _this2.state = EDITOR_STATE.FINISHED;
442
488
 
443
- _this.discardEditor(result);
489
+ _this2.discardEditor(result);
444
490
  });
445
491
  } else {
446
492
  this.state = EDITOR_STATE.FINISHED;
@@ -486,6 +532,9 @@ var BaseEditor = /*#__PURE__*/function () {
486
532
  this.state = EDITOR_STATE.VIRGIN;
487
533
 
488
534
  this._fireCallbacks(true);
535
+
536
+ var shortcutManager = this.hot.getShortcutManager();
537
+ shortcutManager.setActiveContextName('grid');
489
538
  }
490
539
  }
491
540
  /**
@@ -531,6 +580,137 @@ var BaseEditor = /*#__PURE__*/function () {
531
580
  value: function isWaiting() {
532
581
  return this.state === EDITOR_STATE.WAITING;
533
582
  }
583
+ /* eslint-disable jsdoc/require-description-complete-sentence */
584
+
585
+ /**
586
+ * Gets the object that provides information about the edited cell size and its position
587
+ * relative to the table viewport.
588
+ *
589
+ * The rectangle has six integer properties:
590
+ * - `top` The top position relative to the table viewport
591
+ * - `start` The left (or right in RTL) position relative to the table viewport
592
+ * - `width` The cell's current width;
593
+ * - `maxWidth` The maximum cell's width after which the editor goes out of the table viewport
594
+ * - `height` The cell's current height;
595
+ * - `maxHeight` The maximum cell's height after which the editor goes out of the table viewport
596
+ *
597
+ * @returns {{top: number, start: number, width: number, maxWidth: number, height: number, maxHeight: number} | undefined}
598
+ */
599
+
600
+ }, {
601
+ key: "getEditedCellRect",
602
+ value: function getEditedCellRect() {
603
+ var _wtOverlays$getParent;
604
+
605
+ var TD = this.getEditedCell(); // TD is outside of the viewport.
606
+
607
+ if (!TD) {
608
+ return;
609
+ }
610
+
611
+ var _this$hot$view$_wt = this.hot.view._wt,
612
+ wtOverlays = _this$hot$view$_wt.wtOverlays,
613
+ wtViewport = _this$hot$view$_wt.wtViewport;
614
+ var rootWindow = this.hot.rootWindow;
615
+ var currentOffset = (0, _element.offset)(TD);
616
+ var cellWidth = (0, _element.outerWidth)(TD);
617
+ var containerOffset = (0, _element.offset)(this.hot.rootElement);
618
+ var containerWidth = (0, _element.outerWidth)(this.hot.rootElement);
619
+ var scrollableContainerTop = wtOverlays.topOverlay.holder;
620
+ var scrollableContainerLeft = wtOverlays.inlineStartOverlay.holder;
621
+ var containerScrollTop = scrollableContainerTop !== rootWindow ? scrollableContainerTop.scrollTop : 0;
622
+ var containerScrollLeft = scrollableContainerLeft !== rootWindow ? scrollableContainerLeft.scrollLeft : 0;
623
+ var gridMostRightPos = rootWindow.innerWidth - containerOffset.left - containerWidth;
624
+
625
+ var _ref2 = (_wtOverlays$getParent = wtOverlays.getParentOverlay(TD)) !== null && _wtOverlays$getParent !== void 0 ? _wtOverlays$getParent : this.hot.view._wt,
626
+ overlayTable = _ref2.wtTable;
627
+
628
+ var overlayName = overlayTable.name;
629
+ var scrollTop = ['master', 'inline_start'].includes(overlayName) ? containerScrollTop : 0;
630
+ var scrollLeft = ['master', 'top', 'bottom'].includes(overlayName) ? containerScrollLeft : 0; // If colHeaders is disabled, cells in the first row have border-top
631
+
632
+ var editTopModifier = currentOffset.top === containerOffset.top ? 0 : 1;
633
+ var topPos = currentOffset.top - containerOffset.top - editTopModifier - scrollTop;
634
+ var inlineStartPos = 0;
635
+
636
+ if (this.hot.isRtl()) {
637
+ inlineStartPos = rootWindow.innerWidth - currentOffset.left - cellWidth - gridMostRightPos - 1 + scrollLeft;
638
+ } else {
639
+ inlineStartPos = currentOffset.left - containerOffset.left - 1 - scrollLeft;
640
+ } // When the scrollable element is Window object then the editor position needs to be compensated
641
+ // by the overlays' position (position relative to the table viewport). In other cases, the overlay's
642
+ // position always returns 0.
643
+
644
+
645
+ if (['top', 'top_inline_start_corner'].includes(overlayName)) {
646
+ topPos += wtOverlays.topOverlay.getOverlayOffset();
647
+ }
648
+
649
+ if (['inline_start', 'top_inline_start_corner'].includes(overlayName)) {
650
+ inlineStartPos += Math.abs(wtOverlays.inlineStartOverlay.getOverlayOffset());
651
+ }
652
+
653
+ var hasColumnHeaders = this.hot.hasColHeaders();
654
+ var renderableRow = this.hot.rowIndexMapper.getRenderableFromVisualIndex(this.row);
655
+ var renderableColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(this.col);
656
+ var nrOfRenderableRowIndexes = this.hot.rowIndexMapper.getRenderableIndexesLength();
657
+
658
+ var firstRowIndexOfTheBottomOverlay = nrOfRenderableRowIndexes - this.hot.view._wt.getSetting('fixedRowsBottom');
659
+
660
+ if (hasColumnHeaders && renderableRow <= 0 || renderableRow === firstRowIndexOfTheBottomOverlay) {
661
+ topPos += 1;
662
+ }
663
+
664
+ if (renderableColumn <= 0) {
665
+ inlineStartPos += 1;
666
+ }
667
+
668
+ var firstRowOffset = wtViewport.rowsRenderCalculator.startPosition;
669
+ var firstColumnOffset = wtViewport.columnsRenderCalculator.startPosition;
670
+ var horizontalScrollPosition = Math.abs(wtOverlays.inlineStartOverlay.getScrollPosition());
671
+ var verticalScrollPosition = wtOverlays.topOverlay.getScrollPosition();
672
+ var scrollbarWidth = (0, _element.getScrollbarWidth)(this.hot.rootDocument);
673
+ var cellTopOffset = TD.offsetTop + firstRowOffset - verticalScrollPosition;
674
+ var cellStartOffset = 0;
675
+
676
+ if (this.hot.isRtl()) {
677
+ var cellOffset = TD.offsetLeft;
678
+
679
+ if (cellOffset >= 0) {
680
+ cellStartOffset = overlayTable.getWidth() - TD.offsetLeft;
681
+ } else {
682
+ // The `offsetLeft` returns negative values when the parent offset element has position relative
683
+ // (it happens when on the cell the selection is applied - the `area` CSS class).
684
+ // When it happens the `offsetLeft` value is calculated from the right edge of the parent element.
685
+ cellStartOffset = Math.abs(cellOffset);
686
+ }
687
+
688
+ cellStartOffset += firstColumnOffset - horizontalScrollPosition - cellWidth;
689
+ } else {
690
+ cellStartOffset = TD.offsetLeft + firstColumnOffset - horizontalScrollPosition;
691
+ }
692
+
693
+ var cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
694
+ var borderPhysicalWidthProp = this.hot.isRtl() ? 'borderRightWidth' : 'borderLeftWidth';
695
+ var inlineStartBorderCompensation = parseInt(cellComputedStyle[borderPhysicalWidthProp], 10) > 0 ? 0 : 1;
696
+ var topBorderCompensation = parseInt(cellComputedStyle.borderTopWidth, 10) > 0 ? 0 : 1;
697
+ var width = (0, _element.outerWidth)(TD) + inlineStartBorderCompensation;
698
+ var height = (0, _element.outerHeight)(TD) + topBorderCompensation;
699
+ var actualVerticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(scrollableContainerTop) ? scrollbarWidth : 0;
700
+ var actualHorizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(scrollableContainerLeft) ? scrollbarWidth : 0;
701
+ var maxWidth = this.hot.view.maximumVisibleElementWidth(cellStartOffset) - actualVerticalScrollbarWidth + inlineStartBorderCompensation;
702
+ var maxHeight = Math.max(this.hot.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth + topBorderCompensation, 23);
703
+ return {
704
+ top: topPos,
705
+ start: inlineStartPos,
706
+ height: height,
707
+ maxHeight: maxHeight,
708
+ width: width,
709
+ maxWidth: maxWidth
710
+ };
711
+ }
712
+ /* eslint-enable jsdoc/require-description-complete-sentence */
713
+
534
714
  /**
535
715
  * Gets className of the edited cell if exist.
536
716
  *
@@ -543,29 +723,20 @@ var BaseEditor = /*#__PURE__*/function () {
543
723
  var editorSection = this.checkEditorSection();
544
724
 
545
725
  switch (editorSection) {
546
- case 'right':
547
- return 'ht_clone_right';
548
-
549
- case 'left':
550
- return 'ht_clone_left';
726
+ case 'inline-start':
727
+ return 'ht_clone_left ht_clone_inline_start';
551
728
 
552
729
  case 'bottom':
553
730
  return 'ht_clone_bottom';
554
731
 
555
- case 'bottom-right-corner':
556
- return 'ht_clone_bottom_right_corner';
557
-
558
- case 'bottom-left-corner':
559
- return 'ht_clone_bottom_left_corner';
732
+ case 'bottom-inline-start-corner':
733
+ return 'ht_clone_bottom_left_corner ht_clone_bottom_inline_start_corner';
560
734
 
561
735
  case 'top':
562
736
  return 'ht_clone_top';
563
737
 
564
- case 'top-right-corner':
565
- return 'ht_clone_top_right_corner';
566
-
567
- case 'top-left-corner':
568
- return 'ht_clone_top_left_corner';
738
+ case 'top-inline-start-corner':
739
+ return 'ht_clone_top_left_corner ht_clone_top_inline_start_corner';
569
740
 
570
741
  default:
571
742
  return 'ht_clone_master';
@@ -596,19 +767,19 @@ var BaseEditor = /*#__PURE__*/function () {
596
767
  var section = '';
597
768
 
598
769
  if (this.row < this.hot.getSettings().fixedRowsTop) {
599
- if (this.col < this.hot.getSettings().fixedColumnsLeft) {
600
- section = 'top-left-corner';
770
+ if (this.col < this.hot.getSettings().fixedColumnsStart) {
771
+ section = 'top-inline-start-corner';
601
772
  } else {
602
773
  section = 'top';
603
774
  }
604
775
  } else if (this.hot.getSettings().fixedRowsBottom && this.row >= totalRows - this.hot.getSettings().fixedRowsBottom) {
605
- if (this.col < this.hot.getSettings().fixedColumnsLeft) {
606
- section = 'bottom-left-corner';
776
+ if (this.col < this.hot.getSettings().fixedColumnsStart) {
777
+ section = 'bottom-inline-start-corner';
607
778
  } else {
608
779
  section = 'bottom';
609
780
  }
610
- } else if (this.col < this.hot.getSettings().fixedColumnsLeft) {
611
- section = 'left';
781
+ } else if (this.col < this.hot.getSettings().fixedColumnsStart) {
782
+ section = 'inline-start';
612
783
  }
613
784
 
614
785
  return section;