handsontable 13.1.0 → 14.0.0-next-d97b156-20231027

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/3rdparty/walkontable/src/calculator/constants.js +3 -6
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
  4. package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
  5. package/3rdparty/walkontable/src/cell/coords.js +81 -13
  6. package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
  7. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  8. package/3rdparty/walkontable/src/cell/range.js +39 -9
  9. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  10. package/3rdparty/walkontable/src/core/_base.js +9 -3
  11. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  12. package/3rdparty/walkontable/src/core/clone.js +2 -2
  13. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  14. package/3rdparty/walkontable/src/core/core.js +3 -2
  15. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  16. package/3rdparty/walkontable/src/event.js +13 -12
  17. package/3rdparty/walkontable/src/event.mjs +12 -10
  18. package/3rdparty/walkontable/src/facade/core.js +2 -2
  19. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  20. package/3rdparty/walkontable/src/filter/column.js +1 -2
  21. package/3rdparty/walkontable/src/filter/row.js +1 -2
  22. package/3rdparty/walkontable/src/index.js +12 -4
  23. package/3rdparty/walkontable/src/index.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  25. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  26. package/3rdparty/walkontable/src/overlay/constants.js +7 -14
  27. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  28. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  29. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  30. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  31. package/3rdparty/walkontable/src/overlays.js +1 -2
  32. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  33. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  34. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -0
  35. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
  36. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
  37. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -0
  38. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  39. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  40. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  41. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  42. package/3rdparty/walkontable/src/scroll.js +3 -2
  43. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  44. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
  45. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  46. package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
  47. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  48. package/3rdparty/walkontable/src/selection/constants.js +54 -0
  49. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  50. package/3rdparty/walkontable/src/selection/index.js +26 -0
  51. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  52. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  53. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  54. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  55. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  56. package/3rdparty/walkontable/src/selection/selection.js +100 -0
  57. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  58. package/3rdparty/walkontable/src/settings.js +13 -4
  59. package/3rdparty/walkontable/src/settings.mjs +13 -4
  60. package/3rdparty/walkontable/src/table/bottom.js +1 -2
  61. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
  62. package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
  63. package/3rdparty/walkontable/src/table/master.js +3 -6
  64. package/3rdparty/walkontable/src/table/master.mjs +2 -4
  65. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
  66. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  67. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
  68. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  69. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
  70. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
  72. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  73. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
  74. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  75. package/3rdparty/walkontable/src/table/top.js +1 -2
  76. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
  77. package/3rdparty/walkontable/src/table.js +20 -80
  78. package/3rdparty/walkontable/src/table.mjs +20 -79
  79. package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
  80. package/3rdparty/walkontable/src/viewport.js +1 -2
  81. package/CHANGELOG.md +51 -0
  82. package/base.js +3 -4
  83. package/base.mjs +2 -2
  84. package/cellTypes/autocompleteType/autocompleteType.js +3 -5
  85. package/cellTypes/checkboxType/checkboxType.js +3 -5
  86. package/cellTypes/dateType/dateType.d.ts +3 -3
  87. package/cellTypes/dateType/dateType.js +5 -7
  88. package/cellTypes/dateType/dateType.mjs +2 -2
  89. package/cellTypes/dropdownType/dropdownType.js +3 -5
  90. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  91. package/cellTypes/handsontableType/handsontableType.js +5 -7
  92. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  93. package/cellTypes/index.d.ts +3 -0
  94. package/cellTypes/index.js +4 -0
  95. package/cellTypes/index.mjs +3 -1
  96. package/cellTypes/numericType/numericType.js +3 -5
  97. package/cellTypes/passwordType/passwordType.js +3 -5
  98. package/cellTypes/selectType/index.d.ts +1 -0
  99. package/cellTypes/selectType/index.js +6 -0
  100. package/cellTypes/selectType/index.mjs +1 -0
  101. package/cellTypes/selectType/selectType.d.ts +14 -0
  102. package/cellTypes/selectType/selectType.js +11 -0
  103. package/cellTypes/selectType/selectType.mjs +8 -0
  104. package/cellTypes/textType/textType.js +3 -5
  105. package/cellTypes/timeType/timeType.js +3 -5
  106. package/common.d.ts +1 -1
  107. package/core/focusCatcher/focusDetector.js +63 -0
  108. package/core/focusCatcher/focusDetector.mjs +59 -0
  109. package/core/focusCatcher/index.js +148 -0
  110. package/core/focusCatcher/index.mjs +144 -0
  111. package/core/index.js +9 -0
  112. package/core/index.mjs +1 -0
  113. package/core.d.ts +10 -5
  114. package/core.js +327 -359
  115. package/core.mjs +327 -359
  116. package/dataMap/dataMap.js +1 -2
  117. package/dataMap/dataSource.js +1 -2
  118. package/dataMap/metaManager/metaSchema.js +65 -0
  119. package/dataMap/metaManager/metaSchema.mjs +65 -0
  120. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  121. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  122. package/dataMap/replaceData.js +5 -0
  123. package/dataMap/replaceData.mjs +5 -0
  124. package/dist/handsontable.css +94 -76
  125. package/dist/handsontable.full.css +94 -76
  126. package/dist/handsontable.full.js +21236 -14104
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +22016 -15254
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +31 -23
  132. package/dist/languages/all.js +47 -40
  133. package/dist/languages/all.min.js +1 -1
  134. package/dist/languages/ar-AR.js +1 -2
  135. package/dist/languages/cs-CZ.js +1 -2
  136. package/dist/languages/de-CH.js +1 -2
  137. package/dist/languages/de-DE.js +1 -2
  138. package/dist/languages/en-US.js +15 -3
  139. package/dist/languages/en-US.min.js +1 -1
  140. package/dist/languages/es-MX.js +1 -2
  141. package/dist/languages/fr-FR.js +1 -2
  142. package/dist/languages/it-IT.js +1 -2
  143. package/dist/languages/ja-JP.js +1 -2
  144. package/dist/languages/ko-KR.js +1 -2
  145. package/dist/languages/lv-LV.js +1 -2
  146. package/dist/languages/nb-NO.js +1 -2
  147. package/dist/languages/nl-NL.js +1 -2
  148. package/dist/languages/pl-PL.js +15 -3
  149. package/dist/languages/pl-PL.min.js +1 -1
  150. package/dist/languages/pt-BR.js +1 -2
  151. package/dist/languages/ru-RU.js +1 -2
  152. package/dist/languages/sr-SP.js +1 -2
  153. package/dist/languages/zh-CN.js +1 -2
  154. package/dist/languages/zh-TW.js +1 -2
  155. package/editorManager.js +17 -91
  156. package/editorManager.mjs +16 -87
  157. package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
  158. package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
  159. package/editors/baseEditor/baseEditor.js +19 -13
  160. package/editors/baseEditor/baseEditor.mjs +16 -7
  161. package/editors/checkboxEditor/checkboxEditor.js +1 -2
  162. package/editors/dateEditor/dateEditor.js +27 -9
  163. package/editors/dateEditor/dateEditor.mjs +27 -8
  164. package/editors/dropdownEditor/dropdownEditor.js +1 -2
  165. package/editors/handsontableEditor/handsontableEditor.js +14 -7
  166. package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
  167. package/editors/numericEditor/numericEditor.js +1 -2
  168. package/editors/passwordEditor/passwordEditor.js +1 -2
  169. package/editors/selectEditor/selectEditor.js +1 -2
  170. package/editors/textEditor/textEditor.js +20 -29
  171. package/editors/textEditor/textEditor.mjs +22 -30
  172. package/editors/timeEditor/timeEditor.js +1 -2
  173. package/eventManager.js +1 -2
  174. package/focusManager.d.ts +12 -0
  175. package/focusManager.js +265 -0
  176. package/focusManager.mjs +261 -0
  177. package/helpers/a11y.js +81 -0
  178. package/helpers/a11y.mjs +39 -0
  179. package/helpers/dom/element.js +224 -12
  180. package/helpers/dom/element.mjs +216 -10
  181. package/helpers/dom/event.d.ts +1 -0
  182. package/helpers/dom/event.js +25 -0
  183. package/helpers/dom/event.mjs +24 -0
  184. package/helpers/mixed.js +2 -2
  185. package/helpers/mixed.mjs +2 -2
  186. package/helpers/number.d.ts +1 -0
  187. package/helpers/number.js +18 -0
  188. package/helpers/number.mjs +17 -0
  189. package/helpers/unicode.js +1 -2
  190. package/i18n/constants.js +97 -160
  191. package/i18n/constants.mjs +17 -1
  192. package/i18n/languages/ar-AR.js +3 -4
  193. package/i18n/languages/cs-CZ.js +3 -4
  194. package/i18n/languages/de-CH.js +3 -4
  195. package/i18n/languages/de-DE.js +3 -4
  196. package/i18n/languages/en-US.js +17 -5
  197. package/i18n/languages/en-US.mjs +14 -1
  198. package/i18n/languages/es-MX.js +3 -4
  199. package/i18n/languages/fr-FR.js +3 -4
  200. package/i18n/languages/it-IT.js +3 -4
  201. package/i18n/languages/ja-JP.js +3 -4
  202. package/i18n/languages/ko-KR.js +3 -4
  203. package/i18n/languages/lv-LV.js +3 -4
  204. package/i18n/languages/nb-NO.js +3 -4
  205. package/i18n/languages/nl-NL.js +3 -4
  206. package/i18n/languages/pl-PL.js +17 -5
  207. package/i18n/languages/pl-PL.mjs +14 -1
  208. package/i18n/languages/pt-BR.js +3 -4
  209. package/i18n/languages/ru-RU.js +3 -4
  210. package/i18n/languages/sr-SP.js +3 -4
  211. package/i18n/languages/zh-CN.js +3 -4
  212. package/i18n/languages/zh-TW.js +3 -4
  213. package/i18n/registry.js +4 -6
  214. package/index.js +3 -4
  215. package/languages/all.js +47 -40
  216. package/languages/ar-AR.js +1 -2
  217. package/languages/cs-CZ.js +1 -2
  218. package/languages/de-CH.js +1 -2
  219. package/languages/de-DE.js +1 -2
  220. package/languages/en-US.js +15 -3
  221. package/languages/en-US.mjs +14 -1
  222. package/languages/es-MX.js +1 -2
  223. package/languages/fr-FR.js +1 -2
  224. package/languages/index.js +47 -40
  225. package/languages/it-IT.js +1 -2
  226. package/languages/ja-JP.js +1 -2
  227. package/languages/ko-KR.js +1 -2
  228. package/languages/lv-LV.js +1 -2
  229. package/languages/nb-NO.js +1 -2
  230. package/languages/nl-NL.js +1 -2
  231. package/languages/pl-PL.js +15 -3
  232. package/languages/pl-PL.mjs +14 -1
  233. package/languages/pt-BR.js +1 -2
  234. package/languages/ru-RU.js +1 -2
  235. package/languages/sr-SP.js +1 -2
  236. package/languages/zh-CN.js +1 -2
  237. package/languages/zh-TW.js +1 -2
  238. package/mixins/hooksRefRegisterer.js +1 -2
  239. package/mixins/localHooks.js +1 -2
  240. package/package.json +119 -96
  241. package/pluginHooks.d.ts +42 -7
  242. package/pluginHooks.js +301 -65
  243. package/pluginHooks.mjs +300 -63
  244. package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
  245. package/plugins/autoColumnSize/autoColumnSize.js +2 -4
  246. package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
  247. package/plugins/autoRowSize/autoRowSize.js +15 -10
  248. package/plugins/autoRowSize/autoRowSize.mjs +13 -6
  249. package/plugins/autofill/autofill.js +2 -4
  250. package/plugins/autofill/utils.js +1 -2
  251. package/plugins/base/base.js +1 -2
  252. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
  253. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
  254. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
  255. package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
  256. package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
  257. package/plugins/columnSorting/columnSorting.js +71 -6
  258. package/plugins/columnSorting/columnSorting.mjs +70 -3
  259. package/plugins/columnSorting/index.js +3 -1
  260. package/plugins/columnSorting/index.mjs +1 -1
  261. package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
  262. package/plugins/columnSorting/sortFunction/date.js +1 -2
  263. package/plugins/columnSorting/sortFunction/default.js +1 -2
  264. package/plugins/columnSorting/sortFunction/numeric.js +1 -2
  265. package/plugins/columnSorting/sortService/engine.js +3 -6
  266. package/plugins/columnSorting/utils.js +3 -6
  267. package/plugins/columnSummary/columnSummary.js +2 -4
  268. package/plugins/columnSummary/endpoints.js +1 -2
  269. package/plugins/comments/commentEditor.js +2 -2
  270. package/plugins/comments/commentEditor.mjs +1 -0
  271. package/plugins/comments/comments.js +254 -197
  272. package/plugins/comments/comments.mjs +251 -190
  273. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  274. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  275. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  276. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  277. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  278. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  279. package/plugins/comments/displaySwitch.js +1 -2
  280. package/plugins/contextMenu/commandExecutor.js +2 -3
  281. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  282. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  283. package/plugins/contextMenu/contextMenu.js +77 -40
  284. package/plugins/contextMenu/contextMenu.mjs +74 -35
  285. package/plugins/contextMenu/itemsFactory.js +2 -3
  286. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  287. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  288. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  289. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  290. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  291. package/plugins/contextMenu/menu/index.js +9 -0
  292. package/plugins/contextMenu/menu/index.mjs +1 -0
  293. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  294. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  295. package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
  296. package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
  297. package/plugins/contextMenu/menu/navigator.js +27 -0
  298. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  299. package/plugins/contextMenu/menu/positioner.js +213 -0
  300. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  301. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  302. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  303. package/plugins/contextMenu/menu/utils.js +177 -0
  304. package/plugins/contextMenu/menu/utils.mjs +163 -0
  305. package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
  306. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  307. package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
  308. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  309. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
  310. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  311. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
  312. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  313. package/plugins/contextMenu/predefinedItems/index.js +75 -0
  314. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  315. package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
  316. package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
  317. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  318. package/plugins/contextMenu/predefinedItems/redo.js +3 -4
  319. package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
  320. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  321. package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
  322. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  323. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
  324. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  325. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
  326. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  327. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  328. package/plugins/contextMenu/predefinedItems/undo.js +3 -4
  329. package/plugins/contextMenu/utils.js +35 -151
  330. package/plugins/contextMenu/utils.mjs +35 -144
  331. package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
  332. package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
  333. package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
  334. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
  335. package/plugins/copyPaste/clipboardData/index.js +9 -0
  336. package/plugins/copyPaste/clipboardData/index.mjs +4 -0
  337. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
  338. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
  339. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  340. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  341. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  342. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  343. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  344. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  345. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  346. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  347. package/plugins/copyPaste/contextMenuItem/cut.js +9 -2
  348. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  349. package/plugins/copyPaste/copyPaste.js +160 -167
  350. package/plugins/copyPaste/copyPaste.mjs +161 -166
  351. package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
  352. package/plugins/customBorders/contextMenuItem/left.js +2 -2
  353. package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
  354. package/plugins/customBorders/contextMenuItem/right.js +2 -2
  355. package/plugins/customBorders/contextMenuItem/top.js +2 -2
  356. package/plugins/customBorders/customBorders.js +27 -26
  357. package/plugins/customBorders/customBorders.mjs +24 -21
  358. package/plugins/dragToScroll/dragToScroll.js +2 -4
  359. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  360. package/plugins/dropdownMenu/dropdownMenu.js +130 -44
  361. package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
  362. package/plugins/exportFile/dataProvider.js +1 -2
  363. package/plugins/exportFile/exportFile.js +4 -6
  364. package/plugins/exportFile/typeFactory.js +5 -8
  365. package/plugins/exportFile/types/_base.js +1 -2
  366. package/plugins/exportFile/types/csv.js +1 -2
  367. package/plugins/filters/component/_base.js +23 -8
  368. package/plugins/filters/component/_base.mjs +23 -8
  369. package/plugins/filters/component/actionBar.js +31 -29
  370. package/plugins/filters/component/actionBar.mjs +26 -23
  371. package/plugins/filters/component/condition.js +48 -61
  372. package/plugins/filters/component/condition.mjs +40 -52
  373. package/plugins/filters/component/operators.js +21 -22
  374. package/plugins/filters/component/operators.mjs +18 -18
  375. package/plugins/filters/component/value.js +37 -28
  376. package/plugins/filters/component/value.mjs +32 -22
  377. package/plugins/filters/condition/beginsWith.js +3 -4
  378. package/plugins/filters/condition/between.js +3 -4
  379. package/plugins/filters/condition/byValue.js +1 -2
  380. package/plugins/filters/condition/contains.js +3 -4
  381. package/plugins/filters/condition/date/after.js +3 -4
  382. package/plugins/filters/condition/date/before.js +3 -4
  383. package/plugins/filters/condition/date/today.js +3 -4
  384. package/plugins/filters/condition/date/tomorrow.js +3 -4
  385. package/plugins/filters/condition/date/yesterday.js +3 -4
  386. package/plugins/filters/condition/empty.js +3 -4
  387. package/plugins/filters/condition/endsWith.js +3 -4
  388. package/plugins/filters/condition/equal.js +3 -4
  389. package/plugins/filters/condition/false.js +1 -2
  390. package/plugins/filters/condition/greaterThan.js +3 -4
  391. package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
  392. package/plugins/filters/condition/lessThan.js +3 -4
  393. package/plugins/filters/condition/lessThanOrEqual.js +3 -4
  394. package/plugins/filters/condition/none.js +3 -4
  395. package/plugins/filters/condition/notBetween.js +3 -4
  396. package/plugins/filters/condition/notContains.js +3 -4
  397. package/plugins/filters/condition/notEmpty.js +3 -4
  398. package/plugins/filters/condition/notEqual.js +3 -4
  399. package/plugins/filters/condition/true.js +1 -2
  400. package/plugins/filters/conditionCollection.d.ts +3 -2
  401. package/plugins/filters/conditionCollection.js +1 -2
  402. package/plugins/filters/conditionRegisterer.js +1 -2
  403. package/plugins/filters/conditionUpdateObserver.js +1 -2
  404. package/plugins/filters/constants.js +4 -8
  405. package/plugins/filters/constants.mjs +1 -1
  406. package/plugins/filters/dataFilter.js +1 -2
  407. package/plugins/filters/filters.d.ts +3 -5
  408. package/plugins/filters/filters.js +108 -66
  409. package/plugins/filters/filters.mjs +99 -55
  410. package/plugins/filters/logicalOperationRegisterer.js +1 -2
  411. package/plugins/filters/logicalOperations/conjunction.js +4 -6
  412. package/plugins/filters/logicalOperations/disjunction.js +4 -6
  413. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
  414. package/plugins/filters/menu/focusController.js +123 -0
  415. package/plugins/filters/menu/focusController.mjs +119 -0
  416. package/plugins/filters/menu/focusNavigator.js +30 -0
  417. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  418. package/plugins/filters/ui/_base.js +37 -15
  419. package/plugins/filters/ui/_base.mjs +35 -13
  420. package/plugins/filters/ui/input.js +43 -35
  421. package/plugins/filters/ui/input.mjs +42 -33
  422. package/plugins/filters/ui/link.js +44 -12
  423. package/plugins/filters/ui/link.mjs +44 -11
  424. package/plugins/filters/ui/multipleSelect.js +237 -133
  425. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  426. package/plugins/filters/ui/radioInput.js +42 -18
  427. package/plugins/filters/ui/radioInput.mjs +42 -17
  428. package/plugins/filters/ui/select.js +152 -77
  429. package/plugins/filters/ui/select.mjs +148 -72
  430. package/plugins/formulas/engine/settings.js +2 -4
  431. package/plugins/formulas/formulas.js +3 -6
  432. package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
  433. package/plugins/formulas/indexSyncer/index.js +1 -2
  434. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
  435. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  436. package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
  437. package/plugins/hiddenColumns/hiddenColumns.js +49 -6
  438. package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
  439. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
  440. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  441. package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
  442. package/plugins/hiddenRows/hiddenRows.js +49 -6
  443. package/plugins/hiddenRows/hiddenRows.mjs +48 -3
  444. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
  445. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
  446. package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
  447. package/plugins/manualColumnMove/manualColumnMove.js +9 -17
  448. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
  449. package/plugins/manualColumnMove/ui/_base.js +1 -2
  450. package/plugins/manualColumnMove/ui/backlight.js +1 -2
  451. package/plugins/manualColumnMove/ui/guideline.js +1 -2
  452. package/plugins/manualColumnResize/manualColumnResize.js +2 -4
  453. package/plugins/manualRowMove/manualRowMove.js +6 -23
  454. package/plugins/manualRowMove/manualRowMove.mjs +4 -19
  455. package/plugins/manualRowMove/ui/_base.js +1 -2
  456. package/plugins/manualRowMove/ui/backlight.js +1 -2
  457. package/plugins/manualRowMove/ui/guideline.js +1 -2
  458. package/plugins/manualRowResize/manualRowResize.js +2 -4
  459. package/plugins/mergeCells/calculations/autofill.js +1 -2
  460. package/plugins/mergeCells/calculations/selection.js +1 -2
  461. package/plugins/mergeCells/cellCoords.js +1 -2
  462. package/plugins/mergeCells/cellsCollection.js +1 -2
  463. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
  464. package/plugins/mergeCells/mergeCells.js +7 -20
  465. package/plugins/mergeCells/mergeCells.mjs +5 -16
  466. package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
  467. package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
  468. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
  469. package/plugins/nestedHeaders/nestedHeaders.js +263 -36
  470. package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
  471. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  472. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  473. package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
  474. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  475. package/plugins/nestedRows/data/dataManager.js +1 -2
  476. package/plugins/nestedRows/nestedRows.js +47 -10
  477. package/plugins/nestedRows/nestedRows.mjs +45 -6
  478. package/plugins/nestedRows/ui/_base.js +1 -2
  479. package/plugins/nestedRows/ui/collapsing.js +1 -2
  480. package/plugins/nestedRows/ui/contextMenu.js +3 -4
  481. package/plugins/nestedRows/ui/headers.js +13 -3
  482. package/plugins/nestedRows/ui/headers.mjs +13 -2
  483. package/plugins/persistentState/persistentState.js +2 -4
  484. package/plugins/persistentState/storage.js +1 -2
  485. package/plugins/search/search.js +2 -4
  486. package/plugins/touchScroll/touchScroll.js +2 -4
  487. package/plugins/trimRows/trimRows.js +2 -4
  488. package/plugins/undoRedo/index.js +2 -2
  489. package/plugins/undoRedo/undoRedo.js +2 -4
  490. package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
  491. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  492. package/renderers/baseRenderer/baseRenderer.js +18 -2
  493. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  494. package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
  495. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  496. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  497. package/renderers/dateRenderer/dateRenderer.js +28 -0
  498. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  499. package/renderers/dateRenderer/index.d.ts +1 -0
  500. package/renderers/dateRenderer/index.js +6 -0
  501. package/renderers/dateRenderer/index.mjs +1 -0
  502. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  503. package/renderers/handsontableRenderer/handsontableRenderer.js +28 -0
  504. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  505. package/renderers/handsontableRenderer/index.d.ts +1 -0
  506. package/renderers/handsontableRenderer/index.js +6 -0
  507. package/renderers/handsontableRenderer/index.mjs +1 -0
  508. package/renderers/htmlRenderer/htmlRenderer.js +1 -2
  509. package/renderers/index.d.ts +9 -0
  510. package/renderers/numericRenderer/numericRenderer.js +1 -2
  511. package/renderers/passwordRenderer/passwordRenderer.js +1 -2
  512. package/renderers/selectRenderer/index.d.ts +1 -0
  513. package/renderers/selectRenderer/index.js +6 -0
  514. package/renderers/selectRenderer/index.mjs +1 -0
  515. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  516. package/renderers/selectRenderer/selectRenderer.js +26 -0
  517. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  518. package/renderers/textRenderer/textRenderer.js +1 -2
  519. package/renderers/timeRenderer/timeRenderer.js +1 -2
  520. package/selection/highlight/highlight.js +257 -73
  521. package/selection/highlight/highlight.mjs +250 -71
  522. package/selection/highlight/types/activeHeader.js +10 -8
  523. package/selection/highlight/types/activeHeader.mjs +10 -8
  524. package/selection/highlight/types/area.js +6 -18
  525. package/selection/highlight/types/area.mjs +6 -18
  526. package/selection/highlight/types/areaLayered.js +31 -0
  527. package/selection/highlight/types/areaLayered.mjs +26 -0
  528. package/selection/highlight/types/column.js +27 -0
  529. package/selection/highlight/types/column.mjs +22 -0
  530. package/selection/highlight/types/customSelection.js +7 -9
  531. package/selection/highlight/types/customSelection.mjs +7 -9
  532. package/selection/highlight/types/fill.js +5 -7
  533. package/selection/highlight/types/fill.mjs +5 -7
  534. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  535. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  536. package/selection/highlight/types/header.js +9 -18
  537. package/selection/highlight/types/header.mjs +9 -18
  538. package/selection/highlight/types/row.js +27 -0
  539. package/selection/highlight/types/row.mjs +22 -0
  540. package/selection/highlight/visualSelection.js +32 -29
  541. package/selection/highlight/visualSelection.mjs +31 -27
  542. package/selection/index.js +4 -7
  543. package/selection/index.mjs +2 -3
  544. package/selection/mouseEventHandler.js +7 -1
  545. package/selection/mouseEventHandler.mjs +7 -1
  546. package/selection/range.js +9 -10
  547. package/selection/range.mjs +8 -8
  548. package/selection/selection.js +334 -154
  549. package/selection/selection.mjs +330 -151
  550. package/selection/transformation.js +233 -94
  551. package/selection/transformation.mjs +232 -92
  552. package/selection/utils.js +20 -31
  553. package/selection/utils.mjs +16 -21
  554. package/settings.d.ts +4 -0
  555. package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
  556. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  557. package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
  558. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  559. package/shortcutContexts/commands/editor/fastOpen.js +15 -0
  560. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  561. package/shortcutContexts/commands/editor/index.js +16 -0
  562. package/shortcutContexts/commands/editor/index.mjs +12 -0
  563. package/shortcutContexts/commands/editor/open.js +26 -0
  564. package/shortcutContexts/commands/editor/open.mjs +23 -0
  565. package/shortcutContexts/commands/emptySelectedCells.js +10 -0
  566. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  567. package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
  568. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  569. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -0
  570. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  571. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  572. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  573. package/shortcutContexts/commands/extendCellsSelection/left.js +14 -0
  574. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  575. package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
  576. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  577. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
  578. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  579. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
  580. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  581. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
  582. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  583. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
  584. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  585. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
  586. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  587. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
  588. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  589. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
  590. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  591. package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
  592. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  593. package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
  594. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  595. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -0
  596. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  597. package/shortcutContexts/commands/index.js +35 -0
  598. package/shortcutContexts/commands/index.mjs +31 -0
  599. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  600. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  601. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -0
  602. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  603. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  604. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  605. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +11 -0
  606. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  607. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
  608. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  609. package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
  610. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  611. package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
  612. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  613. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  614. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  615. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  616. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  617. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  618. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  619. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  620. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  621. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
  622. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  623. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
  624. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  625. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  626. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  627. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  628. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  629. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  630. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  631. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
  632. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  633. package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
  634. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  635. package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
  636. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  637. package/shortcutContexts/commands/selectAll.js +11 -0
  638. package/shortcutContexts/commands/selectAll.mjs +8 -0
  639. package/shortcutContexts/constants.js +11 -0
  640. package/shortcutContexts/constants.mjs +8 -0
  641. package/shortcutContexts/editor.js +25 -0
  642. package/shortcutContexts/editor.mjs +21 -0
  643. package/shortcutContexts/grid.js +167 -0
  644. package/shortcutContexts/grid.mjs +163 -0
  645. package/shortcutContexts/index.js +24 -0
  646. package/shortcutContexts/index.mjs +11 -0
  647. package/shortcuts/context.d.ts +1 -0
  648. package/shortcuts/context.js +23 -4
  649. package/shortcuts/context.mjs +23 -5
  650. package/shortcuts/manager.js +31 -7
  651. package/shortcuts/manager.mjs +32 -7
  652. package/shortcuts/recorder.js +30 -14
  653. package/shortcuts/recorder.mjs +30 -14
  654. package/shortcuts/utils.js +19 -5
  655. package/shortcuts/utils.mjs +18 -4
  656. package/tableView.js +113 -16
  657. package/tableView.mjs +113 -15
  658. package/utils/dataStructures/linkedList.js +1 -2
  659. package/utils/dataStructures/priorityMap.js +2 -4
  660. package/utils/dataStructures/queue.js +1 -2
  661. package/utils/dataStructures/stack.js +1 -2
  662. package/utils/dataStructures/tree.js +3 -6
  663. package/utils/ghostTable.js +32 -17
  664. package/utils/ghostTable.mjs +31 -15
  665. package/utils/interval.js +1 -2
  666. package/utils/paginator.js +151 -0
  667. package/utils/paginator.mjs +147 -0
  668. package/utils/parseTable.js +527 -83
  669. package/utils/parseTable.mjs +523 -82
  670. package/utils/rootInstance.js +2 -4
  671. package/utils/samplesGenerator.js +21 -13
  672. package/utils/samplesGenerator.mjs +20 -11
  673. package/utils/staticRegister.js +1 -2
  674. package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
  675. package/validators/dateValidator/dateValidator.js +1 -2
  676. package/validators/numericValidator/numericValidator.js +1 -2
  677. package/validators/timeValidator/timeValidator.js +1 -2
  678. package/3rdparty/walkontable/src/selection.js +0 -295
  679. package/3rdparty/walkontable/src/selection.mjs +0 -290
  680. package/plugins/contextMenu/predefinedItems.js +0 -76
  681. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  682. package/plugins/copyPaste/clipboardData.js +0 -18
  683. package/plugins/copyPaste/clipboardData.mjs +0 -14
  684. package/plugins/copyPaste/focusableElement.js +0 -186
  685. package/plugins/copyPaste/focusableElement.mjs +0 -180
  686. package/plugins/copyPaste/pasteEvent.js +0 -14
  687. package/plugins/copyPaste/pasteEvent.mjs +0 -9
  688. package/selection/highlight/constants.js +0 -15
  689. package/selection/highlight/constants.mjs +0 -6
  690. package/selection/highlight/types/index.js +0 -35
  691. package/selection/highlight/types/index.mjs +0 -31
@@ -6,13 +6,12 @@ var _element = require("../../helpers/dom/element");
6
6
  var _object = require("../../helpers/object");
7
7
  const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
8
8
  const SHORTCUTS_GROUP = 'selectEditor';
9
- const EDITOR_TYPE = 'select';
9
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'select';
10
10
 
11
11
  /**
12
12
  * @private
13
13
  * @class SelectEditor
14
14
  */
15
- exports.EDITOR_TYPE = EDITOR_TYPE;
16
15
  class SelectEditor extends _baseEditor.BaseEditor {
17
16
  static get EDITOR_TYPE() {
18
17
  return EDITOR_TYPE;
@@ -12,17 +12,17 @@ var _mixed = require("../../helpers/mixed");
12
12
  var _editorManager = require("../../editorManager");
13
13
  var _baseEditor2 = require("../baseEditor/baseEditor");
14
14
  var _caretPositioner = require("./caretPositioner");
15
+ var _a11y = require("../../helpers/a11y");
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
  const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
17
18
  const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
18
19
  const SHORTCUTS_GROUP = 'textEditor';
19
- const EDITOR_TYPE = 'text';
20
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'text';
20
21
 
21
22
  /**
22
23
  * @private
23
24
  * @class TextEditor
24
25
  */
25
- exports.EDITOR_TYPE = EDITOR_TYPE;
26
26
  class TextEditor extends _baseEditor.BaseEditor {
27
27
  static get EDITOR_TYPE() {
28
28
  return EDITOR_TYPE;
@@ -122,7 +122,7 @@ class TextEditor extends _baseEditor.BaseEditor {
122
122
  */
123
123
  close() {
124
124
  this.autoResize.unObserve();
125
- if (this.hot.rootDocument.activeElement === this.TEXTAREA) {
125
+ if ((0, _element.isThisHotChild)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
126
126
  this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
127
127
  }
128
128
 
@@ -147,8 +147,7 @@ class TextEditor extends _baseEditor.BaseEditor {
147
147
  if (!cellProperties.readOnly) {
148
148
  this.refreshDimensions(true);
149
149
  const {
150
- allowInvalid,
151
- fragmentSelection
150
+ allowInvalid
152
151
  } = cellProperties;
153
152
  if (allowInvalid) {
154
153
  // Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
@@ -158,13 +157,6 @@ class TextEditor extends _baseEditor.BaseEditor {
158
157
  if (previousState !== _baseEditor.EDITOR_STATE.FINISHED) {
159
158
  this.hideEditableElement();
160
159
  }
161
-
162
- // @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
163
- // refocus has to be disabled (to make IME working).
164
- const restoreFocus = !fragmentSelection;
165
- if (restoreFocus && !(0, _browser.isMobileBrowser)()) {
166
- this.focus();
167
- }
168
160
  }
169
161
  }
170
162
 
@@ -201,8 +193,13 @@ class TextEditor extends _baseEditor.BaseEditor {
201
193
  rootDocument
202
194
  } = this.hot;
203
195
  this.TEXTAREA = rootDocument.createElement('TEXTAREA');
204
- this.TEXTAREA.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
205
- this.TEXTAREA.tabIndex = -1;
196
+
197
+ // Makes the element recognizable by Hot as its own
198
+ // component's element.
199
+ (0, _element.setAttribute)(this.TEXTAREA, [['data-hot-input', ''], (0, _a11y.A11Y_TABINDEX)(-1)]);
200
+ if (this.hot.getSettings().ariaTags) {
201
+ (0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
202
+ }
206
203
  (0, _element.addClass)(this.TEXTAREA, 'handsontableInput');
207
204
  this.textareaStyle = this.TEXTAREA.style;
208
205
  this.textareaStyle.width = 0;
@@ -340,8 +337,6 @@ class TextEditor extends _baseEditor.BaseEditor {
340
337
  * @private
341
338
  */
342
339
  bindEvents() {
343
- this.eventManager.addEventListener(this.TEXTAREA, 'cut', event => event.stopPropagation());
344
- this.eventManager.addEventListener(this.TEXTAREA, 'paste', event => event.stopPropagation());
345
340
  if ((0, _browser.isIOS)()) {
346
341
  // on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
347
342
  this.eventManager.addEventListener(this.TEXTAREA, 'focusout', () => this.finishEditing(false));
@@ -350,11 +345,15 @@ class TextEditor extends _baseEditor.BaseEditor {
350
345
  this.addHook('afterScrollVertically', () => this.refreshDimensions());
351
346
  this.addHook('afterColumnResize', () => {
352
347
  this.refreshDimensions();
353
- this.focus();
348
+ if (this.state === _baseEditor.EDITOR_STATE.EDITING) {
349
+ this.focus();
350
+ }
354
351
  });
355
352
  this.addHook('afterRowResize', () => {
356
353
  this.refreshDimensions();
357
- this.focus();
354
+ if (this.state === _baseEditor.EDITOR_STATE.EDITING) {
355
+ this.focus();
356
+ }
358
357
  });
359
358
  }
360
359
 
@@ -416,9 +415,7 @@ class TextEditor extends _baseEditor.BaseEditor {
416
415
  runOnlyIf: event => !this.hot.selection.isMultiple() &&
417
416
  // We trigger a data population for multiple selection.
418
417
  // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
419
- !event.altKey,
420
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
421
- position: 'before'
418
+ !event.altKey
422
419
  }, {
423
420
  keys: [['Meta', 'Enter']],
424
421
  callback: () => {
@@ -426,19 +423,13 @@ class TextEditor extends _baseEditor.BaseEditor {
426
423
  return false; // Will block closing editor.
427
424
  },
428
425
 
429
- runOnlyIf: () => !this.hot.selection.isMultiple(),
430
- // We trigger a data population for multiple selection.
431
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
432
- position: 'before'
426
+ runOnlyIf: () => !this.hot.selection.isMultiple() // We trigger a data population for multiple selection.
433
427
  }, {
434
428
  keys: [['Alt', 'Enter']],
435
429
  callback: () => {
436
430
  insertNewLine();
437
431
  return false; // Will block closing editor.
438
- },
439
-
440
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
441
- position: 'before'
432
+ }
442
433
  }, {
443
434
  // TODO: Duplicated part of code (callback to shortcut)
444
435
  keys: [['PageUp']],
@@ -1,14 +1,15 @@
1
1
  import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
2
2
  import EventManager from "../../eventManager.mjs";
3
- import { isMobileBrowser, isEdge, isIOS } from "../../helpers/browser.mjs";
4
- import { addClass, getComputedStyle, setCaretPosition, hasClass, removeClass } from "../../helpers/dom/element.mjs";
3
+ import { isEdge, isIOS } from "../../helpers/browser.mjs";
4
+ import { addClass, getComputedStyle, isThisHotChild, setCaretPosition, hasClass, removeClass, setAttribute } from "../../helpers/dom/element.mjs";
5
5
  import { rangeEach } from "../../helpers/number.mjs";
6
6
  import { KEY_CODES } from "../../helpers/unicode.mjs";
7
7
  import { autoResize } from "../../3rdparty/autoResize/index.mjs";
8
8
  import { isDefined } from "../../helpers/mixed.mjs";
9
- import { SHORTCUTS_GROUP_NAVIGATION, SHORTCUTS_GROUP_EDITOR as EDITOR_MANAGER_GROUP } from "../../editorManager.mjs";
9
+ import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
10
10
  import { SHORTCUTS_GROUP_EDITOR } from "../baseEditor/baseEditor.mjs";
11
11
  import { updateCaretPosition } from "./caretPositioner.mjs";
12
+ import { A11Y_HIDDEN, A11Y_TABINDEX } from "../../helpers/a11y.mjs";
12
13
  const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
13
14
  const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
14
15
  const SHORTCUTS_GROUP = 'textEditor';
@@ -117,7 +118,7 @@ export class TextEditor extends BaseEditor {
117
118
  */
118
119
  close() {
119
120
  this.autoResize.unObserve();
120
- if (this.hot.rootDocument.activeElement === this.TEXTAREA) {
121
+ if (isThisHotChild(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
121
122
  this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
122
123
  }
123
124
 
@@ -142,8 +143,7 @@ export class TextEditor extends BaseEditor {
142
143
  if (!cellProperties.readOnly) {
143
144
  this.refreshDimensions(true);
144
145
  const {
145
- allowInvalid,
146
- fragmentSelection
146
+ allowInvalid
147
147
  } = cellProperties;
148
148
  if (allowInvalid) {
149
149
  // Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
@@ -153,13 +153,6 @@ export class TextEditor extends BaseEditor {
153
153
  if (previousState !== EDITOR_STATE.FINISHED) {
154
154
  this.hideEditableElement();
155
155
  }
156
-
157
- // @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
158
- // refocus has to be disabled (to make IME working).
159
- const restoreFocus = !fragmentSelection;
160
- if (restoreFocus && !isMobileBrowser()) {
161
- this.focus();
162
- }
163
156
  }
164
157
  }
165
158
 
@@ -196,8 +189,13 @@ export class TextEditor extends BaseEditor {
196
189
  rootDocument
197
190
  } = this.hot;
198
191
  this.TEXTAREA = rootDocument.createElement('TEXTAREA');
199
- this.TEXTAREA.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
200
- this.TEXTAREA.tabIndex = -1;
192
+
193
+ // Makes the element recognizable by Hot as its own
194
+ // component's element.
195
+ setAttribute(this.TEXTAREA, [['data-hot-input', ''], A11Y_TABINDEX(-1)]);
196
+ if (this.hot.getSettings().ariaTags) {
197
+ setAttribute(this.TEXTAREA, [A11Y_HIDDEN()]);
198
+ }
201
199
  addClass(this.TEXTAREA, 'handsontableInput');
202
200
  this.textareaStyle = this.TEXTAREA.style;
203
201
  this.textareaStyle.width = 0;
@@ -335,8 +333,6 @@ export class TextEditor extends BaseEditor {
335
333
  * @private
336
334
  */
337
335
  bindEvents() {
338
- this.eventManager.addEventListener(this.TEXTAREA, 'cut', event => event.stopPropagation());
339
- this.eventManager.addEventListener(this.TEXTAREA, 'paste', event => event.stopPropagation());
340
336
  if (isIOS()) {
341
337
  // on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
342
338
  this.eventManager.addEventListener(this.TEXTAREA, 'focusout', () => this.finishEditing(false));
@@ -345,11 +341,15 @@ export class TextEditor extends BaseEditor {
345
341
  this.addHook('afterScrollVertically', () => this.refreshDimensions());
346
342
  this.addHook('afterColumnResize', () => {
347
343
  this.refreshDimensions();
348
- this.focus();
344
+ if (this.state === EDITOR_STATE.EDITING) {
345
+ this.focus();
346
+ }
349
347
  });
350
348
  this.addHook('afterRowResize', () => {
351
349
  this.refreshDimensions();
352
- this.focus();
350
+ if (this.state === EDITOR_STATE.EDITING) {
351
+ this.focus();
352
+ }
353
353
  });
354
354
  }
355
355
 
@@ -411,9 +411,7 @@ export class TextEditor extends BaseEditor {
411
411
  runOnlyIf: event => !this.hot.selection.isMultiple() &&
412
412
  // We trigger a data population for multiple selection.
413
413
  // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
414
- !event.altKey,
415
- relativeToGroup: EDITOR_MANAGER_GROUP,
416
- position: 'before'
414
+ !event.altKey
417
415
  }, {
418
416
  keys: [['Meta', 'Enter']],
419
417
  callback: () => {
@@ -421,19 +419,13 @@ export class TextEditor extends BaseEditor {
421
419
  return false; // Will block closing editor.
422
420
  },
423
421
 
424
- runOnlyIf: () => !this.hot.selection.isMultiple(),
425
- // We trigger a data population for multiple selection.
426
- relativeToGroup: EDITOR_MANAGER_GROUP,
427
- position: 'before'
422
+ runOnlyIf: () => !this.hot.selection.isMultiple() // We trigger a data population for multiple selection.
428
423
  }, {
429
424
  keys: [['Alt', 'Enter']],
430
425
  callback: () => {
431
426
  insertNewLine();
432
427
  return false; // Will block closing editor.
433
- },
434
-
435
- relativeToGroup: EDITOR_MANAGER_GROUP,
436
- position: 'before'
428
+ }
437
429
  }, {
438
430
  // TODO: Duplicated part of code (callback to shortcut)
439
431
  keys: [['PageUp']],
@@ -2,13 +2,12 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  var _textEditor = require("../textEditor");
5
- const EDITOR_TYPE = 'time';
5
+ const EDITOR_TYPE = exports.EDITOR_TYPE = 'time';
6
6
 
7
7
  /**
8
8
  * @private
9
9
  * @class TimeEditor
10
10
  */
11
- exports.EDITOR_TYPE = EDITOR_TYPE;
12
11
  class TimeEditor extends _textEditor.TextEditor {
13
12
  static get EDITOR_TYPE() {
14
13
  return EDITOR_TYPE;
package/eventManager.js CHANGED
@@ -201,11 +201,10 @@ function extendEvent(event) {
201
201
  };
202
202
  return event;
203
203
  }
204
- var _default = EventManager;
204
+ var _default = exports.default = EventManager;
205
205
  /**
206
206
  * @returns {number}
207
207
  */
208
- exports.default = _default;
209
208
  function getListenersCounter() {
210
209
  return listenersCounter;
211
210
  }
@@ -0,0 +1,12 @@
1
+ type FocusMode = 'cell' | 'mixed';
2
+
3
+ export interface FocusManager {
4
+ getFocusMode(): FocusMode;
5
+ setFocusMode(focusMode: FocusMode): void;
6
+ getRefocusDelay(): number;
7
+ setRefocusDelay(delay: number): void;
8
+ setRefocusElementGetter(getterFn: () => HTMLElement): void;
9
+ getRefocusElement(): HTMLElement | void;
10
+ focusOnHighlightedCell(): void;
11
+ refocusToEditorTextarea(delay: number): void;
12
+ }
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
5
+ var _console = require("./helpers/console");
6
+ var _element = require("./helpers/dom/element");
7
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
8
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
9
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
10
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
11
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
12
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
13
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
14
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
15
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
16
+ /**
17
+ * Possible focus modes.
18
+ * - CELL - The browser's focus stays on the lastly selected cell element.
19
+ * - MIXED - The browser's focus switches from the lastly selected cell element to the currently active editor's
20
+ * `TEXTAREA` element after a delay defined in the manager.
21
+ *
22
+ * @type {{CELL: string, MIXED: string}}
23
+ */
24
+ const FOCUS_MODES = Object.freeze({
25
+ CELL: 'cell',
26
+ MIXED: 'mixed'
27
+ });
28
+
29
+ /**
30
+ * Manages the browser's focus in the table.
31
+ */
32
+ var _hot = /*#__PURE__*/new WeakMap();
33
+ var _focusMode = /*#__PURE__*/new WeakMap();
34
+ var _refocusDelay = /*#__PURE__*/new WeakMap();
35
+ var _refocusElementGetter = /*#__PURE__*/new WeakMap();
36
+ var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
37
+ var _getSelectedCell = /*#__PURE__*/new WeakSet();
38
+ var _manageFocus = /*#__PURE__*/new WeakSet();
39
+ var _onUpdateSettings = /*#__PURE__*/new WeakSet();
40
+ class FocusManager {
41
+ constructor(hotInstance) {
42
+ var _this = this;
43
+ /**
44
+ * Update the manager configuration after calling `updateSettings`.
45
+ *
46
+ * @private
47
+ * @param {object} newSettings The new settings passed to the `updateSettings` method.
48
+ */
49
+ _classPrivateMethodInitSpec(this, _onUpdateSettings);
50
+ /**
51
+ * Manage the browser's focus after cell selection.
52
+ *
53
+ * @private
54
+ */
55
+ _classPrivateMethodInitSpec(this, _manageFocus);
56
+ /**
57
+ * Get and return the currently selected and highlighted cell/header element.
58
+ *
59
+ * @private
60
+ * @returns {HTMLTableCellElement}
61
+ */
62
+ _classPrivateMethodInitSpec(this, _getSelectedCell);
63
+ /**
64
+ * Get the coordinates of the highlight of the currently selected cell/header.
65
+ *
66
+ * @returns {CellCoords}
67
+ */
68
+ _classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
69
+ /**
70
+ * The Handsontable instance.
71
+ */
72
+ _classPrivateFieldInitSpec(this, _hot, {
73
+ writable: true,
74
+ value: void 0
75
+ });
76
+ /**
77
+ * The currently enabled focus mode.
78
+ * Can be either:
79
+ *
80
+ * - 'cell' - The browser's focus stays on the lastly selected cell element.
81
+ * - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
82
+ * `TEXTAREA` element after a delay defined in the manager.
83
+ *
84
+ * @type {string}
85
+ */
86
+ _classPrivateFieldInitSpec(this, _focusMode, {
87
+ writable: true,
88
+ value: void 0
89
+ });
90
+ /**
91
+ * The delay after which the focus switches from the lastly selected cell to the active editor's `TEXTAREA`
92
+ * element if the focus mode is set to 'mixed'.
93
+ *
94
+ * @type {number}
95
+ */
96
+ _classPrivateFieldInitSpec(this, _refocusDelay, {
97
+ writable: true,
98
+ value: 50
99
+ });
100
+ /**
101
+ * Getter function for the element to be used when refocusing the browser after a delay. If `null`, the active
102
+ * editor's `TEXTAREA` element will be used.
103
+ *
104
+ * @type {null|Function}
105
+ */
106
+ _classPrivateFieldInitSpec(this, _refocusElementGetter, {
107
+ writable: true,
108
+ value: null
109
+ });
110
+ const hotSettings = hotInstance.getSettings();
111
+ _classPrivateFieldSet(this, _hot, hotInstance);
112
+ _classPrivateFieldSet(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
113
+ _classPrivateFieldGet(this, _hot).addHook('afterUpdateSettings', function () {
114
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
115
+ args[_key] = arguments[_key];
116
+ }
117
+ return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
118
+ });
119
+ _classPrivateFieldGet(this, _hot).addHook('afterSelection', function () {
120
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
121
+ args[_key2] = arguments[_key2];
122
+ }
123
+ return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
124
+ });
125
+ }
126
+
127
+ /**
128
+ * Get the current focus mode.
129
+ *
130
+ * @returns {'cell' | 'mixed'}
131
+ */
132
+ getFocusMode() {
133
+ return _classPrivateFieldGet(this, _focusMode);
134
+ }
135
+
136
+ /**
137
+ * Set the focus mode.
138
+ *
139
+ * @param {'cell' | 'mixed'} focusMode The new focus mode.
140
+ */
141
+ setFocusMode(focusMode) {
142
+ if (Object.values(FOCUS_MODES).includes(focusMode)) {
143
+ _classPrivateFieldSet(this, _focusMode, focusMode);
144
+ } else {
145
+ (0, _console.warn)(`"${focusMode}" is not a valid focus mode.`);
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Get the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
151
+ * element if the focus mode is set to 'mixed'.
152
+ *
153
+ * @returns {number} Delay in milliseconds.
154
+ */
155
+ getRefocusDelay() {
156
+ return _classPrivateFieldGet(this, _refocusDelay);
157
+ }
158
+
159
+ /**
160
+ * Set the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
161
+ * element if the focus mode is set to 'mixed'.
162
+ *
163
+ * @param {number} delay Delay in milliseconds.
164
+ */
165
+ setRefocusDelay(delay) {
166
+ _classPrivateFieldSet(this, _refocusDelay, delay);
167
+ }
168
+
169
+ /**
170
+ * Set the function to be used as the "refocus element" getter. It should return a focusable HTML element.
171
+ *
172
+ * @param {Function} getRefocusElementFunction The refocus element getter.
173
+ */
174
+ setRefocusElementGetter(getRefocusElementFunction) {
175
+ _classPrivateFieldSet(this, _refocusElementGetter, getRefocusElementFunction);
176
+ }
177
+
178
+ /**
179
+ * Get the element to be used when refocusing the browser after a delay in case of the focus mode being 'mixed'.
180
+ *
181
+ * @returns {HTMLTextAreaElement|HTMLElement|undefined}
182
+ */
183
+ getRefocusElement() {
184
+ if (typeof _classPrivateFieldGet(this, _refocusElementGetter) === 'function') {
185
+ return _classPrivateFieldGet(this, _refocusElementGetter).call(this);
186
+ } else {
187
+ var _classPrivateFieldGet2;
188
+ return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
189
+ }
190
+ }
191
+
192
+ /**
193
+ * Set the browser's focus to the highlighted cell of the last selection.
194
+ *
195
+ * @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
196
+ */
197
+ focusOnHighlightedCell(selectedCell) {
198
+ var _classPrivateFieldGet3;
199
+ const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
200
+ const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
201
+ let elementToBeFocused = _classPrivateFieldGet(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
202
+ if (!(elementToBeFocused instanceof HTMLElement)) {
203
+ elementToBeFocused = currentlySelectedHighlight;
204
+ }
205
+ if (elementToBeFocused && !((_classPrivateFieldGet3 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
206
+ elementToBeFocused.focus({
207
+ preventScroll: true
208
+ });
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
214
+ * will be taken from the manager's configuration.
215
+ *
216
+ * @param {number} delay Delay in milliseconds.
217
+ */
218
+ refocusToEditorTextarea() {
219
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _refocusDelay);
220
+ const refocusElement = this.getRefocusElement();
221
+
222
+ // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
223
+ if (_classPrivateFieldGet(this, _hot).getSettings().imeFastEdit && !!refocusElement) {
224
+ _classPrivateFieldGet(this, _hot)._registerTimeout(() => {
225
+ refocusElement.select();
226
+ }, delay);
227
+ }
228
+ }
229
+ }
230
+ exports.FocusManager = FocusManager;
231
+ function _getCurrentHighlightCoords2() {
232
+ const lastSelectedRange = _classPrivateFieldGet(this, _hot).getSelectedRangeLast();
233
+ return lastSelectedRange.highlight;
234
+ }
235
+ function _getSelectedCell2() {
236
+ const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
237
+ return _classPrivateFieldGet(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
238
+ }
239
+ function _manageFocus2() {
240
+ const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
241
+ const {
242
+ activeElement
243
+ } = _classPrivateFieldGet(this, _hot).rootDocument;
244
+
245
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
246
+ // and resets the `document.activeElement` property. The blurring should happen only when the
247
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
248
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
249
+ if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
250
+ activeElement.blur();
251
+ }
252
+ this.focusOnHighlightedCell(selectedCell);
253
+ if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
254
+ _classPrivateFieldGet(this, _hot).addHookOnce('afterSelectionEnd', () => {
255
+ this.refocusToEditorTextarea();
256
+ });
257
+ }
258
+ }
259
+ function _onUpdateSettings2(newSettings) {
260
+ if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
261
+ this.setFocusMode(FOCUS_MODES.MIXED);
262
+ } else if (!newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.CELL) {
263
+ this.setFocusMode(FOCUS_MODES.CELL);
264
+ }
265
+ }