handsontable 18.0.0 → 18.1.0-rc1
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 +142 -0
- package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +137 -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 +124 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +114 -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 +251 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +257 -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 +116 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +112 -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 +199 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +196 -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 +116 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +110 -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 +106 -0
- package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +101 -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/coords.js +4 -9
- package/3rdparty/walkontable/src/cell/coords.mjs +4 -9
- package/3rdparty/walkontable/src/cell/range.d.ts +10 -0
- package/3rdparty/walkontable/src/cell/range.js +19 -15
- package/3rdparty/walkontable/src/cell/range.mjs +16 -12
- package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
- package/3rdparty/walkontable/src/core/_base.js +47 -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 +40 -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 +41 -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 +195 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +193 -0
- package/3rdparty/walkontable/src/event.d.ts +25 -12
- package/3rdparty/walkontable/src/event.js +96 -236
- package/3rdparty/walkontable/src/event.mjs +95 -236
- 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 +10 -21
- 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 +605 -0
- package/3rdparty/walkontable/src/overlay/overlays.mjs +594 -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} +155 -50
- package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +158 -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} +111 -66
- package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +111 -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} +120 -67
- package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +120 -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} +161 -77
- package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +161 -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 +149 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +148 -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 +283 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +288 -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 +542 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +550 -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 +173 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +174 -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} +65 -53
- package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +63 -50
- 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 +41 -1
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +42 -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 +375 -0
- package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +152 -6
- package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
- package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +104 -35
- package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +102 -32
- 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 +242 -12
- package/3rdparty/walkontable/src/selection/manager.mjs +243 -13
- package/3rdparty/walkontable/src/selection/scanner.js +5 -12
- package/3rdparty/walkontable/src/selection/scanner.mjs +5 -12
- 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 +290 -0
- package/3rdparty/walkontable/src/table/baseTable.mjs +278 -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} +27 -57
- package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +26 -56
- 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 +363 -0
- package/3rdparty/walkontable/src/viewport/viewport.mjs +355 -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/LICENSE.txt +1 -1
- package/README.md +2 -2
- package/base.d.ts +10 -2
- 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/coordsMapper/rangeToRenderableMapper.js +5 -12
- package/core/coordsMapper/rangeToRenderableMapper.mjs +5 -12
- package/core/hooks/bucket.d.ts +40 -6
- package/core/hooks/bucket.js +113 -84
- package/core/hooks/bucket.mjs +118 -84
- package/core/hooks/constants.js +254 -16
- package/core/hooks/constants.mjs +254 -16
- package/core/hooks/index.js +28 -25
- package/core/hooks/index.mjs +28 -25
- 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 +21 -14
- package/core/layout/domSlot.mjs +21 -14
- 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 +25 -13
- package/core/layout/layoutManager.mjs +26 -11
- package/core/settings.d.ts +59 -6
- package/core/types.d.ts +15 -1
- package/core/types.mjs +9 -0
- package/core.js +481 -85
- package/core.mjs +483 -87
- package/dataMap/dataMap.d.ts +3 -13
- package/dataMap/dataMap.js +101 -44
- package/dataMap/dataMap.mjs +102 -45
- 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 +490 -110
- package/dataMap/metaManager/lazyFactoryMap.mjs +504 -111
- package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
- package/dataMap/metaManager/metaLayers/cellMeta.js +112 -17
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +112 -17
- 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 +712 -31
- package/dataMap/metaManager/metaSchema.mjs +712 -31
- package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
- package/dataMap/metaManager/mods/dynamicCellMeta.js +245 -28
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +246 -29
- package/dataMap/metaManager/mods/extendMetaProperties.js +4 -9
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +4 -9
- package/dataMap/sourceDataValidator.d.ts +13 -21
- package/dataMap/sourceDataValidator.js +39 -29
- package/dataMap/sourceDataValidator.mjs +50 -33
- package/dist/handsontable.full.js +34553 -9903
- package/dist/handsontable.full.min.js +168 -112
- package/dist/handsontable.js +31541 -13409
- 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 +1 -3
- package/editorManager.mjs +1 -3
- package/editors/autocompleteEditor/autocompleteEditor.js +48 -22
- package/editors/autocompleteEditor/autocompleteEditor.mjs +48 -22
- package/editors/baseEditor/baseEditor.d.ts +15 -3
- package/editors/baseEditor/baseEditor.js +6 -6
- package/editors/baseEditor/baseEditor.mjs +16 -6
- 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/controllers/dropdownController.js +5 -12
- package/editors/multiSelectEditor/controllers/dropdownController.mjs +5 -12
- package/editors/multiSelectEditor/controllers/inputController.js +1 -3
- package/editors/multiSelectEditor/controllers/inputController.mjs +1 -3
- package/editors/multiSelectEditor/multiSelectEditor.js +16 -21
- package/editors/multiSelectEditor/multiSelectEditor.mjs +17 -22
- package/editors/passwordEditor/passwordEditor.js +5 -12
- package/editors/passwordEditor/passwordEditor.mjs +5 -12
- package/editors/registry.js +4 -9
- package/editors/registry.mjs +4 -9
- 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 +84 -14
- package/focusManager/grid.mjs +80 -15
- 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/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 +27 -3
- package/helpers/dom/element.js +92 -16
- package/helpers/dom/element.mjs +107 -17
- 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/i18n/languages/ar-AR.js +8 -19
- package/i18n/languages/cs-CZ.js +8 -19
- package/i18n/languages/de-CH.js +8 -19
- package/i18n/languages/de-DE.js +8 -19
- package/i18n/languages/en-US.js +8 -19
- package/i18n/languages/es-MX.js +8 -19
- package/i18n/languages/fa-IR.d.ts +1 -0
- package/i18n/languages/fa-IR.js +9 -19
- package/i18n/languages/fa-IR.mjs +1 -0
- package/i18n/languages/fr-FR.js +8 -19
- package/i18n/languages/hr-HR.js +8 -19
- package/i18n/languages/it-IT.js +8 -19
- package/i18n/languages/ja-JP.js +8 -19
- package/i18n/languages/ko-KR.js +8 -19
- package/i18n/languages/lv-LV.js +8 -19
- package/i18n/languages/nb-NO.js +8 -19
- package/i18n/languages/nl-NL.js +8 -19
- package/i18n/languages/pl-PL.js +8 -19
- package/i18n/languages/pt-BR.js +8 -19
- package/i18n/languages/ru-RU.js +8 -19
- package/i18n/languages/sr-SP.js +8 -19
- package/i18n/languages/zh-CN.js +8 -19
- package/i18n/languages/zh-TW.js +8 -19
- package/i18n/registry.js +8 -19
- package/index.d.ts +2 -2
- package/index.js +8 -19
- 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 +506 -94
- package/plugins/autoColumnSize/autoColumnSize.mjs +513 -95
- package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
- package/plugins/autoRowSize/autoRowSize.js +73 -36
- package/plugins/autoRowSize/autoRowSize.mjs +103 -41
- package/plugins/autofill/autofill.js +35 -24
- package/plugins/autofill/autofill.mjs +35 -24
- package/plugins/base/base.d.ts +10 -0
- package/plugins/base/base.js +5 -12
- package/plugins/base/base.mjs +5 -12
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -9
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +4 -9
- package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +94 -20
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +98 -20
- package/plugins/columnSorting/columnSorting.d.ts +31 -2
- package/plugins/columnSorting/columnSorting.js +153 -33
- package/plugins/columnSorting/columnSorting.mjs +155 -35
- 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 +13 -14
- package/plugins/columnSummary/columnSummary.mjs +13 -14
- package/plugins/columnSummary/endpoints.d.ts +69 -2
- package/plugins/columnSummary/endpoints.js +176 -29
- package/plugins/columnSummary/endpoints.mjs +176 -29
- package/plugins/comments/commentEditor.js +5 -10
- package/plugins/comments/commentEditor.mjs +6 -11
- package/plugins/comments/comments.js +5 -12
- package/plugins/comments/comments.mjs +5 -12
- package/plugins/comments/contextMenuItem/addEditComment.js +8 -19
- package/plugins/comments/contextMenuItem/readOnlyComment.js +8 -19
- package/plugins/comments/contextMenuItem/removeComment.js +8 -19
- package/plugins/comments/editorResizeObserver.js +5 -12
- package/plugins/comments/editorResizeObserver.mjs +5 -12
- package/plugins/contextMenu/contextMenu.d.ts +12 -1
- package/plugins/contextMenu/contextMenu.js +34 -15
- package/plugins/contextMenu/contextMenu.mjs +34 -15
- package/plugins/contextMenu/index.d.ts +1 -1
- package/plugins/contextMenu/menu/menu.d.ts +22 -1
- package/plugins/contextMenu/menu/menu.js +216 -15
- package/plugins/contextMenu/menu/menu.mjs +217 -16
- package/plugins/contextMenu/menu/positioner.js +4 -9
- package/plugins/contextMenu/menu/positioner.mjs +4 -9
- package/plugins/contextMenu/predefinedItems/alignment.js +22 -33
- package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
- package/plugins/contextMenu/predefinedItems/clearColumn.js +9 -20
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
- package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -19
- package/plugins/contextMenu/predefinedItems/columnRight.js +8 -19
- package/plugins/contextMenu/predefinedItems/index.js +8 -19
- package/plugins/contextMenu/predefinedItems/readOnly.js +11 -22
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
- package/plugins/contextMenu/predefinedItems/redo.js +8 -19
- package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -19
- package/plugins/contextMenu/predefinedItems/removeRow.js +8 -19
- package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -19
- package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -19
- package/plugins/contextMenu/predefinedItems/undo.js +8 -19
- package/plugins/contextMenu/utils.js +1 -1
- package/plugins/contextMenu/utils.mjs +1 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +8 -19
- package/plugins/copyPaste/copyPaste.js +62 -20
- package/plugins/copyPaste/copyPaste.mjs +63 -21
- package/plugins/copyPaste/copyableRanges.js +11 -14
- package/plugins/copyPaste/copyableRanges.mjs +11 -14
- package/plugins/copyPaste/pasteEvent.d.ts +1 -1
- package/plugins/customBorders/contextMenuItem/bottom.js +8 -19
- package/plugins/customBorders/contextMenuItem/left.js +8 -19
- package/plugins/customBorders/contextMenuItem/noBorders.js +8 -19
- package/plugins/customBorders/contextMenuItem/right.js +8 -19
- package/plugins/customBorders/contextMenuItem/top.js +8 -19
- package/plugins/customBorders/customBorders.d.ts +21 -40
- package/plugins/customBorders/customBorders.js +1084 -223
- package/plugins/customBorders/customBorders.mjs +1078 -206
- 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.js +35 -38
- package/plugins/dataProvider/dataProvider.mjs +27 -19
- package/plugins/dataProvider/query/crud.js +1 -1
- package/plugins/dataProvider/query/crud.mjs +1 -1
- package/plugins/dialog/dialog.js +15 -33
- package/plugins/dialog/dialog.mjs +7 -14
- package/plugins/dialog/ui.js +5 -12
- package/plugins/dialog/ui.mjs +5 -12
- package/plugins/dragToScroll/autoScroller.js +4 -9
- package/plugins/dragToScroll/autoScroller.mjs +4 -9
- package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
- package/plugins/dragToScroll/dragToScroll.js +155 -26
- package/plugins/dragToScroll/dragToScroll.mjs +156 -27
- package/plugins/dragToScroll/scrollTimer.js +4 -9
- package/plugins/dragToScroll/scrollTimer.mjs +4 -9
- package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
- package/plugins/dropdownMenu/dropdownMenu.js +50 -15
- package/plugins/dropdownMenu/dropdownMenu.mjs +51 -16
- package/plugins/dropdownMenu/index.d.ts +1 -0
- package/plugins/emptyDataState/emptyDataState.js +15 -33
- package/plugins/emptyDataState/emptyDataState.mjs +7 -14
- package/plugins/emptyDataState/ui.js +4 -9
- package/plugins/emptyDataState/ui.mjs +4 -9
- package/plugins/exportFile/dataProvider.js +5 -1
- package/plugins/exportFile/dataProvider.mjs +5 -1
- package/plugins/exportFile/exportFile.js +13 -31
- package/plugins/exportFile/exportFile.mjs +5 -12
- package/plugins/exportFile/types/csv.js +1 -3
- package/plugins/exportFile/types/csv.mjs +1 -3
- 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 +10 -3
- package/plugins/exportFile/types/xlsx.mjs +11 -4
- 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/actionBar.js +9 -22
- package/plugins/filters/component/actionBar.mjs +1 -3
- package/plugins/filters/component/condition.d.ts +1 -0
- package/plugins/filters/component/condition.js +11 -22
- package/plugins/filters/component/condition.mjs +3 -3
- package/plugins/filters/component/operators.js +1 -3
- package/plugins/filters/component/operators.mjs +1 -3
- package/plugins/filters/component/value.d.ts +5 -6
- package/plugins/filters/component/value.js +62 -56
- package/plugins/filters/component/value.mjs +55 -38
- package/plugins/filters/condition/beginsWith.js +8 -19
- package/plugins/filters/condition/between.js +8 -19
- package/plugins/filters/condition/contains.js +8 -19
- package/plugins/filters/condition/date/after.js +10 -20
- package/plugins/filters/condition/date/after.mjs +2 -1
- package/plugins/filters/condition/date/afterOrEqual.js +10 -20
- package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
- package/plugins/filters/condition/date/before.js +10 -20
- package/plugins/filters/condition/date/before.mjs +2 -1
- package/plugins/filters/condition/date/beforeOrEqual.js +10 -20
- package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
- package/plugins/filters/condition/date/today.js +8 -19
- package/plugins/filters/condition/date/tomorrow.js +8 -19
- package/plugins/filters/condition/date/yesterday.js +8 -19
- package/plugins/filters/condition/empty.js +8 -19
- package/plugins/filters/condition/endsWith.js +8 -19
- package/plugins/filters/condition/equal.d.ts +7 -0
- package/plugins/filters/condition/equal.js +12 -19
- package/plugins/filters/condition/equal.mjs +10 -0
- package/plugins/filters/condition/greaterThan.js +8 -19
- package/plugins/filters/condition/greaterThanOrEqual.js +8 -19
- package/plugins/filters/condition/intlDate/after.js +8 -19
- package/plugins/filters/condition/intlDate/afterOrEqual.js +8 -19
- package/plugins/filters/condition/intlDate/before.js +8 -19
- package/plugins/filters/condition/intlDate/beforeOrEqual.js +8 -19
- package/plugins/filters/condition/intlDate/between.js +8 -19
- package/plugins/filters/condition/intlDate/today.js +8 -19
- package/plugins/filters/condition/intlDate/tomorrow.js +8 -19
- package/plugins/filters/condition/intlDate/yesterday.js +8 -19
- 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 +66 -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 +66 -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 +66 -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 +66 -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 +67 -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 +65 -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 +66 -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 +66 -0
- package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
- package/plugins/filters/condition/intlTime/after.js +8 -19
- package/plugins/filters/condition/intlTime/afterOrEqual.js +8 -19
- package/plugins/filters/condition/intlTime/before.js +8 -19
- package/plugins/filters/condition/intlTime/beforeOrEqual.js +8 -19
- package/plugins/filters/condition/intlTime/between.js +8 -19
- package/plugins/filters/condition/lessThan.js +8 -19
- package/plugins/filters/condition/lessThanOrEqual.js +8 -19
- package/plugins/filters/condition/none.js +8 -19
- package/plugins/filters/condition/notBetween.js +8 -19
- package/plugins/filters/condition/notContains.js +8 -19
- package/plugins/filters/condition/notEmpty.js +8 -19
- package/plugins/filters/condition/notEqual.js +8 -19
- 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 +144 -52
- package/plugins/filters/conditionUpdateObserver.mjs +144 -52
- 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 +104 -62
- package/plugins/filters/filters.mjs +97 -44
- package/plugins/filters/logicalOperations/conjunction.js +8 -19
- package/plugins/filters/logicalOperations/disjunction.js +8 -19
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +8 -19
- 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/_base.js +8 -19
- package/plugins/filters/ui/input.d.ts +4 -0
- package/plugins/filters/ui/input.js +23 -18
- package/plugins/filters/ui/input.mjs +23 -18
- package/plugins/filters/ui/link.js +4 -9
- package/plugins/filters/ui/link.mjs +4 -9
- package/plugins/filters/ui/multipleSelect.js +40 -35
- package/plugins/filters/ui/multipleSelect.mjs +32 -16
- package/plugins/filters/ui/radioInput.js +4 -9
- package/plugins/filters/ui/radioInput.mjs +4 -9
- package/plugins/filters/ui/select.js +14 -32
- package/plugins/filters/ui/select.mjs +6 -13
- 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 +748 -55
- package/plugins/formulas/formulas.mjs +752 -57
- 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 +77 -27
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +77 -27
- package/plugins/formulas/indexSyncer/index.js +4 -9
- package/plugins/formulas/indexSyncer/index.mjs +4 -9
- 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/hideColumn.js +8 -19
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +14 -20
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
- package/plugins/hiddenColumns/hiddenColumns.js +11 -15
- package/plugins/hiddenColumns/hiddenColumns.mjs +11 -15
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +8 -19
- package/plugins/hiddenRows/contextMenuItem/showRow.js +14 -20
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
- package/plugins/hiddenRows/hiddenRows.js +11 -15
- package/plugins/hiddenRows/hiddenRows.mjs +11 -15
- package/plugins/index.d.ts +5 -1
- package/plugins/index.js +10 -0
- package/plugins/index.mjs +5 -1
- package/plugins/loading/loading.js +13 -31
- package/plugins/loading/loading.mjs +5 -12
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +8 -19
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +8 -19
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +5 -12
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +5 -12
- package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
- package/plugins/manualColumnMove/manualColumnMove.js +128 -33
- package/plugins/manualColumnMove/manualColumnMove.mjs +129 -34
- package/plugins/manualColumnResize/manualColumnResize.d.ts +12 -1
- package/plugins/manualColumnResize/manualColumnResize.js +28 -17
- package/plugins/manualColumnResize/manualColumnResize.mjs +28 -17
- package/plugins/manualRowMove/manualRowMove.js +5 -12
- package/plugins/manualRowMove/manualRowMove.mjs +5 -12
- package/plugins/manualRowResize/manualRowResize.d.ts +13 -2
- package/plugins/manualRowResize/manualRowResize.js +29 -18
- package/plugins/manualRowResize/manualRowResize.mjs +29 -18
- package/plugins/mergeCells/cellCoords.d.ts +8 -0
- package/plugins/mergeCells/cellCoords.js +15 -9
- package/plugins/mergeCells/cellCoords.mjs +15 -9
- package/plugins/mergeCells/cellsCollection.d.ts +46 -2
- package/plugins/mergeCells/cellsCollection.js +190 -71
- package/plugins/mergeCells/cellsCollection.mjs +190 -71
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +8 -19
- package/plugins/mergeCells/focusOrder.d.ts +26 -20
- package/plugins/mergeCells/focusOrder.js +363 -189
- package/plugins/mergeCells/focusOrder.mjs +368 -184
- package/plugins/mergeCells/mergeCells.d.ts +13 -8
- package/plugins/mergeCells/mergeCells.js +327 -76
- package/plugins/mergeCells/mergeCells.mjs +327 -76
- 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 +595 -0
- package/plugins/moveCells/moveCells.mjs +580 -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 +266 -58
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +266 -58
- package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
- package/plugins/nestedHeaders/nestedHeaders.js +227 -35
- package/plugins/nestedHeaders/nestedHeaders.mjs +227 -35
- 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/headersTree.js +4 -9
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +4 -9
- package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
- package/plugins/nestedHeaders/stateManager/index.js +386 -50
- package/plugins/nestedHeaders/stateManager/index.mjs +387 -51
- 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 +24 -13
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +24 -13
- 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 +1 -3
- package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -3
- 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 +332 -17
- package/plugins/nestedRows/nestedRows.mjs +332 -17
- package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
- package/plugins/nestedRows/ui/collapsing.js +234 -40
- package/plugins/nestedRows/ui/collapsing.mjs +234 -40
- package/plugins/nestedRows/ui/contextMenu.js +12 -28
- package/plugins/nestedRows/ui/contextMenu.mjs +4 -9
- package/plugins/notification/notification.js +13 -31
- package/plugins/notification/notification.mjs +5 -12
- package/plugins/notification/ui.js +4 -9
- package/plugins/notification/ui.mjs +4 -9
- package/plugins/pagination/pagination.js +7 -14
- package/plugins/pagination/pagination.mjs +7 -14
- package/plugins/pagination/ui.js +13 -31
- package/plugins/pagination/ui.mjs +5 -12
- package/plugins/search/search.js +27 -11
- package/plugins/search/search.mjs +27 -11
- 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 +335 -0
- package/plugins/selectionHandles/selectionHandles.mjs +316 -0
- package/plugins/stretchColumns/calculator.js +5 -12
- package/plugins/stretchColumns/calculator.mjs +5 -12
- package/plugins/stretchColumns/strategies/last.js +4 -9
- package/plugins/stretchColumns/strategies/last.mjs +4 -9
- package/plugins/stretchColumns/stretchColumns.js +4 -9
- package/plugins/stretchColumns/stretchColumns.mjs +4 -9
- package/plugins/touchScroll/touchScroll.js +4 -9
- package/plugins/touchScroll/touchScroll.mjs +4 -9
- package/plugins/trimRows/trimRows.d.ts +1 -1
- package/plugins/trimRows/trimRows.js +10 -11
- package/plugins/trimRows/trimRows.mjs +10 -11
- 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 +40 -11
- package/plugins/undoRedo/undoRedo.mjs +40 -11
- 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 +161 -0
- package/renderSizeProbe.mjs +174 -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/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/highlight.js +1 -3
- package/selection/highlight/highlight.mjs +1 -3
- 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 +162 -36
- package/selection/selection.mjs +154 -17
- package/selection/transformation/_base.js +5 -12
- package/selection/transformation/_base.mjs +5 -12
- 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.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 +211 -53
- package/tableView.mjs +212 -54
- package/themes/engine/builder.js +5 -12
- package/themes/engine/builder.mjs +5 -12
- 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 +247 -18
- package/themes/engine/manager.mjs +254 -18
- 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/changesObservable/observable.js +4 -9
- package/translations/changesObservable/observable.mjs +4 -9
- package/translations/changesObservable/observer.js +4 -9
- package/translations/changesObservable/observer.mjs +4 -9
- package/translations/indexMapper.d.ts +14 -9
- package/translations/indexMapper.js +109 -49
- package/translations/indexMapper.mjs +109 -49
- 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 +293 -0
- package/translations/maps/booleanMap.mjs +301 -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 +73 -6
- package/translations/maps/indexMap.mjs +73 -6
- package/translations/maps/indexesSequence.d.ts +53 -2
- package/translations/maps/indexesSequence.js +218 -3
- package/translations/maps/indexesSequence.mjs +226 -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 +58 -11
- package/utils/ghostTable.mjs +58 -11
- package/utils/interval.js +5 -12
- package/utils/interval.mjs +5 -12
- 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 +1 -1
- package/utils/parseTable.mjs +1 -1
- package/utils/samplesGenerator.d.ts +41 -14
- package/utils/samplesGenerator.js +112 -42
- package/utils/samplesGenerator.mjs +112 -42
- package/utils/stylesHandler.d.ts +13 -0
- package/utils/stylesHandler.js +60 -14
- package/utils/stylesHandler.mjs +60 -14
- 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
|
@@ -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
|
@@ -447,10 +447,14 @@ export declare function isDetached(element: HTMLElement): boolean;
|
|
|
447
447
|
* Set up an observer to recognize when the provided element first becomes visible and trigger a callback when it
|
|
448
448
|
* happens.
|
|
449
449
|
*
|
|
450
|
+
* The observer is returned so the caller can disconnect it earlier - a pending delivery carries the state from
|
|
451
|
+
* the moment its snapshot was taken, so it can arrive after the observed element (or its owner) is gone.
|
|
452
|
+
*
|
|
450
453
|
* @param {HTMLElement} elementToBeObserved Element to be observed.
|
|
451
454
|
* @param {Function} callback The callback function.
|
|
455
|
+
* @returns {IntersectionObserver} The observer watching the element.
|
|
452
456
|
*/
|
|
453
|
-
export declare function observeVisibilityChangeOnce(elementToBeObserved: HTMLElement, callback: () => void):
|
|
457
|
+
export declare function observeVisibilityChangeOnce(elementToBeObserved: HTMLElement, callback: () => void): IntersectionObserver;
|
|
454
458
|
/**
|
|
455
459
|
* Add a `contenteditable` attribute, select the contents and optionally add the `invisibleSelection`
|
|
456
460
|
* class to the provided element.
|
|
@@ -502,10 +506,30 @@ export declare function isHTMLInputElement(element: HTMLElement): element is HTM
|
|
|
502
506
|
/**
|
|
503
507
|
* Check if the node is a ShadowRoot (a document fragment attached to a host element).
|
|
504
508
|
*
|
|
505
|
-
* @param {Node} node Node to check.
|
|
509
|
+
* @param {Node|EventTarget} node Node to check.
|
|
506
510
|
* @returns {boolean} `true` if the node is a ShadowRoot.
|
|
507
511
|
*/
|
|
508
|
-
export declare function isShadowRoot(node: Node): node is ShadowRoot;
|
|
512
|
+
export declare function isShadowRoot(node: Node | EventTarget): node is ShadowRoot;
|
|
513
|
+
/**
|
|
514
|
+
* Gets the chain of shadow host elements the node is rendered within, ordered from the
|
|
515
|
+
* closest host outward to the host attached to the document.
|
|
516
|
+
*
|
|
517
|
+
* @param {Node} node The node to read the host chain from.
|
|
518
|
+
* @returns {HTMLElement[]} The shadow host elements; empty when the node is not in a Shadow DOM tree.
|
|
519
|
+
*/
|
|
520
|
+
export declare function getShadowHostChain(node: Node): HTMLElement[];
|
|
521
|
+
/**
|
|
522
|
+
* Gets the deepest active (focused) element in the document. When the focus is inside
|
|
523
|
+
* a Shadow DOM tree, `document.activeElement` points at the shadow host instead of the
|
|
524
|
+
* focused element. This helper descends through the open shadow roots and returns
|
|
525
|
+
* the element that actually holds the focus.
|
|
526
|
+
*
|
|
527
|
+
* @param {Document} rootDocument The document to read the active element from.
|
|
528
|
+
* @returns {Element|null} The deepest focused element. The browser reports `document.body`
|
|
529
|
+
* when no other element holds the focus; `null` appears only in edge cases such as
|
|
530
|
+
* a document with no body.
|
|
531
|
+
*/
|
|
532
|
+
export declare function getDeepActiveElement(rootDocument: Document): Element | null;
|
|
509
533
|
/**
|
|
510
534
|
* Gets a child node at the specified index cast to the specified HTML element type.
|
|
511
535
|
*
|
package/helpers/dom/element.js
CHANGED
|
@@ -54,6 +54,9 @@ _export(exports, {
|
|
|
54
54
|
get getCssTransform () {
|
|
55
55
|
return getCssTransform;
|
|
56
56
|
},
|
|
57
|
+
get getDeepActiveElement () {
|
|
58
|
+
return getDeepActiveElement;
|
|
59
|
+
},
|
|
57
60
|
get getFractionalScalingCompensation () {
|
|
58
61
|
return getFractionalScalingCompensation;
|
|
59
62
|
},
|
|
@@ -90,6 +93,9 @@ _export(exports, {
|
|
|
90
93
|
get getSelectionText () {
|
|
91
94
|
return getSelectionText;
|
|
92
95
|
},
|
|
96
|
+
get getShadowHostChain () {
|
|
97
|
+
return getShadowHostChain;
|
|
98
|
+
},
|
|
93
99
|
get getStyle () {
|
|
94
100
|
return getStyle;
|
|
95
101
|
},
|
|
@@ -674,28 +680,74 @@ function getMaximumScrollTop(element) {
|
|
|
674
680
|
function getMaximumScrollLeft(element) {
|
|
675
681
|
return element.scrollWidth - element.clientWidth;
|
|
676
682
|
}
|
|
683
|
+
const OVERFLOW_TRIMMING_VALUES = [
|
|
684
|
+
'scroll',
|
|
685
|
+
'hidden',
|
|
686
|
+
'auto',
|
|
687
|
+
'clip'
|
|
688
|
+
];
|
|
689
|
+
const OVERFLOW_CONCRETE_VALUES = [
|
|
690
|
+
'visible',
|
|
691
|
+
'clip',
|
|
692
|
+
'hidden',
|
|
693
|
+
'scroll',
|
|
694
|
+
'auto',
|
|
695
|
+
'overlay'
|
|
696
|
+
];
|
|
697
|
+
/**
|
|
698
|
+
* Checks whether a single overflow axis traps the table on that axis.
|
|
699
|
+
*
|
|
700
|
+
* `overflow: clip` establishes no scroll port. When an axis is `clip` while the perpendicular axis
|
|
701
|
+
* stays `visible`, it does not trap the table's scroll — the table still scrolls with the window on
|
|
702
|
+
* the visible axis. A width-constrained, window-scrolled table sets `overflow-x: clip` on its root
|
|
703
|
+
* (see core.ts, DEV-1025); treating that root as the trimming container drops the overlays out of
|
|
704
|
+
* window-scroll mode (frozen rows stop pinning, vertical virtualization stops). Such a single-axis
|
|
705
|
+
* clip must not qualify the axis as trimming.
|
|
706
|
+
*
|
|
707
|
+
* @param {string} axis The `overflow-x`/`overflow-y` value of the axis being tested.
|
|
708
|
+
* @param {string} perpendicular The `overflow` value of the other axis.
|
|
709
|
+
* @returns {boolean}
|
|
710
|
+
*/ function overflowAxisTraps(axis, perpendicular) {
|
|
711
|
+
return OVERFLOW_TRIMMING_VALUES.includes(axis) && !(axis === 'clip' && (perpendicular === 'visible' || perpendicular === ''));
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Resolves the effective `overflow-x`/`overflow-y` of an element, preferring inline styles.
|
|
715
|
+
*
|
|
716
|
+
* The inline `overflow` shorthand can carry two values (`overflow: clip visible` → x, y). Some
|
|
717
|
+
* engines (jsdom) neither split that shorthand into `overflowX`/`overflowY` nor reflect it in the
|
|
718
|
+
* computed style, so the shorthand string is parsed directly. An inline value is only preferred when
|
|
719
|
+
* it is a concrete overflow keyword; a global keyword (`inherit`, `initial`, `revert`, `unset`) or
|
|
720
|
+
* any other non-concrete value falls back to the computed style, which resolves it to the real value
|
|
721
|
+
* (e.g. an inherited `auto`). Otherwise an inline `inherit` would be read literally and miss the
|
|
722
|
+
* scroll value it inherits.
|
|
723
|
+
*
|
|
724
|
+
* @param {HTMLElement} el The element to read overflow from.
|
|
725
|
+
* @param {CSSStyleDeclaration} computedStyle The element's computed style.
|
|
726
|
+
* @returns {{ x: string, y: string }}
|
|
727
|
+
*/ function resolveOverflowAxes(el, computedStyle) {
|
|
728
|
+
const shorthand = el.style.overflow.split(/\s+/).filter(Boolean);
|
|
729
|
+
const [shorthandX = '', shorthandY = shorthandX] = shorthand;
|
|
730
|
+
const resolveAxis = (inlineAxis, shorthandAxis, computedProperty)=>{
|
|
731
|
+
const inline = inlineAxis || shorthandAxis;
|
|
732
|
+
return OVERFLOW_CONCRETE_VALUES.includes(inline) ? inline : computedStyle.getPropertyValue(computedProperty);
|
|
733
|
+
};
|
|
734
|
+
return {
|
|
735
|
+
x: resolveAxis(el.style.overflowX, shorthandX, 'overflow-x'),
|
|
736
|
+
y: resolveAxis(el.style.overflowY, shorthandY, 'overflow-y')
|
|
737
|
+
};
|
|
738
|
+
}
|
|
677
739
|
function getTrimmingContainer(base) {
|
|
678
740
|
const rootDocument = base.ownerDocument;
|
|
679
741
|
const rootWindow = rootDocument.defaultView;
|
|
680
742
|
let el = base.parentElement;
|
|
681
743
|
while(el && el.style && rootDocument.body !== el){
|
|
682
|
-
if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
|
|
683
|
-
return el;
|
|
684
|
-
}
|
|
685
744
|
if (rootWindow) {
|
|
686
|
-
const
|
|
687
|
-
|
|
688
|
-
'scroll',
|
|
689
|
-
'hidden',
|
|
690
|
-
'auto',
|
|
691
|
-
'clip'
|
|
692
|
-
];
|
|
693
|
-
const property = computedStyle.getPropertyValue('overflow');
|
|
694
|
-
const propertyY = computedStyle.getPropertyValue('overflow-y');
|
|
695
|
-
const propertyX = computedStyle.getPropertyValue('overflow-x');
|
|
696
|
-
if (allowedProperties.includes(property) || allowedProperties.includes(propertyY) || allowedProperties.includes(propertyX)) {
|
|
745
|
+
const { x, y } = resolveOverflowAxes(el, rootWindow.getComputedStyle(el));
|
|
746
|
+
if (overflowAxisTraps(x, y) || overflowAxisTraps(y, x)) {
|
|
697
747
|
return el;
|
|
698
748
|
}
|
|
749
|
+
} else if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
|
|
750
|
+
return el;
|
|
699
751
|
}
|
|
700
752
|
el = el.parentElement;
|
|
701
753
|
}
|
|
@@ -917,7 +969,7 @@ function isOutsideInput(element) {
|
|
|
917
969
|
return isInput(element) && 'hotInput' in element.dataset === false;
|
|
918
970
|
}
|
|
919
971
|
function selectElementIfAllowed(element) {
|
|
920
|
-
const activeElement = element.ownerDocument
|
|
972
|
+
const activeElement = getDeepActiveElement(element.ownerDocument);
|
|
921
973
|
if (isHTMLElement(activeElement) && !isOutsideInput(activeElement) && (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement)) {
|
|
922
974
|
element.select();
|
|
923
975
|
}
|
|
@@ -935,6 +987,7 @@ function observeVisibilityChangeOnce(elementToBeObserved, callback) {
|
|
|
935
987
|
});
|
|
936
988
|
});
|
|
937
989
|
visibilityObserver.observe(elementToBeObserved);
|
|
990
|
+
return visibilityObserver;
|
|
938
991
|
}
|
|
939
992
|
function makeElementContentEditableAndSelectItsContent(element, invisibleSelection = true, ariaHidden = true) {
|
|
940
993
|
const ownerDocument = element.ownerDocument;
|
|
@@ -982,7 +1035,30 @@ function isHTMLInputElement(element) {
|
|
|
982
1035
|
return element.tagName === 'INPUT';
|
|
983
1036
|
}
|
|
984
1037
|
function isShadowRoot(node) {
|
|
985
|
-
|
|
1038
|
+
if (typeof node !== 'object' || node === null) {
|
|
1039
|
+
return false;
|
|
1040
|
+
}
|
|
1041
|
+
return 'nodeType' in node && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;
|
|
1042
|
+
}
|
|
1043
|
+
function getShadowHostChain(node) {
|
|
1044
|
+
const hosts = [];
|
|
1045
|
+
let rootNode = node.getRootNode();
|
|
1046
|
+
while(isShadowRoot(rootNode)){
|
|
1047
|
+
const { host } = rootNode;
|
|
1048
|
+
if (!isHTMLElement(host)) {
|
|
1049
|
+
break;
|
|
1050
|
+
}
|
|
1051
|
+
hosts.push(host);
|
|
1052
|
+
rootNode = host.getRootNode();
|
|
1053
|
+
}
|
|
1054
|
+
return hosts;
|
|
1055
|
+
}
|
|
1056
|
+
function getDeepActiveElement(rootDocument) {
|
|
1057
|
+
let element = rootDocument.activeElement;
|
|
1058
|
+
while(element?.shadowRoot?.activeElement){
|
|
1059
|
+
element = element.shadowRoot.activeElement;
|
|
1060
|
+
}
|
|
1061
|
+
return element;
|
|
986
1062
|
}
|
|
987
1063
|
function getChildEl(parent, index) {
|
|
988
1064
|
const node = parent.childNodes[index];
|
package/helpers/dom/element.mjs
CHANGED
|
@@ -659,6 +659,62 @@ export function getScrollLeft(element, rootWindow = window) {
|
|
|
659
659
|
*/ export function getMaximumScrollLeft(element) {
|
|
660
660
|
return element.scrollWidth - element.clientWidth;
|
|
661
661
|
}
|
|
662
|
+
const OVERFLOW_TRIMMING_VALUES = [
|
|
663
|
+
'scroll',
|
|
664
|
+
'hidden',
|
|
665
|
+
'auto',
|
|
666
|
+
'clip'
|
|
667
|
+
];
|
|
668
|
+
const OVERFLOW_CONCRETE_VALUES = [
|
|
669
|
+
'visible',
|
|
670
|
+
'clip',
|
|
671
|
+
'hidden',
|
|
672
|
+
'scroll',
|
|
673
|
+
'auto',
|
|
674
|
+
'overlay'
|
|
675
|
+
];
|
|
676
|
+
/**
|
|
677
|
+
* Checks whether a single overflow axis traps the table on that axis.
|
|
678
|
+
*
|
|
679
|
+
* `overflow: clip` establishes no scroll port. When an axis is `clip` while the perpendicular axis
|
|
680
|
+
* stays `visible`, it does not trap the table's scroll — the table still scrolls with the window on
|
|
681
|
+
* the visible axis. A width-constrained, window-scrolled table sets `overflow-x: clip` on its root
|
|
682
|
+
* (see core.ts, DEV-1025); treating that root as the trimming container drops the overlays out of
|
|
683
|
+
* window-scroll mode (frozen rows stop pinning, vertical virtualization stops). Such a single-axis
|
|
684
|
+
* clip must not qualify the axis as trimming.
|
|
685
|
+
*
|
|
686
|
+
* @param {string} axis The `overflow-x`/`overflow-y` value of the axis being tested.
|
|
687
|
+
* @param {string} perpendicular The `overflow` value of the other axis.
|
|
688
|
+
* @returns {boolean}
|
|
689
|
+
*/ function overflowAxisTraps(axis, perpendicular) {
|
|
690
|
+
return OVERFLOW_TRIMMING_VALUES.includes(axis) && !(axis === 'clip' && (perpendicular === 'visible' || perpendicular === ''));
|
|
691
|
+
}
|
|
692
|
+
/**
|
|
693
|
+
* Resolves the effective `overflow-x`/`overflow-y` of an element, preferring inline styles.
|
|
694
|
+
*
|
|
695
|
+
* The inline `overflow` shorthand can carry two values (`overflow: clip visible` → x, y). Some
|
|
696
|
+
* engines (jsdom) neither split that shorthand into `overflowX`/`overflowY` nor reflect it in the
|
|
697
|
+
* computed style, so the shorthand string is parsed directly. An inline value is only preferred when
|
|
698
|
+
* it is a concrete overflow keyword; a global keyword (`inherit`, `initial`, `revert`, `unset`) or
|
|
699
|
+
* any other non-concrete value falls back to the computed style, which resolves it to the real value
|
|
700
|
+
* (e.g. an inherited `auto`). Otherwise an inline `inherit` would be read literally and miss the
|
|
701
|
+
* scroll value it inherits.
|
|
702
|
+
*
|
|
703
|
+
* @param {HTMLElement} el The element to read overflow from.
|
|
704
|
+
* @param {CSSStyleDeclaration} computedStyle The element's computed style.
|
|
705
|
+
* @returns {{ x: string, y: string }}
|
|
706
|
+
*/ function resolveOverflowAxes(el, computedStyle) {
|
|
707
|
+
const shorthand = el.style.overflow.split(/\s+/).filter(Boolean);
|
|
708
|
+
const [shorthandX = '', shorthandY = shorthandX] = shorthand;
|
|
709
|
+
const resolveAxis = (inlineAxis, shorthandAxis, computedProperty)=>{
|
|
710
|
+
const inline = inlineAxis || shorthandAxis;
|
|
711
|
+
return OVERFLOW_CONCRETE_VALUES.includes(inline) ? inline : computedStyle.getPropertyValue(computedProperty);
|
|
712
|
+
};
|
|
713
|
+
return {
|
|
714
|
+
x: resolveAxis(el.style.overflowX, shorthandX, 'overflow-x'),
|
|
715
|
+
y: resolveAxis(el.style.overflowY, shorthandY, 'overflow-y')
|
|
716
|
+
};
|
|
717
|
+
}
|
|
662
718
|
/**
|
|
663
719
|
* Returns a DOM element responsible for trimming the provided element.
|
|
664
720
|
*
|
|
@@ -669,23 +725,13 @@ export function getScrollLeft(element, rootWindow = window) {
|
|
|
669
725
|
const rootWindow = rootDocument.defaultView;
|
|
670
726
|
let el = base.parentElement;
|
|
671
727
|
while(el && el.style && rootDocument.body !== el){
|
|
672
|
-
if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
|
|
673
|
-
return el;
|
|
674
|
-
}
|
|
675
728
|
if (rootWindow) {
|
|
676
|
-
const
|
|
677
|
-
|
|
678
|
-
'scroll',
|
|
679
|
-
'hidden',
|
|
680
|
-
'auto',
|
|
681
|
-
'clip'
|
|
682
|
-
];
|
|
683
|
-
const property = computedStyle.getPropertyValue('overflow');
|
|
684
|
-
const propertyY = computedStyle.getPropertyValue('overflow-y');
|
|
685
|
-
const propertyX = computedStyle.getPropertyValue('overflow-x');
|
|
686
|
-
if (allowedProperties.includes(property) || allowedProperties.includes(propertyY) || allowedProperties.includes(propertyX)) {
|
|
729
|
+
const { x, y } = resolveOverflowAxes(el, rootWindow.getComputedStyle(el));
|
|
730
|
+
if (overflowAxisTraps(x, y) || overflowAxisTraps(y, x)) {
|
|
687
731
|
return el;
|
|
688
732
|
}
|
|
733
|
+
} else if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
|
|
734
|
+
return el;
|
|
689
735
|
}
|
|
690
736
|
el = el.parentElement;
|
|
691
737
|
}
|
|
@@ -1027,7 +1073,7 @@ export function getScrollbarWidth(rootDocument = document) {
|
|
|
1027
1073
|
*
|
|
1028
1074
|
* @param {HTMLElement} element - DOM element.
|
|
1029
1075
|
*/ export function selectElementIfAllowed(element) {
|
|
1030
|
-
const activeElement = element.ownerDocument
|
|
1076
|
+
const activeElement = getDeepActiveElement(element.ownerDocument);
|
|
1031
1077
|
if (isHTMLElement(activeElement) && !isOutsideInput(activeElement) && (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement)) {
|
|
1032
1078
|
element.select();
|
|
1033
1079
|
}
|
|
@@ -1044,8 +1090,12 @@ export function getScrollbarWidth(rootDocument = document) {
|
|
|
1044
1090
|
* Set up an observer to recognize when the provided element first becomes visible and trigger a callback when it
|
|
1045
1091
|
* happens.
|
|
1046
1092
|
*
|
|
1093
|
+
* The observer is returned so the caller can disconnect it earlier - a pending delivery carries the state from
|
|
1094
|
+
* the moment its snapshot was taken, so it can arrive after the observed element (or its owner) is gone.
|
|
1095
|
+
*
|
|
1047
1096
|
* @param {HTMLElement} elementToBeObserved Element to be observed.
|
|
1048
1097
|
* @param {Function} callback The callback function.
|
|
1098
|
+
* @returns {IntersectionObserver} The observer watching the element.
|
|
1049
1099
|
*/ export function observeVisibilityChangeOnce(elementToBeObserved, callback) {
|
|
1050
1100
|
const visibilityObserver = new IntersectionObserver((entries, observer)=>{
|
|
1051
1101
|
entries.forEach((entry)=>{
|
|
@@ -1056,6 +1106,7 @@ export function getScrollbarWidth(rootDocument = document) {
|
|
|
1056
1106
|
});
|
|
1057
1107
|
});
|
|
1058
1108
|
visibilityObserver.observe(elementToBeObserved);
|
|
1109
|
+
return visibilityObserver;
|
|
1059
1110
|
}
|
|
1060
1111
|
/**
|
|
1061
1112
|
* Add a `contenteditable` attribute, select the contents and optionally add the `invisibleSelection`
|
|
@@ -1141,10 +1192,49 @@ export function getScrollbarWidth(rootDocument = document) {
|
|
|
1141
1192
|
/**
|
|
1142
1193
|
* Check if the node is a ShadowRoot (a document fragment attached to a host element).
|
|
1143
1194
|
*
|
|
1144
|
-
* @param {Node} node Node to check.
|
|
1195
|
+
* @param {Node|EventTarget} node Node to check.
|
|
1145
1196
|
* @returns {boolean} `true` if the node is a ShadowRoot.
|
|
1146
1197
|
*/ export function isShadowRoot(node) {
|
|
1147
|
-
|
|
1198
|
+
if (typeof node !== 'object' || node === null) {
|
|
1199
|
+
return false;
|
|
1200
|
+
}
|
|
1201
|
+
return 'nodeType' in node && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;
|
|
1202
|
+
}
|
|
1203
|
+
/**
|
|
1204
|
+
* Gets the chain of shadow host elements the node is rendered within, ordered from the
|
|
1205
|
+
* closest host outward to the host attached to the document.
|
|
1206
|
+
*
|
|
1207
|
+
* @param {Node} node The node to read the host chain from.
|
|
1208
|
+
* @returns {HTMLElement[]} The shadow host elements; empty when the node is not in a Shadow DOM tree.
|
|
1209
|
+
*/ export function getShadowHostChain(node) {
|
|
1210
|
+
const hosts = [];
|
|
1211
|
+
let rootNode = node.getRootNode();
|
|
1212
|
+
while(isShadowRoot(rootNode)){
|
|
1213
|
+
const { host } = rootNode;
|
|
1214
|
+
if (!isHTMLElement(host)) {
|
|
1215
|
+
break;
|
|
1216
|
+
}
|
|
1217
|
+
hosts.push(host);
|
|
1218
|
+
rootNode = host.getRootNode();
|
|
1219
|
+
}
|
|
1220
|
+
return hosts;
|
|
1221
|
+
}
|
|
1222
|
+
/**
|
|
1223
|
+
* Gets the deepest active (focused) element in the document. When the focus is inside
|
|
1224
|
+
* a Shadow DOM tree, `document.activeElement` points at the shadow host instead of the
|
|
1225
|
+
* focused element. This helper descends through the open shadow roots and returns
|
|
1226
|
+
* the element that actually holds the focus.
|
|
1227
|
+
*
|
|
1228
|
+
* @param {Document} rootDocument The document to read the active element from.
|
|
1229
|
+
* @returns {Element|null} The deepest focused element. The browser reports `document.body`
|
|
1230
|
+
* when no other element holds the focus; `null` appears only in edge cases such as
|
|
1231
|
+
* a document with no body.
|
|
1232
|
+
*/ export function getDeepActiveElement(rootDocument) {
|
|
1233
|
+
let element = rootDocument.activeElement;
|
|
1234
|
+
while(element?.shadowRoot?.activeElement){
|
|
1235
|
+
element = element.shadowRoot.activeElement;
|
|
1236
|
+
}
|
|
1237
|
+
return element;
|
|
1148
1238
|
}
|
|
1149
1239
|
/**
|
|
1150
1240
|
* Gets a child node at the specified index cast to the specified HTML element type.
|