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
|
@@ -1,6 +1,112 @@
|
|
|
1
|
+
function _check_private_redeclaration(obj, privateCollection) {
|
|
2
|
+
if (privateCollection.has(obj)) {
|
|
3
|
+
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
function _class_apply_descriptor_get(receiver, descriptor) {
|
|
7
|
+
if (descriptor.get) {
|
|
8
|
+
return descriptor.get.call(receiver);
|
|
9
|
+
}
|
|
10
|
+
return descriptor.value;
|
|
11
|
+
}
|
|
12
|
+
function _class_apply_descriptor_set(receiver, descriptor, value) {
|
|
13
|
+
if (descriptor.set) {
|
|
14
|
+
descriptor.set.call(receiver, value);
|
|
15
|
+
} else {
|
|
16
|
+
if (!descriptor.writable) {
|
|
17
|
+
throw new TypeError("attempted to set read only private field");
|
|
18
|
+
}
|
|
19
|
+
descriptor.value = value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function _class_extract_field_descriptor(receiver, privateMap, action) {
|
|
23
|
+
if (!privateMap.has(receiver)) {
|
|
24
|
+
throw new TypeError("attempted to " + action + " private field on non-instance");
|
|
25
|
+
}
|
|
26
|
+
return privateMap.get(receiver);
|
|
27
|
+
}
|
|
28
|
+
function _class_private_field_get(receiver, privateMap) {
|
|
29
|
+
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
|
|
30
|
+
return _class_apply_descriptor_get(receiver, descriptor);
|
|
31
|
+
}
|
|
32
|
+
function _class_private_field_init(obj, privateMap, value) {
|
|
33
|
+
_check_private_redeclaration(obj, privateMap);
|
|
34
|
+
privateMap.set(obj, value);
|
|
35
|
+
}
|
|
36
|
+
function _class_private_field_set(receiver, privateMap, value) {
|
|
37
|
+
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
|
|
38
|
+
_class_apply_descriptor_set(receiver, descriptor, value);
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
function _class_private_method_get(receiver, privateSet, fn) {
|
|
42
|
+
if (!privateSet.has(receiver)) {
|
|
43
|
+
throw new TypeError("attempted to get private field on non-instance");
|
|
44
|
+
}
|
|
45
|
+
return fn;
|
|
46
|
+
}
|
|
47
|
+
function _class_private_method_init(obj, privateSet) {
|
|
48
|
+
_check_private_redeclaration(obj, privateSet);
|
|
49
|
+
privateSet.add(obj);
|
|
50
|
+
}
|
|
1
51
|
import { Hooks } from '../../../core/hooks/index.mjs';
|
|
2
|
-
import { hasOwnProperty } from '../../../helpers/object.mjs';
|
|
52
|
+
import { hasOwnProperty, extend } from '../../../helpers/object.mjs';
|
|
3
53
|
import { isFunction } from '../../../helpers/function.mjs';
|
|
54
|
+
import { extendByMetaType } from '../utils.mjs';
|
|
55
|
+
var /**
|
|
56
|
+
* The lowest visual row index of the meta "keep band" tracked by the previous eviction pass - the
|
|
57
|
+
* viewport plus a one-viewport hysteresis margin. The next pass evicts the visual rows that fall
|
|
58
|
+
* between this band and the new one (the rows that just scrolled out), so the work is proportional
|
|
59
|
+
* to the scroll distance, not the number of materialized rows.
|
|
60
|
+
*
|
|
61
|
+
* @type {number}
|
|
62
|
+
*/ _keepBandStart = /*#__PURE__*/ new WeakMap(), /**
|
|
63
|
+
* The highest visual row index of the meta "keep band". See `#keepBandStart`.
|
|
64
|
+
*
|
|
65
|
+
* @type {number}
|
|
66
|
+
*/ _keepBandEnd = /*#__PURE__*/ new WeakMap(), /**
|
|
67
|
+
* Whether a keep band has been recorded yet. A separate flag (rather than a sentinel value) is
|
|
68
|
+
* required because a valid `#keepBandStart` is often negative near the top of the grid (the
|
|
69
|
+
* viewport start minus the hysteresis margin), so no numeric sentinel is safe.
|
|
70
|
+
*
|
|
71
|
+
* @type {boolean}
|
|
72
|
+
*/ _keepBandInitialized = /*#__PURE__*/ new WeakMap(), /**
|
|
73
|
+
* Runs the dynamic-extension sequence on a cell meta object: resolves `prop`, fires
|
|
74
|
+
* `beforeGetCellMeta`, evaluates the `cells` function and the `type` value it (or the hook)
|
|
75
|
+
* produced, hands the resulting settings to the caller-provided applier, and fires
|
|
76
|
+
* `afterGetCellMeta`. The applier is the only step that differs between the stored path
|
|
77
|
+
* (persist through `updateCellMeta`) and the transient path (extend the throwaway object).
|
|
78
|
+
*
|
|
79
|
+
* @param {object} cellMeta The cell meta object to extend.
|
|
80
|
+
* @param {Function} applyCellSettings Receives the resolved `cells`/`type` settings object.
|
|
81
|
+
*/ _runMetaExtension = /*#__PURE__*/ new WeakSet(), /**
|
|
82
|
+
* Evicts render-derived cell meta for rows that scrolled out of the viewport, bounding meta
|
|
83
|
+
* retention to roughly the visible rows plus a one-viewport hysteresis margin on each side ("keep
|
|
84
|
+
* band"). Only the visual rows that fall between the previous keep band and the new one are visited
|
|
85
|
+
* (the rows that just left), so the cost is proportional to the scroll distance, NOT to the number
|
|
86
|
+
* of materialized rows - a grid with many `setCellMeta`/`cell`-option rows pays nothing extra here.
|
|
87
|
+
* The band is tracked in visual space and never reset, so a full render that does not move the
|
|
88
|
+
* viewport produces an empty diff (no work). Row-axis only - the vertical axis is the large one;
|
|
89
|
+
* horizontal scrolling does not evict.
|
|
90
|
+
*/ _evictMetaOutsideViewport = /*#__PURE__*/ new WeakSet(), /**
|
|
91
|
+
* Evicts render-derived cell meta for an inclusive range of visual rows. Each visual row is
|
|
92
|
+
* translated to its physical index (cell meta is keyed physically) reading the mapping fresh, so a
|
|
93
|
+
* sort or move that happened since the band was recorded resolves correctly. Only the active
|
|
94
|
+
* editor's row is skipped - the selection highlight (focus) cell, where the prepared or active
|
|
95
|
+
* editor holds the cell meta object by reference (see `BaseEditor#cellProperties`). The remaining
|
|
96
|
+
* rows of a wide selection (whole column, multi-row) must stay evictable, or they would pin their
|
|
97
|
+
* cell meta and defeat the viewport bound.
|
|
98
|
+
*
|
|
99
|
+
* @param {number} fromVisualRow The first visual row index in the range (inclusive).
|
|
100
|
+
* @param {number} toVisualRow The last visual row index in the range (inclusive).
|
|
101
|
+
*/ _evictVisualRowRange = /*#__PURE__*/ new WeakSet(), /**
|
|
102
|
+
* Evicts the render-derived cell meta of a single physical row and prunes the matching
|
|
103
|
+
* `metaSyncMemo` entries for ONLY the columns that were actually evicted. A re-minted cell then
|
|
104
|
+
* re-runs its dynamic extension, while persisted/invalid cells kept on the same row retain their
|
|
105
|
+
* memo - so they are not needlessly re-extended (which could let a `cells()` result overwrite a
|
|
106
|
+
* `setCellMeta` value). The whole memo row is dropped once empty, keeping the memo bounded.
|
|
107
|
+
*
|
|
108
|
+
* @param {number} physicalRow The physical row index to evict.
|
|
109
|
+
*/ _evictRowAndPruneMemo = /*#__PURE__*/ new WeakSet();
|
|
4
110
|
/**
|
|
5
111
|
* Modifier that extends cell meta objects dynamically through Handsontable hooks and the `cells` option,
|
|
6
112
|
* memoizing results per render cycle to avoid redundant work.
|
|
@@ -21,47 +127,165 @@ import { isFunction } from '../../../helpers/function.mjs';
|
|
|
21
127
|
if (this.metaSyncMemo.get(physicalRow)?.has(physicalColumn)) {
|
|
22
128
|
return;
|
|
23
129
|
}
|
|
24
|
-
|
|
25
|
-
const visualCol = cellMeta.visualCol;
|
|
26
|
-
const hot = this.metaManager.hot;
|
|
27
|
-
const prop = hot.colToProp(visualCol);
|
|
28
|
-
cellMeta.prop = prop;
|
|
29
|
-
hot.runHooks('beforeGetCellMeta', visualRow, visualCol, cellMeta);
|
|
30
|
-
// extend a `type` value, added or changed in the `beforeGetCellMeta` hook
|
|
31
|
-
const cellType = hasOwnProperty(cellMeta, 'type') ? cellMeta.type : null;
|
|
32
|
-
let cellSettings = isFunction(cellMeta.cells) ? cellMeta.cells(physicalRow, physicalColumn, prop) : null;
|
|
33
|
-
if (cellType) {
|
|
34
|
-
if (cellSettings) {
|
|
35
|
-
cellSettings.type = cellSettings.type ?? cellType;
|
|
36
|
-
} else {
|
|
37
|
-
cellSettings = {
|
|
38
|
-
type: cellType
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (cellSettings) {
|
|
130
|
+
_class_private_method_get(this, _runMetaExtension, runMetaExtension).call(this, cellMeta, (cellSettings)=>{
|
|
43
131
|
this.metaManager.updateCellMeta(physicalRow, physicalColumn, cellSettings);
|
|
132
|
+
});
|
|
133
|
+
let memoRow = this.metaSyncMemo.get(physicalRow);
|
|
134
|
+
if (memoRow === undefined) {
|
|
135
|
+
memoRow = new Set();
|
|
136
|
+
this.metaSyncMemo.set(physicalRow, memoRow);
|
|
44
137
|
}
|
|
45
|
-
|
|
46
|
-
if (!this.metaSyncMemo.has(physicalRow)) {
|
|
47
|
-
this.metaSyncMemo.set(physicalRow, new Set());
|
|
48
|
-
}
|
|
49
|
-
this.metaSyncMemo.get(physicalRow).add(physicalColumn);
|
|
138
|
+
memoRow.add(physicalColumn);
|
|
50
139
|
}
|
|
51
140
|
/**
|
|
52
|
-
*
|
|
141
|
+
* Extends a transient (not stored) cell meta object by the same user-specific properties as
|
|
142
|
+
* `extendCellMeta`, with two deliberate differences. The `cells`/`type` settings are applied
|
|
143
|
+
* directly on the transient object - never through `updateCellMeta`, which would permanently
|
|
144
|
+
* materialize the cell. And `metaSyncMemo` is neither read nor written: the memo must reflect only
|
|
145
|
+
* STORED meta objects, or a stored cell created later would skip its extension (a rendering bug),
|
|
146
|
+
* and memo growth would defeat the point of a retention-free scan.
|
|
147
|
+
*
|
|
148
|
+
* @param {object} cellMeta The transient cell meta object.
|
|
149
|
+
*/ extendTransientCellMeta(cellMeta) {
|
|
150
|
+
_class_private_method_get(this, _runMetaExtension, runMetaExtension).call(this, cellMeta, (cellSettings)=>{
|
|
151
|
+
extend(cellMeta, cellSettings);
|
|
152
|
+
extendByMetaType(cellMeta, cellSettings);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Initializes the modifier, registers the `afterGetCellMeta` local hook, subscribes to `beforeRender`
|
|
157
|
+
* to clear the memo on full renders, and subscribes to `afterScrollVertically` and `afterViewRender`
|
|
158
|
+
* to evict render-derived cell meta for rows that left the viewport.
|
|
53
159
|
*/ constructor(metaManager){
|
|
160
|
+
_class_private_method_init(this, _runMetaExtension);
|
|
161
|
+
_class_private_method_init(this, _evictMetaOutsideViewport);
|
|
162
|
+
_class_private_method_init(this, _evictVisualRowRange);
|
|
163
|
+
_class_private_method_init(this, _evictRowAndPruneMemo);
|
|
164
|
+
_class_private_field_init(this, _keepBandStart, {
|
|
165
|
+
writable: true,
|
|
166
|
+
value: void 0
|
|
167
|
+
});
|
|
168
|
+
_class_private_field_init(this, _keepBandEnd, {
|
|
169
|
+
writable: true,
|
|
170
|
+
value: void 0
|
|
171
|
+
});
|
|
172
|
+
_class_private_field_init(this, _keepBandInitialized, {
|
|
173
|
+
writable: true,
|
|
174
|
+
value: void 0
|
|
175
|
+
});
|
|
54
176
|
/**
|
|
55
|
-
*
|
|
177
|
+
* Per-render-cycle memo of cells already extended by `extendCellMeta`, keyed by physical row to a
|
|
178
|
+
* set of physical columns.
|
|
179
|
+
*
|
|
180
|
+
* @type {Map<number, Set<number>>}
|
|
56
181
|
*/ this.metaSyncMemo = new Map();
|
|
182
|
+
_class_private_field_set(this, _keepBandStart, 0);
|
|
183
|
+
_class_private_field_set(this, _keepBandEnd, 0);
|
|
184
|
+
_class_private_field_set(this, _keepBandInitialized, false);
|
|
57
185
|
this.metaManager = metaManager;
|
|
58
|
-
metaManager.addLocalHook('afterGetCellMeta', (
|
|
59
|
-
this.extendCellMeta(
|
|
186
|
+
metaManager.addLocalHook('afterGetCellMeta', (cellMeta)=>{
|
|
187
|
+
this.extendCellMeta(cellMeta);
|
|
188
|
+
});
|
|
189
|
+
metaManager.addLocalHook('extendTransientCellMeta', (cellMeta)=>{
|
|
190
|
+
this.extendTransientCellMeta(cellMeta);
|
|
60
191
|
});
|
|
192
|
+
// These hooks are registered through `Hooks.getSingleton().add(..., hot)` rather than
|
|
193
|
+
// `hot.addHook(...)` on purpose: this modifier is constructed from the `MetaManager`
|
|
194
|
+
// constructor, which runs early in `Core` setup - before `hot.addHook` is defined. The
|
|
195
|
+
// singleton form binds the callback to the `hot` instance and is cleaned up on `hot.destroy()`
|
|
196
|
+
// exactly like `hot.addHook` would be, so this is equivalent once the instance is ready.
|
|
61
197
|
Hooks.getSingleton().add('beforeRender', (forceFullRender)=>{
|
|
62
198
|
if (forceFullRender) {
|
|
63
199
|
this.metaSyncMemo.clear();
|
|
64
200
|
}
|
|
65
201
|
}, this.metaManager.hot);
|
|
202
|
+
const evict = ()=>_class_private_method_get(this, _evictMetaOutsideViewport, evictMetaOutsideViewport).call(this);
|
|
203
|
+
// Scrolling materializes cell meta for newly visible rows; evict the rows that left the viewport.
|
|
204
|
+
Hooks.getSingleton().add('afterScrollVertically', evict, this.metaManager.hot);
|
|
205
|
+
// A full render (for example after a sort or filter) can leave behind meta for rows that are no
|
|
206
|
+
// longer in view; run the same pass so retention stays bounded regardless of what triggered it.
|
|
207
|
+
Hooks.getSingleton().add('afterViewRender', evict, this.metaManager.hot);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function runMetaExtension(cellMeta, applyCellSettings) {
|
|
211
|
+
const physicalRow = cellMeta.row;
|
|
212
|
+
const physicalColumn = cellMeta.col;
|
|
213
|
+
const visualRow = cellMeta.visualRow;
|
|
214
|
+
const visualCol = cellMeta.visualCol;
|
|
215
|
+
const hot = this.metaManager.hot;
|
|
216
|
+
const prop = hot.colToProp(visualCol);
|
|
217
|
+
cellMeta.prop = prop;
|
|
218
|
+
hot.runHooks('beforeGetCellMeta', visualRow, visualCol, cellMeta);
|
|
219
|
+
// extend a `type` value, added or changed in the `beforeGetCellMeta` hook
|
|
220
|
+
const cellType = hasOwnProperty(cellMeta, 'type') ? cellMeta.type : null;
|
|
221
|
+
let cellSettings = isFunction(cellMeta.cells) ? cellMeta.cells(physicalRow, physicalColumn, prop) : null;
|
|
222
|
+
if (cellType) {
|
|
223
|
+
if (cellSettings) {
|
|
224
|
+
cellSettings.type = cellSettings.type ?? cellType;
|
|
225
|
+
} else {
|
|
226
|
+
cellSettings = {
|
|
227
|
+
type: cellType
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (cellSettings) {
|
|
232
|
+
applyCellSettings(cellSettings);
|
|
233
|
+
}
|
|
234
|
+
hot.runHooks('afterGetCellMeta', visualRow, visualCol, cellMeta);
|
|
235
|
+
}
|
|
236
|
+
function evictMetaOutsideViewport() {
|
|
237
|
+
const hot = this.metaManager.hot;
|
|
238
|
+
const firstVisibleRow = hot.getFirstRenderedVisibleRow();
|
|
239
|
+
const lastVisibleRow = hot.getLastRenderedVisibleRow();
|
|
240
|
+
// The render-range getters are typed `number` but return `null` when the viewport is not yet
|
|
241
|
+
// calculated; `Number.isInteger` rejects that case without a type-level null comparison.
|
|
242
|
+
if (!Number.isInteger(firstVisibleRow) || !Number.isInteger(lastVisibleRow) || lastVisibleRow < firstVisibleRow) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const viewportSize = lastVisibleRow - firstVisibleRow + 1;
|
|
246
|
+
const keepStart = firstVisibleRow - viewportSize;
|
|
247
|
+
const keepEnd = lastVisibleRow + viewportSize;
|
|
248
|
+
const previousStart = _class_private_field_get(this, _keepBandStart);
|
|
249
|
+
const previousEnd = _class_private_field_get(this, _keepBandEnd);
|
|
250
|
+
if (_class_private_field_get(this, _keepBandInitialized)) {
|
|
251
|
+
// Previously-kept rows now above the band (visual index below the new keep-band start).
|
|
252
|
+
_class_private_method_get(this, _evictVisualRowRange, evictVisualRowRange).call(this, previousStart, Math.min(previousEnd, keepStart - 1));
|
|
253
|
+
// Previously-kept rows now below the band (visual index above the new keep-band end).
|
|
254
|
+
_class_private_method_get(this, _evictVisualRowRange, evictVisualRowRange).call(this, Math.max(previousStart, keepEnd + 1), previousEnd);
|
|
255
|
+
}
|
|
256
|
+
_class_private_field_set(this, _keepBandStart, keepStart);
|
|
257
|
+
_class_private_field_set(this, _keepBandEnd, keepEnd);
|
|
258
|
+
_class_private_field_set(this, _keepBandInitialized, true);
|
|
259
|
+
}
|
|
260
|
+
function evictVisualRowRange(fromVisualRow, toVisualRow) {
|
|
261
|
+
if (fromVisualRow > toVisualRow) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const hot = this.metaManager.hot;
|
|
265
|
+
const selectedRange = hot.getSelectedRangeLast();
|
|
266
|
+
const activeEditorRow = selectedRange ? selectedRange.highlight.row : null;
|
|
267
|
+
for(let visualRow = fromVisualRow; visualRow <= toVisualRow; visualRow++){
|
|
268
|
+
const physicalRow = hot.toPhysicalRow(visualRow);
|
|
269
|
+
// `toPhysicalRow` is typed `number` but returns `null` for an out-of-range visual row (for
|
|
270
|
+
// example after trimming); `Number.isInteger` filters that without a type-level null compare.
|
|
271
|
+
if (visualRow !== activeEditorRow && Number.isInteger(physicalRow)) {
|
|
272
|
+
_class_private_method_get(this, _evictRowAndPruneMemo, evictRowAndPruneMemo).call(this, physicalRow);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function evictRowAndPruneMemo(physicalRow) {
|
|
277
|
+
const evictedColumns = this.metaManager.cellMeta.evictRow(physicalRow);
|
|
278
|
+
if (evictedColumns.length === 0) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const memoRow = this.metaSyncMemo.get(physicalRow);
|
|
282
|
+
if (memoRow === undefined) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
for(let i = 0; i < evictedColumns.length; i++){
|
|
286
|
+
memoRow.delete(evictedColumns[i]);
|
|
287
|
+
}
|
|
288
|
+
if (memoRow.size === 0) {
|
|
289
|
+
this.metaSyncMemo.delete(physicalRow);
|
|
66
290
|
}
|
|
67
291
|
}
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
import type { HotInstance } from '../core/types';
|
|
2
|
-
type
|
|
3
|
-
(value: unknown, cellMeta: CellMeta, source?: string): boolean;
|
|
4
|
-
/**
|
|
5
|
-
* When `true`, the validator's result depends only on the value and column/global-level meta, never
|
|
6
|
-
* on per-row meta — so a single column-level meta object can validate every row of the column.
|
|
7
|
-
*/
|
|
8
|
-
rowIndependent?: boolean;
|
|
9
|
-
};
|
|
10
|
-
type CellMeta = Record<string, unknown> & {
|
|
11
|
-
sourceDataValidator?: SourceDataValidatorFn;
|
|
12
|
-
sourceDataWarningMessage?: string;
|
|
13
|
-
allowInvalid?: boolean;
|
|
14
|
-
row?: number;
|
|
15
|
-
col?: number;
|
|
16
|
-
};
|
|
2
|
+
import type { CellProperties } from '../settings';
|
|
17
3
|
/**
|
|
18
4
|
* Runs source-data validator for a single cell.
|
|
19
5
|
*
|
|
@@ -22,18 +8,24 @@ type CellMeta = Record<string, unknown> & {
|
|
|
22
8
|
* @param {string} [source] The source identifier of the operation.
|
|
23
9
|
* @returns {boolean} `true` when the value is valid (or no validator is configured).
|
|
24
10
|
*/
|
|
25
|
-
export declare function runSourceDataValidator(value: unknown, cellMeta:
|
|
11
|
+
export declare function runSourceDataValidator(value: unknown, cellMeta: CellProperties, source?: string): boolean;
|
|
26
12
|
/**
|
|
27
13
|
* Runs source-data validators for all cells and emits one aggregated warning per cell type.
|
|
28
14
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
15
|
+
* Meta is resolved with `getCellMetaUncached`, so validation considers the global and column layers,
|
|
16
|
+
* the declarative `cell` option, and imperative `setCellMeta` overrides — but never a `cells` function
|
|
17
|
+
* or the `before`/`afterGetCellMeta` hooks. A cheap O(cols) column probe decides the path:
|
|
18
|
+
*
|
|
19
|
+
* - No column exposes a `sourceDataValidator` and no cell carries persistent per-cell meta — there is
|
|
20
|
+
* nothing to validate, so the scan is skipped entirely. This is what keeps a large grid with a
|
|
21
|
+
* `cells` function (but no validators) from resolving meta for the whole dataset on every load.
|
|
22
|
+
* - Only row-independent built-in validators (`date`/`time`/`intlDate`/`intlTime`) and no persistent
|
|
23
|
+
* per-cell meta — validation reuses one column-level meta per column (O(cols)).
|
|
24
|
+
* - A row-dependent custom validator, or persistent per-cell meta (`cell`/`setCellMeta`) — validation
|
|
25
|
+
* resolves each cell uncached (O(rows*cols) work, but no retained per-cell meta objects).
|
|
33
26
|
*
|
|
34
27
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
35
28
|
* @param {string} [source] The source identifier of the operation.
|
|
36
29
|
* @returns {void}
|
|
37
30
|
*/
|
|
38
31
|
export declare function runSourceDataValidators(hotInstance: HotInstance, source?: string): void;
|
|
39
|
-
export {};
|
|
@@ -77,29 +77,29 @@ function runSourceDataValidator(value, cellMeta, source) {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
|
-
* Inspects column-level meta (one sample
|
|
81
|
-
* validation should run.
|
|
82
|
-
*
|
|
83
|
-
*
|
|
80
|
+
* Inspects column-level meta (one uncached sample per column, O(cols)) to decide how source-data
|
|
81
|
+
* validation should run. Meta is resolved through `getCellMetaUncached`, so the sample reflects the
|
|
82
|
+
* global and column layers only — the `cells` function and the `before`/`afterGetCellMeta` hooks are
|
|
83
|
+
* never run here (see `runSourceDataValidators`). Because column meta does not vary by row, the sample
|
|
84
|
+
* is taken at physical row 0 regardless of trimming. Returns the columns whose validator is
|
|
85
|
+
* row-independent (safe to validate by reusing one column meta), or signals a full per-cell scan when
|
|
86
|
+
* any column carries a validator that may depend on per-row meta.
|
|
84
87
|
*
|
|
85
88
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
86
89
|
* @param {number} colSourceCount The number of physical source columns.
|
|
87
90
|
* @returns {object} `{ fullScan, columns }` — when `fullScan` is `true`, `columns` is empty.
|
|
88
91
|
*/ function collectColumnValidators(hotInstance, colSourceCount) {
|
|
89
|
-
const
|
|
90
|
-
if (sampleVisualRow === null) {
|
|
91
|
-
return {
|
|
92
|
-
fullScan: true,
|
|
93
|
-
columns: []
|
|
94
|
-
};
|
|
95
|
-
}
|
|
92
|
+
const metaManager = hotInstance._getMetaManager();
|
|
96
93
|
const columns = [];
|
|
97
94
|
for(let physicalColumn = 0; physicalColumn < colSourceCount; physicalColumn += 1){
|
|
98
95
|
const visualColumn = hotInstance.columnIndexMapper.getVisualFromPhysicalIndex(physicalColumn);
|
|
99
96
|
if (visualColumn === null) {
|
|
100
97
|
continue;
|
|
101
98
|
}
|
|
102
|
-
const cellMeta =
|
|
99
|
+
const cellMeta = metaManager.getCellMetaUncached(0, physicalColumn, {
|
|
100
|
+
visualRow: 0,
|
|
101
|
+
visualColumn
|
|
102
|
+
});
|
|
103
103
|
const validator = cellMeta.sourceDataValidator;
|
|
104
104
|
if (!(0, _function.isFunction)(validator)) {
|
|
105
105
|
continue;
|
|
@@ -123,8 +123,11 @@ function runSourceDataValidator(value, cellMeta, source) {
|
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
|
-
* Validates every source cell by resolving meta per cell (O(rows*cols) meta). Used when
|
|
127
|
-
*
|
|
126
|
+
* Validates every source cell by resolving meta per cell (O(rows*cols) meta). Used when a
|
|
127
|
+
* row-dependent custom validator is configured, or when a cell carries persistent per-cell meta (the
|
|
128
|
+
* `cell` option or `setCellMeta`) that a single column sample cannot represent. Meta is resolved with
|
|
129
|
+
* `getCellMetaUncached`, so no per-cell meta object is retained (the scan does not grow the meta cache
|
|
130
|
+
* to O(rows*cols)) and the `cells` function / `before`/`afterGetCellMeta` hooks are not run.
|
|
128
131
|
*
|
|
129
132
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
130
133
|
* @param {DataSource} dataSource The data source.
|
|
@@ -135,6 +138,7 @@ function runSourceDataValidator(value, cellMeta, source) {
|
|
|
135
138
|
* @returns {void}
|
|
136
139
|
*/ function validatePerCell(hotInstance, dataSource, rowSourceCount, colSourceCount, invalidByMessageType, source) {
|
|
137
140
|
const { rowIndexMapper, columnIndexMapper } = hotInstance;
|
|
141
|
+
const metaManager = hotInstance._getMetaManager();
|
|
138
142
|
for(let row = 0; row < rowSourceCount; row += 1){
|
|
139
143
|
for(let col = 0; col < colSourceCount; col += 1){
|
|
140
144
|
const visualRow = rowIndexMapper.getVisualFromPhysicalIndex(row);
|
|
@@ -142,7 +146,10 @@ function runSourceDataValidator(value, cellMeta, source) {
|
|
|
142
146
|
if (visualRow === null || visualColumn === null) {
|
|
143
147
|
continue;
|
|
144
148
|
}
|
|
145
|
-
const cellMeta =
|
|
149
|
+
const cellMeta = metaManager.getCellMetaUncached(row, col, {
|
|
150
|
+
visualRow,
|
|
151
|
+
visualColumn
|
|
152
|
+
});
|
|
146
153
|
if (!(0, _function.isFunction)(cellMeta.sourceDataValidator)) {
|
|
147
154
|
continue;
|
|
148
155
|
}
|
|
@@ -180,16 +187,18 @@ function runSourceDataValidator(value, cellMeta, source) {
|
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
189
|
/**
|
|
183
|
-
* Detects whether per-cell meta
|
|
184
|
-
*
|
|
185
|
-
* `
|
|
186
|
-
*
|
|
190
|
+
* Detects whether any cell carries persistent per-cell meta that a single column sample cannot
|
|
191
|
+
* represent — the declarative `cell` option or imperatively-set cell meta (`setCellMeta`). These are
|
|
192
|
+
* the only per-row sources that `getCellMetaUncached` resolves, so they force the per-cell scan. The
|
|
193
|
+
* `cells` function and the `before`/`afterGetCellMeta` hooks are deliberately NOT considered here:
|
|
194
|
+
* source-data validation resolves meta uncached and never runs them, so they cannot change which
|
|
195
|
+
* cells carry a `sourceDataValidator`.
|
|
187
196
|
*
|
|
188
197
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
189
198
|
* @param {GridSettings} settings The resolved grid settings.
|
|
190
199
|
* @returns {boolean} `true` when meta must be resolved per cell.
|
|
191
|
-
*/ function
|
|
192
|
-
return
|
|
200
|
+
*/ function hasStoredPerCellMeta(hotInstance, settings) {
|
|
201
|
+
return Array.isArray(settings.cell) && settings.cell.length > 0 || hotInstance._getMetaManager().getUserDefinedCellMetas().length > 0;
|
|
193
202
|
}
|
|
194
203
|
function runSourceDataValidators(hotInstance, source) {
|
|
195
204
|
const rowSourceCount = hotInstance.countSourceRows();
|
|
@@ -200,16 +209,17 @@ function runSourceDataValidators(hotInstance, source) {
|
|
|
200
209
|
const settings = hotInstance.getSettings();
|
|
201
210
|
const dataSource = hotInstance._getDataSource();
|
|
202
211
|
const invalidByMessageType = new Map();
|
|
203
|
-
|
|
212
|
+
const { fullScan, columns } = collectColumnValidators(hotInstance, colSourceCount);
|
|
213
|
+
const hasStoredMeta = hasStoredPerCellMeta(hotInstance, settings);
|
|
214
|
+
// Nothing carries (or could carry) a source-data validator — skip the scan entirely.
|
|
215
|
+
if (!fullScan && columns.length === 0 && !hasStoredMeta) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (fullScan || hasStoredMeta) {
|
|
204
219
|
validatePerCell(hotInstance, dataSource, rowSourceCount, colSourceCount, invalidByMessageType, source);
|
|
205
220
|
} else {
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
validatePerCell(hotInstance, dataSource, rowSourceCount, colSourceCount, invalidByMessageType, source);
|
|
209
|
-
} else {
|
|
210
|
-
const toVisualRow = (row)=>hotInstance.rowIndexMapper.getVisualFromPhysicalIndex(row);
|
|
211
|
-
validateBatched(columns, dataSource, rowSourceCount, toVisualRow, invalidByMessageType, source);
|
|
212
|
-
}
|
|
221
|
+
const toVisualRow = (row)=>hotInstance.rowIndexMapper.getVisualFromPhysicalIndex(row);
|
|
222
|
+
validateBatched(columns, dataSource, rowSourceCount, toVisualRow, invalidByMessageType, source);
|
|
213
223
|
}
|
|
214
224
|
invalidByMessageType.forEach((items, message)=>{
|
|
215
225
|
logSourceDataWarning(message, items);
|
|
@@ -66,29 +66,29 @@ import { stringify } from '../helpers/mixed.mjs';
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
|
-
* Inspects column-level meta (one sample
|
|
70
|
-
* validation should run.
|
|
71
|
-
*
|
|
72
|
-
*
|
|
69
|
+
* Inspects column-level meta (one uncached sample per column, O(cols)) to decide how source-data
|
|
70
|
+
* validation should run. Meta is resolved through `getCellMetaUncached`, so the sample reflects the
|
|
71
|
+
* global and column layers only — the `cells` function and the `before`/`afterGetCellMeta` hooks are
|
|
72
|
+
* never run here (see `runSourceDataValidators`). Because column meta does not vary by row, the sample
|
|
73
|
+
* is taken at physical row 0 regardless of trimming. Returns the columns whose validator is
|
|
74
|
+
* row-independent (safe to validate by reusing one column meta), or signals a full per-cell scan when
|
|
75
|
+
* any column carries a validator that may depend on per-row meta.
|
|
73
76
|
*
|
|
74
77
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
75
78
|
* @param {number} colSourceCount The number of physical source columns.
|
|
76
79
|
* @returns {object} `{ fullScan, columns }` — when `fullScan` is `true`, `columns` is empty.
|
|
77
80
|
*/ function collectColumnValidators(hotInstance, colSourceCount) {
|
|
78
|
-
const
|
|
79
|
-
if (sampleVisualRow === null) {
|
|
80
|
-
return {
|
|
81
|
-
fullScan: true,
|
|
82
|
-
columns: []
|
|
83
|
-
};
|
|
84
|
-
}
|
|
81
|
+
const metaManager = hotInstance._getMetaManager();
|
|
85
82
|
const columns = [];
|
|
86
83
|
for(let physicalColumn = 0; physicalColumn < colSourceCount; physicalColumn += 1){
|
|
87
84
|
const visualColumn = hotInstance.columnIndexMapper.getVisualFromPhysicalIndex(physicalColumn);
|
|
88
85
|
if (visualColumn === null) {
|
|
89
86
|
continue;
|
|
90
87
|
}
|
|
91
|
-
const cellMeta =
|
|
88
|
+
const cellMeta = metaManager.getCellMetaUncached(0, physicalColumn, {
|
|
89
|
+
visualRow: 0,
|
|
90
|
+
visualColumn
|
|
91
|
+
});
|
|
92
92
|
const validator = cellMeta.sourceDataValidator;
|
|
93
93
|
if (!isFunction(validator)) {
|
|
94
94
|
continue;
|
|
@@ -112,8 +112,11 @@ import { stringify } from '../helpers/mixed.mjs';
|
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* Validates every source cell by resolving meta per cell (O(rows*cols) meta). Used when
|
|
116
|
-
*
|
|
115
|
+
* Validates every source cell by resolving meta per cell (O(rows*cols) meta). Used when a
|
|
116
|
+
* row-dependent custom validator is configured, or when a cell carries persistent per-cell meta (the
|
|
117
|
+
* `cell` option or `setCellMeta`) that a single column sample cannot represent. Meta is resolved with
|
|
118
|
+
* `getCellMetaUncached`, so no per-cell meta object is retained (the scan does not grow the meta cache
|
|
119
|
+
* to O(rows*cols)) and the `cells` function / `before`/`afterGetCellMeta` hooks are not run.
|
|
117
120
|
*
|
|
118
121
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
119
122
|
* @param {DataSource} dataSource The data source.
|
|
@@ -124,6 +127,7 @@ import { stringify } from '../helpers/mixed.mjs';
|
|
|
124
127
|
* @returns {void}
|
|
125
128
|
*/ function validatePerCell(hotInstance, dataSource, rowSourceCount, colSourceCount, invalidByMessageType, source) {
|
|
126
129
|
const { rowIndexMapper, columnIndexMapper } = hotInstance;
|
|
130
|
+
const metaManager = hotInstance._getMetaManager();
|
|
127
131
|
for(let row = 0; row < rowSourceCount; row += 1){
|
|
128
132
|
for(let col = 0; col < colSourceCount; col += 1){
|
|
129
133
|
const visualRow = rowIndexMapper.getVisualFromPhysicalIndex(row);
|
|
@@ -131,7 +135,10 @@ import { stringify } from '../helpers/mixed.mjs';
|
|
|
131
135
|
if (visualRow === null || visualColumn === null) {
|
|
132
136
|
continue;
|
|
133
137
|
}
|
|
134
|
-
const cellMeta =
|
|
138
|
+
const cellMeta = metaManager.getCellMetaUncached(row, col, {
|
|
139
|
+
visualRow,
|
|
140
|
+
visualColumn
|
|
141
|
+
});
|
|
135
142
|
if (!isFunction(cellMeta.sourceDataValidator)) {
|
|
136
143
|
continue;
|
|
137
144
|
}
|
|
@@ -169,24 +176,33 @@ import { stringify } from '../helpers/mixed.mjs';
|
|
|
169
176
|
}
|
|
170
177
|
}
|
|
171
178
|
/**
|
|
172
|
-
* Detects whether per-cell meta
|
|
173
|
-
*
|
|
174
|
-
* `
|
|
175
|
-
*
|
|
179
|
+
* Detects whether any cell carries persistent per-cell meta that a single column sample cannot
|
|
180
|
+
* represent — the declarative `cell` option or imperatively-set cell meta (`setCellMeta`). These are
|
|
181
|
+
* the only per-row sources that `getCellMetaUncached` resolves, so they force the per-cell scan. The
|
|
182
|
+
* `cells` function and the `before`/`afterGetCellMeta` hooks are deliberately NOT considered here:
|
|
183
|
+
* source-data validation resolves meta uncached and never runs them, so they cannot change which
|
|
184
|
+
* cells carry a `sourceDataValidator`.
|
|
176
185
|
*
|
|
177
186
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
178
187
|
* @param {GridSettings} settings The resolved grid settings.
|
|
179
188
|
* @returns {boolean} `true` when meta must be resolved per cell.
|
|
180
|
-
*/ function
|
|
181
|
-
return
|
|
189
|
+
*/ function hasStoredPerCellMeta(hotInstance, settings) {
|
|
190
|
+
return Array.isArray(settings.cell) && settings.cell.length > 0 || hotInstance._getMetaManager().getUserDefinedCellMetas().length > 0;
|
|
182
191
|
}
|
|
183
192
|
/**
|
|
184
193
|
* Runs source-data validators for all cells and emits one aggregated warning per cell type.
|
|
185
194
|
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
195
|
+
* Meta is resolved with `getCellMetaUncached`, so validation considers the global and column layers,
|
|
196
|
+
* the declarative `cell` option, and imperative `setCellMeta` overrides — but never a `cells` function
|
|
197
|
+
* or the `before`/`afterGetCellMeta` hooks. A cheap O(cols) column probe decides the path:
|
|
198
|
+
*
|
|
199
|
+
* - No column exposes a `sourceDataValidator` and no cell carries persistent per-cell meta — there is
|
|
200
|
+
* nothing to validate, so the scan is skipped entirely. This is what keeps a large grid with a
|
|
201
|
+
* `cells` function (but no validators) from resolving meta for the whole dataset on every load.
|
|
202
|
+
* - Only row-independent built-in validators (`date`/`time`/`intlDate`/`intlTime`) and no persistent
|
|
203
|
+
* per-cell meta — validation reuses one column-level meta per column (O(cols)).
|
|
204
|
+
* - A row-dependent custom validator, or persistent per-cell meta (`cell`/`setCellMeta`) — validation
|
|
205
|
+
* resolves each cell uncached (O(rows*cols) work, but no retained per-cell meta objects).
|
|
190
206
|
*
|
|
191
207
|
* @param {HotInstance} hotInstance The Handsontable instance.
|
|
192
208
|
* @param {string} [source] The source identifier of the operation.
|
|
@@ -200,16 +216,17 @@ import { stringify } from '../helpers/mixed.mjs';
|
|
|
200
216
|
const settings = hotInstance.getSettings();
|
|
201
217
|
const dataSource = hotInstance._getDataSource();
|
|
202
218
|
const invalidByMessageType = new Map();
|
|
203
|
-
|
|
219
|
+
const { fullScan, columns } = collectColumnValidators(hotInstance, colSourceCount);
|
|
220
|
+
const hasStoredMeta = hasStoredPerCellMeta(hotInstance, settings);
|
|
221
|
+
// Nothing carries (or could carry) a source-data validator — skip the scan entirely.
|
|
222
|
+
if (!fullScan && columns.length === 0 && !hasStoredMeta) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (fullScan || hasStoredMeta) {
|
|
204
226
|
validatePerCell(hotInstance, dataSource, rowSourceCount, colSourceCount, invalidByMessageType, source);
|
|
205
227
|
} else {
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
validatePerCell(hotInstance, dataSource, rowSourceCount, colSourceCount, invalidByMessageType, source);
|
|
209
|
-
} else {
|
|
210
|
-
const toVisualRow = (row)=>hotInstance.rowIndexMapper.getVisualFromPhysicalIndex(row);
|
|
211
|
-
validateBatched(columns, dataSource, rowSourceCount, toVisualRow, invalidByMessageType, source);
|
|
212
|
-
}
|
|
228
|
+
const toVisualRow = (row)=>hotInstance.rowIndexMapper.getVisualFromPhysicalIndex(row);
|
|
229
|
+
validateBatched(columns, dataSource, rowSourceCount, toVisualRow, invalidByMessageType, source);
|
|
213
230
|
}
|
|
214
231
|
invalidByMessageType.forEach((items, message)=>{
|
|
215
232
|
logSourceDataWarning(message, items);
|