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
|
@@ -31,7 +31,7 @@ const _errors = require("../errors");
|
|
|
31
31
|
return column;
|
|
32
32
|
}
|
|
33
33
|
accumulatedX += width;
|
|
34
|
-
const { colspan } = hotInstance.
|
|
34
|
+
const { colspan } = hotInstance.getCellMetaTransient(row, column);
|
|
35
35
|
if (colspan !== undefined && colspan > 1) {
|
|
36
36
|
column += colspan - 1;
|
|
37
37
|
}
|
|
@@ -59,13 +59,117 @@ const _errors = require("../errors");
|
|
|
59
59
|
return row;
|
|
60
60
|
}
|
|
61
61
|
accumulatedY += height;
|
|
62
|
-
const { rowspan } = hotInstance.
|
|
62
|
+
const { rowspan } = hotInstance.getCellMetaTransient(row, column);
|
|
63
63
|
if (rowspan !== undefined && rowspan > 1) {
|
|
64
64
|
row += rowspan - 1;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
return null;
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Finds a column suitable for mapping a Y coordinate to a row: the first column in the range
|
|
71
|
+
* whose cells across the scanned rows each occupy their own single row. `findRowAtY` walks one
|
|
72
|
+
* column's cell heights and skips a merged cell's spanned rows, so it is distorted by a cell
|
|
73
|
+
* that spans multiple rows — a vertical-merge anchor or any of its slaves. Such a column is
|
|
74
|
+
* detected two ways: `rowspan > 1` on the anchor's meta, and element identity, since every row
|
|
75
|
+
* inside a vertical merge resolves to the same rendered cell. A purely horizontal merge resolves
|
|
76
|
+
* to a distinct, single-row master cell per row, so its columns stay valid. A merge in one column
|
|
77
|
+
* must not distort the row lookup used for other columns (DEV-2115).
|
|
78
|
+
*
|
|
79
|
+
* The scanned row range must match the range the returned column will be walked over (the frozen
|
|
80
|
+
* overlays and the scrollable body are resolved separately), so a merge confined to frozen rows
|
|
81
|
+
* cannot leak into the body lookup or vice versa.
|
|
82
|
+
*
|
|
83
|
+
* @param {Handsontable} hotInstance The Handsontable instance.
|
|
84
|
+
* @param {number} startColumn First column to consider.
|
|
85
|
+
* @param {number} endColumn Last column to consider (inclusive).
|
|
86
|
+
* @param {number} startRow First row of the scanned range.
|
|
87
|
+
* @param {number} endRow Last row of the scanned range (inclusive).
|
|
88
|
+
* @returns {number} A column index free of vertical-merge distortion, or `startColumn` if none qualifies.
|
|
89
|
+
*/ function findRowReferenceColumn(hotInstance, startColumn, endColumn, startRow, endRow) {
|
|
90
|
+
for(let column = startColumn; column <= endColumn; column++){
|
|
91
|
+
let spansMultipleRows = false;
|
|
92
|
+
let hasRenderableCell = false;
|
|
93
|
+
let previousCell = null;
|
|
94
|
+
for(let row = startRow; row <= endRow; row++){
|
|
95
|
+
const cell = hotInstance.getCell(row, column, true);
|
|
96
|
+
const { rowspan } = hotInstance.getCellMetaTransient(row, column);
|
|
97
|
+
// A vertically merged cell reports `rowspan > 1` on its anchor and resolves to the same
|
|
98
|
+
// rendered element for every row it covers; either signal marks the column as distorting.
|
|
99
|
+
if (rowspan !== undefined && rowspan > 1 || cell !== null && cell === previousCell) {
|
|
100
|
+
spansMultipleRows = true;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
if (cell !== null) {
|
|
104
|
+
previousCell = cell;
|
|
105
|
+
hasRenderableCell = true;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// A hidden column (e.g. `hiddenColumns`) renders no cells, so `findRowAtY` cannot measure
|
|
109
|
+
// against it. Require at least one renderable cell so a hidden column between the merged
|
|
110
|
+
// column and a usable one is skipped rather than picked as the reference.
|
|
111
|
+
if (!spansMultipleRows && hasRenderableCell) {
|
|
112
|
+
return column;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Best-effort fallback: every column in the scanned range is vertically merged (e.g. a grouped
|
|
116
|
+
// report grid whose visible columns all merge across the same band). No column is free of the
|
|
117
|
+
// distortion, so `findRowAtY` will still collapse the band onto its anchor — `startColumn` is
|
|
118
|
+
// simply the least-surprising choice. This is a known narrow case of DEV-2115, not a bug here.
|
|
119
|
+
return startColumn;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Finds a row suitable for mapping an X coordinate to a column: the first row in the range
|
|
123
|
+
* whose cells across the scanned columns each occupy their own single column. `findColumnAtX`
|
|
124
|
+
* walks one row's cell widths and skips a merged cell's spanned columns, so it is distorted by a
|
|
125
|
+
* cell that spans multiple columns - a horizontal-merge anchor or any of its slaves. Such a row
|
|
126
|
+
* is detected two ways: `colspan > 1` on the anchor's meta, and element identity, since every
|
|
127
|
+
* column inside a horizontal merge resolves to the same rendered cell. A purely vertical merge
|
|
128
|
+
* resolves to a distinct, single-column master cell per column, so its rows stay valid. A merge
|
|
129
|
+
* in one row must not distort the column lookup used for other rows (DEV-2124).
|
|
130
|
+
*
|
|
131
|
+
* The scanned column range must match the range the returned row will be walked over (the frozen
|
|
132
|
+
* overlays and the scrollable body are resolved separately), so a merge confined to frozen
|
|
133
|
+
* columns cannot leak into the body lookup or vice versa.
|
|
134
|
+
*
|
|
135
|
+
* @param {Handsontable} hotInstance The Handsontable instance.
|
|
136
|
+
* @param {number} startRow First row to consider.
|
|
137
|
+
* @param {number} endRow Last row to consider (inclusive).
|
|
138
|
+
* @param {number} startColumn First column of the scanned range.
|
|
139
|
+
* @param {number} endColumn Last column of the scanned range (inclusive).
|
|
140
|
+
* @returns {number} A row index free of horizontal-merge distortion, or `startRow` if none qualifies.
|
|
141
|
+
*/ function findColumnReferenceRow(hotInstance, startRow, endRow, startColumn, endColumn) {
|
|
142
|
+
for(let row = startRow; row <= endRow; row++){
|
|
143
|
+
let spansMultipleColumns = false;
|
|
144
|
+
let hasRenderableCell = false;
|
|
145
|
+
let previousCell = null;
|
|
146
|
+
for(let column = startColumn; column <= endColumn; column++){
|
|
147
|
+
const cell = hotInstance.getCell(row, column, true);
|
|
148
|
+
const { colspan } = hotInstance.getCellMetaTransient(row, column);
|
|
149
|
+
// A horizontally merged cell reports `colspan > 1` on its anchor and resolves to the same
|
|
150
|
+
// rendered element for every column it covers; either signal marks the row as distorting.
|
|
151
|
+
if (colspan !== undefined && colspan > 1 || cell !== null && cell === previousCell) {
|
|
152
|
+
spansMultipleColumns = true;
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
if (cell !== null) {
|
|
156
|
+
previousCell = cell;
|
|
157
|
+
hasRenderableCell = true;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// A hidden row (e.g. `hiddenRows`) renders no cells, so `findColumnAtX` cannot measure
|
|
161
|
+
// against it. Require at least one renderable cell so a hidden row between the merged
|
|
162
|
+
// row and a usable one is skipped rather than picked as the reference.
|
|
163
|
+
if (!spansMultipleColumns && hasRenderableCell) {
|
|
164
|
+
return row;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Best-effort fallback: every row in the scanned range is horizontally merged (e.g. a banded
|
|
168
|
+
// report grid whose visible rows all merge across the same columns). No row is free of the
|
|
169
|
+
// distortion, so `findColumnAtX` will still collapse the band onto its anchor - `startRow` is
|
|
170
|
+
// simply the least-surprising choice. This is a known narrow case of DEV-2124, not a bug here.
|
|
171
|
+
return startRow;
|
|
172
|
+
}
|
|
69
173
|
function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
70
174
|
const { view, columnIndexMapper, rowIndexMapper } = hotInstance;
|
|
71
175
|
const isRtl = hotInstance.isRtl();
|
|
@@ -101,6 +205,20 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
101
205
|
const tableViewportBottom = view.isVerticallyScrollableByWindow() ? rootWindow.innerHeight : tableOffset.top + view.getViewportHeight() + columnHeaderHeight;
|
|
102
206
|
const clampedX = (0, _number.clamp)(mouseX, tableViewportLeft, tableViewportRight);
|
|
103
207
|
const clampedY = (0, _number.clamp)(mouseY, tableViewportTop, tableViewportBottom);
|
|
208
|
+
// Resolve the column against a row that has no horizontal merge across the columns being
|
|
209
|
+
// walked. `findColumnAtX` skips a merged cell's spanned columns, so measuring against a
|
|
210
|
+
// horizontally merged row collapses every X inside the band onto the merge anchor - and when
|
|
211
|
+
// the anchor is scrolled out of view the band's full width is counted once per slave column.
|
|
212
|
+
// Neither a fixed row nor the pointer's row is universally safe (a merge can live in either),
|
|
213
|
+
// so each column-scan branch picks the first row free of horizontal merges within its own
|
|
214
|
+
// column range (DEV-2124).
|
|
215
|
+
const columnReferenceRowStart = firstPartiallyVisibleRow ?? 0;
|
|
216
|
+
// When the viewport query returns null nothing is rendered, so there is no cell to measure
|
|
217
|
+
// against. Keep the search inside the (empty) rendered range instead of opening it to every
|
|
218
|
+
// row in the grid - otherwise `findColumnReferenceRow` walks the full row x column product,
|
|
219
|
+
// calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
|
|
220
|
+
// on a large off-screen grid locks the tab.
|
|
221
|
+
const columnReferenceRowEnd = lastPartiallyVisibleRow ?? columnReferenceRowStart;
|
|
104
222
|
let foundColumn = null;
|
|
105
223
|
// Check fixed columns first
|
|
106
224
|
if (numberOfFixedColumnsStart > 0) {
|
|
@@ -108,21 +226,23 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
108
226
|
const lastFixedColumn = columnIndexMapper.getVisualFromRenderableIndex(numberOfFixedColumnsStart - 1);
|
|
109
227
|
const firstNonHiddenColumn = firstFixedColumn !== null ? columnIndexMapper.getNearestNotHiddenIndex(firstFixedColumn, 1) : null;
|
|
110
228
|
if (firstNonHiddenColumn !== null && lastFixedColumn !== null) {
|
|
111
|
-
const
|
|
229
|
+
const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstNonHiddenColumn, lastFixedColumn);
|
|
230
|
+
const fixedCell = hotInstance.getCell(columnReferenceRow, firstNonHiddenColumn, true);
|
|
112
231
|
if (fixedCell instanceof HTMLElement) {
|
|
113
232
|
const fixedCellRect = fixedCell.getBoundingClientRect();
|
|
114
233
|
const fixedRelativeX = isRtl ? fixedCellRect.right - clampedX : clampedX - fixedCellRect.left;
|
|
115
|
-
foundColumn = findColumnAtX(hotInstance,
|
|
234
|
+
foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstNonHiddenColumn, lastFixedColumn, fixedRelativeX);
|
|
116
235
|
}
|
|
117
236
|
}
|
|
118
237
|
}
|
|
119
238
|
// If not in fixed columns, check scrollable columns (main table)
|
|
120
239
|
if (foundColumn === null) {
|
|
121
|
-
const
|
|
240
|
+
const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn);
|
|
241
|
+
const scrollCell = hotInstance.getCell(columnReferenceRow, firstPartiallyVisibleColumn, true);
|
|
122
242
|
if (scrollCell instanceof HTMLElement) {
|
|
123
243
|
const scrollCellRect = scrollCell.getBoundingClientRect();
|
|
124
244
|
const scrollRelativeX = isRtl ? scrollCellRect.right - clampedX : clampedX - scrollCellRect.left;
|
|
125
|
-
foundColumn = findColumnAtX(hotInstance,
|
|
245
|
+
foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn, scrollRelativeX);
|
|
126
246
|
// Fallback to edge columns if still not found.
|
|
127
247
|
// If `lastPartiallyVisibleColumn` is null (e.g., the HoT is positioned off-screen and
|
|
128
248
|
// viewport queries return invalid indexes), fall back to the global column bounds.
|
|
@@ -133,6 +253,21 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
133
253
|
foundColumn = firstPartiallyVisibleColumn ?? 0;
|
|
134
254
|
}
|
|
135
255
|
}
|
|
256
|
+
if (foundColumn === null) {
|
|
257
|
+
(0, _errors.throwWithCause)('Failed to resolve cell coordinates from mouse position.');
|
|
258
|
+
}
|
|
259
|
+
// Resolve the row against a column that has no vertical merge across the rows being walked.
|
|
260
|
+
// `findRowAtY` skips a merged cell's spanned rows, so measuring against a vertically merged
|
|
261
|
+
// column collapses every Y inside the band onto the merge anchor. Neither a fixed column nor
|
|
262
|
+
// the pointer's column is universally safe (a merge can live in either), so each row-scan
|
|
263
|
+
// branch picks the first column free of vertical merges within its own row range (DEV-2115).
|
|
264
|
+
const rowReferenceColumnStart = firstPartiallyVisibleColumn ?? 0;
|
|
265
|
+
// When the viewport query returns null nothing is rendered, so there is no cell to measure
|
|
266
|
+
// against. Keep the search inside the (empty) rendered range instead of opening it to every
|
|
267
|
+
// column in the grid — otherwise `findRowReferenceColumn` walks the full column x row product,
|
|
268
|
+
// calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
|
|
269
|
+
// on a large off-screen grid locks the tab.
|
|
270
|
+
const rowReferenceColumnEnd = lastPartiallyVisibleColumn ?? rowReferenceColumnStart;
|
|
136
271
|
let foundRow = null;
|
|
137
272
|
// Check fixed top rows first
|
|
138
273
|
if (numberOfFixedRowsTop > 0) {
|
|
@@ -140,11 +275,12 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
140
275
|
const lastFixedRow = rowIndexMapper.getVisualFromRenderableIndex(numberOfFixedRowsTop - 1);
|
|
141
276
|
const firstNonHiddenRow = firstFixedRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(firstFixedRow, 1) : null;
|
|
142
277
|
if (firstNonHiddenRow !== null && lastFixedRow !== null) {
|
|
143
|
-
const
|
|
278
|
+
const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, firstNonHiddenRow, lastFixedRow);
|
|
279
|
+
const fixedCell = hotInstance.getCell(firstNonHiddenRow, rowReferenceColumn, true);
|
|
144
280
|
if (fixedCell instanceof HTMLElement) {
|
|
145
281
|
const fixedCellRect = fixedCell.getBoundingClientRect();
|
|
146
282
|
const fixedRelativeY = clampedY - fixedCellRect.top;
|
|
147
|
-
foundRow = findRowAtY(hotInstance,
|
|
283
|
+
foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstNonHiddenRow, lastFixedRow, fixedRelativeY);
|
|
148
284
|
}
|
|
149
285
|
}
|
|
150
286
|
}
|
|
@@ -156,12 +292,13 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
156
292
|
const bottomStartNonHiddenRow = bottomStartRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomStartRow, 1) : null;
|
|
157
293
|
const bottomEndNonHiddenRow = bottomEndRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomEndRow, -1) : null;
|
|
158
294
|
if (bottomStartNonHiddenRow !== null && bottomEndNonHiddenRow !== null) {
|
|
159
|
-
const
|
|
295
|
+
const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, bottomStartNonHiddenRow, bottomEndNonHiddenRow);
|
|
296
|
+
const fixedBottomCell = hotInstance.getCell(bottomStartNonHiddenRow, rowReferenceColumn, true);
|
|
160
297
|
if (fixedBottomCell instanceof HTMLElement) {
|
|
161
298
|
const fixedBottomCellRect = fixedBottomCell.getBoundingClientRect();
|
|
162
299
|
const fixedBottomRelativeY = clampedY - fixedBottomCellRect.top;
|
|
163
300
|
if (fixedBottomRelativeY >= 0) {
|
|
164
|
-
foundRow = findRowAtY(hotInstance,
|
|
301
|
+
foundRow = findRowAtY(hotInstance, rowReferenceColumn, bottomStartNonHiddenRow, bottomEndNonHiddenRow, fixedBottomRelativeY);
|
|
165
302
|
if (foundRow === null) {
|
|
166
303
|
foundRow = bottomEndNonHiddenRow;
|
|
167
304
|
}
|
|
@@ -171,11 +308,17 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
171
308
|
}
|
|
172
309
|
// Check scrollable rows (main table)
|
|
173
310
|
if (foundRow === null) {
|
|
174
|
-
const
|
|
311
|
+
const scrollRowScanStart = firstPartiallyVisibleRow ?? 0;
|
|
312
|
+
// Same null-viewport guard as the column bound above: clamp the row scan to the (empty)
|
|
313
|
+
// rendered range rather than `countRows()`, so the reference-column search cannot walk the
|
|
314
|
+
// whole grid when nothing is rendered.
|
|
315
|
+
const scrollRowScanEnd = lastPartiallyVisibleRow ?? scrollRowScanStart;
|
|
316
|
+
const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, scrollRowScanStart, scrollRowScanEnd);
|
|
317
|
+
const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, rowReferenceColumn, true);
|
|
175
318
|
if (scrollCell instanceof HTMLElement) {
|
|
176
319
|
const scrollCellRect = scrollCell.getBoundingClientRect();
|
|
177
320
|
const scrollRelativeY = clampedY - scrollCellRect.top;
|
|
178
|
-
foundRow = findRowAtY(hotInstance,
|
|
321
|
+
foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstPartiallyVisibleRow, lastPartiallyVisibleRow, scrollRelativeY);
|
|
179
322
|
// Fallback to edge rows if still not found. If the viewport query returns null
|
|
180
323
|
// (off-screen HoT edge case), use the global row bounds.
|
|
181
324
|
if (foundRow === null) {
|
|
@@ -185,7 +328,7 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
|
|
|
185
328
|
foundRow = firstPartiallyVisibleRow ?? 0;
|
|
186
329
|
}
|
|
187
330
|
}
|
|
188
|
-
if (foundRow === null
|
|
331
|
+
if (foundRow === null) {
|
|
189
332
|
(0, _errors.throwWithCause)('Failed to resolve cell coordinates from mouse position.');
|
|
190
333
|
}
|
|
191
334
|
return hotInstance._createCellCoords(foundRow, foundColumn);
|
|
@@ -21,7 +21,7 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
21
21
|
return column;
|
|
22
22
|
}
|
|
23
23
|
accumulatedX += width;
|
|
24
|
-
const { colspan } = hotInstance.
|
|
24
|
+
const { colspan } = hotInstance.getCellMetaTransient(row, column);
|
|
25
25
|
if (colspan !== undefined && colspan > 1) {
|
|
26
26
|
column += colspan - 1;
|
|
27
27
|
}
|
|
@@ -49,13 +49,117 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
49
49
|
return row;
|
|
50
50
|
}
|
|
51
51
|
accumulatedY += height;
|
|
52
|
-
const { rowspan } = hotInstance.
|
|
52
|
+
const { rowspan } = hotInstance.getCellMetaTransient(row, column);
|
|
53
53
|
if (rowspan !== undefined && rowspan > 1) {
|
|
54
54
|
row += rowspan - 1;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
return null;
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Finds a column suitable for mapping a Y coordinate to a row: the first column in the range
|
|
61
|
+
* whose cells across the scanned rows each occupy their own single row. `findRowAtY` walks one
|
|
62
|
+
* column's cell heights and skips a merged cell's spanned rows, so it is distorted by a cell
|
|
63
|
+
* that spans multiple rows — a vertical-merge anchor or any of its slaves. Such a column is
|
|
64
|
+
* detected two ways: `rowspan > 1` on the anchor's meta, and element identity, since every row
|
|
65
|
+
* inside a vertical merge resolves to the same rendered cell. A purely horizontal merge resolves
|
|
66
|
+
* to a distinct, single-row master cell per row, so its columns stay valid. A merge in one column
|
|
67
|
+
* must not distort the row lookup used for other columns (DEV-2115).
|
|
68
|
+
*
|
|
69
|
+
* The scanned row range must match the range the returned column will be walked over (the frozen
|
|
70
|
+
* overlays and the scrollable body are resolved separately), so a merge confined to frozen rows
|
|
71
|
+
* cannot leak into the body lookup or vice versa.
|
|
72
|
+
*
|
|
73
|
+
* @param {Handsontable} hotInstance The Handsontable instance.
|
|
74
|
+
* @param {number} startColumn First column to consider.
|
|
75
|
+
* @param {number} endColumn Last column to consider (inclusive).
|
|
76
|
+
* @param {number} startRow First row of the scanned range.
|
|
77
|
+
* @param {number} endRow Last row of the scanned range (inclusive).
|
|
78
|
+
* @returns {number} A column index free of vertical-merge distortion, or `startColumn` if none qualifies.
|
|
79
|
+
*/ function findRowReferenceColumn(hotInstance, startColumn, endColumn, startRow, endRow) {
|
|
80
|
+
for(let column = startColumn; column <= endColumn; column++){
|
|
81
|
+
let spansMultipleRows = false;
|
|
82
|
+
let hasRenderableCell = false;
|
|
83
|
+
let previousCell = null;
|
|
84
|
+
for(let row = startRow; row <= endRow; row++){
|
|
85
|
+
const cell = hotInstance.getCell(row, column, true);
|
|
86
|
+
const { rowspan } = hotInstance.getCellMetaTransient(row, column);
|
|
87
|
+
// A vertically merged cell reports `rowspan > 1` on its anchor and resolves to the same
|
|
88
|
+
// rendered element for every row it covers; either signal marks the column as distorting.
|
|
89
|
+
if (rowspan !== undefined && rowspan > 1 || cell !== null && cell === previousCell) {
|
|
90
|
+
spansMultipleRows = true;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
if (cell !== null) {
|
|
94
|
+
previousCell = cell;
|
|
95
|
+
hasRenderableCell = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// A hidden column (e.g. `hiddenColumns`) renders no cells, so `findRowAtY` cannot measure
|
|
99
|
+
// against it. Require at least one renderable cell so a hidden column between the merged
|
|
100
|
+
// column and a usable one is skipped rather than picked as the reference.
|
|
101
|
+
if (!spansMultipleRows && hasRenderableCell) {
|
|
102
|
+
return column;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Best-effort fallback: every column in the scanned range is vertically merged (e.g. a grouped
|
|
106
|
+
// report grid whose visible columns all merge across the same band). No column is free of the
|
|
107
|
+
// distortion, so `findRowAtY` will still collapse the band onto its anchor — `startColumn` is
|
|
108
|
+
// simply the least-surprising choice. This is a known narrow case of DEV-2115, not a bug here.
|
|
109
|
+
return startColumn;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Finds a row suitable for mapping an X coordinate to a column: the first row in the range
|
|
113
|
+
* whose cells across the scanned columns each occupy their own single column. `findColumnAtX`
|
|
114
|
+
* walks one row's cell widths and skips a merged cell's spanned columns, so it is distorted by a
|
|
115
|
+
* cell that spans multiple columns - a horizontal-merge anchor or any of its slaves. Such a row
|
|
116
|
+
* is detected two ways: `colspan > 1` on the anchor's meta, and element identity, since every
|
|
117
|
+
* column inside a horizontal merge resolves to the same rendered cell. A purely vertical merge
|
|
118
|
+
* resolves to a distinct, single-column master cell per column, so its rows stay valid. A merge
|
|
119
|
+
* in one row must not distort the column lookup used for other rows (DEV-2124).
|
|
120
|
+
*
|
|
121
|
+
* The scanned column range must match the range the returned row will be walked over (the frozen
|
|
122
|
+
* overlays and the scrollable body are resolved separately), so a merge confined to frozen
|
|
123
|
+
* columns cannot leak into the body lookup or vice versa.
|
|
124
|
+
*
|
|
125
|
+
* @param {Handsontable} hotInstance The Handsontable instance.
|
|
126
|
+
* @param {number} startRow First row to consider.
|
|
127
|
+
* @param {number} endRow Last row to consider (inclusive).
|
|
128
|
+
* @param {number} startColumn First column of the scanned range.
|
|
129
|
+
* @param {number} endColumn Last column of the scanned range (inclusive).
|
|
130
|
+
* @returns {number} A row index free of horizontal-merge distortion, or `startRow` if none qualifies.
|
|
131
|
+
*/ function findColumnReferenceRow(hotInstance, startRow, endRow, startColumn, endColumn) {
|
|
132
|
+
for(let row = startRow; row <= endRow; row++){
|
|
133
|
+
let spansMultipleColumns = false;
|
|
134
|
+
let hasRenderableCell = false;
|
|
135
|
+
let previousCell = null;
|
|
136
|
+
for(let column = startColumn; column <= endColumn; column++){
|
|
137
|
+
const cell = hotInstance.getCell(row, column, true);
|
|
138
|
+
const { colspan } = hotInstance.getCellMetaTransient(row, column);
|
|
139
|
+
// A horizontally merged cell reports `colspan > 1` on its anchor and resolves to the same
|
|
140
|
+
// rendered element for every column it covers; either signal marks the row as distorting.
|
|
141
|
+
if (colspan !== undefined && colspan > 1 || cell !== null && cell === previousCell) {
|
|
142
|
+
spansMultipleColumns = true;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
if (cell !== null) {
|
|
146
|
+
previousCell = cell;
|
|
147
|
+
hasRenderableCell = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// A hidden row (e.g. `hiddenRows`) renders no cells, so `findColumnAtX` cannot measure
|
|
151
|
+
// against it. Require at least one renderable cell so a hidden row between the merged
|
|
152
|
+
// row and a usable one is skipped rather than picked as the reference.
|
|
153
|
+
if (!spansMultipleColumns && hasRenderableCell) {
|
|
154
|
+
return row;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Best-effort fallback: every row in the scanned range is horizontally merged (e.g. a banded
|
|
158
|
+
// report grid whose visible rows all merge across the same columns). No row is free of the
|
|
159
|
+
// distortion, so `findColumnAtX` will still collapse the band onto its anchor - `startRow` is
|
|
160
|
+
// simply the least-surprising choice. This is a known narrow case of DEV-2124, not a bug here.
|
|
161
|
+
return startRow;
|
|
162
|
+
}
|
|
59
163
|
/**
|
|
60
164
|
* Get the cell coordinates from the mouse position. When the mouse is outside of the table,
|
|
61
165
|
* the nearest cell is returned.
|
|
@@ -99,6 +203,20 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
99
203
|
const tableViewportBottom = view.isVerticallyScrollableByWindow() ? rootWindow.innerHeight : tableOffset.top + view.getViewportHeight() + columnHeaderHeight;
|
|
100
204
|
const clampedX = clamp(mouseX, tableViewportLeft, tableViewportRight);
|
|
101
205
|
const clampedY = clamp(mouseY, tableViewportTop, tableViewportBottom);
|
|
206
|
+
// Resolve the column against a row that has no horizontal merge across the columns being
|
|
207
|
+
// walked. `findColumnAtX` skips a merged cell's spanned columns, so measuring against a
|
|
208
|
+
// horizontally merged row collapses every X inside the band onto the merge anchor - and when
|
|
209
|
+
// the anchor is scrolled out of view the band's full width is counted once per slave column.
|
|
210
|
+
// Neither a fixed row nor the pointer's row is universally safe (a merge can live in either),
|
|
211
|
+
// so each column-scan branch picks the first row free of horizontal merges within its own
|
|
212
|
+
// column range (DEV-2124).
|
|
213
|
+
const columnReferenceRowStart = firstPartiallyVisibleRow ?? 0;
|
|
214
|
+
// When the viewport query returns null nothing is rendered, so there is no cell to measure
|
|
215
|
+
// against. Keep the search inside the (empty) rendered range instead of opening it to every
|
|
216
|
+
// row in the grid - otherwise `findColumnReferenceRow` walks the full row x column product,
|
|
217
|
+
// calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
|
|
218
|
+
// on a large off-screen grid locks the tab.
|
|
219
|
+
const columnReferenceRowEnd = lastPartiallyVisibleRow ?? columnReferenceRowStart;
|
|
102
220
|
let foundColumn = null;
|
|
103
221
|
// Check fixed columns first
|
|
104
222
|
if (numberOfFixedColumnsStart > 0) {
|
|
@@ -106,21 +224,23 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
106
224
|
const lastFixedColumn = columnIndexMapper.getVisualFromRenderableIndex(numberOfFixedColumnsStart - 1);
|
|
107
225
|
const firstNonHiddenColumn = firstFixedColumn !== null ? columnIndexMapper.getNearestNotHiddenIndex(firstFixedColumn, 1) : null;
|
|
108
226
|
if (firstNonHiddenColumn !== null && lastFixedColumn !== null) {
|
|
109
|
-
const
|
|
227
|
+
const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstNonHiddenColumn, lastFixedColumn);
|
|
228
|
+
const fixedCell = hotInstance.getCell(columnReferenceRow, firstNonHiddenColumn, true);
|
|
110
229
|
if (fixedCell instanceof HTMLElement) {
|
|
111
230
|
const fixedCellRect = fixedCell.getBoundingClientRect();
|
|
112
231
|
const fixedRelativeX = isRtl ? fixedCellRect.right - clampedX : clampedX - fixedCellRect.left;
|
|
113
|
-
foundColumn = findColumnAtX(hotInstance,
|
|
232
|
+
foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstNonHiddenColumn, lastFixedColumn, fixedRelativeX);
|
|
114
233
|
}
|
|
115
234
|
}
|
|
116
235
|
}
|
|
117
236
|
// If not in fixed columns, check scrollable columns (main table)
|
|
118
237
|
if (foundColumn === null) {
|
|
119
|
-
const
|
|
238
|
+
const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn);
|
|
239
|
+
const scrollCell = hotInstance.getCell(columnReferenceRow, firstPartiallyVisibleColumn, true);
|
|
120
240
|
if (scrollCell instanceof HTMLElement) {
|
|
121
241
|
const scrollCellRect = scrollCell.getBoundingClientRect();
|
|
122
242
|
const scrollRelativeX = isRtl ? scrollCellRect.right - clampedX : clampedX - scrollCellRect.left;
|
|
123
|
-
foundColumn = findColumnAtX(hotInstance,
|
|
243
|
+
foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn, scrollRelativeX);
|
|
124
244
|
// Fallback to edge columns if still not found.
|
|
125
245
|
// If `lastPartiallyVisibleColumn` is null (e.g., the HoT is positioned off-screen and
|
|
126
246
|
// viewport queries return invalid indexes), fall back to the global column bounds.
|
|
@@ -131,6 +251,21 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
131
251
|
foundColumn = firstPartiallyVisibleColumn ?? 0;
|
|
132
252
|
}
|
|
133
253
|
}
|
|
254
|
+
if (foundColumn === null) {
|
|
255
|
+
throwWithCause('Failed to resolve cell coordinates from mouse position.');
|
|
256
|
+
}
|
|
257
|
+
// Resolve the row against a column that has no vertical merge across the rows being walked.
|
|
258
|
+
// `findRowAtY` skips a merged cell's spanned rows, so measuring against a vertically merged
|
|
259
|
+
// column collapses every Y inside the band onto the merge anchor. Neither a fixed column nor
|
|
260
|
+
// the pointer's column is universally safe (a merge can live in either), so each row-scan
|
|
261
|
+
// branch picks the first column free of vertical merges within its own row range (DEV-2115).
|
|
262
|
+
const rowReferenceColumnStart = firstPartiallyVisibleColumn ?? 0;
|
|
263
|
+
// When the viewport query returns null nothing is rendered, so there is no cell to measure
|
|
264
|
+
// against. Keep the search inside the (empty) rendered range instead of opening it to every
|
|
265
|
+
// column in the grid — otherwise `findRowReferenceColumn` walks the full column x row product,
|
|
266
|
+
// calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
|
|
267
|
+
// on a large off-screen grid locks the tab.
|
|
268
|
+
const rowReferenceColumnEnd = lastPartiallyVisibleColumn ?? rowReferenceColumnStart;
|
|
134
269
|
let foundRow = null;
|
|
135
270
|
// Check fixed top rows first
|
|
136
271
|
if (numberOfFixedRowsTop > 0) {
|
|
@@ -138,11 +273,12 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
138
273
|
const lastFixedRow = rowIndexMapper.getVisualFromRenderableIndex(numberOfFixedRowsTop - 1);
|
|
139
274
|
const firstNonHiddenRow = firstFixedRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(firstFixedRow, 1) : null;
|
|
140
275
|
if (firstNonHiddenRow !== null && lastFixedRow !== null) {
|
|
141
|
-
const
|
|
276
|
+
const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, firstNonHiddenRow, lastFixedRow);
|
|
277
|
+
const fixedCell = hotInstance.getCell(firstNonHiddenRow, rowReferenceColumn, true);
|
|
142
278
|
if (fixedCell instanceof HTMLElement) {
|
|
143
279
|
const fixedCellRect = fixedCell.getBoundingClientRect();
|
|
144
280
|
const fixedRelativeY = clampedY - fixedCellRect.top;
|
|
145
|
-
foundRow = findRowAtY(hotInstance,
|
|
281
|
+
foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstNonHiddenRow, lastFixedRow, fixedRelativeY);
|
|
146
282
|
}
|
|
147
283
|
}
|
|
148
284
|
}
|
|
@@ -154,12 +290,13 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
154
290
|
const bottomStartNonHiddenRow = bottomStartRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomStartRow, 1) : null;
|
|
155
291
|
const bottomEndNonHiddenRow = bottomEndRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomEndRow, -1) : null;
|
|
156
292
|
if (bottomStartNonHiddenRow !== null && bottomEndNonHiddenRow !== null) {
|
|
157
|
-
const
|
|
293
|
+
const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, bottomStartNonHiddenRow, bottomEndNonHiddenRow);
|
|
294
|
+
const fixedBottomCell = hotInstance.getCell(bottomStartNonHiddenRow, rowReferenceColumn, true);
|
|
158
295
|
if (fixedBottomCell instanceof HTMLElement) {
|
|
159
296
|
const fixedBottomCellRect = fixedBottomCell.getBoundingClientRect();
|
|
160
297
|
const fixedBottomRelativeY = clampedY - fixedBottomCellRect.top;
|
|
161
298
|
if (fixedBottomRelativeY >= 0) {
|
|
162
|
-
foundRow = findRowAtY(hotInstance,
|
|
299
|
+
foundRow = findRowAtY(hotInstance, rowReferenceColumn, bottomStartNonHiddenRow, bottomEndNonHiddenRow, fixedBottomRelativeY);
|
|
163
300
|
if (foundRow === null) {
|
|
164
301
|
foundRow = bottomEndNonHiddenRow;
|
|
165
302
|
}
|
|
@@ -169,11 +306,17 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
169
306
|
}
|
|
170
307
|
// Check scrollable rows (main table)
|
|
171
308
|
if (foundRow === null) {
|
|
172
|
-
const
|
|
309
|
+
const scrollRowScanStart = firstPartiallyVisibleRow ?? 0;
|
|
310
|
+
// Same null-viewport guard as the column bound above: clamp the row scan to the (empty)
|
|
311
|
+
// rendered range rather than `countRows()`, so the reference-column search cannot walk the
|
|
312
|
+
// whole grid when nothing is rendered.
|
|
313
|
+
const scrollRowScanEnd = lastPartiallyVisibleRow ?? scrollRowScanStart;
|
|
314
|
+
const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, scrollRowScanStart, scrollRowScanEnd);
|
|
315
|
+
const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, rowReferenceColumn, true);
|
|
173
316
|
if (scrollCell instanceof HTMLElement) {
|
|
174
317
|
const scrollCellRect = scrollCell.getBoundingClientRect();
|
|
175
318
|
const scrollRelativeY = clampedY - scrollCellRect.top;
|
|
176
|
-
foundRow = findRowAtY(hotInstance,
|
|
319
|
+
foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstPartiallyVisibleRow, lastPartiallyVisibleRow, scrollRelativeY);
|
|
177
320
|
// Fallback to edge rows if still not found. If the viewport query returns null
|
|
178
321
|
// (off-screen HoT edge case), use the global row bounds.
|
|
179
322
|
if (foundRow === null) {
|
|
@@ -183,7 +326,7 @@ import { throwWithCause } from '../errors.mjs';
|
|
|
183
326
|
foundRow = firstPartiallyVisibleRow ?? 0;
|
|
184
327
|
}
|
|
185
328
|
}
|
|
186
|
-
if (foundRow === null
|
|
329
|
+
if (foundRow === null) {
|
|
187
330
|
throwWithCause('Failed to resolve cell coordinates from mouse position.');
|
|
188
331
|
}
|
|
189
332
|
return hotInstance._createCellCoords(foundRow, foundColumn);
|
package/helpers/dom/element.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SanitizerContext } from '../../core/settings';
|
|
1
2
|
/**
|
|
2
3
|
* Get the parent of the specified node in the DOM tree.
|
|
3
4
|
*
|
|
@@ -172,20 +173,34 @@ export declare const HTML_CHARACTERS: RegExp;
|
|
|
172
173
|
* collapse into a single warning per Handsontable instance.
|
|
173
174
|
*/
|
|
174
175
|
export declare const SANITIZER_WARN_KEY = "sanitizer";
|
|
176
|
+
/**
|
|
177
|
+
* Builds the missing-sanitizer warning. Every surface that writes raw HTML uses this, whether it
|
|
178
|
+
* goes through `fastInnerHTML` or sanitizes a string first (`utils/sanitizer.ts`), so the wording
|
|
179
|
+
* cannot drift between them.
|
|
180
|
+
*
|
|
181
|
+
* It lives here rather than beside its second caller because `utils/sanitizer.ts` already imports
|
|
182
|
+
* from this module, and the reverse direction would be a cycle. That makes it public through
|
|
183
|
+
* `Handsontable.dom`, like `HTML_CHARACTERS` and `SANITIZER_WARN_KEY` above it - accepted
|
|
184
|
+
* deliberately: it is a pure string builder, and it is useful to anyone writing their own sink.
|
|
185
|
+
*
|
|
186
|
+
* @param {string} context The write surface that is about to receive raw HTML.
|
|
187
|
+
* @returns {string} The warning message.
|
|
188
|
+
*/
|
|
189
|
+
export declare function missingSanitizerMessage(context: string): string;
|
|
175
190
|
/**
|
|
176
191
|
* Insert content into element trying to avoid innerHTML method.
|
|
177
192
|
*
|
|
178
193
|
* @param {HTMLElement} element An element to write into.
|
|
179
194
|
* @param {string} content The text to write.
|
|
180
|
-
* @param {boolean|function(string,
|
|
195
|
+
* @param {boolean|function(string, SanitizerContext): string} [sanitizer] When a function, use it as the sanitizer; when `false`,
|
|
181
196
|
* write the content as raw HTML on purpose (no warning); when `true` (the default), write the content as raw HTML and
|
|
182
197
|
* warn once that no sanitizer is configured.
|
|
183
|
-
* @param {
|
|
198
|
+
* @param {SanitizerContext} [context] The sanitization context passed as the second argument to a custom sanitizer function, and
|
|
184
199
|
* used in the missing-sanitizer warning to identify the write surface.
|
|
185
|
-
* @param {object} [scope] Object the "warn once" state is bound to (
|
|
186
|
-
* is shown at most once per Handsontable instance.
|
|
200
|
+
* @param {object} [scope] Object the "warn once" state is bound to (`hot.rootElement` at every call site
|
|
201
|
+
* inside the grid), so the warning is shown at most once per Handsontable instance.
|
|
187
202
|
*/
|
|
188
|
-
export declare function fastInnerHTML(element: HTMLElement, content: string, sanitizer?: boolean | ((html: string, context:
|
|
203
|
+
export declare function fastInnerHTML(element: HTMLElement, content: string, sanitizer?: boolean | ((html: string, context: SanitizerContext) => string), context?: SanitizerContext, scope?: object): void;
|
|
189
204
|
/**
|
|
190
205
|
* Insert text content into element.
|
|
191
206
|
*
|
|
@@ -447,10 +462,14 @@ export declare function isDetached(element: HTMLElement): boolean;
|
|
|
447
462
|
* Set up an observer to recognize when the provided element first becomes visible and trigger a callback when it
|
|
448
463
|
* happens.
|
|
449
464
|
*
|
|
465
|
+
* The observer is returned so the caller can disconnect it earlier - a pending delivery carries the state from
|
|
466
|
+
* the moment its snapshot was taken, so it can arrive after the observed element (or its owner) is gone.
|
|
467
|
+
*
|
|
450
468
|
* @param {HTMLElement} elementToBeObserved Element to be observed.
|
|
451
469
|
* @param {Function} callback The callback function.
|
|
470
|
+
* @returns {IntersectionObserver} The observer watching the element.
|
|
452
471
|
*/
|
|
453
|
-
export declare function observeVisibilityChangeOnce(elementToBeObserved: HTMLElement, callback: () => void):
|
|
472
|
+
export declare function observeVisibilityChangeOnce(elementToBeObserved: HTMLElement, callback: () => void): IntersectionObserver;
|
|
454
473
|
/**
|
|
455
474
|
* Add a `contenteditable` attribute, select the contents and optionally add the `invisibleSelection`
|
|
456
475
|
* class to the provided element.
|
|
@@ -502,10 +521,30 @@ export declare function isHTMLInputElement(element: HTMLElement): element is HTM
|
|
|
502
521
|
/**
|
|
503
522
|
* Check if the node is a ShadowRoot (a document fragment attached to a host element).
|
|
504
523
|
*
|
|
505
|
-
* @param {Node} node Node to check.
|
|
524
|
+
* @param {Node|EventTarget} node Node to check.
|
|
506
525
|
* @returns {boolean} `true` if the node is a ShadowRoot.
|
|
507
526
|
*/
|
|
508
|
-
export declare function isShadowRoot(node: Node): node is ShadowRoot;
|
|
527
|
+
export declare function isShadowRoot(node: Node | EventTarget): node is ShadowRoot;
|
|
528
|
+
/**
|
|
529
|
+
* Gets the chain of shadow host elements the node is rendered within, ordered from the
|
|
530
|
+
* closest host outward to the host attached to the document.
|
|
531
|
+
*
|
|
532
|
+
* @param {Node} node The node to read the host chain from.
|
|
533
|
+
* @returns {HTMLElement[]} The shadow host elements; empty when the node is not in a Shadow DOM tree.
|
|
534
|
+
*/
|
|
535
|
+
export declare function getShadowHostChain(node: Node): HTMLElement[];
|
|
536
|
+
/**
|
|
537
|
+
* Gets the deepest active (focused) element in the document. When the focus is inside
|
|
538
|
+
* a Shadow DOM tree, `document.activeElement` points at the shadow host instead of the
|
|
539
|
+
* focused element. This helper descends through the open shadow roots and returns
|
|
540
|
+
* the element that actually holds the focus.
|
|
541
|
+
*
|
|
542
|
+
* @param {Document} rootDocument The document to read the active element from.
|
|
543
|
+
* @returns {Element|null} The deepest focused element. The browser reports `document.body`
|
|
544
|
+
* when no other element holds the focus; `null` appears only in edge cases such as
|
|
545
|
+
* a document with no body.
|
|
546
|
+
*/
|
|
547
|
+
export declare function getDeepActiveElement(rootDocument: Document): Element | null;
|
|
509
548
|
/**
|
|
510
549
|
* Gets a child node at the specified index cast to the specified HTML element type.
|
|
511
550
|
*
|