handsontable 14.6.1 → 15.0.0-next-4472a60-20241203

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 (392) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
  5. package/3rdparty/walkontable/src/calculator/index.js +1 -2
  6. package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
  7. package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
  8. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  11. package/3rdparty/walkontable/src/core/_base.js +29 -23
  12. package/3rdparty/walkontable/src/core/_base.mjs +29 -23
  13. package/3rdparty/walkontable/src/core/clone.js +1 -0
  14. package/3rdparty/walkontable/src/core/clone.mjs +1 -0
  15. package/3rdparty/walkontable/src/core/core.js +2 -0
  16. package/3rdparty/walkontable/src/core/core.mjs +2 -0
  17. package/3rdparty/walkontable/src/facade/core.js +12 -6
  18. package/3rdparty/walkontable/src/facade/core.mjs +12 -6
  19. package/3rdparty/walkontable/src/index.js +0 -1
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +8 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
  23. package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
  24. package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
  25. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  26. package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
  27. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
  28. package/3rdparty/walkontable/src/overlay/top.js +9 -8
  29. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  30. package/3rdparty/walkontable/src/overlays.js +10 -26
  31. package/3rdparty/walkontable/src/overlays.mjs +10 -26
  32. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  33. package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
  34. package/3rdparty/walkontable/src/renderer/index.js +4 -2
  35. package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
  36. package/3rdparty/walkontable/src/renderer/table.js +13 -4
  37. package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
  38. package/3rdparty/walkontable/src/scroll.js +46 -37
  39. package/3rdparty/walkontable/src/scroll.mjs +46 -37
  40. package/3rdparty/walkontable/src/selection/border/border.js +52 -58
  41. package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
  42. package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
  43. package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
  44. package/3rdparty/walkontable/src/selection/index.js +6 -4
  45. package/3rdparty/walkontable/src/selection/index.mjs +1 -1
  46. package/3rdparty/walkontable/src/selection/manager.js +3 -0
  47. package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
  48. package/3rdparty/walkontable/src/selection/scanner.js +46 -11
  49. package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
  50. package/3rdparty/walkontable/src/settings.js +8 -9
  51. package/3rdparty/walkontable/src/settings.mjs +8 -9
  52. package/3rdparty/walkontable/src/table/master.js +1 -1
  53. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  54. package/3rdparty/walkontable/src/table.js +25 -36
  55. package/3rdparty/walkontable/src/table.mjs +25 -36
  56. package/3rdparty/walkontable/src/types.js +1 -0
  57. package/3rdparty/walkontable/src/types.mjs +1 -0
  58. package/3rdparty/walkontable/src/utils/column.js +1 -43
  59. package/3rdparty/walkontable/src/utils/column.mjs +1 -43
  60. package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
  61. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
  62. package/3rdparty/walkontable/src/viewport.js +94 -91
  63. package/3rdparty/walkontable/src/viewport.mjs +95 -92
  64. package/CHANGELOG.md +36 -0
  65. package/README.md +1 -1
  66. package/base.js +4 -4
  67. package/base.mjs +3 -3
  68. package/core/focusCatcher/focusDetector.js +1 -0
  69. package/core/focusCatcher/focusDetector.mjs +1 -0
  70. package/core/hooks/bucket.js +184 -0
  71. package/core/hooks/bucket.mjs +180 -0
  72. package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
  73. package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
  74. package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
  75. package/core/hooks/index.js +385 -0
  76. package/core/hooks/index.mjs +381 -0
  77. package/core/index.js +2 -0
  78. package/core.d.ts +5 -3
  79. package/core.js +77 -35
  80. package/core.mjs +69 -27
  81. package/dataMap/dataMap.js +3 -0
  82. package/dataMap/dataMap.mjs +3 -0
  83. package/dataMap/dataSource.js +2 -0
  84. package/dataMap/dataSource.mjs +2 -0
  85. package/dataMap/metaManager/index.js +2 -0
  86. package/dataMap/metaManager/index.mjs +2 -0
  87. package/dataMap/metaManager/metaSchema.js +91 -5
  88. package/dataMap/metaManager/metaSchema.mjs +91 -5
  89. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
  90. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  91. package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
  92. package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
  93. package/dist/handsontable.css +84 -72
  94. package/dist/handsontable.full.css +317 -304
  95. package/dist/handsontable.full.js +14826 -7294
  96. package/dist/handsontable.full.min.css +15 -10
  97. package/dist/handsontable.full.min.js +262 -69
  98. package/dist/handsontable.js +7826 -5552
  99. package/dist/handsontable.min.css +10 -6
  100. package/dist/handsontable.min.js +33 -33
  101. package/dist/languages/all.js +1 -1
  102. package/dist/languages/ar-AR.js +1 -1
  103. package/dist/languages/cs-CZ.js +1 -1
  104. package/dist/languages/de-CH.js +1 -1
  105. package/dist/languages/de-DE.js +1 -1
  106. package/dist/languages/en-US.js +1 -1
  107. package/dist/languages/es-MX.js +1 -1
  108. package/dist/languages/fr-FR.js +1 -1
  109. package/dist/languages/hr-HR.js +1 -1
  110. package/dist/languages/it-IT.js +1 -1
  111. package/dist/languages/ja-JP.js +1 -1
  112. package/dist/languages/ko-KR.js +1 -1
  113. package/dist/languages/lv-LV.js +1 -1
  114. package/dist/languages/nb-NO.js +1 -1
  115. package/dist/languages/nl-NL.js +1 -1
  116. package/dist/languages/pl-PL.js +1 -1
  117. package/dist/languages/pt-BR.js +1 -1
  118. package/dist/languages/ru-RU.js +1 -1
  119. package/dist/languages/sr-SP.js +1 -1
  120. package/dist/languages/zh-CN.js +1 -1
  121. package/dist/languages/zh-TW.js +1 -1
  122. package/editorManager.js +2 -2
  123. package/editorManager.mjs +2 -2
  124. package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
  125. package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
  126. package/editors/baseEditor/baseEditor.js +25 -18
  127. package/editors/baseEditor/baseEditor.mjs +26 -19
  128. package/editors/dateEditor/dateEditor.js +9 -0
  129. package/editors/dateEditor/dateEditor.mjs +10 -1
  130. package/editors/dropdownEditor/dropdownEditor.js +4 -3
  131. package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
  132. package/editors/handsontableEditor/handsontableEditor.js +36 -2
  133. package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
  134. package/editors/passwordEditor/passwordEditor.js +18 -0
  135. package/editors/passwordEditor/passwordEditor.mjs +18 -0
  136. package/editors/registry.js +2 -2
  137. package/editors/registry.mjs +1 -1
  138. package/editors/selectEditor/selectEditor.js +20 -9
  139. package/editors/selectEditor/selectEditor.mjs +20 -9
  140. package/editors/textEditor/textEditor.js +5 -12
  141. package/editors/textEditor/textEditor.mjs +6 -13
  142. package/focusManager.js +5 -7
  143. package/focusManager.mjs +5 -7
  144. package/helpers/array.js +2 -0
  145. package/helpers/array.mjs +2 -0
  146. package/helpers/data.js +3 -0
  147. package/helpers/data.mjs +3 -0
  148. package/helpers/dom/element.js +39 -18
  149. package/helpers/dom/element.mjs +38 -17
  150. package/helpers/mixed.js +3 -3
  151. package/helpers/mixed.mjs +3 -3
  152. package/helpers/moves.js +3 -0
  153. package/helpers/moves.mjs +3 -0
  154. package/helpers/number.js +1 -0
  155. package/helpers/number.mjs +1 -0
  156. package/helpers/object.js +2 -0
  157. package/helpers/object.mjs +2 -0
  158. package/helpers/themes.js +17 -0
  159. package/helpers/themes.mjs +13 -0
  160. package/i18n/index.js +2 -0
  161. package/i18n/languages/index.d.ts +8 -0
  162. package/i18n/languages/ja-JP.d.ts +1 -1
  163. package/i18n/phraseFormatters/substituteVariables.js +1 -0
  164. package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
  165. package/index.d.ts +9 -1
  166. package/languages/all.js +1 -1
  167. package/languages/ar-AR.js +1 -1
  168. package/languages/cs-CZ.js +1 -1
  169. package/languages/de-CH.js +1 -1
  170. package/languages/de-DE.js +1 -1
  171. package/languages/en-US.js +1 -1
  172. package/languages/es-MX.js +1 -1
  173. package/languages/fr-FR.js +1 -1
  174. package/languages/hr-HR.js +1 -1
  175. package/languages/index.js +1 -1
  176. package/languages/it-IT.js +1 -1
  177. package/languages/ja-JP.js +1 -1
  178. package/languages/ko-KR.js +1 -1
  179. package/languages/lv-LV.js +1 -1
  180. package/languages/nb-NO.js +1 -1
  181. package/languages/nl-NL.js +1 -1
  182. package/languages/pl-PL.js +1 -1
  183. package/languages/pt-BR.js +1 -1
  184. package/languages/ru-RU.js +1 -1
  185. package/languages/sr-SP.js +1 -1
  186. package/languages/zh-CN.js +1 -1
  187. package/languages/zh-TW.js +1 -1
  188. package/package.json +22 -7
  189. package/plugins/autoColumnSize/autoColumnSize.js +22 -27
  190. package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
  191. package/plugins/autoRowSize/autoRowSize.js +20 -22
  192. package/plugins/autoRowSize/autoRowSize.mjs +21 -23
  193. package/plugins/autofill/autofill.js +4 -5
  194. package/plugins/autofill/autofill.mjs +1 -1
  195. package/plugins/base/base.d.ts +1 -1
  196. package/plugins/base/base.js +41 -0
  197. package/plugins/base/base.mjs +42 -1
  198. package/plugins/base/index.js +2 -1
  199. package/plugins/base/index.mjs +1 -1
  200. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
  201. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
  202. package/plugins/columnSorting/columnSorting.js +5 -4
  203. package/plugins/columnSorting/columnSorting.mjs +3 -1
  204. package/plugins/columnSorting/columnStatesManager.js +1 -0
  205. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  206. package/plugins/columnSorting/utils.js +3 -0
  207. package/plugins/columnSorting/utils.mjs +3 -0
  208. package/plugins/columnSummary/endpoints.js +3 -0
  209. package/plugins/columnSummary/endpoints.mjs +3 -0
  210. package/plugins/comments/commentEditor.js +9 -0
  211. package/plugins/comments/commentEditor.mjs +9 -0
  212. package/plugins/comments/comments.js +24 -18
  213. package/plugins/comments/comments.mjs +26 -20
  214. package/plugins/comments/editorResizeObserver.js +2 -0
  215. package/plugins/comments/editorResizeObserver.mjs +2 -0
  216. package/plugins/contextMenu/contextMenu.d.ts +2 -1
  217. package/plugins/contextMenu/contextMenu.js +6 -7
  218. package/plugins/contextMenu/contextMenu.mjs +1 -1
  219. package/plugins/contextMenu/menu/index.js +2 -0
  220. package/plugins/contextMenu/menu/menu.js +10 -5
  221. package/plugins/contextMenu/menu/menu.mjs +11 -6
  222. package/plugins/contextMenu/menu/positioner.js +4 -2
  223. package/plugins/contextMenu/menu/positioner.mjs +4 -2
  224. package/plugins/contextMenu/menu/shortcuts.js +3 -1
  225. package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
  226. package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
  227. package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
  228. package/plugins/contextMenu/utils.js +0 -10
  229. package/plugins/contextMenu/utils.mjs +0 -9
  230. package/plugins/copyPaste/copyPaste.d.ts +1 -0
  231. package/plugins/copyPaste/copyPaste.js +32 -23
  232. package/plugins/copyPaste/copyPaste.mjs +24 -15
  233. package/plugins/customBorders/utils.js +2 -0
  234. package/plugins/customBorders/utils.mjs +2 -0
  235. package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
  236. package/plugins/dropdownMenu/dropdownMenu.js +6 -7
  237. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
  238. package/plugins/exportFile/types/csv.js +1 -0
  239. package/plugins/exportFile/types/csv.mjs +1 -0
  240. package/plugins/filters/component/condition.js +2 -0
  241. package/plugins/filters/component/condition.mjs +2 -0
  242. package/plugins/filters/component/operators.js +2 -0
  243. package/plugins/filters/component/operators.mjs +2 -0
  244. package/plugins/filters/component/value.js +3 -0
  245. package/plugins/filters/component/value.mjs +3 -0
  246. package/plugins/filters/conditionCollection.js +3 -0
  247. package/plugins/filters/conditionCollection.mjs +3 -0
  248. package/plugins/filters/conditionUpdateObserver.js +2 -0
  249. package/plugins/filters/conditionUpdateObserver.mjs +2 -0
  250. package/plugins/filters/filters.js +43 -13
  251. package/plugins/filters/filters.mjs +43 -13
  252. package/plugins/filters/logicalOperations/conjunction.js +2 -0
  253. package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
  254. package/plugins/filters/logicalOperations/disjunction.js +2 -0
  255. package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
  256. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
  257. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
  258. package/plugins/filters/menu/focusController.js +38 -14
  259. package/plugins/filters/menu/focusController.mjs +38 -14
  260. package/plugins/filters/ui/multipleSelect.js +10 -0
  261. package/plugins/filters/ui/multipleSelect.mjs +10 -0
  262. package/plugins/formulas/engine/register.js +3 -0
  263. package/plugins/formulas/engine/register.mjs +3 -0
  264. package/plugins/formulas/engine/settings.js +3 -0
  265. package/plugins/formulas/engine/settings.mjs +3 -0
  266. package/plugins/formulas/formulas.js +12 -7
  267. package/plugins/formulas/formulas.mjs +6 -1
  268. package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
  269. package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
  270. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
  271. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
  272. package/plugins/hiddenColumns/hiddenColumns.js +22 -30
  273. package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
  274. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
  275. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
  276. package/plugins/hiddenRows/hiddenRows.js +21 -29
  277. package/plugins/hiddenRows/hiddenRows.mjs +17 -25
  278. package/plugins/index.d.ts +3 -0
  279. package/plugins/index.js +3 -0
  280. package/plugins/index.mjs +3 -1
  281. package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
  282. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
  283. package/plugins/manualColumnMove/manualColumnMove.js +6 -6
  284. package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
  285. package/plugins/manualColumnResize/manualColumnResize.js +26 -12
  286. package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
  287. package/plugins/manualRowMove/manualRowMove.js +8 -6
  288. package/plugins/manualRowMove/manualRowMove.mjs +6 -4
  289. package/plugins/manualRowResize/manualRowResize.js +3 -2
  290. package/plugins/manualRowResize/manualRowResize.mjs +4 -3
  291. package/plugins/mergeCells/cellsCollection.js +19 -3
  292. package/plugins/mergeCells/cellsCollection.mjs +20 -4
  293. package/plugins/mergeCells/mergeCells.d.ts +6 -2
  294. package/plugins/mergeCells/mergeCells.js +84 -56
  295. package/plugins/mergeCells/mergeCells.mjs +82 -54
  296. package/plugins/mergeCells/renderer.js +13 -3
  297. package/plugins/mergeCells/renderer.mjs +13 -3
  298. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  299. package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
  300. package/plugins/nestedHeaders/nestedHeaders.js +63 -16
  301. package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
  302. package/plugins/nestedHeaders/stateManager/index.js +1 -0
  303. package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
  304. package/plugins/nestedRows/nestedRows.js +3 -0
  305. package/plugins/nestedRows/nestedRows.mjs +3 -0
  306. package/plugins/nestedRows/ui/headers.js +7 -1
  307. package/plugins/nestedRows/ui/headers.mjs +7 -1
  308. package/plugins/nestedRows/utils/rowMoveController.js +4 -0
  309. package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
  310. package/plugins/persistentState/persistentState.js +4 -4
  311. package/plugins/persistentState/persistentState.mjs +1 -1
  312. package/plugins/stretchColumns/calculator.js +162 -0
  313. package/plugins/stretchColumns/calculator.mjs +158 -0
  314. package/plugins/stretchColumns/index.d.ts +1 -0
  315. package/plugins/stretchColumns/index.js +7 -0
  316. package/plugins/stretchColumns/index.mjs +1 -0
  317. package/plugins/stretchColumns/strategies/_base.js +85 -0
  318. package/plugins/stretchColumns/strategies/_base.mjs +81 -0
  319. package/plugins/stretchColumns/strategies/all.js +71 -0
  320. package/plugins/stretchColumns/strategies/all.mjs +67 -0
  321. package/plugins/stretchColumns/strategies/last.js +79 -0
  322. package/plugins/stretchColumns/strategies/last.mjs +75 -0
  323. package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
  324. package/plugins/stretchColumns/stretchColumns.js +222 -0
  325. package/plugins/stretchColumns/stretchColumns.mjs +218 -0
  326. package/plugins/trimRows/trimRows.js +2 -0
  327. package/plugins/trimRows/trimRows.mjs +2 -0
  328. package/plugins/undoRedo/undoRedo.js +9 -5
  329. package/plugins/undoRedo/undoRedo.mjs +8 -3
  330. package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
  331. package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
  332. package/selection/index.js +2 -0
  333. package/selection/range.js +2 -0
  334. package/selection/range.mjs +2 -0
  335. package/selection/selection.js +7 -2
  336. package/selection/selection.mjs +7 -2
  337. package/selection/utils.js +2 -0
  338. package/selection/utils.mjs +2 -0
  339. package/settings.d.ts +4 -1
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
  342. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
  343. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
  344. package/shortcutContexts/commands/index.js +2 -0
  345. package/shortcutContexts/commands/index.mjs +2 -0
  346. package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
  347. package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
  348. package/shortcutContexts/index.js +2 -0
  349. package/shortcutContexts/index.mjs +2 -0
  350. package/shortcuts/context.js +3 -0
  351. package/shortcuts/context.mjs +3 -0
  352. package/shortcuts/recorder.js +3 -3
  353. package/shortcuts/recorder.mjs +3 -3
  354. package/shortcuts/utils.js +1 -0
  355. package/shortcuts/utils.mjs +1 -0
  356. package/styles/handsontable.css +2307 -0
  357. package/styles/handsontable.min.css +30 -0
  358. package/styles/ht-theme-horizon.css +607 -0
  359. package/styles/ht-theme-horizon.min.css +30 -0
  360. package/styles/ht-theme-main.css +613 -0
  361. package/styles/ht-theme-main.min.css +30 -0
  362. package/tableView.js +205 -33
  363. package/tableView.mjs +206 -34
  364. package/translations/changesObservable/observable.js +2 -0
  365. package/translations/changesObservable/observable.mjs +2 -0
  366. package/translations/index.js +2 -0
  367. package/translations/indexMapper.js +4 -0
  368. package/translations/indexMapper.mjs +4 -0
  369. package/translations/mapCollections/index.js +2 -0
  370. package/translations/mapCollections/mapCollection.js +2 -0
  371. package/translations/mapCollections/mapCollection.mjs +2 -0
  372. package/translations/maps/index.js +2 -0
  373. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  374. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  375. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  376. package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
  377. package/translations/maps/utils/physicallyIndexed.js +1 -0
  378. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  379. package/utils/autoResize.js +11 -3
  380. package/utils/autoResize.mjs +11 -3
  381. package/utils/dataStructures/priorityMap.js +1 -0
  382. package/utils/dataStructures/priorityMap.mjs +1 -0
  383. package/utils/dataStructures/uniqueMap.js +2 -0
  384. package/utils/dataStructures/uniqueMap.mjs +2 -0
  385. package/utils/ghostTable.js +7 -3
  386. package/utils/ghostTable.mjs +7 -3
  387. package/utils/parseTable.js +4 -0
  388. package/utils/parseTable.mjs +4 -0
  389. package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
  390. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  391. package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
  392. package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
package/tableView.mjs CHANGED
@@ -9,7 +9,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
9
9
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
10
10
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
11
11
  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"); }
12
- import { addClass, clearTextSelection, empty, fastInnerHTML, fastInnerText, getScrollbarWidth, hasClass, isChildOf, isInput, isOutsideInput, isVisible, setAttribute, getParentWindow } from "./helpers/dom/element.mjs";
12
+ import { addClass, removeClass, clearTextSelection, empty, fastInnerHTML, fastInnerText, getScrollbarWidth, hasClass, isChildOf, isInput, isOutsideInput, isVisible, setAttribute, getParentWindow } from "./helpers/dom/element.mjs";
13
13
  import EventManager from "./eventManager.mjs";
14
14
  import { isImmediatePropagationStopped, isRightClick, isLeftClick } from "./helpers/dom/event.mjs";
15
15
  import Walkontable from "./3rdparty/walkontable/src/index.mjs";
@@ -154,9 +154,10 @@ class TableView {
154
154
  this.hot.runHooks('beforeRender', this.hot.forceFullRender);
155
155
  if (this.postponedAdjustElementsSize) {
156
156
  this.postponedAdjustElementsSize = false;
157
- this.adjustElementsSize(true);
157
+ this.adjustElementsSize();
158
158
  }
159
159
  this._wt.draw(!this.hot.forceFullRender);
160
+ _assertClassBrand(_TableView_brand, this, _updateScrollbarClassNames).call(this);
160
161
  this.hot.runHooks('afterRender', this.hot.forceFullRender);
161
162
  this.hot.forceFullRender = false;
162
163
  this.hot.renderCall = false;
@@ -194,38 +195,43 @@ class TableView {
194
195
  * Scroll viewport to a cell.
195
196
  *
196
197
  * @param {CellCoords} coords Renderable cell coordinates.
197
- * @param {boolean} [snapToTop] If `true`, viewport is scrolled to show the cell on the top of the table.
198
- * @param {boolean} [snapToRight] If `true`, viewport is scrolled to show the cell on the right side of the table.
199
- * @param {boolean} [snapToBottom] If `true`, viewport is scrolled to show the cell on the bottom side of the table.
200
- * @param {boolean} [snapToLeft] If `true`, viewport is scrolled to show the cell on the left side of the table.
198
+ * @param {'auto' | 'start' | 'end'} [horizontalSnap] If `'start'`, viewport is scrolled to show
199
+ * the cell on the left of the table. If `'end'`, viewport is scrolled to show the cell on the right of
200
+ * the table. When `'auto'`, the viewport is scrolled only when the column is outside of the viewport.
201
+ * @param {'auto' | 'top' | 'bottom'} [verticalSnap] If `'top'`, viewport is scrolled to show
202
+ * the cell on the top of the table. If `'bottom'`, viewport is scrolled to show the cell on the bottom of
203
+ * the table. When `'auto'`, the viewport is scrolled only when the row is outside of the viewport.
201
204
  * @returns {boolean}
202
205
  */
203
- scrollViewport(coords, snapToTop, snapToRight, snapToBottom, snapToLeft) {
204
- return this._wt.scrollViewport(coords, snapToTop, snapToRight, snapToBottom, snapToLeft);
206
+ scrollViewport(coords, horizontalSnap, verticalSnap) {
207
+ return this._wt.scrollViewport(coords, horizontalSnap, verticalSnap);
205
208
  }
206
209
 
207
210
  /**
208
211
  * Scroll viewport to a column.
209
212
  *
210
213
  * @param {number} column Renderable column index.
211
- * @param {boolean} [snapToRight] If `true`, viewport is scrolled to show the cell on the right side of the table.
212
- * @param {boolean} [snapToLeft] If `true`, viewport is scrolled to show the cell on the left side of the table.
214
+ * @param {'auto' | 'start' | 'end'} [snap] If `'start'`, viewport is scrolled to show
215
+ * the cell on the left of the table. If `'end'`, viewport is scrolled to show the cell on the right of
216
+ * the table. When `'auto'`, the viewport is scrolled only when the column is outside of the viewport.
213
217
  * @returns {boolean}
214
218
  */
215
- scrollViewportHorizontally(column, snapToRight, snapToLeft) {
216
- return this._wt.scrollViewportHorizontally(column, snapToRight, snapToLeft);
219
+ scrollViewportHorizontally(column, snap) {
220
+ return this._wt.scrollViewportHorizontally(column, snap);
217
221
  }
218
222
 
219
223
  /**
220
224
  * Scroll viewport to a row.
221
225
  *
222
226
  * @param {number} row Renderable row index.
223
- * @param {boolean} [snapToTop] If `true`, viewport is scrolled to show the cell on the top of the table.
224
- * @param {boolean} [snapToBottom] If `true`, viewport is scrolled to show the cell on the bottom side of the table.
227
+ * @param {'auto' | 'top' | 'bottom'} [snap] If `'top'`, viewport is scrolled to show
228
+ * the cell on the top of the table. If `'bottom'`, viewport is scrolled to show the cell on
229
+ * the bottom of the table. When `'auto'`, the viewport is scrolled only when the row is outside of
230
+ * the viewport.
225
231
  * @returns {boolean}
226
232
  */
227
- scrollViewportVertically(row, snapToTop, snapToBottom) {
228
- return this._wt.scrollViewportVertically(row, snapToTop, snapToBottom);
233
+ scrollViewportVertically(row, snap) {
234
+ return this._wt.scrollViewportVertically(row, snap);
229
235
  }
230
236
 
231
237
  /**
@@ -583,6 +589,52 @@ class TableView {
583
589
  return count;
584
590
  }
585
591
 
592
+ /**
593
+ * Retrieves the styles handler from the Walkontable instance.
594
+ *
595
+ * @returns {StylesHandler} The styles handler instance.
596
+ */
597
+ getStylesHandler() {
598
+ return this._wt.stylesHandler;
599
+ }
600
+
601
+ /**
602
+ * Returns the default row height.
603
+ *
604
+ * This method retrieves the default row height from the Walkontable styles handler.
605
+ *
606
+ * @returns {number} The default row height.
607
+ */
608
+ getDefaultRowHeight() {
609
+ return this._wt.stylesHandler.getDefaultRowHeight();
610
+ }
611
+
612
+ /**
613
+ * Add a class name to the license information element.
614
+ *
615
+ * @param {string} className The class name to add.
616
+ */
617
+ addClassNameToLicenseElement(className) {
618
+ var _this$hot$rootElement;
619
+ const licenseInfoElement = (_this$hot$rootElement = this.hot.rootElement.parentNode) === null || _this$hot$rootElement === void 0 ? void 0 : _this$hot$rootElement.querySelector('.hot-display-license-info');
620
+ if (licenseInfoElement) {
621
+ addClass(licenseInfoElement, className);
622
+ }
623
+ }
624
+
625
+ /**
626
+ * Remove a class name from the license information element.
627
+ *
628
+ * @param {string} className The class name to remove.
629
+ */
630
+ removeClassNameFromLicenseElement(className) {
631
+ var _this$hot$rootElement2;
632
+ const licenseInfoElement = (_this$hot$rootElement2 = this.hot.rootElement.parentNode) === null || _this$hot$rootElement2 === void 0 ? void 0 : _this$hot$rootElement2.querySelector('.hot-display-license-info');
633
+ if (licenseInfoElement) {
634
+ removeClass(licenseInfoElement, className);
635
+ }
636
+ }
637
+
586
638
  /**
587
639
  * Checks if at least one cell than belongs to the main table is not covered by the top, left or
588
640
  * bottom overlay.
@@ -609,7 +661,8 @@ class TableView {
609
661
  isDataViewInstance: () => isRootInstance(this.hot),
610
662
  preventOverflow: () => this.settings.preventOverflow,
611
663
  preventWheel: () => this.settings.preventWheel,
612
- stretchH: () => this.settings.stretchH,
664
+ viewportColumnRenderingThreshold: () => this.settings.viewportColumnRenderingThreshold,
665
+ viewportRowRenderingThreshold: () => this.settings.viewportRowRenderingThreshold,
613
666
  data: (renderableRow, renderableColumn) => {
614
667
  return this.hot.getDataAtCell(...this.translateFromRenderableToVisualIndex(renderableRow, renderableColumn));
615
668
  },
@@ -692,7 +745,7 @@ class TableView {
692
745
  const [visualRowIndex, visualColumnIndex] = this.translateFromRenderableToVisualIndex(renderedRowIndex, renderedColumnIndex);
693
746
 
694
747
  // Coords may be modified. For example, by the `MergeCells` plugin. It should affect cell value and cell meta.
695
- const modifiedCellCoords = this.hot.runHooks('modifyGetCellCoords', visualRowIndex, visualColumnIndex);
748
+ const modifiedCellCoords = this.hot.runHooks('modifyGetCellCoords', visualRowIndex, visualColumnIndex, false, 'meta');
696
749
  let visualRowToCheck = visualRowIndex;
697
750
  let visualColumnToCheck = visualColumnIndex;
698
751
  if (Array.isArray(modifiedCellCoords)) {
@@ -815,7 +868,7 @@ class TableView {
815
868
  },
816
869
  beforeDraw: (force, skipRender) => this.beforeRender(force, skipRender),
817
870
  onDraw: force => this.afterRender(force),
818
- onBeforeViewportScrollVertically: renderableRow => {
871
+ onBeforeViewportScrollVertically: (renderableRow, snapping) => {
819
872
  const rowMapper = this.hot.rowIndexMapper;
820
873
  const areColumnHeadersSelected = renderableRow < 0;
821
874
  let visualRow = renderableRow;
@@ -827,14 +880,14 @@ class TableView {
827
880
  return renderableRow;
828
881
  }
829
882
  }
830
- visualRow = this.hot.runHooks('beforeViewportScrollVertically', visualRow);
883
+ visualRow = this.hot.runHooks('beforeViewportScrollVertically', visualRow, snapping);
831
884
  this.hot.runHooks('beforeViewportScroll');
832
885
  if (!areColumnHeadersSelected) {
833
886
  return rowMapper.getRenderableFromVisualIndex(visualRow);
834
887
  }
835
888
  return visualRow;
836
889
  },
837
- onBeforeViewportScrollHorizontally: renderableColumn => {
890
+ onBeforeViewportScrollHorizontally: (renderableColumn, snapping) => {
838
891
  const columnMapper = this.hot.columnIndexMapper;
839
892
  const areRowHeadersSelected = renderableColumn < 0;
840
893
  let visualColumn = renderableColumn;
@@ -846,7 +899,7 @@ class TableView {
846
899
  return renderableColumn;
847
900
  }
848
901
  }
849
- visualColumn = this.hot.runHooks('beforeViewportScrollHorizontally', visualColumn);
902
+ visualColumn = this.hot.runHooks('beforeViewportScrollHorizontally', visualColumn, snapping);
850
903
  this.hot.runHooks('beforeViewportScroll');
851
904
  if (!areRowHeadersSelected) {
852
905
  return columnMapper.getRenderableFromVisualIndex(visualColumn);
@@ -906,19 +959,15 @@ class TableView {
906
959
  },
907
960
  onBeforeTouchScroll: () => this.hot.runHooks('beforeTouchScroll'),
908
961
  onAfterMomentumScroll: () => this.hot.runHooks('afterMomentumScroll'),
909
- onBeforeStretchingColumnWidth: (stretchedWidth, renderedColumnIndex) => {
910
- const visualColumnIndex = this.hot.columnIndexMapper.getVisualFromRenderableIndex(renderedColumnIndex);
911
- return this.hot.runHooks('beforeStretchingColumnWidth', stretchedWidth, visualColumnIndex);
912
- },
913
962
  onModifyRowHeaderWidth: rowHeaderWidth => this.hot.runHooks('modifyRowHeaderWidth', rowHeaderWidth),
914
- onModifyGetCellCoords: (renderableRowIndex, renderableColumnIndex, topmost) => {
963
+ onModifyGetCellCoords: (renderableRowIndex, renderableColumnIndex, topmost, source) => {
915
964
  const rowMapper = this.hot.rowIndexMapper;
916
965
  const columnMapper = this.hot.columnIndexMapper;
917
966
 
918
967
  // Callback handle also headers. We shouldn't translate them.
919
968
  const visualColumnIndex = renderableColumnIndex >= 0 ? columnMapper.getVisualFromRenderableIndex(renderableColumnIndex) : renderableColumnIndex;
920
969
  const visualRowIndex = renderableRowIndex >= 0 ? rowMapper.getVisualFromRenderableIndex(renderableRowIndex) : renderableRowIndex;
921
- const visualIndexes = this.hot.runHooks('modifyGetCellCoords', visualRowIndex, visualColumnIndex, topmost);
970
+ const visualIndexes = this.hot.runHooks('modifyGetCellCoords', visualRowIndex, visualColumnIndex, topmost, source);
922
971
  if (Array.isArray(visualIndexes)) {
923
972
  const [visualRowFrom, visualColumnFrom, visualRowTo, visualColumnTo] = visualIndexes;
924
973
 
@@ -926,6 +975,17 @@ class TableView {
926
975
  return [visualRowFrom >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRowFrom, 1)) : visualRowFrom, visualColumnFrom >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumnFrom, 1)) : visualColumnFrom, visualRowTo >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRowTo, -1)) : visualRowTo, visualColumnTo >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumnTo, -1)) : visualColumnTo];
927
976
  }
928
977
  },
978
+ onModifyGetCoordsElement: (renderableRowIndex, renderableColumnIndex) => {
979
+ const rowMapper = this.hot.rowIndexMapper;
980
+ const columnMapper = this.hot.columnIndexMapper;
981
+ const visualColumnIndex = renderableColumnIndex >= 0 ? columnMapper.getVisualFromRenderableIndex(renderableColumnIndex) : renderableColumnIndex;
982
+ const visualRowIndex = renderableRowIndex >= 0 ? rowMapper.getVisualFromRenderableIndex(renderableRowIndex) : renderableRowIndex;
983
+ const visualIndexes = this.hot.runHooks('modifyGetCoordsElement', visualRowIndex, visualColumnIndex);
984
+ if (Array.isArray(visualIndexes)) {
985
+ const [visualRow, visualColumn] = visualIndexes;
986
+ return [visualRow >= 0 ? rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(visualRow, 1)) : visualRow, visualColumn >= 0 ? columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(visualColumn, 1)) : visualColumn];
987
+ }
988
+ },
929
989
  viewportRowCalculatorOverride: calc => {
930
990
  let viewportOffset = this.settings.viewportRowRenderingOffset;
931
991
  if (viewportOffset === 'auto' && this.settings.fixedRowsTop) {
@@ -939,7 +999,7 @@ class TableView {
939
999
  calc.startRow = Math.max(firstRenderedRow - viewportOffset, 0);
940
1000
  calc.endRow = Math.min(lastRenderedRow + viewportOffset, renderableRows - 1);
941
1001
  } else if (viewportOffset === 'auto') {
942
- const offset = Math.ceil(lastRenderedRow / renderableRows * 12);
1002
+ const offset = Math.max(1, Math.ceil(lastRenderedRow / renderableRows * 12));
943
1003
  calc.startRow = Math.max(firstRenderedRow - offset, 0);
944
1004
  calc.endRow = Math.min(lastRenderedRow + offset, renderableRows - 1);
945
1005
  }
@@ -960,7 +1020,7 @@ class TableView {
960
1020
  calc.endColumn = Math.min(lastRenderedColumn + viewportOffset, renderableColumns - 1);
961
1021
  }
962
1022
  if (viewportOffset === 'auto') {
963
- const offset = Math.ceil(lastRenderedColumn / renderableColumns * 6);
1023
+ const offset = Math.max(1, Math.ceil(lastRenderedColumn / renderableColumns * 6));
964
1024
  calc.startColumn = Math.max(firstRenderedColumn - offset, 0);
965
1025
  calc.endColumn = Math.min(lastRenderedColumn + offset, renderableColumns - 1);
966
1026
  }
@@ -1262,7 +1322,9 @@ class TableView {
1262
1322
  if (!this._wt.wtViewport.rowsRenderCalculator) {
1263
1323
  return null;
1264
1324
  }
1265
- return this.hot.rowIndexMapper.getNearestNotHiddenIndex(this._wt.wtTable.getFirstRenderedRow(), 1);
1325
+ const indexMapper = this.hot.rowIndexMapper;
1326
+ const visualRowIndex = indexMapper.getVisualFromRenderableIndex(this._wt.wtTable.getFirstRenderedRow());
1327
+ return indexMapper.getNearestNotHiddenIndex(visualRowIndex !== null && visualRowIndex !== void 0 ? visualRowIndex : 0, 1);
1266
1328
  }
1267
1329
 
1268
1330
  /**
@@ -1274,7 +1336,9 @@ class TableView {
1274
1336
  if (!this._wt.wtViewport.rowsRenderCalculator) {
1275
1337
  return null;
1276
1338
  }
1277
- return this.hot.rowIndexMapper.getNearestNotHiddenIndex(this._wt.wtTable.getLastRenderedRow(), -1);
1339
+ const indexMapper = this.hot.rowIndexMapper;
1340
+ const visualRowIndex = indexMapper.getVisualFromRenderableIndex(this._wt.wtTable.getLastRenderedRow());
1341
+ return indexMapper.getNearestNotHiddenIndex(visualRowIndex !== null && visualRowIndex !== void 0 ? visualRowIndex : this.hot.countRows() - 1, -1);
1278
1342
  }
1279
1343
 
1280
1344
  /**
@@ -1286,7 +1350,9 @@ class TableView {
1286
1350
  if (!this._wt.wtViewport.columnsRenderCalculator) {
1287
1351
  return null;
1288
1352
  }
1289
- return this.hot.columnIndexMapper.getNearestNotHiddenIndex(this._wt.wtTable.getFirstRenderedColumn(), 1);
1353
+ const indexMapper = this.hot.columnIndexMapper;
1354
+ const visualColumnIndex = indexMapper.getVisualFromRenderableIndex(this._wt.wtTable.getFirstRenderedColumn());
1355
+ return indexMapper.getNearestNotHiddenIndex(visualColumnIndex !== null && visualColumnIndex !== void 0 ? visualColumnIndex : 0, 1);
1290
1356
  }
1291
1357
 
1292
1358
  /**
@@ -1298,7 +1364,9 @@ class TableView {
1298
1364
  if (!this._wt.wtViewport.columnsRenderCalculator) {
1299
1365
  return null;
1300
1366
  }
1301
- return this.hot.columnIndexMapper.getNearestNotHiddenIndex(this._wt.wtTable.getLastRenderedColumn(), -1);
1367
+ const indexMapper = this.hot.columnIndexMapper;
1368
+ const visualColumnIndex = indexMapper.getVisualFromRenderableIndex(this._wt.wtTable.getLastRenderedColumn());
1369
+ return indexMapper.getNearestNotHiddenIndex(visualColumnIndex !== null && visualColumnIndex !== void 0 ? visualColumnIndex : this.hot.countCols() - 1, -1);
1302
1370
  }
1303
1371
 
1304
1372
  /**
@@ -1460,6 +1528,16 @@ class TableView {
1460
1528
  return this._wt.getOverlayByName(overlayName);
1461
1529
  }
1462
1530
 
1531
+ /**
1532
+ * Gets the name of the overlay that currently renders the table. If the method is called out of the render cycle
1533
+ * the 'master' name is returned.
1534
+ *
1535
+ * @returns {string}
1536
+ */
1537
+ getActiveOverlayName() {
1538
+ return this._wt.activeOverlayName;
1539
+ }
1540
+
1463
1541
  /**
1464
1542
  * Checks if the table is visible or not.
1465
1543
  *
@@ -1468,6 +1546,80 @@ class TableView {
1468
1546
  isVisible() {
1469
1547
  return this._wt.wtTable.isVisible();
1470
1548
  }
1549
+
1550
+ /**
1551
+ * Checks if the table has a horizontal scrollbar.
1552
+ *
1553
+ * @returns {boolean}
1554
+ */
1555
+ hasVerticalScroll() {
1556
+ return this._wt.wtViewport.hasVerticalScroll();
1557
+ }
1558
+
1559
+ /**
1560
+ * Checks if the table has a vertical scrollbar.
1561
+ *
1562
+ * @returns {boolean}
1563
+ */
1564
+ hasHorizontalScroll() {
1565
+ return this._wt.wtViewport.hasHorizontalScroll();
1566
+ }
1567
+
1568
+ /**
1569
+ * Gets the table's width.
1570
+ *
1571
+ * @returns {boolean}
1572
+ */
1573
+ getTableWidth() {
1574
+ return this._wt.wtTable.getWidth();
1575
+ }
1576
+
1577
+ /**
1578
+ * Gets the table's height.
1579
+ *
1580
+ * @returns {boolean}
1581
+ */
1582
+ getTableHeight() {
1583
+ return this._wt.wtTable.getHeight();
1584
+ }
1585
+
1586
+ /**
1587
+ * Gets the row header width. If there are multiple row headers, the width of
1588
+ * the sum of all of them is returned.
1589
+ *
1590
+ * @returns {number}
1591
+ */
1592
+ getRowHeaderWidth() {
1593
+ return this._wt.wtViewport.getRowHeaderWidth();
1594
+ }
1595
+
1596
+ /**
1597
+ * Gets the column header height. If there are multiple column headers, the height
1598
+ * of the sum of all of them is returned.
1599
+ *
1600
+ * @returns {number}
1601
+ */
1602
+ getColumnHeaderHeight() {
1603
+ return this._wt.wtViewport.getColumnHeaderHeight();
1604
+ }
1605
+
1606
+ /**
1607
+ * Checks if the table uses the window as a viewport and if there is a vertical scrollbar.
1608
+ *
1609
+ * @returns {boolean}
1610
+ */
1611
+ isVerticallyScrollableByWindow() {
1612
+ return this._wt.wtViewport.isVerticallyScrollableByWindow();
1613
+ }
1614
+
1615
+ /**
1616
+ * Checks if the table uses the window as a viewport and if there is a horizontal scrollbar.
1617
+ *
1618
+ * @returns {boolean}
1619
+ */
1620
+ isHorizontallyScrollableByWindow() {
1621
+ return this._wt.wtViewport.isHorizontallyScrollableByWindow();
1622
+ }
1471
1623
  /**
1472
1624
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
1473
1625
  *
@@ -1490,4 +1642,24 @@ function _updateAriaColcount(delta) {
1490
1642
  const colCount = _assertClassBrand(_TableView_brand, this, _getAriaColcount).call(this) + delta;
1491
1643
  setAttribute(this.hot.rootElement, ...A11Y_COLCOUNT(colCount));
1492
1644
  }
1645
+ /**
1646
+ * Updates the class names on the root element based on the presence of scrollbars.
1647
+ *
1648
+ * This method checks if the table has vertical and/or horizontal scrollbars and
1649
+ * adds or removes the corresponding class names (`htHasScrollY` and `htHasScrollX`)
1650
+ * to/from the root element.
1651
+ */
1652
+ function _updateScrollbarClassNames() {
1653
+ const rootElement = this.hot.rootElement;
1654
+ if (this.hasVerticalScroll()) {
1655
+ addClass(rootElement, 'htHasScrollY');
1656
+ } else {
1657
+ removeClass(rootElement, 'htHasScrollY');
1658
+ }
1659
+ if (this.hasHorizontalScroll()) {
1660
+ addClass(rootElement, 'htHasScrollX');
1661
+ } else {
1662
+ removeClass(rootElement, 'htHasScrollX');
1663
+ }
1664
+ }
1493
1665
  export default TableView;
@@ -9,6 +9,8 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
9
9
  require("core-js/modules/es.set.is-superset-of.v2.js");
10
10
  require("core-js/modules/es.set.symmetric-difference.v2.js");
11
11
  require("core-js/modules/es.set.union.v2.js");
12
+ require("core-js/modules/esnext.iterator.constructor.js");
13
+ require("core-js/modules/esnext.iterator.for-each.js");
12
14
  var _observer = require("./observer");
13
15
  var _utils = require("./utils");
14
16
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
@@ -6,6 +6,8 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
6
6
  import "core-js/modules/es.set.is-superset-of.v2.js";
7
7
  import "core-js/modules/es.set.symmetric-difference.v2.js";
8
8
  import "core-js/modules/es.set.union.v2.js";
9
+ import "core-js/modules/esnext.iterator.constructor.js";
10
+ import "core-js/modules/esnext.iterator.for-each.js";
9
11
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
10
12
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
11
13
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/esnext.iterator.constructor.js");
4
+ require("core-js/modules/esnext.iterator.for-each.js");
3
5
  exports.__esModule = true;
4
6
  var _exportNames = {
5
7
  IndexMapper: true,
@@ -9,6 +9,10 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
9
9
  require("core-js/modules/es.set.is-superset-of.v2.js");
10
10
  require("core-js/modules/es.set.symmetric-difference.v2.js");
11
11
  require("core-js/modules/es.set.union.v2.js");
12
+ require("core-js/modules/esnext.iterator.constructor.js");
13
+ require("core-js/modules/esnext.iterator.filter.js");
14
+ require("core-js/modules/esnext.iterator.map.js");
15
+ require("core-js/modules/esnext.iterator.some.js");
12
16
  var _array = require("../helpers/array");
13
17
  var _maps = require("./maps");
14
18
  var _mapCollections = require("./mapCollections");
@@ -9,6 +9,10 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
9
9
  import "core-js/modules/es.set.is-superset-of.v2.js";
10
10
  import "core-js/modules/es.set.symmetric-difference.v2.js";
11
11
  import "core-js/modules/es.set.union.v2.js";
12
+ import "core-js/modules/esnext.iterator.constructor.js";
13
+ import "core-js/modules/esnext.iterator.filter.js";
14
+ import "core-js/modules/esnext.iterator.map.js";
15
+ import "core-js/modules/esnext.iterator.some.js";
12
16
  import { arrayMap } from "../helpers/array.mjs";
13
17
  import { createIndexMap, getListWithInsertedItems, getListWithRemovedItems, HidingMap, IndexesSequence, TrimmingMap } from "./maps/index.mjs";
14
18
  import { AggregatedCollection, MapCollection } from "./mapCollections/index.mjs";
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/esnext.iterator.constructor.js");
4
+ require("core-js/modules/esnext.iterator.for-each.js");
3
5
  exports.__esModule = true;
4
6
  var _aggregatedCollection = require("./aggregatedCollection");
5
7
  Object.keys(_aggregatedCollection).forEach(function (key) {
@@ -3,6 +3,8 @@
3
3
  exports.__esModule = true;
4
4
  exports.getRegisteredMapsCounter = getRegisteredMapsCounter;
5
5
  require("core-js/modules/es.error.cause.js");
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.for-each.js");
6
8
  var _mixed = require("../../helpers/mixed");
7
9
  var _object = require("../../helpers/object");
8
10
  var _localHooks = _interopRequireDefault(require("../../mixins/localHooks"));
@@ -1,4 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.constructor.js";
3
+ import "core-js/modules/esnext.iterator.for-each.js";
2
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
6
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/esnext.iterator.constructor.js");
4
+ require("core-js/modules/esnext.iterator.for-each.js");
3
5
  exports.__esModule = true;
4
6
  var _exportNames = {
5
7
  createIndexMap: true,
@@ -2,6 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.iterator.map.js");
5
6
  var _indexMap = require("./indexMap");
6
7
  var _physicallyIndexed = require("./utils/physicallyIndexed");
7
8
  var _indexesSequence = require("./utils/indexesSequence");
@@ -1,4 +1,5 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.map.js";
2
3
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -3,6 +3,8 @@
3
3
  exports.__esModule = true;
4
4
  exports.getDecreasedIndexes = getDecreasedIndexes;
5
5
  exports.getIncreasedIndexes = getIncreasedIndexes;
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.filter.js");
6
8
  var _array = require("../../../helpers/array");
7
9
  /**
8
10
  * Transform mappings after removal.
@@ -1,3 +1,5 @@
1
+ import "core-js/modules/esnext.iterator.constructor.js";
2
+ import "core-js/modules/esnext.iterator.filter.js";
1
3
  import { arrayMap } from "../../../helpers/array.mjs";
2
4
  /**
3
5
  * Transform mappings after removal.
@@ -3,6 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  exports.getListWithInsertedItems = getListWithInsertedItems;
5
5
  exports.getListWithRemovedItems = getListWithRemovedItems;
6
+ require("core-js/modules/esnext.iterator.map.js");
6
7
  var _function = require("../../../helpers/function");
7
8
  var _array = require("../../../helpers/array");
8
9
  /**
@@ -1,3 +1,4 @@
1
+ import "core-js/modules/esnext.iterator.map.js";
1
2
  import { isFunction } from "../../../helpers/function.mjs";
2
3
  import { arrayFilter } from "../../../helpers/array.mjs";
3
4
  /**
@@ -48,6 +48,7 @@ function getComputedStyle(element) {
48
48
  * @property {number} maxWidth The maximum width of the element.
49
49
  * @property {number} minHeight The minimum height of the element.
50
50
  * @property {number} maxHeight The maximum height of the element.
51
+ * @property {function(HTMLElement): string} textContent The function that returns the text content to measure.
51
52
  */
52
53
  /**
53
54
  * @typedef InputElementResizer
@@ -59,14 +60,18 @@ function getComputedStyle(element) {
59
60
  * Creates an input element resizer.
60
61
  *
61
62
  * @param {Document} ownerDocument The document to create the resizer for.
63
+ * @param {InputElementResizerConfig} initialOptions The configuration to extend the defaults with.
62
64
  * @returns {InputElementResizer}
63
65
  */
64
66
  function createInputElementResizer(ownerDocument) {
67
+ let initialOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
65
68
  const defaults = {
66
69
  minHeight: 200,
67
70
  maxHeight: 300,
68
71
  minWidth: 100,
69
- maxWidth: 300
72
+ maxWidth: 300,
73
+ textContent: element => element.value,
74
+ ...initialOptions
70
75
  };
71
76
  const body = ownerDocument.body;
72
77
  const textHolder = ownerDocument.createTextNode('');
@@ -77,7 +82,8 @@ function createInputElementResizer(ownerDocument) {
77
82
  * Resizes the element.
78
83
  */
79
84
  function resize() {
80
- textHolder.textContent = observedElement.value;
85
+ var _getComputedStyle, _getComputedStyle2;
86
+ textHolder.textContent = defaults.textContent(observedElement);
81
87
  // Won't expand the element size for displaying body as for example, `grid`, `inline-grid` or `flex` with
82
88
  // `flex-direction` set as `column`.
83
89
  textContainer.style.position = 'absolute';
@@ -85,7 +91,9 @@ function createInputElementResizer(ownerDocument) {
85
91
  textContainer.style.fontFamily = getComputedStyle(observedElement).fontFamily;
86
92
  textContainer.style.whiteSpace = 'pre';
87
93
  body.appendChild(textContainer);
88
- const width = textContainer.clientWidth + 2;
94
+ const paddingStart = parseInt(((_getComputedStyle = getComputedStyle(observedElement)) === null || _getComputedStyle === void 0 ? void 0 : _getComputedStyle.paddingInlineStart) || 0, 10);
95
+ const paddingEnd = parseInt(((_getComputedStyle2 = getComputedStyle(observedElement)) === null || _getComputedStyle2 === void 0 ? void 0 : _getComputedStyle2.paddingInlineEnd) || 0, 10);
96
+ const width = textContainer.clientWidth + 2 + paddingStart + paddingEnd;
89
97
  body.removeChild(textContainer);
90
98
  const elementStyle = observedElement.style;
91
99
  elementStyle.height = `${defaults.minHeight}px`;
@@ -44,6 +44,7 @@ function getComputedStyle(element) {
44
44
  * @property {number} maxWidth The maximum width of the element.
45
45
  * @property {number} minHeight The minimum height of the element.
46
46
  * @property {number} maxHeight The maximum height of the element.
47
+ * @property {function(HTMLElement): string} textContent The function that returns the text content to measure.
47
48
  */
48
49
  /**
49
50
  * @typedef InputElementResizer
@@ -55,14 +56,18 @@ function getComputedStyle(element) {
55
56
  * Creates an input element resizer.
56
57
  *
57
58
  * @param {Document} ownerDocument The document to create the resizer for.
59
+ * @param {InputElementResizerConfig} initialOptions The configuration to extend the defaults with.
58
60
  * @returns {InputElementResizer}
59
61
  */
60
62
  export function createInputElementResizer(ownerDocument) {
63
+ let initialOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
61
64
  const defaults = {
62
65
  minHeight: 200,
63
66
  maxHeight: 300,
64
67
  minWidth: 100,
65
- maxWidth: 300
68
+ maxWidth: 300,
69
+ textContent: element => element.value,
70
+ ...initialOptions
66
71
  };
67
72
  const body = ownerDocument.body;
68
73
  const textHolder = ownerDocument.createTextNode('');
@@ -73,7 +78,8 @@ export function createInputElementResizer(ownerDocument) {
73
78
  * Resizes the element.
74
79
  */
75
80
  function resize() {
76
- textHolder.textContent = observedElement.value;
81
+ var _getComputedStyle, _getComputedStyle2;
82
+ textHolder.textContent = defaults.textContent(observedElement);
77
83
  // Won't expand the element size for displaying body as for example, `grid`, `inline-grid` or `flex` with
78
84
  // `flex-direction` set as `column`.
79
85
  textContainer.style.position = 'absolute';
@@ -81,7 +87,9 @@ export function createInputElementResizer(ownerDocument) {
81
87
  textContainer.style.fontFamily = getComputedStyle(observedElement).fontFamily;
82
88
  textContainer.style.whiteSpace = 'pre';
83
89
  body.appendChild(textContainer);
84
- const width = textContainer.clientWidth + 2;
90
+ const paddingStart = parseInt(((_getComputedStyle = getComputedStyle(observedElement)) === null || _getComputedStyle === void 0 ? void 0 : _getComputedStyle.paddingInlineStart) || 0, 10);
91
+ const paddingEnd = parseInt(((_getComputedStyle2 = getComputedStyle(observedElement)) === null || _getComputedStyle2 === void 0 ? void 0 : _getComputedStyle2.paddingInlineEnd) || 0, 10);
92
+ const width = textContainer.clientWidth + 2 + paddingStart + paddingEnd;
85
93
  body.removeChild(textContainer);
86
94
  const elementStyle = observedElement.style;
87
95
  elementStyle.height = `${defaults.minHeight}px`;
@@ -3,6 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  exports.createPriorityMap = createPriorityMap;
5
5
  require("core-js/modules/es.error.cause.js");
6
+ require("core-js/modules/esnext.iterator.map.js");
6
7
  var _number = require("../../helpers/number");
7
8
  var _function = require("../../helpers/function");
8
9
  const ASC = exports.ASC = 'asc';