handsontable 14.2.0 → 14.3.0-next-3fa6b18-20240410

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 (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) {