handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
  5. package/3rdparty/walkontable/src/calculator/index.js +1 -2
  6. package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
  7. package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
  8. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  11. package/3rdparty/walkontable/src/core/_base.js +29 -23
  12. package/3rdparty/walkontable/src/core/_base.mjs +29 -23
  13. package/3rdparty/walkontable/src/core/clone.js +1 -0
  14. package/3rdparty/walkontable/src/core/clone.mjs +1 -0
  15. package/3rdparty/walkontable/src/core/core.js +2 -0
  16. package/3rdparty/walkontable/src/core/core.mjs +2 -0
  17. package/3rdparty/walkontable/src/facade/core.js +12 -6
  18. package/3rdparty/walkontable/src/facade/core.mjs +12 -6
  19. package/3rdparty/walkontable/src/index.js +0 -1
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +8 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
  23. package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
  24. package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
  25. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  26. package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
  27. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
  28. package/3rdparty/walkontable/src/overlay/top.js +9 -8
  29. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  30. package/3rdparty/walkontable/src/overlays.js +10 -26
  31. package/3rdparty/walkontable/src/overlays.mjs +10 -26
  32. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  33. package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
  34. package/3rdparty/walkontable/src/renderer/index.js +4 -2
  35. package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
  36. package/3rdparty/walkontable/src/renderer/table.js +13 -4
  37. package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
  38. package/3rdparty/walkontable/src/scroll.js +46 -37
  39. package/3rdparty/walkontable/src/scroll.mjs +46 -37
  40. package/3rdparty/walkontable/src/selection/border/border.js +52 -58
  41. package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
  42. package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
  43. package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
  44. package/3rdparty/walkontable/src/selection/index.js +6 -4
  45. package/3rdparty/walkontable/src/selection/index.mjs +1 -1
  46. package/3rdparty/walkontable/src/selection/manager.js +3 -0
  47. package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
  48. package/3rdparty/walkontable/src/selection/scanner.js +46 -11
  49. package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
  50. package/3rdparty/walkontable/src/settings.js +8 -9
  51. package/3rdparty/walkontable/src/settings.mjs +8 -9
  52. package/3rdparty/walkontable/src/table/master.js +1 -1
  53. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  54. package/3rdparty/walkontable/src/table.js +25 -36
  55. package/3rdparty/walkontable/src/table.mjs +25 -36
  56. package/3rdparty/walkontable/src/types.js +1 -0
  57. package/3rdparty/walkontable/src/types.mjs +1 -0
  58. package/3rdparty/walkontable/src/utils/column.js +1 -43
  59. package/3rdparty/walkontable/src/utils/column.mjs +1 -43
  60. package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
  61. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
  62. package/3rdparty/walkontable/src/viewport.js +94 -91
  63. package/3rdparty/walkontable/src/viewport.mjs +95 -92
  64. package/CHANGELOG.md +36 -0
  65. package/README.md +1 -1
  66. package/base.js +4 -4
  67. package/base.mjs +3 -3
  68. package/core/focusCatcher/focusDetector.js +1 -0
  69. package/core/focusCatcher/focusDetector.mjs +1 -0
  70. package/core/hooks/bucket.js +184 -0
  71. package/core/hooks/bucket.mjs +180 -0
  72. package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
  73. package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
  74. package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
  75. package/core/hooks/index.js +385 -0
  76. package/core/hooks/index.mjs +381 -0
  77. package/core/index.js +2 -0
  78. package/core.d.ts +5 -3
  79. package/core.js +77 -35
  80. package/core.mjs +69 -27
  81. package/dataMap/dataMap.js +3 -0
  82. package/dataMap/dataMap.mjs +3 -0
  83. package/dataMap/dataSource.js +2 -0
  84. package/dataMap/dataSource.mjs +2 -0
  85. package/dataMap/metaManager/index.js +2 -0
  86. package/dataMap/metaManager/index.mjs +2 -0
  87. package/dataMap/metaManager/metaSchema.js +91 -5
  88. package/dataMap/metaManager/metaSchema.mjs +91 -5
  89. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
  90. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  91. package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
  92. package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
  93. package/dist/handsontable.css +84 -72
  94. package/dist/handsontable.full.css +317 -304
  95. package/dist/handsontable.full.js +14826 -7294
  96. package/dist/handsontable.full.min.css +15 -10
  97. package/dist/handsontable.full.min.js +262 -69
  98. package/dist/handsontable.js +7826 -5552
  99. package/dist/handsontable.min.css +10 -6
  100. package/dist/handsontable.min.js +33 -33
  101. package/dist/languages/all.js +1 -1
  102. package/dist/languages/ar-AR.js +1 -1
  103. package/dist/languages/cs-CZ.js +1 -1
  104. package/dist/languages/de-CH.js +1 -1
  105. package/dist/languages/de-DE.js +1 -1
  106. package/dist/languages/en-US.js +1 -1
  107. package/dist/languages/es-MX.js +1 -1
  108. package/dist/languages/fr-FR.js +1 -1
  109. package/dist/languages/hr-HR.js +1 -1
  110. package/dist/languages/it-IT.js +1 -1
  111. package/dist/languages/ja-JP.js +1 -1
  112. package/dist/languages/ko-KR.js +1 -1
  113. package/dist/languages/lv-LV.js +1 -1
  114. package/dist/languages/nb-NO.js +1 -1
  115. package/dist/languages/nl-NL.js +1 -1
  116. package/dist/languages/pl-PL.js +1 -1
  117. package/dist/languages/pt-BR.js +1 -1
  118. package/dist/languages/ru-RU.js +1 -1
  119. package/dist/languages/sr-SP.js +1 -1
  120. package/dist/languages/zh-CN.js +1 -1
  121. package/dist/languages/zh-TW.js +1 -1
  122. package/editorManager.js +2 -2
  123. package/editorManager.mjs +2 -2
  124. package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
  125. package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
  126. package/editors/baseEditor/baseEditor.js +25 -18
  127. package/editors/baseEditor/baseEditor.mjs +26 -19
  128. package/editors/dateEditor/dateEditor.js +9 -0
  129. package/editors/dateEditor/dateEditor.mjs +10 -1
  130. package/editors/dropdownEditor/dropdownEditor.js +4 -3
  131. package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
  132. package/editors/handsontableEditor/handsontableEditor.js +36 -2
  133. package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
  134. package/editors/passwordEditor/passwordEditor.js +18 -0
  135. package/editors/passwordEditor/passwordEditor.mjs +18 -0
  136. package/editors/registry.js +2 -2
  137. package/editors/registry.mjs +1 -1
  138. package/editors/selectEditor/selectEditor.js +20 -9
  139. package/editors/selectEditor/selectEditor.mjs +20 -9
  140. package/editors/textEditor/textEditor.js +5 -12
  141. package/editors/textEditor/textEditor.mjs +6 -13
  142. package/focusManager.js +5 -7
  143. package/focusManager.mjs +5 -7
  144. package/helpers/array.js +2 -0
  145. package/helpers/array.mjs +2 -0
  146. package/helpers/data.js +3 -0
  147. package/helpers/data.mjs +3 -0
  148. package/helpers/dom/element.js +39 -18
  149. package/helpers/dom/element.mjs +38 -17
  150. package/helpers/mixed.js +3 -3
  151. package/helpers/mixed.mjs +3 -3
  152. package/helpers/moves.js +3 -0
  153. package/helpers/moves.mjs +3 -0
  154. package/helpers/number.js +1 -0
  155. package/helpers/number.mjs +1 -0
  156. package/helpers/object.js +2 -0
  157. package/helpers/object.mjs +2 -0
  158. package/helpers/themes.js +17 -0
  159. package/helpers/themes.mjs +13 -0
  160. package/i18n/index.js +2 -0
  161. package/i18n/languages/index.d.ts +8 -0
  162. package/i18n/languages/ja-JP.d.ts +1 -1
  163. package/i18n/phraseFormatters/substituteVariables.js +1 -0
  164. package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
  165. package/index.d.ts +9 -1
  166. package/languages/all.js +1 -1
  167. package/languages/ar-AR.js +1 -1
  168. package/languages/cs-CZ.js +1 -1
  169. package/languages/de-CH.js +1 -1
  170. package/languages/de-DE.js +1 -1
  171. package/languages/en-US.js +1 -1
  172. package/languages/es-MX.js +1 -1
  173. package/languages/fr-FR.js +1 -1
  174. package/languages/hr-HR.js +1 -1
  175. package/languages/index.js +1 -1
  176. package/languages/it-IT.js +1 -1
  177. package/languages/ja-JP.js +1 -1
  178. package/languages/ko-KR.js +1 -1
  179. package/languages/lv-LV.js +1 -1
  180. package/languages/nb-NO.js +1 -1
  181. package/languages/nl-NL.js +1 -1
  182. package/languages/pl-PL.js +1 -1
  183. package/languages/pt-BR.js +1 -1
  184. package/languages/ru-RU.js +1 -1
  185. package/languages/sr-SP.js +1 -1
  186. package/languages/zh-CN.js +1 -1
  187. package/languages/zh-TW.js +1 -1
  188. package/package.json +22 -7
  189. package/plugins/autoColumnSize/autoColumnSize.js +22 -27
  190. package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
  191. package/plugins/autoRowSize/autoRowSize.js +20 -22
  192. package/plugins/autoRowSize/autoRowSize.mjs +21 -23
  193. package/plugins/autofill/autofill.js +4 -5
  194. package/plugins/autofill/autofill.mjs +1 -1
  195. package/plugins/base/base.d.ts +1 -1
  196. package/plugins/base/base.js +41 -0
  197. package/plugins/base/base.mjs +42 -1
  198. package/plugins/base/index.js +2 -1
  199. package/plugins/base/index.mjs +1 -1
  200. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
  201. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
  202. package/plugins/columnSorting/columnSorting.js +5 -4
  203. package/plugins/columnSorting/columnSorting.mjs +3 -1
  204. package/plugins/columnSorting/columnStatesManager.js +1 -0
  205. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  206. package/plugins/columnSorting/utils.js +3 -0
  207. package/plugins/columnSorting/utils.mjs +3 -0
  208. package/plugins/columnSummary/endpoints.js +3 -0
  209. package/plugins/columnSummary/endpoints.mjs +3 -0
  210. package/plugins/comments/commentEditor.js +9 -0
  211. package/plugins/comments/commentEditor.mjs +9 -0
  212. package/plugins/comments/comments.js +24 -18
  213. package/plugins/comments/comments.mjs +26 -20
  214. package/plugins/comments/editorResizeObserver.js +2 -0
  215. package/plugins/comments/editorResizeObserver.mjs +2 -0
  216. package/plugins/contextMenu/contextMenu.d.ts +2 -1
  217. package/plugins/contextMenu/contextMenu.js +6 -7
  218. package/plugins/contextMenu/contextMenu.mjs +1 -1
  219. package/plugins/contextMenu/menu/index.js +2 -0
  220. package/plugins/contextMenu/menu/menu.js +10 -5
  221. package/plugins/contextMenu/menu/menu.mjs +11 -6
  222. package/plugins/contextMenu/menu/positioner.js +4 -2
  223. package/plugins/contextMenu/menu/positioner.mjs +4 -2
  224. package/plugins/contextMenu/menu/shortcuts.js +3 -1
  225. package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
  226. package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
  227. package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
  228. package/plugins/contextMenu/utils.js +0 -10
  229. package/plugins/contextMenu/utils.mjs +0 -9
  230. package/plugins/copyPaste/copyPaste.d.ts +1 -0
  231. package/plugins/copyPaste/copyPaste.js +32 -23
  232. package/plugins/copyPaste/copyPaste.mjs +24 -15
  233. package/plugins/customBorders/utils.js +2 -0
  234. package/plugins/customBorders/utils.mjs +2 -0
  235. package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
  236. package/plugins/dropdownMenu/dropdownMenu.js +6 -7
  237. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
  238. package/plugins/exportFile/types/csv.js +1 -0
  239. package/plugins/exportFile/types/csv.mjs +1 -0
  240. package/plugins/filters/component/condition.js +2 -0
  241. package/plugins/filters/component/condition.mjs +2 -0
  242. package/plugins/filters/component/operators.js +2 -0
  243. package/plugins/filters/component/operators.mjs +2 -0
  244. package/plugins/filters/component/value.js +3 -0
  245. package/plugins/filters/component/value.mjs +3 -0
  246. package/plugins/filters/conditionCollection.js +3 -0
  247. package/plugins/filters/conditionCollection.mjs +3 -0
  248. package/plugins/filters/conditionUpdateObserver.js +2 -0
  249. package/plugins/filters/conditionUpdateObserver.mjs +2 -0
  250. package/plugins/filters/filters.js +43 -13
  251. package/plugins/filters/filters.mjs +43 -13
  252. package/plugins/filters/logicalOperations/conjunction.js +2 -0
  253. package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
  254. package/plugins/filters/logicalOperations/disjunction.js +2 -0
  255. package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
  256. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
  257. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
  258. package/plugins/filters/menu/focusController.js +38 -14
  259. package/plugins/filters/menu/focusController.mjs +38 -14
  260. package/plugins/filters/ui/multipleSelect.js +10 -0
  261. package/plugins/filters/ui/multipleSelect.mjs +10 -0
  262. package/plugins/formulas/engine/register.js +3 -0
  263. package/plugins/formulas/engine/register.mjs +3 -0
  264. package/plugins/formulas/engine/settings.js +3 -0
  265. package/plugins/formulas/engine/settings.mjs +3 -0
  266. package/plugins/formulas/formulas.js +12 -7
  267. package/plugins/formulas/formulas.mjs +6 -1
  268. package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
  269. package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
  270. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
  271. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
  272. package/plugins/hiddenColumns/hiddenColumns.js +22 -30
  273. package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
  274. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
  275. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
  276. package/plugins/hiddenRows/hiddenRows.js +21 -29
  277. package/plugins/hiddenRows/hiddenRows.mjs +17 -25
  278. package/plugins/index.d.ts +3 -0
  279. package/plugins/index.js +3 -0
  280. package/plugins/index.mjs +3 -1
  281. package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
  282. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
  283. package/plugins/manualColumnMove/manualColumnMove.js +6 -6
  284. package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
  285. package/plugins/manualColumnResize/manualColumnResize.js +26 -12
  286. package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
  287. package/plugins/manualRowMove/manualRowMove.js +8 -6
  288. package/plugins/manualRowMove/manualRowMove.mjs +6 -4
  289. package/plugins/manualRowResize/manualRowResize.js +3 -2
  290. package/plugins/manualRowResize/manualRowResize.mjs +4 -3
  291. package/plugins/mergeCells/cellsCollection.js +19 -3
  292. package/plugins/mergeCells/cellsCollection.mjs +20 -4
  293. package/plugins/mergeCells/mergeCells.d.ts +6 -2
  294. package/plugins/mergeCells/mergeCells.js +84 -56
  295. package/plugins/mergeCells/mergeCells.mjs +82 -54
  296. package/plugins/mergeCells/renderer.js +13 -3
  297. package/plugins/mergeCells/renderer.mjs +13 -3
  298. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  299. package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
  300. package/plugins/nestedHeaders/nestedHeaders.js +63 -16
  301. package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
  302. package/plugins/nestedHeaders/stateManager/index.js +1 -0
  303. package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
  304. package/plugins/nestedRows/nestedRows.js +3 -0
  305. package/plugins/nestedRows/nestedRows.mjs +3 -0
  306. package/plugins/nestedRows/ui/headers.js +7 -1
  307. package/plugins/nestedRows/ui/headers.mjs +7 -1
  308. package/plugins/nestedRows/utils/rowMoveController.js +4 -0
  309. package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
  310. package/plugins/persistentState/persistentState.js +4 -4
  311. package/plugins/persistentState/persistentState.mjs +1 -1
  312. package/plugins/stretchColumns/calculator.js +162 -0
  313. package/plugins/stretchColumns/calculator.mjs +158 -0
  314. package/plugins/stretchColumns/index.d.ts +1 -0
  315. package/plugins/stretchColumns/index.js +7 -0
  316. package/plugins/stretchColumns/index.mjs +1 -0
  317. package/plugins/stretchColumns/strategies/_base.js +85 -0
  318. package/plugins/stretchColumns/strategies/_base.mjs +81 -0
  319. package/plugins/stretchColumns/strategies/all.js +71 -0
  320. package/plugins/stretchColumns/strategies/all.mjs +67 -0
  321. package/plugins/stretchColumns/strategies/last.js +79 -0
  322. package/plugins/stretchColumns/strategies/last.mjs +75 -0
  323. package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
  324. package/plugins/stretchColumns/stretchColumns.js +222 -0
  325. package/plugins/stretchColumns/stretchColumns.mjs +218 -0
  326. package/plugins/trimRows/trimRows.js +2 -0
  327. package/plugins/trimRows/trimRows.mjs +2 -0
  328. package/plugins/undoRedo/undoRedo.js +9 -5
  329. package/plugins/undoRedo/undoRedo.mjs +8 -3
  330. package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
  331. package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
  332. package/selection/index.js +2 -0
  333. package/selection/range.js +2 -0
  334. package/selection/range.mjs +2 -0
  335. package/selection/selection.js +7 -2
  336. package/selection/selection.mjs +7 -2
  337. package/selection/utils.js +2 -0
  338. package/selection/utils.mjs +2 -0
  339. package/settings.d.ts +4 -1
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
  342. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
  343. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
  344. package/shortcutContexts/commands/index.js +2 -0
  345. package/shortcutContexts/commands/index.mjs +2 -0
  346. package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
  347. package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
  348. package/shortcutContexts/index.js +2 -0
  349. package/shortcutContexts/index.mjs +2 -0
  350. package/shortcuts/context.js +3 -0
  351. package/shortcuts/context.mjs +3 -0
  352. package/shortcuts/recorder.js +3 -3
  353. package/shortcuts/recorder.mjs +3 -3
  354. package/shortcuts/utils.js +1 -0
  355. package/shortcuts/utils.mjs +1 -0
  356. package/styles/handsontable.css +2307 -0
  357. package/styles/handsontable.min.css +30 -0
  358. package/styles/ht-theme-horizon.css +607 -0
  359. package/styles/ht-theme-horizon.min.css +30 -0
  360. package/styles/ht-theme-main.css +613 -0
  361. package/styles/ht-theme-main.min.css +30 -0
  362. package/tableView.js +205 -33
  363. package/tableView.mjs +206 -34
  364. package/translations/changesObservable/observable.js +2 -0
  365. package/translations/changesObservable/observable.mjs +2 -0
  366. package/translations/index.js +2 -0
  367. package/translations/indexMapper.js +4 -0
  368. package/translations/indexMapper.mjs +4 -0
  369. package/translations/mapCollections/index.js +2 -0
  370. package/translations/mapCollections/mapCollection.js +2 -0
  371. package/translations/mapCollections/mapCollection.mjs +2 -0
  372. package/translations/maps/index.js +2 -0
  373. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  374. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  375. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  376. package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
  377. package/translations/maps/utils/physicallyIndexed.js +1 -0
  378. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  379. package/utils/autoResize.js +11 -3
  380. package/utils/autoResize.mjs +11 -3
  381. package/utils/dataStructures/priorityMap.js +1 -0
  382. package/utils/dataStructures/priorityMap.mjs +1 -0
  383. package/utils/dataStructures/uniqueMap.js +2 -0
  384. package/utils/dataStructures/uniqueMap.mjs +2 -0
  385. package/utils/ghostTable.js +7 -3
  386. package/utils/ghostTable.mjs +7 -3
  387. package/utils/parseTable.js +4 -0
  388. package/utils/parseTable.mjs +4 -0
  389. package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
  390. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  391. package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
  392. package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
@@ -1,4 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.constructor.js";
3
+ import "core-js/modules/esnext.iterator.for-each.js";
2
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
6
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -298,7 +300,9 @@ export class Overlay {
298
300
  // todo ioc , or factor func if used only here
299
301
  event: this.wot.wtEvent,
300
302
  // todo ioc , or factory func if used only here
301
- selectionManager: this.wot.selectionManager // todo ioc , or factory func if used only here
303
+ selectionManager: this.wot.selectionManager,
304
+ // todo ioc , or factory func if used only here
305
+ stylesHandler: this.wot.stylesHandler
302
306
  });
303
307
  }
304
308
 
@@ -312,7 +316,10 @@ export class Overlay {
312
316
  refresh() {
313
317
  let fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
314
318
  if (this.needFullRender) {
319
+ const cloneSource = this.clone.cloneSource;
320
+ cloneSource.activeOverlayName = this.clone.wtTable.name;
315
321
  this.clone.draw(fastDraw);
322
+ cloneSource.activeOverlayName = 'master';
316
323
  }
317
324
  }
318
325
 
@@ -144,9 +144,9 @@ class BottomOverlay extends _base.Overlay {
144
144
  sumCellSizes(from, to) {
145
145
  const {
146
146
  wtTable,
147
- wtSettings
147
+ stylesHandler
148
148
  } = this.wot;
149
- const defaultRowHeight = wtSettings.getSetting('defaultRowHeight');
149
+ const defaultRowHeight = stylesHandler.getDefaultRowHeight();
150
150
  let row = from;
151
151
  let sum = 0;
152
152
  while (row < to) {
@@ -180,14 +180,13 @@ class BottomOverlay extends _base.Overlay {
180
180
  rootDocument,
181
181
  rootWindow
182
182
  } = this.domBindings;
183
- const scrollbarWidth = (0, _element.getScrollbarWidth)(rootDocument);
184
183
  const overlayRoot = this.clone.wtTable.holder.parentNode;
185
184
  const overlayRootStyle = overlayRoot.style;
186
185
  const preventOverflow = this.wtSettings.getSetting('preventOverflow');
187
186
  if (this.trimmingContainer !== rootWindow || preventOverflow === 'horizontal') {
188
187
  let width = wtViewport.getWorkspaceWidth();
189
- if (this.wot.wtOverlays.hasScrollbarRight) {
190
- width -= scrollbarWidth;
188
+ if (wtViewport.hasVerticalScroll()) {
189
+ width -= (0, _element.getScrollbarWidth)(rootDocument);
191
190
  }
192
191
  width = Math.min(width, wtTable.wtRootElement.scrollWidth);
193
192
  overlayRootStyle.width = `${width}px`;
@@ -196,7 +195,7 @@ class BottomOverlay extends _base.Overlay {
196
195
  }
197
196
  this.clone.wtTable.holder.style.width = overlayRootStyle.width;
198
197
  let tableHeight = (0, _element.outerHeight)(this.clone.wtTable.TABLE);
199
- if (!this.wot.wtTable.hasDefinedSize()) {
198
+ if (!wtTable.hasDefinedSize()) {
200
199
  tableHeight = 0;
201
200
  }
202
201
  overlayRootStyle.height = `${tableHeight}px`;
@@ -140,9 +140,9 @@ export class BottomOverlay extends Overlay {
140
140
  sumCellSizes(from, to) {
141
141
  const {
142
142
  wtTable,
143
- wtSettings
143
+ stylesHandler
144
144
  } = this.wot;
145
- const defaultRowHeight = wtSettings.getSetting('defaultRowHeight');
145
+ const defaultRowHeight = stylesHandler.getDefaultRowHeight();
146
146
  let row = from;
147
147
  let sum = 0;
148
148
  while (row < to) {
@@ -176,14 +176,13 @@ export class BottomOverlay extends Overlay {
176
176
  rootDocument,
177
177
  rootWindow
178
178
  } = this.domBindings;
179
- const scrollbarWidth = getScrollbarWidth(rootDocument);
180
179
  const overlayRoot = this.clone.wtTable.holder.parentNode;
181
180
  const overlayRootStyle = overlayRoot.style;
182
181
  const preventOverflow = this.wtSettings.getSetting('preventOverflow');
183
182
  if (this.trimmingContainer !== rootWindow || preventOverflow === 'horizontal') {
184
183
  let width = wtViewport.getWorkspaceWidth();
185
- if (this.wot.wtOverlays.hasScrollbarRight) {
186
- width -= scrollbarWidth;
184
+ if (wtViewport.hasVerticalScroll()) {
185
+ width -= getScrollbarWidth(rootDocument);
187
186
  }
188
187
  width = Math.min(width, wtTable.wtRootElement.scrollWidth);
189
188
  overlayRootStyle.width = `${width}px`;
@@ -192,7 +191,7 @@ export class BottomOverlay extends Overlay {
192
191
  }
193
192
  this.clone.wtTable.holder.style.width = overlayRootStyle.width;
194
193
  let tableHeight = outerHeight(this.clone.wtTable.TABLE);
195
- if (!this.wot.wtTable.hasDefinedSize()) {
194
+ if (!wtTable.hasDefinedSize()) {
196
195
  tableHeight = 0;
197
196
  }
198
197
  overlayRootStyle.height = `${tableHeight}px`;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/esnext.iterator.constructor.js");
4
+ require("core-js/modules/esnext.iterator.for-each.js");
3
5
  exports.__esModule = true;
4
6
  var _exportNames = {
5
7
  BottomInlineStartCornerOverlay: true,
@@ -119,7 +119,7 @@ class InlineStartOverlay extends _base.Overlay {
119
119
  let column = from;
120
120
  let sum = 0;
121
121
  while (column < to) {
122
- sum += this.wot.wtTable.getStretchedColumnWidth(column) || defaultColumnWidth;
122
+ sum += this.wot.wtTable.getColumnWidth(column) || defaultColumnWidth;
123
123
  column += 1;
124
124
  }
125
125
  return sum;
@@ -141,20 +141,20 @@ class InlineStartOverlay extends _base.Overlay {
141
141
  */
142
142
  adjustRootElementSize() {
143
143
  const {
144
- wtTable
144
+ wtTable,
145
+ wtViewport
145
146
  } = this.wot;
146
147
  const {
147
148
  rootDocument,
148
149
  rootWindow
149
150
  } = this.domBindings;
150
- const scrollbarHeight = (0, _element.getScrollbarWidth)(rootDocument);
151
151
  const overlayRoot = this.clone.wtTable.holder.parentNode;
152
152
  const overlayRootStyle = overlayRoot.style;
153
153
  const preventOverflow = this.wtSettings.getSetting('preventOverflow');
154
154
  if (this.trimmingContainer !== rootWindow || preventOverflow === 'vertical') {
155
- let height = this.wot.wtViewport.getWorkspaceHeight();
156
- if (this.wot.wtOverlays.hasScrollbarBottom) {
157
- height -= scrollbarHeight;
155
+ let height = wtViewport.getWorkspaceHeight();
156
+ if (wtViewport.hasHorizontalScroll()) {
157
+ height -= (0, _element.getScrollbarWidth)(rootDocument);
158
158
  }
159
159
  height = Math.min(height, wtTable.wtRootElement.scrollHeight);
160
160
  overlayRootStyle.height = `${height}px`;
@@ -173,7 +173,8 @@ class InlineStartOverlay extends _base.Overlay {
173
173
  const {
174
174
  holder
175
175
  } = this.clone.wtTable;
176
- const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(_selection.CORNER_DEFAULT_STYLE.width, 10) / 2 : 0;
176
+ const cornerStyle = (0, _selection.getCornerStyle)(this.wot);
177
+ const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(cornerStyle.width, 10) / 2 : 0;
177
178
  this.clone.wtTable.hider.style.height = this.hider.style.height;
178
179
  holder.style.height = holder.parentNode.style.height;
179
180
  // Add selection corner protruding part to the holder total width to make sure that
@@ -2,7 +2,7 @@ import "core-js/modules/es.error.cause.js";
2
2
  import { addClass, getScrollbarWidth, getScrollLeft, getMaximumScrollLeft, getWindowScrollTop, hasClass, outerWidth, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
3
3
  import InlineStartOverlayTable from "../table/inlineStart.mjs";
4
4
  import { Overlay } from "./_base.mjs";
5
- import { CORNER_DEFAULT_STYLE } from "../selection/index.mjs";
5
+ import { getCornerStyle } from "../selection/index.mjs";
6
6
  import { CLONE_INLINE_START } from "./constants.mjs";
7
7
  /**
8
8
  * @class InlineStartOverlay
@@ -115,7 +115,7 @@ export class InlineStartOverlay extends Overlay {
115
115
  let column = from;
116
116
  let sum = 0;
117
117
  while (column < to) {
118
- sum += this.wot.wtTable.getStretchedColumnWidth(column) || defaultColumnWidth;
118
+ sum += this.wot.wtTable.getColumnWidth(column) || defaultColumnWidth;
119
119
  column += 1;
120
120
  }
121
121
  return sum;
@@ -137,20 +137,20 @@ export class InlineStartOverlay extends Overlay {
137
137
  */
138
138
  adjustRootElementSize() {
139
139
  const {
140
- wtTable
140
+ wtTable,
141
+ wtViewport
141
142
  } = this.wot;
142
143
  const {
143
144
  rootDocument,
144
145
  rootWindow
145
146
  } = this.domBindings;
146
- const scrollbarHeight = getScrollbarWidth(rootDocument);
147
147
  const overlayRoot = this.clone.wtTable.holder.parentNode;
148
148
  const overlayRootStyle = overlayRoot.style;
149
149
  const preventOverflow = this.wtSettings.getSetting('preventOverflow');
150
150
  if (this.trimmingContainer !== rootWindow || preventOverflow === 'vertical') {
151
- let height = this.wot.wtViewport.getWorkspaceHeight();
152
- if (this.wot.wtOverlays.hasScrollbarBottom) {
153
- height -= scrollbarHeight;
151
+ let height = wtViewport.getWorkspaceHeight();
152
+ if (wtViewport.hasHorizontalScroll()) {
153
+ height -= getScrollbarWidth(rootDocument);
154
154
  }
155
155
  height = Math.min(height, wtTable.wtRootElement.scrollHeight);
156
156
  overlayRootStyle.height = `${height}px`;
@@ -169,7 +169,8 @@ export class InlineStartOverlay extends Overlay {
169
169
  const {
170
170
  holder
171
171
  } = this.clone.wtTable;
172
- const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(CORNER_DEFAULT_STYLE.width, 10) / 2 : 0;
172
+ const cornerStyle = getCornerStyle(this.wot);
173
+ const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(cornerStyle.width, 10) / 2 : 0;
173
174
  this.clone.wtTable.hider.style.height = this.hider.style.height;
174
175
  holder.style.height = holder.parentNode.style.height;
175
176
  // Add selection corner protruding part to the holder total width to make sure that
@@ -138,7 +138,7 @@ class TopOverlay extends _base.Overlay {
138
138
  * @returns {number} Height sum.
139
139
  */
140
140
  sumCellSizes(from, to) {
141
- const defaultRowHeight = this.wtSettings.getSetting('defaultRowHeight');
141
+ const defaultRowHeight = this.wot.stylesHandler.getDefaultRowHeight();
142
142
  let row = from;
143
143
  let sum = 0;
144
144
  while (row < to) {
@@ -165,20 +165,20 @@ class TopOverlay extends _base.Overlay {
165
165
  */
166
166
  adjustRootElementSize() {
167
167
  const {
168
- wtTable
168
+ wtTable,
169
+ wtViewport
169
170
  } = this.wot;
170
171
  const {
171
172
  rootDocument,
172
173
  rootWindow
173
174
  } = this.domBindings;
174
- const scrollbarWidth = (0, _element.getScrollbarWidth)(rootDocument);
175
175
  const overlayRoot = this.clone.wtTable.holder.parentNode;
176
176
  const overlayRootStyle = overlayRoot.style;
177
177
  const preventOverflow = this.wtSettings.getSetting('preventOverflow');
178
178
  if (this.trimmingContainer !== rootWindow || preventOverflow === 'horizontal') {
179
- let width = this.wot.wtViewport.getWorkspaceWidth();
180
- if (this.wot.wtOverlays.hasScrollbarRight) {
181
- width -= scrollbarWidth;
179
+ let width = wtViewport.getWorkspaceWidth();
180
+ if (wtViewport.hasVerticalScroll()) {
181
+ width -= (0, _element.getScrollbarWidth)(rootDocument);
182
182
  }
183
183
  width = Math.min(width, wtTable.wtRootElement.scrollWidth);
184
184
  overlayRootStyle.width = `${width}px`;
@@ -187,7 +187,7 @@ class TopOverlay extends _base.Overlay {
187
187
  }
188
188
  this.clone.wtTable.holder.style.width = overlayRootStyle.width;
189
189
  let tableHeight = (0, _element.outerHeight)(this.clone.wtTable.TABLE);
190
- if (!this.wot.wtTable.hasDefinedSize()) {
190
+ if (!wtTable.hasDefinedSize()) {
191
191
  tableHeight = 0;
192
192
  }
193
193
  overlayRootStyle.height = `${tableHeight}px`;
@@ -200,7 +200,8 @@ class TopOverlay extends _base.Overlay {
200
200
  const {
201
201
  holder
202
202
  } = this.clone.wtTable;
203
- const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(_selection.CORNER_DEFAULT_STYLE.height, 10) / 2 : 0;
203
+ const cornerStyle = (0, _selection.getCornerStyle)(this.wot);
204
+ const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(cornerStyle.height, 10) / 2 : 0;
204
205
  this.clone.wtTable.hider.style.width = this.hider.style.width;
205
206
  holder.style.width = holder.parentNode.style.width;
206
207
  // Add selection corner protruding part to the holder total height to make sure that
@@ -5,7 +5,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
5
5
  import { addClass, getMaximumScrollTop, getScrollbarWidth, getScrollTop, getWindowScrollLeft, hasClass, outerHeight, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
6
6
  import TopOverlayTable from "./../table/top.mjs";
7
7
  import { Overlay } from "./_base.mjs";
8
- import { CORNER_DEFAULT_STYLE } from "../selection/index.mjs";
8
+ import { getCornerStyle } from "../selection/index.mjs";
9
9
  import { CLONE_TOP } from "./constants.mjs";
10
10
  /**
11
11
  * @class TopOverlay
@@ -134,7 +134,7 @@ export class TopOverlay extends Overlay {
134
134
  * @returns {number} Height sum.
135
135
  */
136
136
  sumCellSizes(from, to) {
137
- const defaultRowHeight = this.wtSettings.getSetting('defaultRowHeight');
137
+ const defaultRowHeight = this.wot.stylesHandler.getDefaultRowHeight();
138
138
  let row = from;
139
139
  let sum = 0;
140
140
  while (row < to) {
@@ -161,20 +161,20 @@ export class TopOverlay extends Overlay {
161
161
  */
162
162
  adjustRootElementSize() {
163
163
  const {
164
- wtTable
164
+ wtTable,
165
+ wtViewport
165
166
  } = this.wot;
166
167
  const {
167
168
  rootDocument,
168
169
  rootWindow
169
170
  } = this.domBindings;
170
- const scrollbarWidth = getScrollbarWidth(rootDocument);
171
171
  const overlayRoot = this.clone.wtTable.holder.parentNode;
172
172
  const overlayRootStyle = overlayRoot.style;
173
173
  const preventOverflow = this.wtSettings.getSetting('preventOverflow');
174
174
  if (this.trimmingContainer !== rootWindow || preventOverflow === 'horizontal') {
175
- let width = this.wot.wtViewport.getWorkspaceWidth();
176
- if (this.wot.wtOverlays.hasScrollbarRight) {
177
- width -= scrollbarWidth;
175
+ let width = wtViewport.getWorkspaceWidth();
176
+ if (wtViewport.hasVerticalScroll()) {
177
+ width -= getScrollbarWidth(rootDocument);
178
178
  }
179
179
  width = Math.min(width, wtTable.wtRootElement.scrollWidth);
180
180
  overlayRootStyle.width = `${width}px`;
@@ -183,7 +183,7 @@ export class TopOverlay extends Overlay {
183
183
  }
184
184
  this.clone.wtTable.holder.style.width = overlayRootStyle.width;
185
185
  let tableHeight = outerHeight(this.clone.wtTable.TABLE);
186
- if (!this.wot.wtTable.hasDefinedSize()) {
186
+ if (!wtTable.hasDefinedSize()) {
187
187
  tableHeight = 0;
188
188
  }
189
189
  overlayRootStyle.height = `${tableHeight}px`;
@@ -196,7 +196,8 @@ export class TopOverlay extends Overlay {
196
196
  const {
197
197
  holder
198
198
  } = this.clone.wtTable;
199
- const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(CORNER_DEFAULT_STYLE.height, 10) / 2 : 0;
199
+ const cornerStyle = getCornerStyle(this.wot);
200
+ const selectionCornerOffset = this.wot.selectionManager.getFocusSelection() ? parseInt(cornerStyle.height, 10) / 2 : 0;
200
201
  this.clone.wtTable.hider.style.width = this.hider.style.width;
201
202
  holder.style.width = holder.parentNode.style.width;
202
203
  // Add selection corner protruding part to the holder total height to make sure that
@@ -3,6 +3,9 @@
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.reduce.js");
6
9
  var _element = require("../../../helpers/dom/element");
7
10
  var _feature = require("../../../helpers/feature");
8
11
  var _array = require("../../../helpers/array");
@@ -163,8 +166,6 @@ class Overlays {
163
166
  const isOverflowHidden = rootWindow.getComputedStyle(wtTable.wtRootElement.parentNode).getPropertyValue('overflow') === 'hidden';
164
167
  this.scrollableElement = isOverflowHidden ? wtTable.holder : (0, _element.getScrollableElement)(wtTable.TABLE);
165
168
  this.initOverlays();
166
- this.hasScrollbarBottom = false;
167
- this.hasScrollbarRight = false;
168
169
  this.destroyed = false;
169
170
  this.keyPressed = false;
170
171
  this.spreaderLastSize = {
@@ -329,13 +330,14 @@ class Overlays {
329
330
  });
330
331
  let resizeTimeout;
331
332
  this.eventManager.addEventListener(rootWindow, 'resize', () => {
332
- clearTimeout(resizeTimeout);
333
- resizeTimeout = setTimeout(() => {
333
+ (0, _feature.requestAnimationFrame)(() => {
334
+ clearTimeout(resizeTimeout);
334
335
  this.wtSettings.getSetting('onWindowResize');
335
-
336
- // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
337
- _classPrivateFieldSet(_containerDomResizeCount, this, 0);
338
- }, 200);
336
+ resizeTimeout = setTimeout(() => {
337
+ // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
338
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
339
+ }, 200);
340
+ });
339
341
  });
340
342
  if (!isScrollOnWindow) {
341
343
  this.resizeObserver.observe(this.wtTable.wtRootElement.parentElement);
@@ -641,24 +643,6 @@ class Overlays {
641
643
  // we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
642
644
  hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
643
645
  hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
644
- if (this.scrollbarSize > 0) {
645
- // todo refactoring, looking as a part of logic which should be moved outside the class
646
- const {
647
- scrollHeight: rootElemScrollHeight,
648
- scrollWidth: rootElemScrollWidth
649
- } = wtTable.wtRootElement;
650
- const {
651
- scrollHeight: holderScrollHeight,
652
- scrollWidth: holderScrollWidth
653
- } = wtTable.holder;
654
- this.hasScrollbarRight = rootElemScrollHeight < holderScrollHeight;
655
- this.hasScrollbarBottom = rootElemScrollWidth < holderScrollWidth;
656
- if (this.hasScrollbarRight && wtTable.hider.scrollWidth + this.scrollbarSize > rootElemScrollWidth) {
657
- this.hasScrollbarBottom = true;
658
- } else if (this.hasScrollbarBottom && wtTable.hider.scrollHeight + this.scrollbarSize > rootElemScrollHeight) {
659
- this.hasScrollbarRight = true;
660
- }
661
- }
662
646
  this.topOverlay.adjustElementsSize();
663
647
  this.inlineStartOverlay.adjustElementsSize();
664
648
  this.bottomOverlay.adjustElementsSize();
@@ -1,5 +1,8 @@
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.reduce.js";
3
6
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
4
7
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
5
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; }
@@ -160,8 +163,6 @@ class Overlays {
160
163
  const isOverflowHidden = rootWindow.getComputedStyle(wtTable.wtRootElement.parentNode).getPropertyValue('overflow') === 'hidden';
161
164
  this.scrollableElement = isOverflowHidden ? wtTable.holder : getScrollableElement(wtTable.TABLE);
162
165
  this.initOverlays();
163
- this.hasScrollbarBottom = false;
164
- this.hasScrollbarRight = false;
165
166
  this.destroyed = false;
166
167
  this.keyPressed = false;
167
168
  this.spreaderLastSize = {
@@ -326,13 +327,14 @@ class Overlays {
326
327
  });
327
328
  let resizeTimeout;
328
329
  this.eventManager.addEventListener(rootWindow, 'resize', () => {
329
- clearTimeout(resizeTimeout);
330
- resizeTimeout = setTimeout(() => {
330
+ requestAnimationFrame(() => {
331
+ clearTimeout(resizeTimeout);
331
332
  this.wtSettings.getSetting('onWindowResize');
332
-
333
- // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
334
- _classPrivateFieldSet(_containerDomResizeCount, this, 0);
335
- }, 200);
333
+ resizeTimeout = setTimeout(() => {
334
+ // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
335
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
336
+ }, 200);
337
+ });
336
338
  });
337
339
  if (!isScrollOnWindow) {
338
340
  this.resizeObserver.observe(this.wtTable.wtRootElement.parentElement);
@@ -638,24 +640,6 @@ class Overlays {
638
640
  // we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
639
641
  hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
640
642
  hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
641
- if (this.scrollbarSize > 0) {
642
- // todo refactoring, looking as a part of logic which should be moved outside the class
643
- const {
644
- scrollHeight: rootElemScrollHeight,
645
- scrollWidth: rootElemScrollWidth
646
- } = wtTable.wtRootElement;
647
- const {
648
- scrollHeight: holderScrollHeight,
649
- scrollWidth: holderScrollWidth
650
- } = wtTable.holder;
651
- this.hasScrollbarRight = rootElemScrollHeight < holderScrollHeight;
652
- this.hasScrollbarBottom = rootElemScrollWidth < holderScrollWidth;
653
- if (this.hasScrollbarRight && wtTable.hider.scrollWidth + this.scrollbarSize > rootElemScrollWidth) {
654
- this.hasScrollbarBottom = true;
655
- } else if (this.hasScrollbarBottom && wtTable.hider.scrollHeight + this.scrollbarSize > rootElemScrollHeight) {
656
- this.hasScrollbarRight = true;
657
- }
658
- }
659
643
  this.topOverlay.adjustElementsSize();
660
644
  this.inlineStartOverlay.adjustElementsSize();
661
645
  this.bottomOverlay.adjustElementsSize();
@@ -70,7 +70,7 @@ class ColGroupRenderer extends _base.default {
70
70
  // Render column nodes for cells
71
71
  for (let visibleColumnIndex = 0; visibleColumnIndex < columnsToRender; visibleColumnIndex++) {
72
72
  const sourceColumnIndex = this.table.renderedColumnToSource(visibleColumnIndex);
73
- const width = this.table.columnUtils.getStretchedColumnWidth(sourceColumnIndex);
73
+ const width = this.table.columnUtils.getWidth(sourceColumnIndex);
74
74
  this.rootNode.childNodes[visibleColumnIndex + rowHeadersCount].style.width = `${width}px`;
75
75
  }
76
76
  const firstChild = this.rootNode.firstChild;
@@ -66,7 +66,7 @@ export default class ColGroupRenderer extends BaseRenderer {
66
66
  // Render column nodes for cells
67
67
  for (let visibleColumnIndex = 0; visibleColumnIndex < columnsToRender; visibleColumnIndex++) {
68
68
  const sourceColumnIndex = this.table.renderedColumnToSource(visibleColumnIndex);
69
- const width = this.table.columnUtils.getStretchedColumnWidth(sourceColumnIndex);
69
+ const width = this.table.columnUtils.getWidth(sourceColumnIndex);
70
70
  this.rootNode.childNodes[visibleColumnIndex + rowHeadersCount].style.width = `${width}px`;
71
71
  }
72
72
  const firstChild = this.rootNode.firstChild;
@@ -28,7 +28,8 @@ class Renderer {
28
28
  TBODY,
29
29
  rowUtils,
30
30
  columnUtils,
31
- cellRenderer
31
+ cellRenderer,
32
+ stylesHandler
32
33
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
33
34
  /**
34
35
  * General renderer class used to render Walkontable content on screen.
@@ -36,7 +37,8 @@ class Renderer {
36
37
  * @type {TableRenderer}
37
38
  */
38
39
  this.renderer = new _table.default(TABLE, {
39
- cellRenderer
40
+ cellRenderer,
41
+ stylesHandler
40
42
  });
41
43
  this.renderer.setRenderers({
42
44
  rowHeaders: new _rowHeaders.default(),
@@ -18,7 +18,8 @@ class Renderer {
18
18
  TBODY,
19
19
  rowUtils,
20
20
  columnUtils,
21
- cellRenderer
21
+ cellRenderer,
22
+ stylesHandler
22
23
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
24
  /**
24
25
  * General renderer class used to render Walkontable content on screen.
@@ -26,7 +27,8 @@ class Renderer {
26
27
  * @type {TableRenderer}
27
28
  */
28
29
  this.renderer = new TableRenderer(TABLE, {
29
- cellRenderer
30
+ cellRenderer,
31
+ stylesHandler
30
32
  });
31
33
  this.renderer.setRenderers({
32
34
  rowHeaders: new RowHeadersRenderer(),
@@ -52,7 +52,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
52
52
  class TableRenderer {
53
53
  constructor(rootNode) {
54
54
  let {
55
- cellRenderer
55
+ cellRenderer,
56
+ stylesHandler
56
57
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
57
58
  /**
58
59
  * Table element which will be used to render the children element.
@@ -168,9 +169,14 @@ class TableRenderer {
168
169
  * @type {'inline_start'|'top'|'top_inline_start_corner'|'bottom'|'bottom_inline_start_corner'|'master'}
169
170
  */
170
171
  _defineProperty(this, "activeOverlayName", void 0);
172
+ /**
173
+ * Styles handler instance.
174
+ */
175
+ _defineProperty(this, "stylesHandler", void 0);
171
176
  this.rootNode = rootNode;
172
177
  this.rootDocument = this.rootNode.ownerDocument;
173
178
  this.cellRenderer = cellRenderer;
179
+ this.stylesHandler = stylesHandler;
174
180
  }
175
181
 
176
182
  /**
@@ -301,7 +307,7 @@ class TableRenderer {
301
307
  this.rowHeaders.render();
302
308
  this.cells.render();
303
309
 
304
- // After the cells are rendered calculate columns width (or columns stretch width) to prepare proper values
310
+ // After the cells are rendered calculate columns width to prepare proper values
305
311
  // for colGroup renderer (which renders COL elements).
306
312
  this.columnUtils.calculateWidths();
307
313
  this.colGroup.render();
@@ -313,12 +319,15 @@ class TableRenderer {
313
319
  // Fix for multi-line content and for supporting `rowHeights` option.
314
320
  for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
315
321
  const TR = rows.getRenderedNode(visibleRowIndex);
322
+ const rowUtils = this.rowUtils;
316
323
  if (TR.firstChild) {
317
324
  const sourceRowIndex = this.renderedRowToSource(visibleRowIndex);
318
- const rowHeight = this.rowUtils.getHeightByOverlayName(sourceRowIndex, this.activeOverlayName);
325
+ const rowHeight = rowUtils.getHeightByOverlayName(sourceRowIndex, this.activeOverlayName);
326
+ const isBorderBoxSizing = this.stylesHandler.areCellsBorderBox();
327
+ const borderCompensation = isBorderBoxSizing ? 0 : 1;
319
328
  if (rowHeight) {
320
329
  // Decrease height. 1 pixel will be "replaced" by 1px border top
321
- TR.firstChild.style.height = `${rowHeight - 1}px`;
330
+ TR.firstChild.style.height = `${rowHeight - borderCompensation}px`;
322
331
  } else {
323
332
  TR.firstChild.style.height = '';
324
333
  }
@@ -49,7 +49,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
49
49
  export default class TableRenderer {
50
50
  constructor(rootNode) {
51
51
  let {
52
- cellRenderer
52
+ cellRenderer,
53
+ stylesHandler
53
54
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
54
55
  /**
55
56
  * Table element which will be used to render the children element.
@@ -165,9 +166,14 @@ export default class TableRenderer {
165
166
  * @type {'inline_start'|'top'|'top_inline_start_corner'|'bottom'|'bottom_inline_start_corner'|'master'}
166
167
  */
167
168
  _defineProperty(this, "activeOverlayName", void 0);
169
+ /**
170
+ * Styles handler instance.
171
+ */
172
+ _defineProperty(this, "stylesHandler", void 0);
168
173
  this.rootNode = rootNode;
169
174
  this.rootDocument = this.rootNode.ownerDocument;
170
175
  this.cellRenderer = cellRenderer;
176
+ this.stylesHandler = stylesHandler;
171
177
  }
172
178
 
173
179
  /**
@@ -298,7 +304,7 @@ export default class TableRenderer {
298
304
  this.rowHeaders.render();
299
305
  this.cells.render();
300
306
 
301
- // After the cells are rendered calculate columns width (or columns stretch width) to prepare proper values
307
+ // After the cells are rendered calculate columns width to prepare proper values
302
308
  // for colGroup renderer (which renders COL elements).
303
309
  this.columnUtils.calculateWidths();
304
310
  this.colGroup.render();
@@ -310,12 +316,15 @@ export default class TableRenderer {
310
316
  // Fix for multi-line content and for supporting `rowHeights` option.
311
317
  for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
312
318
  const TR = rows.getRenderedNode(visibleRowIndex);
319
+ const rowUtils = this.rowUtils;
313
320
  if (TR.firstChild) {
314
321
  const sourceRowIndex = this.renderedRowToSource(visibleRowIndex);
315
- const rowHeight = this.rowUtils.getHeightByOverlayName(sourceRowIndex, this.activeOverlayName);
322
+ const rowHeight = rowUtils.getHeightByOverlayName(sourceRowIndex, this.activeOverlayName);
323
+ const isBorderBoxSizing = this.stylesHandler.areCellsBorderBox();
324
+ const borderCompensation = isBorderBoxSizing ? 0 : 1;
316
325
  if (rowHeight) {
317
326
  // Decrease height. 1 pixel will be "replaced" by 1px border top
318
- TR.firstChild.style.height = `${rowHeight - 1}px`;
327
+ TR.firstChild.style.height = `${rowHeight - borderCompensation}px`;
319
328
  } else {
320
329
  TR.firstChild.style.height = '';
321
330
  }