handsontable 18.0.0 → 18.1.0-rc7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.ts +55 -0
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.js +15 -0
- package/3rdparty/walkontable/src/axisSizing/axisSizeSource.mjs +14 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.d.ts +32 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.js +45 -0
- package/3rdparty/walkontable/src/axisSizing/boxModel.mjs +33 -0
- package/3rdparty/walkontable/src/axisSizing/columnUtils.d.mts +2 -0
- package/3rdparty/walkontable/src/{utils/column.d.ts → axisSizing/columnUtils.d.ts} +12 -10
- package/3rdparty/walkontable/src/axisSizing/columnUtils.js +147 -0
- package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +142 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.ts +58 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.js +129 -0
- package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +119 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.ts +162 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.js +424 -0
- package/3rdparty/walkontable/src/axisSizing/oversizedRows.mjs +522 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.d.ts +130 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.js +256 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +262 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.ts +51 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.js +121 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +117 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.ts +53 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.js +206 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +203 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.ts +53 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.js +40 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.mjs +41 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.mts +1 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.ts +47 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.js +121 -0
- package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +115 -0
- package/3rdparty/walkontable/src/axisSizing/rowUtils.d.mts +2 -0
- package/3rdparty/walkontable/src/{utils/row.d.ts → axisSizing/rowUtils.d.ts} +11 -9
- package/3rdparty/walkontable/src/axisSizing/rowUtils.js +111 -0
- package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +106 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.mts +2 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.ts +84 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.js +102 -0
- package/3rdparty/walkontable/src/axisSizing/sizeGetters.mjs +92 -0
- package/3rdparty/walkontable/src/calculator/axisCalculation.d.ts +1 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.d.ts +10 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +10 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +10 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.d.ts +9 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +9 -1
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +9 -1
- package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +1 -1
- package/3rdparty/walkontable/src/calculator/viewportRows.d.ts +1 -1
- package/3rdparty/walkontable/src/cell/range.d.ts +10 -0
- package/3rdparty/walkontable/src/cell/range.js +14 -3
- package/3rdparty/walkontable/src/cell/range.mjs +11 -0
- package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
- package/3rdparty/walkontable/src/core/_base.js +58 -147
- package/3rdparty/walkontable/src/core/_base.mjs +17 -147
- package/3rdparty/walkontable/src/core/clone.d.ts +4 -14
- package/3rdparty/walkontable/src/core/clone.js +51 -5
- package/3rdparty/walkontable/src/core/clone.mjs +10 -5
- package/3rdparty/walkontable/src/core/core.d.ts +1 -5
- package/3rdparty/walkontable/src/core/core.js +52 -47
- package/3rdparty/walkontable/src/core/core.mjs +12 -48
- package/3rdparty/walkontable/src/domMeasure/geometryReader.d.mts +1 -0
- package/3rdparty/walkontable/src/domMeasure/geometryReader.d.ts +172 -0
- package/3rdparty/walkontable/src/domMeasure/geometryReader.js +19 -0
- package/3rdparty/walkontable/src/domMeasure/geometryReader.mjs +16 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.mts +1 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.ts +134 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.js +200 -0
- package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +198 -0
- package/3rdparty/walkontable/src/event.d.ts +25 -12
- package/3rdparty/walkontable/src/event.js +91 -224
- package/3rdparty/walkontable/src/event.mjs +90 -224
- package/3rdparty/walkontable/src/facade/core.d.ts +6 -6
- package/3rdparty/walkontable/src/index.d.ts +1 -1
- package/3rdparty/walkontable/src/index.js +2 -2
- package/3rdparty/walkontable/src/index.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/index.d.ts +6 -6
- package/3rdparty/walkontable/src/overlay/index.js +11 -11
- package/3rdparty/walkontable/src/overlay/index.mjs +6 -6
- package/3rdparty/walkontable/src/overlay/overlays.d.ts +375 -0
- package/3rdparty/walkontable/src/overlay/overlays.js +612 -0
- package/3rdparty/walkontable/src/overlay/overlays.mjs +601 -0
- package/3rdparty/walkontable/src/overlay/{_base.d.ts → regions/_base.d.ts} +65 -16
- package/3rdparty/walkontable/src/overlay/{_base.js → regions/_base.js} +160 -50
- package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +163 -47
- package/3rdparty/walkontable/src/overlay/regions/bottomInlineStartCornerOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.d.ts → regions/bottomInlineStartCornerOverlay.d.ts} +5 -10
- package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerOverlay.js} +18 -20
- package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.mjs → regions/bottomInlineStartCornerOverlay.mjs} +18 -20
- package/3rdparty/walkontable/src/overlay/regions/bottomOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{bottom.d.ts → regions/bottomOverlay.d.ts} +16 -11
- package/3rdparty/walkontable/src/overlay/{bottom.js → regions/bottomOverlay.js} +113 -66
- package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +113 -66
- package/3rdparty/walkontable/src/overlay/regions/inlineStartOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{inlineStart.d.ts → regions/inlineStartOverlay.d.ts} +17 -11
- package/3rdparty/walkontable/src/overlay/{inlineStart.js → regions/inlineStartOverlay.js} +122 -67
- package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +122 -67
- package/3rdparty/walkontable/src/overlay/regions/topInlineStartCornerOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.d.ts → regions/topInlineStartCornerOverlay.d.ts} +5 -10
- package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.js → regions/topInlineStartCornerOverlay.js} +13 -16
- package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.mjs → regions/topInlineStartCornerOverlay.mjs} +13 -16
- package/3rdparty/walkontable/src/overlay/regions/topOverlay.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/{top.d.ts → regions/topOverlay.d.ts} +32 -11
- package/3rdparty/walkontable/src/overlay/{top.js → regions/topOverlay.js} +163 -77
- package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +163 -77
- package/3rdparty/walkontable/src/overlay/resizeMonitor.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.d.ts +49 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.js +154 -0
- package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +153 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.ts +62 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.js +290 -0
- package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +295 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.ts +176 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.js +549 -0
- package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +557 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.d.mts +1 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.d.ts +67 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.js +178 -0
- package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +179 -0
- package/3rdparty/walkontable/src/{stickyScrollStrategy.d.ts → overlay/strategies/stickyScrollStrategy.d.ts} +33 -21
- package/3rdparty/walkontable/src/{stickyScrollStrategy.js → overlay/strategies/stickyScrollStrategy.js} +60 -41
- package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +58 -38
- package/3rdparty/walkontable/src/ports.d.mts +1 -0
- package/3rdparty/walkontable/src/ports.d.ts +54 -0
- package/3rdparty/walkontable/src/ports.js +23 -0
- package/3rdparty/walkontable/src/ports.mjs +24 -0
- package/3rdparty/walkontable/src/{renderer → render}/_base.d.ts +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/cells.js +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/cells.mjs +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.ts +1 -0
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.js +43 -1
- package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +44 -2
- package/3rdparty/walkontable/src/render/index.d.mts +1 -0
- package/3rdparty/walkontable/src/{renderer → render}/index.d.ts +11 -3
- package/3rdparty/walkontable/src/{renderer → render}/index.js +13 -3
- package/3rdparty/walkontable/src/{renderer → render}/index.mjs +11 -1
- package/3rdparty/walkontable/src/{renderer → render}/rows.js +1 -1
- package/3rdparty/walkontable/src/{renderer → render}/rows.mjs +1 -1
- package/3rdparty/walkontable/src/render/tableRenderer.d.mts +1 -0
- package/3rdparty/walkontable/src/{renderer/table.d.ts → render/tableRenderer.d.ts} +12 -2
- package/3rdparty/walkontable/src/render/tableRenderer.js +382 -0
- package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +159 -6
- package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
- package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +108 -32
- package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +106 -29
- package/3rdparty/walkontable/src/selection/border/border.d.ts +313 -5
- package/3rdparty/walkontable/src/selection/border/border.js +861 -51
- package/3rdparty/walkontable/src/selection/border/border.mjs +863 -53
- package/3rdparty/walkontable/src/selection/border/types.d.ts +30 -0
- package/3rdparty/walkontable/src/selection/manager.js +237 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +238 -1
- package/3rdparty/walkontable/src/settings/accessor.d.mts +2 -0
- package/3rdparty/walkontable/src/settings/accessor.d.ts +74 -0
- package/3rdparty/walkontable/src/settings/accessor.js +78 -0
- package/3rdparty/walkontable/src/settings/accessor.mjs +71 -0
- package/3rdparty/walkontable/src/settings/defaults.d.mts +1 -0
- package/3rdparty/walkontable/src/{settings.d.ts → settings/defaults.d.ts} +16 -77
- package/3rdparty/walkontable/src/settings/defaults.js +146 -0
- package/3rdparty/walkontable/src/settings/defaults.mjs +225 -0
- package/3rdparty/walkontable/src/settings/index.d.mts +1 -0
- package/3rdparty/walkontable/src/settings/index.d.ts +6 -0
- package/3rdparty/walkontable/src/settings/index.js +20 -0
- package/3rdparty/walkontable/src/settings/index.mjs +5 -0
- package/3rdparty/walkontable/src/table/baseTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/baseTable.d.ts +284 -0
- package/3rdparty/walkontable/src/table/baseTable.js +295 -0
- package/3rdparty/walkontable/src/table/baseTable.mjs +283 -0
- package/3rdparty/walkontable/src/table/cellAccess.d.mts +1 -0
- package/3rdparty/walkontable/src/table/cellAccess.d.ts +101 -0
- package/3rdparty/walkontable/src/table/cellAccess.js +238 -0
- package/3rdparty/walkontable/src/table/cellAccess.mjs +229 -0
- package/3rdparty/walkontable/src/table/domScaffold.d.mts +1 -0
- package/3rdparty/walkontable/src/table/domScaffold.d.ts +37 -0
- package/3rdparty/walkontable/src/table/domScaffold.js +145 -0
- package/3rdparty/walkontable/src/table/domScaffold.mjs +136 -0
- package/3rdparty/walkontable/src/table/drawCycle.d.mts +1 -0
- package/3rdparty/walkontable/src/table/drawCycle.d.ts +16 -0
- package/3rdparty/walkontable/src/table/drawCycle.js +405 -0
- package/3rdparty/walkontable/src/table/drawCycle.mjs +403 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.mts +1 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.ts +38 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.js +15 -0
- package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.mjs +14 -0
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.ts +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.js +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.mjs +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.ts +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.ts +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.js +1 -1
- package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.mjs +1 -1
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.mts +2 -0
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.ts +226 -0
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.js +251 -0
- package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.mjs +241 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.mts +1 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.ts +14 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.js +196 -0
- package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.mjs +179 -0
- package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.ts +16 -0
- package/3rdparty/walkontable/src/table/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerTable.js} +9 -12
- package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.mjs +21 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.d.ts +15 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.js +35 -0
- package/3rdparty/walkontable/src/table/regions/bottomTable.mjs +20 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.ts +12 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.js +32 -0
- package/3rdparty/walkontable/src/table/regions/inlineStartTable.mjs +17 -0
- package/3rdparty/walkontable/src/table/regions/masterTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/{master.d.ts → regions/masterTable.d.ts} +4 -13
- package/3rdparty/walkontable/src/table/{master.js → regions/masterTable.js} +23 -48
- package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +22 -47
- package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.ts +16 -0
- package/3rdparty/walkontable/src/table/{topInlineStartCorner.js → regions/topInlineStartCornerTable.js} +9 -12
- package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.mjs +21 -0
- package/3rdparty/walkontable/src/table/regions/topTable.d.mts +2 -0
- package/3rdparty/walkontable/src/table/regions/topTable.d.ts +15 -0
- package/3rdparty/walkontable/src/table/regions/topTable.js +35 -0
- package/3rdparty/walkontable/src/table/regions/topTable.mjs +20 -0
- package/3rdparty/walkontable/src/types.d.ts +7 -69
- package/3rdparty/walkontable/src/types.mjs +2 -1
- package/3rdparty/walkontable/src/utils/pointerToCoords.d.mts +1 -0
- package/3rdparty/walkontable/src/utils/{cellCoords.d.ts → pointerToCoords.d.ts} +24 -0
- package/3rdparty/walkontable/src/utils/pointerToCoords.js +181 -0
- package/3rdparty/walkontable/src/utils/pointerToCoords.mjs +186 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.ts +40 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.js +139 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.mjs +131 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.ts +133 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.js +18 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.mjs +18 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.ts +17 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.js +104 -0
- package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.mjs +99 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.d.ts +84 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.js +588 -0
- package/3rdparty/walkontable/src/viewport/calculatorFactory.mjs +601 -0
- package/3rdparty/walkontable/src/viewport/viewport.d.ts +267 -0
- package/3rdparty/walkontable/src/viewport/viewport.js +368 -0
- package/3rdparty/walkontable/src/viewport/viewport.mjs +360 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.d.mts +1 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.d.ts +59 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.js +284 -0
- package/3rdparty/walkontable/src/viewport/workspaceSize.mjs +282 -0
- package/3rdparty/walkontable/src/wire.d.mts +1 -0
- package/3rdparty/walkontable/src/wire.d.ts +81 -0
- package/3rdparty/walkontable/src/wire.js +56 -0
- package/3rdparty/walkontable/src/wire.mjs +56 -0
- package/CHANGELOG.md +114 -1
- package/LICENSE.txt +1 -1
- package/README.md +2 -2
- package/base.d.ts +13 -4
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/checkboxType/accessors/valueSetter.d.ts +1 -1
- package/cellTypes/checkboxType/accessors/valueSetter.js +3 -1
- package/cellTypes/checkboxType/accessors/valueSetter.mjs +3 -1
- package/cellTypes/index.d.ts +3 -2
- package/cellTypes/index.js +9 -0
- package/cellTypes/index.mjs +5 -2
- package/cellTypes/intlDatetimeType/index.d.mts +1 -0
- package/cellTypes/intlDatetimeType/index.d.ts +1 -0
- package/cellTypes/intlDatetimeType/index.js +19 -0
- package/cellTypes/intlDatetimeType/index.mjs +1 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.d.mts +1 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.d.ts +16 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.js +31 -0
- package/cellTypes/intlDatetimeType/intlDatetimeType.mjs +15 -0
- package/cellTypes/multiSelectType/index.d.ts +1 -1
- package/cellTypes/multiSelectType/index.js +3 -0
- package/cellTypes/multiSelectType/index.mjs +1 -1
- package/cellTypes/multiSelectType/multiSelectType.d.ts +1 -0
- package/cellTypes/multiSelectType/multiSelectType.js +4 -0
- package/cellTypes/multiSelectType/multiSelectType.mjs +1 -0
- package/cellTypes/numericType/accessors/valueSetter.js +30 -2
- package/cellTypes/numericType/accessors/valueSetter.mjs +31 -3
- package/core/hooks/bucket.d.ts +40 -6
- package/core/hooks/bucket.js +108 -72
- package/core/hooks/bucket.mjs +113 -72
- package/core/hooks/constants.js +254 -16
- package/core/hooks/constants.mjs +254 -16
- package/core/hooks/index.js +27 -22
- package/core/hooks/index.mjs +27 -22
- package/core/layout/constants.d.ts +11 -0
- package/core/layout/constants.js +6 -0
- package/core/layout/constants.mjs +12 -0
- package/core/layout/domSlot.d.ts +3 -1
- package/core/layout/domSlot.js +16 -2
- package/core/layout/domSlot.mjs +16 -2
- package/core/layout/index.d.ts +2 -2
- package/core/layout/index.js +6 -0
- package/core/layout/index.mjs +2 -2
- package/core/layout/layoutManager.d.ts +13 -0
- package/core/layout/layoutManager.js +21 -4
- package/core/layout/layoutManager.mjs +22 -2
- package/core/settings.d.ts +102 -6
- package/core/types.d.ts +15 -1
- package/core/types.mjs +9 -0
- package/core.js +534 -88
- package/core.mjs +537 -91
- package/dataMap/dataMap.d.ts +3 -13
- package/dataMap/dataMap.js +100 -41
- package/dataMap/dataMap.mjs +101 -42
- package/dataMap/dataSource.js +4 -1
- package/dataMap/dataSource.mjs +4 -1
- package/dataMap/metaManager/index.d.ts +62 -8
- package/dataMap/metaManager/index.js +66 -0
- package/dataMap/metaManager/index.mjs +66 -0
- package/dataMap/metaManager/lazyFactoryMap.d.ts +68 -43
- package/dataMap/metaManager/lazyFactoryMap.js +497 -110
- package/dataMap/metaManager/lazyFactoryMap.mjs +511 -111
- package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
- package/dataMap/metaManager/metaLayers/cellMeta.js +108 -8
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +108 -8
- package/dataMap/metaManager/metaLayers/columnMeta.d.ts +2 -1
- package/dataMap/metaManager/metaLayers/columnMeta.js +1 -0
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -0
- package/dataMap/metaManager/metaSchema.js +759 -39
- package/dataMap/metaManager/metaSchema.mjs +759 -39
- package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
- package/dataMap/metaManager/mods/dynamicCellMeta.js +252 -28
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +253 -29
- package/dataMap/sourceDataValidator.d.ts +13 -21
- package/dataMap/sourceDataValidator.js +39 -29
- package/dataMap/sourceDataValidator.mjs +50 -33
- package/dist/handsontable.full.js +30027 -11261
- package/dist/handsontable.full.min.js +168 -112
- package/dist/handsontable.js +32468 -13762
- package/dist/handsontable.min.js +172 -116
- package/dist/languages/all.js +2 -1
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/fa-IR.js +2 -1
- package/dist/languages/fa-IR.min.js +1 -1
- package/dist/themes/classic.js +9 -3
- package/dist/themes/classic.min.js +4 -4
- package/dist/themes/horizon.js +9 -3
- package/dist/themes/horizon.min.js +4 -4
- package/dist/themes/main.js +9 -3
- package/dist/themes/main.min.js +4 -4
- package/dist/themes/static/variables/colors/ant.js +3 -3
- package/dist/themes/static/variables/colors/ant.min.js +3 -3
- package/dist/themes/static/variables/colors/classic.js +3 -3
- package/dist/themes/static/variables/colors/classic.min.js +3 -3
- package/dist/themes/static/variables/colors/horizon.js +3 -3
- package/dist/themes/static/variables/colors/horizon.min.js +3 -3
- package/dist/themes/static/variables/colors/main.js +3 -3
- package/dist/themes/static/variables/colors/main.min.js +3 -3
- package/dist/themes/static/variables/colors/material.js +3 -3
- package/dist/themes/static/variables/colors/material.min.js +3 -3
- package/dist/themes/static/variables/colors/shadcn.js +3 -3
- package/dist/themes/static/variables/colors/shadcn.min.js +3 -3
- package/dist/themes/static/variables/density.js +3 -3
- package/dist/themes/static/variables/density.min.js +3 -3
- package/dist/themes/static/variables/helpers/iconsMap.js +4 -9
- package/dist/themes/static/variables/helpers/iconsMap.min.js +4 -9
- package/dist/themes/static/variables/icons/horizon.js +3 -3
- package/dist/themes/static/variables/icons/horizon.min.js +3 -3
- package/dist/themes/static/variables/icons/main.js +3 -3
- package/dist/themes/static/variables/icons/main.min.js +3 -3
- package/dist/themes/static/variables/sizing.js +3 -3
- package/dist/themes/static/variables/sizing.min.js +3 -3
- package/dist/themes/static/variables/tokens/classic.js +9 -3
- package/dist/themes/static/variables/tokens/classic.min.js +4 -4
- package/dist/themes/static/variables/tokens/horizon.js +9 -3
- package/dist/themes/static/variables/tokens/horizon.min.js +4 -4
- package/dist/themes/static/variables/tokens/main.js +9 -3
- package/dist/themes/static/variables/tokens/main.min.js +4 -4
- package/editorManager.js +152 -3
- package/editorManager.mjs +152 -3
- package/editors/autocompleteEditor/autocompleteEditor.js +58 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +59 -12
- package/editors/baseEditor/baseEditor.d.ts +15 -3
- package/editors/baseEditor/baseEditor.js +5 -3
- package/editors/baseEditor/baseEditor.mjs +15 -3
- package/editors/factory.js +5 -2
- package/editors/factory.mjs +5 -2
- package/editors/index.d.ts +3 -2
- package/editors/index.js +8 -0
- package/editors/index.mjs +3 -1
- package/editors/intlDatetimeEditor/index.d.mts +1 -0
- package/editors/intlDatetimeEditor/index.d.ts +1 -0
- package/editors/intlDatetimeEditor/index.js +19 -0
- package/editors/intlDatetimeEditor/index.mjs +1 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.d.mts +1 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.d.ts +42 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.js +108 -0
- package/editors/intlDatetimeEditor/intlDatetimeEditor.mjs +93 -0
- package/editors/multiSelectEditor/multiSelectEditor.js +11 -9
- package/editors/multiSelectEditor/multiSelectEditor.mjs +12 -10
- package/editors/selectEditor/selectEditor.js +2 -1
- package/editors/selectEditor/selectEditor.mjs +2 -1
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +2 -2
- package/eventManager.d.ts +3 -3
- package/focusManager/grid.d.ts +28 -0
- package/focusManager/grid.js +85 -2
- package/focusManager/grid.mjs +81 -3
- package/focusManager/scopeManager.js +1 -1
- package/focusManager/scopeManager.mjs +2 -2
- package/handsontable-non-commercial-license.pdf +0 -0
- package/helpers/array.d.ts +25 -0
- package/helpers/array.js +41 -4
- package/helpers/array.mjs +56 -4
- package/helpers/console.d.ts +25 -3
- package/helpers/console.js +40 -7
- package/helpers/console.mjs +52 -7
- package/helpers/dateTime.d.ts +14 -0
- package/helpers/dateTime.js +74 -2
- package/helpers/dateTime.mjs +73 -2
- package/helpers/dom/cellCoords.js +156 -13
- package/helpers/dom/cellCoords.mjs +156 -13
- package/helpers/dom/element.d.ts +47 -8
- package/helpers/dom/element.js +104 -18
- package/helpers/dom/element.mjs +132 -23
- package/helpers/dom/event.d.ts +58 -0
- package/helpers/dom/event.js +39 -0
- package/helpers/dom/event.mjs +63 -0
- package/helpers/errors.d.ts +5 -0
- package/helpers/errors.js +10 -6
- package/helpers/errors.mjs +10 -6
- package/helpers/feature.d.ts +19 -0
- package/helpers/feature.js +21 -0
- package/helpers/feature.mjs +30 -0
- package/helpers/function.d.ts +1 -1
- package/helpers/function.js +4 -1
- package/helpers/function.mjs +4 -1
- package/helpers/mixed.d.ts +103 -0
- package/helpers/mixed.js +373 -4
- package/helpers/mixed.mjs +413 -4
- package/helpers/moves.js +2 -1
- package/helpers/moves.mjs +2 -1
- package/helpers/number.d.ts +22 -0
- package/helpers/number.js +49 -0
- package/helpers/number.mjs +66 -0
- package/helpers/string.d.ts +14 -10
- package/helpers/string.js +17 -9
- package/helpers/string.mjs +27 -17
- package/helpers/templateString.d.mts +1 -0
- package/helpers/templateString.d.ts +13 -0
- package/helpers/templateString.js +29 -0
- package/helpers/templateString.mjs +19 -0
- package/helpers/uiButton.d.mts +1 -0
- package/helpers/uiButton.d.ts +21 -0
- package/helpers/uiButton.js +37 -0
- package/helpers/uiButton.mjs +31 -0
- package/i18n/languages/fa-IR.d.ts +1 -0
- package/i18n/languages/fa-IR.js +1 -0
- package/i18n/languages/fa-IR.mjs +1 -0
- package/index.d.ts +3 -3
- package/languages/all.js +2 -1
- package/languages/fa-IR.js +2 -1
- package/languages/fa-IR.mjs +1 -0
- package/languages/index.js +2 -1
- package/package.json +61 -1
- package/plugins/autoColumnSize/autoColumnSize.d.ts +24 -1
- package/plugins/autoColumnSize/autoColumnSize.js +501 -82
- package/plugins/autoColumnSize/autoColumnSize.mjs +508 -83
- package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
- package/plugins/autoRowSize/autoRowSize.js +68 -24
- package/plugins/autoRowSize/autoRowSize.mjs +98 -29
- package/plugins/autofill/autofill.js +30 -12
- package/plugins/autofill/autofill.mjs +30 -12
- package/plugins/base/base.d.ts +10 -0
- package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +89 -8
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +93 -8
- package/plugins/columnSorting/columnSorting.d.ts +31 -2
- package/plugins/columnSorting/columnSorting.js +151 -24
- package/plugins/columnSorting/columnSorting.mjs +153 -26
- package/plugins/columnSorting/columnStatesManager.d.ts +1 -1
- package/plugins/columnSorting/columnStatesManager.js +1 -7
- package/plugins/columnSorting/columnStatesManager.mjs +1 -7
- package/plugins/columnSorting/domHelpers.d.ts +3 -0
- package/plugins/columnSorting/domHelpers.js +9 -0
- package/plugins/columnSorting/domHelpers.mjs +3 -3
- package/plugins/columnSorting/rootComparator.js +21 -16
- package/plugins/columnSorting/rootComparator.mjs +21 -16
- package/plugins/columnSorting/sortFunction/checkbox.js +7 -5
- package/plugins/columnSorting/sortFunction/checkbox.mjs +7 -5
- package/plugins/columnSorting/sortFunction/default.js +15 -4
- package/plugins/columnSorting/sortFunction/default.mjs +15 -4
- package/plugins/columnSorting/sortFunction/intlDatetime.d.mts +1 -0
- package/plugins/columnSorting/sortFunction/intlDatetime.d.ts +10 -0
- package/plugins/columnSorting/sortFunction/intlDatetime.js +23 -0
- package/plugins/columnSorting/sortFunction/intlDatetime.mjs +12 -0
- package/plugins/columnSorting/sortService/registry.js +2 -0
- package/plugins/columnSorting/sortService/registry.mjs +2 -0
- package/plugins/columnSorting/utils.d.ts +8 -0
- package/plugins/columnSorting/utils.js +37 -45
- package/plugins/columnSorting/utils.mjs +42 -47
- package/plugins/columnSummary/columnSummary.js +9 -5
- package/plugins/columnSummary/columnSummary.mjs +9 -5
- package/plugins/columnSummary/endpoints.d.ts +69 -2
- package/plugins/columnSummary/endpoints.js +181 -29
- package/plugins/columnSummary/endpoints.mjs +181 -29
- package/plugins/comments/commentEditor.js +1 -1
- package/plugins/comments/commentEditor.mjs +2 -2
- package/plugins/contextMenu/contextMenu.d.ts +12 -1
- package/plugins/contextMenu/contextMenu.js +30 -6
- package/plugins/contextMenu/contextMenu.mjs +30 -6
- package/plugins/contextMenu/index.d.ts +1 -1
- package/plugins/contextMenu/menu/menu.d.ts +22 -1
- package/plugins/contextMenu/menu/menu.js +211 -3
- package/plugins/contextMenu/menu/menu.mjs +212 -4
- package/plugins/contextMenu/menu/menuItemRenderer.js +2 -2
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +2 -2
- package/plugins/contextMenu/predefinedItems/alignment.js +14 -14
- package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
- package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
- package/plugins/contextMenu/predefinedItems/readOnly.js +3 -3
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
- package/plugins/contextMenu/utils.js +1 -1
- package/plugins/contextMenu/utils.mjs +1 -1
- package/plugins/copyPaste/copyPaste.js +70 -16
- package/plugins/copyPaste/copyPaste.mjs +71 -17
- package/plugins/copyPaste/copyableRanges.js +6 -2
- package/plugins/copyPaste/copyableRanges.mjs +6 -2
- package/plugins/copyPaste/pasteEvent.d.ts +1 -1
- package/plugins/customBorders/customBorders.d.ts +21 -40
- package/plugins/customBorders/customBorders.js +1080 -201
- package/plugins/customBorders/customBorders.mjs +1082 -203
- package/plugins/customBorders/utils.d.ts +71 -0
- package/plugins/customBorders/utils.js +63 -0
- package/plugins/customBorders/utils.mjs +101 -0
- package/plugins/dataProvider/dataProvider.d.ts +2 -1
- package/plugins/dataProvider/dataProvider.js +22 -7
- package/plugins/dataProvider/dataProvider.mjs +22 -7
- package/plugins/dataProvider/query/crud.js +1 -1
- package/plugins/dataProvider/query/crud.mjs +1 -1
- package/plugins/dialog/dialog.js +14 -9
- package/plugins/dialog/dialog.mjs +14 -9
- package/plugins/dialog/templates/confirm.d.ts +1 -1
- package/plugins/dialog/templates/confirm.js +2 -1
- package/plugins/dialog/templates/confirm.mjs +2 -1
- package/plugins/dialog/ui.d.ts +5 -3
- package/plugins/dialog/ui.js +12 -4
- package/plugins/dialog/ui.mjs +12 -4
- package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
- package/plugins/dragToScroll/dragToScroll.js +150 -14
- package/plugins/dragToScroll/dragToScroll.mjs +151 -15
- package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
- package/plugins/dropdownMenu/dropdownMenu.js +45 -3
- package/plugins/dropdownMenu/dropdownMenu.mjs +46 -4
- package/plugins/dropdownMenu/index.d.ts +1 -0
- package/plugins/emptyDataState/emptyDataState.js +4 -6
- package/plugins/emptyDataState/emptyDataState.mjs +4 -6
- package/plugins/emptyDataState/ui.js +2 -1
- package/plugins/emptyDataState/ui.mjs +2 -1
- package/plugins/exportFile/dataProvider.js +7 -9
- package/plugins/exportFile/dataProvider.mjs +7 -9
- package/plugins/exportFile/exportFile.d.ts +10 -3
- package/plugins/exportFile/types/_base.js +4 -10
- package/plugins/exportFile/types/_base.mjs +4 -10
- package/plugins/exportFile/types/xlsx/cell-style.js +4 -2
- package/plugins/exportFile/types/xlsx/cell-style.mjs +4 -2
- package/plugins/exportFile/types/xlsx/date-utils.d.ts +15 -0
- package/plugins/exportFile/types/xlsx/date-utils.js +31 -0
- package/plugins/exportFile/types/xlsx/date-utils.mjs +36 -0
- package/plugins/exportFile/types/xlsx.js +13 -9
- package/plugins/exportFile/types/xlsx.mjs +14 -10
- package/plugins/exportFile/utils.d.ts +9 -1
- package/plugins/exportFile/utils.js +27 -4
- package/plugins/exportFile/utils.mjs +40 -2
- package/plugins/filters/component/_base.d.ts +1 -2
- package/plugins/filters/component/_base.js +1 -2
- package/plugins/filters/component/_base.mjs +1 -2
- package/plugins/filters/component/condition.d.ts +1 -0
- package/plugins/filters/component/condition.js +2 -0
- package/plugins/filters/component/condition.mjs +2 -0
- package/plugins/filters/component/value.d.ts +5 -6
- package/plugins/filters/component/value.js +53 -34
- package/plugins/filters/component/value.mjs +54 -35
- package/plugins/filters/condition/date/after.js +2 -1
- package/plugins/filters/condition/date/after.mjs +2 -1
- package/plugins/filters/condition/date/afterOrEqual.js +2 -1
- package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
- package/plugins/filters/condition/date/before.js +2 -1
- package/plugins/filters/condition/date/before.mjs +2 -1
- package/plugins/filters/condition/date/beforeOrEqual.js +2 -1
- package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
- package/plugins/filters/condition/equal.d.ts +7 -0
- package/plugins/filters/condition/equal.js +4 -0
- package/plugins/filters/condition/equal.mjs +10 -0
- package/plugins/filters/condition/intlDatetime/after.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/after.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/after.js +77 -0
- package/plugins/filters/condition/intlDatetime/after.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.js +77 -0
- package/plugins/filters/condition/intlDatetime/afterOrEqual.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/before.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/before.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/before.js +77 -0
- package/plugins/filters/condition/intlDatetime/before.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.js +77 -0
- package/plugins/filters/condition/intlDatetime/beforeOrEqual.mjs +22 -0
- package/plugins/filters/condition/intlDatetime/between.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/between.d.ts +18 -0
- package/plugins/filters/condition/intlDatetime/between.js +78 -0
- package/plugins/filters/condition/intlDatetime/between.mjs +23 -0
- package/plugins/filters/condition/intlDatetime/today.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/today.d.ts +17 -0
- package/plugins/filters/condition/intlDatetime/today.js +76 -0
- package/plugins/filters/condition/intlDatetime/today.mjs +20 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.d.ts +17 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.js +77 -0
- package/plugins/filters/condition/intlDatetime/tomorrow.mjs +21 -0
- package/plugins/filters/condition/intlDatetime/yesterday.d.mts +1 -0
- package/plugins/filters/condition/intlDatetime/yesterday.d.ts +17 -0
- package/plugins/filters/condition/intlDatetime/yesterday.js +77 -0
- package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
- package/plugins/filters/conditionCollection.js +4 -7
- package/plugins/filters/conditionCollection.mjs +4 -7
- package/plugins/filters/conditionUpdateObserver.d.ts +2 -2
- package/plugins/filters/conditionUpdateObserver.js +148 -49
- package/plugins/filters/conditionUpdateObserver.mjs +148 -49
- package/plugins/filters/constants.d.ts +1 -0
- package/plugins/filters/constants.js +31 -0
- package/plugins/filters/constants.mjs +28 -0
- package/plugins/filters/dataFilter.d.ts +4 -12
- package/plugins/filters/dataFilter.js +7 -19
- package/plugins/filters/dataFilter.mjs +8 -20
- package/plugins/filters/filters.d.ts +33 -9
- package/plugins/filters/filters.js +91 -31
- package/plugins/filters/filters.mjs +92 -32
- package/plugins/filters/sortComparators.d.ts +9 -2
- package/plugins/filters/sortComparators.js +34 -1
- package/plugins/filters/sortComparators.mjs +38 -3
- package/plugins/filters/ui/input.d.ts +4 -0
- package/plugins/filters/ui/input.js +18 -6
- package/plugins/filters/ui/input.mjs +18 -6
- package/plugins/filters/ui/multipleSelect.js +27 -4
- package/plugins/filters/ui/multipleSelect.mjs +27 -4
- package/plugins/filters/ui/select.js +1 -1
- package/plugins/filters/ui/select.mjs +1 -1
- package/plugins/formulas/engine/register.d.ts +5 -4
- package/plugins/formulas/engine/register.js +5 -2
- package/plugins/formulas/engine/register.mjs +9 -5
- package/plugins/formulas/engine/settings.d.ts +2 -6
- package/plugins/formulas/engine/settings.js +29 -4
- package/plugins/formulas/engine/settings.mjs +29 -4
- package/plugins/formulas/engine/types.d.ts +12 -2
- package/plugins/formulas/formulas.d.ts +39 -0
- package/plugins/formulas/formulas.js +789 -47
- package/plugins/formulas/formulas.mjs +793 -49
- package/plugins/formulas/hyperlinkUrl.d.mts +1 -0
- package/plugins/formulas/hyperlinkUrl.d.ts +12 -0
- package/plugins/formulas/hyperlinkUrl.js +32 -0
- package/plugins/formulas/hyperlinkUrl.mjs +32 -0
- package/plugins/formulas/indexSyncer/axisSyncer.d.ts +1 -0
- package/plugins/formulas/indexSyncer/axisSyncer.js +72 -15
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +72 -15
- package/plugins/formulas/utils.d.ts +9 -0
- package/plugins/formulas/utils.js +21 -0
- package/plugins/formulas/utils.mjs +25 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +6 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
- package/plugins/hiddenColumns/hiddenColumns.js +6 -3
- package/plugins/hiddenColumns/hiddenColumns.mjs +6 -3
- package/plugins/hiddenRows/contextMenuItem/showRow.js +6 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
- package/plugins/hiddenRows/hiddenRows.js +6 -3
- package/plugins/hiddenRows/hiddenRows.mjs +6 -3
- package/plugins/index.d.ts +5 -1
- package/plugins/index.js +10 -0
- package/plugins/index.mjs +5 -1
- package/plugins/loading/content.d.ts +5 -3
- package/plugins/loading/content.js +3 -2
- package/plugins/loading/content.mjs +8 -5
- package/plugins/loading/loading.d.ts +5 -2
- package/plugins/loading/loading.mjs +5 -2
- package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
- package/plugins/manualColumnMove/manualColumnMove.js +122 -20
- package/plugins/manualColumnMove/manualColumnMove.mjs +123 -21
- package/plugins/manualColumnResize/manualColumnResize.d.ts +20 -7
- package/plugins/manualColumnResize/manualColumnResize.js +33 -13
- package/plugins/manualColumnResize/manualColumnResize.mjs +34 -14
- package/plugins/manualRowResize/manualRowResize.d.ts +21 -8
- package/plugins/manualRowResize/manualRowResize.js +34 -14
- package/plugins/manualRowResize/manualRowResize.mjs +35 -15
- package/plugins/mergeCells/cellCoords.d.ts +8 -0
- package/plugins/mergeCells/cellCoords.js +11 -0
- package/plugins/mergeCells/cellCoords.mjs +11 -0
- package/plugins/mergeCells/cellsCollection.d.ts +46 -2
- package/plugins/mergeCells/cellsCollection.js +189 -68
- package/plugins/mergeCells/cellsCollection.mjs +189 -68
- package/plugins/mergeCells/focusOrder.d.ts +26 -20
- package/plugins/mergeCells/focusOrder.js +358 -177
- package/plugins/mergeCells/focusOrder.mjs +363 -172
- package/plugins/mergeCells/mergeCells.d.ts +13 -8
- package/plugins/mergeCells/mergeCells.js +322 -64
- package/plugins/mergeCells/mergeCells.mjs +322 -64
- package/plugins/moveCells/helpers.d.mts +1 -0
- package/plugins/moveCells/helpers.d.ts +21 -0
- package/plugins/moveCells/helpers.js +20 -0
- package/plugins/moveCells/helpers.mjs +15 -0
- package/plugins/moveCells/index.d.mts +1 -0
- package/plugins/moveCells/index.d.ts +1 -0
- package/plugins/moveCells/index.js +22 -0
- package/plugins/moveCells/index.mjs +1 -0
- package/plugins/moveCells/moveCells.d.mts +1 -0
- package/plugins/moveCells/moveCells.d.ts +80 -0
- package/plugins/moveCells/moveCells.js +602 -0
- package/plugins/moveCells/moveCells.mjs +587 -0
- package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -8
- package/plugins/multiColumnSorting/multiColumnSorting.js +11 -16
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +11 -16
- package/plugins/multiColumnSorting/rootComparator.js +26 -19
- package/plugins/multiColumnSorting/rootComparator.mjs +26 -19
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +19 -4
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +273 -58
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +273 -58
- package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
- package/plugins/nestedHeaders/nestedHeaders.js +222 -23
- package/plugins/nestedHeaders/nestedHeaders.mjs +222 -23
- package/plugins/nestedHeaders/stateManager/columnArrangement.d.mts +1 -0
- package/plugins/nestedHeaders/stateManager/columnArrangement.d.ts +37 -0
- package/plugins/nestedHeaders/stateManager/columnArrangement.js +35 -0
- package/plugins/nestedHeaders/stateManager/columnArrangement.mjs +30 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.d.mts +1 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.d.ts +57 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.js +115 -0
- package/plugins/nestedHeaders/stateManager/deriveSettings.mjs +135 -0
- package/plugins/nestedHeaders/stateManager/headersTree.d.ts +14 -1
- package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
- package/plugins/nestedHeaders/stateManager/index.js +381 -38
- package/plugins/nestedHeaders/stateManager/index.mjs +382 -39
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +3 -2
- package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +3 -2
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.d.ts +23 -6
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +20 -4
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +20 -4
- package/plugins/nestedHeaders/stateManager/utils.d.ts +17 -1
- package/plugins/nestedHeaders/stateManager/utils.js +6 -1
- package/plugins/nestedHeaders/stateManager/utils.mjs +6 -1
- package/plugins/nestedHeaders/utils/ghostTable.js +21 -8
- package/plugins/nestedHeaders/utils/ghostTable.mjs +21 -8
- package/plugins/nestedRows/data/dataManager.d.ts +4 -1
- package/plugins/nestedRows/data/dataManager.js +10 -4
- package/plugins/nestedRows/data/dataManager.mjs +10 -4
- package/plugins/nestedRows/nestedRows.d.ts +127 -1
- package/plugins/nestedRows/nestedRows.js +330 -8
- package/plugins/nestedRows/nestedRows.mjs +330 -8
- package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
- package/plugins/nestedRows/ui/collapsing.js +236 -40
- package/plugins/nestedRows/ui/collapsing.mjs +236 -40
- package/plugins/notification/notification.d.ts +2 -1
- package/plugins/notification/notification.js +6 -3
- package/plugins/notification/notification.mjs +6 -3
- package/plugins/notification/ui.d.ts +8 -5
- package/plugins/notification/ui.js +18 -6
- package/plugins/notification/ui.mjs +18 -6
- package/plugins/pagination/pagination.js +2 -2
- package/plugins/pagination/pagination.mjs +2 -2
- package/plugins/search/search.js +23 -2
- package/plugins/search/search.mjs +23 -2
- package/plugins/selectionHandles/helpers.d.mts +1 -0
- package/plugins/selectionHandles/helpers.d.ts +17 -0
- package/plugins/selectionHandles/helpers.js +16 -0
- package/plugins/selectionHandles/helpers.mjs +11 -0
- package/plugins/selectionHandles/index.d.mts +1 -0
- package/plugins/selectionHandles/index.d.ts +1 -0
- package/plugins/selectionHandles/index.js +22 -0
- package/plugins/selectionHandles/index.mjs +1 -0
- package/plugins/selectionHandles/selectionHandles.d.mts +1 -0
- package/plugins/selectionHandles/selectionHandles.d.ts +52 -0
- package/plugins/selectionHandles/selectionHandles.js +342 -0
- package/plugins/selectionHandles/selectionHandles.mjs +323 -0
- package/plugins/trimRows/trimRows.d.ts +1 -1
- package/plugins/trimRows/trimRows.js +6 -2
- package/plugins/trimRows/trimRows.mjs +6 -2
- package/plugins/types.d.ts +4 -0
- package/plugins/undoRedo/actions/cellAlignment.js +1 -1
- package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
- package/plugins/undoRedo/actions/createColumn.js +4 -1
- package/plugins/undoRedo/actions/createColumn.mjs +4 -1
- package/plugins/undoRedo/actions/createRow.js +4 -1
- package/plugins/undoRedo/actions/createRow.mjs +4 -1
- package/plugins/undoRedo/actions/fixedCounts.d.mts +1 -0
- package/plugins/undoRedo/actions/fixedCounts.d.ts +36 -0
- package/plugins/undoRedo/actions/fixedCounts.js +63 -0
- package/plugins/undoRedo/actions/fixedCounts.mjs +62 -0
- package/plugins/undoRedo/actions/index.js +2 -0
- package/plugins/undoRedo/actions/index.mjs +2 -0
- package/plugins/undoRedo/actions/moveCells.d.mts +1 -0
- package/plugins/undoRedo/actions/moveCells.d.ts +104 -0
- package/plugins/undoRedo/actions/moveCells.js +225 -0
- package/plugins/undoRedo/actions/moveCells.mjs +227 -0
- package/plugins/undoRedo/actions/removeColumn.d.ts +18 -2
- package/plugins/undoRedo/actions/removeColumn.js +11 -4
- package/plugins/undoRedo/actions/removeColumn.mjs +12 -5
- package/plugins/undoRedo/actions/removeRow.js +2 -57
- package/plugins/undoRedo/actions/removeRow.mjs +2 -57
- package/plugins/undoRedo/undoRedo.d.ts +26 -0
- package/plugins/undoRedo/undoRedo.js +36 -2
- package/plugins/undoRedo/undoRedo.mjs +36 -2
- package/plugins/undoRedo/utils.d.ts +29 -0
- package/plugins/undoRedo/utils.js +55 -3
- package/plugins/undoRedo/utils.mjs +59 -0
- package/renderSizeProbe.d.mts +1 -0
- package/renderSizeProbe.d.ts +60 -0
- package/renderSizeProbe.js +163 -0
- package/renderSizeProbe.mjs +176 -0
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/index.d.ts +3 -2
- package/renderers/index.js +8 -0
- package/renderers/index.mjs +3 -1
- package/renderers/intlDatetimeRenderer/index.d.mts +1 -0
- package/renderers/intlDatetimeRenderer/index.d.ts +1 -0
- package/renderers/intlDatetimeRenderer/index.js +22 -0
- package/renderers/intlDatetimeRenderer/index.mjs +1 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.mts +1 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.ts +26 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.js +82 -0
- package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.mjs +67 -0
- package/renderers/multiSelectRenderer/multiSelectRenderer.js +2 -3
- package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +2 -3
- package/renderers/multiSelectRenderer/utils/utils.d.ts +1 -1
- package/renderers/multiSelectRenderer/utils/utils.js +11 -8
- package/renderers/multiSelectRenderer/utils/utils.mjs +11 -8
- package/renderers/passwordRenderer/passwordRenderer.js +6 -1
- package/renderers/passwordRenderer/passwordRenderer.mjs +6 -1
- package/renderers/renderCell.d.mts +1 -0
- package/renderers/renderCell.d.ts +37 -0
- package/renderers/renderCell.js +43 -0
- package/renderers/renderCell.mjs +48 -0
- package/selection/highlight/types/areaLayered.d.ts +3 -1
- package/selection/highlight/types/areaLayered.js +4 -2
- package/selection/highlight/types/areaLayered.mjs +6 -2
- package/selection/highlight/types/focus.d.ts +3 -1
- package/selection/highlight/types/focus.js +3 -2
- package/selection/highlight/types/focus.mjs +5 -2
- package/selection/mouseEventHandler.js +29 -26
- package/selection/mouseEventHandler.mjs +29 -26
- package/selection/moveCells.d.mts +1 -0
- package/selection/moveCells.d.ts +15 -0
- package/selection/moveCells.js +13 -0
- package/selection/moveCells.mjs +9 -0
- package/selection/selection.d.ts +56 -2
- package/selection/selection.js +149 -5
- package/selection/selection.mjs +149 -5
- package/selection/types.d.ts +3 -0
- package/settings.d.ts +24 -3
- package/shortcuts/context.d.ts +4 -0
- package/shortcuts/context.js +16 -8
- package/shortcuts/context.mjs +20 -8
- package/shortcuts/contexts/commands/populateSelectedCellsData.js +1 -1
- package/shortcuts/contexts/commands/populateSelectedCellsData.mjs +1 -1
- package/styles/handsontable.css +504 -158
- package/styles/handsontable.min.css +4 -4
- package/styles/handsontableStyles.d.mts +2 -0
- package/styles/handsontableStyles.d.ts +2 -0
- package/styles/handsontableStyles.js +1 -1
- package/styles/handsontableStyles.mjs +1 -1
- package/styles/ht-icons-horizon.css +1 -10
- package/styles/ht-icons-horizon.min.css +4 -4
- package/styles/ht-icons-main.css +1 -10
- package/styles/ht-icons-main.min.css +4 -4
- package/styles/ht-theme-classic-no-icons.css +6 -0
- package/styles/ht-theme-classic-no-icons.min.css +4 -4
- package/styles/ht-theme-classic.css +7 -10
- package/styles/ht-theme-classic.min.css +4 -4
- package/styles/ht-theme-horizon-no-icons.css +6 -0
- package/styles/ht-theme-horizon-no-icons.min.css +4 -4
- package/styles/ht-theme-horizon.css +7 -10
- package/styles/ht-theme-horizon.min.css +4 -4
- package/styles/ht-theme-main-no-icons.css +6 -0
- package/styles/ht-theme-main-no-icons.min.css +4 -4
- package/styles/ht-theme-main.css +7 -10
- package/styles/ht-theme-main.min.css +4 -4
- package/tableView.d.ts +17 -4
- package/tableView.js +208 -42
- package/tableView.mjs +209 -43
- package/themes/engine/index.d.ts +2 -1
- package/themes/engine/index.js +3 -0
- package/themes/engine/index.mjs +1 -1
- package/themes/engine/manager.d.ts +75 -3
- package/themes/engine/manager.js +242 -6
- package/themes/engine/manager.mjs +249 -6
- package/themes/engine/utils/cssVariables.d.ts +18 -1
- package/themes/engine/utils/cssVariables.js +27 -11
- package/themes/engine/utils/cssVariables.mjs +28 -11
- package/themes/engine/utils/validation.js +7 -0
- package/themes/engine/utils/validation.mjs +7 -0
- package/themes/static/variables/helpers/iconsMap.js +1 -6
- package/themes/static/variables/helpers/iconsMap.mjs +1 -6
- package/themes/static/variables/tokens/classic.js +6 -0
- package/themes/static/variables/tokens/classic.mjs +6 -0
- package/themes/static/variables/tokens/horizon.js +6 -0
- package/themes/static/variables/tokens/horizon.mjs +6 -0
- package/themes/static/variables/tokens/main.js +6 -0
- package/themes/static/variables/tokens/main.mjs +6 -0
- package/themes/types.d.ts +1 -1
- package/translations/indexMapper.d.ts +14 -9
- package/translations/indexMapper.js +104 -43
- package/translations/indexMapper.mjs +104 -43
- package/translations/mapCollections/aggregatedCollection.js +20 -35
- package/translations/mapCollections/aggregatedCollection.mjs +20 -35
- package/translations/mapCollections/mapCollection.d.ts +10 -4
- package/translations/mapCollections/mapCollection.js +2 -2
- package/translations/mapCollections/mapCollection.mjs +2 -2
- package/translations/maps/booleanMap.d.mts +1 -0
- package/translations/maps/booleanMap.d.ts +86 -0
- package/translations/maps/booleanMap.js +300 -0
- package/translations/maps/booleanMap.mjs +308 -0
- package/translations/maps/hidingMap.d.ts +5 -2
- package/translations/maps/hidingMap.js +8 -3
- package/translations/maps/hidingMap.mjs +8 -3
- package/translations/maps/index.d.ts +5 -2
- package/translations/maps/index.js +7 -3
- package/translations/maps/index.mjs +10 -2
- package/translations/maps/indexMap.d.ts +26 -2
- package/translations/maps/indexMap.js +78 -6
- package/translations/maps/indexMap.mjs +78 -6
- package/translations/maps/indexesSequence.d.ts +53 -2
- package/translations/maps/indexesSequence.js +225 -3
- package/translations/maps/indexesSequence.mjs +233 -3
- package/translations/maps/trimmingMap.d.ts +5 -2
- package/translations/maps/trimmingMap.js +8 -3
- package/translations/maps/trimmingMap.mjs +8 -3
- package/translations/maps/utils/actionsOnIndexes.js +20 -1
- package/translations/maps/utils/actionsOnIndexes.mjs +20 -1
- package/translations/maps/utils/indexesSequence.js +12 -3
- package/translations/maps/utils/indexesSequence.mjs +12 -3
- package/translations/maps/utils/physicallyIndexed.js +12 -1
- package/translations/maps/utils/physicallyIndexed.mjs +12 -1
- package/utils/entitlementLicenseKey/classify.d.mts +1 -0
- package/utils/entitlementLicenseKey/classify.d.ts +34 -0
- package/utils/entitlementLicenseKey/classify.js +97 -0
- package/utils/entitlementLicenseKey/classify.mjs +96 -0
- package/utils/entitlementLicenseKey/constants.d.mts +1 -0
- package/utils/entitlementLicenseKey/constants.d.ts +69 -0
- package/utils/entitlementLicenseKey/constants.js +54 -0
- package/utils/entitlementLicenseKey/constants.mjs +66 -0
- package/utils/entitlementLicenseKey/detectFormat.d.mts +1 -0
- package/utils/entitlementLicenseKey/detectFormat.d.ts +23 -0
- package/utils/entitlementLicenseKey/detectFormat.js +60 -0
- package/utils/entitlementLicenseKey/detectFormat.mjs +60 -0
- package/utils/entitlementLicenseKey/encoding.d.mts +1 -0
- package/utils/entitlementLicenseKey/encoding.d.ts +58 -0
- package/utils/entitlementLicenseKey/encoding.js +161 -0
- package/utils/entitlementLicenseKey/encoding.mjs +172 -0
- package/utils/entitlementLicenseKey/extractKeyData.d.mts +1 -0
- package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -0
- package/utils/entitlementLicenseKey/extractKeyData.js +213 -0
- package/utils/entitlementLicenseKey/extractKeyData.mjs +232 -0
- package/utils/entitlementLicenseKey/grants.d.mts +1 -0
- package/utils/entitlementLicenseKey/grants.d.ts +54 -0
- package/utils/entitlementLicenseKey/grants.js +68 -0
- package/utils/entitlementLicenseKey/grants.mjs +84 -0
- package/utils/entitlementLicenseKey/index.d.mts +1 -0
- package/utils/entitlementLicenseKey/index.d.ts +8 -0
- package/utils/entitlementLicenseKey/index.js +53 -0
- package/utils/entitlementLicenseKey/index.mjs +6 -0
- package/utils/entitlementLicenseKey/sha512.d.mts +1 -0
- package/utils/entitlementLicenseKey/sha512.d.ts +11 -0
- package/utils/entitlementLicenseKey/sha512.js +328 -0
- package/utils/entitlementLicenseKey/sha512.mjs +327 -0
- package/utils/entitlementLicenseKey/types.d.mts +1 -0
- package/utils/entitlementLicenseKey/types.d.ts +84 -0
- package/utils/entitlementLicenseKey/types.js +8 -0
- package/utils/entitlementLicenseKey/types.mjs +10 -0
- package/utils/ghostTable.d.ts +1 -0
- package/utils/ghostTable.js +60 -11
- package/utils/ghostTable.mjs +60 -11
- package/utils/licenseBranding/badge.d.mts +1 -0
- package/utils/licenseBranding/badge.d.ts +21 -0
- package/utils/licenseBranding/badge.js +237 -0
- package/utils/licenseBranding/badge.mjs +244 -0
- package/utils/licenseBranding/content.d.mts +1 -0
- package/utils/licenseBranding/content.d.ts +54 -0
- package/utils/licenseBranding/content.js +93 -0
- package/utils/licenseBranding/content.mjs +79 -0
- package/utils/licenseBranding/index.d.mts +1 -0
- package/utils/licenseBranding/index.d.ts +14 -0
- package/utils/licenseBranding/index.js +55 -0
- package/utils/licenseBranding/index.mjs +56 -0
- package/utils/licenseBranding/lockScreen.d.mts +1 -0
- package/utils/licenseBranding/lockScreen.d.ts +23 -0
- package/utils/licenseBranding/lockScreen.js +150 -0
- package/utils/licenseBranding/lockScreen.mjs +159 -0
- package/utils/licenseNotification.d.ts +19 -0
- package/utils/licenseNotification.js +56 -29
- package/utils/licenseNotification.mjs +61 -29
- package/utils/movableMeta.d.mts +1 -0
- package/utils/movableMeta.d.ts +40 -0
- package/utils/movableMeta.js +47 -0
- package/utils/movableMeta.mjs +46 -0
- package/utils/parseTable.js +16 -7
- package/utils/parseTable.mjs +16 -7
- package/utils/samplesGenerator.d.ts +41 -14
- package/utils/samplesGenerator.js +114 -42
- package/utils/samplesGenerator.mjs +114 -42
- package/utils/sanitizer.d.mts +1 -0
- package/utils/sanitizer.d.ts +47 -0
- package/utils/sanitizer.js +43 -0
- package/utils/sanitizer.mjs +55 -0
- package/utils/stylesHandler.d.ts +13 -0
- package/utils/stylesHandler.js +55 -2
- package/utils/stylesHandler.mjs +55 -2
- package/validators/autocompleteValidator/autocompleteValidator.js +3 -0
- package/validators/autocompleteValidator/autocompleteValidator.mjs +3 -0
- package/validators/index.d.ts +3 -2
- package/validators/index.js +8 -0
- package/validators/index.mjs +3 -1
- package/validators/intlDatetimeValidator/index.d.mts +1 -0
- package/validators/intlDatetimeValidator/index.d.ts +1 -0
- package/validators/intlDatetimeValidator/index.js +25 -0
- package/validators/intlDatetimeValidator/index.mjs +1 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.d.mts +1 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.d.ts +28 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.js +49 -0
- package/validators/intlDatetimeValidator/intlDatetimeValidator.mjs +37 -0
- package/3rdparty/walkontable/src/overlay/bottom.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/top.d.mts +0 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.d.mts +0 -1
- package/3rdparty/walkontable/src/overlays.d.ts +0 -329
- package/3rdparty/walkontable/src/overlays.js +0 -870
- package/3rdparty/walkontable/src/overlays.mjs +0 -860
- package/3rdparty/walkontable/src/renderer/table.d.mts +0 -1
- package/3rdparty/walkontable/src/renderer/table.js +0 -229
- package/3rdparty/walkontable/src/settings.d.mts +0 -2
- package/3rdparty/walkontable/src/settings.js +0 -196
- package/3rdparty/walkontable/src/settings.mjs +0 -263
- package/3rdparty/walkontable/src/table/bottom.d.mts +0 -2
- package/3rdparty/walkontable/src/table/bottom.d.ts +0 -19
- package/3rdparty/walkontable/src/table/bottom.js +0 -38
- package/3rdparty/walkontable/src/table/bottom.mjs +0 -23
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.mts +0 -2
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.ts +0 -20
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +0 -24
- package/3rdparty/walkontable/src/table/inlineStart.d.mts +0 -2
- package/3rdparty/walkontable/src/table/inlineStart.d.ts +0 -16
- package/3rdparty/walkontable/src/table/inlineStart.js +0 -35
- package/3rdparty/walkontable/src/table/inlineStart.mjs +0 -20
- package/3rdparty/walkontable/src/table/master.d.mts +0 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.mts +0 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.ts +0 -75
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -122
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -112
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.mts +0 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.ts +0 -75
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -122
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -112
- package/3rdparty/walkontable/src/table/top.d.mts +0 -2
- package/3rdparty/walkontable/src/table/top.d.ts +0 -19
- package/3rdparty/walkontable/src/table/top.js +0 -38
- package/3rdparty/walkontable/src/table/top.mjs +0 -23
- package/3rdparty/walkontable/src/table/topInlineStartCorner.d.mts +0 -2
- package/3rdparty/walkontable/src/table/topInlineStartCorner.d.ts +0 -20
- package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +0 -24
- package/3rdparty/walkontable/src/table.d.mts +0 -2
- package/3rdparty/walkontable/src/table.d.ts +0 -741
- package/3rdparty/walkontable/src/table.js +0 -1120
- package/3rdparty/walkontable/src/table.mjs +0 -1105
- package/3rdparty/walkontable/src/utils/cellCoords.d.mts +0 -1
- package/3rdparty/walkontable/src/utils/cellCoords.js +0 -54
- package/3rdparty/walkontable/src/utils/cellCoords.mjs +0 -54
- package/3rdparty/walkontable/src/utils/column.d.mts +0 -2
- package/3rdparty/walkontable/src/utils/column.js +0 -75
- package/3rdparty/walkontable/src/utils/column.mjs +0 -70
- package/3rdparty/walkontable/src/utils/positionCache.d.mts +0 -1
- package/3rdparty/walkontable/src/utils/positionCache.d.ts +0 -91
- package/3rdparty/walkontable/src/utils/positionCache.js +0 -193
- package/3rdparty/walkontable/src/utils/positionCache.mjs +0 -194
- package/3rdparty/walkontable/src/utils/row.d.mts +0 -2
- package/3rdparty/walkontable/src/utils/row.js +0 -46
- package/3rdparty/walkontable/src/utils/row.mjs +0 -41
- package/3rdparty/walkontable/src/viewport.d.ts +0 -254
- package/3rdparty/walkontable/src/viewport.js +0 -533
- package/3rdparty/walkontable/src/viewport.mjs +0 -523
- /package/3rdparty/walkontable/src/{renderer → axisSizing/positionCache}/index.d.mts +0 -0
- /package/3rdparty/walkontable/src/{overlays.d.mts → overlay/overlays.d.mts} +0 -0
- /package/3rdparty/walkontable/src/overlay/{_base.d.mts → regions/_base.d.mts} +0 -0
- /package/3rdparty/walkontable/src/{stickyScrollStrategy.d.mts → overlay/strategies/stickyScrollStrategy.d.mts} +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/_base.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/_base.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/_base.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/cells.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/cells.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/colGroup.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.ts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.js +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.mjs +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rows.d.mts +0 -0
- /package/3rdparty/walkontable/src/{renderer → render}/rows.d.ts +0 -0
- /package/3rdparty/walkontable/src/{scroll.d.mts → scroll/scroll.d.mts} +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.mts +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.mts +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.js +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.mjs +0 -0
- /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.mts +0 -0
- /package/3rdparty/walkontable/src/{viewport.d.mts → viewport/viewport.d.mts} +0 -0
package/editorManager.js
CHANGED
|
@@ -11,12 +11,48 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _unicode = require("./helpers/unicode");
|
|
12
12
|
const _event = require("./helpers/dom/event");
|
|
13
13
|
const _registry = require("./editors/registry");
|
|
14
|
+
const _baseEditor = require("./editors/baseEditor");
|
|
14
15
|
const _eventManager = /*#__PURE__*/ _interop_require_default(require("./eventManager"));
|
|
15
16
|
function _check_private_redeclaration(obj, privateCollection) {
|
|
16
17
|
if (privateCollection.has(obj)) {
|
|
17
18
|
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
18
19
|
}
|
|
19
20
|
}
|
|
21
|
+
function _class_apply_descriptor_get(receiver, descriptor) {
|
|
22
|
+
if (descriptor.get) {
|
|
23
|
+
return descriptor.get.call(receiver);
|
|
24
|
+
}
|
|
25
|
+
return descriptor.value;
|
|
26
|
+
}
|
|
27
|
+
function _class_apply_descriptor_set(receiver, descriptor, value) {
|
|
28
|
+
if (descriptor.set) {
|
|
29
|
+
descriptor.set.call(receiver, value);
|
|
30
|
+
} else {
|
|
31
|
+
if (!descriptor.writable) {
|
|
32
|
+
throw new TypeError("attempted to set read only private field");
|
|
33
|
+
}
|
|
34
|
+
descriptor.value = value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function _class_extract_field_descriptor(receiver, privateMap, action) {
|
|
38
|
+
if (!privateMap.has(receiver)) {
|
|
39
|
+
throw new TypeError("attempted to " + action + " private field on non-instance");
|
|
40
|
+
}
|
|
41
|
+
return privateMap.get(receiver);
|
|
42
|
+
}
|
|
43
|
+
function _class_private_field_get(receiver, privateMap) {
|
|
44
|
+
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
|
|
45
|
+
return _class_apply_descriptor_get(receiver, descriptor);
|
|
46
|
+
}
|
|
47
|
+
function _class_private_field_init(obj, privateMap, value) {
|
|
48
|
+
_check_private_redeclaration(obj, privateMap);
|
|
49
|
+
privateMap.set(obj, value);
|
|
50
|
+
}
|
|
51
|
+
function _class_private_field_set(receiver, privateMap, value) {
|
|
52
|
+
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
|
|
53
|
+
_class_apply_descriptor_set(receiver, descriptor, value);
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
20
56
|
function _class_private_method_get(receiver, privateSet, fn) {
|
|
21
57
|
if (!privateSet.has(receiver)) {
|
|
22
58
|
throw new TypeError("attempted to get private field on non-instance");
|
|
@@ -33,6 +69,59 @@ function _interop_require_default(obj) {
|
|
|
33
69
|
};
|
|
34
70
|
}
|
|
35
71
|
var /**
|
|
72
|
+
* Whether a close of an editor stranded on a hidden cell is already pending, either scheduled on
|
|
73
|
+
* the next tick or waiting on an async validator to settle. Suppresses duplicate work when one
|
|
74
|
+
* page turn emits the cache-update hook more than once.
|
|
75
|
+
*
|
|
76
|
+
* @type {boolean}
|
|
77
|
+
*/ _hiddenCellCloseArmed = /*#__PURE__*/ new WeakMap(), /**
|
|
78
|
+
* Checks whether the cell at the given VISUAL coordinates is hidden by a hiding index map
|
|
79
|
+
* (Pagination's page map, `hiddenRows`, `hiddenColumns`).
|
|
80
|
+
*
|
|
81
|
+
* `IndexMapper#isHidden()` is keyed by PHYSICAL index, so both coordinates are converted. The two
|
|
82
|
+
* index spaces coincide only while no sorting, move or trimming map is active; under
|
|
83
|
+
* `columnSorting` a raw visual index reads a different row's hidden flag, which would both tear
|
|
84
|
+
* down an edit on a fully visible cell and miss the hidden cell this check exists for.
|
|
85
|
+
*
|
|
86
|
+
* @param {number} visualRow The visual row index.
|
|
87
|
+
* @param {number} visualColumn The visual column index.
|
|
88
|
+
* @returns {boolean}
|
|
89
|
+
*/ _isCellHidden = /*#__PURE__*/ new WeakSet(), /**
|
|
90
|
+
* Ends an edit when a HIDING index map removes the edited cell from the DOM while the editor is
|
|
91
|
+
* still open.
|
|
92
|
+
*
|
|
93
|
+
* Pagination turning the page, `hiddenRows` and `hiddenColumns` all register a `hiding` map,
|
|
94
|
+
* which drops the cell from the render while its visual index stays valid. The editor used to
|
|
95
|
+
* stay open, pinned to its original pixel position over whatever row slid into that spot, still
|
|
96
|
+
* bound to its original coordinates, and to commit only on a later click - to a row the user
|
|
97
|
+
* could no longer see.
|
|
98
|
+
*
|
|
99
|
+
* This lives in the manager rather than in an editor so that it covers every editor.
|
|
100
|
+
* `SelectEditor` and `MultiSelectEditor` extend `BaseEditor` directly, as does anything built
|
|
101
|
+
* through `editors/factory.ts`, so an editor-level hook reaches none of them.
|
|
102
|
+
*
|
|
103
|
+
* Test on `isHidden()`, NOT on whether the `TD` still resolves. A cell merely scrolled out of the
|
|
104
|
+
* rendered window has no `TD` either, and closing there would silently commit an in-progress edit
|
|
105
|
+
* on every scroll away. That is long-standing behavior in the other direction: the editor hides
|
|
106
|
+
* itself on scroll but keeps `state` at `EDITING`, so the edit survives until the user scrolls
|
|
107
|
+
* back. These hooks never fire on scroll, so that case cannot reach here at all.
|
|
108
|
+
*
|
|
109
|
+
* A TRIMMING map (Filters, `trimRows`) is deliberately out of scope. It collapses the visual
|
|
110
|
+
* index space instead of preserving it, so the edited coordinates silently rebind to a different
|
|
111
|
+
* row that is still rendered and `isHidden()` reads `false`. That defect predates this method.
|
|
112
|
+
*
|
|
113
|
+
* The edit is finished rather than cancelled, which for most editors means it is COMMITTED - the
|
|
114
|
+
* same outcome clicking the pager already produces, since that is an outside click and therefore
|
|
115
|
+
* deselects. The final say belongs to the editor: `DropdownEditor#finishEditing()` rewrites the
|
|
116
|
+
* flag to a discard when the active range no longer contains the edited cell, and
|
|
117
|
+
* `selection.commit()` runs before these hooks, so a dropdown can legitimately discard here.
|
|
118
|
+
* Where the commit is REJECTED - a validator returned `false` under `allowInvalid: false`, which
|
|
119
|
+
* re-selects the hidden cell and restores `EDITING` - the edit is reverted instead, because an
|
|
120
|
+
* editor surviving on a cell the user cannot see is the bug being fixed.
|
|
121
|
+
*
|
|
122
|
+
* @param {BaseEditor} [pendingEditor] The editor this call is retrying for. Supplied only by the
|
|
123
|
+
* async-validation retry below.
|
|
124
|
+
*/ _closeEditorWhenCellHidden = /*#__PURE__*/ new WeakSet(), /**
|
|
36
125
|
* OnAfterDocumentKeyDown callback.
|
|
37
126
|
*
|
|
38
127
|
* @param {KeyboardEvent} event The keyboard event object.
|
|
@@ -56,6 +145,11 @@ var /**
|
|
|
56
145
|
/**
|
|
57
146
|
* Prepare text input to be displayed at given grid cell.
|
|
58
147
|
*/ prepareEditor() {
|
|
148
|
+
// A new edit cycle always re-arms the hidden-cell guard. Without this the latch is
|
|
149
|
+
// instance-scoped, so one editor left stuck in `WAITING` with no `postAfterValidate` (a
|
|
150
|
+
// `beforeChange` that cancels the change, for instance) would disable the guard for the rest
|
|
151
|
+
// of the instance's life rather than for that one edit.
|
|
152
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
59
153
|
if (this.activeEditor && this.activeEditor.isWaiting()) {
|
|
60
154
|
this.closeEditor(false, false, (dataSaved)=>{
|
|
61
155
|
if (dataSaved) {
|
|
@@ -191,9 +285,7 @@ var /**
|
|
|
191
285
|
if (row === null || col === null) {
|
|
192
286
|
return false;
|
|
193
287
|
}
|
|
194
|
-
|
|
195
|
-
const isCellHidden = rowIndexMapper.isHidden(this.hot.toPhysicalRow(row)) || columnIndexMapper.isHidden(this.hot.toPhysicalColumn(col));
|
|
196
|
-
if (this.cellProperties.readOnly || !editorClass || isCellHidden) {
|
|
288
|
+
if (this.cellProperties.readOnly || !editorClass || _class_private_method_get(this, _isCellHidden, isCellHidden).call(this, row, col)) {
|
|
197
289
|
return false;
|
|
198
290
|
}
|
|
199
291
|
return true;
|
|
@@ -231,23 +323,80 @@ var /**
|
|
|
231
323
|
* @param {TableMeta} tableMeta The table meta instance.
|
|
232
324
|
* @param {Selection} selection The selection instance.
|
|
233
325
|
*/ constructor(hotInstance, tableMeta, selection){
|
|
326
|
+
_class_private_method_init(this, _isCellHidden);
|
|
327
|
+
_class_private_method_init(this, _closeEditorWhenCellHidden);
|
|
234
328
|
_class_private_method_init(this, _onAfterDocumentKeyDown);
|
|
235
329
|
_class_private_method_init(this, _onCellDblClick);
|
|
330
|
+
_class_private_field_init(this, _hiddenCellCloseArmed, {
|
|
331
|
+
writable: true,
|
|
332
|
+
value: void 0
|
|
333
|
+
});
|
|
236
334
|
/**
|
|
237
335
|
* Determines if EditorManager is destroyed.
|
|
238
336
|
*
|
|
239
337
|
* @private
|
|
240
338
|
* @type {boolean}
|
|
241
339
|
*/ this.destroyed = false;
|
|
340
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
242
341
|
this.hot = hotInstance;
|
|
243
342
|
this.tableMeta = tableMeta;
|
|
244
343
|
this.selection = selection;
|
|
245
344
|
this.eventManager = new _eventManager.default(hotInstance);
|
|
246
345
|
this.hot.addHook('afterDocumentKeyDown', (event)=>_class_private_method_get(this, _onAfterDocumentKeyDown, onAfterDocumentKeyDown).call(this, event));
|
|
247
346
|
this.hot.addHook('beforeCompositionStart', (event)=>_class_private_method_get(this, _onAfterDocumentKeyDown, onAfterDocumentKeyDown).call(this, event));
|
|
347
|
+
this.hot.addHook('afterRowSequenceCacheUpdate', ()=>_class_private_method_get(this, _closeEditorWhenCellHidden, closeEditorWhenCellHidden).call(this));
|
|
348
|
+
this.hot.addHook('afterColumnSequenceCacheUpdate', ()=>_class_private_method_get(this, _closeEditorWhenCellHidden, closeEditorWhenCellHidden).call(this));
|
|
248
349
|
this.hot.view._wt.update('onCellDblClick', (event, coords, _elem)=>_class_private_method_get(this, _onCellDblClick, onCellDblClick).call(this, event, coords));
|
|
249
350
|
}
|
|
250
351
|
}
|
|
352
|
+
function isCellHidden(visualRow, visualColumn) {
|
|
353
|
+
return this.hot.rowIndexMapper.isHidden(this.hot.toPhysicalRow(visualRow)) || this.hot.columnIndexMapper.isHidden(this.hot.toPhysicalColumn(visualColumn));
|
|
354
|
+
}
|
|
355
|
+
function closeEditorWhenCellHidden(pendingEditor) {
|
|
356
|
+
// Fall back to the captured reference: a rejected validation re-selects the hidden cell, which
|
|
357
|
+
// drives `prepareEditor()` -> `clearActiveEditor()`, so `this.activeEditor` can already be gone
|
|
358
|
+
// by the time a retry lands even though the editor object is still open.
|
|
359
|
+
const editor = this.activeEditor ?? pendingEditor;
|
|
360
|
+
if (!editor || editor.row === null || editor.col === null || !_class_private_method_get(this, _isCellHidden, isCellHidden).call(this, editor.row, editor.col)) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
// `finishEditing()` is a silent no-op while an async validator is in flight, which would leave
|
|
364
|
+
// the editor orphaned. Re-enter at the top once validation settles rather than assuming the
|
|
365
|
+
// wait is over: `postAfterValidate` is instance-wide and may fire for an unrelated cell.
|
|
366
|
+
if (editor.isWaiting()) {
|
|
367
|
+
if (!_class_private_field_get(this, _hiddenCellCloseArmed)) {
|
|
368
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, true);
|
|
369
|
+
this.hot.addHookOnce('postAfterValidate', ()=>{
|
|
370
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
371
|
+
this.hot._registerTimeout(()=>_class_private_method_get(this, _closeEditorWhenCellHidden, closeEditorWhenCellHidden).call(this, editor), 0);
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
if (editor.state !== _baseEditor.EDITOR_STATE.EDITING || _class_private_field_get(this, _hiddenCellCloseArmed)) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, true);
|
|
380
|
+
// Committing writes through `setDataAtCell`, which re-enters this manager (`closeEditor()`,
|
|
381
|
+
// `render()`, `prepareEditor()`). Defer so the write never lands inside the cache update that
|
|
382
|
+
// is still unwinding.
|
|
383
|
+
this.hot._registerTimeout(()=>{
|
|
384
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
385
|
+
if (this.destroyed || editor.state !== _baseEditor.EDITOR_STATE.EDITING || editor.row === null || editor.col === null || !_class_private_method_get(this, _isCellHidden, isCellHidden).call(this, editor.row, editor.col)) {
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
// Drive the captured editor directly rather than `closeEditor()`, for the same reason as
|
|
389
|
+
// the fallback above: `this.activeEditor` may already have been cleared.
|
|
390
|
+
editor.finishEditing(false, false, (dataSaved)=>{
|
|
391
|
+
if (dataSaved) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
// Nothing is lost by reverting - the rejected value never reached the dataset,
|
|
395
|
+
// `validateChanges()` splices it out first.
|
|
396
|
+
editor.finishEditing(true);
|
|
397
|
+
});
|
|
398
|
+
}, 0);
|
|
399
|
+
}
|
|
251
400
|
function onAfterDocumentKeyDown(event) {
|
|
252
401
|
const selection = this.hot.getSelectedRangeActive();
|
|
253
402
|
if (!this.hot.isListening() || !selection || selection.highlight.isHeader() || (0, _event.isImmediatePropagationStopped)(event)) {
|
package/editorManager.mjs
CHANGED
|
@@ -3,6 +3,41 @@ function _check_private_redeclaration(obj, privateCollection) {
|
|
|
3
3
|
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
+
function _class_apply_descriptor_get(receiver, descriptor) {
|
|
7
|
+
if (descriptor.get) {
|
|
8
|
+
return descriptor.get.call(receiver);
|
|
9
|
+
}
|
|
10
|
+
return descriptor.value;
|
|
11
|
+
}
|
|
12
|
+
function _class_apply_descriptor_set(receiver, descriptor, value) {
|
|
13
|
+
if (descriptor.set) {
|
|
14
|
+
descriptor.set.call(receiver, value);
|
|
15
|
+
} else {
|
|
16
|
+
if (!descriptor.writable) {
|
|
17
|
+
throw new TypeError("attempted to set read only private field");
|
|
18
|
+
}
|
|
19
|
+
descriptor.value = value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function _class_extract_field_descriptor(receiver, privateMap, action) {
|
|
23
|
+
if (!privateMap.has(receiver)) {
|
|
24
|
+
throw new TypeError("attempted to " + action + " private field on non-instance");
|
|
25
|
+
}
|
|
26
|
+
return privateMap.get(receiver);
|
|
27
|
+
}
|
|
28
|
+
function _class_private_field_get(receiver, privateMap) {
|
|
29
|
+
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
|
|
30
|
+
return _class_apply_descriptor_get(receiver, descriptor);
|
|
31
|
+
}
|
|
32
|
+
function _class_private_field_init(obj, privateMap, value) {
|
|
33
|
+
_check_private_redeclaration(obj, privateMap);
|
|
34
|
+
privateMap.set(obj, value);
|
|
35
|
+
}
|
|
36
|
+
function _class_private_field_set(receiver, privateMap, value) {
|
|
37
|
+
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
|
|
38
|
+
_class_apply_descriptor_set(receiver, descriptor, value);
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
6
41
|
function _class_private_method_get(receiver, privateSet, fn) {
|
|
7
42
|
if (!privateSet.has(receiver)) {
|
|
8
43
|
throw new TypeError("attempted to get private field on non-instance");
|
|
@@ -16,8 +51,62 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
16
51
|
import { isFunctionKey, isCtrlMetaKey } from './helpers/unicode.mjs';
|
|
17
52
|
import { isImmediatePropagationStopped } from './helpers/dom/event.mjs';
|
|
18
53
|
import { getEditorInstance } from './editors/registry.mjs';
|
|
54
|
+
import { EDITOR_STATE } from './editors/baseEditor/index.mjs';
|
|
19
55
|
import EventManager from './eventManager.mjs';
|
|
20
56
|
var /**
|
|
57
|
+
* Whether a close of an editor stranded on a hidden cell is already pending, either scheduled on
|
|
58
|
+
* the next tick or waiting on an async validator to settle. Suppresses duplicate work when one
|
|
59
|
+
* page turn emits the cache-update hook more than once.
|
|
60
|
+
*
|
|
61
|
+
* @type {boolean}
|
|
62
|
+
*/ _hiddenCellCloseArmed = /*#__PURE__*/ new WeakMap(), /**
|
|
63
|
+
* Checks whether the cell at the given VISUAL coordinates is hidden by a hiding index map
|
|
64
|
+
* (Pagination's page map, `hiddenRows`, `hiddenColumns`).
|
|
65
|
+
*
|
|
66
|
+
* `IndexMapper#isHidden()` is keyed by PHYSICAL index, so both coordinates are converted. The two
|
|
67
|
+
* index spaces coincide only while no sorting, move or trimming map is active; under
|
|
68
|
+
* `columnSorting` a raw visual index reads a different row's hidden flag, which would both tear
|
|
69
|
+
* down an edit on a fully visible cell and miss the hidden cell this check exists for.
|
|
70
|
+
*
|
|
71
|
+
* @param {number} visualRow The visual row index.
|
|
72
|
+
* @param {number} visualColumn The visual column index.
|
|
73
|
+
* @returns {boolean}
|
|
74
|
+
*/ _isCellHidden = /*#__PURE__*/ new WeakSet(), /**
|
|
75
|
+
* Ends an edit when a HIDING index map removes the edited cell from the DOM while the editor is
|
|
76
|
+
* still open.
|
|
77
|
+
*
|
|
78
|
+
* Pagination turning the page, `hiddenRows` and `hiddenColumns` all register a `hiding` map,
|
|
79
|
+
* which drops the cell from the render while its visual index stays valid. The editor used to
|
|
80
|
+
* stay open, pinned to its original pixel position over whatever row slid into that spot, still
|
|
81
|
+
* bound to its original coordinates, and to commit only on a later click - to a row the user
|
|
82
|
+
* could no longer see.
|
|
83
|
+
*
|
|
84
|
+
* This lives in the manager rather than in an editor so that it covers every editor.
|
|
85
|
+
* `SelectEditor` and `MultiSelectEditor` extend `BaseEditor` directly, as does anything built
|
|
86
|
+
* through `editors/factory.ts`, so an editor-level hook reaches none of them.
|
|
87
|
+
*
|
|
88
|
+
* Test on `isHidden()`, NOT on whether the `TD` still resolves. A cell merely scrolled out of the
|
|
89
|
+
* rendered window has no `TD` either, and closing there would silently commit an in-progress edit
|
|
90
|
+
* on every scroll away. That is long-standing behavior in the other direction: the editor hides
|
|
91
|
+
* itself on scroll but keeps `state` at `EDITING`, so the edit survives until the user scrolls
|
|
92
|
+
* back. These hooks never fire on scroll, so that case cannot reach here at all.
|
|
93
|
+
*
|
|
94
|
+
* A TRIMMING map (Filters, `trimRows`) is deliberately out of scope. It collapses the visual
|
|
95
|
+
* index space instead of preserving it, so the edited coordinates silently rebind to a different
|
|
96
|
+
* row that is still rendered and `isHidden()` reads `false`. That defect predates this method.
|
|
97
|
+
*
|
|
98
|
+
* The edit is finished rather than cancelled, which for most editors means it is COMMITTED - the
|
|
99
|
+
* same outcome clicking the pager already produces, since that is an outside click and therefore
|
|
100
|
+
* deselects. The final say belongs to the editor: `DropdownEditor#finishEditing()` rewrites the
|
|
101
|
+
* flag to a discard when the active range no longer contains the edited cell, and
|
|
102
|
+
* `selection.commit()` runs before these hooks, so a dropdown can legitimately discard here.
|
|
103
|
+
* Where the commit is REJECTED - a validator returned `false` under `allowInvalid: false`, which
|
|
104
|
+
* re-selects the hidden cell and restores `EDITING` - the edit is reverted instead, because an
|
|
105
|
+
* editor surviving on a cell the user cannot see is the bug being fixed.
|
|
106
|
+
*
|
|
107
|
+
* @param {BaseEditor} [pendingEditor] The editor this call is retrying for. Supplied only by the
|
|
108
|
+
* async-validation retry below.
|
|
109
|
+
*/ _closeEditorWhenCellHidden = /*#__PURE__*/ new WeakSet(), /**
|
|
21
110
|
* OnAfterDocumentKeyDown callback.
|
|
22
111
|
*
|
|
23
112
|
* @param {KeyboardEvent} event The keyboard event object.
|
|
@@ -41,6 +130,11 @@ var /**
|
|
|
41
130
|
/**
|
|
42
131
|
* Prepare text input to be displayed at given grid cell.
|
|
43
132
|
*/ prepareEditor() {
|
|
133
|
+
// A new edit cycle always re-arms the hidden-cell guard. Without this the latch is
|
|
134
|
+
// instance-scoped, so one editor left stuck in `WAITING` with no `postAfterValidate` (a
|
|
135
|
+
// `beforeChange` that cancels the change, for instance) would disable the guard for the rest
|
|
136
|
+
// of the instance's life rather than for that one edit.
|
|
137
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
44
138
|
if (this.activeEditor && this.activeEditor.isWaiting()) {
|
|
45
139
|
this.closeEditor(false, false, (dataSaved)=>{
|
|
46
140
|
if (dataSaved) {
|
|
@@ -176,9 +270,7 @@ var /**
|
|
|
176
270
|
if (row === null || col === null) {
|
|
177
271
|
return false;
|
|
178
272
|
}
|
|
179
|
-
|
|
180
|
-
const isCellHidden = rowIndexMapper.isHidden(this.hot.toPhysicalRow(row)) || columnIndexMapper.isHidden(this.hot.toPhysicalColumn(col));
|
|
181
|
-
if (this.cellProperties.readOnly || !editorClass || isCellHidden) {
|
|
273
|
+
if (this.cellProperties.readOnly || !editorClass || _class_private_method_get(this, _isCellHidden, isCellHidden).call(this, row, col)) {
|
|
182
274
|
return false;
|
|
183
275
|
}
|
|
184
276
|
return true;
|
|
@@ -216,23 +308,80 @@ var /**
|
|
|
216
308
|
* @param {TableMeta} tableMeta The table meta instance.
|
|
217
309
|
* @param {Selection} selection The selection instance.
|
|
218
310
|
*/ constructor(hotInstance, tableMeta, selection){
|
|
311
|
+
_class_private_method_init(this, _isCellHidden);
|
|
312
|
+
_class_private_method_init(this, _closeEditorWhenCellHidden);
|
|
219
313
|
_class_private_method_init(this, _onAfterDocumentKeyDown);
|
|
220
314
|
_class_private_method_init(this, _onCellDblClick);
|
|
315
|
+
_class_private_field_init(this, _hiddenCellCloseArmed, {
|
|
316
|
+
writable: true,
|
|
317
|
+
value: void 0
|
|
318
|
+
});
|
|
221
319
|
/**
|
|
222
320
|
* Determines if EditorManager is destroyed.
|
|
223
321
|
*
|
|
224
322
|
* @private
|
|
225
323
|
* @type {boolean}
|
|
226
324
|
*/ this.destroyed = false;
|
|
325
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
227
326
|
this.hot = hotInstance;
|
|
228
327
|
this.tableMeta = tableMeta;
|
|
229
328
|
this.selection = selection;
|
|
230
329
|
this.eventManager = new EventManager(hotInstance);
|
|
231
330
|
this.hot.addHook('afterDocumentKeyDown', (event)=>_class_private_method_get(this, _onAfterDocumentKeyDown, onAfterDocumentKeyDown).call(this, event));
|
|
232
331
|
this.hot.addHook('beforeCompositionStart', (event)=>_class_private_method_get(this, _onAfterDocumentKeyDown, onAfterDocumentKeyDown).call(this, event));
|
|
332
|
+
this.hot.addHook('afterRowSequenceCacheUpdate', ()=>_class_private_method_get(this, _closeEditorWhenCellHidden, closeEditorWhenCellHidden).call(this));
|
|
333
|
+
this.hot.addHook('afterColumnSequenceCacheUpdate', ()=>_class_private_method_get(this, _closeEditorWhenCellHidden, closeEditorWhenCellHidden).call(this));
|
|
233
334
|
this.hot.view._wt.update('onCellDblClick', (event, coords, _elem)=>_class_private_method_get(this, _onCellDblClick, onCellDblClick).call(this, event, coords));
|
|
234
335
|
}
|
|
235
336
|
}
|
|
337
|
+
function isCellHidden(visualRow, visualColumn) {
|
|
338
|
+
return this.hot.rowIndexMapper.isHidden(this.hot.toPhysicalRow(visualRow)) || this.hot.columnIndexMapper.isHidden(this.hot.toPhysicalColumn(visualColumn));
|
|
339
|
+
}
|
|
340
|
+
function closeEditorWhenCellHidden(pendingEditor) {
|
|
341
|
+
// Fall back to the captured reference: a rejected validation re-selects the hidden cell, which
|
|
342
|
+
// drives `prepareEditor()` -> `clearActiveEditor()`, so `this.activeEditor` can already be gone
|
|
343
|
+
// by the time a retry lands even though the editor object is still open.
|
|
344
|
+
const editor = this.activeEditor ?? pendingEditor;
|
|
345
|
+
if (!editor || editor.row === null || editor.col === null || !_class_private_method_get(this, _isCellHidden, isCellHidden).call(this, editor.row, editor.col)) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
// `finishEditing()` is a silent no-op while an async validator is in flight, which would leave
|
|
349
|
+
// the editor orphaned. Re-enter at the top once validation settles rather than assuming the
|
|
350
|
+
// wait is over: `postAfterValidate` is instance-wide and may fire for an unrelated cell.
|
|
351
|
+
if (editor.isWaiting()) {
|
|
352
|
+
if (!_class_private_field_get(this, _hiddenCellCloseArmed)) {
|
|
353
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, true);
|
|
354
|
+
this.hot.addHookOnce('postAfterValidate', ()=>{
|
|
355
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
356
|
+
this.hot._registerTimeout(()=>_class_private_method_get(this, _closeEditorWhenCellHidden, closeEditorWhenCellHidden).call(this, editor), 0);
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
if (editor.state !== EDITOR_STATE.EDITING || _class_private_field_get(this, _hiddenCellCloseArmed)) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, true);
|
|
365
|
+
// Committing writes through `setDataAtCell`, which re-enters this manager (`closeEditor()`,
|
|
366
|
+
// `render()`, `prepareEditor()`). Defer so the write never lands inside the cache update that
|
|
367
|
+
// is still unwinding.
|
|
368
|
+
this.hot._registerTimeout(()=>{
|
|
369
|
+
_class_private_field_set(this, _hiddenCellCloseArmed, false);
|
|
370
|
+
if (this.destroyed || editor.state !== EDITOR_STATE.EDITING || editor.row === null || editor.col === null || !_class_private_method_get(this, _isCellHidden, isCellHidden).call(this, editor.row, editor.col)) {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
// Drive the captured editor directly rather than `closeEditor()`, for the same reason as
|
|
374
|
+
// the fallback above: `this.activeEditor` may already have been cleared.
|
|
375
|
+
editor.finishEditing(false, false, (dataSaved)=>{
|
|
376
|
+
if (dataSaved) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
// Nothing is lost by reverting - the rejected value never reached the dataset,
|
|
380
|
+
// `validateChanges()` splices it out first.
|
|
381
|
+
editor.finishEditing(true);
|
|
382
|
+
});
|
|
383
|
+
}, 0);
|
|
384
|
+
}
|
|
236
385
|
function onAfterDocumentKeyDown(event) {
|
|
237
386
|
const selection = this.hot.getSelectedRangeActive();
|
|
238
387
|
if (!this.hot.isListening() || !selection || selection.highlight.isHeader() || isImmediatePropagationStopped(event)) {
|
|
@@ -168,6 +168,14 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
|
|
|
168
168
|
(0, _element.outerWidth)(this.TEXTAREA) - 2
|
|
169
169
|
] : undefined,
|
|
170
170
|
autoColumnSize: true,
|
|
171
|
+
// With `trimDropdown: false` the list column is sized from its content by
|
|
172
|
+
// AutoColumnSize, so short options produced a list narrower than the edited
|
|
173
|
+
// cell (#13180). Floor the column at the cell width: the option rows stay
|
|
174
|
+
// full-width click targets, and `getTargetEditorWidth()` (which reads
|
|
175
|
+
// `getColWidth(0)`) widens the outer container to match automatically.
|
|
176
|
+
modifyColWidth: trimDropdown ? undefined : (width)=>{
|
|
177
|
+
return Math.max(width ?? 0, (0, _element.outerWidth)(this.TEXTAREA) - 2);
|
|
178
|
+
},
|
|
171
179
|
renderer: (hotInstance, TD, row, col, prop, value, cellProperties)=>{
|
|
172
180
|
(0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, value, cellProperties);
|
|
173
181
|
const { filteringCaseSensitive, allowHtml } = this.cellProperties;
|
|
@@ -175,7 +183,21 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
|
|
|
175
183
|
const query = this.query;
|
|
176
184
|
const cellValue = (0, _mixed.stringify)(value);
|
|
177
185
|
if (allowHtml) {
|
|
178
|
-
|
|
186
|
+
// `allowHtml` is an explicit opt-in to raw HTML, disabled by default and warned about in
|
|
187
|
+
// its own documentation. PR #7368 turned sanitizing off for it and for the `html` cell
|
|
188
|
+
// type deliberately, and `autocompleteRenderer` still writes the cell that way, so the
|
|
189
|
+
// dropdown keeps matching it: `false` means raw, and silent about it.
|
|
190
|
+
//
|
|
191
|
+
// Going through `fastInnerHTML` rather than assigning `innerHTML` directly is what makes
|
|
192
|
+
// that a stated policy instead of an unguarded sink, and leaves one place to revisit if
|
|
193
|
+
// a configured `sanitizer` is ever made to cover this content.
|
|
194
|
+
//
|
|
195
|
+
// The scope argument is inert while the sanitizer is `false` - nothing reads an option
|
|
196
|
+
// and nothing warns. It is `this.hot.rootElement`, not the `hotInstance` argument,
|
|
197
|
+
// because this renderer runs inside `htEditor`, a separate Handsontable instance with
|
|
198
|
+
// its own settings. That matters the moment the `false` above is revisited: reading the
|
|
199
|
+
// option off the argument would silently consult the wrong grid.
|
|
200
|
+
(0, _element.fastInnerHTML)(TD, cellValue, false, 'html', this.hot.rootElement);
|
|
179
201
|
} else if (cellValue && query && query.length > 0) {
|
|
180
202
|
const indexOfMatch = filteringCaseSensitive === true ? cellValue.indexOf(query) : (0, _string.localeLowerCase)(cellValue, locale).indexOf((0, _string.localeLowerCase)(query, locale));
|
|
181
203
|
if (indexOfMatch !== -1) {
|
|
@@ -302,7 +324,13 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
|
|
|
302
324
|
let highlightIndex = null;
|
|
303
325
|
let choices = choicesList;
|
|
304
326
|
if (!sortByRelevanceSetting) {
|
|
305
|
-
|
|
327
|
+
// Sort a copy, never the passed-in array: `updateChoicesList` is public API and the caller's
|
|
328
|
+
// array (typically the `source` setting) must keep its original order. `Array#toSorted` would
|
|
329
|
+
// do this in one call but is outside the `browser-targets.js` baseline (Firefox 115+,
|
|
330
|
+
// Safari 16+), and swc lowers syntax only — it adds no instance-method polyfills.
|
|
331
|
+
choices = [
|
|
332
|
+
...choices
|
|
333
|
+
].sort((a, b)=>(0, _mixed.stringify)(a).localeCompare((0, _mixed.stringify)(b)));
|
|
306
334
|
}
|
|
307
335
|
const filteredChoiceIndexes = [];
|
|
308
336
|
const locale = this.cellProperties.locale;
|
|
@@ -365,18 +393,37 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
|
|
|
365
393
|
*/ limitDropdownIfNeeded(spaceAvailable) {
|
|
366
394
|
const dropdownHeight = this.getDropdownHeight();
|
|
367
395
|
if (dropdownHeight > spaceAvailable) {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
396
|
+
const rowHeight = this.htEditor.stylesHandler.getDefaultRowHeight() ?? 0;
|
|
397
|
+
if (rowHeight === 0) {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
// Show whole rows only, and stop one row short of the boundary: `Math.ceil(...) - 1` is the
|
|
401
|
+
// exact arithmetic of the do/while this replaced ("add rows until one crosses the free
|
|
402
|
+
// space, then step back a row"), so an exactly-fitting space still leaves its last row out.
|
|
403
|
+
// That margin is deliberately preserved - the list is trimmed because it overflows the
|
|
404
|
+
// workspace, and the rendered rows carry a border the raw row height does not.
|
|
405
|
+
//
|
|
406
|
+
// `Math.max(..., 1)` is the fix: without it the height collapsed to 0 whenever the free
|
|
407
|
+
// space was not taller than a single row, rendering the list as an invisible sliver that hid
|
|
408
|
+
// every choice - the flexbox-squeezed grids reported in #8872. The MultiSelect editor's
|
|
409
|
+
// dropdown clamps to one entry the same way (`dropdownController.updateDimensions()`).
|
|
410
|
+
//
|
|
411
|
+
// A caveat this cannot solve here: the grid's root element gets `overflow: clip` whenever a
|
|
412
|
+
// `height` is set, so when the free space is narrower than the forced row, that row is
|
|
413
|
+
// partly clipped by the grid's bottom edge - fully so when the space reaches 0. Making it
|
|
414
|
+
// readable in those extremes needs the dropdown to escape the clipping root (DEV-1656).
|
|
415
|
+
//
|
|
416
|
+
// No border compensation here, unlike `getTargetDropdownHeight()`'s `getTableHeight() + 1`.
|
|
417
|
+
// Adding it was measured and changes nothing a user sees: the clipping root, not the list's
|
|
418
|
+
// own budget, is what bounds the visible row, so the extra pixel only pushes the holder
|
|
419
|
+
// further past the clip (main 31->32px holder, 28px of option visible either way; classic
|
|
420
|
+
// 28->29 and 25; horizon 37->38 and 37).
|
|
421
|
+
const rowsThatFit = Math.max(Math.ceil(spaceAvailable / rowHeight) - 1, 1);
|
|
422
|
+
const height = rowsThatFit * rowHeight;
|
|
376
423
|
if (this.isFlippedVertically) {
|
|
377
424
|
this.htEditor.rootElement.style.top = `${parseInt(this.htEditor.rootElement.style.top, 10) + dropdownHeight - height}px`;
|
|
378
425
|
}
|
|
379
|
-
this.setDropdownHeight(
|
|
426
|
+
this.setDropdownHeight(height);
|
|
380
427
|
}
|
|
381
428
|
}
|
|
382
429
|
/**
|
|
@@ -51,7 +51,7 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
51
51
|
import { HandsontableEditor } from '../handsontableEditor/index.mjs';
|
|
52
52
|
import { pivot } from '../../helpers/array.mjs';
|
|
53
53
|
import { isKeyValueObject, isObject } from '../../helpers/object.mjs';
|
|
54
|
-
import { addClass, getCaretPosition, getFractionalScalingCompensation, getScrollbarWidth, getSelectionEndPosition, outerWidth, setAttribute, setCaretPosition } from '../../helpers/dom/element.mjs';
|
|
54
|
+
import { addClass, fastInnerHTML, getCaretPosition, getFractionalScalingCompensation, getScrollbarWidth, getSelectionEndPosition, outerWidth, setAttribute, setCaretPosition } from '../../helpers/dom/element.mjs';
|
|
55
55
|
import { isDefined, stringify } from '../../helpers/mixed.mjs';
|
|
56
56
|
import { stripTags, localeLowerCase } from '../../helpers/string.mjs';
|
|
57
57
|
import { KEY_CODES, isPrintableChar } from '../../helpers/unicode.mjs';
|
|
@@ -153,6 +153,14 @@ var /**
|
|
|
153
153
|
outerWidth(this.TEXTAREA) - 2
|
|
154
154
|
] : undefined,
|
|
155
155
|
autoColumnSize: true,
|
|
156
|
+
// With `trimDropdown: false` the list column is sized from its content by
|
|
157
|
+
// AutoColumnSize, so short options produced a list narrower than the edited
|
|
158
|
+
// cell (#13180). Floor the column at the cell width: the option rows stay
|
|
159
|
+
// full-width click targets, and `getTargetEditorWidth()` (which reads
|
|
160
|
+
// `getColWidth(0)`) widens the outer container to match automatically.
|
|
161
|
+
modifyColWidth: trimDropdown ? undefined : (width)=>{
|
|
162
|
+
return Math.max(width ?? 0, outerWidth(this.TEXTAREA) - 2);
|
|
163
|
+
},
|
|
156
164
|
renderer: (hotInstance, TD, row, col, prop, value, cellProperties)=>{
|
|
157
165
|
textRenderer(hotInstance, TD, row, col, prop, value, cellProperties);
|
|
158
166
|
const { filteringCaseSensitive, allowHtml } = this.cellProperties;
|
|
@@ -160,7 +168,21 @@ var /**
|
|
|
160
168
|
const query = this.query;
|
|
161
169
|
const cellValue = stringify(value);
|
|
162
170
|
if (allowHtml) {
|
|
163
|
-
|
|
171
|
+
// `allowHtml` is an explicit opt-in to raw HTML, disabled by default and warned about in
|
|
172
|
+
// its own documentation. PR #7368 turned sanitizing off for it and for the `html` cell
|
|
173
|
+
// type deliberately, and `autocompleteRenderer` still writes the cell that way, so the
|
|
174
|
+
// dropdown keeps matching it: `false` means raw, and silent about it.
|
|
175
|
+
//
|
|
176
|
+
// Going through `fastInnerHTML` rather than assigning `innerHTML` directly is what makes
|
|
177
|
+
// that a stated policy instead of an unguarded sink, and leaves one place to revisit if
|
|
178
|
+
// a configured `sanitizer` is ever made to cover this content.
|
|
179
|
+
//
|
|
180
|
+
// The scope argument is inert while the sanitizer is `false` - nothing reads an option
|
|
181
|
+
// and nothing warns. It is `this.hot.rootElement`, not the `hotInstance` argument,
|
|
182
|
+
// because this renderer runs inside `htEditor`, a separate Handsontable instance with
|
|
183
|
+
// its own settings. That matters the moment the `false` above is revisited: reading the
|
|
184
|
+
// option off the argument would silently consult the wrong grid.
|
|
185
|
+
fastInnerHTML(TD, cellValue, false, 'html', this.hot.rootElement);
|
|
164
186
|
} else if (cellValue && query && query.length > 0) {
|
|
165
187
|
const indexOfMatch = filteringCaseSensitive === true ? cellValue.indexOf(query) : localeLowerCase(cellValue, locale).indexOf(localeLowerCase(query, locale));
|
|
166
188
|
if (indexOfMatch !== -1) {
|
|
@@ -287,7 +309,13 @@ var /**
|
|
|
287
309
|
let highlightIndex = null;
|
|
288
310
|
let choices = choicesList;
|
|
289
311
|
if (!sortByRelevanceSetting) {
|
|
290
|
-
|
|
312
|
+
// Sort a copy, never the passed-in array: `updateChoicesList` is public API and the caller's
|
|
313
|
+
// array (typically the `source` setting) must keep its original order. `Array#toSorted` would
|
|
314
|
+
// do this in one call but is outside the `browser-targets.js` baseline (Firefox 115+,
|
|
315
|
+
// Safari 16+), and swc lowers syntax only — it adds no instance-method polyfills.
|
|
316
|
+
choices = [
|
|
317
|
+
...choices
|
|
318
|
+
].sort((a, b)=>stringify(a).localeCompare(stringify(b)));
|
|
291
319
|
}
|
|
292
320
|
const filteredChoiceIndexes = [];
|
|
293
321
|
const locale = this.cellProperties.locale;
|
|
@@ -350,18 +378,37 @@ var /**
|
|
|
350
378
|
*/ limitDropdownIfNeeded(spaceAvailable) {
|
|
351
379
|
const dropdownHeight = this.getDropdownHeight();
|
|
352
380
|
if (dropdownHeight > spaceAvailable) {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
381
|
+
const rowHeight = this.htEditor.stylesHandler.getDefaultRowHeight() ?? 0;
|
|
382
|
+
if (rowHeight === 0) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
// Show whole rows only, and stop one row short of the boundary: `Math.ceil(...) - 1` is the
|
|
386
|
+
// exact arithmetic of the do/while this replaced ("add rows until one crosses the free
|
|
387
|
+
// space, then step back a row"), so an exactly-fitting space still leaves its last row out.
|
|
388
|
+
// That margin is deliberately preserved - the list is trimmed because it overflows the
|
|
389
|
+
// workspace, and the rendered rows carry a border the raw row height does not.
|
|
390
|
+
//
|
|
391
|
+
// `Math.max(..., 1)` is the fix: without it the height collapsed to 0 whenever the free
|
|
392
|
+
// space was not taller than a single row, rendering the list as an invisible sliver that hid
|
|
393
|
+
// every choice - the flexbox-squeezed grids reported in #8872. The MultiSelect editor's
|
|
394
|
+
// dropdown clamps to one entry the same way (`dropdownController.updateDimensions()`).
|
|
395
|
+
//
|
|
396
|
+
// A caveat this cannot solve here: the grid's root element gets `overflow: clip` whenever a
|
|
397
|
+
// `height` is set, so when the free space is narrower than the forced row, that row is
|
|
398
|
+
// partly clipped by the grid's bottom edge - fully so when the space reaches 0. Making it
|
|
399
|
+
// readable in those extremes needs the dropdown to escape the clipping root (DEV-1656).
|
|
400
|
+
//
|
|
401
|
+
// No border compensation here, unlike `getTargetDropdownHeight()`'s `getTableHeight() + 1`.
|
|
402
|
+
// Adding it was measured and changes nothing a user sees: the clipping root, not the list's
|
|
403
|
+
// own budget, is what bounds the visible row, so the extra pixel only pushes the holder
|
|
404
|
+
// further past the clip (main 31->32px holder, 28px of option visible either way; classic
|
|
405
|
+
// 28->29 and 25; horizon 37->38 and 37).
|
|
406
|
+
const rowsThatFit = Math.max(Math.ceil(spaceAvailable / rowHeight) - 1, 1);
|
|
407
|
+
const height = rowsThatFit * rowHeight;
|
|
361
408
|
if (this.isFlippedVertically) {
|
|
362
409
|
this.htEditor.rootElement.style.top = `${parseInt(this.htEditor.rootElement.style.top, 10) + dropdownHeight - height}px`;
|
|
363
410
|
}
|
|
364
|
-
this.setDropdownHeight(
|
|
411
|
+
this.setDropdownHeight(height);
|
|
365
412
|
}
|
|
366
413
|
}
|
|
367
414
|
/**
|