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
|
@@ -49,15 +49,15 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
49
49
|
privateSet.add(obj);
|
|
50
50
|
}
|
|
51
51
|
import { BasePlugin } from '../base/index.mjs';
|
|
52
|
-
import {
|
|
52
|
+
import { cancelIdleTask, requestIdleTask } from '../../helpers/feature.mjs';
|
|
53
53
|
import GhostTable from '../../utils/ghostTable.mjs';
|
|
54
54
|
import { Hooks } from '../../core/hooks/index.mjs';
|
|
55
55
|
import { isObject } from '../../helpers/object.mjs';
|
|
56
56
|
import { valueAccordingPercent, rangeEach } from '../../helpers/number.mjs';
|
|
57
57
|
import SamplesGenerator from '../../utils/samplesGenerator.mjs';
|
|
58
58
|
import { isPercentValue } from '../../helpers/string.mjs';
|
|
59
|
+
import { formatCellValue } from '../../renderers/renderCell.mjs';
|
|
59
60
|
import { DEFAULT_COLUMN_WIDTH } from '../../3rdparty/walkontable/src/index.mjs';
|
|
60
|
-
import { PhysicalIndexToValueMap as IndexToValueMap } from '../../translations/index.mjs';
|
|
61
61
|
Hooks.getSingleton().register('modifyAutoColumnSizeSeed');
|
|
62
62
|
export const PLUGIN_KEY = 'autoColumnSize';
|
|
63
63
|
export const PLUGIN_PRIORITY = 10;
|
|
@@ -72,41 +72,123 @@ var /**
|
|
|
72
72
|
*
|
|
73
73
|
* @type {Array}
|
|
74
74
|
*/ _cachedColumnHeaders = /*#__PURE__*/ new WeakMap(), /**
|
|
75
|
-
*
|
|
75
|
+
* Pending width refresh requests keyed by visual column index, consumed before the next render.
|
|
76
|
+
* A `null` value means the column needs a full row-range rescan. An array value holds the
|
|
77
|
+
* changed cells (visual row index and the previous cell value) used by the width-determiner
|
|
78
|
+
* probe, which measures only the changed cells and skips the full rescan when the edit could
|
|
79
|
+
* not have changed the column's width.
|
|
76
80
|
*
|
|
77
|
-
* @type {number
|
|
78
|
-
*/
|
|
81
|
+
* @type {Map<number, Array<object>|null>}
|
|
82
|
+
*/ _columnWidthsToRefresh = /*#__PURE__*/ new WeakMap(), /**
|
|
83
|
+
* Caches the sampled values (a handful of bucketed strings per column) collected by the last
|
|
84
|
+
* full row-range scan, keyed by physical column index. Forced renders re-measure the visible
|
|
85
|
+
* columns by re-rendering these samples through the ghost table — picking up CSS or renderer
|
|
86
|
+
* changes — instead of re-walking the whole row range. The cache is dropped whenever the row
|
|
87
|
+
* set or the source data changes in a way the width refresh queue cannot describe, which
|
|
88
|
+
* makes the next re-measure fall back to a full scan.
|
|
89
|
+
*
|
|
90
|
+
* @type {Map<number, Map>}
|
|
91
|
+
*/ _columnSamplesCache = /*#__PURE__*/ new WeakMap(), /**
|
|
79
92
|
* Disposer function for the column widths map observer. Called on disable to clean up.
|
|
80
93
|
*
|
|
81
94
|
* @type {Function|null}
|
|
82
95
|
*/ _disposeMapObserver = /*#__PURE__*/ new WeakMap(), /**
|
|
83
|
-
*
|
|
96
|
+
* Consumes the width refresh queue. Columns queued with change details go through the
|
|
97
|
+
* width-determiner probe first; columns queued for a full refresh (and columns whose probe
|
|
98
|
+
* was inconclusive) are rescanned over the whole row range, like before.
|
|
99
|
+
*/ _refreshQueuedColumnsWidth = /*#__PURE__*/ new WeakSet(), /**
|
|
100
|
+
* Measures only the changed cells of the queued columns and decides, per column, whether the
|
|
101
|
+
* cached width is still valid, can be grown in place, or whether the column needs a full
|
|
102
|
+
* row-range rescan (appended to `fullRescanColumns`).
|
|
103
|
+
*
|
|
104
|
+
* The probe measures pure cell widths (ghost table headers disabled) and reasons as follows:
|
|
105
|
+
* - when a new value renders wider than the cached width, that value is the new widest cell
|
|
106
|
+
* and the width is grown in place, without a rescan;
|
|
107
|
+
* - otherwise, when every previous value renders narrower than the cached width, the changed
|
|
108
|
+
* cells were not the width determiners and the cached width stays valid;
|
|
109
|
+
* - otherwise a previous value could have determined the cached width, so the column is
|
|
110
|
+
* rescanned to find the new widest cell (this is what allows the column to shrink).
|
|
111
|
+
*
|
|
112
|
+
* @param {object[]} probes The queued columns with their changed cells and cached widths.
|
|
113
|
+
* @param {number[]} fullRescanColumns The list that columns needing a full rescan are appended to.
|
|
114
|
+
*/ _probeChangedCellsWidth = /*#__PURE__*/ new WeakSet(), /**
|
|
115
|
+
* Keeps the column's cached samples usable after an in-place decision: strings sampled from
|
|
116
|
+
* the changed rows are evicted (their values are stale now) and the freshly probed samples
|
|
117
|
+
* of the changed cells are merged in, so a later re-measure (e.g. after a CSS change) still
|
|
118
|
+
* sees the current values — including the one that grew the column. Columns without a cache
|
|
119
|
+
* entry are left without one — an incomplete entry would make a later re-measure compute the
|
|
120
|
+
* width from the changed cells alone.
|
|
121
|
+
*
|
|
122
|
+
* @param {object} probe The probed column with its changed cells.
|
|
123
|
+
* @param {Map} [samples] Freshly probed samples of the changed cells to merge in.
|
|
124
|
+
*/ _updateCachedSamples = /*#__PURE__*/ new WeakSet(), /**
|
|
125
|
+
* Measures the rendered width of the given per-column sample maps with the ghost table, with
|
|
126
|
+
* headers disabled — a header rendered next to the samples would put a floor under every
|
|
127
|
+
* measurement and mask the comparison against the cached width.
|
|
84
128
|
*
|
|
85
|
-
* @param {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
*
|
|
129
|
+
* @param {object[]} items An array of `{ visualColumn, samples }` objects to measure.
|
|
130
|
+
* @returns {Map<number, number>} Measured widths keyed by visual column index.
|
|
131
|
+
*/ _measureCellsWidth = /*#__PURE__*/ new WeakSet(), /**
|
|
132
|
+
* Formats a probed value the way the render path would — cell-level `valueFormatter` first,
|
|
133
|
+
* then the renderer's own static — so the measured string matches what the renderer produces.
|
|
134
|
+
*
|
|
135
|
+
* @param {number} row Visual row index.
|
|
136
|
+
* @param {number} column Visual column index.
|
|
137
|
+
* @param {*} value The raw value to format.
|
|
138
|
+
* @returns {*}
|
|
139
|
+
*/ _formatProbeValue = /*#__PURE__*/ new WeakSet(), /**
|
|
140
|
+
* Generates content samples for the given column within the row range, adds each sample
|
|
141
|
+
* to the ghost table so its rendered width can be measured, and refreshes the column's
|
|
142
|
+
* samples cache.
|
|
89
143
|
*/ _fillGhostTableWithSamples = /*#__PURE__*/ new WeakSet(), /**
|
|
144
|
+
* Adds a column to the ghost table, passing a shallow clone of the samples map — the ghost
|
|
145
|
+
* table's `clean()` empties the last map it received, which must never wipe a map that is
|
|
146
|
+
* kept in the samples cache.
|
|
147
|
+
*
|
|
148
|
+
* @param {number} visualColumn Visual column index.
|
|
149
|
+
* @param {Map} samples The samples map to measure.
|
|
150
|
+
*/ _addGhostTableColumn = /*#__PURE__*/ new WeakSet(), /**
|
|
90
151
|
* Updates the column widths map with calculated widths from the ghost table.
|
|
91
152
|
*
|
|
92
153
|
*/ _updateColumnWidthsMapBasedOnGhostTable = /*#__PURE__*/ new WeakSet(), /**
|
|
93
|
-
* Recalculates widths for currently visible columns
|
|
94
|
-
*
|
|
154
|
+
* Recalculates widths for currently visible columns (cache misses only) and consumes the
|
|
155
|
+
* width refresh queue populated by data, header, or row-set changes.
|
|
95
156
|
*/ _onBeforeRender = /*#__PURE__*/ new WeakMap(), /**
|
|
96
157
|
* Triggers a full column width recalculation after new data is loaded, skipping the initial
|
|
97
158
|
* load since `#onInit` already handles it.
|
|
98
159
|
*/ _onAfterLoadData = /*#__PURE__*/ new WeakMap(), /**
|
|
99
|
-
* Queues the
|
|
100
|
-
*
|
|
160
|
+
* Queues the cells affected by the incoming changes, keyed by their visual column, so the
|
|
161
|
+
* width-determiner probe can decide before the next render whether each column's width
|
|
162
|
+
* actually needs a refresh.
|
|
101
163
|
*/ _onBeforeChange = /*#__PURE__*/ new WeakMap(), /**
|
|
164
|
+
* Drops the cached samples after a source-data write. Source-level changes bypass
|
|
165
|
+
* `beforeChangeRender`, so there is no per-cell change information to refresh the samples
|
|
166
|
+
* with — the render that follows falls back to full scans for the visible columns.
|
|
167
|
+
*/ _onAfterSetSourceDataAtCell = /*#__PURE__*/ new WeakMap(), /**
|
|
168
|
+
* Drops the cached samples of a column whose cell meta changed. Meta keys like
|
|
169
|
+
* `valueFormatter`, `renderer`, `className`, or `type` affect the rendered width, and the
|
|
170
|
+
* cached sample strings (formatted when they were sampled) would replay the previous meta
|
|
171
|
+
* on the next re-measure — the next full render re-walks the column instead.
|
|
172
|
+
*/ _onAfterSetCellMeta = /*#__PURE__*/ new WeakMap(), /**
|
|
173
|
+
* Drops the cached samples when the set of rows that feeds the width calculation changes
|
|
174
|
+
* (rows inserted, removed, moved, trimmed, or hidden). Sampling skips hidden rows and the
|
|
175
|
+
* samples carry row coordinates, so a changed row set invalidates them — the next re-measure
|
|
176
|
+
* falls back to a full scan, which lets a column shrink when its widest cell disappears.
|
|
177
|
+
*/ _onRowIndexMapperCacheUpdate = /*#__PURE__*/ new WeakMap(), /**
|
|
178
|
+
* Drops the cached samples when the column sequence changes (columns inserted, removed, or
|
|
179
|
+
* moved) — the cache is keyed by physical column index, and a structural change would leave
|
|
180
|
+
* the samples associated with the wrong columns.
|
|
181
|
+
*/ _onColumnIndexMapperCacheUpdate = /*#__PURE__*/ new WeakMap(), /**
|
|
102
182
|
* Recalculates the column width from content on a double-click and returns it as the new
|
|
103
183
|
* size; returns the user-dragged size otherwise.
|
|
104
184
|
*/ _onBeforeColumnResize = /*#__PURE__*/ new WeakMap(), /**
|
|
105
185
|
* Initializes the column header cache and triggers the first full column width recalculation
|
|
106
186
|
* after Handsontable has finished initializing.
|
|
107
187
|
*/ _onInit = /*#__PURE__*/ new WeakMap(), /**
|
|
108
|
-
* Queues
|
|
109
|
-
*
|
|
188
|
+
* Queues cells whose formula results changed so their columns' widths are refreshed before
|
|
189
|
+
* the next render. The engine does not carry previous values, so the probe can only grow the
|
|
190
|
+
* width in place — a potential shrink falls back to a full column rescan. Skips changes
|
|
191
|
+
* belonging to a different sheet.
|
|
110
192
|
*/ _onAfterFormulasValuesUpdate = /*#__PURE__*/ new WeakMap();
|
|
111
193
|
/**
|
|
112
194
|
* @plugin AutoColumnSize
|
|
@@ -155,6 +237,12 @@ var /**
|
|
|
155
237
|
* }
|
|
156
238
|
* ```
|
|
157
239
|
*
|
|
240
|
+
* ::: tip
|
|
241
|
+
* If you use custom renderers or custom styles that produce non-standard column widths, and you call
|
|
242
|
+
* {@link Core#scrollViewportTo}, make sure `AutoColumnSize` is enabled. Without it, `scrollViewportTo()` calculates
|
|
243
|
+
* scroll positions based on incorrect column widths and may scroll to an incorrect position.
|
|
244
|
+
* :::
|
|
245
|
+
*
|
|
158
246
|
* To configure this plugin see {@link Options#autoColumnSize}.
|
|
159
247
|
*
|
|
160
248
|
* @example
|
|
@@ -285,6 +373,14 @@ var /**
|
|
|
285
373
|
return 50;
|
|
286
374
|
}
|
|
287
375
|
/**
|
|
376
|
+
* Returns the maximum number of cells sampled in a single asynchronous calculation step. Together
|
|
377
|
+
* with {@link AutoColumnSize.CALCULATION_STEP} it bounds the work done per animation frame: a
|
|
378
|
+
* column whose row range exceeds the budget is swept across multiple frames, and its width is
|
|
379
|
+
* written once, when the sweep completes.
|
|
380
|
+
*/ static get CALCULATION_CELLS_BUDGET() {
|
|
381
|
+
return 100000;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
288
384
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
|
289
385
|
* hook and if it returns `true` then the {@link #enablePlugin} method is called.
|
|
290
386
|
*
|
|
@@ -306,10 +402,14 @@ var /**
|
|
|
306
402
|
}
|
|
307
403
|
this.addHook('afterLoadData', _class_private_field_get(this, _onAfterLoadData));
|
|
308
404
|
this.addHook('beforeChangeRender', _class_private_field_get(this, _onBeforeChange));
|
|
405
|
+
this.addHook('afterSetCellMeta', _class_private_field_get(this, _onAfterSetCellMeta));
|
|
406
|
+
this.addHook('afterSetSourceDataAtCell', _class_private_field_get(this, _onAfterSetSourceDataAtCell));
|
|
309
407
|
this.addHook('afterFormulasValuesUpdate', _class_private_field_get(this, _onAfterFormulasValuesUpdate));
|
|
310
408
|
this.addHook('beforeRender', _class_private_field_get(this, _onBeforeRender));
|
|
311
409
|
this.addHook('modifyColWidth', (width, col)=>this.getColumnWidth(col, width), -10);
|
|
312
410
|
this.addHook('init', _class_private_field_get(this, _onInit));
|
|
411
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', _class_private_field_get(this, _onRowIndexMapperCacheUpdate));
|
|
412
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', _class_private_field_get(this, _onColumnIndexMapperCacheUpdate));
|
|
313
413
|
_class_private_field_set(this, _disposeMapObserver, this.hot.columnIndexMapper.observeMapChange(this.columnWidthsMap, ()=>{
|
|
314
414
|
this.hot.view?.invalidateColumnWidthCache();
|
|
315
415
|
}));
|
|
@@ -318,7 +418,12 @@ var /**
|
|
|
318
418
|
/**
|
|
319
419
|
* Updates the plugin's state. This method is executed when {@link Core#updateSettings} is invoked.
|
|
320
420
|
*/ updatePlugin() {
|
|
321
|
-
|
|
421
|
+
this.findColumnsWhereHeaderWasChanged().forEach((visualColumn)=>{
|
|
422
|
+
_class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, null);
|
|
423
|
+
});
|
|
424
|
+
// Settings may remap the data that feeds the samples (e.g. a new `columns` definition), so
|
|
425
|
+
// the cached samples cannot be trusted — the next re-measure falls back to a full scan.
|
|
426
|
+
_class_private_field_get(this, _columnSamplesCache).clear();
|
|
322
427
|
super.updatePlugin();
|
|
323
428
|
}
|
|
324
429
|
/**
|
|
@@ -328,6 +433,8 @@ var /**
|
|
|
328
433
|
_class_private_field_get(this, _disposeMapObserver).call(this);
|
|
329
434
|
_class_private_field_set(this, _disposeMapObserver, null);
|
|
330
435
|
}
|
|
436
|
+
this.hot.rowIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onRowIndexMapperCacheUpdate));
|
|
437
|
+
this.hot.columnIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onColumnIndexMapperCacheUpdate));
|
|
331
438
|
super.disablePlugin();
|
|
332
439
|
// Leave the listener active to allow auto-sizing the columns when the plugin is disabled.
|
|
333
440
|
// This is necessary for width recalculation for resize handler doubleclick (ManualColumnResize).
|
|
@@ -378,7 +485,15 @@ var /**
|
|
|
378
485
|
physicalColumn = visualColumn;
|
|
379
486
|
}
|
|
380
487
|
if (overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
381
|
-
|
|
488
|
+
const cachedSamples = overwriteCache ? _class_private_field_get(this, _columnSamplesCache).get(physicalColumn) : undefined;
|
|
489
|
+
// A re-measure (cache overwrite) with an intact samples cache re-renders the previously
|
|
490
|
+
// sampled values — picking up CSS or renderer changes — without re-walking the row range.
|
|
491
|
+
// Data changes refresh or drop the cached samples, so a full scan runs only when needed.
|
|
492
|
+
if (cachedSamples !== undefined) {
|
|
493
|
+
_class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, visualColumn, cachedSamples);
|
|
494
|
+
} else {
|
|
495
|
+
_class_private_method_get(this, _fillGhostTableWithSamples, fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
496
|
+
}
|
|
382
497
|
}
|
|
383
498
|
});
|
|
384
499
|
if (this.ghostTable.columns.length) {
|
|
@@ -397,42 +512,102 @@ var /**
|
|
|
397
512
|
from: 0,
|
|
398
513
|
to: this.hot.countRows() - 1
|
|
399
514
|
}, overwriteCache = false) {
|
|
400
|
-
|
|
401
|
-
|
|
515
|
+
const rowsRange = typeof rowRange === 'number' ? {
|
|
516
|
+
from: rowRange,
|
|
517
|
+
to: rowRange
|
|
518
|
+
} : rowRange;
|
|
519
|
+
const lastColumn = this.hot.countCols() - 1;
|
|
520
|
+
let currentColumn = 0;
|
|
521
|
+
let currentRowCursor = rowsRange.from;
|
|
522
|
+
let columnSamples = null;
|
|
402
523
|
let timer = 0;
|
|
403
524
|
this.inProgress = true;
|
|
525
|
+
const shouldMeasureColumn = (visualColumn)=>{
|
|
526
|
+
let physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
527
|
+
if (physicalColumn === null) {
|
|
528
|
+
physicalColumn = visualColumn;
|
|
529
|
+
}
|
|
530
|
+
return overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn);
|
|
531
|
+
};
|
|
532
|
+
/**
|
|
533
|
+
* Sweeps up to `columnsBudget` columns, sampling at most `cellsBudget` cells. A column whose
|
|
534
|
+
* remaining row range exceeds the cells budget is left mid-sweep (its samples accumulate in
|
|
535
|
+
* `columnSamples`) and is continued by the next call. Returns `true` when every column has
|
|
536
|
+
* been processed.
|
|
537
|
+
*
|
|
538
|
+
* @param {number} columnsBudget The maximum number of columns to process in this chunk.
|
|
539
|
+
* @param {number} cellsBudget The maximum number of cells to sample in this chunk.
|
|
540
|
+
* @returns {boolean}
|
|
541
|
+
*/ const processChunk = (columnsBudget, cellsBudget)=>{
|
|
542
|
+
let remainingColumns = columnsBudget;
|
|
543
|
+
let remainingCells = cellsBudget;
|
|
544
|
+
while(remainingColumns > 0 && currentColumn <= lastColumn){
|
|
545
|
+
if (columnSamples === null) {
|
|
546
|
+
if (!shouldMeasureColumn(currentColumn)) {
|
|
547
|
+
currentColumn += 1;
|
|
548
|
+
remainingColumns -= 1;
|
|
549
|
+
continue;
|
|
550
|
+
}
|
|
551
|
+
columnSamples = new Map();
|
|
552
|
+
currentRowCursor = rowsRange.from;
|
|
553
|
+
}
|
|
554
|
+
if (currentRowCursor <= rowsRange.to) {
|
|
555
|
+
if (remainingCells <= 0) {
|
|
556
|
+
return false;
|
|
557
|
+
}
|
|
558
|
+
const sliceTo = Math.min(rowsRange.to, currentRowCursor + remainingCells - 1);
|
|
559
|
+
this.samplesGenerator.generateSample('col', {
|
|
560
|
+
from: currentRowCursor,
|
|
561
|
+
to: sliceTo
|
|
562
|
+
}, currentColumn, columnSamples);
|
|
563
|
+
remainingCells -= sliceTo - currentRowCursor + 1;
|
|
564
|
+
currentRowCursor = sliceTo + 1;
|
|
565
|
+
}
|
|
566
|
+
if (currentRowCursor > rowsRange.to) {
|
|
567
|
+
const physicalColumn = this.hot.toPhysicalColumn(currentColumn);
|
|
568
|
+
_class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, currentColumn, columnSamples);
|
|
569
|
+
_class_private_field_get(this, _columnSamplesCache).set(physicalColumn === null ? currentColumn : physicalColumn, columnSamples);
|
|
570
|
+
columnSamples = null;
|
|
571
|
+
currentColumn += 1;
|
|
572
|
+
remainingColumns -= 1;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
return currentColumn > lastColumn;
|
|
576
|
+
};
|
|
577
|
+
const flushGhostTable = ()=>{
|
|
578
|
+
if (this.ghostTable.columns.length) {
|
|
579
|
+
_class_private_method_get(this, _updateColumnWidthsMapBasedOnGhostTable, updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
580
|
+
this.measuredColumns = currentColumn;
|
|
581
|
+
this.ghostTable.clean();
|
|
582
|
+
}
|
|
583
|
+
};
|
|
404
584
|
const loop = ()=>{
|
|
405
585
|
// When hot was destroyed after calculating finished cancel frame
|
|
406
586
|
if (!this.hot) {
|
|
407
|
-
|
|
587
|
+
cancelIdleTask(timer);
|
|
408
588
|
this.inProgress = false;
|
|
409
589
|
return;
|
|
410
590
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
current = current + AutoColumnSize.CALCULATION_STEP + 1;
|
|
416
|
-
if (current < length) {
|
|
417
|
-
timer = requestAnimationFrame(loop);
|
|
591
|
+
const isDone = processChunk(AutoColumnSize.CALCULATION_STEP + 1, AutoColumnSize.CALCULATION_CELLS_BUDGET);
|
|
592
|
+
flushGhostTable();
|
|
593
|
+
if (!isDone) {
|
|
594
|
+
timer = requestIdleTask(loop);
|
|
418
595
|
} else {
|
|
419
|
-
|
|
596
|
+
cancelIdleTask(timer);
|
|
420
597
|
this.inProgress = false;
|
|
421
598
|
// @TODO Should call once per render cycle, currently fired separately in different plugins
|
|
422
599
|
this.hot.view.adjustElementsSize();
|
|
423
600
|
}
|
|
424
601
|
};
|
|
425
602
|
const syncLimit = this.getSyncCalculationLimit();
|
|
426
|
-
// sync
|
|
603
|
+
// sync — the `syncLimit` columns are calculated exactly (whole row range) before the first
|
|
604
|
+
// paint, preserving the `syncLimit` contract.
|
|
427
605
|
if (syncLimit >= 0) {
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
to: syncLimit
|
|
431
|
-
}, rowRange, overwriteCache);
|
|
432
|
-
current = syncLimit + 1;
|
|
606
|
+
processChunk(syncLimit + 1, Infinity);
|
|
607
|
+
flushGhostTable();
|
|
433
608
|
}
|
|
434
609
|
// async
|
|
435
|
-
if (
|
|
610
|
+
if (currentColumn <= lastColumn) {
|
|
436
611
|
loop();
|
|
437
612
|
} else {
|
|
438
613
|
this.inProgress = false;
|
|
@@ -442,10 +617,21 @@ var /**
|
|
|
442
617
|
* Recalculates all columns width (overwrite cache values).
|
|
443
618
|
*/ recalculateAllColumnsWidth() {
|
|
444
619
|
if (this.hot.view.isVisible()) {
|
|
620
|
+
// Every queued width refinement is subsumed by the full overwrite sweep — entries
|
|
621
|
+
// queued after this point (e.g. edits made while the asynchronous part is running)
|
|
622
|
+
// accumulate again and are consumed as usual.
|
|
623
|
+
_class_private_field_get(this, _columnWidthsToRefresh).clear();
|
|
445
624
|
this.calculateAllColumnsWidth({
|
|
446
625
|
from: 0,
|
|
447
626
|
to: this.hot.countRows() - 1
|
|
448
627
|
}, true);
|
|
628
|
+
// The synchronous part of the sweep runs inside `init`/`afterLoadData` hook cascades,
|
|
629
|
+
// before other plugins re-apply their cell meta (e.g. MergeCells' `spanned`/`hidden`
|
|
630
|
+
// flags), so the samples it collected cannot be trusted for later re-measures. Dropping
|
|
631
|
+
// them makes the next full render re-walk the visible columns with the settled meta,
|
|
632
|
+
// like it always did. Samples stored by the asynchronous part run after the cascade
|
|
633
|
+
// and stay.
|
|
634
|
+
_class_private_field_get(this, _columnSamplesCache).clear();
|
|
449
635
|
}
|
|
450
636
|
}
|
|
451
637
|
/**
|
|
@@ -489,6 +675,11 @@ var /**
|
|
|
489
675
|
/**
|
|
490
676
|
* Gets the first visible column.
|
|
491
677
|
*
|
|
678
|
+
* When the {@link MergeCells} plugin is enabled with its default `virtualized: false` setting, a merged
|
|
679
|
+
* cell that crosses the viewport edge extends the rendered column range. In that case this method can
|
|
680
|
+
* return a column index outside the strictly visible viewport. To read the actual visible viewport, use
|
|
681
|
+
* {@link Core#getFirstFullyVisibleColumn} or {@link Core#getFirstPartiallyVisibleColumn}.
|
|
682
|
+
*
|
|
492
683
|
* @returns {number} Returns visual column index, -1 if table is not rendered or if there are no columns to base the the calculations on.
|
|
493
684
|
*/ getFirstVisibleColumn() {
|
|
494
685
|
return this.hot.getFirstRenderedVisibleColumn() ?? -1;
|
|
@@ -496,6 +687,11 @@ var /**
|
|
|
496
687
|
/**
|
|
497
688
|
* Gets the last visible column.
|
|
498
689
|
*
|
|
690
|
+
* When the {@link MergeCells} plugin is enabled with its default `virtualized: false` setting, a merged
|
|
691
|
+
* cell that crosses the viewport edge extends the rendered column range. In that case this method can
|
|
692
|
+
* return a column index outside the strictly visible viewport. To read the actual visible viewport, use
|
|
693
|
+
* {@link Core#getLastFullyVisibleColumn} or {@link Core#getLastPartiallyVisibleColumn}.
|
|
694
|
+
*
|
|
499
695
|
* @returns {number} Returns visual column index or -1 if table is not rendered.
|
|
500
696
|
*/ getLastVisibleColumn() {
|
|
501
697
|
return this.hot.getLastRenderedVisibleColumn() ?? -1;
|
|
@@ -534,10 +730,12 @@ var /**
|
|
|
534
730
|
this.hot.batchExecution(()=>{
|
|
535
731
|
physicalColumns.forEach((physicalIndex)=>{
|
|
536
732
|
this.columnWidthsMap.setValueAtIndex(physicalIndex, null);
|
|
733
|
+
_class_private_field_get(this, _columnSamplesCache).delete(physicalIndex);
|
|
537
734
|
});
|
|
538
735
|
}, true);
|
|
539
736
|
} else {
|
|
540
737
|
this.columnWidthsMap.clear();
|
|
738
|
+
_class_private_field_get(this, _columnSamplesCache).clear();
|
|
541
739
|
}
|
|
542
740
|
}
|
|
543
741
|
/**
|
|
@@ -550,19 +748,24 @@ var /**
|
|
|
550
748
|
/**
|
|
551
749
|
* Destroys the plugin instance.
|
|
552
750
|
*/ destroy() {
|
|
751
|
+
this.hot?.rowIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onRowIndexMapperCacheUpdate));
|
|
752
|
+
this.hot?.columnIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onColumnIndexMapperCacheUpdate));
|
|
553
753
|
this.ghostTable.clean();
|
|
554
754
|
super.destroy();
|
|
555
755
|
}
|
|
556
756
|
/**
|
|
557
757
|
* Initializes the plugin, registers the column widths map, and sets up the column resize hook.
|
|
558
758
|
*/ constructor(hotInstance){
|
|
559
|
-
super(hotInstance), _class_private_method_init(this,
|
|
759
|
+
super(hotInstance), _class_private_method_init(this, _refreshQueuedColumnsWidth), _class_private_method_init(this, _probeChangedCellsWidth), _class_private_method_init(this, _updateCachedSamples), _class_private_method_init(this, _measureCellsWidth), _class_private_method_init(this, _formatProbeValue), _class_private_method_init(this, _fillGhostTableWithSamples), _class_private_method_init(this, _addGhostTableColumn), _class_private_method_init(this, _updateColumnWidthsMapBasedOnGhostTable), _class_private_field_init(this, _isInitialized, {
|
|
560
760
|
writable: true,
|
|
561
761
|
value: void 0
|
|
562
762
|
}), _class_private_field_init(this, _cachedColumnHeaders, {
|
|
563
763
|
writable: true,
|
|
564
764
|
value: void 0
|
|
565
|
-
}), _class_private_field_init(this,
|
|
765
|
+
}), _class_private_field_init(this, _columnWidthsToRefresh, {
|
|
766
|
+
writable: true,
|
|
767
|
+
value: void 0
|
|
768
|
+
}), _class_private_field_init(this, _columnSamplesCache, {
|
|
566
769
|
writable: true,
|
|
567
770
|
value: void 0
|
|
568
771
|
}), _class_private_field_init(this, _disposeMapObserver, {
|
|
@@ -577,6 +780,18 @@ var /**
|
|
|
577
780
|
}), _class_private_field_init(this, _onBeforeChange, {
|
|
578
781
|
writable: true,
|
|
579
782
|
value: void 0
|
|
783
|
+
}), _class_private_field_init(this, _onAfterSetSourceDataAtCell, {
|
|
784
|
+
writable: true,
|
|
785
|
+
value: void 0
|
|
786
|
+
}), _class_private_field_init(this, _onAfterSetCellMeta, {
|
|
787
|
+
writable: true,
|
|
788
|
+
value: void 0
|
|
789
|
+
}), _class_private_field_init(this, _onRowIndexMapperCacheUpdate, {
|
|
790
|
+
writable: true,
|
|
791
|
+
value: void 0
|
|
792
|
+
}), _class_private_field_init(this, _onColumnIndexMapperCacheUpdate, {
|
|
793
|
+
writable: true,
|
|
794
|
+
value: void 0
|
|
580
795
|
}), _class_private_field_init(this, _onBeforeColumnResize, {
|
|
581
796
|
writable: true,
|
|
582
797
|
value: void 0
|
|
@@ -603,7 +818,11 @@ var /**
|
|
|
603
818
|
if (this.hot.rowIndexMapper.isHidden(physicalRow) || this.hot.columnIndexMapper.isHidden(physicalColumn)) {
|
|
604
819
|
return false;
|
|
605
820
|
}
|
|
606
|
-
|
|
821
|
+
// The transient read resolves the full dynamic meta (hooks + `cells`, so `hidden`/`spanned`
|
|
822
|
+
// from merged cells work) without storing anything - this sampler sweeps the whole row range
|
|
823
|
+
// per column, and the eager `getCellMeta` would permanently materialize one meta per visited
|
|
824
|
+
// cell (O(rows x columns) retention on init).
|
|
825
|
+
const cellMeta = this.hot.getCellMetaTransient(row, column);
|
|
607
826
|
let cellValue = '';
|
|
608
827
|
let seedValue = '';
|
|
609
828
|
if (cellMeta.hidden) {
|
|
@@ -611,13 +830,10 @@ var /**
|
|
|
611
830
|
return false;
|
|
612
831
|
}
|
|
613
832
|
if (!cellMeta.spanned) {
|
|
614
|
-
|
|
615
|
-
//
|
|
616
|
-
cellValue =
|
|
617
|
-
|
|
618
|
-
cellValue = cellMeta.valueFormatter(cellValue, cellMeta);
|
|
619
|
-
seedValue = cellValue;
|
|
620
|
-
}
|
|
833
|
+
// Format through the same precedence as the render path (cell-level `valueFormatter`, then
|
|
834
|
+
// the renderer's own static), so the measured string matches what the renderer produces.
|
|
835
|
+
cellValue = formatCellValue(this.hot.getDataAtCell(row, column), cellMeta, this.hot.getCellRenderer(cellMeta));
|
|
836
|
+
seedValue = cellValue;
|
|
621
837
|
}
|
|
622
838
|
let bundleSeed = '';
|
|
623
839
|
if (this.hot.hasHook('modifyAutoColumnSizeSeed')) {
|
|
@@ -635,30 +851,63 @@ var /**
|
|
|
635
851
|
* Number of already measured columns (we already know their sizes).
|
|
636
852
|
*
|
|
637
853
|
* @type {number}
|
|
638
|
-
*/ this.measuredColumns = 0,
|
|
639
|
-
* PhysicalIndexToValueMap to keep and track widths for physical column indexes.
|
|
640
|
-
*
|
|
641
|
-
* @private
|
|
642
|
-
* @type {PhysicalIndexToValueMap}
|
|
643
|
-
*/ this.columnWidthsMap = new IndexToValueMap(), _class_private_field_set(this, _isInitialized, false), _class_private_field_set(this, _cachedColumnHeaders, []), _class_private_field_set(this, _visualColumnsToRefresh, []), _class_private_field_set(this, _disposeMapObserver, null), _class_private_field_set(this, _onBeforeRender, ()=>{
|
|
854
|
+
*/ this.measuredColumns = 0, _class_private_field_set(this, _isInitialized, false), _class_private_field_set(this, _cachedColumnHeaders, []), _class_private_field_set(this, _columnWidthsToRefresh, new Map()), _class_private_field_set(this, _columnSamplesCache, new Map()), _class_private_field_set(this, _disposeMapObserver, null), _class_private_field_set(this, _onBeforeRender, ()=>{
|
|
644
855
|
this.calculateVisibleColumnsWidth();
|
|
645
856
|
if (!this.inProgress) {
|
|
646
|
-
_class_private_method_get(this,
|
|
647
|
-
_class_private_field_set(this, _visualColumnsToRefresh, []);
|
|
857
|
+
_class_private_method_get(this, _refreshQueuedColumnsWidth, refreshQueuedColumnsWidth).call(this);
|
|
648
858
|
}
|
|
649
859
|
}), _class_private_field_set(this, _onAfterLoadData, (_sourceData, isFirstLoad)=>{
|
|
860
|
+
// Queued cells describe the previous dataset — their rows and previous values are
|
|
861
|
+
// meaningless once the data is replaced. Cleared unconditionally (even when the view is
|
|
862
|
+
// not visible and no sweep runs), so a pending entry that survived a suspended render
|
|
863
|
+
// can never feed the width-determiner probe with stale coordinates.
|
|
864
|
+
_class_private_field_get(this, _columnWidthsToRefresh).clear();
|
|
650
865
|
if (!isFirstLoad) {
|
|
651
866
|
this.recalculateAllColumnsWidth();
|
|
652
867
|
}
|
|
653
868
|
}), _class_private_field_set(this, _onBeforeChange, (changes)=>{
|
|
654
|
-
|
|
869
|
+
changes.forEach(([row, columnProperty, oldValue])=>{
|
|
870
|
+
if (typeof columnProperty === 'function') {
|
|
871
|
+
return;
|
|
872
|
+
}
|
|
655
873
|
const visualColumn = this.hot.propToCol(columnProperty);
|
|
656
|
-
if (visualColumn
|
|
657
|
-
|
|
874
|
+
if (visualColumn === null || !Number.isInteger(visualColumn)) {
|
|
875
|
+
return;
|
|
876
|
+
}
|
|
877
|
+
const entry = _class_private_field_get(this, _columnWidthsToRefresh).get(visualColumn);
|
|
878
|
+
// The column is already queued for a full rescan.
|
|
879
|
+
if (entry === null) {
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
const cell = {
|
|
883
|
+
row,
|
|
884
|
+
oldValue,
|
|
885
|
+
hasOldValue: true
|
|
886
|
+
};
|
|
887
|
+
if (entry === undefined) {
|
|
888
|
+
_class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, [
|
|
889
|
+
cell
|
|
890
|
+
]);
|
|
891
|
+
} else {
|
|
892
|
+
entry.push(cell);
|
|
658
893
|
}
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
_class_private_field_get(this,
|
|
894
|
+
});
|
|
895
|
+
}), _class_private_field_set(this, _onAfterSetSourceDataAtCell, ()=>{
|
|
896
|
+
_class_private_field_get(this, _columnSamplesCache).clear();
|
|
897
|
+
}), _class_private_field_set(this, _onAfterSetCellMeta, (_row, column)=>{
|
|
898
|
+
const physicalColumn = this.hot.toPhysicalColumn(column);
|
|
899
|
+
if (physicalColumn !== null) {
|
|
900
|
+
_class_private_field_get(this, _columnSamplesCache).delete(physicalColumn);
|
|
901
|
+
}
|
|
902
|
+
}), _class_private_field_set(this, _onRowIndexMapperCacheUpdate, (indexesChangesState)=>{
|
|
903
|
+
const { indexesSequenceChanged, trimmedIndexesChanged, hiddenIndexesChanged } = indexesChangesState;
|
|
904
|
+
if (indexesSequenceChanged || trimmedIndexesChanged || hiddenIndexesChanged) {
|
|
905
|
+
_class_private_field_get(this, _columnSamplesCache).clear();
|
|
906
|
+
}
|
|
907
|
+
}), _class_private_field_set(this, _onColumnIndexMapperCacheUpdate, (indexesChangesState)=>{
|
|
908
|
+
if (indexesChangesState.indexesSequenceChanged) {
|
|
909
|
+
_class_private_field_get(this, _columnSamplesCache).clear();
|
|
910
|
+
}
|
|
662
911
|
}), _class_private_field_set(this, _onBeforeColumnResize, (size, column, isDblClick)=>{
|
|
663
912
|
let newSize = size;
|
|
664
913
|
if (isDblClick) {
|
|
@@ -676,50 +925,226 @@ var /**
|
|
|
676
925
|
}
|
|
677
926
|
const formulasPlugin = this.hot.getPlugin('formulas');
|
|
678
927
|
const sheetId = formulasPlugin?.sheetId;
|
|
679
|
-
|
|
928
|
+
changes.forEach((change)=>{
|
|
680
929
|
const changeRecord = change;
|
|
681
|
-
|
|
682
|
-
|
|
930
|
+
const address = changeRecord.address;
|
|
931
|
+
if (sheetId !== null && sheetId !== undefined && address?.sheet !== sheetId) {
|
|
932
|
+
return;
|
|
683
933
|
}
|
|
684
|
-
const physicalColumn = Number(
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
934
|
+
const physicalColumn = Number(address?.col);
|
|
935
|
+
const physicalRow = Number(address?.row);
|
|
936
|
+
if (!Number.isInteger(physicalColumn)) {
|
|
937
|
+
return;
|
|
938
|
+
}
|
|
939
|
+
const visualColumn = this.hot.toVisualColumn(physicalColumn);
|
|
940
|
+
if (visualColumn === null) {
|
|
941
|
+
return;
|
|
690
942
|
}
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
943
|
+
const entry = _class_private_field_get(this, _columnWidthsToRefresh).get(visualColumn);
|
|
944
|
+
// The column is already queued for a full rescan.
|
|
945
|
+
if (entry === null) {
|
|
946
|
+
return;
|
|
947
|
+
}
|
|
948
|
+
const visualRow = Number.isInteger(physicalRow) ? this.hot.toVisualRow(physicalRow) : null;
|
|
949
|
+
// Without an addressable row the probe cannot measure the changed cell — fall back to
|
|
950
|
+
// a full column rescan.
|
|
951
|
+
if (visualRow === null) {
|
|
952
|
+
_class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, null);
|
|
953
|
+
return;
|
|
954
|
+
}
|
|
955
|
+
const cell = {
|
|
956
|
+
row: visualRow,
|
|
957
|
+
oldValue: undefined,
|
|
958
|
+
hasOldValue: false
|
|
959
|
+
};
|
|
960
|
+
if (entry === undefined) {
|
|
961
|
+
_class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, [
|
|
962
|
+
cell
|
|
963
|
+
]);
|
|
964
|
+
} else {
|
|
965
|
+
entry.push(cell);
|
|
966
|
+
}
|
|
967
|
+
});
|
|
968
|
+
});
|
|
969
|
+
// The map holds numbers only, so re-writing an unchanged width is a no-op that must not
|
|
970
|
+
// invalidate the column-width position cache (every render re-measures the visible columns).
|
|
971
|
+
this.columnWidthsMap = this.hot.columnIndexMapper.createAndRegisterIndexMap(COLUMN_SIZE_MAP_NAME, 'physicalIndexToValue', null, {
|
|
972
|
+
skipUnchangedWrites: true
|
|
694
973
|
});
|
|
695
|
-
this.hot.columnIndexMapper.registerMap(COLUMN_SIZE_MAP_NAME, this.columnWidthsMap);
|
|
696
974
|
// Leave the listener active to allow auto-sizing the columns when the plugin is disabled.
|
|
697
975
|
// This is necessary for width recalculation for resize handler doubleclick (ManualColumnResize).
|
|
698
976
|
this.addHook('beforeColumnResize', _class_private_field_get(this, _onBeforeColumnResize));
|
|
699
977
|
}
|
|
700
978
|
}
|
|
701
|
-
function
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
979
|
+
function refreshQueuedColumnsWidth() {
|
|
980
|
+
if (_class_private_field_get(this, _columnWidthsToRefresh).size === 0) {
|
|
981
|
+
return;
|
|
982
|
+
}
|
|
983
|
+
const queue = _class_private_field_get(this, _columnWidthsToRefresh);
|
|
984
|
+
_class_private_field_set(this, _columnWidthsToRefresh, new Map());
|
|
985
|
+
const totalRows = this.hot.countRows();
|
|
986
|
+
const fullRescanColumns = [];
|
|
987
|
+
const probes = [];
|
|
988
|
+
queue.forEach((cells, visualColumn)=>{
|
|
707
989
|
const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
|
|
708
|
-
if (physicalColumn === null) {
|
|
990
|
+
if (physicalColumn === null || this.hot._getColWidthFromSettings(physicalColumn)) {
|
|
709
991
|
return;
|
|
710
992
|
}
|
|
711
|
-
|
|
712
|
-
|
|
993
|
+
const cachedWidth = this.columnWidthsMap.getValueAtIndex(physicalColumn);
|
|
994
|
+
// A full rescan is needed when it was requested explicitly, when there is no cached width
|
|
995
|
+
// to compare the probe against, or when so many cells changed that probing them costs
|
|
996
|
+
// about as much as the rescan itself.
|
|
997
|
+
if (cells === null || cachedWidth === null || cachedWidth === undefined || cells.length * 2 >= totalRows) {
|
|
998
|
+
fullRescanColumns.push(visualColumn);
|
|
999
|
+
} else {
|
|
1000
|
+
probes.push({
|
|
1001
|
+
visualColumn,
|
|
1002
|
+
cells,
|
|
1003
|
+
cachedWidth
|
|
1004
|
+
});
|
|
713
1005
|
}
|
|
714
1006
|
});
|
|
1007
|
+
_class_private_method_get(this, _probeChangedCellsWidth, probeChangedCellsWidth).call(this, probes, fullRescanColumns);
|
|
1008
|
+
if (fullRescanColumns.length > 0) {
|
|
1009
|
+
const rowsRange = {
|
|
1010
|
+
from: 0,
|
|
1011
|
+
to: totalRows - 1
|
|
1012
|
+
};
|
|
1013
|
+
fullRescanColumns.forEach((visualColumn)=>{
|
|
1014
|
+
_class_private_method_get(this, _fillGhostTableWithSamples, fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
|
|
1015
|
+
});
|
|
1016
|
+
}
|
|
715
1017
|
if (this.ghostTable.columns.length) {
|
|
716
1018
|
_class_private_method_get(this, _updateColumnWidthsMapBasedOnGhostTable, updateColumnWidthsMapBasedOnGhostTable).call(this);
|
|
717
1019
|
this.ghostTable.clean();
|
|
718
1020
|
}
|
|
719
1021
|
}
|
|
1022
|
+
function probeChangedCellsWidth(probes, fullRescanColumns) {
|
|
1023
|
+
if (probes.length === 0) {
|
|
1024
|
+
return;
|
|
1025
|
+
}
|
|
1026
|
+
const growths = new Map();
|
|
1027
|
+
const oldValueProbes = [];
|
|
1028
|
+
const probeItems = probes.map(({ visualColumn, cells })=>({
|
|
1029
|
+
visualColumn,
|
|
1030
|
+
samples: this.samplesGenerator.generateSample('col', cells.map((cell)=>cell.row), visualColumn)
|
|
1031
|
+
}));
|
|
1032
|
+
const samplesByColumn = new Map(probeItems.map(({ visualColumn, samples })=>[
|
|
1033
|
+
visualColumn,
|
|
1034
|
+
samples
|
|
1035
|
+
]));
|
|
1036
|
+
const newWidths = _class_private_method_get(this, _measureCellsWidth, measureCellsWidth).call(this, probeItems);
|
|
1037
|
+
probes.forEach((probe)=>{
|
|
1038
|
+
const newWidth = newWidths.get(probe.visualColumn);
|
|
1039
|
+
if (newWidth !== undefined && newWidth > probe.cachedWidth) {
|
|
1040
|
+
growths.set(probe.visualColumn, newWidth);
|
|
1041
|
+
_class_private_method_get(this, _updateCachedSamples, updateCachedSamples).call(this, probe, samplesByColumn.get(probe.visualColumn));
|
|
1042
|
+
} else if (probe.cells.some((cell)=>!cell.hasOldValue)) {
|
|
1043
|
+
fullRescanColumns.push(probe.visualColumn);
|
|
1044
|
+
} else {
|
|
1045
|
+
oldValueProbes.push(probe);
|
|
1046
|
+
_class_private_method_get(this, _updateCachedSamples, updateCachedSamples).call(this, probe, samplesByColumn.get(probe.visualColumn));
|
|
1047
|
+
}
|
|
1048
|
+
});
|
|
1049
|
+
if (oldValueProbes.length > 0) {
|
|
1050
|
+
const oldWidths = _class_private_method_get(this, _measureCellsWidth, measureCellsWidth).call(this, oldValueProbes.map(({ visualColumn, cells })=>({
|
|
1051
|
+
visualColumn,
|
|
1052
|
+
samples: this.samplesGenerator.generateSampleFromValues('col', cells.map((cell)=>({
|
|
1053
|
+
index: cell.row,
|
|
1054
|
+
value: _class_private_method_get(this, _formatProbeValue, formatProbeValue).call(this, cell.row, visualColumn, cell.oldValue)
|
|
1055
|
+
})))
|
|
1056
|
+
})));
|
|
1057
|
+
oldValueProbes.forEach(({ visualColumn, cachedWidth })=>{
|
|
1058
|
+
const oldWidth = oldWidths.get(visualColumn);
|
|
1059
|
+
if (oldWidth !== undefined && oldWidth >= cachedWidth) {
|
|
1060
|
+
fullRescanColumns.push(visualColumn);
|
|
1061
|
+
}
|
|
1062
|
+
});
|
|
1063
|
+
}
|
|
1064
|
+
if (growths.size > 0) {
|
|
1065
|
+
this.hot.batchExecution(()=>{
|
|
1066
|
+
growths.forEach((width, visualColumn)=>{
|
|
1067
|
+
this.columnWidthsMap.setValueAtIndex(this.hot.toPhysicalColumn(visualColumn), width);
|
|
1068
|
+
});
|
|
1069
|
+
}, true);
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
function updateCachedSamples(probe, samples) {
|
|
1073
|
+
const physicalColumn = this.hot.toPhysicalColumn(probe.visualColumn);
|
|
1074
|
+
const cachedSamples = physicalColumn === null ? undefined : _class_private_field_get(this, _columnSamplesCache).get(physicalColumn);
|
|
1075
|
+
if (cachedSamples === undefined) {
|
|
1076
|
+
return;
|
|
1077
|
+
}
|
|
1078
|
+
const changedRows = new Set(probe.cells.map((cell)=>cell.row));
|
|
1079
|
+
cachedSamples.forEach((cachedSample, seed)=>{
|
|
1080
|
+
const strings = cachedSample.strings.filter(({ row })=>row === undefined || !changedRows.has(row));
|
|
1081
|
+
if (strings.length === 0) {
|
|
1082
|
+
cachedSamples.delete(seed);
|
|
1083
|
+
} else {
|
|
1084
|
+
cachedSample.strings = strings;
|
|
1085
|
+
}
|
|
1086
|
+
});
|
|
1087
|
+
if (samples === undefined) {
|
|
1088
|
+
return;
|
|
1089
|
+
}
|
|
1090
|
+
const sampleCount = this.samplesGenerator.getSampleCount();
|
|
1091
|
+
let bucketOverflowed = false;
|
|
1092
|
+
samples.forEach((sample, seed)=>{
|
|
1093
|
+
const cachedSample = cachedSamples.get(seed);
|
|
1094
|
+
if (cachedSample === undefined) {
|
|
1095
|
+
cachedSamples.set(seed, sample);
|
|
1096
|
+
return;
|
|
1097
|
+
}
|
|
1098
|
+
cachedSample.strings.push(...sample.strings);
|
|
1099
|
+
if (cachedSample.strings.length > sampleCount * 2) {
|
|
1100
|
+
bucketOverflowed = true;
|
|
1101
|
+
}
|
|
1102
|
+
});
|
|
1103
|
+
// Trimming an overgrown bucket would have to guess which string is the widest — the
|
|
1104
|
+
// width determiner can sit anywhere in it. Instead of risking its eviction (and a column
|
|
1105
|
+
// that renders narrower than its content), the whole entry is dropped: the next
|
|
1106
|
+
// re-measure falls back to one full scan that rebuilds it.
|
|
1107
|
+
if (bucketOverflowed && physicalColumn !== null) {
|
|
1108
|
+
_class_private_field_get(this, _columnSamplesCache).delete(physicalColumn);
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
function measureCellsWidth(items) {
|
|
1112
|
+
const widths = new Map();
|
|
1113
|
+
const measurableItems = items.filter(({ samples })=>samples.size > 0);
|
|
1114
|
+
if (measurableItems.length === 0) {
|
|
1115
|
+
return widths;
|
|
1116
|
+
}
|
|
1117
|
+
const useHeaders = this.ghostTable.getSetting('useHeaders');
|
|
1118
|
+
this.ghostTable.setSetting('useHeaders', false);
|
|
1119
|
+
try {
|
|
1120
|
+
measurableItems.forEach(({ visualColumn, samples })=>{
|
|
1121
|
+
_class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, visualColumn, samples);
|
|
1122
|
+
});
|
|
1123
|
+
this.ghostTable.getWidths((visualColumn, width)=>{
|
|
1124
|
+
widths.set(visualColumn, width);
|
|
1125
|
+
});
|
|
1126
|
+
} finally{
|
|
1127
|
+
// A throwing custom renderer must not leave the ghost table with headers disabled (or
|
|
1128
|
+
// with the probe's columns still attached) for every later full-scan measurement.
|
|
1129
|
+
this.ghostTable.clean();
|
|
1130
|
+
this.ghostTable.setSetting('useHeaders', useHeaders);
|
|
1131
|
+
}
|
|
1132
|
+
return widths;
|
|
1133
|
+
}
|
|
1134
|
+
function formatProbeValue(row, column, value) {
|
|
1135
|
+
const cellMeta = this.hot.getCellMetaTransient(row, column);
|
|
1136
|
+
return formatCellValue(value, cellMeta, this.hot.getCellRenderer(cellMeta));
|
|
1137
|
+
}
|
|
720
1138
|
function fillGhostTableWithSamples(visualColumn, rowsRange) {
|
|
721
1139
|
const samples = this.samplesGenerator.generateColumnSamples(visualColumn, rowsRange);
|
|
722
|
-
samples.forEach((sample, column)=>
|
|
1140
|
+
samples.forEach((sample, column)=>{
|
|
1141
|
+
const physicalColumn = this.hot.toPhysicalColumn(column);
|
|
1142
|
+
_class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, column, sample);
|
|
1143
|
+
_class_private_field_get(this, _columnSamplesCache).set(physicalColumn === null ? column : physicalColumn, sample);
|
|
1144
|
+
});
|
|
1145
|
+
}
|
|
1146
|
+
function addGhostTableColumn(visualColumn, samples) {
|
|
1147
|
+
this.ghostTable.addColumn(visualColumn, new Map(samples));
|
|
723
1148
|
}
|
|
724
1149
|
function updateColumnWidthsMapBasedOnGhostTable() {
|
|
725
1150
|
this.hot.batchExecution(()=>{
|