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
@@ -31,12 +31,8 @@ var _baseEditor = require("../baseEditor");
31
31
 
32
32
  var _element = require("../../helpers/dom/element");
33
33
 
34
- var _event = require("../../helpers/dom/event");
35
-
36
34
  var _object = require("../../helpers/object");
37
35
 
38
- var _unicode = require("../../helpers/unicode");
39
-
40
36
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
41
37
 
42
38
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -45,13 +41,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
45
41
 
46
42
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
47
43
 
48
- 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); }
44
+ 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); }
49
45
 
50
46
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
51
47
 
52
48
  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); }
53
49
 
54
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
50
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
55
51
 
56
52
  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); }; }
57
53
 
@@ -61,9 +57,10 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
61
57
 
62
58
  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; } }
63
59
 
64
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
60
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
65
61
 
66
62
  var EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
63
+ var SHORTCUTS_GROUP = 'selectEditor';
67
64
  var EDITOR_TYPE = 'select';
68
65
  /**
69
66
  * @private
@@ -125,14 +122,12 @@ var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
125
122
  }, {
126
123
  key: "open",
127
124
  value: function open() {
128
- var _this = this;
129
-
130
125
  this._opened = true;
131
126
  this.refreshDimensions();
132
127
  this.select.style.display = '';
133
- this.addHook('beforeKeyDown', function () {
134
- return _this.onBeforeKeyDown();
135
- });
128
+ var shortcutManager = this.hot.getShortcutManager();
129
+ shortcutManager.setActiveContextName('editor');
130
+ this.registerShortcuts();
136
131
  }
137
132
  /**
138
133
  * Closes the editor.
@@ -148,6 +143,7 @@ var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
148
143
  (0, _element.removeClass)(this.select, EDITOR_VISIBLE_CLASS_NAME);
149
144
  }
150
145
 
146
+ this.unregisterShortcuts();
151
147
  this.clearHooks();
152
148
  }
153
149
  /**
@@ -168,19 +164,19 @@ var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
168
164
  }, {
169
165
  key: "registerHooks",
170
166
  value: function registerHooks() {
171
- var _this2 = this;
167
+ var _this = this;
172
168
 
173
169
  this.addHook('afterScrollHorizontally', function () {
174
- return _this2.refreshDimensions();
170
+ return _this.refreshDimensions();
175
171
  });
176
172
  this.addHook('afterScrollVertically', function () {
177
- return _this2.refreshDimensions();
173
+ return _this.refreshDimensions();
178
174
  });
179
175
  this.addHook('afterColumnResize', function () {
180
- return _this2.refreshDimensions();
176
+ return _this.refreshDimensions();
181
177
  });
182
178
  this.addHook('afterRowResize', function () {
183
- return _this2.refreshDimensions();
179
+ return _this.refreshDimensions();
184
180
  });
185
181
  }
186
182
  /**
@@ -197,7 +193,7 @@ var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
197
193
  }, {
198
194
  key: "prepare",
199
195
  value: function prepare(row, col, prop, td, value, cellProperties) {
200
- var _this3 = this;
196
+ var _this2 = this;
201
197
 
202
198
  _get(_getPrototypeOf(SelectEditor.prototype), "prepare", this).call(this, row, col, prop, td, value, cellProperties);
203
199
 
@@ -212,12 +208,12 @@ var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
212
208
 
213
209
  (0, _element.empty)(this.select);
214
210
  (0, _object.objectEach)(options, function (optionValue, key) {
215
- var optionElement = _this3.hot.rootDocument.createElement('OPTION');
211
+ var optionElement = _this2.hot.rootDocument.createElement('OPTION');
216
212
 
217
213
  optionElement.value = key;
218
214
  (0, _element.fastInnerHTML)(optionElement, optionValue);
219
215
 
220
- _this3.select.appendChild(optionElement);
216
+ _this2.select.appendChild(optionElement);
221
217
  });
222
218
  }
223
219
  /**
@@ -277,114 +273,73 @@ var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
277
273
  return;
278
274
  }
279
275
 
280
- var wtOverlays = this.hot.view.wt.wtOverlays;
281
- var currentOffset = (0, _element.offset)(this.TD);
282
- var containerOffset = (0, _element.offset)(this.hot.rootElement);
283
- var scrollableContainer = wtOverlays.scrollableElement;
284
- var editorSection = this.checkEditorSection();
285
- var width = (0, _element.outerWidth)(this.TD) + 1;
286
- var height = (0, _element.outerHeight)(this.TD) + 1;
287
- var editTop = currentOffset.top - containerOffset.top - 1 - (scrollableContainer.scrollTop || 0);
288
- var editLeft = currentOffset.left - containerOffset.left - 1 - (scrollableContainer.scrollLeft || 0);
289
- var cssTransformOffset;
290
-
291
- switch (editorSection) {
292
- case 'top':
293
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.topOverlay.clone.wtTable.holder.parentNode);
294
- break;
295
-
296
- case 'left':
297
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);
298
- break;
299
-
300
- case 'top-left-corner':
301
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);
302
- break;
303
-
304
- case 'bottom-left-corner':
305
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);
306
- break;
307
-
308
- case 'bottom':
309
- cssTransformOffset = (0, _element.getCssTransform)(wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode);
310
- break;
311
-
312
- default:
313
- break;
314
- }
315
-
316
- var renderableRow = this.hot.rowIndexMapper.getRenderableFromVisualIndex(this.row);
317
- var renderableColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(this.col);
318
- var nrOfRenderableRowIndexes = this.hot.rowIndexMapper.getRenderableIndexesLength();
319
- var firstRowIndexOfTheBottomOverlay = nrOfRenderableRowIndexes - this.hot.view.wt.getSetting('fixedRowsBottom');
320
-
321
- if (renderableRow <= 0 || renderableRow === firstRowIndexOfTheBottomOverlay) {
322
- editTop += 1;
323
- }
324
-
325
- if (renderableColumn <= 0) {
326
- editLeft += 1;
327
- }
276
+ var _this$getEditedCellRe = this.getEditedCellRect(),
277
+ top = _this$getEditedCellRe.top,
278
+ start = _this$getEditedCellRe.start,
279
+ width = _this$getEditedCellRe.width,
280
+ height = _this$getEditedCellRe.height;
328
281
 
329
282
  var selectStyle = this.select.style;
330
-
331
- if (cssTransformOffset && cssTransformOffset !== -1) {
332
- selectStyle[cssTransformOffset[0]] = cssTransformOffset[1];
333
- } else {
334
- (0, _element.resetCssTransform)(this.select);
335
- }
336
-
337
- var cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
338
-
339
- if (parseInt(cellComputedStyle.borderTopWidth, 10) > 0) {
340
- height -= 1;
341
- }
342
-
343
- if (parseInt(cellComputedStyle.borderLeftWidth, 10) > 0) {
344
- width -= 1;
345
- }
346
-
347
283
  selectStyle.height = "".concat(height, "px");
348
- selectStyle.minWidth = "".concat(width, "px");
349
- selectStyle.top = "".concat(editTop, "px");
350
- selectStyle.left = "".concat(editLeft, "px");
284
+ selectStyle.width = "".concat(width, "px");
285
+ selectStyle.top = "".concat(top, "px");
286
+ selectStyle[this.hot.isRtl() ? 'right' : 'left'] = "".concat(start, "px");
351
287
  selectStyle.margin = '0px';
352
288
  (0, _element.addClass)(this.select, EDITOR_VISIBLE_CLASS_NAME);
353
289
  }
354
290
  /**
355
- * OnBeforeKeyDown callback.
291
+ * Register shortcuts responsible for handling editor.
356
292
  *
357
293
  * @private
358
294
  */
359
295
 
360
296
  }, {
361
- key: "onBeforeKeyDown",
362
- value: function onBeforeKeyDown() {
363
- var previousOptionIndex = this.select.selectedIndex - 1;
364
- var nextOptionIndex = this.select.selectedIndex + 1;
297
+ key: "registerShortcuts",
298
+ value: function registerShortcuts() {
299
+ var _this3 = this;
365
300
 
366
- switch (event.keyCode) {
367
- case _unicode.KEY_CODES.ARROW_UP:
368
- if (previousOptionIndex >= 0) {
369
- this.select[previousOptionIndex].selected = true;
370
- }
301
+ var shortcutManager = this.hot.getShortcutManager();
302
+ var editorContext = shortcutManager.getContext('editor');
303
+ var contextConfig = {
304
+ group: SHORTCUTS_GROUP
305
+ }; // Actions from fast edit works.
371
306
 
372
- (0, _event.stopImmediatePropagation)(event);
373
- event.preventDefault();
374
- break;
307
+ if (this.isInFullEditMode() === false) {
308
+ return;
309
+ }
375
310
 
376
- case _unicode.KEY_CODES.ARROW_DOWN:
377
- if (nextOptionIndex <= this.select.length - 1) {
378
- this.select[nextOptionIndex].selected = true;
311
+ editorContext.addShortcuts([{
312
+ keys: [['ArrowUp']],
313
+ callback: function callback() {
314
+ var previousOptionIndex = _this3.select.selectedIndex - 1;
315
+
316
+ if (previousOptionIndex >= 0) {
317
+ _this3.select[previousOptionIndex].selected = true;
379
318
  }
319
+ }
320
+ }, {
321
+ keys: [['ArrowDown']],
322
+ callback: function callback() {
323
+ var nextOptionIndex = _this3.select.selectedIndex + 1;
380
324
 
381
- (0, _event.stopImmediatePropagation)(event);
382
- event.preventDefault();
383
- break;
325
+ if (nextOptionIndex <= _this3.select.length - 1) {
326
+ _this3.select[nextOptionIndex].selected = true;
327
+ }
328
+ }
329
+ }], contextConfig);
330
+ }
331
+ /**
332
+ * Unregister shortcuts responsible for handling editor.
333
+ *
334
+ * @private
335
+ */
384
336
 
385
- default:
386
- break;
387
- }
337
+ }, {
338
+ key: "unregisterShortcuts",
339
+ value: function unregisterShortcuts() {
340
+ var shortcutManager = this.hot.getShortcutManager();
341
+ var editorContext = shortcutManager.getContext('editor');
342
+ editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP);
388
343
  }
389
344
  }], [{
390
345
  key: "EDITOR_TYPE",
@@ -19,13 +19,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
19
19
 
20
20
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
21
21
 
22
- 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); }
22
+ 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); }
23
23
 
24
24
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
25
25
 
26
26
  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); }
27
27
 
28
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
28
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
29
29
 
30
30
  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); }; }
31
31
 
@@ -35,14 +35,13 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
35
35
 
36
36
  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; } }
37
37
 
38
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
38
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
39
39
 
40
40
  import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
41
- import { addClass, empty, fastInnerHTML, getComputedStyle, getCssTransform, hasClass, offset, outerHeight, outerWidth, removeClass, resetCssTransform } from "../../helpers/dom/element.mjs";
42
- import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
41
+ import { addClass, empty, fastInnerHTML, hasClass, removeClass } from "../../helpers/dom/element.mjs";
43
42
  import { objectEach } from "../../helpers/object.mjs";
44
- import { KEY_CODES } from "../../helpers/unicode.mjs";
45
43
  var EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
44
+ var SHORTCUTS_GROUP = 'selectEditor';
46
45
  export var EDITOR_TYPE = 'select';
47
46
  /**
48
47
  * @private
@@ -102,14 +101,12 @@ export var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
102
101
  }, {
103
102
  key: "open",
104
103
  value: function open() {
105
- var _this = this;
106
-
107
104
  this._opened = true;
108
105
  this.refreshDimensions();
109
106
  this.select.style.display = '';
110
- this.addHook('beforeKeyDown', function () {
111
- return _this.onBeforeKeyDown();
112
- });
107
+ var shortcutManager = this.hot.getShortcutManager();
108
+ shortcutManager.setActiveContextName('editor');
109
+ this.registerShortcuts();
113
110
  }
114
111
  /**
115
112
  * Closes the editor.
@@ -125,6 +122,7 @@ export var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
125
122
  removeClass(this.select, EDITOR_VISIBLE_CLASS_NAME);
126
123
  }
127
124
 
125
+ this.unregisterShortcuts();
128
126
  this.clearHooks();
129
127
  }
130
128
  /**
@@ -145,19 +143,19 @@ export var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
145
143
  }, {
146
144
  key: "registerHooks",
147
145
  value: function registerHooks() {
148
- var _this2 = this;
146
+ var _this = this;
149
147
 
150
148
  this.addHook('afterScrollHorizontally', function () {
151
- return _this2.refreshDimensions();
149
+ return _this.refreshDimensions();
152
150
  });
153
151
  this.addHook('afterScrollVertically', function () {
154
- return _this2.refreshDimensions();
152
+ return _this.refreshDimensions();
155
153
  });
156
154
  this.addHook('afterColumnResize', function () {
157
- return _this2.refreshDimensions();
155
+ return _this.refreshDimensions();
158
156
  });
159
157
  this.addHook('afterRowResize', function () {
160
- return _this2.refreshDimensions();
158
+ return _this.refreshDimensions();
161
159
  });
162
160
  }
163
161
  /**
@@ -174,7 +172,7 @@ export var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
174
172
  }, {
175
173
  key: "prepare",
176
174
  value: function prepare(row, col, prop, td, value, cellProperties) {
177
- var _this3 = this;
175
+ var _this2 = this;
178
176
 
179
177
  _get(_getPrototypeOf(SelectEditor.prototype), "prepare", this).call(this, row, col, prop, td, value, cellProperties);
180
178
 
@@ -189,12 +187,12 @@ export var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
189
187
 
190
188
  empty(this.select);
191
189
  objectEach(options, function (optionValue, key) {
192
- var optionElement = _this3.hot.rootDocument.createElement('OPTION');
190
+ var optionElement = _this2.hot.rootDocument.createElement('OPTION');
193
191
 
194
192
  optionElement.value = key;
195
193
  fastInnerHTML(optionElement, optionValue);
196
194
 
197
- _this3.select.appendChild(optionElement);
195
+ _this2.select.appendChild(optionElement);
198
196
  });
199
197
  }
200
198
  /**
@@ -254,114 +252,73 @@ export var SelectEditor = /*#__PURE__*/function (_BaseEditor) {
254
252
  return;
255
253
  }
256
254
 
257
- var wtOverlays = this.hot.view.wt.wtOverlays;
258
- var currentOffset = offset(this.TD);
259
- var containerOffset = offset(this.hot.rootElement);
260
- var scrollableContainer = wtOverlays.scrollableElement;
261
- var editorSection = this.checkEditorSection();
262
- var width = outerWidth(this.TD) + 1;
263
- var height = outerHeight(this.TD) + 1;
264
- var editTop = currentOffset.top - containerOffset.top - 1 - (scrollableContainer.scrollTop || 0);
265
- var editLeft = currentOffset.left - containerOffset.left - 1 - (scrollableContainer.scrollLeft || 0);
266
- var cssTransformOffset;
267
-
268
- switch (editorSection) {
269
- case 'top':
270
- cssTransformOffset = getCssTransform(wtOverlays.topOverlay.clone.wtTable.holder.parentNode);
271
- break;
272
-
273
- case 'left':
274
- cssTransformOffset = getCssTransform(wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);
275
- break;
276
-
277
- case 'top-left-corner':
278
- cssTransformOffset = getCssTransform(wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);
279
- break;
280
-
281
- case 'bottom-left-corner':
282
- cssTransformOffset = getCssTransform(wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);
283
- break;
284
-
285
- case 'bottom':
286
- cssTransformOffset = getCssTransform(wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode);
287
- break;
288
-
289
- default:
290
- break;
291
- }
292
-
293
- var renderableRow = this.hot.rowIndexMapper.getRenderableFromVisualIndex(this.row);
294
- var renderableColumn = this.hot.columnIndexMapper.getRenderableFromVisualIndex(this.col);
295
- var nrOfRenderableRowIndexes = this.hot.rowIndexMapper.getRenderableIndexesLength();
296
- var firstRowIndexOfTheBottomOverlay = nrOfRenderableRowIndexes - this.hot.view.wt.getSetting('fixedRowsBottom');
297
-
298
- if (renderableRow <= 0 || renderableRow === firstRowIndexOfTheBottomOverlay) {
299
- editTop += 1;
300
- }
301
-
302
- if (renderableColumn <= 0) {
303
- editLeft += 1;
304
- }
255
+ var _this$getEditedCellRe = this.getEditedCellRect(),
256
+ top = _this$getEditedCellRe.top,
257
+ start = _this$getEditedCellRe.start,
258
+ width = _this$getEditedCellRe.width,
259
+ height = _this$getEditedCellRe.height;
305
260
 
306
261
  var selectStyle = this.select.style;
307
-
308
- if (cssTransformOffset && cssTransformOffset !== -1) {
309
- selectStyle[cssTransformOffset[0]] = cssTransformOffset[1];
310
- } else {
311
- resetCssTransform(this.select);
312
- }
313
-
314
- var cellComputedStyle = getComputedStyle(this.TD, this.hot.rootWindow);
315
-
316
- if (parseInt(cellComputedStyle.borderTopWidth, 10) > 0) {
317
- height -= 1;
318
- }
319
-
320
- if (parseInt(cellComputedStyle.borderLeftWidth, 10) > 0) {
321
- width -= 1;
322
- }
323
-
324
262
  selectStyle.height = "".concat(height, "px");
325
- selectStyle.minWidth = "".concat(width, "px");
326
- selectStyle.top = "".concat(editTop, "px");
327
- selectStyle.left = "".concat(editLeft, "px");
263
+ selectStyle.width = "".concat(width, "px");
264
+ selectStyle.top = "".concat(top, "px");
265
+ selectStyle[this.hot.isRtl() ? 'right' : 'left'] = "".concat(start, "px");
328
266
  selectStyle.margin = '0px';
329
267
  addClass(this.select, EDITOR_VISIBLE_CLASS_NAME);
330
268
  }
331
269
  /**
332
- * OnBeforeKeyDown callback.
270
+ * Register shortcuts responsible for handling editor.
333
271
  *
334
272
  * @private
335
273
  */
336
274
 
337
275
  }, {
338
- key: "onBeforeKeyDown",
339
- value: function onBeforeKeyDown() {
340
- var previousOptionIndex = this.select.selectedIndex - 1;
341
- var nextOptionIndex = this.select.selectedIndex + 1;
276
+ key: "registerShortcuts",
277
+ value: function registerShortcuts() {
278
+ var _this3 = this;
342
279
 
343
- switch (event.keyCode) {
344
- case KEY_CODES.ARROW_UP:
345
- if (previousOptionIndex >= 0) {
346
- this.select[previousOptionIndex].selected = true;
347
- }
280
+ var shortcutManager = this.hot.getShortcutManager();
281
+ var editorContext = shortcutManager.getContext('editor');
282
+ var contextConfig = {
283
+ group: SHORTCUTS_GROUP
284
+ }; // Actions from fast edit works.
348
285
 
349
- stopImmediatePropagation(event);
350
- event.preventDefault();
351
- break;
286
+ if (this.isInFullEditMode() === false) {
287
+ return;
288
+ }
289
+
290
+ editorContext.addShortcuts([{
291
+ keys: [['ArrowUp']],
292
+ callback: function callback() {
293
+ var previousOptionIndex = _this3.select.selectedIndex - 1;
352
294
 
353
- case KEY_CODES.ARROW_DOWN:
354
- if (nextOptionIndex <= this.select.length - 1) {
355
- this.select[nextOptionIndex].selected = true;
295
+ if (previousOptionIndex >= 0) {
296
+ _this3.select[previousOptionIndex].selected = true;
356
297
  }
298
+ }
299
+ }, {
300
+ keys: [['ArrowDown']],
301
+ callback: function callback() {
302
+ var nextOptionIndex = _this3.select.selectedIndex + 1;
357
303
 
358
- stopImmediatePropagation(event);
359
- event.preventDefault();
360
- break;
304
+ if (nextOptionIndex <= _this3.select.length - 1) {
305
+ _this3.select[nextOptionIndex].selected = true;
306
+ }
307
+ }
308
+ }], contextConfig);
309
+ }
310
+ /**
311
+ * Unregister shortcuts responsible for handling editor.
312
+ *
313
+ * @private
314
+ */
361
315
 
362
- default:
363
- break;
364
- }
316
+ }, {
317
+ key: "unregisterShortcuts",
318
+ value: function unregisterShortcuts() {
319
+ var shortcutManager = this.hot.getShortcutManager();
320
+ var editorContext = shortcutManager.getContext('editor');
321
+ editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP);
365
322
  }
366
323
  }], [{
367
324
  key: "EDITOR_TYPE",
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.updateCaretPosition = updateCaretPosition;
5
+
6
+ require("core-js/modules/es.regexp.exec.js");
7
+
8
+ require("core-js/modules/es.string.split.js");
9
+
10
+ var _element = require("../../helpers/dom/element");
11
+
12
+ /**
13
+ * Updates the textarea caret position depends on the action executed on that element.
14
+ *
15
+ * The following actions are supported:
16
+ * - 'home': Move the caret to the beginning of the current line;
17
+ * - 'end': Move the caret to the end of the current line.
18
+ *
19
+ * @param {'home'|'end'} actionName The action to perform that modifies the caret behavior.
20
+ * @param {HTMLTextAreaElement} textareaElement The textarea element where the action is supposed to happen.
21
+ */
22
+ function updateCaretPosition(actionName, textareaElement) {
23
+ var caretPosition = (0, _element.getCaretPosition)(textareaElement);
24
+ var textLines = textareaElement.value.split('\n');
25
+ var newCaretPosition = caretPosition;
26
+ var lineStartIndex = 0;
27
+
28
+ for (var i = 0; i < textLines.length; i++) {
29
+ var textLine = textLines[i];
30
+
31
+ if (i !== 0) {
32
+ lineStartIndex += textLines[i - 1].length + 1;
33
+ }
34
+
35
+ var lineEndIndex = lineStartIndex + textLine.length;
36
+
37
+ if (actionName === 'home') {
38
+ newCaretPosition = lineStartIndex;
39
+ } else if (actionName === 'end') {
40
+ newCaretPosition = lineEndIndex;
41
+ }
42
+
43
+ if (caretPosition <= lineEndIndex) {
44
+ break;
45
+ }
46
+ }
47
+
48
+ (0, _element.setCaretPosition)(textareaElement, newCaretPosition);
49
+ }
@@ -0,0 +1,42 @@
1
+ import "core-js/modules/es.regexp.exec.js";
2
+ import "core-js/modules/es.string.split.js";
3
+ import { getCaretPosition, setCaretPosition } from "../../helpers/dom/element.mjs";
4
+ /**
5
+ * Updates the textarea caret position depends on the action executed on that element.
6
+ *
7
+ * The following actions are supported:
8
+ * - 'home': Move the caret to the beginning of the current line;
9
+ * - 'end': Move the caret to the end of the current line.
10
+ *
11
+ * @param {'home'|'end'} actionName The action to perform that modifies the caret behavior.
12
+ * @param {HTMLTextAreaElement} textareaElement The textarea element where the action is supposed to happen.
13
+ */
14
+
15
+ export function updateCaretPosition(actionName, textareaElement) {
16
+ var caretPosition = getCaretPosition(textareaElement);
17
+ var textLines = textareaElement.value.split('\n');
18
+ var newCaretPosition = caretPosition;
19
+ var lineStartIndex = 0;
20
+
21
+ for (var i = 0; i < textLines.length; i++) {
22
+ var textLine = textLines[i];
23
+
24
+ if (i !== 0) {
25
+ lineStartIndex += textLines[i - 1].length + 1;
26
+ }
27
+
28
+ var lineEndIndex = lineStartIndex + textLine.length;
29
+
30
+ if (actionName === 'home') {
31
+ newCaretPosition = lineStartIndex;
32
+ } else if (actionName === 'end') {
33
+ newCaretPosition = lineEndIndex;
34
+ }
35
+
36
+ if (caretPosition <= lineEndIndex) {
37
+ break;
38
+ }
39
+ }
40
+
41
+ setCaretPosition(textareaElement, newCaretPosition);
42
+ }