handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205

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,4 +1,5 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.map.js";
2
3
  import { isNumeric } from "../../helpers/number.mjs";
3
4
  import { isFunction } from "../../helpers/function.mjs";
4
5
  export const ASC = 'asc';
@@ -3,6 +3,8 @@
3
3
  exports.__esModule = true;
4
4
  exports.createUniqueMap = createUniqueMap;
5
5
  require("core-js/modules/es.error.cause.js");
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.find.js");
6
8
  var _function = require("../../helpers/function");
7
9
  const DEFAULT_ERROR_ID_EXISTS = id => `The id '${id}' is already declared in a map.`;
8
10
 
@@ -1,4 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.constructor.js";
3
+ import "core-js/modules/esnext.iterator.find.js";
2
4
  import { isFunction } from "../../helpers/function.mjs";
3
5
  const DEFAULT_ERROR_ID_EXISTS = id => `The id '${id}' is already declared in a map.`;
4
6
 
@@ -3,6 +3,8 @@
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");
6
8
  var _element = require("./../helpers/dom/element");
7
9
  var _array = require("./../helpers/array");
8
10
  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; }
@@ -131,7 +133,7 @@ class GhostTable {
131
133
  if (this.getSetting('useHeaders') && this.hot.getColHeader(column) !== null) {
132
134
  // Please keep in mind that the renderable column index equal to the visual columns index for the GhostTable.
133
135
  // We render all columns.
134
- this.hot.view.appendColHeader(column, this.table.th);
136
+ this.hot.view.appendColHeader(column, this.table.th, undefined, -1);
135
137
  }
136
138
  this.table.tBody.appendChild(this.createCol(column));
137
139
  this.container.container.appendChild(this.table.fragment);
@@ -147,6 +149,8 @@ class GhostTable {
147
149
  if (!this.injected) {
148
150
  this.injectTable();
149
151
  }
152
+ const isBorderBoxSizing = this.hot.view.getStylesHandler().areCellsBorderBox();
153
+ const borderCompensation = isBorderBoxSizing ? 0 : 1;
150
154
  (0, _array.arrayEach)(this.rows, row => {
151
155
  // In cases when the cell's content produces the height with a decimal point, the height
152
156
  // needs to be rounded up to make sure that there will be a space for the cell's content.
@@ -155,8 +159,8 @@ class GhostTable {
155
159
  height
156
160
  } = row.table.getBoundingClientRect();
157
161
 
158
- // -1 <- reduce border-top from table
159
- callback(row.row, Math.ceil(height) - 1);
162
+ // -1 <- reduce border-top from table (if box-sizing is not border-box)
163
+ callback(row.row, Math.ceil(height) - borderCompensation);
160
164
  });
161
165
  }
162
166
 
@@ -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 _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
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
7
  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); }
@@ -128,7 +130,7 @@ class GhostTable {
128
130
  if (this.getSetting('useHeaders') && this.hot.getColHeader(column) !== null) {
129
131
  // Please keep in mind that the renderable column index equal to the visual columns index for the GhostTable.
130
132
  // We render all columns.
131
- this.hot.view.appendColHeader(column, this.table.th);
133
+ this.hot.view.appendColHeader(column, this.table.th, undefined, -1);
132
134
  }
133
135
  this.table.tBody.appendChild(this.createCol(column));
134
136
  this.container.container.appendChild(this.table.fragment);
@@ -144,6 +146,8 @@ class GhostTable {
144
146
  if (!this.injected) {
145
147
  this.injectTable();
146
148
  }
149
+ const isBorderBoxSizing = this.hot.view.getStylesHandler().areCellsBorderBox();
150
+ const borderCompensation = isBorderBoxSizing ? 0 : 1;
147
151
  arrayEach(this.rows, row => {
148
152
  // In cases when the cell's content produces the height with a decimal point, the height
149
153
  // needs to be rounded up to make sure that there will be a space for the cell's content.
@@ -152,8 +156,8 @@ class GhostTable {
152
156
  height
153
157
  } = row.table.getBoundingClientRect();
154
158
 
155
- // -1 <- reduce border-top from table
156
- callback(row.row, Math.ceil(height) - 1);
159
+ // -1 <- reduce border-top from table (if box-sizing is not border-box)
160
+ callback(row.row, Math.ceil(height) - borderCompensation);
157
161
  });
158
162
  }
159
163
 
@@ -6,6 +6,10 @@ exports.htmlToGridSettings = htmlToGridSettings;
6
6
  exports.instanceToHTML = instanceToHTML;
7
7
  require("core-js/modules/es.array.push.js");
8
8
  require("core-js/modules/es.string.replace-all.js");
9
+ require("core-js/modules/esnext.iterator.constructor.js");
10
+ require("core-js/modules/esnext.iterator.filter.js");
11
+ require("core-js/modules/esnext.iterator.map.js");
12
+ require("core-js/modules/esnext.iterator.reduce.js");
9
13
  var _mixed = require("./../helpers/mixed");
10
14
  const ESCAPED_HTML_CHARS = {
11
15
  '&nbsp;': '\x20',
@@ -1,5 +1,9 @@
1
1
  import "core-js/modules/es.array.push.js";
2
2
  import "core-js/modules/es.string.replace-all.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.filter.js";
5
+ import "core-js/modules/esnext.iterator.map.js";
6
+ import "core-js/modules/esnext.iterator.reduce.js";
3
7
  import { isEmpty } from "./../helpers/mixed.mjs";
4
8
  const ESCAPED_HTML_CHARS = {
5
9
  '&nbsp;': '\x20',
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- /**
5
- * Default border corner style.
6
- *
7
- * @type {object}
8
- */
9
- const CORNER_DEFAULT_STYLE = exports.CORNER_DEFAULT_STYLE = Object.freeze({
10
- width: '6px',
11
- height: '6px',
12
- borderWidth: '1px',
13
- borderStyle: 'solid',
14
- borderColor: '#FFF'
15
- });
@@ -1,12 +0,0 @@
1
- /**
2
- * Default border corner style.
3
- *
4
- * @type {object}
5
- */
6
- export const CORNER_DEFAULT_STYLE = Object.freeze({
7
- width: '6px',
8
- height: '6px',
9
- borderWidth: '1px',
10
- borderStyle: 'solid',
11
- borderColor: '#FFF'
12
- });
@@ -1,197 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- require("core-js/modules/es.error.cause.js");
5
- var _calculator = require("../calculator");
6
- function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
7
- function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
8
- 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; }
9
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
- 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); }
11
- function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
12
- function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
13
- function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
14
- /**
15
- * @typedef {object} ColumnStretchingOptions
16
- * @property {number} totalColumns Total number of columns.
17
- * @property {Function} columnWidthFn Function that returns the width of the column at a given index (in px).
18
- * @property {'all' | 'last' | 'none'} stretchMode Stretch mode 'all', 'last' or 'none'.
19
- * @property {Function} stretchingColumnWidthFn Function that returns the new width of the stretched column.
20
- */
21
- /**
22
- * @class ColumnStretching
23
- */
24
- var _totalTargetWidth = /*#__PURE__*/new WeakMap();
25
- var _totalColumns = /*#__PURE__*/new WeakMap();
26
- var _stretchingColumnWidthFn = /*#__PURE__*/new WeakMap();
27
- var _columnWidthFn = /*#__PURE__*/new WeakMap();
28
- var _stretchMode = /*#__PURE__*/new WeakMap();
29
- class ColumnStretching {
30
- /**
31
- * @param {ColumnStretchingOptions} options Object with all options specified for column viewport calculation.
32
- */
33
- constructor(_ref) {
34
- let {
35
- totalColumns,
36
- stretchMode,
37
- stretchingColumnWidthFn,
38
- columnWidthFn
39
- } = _ref;
40
- /**
41
- * @type {number}
42
- */
43
- _defineProperty(this, "stretchAllRatio", 0);
44
- /**
45
- * @type {number}
46
- */
47
- _defineProperty(this, "stretchLastWidth", 0);
48
- /**
49
- * @type {number[]}
50
- */
51
- _defineProperty(this, "stretchAllColumnsWidth", []);
52
- /**
53
- * @type {number}
54
- */
55
- _classPrivateFieldInitSpec(this, _totalTargetWidth, 0);
56
- /**
57
- * @type {boolean}
58
- */
59
- _defineProperty(this, "needVerifyLastColumnWidth", true);
60
- /**
61
- * The total number of columns.
62
- *
63
- * @type {function(): number}
64
- */
65
- _classPrivateFieldInitSpec(this, _totalColumns, () => 0);
66
- /**
67
- * Function that returns the width of the stretched column at a given index (in px).
68
- *
69
- * @type {function(): number}
70
- */
71
- _classPrivateFieldInitSpec(this, _stretchingColumnWidthFn, width => width);
72
- /**
73
- * Function that returns the width of the column at a given index (in px).
74
- *
75
- * @type {function(): number}
76
- */
77
- _classPrivateFieldInitSpec(this, _columnWidthFn, width => width);
78
- /**
79
- * Stretch mode.
80
- *
81
- * @type {function(): 'all' | 'last' | 'none'}
82
- */
83
- _classPrivateFieldInitSpec(this, _stretchMode, () => 'none');
84
- _classPrivateFieldSet(_totalColumns, this, totalColumns);
85
- _classPrivateFieldSet(_stretchMode, this, stretchMode);
86
- _classPrivateFieldSet(_stretchingColumnWidthFn, this, stretchingColumnWidthFn !== null && stretchingColumnWidthFn !== void 0 ? stretchingColumnWidthFn : _classPrivateFieldGet(_stretchingColumnWidthFn, this));
87
- _classPrivateFieldSet(_columnWidthFn, this, columnWidthFn !== null && columnWidthFn !== void 0 ? columnWidthFn : _classPrivateFieldGet(_columnWidthFn, this));
88
- }
89
-
90
- /**
91
- * Recalculate columns stretching.
92
- *
93
- * @param {number} totalWidth The total width of the table.
94
- */
95
- refreshStretching(totalWidth) {
96
- if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'none') {
97
- return;
98
- }
99
- this.stretchAllRatio = 0;
100
- this.stretchAllColumnsWidth = [];
101
- this.needVerifyLastColumnWidth = true;
102
- this.stretchLastWidth = 0;
103
- _classPrivateFieldSet(_totalTargetWidth, this, totalWidth);
104
- let sumAll = 0;
105
- for (let i = 0; i < _classPrivateFieldGet(_totalColumns, this).call(this); i++) {
106
- const columnWidth = this._getColumnWidth(i);
107
- const permanentColumnWidth = _classPrivateFieldGet(_stretchingColumnWidthFn, this).call(this, undefined, i);
108
- if (typeof permanentColumnWidth === 'number') {
109
- totalWidth -= permanentColumnWidth;
110
- } else {
111
- sumAll += columnWidth;
112
- }
113
- }
114
- const remainingSize = totalWidth - sumAll;
115
- if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'all' && remainingSize > 0) {
116
- this.stretchAllRatio = totalWidth / sumAll;
117
- this.stretchAllColumnsWidth = [];
118
- this.needVerifyLastColumnWidth = true;
119
- } else if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'last' && totalWidth !== Infinity) {
120
- const columnWidth = this._getColumnWidth(_classPrivateFieldGet(_totalColumns, this).call(this) - 1);
121
- const lastColumnWidth = remainingSize + columnWidth;
122
- this.stretchLastWidth = lastColumnWidth >= 0 ? lastColumnWidth : columnWidth;
123
- }
124
- }
125
-
126
- /**
127
- * Get stretched column width based on stretchH (all or last) setting passed in handsontable instance.
128
- *
129
- * @param {number} column The visual column index.
130
- * @param {number} baseWidth The default column width.
131
- * @returns {number|null}
132
- */
133
- getStretchedColumnWidth(column, baseWidth) {
134
- let result = null;
135
- if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'all' && this.stretchAllRatio !== 0) {
136
- result = this._getStretchedAllColumnWidth(column, baseWidth);
137
- } else if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'last' && this.stretchLastWidth !== 0) {
138
- result = this._getStretchedLastColumnWidth(column);
139
- }
140
- return result;
141
- }
142
-
143
- /**
144
- * @param {number} column The visual column index.
145
- * @param {number} baseWidth The default column width.
146
- * @returns {number}
147
- * @private
148
- */
149
- _getStretchedAllColumnWidth(column, baseWidth) {
150
- let sumRatioWidth = 0;
151
- if (!this.stretchAllColumnsWidth[column]) {
152
- const stretchedWidth = Math.round(baseWidth * this.stretchAllRatio);
153
- const newStretchedWidth = _classPrivateFieldGet(_stretchingColumnWidthFn, this).call(this, stretchedWidth, column);
154
- if (newStretchedWidth === undefined) {
155
- this.stretchAllColumnsWidth[column] = stretchedWidth;
156
- } else {
157
- this.stretchAllColumnsWidth[column] = isNaN(newStretchedWidth) ? this._getColumnWidth(column) : newStretchedWidth;
158
- }
159
- }
160
- if (this.stretchAllColumnsWidth.length === _classPrivateFieldGet(_totalColumns, this).call(this) && this.needVerifyLastColumnWidth) {
161
- this.needVerifyLastColumnWidth = false;
162
- for (let i = 0; i < this.stretchAllColumnsWidth.length; i++) {
163
- sumRatioWidth += this.stretchAllColumnsWidth[i];
164
- }
165
- if (sumRatioWidth !== _classPrivateFieldGet(_totalTargetWidth, this)) {
166
- this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += _classPrivateFieldGet(_totalTargetWidth, this) - sumRatioWidth;
167
- }
168
- }
169
- return this.stretchAllColumnsWidth[column];
170
- }
171
-
172
- /**
173
- * @param {number} column The visual column index.
174
- * @returns {number|null}
175
- * @private
176
- */
177
- _getStretchedLastColumnWidth(column) {
178
- if (column === _classPrivateFieldGet(_totalColumns, this).call(this) - 1) {
179
- return this.stretchLastWidth;
180
- }
181
- return null;
182
- }
183
-
184
- /**
185
- * @param {number} column The visual column index.
186
- * @returns {number}
187
- * @private
188
- */
189
- _getColumnWidth(column) {
190
- let width = _classPrivateFieldGet(_columnWidthFn, this).call(this, column);
191
- if (isNaN(width)) {
192
- width = _calculator.DEFAULT_COLUMN_WIDTH;
193
- }
194
- return width;
195
- }
196
- }
197
- exports.ColumnStretching = ColumnStretching;
@@ -1,193 +0,0 @@
1
- import "core-js/modules/es.error.cause.js";
2
- function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
3
- function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
4
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
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 "../calculator/index.mjs";
11
- /**
12
- * @typedef {object} ColumnStretchingOptions
13
- * @property {number} totalColumns Total number of columns.
14
- * @property {Function} columnWidthFn Function that returns the width of the column at a given index (in px).
15
- * @property {'all' | 'last' | 'none'} stretchMode Stretch mode 'all', 'last' or 'none'.
16
- * @property {Function} stretchingColumnWidthFn Function that returns the new width of the stretched column.
17
- */
18
- /**
19
- * @class ColumnStretching
20
- */
21
- var _totalTargetWidth = /*#__PURE__*/new WeakMap();
22
- var _totalColumns = /*#__PURE__*/new WeakMap();
23
- var _stretchingColumnWidthFn = /*#__PURE__*/new WeakMap();
24
- var _columnWidthFn = /*#__PURE__*/new WeakMap();
25
- var _stretchMode = /*#__PURE__*/new WeakMap();
26
- export class ColumnStretching {
27
- /**
28
- * @param {ColumnStretchingOptions} options Object with all options specified for column viewport calculation.
29
- */
30
- constructor(_ref) {
31
- let {
32
- totalColumns,
33
- stretchMode,
34
- stretchingColumnWidthFn,
35
- columnWidthFn
36
- } = _ref;
37
- /**
38
- * @type {number}
39
- */
40
- _defineProperty(this, "stretchAllRatio", 0);
41
- /**
42
- * @type {number}
43
- */
44
- _defineProperty(this, "stretchLastWidth", 0);
45
- /**
46
- * @type {number[]}
47
- */
48
- _defineProperty(this, "stretchAllColumnsWidth", []);
49
- /**
50
- * @type {number}
51
- */
52
- _classPrivateFieldInitSpec(this, _totalTargetWidth, 0);
53
- /**
54
- * @type {boolean}
55
- */
56
- _defineProperty(this, "needVerifyLastColumnWidth", true);
57
- /**
58
- * The total number of columns.
59
- *
60
- * @type {function(): number}
61
- */
62
- _classPrivateFieldInitSpec(this, _totalColumns, () => 0);
63
- /**
64
- * Function that returns the width of the stretched column at a given index (in px).
65
- *
66
- * @type {function(): number}
67
- */
68
- _classPrivateFieldInitSpec(this, _stretchingColumnWidthFn, width => width);
69
- /**
70
- * Function that returns the width of the column at a given index (in px).
71
- *
72
- * @type {function(): number}
73
- */
74
- _classPrivateFieldInitSpec(this, _columnWidthFn, width => width);
75
- /**
76
- * Stretch mode.
77
- *
78
- * @type {function(): 'all' | 'last' | 'none'}
79
- */
80
- _classPrivateFieldInitSpec(this, _stretchMode, () => 'none');
81
- _classPrivateFieldSet(_totalColumns, this, totalColumns);
82
- _classPrivateFieldSet(_stretchMode, this, stretchMode);
83
- _classPrivateFieldSet(_stretchingColumnWidthFn, this, stretchingColumnWidthFn !== null && stretchingColumnWidthFn !== void 0 ? stretchingColumnWidthFn : _classPrivateFieldGet(_stretchingColumnWidthFn, this));
84
- _classPrivateFieldSet(_columnWidthFn, this, columnWidthFn !== null && columnWidthFn !== void 0 ? columnWidthFn : _classPrivateFieldGet(_columnWidthFn, this));
85
- }
86
-
87
- /**
88
- * Recalculate columns stretching.
89
- *
90
- * @param {number} totalWidth The total width of the table.
91
- */
92
- refreshStretching(totalWidth) {
93
- if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'none') {
94
- return;
95
- }
96
- this.stretchAllRatio = 0;
97
- this.stretchAllColumnsWidth = [];
98
- this.needVerifyLastColumnWidth = true;
99
- this.stretchLastWidth = 0;
100
- _classPrivateFieldSet(_totalTargetWidth, this, totalWidth);
101
- let sumAll = 0;
102
- for (let i = 0; i < _classPrivateFieldGet(_totalColumns, this).call(this); i++) {
103
- const columnWidth = this._getColumnWidth(i);
104
- const permanentColumnWidth = _classPrivateFieldGet(_stretchingColumnWidthFn, this).call(this, undefined, i);
105
- if (typeof permanentColumnWidth === 'number') {
106
- totalWidth -= permanentColumnWidth;
107
- } else {
108
- sumAll += columnWidth;
109
- }
110
- }
111
- const remainingSize = totalWidth - sumAll;
112
- if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'all' && remainingSize > 0) {
113
- this.stretchAllRatio = totalWidth / sumAll;
114
- this.stretchAllColumnsWidth = [];
115
- this.needVerifyLastColumnWidth = true;
116
- } else if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'last' && totalWidth !== Infinity) {
117
- const columnWidth = this._getColumnWidth(_classPrivateFieldGet(_totalColumns, this).call(this) - 1);
118
- const lastColumnWidth = remainingSize + columnWidth;
119
- this.stretchLastWidth = lastColumnWidth >= 0 ? lastColumnWidth : columnWidth;
120
- }
121
- }
122
-
123
- /**
124
- * Get stretched column width based on stretchH (all or last) setting passed in handsontable instance.
125
- *
126
- * @param {number} column The visual column index.
127
- * @param {number} baseWidth The default column width.
128
- * @returns {number|null}
129
- */
130
- getStretchedColumnWidth(column, baseWidth) {
131
- let result = null;
132
- if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'all' && this.stretchAllRatio !== 0) {
133
- result = this._getStretchedAllColumnWidth(column, baseWidth);
134
- } else if (_classPrivateFieldGet(_stretchMode, this).call(this) === 'last' && this.stretchLastWidth !== 0) {
135
- result = this._getStretchedLastColumnWidth(column);
136
- }
137
- return result;
138
- }
139
-
140
- /**
141
- * @param {number} column The visual column index.
142
- * @param {number} baseWidth The default column width.
143
- * @returns {number}
144
- * @private
145
- */
146
- _getStretchedAllColumnWidth(column, baseWidth) {
147
- let sumRatioWidth = 0;
148
- if (!this.stretchAllColumnsWidth[column]) {
149
- const stretchedWidth = Math.round(baseWidth * this.stretchAllRatio);
150
- const newStretchedWidth = _classPrivateFieldGet(_stretchingColumnWidthFn, this).call(this, stretchedWidth, column);
151
- if (newStretchedWidth === undefined) {
152
- this.stretchAllColumnsWidth[column] = stretchedWidth;
153
- } else {
154
- this.stretchAllColumnsWidth[column] = isNaN(newStretchedWidth) ? this._getColumnWidth(column) : newStretchedWidth;
155
- }
156
- }
157
- if (this.stretchAllColumnsWidth.length === _classPrivateFieldGet(_totalColumns, this).call(this) && this.needVerifyLastColumnWidth) {
158
- this.needVerifyLastColumnWidth = false;
159
- for (let i = 0; i < this.stretchAllColumnsWidth.length; i++) {
160
- sumRatioWidth += this.stretchAllColumnsWidth[i];
161
- }
162
- if (sumRatioWidth !== _classPrivateFieldGet(_totalTargetWidth, this)) {
163
- this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += _classPrivateFieldGet(_totalTargetWidth, this) - sumRatioWidth;
164
- }
165
- }
166
- return this.stretchAllColumnsWidth[column];
167
- }
168
-
169
- /**
170
- * @param {number} column The visual column index.
171
- * @returns {number|null}
172
- * @private
173
- */
174
- _getStretchedLastColumnWidth(column) {
175
- if (column === _classPrivateFieldGet(_totalColumns, this).call(this) - 1) {
176
- return this.stretchLastWidth;
177
- }
178
- return null;
179
- }
180
-
181
- /**
182
- * @param {number} column The visual column index.
183
- * @returns {number}
184
- * @private
185
- */
186
- _getColumnWidth(column) {
187
- let width = _classPrivateFieldGet(_columnWidthFn, this).call(this, column);
188
- if (isNaN(width)) {
189
- width = DEFAULT_COLUMN_WIDTH;
190
- }
191
- return width;
192
- }
193
- }