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
|
@@ -23,7 +23,6 @@ const _base = require("../base");
|
|
|
23
23
|
const _array = require("../../helpers/array");
|
|
24
24
|
const _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
|
25
25
|
const _console = require("../../helpers/console");
|
|
26
|
-
const _number = require("../../helpers/number");
|
|
27
26
|
const _element = require("../../helpers/dom/element");
|
|
28
27
|
const _unicode = require("../../helpers/unicode");
|
|
29
28
|
const _valueAccessors = require("../../utils/valueAccessors");
|
|
@@ -41,7 +40,6 @@ const _utils = require("./utils");
|
|
|
41
40
|
const _sortComparators = require("./sortComparators");
|
|
42
41
|
const _focusController = require("./menu/focusController");
|
|
43
42
|
const _constants1 = require("./constants");
|
|
44
|
-
const _translations = require("../../translations");
|
|
45
43
|
function _check_private_redeclaration(obj, privateCollection) {
|
|
46
44
|
if (privateCollection.has(obj)) {
|
|
47
45
|
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
@@ -275,7 +273,7 @@ class Filters extends _base.BasePlugin {
|
|
|
275
273
|
return;
|
|
276
274
|
}
|
|
277
275
|
_class_private_field_set(this, _isDataProviderActive, this.hot.runHooks('hasExternalDataSource') === true);
|
|
278
|
-
this.filtersRowsMap = this.hot.rowIndexMapper.
|
|
276
|
+
this.filtersRowsMap = this.hot.rowIndexMapper.createAndRegisterIndexMap(this.pluginName ?? '', 'trimming');
|
|
279
277
|
this.dropdownMenuPlugin = this.hot.getPlugin('dropdownMenu');
|
|
280
278
|
const dropdownSettings = this.hot.getSettings().dropdownMenu;
|
|
281
279
|
const uiContainerCandidate = typeof dropdownSettings === 'object' ? dropdownSettings.uiContainer : null;
|
|
@@ -333,7 +331,7 @@ class Filters extends _base.BasePlugin {
|
|
|
333
331
|
this.conditionCollection = new _conditionCollection.default(this.hot);
|
|
334
332
|
}
|
|
335
333
|
if (!this.conditionUpdateObserver) {
|
|
336
|
-
this.conditionUpdateObserver = new _conditionUpdateObserver.default(this.hot, this.conditionCollection, (physicalColumn)=>this.getDataMapAtColumn(physicalColumn));
|
|
334
|
+
this.conditionUpdateObserver = new _conditionUpdateObserver.default(this.hot, this.conditionCollection, (physicalColumn, physicalRows)=>this.getDataMapAtColumn(physicalColumn, physicalRows));
|
|
337
335
|
this.conditionUpdateObserver.addLocalHook('update', (conditionState)=>_class_private_method_get(this, _updateComponents, updateComponents).call(this, conditionState));
|
|
338
336
|
}
|
|
339
337
|
this.components.forEach((component)=>component?.show());
|
|
@@ -486,7 +484,7 @@ class Filters extends _base.BasePlugin {
|
|
|
486
484
|
* | `intl_time_between` | Between times (locale-aware) | `[fromTimeString: string, toTimeString: string]`, e.g. `['08:00', '12:00']` |
|
|
487
485
|
* | `lt` | Less than | `[value: number]`, e.g. `[10]` |
|
|
488
486
|
* | `lte` | Less than or equal | `[value: number]`, e.g. `[10]` |
|
|
489
|
-
* | `none` | None (no filter) | `[]` |
|
|
487
|
+
* | `none` | None (no filter) | `[]`. Matches every row, so it has no filtering effect. To clear a column's filter, use [`removeConditions()`](@/api/filters.md#removeconditions) instead. |
|
|
490
488
|
* | `not_between` | Not between | `[from: number\|string, to: number\|string]`, e.g. `[10, 50]` |
|
|
491
489
|
* | `not_contains` | Not contains | `[value: string]`, e.g. `['ing']` |
|
|
492
490
|
* | `not_empty` | Not empty | `[]` |
|
|
@@ -850,6 +848,9 @@ class Filters extends _base.BasePlugin {
|
|
|
850
848
|
/**
|
|
851
849
|
* Removes conditions at specified column index.
|
|
852
850
|
*
|
|
851
|
+
* This is the programmatic equivalent of selecting the `None` operator in the column menu – both
|
|
852
|
+
* clear the column's filter.
|
|
853
|
+
*
|
|
853
854
|
* @param {number} column Visual column index.
|
|
854
855
|
*/ removeConditions(column) {
|
|
855
856
|
const physicalColumn = this.hot.toPhysicalColumn(column);
|
|
@@ -871,17 +872,24 @@ class Filters extends _base.BasePlugin {
|
|
|
871
872
|
/**
|
|
872
873
|
* Imports filter conditions to all columns to the plugin. The method accepts
|
|
873
874
|
* the array of conditions with the same structure as the {@link Filters#exportConditions} method returns.
|
|
875
|
+
* The `column` property in each condition object must be a physical column index.
|
|
874
876
|
* Importing conditions will replace the current conditions. Once replaced, the state of the condition
|
|
875
877
|
* will be reflected in the UI. To apply the changes and filter the table, call
|
|
876
878
|
* the {@link Filters#filter} method eventually.
|
|
877
879
|
*
|
|
878
|
-
* @param {Array} conditions Array of conditions.
|
|
880
|
+
* @param {Array} conditions Array of conditions keyed by physical column indexes.
|
|
879
881
|
*/ importConditions(conditions) {
|
|
882
|
+
// Group the per-condition `afterAdd`/`afterClean` cascade the same way the action-bar
|
|
883
|
+
// submit does. Without grouping, every imported condition triggers a full component
|
|
884
|
+
// update that re-scans the whole dataset once per earlier filtered column.
|
|
885
|
+
this.conditionUpdateObserver?.groupChanges();
|
|
880
886
|
this.conditionCollection?.importAllConditions(conditions);
|
|
887
|
+
this.conditionUpdateObserver?.flush();
|
|
881
888
|
}
|
|
882
889
|
/**
|
|
883
890
|
* Exports filter conditions for all columns from the plugin.
|
|
884
|
-
* The array represents the filter state for each column
|
|
891
|
+
* The array represents the filter state for each column and uses physical column indexes in each `column` property.
|
|
892
|
+
* For example:
|
|
885
893
|
*
|
|
886
894
|
* ```js
|
|
887
895
|
* [
|
|
@@ -921,20 +929,20 @@ class Filters extends _base.BasePlugin {
|
|
|
921
929
|
}
|
|
922
930
|
const allowFiltering = this.hot.runHooks('beforeFilter', conditions, _class_private_field_get(this, _previousConditionStack));
|
|
923
931
|
if (allowFiltering !== false && needToFilter) {
|
|
924
|
-
const trimmedRows = [];
|
|
925
932
|
const dataFilter = this._createDataFilter();
|
|
926
|
-
const rowIndexesToShow = (0, _array.arrayMap)(dataFilter.filter(), (rowData)=>rowData.
|
|
933
|
+
const rowIndexesToShow = (0, _array.arrayMap)(dataFilter.filter(), (rowData)=>rowData.row);
|
|
927
934
|
const rowIndexesToShowAssertion = (0, _utils.createArrayAssertion)(rowIndexesToShow);
|
|
935
|
+
const countSourceRows = this.hot.countSourceRows();
|
|
936
|
+
// Build the trimmed-state array in a single pass (`true` marks a row hidden by the filter), then
|
|
937
|
+
// write it to the map in one bulk `setValues` call. The previous approach scanned the dataset
|
|
938
|
+
// twice (a `clear()` that rebuilt the whole array, then a `rangeEach` pass) and fired a map
|
|
939
|
+
// `change` per trimmed row; for large datasets that was a measurable share of `filter()` time.
|
|
940
|
+
const trimmedRowsState = new Array(countSourceRows);
|
|
941
|
+
for(let physicalRow = 0; physicalRow < countSourceRows; physicalRow++){
|
|
942
|
+
trimmedRowsState[physicalRow] = !rowIndexesToShowAssertion(physicalRow);
|
|
943
|
+
}
|
|
928
944
|
this.hot.batchExecution(()=>{
|
|
929
|
-
this.filtersRowsMap?.
|
|
930
|
-
(0, _number.rangeEach)(this.hot.countSourceRows() - 1, (row)=>{
|
|
931
|
-
if (!rowIndexesToShowAssertion(row)) {
|
|
932
|
-
trimmedRows.push(row);
|
|
933
|
-
}
|
|
934
|
-
});
|
|
935
|
-
(0, _array.arrayEach)(trimmedRows, (physicalRow)=>{
|
|
936
|
-
this.filtersRowsMap?.setValueAtIndex(physicalRow, true);
|
|
937
|
-
});
|
|
945
|
+
this.filtersRowsMap?.setValues(trimmedRowsState);
|
|
938
946
|
}, true);
|
|
939
947
|
if (!navigableHeaders && !rowIndexesToShow.length) {
|
|
940
948
|
this.hot.deselectCell();
|
|
@@ -961,11 +969,11 @@ class Filters extends _base.BasePlugin {
|
|
|
961
969
|
}
|
|
962
970
|
}
|
|
963
971
|
/**
|
|
964
|
-
* Gets last selected column
|
|
972
|
+
* Gets the last selected column as an object with visual and physical indexes.
|
|
965
973
|
*
|
|
966
974
|
* @returns {{visualIndex: number, physicalIndex: number} | null} Returns `null` when a column is
|
|
967
975
|
* not selected. Otherwise, returns an object with `visualIndex` and `physicalIndex` properties containing
|
|
968
|
-
*
|
|
976
|
+
* column indexes.
|
|
969
977
|
*/ getSelectedColumn() {
|
|
970
978
|
const highlight = this.hot.getSelectedRangeActive()?.highlight;
|
|
971
979
|
if (!highlight || highlight.col === null) {
|
|
@@ -979,19 +987,23 @@ class Filters extends _base.BasePlugin {
|
|
|
979
987
|
/**
|
|
980
988
|
* Returns the full dataset for a column with cell meta for each row. The dataset is independent of
|
|
981
989
|
* any index mapper - no matter if the data is filtered, sorted, or otherwise transformed all rows
|
|
982
|
-
* are included.
|
|
990
|
+
* are included, unless `physicalRows` narrows the read to specific rows.
|
|
983
991
|
*
|
|
984
992
|
* @param {number} physicalColumn The physical column index.
|
|
985
|
-
* @
|
|
986
|
-
|
|
987
|
-
|
|
993
|
+
* @param {number[]} [physicalRows] When provided, only these physical rows are read (in the given
|
|
994
|
+
* order) instead of every source row.
|
|
995
|
+
* @returns {Array<{row: number, meta: CellProperties, value: *}>} Array of objects with `row` (the physical
|
|
996
|
+
* row index), `meta`, and `value`, one per read row. Consumers correlate rows through the `row` property -
|
|
997
|
+
* the coordinate stamps on `meta` are shared with other readers and may change after this method returns.
|
|
998
|
+
*/ getDataMapAtColumn(physicalColumn, physicalRows) {
|
|
999
|
+
const rowsCount = physicalRows ? physicalRows.length : this.hot.countSourceRows();
|
|
988
1000
|
const visualColumn = this.hot.toVisualColumn(physicalColumn);
|
|
989
1001
|
const data = [];
|
|
990
|
-
for(let
|
|
991
|
-
const
|
|
1002
|
+
for(let rowIndex = 0; rowIndex < rowsCount; rowIndex++){
|
|
1003
|
+
const physicalRow = physicalRows ? physicalRows[rowIndex] : rowIndex;
|
|
1004
|
+
const cellMeta = this.hot._getMetaManager().getCellMetaUncached(physicalRow, physicalColumn, {
|
|
992
1005
|
visualRow: physicalRow,
|
|
993
|
-
visualColumn: physicalColumn
|
|
994
|
-
skipMetaExtension: true
|
|
1006
|
+
visualColumn: physicalColumn
|
|
995
1007
|
});
|
|
996
1008
|
let value = (0, _valueAccessors.getValueGetterValue)(this.hot.getSourceDataAtCell(physicalRow, visualColumn), cellMeta);
|
|
997
1009
|
if (this.hot.hasHook('modifyData')) {
|
|
@@ -1002,6 +1014,7 @@ class Filters extends _base.BasePlugin {
|
|
|
1002
1014
|
}
|
|
1003
1015
|
}
|
|
1004
1016
|
data.push({
|
|
1017
|
+
row: physicalRow,
|
|
1005
1018
|
meta: cellMeta,
|
|
1006
1019
|
value: (0, _utils.toEmptyString)(value)
|
|
1007
1020
|
});
|
|
@@ -1016,7 +1029,7 @@ class Filters extends _base.BasePlugin {
|
|
|
1016
1029
|
*/ updateValueComponentCondition(columnIndex) {
|
|
1017
1030
|
const visualColumnIndex = this.hot.toVisualColumn(columnIndex);
|
|
1018
1031
|
const dataAtCol = this.hot.getDataAtCol(visualColumnIndex);
|
|
1019
|
-
const columnMeta = this.hot.countRows() > 0 ? this.hot.
|
|
1032
|
+
const columnMeta = this.hot.countRows() > 0 ? this.hot.getCellMetaTransient(0, visualColumnIndex) : null;
|
|
1020
1033
|
const comparator = (0, _sortComparators.getSortComparatorForMeta)(columnMeta);
|
|
1021
1034
|
const selectedValues = (0, _utils.unifyColumnValues)(dataAtCol, comparator);
|
|
1022
1035
|
this.conditionUpdateObserver?.updateStatesAtColumn(columnIndex, selectedValues);
|
|
@@ -1093,6 +1106,46 @@ class Filters extends _base.BasePlugin {
|
|
|
1093
1106
|
}
|
|
1094
1107
|
}
|
|
1095
1108
|
/**
|
|
1109
|
+
* Gets the values the "filter by value" list of a column is built from.
|
|
1110
|
+
*
|
|
1111
|
+
* A column that carries conditions of its own reads the rows that survive the conditions of the
|
|
1112
|
+
* columns defined BEFORE it in the filter stack. Its own conditions are deliberately skipped - a
|
|
1113
|
+
* column's filter must not narrow down its own value list, or the values it filters out drop off
|
|
1114
|
+
* the list and become impossible to select again (issue #12226). A column with no conditions of
|
|
1115
|
+
* its own reads the currently visible data, which the other columns' filters already narrowed
|
|
1116
|
+
* down.
|
|
1117
|
+
*
|
|
1118
|
+
* @private
|
|
1119
|
+
* @param {number} column Visual column index.
|
|
1120
|
+
* @returns {Array<{value: *, meta: CellProperties}>} Array of objects with `value` and `meta`, one per row.
|
|
1121
|
+
*/ _getValueListDataAtColumn(column) {
|
|
1122
|
+
const physicalColumn = this.hot.toPhysicalColumn(column);
|
|
1123
|
+
const stackPosition = this.conditionCollection?.getColumnStackPosition(physicalColumn) ?? -1;
|
|
1124
|
+
// A data provider filters server-side and the list is hidden anyway, so re-running the
|
|
1125
|
+
// conditions locally would filter data that is already filtered.
|
|
1126
|
+
if (stackPosition === -1 || _class_private_field_get(this, _isDataProviderActive)) {
|
|
1127
|
+
return (0, _array.arrayMap)(this.hot.getDataAtCol(column), (value, rowIndex)=>({
|
|
1128
|
+
value: (0, _utils.toEmptyString)(value),
|
|
1129
|
+
meta: this.hot.getCellMetaTransient(rowIndex, column)
|
|
1130
|
+
}));
|
|
1131
|
+
}
|
|
1132
|
+
const allRows = this.getDataMapAtColumn(physicalColumn);
|
|
1133
|
+
const conditionsBefore = (this.conditionCollection?.exportAllConditions() ?? []).slice(0, stackPosition);
|
|
1134
|
+
if (conditionsBefore.length === 0) {
|
|
1135
|
+
return allRows;
|
|
1136
|
+
}
|
|
1137
|
+
const splitConditionCollection = new _conditionCollection.default(this.hot, false);
|
|
1138
|
+
splitConditionCollection.importAllConditions(conditionsBefore);
|
|
1139
|
+
// Rows are correlated through the entry's own `row` property - the coordinate stamps on `meta`
|
|
1140
|
+
// are shared with every other meta reader and may have been overwritten since.
|
|
1141
|
+
// `DataFilter` is typed against `unknown[]` throughout, so its entries are narrowed here - the
|
|
1142
|
+
// same boundary cast `DataFilter.filter()` and `ConditionUpdateObserver` already make.
|
|
1143
|
+
const survivingRows = (0, _array.arrayMap)(this._createDataFilter(splitConditionCollection).filter(), (rowData)=>rowData.row);
|
|
1144
|
+
const survivingRowsAssertion = (0, _utils.createArrayAssertion)(survivingRows);
|
|
1145
|
+
splitConditionCollection.destroy();
|
|
1146
|
+
return (0, _array.arrayFilter)(allRows, (rowData)=>survivingRowsAssertion(rowData.row));
|
|
1147
|
+
}
|
|
1148
|
+
/**
|
|
1096
1149
|
* Creates DataFilter instance based on condition collection.
|
|
1097
1150
|
*
|
|
1098
1151
|
* @private
|
|
@@ -1102,7 +1155,7 @@ class Filters extends _base.BasePlugin {
|
|
|
1102
1155
|
if (!conditionCollection) {
|
|
1103
1156
|
conditionCollection = new _conditionCollection.default(this.hot, false);
|
|
1104
1157
|
}
|
|
1105
|
-
return new _dataFilter.default(conditionCollection, (physicalColumn)=>this.getDataMapAtColumn(physicalColumn));
|
|
1158
|
+
return new _dataFilter.default(conditionCollection, (physicalColumn, physicalRows)=>this.getDataMapAtColumn(physicalColumn, physicalRows));
|
|
1106
1159
|
}
|
|
1107
1160
|
/**
|
|
1108
1161
|
* Returns indexes of passed components inside list of `dropdownMenu` items.
|
|
@@ -1269,14 +1322,21 @@ class Filters extends _base.BasePlugin {
|
|
|
1269
1322
|
* @type {null|TrimmingMap}
|
|
1270
1323
|
*/ this.filtersRowsMap = null, _class_private_field_set(this, _dropdownMenuTraces, new WeakSet()), _class_private_field_set(this, _previousConditionStack, []), _class_private_field_set(this, _dataProviderFilterRollbackStack, []), _class_private_field_set(this, _isDataProviderActive, false), _class_private_field_set(this, _onAfterChange, (changes)=>{
|
|
1271
1324
|
if (changes) {
|
|
1325
|
+
// A single batch (paste, fill, undo) can carry thousands of changes that hit the same
|
|
1326
|
+
// column. The value-component refresh reads and sorts the whole column, so run it once
|
|
1327
|
+
// per distinct filtered column instead of once per changed cell.
|
|
1328
|
+
const changedColumns = new Set();
|
|
1272
1329
|
(0, _array.arrayEach)(changes, (change)=>{
|
|
1273
1330
|
const [, prop] = change;
|
|
1274
1331
|
const visualColumnIndex = this.hot.propToCol(prop);
|
|
1275
1332
|
const physicalColumnIndex = this.hot.toPhysicalColumn(visualColumnIndex);
|
|
1276
1333
|
if (this.conditionCollection?.hasConditions(physicalColumnIndex)) {
|
|
1277
|
-
|
|
1334
|
+
changedColumns.add(physicalColumnIndex);
|
|
1278
1335
|
}
|
|
1279
1336
|
});
|
|
1337
|
+
changedColumns.forEach((physicalColumnIndex)=>{
|
|
1338
|
+
this.updateValueComponentCondition(physicalColumnIndex);
|
|
1339
|
+
});
|
|
1280
1340
|
}
|
|
1281
1341
|
}), _class_private_field_set(this, _onAfterUpdateData, (_data, firstRun)=>{
|
|
1282
1342
|
if (firstRun || _class_private_field_get(this, _isDataProviderActive) || !this.conditionCollection) {
|
|
@@ -49,10 +49,9 @@ function _class_private_method_init(obj, privateSet) {
|
|
|
49
49
|
privateSet.add(obj);
|
|
50
50
|
}
|
|
51
51
|
import { BasePlugin } from '../base/index.mjs';
|
|
52
|
-
import { arrayEach, arrayMap } from '../../helpers/array.mjs';
|
|
52
|
+
import { arrayEach, arrayFilter, arrayMap } from '../../helpers/array.mjs';
|
|
53
53
|
import { toSingleLine } from '../../helpers/templateLiteralTag.mjs';
|
|
54
54
|
import { warn } from '../../helpers/console.mjs';
|
|
55
|
-
import { rangeEach } from '../../helpers/number.mjs';
|
|
56
55
|
import { addClass, isBottomMostColumnHeader, isHTMLElement, removeClass } from '../../helpers/dom/element.mjs';
|
|
57
56
|
import { isKey } from '../../helpers/unicode.mjs';
|
|
58
57
|
import { getValueGetterValue } from '../../utils/valueAccessors.mjs';
|
|
@@ -70,7 +69,6 @@ import { createArrayAssertion, toEmptyString, unifyColumnValues } from './utils.
|
|
|
70
69
|
import { getSortComparatorForMeta } from './sortComparators.mjs';
|
|
71
70
|
import { createMenuFocusController } from './menu/focusController.mjs';
|
|
72
71
|
import { CONDITION_NONE, CONDITION_BY_VALUE, OPERATION_AND, OPERATION_OR, OPERATION_OR_THEN_VARIABLE } from './constants.mjs';
|
|
73
|
-
import { TrimmingMap } from '../../translations/index.mjs';
|
|
74
72
|
export const PLUGIN_KEY = 'filters';
|
|
75
73
|
export const PLUGIN_PRIORITY = 250;
|
|
76
74
|
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
@@ -258,7 +256,7 @@ var /**
|
|
|
258
256
|
return;
|
|
259
257
|
}
|
|
260
258
|
_class_private_field_set(this, _isDataProviderActive, this.hot.runHooks('hasExternalDataSource') === true);
|
|
261
|
-
this.filtersRowsMap = this.hot.rowIndexMapper.
|
|
259
|
+
this.filtersRowsMap = this.hot.rowIndexMapper.createAndRegisterIndexMap(this.pluginName ?? '', 'trimming');
|
|
262
260
|
this.dropdownMenuPlugin = this.hot.getPlugin('dropdownMenu');
|
|
263
261
|
const dropdownSettings = this.hot.getSettings().dropdownMenu;
|
|
264
262
|
const uiContainerCandidate = typeof dropdownSettings === 'object' ? dropdownSettings.uiContainer : null;
|
|
@@ -316,7 +314,7 @@ var /**
|
|
|
316
314
|
this.conditionCollection = new ConditionCollection(this.hot);
|
|
317
315
|
}
|
|
318
316
|
if (!this.conditionUpdateObserver) {
|
|
319
|
-
this.conditionUpdateObserver = new ConditionUpdateObserver(this.hot, this.conditionCollection, (physicalColumn)=>this.getDataMapAtColumn(physicalColumn));
|
|
317
|
+
this.conditionUpdateObserver = new ConditionUpdateObserver(this.hot, this.conditionCollection, (physicalColumn, physicalRows)=>this.getDataMapAtColumn(physicalColumn, physicalRows));
|
|
320
318
|
this.conditionUpdateObserver.addLocalHook('update', (conditionState)=>_class_private_method_get(this, _updateComponents, updateComponents).call(this, conditionState));
|
|
321
319
|
}
|
|
322
320
|
this.components.forEach((component)=>component?.show());
|
|
@@ -469,7 +467,7 @@ var /**
|
|
|
469
467
|
* | `intl_time_between` | Between times (locale-aware) | `[fromTimeString: string, toTimeString: string]`, e.g. `['08:00', '12:00']` |
|
|
470
468
|
* | `lt` | Less than | `[value: number]`, e.g. `[10]` |
|
|
471
469
|
* | `lte` | Less than or equal | `[value: number]`, e.g. `[10]` |
|
|
472
|
-
* | `none` | None (no filter) | `[]` |
|
|
470
|
+
* | `none` | None (no filter) | `[]`. Matches every row, so it has no filtering effect. To clear a column's filter, use [`removeConditions()`](@/api/filters.md#removeconditions) instead. |
|
|
473
471
|
* | `not_between` | Not between | `[from: number\|string, to: number\|string]`, e.g. `[10, 50]` |
|
|
474
472
|
* | `not_contains` | Not contains | `[value: string]`, e.g. `['ing']` |
|
|
475
473
|
* | `not_empty` | Not empty | `[]` |
|
|
@@ -833,6 +831,9 @@ var /**
|
|
|
833
831
|
/**
|
|
834
832
|
* Removes conditions at specified column index.
|
|
835
833
|
*
|
|
834
|
+
* This is the programmatic equivalent of selecting the `None` operator in the column menu – both
|
|
835
|
+
* clear the column's filter.
|
|
836
|
+
*
|
|
836
837
|
* @param {number} column Visual column index.
|
|
837
838
|
*/ removeConditions(column) {
|
|
838
839
|
const physicalColumn = this.hot.toPhysicalColumn(column);
|
|
@@ -854,17 +855,24 @@ var /**
|
|
|
854
855
|
/**
|
|
855
856
|
* Imports filter conditions to all columns to the plugin. The method accepts
|
|
856
857
|
* the array of conditions with the same structure as the {@link Filters#exportConditions} method returns.
|
|
858
|
+
* The `column` property in each condition object must be a physical column index.
|
|
857
859
|
* Importing conditions will replace the current conditions. Once replaced, the state of the condition
|
|
858
860
|
* will be reflected in the UI. To apply the changes and filter the table, call
|
|
859
861
|
* the {@link Filters#filter} method eventually.
|
|
860
862
|
*
|
|
861
|
-
* @param {Array} conditions Array of conditions.
|
|
863
|
+
* @param {Array} conditions Array of conditions keyed by physical column indexes.
|
|
862
864
|
*/ importConditions(conditions) {
|
|
865
|
+
// Group the per-condition `afterAdd`/`afterClean` cascade the same way the action-bar
|
|
866
|
+
// submit does. Without grouping, every imported condition triggers a full component
|
|
867
|
+
// update that re-scans the whole dataset once per earlier filtered column.
|
|
868
|
+
this.conditionUpdateObserver?.groupChanges();
|
|
863
869
|
this.conditionCollection?.importAllConditions(conditions);
|
|
870
|
+
this.conditionUpdateObserver?.flush();
|
|
864
871
|
}
|
|
865
872
|
/**
|
|
866
873
|
* Exports filter conditions for all columns from the plugin.
|
|
867
|
-
* The array represents the filter state for each column
|
|
874
|
+
* The array represents the filter state for each column and uses physical column indexes in each `column` property.
|
|
875
|
+
* For example:
|
|
868
876
|
*
|
|
869
877
|
* ```js
|
|
870
878
|
* [
|
|
@@ -904,20 +912,20 @@ var /**
|
|
|
904
912
|
}
|
|
905
913
|
const allowFiltering = this.hot.runHooks('beforeFilter', conditions, _class_private_field_get(this, _previousConditionStack));
|
|
906
914
|
if (allowFiltering !== false && needToFilter) {
|
|
907
|
-
const trimmedRows = [];
|
|
908
915
|
const dataFilter = this._createDataFilter();
|
|
909
|
-
const rowIndexesToShow = arrayMap(dataFilter.filter(), (rowData)=>rowData.
|
|
916
|
+
const rowIndexesToShow = arrayMap(dataFilter.filter(), (rowData)=>rowData.row);
|
|
910
917
|
const rowIndexesToShowAssertion = createArrayAssertion(rowIndexesToShow);
|
|
918
|
+
const countSourceRows = this.hot.countSourceRows();
|
|
919
|
+
// Build the trimmed-state array in a single pass (`true` marks a row hidden by the filter), then
|
|
920
|
+
// write it to the map in one bulk `setValues` call. The previous approach scanned the dataset
|
|
921
|
+
// twice (a `clear()` that rebuilt the whole array, then a `rangeEach` pass) and fired a map
|
|
922
|
+
// `change` per trimmed row; for large datasets that was a measurable share of `filter()` time.
|
|
923
|
+
const trimmedRowsState = new Array(countSourceRows);
|
|
924
|
+
for(let physicalRow = 0; physicalRow < countSourceRows; physicalRow++){
|
|
925
|
+
trimmedRowsState[physicalRow] = !rowIndexesToShowAssertion(physicalRow);
|
|
926
|
+
}
|
|
911
927
|
this.hot.batchExecution(()=>{
|
|
912
|
-
this.filtersRowsMap?.
|
|
913
|
-
rangeEach(this.hot.countSourceRows() - 1, (row)=>{
|
|
914
|
-
if (!rowIndexesToShowAssertion(row)) {
|
|
915
|
-
trimmedRows.push(row);
|
|
916
|
-
}
|
|
917
|
-
});
|
|
918
|
-
arrayEach(trimmedRows, (physicalRow)=>{
|
|
919
|
-
this.filtersRowsMap?.setValueAtIndex(physicalRow, true);
|
|
920
|
-
});
|
|
928
|
+
this.filtersRowsMap?.setValues(trimmedRowsState);
|
|
921
929
|
}, true);
|
|
922
930
|
if (!navigableHeaders && !rowIndexesToShow.length) {
|
|
923
931
|
this.hot.deselectCell();
|
|
@@ -944,11 +952,11 @@ var /**
|
|
|
944
952
|
}
|
|
945
953
|
}
|
|
946
954
|
/**
|
|
947
|
-
* Gets last selected column
|
|
955
|
+
* Gets the last selected column as an object with visual and physical indexes.
|
|
948
956
|
*
|
|
949
957
|
* @returns {{visualIndex: number, physicalIndex: number} | null} Returns `null` when a column is
|
|
950
958
|
* not selected. Otherwise, returns an object with `visualIndex` and `physicalIndex` properties containing
|
|
951
|
-
*
|
|
959
|
+
* column indexes.
|
|
952
960
|
*/ getSelectedColumn() {
|
|
953
961
|
const highlight = this.hot.getSelectedRangeActive()?.highlight;
|
|
954
962
|
if (!highlight || highlight.col === null) {
|
|
@@ -962,19 +970,23 @@ var /**
|
|
|
962
970
|
/**
|
|
963
971
|
* Returns the full dataset for a column with cell meta for each row. The dataset is independent of
|
|
964
972
|
* any index mapper - no matter if the data is filtered, sorted, or otherwise transformed all rows
|
|
965
|
-
* are included.
|
|
973
|
+
* are included, unless `physicalRows` narrows the read to specific rows.
|
|
966
974
|
*
|
|
967
975
|
* @param {number} physicalColumn The physical column index.
|
|
968
|
-
* @
|
|
969
|
-
|
|
970
|
-
|
|
976
|
+
* @param {number[]} [physicalRows] When provided, only these physical rows are read (in the given
|
|
977
|
+
* order) instead of every source row.
|
|
978
|
+
* @returns {Array<{row: number, meta: CellProperties, value: *}>} Array of objects with `row` (the physical
|
|
979
|
+
* row index), `meta`, and `value`, one per read row. Consumers correlate rows through the `row` property -
|
|
980
|
+
* the coordinate stamps on `meta` are shared with other readers and may change after this method returns.
|
|
981
|
+
*/ getDataMapAtColumn(physicalColumn, physicalRows) {
|
|
982
|
+
const rowsCount = physicalRows ? physicalRows.length : this.hot.countSourceRows();
|
|
971
983
|
const visualColumn = this.hot.toVisualColumn(physicalColumn);
|
|
972
984
|
const data = [];
|
|
973
|
-
for(let
|
|
974
|
-
const
|
|
985
|
+
for(let rowIndex = 0; rowIndex < rowsCount; rowIndex++){
|
|
986
|
+
const physicalRow = physicalRows ? physicalRows[rowIndex] : rowIndex;
|
|
987
|
+
const cellMeta = this.hot._getMetaManager().getCellMetaUncached(physicalRow, physicalColumn, {
|
|
975
988
|
visualRow: physicalRow,
|
|
976
|
-
visualColumn: physicalColumn
|
|
977
|
-
skipMetaExtension: true
|
|
989
|
+
visualColumn: physicalColumn
|
|
978
990
|
});
|
|
979
991
|
let value = getValueGetterValue(this.hot.getSourceDataAtCell(physicalRow, visualColumn), cellMeta);
|
|
980
992
|
if (this.hot.hasHook('modifyData')) {
|
|
@@ -985,6 +997,7 @@ var /**
|
|
|
985
997
|
}
|
|
986
998
|
}
|
|
987
999
|
data.push({
|
|
1000
|
+
row: physicalRow,
|
|
988
1001
|
meta: cellMeta,
|
|
989
1002
|
value: toEmptyString(value)
|
|
990
1003
|
});
|
|
@@ -999,7 +1012,7 @@ var /**
|
|
|
999
1012
|
*/ updateValueComponentCondition(columnIndex) {
|
|
1000
1013
|
const visualColumnIndex = this.hot.toVisualColumn(columnIndex);
|
|
1001
1014
|
const dataAtCol = this.hot.getDataAtCol(visualColumnIndex);
|
|
1002
|
-
const columnMeta = this.hot.countRows() > 0 ? this.hot.
|
|
1015
|
+
const columnMeta = this.hot.countRows() > 0 ? this.hot.getCellMetaTransient(0, visualColumnIndex) : null;
|
|
1003
1016
|
const comparator = getSortComparatorForMeta(columnMeta);
|
|
1004
1017
|
const selectedValues = unifyColumnValues(dataAtCol, comparator);
|
|
1005
1018
|
this.conditionUpdateObserver?.updateStatesAtColumn(columnIndex, selectedValues);
|
|
@@ -1076,6 +1089,46 @@ var /**
|
|
|
1076
1089
|
}
|
|
1077
1090
|
}
|
|
1078
1091
|
/**
|
|
1092
|
+
* Gets the values the "filter by value" list of a column is built from.
|
|
1093
|
+
*
|
|
1094
|
+
* A column that carries conditions of its own reads the rows that survive the conditions of the
|
|
1095
|
+
* columns defined BEFORE it in the filter stack. Its own conditions are deliberately skipped - a
|
|
1096
|
+
* column's filter must not narrow down its own value list, or the values it filters out drop off
|
|
1097
|
+
* the list and become impossible to select again (issue #12226). A column with no conditions of
|
|
1098
|
+
* its own reads the currently visible data, which the other columns' filters already narrowed
|
|
1099
|
+
* down.
|
|
1100
|
+
*
|
|
1101
|
+
* @private
|
|
1102
|
+
* @param {number} column Visual column index.
|
|
1103
|
+
* @returns {Array<{value: *, meta: CellProperties}>} Array of objects with `value` and `meta`, one per row.
|
|
1104
|
+
*/ _getValueListDataAtColumn(column) {
|
|
1105
|
+
const physicalColumn = this.hot.toPhysicalColumn(column);
|
|
1106
|
+
const stackPosition = this.conditionCollection?.getColumnStackPosition(physicalColumn) ?? -1;
|
|
1107
|
+
// A data provider filters server-side and the list is hidden anyway, so re-running the
|
|
1108
|
+
// conditions locally would filter data that is already filtered.
|
|
1109
|
+
if (stackPosition === -1 || _class_private_field_get(this, _isDataProviderActive)) {
|
|
1110
|
+
return arrayMap(this.hot.getDataAtCol(column), (value, rowIndex)=>({
|
|
1111
|
+
value: toEmptyString(value),
|
|
1112
|
+
meta: this.hot.getCellMetaTransient(rowIndex, column)
|
|
1113
|
+
}));
|
|
1114
|
+
}
|
|
1115
|
+
const allRows = this.getDataMapAtColumn(physicalColumn);
|
|
1116
|
+
const conditionsBefore = (this.conditionCollection?.exportAllConditions() ?? []).slice(0, stackPosition);
|
|
1117
|
+
if (conditionsBefore.length === 0) {
|
|
1118
|
+
return allRows;
|
|
1119
|
+
}
|
|
1120
|
+
const splitConditionCollection = new ConditionCollection(this.hot, false);
|
|
1121
|
+
splitConditionCollection.importAllConditions(conditionsBefore);
|
|
1122
|
+
// Rows are correlated through the entry's own `row` property - the coordinate stamps on `meta`
|
|
1123
|
+
// are shared with every other meta reader and may have been overwritten since.
|
|
1124
|
+
// `DataFilter` is typed against `unknown[]` throughout, so its entries are narrowed here - the
|
|
1125
|
+
// same boundary cast `DataFilter.filter()` and `ConditionUpdateObserver` already make.
|
|
1126
|
+
const survivingRows = arrayMap(this._createDataFilter(splitConditionCollection).filter(), (rowData)=>rowData.row);
|
|
1127
|
+
const survivingRowsAssertion = createArrayAssertion(survivingRows);
|
|
1128
|
+
splitConditionCollection.destroy();
|
|
1129
|
+
return arrayFilter(allRows, (rowData)=>survivingRowsAssertion(rowData.row));
|
|
1130
|
+
}
|
|
1131
|
+
/**
|
|
1079
1132
|
* Creates DataFilter instance based on condition collection.
|
|
1080
1133
|
*
|
|
1081
1134
|
* @private
|
|
@@ -1085,7 +1138,7 @@ var /**
|
|
|
1085
1138
|
if (!conditionCollection) {
|
|
1086
1139
|
conditionCollection = new ConditionCollection(this.hot, false);
|
|
1087
1140
|
}
|
|
1088
|
-
return new DataFilter(conditionCollection, (physicalColumn)=>this.getDataMapAtColumn(physicalColumn));
|
|
1141
|
+
return new DataFilter(conditionCollection, (physicalColumn, physicalRows)=>this.getDataMapAtColumn(physicalColumn, physicalRows));
|
|
1089
1142
|
}
|
|
1090
1143
|
/**
|
|
1091
1144
|
* Returns indexes of passed components inside list of `dropdownMenu` items.
|
|
@@ -1252,14 +1305,21 @@ var /**
|
|
|
1252
1305
|
* @type {null|TrimmingMap}
|
|
1253
1306
|
*/ this.filtersRowsMap = null, _class_private_field_set(this, _dropdownMenuTraces, new WeakSet()), _class_private_field_set(this, _previousConditionStack, []), _class_private_field_set(this, _dataProviderFilterRollbackStack, []), _class_private_field_set(this, _isDataProviderActive, false), _class_private_field_set(this, _onAfterChange, (changes)=>{
|
|
1254
1307
|
if (changes) {
|
|
1308
|
+
// A single batch (paste, fill, undo) can carry thousands of changes that hit the same
|
|
1309
|
+
// column. The value-component refresh reads and sorts the whole column, so run it once
|
|
1310
|
+
// per distinct filtered column instead of once per changed cell.
|
|
1311
|
+
const changedColumns = new Set();
|
|
1255
1312
|
arrayEach(changes, (change)=>{
|
|
1256
1313
|
const [, prop] = change;
|
|
1257
1314
|
const visualColumnIndex = this.hot.propToCol(prop);
|
|
1258
1315
|
const physicalColumnIndex = this.hot.toPhysicalColumn(visualColumnIndex);
|
|
1259
1316
|
if (this.conditionCollection?.hasConditions(physicalColumnIndex)) {
|
|
1260
|
-
|
|
1317
|
+
changedColumns.add(physicalColumnIndex);
|
|
1261
1318
|
}
|
|
1262
1319
|
});
|
|
1320
|
+
changedColumns.forEach((physicalColumnIndex)=>{
|
|
1321
|
+
this.updateValueComponentCondition(physicalColumnIndex);
|
|
1322
|
+
});
|
|
1263
1323
|
}
|
|
1264
1324
|
}), _class_private_field_set(this, _onAfterUpdateData, (_data, firstRun)=>{
|
|
1265
1325
|
if (firstRun || _class_private_field_get(this, _isDataProviderActive) || !this.conditionCollection) {
|
|
@@ -6,11 +6,18 @@
|
|
|
6
6
|
* @returns {Function}
|
|
7
7
|
*/
|
|
8
8
|
export declare function createISODateSortComparator(): (a: unknown, b: unknown) => number;
|
|
9
|
+
/**
|
|
10
|
+
* Returns a comparator for sorting `intl-datetime` cell values chronologically.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Function}
|
|
13
|
+
*/
|
|
14
|
+
export declare function createISODateTimeSortComparator(): (a: unknown, b: unknown) => number;
|
|
9
15
|
/**
|
|
10
16
|
* Returns the appropriate sort comparator for the given column cell meta, or `undefined` if
|
|
11
17
|
* no cell-type-specific comparator is needed (falls back to `unifyColumnValues` default).
|
|
12
18
|
*
|
|
13
|
-
* @param {
|
|
19
|
+
* @param {*} meta The cell meta object for the column. Anything that is not an object carrying a
|
|
20
|
+
* `type` is treated as "no comparator", so callers may pass a loosely typed data-map entry.
|
|
14
21
|
* @returns {Function|undefined}
|
|
15
22
|
*/
|
|
16
|
-
export declare function getSortComparatorForMeta(meta:
|
|
23
|
+
export declare function getSortComparatorForMeta(meta: unknown): ((a: unknown, b: unknown) => number) | undefined;
|
|
@@ -12,6 +12,9 @@ _export(exports, {
|
|
|
12
12
|
get createISODateSortComparator () {
|
|
13
13
|
return createISODateSortComparator;
|
|
14
14
|
},
|
|
15
|
+
get createISODateTimeSortComparator () {
|
|
16
|
+
return createISODateTimeSortComparator;
|
|
17
|
+
},
|
|
15
18
|
get getSortComparatorForMeta () {
|
|
16
19
|
return getSortComparatorForMeta;
|
|
17
20
|
}
|
|
@@ -44,12 +47,42 @@ function createISODateSortComparator() {
|
|
|
44
47
|
return dateA - dateB;
|
|
45
48
|
};
|
|
46
49
|
}
|
|
50
|
+
function createISODateTimeSortComparator() {
|
|
51
|
+
return (aVal, bVal)=>{
|
|
52
|
+
const a = aVal;
|
|
53
|
+
const b = bVal;
|
|
54
|
+
if (a === '' && b === '') {
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
if (a === '') {
|
|
58
|
+
return -1;
|
|
59
|
+
}
|
|
60
|
+
if (b === '') {
|
|
61
|
+
return 1;
|
|
62
|
+
}
|
|
63
|
+
const dateA = (0, _dateTime.parseToLocalDateTime)(a);
|
|
64
|
+
const dateB = (0, _dateTime.parseToLocalDateTime)(b);
|
|
65
|
+
if (dateA === null && dateB === null) {
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
if (dateA === null) {
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
if (dateB === null) {
|
|
72
|
+
return -1;
|
|
73
|
+
}
|
|
74
|
+
return dateA - dateB;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
47
77
|
function getSortComparatorForMeta(meta) {
|
|
48
|
-
if (!meta) {
|
|
78
|
+
if (meta === null || typeof meta !== 'object' || !('type' in meta)) {
|
|
49
79
|
return undefined;
|
|
50
80
|
}
|
|
51
81
|
if (meta.type === 'date' || meta.type === 'intl-date') {
|
|
52
82
|
return createISODateSortComparator();
|
|
53
83
|
}
|
|
84
|
+
if (meta.type === 'intl-datetime') {
|
|
85
|
+
return createISODateTimeSortComparator();
|
|
86
|
+
}
|
|
54
87
|
return undefined;
|
|
55
88
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseToLocalDate } from '../../helpers/dateTime.mjs';
|
|
1
|
+
import { parseToLocalDate, parseToLocalDateTime } from '../../helpers/dateTime.mjs';
|
|
2
2
|
/**
|
|
3
3
|
* Returns a comparator function for sorting `intl-date` cell type values.
|
|
4
4
|
* Source data for `intl-date` is always ISO 8601 ("YYYY-MM-DD").
|
|
@@ -32,18 +32,53 @@ import { parseToLocalDate } from '../../helpers/dateTime.mjs';
|
|
|
32
32
|
return dateA - dateB;
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns a comparator for sorting `intl-datetime` cell values chronologically.
|
|
37
|
+
*
|
|
38
|
+
* @returns {Function}
|
|
39
|
+
*/ export function createISODateTimeSortComparator() {
|
|
40
|
+
return (aVal, bVal)=>{
|
|
41
|
+
const a = aVal;
|
|
42
|
+
const b = bVal;
|
|
43
|
+
if (a === '' && b === '') {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
if (a === '') {
|
|
47
|
+
return -1;
|
|
48
|
+
}
|
|
49
|
+
if (b === '') {
|
|
50
|
+
return 1;
|
|
51
|
+
}
|
|
52
|
+
const dateA = parseToLocalDateTime(a);
|
|
53
|
+
const dateB = parseToLocalDateTime(b);
|
|
54
|
+
if (dateA === null && dateB === null) {
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
if (dateA === null) {
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
if (dateB === null) {
|
|
61
|
+
return -1;
|
|
62
|
+
}
|
|
63
|
+
return dateA - dateB;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
35
66
|
/**
|
|
36
67
|
* Returns the appropriate sort comparator for the given column cell meta, or `undefined` if
|
|
37
68
|
* no cell-type-specific comparator is needed (falls back to `unifyColumnValues` default).
|
|
38
69
|
*
|
|
39
|
-
* @param {
|
|
70
|
+
* @param {*} meta The cell meta object for the column. Anything that is not an object carrying a
|
|
71
|
+
* `type` is treated as "no comparator", so callers may pass a loosely typed data-map entry.
|
|
40
72
|
* @returns {Function|undefined}
|
|
41
73
|
*/ export function getSortComparatorForMeta(meta) {
|
|
42
|
-
if (!meta) {
|
|
74
|
+
if (meta === null || typeof meta !== 'object' || !('type' in meta)) {
|
|
43
75
|
return undefined;
|
|
44
76
|
}
|
|
45
77
|
if (meta.type === 'date' || meta.type === 'intl-date') {
|
|
46
78
|
return createISODateSortComparator();
|
|
47
79
|
}
|
|
80
|
+
if (meta.type === 'intl-datetime') {
|
|
81
|
+
return createISODateTimeSortComparator();
|
|
82
|
+
}
|
|
48
83
|
return undefined;
|
|
49
84
|
}
|