handsontable 14.2.0 → 14.3.0-next-3fa6b18-20240410

Sign up to get free protection for your applications and to get access to all the features.
Files changed (469) hide show
  1. package/3rdparty/walkontable/src/calculator/renderAllColumns.js +1 -1
  2. package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
  3. package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
  4. package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
  5. package/3rdparty/walkontable/src/calculator/viewportColumns.js +13 -18
  6. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +13 -18
  7. package/3rdparty/walkontable/src/calculator/viewportRows.js +11 -16
  8. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +11 -16
  9. package/3rdparty/walkontable/src/cell/coords.js +13 -18
  10. package/3rdparty/walkontable/src/cell/coords.mjs +13 -18
  11. package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
  12. package/3rdparty/walkontable/src/cell/range.js +42 -30
  13. package/3rdparty/walkontable/src/cell/range.mjs +42 -30
  14. package/3rdparty/walkontable/src/core/_base.js +2 -2
  15. package/3rdparty/walkontable/src/core/_base.mjs +2 -2
  16. package/3rdparty/walkontable/src/core/clone.js +1 -1
  17. package/3rdparty/walkontable/src/core/clone.mjs +1 -1
  18. package/3rdparty/walkontable/src/event.js +72 -104
  19. package/3rdparty/walkontable/src/event.mjs +72 -104
  20. package/3rdparty/walkontable/src/filter/column.js +1 -1
  21. package/3rdparty/walkontable/src/filter/column.mjs +1 -1
  22. package/3rdparty/walkontable/src/filter/row.js +1 -1
  23. package/3rdparty/walkontable/src/filter/row.mjs +1 -1
  24. package/3rdparty/walkontable/src/index.js +1 -1
  25. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  26. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  27. package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
  28. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  29. package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
  30. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
  31. package/3rdparty/walkontable/src/overlay/top.js +12 -1
  32. package/3rdparty/walkontable/src/overlay/top.mjs +13 -2
  33. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +1 -1
  34. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
  35. package/3rdparty/walkontable/src/overlays.js +47 -5
  36. package/3rdparty/walkontable/src/overlays.mjs +47 -5
  37. package/3rdparty/walkontable/src/renderer/_base.js +1 -1
  38. package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
  39. package/3rdparty/walkontable/src/renderer/cells.js +1 -1
  40. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
  41. package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -1
  42. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
  43. package/3rdparty/walkontable/src/renderer/rows.js +1 -1
  44. package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
  45. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  46. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  47. package/3rdparty/walkontable/src/scroll.js +16 -18
  48. package/3rdparty/walkontable/src/scroll.mjs +16 -18
  49. package/3rdparty/walkontable/src/selection/manager.js +48 -69
  50. package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
  51. package/3rdparty/walkontable/src/selection/scanner.js +33 -42
  52. package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
  53. package/3rdparty/walkontable/src/settings.js +1 -1
  54. package/3rdparty/walkontable/src/settings.mjs +1 -1
  55. package/3rdparty/walkontable/src/table.js +1 -1
  56. package/3rdparty/walkontable/src/table.mjs +1 -1
  57. package/3rdparty/walkontable/src/utils/column.js +1 -1
  58. package/3rdparty/walkontable/src/utils/column.mjs +1 -1
  59. package/3rdparty/walkontable/src/utils/columnStretching.js +28 -45
  60. package/3rdparty/walkontable/src/utils/columnStretching.mjs +28 -45
  61. package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
  62. package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
  63. package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
  64. package/3rdparty/walkontable/src/utils/orderView/view.mjs +2 -2
  65. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  66. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  67. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +1 -1
  68. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
  69. package/3rdparty/walkontable/src/utils/row.js +1 -1
  70. package/3rdparty/walkontable/src/utils/row.mjs +1 -1
  71. package/CHANGELOG.md +20 -0
  72. package/base.js +2 -2
  73. package/base.mjs +2 -2
  74. package/core/viewportScroll/index.js +4 -1
  75. package/core/viewportScroll/index.mjs +4 -1
  76. package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
  77. package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
  78. package/core.d.ts +4 -3
  79. package/core.js +98 -43
  80. package/core.mjs +98 -43
  81. package/dataMap/dataMap.js +1 -1
  82. package/dataMap/dataMap.mjs +1 -1
  83. package/dataMap/dataSource.js +2 -2
  84. package/dataMap/dataSource.mjs +2 -2
  85. package/dataMap/metaManager/lazyFactoryMap.js +3 -5
  86. package/dataMap/metaManager/lazyFactoryMap.mjs +2 -4
  87. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
  88. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -2
  89. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
  90. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
  91. package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
  92. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  93. package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
  94. package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
  95. package/dataMap/metaManager/metaSchema.js +272 -272
  96. package/dataMap/metaManager/metaSchema.mjs +272 -272
  97. package/dataMap/metaManager/mods/dynamicCellMeta.js +1 -1
  98. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  99. package/dataMap/metaManager/mods/extendMetaProperties.js +1 -1
  100. package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -1
  101. package/dataMap/replaceData.js +1 -1
  102. package/dataMap/replaceData.mjs +1 -1
  103. package/dist/handsontable.css +4 -4
  104. package/dist/handsontable.full.css +4 -4
  105. package/dist/handsontable.full.js +9814 -10020
  106. package/dist/handsontable.full.min.css +3 -3
  107. package/dist/handsontable.full.min.js +292 -292
  108. package/dist/handsontable.js +7484 -7056
  109. package/dist/handsontable.min.css +3 -3
  110. package/dist/handsontable.min.js +25 -25
  111. package/dist/languages/all.min.js +1 -1
  112. package/dist/languages/ar-AR.min.js +1 -1
  113. package/dist/languages/cs-CZ.min.js +1 -1
  114. package/dist/languages/de-CH.min.js +1 -1
  115. package/dist/languages/de-DE.min.js +1 -1
  116. package/dist/languages/en-US.min.js +1 -1
  117. package/dist/languages/es-MX.min.js +1 -1
  118. package/dist/languages/fr-FR.min.js +1 -1
  119. package/dist/languages/hr-HR.min.js +1 -1
  120. package/dist/languages/it-IT.min.js +1 -1
  121. package/dist/languages/ja-JP.min.js +1 -1
  122. package/dist/languages/ko-KR.min.js +1 -1
  123. package/dist/languages/lv-LV.min.js +1 -1
  124. package/dist/languages/nb-NO.min.js +1 -1
  125. package/dist/languages/nl-NL.min.js +1 -1
  126. package/dist/languages/pl-PL.min.js +1 -1
  127. package/dist/languages/pt-BR.min.js +1 -1
  128. package/dist/languages/ru-RU.min.js +1 -1
  129. package/dist/languages/sr-SP.min.js +1 -1
  130. package/dist/languages/zh-CN.min.js +1 -1
  131. package/dist/languages/zh-TW.min.js +1 -1
  132. package/editorManager.js +26 -24
  133. package/editorManager.mjs +26 -24
  134. package/editors/autocompleteEditor/autocompleteEditor.js +7 -11
  135. package/editors/autocompleteEditor/autocompleteEditor.mjs +7 -11
  136. package/editors/baseEditor/baseEditor.js +1 -1
  137. package/editors/baseEditor/baseEditor.mjs +1 -1
  138. package/editors/dateEditor/dateEditor.js +49 -11
  139. package/editors/dateEditor/dateEditor.mjs +49 -11
  140. package/editors/selectEditor/selectEditor.js +20 -19
  141. package/editors/selectEditor/selectEditor.mjs +20 -19
  142. package/editors/textEditor/textEditor.js +1 -1
  143. package/editors/textEditor/textEditor.mjs +1 -1
  144. package/eventManager.js +2 -2
  145. package/eventManager.mjs +2 -2
  146. package/focusManager.js +64 -82
  147. package/focusManager.mjs +64 -82
  148. package/helpers/dom/element.js +23 -1
  149. package/helpers/dom/element.mjs +21 -1
  150. package/helpers/mixed.js +2 -2
  151. package/helpers/mixed.mjs +2 -2
  152. package/helpers/object.js +2 -2
  153. package/helpers/object.mjs +2 -2
  154. package/i18n/languages/ar-AR.d.ts +5 -0
  155. package/i18n/languages/ar-AR.js +1 -1
  156. package/i18n/languages/cs-CZ.d.ts +5 -0
  157. package/i18n/languages/cs-CZ.js +1 -1
  158. package/i18n/languages/de-CH.js +1 -1
  159. package/i18n/languages/de-DE.js +1 -1
  160. package/i18n/languages/en-US.js +1 -1
  161. package/i18n/languages/es-MX.js +1 -1
  162. package/i18n/languages/fr-FR.js +1 -1
  163. package/i18n/languages/hr-HR.d.ts +5 -0
  164. package/i18n/languages/hr-HR.js +1 -1
  165. package/i18n/languages/it-IT.js +1 -1
  166. package/i18n/languages/ja-JP.js +1 -1
  167. package/i18n/languages/ko-KR.js +1 -1
  168. package/i18n/languages/lv-LV.js +1 -1
  169. package/i18n/languages/nb-NO.js +1 -1
  170. package/i18n/languages/nl-NL.js +1 -1
  171. package/i18n/languages/pl-PL.js +1 -1
  172. package/i18n/languages/pt-BR.js +1 -1
  173. package/i18n/languages/ru-RU.js +1 -1
  174. package/i18n/languages/sr-SP.d.ts +5 -0
  175. package/i18n/languages/sr-SP.js +1 -1
  176. package/i18n/languages/zh-CN.js +1 -1
  177. package/i18n/languages/zh-TW.js +1 -1
  178. package/i18n/registry.js +1 -1
  179. package/index.d.ts +10 -0
  180. package/index.js +1 -1
  181. package/package.json +14 -10
  182. package/pluginHooks.d.ts +4 -3
  183. package/pluginHooks.js +143 -82
  184. package/pluginHooks.mjs +143 -82
  185. package/plugins/autoColumnSize/autoColumnSize.js +50 -66
  186. package/plugins/autoColumnSize/autoColumnSize.mjs +50 -66
  187. package/plugins/autoRowSize/autoRowSize.js +29 -35
  188. package/plugins/autoRowSize/autoRowSize.mjs +29 -35
  189. package/plugins/autofill/autofill.js +31 -39
  190. package/plugins/autofill/autofill.mjs +31 -39
  191. package/plugins/base/base.js +13 -18
  192. package/plugins/base/base.mjs +13 -18
  193. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -6
  194. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +6 -6
  195. package/plugins/collapsibleColumns/collapsibleColumns.js +60 -51
  196. package/plugins/collapsibleColumns/collapsibleColumns.mjs +60 -51
  197. package/plugins/columnSorting/columnSorting.js +50 -46
  198. package/plugins/columnSorting/columnSorting.mjs +50 -46
  199. package/plugins/columnSorting/columnStatesManager.js +1 -1
  200. package/plugins/columnSorting/columnStatesManager.mjs +1 -1
  201. package/plugins/columnSummary/columnSummary.js +36 -40
  202. package/plugins/columnSummary/columnSummary.mjs +36 -40
  203. package/plugins/columnSummary/endpoints.js +1 -1
  204. package/plugins/columnSummary/endpoints.mjs +1 -1
  205. package/plugins/comments/commentEditor.js +1 -1
  206. package/plugins/comments/commentEditor.mjs +1 -1
  207. package/plugins/comments/comments.js +117 -159
  208. package/plugins/comments/comments.mjs +117 -159
  209. package/plugins/comments/contextMenuItem/addEditComment.js +1 -1
  210. package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -1
  211. package/plugins/comments/contextMenuItem/removeComment.js +1 -1
  212. package/plugins/comments/displaySwitch.js +1 -1
  213. package/plugins/comments/displaySwitch.mjs +1 -1
  214. package/plugins/contextMenu/commandExecutor.js +1 -1
  215. package/plugins/contextMenu/commandExecutor.mjs +1 -1
  216. package/plugins/contextMenu/contextMenu.js +24 -30
  217. package/plugins/contextMenu/contextMenu.mjs +24 -30
  218. package/plugins/contextMenu/itemsFactory.js +2 -2
  219. package/plugins/contextMenu/itemsFactory.mjs +2 -2
  220. package/plugins/contextMenu/menu/cursor.js +1 -1
  221. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  222. package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
  223. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
  224. package/plugins/contextMenu/menu/menu.js +14 -22
  225. package/plugins/contextMenu/menu/menu.mjs +14 -22
  226. package/plugins/contextMenu/menu/positioner.js +41 -58
  227. package/plugins/contextMenu/menu/positioner.mjs +41 -58
  228. package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
  229. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  230. package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -1
  231. package/plugins/contextMenu/predefinedItems/columnRight.js +1 -1
  232. package/plugins/contextMenu/predefinedItems/index.js +1 -1
  233. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
  234. package/plugins/contextMenu/predefinedItems/redo.js +1 -1
  235. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
  236. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
  237. package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -1
  238. package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -1
  239. package/plugins/contextMenu/predefinedItems/undo.js +1 -1
  240. package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
  241. package/plugins/copyPaste/copyPaste.js +120 -161
  242. package/plugins/copyPaste/copyPaste.mjs +120 -161
  243. package/plugins/copyPaste/copyableRanges.js +43 -66
  244. package/plugins/copyPaste/copyableRanges.mjs +43 -66
  245. package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
  246. package/plugins/customBorders/contextMenuItem/left.js +1 -1
  247. package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
  248. package/plugins/customBorders/contextMenuItem/right.js +1 -1
  249. package/plugins/customBorders/contextMenuItem/top.js +1 -1
  250. package/plugins/customBorders/customBorders.js +14 -16
  251. package/plugins/customBorders/customBorders.mjs +13 -15
  252. package/plugins/dragToScroll/dragToScroll.js +7 -7
  253. package/plugins/dragToScroll/dragToScroll.mjs +7 -7
  254. package/plugins/dropdownMenu/dropdownMenu.js +84 -110
  255. package/plugins/dropdownMenu/dropdownMenu.mjs +84 -110
  256. package/plugins/exportFile/dataProvider.js +2 -2
  257. package/plugins/exportFile/dataProvider.mjs +2 -2
  258. package/plugins/exportFile/exportFile.js +2 -2
  259. package/plugins/exportFile/exportFile.mjs +1 -1
  260. package/plugins/exportFile/types/_base.js +1 -1
  261. package/plugins/exportFile/types/_base.mjs +1 -1
  262. package/plugins/filters/component/_base.js +1 -1
  263. package/plugins/filters/component/_base.mjs +1 -1
  264. package/plugins/filters/component/actionBar.js +11 -11
  265. package/plugins/filters/component/actionBar.mjs +9 -9
  266. package/plugins/filters/component/condition.js +15 -17
  267. package/plugins/filters/component/condition.mjs +14 -16
  268. package/plugins/filters/component/operators.js +7 -7
  269. package/plugins/filters/component/operators.mjs +7 -7
  270. package/plugins/filters/component/value.js +26 -30
  271. package/plugins/filters/component/value.mjs +25 -29
  272. package/plugins/filters/condition/beginsWith.js +1 -1
  273. package/plugins/filters/condition/between.js +1 -1
  274. package/plugins/filters/condition/contains.js +1 -1
  275. package/plugins/filters/condition/date/after.js +1 -1
  276. package/plugins/filters/condition/date/before.js +1 -1
  277. package/plugins/filters/condition/date/today.js +1 -1
  278. package/plugins/filters/condition/date/tomorrow.js +1 -1
  279. package/plugins/filters/condition/date/yesterday.js +1 -1
  280. package/plugins/filters/condition/empty.js +1 -1
  281. package/plugins/filters/condition/endsWith.js +1 -1
  282. package/plugins/filters/condition/equal.js +1 -1
  283. package/plugins/filters/condition/greaterThan.js +1 -1
  284. package/plugins/filters/condition/greaterThanOrEqual.js +1 -1
  285. package/plugins/filters/condition/lessThan.js +1 -1
  286. package/plugins/filters/condition/lessThanOrEqual.js +1 -1
  287. package/plugins/filters/condition/none.js +1 -1
  288. package/plugins/filters/condition/notBetween.js +1 -1
  289. package/plugins/filters/condition/notContains.js +1 -1
  290. package/plugins/filters/condition/notEmpty.js +1 -1
  291. package/plugins/filters/condition/notEqual.js +1 -1
  292. package/plugins/filters/conditionCollection.js +1 -1
  293. package/plugins/filters/conditionCollection.mjs +1 -1
  294. package/plugins/filters/conditionUpdateObserver.js +23 -25
  295. package/plugins/filters/conditionUpdateObserver.mjs +23 -25
  296. package/plugins/filters/dataFilter.js +2 -2
  297. package/plugins/filters/dataFilter.mjs +2 -2
  298. package/plugins/filters/filters.js +84 -98
  299. package/plugins/filters/filters.mjs +83 -97
  300. package/plugins/filters/logicalOperations/conjunction.js +1 -1
  301. package/plugins/filters/logicalOperations/disjunction.js +1 -1
  302. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -1
  303. package/plugins/filters/ui/_base.js +2 -2
  304. package/plugins/filters/ui/_base.mjs +1 -1
  305. package/plugins/filters/ui/input.js +13 -19
  306. package/plugins/filters/ui/input.mjs +13 -19
  307. package/plugins/filters/ui/link.js +8 -13
  308. package/plugins/filters/ui/link.mjs +8 -13
  309. package/plugins/filters/ui/multipleSelect.js +86 -113
  310. package/plugins/filters/ui/multipleSelect.mjs +85 -112
  311. package/plugins/filters/ui/radioInput.js +12 -20
  312. package/plugins/filters/ui/radioInput.mjs +12 -20
  313. package/plugins/filters/ui/select.js +51 -73
  314. package/plugins/filters/ui/select.mjs +49 -71
  315. package/plugins/formulas/formulas.js +270 -328
  316. package/plugins/formulas/formulas.mjs +271 -329
  317. package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
  318. package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
  319. package/plugins/formulas/indexSyncer/index.js +25 -48
  320. package/plugins/formulas/indexSyncer/index.mjs +25 -48
  321. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
  322. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
  323. package/plugins/hiddenColumns/hiddenColumns.js +68 -87
  324. package/plugins/hiddenColumns/hiddenColumns.mjs +68 -87
  325. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
  326. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
  327. package/plugins/hiddenRows/hiddenRows.js +67 -86
  328. package/plugins/hiddenRows/hiddenRows.mjs +67 -86
  329. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  330. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  331. package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
  332. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
  333. package/plugins/manualColumnMove/manualColumnMove.js +133 -177
  334. package/plugins/manualColumnMove/manualColumnMove.mjs +133 -177
  335. package/plugins/manualColumnMove/ui/_base.js +1 -1
  336. package/plugins/manualColumnMove/ui/_base.mjs +1 -1
  337. package/plugins/manualColumnResize/manualColumnResize.js +169 -230
  338. package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
  339. package/plugins/manualRowMove/manualRowMove.js +106 -135
  340. package/plugins/manualRowMove/manualRowMove.mjs +106 -135
  341. package/plugins/manualRowMove/ui/_base.js +1 -1
  342. package/plugins/manualRowMove/ui/_base.mjs +1 -1
  343. package/plugins/manualRowResize/manualRowResize.js +150 -209
  344. package/plugins/manualRowResize/manualRowResize.mjs +150 -209
  345. package/plugins/mergeCells/calculations/autofill.js +1 -1
  346. package/plugins/mergeCells/calculations/autofill.mjs +1 -1
  347. package/plugins/mergeCells/calculations/selection.js +3 -72
  348. package/plugins/mergeCells/calculations/selection.mjs +3 -72
  349. package/plugins/mergeCells/cellCoords.js +1 -1
  350. package/plugins/mergeCells/cellCoords.mjs +1 -1
  351. package/plugins/mergeCells/cellsCollection.js +118 -2
  352. package/plugins/mergeCells/cellsCollection.mjs +118 -2
  353. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +12 -2
  354. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
  355. package/plugins/mergeCells/focusOrder.js +305 -0
  356. package/plugins/mergeCells/focusOrder.mjs +300 -0
  357. package/plugins/mergeCells/mergeCells.js +500 -398
  358. package/plugins/mergeCells/mergeCells.mjs +500 -398
  359. package/plugins/multiColumnSorting/multiColumnSorting.js +9 -3
  360. package/plugins/multiColumnSorting/multiColumnSorting.mjs +9 -3
  361. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -2
  362. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +2 -2
  363. package/plugins/nestedHeaders/nestedHeaders.js +206 -254
  364. package/plugins/nestedHeaders/nestedHeaders.mjs +207 -255
  365. package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
  366. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
  367. package/plugins/nestedHeaders/stateManager/index.js +30 -41
  368. package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
  369. package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
  370. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
  371. package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
  372. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
  373. package/plugins/nestedRows/data/dataManager.js +2 -2
  374. package/plugins/nestedRows/data/dataManager.mjs +2 -2
  375. package/plugins/nestedRows/nestedRows.js +154 -185
  376. package/plugins/nestedRows/nestedRows.mjs +155 -186
  377. package/plugins/nestedRows/ui/_base.js +1 -1
  378. package/plugins/nestedRows/ui/_base.mjs +1 -1
  379. package/plugins/nestedRows/ui/contextMenu.js +13 -17
  380. package/plugins/nestedRows/ui/contextMenu.mjs +11 -15
  381. package/plugins/nestedRows/utils/rowMoveController.js +6 -6
  382. package/plugins/nestedRows/utils/rowMoveController.mjs +6 -6
  383. package/plugins/persistentState/persistentState.js +1 -1
  384. package/plugins/persistentState/persistentState.mjs +1 -1
  385. package/plugins/persistentState/storage.js +3 -3
  386. package/plugins/persistentState/storage.mjs +3 -3
  387. package/plugins/search/search.js +8 -8
  388. package/plugins/search/search.mjs +8 -8
  389. package/plugins/touchScroll/touchScroll.js +16 -20
  390. package/plugins/touchScroll/touchScroll.mjs +17 -21
  391. package/plugins/trimRows/trimRows.js +7 -7
  392. package/plugins/trimRows/trimRows.mjs +7 -7
  393. package/plugins/undoRedo/index.js +1 -1
  394. package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
  395. package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
  396. package/selection/highlight/highlight.js +16 -18
  397. package/selection/highlight/highlight.mjs +15 -17
  398. package/selection/highlight/visualSelection.js +3 -1
  399. package/selection/highlight/visualSelection.mjs +3 -1
  400. package/selection/range.js +3 -5
  401. package/selection/range.mjs +2 -4
  402. package/selection/selection.js +227 -69
  403. package/selection/selection.mjs +225 -67
  404. package/selection/transformation.js +149 -118
  405. package/selection/transformation.mjs +149 -118
  406. package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
  407. package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
  408. package/shortcutContexts/commands/editor/open.js +18 -3
  409. package/shortcutContexts/commands/editor/open.mjs +18 -3
  410. package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
  411. package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
  412. package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
  413. package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
  414. package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
  415. package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
  416. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
  417. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
  418. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
  419. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
  420. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
  421. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
  422. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
  423. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
  424. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
  425. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
  426. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
  427. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
  428. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
  429. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
  430. package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
  431. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
  432. package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
  433. package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
  434. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
  435. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
  436. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
  437. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
  438. package/shortcutContexts/grid.js +9 -3
  439. package/shortcutContexts/grid.mjs +9 -3
  440. package/shortcuts/context.js +3 -2
  441. package/shortcuts/context.mjs +3 -2
  442. package/shortcuts/manager.js +2 -2
  443. package/shortcuts/manager.mjs +2 -2
  444. package/tableView.js +53 -79
  445. package/tableView.mjs +53 -79
  446. package/translations/changesObservable/observable.js +21 -38
  447. package/translations/changesObservable/observable.mjs +21 -38
  448. package/translations/changesObservable/observer.js +7 -12
  449. package/translations/changesObservable/observer.mjs +6 -11
  450. package/translations/indexMapper.js +1 -1
  451. package/translations/indexMapper.mjs +1 -1
  452. package/translations/mapCollections/aggregatedCollection.js +2 -2
  453. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  454. package/translations/mapCollections/mapCollection.js +1 -1
  455. package/translations/mapCollections/mapCollection.mjs +1 -1
  456. package/translations/maps/indexMap.js +2 -2
  457. package/translations/maps/indexMap.mjs +2 -2
  458. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
  459. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
  460. package/utils/dataStructures/linkedList.js +7 -2
  461. package/utils/dataStructures/linkedList.mjs +7 -2
  462. package/utils/dataStructures/tree.js +2 -2
  463. package/utils/dataStructures/tree.mjs +2 -2
  464. package/utils/ghostTable.js +1 -1
  465. package/utils/ghostTable.mjs +1 -1
  466. package/utils/interval.js +27 -45
  467. package/utils/interval.mjs +27 -45
  468. package/utils/samplesGenerator.js +1 -1
  469. package/utils/samplesGenerator.mjs +1 -1
package/focusManager.js CHANGED
@@ -8,12 +8,9 @@ var _function = require("./helpers/function");
8
8
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
9
9
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
10
10
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
11
- function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
12
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
13
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
14
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
15
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
16
- 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
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
12
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
13
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
17
14
  /**
18
15
  * Possible focus modes.
19
16
  * - CELL - The browser's focus stays on the lastly selected cell element.
@@ -35,40 +32,20 @@ var _focusMode = /*#__PURE__*/new WeakMap();
35
32
  var _refocusDelay = /*#__PURE__*/new WeakMap();
36
33
  var _refocusElementGetter = /*#__PURE__*/new WeakMap();
37
34
  var _debouncedSelect = /*#__PURE__*/new WeakMap();
38
- var _getSelectedCell = /*#__PURE__*/new WeakSet();
39
- var _focusCell = /*#__PURE__*/new WeakSet();
40
- var _focusEditorElement = /*#__PURE__*/new WeakSet();
41
- var _onUpdateSettings = /*#__PURE__*/new WeakSet();
35
+ var _FocusManager_brand = /*#__PURE__*/new WeakSet();
42
36
  class FocusManager {
43
37
  constructor(hotInstance) {
44
38
  var _this = this;
45
- /**
46
- * Update the manager configuration after calling `updateSettings`.
47
- *
48
- * @param {object} newSettings The new settings passed to the `updateSettings` method.
49
- */
50
- _classPrivateMethodInitSpec(this, _onUpdateSettings);
51
- /**
52
- * Manage the browser's focus after cell selection end.
53
- */
54
- _classPrivateMethodInitSpec(this, _focusEditorElement);
55
- /**
56
- * Manage the browser's focus after each cell selection change.
57
- */
58
- _classPrivateMethodInitSpec(this, _focusCell);
59
39
  /**
60
40
  * Get and return the currently selected and highlighted cell/header element.
61
41
  *
62
42
  * @param {Function} callback Callback function to be called after the cell element is retrieved.
63
43
  */
64
- _classPrivateMethodInitSpec(this, _getSelectedCell);
44
+ _classPrivateMethodInitSpec(this, _FocusManager_brand);
65
45
  /**
66
46
  * The Handsontable instance.
67
47
  */
68
- _classPrivateFieldInitSpec(this, _hot, {
69
- writable: true,
70
- value: void 0
71
- });
48
+ _classPrivateFieldInitSpec(this, _hot, void 0);
72
49
  /**
73
50
  * The currently enabled focus mode.
74
51
  * Can be either:
@@ -79,59 +56,53 @@ class FocusManager {
79
56
  *
80
57
  * @type {'cell' | 'mixed'}
81
58
  */
82
- _classPrivateFieldInitSpec(this, _focusMode, {
83
- writable: true,
84
- value: void 0
85
- });
59
+ _classPrivateFieldInitSpec(this, _focusMode, void 0);
86
60
  /**
87
61
  * The delay after which the focus switches from the lastly selected cell to the active editor's `TEXTAREA`
88
62
  * element if the focus mode is set to 'mixed'.
89
63
  *
90
64
  * @type {number}
91
65
  */
92
- _classPrivateFieldInitSpec(this, _refocusDelay, {
93
- writable: true,
94
- value: 50
95
- });
66
+ _classPrivateFieldInitSpec(this, _refocusDelay, 50);
96
67
  /**
97
68
  * Getter function for the element to be used when refocusing the browser after a delay. If `null`, the active
98
69
  * editor's `TEXTAREA` element will be used.
99
70
  *
100
71
  * @type {null|Function}
101
72
  */
102
- _classPrivateFieldInitSpec(this, _refocusElementGetter, {
103
- writable: true,
104
- value: null
105
- });
73
+ _classPrivateFieldInitSpec(this, _refocusElementGetter, null);
106
74
  /**
107
75
  * Map of the debounced `select` functions.
108
76
  *
109
77
  * @type {Map<number, Function>}
110
78
  */
111
- _classPrivateFieldInitSpec(this, _debouncedSelect, {
112
- writable: true,
113
- value: new Map()
114
- });
79
+ _classPrivateFieldInitSpec(this, _debouncedSelect, new Map());
115
80
  const hotSettings = hotInstance.getSettings();
116
- _classPrivateFieldSet(this, _hot, hotInstance);
117
- _classPrivateFieldSet(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
118
- _classPrivateFieldGet(this, _hot).addHook('afterUpdateSettings', function () {
81
+ _classPrivateFieldSet(_hot, this, hotInstance);
82
+ _classPrivateFieldSet(_focusMode, this, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
83
+ _classPrivateFieldGet(_hot, this).addHook('afterUpdateSettings', function () {
119
84
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
120
85
  args[_key] = arguments[_key];
121
86
  }
122
- return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
87
+ return _assertClassBrand(_FocusManager_brand, _this, _onUpdateSettings).call(_this, ...args);
123
88
  });
124
- _classPrivateFieldGet(this, _hot).addHook('afterSelection', function () {
89
+ _classPrivateFieldGet(_hot, this).addHook('afterSelection', function () {
125
90
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
126
91
  args[_key2] = arguments[_key2];
127
92
  }
128
- return _classPrivateMethodGet(_this, _focusCell, _focusCell2).call(_this, ...args);
93
+ return _assertClassBrand(_FocusManager_brand, _this, _focusCell).call(_this, ...args);
129
94
  });
130
- _classPrivateFieldGet(this, _hot).addHook('afterSelectionEnd', function () {
95
+ _classPrivateFieldGet(_hot, this).addHook('afterSelectionFocusSet', function () {
131
96
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
132
97
  args[_key3] = arguments[_key3];
133
98
  }
134
- return _classPrivateMethodGet(_this, _focusEditorElement, _focusEditorElement2).call(_this, ...args);
99
+ return _assertClassBrand(_FocusManager_brand, _this, _focusCell).call(_this, ...args);
100
+ });
101
+ _classPrivateFieldGet(_hot, this).addHook('afterSelectionEnd', function () {
102
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
103
+ args[_key4] = arguments[_key4];
104
+ }
105
+ return _assertClassBrand(_FocusManager_brand, _this, _focusEditorElement).call(_this, ...args);
135
106
  });
136
107
  }
137
108
 
@@ -141,7 +112,7 @@ class FocusManager {
141
112
  * @returns {'cell' | 'mixed'}
142
113
  */
143
114
  getFocusMode() {
144
- return _classPrivateFieldGet(this, _focusMode);
115
+ return _classPrivateFieldGet(_focusMode, this);
145
116
  }
146
117
 
147
118
  /**
@@ -151,7 +122,7 @@ class FocusManager {
151
122
  */
152
123
  setFocusMode(focusMode) {
153
124
  if (Object.values(FOCUS_MODES).includes(focusMode)) {
154
- _classPrivateFieldSet(this, _focusMode, focusMode);
125
+ _classPrivateFieldSet(_focusMode, this, focusMode);
155
126
  } else {
156
127
  (0, _console.warn)(`"${focusMode}" is not a valid focus mode.`);
157
128
  }
@@ -164,7 +135,7 @@ class FocusManager {
164
135
  * @returns {number} Delay in milliseconds.
165
136
  */
166
137
  getRefocusDelay() {
167
- return _classPrivateFieldGet(this, _refocusDelay);
138
+ return _classPrivateFieldGet(_refocusDelay, this);
168
139
  }
169
140
 
170
141
  /**
@@ -174,7 +145,7 @@ class FocusManager {
174
145
  * @param {number} delay Delay in milliseconds.
175
146
  */
176
147
  setRefocusDelay(delay) {
177
- _classPrivateFieldSet(this, _refocusDelay, delay);
148
+ _classPrivateFieldSet(_refocusDelay, this, delay);
178
149
  }
179
150
 
180
151
  /**
@@ -183,7 +154,7 @@ class FocusManager {
183
154
  * @param {Function} getRefocusElementFunction The refocus element getter.
184
155
  */
185
156
  setRefocusElementGetter(getRefocusElementFunction) {
186
- _classPrivateFieldSet(this, _refocusElementGetter, getRefocusElementFunction);
157
+ _classPrivateFieldSet(_refocusElementGetter, this, getRefocusElementFunction);
187
158
  }
188
159
 
189
160
  /**
@@ -192,11 +163,11 @@ class FocusManager {
192
163
  * @returns {HTMLTextAreaElement|HTMLElement|undefined}
193
164
  */
194
165
  getRefocusElement() {
195
- if (typeof _classPrivateFieldGet(this, _refocusElementGetter) === 'function') {
196
- return _classPrivateFieldGet(this, _refocusElementGetter).call(this);
166
+ if (typeof _classPrivateFieldGet(_refocusElementGetter, this) === 'function') {
167
+ return _classPrivateFieldGet(_refocusElementGetter, this).call(this);
197
168
  } else {
198
169
  var _classPrivateFieldGet2;
199
- return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
170
+ return (_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
200
171
  }
201
172
  }
202
173
 
@@ -208,15 +179,15 @@ class FocusManager {
208
179
  focusOnHighlightedCell(selectedCell) {
209
180
  const focusElement = element => {
210
181
  var _classPrivateFieldGet3, _classPrivateFieldGet4;
211
- const currentHighlightCoords = (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
182
+ const currentHighlightCoords = (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
212
183
  if (!currentHighlightCoords) {
213
184
  return;
214
185
  }
215
- let elementToBeFocused = _classPrivateFieldGet(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
186
+ let elementToBeFocused = _classPrivateFieldGet(_hot, this).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
216
187
  if (!(elementToBeFocused instanceof HTMLElement)) {
217
188
  elementToBeFocused = element;
218
189
  }
219
- if (elementToBeFocused && !((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
190
+ if (elementToBeFocused && !((_classPrivateFieldGet4 = _classPrivateFieldGet(_hot, this).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
220
191
  elementToBeFocused.focus({
221
192
  preventScroll: true
222
193
  });
@@ -225,7 +196,7 @@ class FocusManager {
225
196
  if (selectedCell) {
226
197
  focusElement(selectedCell);
227
198
  } else {
228
- _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, element => focusElement(element));
199
+ _assertClassBrand(_FocusManager_brand, this, _getSelectedCell).call(this, element => focusElement(element));
229
200
  }
230
201
  }
231
202
 
@@ -237,42 +208,45 @@ class FocusManager {
237
208
  */
238
209
  refocusToEditorTextarea() {
239
210
  var _classPrivateFieldGet5;
240
- let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _refocusDelay);
211
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(_refocusDelay, this);
241
212
  const refocusElement = this.getRefocusElement();
242
213
 
243
214
  // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
244
- if (_classPrivateFieldGet(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
245
- if (!_classPrivateFieldGet(this, _debouncedSelect).has(delay)) {
246
- _classPrivateFieldGet(this, _debouncedSelect).set(delay, (0, _function.debounce)(() => {
215
+ if (_classPrivateFieldGet(_hot, this).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = _classPrivateFieldGet(_hot, this).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
216
+ if (!_classPrivateFieldGet(_debouncedSelect, this).has(delay)) {
217
+ _classPrivateFieldGet(_debouncedSelect, this).set(delay, (0, _function.debounce)(() => {
247
218
  refocusElement.select();
248
219
  }, delay));
249
220
  }
250
- _classPrivateFieldGet(this, _debouncedSelect).get(delay)();
221
+ _classPrivateFieldGet(_debouncedSelect, this).get(delay)();
251
222
  }
252
223
  }
253
224
  }
254
225
  exports.FocusManager = FocusManager;
255
- function _getSelectedCell2(callback) {
226
+ function _getSelectedCell(callback) {
256
227
  var _classPrivateFieldGet6;
257
- const highlight = (_classPrivateFieldGet6 = _classPrivateFieldGet(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
258
- if (!highlight || !_classPrivateFieldGet(this, _hot).selection.isCellVisible(highlight)) {
228
+ const highlight = (_classPrivateFieldGet6 = _classPrivateFieldGet(_hot, this).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
229
+ if (!highlight || !_classPrivateFieldGet(_hot, this).selection.isCellVisible(highlight)) {
259
230
  callback(null);
260
231
  return;
261
232
  }
262
- const cell = _classPrivateFieldGet(this, _hot).getCell(highlight.row, highlight.col, true);
233
+ const cell = _classPrivateFieldGet(_hot, this).getCell(highlight.row, highlight.col, true);
263
234
  if (cell === null) {
264
- _classPrivateFieldGet(this, _hot).addHookOnce('afterScroll', () => {
265
- callback(_classPrivateFieldGet(this, _hot).getCell(highlight.row, highlight.col, true));
235
+ _classPrivateFieldGet(_hot, this).addHookOnce('afterScroll', () => {
236
+ callback(_classPrivateFieldGet(_hot, this).getCell(highlight.row, highlight.col, true));
266
237
  });
267
238
  } else {
268
239
  callback(cell);
269
240
  }
270
241
  }
271
- function _focusCell2() {
272
- _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
242
+ /**
243
+ * Manage the browser's focus after each cell selection change.
244
+ */
245
+ function _focusCell() {
246
+ _assertClassBrand(_FocusManager_brand, this, _getSelectedCell).call(this, selectedCell => {
273
247
  const {
274
248
  activeElement
275
- } = _classPrivateFieldGet(this, _hot).rootDocument;
249
+ } = _classPrivateFieldGet(_hot, this).rootDocument;
276
250
 
277
251
  // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
278
252
  // and resets the `document.activeElement` property. The blurring should happen only when the
@@ -284,14 +258,22 @@ function _focusCell2() {
284
258
  this.focusOnHighlightedCell(selectedCell);
285
259
  });
286
260
  }
287
- function _focusEditorElement2() {
288
- _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
261
+ /**
262
+ * Manage the browser's focus after cell selection end.
263
+ */
264
+ function _focusEditorElement() {
265
+ _assertClassBrand(_FocusManager_brand, this, _getSelectedCell).call(this, selectedCell => {
289
266
  if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
290
267
  this.refocusToEditorTextarea();
291
268
  }
292
269
  });
293
270
  }
294
- function _onUpdateSettings2(newSettings) {
271
+ /**
272
+ * Update the manager configuration after calling `updateSettings`.
273
+ *
274
+ * @param {object} newSettings The new settings passed to the `updateSettings` method.
275
+ */
276
+ function _onUpdateSettings(newSettings) {
295
277
  if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
296
278
  this.setFocusMode(FOCUS_MODES.MIXED);
297
279
  } else if (!newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.CELL) {
package/focusManager.mjs CHANGED
@@ -2,12 +2,9 @@ import "core-js/modules/es.error.cause.js";
2
2
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
3
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
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; } }
5
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
6
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
7
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
11
8
  import { warn } from "./helpers/console.mjs";
12
9
  import { isOutsideInput } from "./helpers/dom/element.mjs";
13
10
  import { debounce } from "./helpers/function.mjs";
@@ -32,40 +29,20 @@ var _focusMode = /*#__PURE__*/new WeakMap();
32
29
  var _refocusDelay = /*#__PURE__*/new WeakMap();
33
30
  var _refocusElementGetter = /*#__PURE__*/new WeakMap();
34
31
  var _debouncedSelect = /*#__PURE__*/new WeakMap();
35
- var _getSelectedCell = /*#__PURE__*/new WeakSet();
36
- var _focusCell = /*#__PURE__*/new WeakSet();
37
- var _focusEditorElement = /*#__PURE__*/new WeakSet();
38
- var _onUpdateSettings = /*#__PURE__*/new WeakSet();
32
+ var _FocusManager_brand = /*#__PURE__*/new WeakSet();
39
33
  export class FocusManager {
40
34
  constructor(hotInstance) {
41
35
  var _this = this;
42
- /**
43
- * Update the manager configuration after calling `updateSettings`.
44
- *
45
- * @param {object} newSettings The new settings passed to the `updateSettings` method.
46
- */
47
- _classPrivateMethodInitSpec(this, _onUpdateSettings);
48
- /**
49
- * Manage the browser's focus after cell selection end.
50
- */
51
- _classPrivateMethodInitSpec(this, _focusEditorElement);
52
- /**
53
- * Manage the browser's focus after each cell selection change.
54
- */
55
- _classPrivateMethodInitSpec(this, _focusCell);
56
36
  /**
57
37
  * Get and return the currently selected and highlighted cell/header element.
58
38
  *
59
39
  * @param {Function} callback Callback function to be called after the cell element is retrieved.
60
40
  */
61
- _classPrivateMethodInitSpec(this, _getSelectedCell);
41
+ _classPrivateMethodInitSpec(this, _FocusManager_brand);
62
42
  /**
63
43
  * The Handsontable instance.
64
44
  */
65
- _classPrivateFieldInitSpec(this, _hot, {
66
- writable: true,
67
- value: void 0
68
- });
45
+ _classPrivateFieldInitSpec(this, _hot, void 0);
69
46
  /**
70
47
  * The currently enabled focus mode.
71
48
  * Can be either:
@@ -76,59 +53,53 @@ export class FocusManager {
76
53
  *
77
54
  * @type {'cell' | 'mixed'}
78
55
  */
79
- _classPrivateFieldInitSpec(this, _focusMode, {
80
- writable: true,
81
- value: void 0
82
- });
56
+ _classPrivateFieldInitSpec(this, _focusMode, void 0);
83
57
  /**
84
58
  * The delay after which the focus switches from the lastly selected cell to the active editor's `TEXTAREA`
85
59
  * element if the focus mode is set to 'mixed'.
86
60
  *
87
61
  * @type {number}
88
62
  */
89
- _classPrivateFieldInitSpec(this, _refocusDelay, {
90
- writable: true,
91
- value: 50
92
- });
63
+ _classPrivateFieldInitSpec(this, _refocusDelay, 50);
93
64
  /**
94
65
  * Getter function for the element to be used when refocusing the browser after a delay. If `null`, the active
95
66
  * editor's `TEXTAREA` element will be used.
96
67
  *
97
68
  * @type {null|Function}
98
69
  */
99
- _classPrivateFieldInitSpec(this, _refocusElementGetter, {
100
- writable: true,
101
- value: null
102
- });
70
+ _classPrivateFieldInitSpec(this, _refocusElementGetter, null);
103
71
  /**
104
72
  * Map of the debounced `select` functions.
105
73
  *
106
74
  * @type {Map<number, Function>}
107
75
  */
108
- _classPrivateFieldInitSpec(this, _debouncedSelect, {
109
- writable: true,
110
- value: new Map()
111
- });
76
+ _classPrivateFieldInitSpec(this, _debouncedSelect, new Map());
112
77
  const hotSettings = hotInstance.getSettings();
113
- _classPrivateFieldSet(this, _hot, hotInstance);
114
- _classPrivateFieldSet(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
115
- _classPrivateFieldGet(this, _hot).addHook('afterUpdateSettings', function () {
78
+ _classPrivateFieldSet(_hot, this, hotInstance);
79
+ _classPrivateFieldSet(_focusMode, this, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
80
+ _classPrivateFieldGet(_hot, this).addHook('afterUpdateSettings', function () {
116
81
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
117
82
  args[_key] = arguments[_key];
118
83
  }
119
- return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
84
+ return _assertClassBrand(_FocusManager_brand, _this, _onUpdateSettings).call(_this, ...args);
120
85
  });
121
- _classPrivateFieldGet(this, _hot).addHook('afterSelection', function () {
86
+ _classPrivateFieldGet(_hot, this).addHook('afterSelection', function () {
122
87
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
123
88
  args[_key2] = arguments[_key2];
124
89
  }
125
- return _classPrivateMethodGet(_this, _focusCell, _focusCell2).call(_this, ...args);
90
+ return _assertClassBrand(_FocusManager_brand, _this, _focusCell).call(_this, ...args);
126
91
  });
127
- _classPrivateFieldGet(this, _hot).addHook('afterSelectionEnd', function () {
92
+ _classPrivateFieldGet(_hot, this).addHook('afterSelectionFocusSet', function () {
128
93
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
129
94
  args[_key3] = arguments[_key3];
130
95
  }
131
- return _classPrivateMethodGet(_this, _focusEditorElement, _focusEditorElement2).call(_this, ...args);
96
+ return _assertClassBrand(_FocusManager_brand, _this, _focusCell).call(_this, ...args);
97
+ });
98
+ _classPrivateFieldGet(_hot, this).addHook('afterSelectionEnd', function () {
99
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
100
+ args[_key4] = arguments[_key4];
101
+ }
102
+ return _assertClassBrand(_FocusManager_brand, _this, _focusEditorElement).call(_this, ...args);
132
103
  });
133
104
  }
134
105
 
@@ -138,7 +109,7 @@ export class FocusManager {
138
109
  * @returns {'cell' | 'mixed'}
139
110
  */
140
111
  getFocusMode() {
141
- return _classPrivateFieldGet(this, _focusMode);
112
+ return _classPrivateFieldGet(_focusMode, this);
142
113
  }
143
114
 
144
115
  /**
@@ -148,7 +119,7 @@ export class FocusManager {
148
119
  */
149
120
  setFocusMode(focusMode) {
150
121
  if (Object.values(FOCUS_MODES).includes(focusMode)) {
151
- _classPrivateFieldSet(this, _focusMode, focusMode);
122
+ _classPrivateFieldSet(_focusMode, this, focusMode);
152
123
  } else {
153
124
  warn(`"${focusMode}" is not a valid focus mode.`);
154
125
  }
@@ -161,7 +132,7 @@ export class FocusManager {
161
132
  * @returns {number} Delay in milliseconds.
162
133
  */
163
134
  getRefocusDelay() {
164
- return _classPrivateFieldGet(this, _refocusDelay);
135
+ return _classPrivateFieldGet(_refocusDelay, this);
165
136
  }
166
137
 
167
138
  /**
@@ -171,7 +142,7 @@ export class FocusManager {
171
142
  * @param {number} delay Delay in milliseconds.
172
143
  */
173
144
  setRefocusDelay(delay) {
174
- _classPrivateFieldSet(this, _refocusDelay, delay);
145
+ _classPrivateFieldSet(_refocusDelay, this, delay);
175
146
  }
176
147
 
177
148
  /**
@@ -180,7 +151,7 @@ export class FocusManager {
180
151
  * @param {Function} getRefocusElementFunction The refocus element getter.
181
152
  */
182
153
  setRefocusElementGetter(getRefocusElementFunction) {
183
- _classPrivateFieldSet(this, _refocusElementGetter, getRefocusElementFunction);
154
+ _classPrivateFieldSet(_refocusElementGetter, this, getRefocusElementFunction);
184
155
  }
185
156
 
186
157
  /**
@@ -189,11 +160,11 @@ export class FocusManager {
189
160
  * @returns {HTMLTextAreaElement|HTMLElement|undefined}
190
161
  */
191
162
  getRefocusElement() {
192
- if (typeof _classPrivateFieldGet(this, _refocusElementGetter) === 'function') {
193
- return _classPrivateFieldGet(this, _refocusElementGetter).call(this);
163
+ if (typeof _classPrivateFieldGet(_refocusElementGetter, this) === 'function') {
164
+ return _classPrivateFieldGet(_refocusElementGetter, this).call(this);
194
165
  } else {
195
166
  var _classPrivateFieldGet2;
196
- return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
167
+ return (_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
197
168
  }
198
169
  }
199
170
 
@@ -205,15 +176,15 @@ export class FocusManager {
205
176
  focusOnHighlightedCell(selectedCell) {
206
177
  const focusElement = element => {
207
178
  var _classPrivateFieldGet3, _classPrivateFieldGet4;
208
- const currentHighlightCoords = (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
179
+ const currentHighlightCoords = (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
209
180
  if (!currentHighlightCoords) {
210
181
  return;
211
182
  }
212
- let elementToBeFocused = _classPrivateFieldGet(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
183
+ let elementToBeFocused = _classPrivateFieldGet(_hot, this).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
213
184
  if (!(elementToBeFocused instanceof HTMLElement)) {
214
185
  elementToBeFocused = element;
215
186
  }
216
- if (elementToBeFocused && !((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
187
+ if (elementToBeFocused && !((_classPrivateFieldGet4 = _classPrivateFieldGet(_hot, this).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
217
188
  elementToBeFocused.focus({
218
189
  preventScroll: true
219
190
  });
@@ -222,7 +193,7 @@ export class FocusManager {
222
193
  if (selectedCell) {
223
194
  focusElement(selectedCell);
224
195
  } else {
225
- _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, element => focusElement(element));
196
+ _assertClassBrand(_FocusManager_brand, this, _getSelectedCell).call(this, element => focusElement(element));
226
197
  }
227
198
  }
228
199
 
@@ -234,41 +205,44 @@ export class FocusManager {
234
205
  */
235
206
  refocusToEditorTextarea() {
236
207
  var _classPrivateFieldGet5;
237
- let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _refocusDelay);
208
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(_refocusDelay, this);
238
209
  const refocusElement = this.getRefocusElement();
239
210
 
240
211
  // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
241
- if (_classPrivateFieldGet(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
242
- if (!_classPrivateFieldGet(this, _debouncedSelect).has(delay)) {
243
- _classPrivateFieldGet(this, _debouncedSelect).set(delay, debounce(() => {
212
+ if (_classPrivateFieldGet(_hot, this).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = _classPrivateFieldGet(_hot, this).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
213
+ if (!_classPrivateFieldGet(_debouncedSelect, this).has(delay)) {
214
+ _classPrivateFieldGet(_debouncedSelect, this).set(delay, debounce(() => {
244
215
  refocusElement.select();
245
216
  }, delay));
246
217
  }
247
- _classPrivateFieldGet(this, _debouncedSelect).get(delay)();
218
+ _classPrivateFieldGet(_debouncedSelect, this).get(delay)();
248
219
  }
249
220
  }
250
221
  }
251
- function _getSelectedCell2(callback) {
222
+ function _getSelectedCell(callback) {
252
223
  var _classPrivateFieldGet6;
253
- const highlight = (_classPrivateFieldGet6 = _classPrivateFieldGet(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
254
- if (!highlight || !_classPrivateFieldGet(this, _hot).selection.isCellVisible(highlight)) {
224
+ const highlight = (_classPrivateFieldGet6 = _classPrivateFieldGet(_hot, this).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
225
+ if (!highlight || !_classPrivateFieldGet(_hot, this).selection.isCellVisible(highlight)) {
255
226
  callback(null);
256
227
  return;
257
228
  }
258
- const cell = _classPrivateFieldGet(this, _hot).getCell(highlight.row, highlight.col, true);
229
+ const cell = _classPrivateFieldGet(_hot, this).getCell(highlight.row, highlight.col, true);
259
230
  if (cell === null) {
260
- _classPrivateFieldGet(this, _hot).addHookOnce('afterScroll', () => {
261
- callback(_classPrivateFieldGet(this, _hot).getCell(highlight.row, highlight.col, true));
231
+ _classPrivateFieldGet(_hot, this).addHookOnce('afterScroll', () => {
232
+ callback(_classPrivateFieldGet(_hot, this).getCell(highlight.row, highlight.col, true));
262
233
  });
263
234
  } else {
264
235
  callback(cell);
265
236
  }
266
237
  }
267
- function _focusCell2() {
268
- _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
238
+ /**
239
+ * Manage the browser's focus after each cell selection change.
240
+ */
241
+ function _focusCell() {
242
+ _assertClassBrand(_FocusManager_brand, this, _getSelectedCell).call(this, selectedCell => {
269
243
  const {
270
244
  activeElement
271
- } = _classPrivateFieldGet(this, _hot).rootDocument;
245
+ } = _classPrivateFieldGet(_hot, this).rootDocument;
272
246
 
273
247
  // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
274
248
  // and resets the `document.activeElement` property. The blurring should happen only when the
@@ -280,14 +254,22 @@ function _focusCell2() {
280
254
  this.focusOnHighlightedCell(selectedCell);
281
255
  });
282
256
  }
283
- function _focusEditorElement2() {
284
- _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
257
+ /**
258
+ * Manage the browser's focus after cell selection end.
259
+ */
260
+ function _focusEditorElement() {
261
+ _assertClassBrand(_FocusManager_brand, this, _getSelectedCell).call(this, selectedCell => {
285
262
  if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
286
263
  this.refocusToEditorTextarea();
287
264
  }
288
265
  });
289
266
  }
290
- function _onUpdateSettings2(newSettings) {
267
+ /**
268
+ * Update the manager configuration after calling `updateSettings`.
269
+ *
270
+ * @param {object} newSettings The new settings passed to the `updateSettings` method.
271
+ */
272
+ function _onUpdateSettings(newSettings) {
291
273
  if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
292
274
  this.setFocusMode(FOCUS_MODES.MIXED);
293
275
  } else if (!newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.CELL) {