handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-21d91d0-20231025

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 (446) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +12 -10
  14. package/3rdparty/walkontable/src/event.mjs +12 -10
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  26. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  27. package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
  28. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
  29. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
  30. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
  31. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  32. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  33. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  34. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  35. package/3rdparty/walkontable/src/scroll.js +2 -0
  36. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  37. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  38. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  39. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  40. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  41. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  42. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  43. package/3rdparty/walkontable/src/selection/index.js +26 -0
  44. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  45. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  46. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  47. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  48. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  49. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  50. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  51. package/3rdparty/walkontable/src/settings.js +13 -4
  52. package/3rdparty/walkontable/src/settings.mjs +13 -4
  53. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  59. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  60. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  61. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  62. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  63. package/3rdparty/walkontable/src/table.js +19 -78
  64. package/3rdparty/walkontable/src/table.mjs +20 -79
  65. package/base.js +2 -2
  66. package/base.mjs +2 -2
  67. package/cellTypes/dateType/dateType.d.ts +3 -3
  68. package/cellTypes/dateType/dateType.js +2 -2
  69. package/cellTypes/dateType/dateType.mjs +2 -2
  70. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  71. package/cellTypes/handsontableType/handsontableType.js +2 -2
  72. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  73. package/cellTypes/index.d.ts +3 -0
  74. package/cellTypes/index.js +4 -0
  75. package/cellTypes/index.mjs +3 -1
  76. package/cellTypes/selectType/index.d.ts +1 -0
  77. package/cellTypes/selectType/index.js +6 -0
  78. package/cellTypes/selectType/index.mjs +1 -0
  79. package/cellTypes/selectType/selectType.d.ts +14 -0
  80. package/cellTypes/selectType/selectType.js +13 -0
  81. package/cellTypes/selectType/selectType.mjs +8 -0
  82. package/core/focusCatcher/focusDetector.js +63 -0
  83. package/core/focusCatcher/focusDetector.mjs +59 -0
  84. package/core/focusCatcher/index.js +142 -0
  85. package/core/focusCatcher/index.mjs +138 -0
  86. package/core/index.js +9 -0
  87. package/core/index.mjs +1 -0
  88. package/core.d.ts +9 -4
  89. package/core.js +285 -327
  90. package/core.mjs +285 -327
  91. package/dataMap/metaManager/metaSchema.js +65 -0
  92. package/dataMap/metaManager/metaSchema.mjs +65 -0
  93. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  94. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  95. package/dataMap/replaceData.js +5 -0
  96. package/dataMap/replaceData.mjs +5 -0
  97. package/dist/handsontable.css +51 -15
  98. package/dist/handsontable.full.css +51 -15
  99. package/dist/handsontable.full.js +13360 -7840
  100. package/dist/handsontable.full.min.css +7 -7
  101. package/dist/handsontable.full.min.js +136 -136
  102. package/dist/handsontable.js +20955 -15435
  103. package/dist/handsontable.min.css +6 -6
  104. package/dist/handsontable.min.js +24 -24
  105. package/dist/languages/all.js +6 -2
  106. package/dist/languages/all.min.js +1 -1
  107. package/dist/languages/en-US.js +3 -1
  108. package/dist/languages/en-US.min.js +1 -1
  109. package/dist/languages/pl-PL.js +3 -1
  110. package/dist/languages/pl-PL.min.js +1 -1
  111. package/editorManager.js +15 -87
  112. package/editorManager.mjs +16 -87
  113. package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
  114. package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
  115. package/editors/dateEditor/dateEditor.js +26 -7
  116. package/editors/dateEditor/dateEditor.mjs +27 -8
  117. package/editors/handsontableEditor/handsontableEditor.js +9 -1
  118. package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
  119. package/editors/textEditor/textEditor.js +19 -27
  120. package/editors/textEditor/textEditor.mjs +22 -30
  121. package/focusManager.d.ts +12 -0
  122. package/focusManager.js +265 -0
  123. package/focusManager.mjs +261 -0
  124. package/helpers/a11y.js +79 -0
  125. package/helpers/a11y.mjs +38 -0
  126. package/helpers/dom/element.js +188 -9
  127. package/helpers/dom/element.mjs +182 -9
  128. package/helpers/mixed.js +1 -1
  129. package/helpers/mixed.mjs +1 -1
  130. package/helpers/number.d.ts +1 -0
  131. package/helpers/number.js +18 -0
  132. package/helpers/number.mjs +17 -0
  133. package/i18n/constants.js +7 -1
  134. package/i18n/constants.mjs +4 -1
  135. package/i18n/languages/en-US.js +3 -1
  136. package/i18n/languages/en-US.mjs +3 -1
  137. package/i18n/languages/pl-PL.js +3 -1
  138. package/i18n/languages/pl-PL.mjs +3 -1
  139. package/languages/all.js +6 -2
  140. package/languages/en-US.js +3 -1
  141. package/languages/en-US.mjs +3 -1
  142. package/languages/index.js +6 -2
  143. package/languages/pl-PL.js +3 -1
  144. package/languages/pl-PL.mjs +3 -1
  145. package/package.json +21 -1
  146. package/pluginHooks.d.ts +12 -1
  147. package/pluginHooks.js +152 -1
  148. package/pluginHooks.mjs +152 -1
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
  151. package/plugins/columnSorting/columnSorting.js +43 -0
  152. package/plugins/columnSorting/columnSorting.mjs +44 -3
  153. package/plugins/columnSorting/index.js +3 -1
  154. package/plugins/columnSorting/index.mjs +1 -1
  155. package/plugins/comments/commentEditor.js +1 -0
  156. package/plugins/comments/commentEditor.mjs +1 -0
  157. package/plugins/comments/comments.js +252 -189
  158. package/plugins/comments/comments.mjs +251 -190
  159. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  160. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  161. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  162. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  163. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  164. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  165. package/plugins/contextMenu/commandExecutor.js +2 -3
  166. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  167. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  168. package/plugins/contextMenu/contextMenu.js +75 -36
  169. package/plugins/contextMenu/contextMenu.mjs +74 -35
  170. package/plugins/contextMenu/itemsFactory.js +2 -3
  171. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  172. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  173. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  174. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  175. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  176. package/plugins/contextMenu/menu/index.js +9 -0
  177. package/plugins/contextMenu/menu/index.mjs +1 -0
  178. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  179. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  180. package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
  181. package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
  182. package/plugins/contextMenu/menu/navigator.js +27 -0
  183. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  184. package/plugins/contextMenu/menu/positioner.js +213 -0
  185. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  186. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  187. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  188. package/plugins/contextMenu/menu/utils.js +177 -0
  189. package/plugins/contextMenu/menu/utils.mjs +163 -0
  190. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  191. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  192. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  193. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  194. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  195. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  196. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  197. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  198. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  199. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  200. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  201. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  202. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  203. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  204. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  205. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  206. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  207. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  208. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  209. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  210. package/plugins/contextMenu/utils.js +35 -151
  211. package/plugins/contextMenu/utils.mjs +35 -144
  212. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  213. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  214. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  215. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  216. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  217. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  218. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  219. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  220. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  221. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  222. package/plugins/copyPaste/copyPaste.js +127 -78
  223. package/plugins/copyPaste/copyPaste.mjs +128 -79
  224. package/plugins/customBorders/customBorders.js +23 -20
  225. package/plugins/customBorders/customBorders.mjs +24 -21
  226. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  227. package/plugins/dropdownMenu/dropdownMenu.js +127 -40
  228. package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
  229. package/plugins/filters/component/_base.js +23 -8
  230. package/plugins/filters/component/_base.mjs +23 -8
  231. package/plugins/filters/component/actionBar.js +29 -27
  232. package/plugins/filters/component/actionBar.mjs +26 -23
  233. package/plugins/filters/component/condition.js +46 -59
  234. package/plugins/filters/component/condition.mjs +40 -52
  235. package/plugins/filters/component/operators.js +21 -22
  236. package/plugins/filters/component/operators.mjs +18 -18
  237. package/plugins/filters/component/value.js +35 -26
  238. package/plugins/filters/component/value.mjs +32 -22
  239. package/plugins/filters/constants.mjs +1 -1
  240. package/plugins/filters/filters.js +106 -62
  241. package/plugins/filters/filters.mjs +99 -55
  242. package/plugins/filters/menu/focusController.js +123 -0
  243. package/plugins/filters/menu/focusController.mjs +119 -0
  244. package/plugins/filters/menu/focusNavigator.js +30 -0
  245. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  246. package/plugins/filters/ui/_base.js +35 -13
  247. package/plugins/filters/ui/_base.mjs +35 -13
  248. package/plugins/filters/ui/input.js +43 -32
  249. package/plugins/filters/ui/input.mjs +42 -30
  250. package/plugins/filters/ui/link.js +44 -12
  251. package/plugins/filters/ui/link.mjs +44 -11
  252. package/plugins/filters/ui/multipleSelect.js +234 -129
  253. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  254. package/plugins/filters/ui/radioInput.js +42 -18
  255. package/plugins/filters/ui/radioInput.mjs +42 -17
  256. package/plugins/filters/ui/select.js +144 -75
  257. package/plugins/filters/ui/select.mjs +142 -72
  258. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  259. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  260. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  261. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  262. package/plugins/mergeCells/mergeCells.js +5 -16
  263. package/plugins/mergeCells/mergeCells.mjs +5 -16
  264. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  265. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  266. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  267. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  268. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  269. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  270. package/plugins/nestedRows/nestedRows.js +41 -0
  271. package/plugins/nestedRows/nestedRows.mjs +41 -0
  272. package/plugins/nestedRows/ui/headers.js +11 -0
  273. package/plugins/nestedRows/ui/headers.mjs +12 -1
  274. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  275. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  276. package/renderers/baseRenderer/baseRenderer.js +17 -0
  277. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  278. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  279. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  280. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  281. package/renderers/dateRenderer/dateRenderer.js +29 -0
  282. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  283. package/renderers/dateRenderer/index.d.ts +1 -0
  284. package/renderers/dateRenderer/index.js +6 -0
  285. package/renderers/dateRenderer/index.mjs +1 -0
  286. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  287. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  288. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  289. package/renderers/handsontableRenderer/index.d.ts +1 -0
  290. package/renderers/handsontableRenderer/index.js +6 -0
  291. package/renderers/handsontableRenderer/index.mjs +1 -0
  292. package/renderers/index.d.ts +9 -0
  293. package/renderers/selectRenderer/index.d.ts +1 -0
  294. package/renderers/selectRenderer/index.js +6 -0
  295. package/renderers/selectRenderer/index.mjs +1 -0
  296. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  297. package/renderers/selectRenderer/selectRenderer.js +27 -0
  298. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  299. package/selection/highlight/highlight.js +256 -71
  300. package/selection/highlight/highlight.mjs +250 -71
  301. package/selection/highlight/types/activeHeader.js +10 -8
  302. package/selection/highlight/types/activeHeader.mjs +10 -8
  303. package/selection/highlight/types/area.js +6 -18
  304. package/selection/highlight/types/area.mjs +6 -18
  305. package/selection/highlight/types/areaLayered.js +31 -0
  306. package/selection/highlight/types/areaLayered.mjs +26 -0
  307. package/selection/highlight/types/column.js +27 -0
  308. package/selection/highlight/types/column.mjs +22 -0
  309. package/selection/highlight/types/customSelection.js +7 -9
  310. package/selection/highlight/types/customSelection.mjs +7 -9
  311. package/selection/highlight/types/fill.js +5 -7
  312. package/selection/highlight/types/fill.mjs +5 -7
  313. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  314. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  315. package/selection/highlight/types/header.js +9 -18
  316. package/selection/highlight/types/header.mjs +9 -18
  317. package/selection/highlight/types/row.js +27 -0
  318. package/selection/highlight/types/row.mjs +22 -0
  319. package/selection/highlight/visualSelection.js +31 -27
  320. package/selection/highlight/visualSelection.mjs +31 -27
  321. package/selection/index.js +4 -7
  322. package/selection/index.mjs +2 -3
  323. package/selection/mouseEventHandler.js +7 -1
  324. package/selection/mouseEventHandler.mjs +7 -1
  325. package/selection/range.js +8 -8
  326. package/selection/range.mjs +8 -8
  327. package/selection/selection.js +321 -152
  328. package/selection/selection.mjs +318 -151
  329. package/selection/transformation.js +232 -90
  330. package/selection/transformation.mjs +232 -90
  331. package/selection/utils.js +15 -21
  332. package/selection/utils.mjs +16 -21
  333. package/settings.d.ts +4 -0
  334. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  335. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  336. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  337. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  338. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  339. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  340. package/shortcutContexts/commands/editor/index.js +16 -0
  341. package/shortcutContexts/commands/editor/index.mjs +12 -0
  342. package/shortcutContexts/commands/editor/open.js +27 -0
  343. package/shortcutContexts/commands/editor/open.mjs +23 -0
  344. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  345. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  346. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  348. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  349. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  350. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  351. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  352. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  353. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  354. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  355. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  364. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  365. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  366. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  367. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  368. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  369. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  370. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  371. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  372. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  373. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  374. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  375. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  376. package/shortcutContexts/commands/index.js +35 -0
  377. package/shortcutContexts/commands/index.mjs +31 -0
  378. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  383. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  384. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  385. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  386. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  387. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  388. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  389. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  390. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  391. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  401. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  402. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  403. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  404. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  405. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  406. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  407. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  408. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  409. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  410. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  411. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  412. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  413. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  414. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  415. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  416. package/shortcutContexts/commands/selectAll.js +12 -0
  417. package/shortcutContexts/commands/selectAll.mjs +8 -0
  418. package/shortcutContexts/constants.js +13 -0
  419. package/shortcutContexts/constants.mjs +8 -0
  420. package/shortcutContexts/editor.js +25 -0
  421. package/shortcutContexts/editor.mjs +21 -0
  422. package/shortcutContexts/grid.js +163 -0
  423. package/shortcutContexts/grid.mjs +159 -0
  424. package/shortcutContexts/index.js +24 -0
  425. package/shortcutContexts/index.mjs +11 -0
  426. package/shortcuts/context.js +23 -4
  427. package/shortcuts/context.mjs +23 -5
  428. package/shortcuts/manager.js +25 -7
  429. package/shortcuts/manager.mjs +26 -7
  430. package/shortcuts/recorder.js +3 -3
  431. package/shortcuts/recorder.mjs +3 -3
  432. package/shortcuts/utils.js +19 -5
  433. package/shortcuts/utils.mjs +18 -4
  434. package/tableView.js +111 -13
  435. package/tableView.mjs +112 -14
  436. package/utils/paginator.js +151 -0
  437. package/utils/paginator.mjs +147 -0
  438. package/3rdparty/walkontable/src/selection.js +0 -295
  439. package/3rdparty/walkontable/src/selection.mjs +0 -290
  440. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  441. package/plugins/copyPaste/focusableElement.js +0 -186
  442. package/plugins/copyPaste/focusableElement.mjs +0 -180
  443. package/selection/highlight/constants.js +0 -15
  444. package/selection/highlight/constants.mjs +0 -6
  445. package/selection/highlight/types/index.js +0 -35
  446. package/selection/highlight/types/index.mjs +0 -31
@@ -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
+ }
@@ -0,0 +1,261 @@
1
+ import "core-js/modules/es.error.cause.js";
2
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
6
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
7
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
8
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
9
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
10
+ 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; } }
11
+ import { warn } from "./helpers/console.mjs";
12
+ import { isOutsideInput } from "./helpers/dom/element.mjs";
13
+ /**
14
+ * Possible focus modes.
15
+ * - CELL - The browser's focus stays on the lastly selected cell element.
16
+ * - MIXED - The browser's focus switches from the lastly selected cell element to the currently active editor's
17
+ * `TEXTAREA` element after a delay defined in the manager.
18
+ *
19
+ * @type {{CELL: string, MIXED: string}}
20
+ */
21
+ const FOCUS_MODES = Object.freeze({
22
+ CELL: 'cell',
23
+ MIXED: 'mixed'
24
+ });
25
+
26
+ /**
27
+ * Manages the browser's focus in the table.
28
+ */
29
+ var _hot = /*#__PURE__*/new WeakMap();
30
+ var _focusMode = /*#__PURE__*/new WeakMap();
31
+ var _refocusDelay = /*#__PURE__*/new WeakMap();
32
+ var _refocusElementGetter = /*#__PURE__*/new WeakMap();
33
+ var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
34
+ var _getSelectedCell = /*#__PURE__*/new WeakSet();
35
+ var _manageFocus = /*#__PURE__*/new WeakSet();
36
+ var _onUpdateSettings = /*#__PURE__*/new WeakSet();
37
+ export class FocusManager {
38
+ constructor(hotInstance) {
39
+ var _this = this;
40
+ /**
41
+ * Update the manager configuration after calling `updateSettings`.
42
+ *
43
+ * @private
44
+ * @param {object} newSettings The new settings passed to the `updateSettings` method.
45
+ */
46
+ _classPrivateMethodInitSpec(this, _onUpdateSettings);
47
+ /**
48
+ * Manage the browser's focus after cell selection.
49
+ *
50
+ * @private
51
+ */
52
+ _classPrivateMethodInitSpec(this, _manageFocus);
53
+ /**
54
+ * Get and return the currently selected and highlighted cell/header element.
55
+ *
56
+ * @private
57
+ * @returns {HTMLTableCellElement}
58
+ */
59
+ _classPrivateMethodInitSpec(this, _getSelectedCell);
60
+ /**
61
+ * Get the coordinates of the highlight of the currently selected cell/header.
62
+ *
63
+ * @returns {CellCoords}
64
+ */
65
+ _classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
66
+ /**
67
+ * The Handsontable instance.
68
+ */
69
+ _classPrivateFieldInitSpec(this, _hot, {
70
+ writable: true,
71
+ value: void 0
72
+ });
73
+ /**
74
+ * The currently enabled focus mode.
75
+ * Can be either:
76
+ *
77
+ * - 'cell' - The browser's focus stays on the lastly selected cell element.
78
+ * - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
79
+ * `TEXTAREA` element after a delay defined in the manager.
80
+ *
81
+ * @type {string}
82
+ */
83
+ _classPrivateFieldInitSpec(this, _focusMode, {
84
+ writable: true,
85
+ value: void 0
86
+ });
87
+ /**
88
+ * The delay after which the focus switches from the lastly selected cell to the active editor's `TEXTAREA`
89
+ * element if the focus mode is set to 'mixed'.
90
+ *
91
+ * @type {number}
92
+ */
93
+ _classPrivateFieldInitSpec(this, _refocusDelay, {
94
+ writable: true,
95
+ value: 50
96
+ });
97
+ /**
98
+ * Getter function for the element to be used when refocusing the browser after a delay. If `null`, the active
99
+ * editor's `TEXTAREA` element will be used.
100
+ *
101
+ * @type {null|Function}
102
+ */
103
+ _classPrivateFieldInitSpec(this, _refocusElementGetter, {
104
+ writable: true,
105
+ value: null
106
+ });
107
+ const hotSettings = hotInstance.getSettings();
108
+ _classPrivateFieldSet(this, _hot, hotInstance);
109
+ _classPrivateFieldSet(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
110
+ _classPrivateFieldGet(this, _hot).addHook('afterUpdateSettings', function () {
111
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
112
+ args[_key] = arguments[_key];
113
+ }
114
+ return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
115
+ });
116
+ _classPrivateFieldGet(this, _hot).addHook('afterSelection', function () {
117
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
118
+ args[_key2] = arguments[_key2];
119
+ }
120
+ return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
121
+ });
122
+ }
123
+
124
+ /**
125
+ * Get the current focus mode.
126
+ *
127
+ * @returns {'cell' | 'mixed'}
128
+ */
129
+ getFocusMode() {
130
+ return _classPrivateFieldGet(this, _focusMode);
131
+ }
132
+
133
+ /**
134
+ * Set the focus mode.
135
+ *
136
+ * @param {'cell' | 'mixed'} focusMode The new focus mode.
137
+ */
138
+ setFocusMode(focusMode) {
139
+ if (Object.values(FOCUS_MODES).includes(focusMode)) {
140
+ _classPrivateFieldSet(this, _focusMode, focusMode);
141
+ } else {
142
+ warn(`"${focusMode}" is not a valid focus mode.`);
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Get the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
148
+ * element if the focus mode is set to 'mixed'.
149
+ *
150
+ * @returns {number} Delay in milliseconds.
151
+ */
152
+ getRefocusDelay() {
153
+ return _classPrivateFieldGet(this, _refocusDelay);
154
+ }
155
+
156
+ /**
157
+ * Set the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
158
+ * element if the focus mode is set to 'mixed'.
159
+ *
160
+ * @param {number} delay Delay in milliseconds.
161
+ */
162
+ setRefocusDelay(delay) {
163
+ _classPrivateFieldSet(this, _refocusDelay, delay);
164
+ }
165
+
166
+ /**
167
+ * Set the function to be used as the "refocus element" getter. It should return a focusable HTML element.
168
+ *
169
+ * @param {Function} getRefocusElementFunction The refocus element getter.
170
+ */
171
+ setRefocusElementGetter(getRefocusElementFunction) {
172
+ _classPrivateFieldSet(this, _refocusElementGetter, getRefocusElementFunction);
173
+ }
174
+
175
+ /**
176
+ * Get the element to be used when refocusing the browser after a delay in case of the focus mode being 'mixed'.
177
+ *
178
+ * @returns {HTMLTextAreaElement|HTMLElement|undefined}
179
+ */
180
+ getRefocusElement() {
181
+ if (typeof _classPrivateFieldGet(this, _refocusElementGetter) === 'function') {
182
+ return _classPrivateFieldGet(this, _refocusElementGetter).call(this);
183
+ } else {
184
+ var _classPrivateFieldGet2;
185
+ return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Set the browser's focus to the highlighted cell of the last selection.
191
+ *
192
+ * @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
193
+ */
194
+ focusOnHighlightedCell(selectedCell) {
195
+ var _classPrivateFieldGet3;
196
+ const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
197
+ const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
198
+ let elementToBeFocused = _classPrivateFieldGet(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
199
+ if (!(elementToBeFocused instanceof HTMLElement)) {
200
+ elementToBeFocused = currentlySelectedHighlight;
201
+ }
202
+ if (elementToBeFocused && !((_classPrivateFieldGet3 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
203
+ elementToBeFocused.focus({
204
+ preventScroll: true
205
+ });
206
+ }
207
+ }
208
+
209
+ /**
210
+ * Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
211
+ * will be taken from the manager's configuration.
212
+ *
213
+ * @param {number} delay Delay in milliseconds.
214
+ */
215
+ refocusToEditorTextarea() {
216
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _refocusDelay);
217
+ const refocusElement = this.getRefocusElement();
218
+
219
+ // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
220
+ if (_classPrivateFieldGet(this, _hot).getSettings().imeFastEdit && !!refocusElement) {
221
+ _classPrivateFieldGet(this, _hot)._registerTimeout(() => {
222
+ refocusElement.select();
223
+ }, delay);
224
+ }
225
+ }
226
+ }
227
+ function _getCurrentHighlightCoords2() {
228
+ const lastSelectedRange = _classPrivateFieldGet(this, _hot).getSelectedRangeLast();
229
+ return lastSelectedRange.highlight;
230
+ }
231
+ function _getSelectedCell2() {
232
+ const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
233
+ return _classPrivateFieldGet(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
234
+ }
235
+ function _manageFocus2() {
236
+ const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
237
+ const {
238
+ activeElement
239
+ } = _classPrivateFieldGet(this, _hot).rootDocument;
240
+
241
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
242
+ // and resets the `document.activeElement` property. The blurring should happen only when the
243
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
244
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
245
+ if (activeElement && isOutsideInput(activeElement)) {
246
+ activeElement.blur();
247
+ }
248
+ this.focusOnHighlightedCell(selectedCell);
249
+ if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
250
+ _classPrivateFieldGet(this, _hot).addHookOnce('afterSelectionEnd', () => {
251
+ this.refocusToEditorTextarea();
252
+ });
253
+ }
254
+ }
255
+ function _onUpdateSettings2(newSettings) {
256
+ if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
257
+ this.setFocusMode(FOCUS_MODES.MIXED);
258
+ } else if (!newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.CELL) {
259
+ this.setFocusMode(FOCUS_MODES.CELL);
260
+ }
261
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ const A11Y_TABINDEX = val => ['tabindex', val];
5
+ exports.A11Y_TABINDEX = A11Y_TABINDEX;
6
+ const A11Y_TREEGRID = () => ['role', 'treegrid'];
7
+ exports.A11Y_TREEGRID = A11Y_TREEGRID;
8
+ const A11Y_PRESENTATION = () => ['role', 'presentation'];
9
+ exports.A11Y_PRESENTATION = A11Y_PRESENTATION;
10
+ const A11Y_GRIDCELL = () => ['role', 'gridcell'];
11
+ exports.A11Y_GRIDCELL = A11Y_GRIDCELL;
12
+ const A11Y_ROWHEADER = () => ['role', 'rowheader'];
13
+ exports.A11Y_ROWHEADER = A11Y_ROWHEADER;
14
+ const A11Y_COLUMNHEADER = () => ['role', 'columnheader'];
15
+ exports.A11Y_COLUMNHEADER = A11Y_COLUMNHEADER;
16
+ const A11Y_ROW = () => ['role', 'row'];
17
+ exports.A11Y_ROW = A11Y_ROW;
18
+ const A11Y_MENU = () => ['role', 'menu'];
19
+ exports.A11Y_MENU = A11Y_MENU;
20
+ const A11Y_MENU_ITEM = () => ['role', 'menuitem'];
21
+ exports.A11Y_MENU_ITEM = A11Y_MENU_ITEM;
22
+ const A11Y_COMBOBOX = () => ['role', 'combobox'];
23
+ exports.A11Y_COMBOBOX = A11Y_COMBOBOX;
24
+ const A11Y_LISTBOX = () => ['role', 'listbox'];
25
+ exports.A11Y_LISTBOX = A11Y_LISTBOX;
26
+ const A11Y_OPTION = () => ['role', 'option'];
27
+ exports.A11Y_OPTION = A11Y_OPTION;
28
+ const A11Y_CHECKBOX = () => ['role', 'checkbox'];
29
+ exports.A11Y_CHECKBOX = A11Y_CHECKBOX;
30
+ const A11Y_SCOPE_COL = () => ['scope', 'col'];
31
+ exports.A11Y_SCOPE_COL = A11Y_SCOPE_COL;
32
+ const A11Y_SCOPE_ROW = () => ['scope', 'row'];
33
+ exports.A11Y_SCOPE_ROW = A11Y_SCOPE_ROW;
34
+ const A11Y_TEXT = () => ['type', 'text'];
35
+ exports.A11Y_TEXT = A11Y_TEXT;
36
+ const A11Y_LABEL = val => ['aria-label', val];
37
+ exports.A11Y_LABEL = A11Y_LABEL;
38
+ const A11Y_HIDDEN = () => ['aria-hidden', 'true'];
39
+ exports.A11Y_HIDDEN = A11Y_HIDDEN;
40
+ const A11Y_DISABLED = () => ['aria-disabled', 'true'];
41
+ exports.A11Y_DISABLED = A11Y_DISABLED;
42
+ const A11Y_MULTISELECTABLE = () => ['aria-multiselectable', 'true'];
43
+ exports.A11Y_MULTISELECTABLE = A11Y_MULTISELECTABLE;
44
+ const A11Y_HASPOPUP = val => ['aria-haspopup', val];
45
+ exports.A11Y_HASPOPUP = A11Y_HASPOPUP;
46
+ const A11Y_ROWCOUNT = val => ['aria-rowcount', val];
47
+ exports.A11Y_ROWCOUNT = A11Y_ROWCOUNT;
48
+ const A11Y_COLCOUNT = val => ['aria-colcount', val];
49
+ exports.A11Y_COLCOUNT = A11Y_COLCOUNT;
50
+ const A11Y_ROWINDEX = val => ['aria-rowindex', val];
51
+ exports.A11Y_ROWINDEX = A11Y_ROWINDEX;
52
+ const A11Y_COLINDEX = val => ['aria-colindex', val];
53
+ exports.A11Y_COLINDEX = A11Y_COLINDEX;
54
+ const A11Y_EXPANDED = val => ['aria-expanded', val];
55
+ exports.A11Y_EXPANDED = A11Y_EXPANDED;
56
+ const A11Y_SORT = val => ['aria-sort', val];
57
+ exports.A11Y_SORT = A11Y_SORT;
58
+ const A11Y_READONLY = () => ['aria-readonly', 'true'];
59
+ exports.A11Y_READONLY = A11Y_READONLY;
60
+ const A11Y_INVALID = () => ['aria-invalid', 'true'];
61
+ exports.A11Y_INVALID = A11Y_INVALID;
62
+ const A11Y_CHECKED = val => ['aria-checked', val];
63
+ exports.A11Y_CHECKED = A11Y_CHECKED;
64
+ const A11Y_SELECTED = () => ['aria-selected', 'true'];
65
+ exports.A11Y_SELECTED = A11Y_SELECTED;
66
+ const A11Y_AUTOCOMPLETE = () => ['aria-autocomplete', 'list'];
67
+ exports.A11Y_AUTOCOMPLETE = A11Y_AUTOCOMPLETE;
68
+ const A11Y_CONTROLS = val => ['aria-controls', val];
69
+ exports.A11Y_CONTROLS = A11Y_CONTROLS;
70
+ const A11Y_ACTIVEDESCENDANT = val => ['aria-activedescendant', val];
71
+ exports.A11Y_ACTIVEDESCENDANT = A11Y_ACTIVEDESCENDANT;
72
+ const A11Y_LIVE = val => ['aria-live', val];
73
+ exports.A11Y_LIVE = A11Y_LIVE;
74
+ const A11Y_RELEVANT = val => ['aria-relevant', val];
75
+ exports.A11Y_RELEVANT = A11Y_RELEVANT;
76
+ const A11Y_SETSIZE = val => ['aria-setsize', val];
77
+ exports.A11Y_SETSIZE = A11Y_SETSIZE;
78
+ const A11Y_POSINSET = val => ['aria-posinset', val];
79
+ exports.A11Y_POSINSET = A11Y_POSINSET;
@@ -0,0 +1,38 @@
1
+ export const A11Y_TABINDEX = val => ['tabindex', val];
2
+ export const A11Y_TREEGRID = () => ['role', 'treegrid'];
3
+ export const A11Y_PRESENTATION = () => ['role', 'presentation'];
4
+ export const A11Y_GRIDCELL = () => ['role', 'gridcell'];
5
+ export const A11Y_ROWHEADER = () => ['role', 'rowheader'];
6
+ export const A11Y_COLUMNHEADER = () => ['role', 'columnheader'];
7
+ export const A11Y_ROW = () => ['role', 'row'];
8
+ export const A11Y_MENU = () => ['role', 'menu'];
9
+ export const A11Y_MENU_ITEM = () => ['role', 'menuitem'];
10
+ export const A11Y_COMBOBOX = () => ['role', 'combobox'];
11
+ export const A11Y_LISTBOX = () => ['role', 'listbox'];
12
+ export const A11Y_OPTION = () => ['role', 'option'];
13
+ export const A11Y_CHECKBOX = () => ['role', 'checkbox'];
14
+ export const A11Y_SCOPE_COL = () => ['scope', 'col'];
15
+ export const A11Y_SCOPE_ROW = () => ['scope', 'row'];
16
+ export const A11Y_TEXT = () => ['type', 'text'];
17
+ export const A11Y_LABEL = val => ['aria-label', val];
18
+ export const A11Y_HIDDEN = () => ['aria-hidden', 'true'];
19
+ export const A11Y_DISABLED = () => ['aria-disabled', 'true'];
20
+ export const A11Y_MULTISELECTABLE = () => ['aria-multiselectable', 'true'];
21
+ export const A11Y_HASPOPUP = val => ['aria-haspopup', val];
22
+ export const A11Y_ROWCOUNT = val => ['aria-rowcount', val];
23
+ export const A11Y_COLCOUNT = val => ['aria-colcount', val];
24
+ export const A11Y_ROWINDEX = val => ['aria-rowindex', val];
25
+ export const A11Y_COLINDEX = val => ['aria-colindex', val];
26
+ export const A11Y_EXPANDED = val => ['aria-expanded', val];
27
+ export const A11Y_SORT = val => ['aria-sort', val];
28
+ export const A11Y_READONLY = () => ['aria-readonly', 'true'];
29
+ export const A11Y_INVALID = () => ['aria-invalid', 'true'];
30
+ export const A11Y_CHECKED = val => ['aria-checked', val];
31
+ export const A11Y_SELECTED = () => ['aria-selected', 'true'];
32
+ export const A11Y_AUTOCOMPLETE = () => ['aria-autocomplete', 'list'];
33
+ export const A11Y_CONTROLS = val => ['aria-controls', val];
34
+ export const A11Y_ACTIVEDESCENDANT = val => ['aria-activedescendant', val];
35
+ export const A11Y_LIVE = val => ['aria-live', val];
36
+ export const A11Y_RELEVANT = val => ['aria-relevant', val];
37
+ export const A11Y_SETSIZE = val => ['aria-setsize', val];
38
+ export const A11Y_POSINSET = val => ['aria-posinset', val];