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
@@ -22,14 +22,16 @@ require("core-js/modules/es.string.iterator.js");
22
22
 
23
23
  require("core-js/modules/web.dom-collections.iterator.js");
24
24
 
25
- exports.__esModule = true;
26
- exports.TextEditor = exports.EDITOR_TYPE = void 0;
25
+ require("core-js/modules/es.array.slice.js");
27
26
 
28
- require("core-js/modules/es.array.includes.js");
27
+ require("core-js/modules/es.function.name.js");
29
28
 
30
- require("core-js/modules/es.array.concat.js");
29
+ require("core-js/modules/es.array.from.js");
31
30
 
32
- require("core-js/modules/es.array.slice.js");
31
+ require("core-js/modules/es.regexp.exec.js");
32
+
33
+ exports.__esModule = true;
34
+ exports.TextEditor = exports.EDITOR_TYPE = void 0;
33
35
 
34
36
  require("core-js/modules/es.array.index-of.js");
35
37
 
@@ -45,29 +47,47 @@ var _browser = require("../../helpers/browser");
45
47
 
46
48
  var _element = require("../../helpers/dom/element");
47
49
 
48
- var _event = require("../../helpers/dom/event");
49
-
50
50
  var _number = require("../../helpers/number");
51
51
 
52
52
  var _unicode = require("../../helpers/unicode");
53
53
 
54
54
  var _autoResize = require("../../3rdparty/autoResize");
55
55
 
56
+ var _mixed = require("../../helpers/mixed");
57
+
58
+ var _editorManager = require("../../editorManager");
59
+
60
+ var _baseEditor2 = require("../baseEditor/baseEditor");
61
+
62
+ var _caretPositioner = require("./caretPositioner");
63
+
56
64
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
57
65
 
66
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
67
+
68
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
69
+
70
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
71
+
72
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
73
+
74
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
75
+
76
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
77
+
58
78
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
59
79
 
60
80
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
61
81
 
62
82
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
63
83
 
64
- 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); }
84
+ 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); }
65
85
 
66
86
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
67
87
 
68
88
  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); }
69
89
 
70
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
90
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
71
91
 
72
92
  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); }; }
73
93
 
@@ -77,10 +97,11 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
77
97
 
78
98
  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; } }
79
99
 
80
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
100
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
81
101
 
82
102
  var EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
83
103
  var EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
104
+ var SHORTCUTS_GROUP = 'textEditor';
84
105
  var EDITOR_TYPE = 'text';
85
106
  /**
86
107
  * @private
@@ -205,9 +226,12 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
205
226
  this.refreshDimensions(); // need it instantly, to prevent https://github.com/handsontable/handsontable/issues/348
206
227
 
207
228
  this.showEditableElement();
208
- this.addHook('beforeKeyDown', function (event) {
209
- return _this2.onBeforeKeyDown(event);
229
+ var shortcutManager = this.hot.getShortcutManager();
230
+ shortcutManager.setActiveContextName('editor');
231
+ this.addHook('afterDocumentKeyDown', function (event) {
232
+ return _this2.onAfterDocumentKeyDown(event);
210
233
  });
234
+ this.registerShortcuts();
211
235
  }
212
236
  /**
213
237
  * Closes the editor.
@@ -223,7 +247,8 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
223
247
  }
224
248
 
225
249
  this.hideEditableElement();
226
- this.removeHooksByKey('beforeKeyDown');
250
+ this.unregisterShortcuts();
251
+ this.removeHooksByKey('afterDocumentKeyDown');
227
252
  }
228
253
  /**
229
254
  * Prepares editor's meta data.
@@ -249,7 +274,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
249
274
  fragmentSelection = cellProperties.fragmentSelection;
250
275
 
251
276
  if (allowInvalid) {
252
- // Remove an empty space from texarea (added by copyPaste plugin to make copy/paste
277
+ // Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
253
278
  // functionality work with IME)
254
279
  this.TEXTAREA.value = '';
255
280
  }
@@ -281,7 +306,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
281
306
  return;
282
307
  }
283
308
 
284
- this.TEXTAREA.value = ''; // Remove an empty space from texarea (added by copyPaste plugin to make copy/paste functionality work with IME).
309
+ this.TEXTAREA.value = ''; // Remove an empty space from textarea (added by copyPaste plugin to make copy/paste functionality work with IME).
285
310
 
286
311
  _get(_getPrototypeOf(TextEditor.prototype), "beginEditing", this).call(this, newInitialValue, event);
287
312
  }
@@ -294,7 +319,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
294
319
  value: function focus() {
295
320
  // For IME editor textarea element must be focused using ".select" method.
296
321
  // Using ".focus" browser automatically scroll into the focused element which
297
- // is undesire effect.
322
+ // is undesired effect.
298
323
  this.TEXTAREA.select();
299
324
  (0, _element.setCaretPosition)(this.TEXTAREA, this.TEXTAREA.value.length);
300
325
  }
@@ -343,11 +368,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
343
368
  this.textareaStyle.overflowY = 'visible';
344
369
  this.textareaParentStyle.opacity = '0';
345
370
  this.textareaParentStyle.height = '1px';
346
-
347
- if ((0, _element.hasClass)(this.TEXTAREA_PARENT, this.layerClass)) {
348
- (0, _element.removeClass)(this.TEXTAREA_PARENT, this.layerClass);
349
- }
350
-
371
+ (0, _element.removeClass)(this.TEXTAREA_PARENT, this.layerClass);
351
372
  (0, _element.addClass)(this.TEXTAREA_PARENT, EDITOR_HIDDEN_CLASS_NAME);
352
373
  }
353
374
  /**
@@ -362,7 +383,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
362
383
  this.textareaParentStyle.height = '';
363
384
  this.textareaParentStyle.overflow = '';
364
385
  this.textareaParentStyle.position = '';
365
- this.textareaParentStyle.right = 'auto';
386
+ this.textareaParentStyle[this.hot.isRtl() ? 'left' : 'right'] = 'auto';
366
387
  this.textareaParentStyle.opacity = '1';
367
388
  this.textareaStyle.textIndent = '';
368
389
  this.textareaStyle.overflowY = 'hidden';
@@ -430,98 +451,34 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
430
451
  return;
431
452
  }
432
453
 
433
- var _this$hot$view$wt = this.hot.view.wt,
434
- wtOverlays = _this$hot$view$wt.wtOverlays,
435
- wtViewport = _this$hot$view$wt.wtViewport;
436
- var currentOffset = (0, _element.offset)(this.TD);
437
- var containerOffset = (0, _element.offset)(this.hot.rootElement);
438
- var scrollableContainerTop = wtOverlays.topOverlay.holder;
439
- var scrollableContainerLeft = wtOverlays.leftOverlay.holder;
440
- var containerScrollTop = scrollableContainerTop !== this.hot.rootWindow ? scrollableContainerTop.scrollTop : 0;
441
- var containerScrollLeft = scrollableContainerLeft !== this.hot.rootWindow ? scrollableContainerLeft.scrollLeft : 0;
442
- var editorSection = this.checkEditorSection();
443
- var scrollTop = ['', 'left'].includes(editorSection) ? containerScrollTop : 0;
444
- var scrollLeft = ['', 'top', 'bottom'].includes(editorSection) ? containerScrollLeft : 0; // If colHeaders is disabled, cells in the first row have border-top
445
-
446
- var editTopModifier = currentOffset.top === containerOffset.top ? 0 : 1;
447
- var backgroundColor = this.TD.style.backgroundColor;
448
- var editTop = currentOffset.top - containerOffset.top - editTopModifier - scrollTop;
449
- var editLeft = currentOffset.left - containerOffset.left - 1 - scrollLeft;
450
- var cssTransformOffset; // TODO: Refactor this to the new instance.getCell method (from #ply-59), after 0.12.1 is released
451
-
452
- switch (editorSection) {
453
- case 'top':
454
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.topOverlay.clone.wtTable.holder.parentNode);
455
- break;
456
-
457
- case 'left':
458
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);
459
- break;
460
-
461
- case 'top-left-corner':
462
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);
463
- break;
464
-
465
- case 'bottom-left-corner':
466
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);
467
- break;
468
-
469
- case 'bottom':
470
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode);
471
- break;
472
-
473
- default:
474
- break;
475
- }
476
-
477
- var hasColumnHeaders = this.hot.hasColHeaders();
478
- var renderableRow = this.hot.rowIndexMapper.getRenderableFromVisualIndex(this.row);
479
- var renderableColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(this.col);
480
- var nrOfRenderableRowIndexes = this.hot.rowIndexMapper.getRenderableIndexesLength();
481
- var firstRowIndexOfTheBottomOverlay = nrOfRenderableRowIndexes - this.hot.view.wt.getSetting('fixedRowsBottom');
482
-
483
- if (hasColumnHeaders && renderableRow <= 0 || renderableRow === firstRowIndexOfTheBottomOverlay) {
484
- editTop += 1;
485
- }
486
-
487
- if (renderableColumn <= 0) {
488
- editLeft += 1;
489
- }
490
-
491
- if (cssTransformOffset && cssTransformOffset !== -1) {
492
- this.textareaParentStyle[cssTransformOffset[0]] = cssTransformOffset[1];
493
- } else {
494
- (0, _element.resetCssTransform)(this.TEXTAREA_PARENT);
495
- }
454
+ var _this$getEditedCellRe = this.getEditedCellRect(),
455
+ top = _this$getEditedCellRe.top,
456
+ start = _this$getEditedCellRe.start,
457
+ width = _this$getEditedCellRe.width,
458
+ maxWidth = _this$getEditedCellRe.maxWidth,
459
+ height = _this$getEditedCellRe.height,
460
+ maxHeight = _this$getEditedCellRe.maxHeight;
496
461
 
497
- this.textareaParentStyle.top = "".concat(editTop, "px");
498
- this.textareaParentStyle.left = "".concat(editLeft, "px");
462
+ this.textareaParentStyle.top = "".concat(top, "px");
463
+ this.textareaParentStyle[this.hot.isRtl() ? 'right' : 'left'] = "".concat(start, "px");
499
464
  this.showEditableElement();
500
- var firstRowOffset = wtViewport.rowsRenderCalculator.startPosition;
501
- var firstColumnOffset = wtViewport.columnsRenderCalculator.startPosition;
502
- var horizontalScrollPosition = wtOverlays.leftOverlay.getScrollPosition();
503
- var verticalScrollPosition = wtOverlays.topOverlay.getScrollPosition();
504
- var scrollbarWidth = (0, _element.getScrollbarWidth)(this.hot.rootDocument);
505
- var cellTopOffset = this.TD.offsetTop + firstRowOffset - verticalScrollPosition;
506
- var cellLeftOffset = this.TD.offsetLeft + firstColumnOffset - horizontalScrollPosition;
507
- var width = (0, _element.innerWidth)(this.TD) - 8;
508
- var actualVerticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(scrollableContainerTop) ? scrollbarWidth : 0;
509
- var actualHorizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(scrollableContainerLeft) ? scrollbarWidth : 0;
510
- var maxWidth = this.hot.view.maximumVisibleElementWidth(cellLeftOffset) - 9 - actualVerticalScrollbarWidth;
511
- var height = this.TD.scrollHeight + 1;
512
- var maxHeight = Math.max(this.hot.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth, 23); // eslint-disable-line max-len
513
-
514
465
  var cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
515
466
  this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
516
467
  this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
517
- this.TEXTAREA.style.backgroundColor = backgroundColor;
468
+ this.TEXTAREA.style.backgroundColor = this.TD.style.backgroundColor;
469
+ var textareaComputedStyle = (0, _element.getComputedStyle)(this.TEXTAREA);
470
+ var horizontalPadding = parseInt(textareaComputedStyle.paddingLeft, 10) + parseInt(textareaComputedStyle.paddingRight, 10);
471
+ var verticalPadding = parseInt(textareaComputedStyle.paddingTop, 10) + parseInt(textareaComputedStyle.paddingBottom, 10);
472
+ var finalWidth = width - horizontalPadding;
473
+ var finalHeight = height - verticalPadding;
474
+ var finalMaxWidth = maxWidth - horizontalPadding;
475
+ var finalMaxHeight = maxHeight - verticalPadding;
518
476
  this.autoResize.init(this.TEXTAREA, {
519
- minHeight: Math.min(height, maxHeight),
520
- maxHeight: maxHeight,
521
- // TEXTAREA should never be higher than visible part of the viewport (should not cover the scrollbar)
522
- minWidth: Math.min(width, maxWidth),
523
- maxWidth: maxWidth // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
524
-
477
+ minWidth: Math.min(finalWidth, finalMaxWidth),
478
+ minHeight: Math.min(finalHeight, finalMaxHeight),
479
+ // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
480
+ maxWidth: finalMaxWidth,
481
+ maxHeight: finalMaxHeight
525
482
  }, true);
526
483
  }
527
484
  /**
@@ -588,86 +545,153 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
588
545
  this.clearHooks();
589
546
  }
590
547
  /**
591
- * OnBeforeKeyDown callback.
548
+ * Register shortcuts responsible for handling editor.
592
549
  *
593
- * @param {Event} event The keyboard event object.
550
+ * @private
594
551
  */
595
552
 
596
553
  }, {
597
- key: "onBeforeKeyDown",
598
- value: function onBeforeKeyDown(event) {
599
- // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
600
- var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey; // Process only events that have been fired in the editor
554
+ key: "registerShortcuts",
555
+ value: function registerShortcuts() {
556
+ var _this4 = this;
557
+
558
+ var shortcutManager = this.hot.getShortcutManager();
559
+ var editorContext = shortcutManager.getContext('editor');
560
+ var contextConfig = {
561
+ runOnlyIf: function runOnlyIf() {
562
+ return (0, _mixed.isDefined)(_this4.hot.getSelected());
563
+ },
564
+ group: SHORTCUTS_GROUP
565
+ };
566
+
567
+ var insertNewLine = function insertNewLine() {
568
+ _this4.hot.rootDocument.execCommand('insertText', false, '\n');
569
+ };
570
+
571
+ editorContext.addShortcuts([{
572
+ keys: [['Tab']],
573
+ // TODO: Duplicated part of code (callback to shortcut).
574
+ callback: function callback(event) {
575
+ var tableMeta = _this4.hot.getSettings();
576
+
577
+ var tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
578
+
579
+ _this4.hot.selection.transformStart(tabMoves.row, tabMoves.col, true);
580
+ }
581
+ }, {
582
+ keys: [['Shift', 'Tab']],
583
+ // TODO: Duplicated part of code (callback to shortcut).
584
+ callback: function callback(event) {
585
+ var tableMeta = _this4.hot.getSettings();
601
586
 
602
- if (event.target !== this.TEXTAREA || (0, _event.isImmediatePropagationStopped)(event)) {
603
- return;
604
- }
587
+ var tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
605
588
 
606
- switch (event.keyCode) {
607
- case _unicode.KEY_CODES.ARROW_RIGHT:
608
- if (this.isInFullEditMode()) {
609
- if (!this.isWaiting() && !this.allowKeyEventPropagation(event.keyCode)) {
610
- (0, _event.stopImmediatePropagation)(event);
611
- }
612
- }
613
-
614
- break;
615
-
616
- case _unicode.KEY_CODES.ARROW_LEFT:
617
- if (this.isInFullEditMode()) {
618
- if (!this.isWaiting() && !this.allowKeyEventPropagation(event.keyCode)) {
619
- (0, _event.stopImmediatePropagation)(event);
620
- }
621
- }
622
-
623
- break;
624
-
625
- case _unicode.KEY_CODES.ARROW_UP:
626
- case _unicode.KEY_CODES.ARROW_DOWN:
627
- if (this.isInFullEditMode()) {
628
- if (!this.isWaiting() && !this.allowKeyEventPropagation(event.keyCode)) {
629
- (0, _event.stopImmediatePropagation)(event);
630
- }
631
- }
632
-
633
- break;
634
-
635
- case _unicode.KEY_CODES.ENTER:
636
- {
637
- var isMultipleSelection = this.hot.selection.isMultiple();
638
-
639
- if (ctrlDown && !isMultipleSelection || event.altKey) {
640
- // if ctrl+enter or alt+enter, add new line
641
- if (this.isOpened()) {
642
- var caretPosition = (0, _element.getCaretPosition)(this.TEXTAREA);
643
- var value = this.getValue();
644
- var newValue = "".concat(value.slice(0, caretPosition), "\n").concat(value.slice(caretPosition));
645
- this.setValue(newValue);
646
- (0, _element.setCaretPosition)(this.TEXTAREA, caretPosition + 1);
647
- } else {
648
- this.beginEditing("".concat(this.originalValue, "\n"));
649
- }
650
-
651
- (0, _event.stopImmediatePropagation)(event);
652
- }
653
-
654
- event.preventDefault(); // don't add newline to field
655
-
656
- break;
657
- }
658
-
659
- case _unicode.KEY_CODES.BACKSPACE:
660
- case _unicode.KEY_CODES.DELETE:
661
- case _unicode.KEY_CODES.HOME:
662
- case _unicode.KEY_CODES.END:
663
- (0, _event.stopImmediatePropagation)(event); // backspace, delete, home, end should only work locally when cell is edited (not in table context)
664
-
665
- break;
666
-
667
- default:
668
- break;
669
- }
589
+ _this4.hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
590
+ }
591
+ }, {
592
+ keys: [['Control', 'Enter']],
593
+ callback: function callback() {
594
+ insertNewLine();
595
+ return false; // Will block closing editor.
596
+ },
597
+ runOnlyIf: function runOnlyIf(event) {
598
+ return !_this4.hot.selection.isMultiple() && // We trigger a data population for multiple selection.
599
+ // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
600
+ !event.altKey;
601
+ },
602
+ relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
603
+ position: 'before'
604
+ }, {
605
+ keys: [['Meta', 'Enter']],
606
+ callback: function callback() {
607
+ insertNewLine();
608
+ return false; // Will block closing editor.
609
+ },
610
+ runOnlyIf: function runOnlyIf() {
611
+ return !_this4.hot.selection.isMultiple();
612
+ },
613
+ // We trigger a data population for multiple selection.
614
+ relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
615
+ position: 'before'
616
+ }, {
617
+ keys: [['Alt', 'Enter']],
618
+ callback: function callback() {
619
+ insertNewLine();
620
+ return false; // Will block closing editor.
621
+ },
622
+ relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
623
+ position: 'before'
624
+ }, {
625
+ // TODO: Duplicated part of code (callback to shortcut)
626
+ keys: [['PageUp']],
627
+ callback: function callback() {
628
+ _this4.hot.selection.transformStart(-_this4.hot.countVisibleRows(), 0);
629
+ }
630
+ }, {
631
+ // TODO: Duplicated part of code (callback to shortcut)
632
+ keys: [['PageDown']],
633
+ callback: function callback() {
634
+ _this4.hot.selection.transformStart(_this4.hot.countVisibleRows(), 0);
635
+ }
636
+ }, {
637
+ keys: [['Home']],
638
+ callback: function callback(event, _ref) {
639
+ var _ref2 = _slicedToArray(_ref, 1),
640
+ keyName = _ref2[0];
670
641
 
642
+ (0, _caretPositioner.updateCaretPosition)(keyName, _this4.TEXTAREA);
643
+ }
644
+ }, {
645
+ keys: [['End']],
646
+ callback: function callback(event, _ref3) {
647
+ var _ref4 = _slicedToArray(_ref3, 1),
648
+ keyName = _ref4[0];
649
+
650
+ (0, _caretPositioner.updateCaretPosition)(keyName, _this4.TEXTAREA);
651
+ }
652
+ }, {
653
+ keys: [['Control/Meta', 'Z']],
654
+ preventDefault: false,
655
+ callback: function callback() {
656
+ _this4.hot._registerTimeout(function () {
657
+ _this4.autoResize.resize();
658
+ }, 10);
659
+ }
660
+ }, {
661
+ keys: [['Control/Meta', 'Shift', 'Z']],
662
+ preventDefault: false,
663
+ callback: function callback() {
664
+ _this4.hot._registerTimeout(function () {
665
+ _this4.autoResize.resize();
666
+ }, 10);
667
+ }
668
+ }], contextConfig);
669
+ }
670
+ /**
671
+ * Unregister shortcuts responsible for handling editor.
672
+ *
673
+ * @private
674
+ */
675
+
676
+ }, {
677
+ key: "unregisterShortcuts",
678
+ value: function unregisterShortcuts() {
679
+ var shortcutManager = this.hot.getShortcutManager();
680
+ var editorContext = shortcutManager.getContext('editor');
681
+ editorContext.removeShortcutsByGroup(_editorManager.SHORTCUTS_GROUP_NAVIGATION);
682
+ editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP);
683
+ editorContext.removeShortcutsByGroup(_baseEditor2.SHORTCUTS_GROUP_EDITOR);
684
+ }
685
+ /**
686
+ * OnAfterDocumentKeyDown callback.
687
+ *
688
+ * @private
689
+ * @param {KeyboardEvent} event The keyboard event object.
690
+ */
691
+
692
+ }, {
693
+ key: "onAfterDocumentKeyDown",
694
+ value: function onAfterDocumentKeyDown(event) {
671
695
  var arrowKeyCodes = [_unicode.KEY_CODES.ARROW_UP, _unicode.KEY_CODES.ARROW_RIGHT, _unicode.KEY_CODES.ARROW_DOWN, _unicode.KEY_CODES.ARROW_LEFT];
672
696
 
673
697
  if (arrowKeyCodes.indexOf(event.keyCode) === -1) {