handsontable 14.6.1 → 15.0.0-next-4472a60-20241203

Sign up to get free protection for your applications and to get access to all the features.
Files changed (392) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
  5. package/3rdparty/walkontable/src/calculator/index.js +1 -2
  6. package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
  7. package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
  8. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  11. package/3rdparty/walkontable/src/core/_base.js +29 -23
  12. package/3rdparty/walkontable/src/core/_base.mjs +29 -23
  13. package/3rdparty/walkontable/src/core/clone.js +1 -0
  14. package/3rdparty/walkontable/src/core/clone.mjs +1 -0
  15. package/3rdparty/walkontable/src/core/core.js +2 -0
  16. package/3rdparty/walkontable/src/core/core.mjs +2 -0
  17. package/3rdparty/walkontable/src/facade/core.js +12 -6
  18. package/3rdparty/walkontable/src/facade/core.mjs +12 -6
  19. package/3rdparty/walkontable/src/index.js +0 -1
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +8 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
  23. package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
  24. package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
  25. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  26. package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
  27. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
  28. package/3rdparty/walkontable/src/overlay/top.js +9 -8
  29. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  30. package/3rdparty/walkontable/src/overlays.js +10 -26
  31. package/3rdparty/walkontable/src/overlays.mjs +10 -26
  32. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  33. package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
  34. package/3rdparty/walkontable/src/renderer/index.js +4 -2
  35. package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
  36. package/3rdparty/walkontable/src/renderer/table.js +13 -4
  37. package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
  38. package/3rdparty/walkontable/src/scroll.js +46 -37
  39. package/3rdparty/walkontable/src/scroll.mjs +46 -37
  40. package/3rdparty/walkontable/src/selection/border/border.js +52 -58
  41. package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
  42. package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
  43. package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
  44. package/3rdparty/walkontable/src/selection/index.js +6 -4
  45. package/3rdparty/walkontable/src/selection/index.mjs +1 -1
  46. package/3rdparty/walkontable/src/selection/manager.js +3 -0
  47. package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
  48. package/3rdparty/walkontable/src/selection/scanner.js +46 -11
  49. package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
  50. package/3rdparty/walkontable/src/settings.js +8 -9
  51. package/3rdparty/walkontable/src/settings.mjs +8 -9
  52. package/3rdparty/walkontable/src/table/master.js +1 -1
  53. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  54. package/3rdparty/walkontable/src/table.js +25 -36
  55. package/3rdparty/walkontable/src/table.mjs +25 -36
  56. package/3rdparty/walkontable/src/types.js +1 -0
  57. package/3rdparty/walkontable/src/types.mjs +1 -0
  58. package/3rdparty/walkontable/src/utils/column.js +1 -43
  59. package/3rdparty/walkontable/src/utils/column.mjs +1 -43
  60. package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
  61. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
  62. package/3rdparty/walkontable/src/viewport.js +94 -91
  63. package/3rdparty/walkontable/src/viewport.mjs +95 -92
  64. package/CHANGELOG.md +36 -0
  65. package/README.md +1 -1
  66. package/base.js +4 -4
  67. package/base.mjs +3 -3
  68. package/core/focusCatcher/focusDetector.js +1 -0
  69. package/core/focusCatcher/focusDetector.mjs +1 -0
  70. package/core/hooks/bucket.js +184 -0
  71. package/core/hooks/bucket.mjs +180 -0
  72. package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
  73. package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
  74. package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
  75. package/core/hooks/index.js +385 -0
  76. package/core/hooks/index.mjs +381 -0
  77. package/core/index.js +2 -0
  78. package/core.d.ts +5 -3
  79. package/core.js +77 -35
  80. package/core.mjs +69 -27
  81. package/dataMap/dataMap.js +3 -0
  82. package/dataMap/dataMap.mjs +3 -0
  83. package/dataMap/dataSource.js +2 -0
  84. package/dataMap/dataSource.mjs +2 -0
  85. package/dataMap/metaManager/index.js +2 -0
  86. package/dataMap/metaManager/index.mjs +2 -0
  87. package/dataMap/metaManager/metaSchema.js +91 -5
  88. package/dataMap/metaManager/metaSchema.mjs +91 -5
  89. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
  90. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  91. package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
  92. package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
  93. package/dist/handsontable.css +84 -72
  94. package/dist/handsontable.full.css +317 -304
  95. package/dist/handsontable.full.js +14826 -7294
  96. package/dist/handsontable.full.min.css +15 -10
  97. package/dist/handsontable.full.min.js +262 -69
  98. package/dist/handsontable.js +7826 -5552
  99. package/dist/handsontable.min.css +10 -6
  100. package/dist/handsontable.min.js +33 -33
  101. package/dist/languages/all.js +1 -1
  102. package/dist/languages/ar-AR.js +1 -1
  103. package/dist/languages/cs-CZ.js +1 -1
  104. package/dist/languages/de-CH.js +1 -1
  105. package/dist/languages/de-DE.js +1 -1
  106. package/dist/languages/en-US.js +1 -1
  107. package/dist/languages/es-MX.js +1 -1
  108. package/dist/languages/fr-FR.js +1 -1
  109. package/dist/languages/hr-HR.js +1 -1
  110. package/dist/languages/it-IT.js +1 -1
  111. package/dist/languages/ja-JP.js +1 -1
  112. package/dist/languages/ko-KR.js +1 -1
  113. package/dist/languages/lv-LV.js +1 -1
  114. package/dist/languages/nb-NO.js +1 -1
  115. package/dist/languages/nl-NL.js +1 -1
  116. package/dist/languages/pl-PL.js +1 -1
  117. package/dist/languages/pt-BR.js +1 -1
  118. package/dist/languages/ru-RU.js +1 -1
  119. package/dist/languages/sr-SP.js +1 -1
  120. package/dist/languages/zh-CN.js +1 -1
  121. package/dist/languages/zh-TW.js +1 -1
  122. package/editorManager.js +2 -2
  123. package/editorManager.mjs +2 -2
  124. package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
  125. package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
  126. package/editors/baseEditor/baseEditor.js +25 -18
  127. package/editors/baseEditor/baseEditor.mjs +26 -19
  128. package/editors/dateEditor/dateEditor.js +9 -0
  129. package/editors/dateEditor/dateEditor.mjs +10 -1
  130. package/editors/dropdownEditor/dropdownEditor.js +4 -3
  131. package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
  132. package/editors/handsontableEditor/handsontableEditor.js +36 -2
  133. package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
  134. package/editors/passwordEditor/passwordEditor.js +18 -0
  135. package/editors/passwordEditor/passwordEditor.mjs +18 -0
  136. package/editors/registry.js +2 -2
  137. package/editors/registry.mjs +1 -1
  138. package/editors/selectEditor/selectEditor.js +20 -9
  139. package/editors/selectEditor/selectEditor.mjs +20 -9
  140. package/editors/textEditor/textEditor.js +5 -12
  141. package/editors/textEditor/textEditor.mjs +6 -13
  142. package/focusManager.js +5 -7
  143. package/focusManager.mjs +5 -7
  144. package/helpers/array.js +2 -0
  145. package/helpers/array.mjs +2 -0
  146. package/helpers/data.js +3 -0
  147. package/helpers/data.mjs +3 -0
  148. package/helpers/dom/element.js +39 -18
  149. package/helpers/dom/element.mjs +38 -17
  150. package/helpers/mixed.js +3 -3
  151. package/helpers/mixed.mjs +3 -3
  152. package/helpers/moves.js +3 -0
  153. package/helpers/moves.mjs +3 -0
  154. package/helpers/number.js +1 -0
  155. package/helpers/number.mjs +1 -0
  156. package/helpers/object.js +2 -0
  157. package/helpers/object.mjs +2 -0
  158. package/helpers/themes.js +17 -0
  159. package/helpers/themes.mjs +13 -0
  160. package/i18n/index.js +2 -0
  161. package/i18n/languages/index.d.ts +8 -0
  162. package/i18n/languages/ja-JP.d.ts +1 -1
  163. package/i18n/phraseFormatters/substituteVariables.js +1 -0
  164. package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
  165. package/index.d.ts +9 -1
  166. package/languages/all.js +1 -1
  167. package/languages/ar-AR.js +1 -1
  168. package/languages/cs-CZ.js +1 -1
  169. package/languages/de-CH.js +1 -1
  170. package/languages/de-DE.js +1 -1
  171. package/languages/en-US.js +1 -1
  172. package/languages/es-MX.js +1 -1
  173. package/languages/fr-FR.js +1 -1
  174. package/languages/hr-HR.js +1 -1
  175. package/languages/index.js +1 -1
  176. package/languages/it-IT.js +1 -1
  177. package/languages/ja-JP.js +1 -1
  178. package/languages/ko-KR.js +1 -1
  179. package/languages/lv-LV.js +1 -1
  180. package/languages/nb-NO.js +1 -1
  181. package/languages/nl-NL.js +1 -1
  182. package/languages/pl-PL.js +1 -1
  183. package/languages/pt-BR.js +1 -1
  184. package/languages/ru-RU.js +1 -1
  185. package/languages/sr-SP.js +1 -1
  186. package/languages/zh-CN.js +1 -1
  187. package/languages/zh-TW.js +1 -1
  188. package/package.json +22 -7
  189. package/plugins/autoColumnSize/autoColumnSize.js +22 -27
  190. package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
  191. package/plugins/autoRowSize/autoRowSize.js +20 -22
  192. package/plugins/autoRowSize/autoRowSize.mjs +21 -23
  193. package/plugins/autofill/autofill.js +4 -5
  194. package/plugins/autofill/autofill.mjs +1 -1
  195. package/plugins/base/base.d.ts +1 -1
  196. package/plugins/base/base.js +41 -0
  197. package/plugins/base/base.mjs +42 -1
  198. package/plugins/base/index.js +2 -1
  199. package/plugins/base/index.mjs +1 -1
  200. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
  201. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
  202. package/plugins/columnSorting/columnSorting.js +5 -4
  203. package/plugins/columnSorting/columnSorting.mjs +3 -1
  204. package/plugins/columnSorting/columnStatesManager.js +1 -0
  205. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  206. package/plugins/columnSorting/utils.js +3 -0
  207. package/plugins/columnSorting/utils.mjs +3 -0
  208. package/plugins/columnSummary/endpoints.js +3 -0
  209. package/plugins/columnSummary/endpoints.mjs +3 -0
  210. package/plugins/comments/commentEditor.js +9 -0
  211. package/plugins/comments/commentEditor.mjs +9 -0
  212. package/plugins/comments/comments.js +24 -18
  213. package/plugins/comments/comments.mjs +26 -20
  214. package/plugins/comments/editorResizeObserver.js +2 -0
  215. package/plugins/comments/editorResizeObserver.mjs +2 -0
  216. package/plugins/contextMenu/contextMenu.d.ts +2 -1
  217. package/plugins/contextMenu/contextMenu.js +6 -7
  218. package/plugins/contextMenu/contextMenu.mjs +1 -1
  219. package/plugins/contextMenu/menu/index.js +2 -0
  220. package/plugins/contextMenu/menu/menu.js +10 -5
  221. package/plugins/contextMenu/menu/menu.mjs +11 -6
  222. package/plugins/contextMenu/menu/positioner.js +4 -2
  223. package/plugins/contextMenu/menu/positioner.mjs +4 -2
  224. package/plugins/contextMenu/menu/shortcuts.js +3 -1
  225. package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
  226. package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
  227. package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
  228. package/plugins/contextMenu/utils.js +0 -10
  229. package/plugins/contextMenu/utils.mjs +0 -9
  230. package/plugins/copyPaste/copyPaste.d.ts +1 -0
  231. package/plugins/copyPaste/copyPaste.js +32 -23
  232. package/plugins/copyPaste/copyPaste.mjs +24 -15
  233. package/plugins/customBorders/utils.js +2 -0
  234. package/plugins/customBorders/utils.mjs +2 -0
  235. package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
  236. package/plugins/dropdownMenu/dropdownMenu.js +6 -7
  237. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
  238. package/plugins/exportFile/types/csv.js +1 -0
  239. package/plugins/exportFile/types/csv.mjs +1 -0
  240. package/plugins/filters/component/condition.js +2 -0
  241. package/plugins/filters/component/condition.mjs +2 -0
  242. package/plugins/filters/component/operators.js +2 -0
  243. package/plugins/filters/component/operators.mjs +2 -0
  244. package/plugins/filters/component/value.js +3 -0
  245. package/plugins/filters/component/value.mjs +3 -0
  246. package/plugins/filters/conditionCollection.js +3 -0
  247. package/plugins/filters/conditionCollection.mjs +3 -0
  248. package/plugins/filters/conditionUpdateObserver.js +2 -0
  249. package/plugins/filters/conditionUpdateObserver.mjs +2 -0
  250. package/plugins/filters/filters.js +43 -13
  251. package/plugins/filters/filters.mjs +43 -13
  252. package/plugins/filters/logicalOperations/conjunction.js +2 -0
  253. package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
  254. package/plugins/filters/logicalOperations/disjunction.js +2 -0
  255. package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
  256. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
  257. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
  258. package/plugins/filters/menu/focusController.js +38 -14
  259. package/plugins/filters/menu/focusController.mjs +38 -14
  260. package/plugins/filters/ui/multipleSelect.js +10 -0
  261. package/plugins/filters/ui/multipleSelect.mjs +10 -0
  262. package/plugins/formulas/engine/register.js +3 -0
  263. package/plugins/formulas/engine/register.mjs +3 -0
  264. package/plugins/formulas/engine/settings.js +3 -0
  265. package/plugins/formulas/engine/settings.mjs +3 -0
  266. package/plugins/formulas/formulas.js +12 -7
  267. package/plugins/formulas/formulas.mjs +6 -1
  268. package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
  269. package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
  270. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
  271. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
  272. package/plugins/hiddenColumns/hiddenColumns.js +22 -30
  273. package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
  274. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
  275. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
  276. package/plugins/hiddenRows/hiddenRows.js +21 -29
  277. package/plugins/hiddenRows/hiddenRows.mjs +17 -25
  278. package/plugins/index.d.ts +3 -0
  279. package/plugins/index.js +3 -0
  280. package/plugins/index.mjs +3 -1
  281. package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
  282. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
  283. package/plugins/manualColumnMove/manualColumnMove.js +6 -6
  284. package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
  285. package/plugins/manualColumnResize/manualColumnResize.js +26 -12
  286. package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
  287. package/plugins/manualRowMove/manualRowMove.js +8 -6
  288. package/plugins/manualRowMove/manualRowMove.mjs +6 -4
  289. package/plugins/manualRowResize/manualRowResize.js +3 -2
  290. package/plugins/manualRowResize/manualRowResize.mjs +4 -3
  291. package/plugins/mergeCells/cellsCollection.js +19 -3
  292. package/plugins/mergeCells/cellsCollection.mjs +20 -4
  293. package/plugins/mergeCells/mergeCells.d.ts +6 -2
  294. package/plugins/mergeCells/mergeCells.js +84 -56
  295. package/plugins/mergeCells/mergeCells.mjs +82 -54
  296. package/plugins/mergeCells/renderer.js +13 -3
  297. package/plugins/mergeCells/renderer.mjs +13 -3
  298. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  299. package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
  300. package/plugins/nestedHeaders/nestedHeaders.js +63 -16
  301. package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
  302. package/plugins/nestedHeaders/stateManager/index.js +1 -0
  303. package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
  304. package/plugins/nestedRows/nestedRows.js +3 -0
  305. package/plugins/nestedRows/nestedRows.mjs +3 -0
  306. package/plugins/nestedRows/ui/headers.js +7 -1
  307. package/plugins/nestedRows/ui/headers.mjs +7 -1
  308. package/plugins/nestedRows/utils/rowMoveController.js +4 -0
  309. package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
  310. package/plugins/persistentState/persistentState.js +4 -4
  311. package/plugins/persistentState/persistentState.mjs +1 -1
  312. package/plugins/stretchColumns/calculator.js +162 -0
  313. package/plugins/stretchColumns/calculator.mjs +158 -0
  314. package/plugins/stretchColumns/index.d.ts +1 -0
  315. package/plugins/stretchColumns/index.js +7 -0
  316. package/plugins/stretchColumns/index.mjs +1 -0
  317. package/plugins/stretchColumns/strategies/_base.js +85 -0
  318. package/plugins/stretchColumns/strategies/_base.mjs +81 -0
  319. package/plugins/stretchColumns/strategies/all.js +71 -0
  320. package/plugins/stretchColumns/strategies/all.mjs +67 -0
  321. package/plugins/stretchColumns/strategies/last.js +79 -0
  322. package/plugins/stretchColumns/strategies/last.mjs +75 -0
  323. package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
  324. package/plugins/stretchColumns/stretchColumns.js +222 -0
  325. package/plugins/stretchColumns/stretchColumns.mjs +218 -0
  326. package/plugins/trimRows/trimRows.js +2 -0
  327. package/plugins/trimRows/trimRows.mjs +2 -0
  328. package/plugins/undoRedo/undoRedo.js +9 -5
  329. package/plugins/undoRedo/undoRedo.mjs +8 -3
  330. package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
  331. package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
  332. package/selection/index.js +2 -0
  333. package/selection/range.js +2 -0
  334. package/selection/range.mjs +2 -0
  335. package/selection/selection.js +7 -2
  336. package/selection/selection.mjs +7 -2
  337. package/selection/utils.js +2 -0
  338. package/selection/utils.mjs +2 -0
  339. package/settings.d.ts +4 -1
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
  342. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
  343. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
  344. package/shortcutContexts/commands/index.js +2 -0
  345. package/shortcutContexts/commands/index.mjs +2 -0
  346. package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
  347. package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
  348. package/shortcutContexts/index.js +2 -0
  349. package/shortcutContexts/index.mjs +2 -0
  350. package/shortcuts/context.js +3 -0
  351. package/shortcuts/context.mjs +3 -0
  352. package/shortcuts/recorder.js +3 -3
  353. package/shortcuts/recorder.mjs +3 -3
  354. package/shortcuts/utils.js +1 -0
  355. package/shortcuts/utils.mjs +1 -0
  356. package/styles/handsontable.css +2307 -0
  357. package/styles/handsontable.min.css +30 -0
  358. package/styles/ht-theme-horizon.css +607 -0
  359. package/styles/ht-theme-horizon.min.css +30 -0
  360. package/styles/ht-theme-main.css +613 -0
  361. package/styles/ht-theme-main.min.css +30 -0
  362. package/tableView.js +205 -33
  363. package/tableView.mjs +206 -34
  364. package/translations/changesObservable/observable.js +2 -0
  365. package/translations/changesObservable/observable.mjs +2 -0
  366. package/translations/index.js +2 -0
  367. package/translations/indexMapper.js +4 -0
  368. package/translations/indexMapper.mjs +4 -0
  369. package/translations/mapCollections/index.js +2 -0
  370. package/translations/mapCollections/mapCollection.js +2 -0
  371. package/translations/mapCollections/mapCollection.mjs +2 -0
  372. package/translations/maps/index.js +2 -0
  373. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  374. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  375. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  376. package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
  377. package/translations/maps/utils/physicallyIndexed.js +1 -0
  378. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  379. package/utils/autoResize.js +11 -3
  380. package/utils/autoResize.mjs +11 -3
  381. package/utils/dataStructures/priorityMap.js +1 -0
  382. package/utils/dataStructures/priorityMap.mjs +1 -0
  383. package/utils/dataStructures/uniqueMap.js +2 -0
  384. package/utils/dataStructures/uniqueMap.mjs +2 -0
  385. package/utils/ghostTable.js +7 -3
  386. package/utils/ghostTable.mjs +7 -3
  387. package/utils/parseTable.js +4 -0
  388. package/utils/parseTable.mjs +4 -0
  389. package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
  390. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  391. package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
  392. package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
@@ -1,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
  }