handsontable 14.4.0 → 14.5.0-next-7541a88-20240725

Sign up to get free protection for your applications and to get access to all the features.
Files changed (467) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.js +126 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.mjs +122 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.js +119 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.mjs +115 -0
  5. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.js +125 -0
  6. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.mjs +121 -0
  7. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.js +118 -0
  8. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.mjs +114 -0
  9. package/3rdparty/walkontable/src/calculator/{renderAllColumns.js → calculationType/renderedAllColumns.js} +33 -10
  10. package/3rdparty/walkontable/src/calculator/{renderAllColumns.mjs → calculationType/renderedAllColumns.mjs} +32 -9
  11. package/3rdparty/walkontable/src/calculator/{renderAllRows.js → calculationType/renderedAllRows.js} +33 -10
  12. package/3rdparty/walkontable/src/calculator/{renderAllRows.mjs → calculationType/renderedAllRows.mjs} +32 -9
  13. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +37 -0
  14. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +33 -0
  15. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +37 -0
  16. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +33 -0
  17. package/3rdparty/walkontable/src/calculator/index.js +18 -17
  18. package/3rdparty/walkontable/src/calculator/index.mjs +11 -6
  19. package/3rdparty/walkontable/src/calculator/viewportBase.js +92 -0
  20. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +88 -0
  21. package/3rdparty/walkontable/src/calculator/viewportColumns.js +52 -146
  22. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +52 -146
  23. package/3rdparty/walkontable/src/calculator/viewportRows.js +60 -142
  24. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +60 -142
  25. package/3rdparty/walkontable/src/cell/coords.js +3 -3
  26. package/3rdparty/walkontable/src/cell/coords.mjs +3 -3
  27. package/3rdparty/walkontable/src/cell/range.js +4 -4
  28. package/3rdparty/walkontable/src/cell/range.mjs +3 -3
  29. package/3rdparty/walkontable/src/core/_base.js +2 -2
  30. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  31. package/3rdparty/walkontable/src/core/clone.js +2 -2
  32. package/3rdparty/walkontable/src/core/clone.mjs +1 -1
  33. package/3rdparty/walkontable/src/core/core.js +17 -1
  34. package/3rdparty/walkontable/src/core/core.mjs +16 -0
  35. package/3rdparty/walkontable/src/event.js +2 -2
  36. package/3rdparty/walkontable/src/event.mjs +2 -2
  37. package/3rdparty/walkontable/src/facade/core.js +4 -1
  38. package/3rdparty/walkontable/src/facade/core.mjs +3 -0
  39. package/3rdparty/walkontable/src/filter/column.js +1 -1
  40. package/3rdparty/walkontable/src/filter/column.mjs +1 -1
  41. package/3rdparty/walkontable/src/filter/row.js +1 -1
  42. package/3rdparty/walkontable/src/filter/row.mjs +1 -1
  43. package/3rdparty/walkontable/src/index.js +3 -1
  44. package/3rdparty/walkontable/src/index.mjs +2 -2
  45. package/3rdparty/walkontable/src/overlay/_base.js +2 -2
  46. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  47. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  48. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  49. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +1 -1
  50. package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -1
  51. package/3rdparty/walkontable/src/overlay/top.js +2 -2
  52. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  53. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +2 -2
  54. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
  55. package/3rdparty/walkontable/src/overlays.js +36 -4
  56. package/3rdparty/walkontable/src/overlays.mjs +36 -4
  57. package/3rdparty/walkontable/src/renderer/_base.js +2 -2
  58. package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
  59. package/3rdparty/walkontable/src/renderer/cells.js +2 -2
  60. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
  61. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  62. package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
  63. package/3rdparty/walkontable/src/renderer/index.js +12 -1
  64. package/3rdparty/walkontable/src/renderer/index.mjs +11 -0
  65. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  66. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
  67. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  68. package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
  69. package/3rdparty/walkontable/src/renderer/table.js +17 -2
  70. package/3rdparty/walkontable/src/renderer/table.mjs +17 -2
  71. package/3rdparty/walkontable/src/scroll.js +3 -3
  72. package/3rdparty/walkontable/src/scroll.mjs +3 -3
  73. package/3rdparty/walkontable/src/selection/index.js +1 -1
  74. package/3rdparty/walkontable/src/selection/manager.js +4 -4
  75. package/3rdparty/walkontable/src/selection/manager.mjs +3 -3
  76. package/3rdparty/walkontable/src/selection/scanner.js +3 -3
  77. package/3rdparty/walkontable/src/selection/scanner.mjs +3 -3
  78. package/3rdparty/walkontable/src/selection/selection.js +1 -1
  79. package/3rdparty/walkontable/src/settings.js +6 -2
  80. package/3rdparty/walkontable/src/settings.mjs +6 -2
  81. package/3rdparty/walkontable/src/table/bottom.js +1 -1
  82. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -1
  83. package/3rdparty/walkontable/src/table/inlineStart.js +1 -1
  84. package/3rdparty/walkontable/src/table/master.js +1 -1
  85. package/3rdparty/walkontable/src/table/top.js +1 -1
  86. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -1
  87. package/3rdparty/walkontable/src/table.js +8 -14
  88. package/3rdparty/walkontable/src/table.mjs +7 -13
  89. package/3rdparty/walkontable/src/utils/column.js +3 -2
  90. package/3rdparty/walkontable/src/utils/column.mjs +3 -2
  91. package/3rdparty/walkontable/src/utils/columnStretching.js +13 -22
  92. package/3rdparty/walkontable/src/utils/columnStretching.mjs +13 -22
  93. package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
  94. package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
  95. package/3rdparty/walkontable/src/utils/orderView/index.js +1 -1
  96. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +1 -1
  97. package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
  98. package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
  99. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  100. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  101. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +2 -2
  102. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
  103. package/3rdparty/walkontable/src/utils/row.js +17 -1
  104. package/3rdparty/walkontable/src/utils/row.mjs +17 -1
  105. package/3rdparty/walkontable/src/viewport.js +35 -46
  106. package/3rdparty/walkontable/src/viewport.mjs +36 -47
  107. package/CHANGELOG.md +27 -1
  108. package/base.js +3 -3
  109. package/base.mjs +2 -2
  110. package/cellTypes/registry.js +1 -1
  111. package/common.d.ts +3 -0
  112. package/core.d.ts +2 -0
  113. package/core.js +37 -32
  114. package/core.mjs +37 -32
  115. package/dataMap/dataMap.js +1 -1
  116. package/dataMap/dataMap.mjs +1 -1
  117. package/dataMap/dataSource.js +1 -1
  118. package/dataMap/dataSource.mjs +1 -1
  119. package/dataMap/index.js +1 -1
  120. package/dataMap/metaManager/index.js +1 -1
  121. package/dataMap/metaManager/lazyFactoryMap.js +1 -1
  122. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -1
  123. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
  124. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
  125. package/dataMap/metaManager/metaLayers/columnMeta.js +2 -2
  126. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
  127. package/dataMap/metaManager/metaLayers/globalMeta.js +2 -2
  128. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  129. package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
  130. package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
  131. package/dataMap/metaManager/metaSchema.js +25 -0
  132. package/dataMap/metaManager/metaSchema.mjs +25 -0
  133. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -2
  134. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  135. package/dataMap/metaManager/mods/extendMetaProperties.js +3 -3
  136. package/dataMap/metaManager/mods/extendMetaProperties.mjs +3 -3
  137. package/dataMap/replaceData.js +1 -1
  138. package/dist/handsontable.css +134 -88
  139. package/dist/handsontable.full.css +134 -88
  140. package/dist/handsontable.full.js +4084 -2863
  141. package/dist/handsontable.full.min.css +7 -7
  142. package/dist/handsontable.full.min.js +153 -153
  143. package/dist/handsontable.js +4074 -2801
  144. package/dist/handsontable.min.css +6 -6
  145. package/dist/handsontable.min.js +33 -33
  146. package/dist/languages/all.js +3 -3
  147. package/dist/languages/ar-AR.js +3 -3
  148. package/dist/languages/cs-CZ.js +3 -3
  149. package/dist/languages/de-CH.js +3 -3
  150. package/dist/languages/de-DE.js +3 -3
  151. package/dist/languages/en-US.js +3 -3
  152. package/dist/languages/es-MX.js +3 -3
  153. package/dist/languages/fr-FR.js +3 -3
  154. package/dist/languages/hr-HR.js +3 -3
  155. package/dist/languages/it-IT.js +3 -3
  156. package/dist/languages/ja-JP.js +3 -3
  157. package/dist/languages/ko-KR.js +3 -3
  158. package/dist/languages/lv-LV.js +3 -3
  159. package/dist/languages/nb-NO.js +3 -3
  160. package/dist/languages/nl-NL.js +3 -3
  161. package/dist/languages/pl-PL.js +3 -3
  162. package/dist/languages/pt-BR.js +3 -3
  163. package/dist/languages/ru-RU.js +3 -3
  164. package/dist/languages/sr-SP.js +3 -3
  165. package/dist/languages/zh-CN.js +3 -3
  166. package/dist/languages/zh-TW.js +3 -3
  167. package/editorManager.js +4 -4
  168. package/editorManager.mjs +3 -3
  169. package/editors/autocompleteEditor/autocompleteEditor.js +3 -3
  170. package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -3
  171. package/editors/baseEditor/baseEditor.js +2 -2
  172. package/editors/baseEditor/baseEditor.mjs +1 -1
  173. package/editors/dateEditor/dateEditor.js +2 -2
  174. package/editors/dateEditor/dateEditor.mjs +1 -1
  175. package/editors/dropdownEditor/dropdownEditor.js +1 -1
  176. package/editors/registry.js +1 -1
  177. package/editors/textEditor/textEditor.js +2 -2
  178. package/editors/textEditor/textEditor.mjs +1 -1
  179. package/eventManager.js +1 -1
  180. package/eventManager.mjs +1 -1
  181. package/focusManager.js +3 -3
  182. package/focusManager.mjs +3 -3
  183. package/helpers/dom/event.d.ts +1 -0
  184. package/helpers/dom/event.js +11 -0
  185. package/helpers/dom/event.mjs +10 -0
  186. package/helpers/mixed.js +3 -3
  187. package/helpers/mixed.mjs +2 -2
  188. package/helpers/string.js +1 -1
  189. package/i18n/languages/index.js +1 -1
  190. package/i18n/phraseFormatters/index.js +1 -1
  191. package/i18n/registry.js +1 -1
  192. package/index.js +1 -1
  193. package/languages/all.js +3 -3
  194. package/languages/ar-AR.js +3 -3
  195. package/languages/cs-CZ.js +3 -3
  196. package/languages/de-CH.js +3 -3
  197. package/languages/de-DE.js +3 -3
  198. package/languages/en-US.js +3 -3
  199. package/languages/es-MX.js +3 -3
  200. package/languages/fr-FR.js +3 -3
  201. package/languages/hr-HR.js +3 -3
  202. package/languages/index.js +3 -3
  203. package/languages/it-IT.js +3 -3
  204. package/languages/ja-JP.js +3 -3
  205. package/languages/ko-KR.js +3 -3
  206. package/languages/lv-LV.js +3 -3
  207. package/languages/nb-NO.js +3 -3
  208. package/languages/nl-NL.js +3 -3
  209. package/languages/pl-PL.js +3 -3
  210. package/languages/pt-BR.js +3 -3
  211. package/languages/ru-RU.js +3 -3
  212. package/languages/sr-SP.js +3 -3
  213. package/languages/zh-CN.js +3 -3
  214. package/languages/zh-TW.js +3 -3
  215. package/package.json +1 -5
  216. package/pluginHooks.d.ts +3 -1
  217. package/pluginHooks.js +12 -1
  218. package/pluginHooks.mjs +12 -1
  219. package/plugins/autoColumnSize/autoColumnSize.d.ts +1 -1
  220. package/plugins/autoColumnSize/autoColumnSize.js +124 -124
  221. package/plugins/autoColumnSize/autoColumnSize.mjs +124 -124
  222. package/plugins/autoRowSize/autoRowSize.d.ts +2 -1
  223. package/plugins/autoRowSize/autoRowSize.js +162 -100
  224. package/plugins/autoRowSize/autoRowSize.mjs +161 -99
  225. package/plugins/autofill/autofill.js +4 -4
  226. package/plugins/autofill/autofill.mjs +3 -3
  227. package/plugins/base/base.js +5 -5
  228. package/plugins/base/base.mjs +4 -4
  229. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -4
  230. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  231. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -4
  232. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -4
  233. package/plugins/columnSorting/columnSorting.js +6 -5
  234. package/plugins/columnSorting/columnSorting.mjs +5 -4
  235. package/plugins/columnSorting/columnStatesManager.js +1 -1
  236. package/plugins/columnSorting/columnStatesManager.mjs +1 -1
  237. package/plugins/columnSorting/sortService/registry.js +1 -1
  238. package/plugins/columnSorting/utils.js +1 -1
  239. package/plugins/columnSummary/columnSummary.d.ts +1 -1
  240. package/plugins/columnSummary/columnSummary.js +4 -4
  241. package/plugins/columnSummary/columnSummary.mjs +3 -3
  242. package/plugins/columnSummary/endpoints.js +1 -1
  243. package/plugins/columnSummary/endpoints.mjs +1 -1
  244. package/plugins/comments/commentEditor.js +74 -39
  245. package/plugins/comments/commentEditor.mjs +73 -39
  246. package/plugins/comments/comments.js +25 -44
  247. package/plugins/comments/comments.mjs +25 -44
  248. package/plugins/comments/displaySwitch.js +2 -2
  249. package/plugins/comments/displaySwitch.mjs +1 -1
  250. package/plugins/comments/editorResizeObserver.js +100 -0
  251. package/plugins/comments/editorResizeObserver.mjs +95 -0
  252. package/plugins/contextMenu/commandExecutor.js +1 -1
  253. package/plugins/contextMenu/commandExecutor.mjs +1 -1
  254. package/plugins/contextMenu/contextMenu.js +4 -4
  255. package/plugins/contextMenu/contextMenu.mjs +3 -3
  256. package/plugins/contextMenu/itemsFactory.js +1 -1
  257. package/plugins/contextMenu/itemsFactory.mjs +1 -1
  258. package/plugins/contextMenu/menu/cursor.js +1 -1
  259. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  260. package/plugins/contextMenu/menu/menu.js +5 -4
  261. package/plugins/contextMenu/menu/menu.mjs +4 -3
  262. package/plugins/contextMenu/menu/positioner.js +2 -2
  263. package/plugins/contextMenu/menu/positioner.mjs +2 -2
  264. package/plugins/copyPaste/copyPaste.js +5 -5
  265. package/plugins/copyPaste/copyPaste.mjs +4 -4
  266. package/plugins/copyPaste/copyableRanges.js +3 -3
  267. package/plugins/copyPaste/copyableRanges.mjs +3 -3
  268. package/plugins/copyPaste/pasteEvent.js +1 -1
  269. package/plugins/customBorders/contextMenuItem/index.js +1 -1
  270. package/plugins/customBorders/customBorders.js +3 -3
  271. package/plugins/customBorders/customBorders.mjs +3 -3
  272. package/plugins/dragToScroll/dragToScroll.js +4 -4
  273. package/plugins/dragToScroll/dragToScroll.mjs +4 -4
  274. package/plugins/dropdownMenu/dropdownMenu.js +5 -5
  275. package/plugins/dropdownMenu/dropdownMenu.mjs +4 -4
  276. package/plugins/exportFile/dataProvider.js +1 -1
  277. package/plugins/exportFile/dataProvider.mjs +1 -1
  278. package/plugins/exportFile/exportFile.js +1 -1
  279. package/plugins/exportFile/typeFactory.js +1 -1
  280. package/plugins/exportFile/types/_base.js +1 -1
  281. package/plugins/exportFile/types/_base.mjs +1 -1
  282. package/plugins/exportFile/types/csv.js +1 -1
  283. package/plugins/filters/component/_base.js +2 -2
  284. package/plugins/filters/component/_base.mjs +1 -1
  285. package/plugins/filters/component/actionBar.js +3 -3
  286. package/plugins/filters/component/actionBar.mjs +3 -3
  287. package/plugins/filters/component/condition.js +3 -3
  288. package/plugins/filters/component/condition.mjs +3 -3
  289. package/plugins/filters/component/operators.js +3 -3
  290. package/plugins/filters/component/operators.mjs +3 -3
  291. package/plugins/filters/component/value.js +3 -3
  292. package/plugins/filters/component/value.mjs +3 -3
  293. package/plugins/filters/condition/date/after.js +1 -1
  294. package/plugins/filters/condition/date/before.js +1 -1
  295. package/plugins/filters/condition/date/today.js +1 -1
  296. package/plugins/filters/condition/date/tomorrow.js +1 -1
  297. package/plugins/filters/condition/date/yesterday.js +1 -1
  298. package/plugins/filters/conditionCollection.js +2 -2
  299. package/plugins/filters/conditionCollection.mjs +1 -1
  300. package/plugins/filters/conditionUpdateObserver.js +4 -4
  301. package/plugins/filters/conditionUpdateObserver.mjs +3 -3
  302. package/plugins/filters/dataFilter.js +1 -1
  303. package/plugins/filters/dataFilter.mjs +1 -1
  304. package/plugins/filters/filters.js +5 -5
  305. package/plugins/filters/filters.mjs +4 -4
  306. package/plugins/filters/ui/_base.js +2 -2
  307. package/plugins/filters/ui/_base.mjs +1 -1
  308. package/plugins/filters/ui/input.js +3 -3
  309. package/plugins/filters/ui/input.mjs +3 -3
  310. package/plugins/filters/ui/link.js +2 -2
  311. package/plugins/filters/ui/link.mjs +2 -2
  312. package/plugins/filters/ui/multipleSelect.js +3 -3
  313. package/plugins/filters/ui/multipleSelect.mjs +3 -3
  314. package/plugins/filters/ui/radioInput.js +2 -2
  315. package/plugins/filters/ui/radioInput.mjs +2 -2
  316. package/plugins/filters/ui/select.js +3 -3
  317. package/plugins/filters/ui/select.mjs +3 -3
  318. package/plugins/formulas/engine/register.js +1 -1
  319. package/plugins/formulas/formulas.js +7 -7
  320. package/plugins/formulas/formulas.mjs +6 -6
  321. package/plugins/formulas/indexSyncer/axisSyncer.js +2 -2
  322. package/plugins/formulas/indexSyncer/axisSyncer.mjs +2 -2
  323. package/plugins/formulas/indexSyncer/index.js +3 -3
  324. package/plugins/formulas/indexSyncer/index.mjs +2 -2
  325. package/plugins/formulas/utils.js +1 -1
  326. package/plugins/hiddenColumns/hiddenColumns.js +4 -4
  327. package/plugins/hiddenColumns/hiddenColumns.mjs +3 -3
  328. package/plugins/hiddenRows/hiddenRows.js +4 -4
  329. package/plugins/hiddenRows/hiddenRows.mjs +3 -3
  330. package/plugins/manualColumnFreeze/manualColumnFreeze.js +4 -4
  331. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -3
  332. package/plugins/manualColumnMove/manualColumnMove.js +4 -4
  333. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -3
  334. package/plugins/manualColumnMove/ui/_base.js +1 -1
  335. package/plugins/manualColumnMove/ui/_base.mjs +1 -1
  336. package/plugins/manualColumnMove/ui/backlight.js +1 -1
  337. package/plugins/manualColumnMove/ui/guideline.js +1 -1
  338. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  339. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  340. package/plugins/manualRowMove/manualRowMove.js +4 -4
  341. package/plugins/manualRowMove/manualRowMove.mjs +3 -3
  342. package/plugins/manualRowMove/ui/_base.js +1 -1
  343. package/plugins/manualRowMove/ui/_base.mjs +1 -1
  344. package/plugins/manualRowMove/ui/backlight.js +1 -1
  345. package/plugins/manualRowMove/ui/guideline.js +1 -1
  346. package/plugins/manualRowResize/manualRowResize.js +4 -4
  347. package/plugins/manualRowResize/manualRowResize.mjs +5 -5
  348. package/plugins/mergeCells/calculations/autofill.js +2 -2
  349. package/plugins/mergeCells/calculations/autofill.mjs +2 -2
  350. package/plugins/mergeCells/calculations/selection.js +1 -1
  351. package/plugins/mergeCells/calculations/selection.mjs +1 -1
  352. package/plugins/mergeCells/cellCoords.js +81 -24
  353. package/plugins/mergeCells/cellCoords.mjs +81 -24
  354. package/plugins/mergeCells/cellsCollection.js +167 -91
  355. package/plugins/mergeCells/cellsCollection.mjs +166 -90
  356. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -1
  357. package/plugins/mergeCells/focusOrder.js +4 -4
  358. package/plugins/mergeCells/focusOrder.mjs +3 -3
  359. package/plugins/mergeCells/mergeCells.js +171 -122
  360. package/plugins/mergeCells/mergeCells.mjs +171 -122
  361. package/plugins/mergeCells/renderer.js +74 -0
  362. package/plugins/mergeCells/renderer.mjs +70 -0
  363. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -1
  364. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -1
  365. package/plugins/multiColumnSorting/utils.js +1 -1
  366. package/plugins/multiColumnSorting/utils.mjs +1 -1
  367. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
  368. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
  369. package/plugins/nestedHeaders/nestedHeaders.d.ts +1 -0
  370. package/plugins/nestedHeaders/nestedHeaders.js +20 -9
  371. package/plugins/nestedHeaders/nestedHeaders.mjs +20 -9
  372. package/plugins/nestedHeaders/stateManager/headersTree.js +3 -3
  373. package/plugins/nestedHeaders/stateManager/headersTree.mjs +2 -2
  374. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  375. package/plugins/nestedHeaders/stateManager/index.mjs +2 -2
  376. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  377. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  378. package/plugins/nestedHeaders/stateManager/sourceSettings.js +2 -2
  379. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +2 -2
  380. package/plugins/nestedHeaders/stateManager/utils.js +6 -2
  381. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -2
  382. package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
  383. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
  384. package/plugins/nestedRows/data/dataManager.js +1 -1
  385. package/plugins/nestedRows/data/dataManager.mjs +1 -1
  386. package/plugins/nestedRows/nestedRows.js +5 -5
  387. package/plugins/nestedRows/nestedRows.mjs +4 -4
  388. package/plugins/nestedRows/ui/_base.js +1 -1
  389. package/plugins/nestedRows/ui/_base.mjs +1 -1
  390. package/plugins/nestedRows/ui/collapsing.js +1 -1
  391. package/plugins/nestedRows/ui/contextMenu.js +4 -4
  392. package/plugins/nestedRows/ui/contextMenu.mjs +3 -3
  393. package/plugins/nestedRows/ui/headers.js +1 -1
  394. package/plugins/nestedRows/utils/rowMoveController.js +1 -1
  395. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
  396. package/plugins/persistentState/persistentState.js +2 -2
  397. package/plugins/persistentState/persistentState.mjs +1 -1
  398. package/plugins/persistentState/storage.js +1 -1
  399. package/plugins/persistentState/storage.mjs +1 -1
  400. package/plugins/search/search.js +3 -3
  401. package/plugins/search/search.mjs +3 -3
  402. package/plugins/touchScroll/touchScroll.js +3 -3
  403. package/plugins/touchScroll/touchScroll.mjs +3 -3
  404. package/plugins/trimRows/trimRows.js +3 -3
  405. package/plugins/trimRows/trimRows.mjs +3 -3
  406. package/plugins/undoRedo/undoRedo.js +38 -1
  407. package/plugins/undoRedo/undoRedo.mjs +37 -0
  408. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  409. package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
  410. package/renderers/numericRenderer/numericRenderer.js +1 -1
  411. package/renderers/registry.js +1 -1
  412. package/selection/highlight/highlight.js +3 -3
  413. package/selection/highlight/highlight.mjs +3 -3
  414. package/selection/highlight/types/activeHeader.js +1 -1
  415. package/selection/highlight/types/area.js +1 -1
  416. package/selection/highlight/types/areaLayered.js +1 -1
  417. package/selection/highlight/types/column.js +1 -1
  418. package/selection/highlight/types/customSelection.js +1 -1
  419. package/selection/highlight/types/fill.js +1 -1
  420. package/selection/highlight/types/focus.js +1 -1
  421. package/selection/highlight/types/header.js +1 -1
  422. package/selection/highlight/types/row.js +1 -1
  423. package/selection/highlight/visualSelection.js +1 -1
  424. package/selection/highlight/visualSelection.mjs +1 -1
  425. package/selection/index.js +1 -1
  426. package/selection/range.js +1 -1
  427. package/selection/range.mjs +1 -1
  428. package/selection/selection.js +8 -4
  429. package/selection/selection.mjs +7 -3
  430. package/selection/transformation.js +14 -4
  431. package/selection/transformation.mjs +13 -3
  432. package/settings.d.ts +1 -0
  433. package/shortcuts/utils.js +18 -27
  434. package/shortcuts/utils.mjs +18 -27
  435. package/tableView.js +126 -28
  436. package/tableView.mjs +125 -27
  437. package/translations/changesObservable/observable.js +2 -2
  438. package/translations/changesObservable/observable.mjs +2 -2
  439. package/translations/changesObservable/observer.js +3 -3
  440. package/translations/changesObservable/observer.mjs +2 -2
  441. package/translations/indexMapper.js +2 -2
  442. package/translations/indexMapper.mjs +1 -1
  443. package/translations/mapCollections/aggregatedCollection.js +1 -1
  444. package/translations/mapCollections/aggregatedCollection.mjs +1 -1
  445. package/translations/mapCollections/mapCollection.js +2 -2
  446. package/translations/mapCollections/mapCollection.mjs +1 -1
  447. package/translations/maps/indexMap.js +2 -2
  448. package/translations/maps/indexMap.mjs +1 -1
  449. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
  450. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
  451. package/utils/dataStructures/linkedList.js +1 -1
  452. package/utils/dataStructures/linkedList.mjs +1 -1
  453. package/utils/dataStructures/tree.js +1 -1
  454. package/utils/dataStructures/tree.mjs +1 -1
  455. package/utils/ghostTable.js +1 -1
  456. package/utils/ghostTable.mjs +1 -1
  457. package/utils/interval.js +4 -4
  458. package/utils/interval.mjs +4 -4
  459. package/utils/samplesGenerator.js +1 -1
  460. package/utils/samplesGenerator.mjs +1 -1
  461. package/validators/dateValidator/dateValidator.js +1 -1
  462. package/validators/registry.js +1 -1
  463. package/validators/timeValidator/timeValidator.js +1 -1
  464. package/3rdparty/walkontable/src/calculator/constants.js +0 -26
  465. package/3rdparty/walkontable/src/calculator/constants.mjs +0 -23
  466. package/plugins/mergeCells/utils.js +0 -28
  467. package/plugins/mergeCells/utils.mjs +0 -24
@@ -1,87 +1,59 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
- import "core-js/modules/es.array.at.js";
3
2
  import "core-js/modules/es.array.push.js";
4
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
5
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
+ 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; }
7
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
8
5
  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); }
9
- function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
10
- function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
11
- function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
12
- import { RENDER_TYPE, FULLY_VISIBLE_TYPE } from "./constants.mjs";
6
+ import { ViewportBaseCalculator } from "./viewportBase.mjs";
7
+ export const DEFAULT_WIDTH = 50;
8
+
13
9
  /**
14
10
  * @typedef {object} ViewportColumnsCalculatorOptions
11
+ * @property {Map<string, ViewportBaseCalculator>} calculationTypes The calculation types to be performed.
15
12
  * @property {number} viewportWidth Width of the viewport.
16
13
  * @property {number} scrollOffset Current horizontal scroll position of the viewport.
17
14
  * @property {number} totalColumns Total number of columns.
18
15
  * @property {Function} columnWidthFn Function that returns the width of the column at a given index (in px).
19
- * @property {Function} overrideFn Function that changes calculated this.startRow, this.endRow (used by
20
- * MergeCells plugin).
21
- * @property {string} calculationType String which describes types of calculation which will be performed.
16
+ * @property {Function} overrideFn Function that allows to adjust the `startRow` and `endRow` parameters.
22
17
  * @property {string} inlineStartOffset Inline-start offset of the parent container.
23
- * @property {string} stretchMode Stretch mode 'all' or 'last'.
24
- * @property {Function} stretchingColumnWidthFn Function that returns the new width of the stretched column.
25
18
  */
26
19
  /**
27
- * Calculates indexes of columns to render OR columns that are visible.
28
- * To redo the calculation, you need to create a new calculator.
20
+ * Calculates indexes of columns to render OR columns that are visible OR partially visible in the viewport.
29
21
  *
30
22
  * @class ViewportColumnsCalculator
31
23
  */
32
- var _options = /*#__PURE__*/new WeakMap();
33
- export class ViewportColumnsCalculator {
34
- /**
35
- * Default column width.
36
- *
37
- * @type {number}
38
- */
39
- static get DEFAULT_WIDTH() {
40
- return 50;
41
- }
42
-
43
- /**
44
- * Number of rendered/visible columns.
45
- *
46
- * @type {number}
47
- */
48
-
24
+ export class ViewportColumnsCalculator extends ViewportBaseCalculator {
49
25
  /**
50
26
  * @param {ViewportColumnsCalculatorOptions} options Object with all options specified for column viewport calculation.
51
27
  */
52
- constructor(options) {
53
- _defineProperty(this, "count", 0);
54
- /**
55
- * Index of the first rendered/visible column (can be overwritten using overrideFn).
56
- *
57
- * @type {number|null}
58
- */
59
- _defineProperty(this, "startColumn", null);
60
- /**
61
- * Index of the last rendered/visible column (can be overwritten using overrideFn).
62
- *
63
- * @type {null}
64
- */
65
- _defineProperty(this, "endColumn", null);
66
- /**
67
- * Position of the first rendered/visible column (in px).
68
- *
69
- * @type {number|null}
70
- */
71
- _defineProperty(this, "startPosition", null);
72
- /**
73
- * Determines if the viewport is visible in the trimming container.
74
- *
75
- * @type {boolean}
76
- */
77
- _defineProperty(this, "isVisibleInTrimmingContainer", false);
78
- /**
79
- * The calculator options.
80
- *
81
- * @type {ViewportColumnsCalculatorOptions}
82
- */
83
- _classPrivateFieldInitSpec(this, _options, void 0);
84
- _classPrivateFieldSet(_options, this, options);
28
+ constructor(_ref) {
29
+ let {
30
+ calculationTypes,
31
+ viewportWidth,
32
+ scrollOffset,
33
+ totalColumns,
34
+ columnWidthFn,
35
+ overrideFn,
36
+ inlineStartOffset
37
+ } = _ref;
38
+ super(calculationTypes);
39
+ _defineProperty(this, "viewportWidth", 0);
40
+ _defineProperty(this, "scrollOffset", 0);
41
+ _defineProperty(this, "zeroBasedScrollOffset", 0);
42
+ _defineProperty(this, "totalColumns", 0);
43
+ _defineProperty(this, "columnWidthFn", null);
44
+ _defineProperty(this, "columnWidth", 0);
45
+ _defineProperty(this, "overrideFn", null);
46
+ _defineProperty(this, "inlineStartOffset", 0);
47
+ _defineProperty(this, "totalCalculatedWidth", 0);
48
+ _defineProperty(this, "startPositions", []);
49
+ _defineProperty(this, "needReverse", true);
50
+ this.viewportWidth = viewportWidth;
51
+ this.scrollOffset = scrollOffset;
52
+ this.zeroBasedScrollOffset = Math.max(scrollOffset, 0);
53
+ this.totalColumns = totalColumns;
54
+ this.columnWidthFn = columnWidthFn;
55
+ this.overrideFn = overrideFn;
56
+ this.inlineStartOffset = inlineStartOffset;
85
57
  this.calculate();
86
58
  }
87
59
 
@@ -89,96 +61,30 @@ export class ViewportColumnsCalculator {
89
61
  * Calculates viewport.
90
62
  */
91
63
  calculate() {
92
- const {
93
- calculationType,
94
- overrideFn,
95
- scrollOffset,
96
- totalColumns,
97
- viewportWidth
98
- } = _classPrivateFieldGet(_options, this);
99
- const zeroBasedScrollOffset = Math.max(_classPrivateFieldGet(_options, this).scrollOffset, 0);
100
- // +1 pixel for row header width compensation for horizontal scroll > 0
101
- const compensatedViewportWidth = zeroBasedScrollOffset > 0 ? viewportWidth + 1 : viewportWidth;
102
- let sum = 0;
103
- let needReverse = true;
104
- const startPositions = [];
105
- let columnWidth;
106
- let firstVisibleColumnWidth = 0;
107
- let lastVisibleColumnWidth = 0;
108
- for (let i = 0; i < totalColumns; i++) {
109
- columnWidth = this._getColumnWidth(i);
110
- if (sum <= zeroBasedScrollOffset && calculationType !== FULLY_VISIBLE_TYPE) {
111
- this.startColumn = i;
112
- firstVisibleColumnWidth = columnWidth;
113
- }
114
- if (sum >= zeroBasedScrollOffset && sum + (calculationType === FULLY_VISIBLE_TYPE ? columnWidth : 0) <= zeroBasedScrollOffset + compensatedViewportWidth) {
115
- if (this.startColumn === null || this.startColumn === undefined) {
116
- this.startColumn = i;
117
- firstVisibleColumnWidth = columnWidth;
118
- }
119
- this.endColumn = i;
120
- }
121
- startPositions.push(sum);
122
- sum += columnWidth;
123
- lastVisibleColumnWidth = columnWidth;
124
- if (calculationType !== FULLY_VISIBLE_TYPE) {
125
- this.endColumn = i;
126
- }
127
- if (sum >= zeroBasedScrollOffset + viewportWidth) {
128
- needReverse = false;
64
+ this._initialize(this);
65
+ for (let column = 0; column < this.totalColumns; column++) {
66
+ this.columnWidth = this.getColumnWidth(column);
67
+ this._process(column, this);
68
+ this.startPositions.push(this.totalCalculatedWidth);
69
+ this.totalCalculatedWidth += this.columnWidth;
70
+ if (this.totalCalculatedWidth >= this.zeroBasedScrollOffset + this.viewportWidth) {
71
+ this.needReverse = false;
129
72
  break;
130
73
  }
131
74
  }
132
- const mostRightScrollOffset = scrollOffset + viewportWidth - compensatedViewportWidth;
133
- const inlineEndColumnOffset = calculationType === FULLY_VISIBLE_TYPE ? 0 : lastVisibleColumnWidth;
134
- const inlineStartColumnOffset = calculationType === FULLY_VISIBLE_TYPE ? firstVisibleColumnWidth : 0;
135
- if (
136
- // the table is to the left of the viewport
137
- mostRightScrollOffset < -1 * _classPrivateFieldGet(_options, this).inlineStartOffset || scrollOffset > startPositions.at(-1) + inlineEndColumnOffset ||
138
- // the table is to the right of the viewport
139
- -1 * _classPrivateFieldGet(_options, this).scrollOffset - _classPrivateFieldGet(_options, this).viewportWidth > -1 * inlineStartColumnOffset) {
140
- this.isVisibleInTrimmingContainer = false;
141
- } else {
142
- this.isVisibleInTrimmingContainer = true;
143
- }
144
- if (this.endColumn === totalColumns - 1 && needReverse) {
145
- this.startColumn = this.endColumn;
146
- while (this.startColumn > 0) {
147
- const viewportSum = startPositions[this.endColumn] + columnWidth - startPositions[this.startColumn - 1];
148
- if (viewportSum <= viewportWidth || calculationType !== FULLY_VISIBLE_TYPE) {
149
- this.startColumn -= 1;
150
- }
151
- if (viewportSum > viewportWidth) {
152
- break;
153
- }
154
- }
155
- }
156
- if (calculationType === RENDER_TYPE && this.startColumn !== null && overrideFn) {
157
- overrideFn(this);
158
- }
159
- this.startPosition = startPositions[this.startColumn];
160
- if (this.startPosition === undefined) {
161
- this.startPosition = null;
162
- }
163
-
164
- // If totalColumns exceeded its total columns size set endColumn to the latest item
165
- if (totalColumns < this.endColumn) {
166
- this.endColumn = totalColumns - 1;
167
- }
168
- if (this.startColumn !== null) {
169
- this.count = this.endColumn - this.startColumn + 1;
170
- }
75
+ this._finalize(this);
171
76
  }
172
77
 
173
78
  /**
174
- * @param {number} column The visual column index.
79
+ * Gets the column width at the specified column index.
80
+ *
81
+ * @param {number} column Column index.
175
82
  * @returns {number}
176
- * @private
177
83
  */
178
- _getColumnWidth(column) {
179
- let width = _classPrivateFieldGet(_options, this).columnWidthFn(column);
84
+ getColumnWidth(column) {
85
+ const width = this.columnWidthFn(column);
180
86
  if (isNaN(width)) {
181
- width = ViewportColumnsCalculator.DEFAULT_WIDTH;
87
+ return DEFAULT_WIDTH;
182
88
  }
183
89
  return width;
184
90
  }
@@ -2,86 +2,63 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
- require("core-js/modules/es.array.at.js");
6
5
  require("core-js/modules/es.array.push.js");
7
- var _constants = require("./constants");
8
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
9
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
10
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ var _viewportBase = require("./viewportBase");
7
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
9
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
- function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
14
- function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
15
- function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
10
+ const DEFAULT_HEIGHT = exports.DEFAULT_HEIGHT = 23;
11
+
16
12
  /**
17
13
  * @typedef {object} ViewportRowsCalculatorOptions
14
+ * @property {Map<string, ViewportBaseCalculator>} calculationTypes The calculation types to be performed.
18
15
  * @property {number} viewportHeight Height of the viewport.
19
16
  * @property {number} scrollOffset Current vertical scroll position of the viewport.
20
17
  * @property {number} totalRows Total number of rows.
21
18
  * @property {Function} rowHeightFn Function that returns the height of the row at a given index (in px).
22
- * @property {Function} overrideFn Function that changes calculated this.startRow, this.endRow (used by MergeCells plugin).
23
- * @property {string} calculationType String which describes types of calculation which will be performed.
19
+ * @property {Function} overrideFn Function that allows to adjust the `startRow` and `endRow` parameters.
24
20
  * @property {number} horizontalScrollbarHeight The scrollbar height.
25
21
  */
26
22
  /**
27
- * Calculates indexes of rows to render OR rows that are visible.
28
- * To redo the calculation, you need to create a new calculator.
23
+ * Calculates indexes of rows to render OR rows that are visible OR partially visible in the viewport.
29
24
  *
30
25
  * @class ViewportRowsCalculator
31
26
  */
32
- var _options = /*#__PURE__*/new WeakMap();
33
- class ViewportRowsCalculator {
34
- /**
35
- * Default row height.
36
- *
37
- * @type {number}
38
- */
39
- static get DEFAULT_HEIGHT() {
40
- return 23;
41
- }
42
-
43
- /**
44
- * Number of rendered/visible rows.
45
- *
46
- * @type {number}
47
- */
48
-
27
+ class ViewportRowsCalculator extends _viewportBase.ViewportBaseCalculator {
49
28
  /**
50
29
  * @param {ViewportRowsCalculatorOptions} options Object with all options specified for row viewport calculation.
51
30
  */
52
- constructor(options) {
53
- _defineProperty(this, "count", 0);
54
- /**
55
- * Index of the first rendered/visible row (can be overwritten using overrideFn).
56
- *
57
- * @type {number|null}
58
- */
59
- _defineProperty(this, "startRow", null);
60
- /**
61
- * Index of the last rendered/visible row (can be overwritten using overrideFn).
62
- *
63
- * @type {null}
64
- */
65
- _defineProperty(this, "endRow", null);
66
- /**
67
- * Position of the first rendered/visible row (in px).
68
- *
69
- * @type {number|null}
70
- */
71
- _defineProperty(this, "startPosition", null);
72
- /**
73
- * Determines if the viewport is visible in the trimming container.
74
- *
75
- * @type {boolean}
76
- */
77
- _defineProperty(this, "isVisibleInTrimmingContainer", false);
78
- /**
79
- * The calculator options.
80
- *
81
- * @type {ViewportRowsCalculatorOptions}
82
- */
83
- _classPrivateFieldInitSpec(this, _options, void 0);
84
- _classPrivateFieldSet(_options, this, options);
31
+ constructor(_ref) {
32
+ let {
33
+ calculationTypes,
34
+ viewportHeight,
35
+ scrollOffset,
36
+ totalRows,
37
+ rowHeightFn,
38
+ overrideFn,
39
+ horizontalScrollbarHeight
40
+ } = _ref;
41
+ super(calculationTypes);
42
+ _defineProperty(this, "viewportHeight", 0);
43
+ _defineProperty(this, "scrollOffset", 0);
44
+ _defineProperty(this, "zeroBasedScrollOffset", 0);
45
+ _defineProperty(this, "totalRows", 0);
46
+ _defineProperty(this, "rowHeightFn", null);
47
+ _defineProperty(this, "rowHeight", 0);
48
+ _defineProperty(this, "overrideFn", null);
49
+ _defineProperty(this, "horizontalScrollbarHeight", 0);
50
+ _defineProperty(this, "innerViewportHeight", 0);
51
+ _defineProperty(this, "totalCalculatedHeight", 0);
52
+ _defineProperty(this, "startPositions", []);
53
+ _defineProperty(this, "needReverse", true);
54
+ this.viewportHeight = viewportHeight;
55
+ this.scrollOffset = scrollOffset;
56
+ this.zeroBasedScrollOffset = Math.max(scrollOffset, 0);
57
+ this.totalRows = totalRows;
58
+ this.rowHeightFn = rowHeightFn;
59
+ this.overrideFn = overrideFn;
60
+ this.horizontalScrollbarHeight = horizontalScrollbarHeight !== null && horizontalScrollbarHeight !== void 0 ? horizontalScrollbarHeight : 0;
61
+ this.innerViewportHeight = this.zeroBasedScrollOffset + this.viewportHeight - this.horizontalScrollbarHeight;
85
62
  this.calculate();
86
63
  }
87
64
 
@@ -89,91 +66,32 @@ class ViewportRowsCalculator {
89
66
  * Calculates viewport.
90
67
  */
91
68
  calculate() {
92
- const {
93
- calculationType,
94
- overrideFn,
95
- rowHeightFn,
96
- scrollOffset,
97
- totalRows,
98
- viewportHeight
99
- } = _classPrivateFieldGet(_options, this);
100
- const zeroBasedScrollOffset = Math.max(_classPrivateFieldGet(_options, this).scrollOffset, 0);
101
- const horizontalScrollbarHeight = _classPrivateFieldGet(_options, this).horizontalScrollbarHeight || 0;
102
- const innerViewportHeight = zeroBasedScrollOffset + viewportHeight - horizontalScrollbarHeight;
103
- let sum = 0;
104
- let needReverse = true;
105
- const startPositions = [];
106
- let rowHeight;
107
- let firstVisibleRowHeight = 0;
108
- let lastVisibleRowHeight = 0;
109
-
110
- // Calculate the number (start and end index) of rows needed
111
- for (let i = 0; i < totalRows; i++) {
112
- rowHeight = rowHeightFn(i);
113
- if (isNaN(rowHeight)) {
114
- rowHeight = ViewportRowsCalculator.DEFAULT_HEIGHT;
115
- }
116
- if (sum <= zeroBasedScrollOffset && calculationType !== _constants.FULLY_VISIBLE_TYPE) {
117
- this.startRow = i;
118
- firstVisibleRowHeight = rowHeight;
119
- }
120
- if (sum >= zeroBasedScrollOffset && sum + (calculationType === _constants.FULLY_VISIBLE_TYPE ? rowHeight : 0) <= innerViewportHeight) {
121
- if (this.startRow === null) {
122
- this.startRow = i;
123
- firstVisibleRowHeight = rowHeight;
124
- }
125
- this.endRow = i;
126
- }
127
- startPositions.push(sum);
128
- sum += rowHeight;
129
- lastVisibleRowHeight = rowHeight;
130
- if (calculationType !== _constants.FULLY_VISIBLE_TYPE) {
131
- this.endRow = i;
132
- }
133
- if (sum >= innerViewportHeight) {
134
- needReverse = false;
69
+ this._initialize(this);
70
+ for (let row = 0; row < this.totalRows; row++) {
71
+ this.rowHeight = this.getRowHeight(row);
72
+ this._process(row, this);
73
+ this.startPositions.push(this.totalCalculatedHeight);
74
+ this.totalCalculatedHeight += this.rowHeight;
75
+ if (this.totalCalculatedHeight >= this.innerViewportHeight) {
76
+ this.needReverse = false;
135
77
  break;
136
78
  }
137
79
  }
138
- const mostBottomScrollOffset = scrollOffset + viewportHeight - horizontalScrollbarHeight;
139
- const topRowOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? firstVisibleRowHeight : 0;
140
- const bottomRowOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? 0 : lastVisibleRowHeight;
141
- if (mostBottomScrollOffset < topRowOffset || scrollOffset > startPositions.at(-1) + bottomRowOffset) {
142
- this.isVisibleInTrimmingContainer = false;
143
- } else {
144
- this.isVisibleInTrimmingContainer = true;
145
- }
146
-
147
- // If the estimation has reached the last row and there is still some space available in the viewport,
148
- // we need to render in reverse in order to fill the whole viewport with rows
149
- if (this.endRow === totalRows - 1 && needReverse) {
150
- this.startRow = this.endRow;
151
- while (this.startRow > 0) {
152
- // rowHeight is the height of the last row
153
- const viewportSum = startPositions[this.endRow] + rowHeight - startPositions[this.startRow - 1];
154
- if (viewportSum <= viewportHeight - horizontalScrollbarHeight || calculationType !== _constants.FULLY_VISIBLE_TYPE) {
155
- this.startRow -= 1;
156
- }
157
- if (viewportSum >= viewportHeight - horizontalScrollbarHeight) {
158
- break;
159
- }
160
- }
161
- }
162
- if (calculationType === _constants.RENDER_TYPE && this.startRow !== null && overrideFn) {
163
- overrideFn(this);
164
- }
165
- this.startPosition = startPositions[this.startRow];
166
- if (this.startPosition === undefined) {
167
- this.startPosition = null;
168
- }
80
+ this._finalize(this);
81
+ }
169
82
 
170
- // If totalRows exceeded its total rows size set endRow to the latest item
171
- if (totalRows < this.endRow) {
172
- this.endRow = totalRows - 1;
173
- }
174
- if (this.startRow !== null) {
175
- this.count = this.endRow - this.startRow + 1;
83
+ /**
84
+ * Gets the row height at the specified row index.
85
+ *
86
+ * @param {number} row Row index.
87
+ * @returns {number}
88
+ */
89
+ getRowHeight(row) {
90
+ const rowHeight = this.rowHeightFn(row);
91
+ if (isNaN(rowHeight)) {
92
+ return DEFAULT_HEIGHT;
176
93
  }
94
+ return rowHeight;
177
95
  }
178
96
  }
179
97
  exports.ViewportRowsCalculator = ViewportRowsCalculator;