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,588 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The viewport calculator-creation queries for `Viewport`, plus the mixin object that implements them.
|
|
3
|
+
*
|
|
4
|
+
* These methods build the row/column render, fully-visible, and partially-visible calculators and
|
|
5
|
+
* decide (on a fast draw) whether the proposed visible range is already inside the rendered band.
|
|
6
|
+
* They were extracted verbatim from `Viewport` and applied with the same `mixin()` helper the
|
|
7
|
+
* range-query and sticky mixins use, so the public surface and behavior are unchanged; only the
|
|
8
|
+
* private `#deps` access became the public `this.deps` getter.
|
|
9
|
+
*
|
|
10
|
+
* The calculator RESULT fields (`rowsRenderCalculator`, `rowsVisibleCalculator`, …) stay owned by
|
|
11
|
+
* `Viewport`; `createCalculators` / `createVisibleCalculators` assign them through `this`.
|
|
12
|
+
*/ "use strict";
|
|
13
|
+
Object.defineProperty(exports, "__esModule", {
|
|
14
|
+
value: true
|
|
15
|
+
});
|
|
16
|
+
function _export(target, all) {
|
|
17
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
_export(exports, {
|
|
23
|
+
get calculatorFactory () {
|
|
24
|
+
return calculatorFactory;
|
|
25
|
+
},
|
|
26
|
+
get directionalBandOverscan () {
|
|
27
|
+
return directionalBandOverscan;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const _calculator = require("../calculator");
|
|
31
|
+
/**
|
|
32
|
+
* The cap on the directional column-band overscan (see
|
|
33
|
+
* {@link CalculatorFactory#applyRenderedColumnsBandOverscan}). Tuned on a 50k-row/300-column grid
|
|
34
|
+
* for perceived smoothness, not raw totals: raising the cap makes band-crossing stalls rarer but
|
|
35
|
+
* taller (0 → a ~40 ms stall on nearly every scroll frame; 8 → a ~50 ms stall every ~10 frames;
|
|
36
|
+
* 16 → every ~19 frames but up to ~60 ms). The 60 ms class reads as a visible catch during smooth
|
|
37
|
+
* scrolling, so 8 trades a few more pauses for keeping every pause in the mild 40–50 ms class.
|
|
38
|
+
*
|
|
39
|
+
* When retuning, keep the user-facing number in the `viewportColumnRenderingOffset` JSDoc
|
|
40
|
+
* (`src/dataMap/metaManager/metaSchema.ts`) in sync.
|
|
41
|
+
*/ const COLUMN_BAND_OVERSCAN_MAX = 8;
|
|
42
|
+
/**
|
|
43
|
+
* The cap on the directional row-band overscan (see
|
|
44
|
+
* {@link CalculatorFactory#applyRenderedRowsBandOverscan}). Tuned the same way: at 4, one-notch
|
|
45
|
+
* wheel steps (~120 px = 6 rows) drop from a ~30 ms full draw nearly every frame to almost none
|
|
46
|
+
* (hitches over 33 ms: ~22 → 2) while the worst frame stays in the same ~40 ms class as no
|
|
47
|
+
* overscan at all. Higher caps look better on medians but grow the band every full draw must
|
|
48
|
+
* re-render, pushing fast-flick (~25 rows/frame) stalls into the 50–60 ms class.
|
|
49
|
+
*
|
|
50
|
+
* When retuning, keep the user-facing number in the `viewportRowRenderingOffset` JSDoc
|
|
51
|
+
* (`src/dataMap/metaManager/metaSchema.ts`) in sync.
|
|
52
|
+
*/ const ROW_BAND_OVERSCAN_MAX = 4;
|
|
53
|
+
function directionalBandOverscan(scrollOffsetDelta, previous, fresh, total, max) {
|
|
54
|
+
let side = Math.sign(scrollOffsetDelta);
|
|
55
|
+
if (side === 0) {
|
|
56
|
+
if (previous.startOffset > 1) {
|
|
57
|
+
side = -1;
|
|
58
|
+
} else if (previous.endOffset > 1) {
|
|
59
|
+
side = 1;
|
|
60
|
+
} else {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const overscan = Math.min(Math.ceil(fresh.count / 2), max);
|
|
65
|
+
const extension = side > 0 ? Math.min(overscan, total - 1 - fresh.end) : Math.min(overscan, fresh.start);
|
|
66
|
+
if (extension <= 0) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
side: side,
|
|
71
|
+
extension
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Computes how many tracks to extend a freshly computed render band by so it keeps the previous
|
|
76
|
+
* band's size across a scroll-driven draw — the overscan that stops the rendered node count from
|
|
77
|
+
* oscillating (a structural DOM add/remove that would trigger the host page's `:has()` style
|
|
78
|
+
* invalidation). Returns `0` when the band already covers the previous size, or when the dataset
|
|
79
|
+
* edge leaves no track to extend into. Axis-agnostic: the caller applies the result to its own
|
|
80
|
+
* end-index and count fields. Shared by the row and column stabilizers so the clamp arithmetic
|
|
81
|
+
* (notably the `(total - 1) - end` upper bound) lives in exactly one place — a divergent edit to it
|
|
82
|
+
* on one axis would silently reintroduce per-scroll structural mutations on that axis only.
|
|
83
|
+
*
|
|
84
|
+
* @param {number} renderedEnd The last index of the freshly computed band (`endRow` / `endColumn`).
|
|
85
|
+
* @param {number} renderedCount The freshly computed band size.
|
|
86
|
+
* @param {number} previousCount The size of the band rendered on the previous draw.
|
|
87
|
+
* @param {number} total The axis total (`totalRows` / `totalColumns`).
|
|
88
|
+
* @returns {number} The number of tracks to extend by (never negative).
|
|
89
|
+
*/ function bandStabilizationExtension(renderedEnd, renderedCount, previousCount, total) {
|
|
90
|
+
const missing = previousCount - renderedCount;
|
|
91
|
+
if (missing <= 0) {
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
return Math.max(0, Math.min(missing, total - 1 - renderedEnd));
|
|
95
|
+
}
|
|
96
|
+
const calculatorFactory = {
|
|
97
|
+
/**
|
|
98
|
+
* Creates rows calculators. The type of the calculations can be chosen from the list:
|
|
99
|
+
* - 'rendered' Calculates rows that should be rendered within the current table's viewport;
|
|
100
|
+
* - 'fullyVisible' Calculates rows that are fully visible (used mostly for scrolling purposes);
|
|
101
|
+
* - 'partiallyVisible' Calculates rows that are partially visible (used mostly for scrolling purposes).
|
|
102
|
+
*
|
|
103
|
+
* @this Viewport
|
|
104
|
+
* @param {'rendered' | 'fullyVisible' | 'partiallyVisible'} calculatorTypes The list of the calculation types.
|
|
105
|
+
* @returns {ViewportRowsCalculator}
|
|
106
|
+
*/ createRowsCalculator (calculatorTypes = [
|
|
107
|
+
'rendered',
|
|
108
|
+
'fullyVisible',
|
|
109
|
+
'partiallyVisible'
|
|
110
|
+
], band = 'visible') {
|
|
111
|
+
const { wtSettings, wtTable } = this;
|
|
112
|
+
const totalRows = wtSettings.getSetting('totalRows');
|
|
113
|
+
const useSnapshot = this.usesLayoutSnapshotForCalculators();
|
|
114
|
+
// Single-pass: source the row viewport from the layout snapshot. The render band reads the
|
|
115
|
+
// scrollbar-unaware height (so it still covers the row under a horizontal scrollbar); the visible
|
|
116
|
+
// band reads the scrollbar-aware height. Both are baked into the snapshot value, so the calculator
|
|
117
|
+
// subtracts no extra scrollbar (`scrollbarHeight = 0`). Legacy path measures the rendered DOM.
|
|
118
|
+
let height;
|
|
119
|
+
let scrollbarHeight = 0;
|
|
120
|
+
let fixedRowsHeight;
|
|
121
|
+
if (useSnapshot) {
|
|
122
|
+
const layout = this.getLayout();
|
|
123
|
+
height = band === 'render' ? layout.renderViewportHeight : layout.visibleViewportHeight;
|
|
124
|
+
} else {
|
|
125
|
+
height = this.getViewportHeight();
|
|
126
|
+
}
|
|
127
|
+
this.rowHeaderWidth = NaN;
|
|
128
|
+
const topOverlay = this.deps.getTopOverlay();
|
|
129
|
+
const bottomOverlay = this.deps.getBottomOverlay();
|
|
130
|
+
let pos = topOverlay.getScrollPosition() - topOverlay.getTableParentOffset();
|
|
131
|
+
const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
|
|
132
|
+
const fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
|
|
133
|
+
if (fixedRowsTop && pos >= 0) {
|
|
134
|
+
fixedRowsHeight = topOverlay.sumCellSizes(0, fixedRowsTop);
|
|
135
|
+
pos += fixedRowsHeight;
|
|
136
|
+
height -= fixedRowsHeight;
|
|
137
|
+
}
|
|
138
|
+
if (fixedRowsBottom && bottomOverlay.clone) {
|
|
139
|
+
fixedRowsHeight = bottomOverlay.sumCellSizes(totalRows - fixedRowsBottom, totalRows);
|
|
140
|
+
height -= fixedRowsHeight;
|
|
141
|
+
}
|
|
142
|
+
if (!useSnapshot) {
|
|
143
|
+
const { geometryReader } = this.deps;
|
|
144
|
+
if (geometryReader.clientHeight(wtTable.holder) !== geometryReader.offsetHeight(wtTable.holder)) {
|
|
145
|
+
scrollbarHeight = geometryReader.getScrollbarWidth(this.deps.rootDocument);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return new _calculator.ViewportRowsCalculator({
|
|
149
|
+
calculationTypes: calculatorTypes.flatMap((type)=>{
|
|
150
|
+
const factory = this.rowsCalculatorTypes.get(type);
|
|
151
|
+
return factory ? [
|
|
152
|
+
[
|
|
153
|
+
type,
|
|
154
|
+
factory()
|
|
155
|
+
]
|
|
156
|
+
] : [];
|
|
157
|
+
}),
|
|
158
|
+
viewportHeight: height,
|
|
159
|
+
scrollOffset: pos,
|
|
160
|
+
totalRows,
|
|
161
|
+
overrideFn: wtSettings.getSettingPure('viewportRowCalculatorOverride'),
|
|
162
|
+
horizontalScrollbarHeight: scrollbarHeight,
|
|
163
|
+
rowHeightCache: this.rowHeightCache
|
|
164
|
+
});
|
|
165
|
+
},
|
|
166
|
+
/**
|
|
167
|
+
* Creates columns calculators. The type of the calculations can be chosen from the list:
|
|
168
|
+
* - 'rendered' Calculates columns that should be rendered within the current table's viewport;
|
|
169
|
+
* - 'fullyVisible' Calculates columns that are fully visible (used mostly for scrolling purposes);
|
|
170
|
+
* - 'partiallyVisible' Calculates columns that are partially visible (used mostly for scrolling purposes).
|
|
171
|
+
*
|
|
172
|
+
* @this Viewport
|
|
173
|
+
* @param {'rendered' | 'fullyVisible' | 'partiallyVisible'} calculatorTypes The list of the calculation types.
|
|
174
|
+
* @returns {ViewportColumnsCalculator}
|
|
175
|
+
*/ createColumnsCalculator (calculatorTypes = [
|
|
176
|
+
'rendered',
|
|
177
|
+
'fullyVisible',
|
|
178
|
+
'partiallyVisible'
|
|
179
|
+
], band = 'visible') {
|
|
180
|
+
const { wtSettings, wtTable } = this;
|
|
181
|
+
const inlineStartOverlay = this.deps.getInlineStartOverlay();
|
|
182
|
+
const totalColumns = wtSettings.getSetting('totalColumns');
|
|
183
|
+
const useSnapshot = this.usesLayoutSnapshotForCalculators();
|
|
184
|
+
// Single-pass twin of `createRowsCalculator`: the render band reads the scrollbar-unaware width,
|
|
185
|
+
// the visible band the scrollbar-aware width (both from the snapshot). Legacy path measures the DOM
|
|
186
|
+
// and subtracts a present vertical scrollbar from the width.
|
|
187
|
+
let width;
|
|
188
|
+
if (useSnapshot) {
|
|
189
|
+
const layout = this.getLayout();
|
|
190
|
+
width = band === 'render' ? layout.renderViewportWidth : layout.visibleViewportWidth;
|
|
191
|
+
} else {
|
|
192
|
+
width = this.getViewportWidth();
|
|
193
|
+
}
|
|
194
|
+
let pos = Math.abs(inlineStartOverlay.getScrollPosition()) - inlineStartOverlay.getTableParentOffset();
|
|
195
|
+
this.columnHeaderHeight = NaN;
|
|
196
|
+
const fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
|
|
197
|
+
if (fixedColumnsStart && pos >= 0) {
|
|
198
|
+
const fixedColumnsWidth = inlineStartOverlay.sumCellSizes(0, fixedColumnsStart);
|
|
199
|
+
pos += fixedColumnsWidth;
|
|
200
|
+
width -= fixedColumnsWidth;
|
|
201
|
+
}
|
|
202
|
+
if (!useSnapshot) {
|
|
203
|
+
const { geometryReader } = this.deps;
|
|
204
|
+
if (geometryReader.clientWidth(wtTable.holder) !== geometryReader.offsetWidth(wtTable.holder)) {
|
|
205
|
+
width -= geometryReader.getScrollbarWidth(this.deps.rootDocument);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return new _calculator.ViewportColumnsCalculator({
|
|
209
|
+
calculationTypes: calculatorTypes.flatMap((type)=>{
|
|
210
|
+
const factory = this.columnsCalculatorTypes.get(type);
|
|
211
|
+
return factory ? [
|
|
212
|
+
[
|
|
213
|
+
type,
|
|
214
|
+
factory()
|
|
215
|
+
]
|
|
216
|
+
] : [];
|
|
217
|
+
}),
|
|
218
|
+
viewportWidth: width,
|
|
219
|
+
scrollOffset: pos,
|
|
220
|
+
totalColumns,
|
|
221
|
+
overrideFn: wtSettings.getSettingPure('viewportColumnCalculatorOverride'),
|
|
222
|
+
inlineStartOffset: inlineStartOverlay.getTableParentOffset(),
|
|
223
|
+
columnWidthCache: this.columnWidthCache
|
|
224
|
+
});
|
|
225
|
+
},
|
|
226
|
+
/**
|
|
227
|
+
* Creates rowsRenderCalculator and columnsRenderCalculator (before draw, to determine what rows and
|
|
228
|
+
* cols should be rendered).
|
|
229
|
+
*
|
|
230
|
+
* @this Viewport
|
|
231
|
+
* @param {boolean} fastDraw If `true`, will try to avoid full redraw and only update the border positions.
|
|
232
|
+
* If `false` or `undefined`, will perform a full redraw.
|
|
233
|
+
* @param {object} [options] The per-draw options.
|
|
234
|
+
* @param {boolean} [options.stationaryBands=false] When `true` (a scroll-driven draw on the
|
|
235
|
+
* stationary-band path), the new rendered row and column bands keep the previous bands' sizes —
|
|
236
|
+
* see {@link CalculatorFactory#stabilizeRenderedRowsBand}. Both axes are stabilized on ANY
|
|
237
|
+
* scroll-driven draw (not per scrolled axis): a draw for one axis recomputes the other axis'
|
|
238
|
+
* band too, so per-axis gating would let each axis shrink the other's band back and re-oscillate.
|
|
239
|
+
* @returns {boolean} The fastDraw value, possibly modified.
|
|
240
|
+
*/ createCalculators (fastDraw = false, { stationaryBands = false } = {}) {
|
|
241
|
+
const { wtSettings } = this;
|
|
242
|
+
const useSnapshot = this.usesLayoutSnapshotForCalculators();
|
|
243
|
+
// In single-pass mode the render band (scrollbar-unaware) and the visible band (scrollbar-aware)
|
|
244
|
+
// read different viewport boxes, so they need separate calculators built in one pass. The visible
|
|
245
|
+
// calculator carries the fully/partially-visible results; a dedicated render-band calculator
|
|
246
|
+
// carries the `rendered` result. In legacy mode one calculator serves both (render == visible),
|
|
247
|
+
// preserving the previous behavior byte-for-byte.
|
|
248
|
+
const visibleTypes = useSnapshot ? [
|
|
249
|
+
'fullyVisible',
|
|
250
|
+
'partiallyVisible'
|
|
251
|
+
] : undefined;
|
|
252
|
+
const rowsCalculator = this.createRowsCalculator(visibleTypes);
|
|
253
|
+
const columnsCalculator = this.createColumnsCalculator(visibleTypes);
|
|
254
|
+
const rowsRenderCalculator = useSnapshot ? this.createRowsCalculator([
|
|
255
|
+
'rendered'
|
|
256
|
+
], 'render') : rowsCalculator;
|
|
257
|
+
const columnsRenderCalculator = useSnapshot ? this.createColumnsCalculator([
|
|
258
|
+
'rendered'
|
|
259
|
+
], 'render') : columnsCalculator;
|
|
260
|
+
if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
|
|
261
|
+
const proposedFullyVisibleRowsCalculator = rowsCalculator.getResultsFor('fullyVisible');
|
|
262
|
+
const proposedPartiallyVisibleRowsCalculator = rowsCalculator.getResultsFor('partiallyVisible');
|
|
263
|
+
fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator);
|
|
264
|
+
}
|
|
265
|
+
if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
|
|
266
|
+
const proposedFullyVisibleColumnsCalculator = columnsCalculator.getResultsFor('fullyVisible');
|
|
267
|
+
const proposedPartiallyVisibleColumnsCalculator = columnsCalculator.getResultsFor('partiallyVisible');
|
|
268
|
+
fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator);
|
|
269
|
+
}
|
|
270
|
+
if (!fastDraw) {
|
|
271
|
+
const renderedRows = rowsRenderCalculator.getResultsFor('rendered') ?? null;
|
|
272
|
+
const renderedColumns = columnsRenderCalculator.getResultsFor('rendered') ?? null;
|
|
273
|
+
if (stationaryBands) {
|
|
274
|
+
// Overscan must run BEFORE the stabilizers: the stabilizer tops the band up to the previous
|
|
275
|
+
// band's size at its end side, so overscan applied after it would double-pad the band on
|
|
276
|
+
// every scroll-direction flip.
|
|
277
|
+
this.applyRenderedColumnsBandOverscan(renderedColumns);
|
|
278
|
+
this.applyRenderedRowsBandOverscan(renderedRows);
|
|
279
|
+
this.stabilizeRenderedRowsBand(renderedRows);
|
|
280
|
+
this.stabilizeRenderedColumnsBand(renderedColumns);
|
|
281
|
+
}
|
|
282
|
+
this.rowsRenderCalculator = renderedRows;
|
|
283
|
+
this.columnsRenderCalculator = renderedColumns;
|
|
284
|
+
}
|
|
285
|
+
this.rowsVisibleCalculator = rowsCalculator.getResultsFor('fullyVisible') ?? null;
|
|
286
|
+
this.columnsVisibleCalculator = columnsCalculator.getResultsFor('fullyVisible') ?? null;
|
|
287
|
+
this.rowsPartiallyVisibleCalculator = rowsCalculator.getResultsFor('partiallyVisible') ?? null;
|
|
288
|
+
this.columnsPartiallyVisibleCalculator = columnsCalculator.getResultsFor('partiallyVisible') ?? null;
|
|
289
|
+
return fastDraw;
|
|
290
|
+
},
|
|
291
|
+
/**
|
|
292
|
+
* Creates rows and columns calculators (after draw, to determine what are
|
|
293
|
+
* the actually fully visible and partially visible rows and columns).
|
|
294
|
+
*
|
|
295
|
+
* @this Viewport
|
|
296
|
+
*/ createVisibleCalculators () {
|
|
297
|
+
const rowsCalculator = this.createRowsCalculator([
|
|
298
|
+
'fullyVisible',
|
|
299
|
+
'partiallyVisible'
|
|
300
|
+
]);
|
|
301
|
+
const columnsCalculator = this.createColumnsCalculator([
|
|
302
|
+
'fullyVisible',
|
|
303
|
+
'partiallyVisible'
|
|
304
|
+
]);
|
|
305
|
+
this.rowsVisibleCalculator = rowsCalculator.getResultsFor('fullyVisible') ?? null;
|
|
306
|
+
this.columnsVisibleCalculator = columnsCalculator.getResultsFor('fullyVisible') ?? null;
|
|
307
|
+
this.rowsPartiallyVisibleCalculator = rowsCalculator.getResultsFor('partiallyVisible') ?? null;
|
|
308
|
+
this.columnsPartiallyVisibleCalculator = columnsCalculator.getResultsFor('partiallyVisible') ?? null;
|
|
309
|
+
},
|
|
310
|
+
/**
|
|
311
|
+
* Decides whether the calculators read their viewport boxes from the layout snapshot (single-pass)
|
|
312
|
+
* or measure the rendered DOM (legacy). The snapshot path is scoped to the cases where a numeric
|
|
313
|
+
* prediction is exact and matches the DOM: the table scrolls inside its own element (not the window,
|
|
314
|
+
* whose scroll depends on other page content) and every row and column uses a uniform size (so the
|
|
315
|
+
* content totals from the size caches equal what renders). `singlePassLayout` is the master escape
|
|
316
|
+
* hatch (off under `mergeCells`). Anything else falls back to the measured path unchanged.
|
|
317
|
+
*
|
|
318
|
+
* @this Viewport
|
|
319
|
+
* @returns {boolean}
|
|
320
|
+
*/ usesLayoutSnapshotForCalculators () {
|
|
321
|
+
return this.wtSettings.getSetting('singlePassLayout') && !this.isVerticallyScrollableByWindow() && !this.isHorizontallyScrollableByWindow() && this.wtSettings.getSetting('rowHeightsUniform') && this.wtSettings.getSetting('columnWidthsUniform');
|
|
322
|
+
},
|
|
323
|
+
/**
|
|
324
|
+
* Decides whether the rendered row/column bands may be kept stationary on a scroll-driven draw
|
|
325
|
+
* (each band keeps its previous size so the `OrderView`s never add or remove TR/TD/TH/COL nodes —
|
|
326
|
+
* see {@link CalculatorFactory#stabilizeRenderedRowsBand}). This is a looser gate than the
|
|
327
|
+
* single-pass layout gate: it drops the uniform-size requirements (an extra rendered row/column
|
|
328
|
+
* past the viewport edge is harmless whatever its size), but keeps the two conditions with a
|
|
329
|
+
* different scroll/offset model — `singlePassLayout` off (which `mergeCells` forces, and merged
|
|
330
|
+
* cells recompute their spans per viewport) and window scrolling. Anything else takes the natural
|
|
331
|
+
* bands unchanged.
|
|
332
|
+
*
|
|
333
|
+
* @this Viewport
|
|
334
|
+
* @returns {boolean}
|
|
335
|
+
*/ allowsStationaryBands () {
|
|
336
|
+
return this.wtSettings.getSetting('singlePassLayout') && !this.isVerticallyScrollableByWindow() && !this.isHorizontallyScrollableByWindow();
|
|
337
|
+
},
|
|
338
|
+
/**
|
|
339
|
+
* Extends the freshly computed rendered column band by up to {@link COLUMN_BAND_OVERSCAN_MAX}
|
|
340
|
+
* columns of overscan on the side the user is scrolling toward, so the next several band
|
|
341
|
+
* crossings land inside the already-rendered band and resolve as fast draws (no cell render, no
|
|
342
|
+
* post-render measurements) instead of full band re-renders. This is the engine half of the
|
|
343
|
+
* `viewportColumnRenderingOffset: 'auto'` behavior: the static resolution (1 column, applied
|
|
344
|
+
* symmetrically by the `viewportColumnCalculatorOverride` override) stays as-is for non-scroll
|
|
345
|
+
* draws, and scroll-driven draws add the directional overscan on top. An explicit numeric
|
|
346
|
+
* offset (2 or more) is an exact user choice, so the overscan detects it through the recorded
|
|
347
|
+
* override offsets and leaves such bands untouched.
|
|
348
|
+
*
|
|
349
|
+
* The scroll direction comes from the sign of the zero-based scroll-offset delta between this
|
|
350
|
+
* draw and the previous full draw (both captured on the rendered results). Logical column
|
|
351
|
+
* indexes and absolute offsets both grow toward the inline end, so the same arithmetic is
|
|
352
|
+
* correct in LTR and RTL. A zero delta (a vertical-scroll-driven draw recomputing the column
|
|
353
|
+
* axis) keeps the overscan on the side that carried it on the previous draw, so the band stays
|
|
354
|
+
* identical instead of rotating.
|
|
355
|
+
*
|
|
356
|
+
* The band mutation keeps every derived field consistent: `startPosition` is recomputed from
|
|
357
|
+
* the width prefix-sum cache when the band grows at the start, and
|
|
358
|
+
* `columnStartOffset`/`columnEndOffset` grow with the applied overscan so the
|
|
359
|
+
* `viewportColumnRenderingThreshold` containment padding (see
|
|
360
|
+
* {@link CalculatorFactory#areAllProposedVisibleColumnsAlreadyRendered}) caps against the real
|
|
361
|
+
* overscan on each side.
|
|
362
|
+
*
|
|
363
|
+
* Runs only on scroll-driven draws on the stationary-band path (the caller gates on
|
|
364
|
+
* `stationaryBands`) and only under uniform column widths — with measured or varying widths
|
|
365
|
+
* (for example `autoColumnSize`) the pixel cost of the overscan is unpredictable, so those
|
|
366
|
+
* grids keep the previous behavior. Near a dataset edge the extension clamps to the remaining
|
|
367
|
+
* columns; the band stabilizer that runs next keeps the band size stable where possible.
|
|
368
|
+
*
|
|
369
|
+
* @this Viewport
|
|
370
|
+
* @param {ColumnsCalculationType | null} renderedColumns The freshly computed rendered-columns
|
|
371
|
+
* result, mutated in place. The previous band is read off `this.columnsRenderCalculator` (not
|
|
372
|
+
* yet overwritten at the call site).
|
|
373
|
+
*/ applyRenderedColumnsBandOverscan (renderedColumns) {
|
|
374
|
+
const previousBand = this.columnsRenderCalculator;
|
|
375
|
+
if (!(renderedColumns instanceof _calculator.RenderedColumnsCalculationType) || !(previousBand instanceof _calculator.RenderedColumnsCalculationType) || renderedColumns.startColumn === null || renderedColumns.endColumn === null || // An explicit `viewportColumnRenderingOffset` number is an exact manual offset — only the
|
|
376
|
+
// 'auto' mode carries the dynamic overscan. The recorded-offsets check backs the flag up
|
|
377
|
+
// for custom `viewportColumnCalculatorOverride` functions that pad wider than 'auto' (1).
|
|
378
|
+
!this.wtSettings.getSetting('viewportColumnRenderingOffsetIsAuto') || renderedColumns.columnStartOffset > 1 || renderedColumns.columnEndOffset > 1 || !this.wtSettings.getSetting('columnWidthsUniform')) {
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
const plan = directionalBandOverscan(renderedColumns.scrollOffset - previousBand.scrollOffset, {
|
|
382
|
+
startOffset: previousBand.columnStartOffset,
|
|
383
|
+
endOffset: previousBand.columnEndOffset
|
|
384
|
+
}, {
|
|
385
|
+
start: renderedColumns.startColumn,
|
|
386
|
+
end: renderedColumns.endColumn,
|
|
387
|
+
count: renderedColumns.count
|
|
388
|
+
}, this.wtSettings.getSetting('totalColumns'), COLUMN_BAND_OVERSCAN_MAX);
|
|
389
|
+
if (!plan) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (plan.side > 0) {
|
|
393
|
+
renderedColumns.endColumn += plan.extension;
|
|
394
|
+
renderedColumns.count += plan.extension;
|
|
395
|
+
renderedColumns.columnEndOffset += plan.extension;
|
|
396
|
+
} else {
|
|
397
|
+
renderedColumns.startColumn -= plan.extension;
|
|
398
|
+
renderedColumns.count += plan.extension;
|
|
399
|
+
renderedColumns.columnStartOffset += plan.extension;
|
|
400
|
+
renderedColumns.startPosition = this.columnWidthCache.getOffset(renderedColumns.startColumn);
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
/**
|
|
404
|
+
* Row-axis twin of {@link CalculatorFactory#applyRenderedColumnsBandOverscan}: extends the freshly
|
|
405
|
+
* computed rendered row band by up to {@link ROW_BAND_OVERSCAN_MAX} rows of overscan on the side
|
|
406
|
+
* the user is scrolling toward, so consecutive vertical scroll steps land inside the rendered
|
|
407
|
+
* band and resolve as fast draws. The direction rules, the preserve-vs-invent zero-delta logic,
|
|
408
|
+
* and the clamps live in the shared {@link directionalBandOverscan} helper. Gated to uniform row
|
|
409
|
+
* heights for the same reason the column overscan is gated to uniform widths: with measured or
|
|
410
|
+
* varying heights the pixel cost of the overscan is unpredictable. `startPosition` is recomputed
|
|
411
|
+
* from the height prefix-sum cache when the band grows upward, and `rowStartOffset`/`rowEndOffset`
|
|
412
|
+
* grow with the applied overscan so the `viewportRowRenderingThreshold` containment padding caps
|
|
413
|
+
* against the real overscan.
|
|
414
|
+
*
|
|
415
|
+
* @this Viewport
|
|
416
|
+
* @param {RowsCalculationType | null} renderedRows The freshly computed rendered-rows result,
|
|
417
|
+
* mutated in place. The previous band is read off `this.rowsRenderCalculator` (not yet
|
|
418
|
+
* overwritten at the call site).
|
|
419
|
+
*/ applyRenderedRowsBandOverscan (renderedRows) {
|
|
420
|
+
const previousBand = this.rowsRenderCalculator;
|
|
421
|
+
if (!(renderedRows instanceof _calculator.RenderedRowsCalculationType) || !(previousBand instanceof _calculator.RenderedRowsCalculationType) || renderedRows.startRow === null || renderedRows.endRow === null || // An explicit `viewportRowRenderingOffset` number is an exact manual offset — only the
|
|
422
|
+
// 'auto' mode carries the dynamic overscan. The recorded-offsets check backs the flag up
|
|
423
|
+
// for custom `viewportRowCalculatorOverride` functions that pad wider than 'auto' (1).
|
|
424
|
+
!this.wtSettings.getSetting('viewportRowRenderingOffsetIsAuto') || renderedRows.rowStartOffset > 1 || renderedRows.rowEndOffset > 1 || !this.wtSettings.getSetting('rowHeightsUniform')) {
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
const plan = directionalBandOverscan(renderedRows.scrollOffset - previousBand.scrollOffset, {
|
|
428
|
+
startOffset: previousBand.rowStartOffset,
|
|
429
|
+
endOffset: previousBand.rowEndOffset
|
|
430
|
+
}, {
|
|
431
|
+
start: renderedRows.startRow,
|
|
432
|
+
end: renderedRows.endRow,
|
|
433
|
+
count: renderedRows.count
|
|
434
|
+
}, this.wtSettings.getSetting('totalRows'), ROW_BAND_OVERSCAN_MAX);
|
|
435
|
+
if (!plan) {
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
if (plan.side > 0) {
|
|
439
|
+
renderedRows.endRow += plan.extension;
|
|
440
|
+
renderedRows.count += plan.extension;
|
|
441
|
+
renderedRows.rowEndOffset += plan.extension;
|
|
442
|
+
} else {
|
|
443
|
+
renderedRows.startRow -= plan.extension;
|
|
444
|
+
renderedRows.count += plan.extension;
|
|
445
|
+
renderedRows.rowStartOffset += plan.extension;
|
|
446
|
+
renderedRows.startPosition = this.rowHeightCache.getOffset(renderedRows.startRow);
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
/**
|
|
450
|
+
* Keeps the rendered row band's size stable across a scroll-driven draw by extending the freshly
|
|
451
|
+
* computed band DOWNWARD (past the viewport's bottom edge) to the previous band's size. The natural
|
|
452
|
+
* band size oscillates by one row as the scroll position aligns with the row grid; without this,
|
|
453
|
+
* every other band shift adds/removes a TR, and a structural DOM mutation triggers the host page's
|
|
454
|
+
* `:has()` style invalidation — a style recalculation whose cost scales with the whole host
|
|
455
|
+
* document, paid on every scroll. The extra row is a plain overscan row: it is rendered from real
|
|
456
|
+
* data below the viewport and clipped by the holder. Near the dataset's end, where no rows remain
|
|
457
|
+
* to extend into, the band shrinks naturally (a one-time mutation at the edge, not one per shift).
|
|
458
|
+
*
|
|
459
|
+
* @this Viewport
|
|
460
|
+
* @param {RowsCalculationType | null} renderedRows The freshly computed rendered-rows result,
|
|
461
|
+
* mutated in place. The previous band is read off `this.rowsRenderCalculator` (not yet
|
|
462
|
+
* overwritten at the call site).
|
|
463
|
+
*/ stabilizeRenderedRowsBand (renderedRows) {
|
|
464
|
+
const previousBand = this.rowsRenderCalculator;
|
|
465
|
+
if (!renderedRows || !previousBand || renderedRows.endRow === null) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
const extension = bandStabilizationExtension(renderedRows.endRow, renderedRows.count, previousBand.count, this.wtSettings.getSetting('totalRows'));
|
|
469
|
+
renderedRows.endRow += extension;
|
|
470
|
+
renderedRows.count += extension;
|
|
471
|
+
},
|
|
472
|
+
/**
|
|
473
|
+
* Column-axis mirror of {@link CalculatorFactory#stabilizeRenderedRowsBand}: keeps the rendered
|
|
474
|
+
* column band's size stable across a scroll-driven draw by extending the freshly computed band
|
|
475
|
+
* toward the inline end (past the viewport's edge) to the previous band's size. Without it, every
|
|
476
|
+
* other column-band shift adds/removes a TD per body row, a TH per header row, and a COL — dozens
|
|
477
|
+
* of structural DOM mutations per crossing, each triggering the host page's `:has()` style
|
|
478
|
+
* invalidation. The extra column is plain overscan: real data, clipped by the holder. The
|
|
479
|
+
* extension works on logical indexes, so it is direction-agnostic (RTL-safe).
|
|
480
|
+
*
|
|
481
|
+
* @this Viewport
|
|
482
|
+
* @param {ColumnsCalculationType | null} renderedColumns The freshly computed rendered-columns
|
|
483
|
+
* result, mutated in place. The previous band is read off `this.columnsRenderCalculator` (not yet
|
|
484
|
+
* overwritten at the call site).
|
|
485
|
+
*/ stabilizeRenderedColumnsBand (renderedColumns) {
|
|
486
|
+
const previousBand = this.columnsRenderCalculator;
|
|
487
|
+
if (!renderedColumns || !previousBand || renderedColumns.endColumn === null) {
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
const extension = bandStabilizationExtension(renderedColumns.endColumn, renderedColumns.count, previousBand.count, this.wtSettings.getSetting('totalColumns'));
|
|
491
|
+
renderedColumns.endColumn += extension;
|
|
492
|
+
renderedColumns.count += extension;
|
|
493
|
+
},
|
|
494
|
+
/**
|
|
495
|
+
* Returns information whether proposedFullyVisibleRowsCalculator viewport
|
|
496
|
+
* is contained inside rows rendered in previous draw (cached in rowsRenderCalculator).
|
|
497
|
+
*
|
|
498
|
+
* @this Viewport
|
|
499
|
+
* @param {ViewportRowsCalculator} proposedFullyVisibleRowsCalculator The instance of the fully visible rows viewport calculator to compare with.
|
|
500
|
+
* @param {ViewportRowsCalculator} proposedPartiallyVisibleRowsCalculator The instance of the partially visible rows viewport calculator to compare with.
|
|
501
|
+
* @returns {boolean} Returns `true` if all proposed visible rows are already rendered (meaning: redraw is not needed).
|
|
502
|
+
* Returns `false` if at least one proposed visible row is not already rendered (meaning: redraw is needed).
|
|
503
|
+
*/ areAllProposedVisibleRowsAlreadyRendered (proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator) {
|
|
504
|
+
if (!this.rowsVisibleCalculator || !this.rowsRenderCalculator || !proposedFullyVisibleRowsCalculator || !proposedPartiallyVisibleRowsCalculator) {
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
let { startRow, endRow } = proposedFullyVisibleRowsCalculator;
|
|
508
|
+
const { startRow: partiallyVisibleStartRow, endRow: partiallyVisibleEndRow } = proposedPartiallyVisibleRowsCalculator;
|
|
509
|
+
// if there are no fully visible rows at all...
|
|
510
|
+
if (startRow === null && endRow === null) {
|
|
511
|
+
if (!proposedFullyVisibleRowsCalculator.isVisibleInTrimmingContainer && partiallyVisibleStartRow !== null && !this.wtTable.isRowBeforeRenderedRows(partiallyVisibleStartRow) && partiallyVisibleEndRow !== null && !this.wtTable.isRowAfterRenderedRows(partiallyVisibleEndRow)) {
|
|
512
|
+
return true;
|
|
513
|
+
}
|
|
514
|
+
// ...use partially visible rows calculator to determine what render type is needed
|
|
515
|
+
startRow = partiallyVisibleStartRow;
|
|
516
|
+
endRow = partiallyVisibleEndRow;
|
|
517
|
+
}
|
|
518
|
+
if (startRow === null || endRow === null) {
|
|
519
|
+
return false;
|
|
520
|
+
}
|
|
521
|
+
const { startRow: renderedStartRow, endRow: renderedEndRow, rowStartOffset, rowEndOffset } = this.rowsRenderCalculator;
|
|
522
|
+
if (renderedStartRow === null || renderedEndRow === null) {
|
|
523
|
+
return false;
|
|
524
|
+
}
|
|
525
|
+
const totalRows = this.wtSettings.getSetting('totalRows') - 1;
|
|
526
|
+
const renderingThreshold = this.wtSettings.getSetting('viewportRowRenderingThreshold');
|
|
527
|
+
if (typeof renderingThreshold === 'number' && Number.isInteger(renderingThreshold) && renderingThreshold > 0) {
|
|
528
|
+
startRow = Math.max(0, startRow - Math.min(rowStartOffset, renderingThreshold));
|
|
529
|
+
endRow = Math.min(totalRows, endRow + Math.min(rowEndOffset, renderingThreshold));
|
|
530
|
+
} else if (renderingThreshold === 'auto') {
|
|
531
|
+
startRow = Math.max(0, startRow - Math.ceil(rowStartOffset / 2));
|
|
532
|
+
endRow = Math.min(totalRows, endRow + Math.ceil(rowEndOffset / 2));
|
|
533
|
+
}
|
|
534
|
+
if (startRow < renderedStartRow || startRow === renderedStartRow && startRow > 0) {
|
|
535
|
+
return false;
|
|
536
|
+
} else if (endRow > renderedEndRow || endRow === renderedEndRow && endRow < totalRows) {
|
|
537
|
+
return false;
|
|
538
|
+
}
|
|
539
|
+
return true;
|
|
540
|
+
},
|
|
541
|
+
/**
|
|
542
|
+
* Returns information whether proposedFullyVisibleColumnsCalculator viewport
|
|
543
|
+
* is contained inside column rendered in previous draw (cached in columnsRenderCalculator).
|
|
544
|
+
*
|
|
545
|
+
* @this Viewport
|
|
546
|
+
* @param {ViewportRowsCalculator} proposedFullyVisibleColumnsCalculator The instance of the fully visible columns viewport calculator to compare with.
|
|
547
|
+
* @param {ViewportRowsCalculator} proposedPartiallyVisibleColumnsCalculator The instance of the partially visible columns viewport calculator to compare with.
|
|
548
|
+
* @returns {boolean} Returns `true` if all proposed visible columns are already rendered (meaning: redraw is not needed).
|
|
549
|
+
* Returns `false` if at least one proposed visible column is not already rendered (meaning: redraw is needed).
|
|
550
|
+
*/ areAllProposedVisibleColumnsAlreadyRendered (proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator) {
|
|
551
|
+
if (!this.columnsVisibleCalculator || !this.columnsRenderCalculator || !proposedFullyVisibleColumnsCalculator || !proposedPartiallyVisibleColumnsCalculator) {
|
|
552
|
+
return false;
|
|
553
|
+
}
|
|
554
|
+
let { startColumn, endColumn } = proposedFullyVisibleColumnsCalculator;
|
|
555
|
+
const { startColumn: partiallyVisibleStartColumn, endColumn: partiallyVisibleEndColumn } = proposedPartiallyVisibleColumnsCalculator;
|
|
556
|
+
// if there are no fully visible columns at all...
|
|
557
|
+
if (startColumn === null && endColumn === null) {
|
|
558
|
+
if (!proposedFullyVisibleColumnsCalculator.isVisibleInTrimmingContainer && partiallyVisibleStartColumn !== null && !this.wtTable.isColumnBeforeRenderedColumns(partiallyVisibleStartColumn) && partiallyVisibleEndColumn !== null && !this.wtTable.isColumnAfterRenderedColumns(partiallyVisibleEndColumn)) {
|
|
559
|
+
return true;
|
|
560
|
+
}
|
|
561
|
+
// ...use partially visible columns calculator to determine what render type is needed
|
|
562
|
+
startColumn = partiallyVisibleStartColumn;
|
|
563
|
+
endColumn = partiallyVisibleEndColumn;
|
|
564
|
+
}
|
|
565
|
+
if (startColumn === null || endColumn === null) {
|
|
566
|
+
return false;
|
|
567
|
+
}
|
|
568
|
+
const { startColumn: renderedStartColumn, endColumn: renderedEndColumn, columnStartOffset, columnEndOffset } = this.columnsRenderCalculator;
|
|
569
|
+
if (renderedStartColumn === null || renderedEndColumn === null) {
|
|
570
|
+
return false;
|
|
571
|
+
}
|
|
572
|
+
const totalColumns = this.wtSettings.getSetting('totalColumns') - 1;
|
|
573
|
+
const renderingThreshold = this.wtSettings.getSetting('viewportColumnRenderingThreshold');
|
|
574
|
+
if (typeof renderingThreshold === 'number' && Number.isInteger(renderingThreshold) && renderingThreshold > 0) {
|
|
575
|
+
startColumn = Math.max(0, startColumn - Math.min(columnStartOffset, renderingThreshold));
|
|
576
|
+
endColumn = Math.min(totalColumns, endColumn + Math.min(columnEndOffset, renderingThreshold));
|
|
577
|
+
} else if (renderingThreshold === 'auto') {
|
|
578
|
+
startColumn = Math.max(0, startColumn - Math.ceil(columnStartOffset / 2));
|
|
579
|
+
endColumn = Math.min(totalColumns, endColumn + Math.ceil(columnEndOffset / 2));
|
|
580
|
+
}
|
|
581
|
+
if (startColumn < renderedStartColumn || startColumn === renderedStartColumn && startColumn > 0) {
|
|
582
|
+
return false;
|
|
583
|
+
} else if (endColumn > renderedEndColumn || endColumn === renderedEndColumn && endColumn < totalColumns) {
|
|
584
|
+
return false;
|
|
585
|
+
}
|
|
586
|
+
return true;
|
|
587
|
+
}
|
|
588
|
+
};
|