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/utils/ghostTable.mjs
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
|
+
function _check_private_redeclaration(obj, privateCollection) {
|
|
2
|
+
if (privateCollection.has(obj)) {
|
|
3
|
+
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
function _class_private_method_get(receiver, privateSet, fn) {
|
|
7
|
+
if (!privateSet.has(receiver)) {
|
|
8
|
+
throw new TypeError("attempted to get private field on non-instance");
|
|
9
|
+
}
|
|
10
|
+
return fn;
|
|
11
|
+
}
|
|
12
|
+
function _class_private_method_init(obj, privateSet) {
|
|
13
|
+
_check_private_redeclaration(obj, privateSet);
|
|
14
|
+
privateSet.add(obj);
|
|
15
|
+
}
|
|
16
|
+
import { renderCell } from '../renderers/renderCell.mjs';
|
|
1
17
|
import { addClass } from './../helpers/dom/element.mjs';
|
|
2
18
|
import { arrayEach } from './../helpers/array.mjs';
|
|
3
19
|
import { throwWithCause } from '../helpers/errors.mjs';
|
|
20
|
+
var /**
|
|
21
|
+
* Renders one sampled cell into the TD that will be measured, through the same `renderCell`
|
|
22
|
+
* contract `TableView.cellRenderer` uses: run the cell's own renderer, run the base renderer
|
|
23
|
+
* when that renderer did not chain it itself, then reset the chaining flag. Calling only the
|
|
24
|
+
* cell renderer here would leave the measured TD without `cellProperties.className` and the
|
|
25
|
+
* other base-renderer classes, so AutoRowSize and AutoColumnSize would measure a cell styled
|
|
26
|
+
* differently from the one the user sees.
|
|
27
|
+
*
|
|
28
|
+
* The sampled value must be rendered verbatim — the AutoRowSize and AutoColumnSize samplers
|
|
29
|
+
* already run `formatCellValue` when building samples. Formatting here again would
|
|
30
|
+
* double-format: a date sample already formatted to `1/1/24` fails the ISO-only
|
|
31
|
+
* `parseToLocalDate` and renders as `#bad-value#`, inflating the measured width.
|
|
32
|
+
*
|
|
33
|
+
* @param {HTMLTableCellElement} td The cell element that will be measured.
|
|
34
|
+
* @param {number} row Visual row index.
|
|
35
|
+
* @param {number} column Visual column index.
|
|
36
|
+
* @param {*} value The sampled cell value, already formatted by the sampler.
|
|
37
|
+
* @param {object} cellProperties The cell meta object.
|
|
38
|
+
*/ _renderCell = /*#__PURE__*/ new WeakSet();
|
|
4
39
|
/**
|
|
5
40
|
* @class GhostTable
|
|
6
41
|
*/ class GhostTable {
|
|
@@ -180,13 +215,12 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
180
215
|
this.samples.forEach((sample)=>{
|
|
181
216
|
arrayEach(sample.strings, (string)=>{
|
|
182
217
|
const column = string.col;
|
|
183
|
-
const cellProperties = this.hot.
|
|
184
|
-
const renderer = this.hot.getCellRenderer(cellProperties);
|
|
218
|
+
const cellProperties = this.hot.getCellMetaTransient(row, column);
|
|
185
219
|
const td = rootDocument.createElement('td');
|
|
186
220
|
// Indicate that this element is created and supported by GhostTable. It can be useful to
|
|
187
221
|
// exclude rendering performance costly logic or exclude logic which doesn't work within a hidden table.
|
|
188
222
|
td.setAttribute('ghost-table', '1');
|
|
189
|
-
|
|
223
|
+
_class_private_method_get(this, _renderCell, renderCell1).call(this, td, row, column, string.value, cellProperties);
|
|
190
224
|
fragment.appendChild(td);
|
|
191
225
|
});
|
|
192
226
|
});
|
|
@@ -196,7 +230,10 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
196
230
|
* Creates DOM elements for headers and appends them to the THEAD element of the table.
|
|
197
231
|
*/ appendColumnHeadersRow() {
|
|
198
232
|
const rootDocument = this.hot.rootDocument;
|
|
199
|
-
|
|
233
|
+
// The headers must sit in a real `<tr>` (`table > thead > tr > th`), mirroring the grid's
|
|
234
|
+
// DOM — the cell styling is scoped with child combinators (#4363), so a `<th>` appended
|
|
235
|
+
// straight into `<thead>` would miss it and measure without padding/borders.
|
|
236
|
+
const headersRow = rootDocument.createElement('tr');
|
|
200
237
|
const columnHeaders = [];
|
|
201
238
|
if (this.hot.hasRowHeaders()) {
|
|
202
239
|
const th = rootDocument.createElement('th');
|
|
@@ -204,7 +241,7 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
204
241
|
-1,
|
|
205
242
|
th
|
|
206
243
|
]);
|
|
207
|
-
|
|
244
|
+
headersRow.appendChild(th);
|
|
208
245
|
}
|
|
209
246
|
this.samples.forEach((sample)=>{
|
|
210
247
|
arrayEach(sample.strings, (string)=>{
|
|
@@ -214,11 +251,11 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
214
251
|
column,
|
|
215
252
|
th
|
|
216
253
|
]);
|
|
217
|
-
|
|
254
|
+
headersRow.appendChild(th);
|
|
218
255
|
});
|
|
219
256
|
});
|
|
220
257
|
// Appending DOM elements for headers
|
|
221
|
-
this.table.tHead.appendChild(
|
|
258
|
+
this.table.tHead.appendChild(headersRow);
|
|
222
259
|
arrayEach(columnHeaders, (columnHeader)=>{
|
|
223
260
|
const [column, th] = columnHeader;
|
|
224
261
|
// Using source method for filling a header with value.
|
|
@@ -236,14 +273,13 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
236
273
|
this.samples.forEach((sample)=>{
|
|
237
274
|
arrayEach(sample.strings, (string)=>{
|
|
238
275
|
const row = string.row;
|
|
239
|
-
const cellProperties = this.hot.
|
|
240
|
-
const renderer = this.hot.getCellRenderer(cellProperties);
|
|
276
|
+
const cellProperties = this.hot.getCellMetaTransient(row, column);
|
|
241
277
|
const td = rootDocument.createElement('td');
|
|
242
278
|
const tr = rootDocument.createElement('tr');
|
|
243
279
|
// Indicate that this element is created and supported by GhostTable. It can be useful to
|
|
244
280
|
// exclude rendering performance costly logic or exclude logic which doesn't work within a hidden table.
|
|
245
281
|
td.setAttribute('ghost-table', '1');
|
|
246
|
-
|
|
282
|
+
_class_private_method_get(this, _renderCell, renderCell1).call(this, td, row, column, string.value, cellProperties);
|
|
247
283
|
tr.appendChild(td);
|
|
248
284
|
fragment.appendChild(tr);
|
|
249
285
|
});
|
|
@@ -291,7 +327,7 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
291
327
|
const col = this.hot.rootDocument.createElement('col');
|
|
292
328
|
let colspan = 0;
|
|
293
329
|
if (row >= 0 && column >= 0) {
|
|
294
|
-
colspan = Number(this.hot.
|
|
330
|
+
colspan = Number(this.hot.getCellMetaTransient(row, column).colspan);
|
|
295
331
|
}
|
|
296
332
|
let width = this.hot.getColWidth(column);
|
|
297
333
|
if (colspan > 1) {
|
|
@@ -376,6 +412,7 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
376
412
|
/**
|
|
377
413
|
* Initializes the ghost table utility with a reference to the Handsontable instance used for DOM context.
|
|
378
414
|
*/ constructor(hotInstance){
|
|
415
|
+
_class_private_method_init(this, _renderCell);
|
|
379
416
|
/**
|
|
380
417
|
* Handsontable instance.
|
|
381
418
|
*
|
|
@@ -423,4 +460,16 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
423
460
|
this.hot = hotInstance;
|
|
424
461
|
}
|
|
425
462
|
}
|
|
463
|
+
function renderCell1(td, row, column, value, cellProperties) {
|
|
464
|
+
const rendererArgs = [
|
|
465
|
+
this.hot,
|
|
466
|
+
td,
|
|
467
|
+
row,
|
|
468
|
+
column,
|
|
469
|
+
this.hot.colToProp(column),
|
|
470
|
+
value,
|
|
471
|
+
cellProperties
|
|
472
|
+
];
|
|
473
|
+
renderCell(this.hot.getCellRenderer(cellProperties), rendererArgs);
|
|
474
|
+
}
|
|
426
475
|
export default GhostTable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './badge.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { HotInstance } from '../../core/types';
|
|
2
|
+
import type { LicenseLifecycleFacet } from '../../helpers/mixed';
|
|
3
|
+
/**
|
|
4
|
+
* Builds the corner badge + popover and mounts it into the overlays layer. Only the trial states
|
|
5
|
+
* carry `POPOVER_CONTENT`; for every other state this is a no-op (no badge, no popover). The VISUAL glyph is pure CSS inside the corner header cell (gated by the
|
|
6
|
+
* `ht-license-badge-on` root class - see `_license-branding.scss`), so it can never overflow or
|
|
7
|
+
* drift out of the corner. The badge button itself is screen-reader-only: it carries the accessible
|
|
8
|
+
* name, the popover wiring, and the keyboard entry point. The soft-stop popovers additionally
|
|
9
|
+
* auto-open via the `is-open` class until dismissed with the close (X) button or Escape; dismissal
|
|
10
|
+
* stamps `is-dismissed` on the wrapper (which gates every CSS open rule, so the popover closes even
|
|
11
|
+
* while the pointer still hovers it) and re-arms once the pointer has left.
|
|
12
|
+
*
|
|
13
|
+
* Mounts once, for the instance lifetime (the license key is read only at init - see
|
|
14
|
+
* `initLicenseBranding`); its DOM lives in the overlays layer and its hooks are cleared with the
|
|
15
|
+
* grid on destroy.
|
|
16
|
+
*
|
|
17
|
+
* @param {HotInstance} hotInstance The root Handsontable instance.
|
|
18
|
+
* @param {LicenseLifecycleFacet} lifecycle The resolved lifecycle facet (state + days remaining).
|
|
19
|
+
* @returns {void}
|
|
20
|
+
*/
|
|
21
|
+
export declare function mountLicenseBadge(hotInstance: HotInstance, lifecycle: LicenseLifecycleFacet): void;
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "mountLicenseBadge", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return mountLicenseBadge;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
|
12
|
+
const _constants = require("../../3rdparty/walkontable/src/overlay/constants");
|
|
13
|
+
const _content = require("./content");
|
|
14
|
+
const BADGE_WRAPPER_CLASS = 'ht-license-badge-wrapper';
|
|
15
|
+
const BADGE_CLASS = 'ht-license-badge';
|
|
16
|
+
const BADGE_ON_CLASS = 'ht-license-badge-on';
|
|
17
|
+
const POPOVER_CLASS = 'ht-license-popover';
|
|
18
|
+
const POPOVER_OPEN_CLASS = 'is-open';
|
|
19
|
+
const POPOVER_DISMISSED_CLASS = 'is-dismissed';
|
|
20
|
+
const CORNER_HOVER_CLASS = 'is-corner-hover';
|
|
21
|
+
const CORNERLESS_CLASS = 'is-cornerless';
|
|
22
|
+
const CORNER_MARKER_CLASS = 'ht-license-badge-corner';
|
|
23
|
+
/**
|
|
24
|
+
* The corner-header clone's table and its header section, read through the TableView's public overlay
|
|
25
|
+
* accessor (`getOverlayByName`, the same entry the MergeCells plugin uses) rather than reaching into
|
|
26
|
+
* `_wt.wtOverlays`. This is THIS grid's own corner, never a nested grid's: a grid rendered inside a
|
|
27
|
+
* cell (the `handsontable` cell type) has its own corner clone earlier in document order, so a CSS
|
|
28
|
+
* selector on the root subtree could match the inner one and make the badge measure - and pop over -
|
|
29
|
+
* the wrong corner. The overlay reference sidesteps that entirely. `getOverlayByName` is typed as a
|
|
30
|
+
* broad union (any overlay or the master table), so it is narrowed to `Overlay` here - a corner name
|
|
31
|
+
* never resolves to the master instance. Returns `null` before the first render (the overlay/clone is
|
|
32
|
+
* not built yet) or when there is no corner.
|
|
33
|
+
*
|
|
34
|
+
* @param {HotInstance} hotInstance The root Handsontable instance.
|
|
35
|
+
* @returns {{ table: HTMLElement, thead: HTMLElement|null }|null}
|
|
36
|
+
*/ function getCornerClone(hotInstance) {
|
|
37
|
+
const cornerOverlay = hotInstance.view?.getOverlayByName(_constants.CLONE_TOP_INLINE_START_CORNER);
|
|
38
|
+
const wtTable = cornerOverlay?.clone?.wtTable;
|
|
39
|
+
if (!wtTable?.TABLE) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
table: wtTable.TABLE,
|
|
44
|
+
thead: wtTable.THEAD ?? null
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Wires the corner-hover detection for the click-through badge. The badge and its wrapper render with
|
|
49
|
+
* `pointer-events: none`, so the corner header cell underneath keeps its native behavior: the
|
|
50
|
+
* select-all click, the right-click context menu, drag selection, and touch. Hovering is detected by
|
|
51
|
+
* delegation instead: a `mouseover` listener on the root element stamps the `is-corner-hover` class on
|
|
52
|
+
* the wrapper whenever the pointer roams over the corner clone's HEADER area (the clone also holds
|
|
53
|
+
* frozen data cells, which must never pop the license tooltip), and the popover CSS opens on that
|
|
54
|
+
* class. Every roam also gives the dismissed soft-stop popover a chance to re-arm. The listeners
|
|
55
|
+
* die with the root element on destroy.
|
|
56
|
+
*
|
|
57
|
+
* @param {HotInstance} hotInstance The root Handsontable instance.
|
|
58
|
+
* @param {HTMLElement} wrapper The badge wrapper element.
|
|
59
|
+
* @param {Function} onPointerRoam Called after every pointer roam (used to re-arm the dismissed popover).
|
|
60
|
+
* @returns {void}
|
|
61
|
+
*/ function wireCornerHoverDetection(hotInstance, wrapper, onPointerRoam) {
|
|
62
|
+
const rootElement = hotInstance.rootElement;
|
|
63
|
+
if (!rootElement) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
rootElement.addEventListener('mouseover', (event)=>{
|
|
67
|
+
// Checked against the grid's OWN realm: for an iframe-hosted grid, the loading window's
|
|
68
|
+
// `Element` does not match nodes from the iframe's document, and the bare `instanceof Element`
|
|
69
|
+
// would silently kill hover detection there.
|
|
70
|
+
const target = event.target instanceof hotInstance.rootWindow.Element ? event.target : null;
|
|
71
|
+
// Only the corner HEADER area (the clone's `thead`, read from the overlay - THIS grid's, never a
|
|
72
|
+
// nested grid's) triggers the popover: the corner clone also holds frozen data cells
|
|
73
|
+
// (`fixedRowsTop` + `fixedColumnsStart`), and hovering the user's own data must never pop the
|
|
74
|
+
// license tooltip. Without a corner cell (`is-cornerless`) there is no badge to point at, so
|
|
75
|
+
// hover never triggers - only the auto-open popovers show there.
|
|
76
|
+
const cornerThead = getCornerClone(hotInstance)?.thead ?? null;
|
|
77
|
+
const overCornerHeader = !wrapper.classList.contains(CORNERLESS_CLASS) && target !== null && cornerThead !== null && cornerThead.contains(target);
|
|
78
|
+
wrapper.classList.toggle(CORNER_HOVER_CLASS, overCornerHeader);
|
|
79
|
+
onPointerRoam();
|
|
80
|
+
});
|
|
81
|
+
rootElement.addEventListener('mouseleave', ()=>{
|
|
82
|
+
wrapper.classList.remove(CORNER_HOVER_CLASS);
|
|
83
|
+
onPointerRoam();
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function mountLicenseBadge(hotInstance, lifecycle) {
|
|
87
|
+
const content = _content.POPOVER_CONTENT[lifecycle.state];
|
|
88
|
+
const host = hotInstance.rootOverlaysElement;
|
|
89
|
+
// The badge (and its popover) render ONLY for the trial states in `POPOVER_CONTENT`;
|
|
90
|
+
// every other state returns here with no badge - its console message and any bottom bar come from
|
|
91
|
+
// `initLicenseNotification` instead.
|
|
92
|
+
if (!content || !host) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const popoverId = `${hotInstance.guid}-license-popover`;
|
|
96
|
+
// The badge button is screen-reader-only (the visual glyph is pure CSS inside the corner cell).
|
|
97
|
+
// The copy is assigned through `textContent` below, never interpolated into the markup.
|
|
98
|
+
const { refs } = (0, _templateLiteralTag.html)`
|
|
99
|
+
<div data-ref="wrapper" class="${BADGE_WRAPPER_CLASS}">
|
|
100
|
+
<button data-ref="badge" type="button" class="${BADGE_CLASS}"
|
|
101
|
+
aria-label="Handsontable license information"></button>
|
|
102
|
+
<div data-ref="popover" id="${popoverId}" class="${POPOVER_CLASS}"
|
|
103
|
+
role="${content.dismissible ? 'dialog' : 'tooltip'}" aria-labelledby="${popoverId}-title">
|
|
104
|
+
<div class="${POPOVER_CLASS}__content">
|
|
105
|
+
<div data-ref="popoverTitle" id="${popoverId}-title" class="${POPOVER_CLASS}__title"></div>
|
|
106
|
+
<p data-ref="popoverBody" class="${POPOVER_CLASS}__body"></p>
|
|
107
|
+
<a data-ref="popoverLink" class="${POPOVER_CLASS}__link" target="_blank" rel="noopener noreferrer"></a>
|
|
108
|
+
</div>
|
|
109
|
+
${content.dismissible ? `<button data-ref="closeButton" type="button" class="${POPOVER_CLASS}__close" aria-label="Close"></button>` : ''}
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
`;
|
|
113
|
+
const wrapper = refs.wrapper;
|
|
114
|
+
const badge = refs.badge;
|
|
115
|
+
// Presence sync: `is-cornerless` on the wrapper re-anchors the popover to the table's
|
|
116
|
+
// inline-start edge (there is no corner cell for a tail to point at), `ht-license-badge-on`
|
|
117
|
+
// on the root element enables the glyph, and `ht-license-badge-corner` marks THIS grid's own
|
|
118
|
+
// corner clone table so the pure-CSS glyph lands only there. The marker is the CSS counterpart of
|
|
119
|
+
// the Walkontable-API corner lookup the rest of this file uses: the glyph selector keys off the
|
|
120
|
+
// marker, not the structural `.ht_clone_top_inline_start_corner` class, which also matches a nested
|
|
121
|
+
// grid's corner (the `handsontable` cell type) inside this root and would paint a stray badge there.
|
|
122
|
+
// Settings/overlay reads only, never layout - safe to run on every render.
|
|
123
|
+
const hasCornerCell = ()=>hotInstance.hasRowHeaders() && hotInstance.hasColHeaders();
|
|
124
|
+
const syncCornerPresence = ()=>{
|
|
125
|
+
const hasCorner = hasCornerCell();
|
|
126
|
+
wrapper.classList.toggle(CORNERLESS_CLASS, !hasCorner);
|
|
127
|
+
hotInstance.rootElement?.classList.toggle(BADGE_ON_CLASS, hasCorner);
|
|
128
|
+
getCornerClone(hotInstance)?.table.classList.toggle(CORNER_MARKER_CLASS, hasCorner);
|
|
129
|
+
};
|
|
130
|
+
syncCornerPresence();
|
|
131
|
+
hotInstance.addHook('afterRender', ()=>syncCornerPresence());
|
|
132
|
+
// Popover anchor: the popover offsets from the corner's inline-end edge, so it needs the corner
|
|
133
|
+
// WIDTH - the only measured value left (the glyph itself is CSS-anchored inside the corner cell
|
|
134
|
+
// and needs no measurement). Badge-only states return above and skip this entirely.
|
|
135
|
+
let lastAnchorWidth = 0;
|
|
136
|
+
const measurePopoverAnchor = ()=>{
|
|
137
|
+
const corner = getCornerClone(hotInstance);
|
|
138
|
+
if (!corner || !hasCornerCell()) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const width = corner.table.offsetWidth;
|
|
142
|
+
// 1px deadband: while horizontally scrolled, walkontable grows the corner clone by 1px (the
|
|
143
|
+
// doubled-border compensation), and copying that flutter into the anchor would nudge the open
|
|
144
|
+
// popover on every scroll. A real corner resize (theme switch, wider row numbers) is always
|
|
145
|
+
// bigger than 1px.
|
|
146
|
+
if (width > 0 && Math.abs(width - lastAnchorWidth) > 1) {
|
|
147
|
+
lastAnchorWidth = width;
|
|
148
|
+
wrapper.style.setProperty('--ht-license-badge-area-width', `${width}px`);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const win = hotInstance.rootWindow;
|
|
152
|
+
if (typeof win.ResizeObserver === 'function') {
|
|
153
|
+
// Measuring inside an `afterRender` hook would read `offsetWidth` right after the draw's DOM
|
|
154
|
+
// writes - a forced synchronous reflow on EVERY render. A ResizeObserver delivers its entries
|
|
155
|
+
// after layout, when the tree is clean, so the anchor stays fresh at zero per-render layout
|
|
156
|
+
// cost. The clone element persists for the instance lifetime, but the render hook re-attaches
|
|
157
|
+
// defensively when the element identity changed - a DOM query, no layout.
|
|
158
|
+
const observer = new win.ResizeObserver(()=>measurePopoverAnchor());
|
|
159
|
+
let observedTable = null;
|
|
160
|
+
const observeCorner = ()=>{
|
|
161
|
+
const table = getCornerClone(hotInstance)?.table ?? null;
|
|
162
|
+
if (table === observedTable) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
observer.disconnect();
|
|
166
|
+
observedTable = table;
|
|
167
|
+
if (table) {
|
|
168
|
+
observer.observe(table);
|
|
169
|
+
}
|
|
170
|
+
// No synchronous measure here: `observe()` delivers an initial entry after the next layout.
|
|
171
|
+
};
|
|
172
|
+
observeCorner();
|
|
173
|
+
hotInstance.addHook('afterRender', ()=>observeCorner());
|
|
174
|
+
hotInstance.addHook('afterDestroy', ()=>observer.disconnect());
|
|
175
|
+
} else {
|
|
176
|
+
// No ResizeObserver (jsdom): fall back to measuring per render.
|
|
177
|
+
//
|
|
178
|
+
// Dead in every shipped bundle - `ResizeObserver` predates the whole browser floor in
|
|
179
|
+
// `browser-targets.js` - so this branch exists as the jsdom test seam and nothing else. That makes
|
|
180
|
+
// the coverage split deliberate but lopsided: the Jest specs only ever walk THIS path (their
|
|
181
|
+
// `ResizeObserver` stub never fires), and the observer path above is pinned by the Playwright
|
|
182
|
+
// specs alone. Read a green Jest run accordingly - it says nothing about the shipped measurement.
|
|
183
|
+
measurePopoverAnchor();
|
|
184
|
+
hotInstance.addHook('afterRender', ()=>measurePopoverAnchor());
|
|
185
|
+
}
|
|
186
|
+
// The popover is a purely visual floating element - it is never focusable and never enters the Tab
|
|
187
|
+
// order (its links/close are mouse-only, and the same information is in the console and the bottom
|
|
188
|
+
// bar). So the badge is out of the Tab order too, and there is no focus scope, no shortcut, and no
|
|
189
|
+
// focus outline to manage.
|
|
190
|
+
badge.tabIndex = -1;
|
|
191
|
+
// A non-modal informational popover (already in the template): `dialog` for the dismissible
|
|
192
|
+
// soft-stop (it has a close button), `tooltip` for the hover-only variants.
|
|
193
|
+
const popover = refs.popover;
|
|
194
|
+
refs.popoverTitle.textContent = content.title;
|
|
195
|
+
refs.popoverBody.textContent = content.body(lifecycle);
|
|
196
|
+
refs.popoverLink.href = content.linkHref;
|
|
197
|
+
refs.popoverLink.textContent = content.linkText;
|
|
198
|
+
// Mouse-only: keep the popover out of the Tab order entirely (its link and close button stay
|
|
199
|
+
// clickable, and the same information is duplicated in the console and the bottom bar).
|
|
200
|
+
refs.popoverLink.tabIndex = -1;
|
|
201
|
+
// The wrapper is click-through, so `:hover` never matches on it directly; the popover re-enables
|
|
202
|
+
// pointer events for its links, and this flag tracks whether the pointer is inside it.
|
|
203
|
+
let pointerOverPopover = false;
|
|
204
|
+
const rearmIfIdle = ()=>{
|
|
205
|
+
const pointerInside = pointerOverPopover || wrapper.classList.contains(CORNER_HOVER_CLASS);
|
|
206
|
+
if (!pointerInside) {
|
|
207
|
+
wrapper.classList.remove(POPOVER_DISMISSED_CLASS);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
popover.addEventListener('mouseenter', ()=>{
|
|
211
|
+
pointerOverPopover = true;
|
|
212
|
+
});
|
|
213
|
+
popover.addEventListener('mouseleave', ()=>{
|
|
214
|
+
pointerOverPopover = false;
|
|
215
|
+
// Deliberately NOT re-arming here. Dismissing the popover hides it under the pointer, and the
|
|
216
|
+
// browser answers that with a `mouseleave` on the very element that was just dismissed - so
|
|
217
|
+
// re-arming from this handler would drop `is-dismissed` in the same tick, the hover rule would
|
|
218
|
+
// show the popover again, and the close button would do nothing while the pointer stayed put.
|
|
219
|
+
// Re-arming belongs to the pointer ROAM path below, which fires once the pointer actually moves
|
|
220
|
+
// somewhere else.
|
|
221
|
+
});
|
|
222
|
+
wireCornerHoverDetection(hotInstance, wrapper, rearmIfIdle);
|
|
223
|
+
if (content.dismissible) {
|
|
224
|
+
// Auto-open the soft-stop popover. Dismissal (the close button) stamps `is-dismissed` on the
|
|
225
|
+
// wrapper: removing `is-open` alone is not enough, because at click time the pointer still hovers
|
|
226
|
+
// the popover, so the hover CSS rule would keep it visible. The class gates every open rule and
|
|
227
|
+
// re-arms once the pointer leaves the popover and the corner, so a later corner hover reopens it
|
|
228
|
+
// as a plain tooltip.
|
|
229
|
+
popover.classList.add(POPOVER_OPEN_CLASS);
|
|
230
|
+
refs.closeButton.tabIndex = -1;
|
|
231
|
+
refs.closeButton.addEventListener('click', ()=>{
|
|
232
|
+
popover.classList.remove(POPOVER_OPEN_CLASS);
|
|
233
|
+
wrapper.classList.add(POPOVER_DISMISSED_CLASS);
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
host.appendChild(wrapper);
|
|
237
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { html } from '../../helpers/templateLiteralTag.mjs';
|
|
2
|
+
import { CLONE_TOP_INLINE_START_CORNER } from '../../3rdparty/walkontable/src/overlay/constants.mjs';
|
|
3
|
+
import { POPOVER_CONTENT } from './content.mjs';
|
|
4
|
+
const BADGE_WRAPPER_CLASS = 'ht-license-badge-wrapper';
|
|
5
|
+
const BADGE_CLASS = 'ht-license-badge';
|
|
6
|
+
const BADGE_ON_CLASS = 'ht-license-badge-on';
|
|
7
|
+
const POPOVER_CLASS = 'ht-license-popover';
|
|
8
|
+
const POPOVER_OPEN_CLASS = 'is-open';
|
|
9
|
+
const POPOVER_DISMISSED_CLASS = 'is-dismissed';
|
|
10
|
+
const CORNER_HOVER_CLASS = 'is-corner-hover';
|
|
11
|
+
const CORNERLESS_CLASS = 'is-cornerless';
|
|
12
|
+
const CORNER_MARKER_CLASS = 'ht-license-badge-corner';
|
|
13
|
+
/**
|
|
14
|
+
* The corner-header clone's table and its header section, read through the TableView's public overlay
|
|
15
|
+
* accessor (`getOverlayByName`, the same entry the MergeCells plugin uses) rather than reaching into
|
|
16
|
+
* `_wt.wtOverlays`. This is THIS grid's own corner, never a nested grid's: a grid rendered inside a
|
|
17
|
+
* cell (the `handsontable` cell type) has its own corner clone earlier in document order, so a CSS
|
|
18
|
+
* selector on the root subtree could match the inner one and make the badge measure - and pop over -
|
|
19
|
+
* the wrong corner. The overlay reference sidesteps that entirely. `getOverlayByName` is typed as a
|
|
20
|
+
* broad union (any overlay or the master table), so it is narrowed to `Overlay` here - a corner name
|
|
21
|
+
* never resolves to the master instance. Returns `null` before the first render (the overlay/clone is
|
|
22
|
+
* not built yet) or when there is no corner.
|
|
23
|
+
*
|
|
24
|
+
* @param {HotInstance} hotInstance The root Handsontable instance.
|
|
25
|
+
* @returns {{ table: HTMLElement, thead: HTMLElement|null }|null}
|
|
26
|
+
*/ function getCornerClone(hotInstance) {
|
|
27
|
+
const cornerOverlay = hotInstance.view?.getOverlayByName(CLONE_TOP_INLINE_START_CORNER);
|
|
28
|
+
const wtTable = cornerOverlay?.clone?.wtTable;
|
|
29
|
+
if (!wtTable?.TABLE) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
table: wtTable.TABLE,
|
|
34
|
+
thead: wtTable.THEAD ?? null
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Wires the corner-hover detection for the click-through badge. The badge and its wrapper render with
|
|
39
|
+
* `pointer-events: none`, so the corner header cell underneath keeps its native behavior: the
|
|
40
|
+
* select-all click, the right-click context menu, drag selection, and touch. Hovering is detected by
|
|
41
|
+
* delegation instead: a `mouseover` listener on the root element stamps the `is-corner-hover` class on
|
|
42
|
+
* the wrapper whenever the pointer roams over the corner clone's HEADER area (the clone also holds
|
|
43
|
+
* frozen data cells, which must never pop the license tooltip), and the popover CSS opens on that
|
|
44
|
+
* class. Every roam also gives the dismissed soft-stop popover a chance to re-arm. The listeners
|
|
45
|
+
* die with the root element on destroy.
|
|
46
|
+
*
|
|
47
|
+
* @param {HotInstance} hotInstance The root Handsontable instance.
|
|
48
|
+
* @param {HTMLElement} wrapper The badge wrapper element.
|
|
49
|
+
* @param {Function} onPointerRoam Called after every pointer roam (used to re-arm the dismissed popover).
|
|
50
|
+
* @returns {void}
|
|
51
|
+
*/ function wireCornerHoverDetection(hotInstance, wrapper, onPointerRoam) {
|
|
52
|
+
const rootElement = hotInstance.rootElement;
|
|
53
|
+
if (!rootElement) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
rootElement.addEventListener('mouseover', (event)=>{
|
|
57
|
+
// Checked against the grid's OWN realm: for an iframe-hosted grid, the loading window's
|
|
58
|
+
// `Element` does not match nodes from the iframe's document, and the bare `instanceof Element`
|
|
59
|
+
// would silently kill hover detection there.
|
|
60
|
+
const target = event.target instanceof hotInstance.rootWindow.Element ? event.target : null;
|
|
61
|
+
// Only the corner HEADER area (the clone's `thead`, read from the overlay - THIS grid's, never a
|
|
62
|
+
// nested grid's) triggers the popover: the corner clone also holds frozen data cells
|
|
63
|
+
// (`fixedRowsTop` + `fixedColumnsStart`), and hovering the user's own data must never pop the
|
|
64
|
+
// license tooltip. Without a corner cell (`is-cornerless`) there is no badge to point at, so
|
|
65
|
+
// hover never triggers - only the auto-open popovers show there.
|
|
66
|
+
const cornerThead = getCornerClone(hotInstance)?.thead ?? null;
|
|
67
|
+
const overCornerHeader = !wrapper.classList.contains(CORNERLESS_CLASS) && target !== null && cornerThead !== null && cornerThead.contains(target);
|
|
68
|
+
wrapper.classList.toggle(CORNER_HOVER_CLASS, overCornerHeader);
|
|
69
|
+
onPointerRoam();
|
|
70
|
+
});
|
|
71
|
+
rootElement.addEventListener('mouseleave', ()=>{
|
|
72
|
+
wrapper.classList.remove(CORNER_HOVER_CLASS);
|
|
73
|
+
onPointerRoam();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Builds the corner badge + popover and mounts it into the overlays layer. Only the trial states
|
|
78
|
+
* carry `POPOVER_CONTENT`; for every other state this is a no-op (no badge, no popover). The VISUAL glyph is pure CSS inside the corner header cell (gated by the
|
|
79
|
+
* `ht-license-badge-on` root class - see `_license-branding.scss`), so it can never overflow or
|
|
80
|
+
* drift out of the corner. The badge button itself is screen-reader-only: it carries the accessible
|
|
81
|
+
* name, the popover wiring, and the keyboard entry point. The soft-stop popovers additionally
|
|
82
|
+
* auto-open via the `is-open` class until dismissed with the close (X) button or Escape; dismissal
|
|
83
|
+
* stamps `is-dismissed` on the wrapper (which gates every CSS open rule, so the popover closes even
|
|
84
|
+
* while the pointer still hovers it) and re-arms once the pointer has left.
|
|
85
|
+
*
|
|
86
|
+
* Mounts once, for the instance lifetime (the license key is read only at init - see
|
|
87
|
+
* `initLicenseBranding`); its DOM lives in the overlays layer and its hooks are cleared with the
|
|
88
|
+
* grid on destroy.
|
|
89
|
+
*
|
|
90
|
+
* @param {HotInstance} hotInstance The root Handsontable instance.
|
|
91
|
+
* @param {LicenseLifecycleFacet} lifecycle The resolved lifecycle facet (state + days remaining).
|
|
92
|
+
* @returns {void}
|
|
93
|
+
*/ export function mountLicenseBadge(hotInstance, lifecycle) {
|
|
94
|
+
const content = POPOVER_CONTENT[lifecycle.state];
|
|
95
|
+
const host = hotInstance.rootOverlaysElement;
|
|
96
|
+
// The badge (and its popover) render ONLY for the trial states in `POPOVER_CONTENT`;
|
|
97
|
+
// every other state returns here with no badge - its console message and any bottom bar come from
|
|
98
|
+
// `initLicenseNotification` instead.
|
|
99
|
+
if (!content || !host) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const popoverId = `${hotInstance.guid}-license-popover`;
|
|
103
|
+
// The badge button is screen-reader-only (the visual glyph is pure CSS inside the corner cell).
|
|
104
|
+
// The copy is assigned through `textContent` below, never interpolated into the markup.
|
|
105
|
+
const { refs } = html`
|
|
106
|
+
<div data-ref="wrapper" class="${BADGE_WRAPPER_CLASS}">
|
|
107
|
+
<button data-ref="badge" type="button" class="${BADGE_CLASS}"
|
|
108
|
+
aria-label="Handsontable license information"></button>
|
|
109
|
+
<div data-ref="popover" id="${popoverId}" class="${POPOVER_CLASS}"
|
|
110
|
+
role="${content.dismissible ? 'dialog' : 'tooltip'}" aria-labelledby="${popoverId}-title">
|
|
111
|
+
<div class="${POPOVER_CLASS}__content">
|
|
112
|
+
<div data-ref="popoverTitle" id="${popoverId}-title" class="${POPOVER_CLASS}__title"></div>
|
|
113
|
+
<p data-ref="popoverBody" class="${POPOVER_CLASS}__body"></p>
|
|
114
|
+
<a data-ref="popoverLink" class="${POPOVER_CLASS}__link" target="_blank" rel="noopener noreferrer"></a>
|
|
115
|
+
</div>
|
|
116
|
+
${content.dismissible ? `<button data-ref="closeButton" type="button" class="${POPOVER_CLASS}__close" aria-label="Close"></button>` : ''}
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
`;
|
|
120
|
+
const wrapper = refs.wrapper;
|
|
121
|
+
const badge = refs.badge;
|
|
122
|
+
// Presence sync: `is-cornerless` on the wrapper re-anchors the popover to the table's
|
|
123
|
+
// inline-start edge (there is no corner cell for a tail to point at), `ht-license-badge-on`
|
|
124
|
+
// on the root element enables the glyph, and `ht-license-badge-corner` marks THIS grid's own
|
|
125
|
+
// corner clone table so the pure-CSS glyph lands only there. The marker is the CSS counterpart of
|
|
126
|
+
// the Walkontable-API corner lookup the rest of this file uses: the glyph selector keys off the
|
|
127
|
+
// marker, not the structural `.ht_clone_top_inline_start_corner` class, which also matches a nested
|
|
128
|
+
// grid's corner (the `handsontable` cell type) inside this root and would paint a stray badge there.
|
|
129
|
+
// Settings/overlay reads only, never layout - safe to run on every render.
|
|
130
|
+
const hasCornerCell = ()=>hotInstance.hasRowHeaders() && hotInstance.hasColHeaders();
|
|
131
|
+
const syncCornerPresence = ()=>{
|
|
132
|
+
const hasCorner = hasCornerCell();
|
|
133
|
+
wrapper.classList.toggle(CORNERLESS_CLASS, !hasCorner);
|
|
134
|
+
hotInstance.rootElement?.classList.toggle(BADGE_ON_CLASS, hasCorner);
|
|
135
|
+
getCornerClone(hotInstance)?.table.classList.toggle(CORNER_MARKER_CLASS, hasCorner);
|
|
136
|
+
};
|
|
137
|
+
syncCornerPresence();
|
|
138
|
+
hotInstance.addHook('afterRender', ()=>syncCornerPresence());
|
|
139
|
+
// Popover anchor: the popover offsets from the corner's inline-end edge, so it needs the corner
|
|
140
|
+
// WIDTH - the only measured value left (the glyph itself is CSS-anchored inside the corner cell
|
|
141
|
+
// and needs no measurement). Badge-only states return above and skip this entirely.
|
|
142
|
+
let lastAnchorWidth = 0;
|
|
143
|
+
const measurePopoverAnchor = ()=>{
|
|
144
|
+
const corner = getCornerClone(hotInstance);
|
|
145
|
+
if (!corner || !hasCornerCell()) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const width = corner.table.offsetWidth;
|
|
149
|
+
// 1px deadband: while horizontally scrolled, walkontable grows the corner clone by 1px (the
|
|
150
|
+
// doubled-border compensation), and copying that flutter into the anchor would nudge the open
|
|
151
|
+
// popover on every scroll. A real corner resize (theme switch, wider row numbers) is always
|
|
152
|
+
// bigger than 1px.
|
|
153
|
+
if (width > 0 && Math.abs(width - lastAnchorWidth) > 1) {
|
|
154
|
+
lastAnchorWidth = width;
|
|
155
|
+
wrapper.style.setProperty('--ht-license-badge-area-width', `${width}px`);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const win = hotInstance.rootWindow;
|
|
159
|
+
if (typeof win.ResizeObserver === 'function') {
|
|
160
|
+
// Measuring inside an `afterRender` hook would read `offsetWidth` right after the draw's DOM
|
|
161
|
+
// writes - a forced synchronous reflow on EVERY render. A ResizeObserver delivers its entries
|
|
162
|
+
// after layout, when the tree is clean, so the anchor stays fresh at zero per-render layout
|
|
163
|
+
// cost. The clone element persists for the instance lifetime, but the render hook re-attaches
|
|
164
|
+
// defensively when the element identity changed - a DOM query, no layout.
|
|
165
|
+
const observer = new win.ResizeObserver(()=>measurePopoverAnchor());
|
|
166
|
+
let observedTable = null;
|
|
167
|
+
const observeCorner = ()=>{
|
|
168
|
+
const table = getCornerClone(hotInstance)?.table ?? null;
|
|
169
|
+
if (table === observedTable) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
observer.disconnect();
|
|
173
|
+
observedTable = table;
|
|
174
|
+
if (table) {
|
|
175
|
+
observer.observe(table);
|
|
176
|
+
}
|
|
177
|
+
// No synchronous measure here: `observe()` delivers an initial entry after the next layout.
|
|
178
|
+
};
|
|
179
|
+
observeCorner();
|
|
180
|
+
hotInstance.addHook('afterRender', ()=>observeCorner());
|
|
181
|
+
hotInstance.addHook('afterDestroy', ()=>observer.disconnect());
|
|
182
|
+
} else {
|
|
183
|
+
// No ResizeObserver (jsdom): fall back to measuring per render.
|
|
184
|
+
//
|
|
185
|
+
// Dead in every shipped bundle - `ResizeObserver` predates the whole browser floor in
|
|
186
|
+
// `browser-targets.js` - so this branch exists as the jsdom test seam and nothing else. That makes
|
|
187
|
+
// the coverage split deliberate but lopsided: the Jest specs only ever walk THIS path (their
|
|
188
|
+
// `ResizeObserver` stub never fires), and the observer path above is pinned by the Playwright
|
|
189
|
+
// specs alone. Read a green Jest run accordingly - it says nothing about the shipped measurement.
|
|
190
|
+
measurePopoverAnchor();
|
|
191
|
+
hotInstance.addHook('afterRender', ()=>measurePopoverAnchor());
|
|
192
|
+
}
|
|
193
|
+
// The popover is a purely visual floating element - it is never focusable and never enters the Tab
|
|
194
|
+
// order (its links/close are mouse-only, and the same information is in the console and the bottom
|
|
195
|
+
// bar). So the badge is out of the Tab order too, and there is no focus scope, no shortcut, and no
|
|
196
|
+
// focus outline to manage.
|
|
197
|
+
badge.tabIndex = -1;
|
|
198
|
+
// A non-modal informational popover (already in the template): `dialog` for the dismissible
|
|
199
|
+
// soft-stop (it has a close button), `tooltip` for the hover-only variants.
|
|
200
|
+
const popover = refs.popover;
|
|
201
|
+
refs.popoverTitle.textContent = content.title;
|
|
202
|
+
refs.popoverBody.textContent = content.body(lifecycle);
|
|
203
|
+
refs.popoverLink.href = content.linkHref;
|
|
204
|
+
refs.popoverLink.textContent = content.linkText;
|
|
205
|
+
// Mouse-only: keep the popover out of the Tab order entirely (its link and close button stay
|
|
206
|
+
// clickable, and the same information is duplicated in the console and the bottom bar).
|
|
207
|
+
refs.popoverLink.tabIndex = -1;
|
|
208
|
+
// The wrapper is click-through, so `:hover` never matches on it directly; the popover re-enables
|
|
209
|
+
// pointer events for its links, and this flag tracks whether the pointer is inside it.
|
|
210
|
+
let pointerOverPopover = false;
|
|
211
|
+
const rearmIfIdle = ()=>{
|
|
212
|
+
const pointerInside = pointerOverPopover || wrapper.classList.contains(CORNER_HOVER_CLASS);
|
|
213
|
+
if (!pointerInside) {
|
|
214
|
+
wrapper.classList.remove(POPOVER_DISMISSED_CLASS);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
popover.addEventListener('mouseenter', ()=>{
|
|
218
|
+
pointerOverPopover = true;
|
|
219
|
+
});
|
|
220
|
+
popover.addEventListener('mouseleave', ()=>{
|
|
221
|
+
pointerOverPopover = false;
|
|
222
|
+
// Deliberately NOT re-arming here. Dismissing the popover hides it under the pointer, and the
|
|
223
|
+
// browser answers that with a `mouseleave` on the very element that was just dismissed - so
|
|
224
|
+
// re-arming from this handler would drop `is-dismissed` in the same tick, the hover rule would
|
|
225
|
+
// show the popover again, and the close button would do nothing while the pointer stayed put.
|
|
226
|
+
// Re-arming belongs to the pointer ROAM path below, which fires once the pointer actually moves
|
|
227
|
+
// somewhere else.
|
|
228
|
+
});
|
|
229
|
+
wireCornerHoverDetection(hotInstance, wrapper, rearmIfIdle);
|
|
230
|
+
if (content.dismissible) {
|
|
231
|
+
// Auto-open the soft-stop popover. Dismissal (the close button) stamps `is-dismissed` on the
|
|
232
|
+
// wrapper: removing `is-open` alone is not enough, because at click time the pointer still hovers
|
|
233
|
+
// the popover, so the hover CSS rule would keep it visible. The class gates every open rule and
|
|
234
|
+
// re-arms once the pointer leaves the popover and the corner, so a later corner hover reopens it
|
|
235
|
+
// as a plain tooltip.
|
|
236
|
+
popover.classList.add(POPOVER_OPEN_CLASS);
|
|
237
|
+
refs.closeButton.tabIndex = -1;
|
|
238
|
+
refs.closeButton.addEventListener('click', ()=>{
|
|
239
|
+
popover.classList.remove(POPOVER_OPEN_CLASS);
|
|
240
|
+
wrapper.classList.add(POPOVER_DISMISSED_CLASS);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
host.appendChild(wrapper);
|
|
244
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './content.js';
|