handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (456) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -28
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +69 -36
  6. package/3rdparty/walkontable/src/cell/range.mjs +68 -35
  7. package/3rdparty/walkontable/src/event.js +3 -5
  8. package/3rdparty/walkontable/src/event.mjs +3 -5
  9. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  14. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  15. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  16. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  17. package/3rdparty/walkontable/src/overlays.js +55 -64
  18. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  19. package/3rdparty/walkontable/src/renderer/table.js +0 -2
  20. package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
  21. package/3rdparty/walkontable/src/scroll.js +20 -23
  22. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  23. package/3rdparty/walkontable/src/selection/border/border.js +1 -0
  24. package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
  25. package/3rdparty/walkontable/src/selection/manager.js +40 -45
  26. package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
  27. package/3rdparty/walkontable/src/selection/scanner.js +5 -4
  28. package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
  29. package/3rdparty/walkontable/src/settings.js +13 -15
  30. package/3rdparty/walkontable/src/settings.mjs +13 -15
  31. package/3rdparty/walkontable/src/table.js +23 -26
  32. package/3rdparty/walkontable/src/table.mjs +23 -26
  33. package/CHANGELOG.md +56 -0
  34. package/base.js +2 -4
  35. package/base.mjs +2 -2
  36. package/common.d.ts +1 -1
  37. package/core.d.ts +7 -9
  38. package/core.js +241 -439
  39. package/core.mjs +245 -443
  40. package/dataMap/dataMap.js +1 -0
  41. package/dataMap/dataMap.mjs +1 -0
  42. package/dataMap/dataSource.js +5 -5
  43. package/dataMap/dataSource.mjs +5 -5
  44. package/dataMap/metaManager/lazyFactoryMap.js +1 -0
  45. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
  46. package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
  47. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
  48. package/dataMap/metaManager/metaSchema.js +33 -24
  49. package/dataMap/metaManager/metaSchema.mjs +33 -24
  50. package/dist/handsontable.css +25 -3
  51. package/dist/handsontable.full.css +25 -3
  52. package/dist/handsontable.full.js +14539 -11358
  53. package/dist/handsontable.full.min.css +5 -5
  54. package/dist/handsontable.full.min.js +137 -125
  55. package/dist/handsontable.js +31414 -28455
  56. package/dist/handsontable.min.css +5 -5
  57. package/dist/handsontable.min.js +11 -3
  58. package/dist/languages/all.js +133 -0
  59. package/dist/languages/ar-AR.js +7 -0
  60. package/dist/languages/cs-CZ.js +7 -0
  61. package/dist/languages/de-CH.js +7 -0
  62. package/dist/languages/de-DE.js +7 -0
  63. package/dist/languages/en-US.js +7 -0
  64. package/dist/languages/es-MX.js +7 -0
  65. package/dist/languages/fr-FR.js +7 -0
  66. package/dist/languages/it-IT.js +7 -0
  67. package/dist/languages/ja-JP.js +7 -0
  68. package/dist/languages/ko-KR.js +7 -0
  69. package/dist/languages/lv-LV.js +7 -0
  70. package/dist/languages/nb-NO.js +7 -0
  71. package/dist/languages/nl-NL.js +7 -0
  72. package/dist/languages/pl-PL.js +7 -0
  73. package/dist/languages/pt-BR.js +7 -0
  74. package/dist/languages/ru-RU.js +7 -0
  75. package/dist/languages/sr-SP.js +7 -0
  76. package/dist/languages/zh-CN.js +7 -0
  77. package/dist/languages/zh-TW.js +7 -0
  78. package/editorManager.js +19 -89
  79. package/editorManager.mjs +24 -93
  80. package/editors/baseEditor/baseEditor.js +1 -0
  81. package/editors/baseEditor/baseEditor.mjs +1 -0
  82. package/editors/textEditor/textEditor.js +14 -20
  83. package/editors/textEditor/textEditor.mjs +16 -22
  84. package/helpers/dom/element.js +0 -11
  85. package/helpers/dom/element.mjs +0 -10
  86. package/helpers/mixed.js +2 -2
  87. package/helpers/mixed.mjs +2 -2
  88. package/helpers/number.d.ts +1 -0
  89. package/helpers/number.js +18 -0
  90. package/helpers/number.mjs +17 -0
  91. package/helpers/object.js +2 -0
  92. package/helpers/object.mjs +2 -0
  93. package/i18n/languages/ar-AR.js +7 -1
  94. package/i18n/languages/cs-CZ.js +7 -1
  95. package/i18n/languages/de-CH.js +7 -1
  96. package/i18n/languages/de-DE.js +7 -1
  97. package/i18n/languages/en-US.js +7 -1
  98. package/i18n/languages/es-MX.js +7 -1
  99. package/i18n/languages/fr-FR.js +7 -1
  100. package/i18n/languages/it-IT.js +7 -1
  101. package/i18n/languages/ja-JP.js +7 -1
  102. package/i18n/languages/ko-KR.js +7 -1
  103. package/i18n/languages/lv-LV.js +7 -1
  104. package/i18n/languages/nb-NO.js +7 -1
  105. package/i18n/languages/nl-NL.js +7 -1
  106. package/i18n/languages/pl-PL.js +7 -1
  107. package/i18n/languages/pt-BR.js +7 -1
  108. package/i18n/languages/ru-RU.js +7 -1
  109. package/i18n/languages/sr-SP.js +7 -1
  110. package/i18n/languages/zh-CN.js +7 -1
  111. package/i18n/languages/zh-TW.js +7 -1
  112. package/languages/all.js +133 -0
  113. package/languages/ar-AR.js +7 -0
  114. package/languages/cs-CZ.js +7 -0
  115. package/languages/de-CH.js +7 -0
  116. package/languages/de-DE.js +7 -0
  117. package/languages/en-US.js +7 -0
  118. package/languages/es-MX.js +7 -0
  119. package/languages/fr-FR.js +7 -0
  120. package/languages/index.js +133 -0
  121. package/languages/it-IT.js +7 -0
  122. package/languages/ja-JP.js +7 -0
  123. package/languages/ko-KR.js +7 -0
  124. package/languages/lv-LV.js +7 -0
  125. package/languages/nb-NO.js +7 -0
  126. package/languages/nl-NL.js +7 -0
  127. package/languages/pl-PL.js +7 -0
  128. package/languages/pt-BR.js +7 -0
  129. package/languages/ru-RU.js +7 -0
  130. package/languages/sr-SP.js +7 -0
  131. package/languages/zh-CN.js +7 -0
  132. package/languages/zh-TW.js +7 -0
  133. package/package.json +3 -2
  134. package/pluginHooks.d.ts +8 -2
  135. package/pluginHooks.js +116 -18
  136. package/pluginHooks.mjs +115 -15
  137. package/plugins/autoColumnSize/autoColumnSize.js +1 -0
  138. package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
  139. package/plugins/autoRowSize/autoRowSize.js +3 -2
  140. package/plugins/autoRowSize/autoRowSize.mjs +3 -2
  141. package/plugins/autofill/autofill.js +2 -2
  142. package/plugins/autofill/autofill.mjs +3 -3
  143. package/plugins/autofill/utils.js +1 -39
  144. package/plugins/autofill/utils.mjs +0 -37
  145. package/plugins/base/base.js +1 -0
  146. package/plugins/base/base.mjs +1 -0
  147. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
  148. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
  151. package/plugins/columnSorting/columnSorting.js +51 -8
  152. package/plugins/columnSorting/columnSorting.mjs +50 -9
  153. package/plugins/columnSorting/columnStatesManager.js +1 -0
  154. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  155. package/plugins/columnSorting/index.js +4 -2
  156. package/plugins/columnSorting/index.mjs +1 -1
  157. package/plugins/columnSorting/rootComparator.js +1 -0
  158. package/plugins/columnSorting/rootComparator.mjs +1 -0
  159. package/plugins/comments/commentEditor.js +1 -0
  160. package/plugins/comments/commentEditor.mjs +1 -0
  161. package/plugins/comments/comments.js +289 -224
  162. package/plugins/comments/comments.mjs +297 -234
  163. package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
  164. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  165. package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
  166. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
  167. package/plugins/comments/contextMenuItem/removeComment.js +48 -0
  168. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  169. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  170. package/plugins/contextMenu/contextMenu.js +81 -29
  171. package/plugins/contextMenu/contextMenu.mjs +82 -30
  172. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  173. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  174. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  175. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  176. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  177. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  178. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  179. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  180. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  181. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  182. package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
  183. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
  184. package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
  185. package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
  186. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  187. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  188. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  189. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  190. package/plugins/contextMenu/utils.js +25 -16
  191. package/plugins/contextMenu/utils.mjs +24 -15
  192. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  193. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  194. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  195. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  196. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  197. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  198. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  199. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  200. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  201. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  202. package/plugins/copyPaste/copyPaste.js +100 -14
  203. package/plugins/copyPaste/copyPaste.mjs +100 -14
  204. package/plugins/copyPaste/copyableRanges.js +25 -31
  205. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  206. package/plugins/copyPaste/focusableElement.js +219 -0
  207. package/plugins/copyPaste/focusableElement.mjs +213 -0
  208. package/plugins/customBorders/customBorders.d.ts +2 -0
  209. package/plugins/customBorders/customBorders.js +19 -50
  210. package/plugins/customBorders/customBorders.mjs +19 -50
  211. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  212. package/plugins/dropdownMenu/dropdownMenu.js +94 -30
  213. package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
  214. package/plugins/exportFile/dataProvider.js +1 -0
  215. package/plugins/exportFile/dataProvider.mjs +1 -0
  216. package/plugins/filters/component/value.js +1 -0
  217. package/plugins/filters/component/value.mjs +1 -0
  218. package/plugins/filters/condition/beginsWith.js +1 -0
  219. package/plugins/filters/condition/beginsWith.mjs +1 -0
  220. package/plugins/filters/condition/between.js +1 -0
  221. package/plugins/filters/condition/between.mjs +1 -0
  222. package/plugins/filters/condition/byValue.js +1 -0
  223. package/plugins/filters/condition/byValue.mjs +1 -0
  224. package/plugins/filters/condition/contains.js +1 -0
  225. package/plugins/filters/condition/contains.mjs +1 -0
  226. package/plugins/filters/condition/date/after.js +1 -0
  227. package/plugins/filters/condition/date/after.mjs +1 -0
  228. package/plugins/filters/condition/date/before.js +1 -0
  229. package/plugins/filters/condition/date/before.mjs +1 -0
  230. package/plugins/filters/condition/endsWith.js +1 -0
  231. package/plugins/filters/condition/endsWith.mjs +1 -0
  232. package/plugins/filters/condition/equal.js +1 -0
  233. package/plugins/filters/condition/equal.mjs +1 -0
  234. package/plugins/filters/condition/greaterThan.js +1 -0
  235. package/plugins/filters/condition/greaterThan.mjs +1 -0
  236. package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
  237. package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
  238. package/plugins/filters/condition/lessThan.js +1 -0
  239. package/plugins/filters/condition/lessThan.mjs +1 -0
  240. package/plugins/filters/condition/lessThanOrEqual.js +1 -0
  241. package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
  242. package/plugins/filters/conditionCollection.js +1 -0
  243. package/plugins/filters/conditionCollection.mjs +1 -0
  244. package/plugins/filters/filters.js +68 -42
  245. package/plugins/filters/filters.mjs +67 -41
  246. package/plugins/filters/ui/multipleSelect.js +1 -0
  247. package/plugins/filters/ui/multipleSelect.mjs +1 -0
  248. package/plugins/formulas/formulas.js +191 -168
  249. package/plugins/formulas/formulas.mjs +191 -168
  250. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  251. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  252. package/plugins/formulas/indexSyncer/index.js +225 -0
  253. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  254. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
  255. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
  256. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
  257. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
  258. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
  259. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
  260. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
  261. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
  262. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
  263. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
  264. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
  265. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
  266. package/plugins/manualColumnResize/manualColumnResize.js +36 -5
  267. package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
  268. package/plugins/manualRowMove/manualRowMove.js +31 -12
  269. package/plugins/manualRowMove/manualRowMove.mjs +32 -13
  270. package/plugins/manualRowResize/manualRowResize.js +40 -9
  271. package/plugins/manualRowResize/manualRowResize.mjs +40 -9
  272. package/plugins/mergeCells/calculations/autofill.js +1 -0
  273. package/plugins/mergeCells/calculations/autofill.mjs +1 -0
  274. package/plugins/mergeCells/cellsCollection.js +1 -0
  275. package/plugins/mergeCells/cellsCollection.mjs +1 -0
  276. package/plugins/mergeCells/mergeCells.js +6 -2
  277. package/plugins/mergeCells/mergeCells.mjs +6 -2
  278. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  279. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  280. package/plugins/multiColumnSorting/rootComparator.js +1 -0
  281. package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
  282. package/plugins/nestedHeaders/nestedHeaders.js +129 -6
  283. package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
  284. package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
  285. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
  286. package/plugins/nestedHeaders/stateManager/index.js +40 -3
  287. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  288. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  289. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
  290. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
  291. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  292. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  293. package/plugins/nestedRows/data/dataManager.js +1 -0
  294. package/plugins/nestedRows/data/dataManager.mjs +1 -0
  295. package/plugins/nestedRows/nestedRows.js +53 -7
  296. package/plugins/nestedRows/nestedRows.mjs +53 -7
  297. package/plugins/nestedRows/ui/collapsing.js +1 -0
  298. package/plugins/nestedRows/ui/collapsing.mjs +1 -0
  299. package/plugins/nestedRows/utils/rowMoveController.js +1 -0
  300. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
  301. package/plugins/persistentState/storage.js +1 -0
  302. package/plugins/persistentState/storage.mjs +1 -0
  303. package/plugins/registry.js +4 -1
  304. package/plugins/registry.mjs +1 -0
  305. package/plugins/undoRedo/undoRedo.js +1 -1
  306. package/plugins/undoRedo/undoRedo.mjs +1 -1
  307. package/renderers/baseRenderer/baseRenderer.js +0 -3
  308. package/renderers/baseRenderer/baseRenderer.mjs +0 -3
  309. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  310. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  311. package/selection/highlight/highlight.js +120 -98
  312. package/selection/highlight/highlight.mjs +118 -96
  313. package/selection/highlight/visualSelection.js +30 -17
  314. package/selection/highlight/visualSelection.mjs +30 -17
  315. package/selection/mouseEventHandler.js +1 -1
  316. package/selection/mouseEventHandler.mjs +1 -1
  317. package/selection/range.js +8 -8
  318. package/selection/range.mjs +8 -8
  319. package/selection/selection.js +246 -153
  320. package/selection/selection.mjs +247 -154
  321. package/selection/transformation.js +233 -96
  322. package/selection/transformation.mjs +230 -93
  323. package/selection/utils.js +12 -35
  324. package/selection/utils.mjs +13 -35
  325. package/settings.d.ts +2 -1
  326. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  327. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  328. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  329. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  330. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  331. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  332. package/shortcutContexts/commands/editor/index.js +16 -0
  333. package/shortcutContexts/commands/editor/index.mjs +12 -0
  334. package/shortcutContexts/commands/editor/open.js +29 -0
  335. package/shortcutContexts/commands/editor/open.mjs +24 -0
  336. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  337. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  338. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  339. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  342. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  343. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  344. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  345. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  346. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  348. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  349. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  350. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  351. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  352. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  353. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  354. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  355. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  364. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  365. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  366. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  367. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  368. package/shortcutContexts/commands/index.js +53 -0
  369. package/shortcutContexts/commands/index.mjs +49 -0
  370. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  371. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  372. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  373. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  374. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  375. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  376. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  377. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  378. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  380. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  381. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  382. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  383. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  384. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  385. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  386. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  387. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  388. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  389. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  390. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  391. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  401. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  402. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  403. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  404. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  405. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  406. package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
  407. package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
  408. package/shortcutContexts/commands/selectAll.js +11 -0
  409. package/shortcutContexts/commands/selectAll.mjs +6 -0
  410. package/shortcutContexts/constants.js +19 -0
  411. package/shortcutContexts/constants.mjs +12 -0
  412. package/shortcutContexts/editor.js +29 -0
  413. package/shortcutContexts/editor.mjs +25 -0
  414. package/shortcutContexts/grid.js +252 -0
  415. package/shortcutContexts/grid.mjs +248 -0
  416. package/shortcutContexts/index.js +29 -0
  417. package/shortcutContexts/index.mjs +15 -0
  418. package/shortcuts/context.js +1 -0
  419. package/shortcuts/context.mjs +1 -0
  420. package/shortcuts/manager.js +2 -0
  421. package/shortcuts/manager.mjs +2 -0
  422. package/shortcuts/recorder.js +2 -2
  423. package/shortcuts/recorder.mjs +2 -2
  424. package/shortcuts/utils.js +21 -5
  425. package/shortcuts/utils.mjs +20 -4
  426. package/tableView.js +112 -82
  427. package/tableView.mjs +112 -82
  428. package/translations/changesObservable/observable.js +41 -46
  429. package/translations/changesObservable/observable.mjs +36 -41
  430. package/translations/changesObservable/observer.js +1 -1
  431. package/translations/indexMapper.d.ts +0 -2
  432. package/translations/indexMapper.js +38 -64
  433. package/translations/indexMapper.mjs +39 -64
  434. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  435. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  436. package/translations/maps/utils/indexesSequence.js +1 -0
  437. package/translations/maps/utils/indexesSequence.mjs +1 -0
  438. package/translations/maps/utils/physicallyIndexed.js +1 -0
  439. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  440. package/utils/dataStructures/priorityMap.js +1 -0
  441. package/utils/dataStructures/priorityMap.mjs +1 -0
  442. package/utils/dataStructures/tree.js +16 -18
  443. package/utils/dataStructures/tree.mjs +16 -18
  444. package/utils/dataStructures/uniqueMap.js +1 -0
  445. package/utils/dataStructures/uniqueMap.mjs +1 -0
  446. package/utils/dataStructures/uniqueSet.js +1 -0
  447. package/utils/dataStructures/uniqueSet.mjs +1 -0
  448. package/utils/ghostTable.js +1 -0
  449. package/utils/ghostTable.mjs +1 -0
  450. package/utils/parseTable.js +5 -1
  451. package/utils/parseTable.mjs +5 -1
  452. package/utils/staticRegister.js +1 -0
  453. package/utils/staticRegister.mjs +1 -0
  454. package/focusManager.d.ts +0 -12
  455. package/focusManager.js +0 -275
  456. package/focusManager.mjs +0 -270
package/editorManager.js CHANGED
@@ -2,13 +2,12 @@
2
2
 
3
3
  require("core-js/modules/es.symbol.iterator.js");
4
4
  require("core-js/modules/es.array.slice.js");
5
+ require("core-js/modules/es.regexp.to-string.js");
5
6
  require("core-js/modules/es.function.name.js");
6
7
  require("core-js/modules/es.array.from.js");
7
8
  require("core-js/modules/es.regexp.exec.js");
8
9
  exports.__esModule = true;
9
- exports.default = exports.SHORTCUTS_GROUP_NAVIGATION = exports.SHORTCUTS_GROUP_EDITOR = void 0;
10
- require("core-js/modules/es.array.includes.js");
11
- require("core-js/modules/es.string.includes.js");
10
+ exports.default = exports.SHORTCUTS_GROUP_NAVIGATION = void 0;
12
11
  require("core-js/modules/es.symbol.to-primitive.js");
13
12
  require("core-js/modules/es.date.to-primitive.js");
14
13
  require("core-js/modules/es.symbol.js");
@@ -20,8 +19,8 @@ require("core-js/modules/es.string.iterator.js");
20
19
  require("core-js/modules/es.weak-map.js");
21
20
  require("core-js/modules/web.dom-collections.iterator.js");
22
21
  var _unicode = require("./helpers/unicode");
23
- var _event = require("./helpers/dom/event");
24
22
  var _element = require("./helpers/dom/element");
23
+ var _event = require("./helpers/dom/event");
25
24
  var _registry = require("./editors/registry");
26
25
  var _eventManager = _interopRequireDefault(require("./eventManager"));
27
26
  var _mixed = require("./helpers/mixed");
@@ -40,8 +39,6 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
40
39
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
41
40
  var SHORTCUTS_GROUP_NAVIGATION = 'editorManager.navigation';
42
41
  exports.SHORTCUTS_GROUP_NAVIGATION = SHORTCUTS_GROUP_NAVIGATION;
43
- var SHORTCUTS_GROUP_EDITOR = 'editorManager.handlingEditor';
44
- exports.SHORTCUTS_GROUP_EDITOR = SHORTCUTS_GROUP_EDITOR;
45
42
  var EditorManager = /*#__PURE__*/function () {
46
43
  /**
47
44
  * @param {Core} instance The Handsontable instance.
@@ -106,9 +103,6 @@ var EditorManager = /*#__PURE__*/function () {
106
103
  * @type {object}
107
104
  */
108
105
  this.cellProperties = void 0;
109
- var shortcutManager = this.instance.getShortcutManager();
110
- shortcutManager.addContext('editor');
111
- this.registerShortcuts();
112
106
  this.instance.addHook('afterDocumentKeyDown', function (event) {
113
107
  return _this.onAfterDocumentKeyDown(event);
114
108
  });
@@ -125,66 +119,10 @@ var EditorManager = /*#__PURE__*/function () {
125
119
  }
126
120
 
127
121
  /**
128
- * Register shortcuts responsible for handling some actions related to an editor.
129
- *
130
- * @private
122
+ * Lock the editor from being prepared and closed. Locking the editor prevents its closing and
123
+ * reinitialized after selecting the new cell. This feature is necessary for a mobile editor.
131
124
  */
132
125
  _createClass(EditorManager, [{
133
- key: "registerShortcuts",
134
- value: function registerShortcuts() {
135
- var _this2 = this;
136
- var shortcutManager = this.instance.getShortcutManager();
137
- var gridContext = shortcutManager.getContext('grid');
138
- var editorContext = shortcutManager.getContext('editor');
139
- var config = {
140
- group: SHORTCUTS_GROUP_EDITOR
141
- };
142
- editorContext.addShortcuts([{
143
- keys: [['Enter'], ['Enter', 'Shift'], ['Enter', 'Control/Meta'], ['Enter', 'Control/Meta', 'Shift']],
144
- callback: function callback(event, keys) {
145
- _this2.closeEditorAndSaveChanges(shortcutManager.isCtrlPressed());
146
- _this2.moveSelectionAfterEnter(keys.includes('shift'));
147
- }
148
- }, {
149
- keys: [['Escape'], ['Escape', 'Control/Meta']],
150
- callback: function callback() {
151
- _this2.closeEditorAndRestoreOriginalValue(shortcutManager.isCtrlPressed());
152
- _this2.activeEditor.focus();
153
- }
154
- }], config);
155
- gridContext.addShortcuts([{
156
- keys: [['F2']],
157
- callback: function callback(event) {
158
- _this2.openEditor(null, event, true);
159
- }
160
- }, {
161
- keys: [['Backspace'], ['Delete']],
162
- callback: function callback() {
163
- _this2.instance.emptySelectedCells();
164
- _this2.prepareEditor();
165
- }
166
- }, {
167
- keys: [['Enter'], ['Enter', 'Shift']],
168
- callback: function callback(event, keys) {
169
- if (_this2.instance.getSettings().enterBeginsEditing) {
170
- if (_this2.cellProperties.readOnly) {
171
- _this2.moveSelectionAfterEnter();
172
- } else {
173
- _this2.openEditor(null, event, true);
174
- }
175
- } else {
176
- _this2.moveSelectionAfterEnter(keys.includes('shift'));
177
- }
178
- (0, _event.stopImmediatePropagation)(event); // required by HandsontableEditor
179
- }
180
- }], config);
181
- }
182
-
183
- /**
184
- * Lock the editor from being prepared and closed. Locking the editor prevents its closing and
185
- * reinitialized after selecting the new cell. This feature is necessary for a mobile editor.
186
- */
187
- }, {
188
126
  key: "lockEditor",
189
127
  value: function lockEditor() {
190
128
  this.lock = true;
@@ -231,14 +169,14 @@ var EditorManager = /*#__PURE__*/function () {
231
169
  }, {
232
170
  key: "prepareEditor",
233
171
  value: function prepareEditor() {
234
- var _this3 = this;
172
+ var _this2 = this;
235
173
  if (this.lock) {
236
174
  return;
237
175
  }
238
176
  if (this.activeEditor && this.activeEditor.isWaiting()) {
239
177
  this.closeEditor(false, false, function (dataSaved) {
240
178
  if (dataSaved) {
241
- _this3.prepareEditor();
179
+ _this2.prepareEditor();
242
180
  }
243
181
  });
244
182
  return;
@@ -317,13 +255,7 @@ var EditorManager = /*#__PURE__*/function () {
317
255
  return;
318
256
  }
319
257
  if (!this.activeEditor) {
320
- var _this$instance$getSel2 = this.instance.getSelectedRangeLast().highlight,
321
- row = _this$instance$getSel2.row,
322
- col = _this$instance$getSel2.col;
323
- var renderableRowIndex = this.instance.rowIndexMapper.getRenderableFromVisualIndex(row);
324
- var renderableColumnIndex = this.instance.columnIndexMapper.getRenderableFromVisualIndex(col);
325
- this.instance.view.scrollViewport(this.instance._createCellCoords(renderableRowIndex, renderableColumnIndex));
326
- this.instance.view.render();
258
+ this.instance.scrollToFocusedCell();
327
259
  this.prepareEditor();
328
260
  }
329
261
  if (this.activeEditor) {
@@ -398,9 +330,9 @@ var EditorManager = /*#__PURE__*/function () {
398
330
  key: "isCellEditable",
399
331
  value: function isCellEditable() {
400
332
  var editorClass = this.instance.getCellEditor(this.cellProperties);
401
- var _this$instance$getSel3 = this.instance.getSelectedRangeLast().highlight,
402
- row = _this$instance$getSel3.row,
403
- col = _this$instance$getSel3.col;
333
+ var _this$instance$getSel2 = this.instance.getSelectedRangeLast().highlight,
334
+ row = _this$instance$getSel2.row,
335
+ col = _this$instance$getSel2.col;
404
336
  var _this$instance = this.instance,
405
337
  rowIndexMapper = _this$instance.rowIndexMapper,
406
338
  columnIndexMapper = _this$instance.columnIndexMapper;
@@ -439,14 +371,12 @@ var EditorManager = /*#__PURE__*/function () {
439
371
  }, {
440
372
  key: "onAfterDocumentKeyDown",
441
373
  value: function onAfterDocumentKeyDown(event) {
442
- var _this4 = this;
443
- if (!this.instance.isListening()) {
374
+ var _this3 = this;
375
+ var selection = this.instance.getSelectedRangeLast();
376
+ if (!this.instance.isListening() || !selection || selection.highlight.isHeader() || (0, _event.isImmediatePropagationStopped)(event)) {
444
377
  return;
445
378
  }
446
379
  var keyCode = event.keyCode;
447
- if (!this.selection.isSelected()) {
448
- return;
449
- }
450
380
 
451
381
  // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
452
382
  var isCtrlPressed = (event.ctrlKey || event.metaKey) && !event.altKey;
@@ -456,29 +386,29 @@ var EditorManager = /*#__PURE__*/function () {
456
386
  var editorContext = shortcutManager.getContext('editor');
457
387
  var runOnlySelectedConfig = {
458
388
  runOnlyIf: function runOnlyIf() {
459
- return (0, _mixed.isDefined)(_this4.instance.getSelected());
389
+ return (0, _mixed.isDefined)(_this3.instance.getSelected());
460
390
  },
461
391
  group: SHORTCUTS_GROUP_NAVIGATION
462
392
  };
463
393
  editorContext.addShortcuts([{
464
394
  keys: [['ArrowUp']],
465
395
  callback: function callback() {
466
- _this4.instance.selection.transformStart(-1, 0);
396
+ _this3.instance.selection.transformStart(-1, 0);
467
397
  }
468
398
  }, {
469
399
  keys: [['ArrowDown']],
470
400
  callback: function callback() {
471
- _this4.instance.selection.transformStart(1, 0);
401
+ _this3.instance.selection.transformStart(1, 0);
472
402
  }
473
403
  }, {
474
404
  keys: [['ArrowLeft']],
475
405
  callback: function callback() {
476
- _this4.instance.selection.transformStart(0, -1 * _this4.instance.getDirectionFactor());
406
+ _this3.instance.selection.transformStart(0, -1 * _this3.instance.getDirectionFactor());
477
407
  }
478
408
  }, {
479
409
  keys: [['ArrowRight']],
480
410
  callback: function callback() {
481
- _this4.instance.selection.transformStart(0, _this4.instance.getDirectionFactor());
411
+ _this3.instance.selection.transformStart(0, _this3.instance.getDirectionFactor());
482
412
  }
483
413
  }], runOnlySelectedConfig);
484
414
  this.openEditor('', event);
package/editorManager.mjs CHANGED
@@ -1,12 +1,4 @@
1
1
  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); }
2
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3
- 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."); }
4
- 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); }
5
- 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; }
6
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
7
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
- import "core-js/modules/es.array.includes.js";
9
- import "core-js/modules/es.string.includes.js";
10
2
  import "core-js/modules/es.array.iterator.js";
11
3
  import "core-js/modules/es.object.to-string.js";
12
4
  import "core-js/modules/es.string.iterator.js";
@@ -19,22 +11,28 @@ import "core-js/modules/es.symbol.description.js";
19
11
  import "core-js/modules/es.number.constructor.js";
20
12
  import "core-js/modules/es.symbol.iterator.js";
21
13
  import "core-js/modules/es.array.slice.js";
14
+ import "core-js/modules/es.regexp.to-string.js";
22
15
  import "core-js/modules/es.function.name.js";
23
16
  import "core-js/modules/es.array.from.js";
24
17
  import "core-js/modules/es.regexp.exec.js";
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+ 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."); }
20
+ 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); }
21
+ 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; }
22
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
24
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
25
  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, _toPropertyKey(descriptor.key), descriptor); } }
27
26
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
28
27
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
29
28
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
30
29
  import { isFunctionKey, isCtrlMetaKey } from "./helpers/unicode.mjs";
31
- import { stopImmediatePropagation } from "./helpers/dom/event.mjs";
32
30
  import { isOutsideInput } from "./helpers/dom/element.mjs";
31
+ import { isImmediatePropagationStopped } from "./helpers/dom/event.mjs";
33
32
  import { getEditorInstance } from "./editors/registry.mjs";
34
33
  import EventManager from "./eventManager.mjs";
35
34
  import { isDefined } from "./helpers/mixed.mjs";
36
35
  export var SHORTCUTS_GROUP_NAVIGATION = 'editorManager.navigation';
37
- export var SHORTCUTS_GROUP_EDITOR = 'editorManager.handlingEditor';
38
36
  var EditorManager = /*#__PURE__*/function () {
39
37
  /**
40
38
  * @param {Core} instance The Handsontable instance.
@@ -99,9 +97,6 @@ var EditorManager = /*#__PURE__*/function () {
99
97
  * @type {object}
100
98
  */
101
99
  this.cellProperties = void 0;
102
- var shortcutManager = this.instance.getShortcutManager();
103
- shortcutManager.addContext('editor');
104
- this.registerShortcuts();
105
100
  this.instance.addHook('afterDocumentKeyDown', function (event) {
106
101
  return _this.onAfterDocumentKeyDown(event);
107
102
  });
@@ -118,66 +113,10 @@ var EditorManager = /*#__PURE__*/function () {
118
113
  }
119
114
 
120
115
  /**
121
- * Register shortcuts responsible for handling some actions related to an editor.
122
- *
123
- * @private
116
+ * Lock the editor from being prepared and closed. Locking the editor prevents its closing and
117
+ * reinitialized after selecting the new cell. This feature is necessary for a mobile editor.
124
118
  */
125
119
  _createClass(EditorManager, [{
126
- key: "registerShortcuts",
127
- value: function registerShortcuts() {
128
- var _this2 = this;
129
- var shortcutManager = this.instance.getShortcutManager();
130
- var gridContext = shortcutManager.getContext('grid');
131
- var editorContext = shortcutManager.getContext('editor');
132
- var config = {
133
- group: SHORTCUTS_GROUP_EDITOR
134
- };
135
- editorContext.addShortcuts([{
136
- keys: [['Enter'], ['Enter', 'Shift'], ['Enter', 'Control/Meta'], ['Enter', 'Control/Meta', 'Shift']],
137
- callback: function callback(event, keys) {
138
- _this2.closeEditorAndSaveChanges(shortcutManager.isCtrlPressed());
139
- _this2.moveSelectionAfterEnter(keys.includes('shift'));
140
- }
141
- }, {
142
- keys: [['Escape'], ['Escape', 'Control/Meta']],
143
- callback: function callback() {
144
- _this2.closeEditorAndRestoreOriginalValue(shortcutManager.isCtrlPressed());
145
- _this2.activeEditor.focus();
146
- }
147
- }], config);
148
- gridContext.addShortcuts([{
149
- keys: [['F2']],
150
- callback: function callback(event) {
151
- _this2.openEditor(null, event, true);
152
- }
153
- }, {
154
- keys: [['Backspace'], ['Delete']],
155
- callback: function callback() {
156
- _this2.instance.emptySelectedCells();
157
- _this2.prepareEditor();
158
- }
159
- }, {
160
- keys: [['Enter'], ['Enter', 'Shift']],
161
- callback: function callback(event, keys) {
162
- if (_this2.instance.getSettings().enterBeginsEditing) {
163
- if (_this2.cellProperties.readOnly) {
164
- _this2.moveSelectionAfterEnter();
165
- } else {
166
- _this2.openEditor(null, event, true);
167
- }
168
- } else {
169
- _this2.moveSelectionAfterEnter(keys.includes('shift'));
170
- }
171
- stopImmediatePropagation(event); // required by HandsontableEditor
172
- }
173
- }], config);
174
- }
175
-
176
- /**
177
- * Lock the editor from being prepared and closed. Locking the editor prevents its closing and
178
- * reinitialized after selecting the new cell. This feature is necessary for a mobile editor.
179
- */
180
- }, {
181
120
  key: "lockEditor",
182
121
  value: function lockEditor() {
183
122
  this.lock = true;
@@ -224,14 +163,14 @@ var EditorManager = /*#__PURE__*/function () {
224
163
  }, {
225
164
  key: "prepareEditor",
226
165
  value: function prepareEditor() {
227
- var _this3 = this;
166
+ var _this2 = this;
228
167
  if (this.lock) {
229
168
  return;
230
169
  }
231
170
  if (this.activeEditor && this.activeEditor.isWaiting()) {
232
171
  this.closeEditor(false, false, function (dataSaved) {
233
172
  if (dataSaved) {
234
- _this3.prepareEditor();
173
+ _this2.prepareEditor();
235
174
  }
236
175
  });
237
176
  return;
@@ -310,13 +249,7 @@ var EditorManager = /*#__PURE__*/function () {
310
249
  return;
311
250
  }
312
251
  if (!this.activeEditor) {
313
- var _this$instance$getSel2 = this.instance.getSelectedRangeLast().highlight,
314
- row = _this$instance$getSel2.row,
315
- col = _this$instance$getSel2.col;
316
- var renderableRowIndex = this.instance.rowIndexMapper.getRenderableFromVisualIndex(row);
317
- var renderableColumnIndex = this.instance.columnIndexMapper.getRenderableFromVisualIndex(col);
318
- this.instance.view.scrollViewport(this.instance._createCellCoords(renderableRowIndex, renderableColumnIndex));
319
- this.instance.view.render();
252
+ this.instance.scrollToFocusedCell();
320
253
  this.prepareEditor();
321
254
  }
322
255
  if (this.activeEditor) {
@@ -391,9 +324,9 @@ var EditorManager = /*#__PURE__*/function () {
391
324
  key: "isCellEditable",
392
325
  value: function isCellEditable() {
393
326
  var editorClass = this.instance.getCellEditor(this.cellProperties);
394
- var _this$instance$getSel3 = this.instance.getSelectedRangeLast().highlight,
395
- row = _this$instance$getSel3.row,
396
- col = _this$instance$getSel3.col;
327
+ var _this$instance$getSel2 = this.instance.getSelectedRangeLast().highlight,
328
+ row = _this$instance$getSel2.row,
329
+ col = _this$instance$getSel2.col;
397
330
  var _this$instance = this.instance,
398
331
  rowIndexMapper = _this$instance.rowIndexMapper,
399
332
  columnIndexMapper = _this$instance.columnIndexMapper;
@@ -432,14 +365,12 @@ var EditorManager = /*#__PURE__*/function () {
432
365
  }, {
433
366
  key: "onAfterDocumentKeyDown",
434
367
  value: function onAfterDocumentKeyDown(event) {
435
- var _this4 = this;
436
- if (!this.instance.isListening()) {
368
+ var _this3 = this;
369
+ var selection = this.instance.getSelectedRangeLast();
370
+ if (!this.instance.isListening() || !selection || selection.highlight.isHeader() || isImmediatePropagationStopped(event)) {
437
371
  return;
438
372
  }
439
373
  var keyCode = event.keyCode;
440
- if (!this.selection.isSelected()) {
441
- return;
442
- }
443
374
 
444
375
  // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
445
376
  var isCtrlPressed = (event.ctrlKey || event.metaKey) && !event.altKey;
@@ -449,29 +380,29 @@ var EditorManager = /*#__PURE__*/function () {
449
380
  var editorContext = shortcutManager.getContext('editor');
450
381
  var runOnlySelectedConfig = {
451
382
  runOnlyIf: function runOnlyIf() {
452
- return isDefined(_this4.instance.getSelected());
383
+ return isDefined(_this3.instance.getSelected());
453
384
  },
454
385
  group: SHORTCUTS_GROUP_NAVIGATION
455
386
  };
456
387
  editorContext.addShortcuts([{
457
388
  keys: [['ArrowUp']],
458
389
  callback: function callback() {
459
- _this4.instance.selection.transformStart(-1, 0);
390
+ _this3.instance.selection.transformStart(-1, 0);
460
391
  }
461
392
  }, {
462
393
  keys: [['ArrowDown']],
463
394
  callback: function callback() {
464
- _this4.instance.selection.transformStart(1, 0);
395
+ _this3.instance.selection.transformStart(1, 0);
465
396
  }
466
397
  }, {
467
398
  keys: [['ArrowLeft']],
468
399
  callback: function callback() {
469
- _this4.instance.selection.transformStart(0, -1 * _this4.instance.getDirectionFactor());
400
+ _this3.instance.selection.transformStart(0, -1 * _this3.instance.getDirectionFactor());
470
401
  }
471
402
  }, {
472
403
  keys: [['ArrowRight']],
473
404
  callback: function callback() {
474
- _this4.instance.selection.transformStart(0, _this4.instance.getDirectionFactor());
405
+ _this3.instance.selection.transformStart(0, _this3.instance.getDirectionFactor());
475
406
  }
476
407
  }], runOnlySelectedConfig);
477
408
  this.openEditor('', event);
@@ -14,6 +14,7 @@ require("core-js/modules/es.array.iterator.js");
14
14
  require("core-js/modules/es.string.iterator.js");
15
15
  require("core-js/modules/web.dom-collections.iterator.js");
16
16
  require("core-js/modules/es.array.slice.js");
17
+ require("core-js/modules/es.regexp.to-string.js");
17
18
  require("core-js/modules/es.array.from.js");
18
19
  require("core-js/modules/es.regexp.exec.js");
19
20
  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); }
@@ -35,6 +35,7 @@ import "core-js/modules/es.array.iterator.js";
35
35
  import "core-js/modules/es.string.iterator.js";
36
36
  import "core-js/modules/web.dom-collections.iterator.js";
37
37
  import "core-js/modules/es.array.slice.js";
38
+ import "core-js/modules/es.regexp.to-string.js";
38
39
  import "core-js/modules/es.array.from.js";
39
40
  import "core-js/modules/es.regexp.exec.js";
40
41
  import { isDefined, stringify } from "../../helpers/mixed.mjs";
@@ -15,6 +15,7 @@ require("core-js/modules/es.array.iterator.js");
15
15
  require("core-js/modules/es.string.iterator.js");
16
16
  require("core-js/modules/web.dom-collections.iterator.js");
17
17
  require("core-js/modules/es.array.slice.js");
18
+ require("core-js/modules/es.regexp.to-string.js");
18
19
  require("core-js/modules/es.function.name.js");
19
20
  require("core-js/modules/es.array.from.js");
20
21
  require("core-js/modules/es.regexp.exec.js");
@@ -178,7 +179,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
178
179
  key: "close",
179
180
  value: function close() {
180
181
  this.autoResize.unObserve();
181
- if ((0, _element.isHotChild)(this.hot.rootDocument.activeElement)) {
182
+ if (this.hot.rootDocument.activeElement === this.TEXTAREA) {
182
183
  this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
183
184
  }
184
185
 
@@ -218,7 +219,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
218
219
  // @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
219
220
  // refocus has to be disabled (to make IME working).
220
221
  var restoreFocus = !fragmentSelection;
221
- if (this.hot.getSettings().imeFastEdit && restoreFocus && !(0, _browser.isMobileBrowser)()) {
222
+ if (restoreFocus && !(0, _browser.isMobileBrowser)()) {
222
223
  this.focus();
223
224
  }
224
225
  }
@@ -262,7 +263,6 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
262
263
  var rootDocument = this.hot.rootDocument;
263
264
  this.TEXTAREA = rootDocument.createElement('TEXTAREA');
264
265
  this.TEXTAREA.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
265
- this.TEXTAREA.setAttribute('aria-hidden', 'true');
266
266
  this.TEXTAREA.tabIndex = -1;
267
267
  (0, _element.addClass)(this.TEXTAREA, 'handsontableInput');
268
268
  this.textareaStyle = this.TEXTAREA.style;
@@ -411,6 +411,12 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
411
411
  key: "bindEvents",
412
412
  value: function bindEvents() {
413
413
  var _this3 = this;
414
+ this.eventManager.addEventListener(this.TEXTAREA, 'cut', function (event) {
415
+ return event.stopPropagation();
416
+ });
417
+ this.eventManager.addEventListener(this.TEXTAREA, 'paste', function (event) {
418
+ return event.stopPropagation();
419
+ });
414
420
  if ((0, _browser.isIOS)()) {
415
421
  // on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
416
422
  this.eventManager.addEventListener(this.TEXTAREA, 'focusout', function () {
@@ -425,15 +431,11 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
425
431
  });
426
432
  this.addHook('afterColumnResize', function () {
427
433
  _this3.refreshDimensions();
428
- if (_this3.state === _baseEditor.EDITOR_STATE.EDITING) {
429
- _this3.focus();
430
- }
434
+ _this3.focus();
431
435
  });
432
436
  this.addHook('afterRowResize', function () {
433
437
  _this3.refreshDimensions();
434
- if (_this3.state === _baseEditor.EDITOR_STATE.EDITING) {
435
- _this3.focus();
436
- }
438
+ _this3.focus();
437
439
  });
438
440
  }
439
441
 
@@ -506,9 +508,7 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
506
508
  // We trigger a data population for multiple selection.
507
509
  // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
508
510
  !event.altKey;
509
- },
510
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
511
- position: 'before'
511
+ }
512
512
  }, {
513
513
  keys: [['Meta', 'Enter']],
514
514
  callback: function callback() {
@@ -518,19 +518,13 @@ var TextEditor = /*#__PURE__*/function (_BaseEditor) {
518
518
 
519
519
  runOnlyIf: function runOnlyIf() {
520
520
  return !_this4.hot.selection.isMultiple();
521
- },
522
- // We trigger a data population for multiple selection.
523
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
524
- position: 'before'
521
+ } // We trigger a data population for multiple selection.
525
522
  }, {
526
523
  keys: [['Alt', 'Enter']],
527
524
  callback: function callback() {
528
525
  insertNewLine();
529
526
  return false; // Will block closing editor.
530
- },
531
-
532
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
533
- position: 'before'
527
+ }
534
528
  }, {
535
529
  // TODO: Duplicated part of code (callback to shortcut)
536
530
  keys: [['PageUp']],
@@ -16,6 +16,7 @@ import "core-js/modules/es.array.iterator.js";
16
16
  import "core-js/modules/es.string.iterator.js";
17
17
  import "core-js/modules/web.dom-collections.iterator.js";
18
18
  import "core-js/modules/es.array.slice.js";
19
+ import "core-js/modules/es.regexp.to-string.js";
19
20
  import "core-js/modules/es.function.name.js";
20
21
  import "core-js/modules/es.array.from.js";
21
22
  import "core-js/modules/es.regexp.exec.js";
@@ -42,12 +43,12 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
42
43
  import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
43
44
  import EventManager from "../../eventManager.mjs";
44
45
  import { isMobileBrowser, isIE, isEdge, isIOS } from "../../helpers/browser.mjs";
45
- import { addClass, getComputedStyle, isHotChild, setCaretPosition, hasClass, removeClass } from "../../helpers/dom/element.mjs";
46
+ import { addClass, getComputedStyle, setCaretPosition, hasClass, removeClass } from "../../helpers/dom/element.mjs";
46
47
  import { rangeEach } from "../../helpers/number.mjs";
47
48
  import { KEY_CODES } from "../../helpers/unicode.mjs";
48
49
  import { autoResize } from "../../3rdparty/autoResize/index.mjs";
49
50
  import { isDefined } from "../../helpers/mixed.mjs";
50
- import { SHORTCUTS_GROUP_NAVIGATION, SHORTCUTS_GROUP_EDITOR as EDITOR_MANAGER_GROUP } from "../../editorManager.mjs";
51
+ import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
51
52
  import { SHORTCUTS_GROUP_EDITOR } from "../baseEditor/baseEditor.mjs";
52
53
  import { updateCaretPosition } from "./caretPositioner.mjs";
53
54
  var EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
@@ -172,7 +173,7 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
172
173
  key: "close",
173
174
  value: function close() {
174
175
  this.autoResize.unObserve();
175
- if (isHotChild(this.hot.rootDocument.activeElement)) {
176
+ if (this.hot.rootDocument.activeElement === this.TEXTAREA) {
176
177
  this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
177
178
  }
178
179
 
@@ -212,7 +213,7 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
212
213
  // @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
213
214
  // refocus has to be disabled (to make IME working).
214
215
  var restoreFocus = !fragmentSelection;
215
- if (this.hot.getSettings().imeFastEdit && restoreFocus && !isMobileBrowser()) {
216
+ if (restoreFocus && !isMobileBrowser()) {
216
217
  this.focus();
217
218
  }
218
219
  }
@@ -256,7 +257,6 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
256
257
  var rootDocument = this.hot.rootDocument;
257
258
  this.TEXTAREA = rootDocument.createElement('TEXTAREA');
258
259
  this.TEXTAREA.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
259
- this.TEXTAREA.setAttribute('aria-hidden', 'true');
260
260
  this.TEXTAREA.tabIndex = -1;
261
261
  addClass(this.TEXTAREA, 'handsontableInput');
262
262
  this.textareaStyle = this.TEXTAREA.style;
@@ -405,6 +405,12 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
405
405
  key: "bindEvents",
406
406
  value: function bindEvents() {
407
407
  var _this3 = this;
408
+ this.eventManager.addEventListener(this.TEXTAREA, 'cut', function (event) {
409
+ return event.stopPropagation();
410
+ });
411
+ this.eventManager.addEventListener(this.TEXTAREA, 'paste', function (event) {
412
+ return event.stopPropagation();
413
+ });
408
414
  if (isIOS()) {
409
415
  // on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
410
416
  this.eventManager.addEventListener(this.TEXTAREA, 'focusout', function () {
@@ -419,15 +425,11 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
419
425
  });
420
426
  this.addHook('afterColumnResize', function () {
421
427
  _this3.refreshDimensions();
422
- if (_this3.state === EDITOR_STATE.EDITING) {
423
- _this3.focus();
424
- }
428
+ _this3.focus();
425
429
  });
426
430
  this.addHook('afterRowResize', function () {
427
431
  _this3.refreshDimensions();
428
- if (_this3.state === EDITOR_STATE.EDITING) {
429
- _this3.focus();
430
- }
432
+ _this3.focus();
431
433
  });
432
434
  }
433
435
 
@@ -500,9 +502,7 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
500
502
  // We trigger a data population for multiple selection.
501
503
  // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
502
504
  !event.altKey;
503
- },
504
- relativeToGroup: EDITOR_MANAGER_GROUP,
505
- position: 'before'
505
+ }
506
506
  }, {
507
507
  keys: [['Meta', 'Enter']],
508
508
  callback: function callback() {
@@ -512,19 +512,13 @@ export var TextEditor = /*#__PURE__*/function (_BaseEditor) {
512
512
 
513
513
  runOnlyIf: function runOnlyIf() {
514
514
  return !_this4.hot.selection.isMultiple();
515
- },
516
- // We trigger a data population for multiple selection.
517
- relativeToGroup: EDITOR_MANAGER_GROUP,
518
- position: 'before'
515
+ } // We trigger a data population for multiple selection.
519
516
  }, {
520
517
  keys: [['Alt', 'Enter']],
521
518
  callback: function callback() {
522
519
  insertNewLine();
523
520
  return false; // Will block closing editor.
524
- },
525
-
526
- relativeToGroup: EDITOR_MANAGER_GROUP,
527
- position: 'before'
521
+ }
528
522
  }, {
529
523
  // TODO: Duplicated part of code (callback to shortcut)
530
524
  keys: [['PageUp']],