handsontable 14.6.1-next-689aaa6-20241016 → 15.0.0-next-4472a60-20241203

Sign up to get free protection for your applications and to get access to all the features.
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";