handsontable 14.6.1-next-689aaa6-20241016 → 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
@@ -1,5 +1,7 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.for-each.js";
3
5
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
6
  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; }
5
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -71,6 +73,7 @@ var _stateManager = /*#__PURE__*/new WeakMap();
71
73
  var _hidingIndexMapObserver = /*#__PURE__*/new WeakMap();
72
74
  var _focusInitialCoords = /*#__PURE__*/new WeakMap();
73
75
  var _isColumnsSelectionInProgress = /*#__PURE__*/new WeakMap();
76
+ var _recentlyHighlightCoords = /*#__PURE__*/new WeakMap();
74
77
  var _NestedHeaders_brand = /*#__PURE__*/new WeakSet();
75
78
  export class NestedHeaders extends BasePlugin {
76
79
  constructor() {
@@ -105,6 +108,14 @@ export class NestedHeaders extends BasePlugin {
105
108
  * @type {boolean}
106
109
  */
107
110
  _classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress, false);
111
+ /**
112
+ * Keeps the last highlight position made by column selection. The coords are necessary to scroll
113
+ * the viewport to the correct position when the nested header is clicked when the `navigableHeaders`
114
+ * option is disabled.
115
+ *
116
+ * @type {CellCoords | null}
117
+ */
118
+ _classPrivateFieldInitSpec(this, _recentlyHighlightCoords, null);
108
119
  /**
109
120
  * Custom helper for getting widths of the nested headers.
110
121
  *
@@ -524,9 +535,13 @@ function _updateFocusHighlightPosition() {
524
535
  * indexes are used.
525
536
  *
526
537
  * @param {number} visualColumn A visual column index to which the viewport will be scrolled.
538
+ * @param {{ value: 'auto' | 'start' | 'end' }} snapping If `'start'`, viewport is scrolled to show
539
+ * the cell on the left of the table. If `'end'`, viewport is scrolled to show the cell on the right of
540
+ * the table. When `'auto'`, the viewport is scrolled only when the column is outside of the viewport.
527
541
  * @returns {number}
528
542
  */
529
- function _onBeforeViewportScrollHorizontally(visualColumn) {
543
+ function _onBeforeViewportScrollHorizontally(visualColumn, snapping) {
544
+ var _classPrivateFieldGet4;
530
545
  const selection = this.hot.getSelectedRangeLast();
531
546
  if (!selection) {
532
547
  return visualColumn;
@@ -534,20 +549,50 @@ function _onBeforeViewportScrollHorizontally(visualColumn) {
534
549
  const {
535
550
  highlight
536
551
  } = selection;
537
- const isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
552
+ const {
553
+ navigableHeaders
554
+ } = this.hot.getSettings();
555
+ const isSelectedByColumnHeader = this.hot.selection.isSelectedByColumnHeader();
556
+ const highlightRow = navigableHeaders ? highlight.row : (_classPrivateFieldGet4 = _classPrivateFieldGet(_recentlyHighlightCoords, this)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.row;
557
+ const highlightColumn = isSelectedByColumnHeader ? visualColumn : highlight.col;
558
+ const isNestedHeadersRange = highlightRow < 0 && highlightColumn >= 0;
559
+ _classPrivateFieldSet(_recentlyHighlightCoords, this, null);
538
560
  if (!isNestedHeadersRange) {
539
561
  return visualColumn;
540
562
  }
541
- const firstColumn = this.hot.view.getFirstFullyVisibleColumn();
542
- const lastColumn = this.hot.view.getLastFullyVisibleColumn();
543
- const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlight.row, highlight.col);
544
- const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlight.row, highlight.col);
563
+ const firstVisibleColumn = this.hot.getFirstFullyVisibleColumn();
564
+ const lastVisibleColumn = this.hot.getLastFullyVisibleColumn();
565
+ const viewportWidth = lastVisibleColumn - firstVisibleColumn + 1;
566
+ const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlightRow, highlightColumn);
567
+ const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlightRow, highlightColumn);
568
+ const headerWidth = mostRightColumnIndex - mostLeftColumnIndex + 1;
545
569
 
546
- // do not scroll the viewport when the header is wider than the viewport
547
- if (mostLeftColumnIndex < firstColumn && mostRightColumnIndex > lastColumn) {
548
- return visualColumn;
570
+ // scroll the viewport always to the left when the header is wider than the viewport
571
+ if (mostLeftColumnIndex < firstVisibleColumn && mostRightColumnIndex > lastVisibleColumn) {
572
+ return mostLeftColumnIndex;
573
+ }
574
+ if (isSelectedByColumnHeader) {
575
+ let scrollColumnIndex = null;
576
+ if (mostLeftColumnIndex >= firstVisibleColumn && mostRightColumnIndex > lastVisibleColumn) {
577
+ if (headerWidth > viewportWidth) {
578
+ snapping.value = 'start';
579
+ scrollColumnIndex = mostLeftColumnIndex;
580
+ } else {
581
+ snapping.value = 'end';
582
+ scrollColumnIndex = mostRightColumnIndex;
583
+ }
584
+ } else if (mostLeftColumnIndex < firstVisibleColumn && mostRightColumnIndex <= lastVisibleColumn) {
585
+ if (headerWidth > viewportWidth) {
586
+ snapping.value = 'end';
587
+ scrollColumnIndex = mostRightColumnIndex;
588
+ } else {
589
+ snapping.value = 'start';
590
+ scrollColumnIndex = mostLeftColumnIndex;
591
+ }
592
+ }
593
+ return scrollColumnIndex;
549
594
  }
550
- return mostLeftColumnIndex < firstColumn ? mostLeftColumnIndex : mostRightColumnIndex;
595
+ return mostLeftColumnIndex <= firstVisibleColumn ? mostLeftColumnIndex : mostRightColumnIndex;
551
596
  }
552
597
  /**
553
598
  * Allows to control which header DOM element will be used to highlight.
@@ -618,13 +663,13 @@ function _onBeforeCopy(data, copyableRanges, _ref2) {
618
663
  }
619
664
  for (let column = startCol; column <= endCol; column++) {
620
665
  for (let row = startRow; row <= endRow; row++) {
621
- var _classPrivateFieldGet4;
666
+ var _classPrivateFieldGet5;
622
667
  const zeroBasedColumnHeaderLevel = rowsCount + row;
623
668
  const zeroBasedColumnIndex = column - startCol;
624
669
  if (zeroBasedColumnIndex === 0) {
625
670
  continue; // eslint-disable-line no-continue
626
671
  }
627
- const isRoot = (_classPrivateFieldGet4 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.isRoot;
672
+ const isRoot = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.isRoot;
628
673
  if (isRoot === false) {
629
674
  data[zeroBasedColumnHeaderLevel][zeroBasedColumnIndex] = '';
630
675
  }
@@ -702,7 +747,7 @@ function _onAfterOnCellMouseDown(event, coords) {
702
747
  * a boolean value that allows or disallows changing the selection for that particular area.
703
748
  */
704
749
  function _onBeforeOnCellMouseOver(event, coords, TD, controller) {
705
- if (!this.hot.view.isMouseDown()) {
750
+ if (!this.hot.view.isMouseDown() || controller.column) {
706
751
  return;
707
752
  }
708
753
  const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
@@ -810,8 +855,9 @@ function _onModifyTransformStart(delta) {
810
855
  *
811
856
  * @param {CellCoords} from The coords object where the selection starts.
812
857
  * @param {CellCoords} to The coords object where the selection ends.
858
+ * @param {CellCoords} highlight The coords object where the focus is.
813
859
  */
814
- function _onBeforeSelectColumns(from, to) {
860
+ function _onBeforeSelectColumns(from, to, highlight) {
815
861
  const headerLevel = from.row;
816
862
  const startNodeData = this._getHeaderTreeNodeDataByCoords({
817
863
  row: headerLevel,
@@ -821,6 +867,7 @@ function _onBeforeSelectColumns(from, to) {
821
867
  row: headerLevel,
822
868
  col: to.col
823
869
  });
870
+ _classPrivateFieldSet(_recentlyHighlightCoords, this, highlight.clone());
824
871
  if (to.col < from.col) {
825
872
  // Column selection from right to left
826
873
  if (startNodeData) {
@@ -905,10 +952,10 @@ function _onModifyColWidth(width, column) {
905
952
  * @returns {string} Returns the column header value to update.
906
953
  */
907
954
  function _onModifyColumnHeaderValue(value, visualColumnIndex, headerLevel) {
908
- var _classPrivateFieldGet5;
955
+ var _classPrivateFieldGet6;
909
956
  const {
910
957
  label
911
- } = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet5 !== void 0 ? _classPrivateFieldGet5 : {
958
+ } = (_classPrivateFieldGet6 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet6 !== void 0 ? _classPrivateFieldGet6 : {
912
959
  label: ''
913
960
  };
914
961
  return label;
@@ -3,6 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.iterator.map.js");
6
7
  var _array = require("../../../helpers/array");
7
8
  var _sourceSettings2 = _interopRequireDefault(require("./sourceSettings"));
8
9
  var _headersTree2 = _interopRequireDefault(require("./headersTree"));
@@ -1,5 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.map.js";
3
4
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
4
5
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
5
6
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
@@ -10,6 +10,9 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
10
10
  require("core-js/modules/es.set.is-superset-of.v2.js");
11
11
  require("core-js/modules/es.set.symmetric-difference.v2.js");
12
12
  require("core-js/modules/es.set.union.v2.js");
13
+ require("core-js/modules/esnext.iterator.constructor.js");
14
+ require("core-js/modules/esnext.iterator.for-each.js");
15
+ require("core-js/modules/esnext.iterator.reduce.js");
13
16
  var _base = require("../base");
14
17
  var _dataManager = _interopRequireDefault(require("./data/dataManager"));
15
18
  var _collapsing = _interopRequireDefault(require("./ui/collapsing"));
@@ -7,6 +7,9 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
7
7
  import "core-js/modules/es.set.is-superset-of.v2.js";
8
8
  import "core-js/modules/es.set.symmetric-difference.v2.js";
9
9
  import "core-js/modules/es.set.union.v2.js";
10
+ import "core-js/modules/esnext.iterator.constructor.js";
11
+ import "core-js/modules/esnext.iterator.for-each.js";
12
+ import "core-js/modules/esnext.iterator.reduce.js";
10
13
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
11
14
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
12
15
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -125,7 +125,13 @@ class HeadersUI extends _base.default {
125
125
  if (!deepestLevelIndex) {
126
126
  deepestLevelIndex = this.dataManager.cache.levelCount;
127
127
  }
128
- this.rowHeaderWidthCache = Math.max(50, 11 + 10 * deepestLevelIndex + 25);
128
+ const stylesHandler = this.hot.view.getStylesHandler();
129
+ let completeVerticalPadding = 11;
130
+ if (!stylesHandler.isClassicTheme()) {
131
+ const verticalPadding = stylesHandler.getCSSVariableValue('cell-horizontal-padding');
132
+ completeVerticalPadding = verticalPadding * 2;
133
+ }
134
+ this.rowHeaderWidthCache = Math.max(50, completeVerticalPadding + 10 * deepestLevelIndex + 25);
129
135
  this.hot.render();
130
136
  }
131
137
  }
@@ -121,7 +121,13 @@ class HeadersUI extends BaseUI {
121
121
  if (!deepestLevelIndex) {
122
122
  deepestLevelIndex = this.dataManager.cache.levelCount;
123
123
  }
124
- this.rowHeaderWidthCache = Math.max(50, 11 + 10 * deepestLevelIndex + 25);
124
+ const stylesHandler = this.hot.view.getStylesHandler();
125
+ let completeVerticalPadding = 11;
126
+ if (!stylesHandler.isClassicTheme()) {
127
+ const verticalPadding = stylesHandler.getCSSVariableValue('cell-horizontal-padding');
128
+ completeVerticalPadding = verticalPadding * 2;
129
+ }
130
+ this.rowHeaderWidthCache = Math.max(50, completeVerticalPadding + 10 * deepestLevelIndex + 25);
125
131
  this.hot.render();
126
132
  }
127
133
  }
@@ -3,6 +3,10 @@
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.for-each.js");
8
+ require("core-js/modules/esnext.iterator.map.js");
9
+ require("core-js/modules/esnext.iterator.some.js");
6
10
  var _mixed = require("../../../helpers/mixed");
7
11
  var _console = require("../../../helpers/console");
8
12
  var _templateLiteralTag = require("../../../helpers/templateLiteralTag");
@@ -1,5 +1,9 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.for-each.js";
5
+ import "core-js/modules/esnext.iterator.map.js";
6
+ import "core-js/modules/esnext.iterator.some.js";
3
7
  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; }
4
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
9
  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); }
@@ -4,14 +4,14 @@ exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  var _base = require("../base");
6
6
  var _storage = _interopRequireDefault(require("./storage"));
7
- var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
7
+ var _hooks = require("../../core/hooks");
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  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; }
10
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
11
11
  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); }
12
- _pluginHooks.default.getSingleton().register('persistentStateSave');
13
- _pluginHooks.default.getSingleton().register('persistentStateLoad');
14
- _pluginHooks.default.getSingleton().register('persistentStateReset');
12
+ _hooks.Hooks.getSingleton().register('persistentStateSave');
13
+ _hooks.Hooks.getSingleton().register('persistentStateLoad');
14
+ _hooks.Hooks.getSingleton().register('persistentStateReset');
15
15
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'persistentState';
16
16
  const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 0;
17
17
 
@@ -4,7 +4,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
4
4
  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); }
5
5
  import { BasePlugin } from "../base/index.mjs";
6
6
  import Storage from "./storage.mjs";
7
- import Hooks from "../../pluginHooks.mjs";
7
+ import { Hooks } from "../../core/hooks/index.mjs";
8
8
  Hooks.getSingleton().register('persistentStateSave');
9
9
  Hooks.getSingleton().register('persistentStateLoad');
10
10
  Hooks.getSingleton().register('persistentStateReset');
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.iterator.constructor.js");
6
+ require("core-js/modules/esnext.iterator.for-each.js");
7
+ var _src = require("../../3rdparty/walkontable/src");
8
+ var _element = require("../../helpers/dom/element");
9
+ var _all = require("./strategies/all");
10
+ var _last = require("./strategies/last");
11
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
12
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
13
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
14
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
15
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
16
+ 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
+ const STRETCH_WIDTH_MAP_NAME = 'stretchColumns';
18
+
19
+ /**
20
+ * The class responsible for calculating the column widths based on the specified column stretching strategy.
21
+ *
22
+ * @private
23
+ * @class StretchCalculator
24
+ */
25
+ var _hot = /*#__PURE__*/new WeakMap();
26
+ var _widthsMap = /*#__PURE__*/new WeakMap();
27
+ var _stretchStrategies = /*#__PURE__*/new WeakMap();
28
+ var _activeStrategy = /*#__PURE__*/new WeakMap();
29
+ var _StretchCalculator_brand = /*#__PURE__*/new WeakSet();
30
+ class StretchCalculator {
31
+ constructor(hotInstance) {
32
+ /**
33
+ * Checks if the vertical scrollbar will appear. Based on the current data and viewport size
34
+ * the method calculates if the vertical scrollbar will appear after the table is rendered.
35
+ * The method is a workaround for the issue in the Walkontable that returns unstable viewport
36
+ * size.
37
+ *
38
+ * @returns {boolean}
39
+ */
40
+ _classPrivateMethodInitSpec(this, _StretchCalculator_brand);
41
+ /**
42
+ * The Handsontable instance.
43
+ *
44
+ * @type {Core}
45
+ */
46
+ _classPrivateFieldInitSpec(this, _hot, void 0);
47
+ /**
48
+ * The map that stores the calculated column widths.
49
+ *
50
+ * @type {IndexToValueMap}
51
+ */
52
+ _classPrivateFieldInitSpec(this, _widthsMap, void 0);
53
+ /**
54
+ * The map that stores the available stretch strategies.
55
+ *
56
+ * @type {Map<string, StretchAllStrategy | StretchLastStrategy>}
57
+ */
58
+ _classPrivateFieldInitSpec(this, _stretchStrategies, new Map([['all', new _all.StretchAllStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))], ['last', new _last.StretchLastStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))]]));
59
+ /**
60
+ * The active stretch mode.
61
+ *
62
+ * @type {'all' | 'last' | 'none'}
63
+ */
64
+ _classPrivateFieldInitSpec(this, _activeStrategy, 'none');
65
+ _classPrivateFieldSet(_hot, this, hotInstance);
66
+ _classPrivateFieldSet(_widthsMap, this, _classPrivateFieldGet(_hot, this).columnIndexMapper.createAndRegisterIndexMap(STRETCH_WIDTH_MAP_NAME, 'physicalIndexToValue'));
67
+ }
68
+
69
+ /**
70
+ * Sets the active stretch strategy.
71
+ *
72
+ * @param {'all' | 'last' | 'none'} strategyName The stretch strategy to use.
73
+ */
74
+ useStrategy(strategyName) {
75
+ _classPrivateFieldSet(_activeStrategy, this, _classPrivateFieldGet(_stretchStrategies, this).has(strategyName) ? strategyName : 'none');
76
+ }
77
+
78
+ /**
79
+ * Recalculates the column widths.
80
+ */
81
+ refreshStretching() {
82
+ if (_classPrivateFieldGet(_activeStrategy, this) === 'none') {
83
+ _classPrivateFieldGet(_widthsMap, this).clear();
84
+ return;
85
+ }
86
+ _classPrivateFieldGet(_hot, this).batchExecution(() => {
87
+ _classPrivateFieldGet(_widthsMap, this).clear();
88
+ const stretchStrategy = _classPrivateFieldGet(_stretchStrategies, this).get(_classPrivateFieldGet(_activeStrategy, this));
89
+ const view = _classPrivateFieldGet(_hot, this).view;
90
+ let viewportWidth = view.getViewportWidth();
91
+ if (_assertClassBrand(_StretchCalculator_brand, this, _willVerticalScrollAppear).call(this)) {
92
+ viewportWidth -= (0, _element.getScrollbarWidth)(_classPrivateFieldGet(_hot, this).rootDocument);
93
+ }
94
+ stretchStrategy.prepare({
95
+ viewportWidth
96
+ });
97
+ for (let columnIndex = 0; columnIndex < _classPrivateFieldGet(_hot, this).countCols(); columnIndex++) {
98
+ if (!_classPrivateFieldGet(_hot, this).columnIndexMapper.isHidden(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex))) {
99
+ stretchStrategy.setColumnBaseWidth(columnIndex, _assertClassBrand(_StretchCalculator_brand, this, _getWidthWithoutStretching).call(this, columnIndex));
100
+ }
101
+ }
102
+ stretchStrategy.calculate();
103
+ stretchStrategy.getWidths().forEach(_ref => {
104
+ let [columnIndex, width] = _ref;
105
+ _classPrivateFieldGet(_widthsMap, this).setValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex), width);
106
+ });
107
+ }, true);
108
+ }
109
+
110
+ /**
111
+ * Gets the calculated column width.
112
+ *
113
+ * @param {number} columnVisualIndex Column visual index.
114
+ * @returns {number | null}
115
+ */
116
+ getStretchedWidth(columnVisualIndex) {
117
+ return _classPrivateFieldGet(_widthsMap, this).getValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnVisualIndex));
118
+ }
119
+ }
120
+ exports.StretchCalculator = StretchCalculator;
121
+ function _willVerticalScrollAppear() {
122
+ const {
123
+ view
124
+ } = _classPrivateFieldGet(_hot, this);
125
+ if (view.isVerticallyScrollableByWindow()) {
126
+ return false;
127
+ }
128
+ const viewportHeight = view.getViewportHeight();
129
+ const totalRows = _classPrivateFieldGet(_hot, this).countRows();
130
+ const defaultRowHeight = view.getStylesHandler().getDefaultRowHeight();
131
+ let totalHeight = 0;
132
+ let hasVerticalScroll = false;
133
+ for (let row = 0; row < totalRows; row++) {
134
+ var _classPrivateFieldGet2;
135
+ totalHeight += ((_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getRowHeight(row)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : defaultRowHeight) + (row === 0 ? 1 : 0);
136
+ if (totalHeight > viewportHeight) {
137
+ hasVerticalScroll = true;
138
+ break;
139
+ }
140
+ }
141
+ return hasVerticalScroll;
142
+ }
143
+ /**
144
+ * Gets the column width from the Handsontable API without logic related to stretching.
145
+ *
146
+ * @param {number} columnVisualIndex Column visual index.
147
+ * @returns {number}
148
+ */
149
+ function _getWidthWithoutStretching(columnVisualIndex) {
150
+ var _classPrivateFieldGet3;
151
+ return (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getColWidth(columnVisualIndex, 'StretchColumns')) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : _src.DEFAULT_COLUMN_WIDTH;
152
+ }
153
+ /**
154
+ * Executes the hook that allows to overwrite the column width.
155
+ *
156
+ * @param {number} columnWidth The column width.
157
+ * @param {number} columnVisualIndex Column visual index.
158
+ * @returns {number}
159
+ */
160
+ function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
161
+ return _classPrivateFieldGet(_hot, this).runHooks('beforeStretchingColumnWidth', columnWidth, columnVisualIndex);
162
+ }
@@ -0,0 +1,158 @@
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";
4
+ function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
5
+ function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
6
+ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
7
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
8
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
9
+ 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"); }
10
+ import { DEFAULT_COLUMN_WIDTH } from "../../3rdparty/walkontable/src/index.mjs";
11
+ import { getScrollbarWidth } from "../../helpers/dom/element.mjs";
12
+ import { StretchAllStrategy } from "./strategies/all.mjs";
13
+ import { StretchLastStrategy } from "./strategies/last.mjs";
14
+ const STRETCH_WIDTH_MAP_NAME = 'stretchColumns';
15
+
16
+ /**
17
+ * The class responsible for calculating the column widths based on the specified column stretching strategy.
18
+ *
19
+ * @private
20
+ * @class StretchCalculator
21
+ */
22
+ var _hot = /*#__PURE__*/new WeakMap();
23
+ var _widthsMap = /*#__PURE__*/new WeakMap();
24
+ var _stretchStrategies = /*#__PURE__*/new WeakMap();
25
+ var _activeStrategy = /*#__PURE__*/new WeakMap();
26
+ var _StretchCalculator_brand = /*#__PURE__*/new WeakSet();
27
+ export class StretchCalculator {
28
+ constructor(hotInstance) {
29
+ /**
30
+ * Checks if the vertical scrollbar will appear. Based on the current data and viewport size
31
+ * the method calculates if the vertical scrollbar will appear after the table is rendered.
32
+ * The method is a workaround for the issue in the Walkontable that returns unstable viewport
33
+ * size.
34
+ *
35
+ * @returns {boolean}
36
+ */
37
+ _classPrivateMethodInitSpec(this, _StretchCalculator_brand);
38
+ /**
39
+ * The Handsontable instance.
40
+ *
41
+ * @type {Core}
42
+ */
43
+ _classPrivateFieldInitSpec(this, _hot, void 0);
44
+ /**
45
+ * The map that stores the calculated column widths.
46
+ *
47
+ * @type {IndexToValueMap}
48
+ */
49
+ _classPrivateFieldInitSpec(this, _widthsMap, void 0);
50
+ /**
51
+ * The map that stores the available stretch strategies.
52
+ *
53
+ * @type {Map<string, StretchAllStrategy | StretchLastStrategy>}
54
+ */
55
+ _classPrivateFieldInitSpec(this, _stretchStrategies, new Map([['all', new StretchAllStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))], ['last', new StretchLastStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))]]));
56
+ /**
57
+ * The active stretch mode.
58
+ *
59
+ * @type {'all' | 'last' | 'none'}
60
+ */
61
+ _classPrivateFieldInitSpec(this, _activeStrategy, 'none');
62
+ _classPrivateFieldSet(_hot, this, hotInstance);
63
+ _classPrivateFieldSet(_widthsMap, this, _classPrivateFieldGet(_hot, this).columnIndexMapper.createAndRegisterIndexMap(STRETCH_WIDTH_MAP_NAME, 'physicalIndexToValue'));
64
+ }
65
+
66
+ /**
67
+ * Sets the active stretch strategy.
68
+ *
69
+ * @param {'all' | 'last' | 'none'} strategyName The stretch strategy to use.
70
+ */
71
+ useStrategy(strategyName) {
72
+ _classPrivateFieldSet(_activeStrategy, this, _classPrivateFieldGet(_stretchStrategies, this).has(strategyName) ? strategyName : 'none');
73
+ }
74
+
75
+ /**
76
+ * Recalculates the column widths.
77
+ */
78
+ refreshStretching() {
79
+ if (_classPrivateFieldGet(_activeStrategy, this) === 'none') {
80
+ _classPrivateFieldGet(_widthsMap, this).clear();
81
+ return;
82
+ }
83
+ _classPrivateFieldGet(_hot, this).batchExecution(() => {
84
+ _classPrivateFieldGet(_widthsMap, this).clear();
85
+ const stretchStrategy = _classPrivateFieldGet(_stretchStrategies, this).get(_classPrivateFieldGet(_activeStrategy, this));
86
+ const view = _classPrivateFieldGet(_hot, this).view;
87
+ let viewportWidth = view.getViewportWidth();
88
+ if (_assertClassBrand(_StretchCalculator_brand, this, _willVerticalScrollAppear).call(this)) {
89
+ viewportWidth -= getScrollbarWidth(_classPrivateFieldGet(_hot, this).rootDocument);
90
+ }
91
+ stretchStrategy.prepare({
92
+ viewportWidth
93
+ });
94
+ for (let columnIndex = 0; columnIndex < _classPrivateFieldGet(_hot, this).countCols(); columnIndex++) {
95
+ if (!_classPrivateFieldGet(_hot, this).columnIndexMapper.isHidden(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex))) {
96
+ stretchStrategy.setColumnBaseWidth(columnIndex, _assertClassBrand(_StretchCalculator_brand, this, _getWidthWithoutStretching).call(this, columnIndex));
97
+ }
98
+ }
99
+ stretchStrategy.calculate();
100
+ stretchStrategy.getWidths().forEach(_ref => {
101
+ let [columnIndex, width] = _ref;
102
+ _classPrivateFieldGet(_widthsMap, this).setValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex), width);
103
+ });
104
+ }, true);
105
+ }
106
+
107
+ /**
108
+ * Gets the calculated column width.
109
+ *
110
+ * @param {number} columnVisualIndex Column visual index.
111
+ * @returns {number | null}
112
+ */
113
+ getStretchedWidth(columnVisualIndex) {
114
+ return _classPrivateFieldGet(_widthsMap, this).getValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnVisualIndex));
115
+ }
116
+ }
117
+ function _willVerticalScrollAppear() {
118
+ const {
119
+ view
120
+ } = _classPrivateFieldGet(_hot, this);
121
+ if (view.isVerticallyScrollableByWindow()) {
122
+ return false;
123
+ }
124
+ const viewportHeight = view.getViewportHeight();
125
+ const totalRows = _classPrivateFieldGet(_hot, this).countRows();
126
+ const defaultRowHeight = view.getStylesHandler().getDefaultRowHeight();
127
+ let totalHeight = 0;
128
+ let hasVerticalScroll = false;
129
+ for (let row = 0; row < totalRows; row++) {
130
+ var _classPrivateFieldGet2;
131
+ totalHeight += ((_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getRowHeight(row)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : defaultRowHeight) + (row === 0 ? 1 : 0);
132
+ if (totalHeight > viewportHeight) {
133
+ hasVerticalScroll = true;
134
+ break;
135
+ }
136
+ }
137
+ return hasVerticalScroll;
138
+ }
139
+ /**
140
+ * Gets the column width from the Handsontable API without logic related to stretching.
141
+ *
142
+ * @param {number} columnVisualIndex Column visual index.
143
+ * @returns {number}
144
+ */
145
+ function _getWidthWithoutStretching(columnVisualIndex) {
146
+ var _classPrivateFieldGet3;
147
+ return (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getColWidth(columnVisualIndex, 'StretchColumns')) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : DEFAULT_COLUMN_WIDTH;
148
+ }
149
+ /**
150
+ * Executes the hook that allows to overwrite the column width.
151
+ *
152
+ * @param {number} columnWidth The column width.
153
+ * @param {number} columnVisualIndex Column visual index.
154
+ * @returns {number}
155
+ */
156
+ function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
157
+ return _classPrivateFieldGet(_hot, this).runHooks('beforeStretchingColumnWidth', columnWidth, columnVisualIndex);
158
+ }
@@ -0,0 +1 @@
1
+ export * from './stretchColumns';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _stretchColumns = require("./stretchColumns");
5
+ exports.PLUGIN_KEY = _stretchColumns.PLUGIN_KEY;
6
+ exports.PLUGIN_PRIORITY = _stretchColumns.PLUGIN_PRIORITY;
7
+ exports.StretchColumns = _stretchColumns.StretchColumns;
@@ -0,0 +1 @@
1
+ export { PLUGIN_KEY, PLUGIN_PRIORITY, StretchColumns } from "./stretchColumns.mjs";