handsontable 18.0.0 → 18.1.0-rc11
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 +42 -12
- package/3rdparty/walkontable/src/event.js +262 -228
- package/3rdparty/walkontable/src/event.mjs +260 -227
- 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 +125 -30
- 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 +30344 -11326
- package/dist/handsontable.full.min.js +168 -112
- package/dist/handsontable.js +31421 -12464
- 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/dom/inputOrigin.d.mts +1 -0
- package/helpers/dom/inputOrigin.d.ts +38 -0
- package/helpers/dom/inputOrigin.js +54 -0
- package/helpers/dom/inputOrigin.mjs +48 -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 +388 -4
- package/helpers/mixed.mjs +428 -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.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 +223 -53
- package/tableView.mjs +224 -54
- 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 +75 -0
- package/utils/entitlementLicenseKey/constants.js +54 -0
- package/utils/entitlementLicenseKey/constants.mjs +72 -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 +90 -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 +70 -0
- package/utils/licenseBranding/index.mjs +71 -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
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/* eslint-disable no-bitwise */ /**
|
|
2
|
+
* The base64 alphabet.
|
|
3
|
+
*
|
|
4
|
+
* @type {string}
|
|
5
|
+
*/ const BASE64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
6
|
+
/**
|
|
7
|
+
* Encodes the string as UTF-8 bytes. The plain implementation is used on purpose.
|
|
8
|
+
* It does not depend on `TextEncoder` or `Buffer`, so the same code works in
|
|
9
|
+
* Node.js and in every browser, including plain http:// pages.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} string The string to encode.
|
|
12
|
+
* @returns {number[]}
|
|
13
|
+
*/ export function stringToUtf8Bytes(string) {
|
|
14
|
+
const bytes = [];
|
|
15
|
+
for(let i = 0; i < string.length; i += 1){
|
|
16
|
+
let codePoint = string.charCodeAt(i);
|
|
17
|
+
// Combine a surrogate pair into a single code point.
|
|
18
|
+
if (codePoint >= 0xd800 && codePoint <= 0xdbff && i + 1 < string.length) {
|
|
19
|
+
const lowSurrogate = string.charCodeAt(i + 1);
|
|
20
|
+
if (lowSurrogate >= 0xdc00 && lowSurrogate <= 0xdfff) {
|
|
21
|
+
codePoint = (codePoint - 0xd800) * 0x400 + (lowSurrogate - 0xdc00) + 0x10000;
|
|
22
|
+
i += 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (codePoint < 0x80) {
|
|
26
|
+
bytes.push(codePoint);
|
|
27
|
+
} else if (codePoint < 0x800) {
|
|
28
|
+
bytes.push(0xc0 | codePoint >> 6, 0x80 | codePoint & 0x3f);
|
|
29
|
+
} else if (codePoint < 0x10000) {
|
|
30
|
+
bytes.push(0xe0 | codePoint >> 12, 0x80 | codePoint >> 6 & 0x3f, 0x80 | codePoint & 0x3f);
|
|
31
|
+
} else {
|
|
32
|
+
bytes.push(0xf0 | codePoint >> 18, 0x80 | codePoint >> 12 & 0x3f, 0x80 | codePoint >> 6 & 0x3f, 0x80 | codePoint & 0x3f);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return bytes;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Decodes UTF-8 bytes back into a string.
|
|
39
|
+
*
|
|
40
|
+
* @param {number[]} bytes The bytes to decode.
|
|
41
|
+
* @returns {string}
|
|
42
|
+
*/ export function utf8BytesToString(bytes) {
|
|
43
|
+
let string = '';
|
|
44
|
+
let i = 0;
|
|
45
|
+
while(i < bytes.length){
|
|
46
|
+
const byte = bytes[i];
|
|
47
|
+
let codePoint;
|
|
48
|
+
if (byte < 0x80) {
|
|
49
|
+
codePoint = byte;
|
|
50
|
+
i += 1;
|
|
51
|
+
} else if (byte < 0xe0) {
|
|
52
|
+
codePoint = (byte & 0x1f) << 6 | bytes[i + 1] & 0x3f;
|
|
53
|
+
i += 2;
|
|
54
|
+
} else if (byte < 0xf0) {
|
|
55
|
+
codePoint = (byte & 0x0f) << 12 | (bytes[i + 1] & 0x3f) << 6 | bytes[i + 2] & 0x3f;
|
|
56
|
+
i += 3;
|
|
57
|
+
} else {
|
|
58
|
+
codePoint = (byte & 0x07) << 18 | (bytes[i + 1] & 0x3f) << 12 | (bytes[i + 2] & 0x3f) << 6 | bytes[i + 3] & 0x3f;
|
|
59
|
+
i += 4;
|
|
60
|
+
}
|
|
61
|
+
if (codePoint >= 0x10000) {
|
|
62
|
+
// Split the code point back into a surrogate pair.
|
|
63
|
+
codePoint -= 0x10000;
|
|
64
|
+
string += String.fromCharCode(0xd800 + (codePoint >> 10), 0xdc00 + (codePoint & 0x3ff));
|
|
65
|
+
} else {
|
|
66
|
+
string += String.fromCharCode(codePoint);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Encodes the bytes as a base64 string (standard alphabet, with padding).
|
|
73
|
+
*
|
|
74
|
+
* @param {number[]} bytes The bytes to encode.
|
|
75
|
+
* @returns {string}
|
|
76
|
+
*/ export function bytesToBase64(bytes) {
|
|
77
|
+
let base64 = '';
|
|
78
|
+
for(let i = 0; i < bytes.length; i += 3){
|
|
79
|
+
const byte1 = bytes[i];
|
|
80
|
+
const byte2 = bytes[i + 1];
|
|
81
|
+
const byte3 = bytes[i + 2];
|
|
82
|
+
base64 += BASE64_ALPHABET.charAt(byte1 >> 2);
|
|
83
|
+
base64 += BASE64_ALPHABET.charAt((byte1 & 0x03) << 4 | (byte2 === undefined ? 0 : byte2 >> 4));
|
|
84
|
+
base64 += byte2 === undefined ? '=' : BASE64_ALPHABET.charAt((byte2 & 0x0f) << 2 | (byte3 === undefined ? 0 : byte3 >> 6));
|
|
85
|
+
base64 += byte3 === undefined ? '=' : BASE64_ALPHABET.charAt(byte3 & 0x3f);
|
|
86
|
+
}
|
|
87
|
+
return base64;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Decodes a base64 string (standard or URL-safe alphabet, padding optional)
|
|
91
|
+
* back into bytes. Returns `null` when the string is not valid base64.
|
|
92
|
+
*
|
|
93
|
+
* @param {string} base64 The base64 string to decode.
|
|
94
|
+
* @returns {number[]|null}
|
|
95
|
+
*/ export function base64ToBytes(base64) {
|
|
96
|
+
const normalized = `${base64}`.replace(/-/g, '+').replace(/_/g, '/').replace(/=+$/, '');
|
|
97
|
+
if (!/^[A-Za-z0-9+/]*$/.test(normalized) || normalized.length % 4 === 1) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const bytes = [];
|
|
101
|
+
for(let i = 0; i < normalized.length; i += 4){
|
|
102
|
+
const chunk = [
|
|
103
|
+
0,
|
|
104
|
+
1,
|
|
105
|
+
2,
|
|
106
|
+
3
|
|
107
|
+
].map((offset)=>{
|
|
108
|
+
const char = normalized.charAt(i + offset);
|
|
109
|
+
// `indexOf('')` would return 0, so the missing characters of the last
|
|
110
|
+
// chunk have to be mapped to -1 explicitly.
|
|
111
|
+
return char === '' ? -1 : BASE64_ALPHABET.indexOf(char);
|
|
112
|
+
});
|
|
113
|
+
bytes.push(chunk[0] << 2 | chunk[1] >> 4);
|
|
114
|
+
if (chunk[2] !== -1) {
|
|
115
|
+
bytes.push((chunk[1] & 0x0f) << 4 | chunk[2] >> 2);
|
|
116
|
+
}
|
|
117
|
+
if (chunk[3] !== -1) {
|
|
118
|
+
bytes.push((chunk[2] & 0x03) << 6 | chunk[3]);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return bytes;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Encodes the string as a URL-safe base64 string without padding (the same
|
|
125
|
+
* format as the JWT payload segment).
|
|
126
|
+
*
|
|
127
|
+
* @param {string} string The string to encode.
|
|
128
|
+
* @returns {string}
|
|
129
|
+
*/ export function stringToBase64Url(string) {
|
|
130
|
+
return bytesToBase64(stringToUtf8Bytes(string)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Decodes a base64 (standard or URL-safe) string back into a string.
|
|
134
|
+
* Returns `null` when the input is not valid base64.
|
|
135
|
+
*
|
|
136
|
+
* @param {string} base64 The base64 string to decode.
|
|
137
|
+
* @returns {string|null}
|
|
138
|
+
*/ export function base64ToString(base64) {
|
|
139
|
+
const bytes = base64ToBytes(base64);
|
|
140
|
+
return bytes === null ? null : utf8BytesToString(bytes);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Parses a date in the "YYYY-MM-DD" format into the epoch milliseconds of its
|
|
144
|
+
* UTC midnight. Returns `null` when the date is malformed or does not exist in
|
|
145
|
+
* the calendar (for example "2027-02-30"). Unlike the generator side, the
|
|
146
|
+
* reader never throws on a bad date - a broken payload simply makes the key
|
|
147
|
+
* unreadable.
|
|
148
|
+
*
|
|
149
|
+
* @param {string} isoDate The date to parse.
|
|
150
|
+
* @returns {number|null}
|
|
151
|
+
*/ export function parseIsoDateToTimestamp(isoDate) {
|
|
152
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(`${isoDate}`);
|
|
153
|
+
if (match === null) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const year = parseInt(match[1], 10);
|
|
157
|
+
const month = parseInt(match[2], 10);
|
|
158
|
+
const day = parseInt(match[3], 10);
|
|
159
|
+
// Date.UTC maps years 0-99 to 1900-1999, which would make the round-trip
|
|
160
|
+
// check below report a "not a valid calendar date" lie.
|
|
161
|
+
if (year < 100) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const timestamp = Date.UTC(year, month - 1, day);
|
|
165
|
+
const date = new Date(timestamp);
|
|
166
|
+
// An impossible date (e.g. "2027-02-30") makes `Date.UTC` roll over to
|
|
167
|
+
// the next month, so a round-trip comparison catches it.
|
|
168
|
+
if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month - 1 || date.getUTCDate() !== day) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
return timestamp;
|
|
172
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './extractKeyData.js';
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { EntitlementKeyData, ProductEntitlement } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Adds an own, ordinary property.
|
|
4
|
+
*
|
|
5
|
+
* Both the product names and the field names of a product entry come from
|
|
6
|
+
* JSON, so "__proto__" is a name an attacker can put in a key. A plain
|
|
7
|
+
* assignment would go through the `Object.prototype` setter: the value would
|
|
8
|
+
* vanish from `Object.keys` while still resolving through the chain. Exported
|
|
9
|
+
* because every payload-keyed write in this module must use it - `grants.ts`
|
|
10
|
+
* re-keys the same product names.
|
|
11
|
+
*
|
|
12
|
+
* @param {object} target The object to add the property to.
|
|
13
|
+
* @param {string} key The property name.
|
|
14
|
+
* @param {*} value The property value.
|
|
15
|
+
* @returns {void}
|
|
16
|
+
*/
|
|
17
|
+
export declare function defineOwn(target: object, key: string, value: unknown): void;
|
|
18
|
+
/**
|
|
19
|
+
* Extracts the machine-readable data from an entitlement license key.
|
|
20
|
+
*
|
|
21
|
+
* The checksum is verified first, so the returned data is guaranteed to belong
|
|
22
|
+
* to an intact block. A malformed or tampered key reads as `null` - reporting
|
|
23
|
+
* an invalid key is the caller's job, not this function's.
|
|
24
|
+
*
|
|
25
|
+
* Only the bracketed block matters. The prose in front of it is neither parsed
|
|
26
|
+
* nor covered by the checksum, so the caller may pass the whole key or just the
|
|
27
|
+
* `[...]` block, and rewrapped or re-pasted prose still validates. The block
|
|
28
|
+
* itself has to be intact: its alphabet has no whitespace, so a newline inside
|
|
29
|
+
* it makes the key unreadable, exactly as it does for the key generator.
|
|
30
|
+
*
|
|
31
|
+
* Unknown products, capability tokens and flags are all tolerated, so nothing
|
|
32
|
+
* about reading a key depends on the commercial vocabulary.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} licenseKey The license key to extract the data from.
|
|
35
|
+
* @returns {EntitlementKeyData|null}
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractEntitlementKeyData(licenseKey: string): EntitlementKeyData | null;
|
|
38
|
+
/**
|
|
39
|
+
* Returns the entitlement of one product, but only when it is present as an own
|
|
40
|
+
* property. Used by the lifecycle and grants layers to read one product without
|
|
41
|
+
* trusting the prototype chain.
|
|
42
|
+
*
|
|
43
|
+
* @param {EntitlementKeyData} keyData The verified key data.
|
|
44
|
+
* @param {string} productName The product to read.
|
|
45
|
+
* @returns {ProductEntitlement|null}
|
|
46
|
+
*/
|
|
47
|
+
export declare function getProductEntitlement(keyData: EntitlementKeyData, productName: string): ProductEntitlement | null;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get defineOwn () {
|
|
13
|
+
return defineOwn;
|
|
14
|
+
},
|
|
15
|
+
get extractEntitlementKeyData () {
|
|
16
|
+
return extractEntitlementKeyData;
|
|
17
|
+
},
|
|
18
|
+
get getProductEntitlement () {
|
|
19
|
+
return getProductEntitlement;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const _constants = require("./constants");
|
|
23
|
+
const _sha512 = require("./sha512");
|
|
24
|
+
const _encoding = require("./encoding");
|
|
25
|
+
/**
|
|
26
|
+
* The alphabet of the encoded payload - URL-safe base64 without padding. The
|
|
27
|
+
* checksum (lowercase hex) is a subset of it, which is what lets the two be
|
|
28
|
+
* split by a fixed length from the right.
|
|
29
|
+
*
|
|
30
|
+
* @type {RegExp}
|
|
31
|
+
*/ const ENCODED_PAYLOAD = /^[A-Za-z0-9\-_]+$/;
|
|
32
|
+
const CHECKSUM = /^[0-9a-f]+$/;
|
|
33
|
+
/**
|
|
34
|
+
* Reports own-property presence without trusting a payload's inherited or
|
|
35
|
+
* overridden `hasOwnProperty`.
|
|
36
|
+
*
|
|
37
|
+
* @param {object} object The object to inspect.
|
|
38
|
+
* @param {string} key The property name to look up.
|
|
39
|
+
* @returns {boolean}
|
|
40
|
+
*/ function hasOwn(object, key) {
|
|
41
|
+
return Object.prototype.hasOwnProperty.call(object, key);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Narrows an unknown value to a plain (non-null, non-array) object.
|
|
45
|
+
*
|
|
46
|
+
* @param {*} value The value to check.
|
|
47
|
+
* @returns {boolean}
|
|
48
|
+
*/ function isPlainObject(value) {
|
|
49
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns `true` when the value is a non-negative integer. `Number.isFinite`
|
|
53
|
+
* also rejects `Infinity` (JSON `1e999` parses to it), which would otherwise
|
|
54
|
+
* turn a window size into a non-finite date downstream.
|
|
55
|
+
*
|
|
56
|
+
* @param {*} value The value to check.
|
|
57
|
+
* @returns {boolean}
|
|
58
|
+
*/ function isNonNegativeInteger(value) {
|
|
59
|
+
return typeof value === 'number' && Number.isFinite(value) && Math.floor(value) === value && value >= 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns `true` when the value is an array of strings.
|
|
63
|
+
*
|
|
64
|
+
* @param {*} value The value to check.
|
|
65
|
+
* @returns {boolean}
|
|
66
|
+
*/ function isStringArray(value) {
|
|
67
|
+
return Array.isArray(value) && value.every((item)=>typeof item === 'string');
|
|
68
|
+
}
|
|
69
|
+
function defineOwn(target, key, value) {
|
|
70
|
+
Object.defineProperty(target, key, {
|
|
71
|
+
value,
|
|
72
|
+
enumerable: true,
|
|
73
|
+
writable: true,
|
|
74
|
+
configurable: true
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Verifies and normalizes one product entry.
|
|
79
|
+
*
|
|
80
|
+
* Strict about SHAPE: exactly one of the two dates, a real calendar date, and
|
|
81
|
+
* the two window sizes. A key that gets this wrong is malformed, not merely
|
|
82
|
+
* unknown, and reading it would mean guessing what was licensed.
|
|
83
|
+
*
|
|
84
|
+
* Lenient about VOCABULARY: an unrecognized capability token, an unrecognized
|
|
85
|
+
* flag and an unrecognized extra field are all kept and ignored. Without that
|
|
86
|
+
* leniency every token added on the issuing side would break every build
|
|
87
|
+
* already deployed in the field.
|
|
88
|
+
*
|
|
89
|
+
* Returns `null` when the entry is malformed.
|
|
90
|
+
*
|
|
91
|
+
* @param {*} entry The product entry of the payload.
|
|
92
|
+
* @returns {ProductEntitlement|null}
|
|
93
|
+
*/ function normalizeProductEntry(entry) {
|
|
94
|
+
if (!isPlainObject(entry)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
if (!isStringArray(entry.capabilities)) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
const presentDateFields = _constants.DATE_FIELDS.filter((field)=>entry[field] !== undefined);
|
|
101
|
+
// Exactly one date per product. "Both" and "neither" are each a different
|
|
102
|
+
// commercial shape that the format cannot express, so neither may be silently
|
|
103
|
+
// resolved by whichever field the reader happens to look at first.
|
|
104
|
+
if (presentDateFields.length !== 1) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if ((0, _encoding.parseIsoDateToTimestamp)(`${entry[presentDateFields[0]]}`) === null) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
if (!isNonNegativeInteger(entry.notice) || !isNonNegativeInteger(entry.grace)) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
if (entry.flags !== undefined && !isStringArray(entry.flags)) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
// Start from everything the entry carries, so a field this version does not
|
|
117
|
+
// know survives into the result instead of being silently dropped. A field
|
|
118
|
+
// added to the format later is exactly the case a vendored reader has to
|
|
119
|
+
// survive, and one that quietly discards it makes the field invisible to the
|
|
120
|
+
// layers above.
|
|
121
|
+
const normalized = {};
|
|
122
|
+
Object.keys(entry).forEach((field)=>defineOwn(normalized, field, entry[field]));
|
|
123
|
+
defineOwn(normalized, 'capabilities', entry.capabilities.slice());
|
|
124
|
+
defineOwn(normalized, 'notice', entry.notice);
|
|
125
|
+
defineOwn(normalized, 'grace', entry.grace);
|
|
126
|
+
// An absent array and an empty one mean the same thing. Normalizing here
|
|
127
|
+
// keeps `flags.indexOf('trial')` safe at every call site.
|
|
128
|
+
defineOwn(normalized, 'flags', entry.flags === undefined ? [] : entry.flags.slice());
|
|
129
|
+
defineOwn(normalized, presentDateFields[0], entry[presentDateFields[0]]);
|
|
130
|
+
return normalized;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Reads and verifies one key. Split out from the memoized public entry point so
|
|
134
|
+
* the memo can wrap every exit path uniformly.
|
|
135
|
+
*
|
|
136
|
+
* @param {string} licenseKey The license key to read.
|
|
137
|
+
* @returns {EntitlementKeyData|null}
|
|
138
|
+
*/ function readEntitlementKeyData(licenseKey) {
|
|
139
|
+
// The machine-readable block closes the key. Searching backwards means a
|
|
140
|
+
// bracket inside the prose cannot shadow it.
|
|
141
|
+
const blockStart = licenseKey.lastIndexOf('[');
|
|
142
|
+
if (blockStart === -1) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const blockEnd = licenseKey.indexOf(']', blockStart);
|
|
146
|
+
if (blockEnd === -1) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
const content = licenseKey.slice(blockStart + 1, blockEnd);
|
|
150
|
+
if (content.length <= _constants.CHECKSUM_LENGTH) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
const encodedPayload = content.slice(0, -_constants.CHECKSUM_LENGTH);
|
|
154
|
+
const checksum = content.slice(-_constants.CHECKSUM_LENGTH);
|
|
155
|
+
if (!ENCODED_PAYLOAD.test(encodedPayload) || !CHECKSUM.test(checksum)) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
if ((0, _sha512.sha512)((0, _encoding.stringToUtf8Bytes)(encodedPayload)) !== checksum) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const payloadJson = (0, _encoding.base64ToString)(encodedPayload);
|
|
162
|
+
if (payloadJson === null) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
let payload;
|
|
166
|
+
try {
|
|
167
|
+
payload = JSON.parse(payloadJson);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
if (!isPlainObject(payload) || !isPlainObject(payload.products)) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
const products = {};
|
|
175
|
+
const entries = payload.products;
|
|
176
|
+
let malformed = false;
|
|
177
|
+
Object.keys(entries).forEach((name)=>{
|
|
178
|
+
const entry = normalizeProductEntry(entries[name]);
|
|
179
|
+
if (entry === null) {
|
|
180
|
+
malformed = true;
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
defineOwn(products, name, entry);
|
|
184
|
+
});
|
|
185
|
+
if (malformed) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
products
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// The license key is read twice per grid init - the bottom bar
|
|
193
|
+
// (`initLicenseNotification`) and the branding UI (`initLicenseBranding`) each resolve the license
|
|
194
|
+
// state - and reading runs the full SHA-512 + base64 + JSON parse. A one-entry memo on the key makes
|
|
195
|
+
// the second read free. The returned data is treated as read-only by every caller, so sharing one
|
|
196
|
+
// object is safe.
|
|
197
|
+
let memoizedKey = null;
|
|
198
|
+
let memoizedData = null;
|
|
199
|
+
function extractEntitlementKeyData(licenseKey) {
|
|
200
|
+
const key = `${licenseKey}`;
|
|
201
|
+
if (key !== memoizedKey) {
|
|
202
|
+
memoizedKey = key;
|
|
203
|
+
memoizedData = readEntitlementKeyData(key);
|
|
204
|
+
}
|
|
205
|
+
return memoizedData;
|
|
206
|
+
}
|
|
207
|
+
function getProductEntitlement(keyData, productName) {
|
|
208
|
+
if (!hasOwn(keyData.products, productName)) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
const product = keyData.products[productName];
|
|
212
|
+
return isPlainObject(product) ? product : null;
|
|
213
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { CHECKSUM_LENGTH, DATE_FIELDS } from './constants.mjs';
|
|
2
|
+
import { sha512 } from './sha512.mjs';
|
|
3
|
+
import { base64ToString, stringToUtf8Bytes, parseIsoDateToTimestamp } from './encoding.mjs';
|
|
4
|
+
/**
|
|
5
|
+
* The alphabet of the encoded payload - URL-safe base64 without padding. The
|
|
6
|
+
* checksum (lowercase hex) is a subset of it, which is what lets the two be
|
|
7
|
+
* split by a fixed length from the right.
|
|
8
|
+
*
|
|
9
|
+
* @type {RegExp}
|
|
10
|
+
*/ const ENCODED_PAYLOAD = /^[A-Za-z0-9\-_]+$/;
|
|
11
|
+
const CHECKSUM = /^[0-9a-f]+$/;
|
|
12
|
+
/**
|
|
13
|
+
* Reports own-property presence without trusting a payload's inherited or
|
|
14
|
+
* overridden `hasOwnProperty`.
|
|
15
|
+
*
|
|
16
|
+
* @param {object} object The object to inspect.
|
|
17
|
+
* @param {string} key The property name to look up.
|
|
18
|
+
* @returns {boolean}
|
|
19
|
+
*/ function hasOwn(object, key) {
|
|
20
|
+
return Object.prototype.hasOwnProperty.call(object, key);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Narrows an unknown value to a plain (non-null, non-array) object.
|
|
24
|
+
*
|
|
25
|
+
* @param {*} value The value to check.
|
|
26
|
+
* @returns {boolean}
|
|
27
|
+
*/ function isPlainObject(value) {
|
|
28
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns `true` when the value is a non-negative integer. `Number.isFinite`
|
|
32
|
+
* also rejects `Infinity` (JSON `1e999` parses to it), which would otherwise
|
|
33
|
+
* turn a window size into a non-finite date downstream.
|
|
34
|
+
*
|
|
35
|
+
* @param {*} value The value to check.
|
|
36
|
+
* @returns {boolean}
|
|
37
|
+
*/ function isNonNegativeInteger(value) {
|
|
38
|
+
return typeof value === 'number' && Number.isFinite(value) && Math.floor(value) === value && value >= 0;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Returns `true` when the value is an array of strings.
|
|
42
|
+
*
|
|
43
|
+
* @param {*} value The value to check.
|
|
44
|
+
* @returns {boolean}
|
|
45
|
+
*/ function isStringArray(value) {
|
|
46
|
+
return Array.isArray(value) && value.every((item)=>typeof item === 'string');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Adds an own, ordinary property.
|
|
50
|
+
*
|
|
51
|
+
* Both the product names and the field names of a product entry come from
|
|
52
|
+
* JSON, so "__proto__" is a name an attacker can put in a key. A plain
|
|
53
|
+
* assignment would go through the `Object.prototype` setter: the value would
|
|
54
|
+
* vanish from `Object.keys` while still resolving through the chain. Exported
|
|
55
|
+
* because every payload-keyed write in this module must use it - `grants.ts`
|
|
56
|
+
* re-keys the same product names.
|
|
57
|
+
*
|
|
58
|
+
* @param {object} target The object to add the property to.
|
|
59
|
+
* @param {string} key The property name.
|
|
60
|
+
* @param {*} value The property value.
|
|
61
|
+
* @returns {void}
|
|
62
|
+
*/ export function defineOwn(target, key, value) {
|
|
63
|
+
Object.defineProperty(target, key, {
|
|
64
|
+
value,
|
|
65
|
+
enumerable: true,
|
|
66
|
+
writable: true,
|
|
67
|
+
configurable: true
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Verifies and normalizes one product entry.
|
|
72
|
+
*
|
|
73
|
+
* Strict about SHAPE: exactly one of the two dates, a real calendar date, and
|
|
74
|
+
* the two window sizes. A key that gets this wrong is malformed, not merely
|
|
75
|
+
* unknown, and reading it would mean guessing what was licensed.
|
|
76
|
+
*
|
|
77
|
+
* Lenient about VOCABULARY: an unrecognized capability token, an unrecognized
|
|
78
|
+
* flag and an unrecognized extra field are all kept and ignored. Without that
|
|
79
|
+
* leniency every token added on the issuing side would break every build
|
|
80
|
+
* already deployed in the field.
|
|
81
|
+
*
|
|
82
|
+
* Returns `null` when the entry is malformed.
|
|
83
|
+
*
|
|
84
|
+
* @param {*} entry The product entry of the payload.
|
|
85
|
+
* @returns {ProductEntitlement|null}
|
|
86
|
+
*/ function normalizeProductEntry(entry) {
|
|
87
|
+
if (!isPlainObject(entry)) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
if (!isStringArray(entry.capabilities)) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const presentDateFields = DATE_FIELDS.filter((field)=>entry[field] !== undefined);
|
|
94
|
+
// Exactly one date per product. "Both" and "neither" are each a different
|
|
95
|
+
// commercial shape that the format cannot express, so neither may be silently
|
|
96
|
+
// resolved by whichever field the reader happens to look at first.
|
|
97
|
+
if (presentDateFields.length !== 1) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
if (parseIsoDateToTimestamp(`${entry[presentDateFields[0]]}`) === null) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
if (!isNonNegativeInteger(entry.notice) || !isNonNegativeInteger(entry.grace)) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
if (entry.flags !== undefined && !isStringArray(entry.flags)) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
// Start from everything the entry carries, so a field this version does not
|
|
110
|
+
// know survives into the result instead of being silently dropped. A field
|
|
111
|
+
// added to the format later is exactly the case a vendored reader has to
|
|
112
|
+
// survive, and one that quietly discards it makes the field invisible to the
|
|
113
|
+
// layers above.
|
|
114
|
+
const normalized = {};
|
|
115
|
+
Object.keys(entry).forEach((field)=>defineOwn(normalized, field, entry[field]));
|
|
116
|
+
defineOwn(normalized, 'capabilities', entry.capabilities.slice());
|
|
117
|
+
defineOwn(normalized, 'notice', entry.notice);
|
|
118
|
+
defineOwn(normalized, 'grace', entry.grace);
|
|
119
|
+
// An absent array and an empty one mean the same thing. Normalizing here
|
|
120
|
+
// keeps `flags.indexOf('trial')` safe at every call site.
|
|
121
|
+
defineOwn(normalized, 'flags', entry.flags === undefined ? [] : entry.flags.slice());
|
|
122
|
+
defineOwn(normalized, presentDateFields[0], entry[presentDateFields[0]]);
|
|
123
|
+
return normalized;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Reads and verifies one key. Split out from the memoized public entry point so
|
|
127
|
+
* the memo can wrap every exit path uniformly.
|
|
128
|
+
*
|
|
129
|
+
* @param {string} licenseKey The license key to read.
|
|
130
|
+
* @returns {EntitlementKeyData|null}
|
|
131
|
+
*/ function readEntitlementKeyData(licenseKey) {
|
|
132
|
+
// The machine-readable block closes the key. Searching backwards means a
|
|
133
|
+
// bracket inside the prose cannot shadow it.
|
|
134
|
+
const blockStart = licenseKey.lastIndexOf('[');
|
|
135
|
+
if (blockStart === -1) {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
const blockEnd = licenseKey.indexOf(']', blockStart);
|
|
139
|
+
if (blockEnd === -1) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
const content = licenseKey.slice(blockStart + 1, blockEnd);
|
|
143
|
+
if (content.length <= CHECKSUM_LENGTH) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const encodedPayload = content.slice(0, -CHECKSUM_LENGTH);
|
|
147
|
+
const checksum = content.slice(-CHECKSUM_LENGTH);
|
|
148
|
+
if (!ENCODED_PAYLOAD.test(encodedPayload) || !CHECKSUM.test(checksum)) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
if (sha512(stringToUtf8Bytes(encodedPayload)) !== checksum) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
const payloadJson = base64ToString(encodedPayload);
|
|
155
|
+
if (payloadJson === null) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
let payload;
|
|
159
|
+
try {
|
|
160
|
+
payload = JSON.parse(payloadJson);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
if (!isPlainObject(payload) || !isPlainObject(payload.products)) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const products = {};
|
|
168
|
+
const entries = payload.products;
|
|
169
|
+
let malformed = false;
|
|
170
|
+
Object.keys(entries).forEach((name)=>{
|
|
171
|
+
const entry = normalizeProductEntry(entries[name]);
|
|
172
|
+
if (entry === null) {
|
|
173
|
+
malformed = true;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
defineOwn(products, name, entry);
|
|
177
|
+
});
|
|
178
|
+
if (malformed) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
products
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// The license key is read twice per grid init - the bottom bar
|
|
186
|
+
// (`initLicenseNotification`) and the branding UI (`initLicenseBranding`) each resolve the license
|
|
187
|
+
// state - and reading runs the full SHA-512 + base64 + JSON parse. A one-entry memo on the key makes
|
|
188
|
+
// the second read free. The returned data is treated as read-only by every caller, so sharing one
|
|
189
|
+
// object is safe.
|
|
190
|
+
let memoizedKey = null;
|
|
191
|
+
let memoizedData = null;
|
|
192
|
+
/**
|
|
193
|
+
* Extracts the machine-readable data from an entitlement license key.
|
|
194
|
+
*
|
|
195
|
+
* The checksum is verified first, so the returned data is guaranteed to belong
|
|
196
|
+
* to an intact block. A malformed or tampered key reads as `null` - reporting
|
|
197
|
+
* an invalid key is the caller's job, not this function's.
|
|
198
|
+
*
|
|
199
|
+
* Only the bracketed block matters. The prose in front of it is neither parsed
|
|
200
|
+
* nor covered by the checksum, so the caller may pass the whole key or just the
|
|
201
|
+
* `[...]` block, and rewrapped or re-pasted prose still validates. The block
|
|
202
|
+
* itself has to be intact: its alphabet has no whitespace, so a newline inside
|
|
203
|
+
* it makes the key unreadable, exactly as it does for the key generator.
|
|
204
|
+
*
|
|
205
|
+
* Unknown products, capability tokens and flags are all tolerated, so nothing
|
|
206
|
+
* about reading a key depends on the commercial vocabulary.
|
|
207
|
+
*
|
|
208
|
+
* @param {string} licenseKey The license key to extract the data from.
|
|
209
|
+
* @returns {EntitlementKeyData|null}
|
|
210
|
+
*/ export function extractEntitlementKeyData(licenseKey) {
|
|
211
|
+
const key = `${licenseKey}`;
|
|
212
|
+
if (key !== memoizedKey) {
|
|
213
|
+
memoizedKey = key;
|
|
214
|
+
memoizedData = readEntitlementKeyData(key);
|
|
215
|
+
}
|
|
216
|
+
return memoizedData;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Returns the entitlement of one product, but only when it is present as an own
|
|
220
|
+
* property. Used by the lifecycle and grants layers to read one product without
|
|
221
|
+
* trusting the prototype chain.
|
|
222
|
+
*
|
|
223
|
+
* @param {EntitlementKeyData} keyData The verified key data.
|
|
224
|
+
* @param {string} productName The product to read.
|
|
225
|
+
* @returns {ProductEntitlement|null}
|
|
226
|
+
*/ export function getProductEntitlement(keyData, productName) {
|
|
227
|
+
if (!hasOwn(keyData.products, productName)) {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
const product = keyData.products[productName];
|
|
231
|
+
return isPlainObject(product) ? product : null;
|
|
232
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './grants.js';
|