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
|
@@ -52,8 +52,9 @@ import { BaseEditor } from '../baseEditor/index.mjs';
|
|
|
52
52
|
import EventManager from '../../eventManager.mjs';
|
|
53
53
|
import { DropdownController } from './controllers/dropdownController.mjs';
|
|
54
54
|
import { SelectedItemsController } from './controllers/selectedItemsController.mjs';
|
|
55
|
-
import { addClass, setAttribute } from '../../helpers/dom/element.mjs';
|
|
55
|
+
import { addClass, getDeepActiveElement, setAttribute } from '../../helpers/dom/element.mjs';
|
|
56
56
|
import { isPrintableChar } from '../../helpers/unicode.mjs';
|
|
57
|
+
import { localeLowerCase } from '../../helpers/string.mjs';
|
|
57
58
|
import { A11Y_LABEL, A11Y_GROUP } from '../../helpers/a11y.mjs';
|
|
58
59
|
import { EDITOR_EDIT_GROUP } from '../../shortcuts/contexts/constants.mjs';
|
|
59
60
|
import { getValuesIntersection, parseStringifiedValue } from './utils/utils.mjs';
|
|
@@ -95,8 +96,8 @@ var /**
|
|
|
95
96
|
*/ _syncSelectedValues = /*#__PURE__*/ new WeakSet(), /**
|
|
96
97
|
* Reads a typed setting value from the cell properties by the given key.
|
|
97
98
|
*/ _getEditorSetting = /*#__PURE__*/ new WeakSet(), /**
|
|
98
|
-
* Handles the
|
|
99
|
-
*/
|
|
99
|
+
* Handles the `afterChange` hook to re-sync the dropdown when the renderer removes a chip from the edited cell.
|
|
100
|
+
*/ _onAfterChange = /*#__PURE__*/ new WeakSet();
|
|
100
101
|
/**
|
|
101
102
|
* Cell editor that lets users pick one or more values from a checkbox dropdown list.
|
|
102
103
|
* Saves on every check/uncheck rather than on editor close.
|
|
@@ -169,7 +170,7 @@ var /**
|
|
|
169
170
|
}
|
|
170
171
|
});
|
|
171
172
|
this.addHook('afterDestroy', ()=>this.destroy());
|
|
172
|
-
this.addHook('
|
|
173
|
+
this.addHook('afterChange', (changes, source)=>_class_private_method_get(this, _onAfterChange, onAfterChange).call(this, changes, source));
|
|
173
174
|
this.addHook('afterScrollHorizontally', ()=>this.refreshDimensions());
|
|
174
175
|
this.addHook('afterScrollVertically', ()=>this.refreshDimensions());
|
|
175
176
|
this.dropdownController.getInputController().addLocalHook('triggerFilter', (value)=>_class_private_method_get(this, _filterEntries, filterEntries).call(this, value));
|
|
@@ -248,7 +249,7 @@ var /**
|
|
|
248
249
|
/**
|
|
249
250
|
* Initializes the editor, creates DOM elements, and binds dropdown and hook events.
|
|
250
251
|
*/ constructor(hotInstance){
|
|
251
|
-
super(hotInstance), _class_private_method_init(this, _getSource), _class_private_method_init(this, _registerShortcuts), _class_private_method_init(this, _unregisterShortcuts), _class_private_method_init(this, _showEditableElement), _class_private_method_init(this, _hideEditableElement), _class_private_method_init(this, _blockNewSelections), _class_private_method_init(this, _unblockNewSelections), _class_private_method_init(this, _filterEntries), _class_private_method_init(this, _getAvailableSpace), _class_private_method_init(this, _saveCurrentSelection), _class_private_method_init(this, _addSelectedValue), _class_private_method_init(this, _removeSelectedValue), _class_private_method_init(this, _syncSelectedValues), _class_private_method_init(this, _getEditorSetting), _class_private_method_init(this,
|
|
252
|
+
super(hotInstance), _class_private_method_init(this, _getSource), _class_private_method_init(this, _registerShortcuts), _class_private_method_init(this, _unregisterShortcuts), _class_private_method_init(this, _showEditableElement), _class_private_method_init(this, _hideEditableElement), _class_private_method_init(this, _blockNewSelections), _class_private_method_init(this, _unblockNewSelections), _class_private_method_init(this, _filterEntries), _class_private_method_init(this, _getAvailableSpace), _class_private_method_init(this, _saveCurrentSelection), _class_private_method_init(this, _addSelectedValue), _class_private_method_init(this, _removeSelectedValue), _class_private_method_init(this, _syncSelectedValues), _class_private_method_init(this, _getEditorSetting), _class_private_method_init(this, _onAfterChange), _class_private_field_init(this, _selectedItems, {
|
|
252
253
|
writable: true,
|
|
253
254
|
value: void 0
|
|
254
255
|
}), _class_private_field_init(this, _editorContainer, {
|
|
@@ -290,7 +291,7 @@ function registerShortcuts() {
|
|
|
290
291
|
]
|
|
291
292
|
],
|
|
292
293
|
callback: ()=>{
|
|
293
|
-
if (this.hot.rootDocument
|
|
294
|
+
if (getDeepActiveElement(this.hot.rootDocument) === this.getInputElement()) {
|
|
294
295
|
this.dropdownController.focusFirstItem();
|
|
295
296
|
} else {
|
|
296
297
|
this.dropdownController.focusNextItem();
|
|
@@ -322,7 +323,7 @@ function registerShortcuts() {
|
|
|
322
323
|
],
|
|
323
324
|
runOnlyIf: ()=>!_class_private_method_get(this, _getEditorSetting, getEditorSetting).call(this, 'enterCommits'),
|
|
324
325
|
callback: (event)=>{
|
|
325
|
-
const activeElement = this.hot.rootDocument
|
|
326
|
+
const activeElement = getDeepActiveElement(this.hot.rootDocument);
|
|
326
327
|
if (activeElement instanceof HTMLInputElement && activeElement.type === 'checkbox') {
|
|
327
328
|
activeElement.checked = !activeElement.checked;
|
|
328
329
|
activeElement.dispatchEvent(new Event('change'));
|
|
@@ -366,6 +367,7 @@ function unblockNewSelections() {
|
|
|
366
367
|
this.dropdownController.enableCheckboxes();
|
|
367
368
|
}
|
|
368
369
|
function filterEntries(query, filterSelectedItems = _class_private_method_get(this, _getEditorSetting, getEditorSetting).call(this, 'filterSelectedItems') ?? true) {
|
|
370
|
+
const locale = this.cellProperties.locale;
|
|
369
371
|
const filteredItems = _class_private_method_get(this, _getSource, getSource).call(this).filter((item)=>{
|
|
370
372
|
const value = typeof item === 'object' && item !== null && 'value' in item ? item.value : item;
|
|
371
373
|
if (!filterSelectedItems && _class_private_field_get(this, _selectedItems).has(item)) {
|
|
@@ -374,7 +376,7 @@ function filterEntries(query, filterSelectedItems = _class_private_method_get(th
|
|
|
374
376
|
if (this.cellProperties.filteringCaseSensitive) {
|
|
375
377
|
return String(value).includes(query);
|
|
376
378
|
}
|
|
377
|
-
return String(value)
|
|
379
|
+
return localeLowerCase(String(value), locale).includes(localeLowerCase(query, locale));
|
|
378
380
|
});
|
|
379
381
|
this.dropdownController.fillDropdown(filteredItems, _class_private_field_get(this, _selectedItems).getItemsArray());
|
|
380
382
|
this.dropdownController.updateDimensions(_class_private_method_get(this, _getAvailableSpace, getAvailableSpace).call(this), true);
|
|
@@ -437,8 +439,8 @@ function syncSelectedValues(valuesArray) {
|
|
|
437
439
|
function getEditorSetting(settingKey) {
|
|
438
440
|
return this.cellProperties[settingKey];
|
|
439
441
|
}
|
|
440
|
-
function
|
|
441
|
-
if (this.isOpened() && source === `${EDITOR_TYPE}-renderer` &&
|
|
442
|
+
function onAfterChange(changes, source) {
|
|
443
|
+
if (this.isOpened() && source === `${EDITOR_TYPE}-renderer` && Array.isArray(changes) && changes.length > 0 && changes[0][0] === this.cellProperties.visualRow && this.hot.propToCol(changes[0][1]) === this.cellProperties.visualCol) {
|
|
442
444
|
_class_private_method_get(this, _syncSelectedValues, syncSelectedValues).call(this, changes[0][3]);
|
|
443
445
|
this.dropdownController.fillDropdown(_class_private_method_get(this, _getSource, getSource).call(this), _class_private_field_get(this, _selectedItems).getItemsArray());
|
|
444
446
|
this.dropdownController.focusItem(0);
|
|
@@ -20,6 +20,7 @@ const _baseEditor = require("../baseEditor");
|
|
|
20
20
|
const _element = require("../../helpers/dom/element");
|
|
21
21
|
const _object = require("../../helpers/object");
|
|
22
22
|
const _a11y = require("../../helpers/a11y");
|
|
23
|
+
const _sanitizer = require("../../utils/sanitizer");
|
|
23
24
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
|
24
25
|
const SHORTCUTS_GROUP = 'selectEditor';
|
|
25
26
|
const EDITOR_TYPE = 'select';
|
|
@@ -119,7 +120,7 @@ class SelectEditor extends _baseEditor.BaseEditor {
|
|
|
119
120
|
options = this.prepareOptions(selectOptions);
|
|
120
121
|
}
|
|
121
122
|
(0, _element.empty)(this.select);
|
|
122
|
-
const
|
|
123
|
+
const sanitizer = (0, _sanitizer.getSanitizer)(this.hot);
|
|
123
124
|
if (Array.isArray(options)) {
|
|
124
125
|
for(let i = 0; i < options.length; i++){
|
|
125
126
|
const optionElement = this.hot.rootDocument.createElement('OPTION');
|
|
@@ -2,6 +2,7 @@ import { BaseEditor, EDITOR_STATE } from '../baseEditor/index.mjs';
|
|
|
2
2
|
import { addClass, empty, fastInnerHTML, hasClass, removeClass } from '../../helpers/dom/element.mjs';
|
|
3
3
|
import { objectEach } from '../../helpers/object.mjs';
|
|
4
4
|
import { A11Y_HIDDEN } from '../../helpers/a11y.mjs';
|
|
5
|
+
import { getSanitizer } from '../../utils/sanitizer.mjs';
|
|
5
6
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
|
6
7
|
const SHORTCUTS_GROUP = 'selectEditor';
|
|
7
8
|
export const EDITOR_TYPE = 'select';
|
|
@@ -104,7 +105,7 @@ export const EDITOR_TYPE = 'select';
|
|
|
104
105
|
options = this.prepareOptions(selectOptions);
|
|
105
106
|
}
|
|
106
107
|
empty(this.select);
|
|
107
|
-
const
|
|
108
|
+
const sanitizer = getSanitizer(this.hot);
|
|
108
109
|
if (Array.isArray(options)) {
|
|
109
110
|
for(let i = 0; i < options.length; i++){
|
|
110
111
|
const optionElement = this.hot.rootDocument.createElement('OPTION');
|
|
@@ -68,7 +68,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
|
68
68
|
*/ close() {
|
|
69
69
|
this._opened = false;
|
|
70
70
|
this.autoResize.unObserve();
|
|
71
|
-
if ((0, _element.isInternalElement)(this.hot.rootDocument
|
|
71
|
+
if ((0, _element.isInternalElement)((0, _element.getDeepActiveElement)(this.hot.rootDocument), this.hot.rootElement)) {
|
|
72
72
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
|
73
73
|
}
|
|
74
74
|
this.hideEditableElement();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseEditor, EDITOR_STATE } from '../baseEditor/index.mjs';
|
|
2
2
|
import EventManager from '../../eventManager.mjs';
|
|
3
3
|
import { isEdge, isIOS } from '../../helpers/browser.mjs';
|
|
4
|
-
import { addClass, isInternalElement, setCaretPosition, hasClass, removeClass, setAttribute } from '../../helpers/dom/element.mjs';
|
|
4
|
+
import { addClass, getDeepActiveElement, isInternalElement, setCaretPosition, hasClass, removeClass, setAttribute } from '../../helpers/dom/element.mjs';
|
|
5
5
|
import { rangeEach } from '../../helpers/number.mjs';
|
|
6
6
|
import { createInputElementResizer } from '../../utils/autoResize.mjs';
|
|
7
7
|
import { isDefined } from '../../helpers/mixed.mjs';
|
|
@@ -48,7 +48,7 @@ export const EDITOR_TYPE = 'text';
|
|
|
48
48
|
*/ close() {
|
|
49
49
|
this._opened = false;
|
|
50
50
|
this.autoResize.unObserve();
|
|
51
|
-
if (isInternalElement(this.hot.rootDocument
|
|
51
|
+
if (isInternalElement(getDeepActiveElement(this.hot.rootDocument), this.hot.rootElement)) {
|
|
52
52
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
|
53
53
|
}
|
|
54
54
|
this.hideEditableElement();
|
package/eventManager.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
interface EventListenerEntry {
|
|
2
|
-
element: Element | Document | Window;
|
|
2
|
+
element: Element | Document | Window | ShadowRoot;
|
|
3
3
|
event: string;
|
|
4
4
|
callback: (event: Event) => void;
|
|
5
5
|
callbackProxy: (event: Event) => void;
|
|
@@ -33,7 +33,7 @@ declare class EventManager {
|
|
|
33
33
|
* @param {AddEventListenerOptions|boolean} [options] Listener options if object or useCapture if boolean.
|
|
34
34
|
* @returns {Function} Returns function which you can easily call to remove that event.
|
|
35
35
|
*/
|
|
36
|
-
addEventListener<E extends Event = Event>(element: Element | Document | Window, eventName: string, callback: (event: E) => void, options?: boolean | AddEventListenerOptions): () => void;
|
|
36
|
+
addEventListener<E extends Event = Event>(element: Element | Document | Window | ShadowRoot, eventName: string, callback: (event: E) => void, options?: boolean | AddEventListenerOptions): () => void;
|
|
37
37
|
/**
|
|
38
38
|
* Remove the event listener previously registered.
|
|
39
39
|
*
|
|
@@ -42,7 +42,7 @@ declare class EventManager {
|
|
|
42
42
|
* @param {Function} callback Function to remove from the event target. It must be the same as during registration listener.
|
|
43
43
|
* @param {boolean} [onlyOwnEvents] Whether whould remove only events registered using this instance of EventManager.
|
|
44
44
|
*/
|
|
45
|
-
removeEventListener(element: Element | Document | Window, eventName: string, callback: (event: Event) => void, onlyOwnEvents?: boolean): void;
|
|
45
|
+
removeEventListener(element: Element | Document | Window | ShadowRoot, eventName: string, callback: (event: Event) => void, onlyOwnEvents?: boolean): void;
|
|
46
46
|
/**
|
|
47
47
|
* Clear all previously registered events.
|
|
48
48
|
*
|
package/focusManager/grid.d.ts
CHANGED
|
@@ -18,6 +18,34 @@ export declare class FocusGridManager {
|
|
|
18
18
|
* Registers hooks to track selection changes and apply focus logic based on the configured focus mode.
|
|
19
19
|
*/
|
|
20
20
|
init(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Checks whether the browser focus currently sits inside the grid's root wrapper or portal.
|
|
23
|
+
* The state comes from focus events observed within the grid's own DOM tree, so it stays
|
|
24
|
+
* correct in environments where `document.activeElement` cannot be resolved through foreign
|
|
25
|
+
* shadow boundaries.
|
|
26
|
+
*
|
|
27
|
+
* @returns {boolean}
|
|
28
|
+
*/
|
|
29
|
+
hasBrowserFocus(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Checks whether the given focused element proves that the browser focus left the grid.
|
|
32
|
+
* Focus counts as foreign when the element is focusable, holds the browser focus, and is
|
|
33
|
+
* neither a part of the grid or its portal, nor one of the shadow hosts the grid is rendered
|
|
34
|
+
* within, nor the document body (a click on a non-focusable area keeps the focus where it
|
|
35
|
+
* was). Sandboxed hosts (e.g. Salesforce Lightning Web Security) hide the real focused
|
|
36
|
+
* element behind the host chain, so a focused ancestor host cannot prove the focus left the
|
|
37
|
+
* grid - only an unrelated element can.
|
|
38
|
+
*
|
|
39
|
+
* The check mirrors the scope-deactivation rule in the focus scope manager (`scopeManager`
|
|
40
|
+
* unlistens when a focus event lands outside every scope). Sandboxed hosts retarget the
|
|
41
|
+
* window-level focus events that rule depends on, so the mouseup path re-applies the same
|
|
42
|
+
* rule from the deepest reachable focused element. On a regular page both mechanisms agree -
|
|
43
|
+
* this adds no behavior that the scope manager does not already provide there.
|
|
44
|
+
*
|
|
45
|
+
* @param {HTMLElement | null} element The deepest reachable focused element.
|
|
46
|
+
* @returns {boolean}
|
|
47
|
+
*/
|
|
48
|
+
isForeignFocusTarget(element: HTMLElement | null): boolean;
|
|
21
49
|
/**
|
|
22
50
|
* Get the current focus mode.
|
|
23
51
|
*
|
package/focusManager/grid.js
CHANGED
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "FocusGridManager", {
|
|
|
8
8
|
return FocusGridManager;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _eventManager = /*#__PURE__*/ _interop_require_default(require("../eventManager"));
|
|
11
12
|
const _console = require("../helpers/console");
|
|
12
13
|
const _element = require("../helpers/dom/element");
|
|
13
14
|
const _function = require("../helpers/function");
|
|
@@ -61,6 +62,11 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
61
62
|
_check_private_redeclaration(obj, privateSet);
|
|
62
63
|
privateSet.add(obj);
|
|
63
64
|
}
|
|
65
|
+
function _interop_require_default(obj) {
|
|
66
|
+
return obj && obj.__esModule ? obj : {
|
|
67
|
+
default: obj
|
|
68
|
+
};
|
|
69
|
+
}
|
|
64
70
|
/**
|
|
65
71
|
* Possible focus modes.
|
|
66
72
|
* - CELL - The browser's focus stays on the lastly selected cell element.
|
|
@@ -75,6 +81,17 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
75
81
|
var /**
|
|
76
82
|
* The Handsontable instance.
|
|
77
83
|
*/ _hot = /*#__PURE__*/ new WeakMap(), /**
|
|
84
|
+
* Event manager used for the DOM listeners that track the browser focus within the grid.
|
|
85
|
+
*
|
|
86
|
+
* @type {EventManager}
|
|
87
|
+
*/ _eventManager1 = /*#__PURE__*/ new WeakMap(), /**
|
|
88
|
+
* Tracks whether the browser focus currently sits inside the grid's root wrapper or portal.
|
|
89
|
+
* Maintained by `focusin`/`focusout` listeners bound within the grid's own DOM tree, where
|
|
90
|
+
* sandboxed hosts (e.g. Salesforce Lightning Web Security) still report true event targets -
|
|
91
|
+
* unlike `document.activeElement`, which such hosts collapse to the outermost shadow host.
|
|
92
|
+
*
|
|
93
|
+
* @type {boolean}
|
|
94
|
+
*/ _hasBrowserFocus = /*#__PURE__*/ new WeakMap(), /**
|
|
78
95
|
* The currently enabled focus mode.
|
|
79
96
|
* Can be either:
|
|
80
97
|
*
|
|
@@ -136,6 +153,60 @@ class FocusGridManager {
|
|
|
136
153
|
_class_private_field_get(this, _hot).addHook('afterSelectionFocusSet', (...args)=>_class_private_method_get(this, _onAfterSelectionChange, onAfterSelectionChange).call(this));
|
|
137
154
|
_class_private_field_get(this, _hot).addHook('afterSelectionEnd', (...args)=>_class_private_method_get(this, _focusEditorElement, focusEditorElement).call(this));
|
|
138
155
|
_class_private_field_get(this, _hot).addHook('afterRender', (...args)=>_class_private_method_get(this, _onAfterRender, onAfterRender).call(this));
|
|
156
|
+
_class_private_field_set(this, _eventManager1, new _eventManager.default(_class_private_field_get(this, _hot)));
|
|
157
|
+
const focusRootElements = [
|
|
158
|
+
_class_private_field_get(this, _hot).rootWrapperElement ?? _class_private_field_get(this, _hot).rootElement,
|
|
159
|
+
_class_private_field_get(this, _hot).rootPortalElement
|
|
160
|
+
].filter((element)=>(0, _element.isHTMLElement)(element));
|
|
161
|
+
focusRootElements.forEach((focusRootElement)=>{
|
|
162
|
+
_class_private_field_get(this, _eventManager1).addEventListener(focusRootElement, 'focusin', ()=>{
|
|
163
|
+
_class_private_field_set(this, _hasBrowserFocus, true);
|
|
164
|
+
});
|
|
165
|
+
_class_private_field_get(this, _eventManager1).addEventListener(focusRootElement, 'focusout', (event)=>{
|
|
166
|
+
const relatedTarget = event.relatedTarget;
|
|
167
|
+
_class_private_field_set(this, _hasBrowserFocus, (0, _element.isHTMLElement)(relatedTarget) && focusRootElements.some((focusRoot)=>focusRoot.contains(relatedTarget)));
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Checks whether the browser focus currently sits inside the grid's root wrapper or portal.
|
|
173
|
+
* The state comes from focus events observed within the grid's own DOM tree, so it stays
|
|
174
|
+
* correct in environments where `document.activeElement` cannot be resolved through foreign
|
|
175
|
+
* shadow boundaries.
|
|
176
|
+
*
|
|
177
|
+
* @returns {boolean}
|
|
178
|
+
*/ hasBrowserFocus() {
|
|
179
|
+
return _class_private_field_get(this, _hasBrowserFocus);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Checks whether the given focused element proves that the browser focus left the grid.
|
|
183
|
+
* Focus counts as foreign when the element is focusable, holds the browser focus, and is
|
|
184
|
+
* neither a part of the grid or its portal, nor one of the shadow hosts the grid is rendered
|
|
185
|
+
* within, nor the document body (a click on a non-focusable area keeps the focus where it
|
|
186
|
+
* was). Sandboxed hosts (e.g. Salesforce Lightning Web Security) hide the real focused
|
|
187
|
+
* element behind the host chain, so a focused ancestor host cannot prove the focus left the
|
|
188
|
+
* grid - only an unrelated element can.
|
|
189
|
+
*
|
|
190
|
+
* The check mirrors the scope-deactivation rule in the focus scope manager (`scopeManager`
|
|
191
|
+
* unlistens when a focus event lands outside every scope). Sandboxed hosts retarget the
|
|
192
|
+
* window-level focus events that rule depends on, so the mouseup path re-applies the same
|
|
193
|
+
* rule from the deepest reachable focused element. On a regular page both mechanisms agree -
|
|
194
|
+
* this adds no behavior that the scope manager does not already provide there.
|
|
195
|
+
*
|
|
196
|
+
* @param {HTMLElement | null} element The deepest reachable focused element.
|
|
197
|
+
* @returns {boolean}
|
|
198
|
+
*/ isForeignFocusTarget(element) {
|
|
199
|
+
const { rootElement, rootWrapperElement, rootPortalElement, rootDocument } = _class_private_field_get(this, _hot);
|
|
200
|
+
// Grid-owned UI hosted in the root wrapper's layout slots or overlay layer (e.g. a
|
|
201
|
+
// plugin's formula bar) lives outside `rootElement`, so `isInternalElement` cannot
|
|
202
|
+
// recognize it. Elements inside `rootElement` are deliberately excluded here: a
|
|
203
|
+
// nested grid's focus must keep counting as foreign for this instance, exactly as
|
|
204
|
+
// `isInternalElement` decides.
|
|
205
|
+
const isWrapperHostedUi = !!rootWrapperElement && rootWrapperElement.contains(element) && !rootElement.contains(element);
|
|
206
|
+
if (element === null || element === rootDocument.body || element === rootDocument.documentElement || (0, _element.isInternalElement)(element, rootElement) || isWrapperHostedUi || rootPortalElement && rootPortalElement.contains(element)) {
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
return !(0, _element.getShadowHostChain)(rootElement).includes(element);
|
|
139
210
|
}
|
|
140
211
|
/**
|
|
141
212
|
* Get the current focus mode.
|
|
@@ -279,6 +350,14 @@ class FocusGridManager {
|
|
|
279
350
|
writable: true,
|
|
280
351
|
value: void 0
|
|
281
352
|
});
|
|
353
|
+
_class_private_field_init(this, _eventManager1, {
|
|
354
|
+
writable: true,
|
|
355
|
+
value: void 0
|
|
356
|
+
});
|
|
357
|
+
_class_private_field_init(this, _hasBrowserFocus, {
|
|
358
|
+
writable: true,
|
|
359
|
+
value: void 0
|
|
360
|
+
});
|
|
282
361
|
_class_private_field_init(this, _focusMode, {
|
|
283
362
|
writable: true,
|
|
284
363
|
value: void 0
|
|
@@ -303,6 +382,8 @@ class FocusGridManager {
|
|
|
303
382
|
writable: true,
|
|
304
383
|
value: void 0
|
|
305
384
|
});
|
|
385
|
+
_class_private_field_set(this, _eventManager1, null);
|
|
386
|
+
_class_private_field_set(this, _hasBrowserFocus, false);
|
|
306
387
|
_class_private_field_set(this, _refocusDelay, 1);
|
|
307
388
|
_class_private_field_set(this, _refocusElementGetter, null);
|
|
308
389
|
_class_private_field_set(this, _debouncedSelect, new Map());
|
|
@@ -337,7 +418,8 @@ function focusCell() {
|
|
|
337
418
|
// have run. Reading `this.#isSuspended` inside the callback would miss the suspend window.
|
|
338
419
|
const suspended = _class_private_field_get(this, _isSuspended);
|
|
339
420
|
_class_private_method_get(this, _getSelectedCell, getSelectedCell).call(this, (selectedCell)=>{
|
|
340
|
-
const
|
|
421
|
+
const deepActiveElement = (0, _element.getDeepActiveElement)(_class_private_field_get(this, _hot).rootDocument);
|
|
422
|
+
const activeElement = (0, _element.isHTMLElement)(deepActiveElement) ? deepActiveElement : null;
|
|
341
423
|
// When focus management is suspended and an external focusable element (outside Handsontable)
|
|
342
424
|
// currently owns the browser focus, keep it - do not blur and do not move focus to the cell.
|
|
343
425
|
// This preserves the focus of inputs that live next to the grid when a programmatic selection
|
|
@@ -362,7 +444,8 @@ function focusEditorElement() {
|
|
|
362
444
|
// owns focus, fall through so the default `imeFastEdit` behavior still moves focus to the
|
|
363
445
|
// editor textarea (existing per-editor IME support tests rely on this). See #10038.
|
|
364
446
|
if (_class_private_field_get(this, _isSuspended)) {
|
|
365
|
-
const
|
|
447
|
+
const deepActiveElement = (0, _element.getDeepActiveElement)(_class_private_field_get(this, _hot).rootDocument);
|
|
448
|
+
const activeElement = (0, _element.isHTMLElement)(deepActiveElement) ? deepActiveElement : null;
|
|
366
449
|
if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
|
|
367
450
|
return;
|
|
368
451
|
}
|
package/focusManager/grid.mjs
CHANGED
|
@@ -48,8 +48,9 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
48
48
|
_check_private_redeclaration(obj, privateSet);
|
|
49
49
|
privateSet.add(obj);
|
|
50
50
|
}
|
|
51
|
+
import EventManager from '../eventManager.mjs';
|
|
51
52
|
import { warn } from '../helpers/console.mjs';
|
|
52
|
-
import { isHTMLElement, isOutsideInput } from '../helpers/dom/element.mjs';
|
|
53
|
+
import { getDeepActiveElement, getShadowHostChain, isHTMLElement, isInternalElement, isOutsideInput } from '../helpers/dom/element.mjs';
|
|
53
54
|
import { debounce } from '../helpers/function.mjs';
|
|
54
55
|
/**
|
|
55
56
|
* Possible focus modes.
|
|
@@ -65,6 +66,17 @@ import { debounce } from '../helpers/function.mjs';
|
|
|
65
66
|
var /**
|
|
66
67
|
* The Handsontable instance.
|
|
67
68
|
*/ _hot = /*#__PURE__*/ new WeakMap(), /**
|
|
69
|
+
* Event manager used for the DOM listeners that track the browser focus within the grid.
|
|
70
|
+
*
|
|
71
|
+
* @type {EventManager}
|
|
72
|
+
*/ _eventManager = /*#__PURE__*/ new WeakMap(), /**
|
|
73
|
+
* Tracks whether the browser focus currently sits inside the grid's root wrapper or portal.
|
|
74
|
+
* Maintained by `focusin`/`focusout` listeners bound within the grid's own DOM tree, where
|
|
75
|
+
* sandboxed hosts (e.g. Salesforce Lightning Web Security) still report true event targets -
|
|
76
|
+
* unlike `document.activeElement`, which such hosts collapse to the outermost shadow host.
|
|
77
|
+
*
|
|
78
|
+
* @type {boolean}
|
|
79
|
+
*/ _hasBrowserFocus = /*#__PURE__*/ new WeakMap(), /**
|
|
68
80
|
* The currently enabled focus mode.
|
|
69
81
|
* Can be either:
|
|
70
82
|
*
|
|
@@ -129,6 +141,60 @@ var /**
|
|
|
129
141
|
_class_private_field_get(this, _hot).addHook('afterSelectionFocusSet', (...args)=>_class_private_method_get(this, _onAfterSelectionChange, onAfterSelectionChange).call(this));
|
|
130
142
|
_class_private_field_get(this, _hot).addHook('afterSelectionEnd', (...args)=>_class_private_method_get(this, _focusEditorElement, focusEditorElement).call(this));
|
|
131
143
|
_class_private_field_get(this, _hot).addHook('afterRender', (...args)=>_class_private_method_get(this, _onAfterRender, onAfterRender).call(this));
|
|
144
|
+
_class_private_field_set(this, _eventManager, new EventManager(_class_private_field_get(this, _hot)));
|
|
145
|
+
const focusRootElements = [
|
|
146
|
+
_class_private_field_get(this, _hot).rootWrapperElement ?? _class_private_field_get(this, _hot).rootElement,
|
|
147
|
+
_class_private_field_get(this, _hot).rootPortalElement
|
|
148
|
+
].filter((element)=>isHTMLElement(element));
|
|
149
|
+
focusRootElements.forEach((focusRootElement)=>{
|
|
150
|
+
_class_private_field_get(this, _eventManager).addEventListener(focusRootElement, 'focusin', ()=>{
|
|
151
|
+
_class_private_field_set(this, _hasBrowserFocus, true);
|
|
152
|
+
});
|
|
153
|
+
_class_private_field_get(this, _eventManager).addEventListener(focusRootElement, 'focusout', (event)=>{
|
|
154
|
+
const relatedTarget = event.relatedTarget;
|
|
155
|
+
_class_private_field_set(this, _hasBrowserFocus, isHTMLElement(relatedTarget) && focusRootElements.some((focusRoot)=>focusRoot.contains(relatedTarget)));
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Checks whether the browser focus currently sits inside the grid's root wrapper or portal.
|
|
161
|
+
* The state comes from focus events observed within the grid's own DOM tree, so it stays
|
|
162
|
+
* correct in environments where `document.activeElement` cannot be resolved through foreign
|
|
163
|
+
* shadow boundaries.
|
|
164
|
+
*
|
|
165
|
+
* @returns {boolean}
|
|
166
|
+
*/ hasBrowserFocus() {
|
|
167
|
+
return _class_private_field_get(this, _hasBrowserFocus);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Checks whether the given focused element proves that the browser focus left the grid.
|
|
171
|
+
* Focus counts as foreign when the element is focusable, holds the browser focus, and is
|
|
172
|
+
* neither a part of the grid or its portal, nor one of the shadow hosts the grid is rendered
|
|
173
|
+
* within, nor the document body (a click on a non-focusable area keeps the focus where it
|
|
174
|
+
* was). Sandboxed hosts (e.g. Salesforce Lightning Web Security) hide the real focused
|
|
175
|
+
* element behind the host chain, so a focused ancestor host cannot prove the focus left the
|
|
176
|
+
* grid - only an unrelated element can.
|
|
177
|
+
*
|
|
178
|
+
* The check mirrors the scope-deactivation rule in the focus scope manager (`scopeManager`
|
|
179
|
+
* unlistens when a focus event lands outside every scope). Sandboxed hosts retarget the
|
|
180
|
+
* window-level focus events that rule depends on, so the mouseup path re-applies the same
|
|
181
|
+
* rule from the deepest reachable focused element. On a regular page both mechanisms agree -
|
|
182
|
+
* this adds no behavior that the scope manager does not already provide there.
|
|
183
|
+
*
|
|
184
|
+
* @param {HTMLElement | null} element The deepest reachable focused element.
|
|
185
|
+
* @returns {boolean}
|
|
186
|
+
*/ isForeignFocusTarget(element) {
|
|
187
|
+
const { rootElement, rootWrapperElement, rootPortalElement, rootDocument } = _class_private_field_get(this, _hot);
|
|
188
|
+
// Grid-owned UI hosted in the root wrapper's layout slots or overlay layer (e.g. a
|
|
189
|
+
// plugin's formula bar) lives outside `rootElement`, so `isInternalElement` cannot
|
|
190
|
+
// recognize it. Elements inside `rootElement` are deliberately excluded here: a
|
|
191
|
+
// nested grid's focus must keep counting as foreign for this instance, exactly as
|
|
192
|
+
// `isInternalElement` decides.
|
|
193
|
+
const isWrapperHostedUi = !!rootWrapperElement && rootWrapperElement.contains(element) && !rootElement.contains(element);
|
|
194
|
+
if (element === null || element === rootDocument.body || element === rootDocument.documentElement || isInternalElement(element, rootElement) || isWrapperHostedUi || rootPortalElement && rootPortalElement.contains(element)) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
return !getShadowHostChain(rootElement).includes(element);
|
|
132
198
|
}
|
|
133
199
|
/**
|
|
134
200
|
* Get the current focus mode.
|
|
@@ -272,6 +338,14 @@ var /**
|
|
|
272
338
|
writable: true,
|
|
273
339
|
value: void 0
|
|
274
340
|
});
|
|
341
|
+
_class_private_field_init(this, _eventManager, {
|
|
342
|
+
writable: true,
|
|
343
|
+
value: void 0
|
|
344
|
+
});
|
|
345
|
+
_class_private_field_init(this, _hasBrowserFocus, {
|
|
346
|
+
writable: true,
|
|
347
|
+
value: void 0
|
|
348
|
+
});
|
|
275
349
|
_class_private_field_init(this, _focusMode, {
|
|
276
350
|
writable: true,
|
|
277
351
|
value: void 0
|
|
@@ -296,6 +370,8 @@ var /**
|
|
|
296
370
|
writable: true,
|
|
297
371
|
value: void 0
|
|
298
372
|
});
|
|
373
|
+
_class_private_field_set(this, _eventManager, null);
|
|
374
|
+
_class_private_field_set(this, _hasBrowserFocus, false);
|
|
299
375
|
_class_private_field_set(this, _refocusDelay, 1);
|
|
300
376
|
_class_private_field_set(this, _refocusElementGetter, null);
|
|
301
377
|
_class_private_field_set(this, _debouncedSelect, new Map());
|
|
@@ -330,7 +406,8 @@ function focusCell() {
|
|
|
330
406
|
// have run. Reading `this.#isSuspended` inside the callback would miss the suspend window.
|
|
331
407
|
const suspended = _class_private_field_get(this, _isSuspended);
|
|
332
408
|
_class_private_method_get(this, _getSelectedCell, getSelectedCell).call(this, (selectedCell)=>{
|
|
333
|
-
const
|
|
409
|
+
const deepActiveElement = getDeepActiveElement(_class_private_field_get(this, _hot).rootDocument);
|
|
410
|
+
const activeElement = isHTMLElement(deepActiveElement) ? deepActiveElement : null;
|
|
334
411
|
// When focus management is suspended and an external focusable element (outside Handsontable)
|
|
335
412
|
// currently owns the browser focus, keep it - do not blur and do not move focus to the cell.
|
|
336
413
|
// This preserves the focus of inputs that live next to the grid when a programmatic selection
|
|
@@ -355,7 +432,8 @@ function focusEditorElement() {
|
|
|
355
432
|
// owns focus, fall through so the default `imeFastEdit` behavior still moves focus to the
|
|
356
433
|
// editor textarea (existing per-editor IME support tests rely on this). See #10038.
|
|
357
434
|
if (_class_private_field_get(this, _isSuspended)) {
|
|
358
|
-
const
|
|
435
|
+
const deepActiveElement = getDeepActiveElement(_class_private_field_get(this, _hot).rootDocument);
|
|
436
|
+
const activeElement = isHTMLElement(deepActiveElement) ? deepActiveElement : null;
|
|
359
437
|
if (activeElement && isOutsideInput(activeElement)) {
|
|
360
438
|
return;
|
|
361
439
|
}
|
|
@@ -166,7 +166,7 @@ function createFocusScopeManager(hotInstance) {
|
|
|
166
166
|
scope.disable();
|
|
167
167
|
}
|
|
168
168
|
if (scope === activeScope) {
|
|
169
|
-
if (scope.contains(hotInstance.rootDocument
|
|
169
|
+
if (scope.contains((0, _element.getDeepActiveElement)(hotInstance.rootDocument))) {
|
|
170
170
|
scope.deactivateFocusCatchers();
|
|
171
171
|
} else {
|
|
172
172
|
scope.activateFocusCatchers();
|
|
@@ -3,7 +3,7 @@ import { throwWithCause } from '../helpers/errors.mjs';
|
|
|
3
3
|
import { createFocusScope } from './scope.mjs';
|
|
4
4
|
import { useEventListener } from './eventListener.mjs';
|
|
5
5
|
import { FOCUS_SOURCES } from './constants.mjs';
|
|
6
|
-
import { eventTargetEl, isVisible } from '../helpers/dom/element.mjs';
|
|
6
|
+
import { eventTargetEl, getDeepActiveElement, isVisible } from '../helpers/dom/element.mjs';
|
|
7
7
|
/**
|
|
8
8
|
* @typedef {object} FocusScopeManager
|
|
9
9
|
* @property {function(): string | null} getActiveScopeId Returns the ID of the active scope.
|
|
@@ -178,7 +178,7 @@ import { eventTargetEl, isVisible } from '../helpers/dom/element.mjs';
|
|
|
178
178
|
scope.disable();
|
|
179
179
|
}
|
|
180
180
|
if (scope === activeScope) {
|
|
181
|
-
if (scope.contains(hotInstance.rootDocument
|
|
181
|
+
if (scope.contains(getDeepActiveElement(hotInstance.rootDocument))) {
|
|
182
182
|
scope.deactivateFocusCatchers();
|
|
183
183
|
} else {
|
|
184
184
|
scope.activateFocusCatchers();
|
|
Binary file
|
package/helpers/array.d.ts
CHANGED
|
@@ -93,6 +93,31 @@ export declare function arrayAvg(array: number[]): number;
|
|
|
93
93
|
* @returns {Array}
|
|
94
94
|
*/
|
|
95
95
|
export declare function arrayFlatten(array: unknown[]): unknown[];
|
|
96
|
+
/**
|
|
97
|
+
* Removes the elements at the given indexes from the array. The array is compacted in one
|
|
98
|
+
* pass and mutated in place, so external references to it stay valid. Cost is O(array length)
|
|
99
|
+
* regardless of how many indexes are removed - unlike one `splice` call per removed index,
|
|
100
|
+
* which re-shifts the tail every time.
|
|
101
|
+
*
|
|
102
|
+
* @param {Array} array The array to mutate.
|
|
103
|
+
* @param {Set<number>} indexes The indexes of the elements to remove.
|
|
104
|
+
* @returns {Array} Returns the same, mutated array.
|
|
105
|
+
*/
|
|
106
|
+
export declare function removeIndexesInPlace<T>(array: T[], indexes: Set<number>): T[];
|
|
107
|
+
/**
|
|
108
|
+
* Inserts `amount` copies of `value` into the array at the given index. The tail is shifted
|
|
109
|
+
* right once by `amount` and the array is mutated in place, so external references to it stay
|
|
110
|
+
* valid. An index greater than the array length is clamped to it (the values are appended),
|
|
111
|
+
* matching `Array.prototype.splice` semantics. Cost is O(array length + amount) regardless of
|
|
112
|
+
* `amount` - unlike one `splice` call per inserted value, which re-shifts the tail every time.
|
|
113
|
+
*
|
|
114
|
+
* @param {Array} array The array to mutate.
|
|
115
|
+
* @param {number} index The index at which to insert the values.
|
|
116
|
+
* @param {number} amount The number of copies to insert.
|
|
117
|
+
* @param {*} value The value to insert.
|
|
118
|
+
* @returns {Array} Returns the same, mutated array.
|
|
119
|
+
*/
|
|
120
|
+
export declare function insertValuesInPlace<T>(array: T[], index: number, amount: number, value: T): T[];
|
|
96
121
|
/**
|
|
97
122
|
* Unique values in the array.
|
|
98
123
|
*
|
package/helpers/array.js
CHANGED
|
@@ -56,9 +56,15 @@ _export(exports, {
|
|
|
56
56
|
get getUnionOfArrays () {
|
|
57
57
|
return getUnionOfArrays;
|
|
58
58
|
},
|
|
59
|
+
get insertValuesInPlace () {
|
|
60
|
+
return insertValuesInPlace;
|
|
61
|
+
},
|
|
59
62
|
get pivot () {
|
|
60
63
|
return pivot;
|
|
61
64
|
},
|
|
65
|
+
get removeIndexesInPlace () {
|
|
66
|
+
return removeIndexesInPlace;
|
|
67
|
+
},
|
|
62
68
|
get stringToArray () {
|
|
63
69
|
return stringToArray;
|
|
64
70
|
},
|
|
@@ -182,10 +188,36 @@ function arrayAvg(array) {
|
|
|
182
188
|
function arrayFlatten(array) {
|
|
183
189
|
return arrayReduce(array, (initial, value)=>initial.concat(Array.isArray(value) ? arrayFlatten(value) : value), []);
|
|
184
190
|
}
|
|
191
|
+
function removeIndexesInPlace(array, indexes) {
|
|
192
|
+
let writeIndex = 0;
|
|
193
|
+
for(let readIndex = 0; readIndex < array.length; readIndex++){
|
|
194
|
+
if (!indexes.has(readIndex)) {
|
|
195
|
+
array[writeIndex] = array[readIndex];
|
|
196
|
+
writeIndex += 1;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
array.length = writeIndex;
|
|
200
|
+
return array;
|
|
201
|
+
}
|
|
202
|
+
function insertValuesInPlace(array, index, amount, value) {
|
|
203
|
+
if (amount <= 0) {
|
|
204
|
+
return array;
|
|
205
|
+
}
|
|
206
|
+
const oldLength = array.length;
|
|
207
|
+
const insertAt = Math.min(index, oldLength);
|
|
208
|
+
array.length = oldLength + amount;
|
|
209
|
+
for(let i = oldLength - 1; i >= insertAt; i--){
|
|
210
|
+
array[i + amount] = array[i];
|
|
211
|
+
}
|
|
212
|
+
array.fill(value, insertAt, insertAt + amount);
|
|
213
|
+
return array;
|
|
214
|
+
}
|
|
185
215
|
function arrayUnique(array) {
|
|
186
216
|
const unique = [];
|
|
217
|
+
const seen = new Set();
|
|
187
218
|
arrayEach(array, (value)=>{
|
|
188
|
-
if (
|
|
219
|
+
if (!seen.has(value)) {
|
|
220
|
+
seen.add(value);
|
|
189
221
|
unique.push(value);
|
|
190
222
|
}
|
|
191
223
|
});
|
|
@@ -197,7 +229,8 @@ function getDifferenceOfArrays(...arrays) {
|
|
|
197
229
|
];
|
|
198
230
|
let filteredFirstArray = first;
|
|
199
231
|
arrayEach(rest, (array)=>{
|
|
200
|
-
|
|
232
|
+
const lookup = new Set(array);
|
|
233
|
+
filteredFirstArray = filteredFirstArray.filter((value)=>!lookup.has(value));
|
|
201
234
|
});
|
|
202
235
|
return filteredFirstArray;
|
|
203
236
|
}
|
|
@@ -213,11 +246,15 @@ function getIntersectionOfArrays(...args) {
|
|
|
213
246
|
arrays.push(arg);
|
|
214
247
|
}
|
|
215
248
|
});
|
|
216
|
-
const isMatch = comparator ? (value, array)=>array.some((item)=>comparator(value, item)) : (value, array)=>array.includes(value);
|
|
217
249
|
const [first, ...rest] = arrays;
|
|
218
250
|
let filteredFirstArray = first;
|
|
219
251
|
arrayEach(rest, (array)=>{
|
|
220
|
-
|
|
252
|
+
if (comparator) {
|
|
253
|
+
filteredFirstArray = filteredFirstArray.filter((value)=>array.some((item)=>comparator(value, item)));
|
|
254
|
+
} else {
|
|
255
|
+
const lookup = new Set(array);
|
|
256
|
+
filteredFirstArray = filteredFirstArray.filter((value)=>lookup.has(value));
|
|
257
|
+
}
|
|
221
258
|
});
|
|
222
259
|
return filteredFirstArray;
|
|
223
260
|
}
|