handsontable 18.0.0 → 18.1.0-rc7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.ts +55 -0
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.js +15 -0
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.mjs +14 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.d.ts +32 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.js +45 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.mjs +33 -0
- package/3rdparty/walkontable/src/axisSizing/columnUtils.d.mts +2 -0
- package/3rdparty/walkontable/src/{utils/column.d.ts → axisSizing/columnUtils.d.ts} +12 -10
- package/3rdparty/walkontable/src/axisSizing/columnUtils.js +147 -0
- package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +142 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.ts +58 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.js +129 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +119 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.ts +162 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.js +424 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.mjs +522 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.d.ts +130 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.js +256 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +262 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.ts +51 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.js +121 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +117 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.ts +53 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.js +206 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +203 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.ts +53 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.js +40 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.mjs +41 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.ts +47 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.js +121 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +115 -0
- package/3rdparty/walkontable/src/axisSizing/rowUtils.d.mts +2 -0
- package/3rdparty/walkontable/src/{utils/row.d.ts → axisSizing/rowUtils.d.ts} +11 -9
- package/3rdparty/walkontable/src/axisSizing/rowUtils.js +111 -0
- package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +106 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.mts +2 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.ts +84 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.js +102 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.mjs +92 -0
- package/3rdparty/walkontable/src/calculator/axisCalculation.d.ts +1 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.d.ts +10 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +10 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +10 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.d.ts +9 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +9 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +9 -1
- package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +1 -1
- package/3rdparty/walkontable/src/calculator/viewportRows.d.ts +1 -1
- package/3rdparty/walkontable/src/cell/range.d.ts +10 -0
- package/3rdparty/walkontable/src/cell/range.js +14 -3
- package/3rdparty/walkontable/src/cell/range.mjs +11 -0
- package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
- package/3rdparty/walkontable/src/core/_base.js +58 -147
- package/3rdparty/walkontable/src/core/_base.mjs +17 -147
- package/3rdparty/walkontable/src/core/clone.d.ts +4 -14
- package/3rdparty/walkontable/src/core/clone.js +51 -5
- package/3rdparty/walkontable/src/core/clone.mjs +10 -5
- package/3rdparty/walkontable/src/core/core.d.ts +1 -5
- package/3rdparty/walkontable/src/core/core.js +52 -47
- package/3rdparty/walkontable/src/core/core.mjs +12 -48
- package/3rdparty/walkontable/src/domMeasure/geometryReader.d.mts +1 -0
- package/3rdparty/walkontable/src/domMeasure/geometryReader.d.ts +172 -0
- package/3rdparty/walkontable/src/domMeasure/geometryReader.js +19 -0
- package/3rdparty/walkontable/src/domMeasure/geometryReader.mjs +16 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.mts +1 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.ts +134 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.js +200 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +198 -0
- package/3rdparty/walkontable/src/event.d.ts +25 -12
- package/3rdparty/walkontable/src/event.js +91 -224
- package/3rdparty/walkontable/src/event.mjs +90 -224
- package/3rdparty/walkontable/src/facade/core.d.ts +6 -6
- package/3rdparty/walkontable/src/index.d.ts +1 -1
- package/3rdparty/walkontable/src/index.js +2 -2
- package/3rdparty/walkontable/src/index.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/index.d.ts +6 -6
- package/3rdparty/walkontable/src/overlay/index.js +11 -11
- package/3rdparty/walkontable/src/overlay/index.mjs +6 -6
- package/3rdparty/walkontable/src/overlay/overlays.d.ts +375 -0
- package/3rdparty/walkontable/src/overlay/overlays.js +612 -0
- package/3rdparty/walkontable/src/overlay/overlays.mjs +601 -0
- package/3rdparty/walkontable/src/overlay/{_base.d.ts → regions/_base.d.ts} +65 -16
- package/3rdparty/walkontable/src/overlay/{_base.js → regions/_base.js} +160 -50
- package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +163 -47
- package/3rdparty/walkontable/src/overlay/regions/bottomInlineStartCornerOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.d.ts → regions/bottomInlineStartCornerOverlay.d.ts} +5 -10
- package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerOverlay.js} +18 -20
- package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.mjs → regions/bottomInlineStartCornerOverlay.mjs} +18 -20
- package/3rdparty/walkontable/src/overlay/regions/bottomOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{bottom.d.ts → regions/bottomOverlay.d.ts} +16 -11
- package/3rdparty/walkontable/src/overlay/{bottom.js → regions/bottomOverlay.js} +113 -66
- package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +113 -66
- package/3rdparty/walkontable/src/overlay/regions/inlineStartOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{inlineStart.d.ts → regions/inlineStartOverlay.d.ts} +17 -11
- package/3rdparty/walkontable/src/overlay/{inlineStart.js → regions/inlineStartOverlay.js} +122 -67
- package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +122 -67
- package/3rdparty/walkontable/src/overlay/regions/topInlineStartCornerOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.d.ts → regions/topInlineStartCornerOverlay.d.ts} +5 -10
- package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.js → regions/topInlineStartCornerOverlay.js} +13 -16
- package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.mjs → regions/topInlineStartCornerOverlay.mjs} +13 -16
- package/3rdparty/walkontable/src/overlay/regions/topOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{top.d.ts → regions/topOverlay.d.ts} +32 -11
- package/3rdparty/walkontable/src/overlay/{top.js → regions/topOverlay.js} +163 -77
- package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +163 -77
- package/3rdparty/walkontable/src/overlay/resizeMonitor.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.d.ts +49 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.js +154 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +153 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.ts +62 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.js +290 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +295 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.ts +176 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.js +549 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +557 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.d.ts +67 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.js +178 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +179 -0
- package/3rdparty/walkontable/src/{stickyScrollStrategy.d.ts → overlay/strategies/stickyScrollStrategy.d.ts} +33 -21
- package/3rdparty/walkontable/src/{stickyScrollStrategy.js → overlay/strategies/stickyScrollStrategy.js} +60 -41
- package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +58 -38
- package/3rdparty/walkontable/src/ports.d.mts +1 -0
- package/3rdparty/walkontable/src/ports.d.ts +54 -0
- package/3rdparty/walkontable/src/ports.js +23 -0
- package/3rdparty/walkontable/src/ports.mjs +24 -0
- package/3rdparty/walkontable/src/{renderer → render}/_base.d.ts +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/cells.js +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/cells.mjs +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.ts +1 -0
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.js +43 -1
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +44 -2
- package/3rdparty/walkontable/src/render/index.d.mts +1 -0
- package/3rdparty/walkontable/src/{renderer → render}/index.d.ts +11 -3
- package/3rdparty/walkontable/src/{renderer → render}/index.js +13 -3
- package/3rdparty/walkontable/src/{renderer → render}/index.mjs +11 -1
- package/3rdparty/walkontable/src/{renderer → render}/rows.js +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/rows.mjs +1 -1
- package/3rdparty/walkontable/src/render/tableRenderer.d.mts +1 -0
- package/3rdparty/walkontable/src/{renderer/table.d.ts → render/tableRenderer.d.ts} +12 -2
- package/3rdparty/walkontable/src/render/tableRenderer.js +382 -0
- package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +159 -6
- package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
- package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +108 -32
- package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +106 -29
- package/3rdparty/walkontable/src/selection/border/border.d.ts +313 -5
- package/3rdparty/walkontable/src/selection/border/border.js +861 -51
- package/3rdparty/walkontable/src/selection/border/border.mjs +863 -53
- package/3rdparty/walkontable/src/selection/border/types.d.ts +30 -0
- package/3rdparty/walkontable/src/selection/manager.js +237 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +238 -1
- package/3rdparty/walkontable/src/settings/accessor.d.mts +2 -0
- package/3rdparty/walkontable/src/settings/accessor.d.ts +74 -0
- package/3rdparty/walkontable/src/settings/accessor.js +78 -0
- package/3rdparty/walkontable/src/settings/accessor.mjs +71 -0
- package/3rdparty/walkontable/src/settings/defaults.d.mts +1 -0
- package/3rdparty/walkontable/src/{settings.d.ts → settings/defaults.d.ts} +16 -77
- package/3rdparty/walkontable/src/settings/defaults.js +146 -0
- package/3rdparty/walkontable/src/settings/defaults.mjs +225 -0
- package/3rdparty/walkontable/src/settings/index.d.mts +1 -0
- package/3rdparty/walkontable/src/settings/index.d.ts +6 -0
- package/3rdparty/walkontable/src/settings/index.js +20 -0
- package/3rdparty/walkontable/src/settings/index.mjs +5 -0
- package/3rdparty/walkontable/src/table/baseTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/baseTable.d.ts +284 -0
- package/3rdparty/walkontable/src/table/baseTable.js +295 -0
- package/3rdparty/walkontable/src/table/baseTable.mjs +283 -0
- package/3rdparty/walkontable/src/table/cellAccess.d.mts +1 -0
- package/3rdparty/walkontable/src/table/cellAccess.d.ts +101 -0
- package/3rdparty/walkontable/src/table/cellAccess.js +238 -0
- package/3rdparty/walkontable/src/table/cellAccess.mjs +229 -0
- package/3rdparty/walkontable/src/table/domScaffold.d.mts +1 -0
- package/3rdparty/walkontable/src/table/domScaffold.d.ts +37 -0
- package/3rdparty/walkontable/src/table/domScaffold.js +145 -0
- package/3rdparty/walkontable/src/table/domScaffold.mjs +136 -0
- package/3rdparty/walkontable/src/table/drawCycle.d.mts +1 -0
- package/3rdparty/walkontable/src/table/drawCycle.d.ts +16 -0
- package/3rdparty/walkontable/src/table/drawCycle.js +405 -0
- package/3rdparty/walkontable/src/table/drawCycle.mjs +403 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.mts +1 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.ts +38 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.js +15 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.mjs +14 -0
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.ts +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.js +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.mjs +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.ts +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.ts +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.js +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.mjs +1 -1
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.mts +2 -0
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.ts +226 -0
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.js +251 -0
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.mjs +241 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.mts +1 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.ts +14 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.js +196 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.mjs +179 -0
- package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.ts +16 -0
- package/3rdparty/walkontable/src/table/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerTable.js} +9 -12
- package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.mjs +21 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.d.ts +15 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.js +35 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.mjs +20 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.ts +12 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.js +32 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.mjs +17 -0
- package/3rdparty/walkontable/src/table/regions/masterTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/{master.d.ts → regions/masterTable.d.ts} +4 -13
- package/3rdparty/walkontable/src/table/{master.js → regions/masterTable.js} +23 -48
- package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +22 -47
- package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.ts +16 -0
- package/3rdparty/walkontable/src/table/{topInlineStartCorner.js → regions/topInlineStartCornerTable.js} +9 -12
- package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.mjs +21 -0
- package/3rdparty/walkontable/src/table/regions/topTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/topTable.d.ts +15 -0
- package/3rdparty/walkontable/src/table/regions/topTable.js +35 -0
- package/3rdparty/walkontable/src/table/regions/topTable.mjs +20 -0
- package/3rdparty/walkontable/src/types.d.ts +7 -69
- package/3rdparty/walkontable/src/types.mjs +2 -1
- package/3rdparty/walkontable/src/utils/pointerToCoords.d.mts +1 -0
- package/3rdparty/walkontable/src/utils/{cellCoords.d.ts → pointerToCoords.d.ts} +24 -0
- package/3rdparty/walkontable/src/utils/pointerToCoords.js +181 -0
- package/3rdparty/walkontable/src/utils/pointerToCoords.mjs +186 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.ts +40 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.js +139 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.mjs +131 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.ts +133 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.js +18 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.mjs +18 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.ts +17 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.js +104 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.mjs +99 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.d.ts +84 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.js +588 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.mjs +601 -0
- package/3rdparty/walkontable/src/viewport/viewport.d.ts +267 -0
- package/3rdparty/walkontable/src/viewport/viewport.js +368 -0
- package/3rdparty/walkontable/src/viewport/viewport.mjs +360 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.d.ts +59 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.js +284 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.mjs +282 -0
- package/3rdparty/walkontable/src/wire.d.mts +1 -0
- package/3rdparty/walkontable/src/wire.d.ts +81 -0
- package/3rdparty/walkontable/src/wire.js +56 -0
- package/3rdparty/walkontable/src/wire.mjs +56 -0
- package/CHANGELOG.md +114 -1
- package/LICENSE.txt +1 -1
- package/README.md +2 -2
- package/base.d.ts +13 -4
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/checkboxType/accessors/valueSetter.d.ts +1 -1
- package/cellTypes/checkboxType/accessors/valueSetter.js +3 -1
- package/cellTypes/checkboxType/accessors/valueSetter.mjs +3 -1
- package/cellTypes/index.d.ts +3 -2
- package/cellTypes/index.js +9 -0
- package/cellTypes/index.mjs +5 -2
- package/cellTypes/intlDatetimeType/index.d.mts +1 -0
- package/cellTypes/intlDatetimeType/index.d.ts +1 -0
- package/cellTypes/intlDatetimeType/index.js +19 -0
- package/cellTypes/intlDatetimeType/index.mjs +1 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.d.mts +1 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.d.ts +16 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.js +31 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.mjs +15 -0
- package/cellTypes/multiSelectType/index.d.ts +1 -1
- package/cellTypes/multiSelectType/index.js +3 -0
- package/cellTypes/multiSelectType/index.mjs +1 -1
- package/cellTypes/multiSelectType/multiSelectType.d.ts +1 -0
- package/cellTypes/multiSelectType/multiSelectType.js +4 -0
- package/cellTypes/multiSelectType/multiSelectType.mjs +1 -0
- package/cellTypes/numericType/accessors/valueSetter.js +30 -2
- package/cellTypes/numericType/accessors/valueSetter.mjs +31 -3
- package/core/hooks/bucket.d.ts +40 -6
- package/core/hooks/bucket.js +108 -72
- package/core/hooks/bucket.mjs +113 -72
- package/core/hooks/constants.js +254 -16
- package/core/hooks/constants.mjs +254 -16
- package/core/hooks/index.js +27 -22
- package/core/hooks/index.mjs +27 -22
- package/core/layout/constants.d.ts +11 -0
- package/core/layout/constants.js +6 -0
- package/core/layout/constants.mjs +12 -0
- package/core/layout/domSlot.d.ts +3 -1
- package/core/layout/domSlot.js +16 -2
- package/core/layout/domSlot.mjs +16 -2
- package/core/layout/index.d.ts +2 -2
- package/core/layout/index.js +6 -0
- package/core/layout/index.mjs +2 -2
- package/core/layout/layoutManager.d.ts +13 -0
- package/core/layout/layoutManager.js +21 -4
- package/core/layout/layoutManager.mjs +22 -2
- package/core/settings.d.ts +102 -6
- package/core/types.d.ts +15 -1
- package/core/types.mjs +9 -0
- package/core.js +534 -88
- package/core.mjs +537 -91
- package/dataMap/dataMap.d.ts +3 -13
- package/dataMap/dataMap.js +100 -41
- package/dataMap/dataMap.mjs +101 -42
- package/dataMap/dataSource.js +4 -1
- package/dataMap/dataSource.mjs +4 -1
- package/dataMap/metaManager/index.d.ts +62 -8
- package/dataMap/metaManager/index.js +66 -0
- package/dataMap/metaManager/index.mjs +66 -0
- package/dataMap/metaManager/lazyFactoryMap.d.ts +68 -43
- package/dataMap/metaManager/lazyFactoryMap.js +497 -110
- package/dataMap/metaManager/lazyFactoryMap.mjs +511 -111
- package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
- package/dataMap/metaManager/metaLayers/cellMeta.js +108 -8
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +108 -8
- package/dataMap/metaManager/metaLayers/columnMeta.d.ts +2 -1
- package/dataMap/metaManager/metaLayers/columnMeta.js +1 -0
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -0
- package/dataMap/metaManager/metaSchema.js +759 -39
- package/dataMap/metaManager/metaSchema.mjs +759 -39
- package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
- package/dataMap/metaManager/mods/dynamicCellMeta.js +252 -28
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +253 -29
- package/dataMap/sourceDataValidator.d.ts +13 -21
- package/dataMap/sourceDataValidator.js +39 -29
- package/dataMap/sourceDataValidator.mjs +50 -33
- package/dist/handsontable.full.js +30027 -11261
- package/dist/handsontable.full.min.js +168 -112
- package/dist/handsontable.js +32468 -13762
- package/dist/handsontable.min.js +172 -116
- package/dist/languages/all.js +2 -1
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/fa-IR.js +2 -1
- package/dist/languages/fa-IR.min.js +1 -1
- package/dist/themes/classic.js +9 -3
- package/dist/themes/classic.min.js +4 -4
- package/dist/themes/horizon.js +9 -3
- package/dist/themes/horizon.min.js +4 -4
- package/dist/themes/main.js +9 -3
- package/dist/themes/main.min.js +4 -4
- package/dist/themes/static/variables/colors/ant.js +3 -3
- package/dist/themes/static/variables/colors/ant.min.js +3 -3
- package/dist/themes/static/variables/colors/classic.js +3 -3
- package/dist/themes/static/variables/colors/classic.min.js +3 -3
- package/dist/themes/static/variables/colors/horizon.js +3 -3
- package/dist/themes/static/variables/colors/horizon.min.js +3 -3
- package/dist/themes/static/variables/colors/main.js +3 -3
- package/dist/themes/static/variables/colors/main.min.js +3 -3
- package/dist/themes/static/variables/colors/material.js +3 -3
- package/dist/themes/static/variables/colors/material.min.js +3 -3
- package/dist/themes/static/variables/colors/shadcn.js +3 -3
- package/dist/themes/static/variables/colors/shadcn.min.js +3 -3
- package/dist/themes/static/variables/density.js +3 -3
- package/dist/themes/static/variables/density.min.js +3 -3
- package/dist/themes/static/variables/helpers/iconsMap.js +4 -9
- package/dist/themes/static/variables/helpers/iconsMap.min.js +4 -9
- package/dist/themes/static/variables/icons/horizon.js +3 -3
- package/dist/themes/static/variables/icons/horizon.min.js +3 -3
- package/dist/themes/static/variables/icons/main.js +3 -3
- package/dist/themes/static/variables/icons/main.min.js +3 -3
- package/dist/themes/static/variables/sizing.js +3 -3
- package/dist/themes/static/variables/sizing.min.js +3 -3
- package/dist/themes/static/variables/tokens/classic.js +9 -3
- package/dist/themes/static/variables/tokens/classic.min.js +4 -4
- package/dist/themes/static/variables/tokens/horizon.js +9 -3
- package/dist/themes/static/variables/tokens/horizon.min.js +4 -4
- package/dist/themes/static/variables/tokens/main.js +9 -3
- package/dist/themes/static/variables/tokens/main.min.js +4 -4
- package/editorManager.js +152 -3
- package/editorManager.mjs +152 -3
- package/editors/autocompleteEditor/autocompleteEditor.js +58 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +59 -12
- package/editors/baseEditor/baseEditor.d.ts +15 -3
- package/editors/baseEditor/baseEditor.js +5 -3
- package/editors/baseEditor/baseEditor.mjs +15 -3
- package/editors/factory.js +5 -2
- package/editors/factory.mjs +5 -2
- package/editors/index.d.ts +3 -2
- package/editors/index.js +8 -0
- package/editors/index.mjs +3 -1
- package/editors/intlDatetimeEditor/index.d.mts +1 -0
- package/editors/intlDatetimeEditor/index.d.ts +1 -0
- package/editors/intlDatetimeEditor/index.js +19 -0
- package/editors/intlDatetimeEditor/index.mjs +1 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.d.mts +1 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.d.ts +42 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.js +108 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.mjs +93 -0
- package/editors/multiSelectEditor/multiSelectEditor.js +11 -9
- package/editors/multiSelectEditor/multiSelectEditor.mjs +12 -10
- package/editors/selectEditor/selectEditor.js +2 -1
- package/editors/selectEditor/selectEditor.mjs +2 -1
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +2 -2
- package/eventManager.d.ts +3 -3
- package/focusManager/grid.d.ts +28 -0
- package/focusManager/grid.js +85 -2
- package/focusManager/grid.mjs +81 -3
- package/focusManager/scopeManager.js +1 -1
- package/focusManager/scopeManager.mjs +2 -2
- package/handsontable-non-commercial-license.pdf +0 -0
- package/helpers/array.d.ts +25 -0
- package/helpers/array.js +41 -4
- package/helpers/array.mjs +56 -4
- package/helpers/console.d.ts +25 -3
- package/helpers/console.js +40 -7
- package/helpers/console.mjs +52 -7
- package/helpers/dateTime.d.ts +14 -0
- package/helpers/dateTime.js +74 -2
- package/helpers/dateTime.mjs +73 -2
- package/helpers/dom/cellCoords.js +156 -13
- package/helpers/dom/cellCoords.mjs +156 -13
- package/helpers/dom/element.d.ts +47 -8
- package/helpers/dom/element.js +104 -18
- package/helpers/dom/element.mjs +132 -23
- package/helpers/dom/event.d.ts +58 -0
- package/helpers/dom/event.js +39 -0
- package/helpers/dom/event.mjs +63 -0
- package/helpers/errors.d.ts +5 -0
- package/helpers/errors.js +10 -6
- package/helpers/errors.mjs +10 -6
- package/helpers/feature.d.ts +19 -0
- package/helpers/feature.js +21 -0
- package/helpers/feature.mjs +30 -0
- package/helpers/function.d.ts +1 -1
- package/helpers/function.js +4 -1
- package/helpers/function.mjs +4 -1
- package/helpers/mixed.d.ts +103 -0
- package/helpers/mixed.js +373 -4
- package/helpers/mixed.mjs +413 -4
- package/helpers/moves.js +2 -1
- package/helpers/moves.mjs +2 -1
- package/helpers/number.d.ts +22 -0
- package/helpers/number.js +49 -0
- package/helpers/number.mjs +66 -0
- package/helpers/string.d.ts +14 -10
- package/helpers/string.js +17 -9
- package/helpers/string.mjs +27 -17
- package/helpers/templateString.d.mts +1 -0
- package/helpers/templateString.d.ts +13 -0
- package/helpers/templateString.js +29 -0
- package/helpers/templateString.mjs +19 -0
- package/helpers/uiButton.d.mts +1 -0
- package/helpers/uiButton.d.ts +21 -0
- package/helpers/uiButton.js +37 -0
- package/helpers/uiButton.mjs +31 -0
- package/i18n/languages/fa-IR.d.ts +1 -0
- package/i18n/languages/fa-IR.js +1 -0
- package/i18n/languages/fa-IR.mjs +1 -0
- package/index.d.ts +3 -3
- package/languages/all.js +2 -1
- package/languages/fa-IR.js +2 -1
- package/languages/fa-IR.mjs +1 -0
- package/languages/index.js +2 -1
- package/package.json +61 -1
- package/plugins/autoColumnSize/autoColumnSize.d.ts +24 -1
- package/plugins/autoColumnSize/autoColumnSize.js +501 -82
- package/plugins/autoColumnSize/autoColumnSize.mjs +508 -83
- package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
- package/plugins/autoRowSize/autoRowSize.js +68 -24
- package/plugins/autoRowSize/autoRowSize.mjs +98 -29
- package/plugins/autofill/autofill.js +30 -12
- package/plugins/autofill/autofill.mjs +30 -12
- package/plugins/base/base.d.ts +10 -0
- package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +89 -8
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +93 -8
- package/plugins/columnSorting/columnSorting.d.ts +31 -2
- package/plugins/columnSorting/columnSorting.js +151 -24
- package/plugins/columnSorting/columnSorting.mjs +153 -26
- package/plugins/columnSorting/columnStatesManager.d.ts +1 -1
- package/plugins/columnSorting/columnStatesManager.js +1 -7
- package/plugins/columnSorting/columnStatesManager.mjs +1 -7
- package/plugins/columnSorting/domHelpers.d.ts +3 -0
- package/plugins/columnSorting/domHelpers.js +9 -0
- package/plugins/columnSorting/domHelpers.mjs +3 -3
- package/plugins/columnSorting/rootComparator.js +21 -16
- package/plugins/columnSorting/rootComparator.mjs +21 -16
- package/plugins/columnSorting/sortFunction/checkbox.js +7 -5
- package/plugins/columnSorting/sortFunction/checkbox.mjs +7 -5
- package/plugins/columnSorting/sortFunction/default.js +15 -4
- package/plugins/columnSorting/sortFunction/default.mjs +15 -4
- package/plugins/columnSorting/sortFunction/intlDatetime.d.mts +1 -0
- package/plugins/columnSorting/sortFunction/intlDatetime.d.ts +10 -0
- package/plugins/columnSorting/sortFunction/intlDatetime.js +23 -0
- package/plugins/columnSorting/sortFunction/intlDatetime.mjs +12 -0
- package/plugins/columnSorting/sortService/registry.js +2 -0
- package/plugins/columnSorting/sortService/registry.mjs +2 -0
- package/plugins/columnSorting/utils.d.ts +8 -0
- package/plugins/columnSorting/utils.js +37 -45
- package/plugins/columnSorting/utils.mjs +42 -47
- package/plugins/columnSummary/columnSummary.js +9 -5
- package/plugins/columnSummary/columnSummary.mjs +9 -5
- package/plugins/columnSummary/endpoints.d.ts +69 -2
- package/plugins/columnSummary/endpoints.js +181 -29
- package/plugins/columnSummary/endpoints.mjs +181 -29
- package/plugins/comments/commentEditor.js +1 -1
- package/plugins/comments/commentEditor.mjs +2 -2
- package/plugins/contextMenu/contextMenu.d.ts +12 -1
- package/plugins/contextMenu/contextMenu.js +30 -6
- package/plugins/contextMenu/contextMenu.mjs +30 -6
- package/plugins/contextMenu/index.d.ts +1 -1
- package/plugins/contextMenu/menu/menu.d.ts +22 -1
- package/plugins/contextMenu/menu/menu.js +211 -3
- package/plugins/contextMenu/menu/menu.mjs +212 -4
- package/plugins/contextMenu/menu/menuItemRenderer.js +2 -2
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +2 -2
- package/plugins/contextMenu/predefinedItems/alignment.js +14 -14
- package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
- package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
- package/plugins/contextMenu/predefinedItems/readOnly.js +3 -3
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
- package/plugins/contextMenu/utils.js +1 -1
- package/plugins/contextMenu/utils.mjs +1 -1
- package/plugins/copyPaste/copyPaste.js +70 -16
- package/plugins/copyPaste/copyPaste.mjs +71 -17
- package/plugins/copyPaste/copyableRanges.js +6 -2
- package/plugins/copyPaste/copyableRanges.mjs +6 -2
- package/plugins/copyPaste/pasteEvent.d.ts +1 -1
- package/plugins/customBorders/customBorders.d.ts +21 -40
- package/plugins/customBorders/customBorders.js +1080 -201
- package/plugins/customBorders/customBorders.mjs +1082 -203
- package/plugins/customBorders/utils.d.ts +71 -0
- package/plugins/customBorders/utils.js +63 -0
- package/plugins/customBorders/utils.mjs +101 -0
- package/plugins/dataProvider/dataProvider.d.ts +2 -1
- package/plugins/dataProvider/dataProvider.js +22 -7
- package/plugins/dataProvider/dataProvider.mjs +22 -7
- package/plugins/dataProvider/query/crud.js +1 -1
- package/plugins/dataProvider/query/crud.mjs +1 -1
- package/plugins/dialog/dialog.js +14 -9
- package/plugins/dialog/dialog.mjs +14 -9
- package/plugins/dialog/templates/confirm.d.ts +1 -1
- package/plugins/dialog/templates/confirm.js +2 -1
- package/plugins/dialog/templates/confirm.mjs +2 -1
- package/plugins/dialog/ui.d.ts +5 -3
- package/plugins/dialog/ui.js +12 -4
- package/plugins/dialog/ui.mjs +12 -4
- package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
- package/plugins/dragToScroll/dragToScroll.js +150 -14
- package/plugins/dragToScroll/dragToScroll.mjs +151 -15
- package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
- package/plugins/dropdownMenu/dropdownMenu.js +45 -3
- package/plugins/dropdownMenu/dropdownMenu.mjs +46 -4
- package/plugins/dropdownMenu/index.d.ts +1 -0
- package/plugins/emptyDataState/emptyDataState.js +4 -6
- package/plugins/emptyDataState/emptyDataState.mjs +4 -6
- package/plugins/emptyDataState/ui.js +2 -1
- package/plugins/emptyDataState/ui.mjs +2 -1
- package/plugins/exportFile/dataProvider.js +7 -9
- package/plugins/exportFile/dataProvider.mjs +7 -9
- package/plugins/exportFile/exportFile.d.ts +10 -3
- package/plugins/exportFile/types/_base.js +4 -10
- package/plugins/exportFile/types/_base.mjs +4 -10
- package/plugins/exportFile/types/xlsx/cell-style.js +4 -2
- package/plugins/exportFile/types/xlsx/cell-style.mjs +4 -2
- package/plugins/exportFile/types/xlsx/date-utils.d.ts +15 -0
- package/plugins/exportFile/types/xlsx/date-utils.js +31 -0
- package/plugins/exportFile/types/xlsx/date-utils.mjs +36 -0
- package/plugins/exportFile/types/xlsx.js +13 -9
- package/plugins/exportFile/types/xlsx.mjs +14 -10
- package/plugins/exportFile/utils.d.ts +9 -1
- package/plugins/exportFile/utils.js +27 -4
- package/plugins/exportFile/utils.mjs +40 -2
- package/plugins/filters/component/_base.d.ts +1 -2
- package/plugins/filters/component/_base.js +1 -2
- package/plugins/filters/component/_base.mjs +1 -2
- package/plugins/filters/component/condition.d.ts +1 -0
- package/plugins/filters/component/condition.js +2 -0
- package/plugins/filters/component/condition.mjs +2 -0
- package/plugins/filters/component/value.d.ts +5 -6
- package/plugins/filters/component/value.js +53 -34
- package/plugins/filters/component/value.mjs +54 -35
- package/plugins/filters/condition/date/after.js +2 -1
- package/plugins/filters/condition/date/after.mjs +2 -1
- package/plugins/filters/condition/date/afterOrEqual.js +2 -1
- package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
- package/plugins/filters/condition/date/before.js +2 -1
- package/plugins/filters/condition/date/before.mjs +2 -1
- package/plugins/filters/condition/date/beforeOrEqual.js +2 -1
- package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
- package/plugins/filters/condition/equal.d.ts +7 -0
- package/plugins/filters/condition/equal.js +4 -0
- package/plugins/filters/condition/equal.mjs +10 -0
- package/plugins/filters/condition/intlDatetime/after.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/after.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/after.js +77 -0
- package/plugins/filters/condition/intlDatetime/after.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.js +77 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/before.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/before.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/before.js +77 -0
- package/plugins/filters/condition/intlDatetime/before.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.js +77 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/between.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/between.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/between.js +78 -0
- package/plugins/filters/condition/intlDatetime/between.mjs +23 -0
- package/plugins/filters/condition/intlDatetime/today.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/today.d.ts +17 -0
- package/plugins/filters/condition/intlDatetime/today.js +76 -0
- package/plugins/filters/condition/intlDatetime/today.mjs +20 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.d.ts +17 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.js +77 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.mjs +21 -0
- package/plugins/filters/condition/intlDatetime/yesterday.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/yesterday.d.ts +17 -0
- package/plugins/filters/condition/intlDatetime/yesterday.js +77 -0
- package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
- package/plugins/filters/conditionCollection.js +4 -7
- package/plugins/filters/conditionCollection.mjs +4 -7
- package/plugins/filters/conditionUpdateObserver.d.ts +2 -2
- package/plugins/filters/conditionUpdateObserver.js +148 -49
- package/plugins/filters/conditionUpdateObserver.mjs +148 -49
- package/plugins/filters/constants.d.ts +1 -0
- package/plugins/filters/constants.js +31 -0
- package/plugins/filters/constants.mjs +28 -0
- package/plugins/filters/dataFilter.d.ts +4 -12
- package/plugins/filters/dataFilter.js +7 -19
- package/plugins/filters/dataFilter.mjs +8 -20
- package/plugins/filters/filters.d.ts +33 -9
- package/plugins/filters/filters.js +91 -31
- package/plugins/filters/filters.mjs +92 -32
- package/plugins/filters/sortComparators.d.ts +9 -2
- package/plugins/filters/sortComparators.js +34 -1
- package/plugins/filters/sortComparators.mjs +38 -3
- package/plugins/filters/ui/input.d.ts +4 -0
- package/plugins/filters/ui/input.js +18 -6
- package/plugins/filters/ui/input.mjs +18 -6
- package/plugins/filters/ui/multipleSelect.js +27 -4
- package/plugins/filters/ui/multipleSelect.mjs +27 -4
- package/plugins/filters/ui/select.js +1 -1
- package/plugins/filters/ui/select.mjs +1 -1
- package/plugins/formulas/engine/register.d.ts +5 -4
- package/plugins/formulas/engine/register.js +5 -2
- package/plugins/formulas/engine/register.mjs +9 -5
- package/plugins/formulas/engine/settings.d.ts +2 -6
- package/plugins/formulas/engine/settings.js +29 -4
- package/plugins/formulas/engine/settings.mjs +29 -4
- package/plugins/formulas/engine/types.d.ts +12 -2
- package/plugins/formulas/formulas.d.ts +39 -0
- package/plugins/formulas/formulas.js +789 -47
- package/plugins/formulas/formulas.mjs +793 -49
- package/plugins/formulas/hyperlinkUrl.d.mts +1 -0
- package/plugins/formulas/hyperlinkUrl.d.ts +12 -0
- package/plugins/formulas/hyperlinkUrl.js +32 -0
- package/plugins/formulas/hyperlinkUrl.mjs +32 -0
- package/plugins/formulas/indexSyncer/axisSyncer.d.ts +1 -0
- package/plugins/formulas/indexSyncer/axisSyncer.js +72 -15
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +72 -15
- package/plugins/formulas/utils.d.ts +9 -0
- package/plugins/formulas/utils.js +21 -0
- package/plugins/formulas/utils.mjs +25 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +6 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
- package/plugins/hiddenColumns/hiddenColumns.js +6 -3
- package/plugins/hiddenColumns/hiddenColumns.mjs +6 -3
- package/plugins/hiddenRows/contextMenuItem/showRow.js +6 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
- package/plugins/hiddenRows/hiddenRows.js +6 -3
- package/plugins/hiddenRows/hiddenRows.mjs +6 -3
- package/plugins/index.d.ts +5 -1
- package/plugins/index.js +10 -0
- package/plugins/index.mjs +5 -1
- package/plugins/loading/content.d.ts +5 -3
- package/plugins/loading/content.js +3 -2
- package/plugins/loading/content.mjs +8 -5
- package/plugins/loading/loading.d.ts +5 -2
- package/plugins/loading/loading.mjs +5 -2
- package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
- package/plugins/manualColumnMove/manualColumnMove.js +122 -20
- package/plugins/manualColumnMove/manualColumnMove.mjs +123 -21
- package/plugins/manualColumnResize/manualColumnResize.d.ts +20 -7
- package/plugins/manualColumnResize/manualColumnResize.js +33 -13
- package/plugins/manualColumnResize/manualColumnResize.mjs +34 -14
- package/plugins/manualRowResize/manualRowResize.d.ts +21 -8
- package/plugins/manualRowResize/manualRowResize.js +34 -14
- package/plugins/manualRowResize/manualRowResize.mjs +35 -15
- package/plugins/mergeCells/cellCoords.d.ts +8 -0
- package/plugins/mergeCells/cellCoords.js +11 -0
- package/plugins/mergeCells/cellCoords.mjs +11 -0
- package/plugins/mergeCells/cellsCollection.d.ts +46 -2
- package/plugins/mergeCells/cellsCollection.js +189 -68
- package/plugins/mergeCells/cellsCollection.mjs +189 -68
- package/plugins/mergeCells/focusOrder.d.ts +26 -20
- package/plugins/mergeCells/focusOrder.js +358 -177
- package/plugins/mergeCells/focusOrder.mjs +363 -172
- package/plugins/mergeCells/mergeCells.d.ts +13 -8
- package/plugins/mergeCells/mergeCells.js +322 -64
- package/plugins/mergeCells/mergeCells.mjs +322 -64
- package/plugins/moveCells/helpers.d.mts +1 -0
- package/plugins/moveCells/helpers.d.ts +21 -0
- package/plugins/moveCells/helpers.js +20 -0
- package/plugins/moveCells/helpers.mjs +15 -0
- package/plugins/moveCells/index.d.mts +1 -0
- package/plugins/moveCells/index.d.ts +1 -0
- package/plugins/moveCells/index.js +22 -0
- package/plugins/moveCells/index.mjs +1 -0
- package/plugins/moveCells/moveCells.d.mts +1 -0
- package/plugins/moveCells/moveCells.d.ts +80 -0
- package/plugins/moveCells/moveCells.js +602 -0
- package/plugins/moveCells/moveCells.mjs +587 -0
- package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -8
- package/plugins/multiColumnSorting/multiColumnSorting.js +11 -16
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +11 -16
- package/plugins/multiColumnSorting/rootComparator.js +26 -19
- package/plugins/multiColumnSorting/rootComparator.mjs +26 -19
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +19 -4
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +273 -58
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +273 -58
- package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
- package/plugins/nestedHeaders/nestedHeaders.js +222 -23
- package/plugins/nestedHeaders/nestedHeaders.mjs +222 -23
- package/plugins/nestedHeaders/stateManager/columnArrangement.d.mts +1 -0
- package/plugins/nestedHeaders/stateManager/columnArrangement.d.ts +37 -0
- package/plugins/nestedHeaders/stateManager/columnArrangement.js +35 -0
- package/plugins/nestedHeaders/stateManager/columnArrangement.mjs +30 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.d.mts +1 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.d.ts +57 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.js +115 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.mjs +135 -0
- package/plugins/nestedHeaders/stateManager/headersTree.d.ts +14 -1
- package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
- package/plugins/nestedHeaders/stateManager/index.js +381 -38
- package/plugins/nestedHeaders/stateManager/index.mjs +382 -39
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +3 -2
- package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +3 -2
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.d.ts +23 -6
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +20 -4
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +20 -4
- package/plugins/nestedHeaders/stateManager/utils.d.ts +17 -1
- package/plugins/nestedHeaders/stateManager/utils.js +6 -1
- package/plugins/nestedHeaders/stateManager/utils.mjs +6 -1
- package/plugins/nestedHeaders/utils/ghostTable.js +21 -8
- package/plugins/nestedHeaders/utils/ghostTable.mjs +21 -8
- package/plugins/nestedRows/data/dataManager.d.ts +4 -1
- package/plugins/nestedRows/data/dataManager.js +10 -4
- package/plugins/nestedRows/data/dataManager.mjs +10 -4
- package/plugins/nestedRows/nestedRows.d.ts +127 -1
- package/plugins/nestedRows/nestedRows.js +330 -8
- package/plugins/nestedRows/nestedRows.mjs +330 -8
- package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
- package/plugins/nestedRows/ui/collapsing.js +236 -40
- package/plugins/nestedRows/ui/collapsing.mjs +236 -40
- package/plugins/notification/notification.d.ts +2 -1
- package/plugins/notification/notification.js +6 -3
- package/plugins/notification/notification.mjs +6 -3
- package/plugins/notification/ui.d.ts +8 -5
- package/plugins/notification/ui.js +18 -6
- package/plugins/notification/ui.mjs +18 -6
- package/plugins/pagination/pagination.js +2 -2
- package/plugins/pagination/pagination.mjs +2 -2
- package/plugins/search/search.js +23 -2
- package/plugins/search/search.mjs +23 -2
- package/plugins/selectionHandles/helpers.d.mts +1 -0
- package/plugins/selectionHandles/helpers.d.ts +17 -0
- package/plugins/selectionHandles/helpers.js +16 -0
- package/plugins/selectionHandles/helpers.mjs +11 -0
- package/plugins/selectionHandles/index.d.mts +1 -0
- package/plugins/selectionHandles/index.d.ts +1 -0
- package/plugins/selectionHandles/index.js +22 -0
- package/plugins/selectionHandles/index.mjs +1 -0
- package/plugins/selectionHandles/selectionHandles.d.mts +1 -0
- package/plugins/selectionHandles/selectionHandles.d.ts +52 -0
- package/plugins/selectionHandles/selectionHandles.js +342 -0
- package/plugins/selectionHandles/selectionHandles.mjs +323 -0
- package/plugins/trimRows/trimRows.d.ts +1 -1
- package/plugins/trimRows/trimRows.js +6 -2
- package/plugins/trimRows/trimRows.mjs +6 -2
- package/plugins/types.d.ts +4 -0
- package/plugins/undoRedo/actions/cellAlignment.js +1 -1
- package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
- package/plugins/undoRedo/actions/createColumn.js +4 -1
- package/plugins/undoRedo/actions/createColumn.mjs +4 -1
- package/plugins/undoRedo/actions/createRow.js +4 -1
- package/plugins/undoRedo/actions/createRow.mjs +4 -1
- package/plugins/undoRedo/actions/fixedCounts.d.mts +1 -0
- package/plugins/undoRedo/actions/fixedCounts.d.ts +36 -0
- package/plugins/undoRedo/actions/fixedCounts.js +63 -0
- package/plugins/undoRedo/actions/fixedCounts.mjs +62 -0
- package/plugins/undoRedo/actions/index.js +2 -0
- package/plugins/undoRedo/actions/index.mjs +2 -0
- package/plugins/undoRedo/actions/moveCells.d.mts +1 -0
- package/plugins/undoRedo/actions/moveCells.d.ts +104 -0
- package/plugins/undoRedo/actions/moveCells.js +225 -0
- package/plugins/undoRedo/actions/moveCells.mjs +227 -0
- package/plugins/undoRedo/actions/removeColumn.d.ts +18 -2
- package/plugins/undoRedo/actions/removeColumn.js +11 -4
- package/plugins/undoRedo/actions/removeColumn.mjs +12 -5
- package/plugins/undoRedo/actions/removeRow.js +2 -57
- package/plugins/undoRedo/actions/removeRow.mjs +2 -57
- package/plugins/undoRedo/undoRedo.d.ts +26 -0
- package/plugins/undoRedo/undoRedo.js +36 -2
- package/plugins/undoRedo/undoRedo.mjs +36 -2
- package/plugins/undoRedo/utils.d.ts +29 -0
- package/plugins/undoRedo/utils.js +55 -3
- package/plugins/undoRedo/utils.mjs +59 -0
- package/renderSizeProbe.d.mts +1 -0
- package/renderSizeProbe.d.ts +60 -0
- package/renderSizeProbe.js +163 -0
- package/renderSizeProbe.mjs +176 -0
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/index.d.ts +3 -2
- package/renderers/index.js +8 -0
- package/renderers/index.mjs +3 -1
- package/renderers/intlDatetimeRenderer/index.d.mts +1 -0
- package/renderers/intlDatetimeRenderer/index.d.ts +1 -0
- package/renderers/intlDatetimeRenderer/index.js +22 -0
- package/renderers/intlDatetimeRenderer/index.mjs +1 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.mts +1 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.ts +26 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.js +82 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.mjs +67 -0
- package/renderers/multiSelectRenderer/multiSelectRenderer.js +2 -3
- package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +2 -3
- package/renderers/multiSelectRenderer/utils/utils.d.ts +1 -1
- package/renderers/multiSelectRenderer/utils/utils.js +11 -8
- package/renderers/multiSelectRenderer/utils/utils.mjs +11 -8
- package/renderers/passwordRenderer/passwordRenderer.js +6 -1
- package/renderers/passwordRenderer/passwordRenderer.mjs +6 -1
- package/renderers/renderCell.d.mts +1 -0
- package/renderers/renderCell.d.ts +37 -0
- package/renderers/renderCell.js +43 -0
- package/renderers/renderCell.mjs +48 -0
- package/selection/highlight/types/areaLayered.d.ts +3 -1
- package/selection/highlight/types/areaLayered.js +4 -2
- package/selection/highlight/types/areaLayered.mjs +6 -2
- package/selection/highlight/types/focus.d.ts +3 -1
- package/selection/highlight/types/focus.js +3 -2
- package/selection/highlight/types/focus.mjs +5 -2
- package/selection/mouseEventHandler.js +29 -26
- package/selection/mouseEventHandler.mjs +29 -26
- package/selection/moveCells.d.mts +1 -0
- package/selection/moveCells.d.ts +15 -0
- package/selection/moveCells.js +13 -0
- package/selection/moveCells.mjs +9 -0
- package/selection/selection.d.ts +56 -2
- package/selection/selection.js +149 -5
- package/selection/selection.mjs +149 -5
- package/selection/types.d.ts +3 -0
- package/settings.d.ts +24 -3
- package/shortcuts/context.d.ts +4 -0
- package/shortcuts/context.js +16 -8
- package/shortcuts/context.mjs +20 -8
- package/shortcuts/contexts/commands/populateSelectedCellsData.js +1 -1
- package/shortcuts/contexts/commands/populateSelectedCellsData.mjs +1 -1
- package/styles/handsontable.css +504 -158
- package/styles/handsontable.min.css +4 -4
- package/styles/handsontableStyles.d.mts +2 -0
- package/styles/handsontableStyles.d.ts +2 -0
- package/styles/handsontableStyles.js +1 -1
- package/styles/handsontableStyles.mjs +1 -1
- package/styles/ht-icons-horizon.css +1 -10
- package/styles/ht-icons-horizon.min.css +4 -4
- package/styles/ht-icons-main.css +1 -10
- package/styles/ht-icons-main.min.css +4 -4
- package/styles/ht-theme-classic-no-icons.css +6 -0
- package/styles/ht-theme-classic-no-icons.min.css +4 -4
- package/styles/ht-theme-classic.css +7 -10
- package/styles/ht-theme-classic.min.css +4 -4
- package/styles/ht-theme-horizon-no-icons.css +6 -0
- package/styles/ht-theme-horizon-no-icons.min.css +4 -4
- package/styles/ht-theme-horizon.css +7 -10
- package/styles/ht-theme-horizon.min.css +4 -4
- package/styles/ht-theme-main-no-icons.css +6 -0
- package/styles/ht-theme-main-no-icons.min.css +4 -4
- package/styles/ht-theme-main.css +7 -10
- package/styles/ht-theme-main.min.css +4 -4
- package/tableView.d.ts +17 -4
- package/tableView.js +208 -42
- package/tableView.mjs +209 -43
- package/themes/engine/index.d.ts +2 -1
- package/themes/engine/index.js +3 -0
- package/themes/engine/index.mjs +1 -1
- package/themes/engine/manager.d.ts +75 -3
- package/themes/engine/manager.js +242 -6
- package/themes/engine/manager.mjs +249 -6
- package/themes/engine/utils/cssVariables.d.ts +18 -1
- package/themes/engine/utils/cssVariables.js +27 -11
- package/themes/engine/utils/cssVariables.mjs +28 -11
- package/themes/engine/utils/validation.js +7 -0
- package/themes/engine/utils/validation.mjs +7 -0
- package/themes/static/variables/helpers/iconsMap.js +1 -6
- package/themes/static/variables/helpers/iconsMap.mjs +1 -6
- package/themes/static/variables/tokens/classic.js +6 -0
- package/themes/static/variables/tokens/classic.mjs +6 -0
- package/themes/static/variables/tokens/horizon.js +6 -0
- package/themes/static/variables/tokens/horizon.mjs +6 -0
- package/themes/static/variables/tokens/main.js +6 -0
- package/themes/static/variables/tokens/main.mjs +6 -0
- package/themes/types.d.ts +1 -1
- package/translations/indexMapper.d.ts +14 -9
- package/translations/indexMapper.js +104 -43
- package/translations/indexMapper.mjs +104 -43
- package/translations/mapCollections/aggregatedCollection.js +20 -35
- package/translations/mapCollections/aggregatedCollection.mjs +20 -35
- package/translations/mapCollections/mapCollection.d.ts +10 -4
- package/translations/mapCollections/mapCollection.js +2 -2
- package/translations/mapCollections/mapCollection.mjs +2 -2
- package/translations/maps/booleanMap.d.mts +1 -0
- package/translations/maps/booleanMap.d.ts +86 -0
- package/translations/maps/booleanMap.js +300 -0
- package/translations/maps/booleanMap.mjs +308 -0
- package/translations/maps/hidingMap.d.ts +5 -2
- package/translations/maps/hidingMap.js +8 -3
- package/translations/maps/hidingMap.mjs +8 -3
- package/translations/maps/index.d.ts +5 -2
- package/translations/maps/index.js +7 -3
- package/translations/maps/index.mjs +10 -2
- package/translations/maps/indexMap.d.ts +26 -2
- package/translations/maps/indexMap.js +78 -6
- package/translations/maps/indexMap.mjs +78 -6
- package/translations/maps/indexesSequence.d.ts +53 -2
- package/translations/maps/indexesSequence.js +225 -3
- package/translations/maps/indexesSequence.mjs +233 -3
- package/translations/maps/trimmingMap.d.ts +5 -2
- package/translations/maps/trimmingMap.js +8 -3
- package/translations/maps/trimmingMap.mjs +8 -3
- package/translations/maps/utils/actionsOnIndexes.js +20 -1
- package/translations/maps/utils/actionsOnIndexes.mjs +20 -1
- package/translations/maps/utils/indexesSequence.js +12 -3
- package/translations/maps/utils/indexesSequence.mjs +12 -3
- package/translations/maps/utils/physicallyIndexed.js +12 -1
- package/translations/maps/utils/physicallyIndexed.mjs +12 -1
- package/utils/entitlementLicenseKey/classify.d.mts +1 -0
- package/utils/entitlementLicenseKey/classify.d.ts +34 -0
- package/utils/entitlementLicenseKey/classify.js +97 -0
- package/utils/entitlementLicenseKey/classify.mjs +96 -0
- package/utils/entitlementLicenseKey/constants.d.mts +1 -0
- package/utils/entitlementLicenseKey/constants.d.ts +69 -0
- package/utils/entitlementLicenseKey/constants.js +54 -0
- package/utils/entitlementLicenseKey/constants.mjs +66 -0
- package/utils/entitlementLicenseKey/detectFormat.d.mts +1 -0
- package/utils/entitlementLicenseKey/detectFormat.d.ts +23 -0
- package/utils/entitlementLicenseKey/detectFormat.js +60 -0
- package/utils/entitlementLicenseKey/detectFormat.mjs +60 -0
- package/utils/entitlementLicenseKey/encoding.d.mts +1 -0
- package/utils/entitlementLicenseKey/encoding.d.ts +58 -0
- package/utils/entitlementLicenseKey/encoding.js +161 -0
- package/utils/entitlementLicenseKey/encoding.mjs +172 -0
- package/utils/entitlementLicenseKey/extractKeyData.d.mts +1 -0
- package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -0
- package/utils/entitlementLicenseKey/extractKeyData.js +213 -0
- package/utils/entitlementLicenseKey/extractKeyData.mjs +232 -0
- package/utils/entitlementLicenseKey/grants.d.mts +1 -0
- package/utils/entitlementLicenseKey/grants.d.ts +54 -0
- package/utils/entitlementLicenseKey/grants.js +68 -0
- package/utils/entitlementLicenseKey/grants.mjs +84 -0
- package/utils/entitlementLicenseKey/index.d.mts +1 -0
- package/utils/entitlementLicenseKey/index.d.ts +8 -0
- package/utils/entitlementLicenseKey/index.js +53 -0
- package/utils/entitlementLicenseKey/index.mjs +6 -0
- package/utils/entitlementLicenseKey/sha512.d.mts +1 -0
- package/utils/entitlementLicenseKey/sha512.d.ts +11 -0
- package/utils/entitlementLicenseKey/sha512.js +328 -0
- package/utils/entitlementLicenseKey/sha512.mjs +327 -0
- package/utils/entitlementLicenseKey/types.d.mts +1 -0
- package/utils/entitlementLicenseKey/types.d.ts +84 -0
- package/utils/entitlementLicenseKey/types.js +8 -0
- package/utils/entitlementLicenseKey/types.mjs +10 -0
- package/utils/ghostTable.d.ts +1 -0
- package/utils/ghostTable.js +60 -11
- package/utils/ghostTable.mjs +60 -11
- package/utils/licenseBranding/badge.d.mts +1 -0
- package/utils/licenseBranding/badge.d.ts +21 -0
- package/utils/licenseBranding/badge.js +237 -0
- package/utils/licenseBranding/badge.mjs +244 -0
- package/utils/licenseBranding/content.d.mts +1 -0
- package/utils/licenseBranding/content.d.ts +54 -0
- package/utils/licenseBranding/content.js +93 -0
- package/utils/licenseBranding/content.mjs +79 -0
- package/utils/licenseBranding/index.d.mts +1 -0
- package/utils/licenseBranding/index.d.ts +14 -0
- package/utils/licenseBranding/index.js +55 -0
- package/utils/licenseBranding/index.mjs +56 -0
- package/utils/licenseBranding/lockScreen.d.mts +1 -0
- package/utils/licenseBranding/lockScreen.d.ts +23 -0
- package/utils/licenseBranding/lockScreen.js +150 -0
- package/utils/licenseBranding/lockScreen.mjs +159 -0
- package/utils/licenseNotification.d.ts +19 -0
- package/utils/licenseNotification.js +56 -29
- package/utils/licenseNotification.mjs +61 -29
- package/utils/movableMeta.d.mts +1 -0
- package/utils/movableMeta.d.ts +40 -0
- package/utils/movableMeta.js +47 -0
- package/utils/movableMeta.mjs +46 -0
- package/utils/parseTable.js +16 -7
- package/utils/parseTable.mjs +16 -7
- package/utils/samplesGenerator.d.ts +41 -14
- package/utils/samplesGenerator.js +114 -42
- package/utils/samplesGenerator.mjs +114 -42
- package/utils/sanitizer.d.mts +1 -0
- package/utils/sanitizer.d.ts +47 -0
- package/utils/sanitizer.js +43 -0
- package/utils/sanitizer.mjs +55 -0
- package/utils/stylesHandler.d.ts +13 -0
- package/utils/stylesHandler.js +55 -2
- package/utils/stylesHandler.mjs +55 -2
- package/validators/autocompleteValidator/autocompleteValidator.js +3 -0
- package/validators/autocompleteValidator/autocompleteValidator.mjs +3 -0
- package/validators/index.d.ts +3 -2
- package/validators/index.js +8 -0
- package/validators/index.mjs +3 -1
- package/validators/intlDatetimeValidator/index.d.mts +1 -0
- package/validators/intlDatetimeValidator/index.d.ts +1 -0
- package/validators/intlDatetimeValidator/index.js +25 -0
- package/validators/intlDatetimeValidator/index.mjs +1 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.d.mts +1 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.d.ts +28 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.js +49 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.mjs +37 -0
- package/3rdparty/walkontable/src/overlay/bottom.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/top.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.d.mts +0 -1
- package/3rdparty/walkontable/src/overlays.d.ts +0 -329
- package/3rdparty/walkontable/src/overlays.js +0 -870
- package/3rdparty/walkontable/src/overlays.mjs +0 -860
- package/3rdparty/walkontable/src/renderer/table.d.mts +0 -1
- package/3rdparty/walkontable/src/renderer/table.js +0 -229
- package/3rdparty/walkontable/src/settings.d.mts +0 -2
- package/3rdparty/walkontable/src/settings.js +0 -196
- package/3rdparty/walkontable/src/settings.mjs +0 -263
- package/3rdparty/walkontable/src/table/bottom.d.mts +0 -2
- package/3rdparty/walkontable/src/table/bottom.d.ts +0 -19
- package/3rdparty/walkontable/src/table/bottom.js +0 -38
- package/3rdparty/walkontable/src/table/bottom.mjs +0 -23
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.mts +0 -2
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.ts +0 -20
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +0 -24
- package/3rdparty/walkontable/src/table/inlineStart.d.mts +0 -2
- package/3rdparty/walkontable/src/table/inlineStart.d.ts +0 -16
- package/3rdparty/walkontable/src/table/inlineStart.js +0 -35
- package/3rdparty/walkontable/src/table/inlineStart.mjs +0 -20
- package/3rdparty/walkontable/src/table/master.d.mts +0 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.mts +0 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.ts +0 -75
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -122
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -112
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.mts +0 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.ts +0 -75
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -122
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -112
- package/3rdparty/walkontable/src/table/top.d.mts +0 -2
- package/3rdparty/walkontable/src/table/top.d.ts +0 -19
- package/3rdparty/walkontable/src/table/top.js +0 -38
- package/3rdparty/walkontable/src/table/top.mjs +0 -23
- package/3rdparty/walkontable/src/table/topInlineStartCorner.d.mts +0 -2
- package/3rdparty/walkontable/src/table/topInlineStartCorner.d.ts +0 -20
- package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +0 -24
- package/3rdparty/walkontable/src/table.d.mts +0 -2
- package/3rdparty/walkontable/src/table.d.ts +0 -741
- package/3rdparty/walkontable/src/table.js +0 -1120
- package/3rdparty/walkontable/src/table.mjs +0 -1105
- package/3rdparty/walkontable/src/utils/cellCoords.d.mts +0 -1
- package/3rdparty/walkontable/src/utils/cellCoords.js +0 -54
- package/3rdparty/walkontable/src/utils/cellCoords.mjs +0 -54
- package/3rdparty/walkontable/src/utils/column.d.mts +0 -2
- package/3rdparty/walkontable/src/utils/column.js +0 -75
- package/3rdparty/walkontable/src/utils/column.mjs +0 -70
- package/3rdparty/walkontable/src/utils/positionCache.d.mts +0 -1
- package/3rdparty/walkontable/src/utils/positionCache.d.ts +0 -91
- package/3rdparty/walkontable/src/utils/positionCache.js +0 -193
- package/3rdparty/walkontable/src/utils/positionCache.mjs +0 -194
- package/3rdparty/walkontable/src/utils/row.d.mts +0 -2
- package/3rdparty/walkontable/src/utils/row.js +0 -46
- package/3rdparty/walkontable/src/utils/row.mjs +0 -41
- package/3rdparty/walkontable/src/viewport.d.ts +0 -254
- package/3rdparty/walkontable/src/viewport.js +0 -533
- package/3rdparty/walkontable/src/viewport.mjs +0 -523
- /package/3rdparty/walkontable/src/{renderer → axisSizing/positionCache}/index.d.mts +0 -0
- /package/3rdparty/walkontable/src/{overlays.d.mts → overlay/overlays.d.mts} +0 -0
- /package/3rdparty/walkontable/src/overlay/{_base.d.mts → regions/_base.d.mts} +0 -0
- /package/3rdparty/walkontable/src/{stickyScrollStrategy.d.mts → overlay/strategies/stickyScrollStrategy.d.mts} +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/_base.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/_base.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/_base.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/cells.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/cells.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rows.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rows.d.ts +0 -0
- /package/3rdparty/walkontable/src/{scroll.d.mts → scroll/scroll.d.mts} +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.mts +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.mts +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.js +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.mjs +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.mts +0 -0
- /package/3rdparty/walkontable/src/{viewport.d.mts → viewport/viewport.d.mts} +0 -0
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-render row / column-header measurement for `Table` and every subclass.
|
|
3
|
+
*
|
|
4
|
+
* These read the rendered DOM back after a draw to discover content-driven sizes that exceed the
|
|
5
|
+
* provided ones: `markOversizedRows` records rows taller than their configured height into
|
|
6
|
+
* `wtViewport.oversizedRows`, `adjustColumnHeaderHeights` applies the provided header heights to the
|
|
7
|
+
* THEAD rows, and `syncOversizedColumnHeadersWithFrozenOverlays` keeps the frozen-overlay headers
|
|
8
|
+
* pixel-aligned with the master. They are universal — every table type participates in the draw —
|
|
9
|
+
* so they are free functions over a `Table` instance (the same pattern as the draw-cycle phase
|
|
10
|
+
* helpers in `table/drawCycle.ts`), reading the table's public fields (`THEAD`/`TBODY`/`rowFilter`/
|
|
11
|
+
* `wtSettings`/`isMaster`) and the geometry-read port + the overlays/viewport owners via the `deps`
|
|
12
|
+
* getter. They belong to the `axisSizing` slice: together with `positionCache/` and
|
|
13
|
+
* `sizeGetters.ts` they own the "how tall is a row really" answer.
|
|
14
|
+
*/ import { isHTMLElement } from '../../../../helpers/dom/element.mjs';
|
|
15
|
+
import { CLONE_BOTTOM } from '../overlay/index.mjs';
|
|
16
|
+
import { getBoxAdjustedRowHeight } from './boxModel.mjs';
|
|
17
|
+
/**
|
|
18
|
+
* Applies the provided column-header heights to the rendered THEAD rows. The provided height comes
|
|
19
|
+
* from the `columnHeaderHeight` setting funnel (the option, the `modifyColumnHeaderHeight` hook that
|
|
20
|
+
* AutoRowSize feeds, and the Handsontable-side render-size probe for content-driven headers). It is
|
|
21
|
+
* written as `min-height`, never `height`, so a header whose real content is taller (a wrapped or
|
|
22
|
+
* frozen-region header) is not clipped - it still expands to its content, which the frozen-overlay
|
|
23
|
+
* sync then reads. Runs on the master and every clone so all overlays get the same floor.
|
|
24
|
+
*
|
|
25
|
+
* @param {Table} table The table (master or clone) whose THEAD rows receive the heights.
|
|
26
|
+
*/ export function adjustColumnHeaderHeights(table) {
|
|
27
|
+
const { wtSettings } = table;
|
|
28
|
+
const children = table.THEAD.childNodes;
|
|
29
|
+
const defaultRowHeight = wtSettings.getSetting('stylesHandler').getDefaultRowHeight();
|
|
30
|
+
const columnHeaders = wtSettings.getSetting('columnHeaders');
|
|
31
|
+
for(let i = 0, len = columnHeaders.length; i < len; i++){
|
|
32
|
+
const headerHeight = table.getColumnHeaderHeight(i);
|
|
33
|
+
if (headerHeight > defaultRowHeight) {
|
|
34
|
+
if (!children[i] || children[i].childNodes.length === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const firstChild = children[i].childNodes[0];
|
|
38
|
+
if (isHTMLElement(firstChild)) {
|
|
39
|
+
firstChild.style.height = `${headerHeight}px`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Frozen column headers (e.g., with `white-space: normal`) are rendered only in the frozen
|
|
46
|
+
* overlays, never in the master table's THEAD. When such a header is taller than the headers
|
|
47
|
+
* of the scrollable columns, the master and top overlay THEADs render shorter than the corner
|
|
48
|
+
* and inline-start overlays, so the frozen overlay body rows sit shifted against the master.
|
|
49
|
+
* The gap can be sub-pixel: under browser zoom the frozen header content is a fraction of a
|
|
50
|
+
* pixel taller than the applied height, and that fraction accumulates into a visible 1px shift.
|
|
51
|
+
*
|
|
52
|
+
* This function runs after the frozen overlays have rendered. It reads the corner overlay's
|
|
53
|
+
* content-driven THEAD row heights with sub-pixel precision and forces the matching master and
|
|
54
|
+
* top overlay header cells to the same height so every overlay THEAD ends up the same height
|
|
55
|
+
* and the body rows stay pixel-aligned.
|
|
56
|
+
*
|
|
57
|
+
* It deliberately does NOT write to `wtViewport.oversizedColumnHeaders`. That cache is applied
|
|
58
|
+
* back to the corner overlay on the next render; growing it here would inflate the corner cell,
|
|
59
|
+
* which would then be re-measured taller, ratcheting the height up every render. Reading the
|
|
60
|
+
* corner's natural (content-driven) height and only adjusting the master/top side keeps the
|
|
61
|
+
* synchronization stable and lets the header shrink again when the content allows.
|
|
62
|
+
*
|
|
63
|
+
* @param {Table} table The master table.
|
|
64
|
+
*/ export function syncOversizedColumnHeadersWithFrozenOverlays(table) {
|
|
65
|
+
const wtOverlays = table.deps.getWtOverlays();
|
|
66
|
+
// Cheapest possible bail-out first: with no frozen columns the corner overlay is not cloned,
|
|
67
|
+
// so the overwhelmingly common (non-frozen) grids pay only a couple of property reads per draw.
|
|
68
|
+
const cornerClone = wtOverlays.topInlineStartCornerOverlay?.clone;
|
|
69
|
+
if (!cornerClone?.wtTable?.THEAD) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const columnHeaders = table.wtSettings.getSetting('columnHeaders');
|
|
73
|
+
if (!columnHeaders.length) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const cornerChildren = cornerClone.wtTable.THEAD.childNodes;
|
|
77
|
+
const topClone = wtOverlays.topOverlay?.clone;
|
|
78
|
+
const targetTheads = [
|
|
79
|
+
table.THEAD,
|
|
80
|
+
topClone?.wtTable?.THEAD
|
|
81
|
+
];
|
|
82
|
+
// Sub-pixel tolerance to avoid rewriting heights on floating-point jitter while still
|
|
83
|
+
// catching the fractional gaps (e.g. ~0.33px at 75% zoom) that read as a 1px shift.
|
|
84
|
+
const epsilon = 0.1;
|
|
85
|
+
for(let i = 0, len = columnHeaders.length; i < len; i++){
|
|
86
|
+
const cornerChild = cornerChildren[i];
|
|
87
|
+
if (!isHTMLElement(cornerChild)) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const cornerRowHeight = table.deps.geometryReader.getBoundingClientRect(cornerChild).height;
|
|
91
|
+
targetTheads.forEach((thead)=>{
|
|
92
|
+
const targetRow = thead?.childNodes[i];
|
|
93
|
+
if (!isHTMLElement(targetRow) || targetRow.childNodes.length === 0) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const firstChild = targetRow.childNodes[0];
|
|
97
|
+
if (!isHTMLElement(firstChild)) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const targetRowHeight = table.deps.geometryReader.getBoundingClientRect(targetRow).height;
|
|
101
|
+
if (Math.abs(targetRowHeight - cornerRowHeight) > epsilon) {
|
|
102
|
+
firstChild.style.height = `${cornerRowHeight}px`;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Re-applies the effective row heights to one table's already-rendered rows.
|
|
109
|
+
*
|
|
110
|
+
* Mirrors the final pass of `TableRenderer#render` (`render/tableRenderer.ts`), which writes the same
|
|
111
|
+
* value onto the row's first cell while rendering. This is the out-of-render path, for a height that
|
|
112
|
+
* became known only after this table had rendered.
|
|
113
|
+
*
|
|
114
|
+
* @param {Table} table The table (master or clone) whose rendered rows are re-sized.
|
|
115
|
+
*/ function applyRowHeightsToRenderedRows(table) {
|
|
116
|
+
const { TBODY, rowFilter } = table;
|
|
117
|
+
if (!TBODY || !rowFilter) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const borderBoxSizing = table.wtSettings.getSetting('stylesHandler').areCellsBorderBox();
|
|
121
|
+
const renderedRows = TBODY.childNodes;
|
|
122
|
+
for(let renderedRowIndex = 0; renderedRowIndex < renderedRows.length; renderedRowIndex++){
|
|
123
|
+
const firstChild = renderedRows[renderedRowIndex].firstChild;
|
|
124
|
+
if (!isHTMLElement(firstChild)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const sourceRowIndex = rowFilter.renderedToSource(renderedRowIndex);
|
|
128
|
+
const rowHeight = table.rowUtils.getHeightByOverlayName(sourceRowIndex, table.name);
|
|
129
|
+
firstChild.style.height = rowHeight ? `${getBoxAdjustedRowHeight(rowHeight, borderBoxSizing)}px` : '';
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Whether this draw needs the frozen-column row-height sync at all: only when frozen columns exist
|
|
134
|
+
* AND the master's rendered band starts past column 0, so at least one frozen column is rendered by
|
|
135
|
+
* the inline-start overlays and by nothing else. AutoRowSize (`externalRowCalculator`) owns every
|
|
136
|
+
* row height when it is on, and `markOversizedRows` is a no-op then.
|
|
137
|
+
*
|
|
138
|
+
* Called twice per draw, deliberately at two different moments, and they CAN disagree: the draw
|
|
139
|
+
* cycle asks before the master renders (so `resetOversizedRows` knows whether the frozen-derived
|
|
140
|
+
* records are still being maintained), which reads the band of the PREVIOUS draw; the sync asks
|
|
141
|
+
* after, on this draw's band. Each wants the answer as of its own moment, and the disagreement is
|
|
142
|
+
* the horizontal-scroll transition into or out of the frozen columns, which settles in one draw:
|
|
143
|
+
* entering, the sync records the frozen heights the master could not; leaving, the released records
|
|
144
|
+
* are re-measured by a master that now renders those columns itself.
|
|
145
|
+
*
|
|
146
|
+
* @param {Table} table The master table.
|
|
147
|
+
* @returns {boolean}
|
|
148
|
+
*/ export function shouldSyncOversizedRowsWithFrozenOverlays(table) {
|
|
149
|
+
const { wtSettings } = table;
|
|
150
|
+
return !wtSettings.getSetting('externalRowCalculator') && !!wtSettings.getSetting('fixedColumnsStart') && table.getFirstRenderedColumn() > 0;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* A row whose tallest content sits in a frozen (inline-start) column is rendered at that height only
|
|
154
|
+
* by the frozen overlays. The master renders a contiguous column band starting at the column under
|
|
155
|
+
* the horizontal scroll offset, so as soon as that band starts past column 0 the master never renders
|
|
156
|
+
* the frozen columns — and `markOversizedRows` measures the master. Left alone, the row would be
|
|
157
|
+
* recorded at its provided height while the frozen overlays render it at its content height, and
|
|
158
|
+
* every row below it would drift by the difference.
|
|
159
|
+
*
|
|
160
|
+
* This runs after the frozen overlays have rendered, and is the row-height twin of
|
|
161
|
+
* `syncOversizedColumnHeadersWithFrozenOverlays`. It measures all three tables that render frozen
|
|
162
|
+
* columns — the inline-start clone, which mirrors the master's row band, and the two corners, which
|
|
163
|
+
* hold the frozen top and bottom rows the inline-start clone does not — then re-applies the resulting
|
|
164
|
+
* heights to the tables that render those rows WITHOUT the frozen columns.
|
|
165
|
+
*
|
|
166
|
+
* Re-measuring cannot ratchet: `resetFrozenOversizedRows` cleared these rows' records moments ago,
|
|
167
|
+
* after the master rendered but before the frozen overlays did, so they rendered at their natural
|
|
168
|
+
* content height. A frozen cell that shrank back is measured smaller and recorded smaller.
|
|
169
|
+
*
|
|
170
|
+
* @param {Table} table The master table.
|
|
171
|
+
* @param {Map<number, number>} [wipedFrozenRows] The heights `resetFrozenOversizedRows` cleared, so
|
|
172
|
+
* an unchanged row is not mistaken for a new one (which would invalidate the row-height cache on
|
|
173
|
+
* every draw — a full prefix-sum walk when the row-size source is non-uniform).
|
|
174
|
+
* @returns {boolean} `true` when this draw's row heights are no longer the ones the viewport
|
|
175
|
+
* calculators were built from, so the caller must rebuild them. An ordinary oversized row gets
|
|
176
|
+
* this for free — the master invalidates inside `renderCellBand`, which is BEFORE the calculators
|
|
177
|
+
* are computed — but a frozen-derived height is only knowable after the frozen overlays have
|
|
178
|
+
* rendered, which is after. Without the rebuild the frame reports a visible row range measured
|
|
179
|
+
* against the old heights.
|
|
180
|
+
*/ export function syncOversizedRowsWithFrozenOverlays(table, wipedFrozenRows) {
|
|
181
|
+
const wtOverlays = table.deps.getWtOverlays();
|
|
182
|
+
// Cheapest question first — three settings reads — so a grid with no frozen columns never pays
|
|
183
|
+
// for the overlay lookups and the list build below.
|
|
184
|
+
const shouldSync = shouldSyncOversizedRowsWithFrozenOverlays(table);
|
|
185
|
+
// Only overlays that actually rendered their band in THIS draw may be measured. `Overlay#refresh`
|
|
186
|
+
// is a no-op when `needFullRender` is false, and a skipped clone still owns the DOM of whatever it
|
|
187
|
+
// rendered last — measuring that would record a previous draw's heights and mark them
|
|
188
|
+
// frozen-derived. The master's own pass has this guarantee structurally (`renderCellBand` measures
|
|
189
|
+
// only the table it just rendered); here it has to be asked for.
|
|
190
|
+
const frozenTables = shouldSync ? [
|
|
191
|
+
wtOverlays.inlineStartOverlay,
|
|
192
|
+
wtOverlays.topInlineStartCornerOverlay,
|
|
193
|
+
wtOverlays.bottomInlineStartCornerOverlay
|
|
194
|
+
].filter((overlay)=>overlay?.needFullRender).map((overlay)=>overlay?.clone?.wtTable).filter((frozenTable)=>!!frozenTable?.TBODY) : [];
|
|
195
|
+
const settleWipedRows = ()=>{
|
|
196
|
+
// Rows nothing re-detected shrank back to their provided height.
|
|
197
|
+
if (wipedFrozenRows !== undefined && wipedFrozenRows.size > 0) {
|
|
198
|
+
table.deps.getWtViewport().invalidateRowHeightCache();
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
return false;
|
|
202
|
+
};
|
|
203
|
+
// Drops a row-height cache that was built while the frozen-derived records were cleared, i.e.
|
|
204
|
+
// missing every one of their heights. The bottom clone reaches this: it renders and measures
|
|
205
|
+
// inside `wtOverlays.refresh()`, so an invalidation of its own lands mid-window and the next
|
|
206
|
+
// read rebuilds from an `oversizedRows` the frozen rows are not in yet. Nothing else would ever
|
|
207
|
+
// correct it — the records come back unchanged, so no invalidation follows them — and the result
|
|
208
|
+
// is a scrollbar too short to reach the end of the grid with every rendered row still correct.
|
|
209
|
+
//
|
|
210
|
+
// Must run AFTER the records are back, so whatever rebuilds next sees them.
|
|
211
|
+
const dropStaleRowCacheBuild = ()=>{
|
|
212
|
+
const wtViewport = table.deps.getWtViewport();
|
|
213
|
+
if (wipedFrozenRows === undefined || wtViewport.rowHeightCache.buildSeq === wtViewport.frozenClearRowCacheBuildSeq) {
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
wtViewport.invalidateRowHeightCache();
|
|
217
|
+
return true;
|
|
218
|
+
};
|
|
219
|
+
if (!shouldSync || frozenTables.length === 0) {
|
|
220
|
+
// `settleWipedRows` first: it invalidates too, and both must be evaluated.
|
|
221
|
+
const settled = settleWipedRows();
|
|
222
|
+
if (dropStaleRowCacheBuild() || settled) {
|
|
223
|
+
// The heights changed after `wtOverlays.refresh()` sized the elements for this draw.
|
|
224
|
+
wtOverlays.adjustElementsSize();
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
// Exactly the rows these tables measured taller than what was already known — i.e. the heights
|
|
230
|
+
// that came from a frozen column. A row that is tall for a reason the master renders is NOT in
|
|
231
|
+
// here, and must not be: the frozen overlays could never re-detect it, so marking it
|
|
232
|
+
// frozen-derived would make the next draw read it as shrunk and drop it.
|
|
233
|
+
const recordedRows = new Set();
|
|
234
|
+
let heightsChanged = false;
|
|
235
|
+
frozenTables.forEach((frozenTable)=>{
|
|
236
|
+
// `deferShrinkDetection`: each table sees only its own slice of the band, so a record it cannot
|
|
237
|
+
// re-detect may simply belong to one of the others. `settleWipedRows` concludes once, below.
|
|
238
|
+
heightsChanged = markOversizedRows(frozenTable, wipedFrozenRows, {
|
|
239
|
+
deferShrinkDetection: true,
|
|
240
|
+
recordedRows
|
|
241
|
+
}) || heightsChanged;
|
|
242
|
+
});
|
|
243
|
+
const { frozenOversizedRows } = table.deps.getWtViewport();
|
|
244
|
+
recordedRows.forEach((sourceRow)=>frozenOversizedRows.add(sourceRow));
|
|
245
|
+
heightsChanged = settleWipedRows() || heightsChanged;
|
|
246
|
+
// The records are back, so a rebuild from here on is complete. Evaluated on its own line rather
|
|
247
|
+
// than folded into `heightsChanged`: a stale build needs the elements re-sized, but none of the
|
|
248
|
+
// per-row height re-writes that a genuine height change needs.
|
|
249
|
+
const hadStaleRowCacheBuild = dropStaleRowCacheBuild();
|
|
250
|
+
// The top and bottom clones render inside `wtOverlays.refresh()` — AFTER
|
|
251
|
+
// `resetFrozenOversizedRows` cleared the records — so they need the correction on every draw that
|
|
252
|
+
// has one. (With no frozen rows configured these clones carry no body rows, so this costs nothing
|
|
253
|
+
// on an ordinary frozen-columns grid.)
|
|
254
|
+
//
|
|
255
|
+
// In steady state the master is deliberately NOT here: it rendered BEFORE the clear, so it already
|
|
256
|
+
// has the right heights, and re-writing every row each draw would be a per-row DOM write for
|
|
257
|
+
// nothing.
|
|
258
|
+
// The frozen tables are here for the same reason: they rendered AFTER the clear, so at their
|
|
259
|
+
// natural height — which is not the recorded height for a row sitting at the band boundary, where
|
|
260
|
+
// the first <tr> adds 1px of border on top of its content. The master rendered before the clear,
|
|
261
|
+
// with the record, so it does not have that pixel; leaving the two as rendered puts them 1px apart
|
|
262
|
+
// and every row below with them, intermittently, as the boundary moves. Writing to them cannot
|
|
263
|
+
// ratchet — the next draw clears the records and re-renders them before measuring again.
|
|
264
|
+
const reapplyTargets = [
|
|
265
|
+
wtOverlays.topOverlay?.clone?.wtTable,
|
|
266
|
+
wtOverlays.bottomOverlay?.clone?.wtTable,
|
|
267
|
+
...frozenTables
|
|
268
|
+
];
|
|
269
|
+
if (heightsChanged) {
|
|
270
|
+
// A frozen height appeared or disappeared. Release the master first: one that just went away is
|
|
271
|
+
// still forced onto its rows. Then re-measure it — the row may STILL be tall for a reason the
|
|
272
|
+
// master renders, which its own pass earlier in this draw could not see because at that point it
|
|
273
|
+
// was measuring the frozen height. Without this the row collapses to the frozen overlays' short
|
|
274
|
+
// natural height while the master keeps its own tall content, i.e. the very misalignment this
|
|
275
|
+
// whole sync exists to prevent.
|
|
276
|
+
applyRowHeightsToRenderedRows(table);
|
|
277
|
+
const masterRecordedRows = new Set();
|
|
278
|
+
markOversizedRows(table, undefined, {
|
|
279
|
+
recordedRows: masterRecordedRows
|
|
280
|
+
});
|
|
281
|
+
// Whatever the master just recorded, it out-measured the frozen height — its own content is the
|
|
282
|
+
// taller one, so the record is the master's to own and hand back. Leaving it marked
|
|
283
|
+
// frozen-derived costs nothing visible and never settles: the next draw's
|
|
284
|
+
// `resetFrozenOversizedRows` clears a height only the master can recreate, the frozen pass
|
|
285
|
+
// re-records its own shorter one, the master out-measures it again, and both invalidate the
|
|
286
|
+
// row-height cache on every draw for as long as both cells stay oversized.
|
|
287
|
+
masterRecordedRows.forEach((sourceRow)=>frozenOversizedRows.delete(sourceRow));
|
|
288
|
+
// The master joins the re-apply only if that re-measure actually recorded something; otherwise
|
|
289
|
+
// the release above already left it at the right height, and a second full pass over its rows
|
|
290
|
+
// would write every one of them for nothing.
|
|
291
|
+
if (masterRecordedRows.size > 0) {
|
|
292
|
+
reapplyTargets.push(table);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (recordedRows.size > 0 || heightsChanged) {
|
|
296
|
+
// The master joins on any draw that has a frozen record, not only a changed one. The record is
|
|
297
|
+
// whatever the frozen overlay just measured, and at the band boundary that is 1px more than the
|
|
298
|
+
// master rendered with — a difference the cache-invalidation tolerance deliberately ignores, so
|
|
299
|
+
// nothing else would bring the two together. Re-applying cannot ratchet: it writes the record,
|
|
300
|
+
// it does not measure.
|
|
301
|
+
if (!reapplyTargets.includes(table)) {
|
|
302
|
+
reapplyTargets.push(table);
|
|
303
|
+
}
|
|
304
|
+
reapplyTargets.forEach((target)=>{
|
|
305
|
+
if (target) {
|
|
306
|
+
applyRowHeightsToRenderedRows(target);
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
if (heightsChanged || hadStaleRowCacheBuild) {
|
|
311
|
+
// The summed row heights behind the scrollbar changed after `wtOverlays.refresh()` sized the
|
|
312
|
+
// elements for this draw, so that sizing is stale. Gated on a real change: `adjustElementsSize`
|
|
313
|
+
// walks every column (`sumCellSizes` must stay a live walk) and resizes three overlays.
|
|
314
|
+
wtOverlays.adjustElementsSize();
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Resets cache of row heights. The cache should be cached for each render cycle in a case
|
|
321
|
+
* when new cell values have content which increases/decreases cell height.
|
|
322
|
+
*
|
|
323
|
+
* Returns the wiped `oversizedRows` records of the rendered band, so `markOversizedRows` can
|
|
324
|
+
* tell a re-detected UNCHANGED height (no row-height cache invalidation needed) from a genuine
|
|
325
|
+
* change. Keys are deleted, not set to `undefined`, so the row-height cache's uniform fast path
|
|
326
|
+
* can re-engage once no oversized records remain.
|
|
327
|
+
*
|
|
328
|
+
* @param {Table} table The table (master or bottom clone) whose rendered band is reset.
|
|
329
|
+
* @returns {Map<number, number>|undefined} The previous oversized heights of the rendered band,
|
|
330
|
+
* keyed by source row index, or `undefined` when this table does not measure oversized rows.
|
|
331
|
+
*/ export function resetOversizedRows(table) {
|
|
332
|
+
const { wtSettings } = table;
|
|
333
|
+
const wtViewport = table.deps.getWtViewport();
|
|
334
|
+
if (!table.isMaster && !table.is(CLONE_BOTTOM)) {
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
if (wtSettings.getSetting('externalRowCalculator')) {
|
|
338
|
+
return undefined;
|
|
339
|
+
}
|
|
340
|
+
const rowsToRender = table.getRenderedRowsCount();
|
|
341
|
+
const wipedOversizedRows = new Map();
|
|
342
|
+
// Reset the oversized row cache for rendered rows
|
|
343
|
+
for(let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++){
|
|
344
|
+
const sourceRow = table.rowFilter.renderedToSource(visibleRowIndex);
|
|
345
|
+
const previousHeight = wtViewport.oversizedRows?.[sourceRow];
|
|
346
|
+
// A frozen-derived record is exempt: this table does not render the column the height came from,
|
|
347
|
+
// so it could not put the record back, and the row-height cache and the viewport calculators are
|
|
348
|
+
// both built from this map before the frozen overlays have even rendered.
|
|
349
|
+
// `resetFrozenOversizedRows` clears these later in the draw instead.
|
|
350
|
+
if (previousHeight && !wtViewport.frozenOversizedRows.has(sourceRow)) {
|
|
351
|
+
wipedOversizedRows.set(sourceRow, previousHeight);
|
|
352
|
+
delete wtViewport.oversizedRows[sourceRow];
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return wipedOversizedRows;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Clears the frozen-derived oversized-row records that this draw is about to re-measure, and returns
|
|
359
|
+
* their previous heights so the frozen sync can tell an unchanged row from a changed one.
|
|
360
|
+
*
|
|
361
|
+
* Timing is the whole point. This runs in the seam between the master's render and the frozen
|
|
362
|
+
* overlays' — after the master rendered (so it used the correct, still-recorded heights, and no row
|
|
363
|
+
* drifts on this frame), after the row-height cache and the viewport calculators were built from
|
|
364
|
+
* them, and before the inline-start overlays render, so those render at their natural content height
|
|
365
|
+
* and stay re-measurable rather than being forced to the cached height and ratcheting.
|
|
366
|
+
*
|
|
367
|
+
* Only the rows this draw will re-measure are cleared: the master's rendered band (which the
|
|
368
|
+
* inline-start clone mirrors) plus the frozen top and bottom rows (which the corner overlays hold).
|
|
369
|
+
* A frozen-derived record for any other row is left alone — nothing would put it back, and the
|
|
370
|
+
* summed row heights behind the scrollbar need it.
|
|
371
|
+
*
|
|
372
|
+
* @param {Table} table The master table.
|
|
373
|
+
* @returns {Map<number, number>|undefined} The cleared heights by source row, or `undefined` when
|
|
374
|
+
* there was nothing recorded.
|
|
375
|
+
*/ export function resetFrozenOversizedRows(table) {
|
|
376
|
+
const wtViewport = table.deps.getWtViewport();
|
|
377
|
+
const { frozenOversizedRows } = wtViewport;
|
|
378
|
+
if (frozenOversizedRows.size === 0) {
|
|
379
|
+
return undefined;
|
|
380
|
+
}
|
|
381
|
+
// The window where `oversizedRows` is short of every frozen-derived height opens here. Anything
|
|
382
|
+
// that builds the row-height cache before the sync closes it gets a prefix sum missing them all.
|
|
383
|
+
wtViewport.frozenClearRowCacheBuildSeq = wtViewport.rowHeightCache.buildSeq;
|
|
384
|
+
const { wtSettings } = table;
|
|
385
|
+
const wipedRows = new Map();
|
|
386
|
+
const clear = (sourceRow)=>{
|
|
387
|
+
if (!frozenOversizedRows.has(sourceRow)) {
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
const previousHeight = wtViewport.oversizedRows[sourceRow];
|
|
391
|
+
if (previousHeight !== undefined) {
|
|
392
|
+
wipedRows.set(sourceRow, previousHeight);
|
|
393
|
+
}
|
|
394
|
+
delete wtViewport.oversizedRows[sourceRow];
|
|
395
|
+
frozenOversizedRows.delete(sourceRow);
|
|
396
|
+
};
|
|
397
|
+
const rowsToRender = table.getRenderedRowsCount();
|
|
398
|
+
for(let renderedRowIndex = 0; renderedRowIndex < rowsToRender; renderedRowIndex++){
|
|
399
|
+
clear(table.rowFilter.renderedToSource(renderedRowIndex));
|
|
400
|
+
}
|
|
401
|
+
const totalRows = wtSettings.getSetting('totalRows');
|
|
402
|
+
const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
|
|
403
|
+
const fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
|
|
404
|
+
for(let row = 0; row < fixedRowsTop; row++){
|
|
405
|
+
clear(row);
|
|
406
|
+
}
|
|
407
|
+
for(let row = Math.max(0, totalRows - fixedRowsBottom); row < totalRows; row++){
|
|
408
|
+
clear(row);
|
|
409
|
+
}
|
|
410
|
+
return wipedRows;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Check if any of the rendered rows is higher than expected, and if so, cache them.
|
|
414
|
+
*
|
|
415
|
+
* The row-height position cache is invalidated only when the measured heights genuinely differ
|
|
416
|
+
* from the records `resetOversizedRows` wiped before this render: a new oversized row, a changed
|
|
417
|
+
* height, or a previously oversized row that shrank back. A steady-state redraw of the same tall
|
|
418
|
+
* rows re-records the same values and keeps the cache intact, avoiding an O(totalRows) prefix-sum
|
|
419
|
+
* rebuild on every full draw.
|
|
420
|
+
*
|
|
421
|
+
* @param {Table} table The table (master or bottom clone) whose rendered rows are measured.
|
|
422
|
+
* @param {Map<number, number>} [wipedOversizedRows] The oversized heights recorded before this
|
|
423
|
+
* render, as returned by `resetOversizedRows`.
|
|
424
|
+
* @param {object} [frozenPass] Options used only by the frozen-column row sync.
|
|
425
|
+
* @param {boolean} [frozenPass.deferShrinkDetection=false] When `true`, a wiped record this table could not
|
|
426
|
+
* re-detect is NOT treated as a shrunk row. The master passes this when the frozen-column row
|
|
427
|
+
* sync runs later in the same draw: those records belong to rows whose tall content lives only in
|
|
428
|
+
* the inline-start clone, so only that pass can tell "shrank back" from "the master never renders
|
|
429
|
+
* it". Without the deferral a steady-state redraw would invalidate the row-height cache twice per
|
|
430
|
+
* draw — and with a non-uniform row-size source each invalidation costs a full prefix-sum walk.
|
|
431
|
+
* The caller keeps the map and must settle whatever is left in it.
|
|
432
|
+
* @param {Set<number>} [frozenPass.recordedRows] Filled with the source index of every row this call recorded.
|
|
433
|
+
* The frozen sync marks exactly these as frozen-derived — a row that is oversized for a reason the
|
|
434
|
+
* MASTER can see is not recorded here (the measured height does not exceed what is already known),
|
|
435
|
+
* and must stay the master's to own. Adopting it would be fatal: the frozen overlays cannot
|
|
436
|
+
* re-detect a height they never saw, so it would read as "shrank" on the next draw.
|
|
437
|
+
* @returns {boolean} `true` when this call invalidated the row-height cache. The frozen-column row
|
|
438
|
+
* sync reads it: an invalidation there lands AFTER `wtOverlays.refresh()` sized the overlay
|
|
439
|
+
* elements for the draw, so it has to re-size them.
|
|
440
|
+
*/ export function markOversizedRows(table, wipedOversizedRows, { deferShrinkDetection = false, recordedRows } = {}) {
|
|
441
|
+
if (table.wtSettings.getSetting('externalRowCalculator')) {
|
|
442
|
+
return false;
|
|
443
|
+
}
|
|
444
|
+
let rowCount = table.TBODY.childNodes.length;
|
|
445
|
+
const stylesHandler = table.wtSettings.getSetting('stylesHandler');
|
|
446
|
+
const expectedTableHeight = rowCount * stylesHandler.getDefaultRowHeight();
|
|
447
|
+
const actualTableHeight = table.deps.geometryReader.innerHeight(table.TBODY) - 1;
|
|
448
|
+
const borderBoxSizing = stylesHandler.areCellsBorderBox();
|
|
449
|
+
const rowHeightFn = borderBoxSizing ? (element)=>table.deps.geometryReader.outerHeight(element) : (element)=>table.deps.geometryReader.innerHeight(element);
|
|
450
|
+
const borderCompensation = borderBoxSizing ? 0 : 1;
|
|
451
|
+
const firstRowBorderCompensation = borderBoxSizing ? 1 : 0;
|
|
452
|
+
let previousRowHeight;
|
|
453
|
+
let rowCurrentHeight;
|
|
454
|
+
let sourceRowIndex;
|
|
455
|
+
let currentTr;
|
|
456
|
+
let rowHeader;
|
|
457
|
+
if (expectedTableHeight === actualTableHeight && !table.wtSettings.getSetting('fixedRowsBottom')) {
|
|
458
|
+
// If the actual table height equals rowCount * default single row height, no row is oversized -> no need to iterate over them.
|
|
459
|
+
// Rows that WERE oversized before this render shrank back to the default height, so their
|
|
460
|
+
// cached heights are stale and the row-height cache must still be dropped.
|
|
461
|
+
if (!deferShrinkDetection && wipedOversizedRows !== undefined && wipedOversizedRows.size > 0) {
|
|
462
|
+
table.deps.getWtViewport().invalidateRowHeightCache();
|
|
463
|
+
return true;
|
|
464
|
+
}
|
|
465
|
+
return false;
|
|
466
|
+
}
|
|
467
|
+
const wtViewport = table.deps.getWtViewport();
|
|
468
|
+
let hasChanges = false;
|
|
469
|
+
while(rowCount){
|
|
470
|
+
rowCount -= 1;
|
|
471
|
+
sourceRowIndex = table.rowFilter.renderedToSource(rowCount);
|
|
472
|
+
previousRowHeight = table.getRowHeight(sourceRowIndex);
|
|
473
|
+
currentTr = table.getTrForRow(sourceRowIndex);
|
|
474
|
+
rowHeader = currentTr.querySelector('th');
|
|
475
|
+
// Use the rendered row index (rowCount === 0 is always the first <tr> in this tbody),
|
|
476
|
+
// not the source row index (which would be wrong for clones whose first rendered row
|
|
477
|
+
// has a different source index). Any tbody's first <tr> gets border-top: 1px from the
|
|
478
|
+
// tr:first-child CSS rule, so the compensation applies regardless of source identity.
|
|
479
|
+
const topBorderCompensation = rowCount === 0 ? firstRowBorderCompensation : 0;
|
|
480
|
+
if (rowHeader) {
|
|
481
|
+
rowCurrentHeight = rowHeightFn(rowHeader);
|
|
482
|
+
} else {
|
|
483
|
+
rowCurrentHeight = rowHeightFn(currentTr) - borderCompensation;
|
|
484
|
+
}
|
|
485
|
+
if (!previousRowHeight && stylesHandler.getDefaultRowHeight() < rowCurrentHeight - topBorderCompensation || previousRowHeight !== undefined && previousRowHeight < rowCurrentHeight) {
|
|
486
|
+
if (!borderBoxSizing) {
|
|
487
|
+
rowCurrentHeight += 1;
|
|
488
|
+
}
|
|
489
|
+
wtViewport.oversizedRows[sourceRowIndex] = rowCurrentHeight;
|
|
490
|
+
recordedRows?.add(sourceRowIndex);
|
|
491
|
+
const wipedHeight = wipedOversizedRows?.get(sourceRowIndex);
|
|
492
|
+
// Re-detecting the height that was already recorded before this render is not a change —
|
|
493
|
+
// the row-height cache still holds the correct value. A ±1px difference is the
|
|
494
|
+
// first-rendered-row border compensation flipping as the band boundary moves (the same
|
|
495
|
+
// row measures 1px taller while it is the band's first <tr>, see the `tr:first-child`
|
|
496
|
+
// compensation above); `Viewport#sumRowHeights` re-reads the boundary rows live for
|
|
497
|
+
// exactly this reason, so it is measurement noise, not a content change.
|
|
498
|
+
//
|
|
499
|
+
// This tolerance is load-bearing for PERFORMANCE and must not be tightened: at the boundary
|
|
500
|
+
// the measured value alternates between the two, so counting 1px as a change invalidates the
|
|
501
|
+
// row-height cache on every single draw for as long as the row sits there. The DOM side of the
|
|
502
|
+
// flip is handled separately, by re-applying the current record to every table below.
|
|
503
|
+
if (wipedHeight === undefined || Math.abs(rowCurrentHeight - wipedHeight) > 1) {
|
|
504
|
+
hasChanges = true;
|
|
505
|
+
}
|
|
506
|
+
wipedOversizedRows?.delete(sourceRowIndex);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
// Any wiped record not re-detected above belongs to a row that shrank back to its provided
|
|
510
|
+
// height — a height change, even though no new record was written. Unless the caller deferred:
|
|
511
|
+
// then the leftovers may simply be rows this table does not render, and it settles them.
|
|
512
|
+
if (!deferShrinkDetection && wipedOversizedRows !== undefined && wipedOversizedRows.size > 0) {
|
|
513
|
+
hasChanges = true;
|
|
514
|
+
}
|
|
515
|
+
if (hasChanges) {
|
|
516
|
+
// Go through the Viewport method (not `rowHeightCache.invalidate()` directly) so the per-draw
|
|
517
|
+
// layout snapshot is dropped too — otherwise later snapshot readers in the same draw would use
|
|
518
|
+
// the pre-measurement scrollbar state after the content height changed.
|
|
519
|
+
wtViewport.invalidateRowHeightCache();
|
|
520
|
+
}
|
|
521
|
+
return hasChanges;
|
|
522
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export interface PositionCacheConfig {
|
|
2
|
+
totalItemsFn: () => number;
|
|
3
|
+
sizeFn: (index: number) => number;
|
|
4
|
+
defaultSizeFn: () => number;
|
|
5
|
+
isUniformFn?: () => boolean;
|
|
6
|
+
sparseExceptionsFn?: () => Record<number, number | undefined> | null;
|
|
7
|
+
onBuildFn?: () => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Axis position cache: answers "what pixel offset does item N start at" (and the inverse) for row
|
|
11
|
+
* heights and column widths without a per-question walk over the items.
|
|
12
|
+
*
|
|
13
|
+
* The class itself owns only the LIFECYCLE — when to (re)build, whether the built data is still
|
|
14
|
+
* current, and invalidation. Every lookup is delegated to one of three interchangeable
|
|
15
|
+
* strategies, chosen per build from the configured providers (`./strategy` has the contract):
|
|
16
|
+
*
|
|
17
|
+
* - {@link UniformPositionStrategy} — all items share one size; pure arithmetic, O(1) build.
|
|
18
|
+
* Chosen when `isUniformFn` reports uniform sizes.
|
|
19
|
+
* - {@link SparsePositionStrategy} — a uniform base plus few per-index overrides (e.g. measured
|
|
20
|
+
* oversized rows); O(exceptions) build. Chosen when `sparseExceptionsFn` returns the overrides.
|
|
21
|
+
* - {@link PrefixSumPositionStrategy} — fully heterogeneous sizes; O(totalItems) build, the
|
|
22
|
+
* general fallback.
|
|
23
|
+
*
|
|
24
|
+
* @class PositionCache
|
|
25
|
+
*/
|
|
26
|
+
export declare class PositionCache {
|
|
27
|
+
#private;
|
|
28
|
+
/**
|
|
29
|
+
* The total number of items (rows or columns) read at build time.
|
|
30
|
+
*
|
|
31
|
+
* @type {number}
|
|
32
|
+
*/
|
|
33
|
+
totalItems: number;
|
|
34
|
+
/**
|
|
35
|
+
* Increments on every {@link PositionCache#build}, in any mode.
|
|
36
|
+
*
|
|
37
|
+
* A caller that must not be served a build taken while its own inputs were incomplete can
|
|
38
|
+
* snapshot this and compare afterwards. `isCurrent()` cannot answer that: an invalidate followed
|
|
39
|
+
* by a rebuild leaves it `true` both before and after.
|
|
40
|
+
*
|
|
41
|
+
* @type {number}
|
|
42
|
+
*/
|
|
43
|
+
buildSeq: number;
|
|
44
|
+
/**
|
|
45
|
+
* @param {object} config The configuration object.
|
|
46
|
+
* @param {Function} config.totalItemsFn A function that returns the total number of items (rows or columns).
|
|
47
|
+
* @param {Function} config.sizeFn A function that returns the size for a given index.
|
|
48
|
+
* @param {Function} config.defaultSizeFn A function that returns the default size for items
|
|
49
|
+
* that return NaN/undefined.
|
|
50
|
+
* @param {Function} [config.isUniformFn] Optional predicate; when `true`, all items share one size.
|
|
51
|
+
* @param {Function} [config.sparseExceptionsFn] Optional provider of per-index size overrides
|
|
52
|
+
* on top of a uniform base.
|
|
53
|
+
* @param {Function} [config.onBuildFn] Optional callback invoked on every (re)build.
|
|
54
|
+
*/
|
|
55
|
+
constructor({ totalItemsFn, sizeFn, defaultSizeFn, isUniformFn, sparseExceptionsFn, onBuildFn, }: PositionCacheConfig);
|
|
56
|
+
/**
|
|
57
|
+
* The prefix sum array when the current strategy holds one (prefix-sum mode); `null` in the
|
|
58
|
+
* uniform and sparse modes and while the cache is not built. Kept for the `isBuilt()` type
|
|
59
|
+
* guard and its consumers.
|
|
60
|
+
*
|
|
61
|
+
* @type {Float64Array|null}
|
|
62
|
+
*/
|
|
63
|
+
get prefixSum(): Float64Array | null;
|
|
64
|
+
/**
|
|
65
|
+
* Builds the lookup strategy by reading the current total items, size function, and default
|
|
66
|
+
* size from the configured providers: uniform when the uniform predicate holds, sparse when
|
|
67
|
+
* the exceptions provider returns overrides, and the full prefix-sum walk otherwise.
|
|
68
|
+
*/
|
|
69
|
+
build(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Returns the cumulative size at an index (sum of items 0..index-1).
|
|
72
|
+
*
|
|
73
|
+
* @param {number} index The item index.
|
|
74
|
+
* @returns {number} The cumulative size before this index, or `0` when the cache is not built.
|
|
75
|
+
*/
|
|
76
|
+
getOffset(index: number): number;
|
|
77
|
+
/**
|
|
78
|
+
* Finds the item index at a given pixel offset.
|
|
79
|
+
*
|
|
80
|
+
* @param {number} offset The pixel offset.
|
|
81
|
+
* @returns {number} The index whose cumulative start position is at or just before the offset.
|
|
82
|
+
* Returns `0` when there are no items or the cache is not built.
|
|
83
|
+
*/
|
|
84
|
+
findIndexAtOffset(offset: number): number;
|
|
85
|
+
/**
|
|
86
|
+
* Returns the size of a single item at the given index.
|
|
87
|
+
*
|
|
88
|
+
* @param {number} index The item index.
|
|
89
|
+
* @returns {number} The size of the item, or `0` outside the item range or when not built.
|
|
90
|
+
*/
|
|
91
|
+
getSizeAt(index: number): number;
|
|
92
|
+
/**
|
|
93
|
+
* Returns the total size of all items.
|
|
94
|
+
*
|
|
95
|
+
* @returns {number}
|
|
96
|
+
*/
|
|
97
|
+
getTotalSize(): number;
|
|
98
|
+
/**
|
|
99
|
+
* Builds the lookup strategy only when the cache is not yet built or the item count has
|
|
100
|
+
* changed.
|
|
101
|
+
*/
|
|
102
|
+
ensureBuilt(): void;
|
|
103
|
+
/**
|
|
104
|
+
* Invalidates the cache so it will be rebuilt on the next
|
|
105
|
+
* {@link PositionCache#ensureBuilt} call.
|
|
106
|
+
*/
|
|
107
|
+
invalidate(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Returns whether the cache holds a prefix-sum array (heterogeneous mode). The uniform and
|
|
110
|
+
* sparse strategies keep `prefixSum` as `null`, so this is `false` there; use it only as the
|
|
111
|
+
* prefix-sum type guard.
|
|
112
|
+
*
|
|
113
|
+
* @returns {boolean}
|
|
114
|
+
*/
|
|
115
|
+
isBuilt(): this is PositionCache & {
|
|
116
|
+
prefixSum: Float64Array;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Returns whether the cache currently holds valid built data for the current item count, in any
|
|
120
|
+
* mode. Unlike {@link PositionCache#isBuilt} (a prefix-sum-mode type guard that is always `false`
|
|
121
|
+
* in the uniform and sparse modes), this reflects the real build/invalidate state:
|
|
122
|
+
* {@link PositionCache#build} sets it regardless of mode, {@link PositionCache#invalidate} clears
|
|
123
|
+
* it, and a changed item count makes it stale (mirroring {@link PositionCache#ensureBuilt}). It is
|
|
124
|
+
* the signal for "the sizes the pre-render calculators read are still current" — e.g.
|
|
125
|
+
* `markOversizedRows` invalidates the row cache here when it finds a genuinely oversized row.
|
|
126
|
+
*
|
|
127
|
+
* @returns {boolean}
|
|
128
|
+
*/
|
|
129
|
+
isCurrent(): boolean;
|
|
130
|
+
}
|