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
@@ -3,11 +3,9 @@
3
3
  exports.__esModule = true;
4
4
  var _checkboxEditor = require("../../editors/checkboxEditor");
5
5
  var _checkboxRenderer = require("../../renderers/checkboxRenderer");
6
- const CELL_TYPE = 'checkbox';
7
- exports.CELL_TYPE = CELL_TYPE;
8
- const CheckboxCellType = {
6
+ const CELL_TYPE = exports.CELL_TYPE = 'checkbox';
7
+ const CheckboxCellType = exports.CheckboxCellType = {
9
8
  CELL_TYPE,
10
9
  editor: _checkboxEditor.CheckboxEditor,
11
10
  renderer: _checkboxRenderer.checkboxRenderer
12
- };
13
- exports.CheckboxCellType = CheckboxCellType;
11
+ };
@@ -1,17 +1,17 @@
1
1
  import { CellTypeObject } from '../base';
2
2
  import { DateEditor } from '../../editors/dateEditor';
3
- import { autocompleteRenderer } from '../../renderers/autocompleteRenderer';
3
+ import { dateRenderer } from '../../renderers/dateRenderer';
4
4
  import { dateValidator } from '../../validators/dateValidator';
5
5
 
6
6
  export const CELL_TYPE: 'date';
7
7
  export interface DateCellType extends CellTypeObject {
8
8
  editor: typeof DateEditor;
9
- renderer: typeof autocompleteRenderer;
9
+ renderer: typeof dateRenderer;
10
10
  validator: typeof dateValidator;
11
11
  }
12
12
 
13
13
  export namespace DateCellType {
14
14
  export { DateEditor as editor };
15
- export { autocompleteRenderer as renderer };
15
+ export { dateRenderer as renderer };
16
16
  export { dateValidator as validator };
17
17
  }
@@ -2,15 +2,13 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  var _dateEditor = require("../../editors/dateEditor");
5
- var _autocompleteRenderer = require("../../renderers/autocompleteRenderer");
5
+ var _dateRenderer = require("../../renderers/dateRenderer");
6
6
  var _dateValidator = require("../../validators/dateValidator");
7
- const CELL_TYPE = 'date';
8
- exports.CELL_TYPE = CELL_TYPE;
9
- const DateCellType = {
7
+ const CELL_TYPE = exports.CELL_TYPE = 'date';
8
+ const DateCellType = exports.DateCellType = {
10
9
  CELL_TYPE,
11
10
  editor: _dateEditor.DateEditor,
12
11
  // displays small gray arrow on right side of the cell
13
- renderer: _autocompleteRenderer.autocompleteRenderer,
12
+ renderer: _dateRenderer.dateRenderer,
14
13
  validator: _dateValidator.dateValidator
15
- };
16
- exports.DateCellType = DateCellType;
14
+ };
@@ -1,11 +1,11 @@
1
1
  import { DateEditor } from "../../editors/dateEditor/index.mjs";
2
- import { autocompleteRenderer } from "../../renderers/autocompleteRenderer/index.mjs";
2
+ import { dateRenderer } from "../../renderers/dateRenderer/index.mjs";
3
3
  import { dateValidator } from "../../validators/dateValidator/index.mjs";
4
4
  export const CELL_TYPE = 'date';
5
5
  export const DateCellType = {
6
6
  CELL_TYPE,
7
7
  editor: DateEditor,
8
8
  // displays small gray arrow on right side of the cell
9
- renderer: autocompleteRenderer,
9
+ renderer: dateRenderer,
10
10
  validator: dateValidator
11
11
  };
@@ -4,13 +4,11 @@ exports.__esModule = true;
4
4
  var _dropdownEditor = require("../../editors/dropdownEditor");
5
5
  var _autocompleteRenderer = require("../../renderers/autocompleteRenderer");
6
6
  var _autocompleteValidator = require("../../validators/autocompleteValidator");
7
- const CELL_TYPE = 'dropdown';
8
- exports.CELL_TYPE = CELL_TYPE;
9
- const DropdownCellType = {
7
+ const CELL_TYPE = exports.CELL_TYPE = 'dropdown';
8
+ const DropdownCellType = exports.DropdownCellType = {
10
9
  CELL_TYPE,
11
10
  editor: _dropdownEditor.DropdownEditor,
12
11
  // displays small gray arrow on right side of the cell
13
12
  renderer: _autocompleteRenderer.autocompleteRenderer,
14
13
  validator: _autocompleteValidator.autocompleteValidator
15
- };
16
- exports.DropdownCellType = DropdownCellType;
14
+ };
@@ -1,14 +1,14 @@
1
1
  import { CellTypeObject } from '../base';
2
2
  import { HandsontableEditor } from '../../editors/handsontableEditor';
3
- import { autocompleteRenderer } from '../../renderers/autocompleteRenderer';
3
+ import { handsontableRenderer } from '../../renderers/handsontableRenderer';
4
4
 
5
5
  export const CELL_TYPE: 'handsontable';
6
6
  export interface HandsontableCellType extends CellTypeObject {
7
7
  editor: typeof HandsontableEditor;
8
- renderer: typeof autocompleteRenderer;
8
+ renderer: typeof handsontableRenderer;
9
9
  }
10
10
 
11
11
  export namespace HandsontableCellType {
12
12
  export { HandsontableEditor as editor };
13
- export { autocompleteRenderer as renderer };
13
+ export { handsontableRenderer as renderer };
14
14
  }
@@ -2,13 +2,11 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  var _handsontableEditor = require("../../editors/handsontableEditor");
5
- var _autocompleteRenderer = require("../../renderers/autocompleteRenderer");
6
- const CELL_TYPE = 'handsontable';
7
- exports.CELL_TYPE = CELL_TYPE;
8
- const HandsontableCellType = {
5
+ var _handsontableRenderer = require("../../renderers/handsontableRenderer");
6
+ const CELL_TYPE = exports.CELL_TYPE = 'handsontable';
7
+ const HandsontableCellType = exports.HandsontableCellType = {
9
8
  CELL_TYPE,
10
9
  editor: _handsontableEditor.HandsontableEditor,
11
10
  // displays small gray arrow on right side of the cell
12
- renderer: _autocompleteRenderer.autocompleteRenderer
13
- };
14
- exports.HandsontableCellType = HandsontableCellType;
11
+ renderer: _handsontableRenderer.handsontableRenderer
12
+ };
@@ -1,9 +1,9 @@
1
1
  import { HandsontableEditor } from "../../editors/handsontableEditor/index.mjs";
2
- import { autocompleteRenderer } from "../../renderers/autocompleteRenderer/index.mjs";
2
+ import { handsontableRenderer } from "../../renderers/handsontableRenderer/index.mjs";
3
3
  export const CELL_TYPE = 'handsontable';
4
4
  export const HandsontableCellType = {
5
5
  CELL_TYPE,
6
6
  editor: HandsontableEditor,
7
7
  // displays small gray arrow on right side of the cell
8
- renderer: autocompleteRenderer
8
+ renderer: handsontableRenderer
9
9
  };
@@ -5,6 +5,7 @@ import { DropdownCellType, CELL_TYPE as DROPDOWN_TYPE } from './dropdownType';
5
5
  import { HandsontableCellType, CELL_TYPE as HANDSONTABLE_TYPE } from './handsontableType';
6
6
  import { NumericCellType, CELL_TYPE as NUMERIC_TYPE } from './numericType';
7
7
  import { PasswordCellType, CELL_TYPE as PASSWORD_TYPE } from './passwordType';
8
+ import { SelectCellType, CELL_TYPE as SELECT_TYPE } from './selectType';
8
9
  import { TextCellType, CELL_TYPE as TEXT_TYPE } from './textType';
9
10
  import { TimeCellType, CELL_TYPE as TIME_TYPE } from './timeType';
10
11
 
@@ -18,6 +19,7 @@ export interface CellTypes {
18
19
  handsontable: typeof HandsontableCellType;
19
20
  numeric: typeof NumericCellType;
20
21
  password: typeof PasswordCellType;
22
+ select: typeof SelectCellType;
21
23
  text: typeof TextCellType;
22
24
  time: typeof TimeCellType;
23
25
  }
@@ -35,6 +37,7 @@ export {
35
37
  HandsontableCellType, HANDSONTABLE_TYPE,
36
38
  NumericCellType, NUMERIC_TYPE,
37
39
  PasswordCellType, PASSWORD_TYPE,
40
+ SelectCellType, SELECT_TYPE,
38
41
  TextCellType, TEXT_TYPE,
39
42
  TimeCellType, TIME_TYPE
40
43
  };
@@ -23,6 +23,9 @@ exports.NUMERIC_TYPE = _numericType.CELL_TYPE;
23
23
  var _passwordType = require("./passwordType");
24
24
  exports.PasswordCellType = _passwordType.PasswordCellType;
25
25
  exports.PASSWORD_TYPE = _passwordType.CELL_TYPE;
26
+ var _selectType = require("./selectType");
27
+ exports.SelectCellType = _selectType.SelectCellType;
28
+ exports.SELECT_TYPE = _selectType.CELL_TYPE;
26
29
  var _textType = require("./textType");
27
30
  exports.TextCellType = _textType.TextCellType;
28
31
  exports.TEXT_TYPE = _textType.CELL_TYPE;
@@ -46,6 +49,7 @@ function registerAllCellTypes() {
46
49
  (0, _registry.registerCellType)(_handsontableType.HandsontableCellType);
47
50
  (0, _registry.registerCellType)(_numericType.NumericCellType);
48
51
  (0, _registry.registerCellType)(_passwordType.PasswordCellType);
52
+ (0, _registry.registerCellType)(_selectType.SelectCellType);
49
53
  (0, _registry.registerCellType)(_textType.TextCellType);
50
54
  (0, _registry.registerCellType)(_timeType.TimeCellType);
51
55
  }
@@ -5,6 +5,7 @@ import { DropdownCellType, CELL_TYPE as DROPDOWN_TYPE } from "./dropdownType/ind
5
5
  import { HandsontableCellType, CELL_TYPE as HANDSONTABLE_TYPE } from "./handsontableType/index.mjs";
6
6
  import { NumericCellType, CELL_TYPE as NUMERIC_TYPE } from "./numericType/index.mjs";
7
7
  import { PasswordCellType, CELL_TYPE as PASSWORD_TYPE } from "./passwordType/index.mjs";
8
+ import { SelectCellType, CELL_TYPE as SELECT_TYPE } from "./selectType/index.mjs";
8
9
  import { TextCellType, CELL_TYPE as TEXT_TYPE } from "./textType/index.mjs";
9
10
  import { TimeCellType, CELL_TYPE as TIME_TYPE } from "./timeType/index.mjs";
10
11
  import { registerCellType } from "./registry.mjs";
@@ -19,8 +20,9 @@ export function registerAllCellTypes() {
19
20
  registerCellType(HandsontableCellType);
20
21
  registerCellType(NumericCellType);
21
22
  registerCellType(PasswordCellType);
23
+ registerCellType(SelectCellType);
22
24
  registerCellType(TextCellType);
23
25
  registerCellType(TimeCellType);
24
26
  }
25
- export { AutocompleteCellType, AUTOCOMPLETE_TYPE, CheckboxCellType, CHECKBOX_TYPE, DateCellType, DATE_TYPE, DropdownCellType, DROPDOWN_TYPE, HandsontableCellType, HANDSONTABLE_TYPE, NumericCellType, NUMERIC_TYPE, PasswordCellType, PASSWORD_TYPE, TextCellType, TEXT_TYPE, TimeCellType, TIME_TYPE };
27
+ export { AutocompleteCellType, AUTOCOMPLETE_TYPE, CheckboxCellType, CHECKBOX_TYPE, DateCellType, DATE_TYPE, DropdownCellType, DROPDOWN_TYPE, HandsontableCellType, HANDSONTABLE_TYPE, NumericCellType, NUMERIC_TYPE, PasswordCellType, PASSWORD_TYPE, SelectCellType, SELECT_TYPE, TextCellType, TEXT_TYPE, TimeCellType, TIME_TYPE };
26
28
  export { getCellType, getRegisteredCellTypeNames, getRegisteredCellTypes, hasCellType, registerCellType } from "./registry.mjs";
@@ -4,13 +4,11 @@ exports.__esModule = true;
4
4
  var _numericEditor = require("../../editors/numericEditor");
5
5
  var _numericRenderer = require("../../renderers/numericRenderer");
6
6
  var _numericValidator = require("../../validators/numericValidator");
7
- const CELL_TYPE = 'numeric';
8
- exports.CELL_TYPE = CELL_TYPE;
9
- const NumericCellType = {
7
+ const CELL_TYPE = exports.CELL_TYPE = 'numeric';
8
+ const NumericCellType = exports.NumericCellType = {
10
9
  CELL_TYPE,
11
10
  editor: _numericEditor.NumericEditor,
12
11
  renderer: _numericRenderer.numericRenderer,
13
12
  validator: _numericValidator.numericValidator,
14
13
  dataType: 'number'
15
- };
16
- exports.NumericCellType = NumericCellType;
14
+ };
@@ -3,12 +3,10 @@
3
3
  exports.__esModule = true;
4
4
  var _passwordEditor = require("../../editors/passwordEditor");
5
5
  var _passwordRenderer = require("../../renderers/passwordRenderer");
6
- const CELL_TYPE = 'password';
7
- exports.CELL_TYPE = CELL_TYPE;
8
- const PasswordCellType = {
6
+ const CELL_TYPE = exports.CELL_TYPE = 'password';
7
+ const PasswordCellType = exports.PasswordCellType = {
9
8
  CELL_TYPE,
10
9
  editor: _passwordEditor.PasswordEditor,
11
10
  renderer: _passwordRenderer.passwordRenderer,
12
11
  copyable: false
13
- };
14
- exports.PasswordCellType = PasswordCellType;
12
+ };
@@ -0,0 +1 @@
1
+ export * from './selectType';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _selectType = require("./selectType");
5
+ exports.CELL_TYPE = _selectType.CELL_TYPE;
6
+ exports.SelectCellType = _selectType.SelectCellType;
@@ -0,0 +1 @@
1
+ export { CELL_TYPE, SelectCellType } from "./selectType.mjs";
@@ -0,0 +1,14 @@
1
+ import { CellTypeObject } from '../base';
2
+ import { SelectEditor } from '../../editors/selectEditor';
3
+ import { selectRenderer } from '../../renderers/selectRenderer';
4
+
5
+ export const CELL_TYPE: 'select';
6
+ export interface SelectCellType extends CellTypeObject {
7
+ editor: typeof SelectEditor;
8
+ renderer: typeof selectRenderer;
9
+ }
10
+
11
+ export namespace SelectCellType {
12
+ export { SelectEditor as editor };
13
+ export { selectRenderer as renderer };
14
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _selectEditor = require("../../editors/selectEditor");
5
+ var _selectRenderer = require("../../renderers/selectRenderer");
6
+ const CELL_TYPE = exports.CELL_TYPE = 'select';
7
+ const SelectCellType = exports.SelectCellType = {
8
+ CELL_TYPE,
9
+ editor: _selectEditor.SelectEditor,
10
+ renderer: _selectRenderer.selectRenderer
11
+ };
@@ -0,0 +1,8 @@
1
+ import { SelectEditor } from "../../editors/selectEditor/index.mjs";
2
+ import { selectRenderer } from "../../renderers/selectRenderer/index.mjs";
3
+ export const CELL_TYPE = 'select';
4
+ export const SelectCellType = {
5
+ CELL_TYPE,
6
+ editor: SelectEditor,
7
+ renderer: selectRenderer
8
+ };
@@ -3,11 +3,9 @@
3
3
  exports.__esModule = true;
4
4
  var _textEditor = require("../../editors/textEditor");
5
5
  var _textRenderer = require("../../renderers/textRenderer");
6
- const CELL_TYPE = 'text';
7
- exports.CELL_TYPE = CELL_TYPE;
8
- const TextCellType = {
6
+ const CELL_TYPE = exports.CELL_TYPE = 'text';
7
+ const TextCellType = exports.TextCellType = {
9
8
  CELL_TYPE,
10
9
  editor: _textEditor.TextEditor,
11
10
  renderer: _textRenderer.textRenderer
12
- };
13
- exports.TextCellType = TextCellType;
11
+ };
@@ -4,12 +4,10 @@ exports.__esModule = true;
4
4
  var _timeEditor = require("../../editors/timeEditor");
5
5
  var _timeRenderer = require("../../renderers/timeRenderer");
6
6
  var _timeValidator = require("../../validators/timeValidator");
7
- const CELL_TYPE = 'time';
8
- exports.CELL_TYPE = CELL_TYPE;
9
- const TimeCellType = {
7
+ const CELL_TYPE = exports.CELL_TYPE = 'time';
8
+ const TimeCellType = exports.TimeCellType = {
10
9
  CELL_TYPE,
11
10
  editor: _timeEditor.TimeEditor,
12
11
  renderer: _timeRenderer.timeRenderer,
13
12
  validator: _timeValidator.timeValidator
14
- };
15
- exports.TimeCellType = TimeCellType;
13
+ };
package/common.d.ts CHANGED
@@ -49,7 +49,7 @@ export interface RangeType {
49
49
  /**
50
50
  * The default sources for which the table triggers hooks.
51
51
  */
52
- export type ChangeSource = 'auto' | 'edit' | 'loadData' | 'populateFromArray' | 'spliceCol' |
52
+ export type ChangeSource = 'auto' | 'edit' | 'loadData' | 'updateData' | 'populateFromArray' | 'spliceCol' |
53
53
  'spliceRow' | 'timeValidate' | 'dateValidate' | 'validateCells' |
54
54
  'Autofill.fill' | 'ContextMenu.clearColumn' | 'ContextMenu.columnLeft' |
55
55
  'ContextMenu.columnRight' | 'ContextMenu.removeColumn' |
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.installFocusDetector = installFocusDetector;
5
+ var _element = require("../../helpers/dom/element");
6
+ var _a11y = require("../../helpers/a11y");
7
+ /**
8
+ * Installs a focus detector module. The module appends two input elements into the DOM side by side.
9
+ * When the first input is focused, then it means that a user entered to the component using the TAB key
10
+ * from the element above. When the second input is focused, a user enters to the component from
11
+ * the element below the table. Each action, once detected, triggers the specific hook.
12
+ *
13
+ * @param {Handsontable} hot The Handsontable instance.
14
+ * @param {{ onFocusFromTop: Function, onFocusFromBottom: Function }} hooks An object with defined callbacks to call.
15
+ * @returns {{ activate: Function, deactivate: Function }}
16
+ */
17
+ function installFocusDetector(hot) {
18
+ let hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
19
+ const rootElement = hot.rootElement;
20
+ const inputTrapTop = createInputElement(hot);
21
+ const inputTrapBottom = createInputElement(hot);
22
+ inputTrapTop.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromTop());
23
+ inputTrapBottom.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromBottom());
24
+ rootElement.firstChild.before(inputTrapTop);
25
+ rootElement.lastChild.after(inputTrapBottom);
26
+ return {
27
+ /**
28
+ * Activates the detector by resetting the tabIndex of the input elements.
29
+ */
30
+ activate() {
31
+ hot._registerTimeout(() => {
32
+ inputTrapTop.tabIndex = 0;
33
+ inputTrapBottom.tabIndex = 0;
34
+ }, 10);
35
+ },
36
+ /**
37
+ * Deactivates the detector by setting tabIndex to -1.
38
+ */
39
+ deactivate() {
40
+ hot._registerTimeout(() => {
41
+ inputTrapTop.tabIndex = -1;
42
+ inputTrapBottom.tabIndex = -1;
43
+ }, 10);
44
+ }
45
+ };
46
+ }
47
+
48
+ /**
49
+ * Creates a new HTML input element.
50
+ *
51
+ * @param {Handsontable} hot The Handsontable instance.
52
+ * @returns {HTMLInputElement}
53
+ */
54
+ function createInputElement(hot) {
55
+ const rootDocument = hot.rootDocument;
56
+ const input = rootDocument.createElement('input');
57
+ input.type = 'text';
58
+ input.classList.add('htFocusCatcher');
59
+ if (hot.getSettings().ariaTags) {
60
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
61
+ }
62
+ return input;
63
+ }
@@ -0,0 +1,59 @@
1
+ import { setAttribute } from "../../helpers/dom/element.mjs";
2
+ import { A11Y_PRESENTATION } from "../../helpers/a11y.mjs";
3
+ /**
4
+ * Installs a focus detector module. The module appends two input elements into the DOM side by side.
5
+ * When the first input is focused, then it means that a user entered to the component using the TAB key
6
+ * from the element above. When the second input is focused, a user enters to the component from
7
+ * the element below the table. Each action, once detected, triggers the specific hook.
8
+ *
9
+ * @param {Handsontable} hot The Handsontable instance.
10
+ * @param {{ onFocusFromTop: Function, onFocusFromBottom: Function }} hooks An object with defined callbacks to call.
11
+ * @returns {{ activate: Function, deactivate: Function }}
12
+ */
13
+ export function installFocusDetector(hot) {
14
+ let hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15
+ const rootElement = hot.rootElement;
16
+ const inputTrapTop = createInputElement(hot);
17
+ const inputTrapBottom = createInputElement(hot);
18
+ inputTrapTop.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromTop());
19
+ inputTrapBottom.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromBottom());
20
+ rootElement.firstChild.before(inputTrapTop);
21
+ rootElement.lastChild.after(inputTrapBottom);
22
+ return {
23
+ /**
24
+ * Activates the detector by resetting the tabIndex of the input elements.
25
+ */
26
+ activate() {
27
+ hot._registerTimeout(() => {
28
+ inputTrapTop.tabIndex = 0;
29
+ inputTrapBottom.tabIndex = 0;
30
+ }, 10);
31
+ },
32
+ /**
33
+ * Deactivates the detector by setting tabIndex to -1.
34
+ */
35
+ deactivate() {
36
+ hot._registerTimeout(() => {
37
+ inputTrapTop.tabIndex = -1;
38
+ inputTrapBottom.tabIndex = -1;
39
+ }, 10);
40
+ }
41
+ };
42
+ }
43
+
44
+ /**
45
+ * Creates a new HTML input element.
46
+ *
47
+ * @param {Handsontable} hot The Handsontable instance.
48
+ * @returns {HTMLInputElement}
49
+ */
50
+ function createInputElement(hot) {
51
+ const rootDocument = hot.rootDocument;
52
+ const input = rootDocument.createElement('input');
53
+ input.type = 'text';
54
+ input.classList.add('htFocusCatcher');
55
+ if (hot.getSettings().ariaTags) {
56
+ setAttribute(input, [A11Y_PRESENTATION()]);
57
+ }
58
+ return input;
59
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.installFocusCatcher = installFocusCatcher;
5
+ var _shortcutContexts = require("../../shortcutContexts");
6
+ var _focusDetector = require("./focusDetector");
7
+ /**
8
+ * Installs a focus catcher module. The module observes when the table is focused and depending on
9
+ * from the which side it was focused on it selects a specified cell or releases the TAB navigation
10
+ * to the browser.
11
+ *
12
+ * @param {Core} hot The Handsontable instance.
13
+ */
14
+ function installFocusCatcher(hot) {
15
+ let recentlyAddedFocusCoords;
16
+ const {
17
+ activate,
18
+ deactivate
19
+ } = (0, _focusDetector.installFocusDetector)(hot, {
20
+ onFocusFromTop() {
21
+ var _recentlyAddedFocusCo;
22
+ const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
23
+ if (mostTopStartCoords) {
24
+ hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
25
+ hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
26
+ }
27
+ hot.listen();
28
+ },
29
+ onFocusFromBottom() {
30
+ var _recentlyAddedFocusCo2;
31
+ const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
32
+ if (mostBottomEndCoords) {
33
+ hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
34
+ hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
35
+ }
36
+ hot.listen();
37
+ }
38
+ });
39
+ const rowWrapState = {
40
+ wrapped: false,
41
+ flipped: false
42
+ };
43
+ hot.addHook('afterListen', () => deactivate());
44
+ hot.addHook('afterUnlisten', () => activate());
45
+ hot.addHook('afterSelection', () => {
46
+ var _hot$getSelectedRange;
47
+ recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
48
+ });
49
+ hot.addHook('beforeRowWrap', (isWrapEnabled, newCoords, isFlipped) => {
50
+ rowWrapState.wrapped = true;
51
+ rowWrapState.flipped = isFlipped;
52
+ });
53
+
54
+ /**
55
+ * Unselects the cell and deactivates the table.
56
+ */
57
+ function deactivateTable() {
58
+ rowWrapState.wrapped = false;
59
+ rowWrapState.flipped = false;
60
+ hot.deselectCell();
61
+ hot.unlisten();
62
+ }
63
+ hot.getShortcutManager().getContext('grid').addShortcut({
64
+ keys: [['Tab'], ['Shift', 'Tab']],
65
+ callback: event => {
66
+ const {
67
+ disableTabNavigation,
68
+ autoWrapRow
69
+ } = hot.getSettings();
70
+ if (disableTabNavigation || !hot.selection.isSelected() || autoWrapRow && rowWrapState.wrapped && rowWrapState.flipped || !autoWrapRow && rowWrapState.wrapped) {
71
+ if (autoWrapRow && rowWrapState.wrapped && rowWrapState.flipped) {
72
+ recentlyAddedFocusCoords = event.shiftKey ? getMostTopStartPosition(hot) : getMostBottomEndPosition(hot);
73
+ }
74
+ deactivateTable();
75
+ return false;
76
+ }
77
+
78
+ // if the selection is still within the table's range then prevent default action
79
+ event.preventDefault();
80
+ },
81
+ runOnlyIf: () => !hot.getSettings().minSpareCols,
82
+ preventDefault: false,
83
+ stopPropagation: false,
84
+ position: 'after',
85
+ relativeToGroup: _shortcutContexts.GRID_GROUP,
86
+ group: 'focusCatcher'
87
+ });
88
+ }
89
+
90
+ /**
91
+ * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
92
+ *
93
+ * @param {Core} hot The Handsontable instance.
94
+ * @returns {CellCoords|null}
95
+ */
96
+ function getMostTopStartPosition(hot) {
97
+ const {
98
+ rowIndexMapper,
99
+ columnIndexMapper
100
+ } = hot;
101
+ const {
102
+ navigableHeaders
103
+ } = hot.getSettings();
104
+ let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
105
+ let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
106
+ if (topRow === 0) {
107
+ topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
108
+ }
109
+ if (startColumn === 0) {
110
+ startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
111
+ }
112
+ if (topRow === null || startColumn === null) {
113
+ return null;
114
+ }
115
+ return hot._createCellCoords(topRow, startColumn);
116
+ }
117
+
118
+ /**
119
+ * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
120
+ *
121
+ * @param {Core} hot The Handsontable instance.
122
+ * @returns {CellCoords|null}
123
+ */
124
+ function getMostBottomEndPosition(hot) {
125
+ var _rowIndexMapper$getVi, _columnIndexMapper$ge;
126
+ const {
127
+ rowIndexMapper,
128
+ columnIndexMapper
129
+ } = hot;
130
+ const {
131
+ navigableHeaders
132
+ } = hot.getSettings();
133
+ let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
134
+ let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
135
+ if (bottomRow < 0) {
136
+ if (!navigableHeaders || hot.countColHeaders() === 0) {
137
+ return null;
138
+ }
139
+ bottomRow = -1;
140
+ }
141
+ if (endColumn < 0) {
142
+ if (!navigableHeaders || hot.countColHeaders() === 0) {
143
+ return null;
144
+ }
145
+ endColumn = -1;
146
+ }
147
+ return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
148
+ }