handsontable 14.6.1-next-689aaa6-20241016 → 15.0.0-next-4472a60-20241203
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/calculator/calculationType/renderedColumns.js +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
- package/3rdparty/walkontable/src/calculator/index.js +1 -2
- package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
- package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
- package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
- package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
- package/3rdparty/walkontable/src/core/_base.js +29 -23
- package/3rdparty/walkontable/src/core/_base.mjs +29 -23
- package/3rdparty/walkontable/src/core/clone.js +1 -0
- package/3rdparty/walkontable/src/core/clone.mjs +1 -0
- package/3rdparty/walkontable/src/core/core.js +2 -0
- package/3rdparty/walkontable/src/core/core.mjs +2 -0
- package/3rdparty/walkontable/src/facade/core.js +12 -6
- package/3rdparty/walkontable/src/facade/core.mjs +12 -6
- package/3rdparty/walkontable/src/index.js +0 -1
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +8 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
- package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
- package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
- package/3rdparty/walkontable/src/overlay/index.js +2 -0
- package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
- package/3rdparty/walkontable/src/overlay/top.js +9 -8
- package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
- package/3rdparty/walkontable/src/overlays.js +10 -26
- package/3rdparty/walkontable/src/overlays.mjs +10 -26
- package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
- package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/index.js +4 -2
- package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
- package/3rdparty/walkontable/src/renderer/table.js +13 -4
- package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
- package/3rdparty/walkontable/src/scroll.js +46 -37
- package/3rdparty/walkontable/src/scroll.mjs +46 -37
- package/3rdparty/walkontable/src/selection/border/border.js +52 -58
- package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
- package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
- package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
- package/3rdparty/walkontable/src/selection/index.js +6 -4
- package/3rdparty/walkontable/src/selection/index.mjs +1 -1
- package/3rdparty/walkontable/src/selection/manager.js +3 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
- package/3rdparty/walkontable/src/selection/scanner.js +46 -11
- package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
- package/3rdparty/walkontable/src/settings.js +8 -9
- package/3rdparty/walkontable/src/settings.mjs +8 -9
- package/3rdparty/walkontable/src/table/master.js +1 -1
- package/3rdparty/walkontable/src/table/master.mjs +2 -2
- package/3rdparty/walkontable/src/table.js +25 -36
- package/3rdparty/walkontable/src/table.mjs +25 -36
- package/3rdparty/walkontable/src/types.js +1 -0
- package/3rdparty/walkontable/src/types.mjs +1 -0
- package/3rdparty/walkontable/src/utils/column.js +1 -43
- package/3rdparty/walkontable/src/utils/column.mjs +1 -43
- package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
- package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
- package/3rdparty/walkontable/src/viewport.js +94 -91
- package/3rdparty/walkontable/src/viewport.mjs +95 -92
- package/CHANGELOG.md +36 -0
- package/README.md +1 -1
- package/base.js +4 -4
- package/base.mjs +3 -3
- package/core/focusCatcher/focusDetector.js +1 -0
- package/core/focusCatcher/focusDetector.mjs +1 -0
- package/core/hooks/bucket.js +184 -0
- package/core/hooks/bucket.mjs +180 -0
- package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
- package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
- package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
- package/core/hooks/index.js +385 -0
- package/core/hooks/index.mjs +381 -0
- package/core/index.js +2 -0
- package/core.d.ts +5 -3
- package/core.js +77 -35
- package/core.mjs +69 -27
- package/dataMap/dataMap.js +3 -0
- package/dataMap/dataMap.mjs +3 -0
- package/dataMap/dataSource.js +2 -0
- package/dataMap/dataSource.mjs +2 -0
- package/dataMap/metaManager/index.js +2 -0
- package/dataMap/metaManager/index.mjs +2 -0
- package/dataMap/metaManager/metaSchema.js +91 -5
- package/dataMap/metaManager/metaSchema.mjs +91 -5
- package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
- package/dist/handsontable.css +84 -72
- package/dist/handsontable.full.css +317 -304
- package/dist/handsontable.full.js +14826 -7294
- package/dist/handsontable.full.min.css +15 -10
- package/dist/handsontable.full.min.js +262 -69
- package/dist/handsontable.js +7826 -5552
- package/dist/handsontable.min.css +10 -6
- package/dist/handsontable.min.js +33 -33
- package/dist/languages/all.js +1 -1
- package/dist/languages/ar-AR.js +1 -1
- package/dist/languages/cs-CZ.js +1 -1
- package/dist/languages/de-CH.js +1 -1
- package/dist/languages/de-DE.js +1 -1
- package/dist/languages/en-US.js +1 -1
- package/dist/languages/es-MX.js +1 -1
- package/dist/languages/fr-FR.js +1 -1
- package/dist/languages/hr-HR.js +1 -1
- package/dist/languages/it-IT.js +1 -1
- package/dist/languages/ja-JP.js +1 -1
- package/dist/languages/ko-KR.js +1 -1
- package/dist/languages/lv-LV.js +1 -1
- package/dist/languages/nb-NO.js +1 -1
- package/dist/languages/nl-NL.js +1 -1
- package/dist/languages/pl-PL.js +1 -1
- package/dist/languages/pt-BR.js +1 -1
- package/dist/languages/ru-RU.js +1 -1
- package/dist/languages/sr-SP.js +1 -1
- package/dist/languages/zh-CN.js +1 -1
- package/dist/languages/zh-TW.js +1 -1
- package/editorManager.js +2 -2
- package/editorManager.mjs +2 -2
- package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
- package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
- package/editors/baseEditor/baseEditor.js +25 -18
- package/editors/baseEditor/baseEditor.mjs +26 -19
- package/editors/dateEditor/dateEditor.js +9 -0
- package/editors/dateEditor/dateEditor.mjs +10 -1
- package/editors/dropdownEditor/dropdownEditor.js +4 -3
- package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
- package/editors/handsontableEditor/handsontableEditor.js +36 -2
- package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
- package/editors/passwordEditor/passwordEditor.js +18 -0
- package/editors/passwordEditor/passwordEditor.mjs +18 -0
- package/editors/registry.js +2 -2
- package/editors/registry.mjs +1 -1
- package/editors/selectEditor/selectEditor.js +20 -9
- package/editors/selectEditor/selectEditor.mjs +20 -9
- package/editors/textEditor/textEditor.js +5 -12
- package/editors/textEditor/textEditor.mjs +6 -13
- package/focusManager.js +5 -7
- package/focusManager.mjs +5 -7
- package/helpers/array.js +2 -0
- package/helpers/array.mjs +2 -0
- package/helpers/data.js +3 -0
- package/helpers/data.mjs +3 -0
- package/helpers/dom/element.js +39 -18
- package/helpers/dom/element.mjs +38 -17
- package/helpers/mixed.js +3 -3
- package/helpers/mixed.mjs +3 -3
- package/helpers/moves.js +3 -0
- package/helpers/moves.mjs +3 -0
- package/helpers/number.js +1 -0
- package/helpers/number.mjs +1 -0
- package/helpers/object.js +2 -0
- package/helpers/object.mjs +2 -0
- package/helpers/themes.js +17 -0
- package/helpers/themes.mjs +13 -0
- package/i18n/index.js +2 -0
- package/i18n/languages/index.d.ts +8 -0
- package/i18n/languages/ja-JP.d.ts +1 -1
- package/i18n/phraseFormatters/substituteVariables.js +1 -0
- package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
- package/index.d.ts +9 -1
- package/languages/all.js +1 -1
- package/languages/ar-AR.js +1 -1
- package/languages/cs-CZ.js +1 -1
- package/languages/de-CH.js +1 -1
- package/languages/de-DE.js +1 -1
- package/languages/en-US.js +1 -1
- package/languages/es-MX.js +1 -1
- package/languages/fr-FR.js +1 -1
- package/languages/hr-HR.js +1 -1
- package/languages/index.js +1 -1
- package/languages/it-IT.js +1 -1
- package/languages/ja-JP.js +1 -1
- package/languages/ko-KR.js +1 -1
- package/languages/lv-LV.js +1 -1
- package/languages/nb-NO.js +1 -1
- package/languages/nl-NL.js +1 -1
- package/languages/pl-PL.js +1 -1
- package/languages/pt-BR.js +1 -1
- package/languages/ru-RU.js +1 -1
- package/languages/sr-SP.js +1 -1
- package/languages/zh-CN.js +1 -1
- package/languages/zh-TW.js +1 -1
- package/package.json +22 -7
- package/plugins/autoColumnSize/autoColumnSize.js +22 -27
- package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
- package/plugins/autoRowSize/autoRowSize.js +20 -22
- package/plugins/autoRowSize/autoRowSize.mjs +21 -23
- package/plugins/autofill/autofill.js +4 -5
- package/plugins/autofill/autofill.mjs +1 -1
- package/plugins/base/base.d.ts +1 -1
- package/plugins/base/base.js +41 -0
- package/plugins/base/base.mjs +42 -1
- package/plugins/base/index.js +2 -1
- package/plugins/base/index.mjs +1 -1
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
- package/plugins/columnSorting/columnSorting.js +5 -4
- package/plugins/columnSorting/columnSorting.mjs +3 -1
- package/plugins/columnSorting/columnStatesManager.js +1 -0
- package/plugins/columnSorting/columnStatesManager.mjs +1 -0
- package/plugins/columnSorting/utils.js +3 -0
- package/plugins/columnSorting/utils.mjs +3 -0
- package/plugins/columnSummary/endpoints.js +3 -0
- package/plugins/columnSummary/endpoints.mjs +3 -0
- package/plugins/comments/commentEditor.js +9 -0
- package/plugins/comments/commentEditor.mjs +9 -0
- package/plugins/comments/comments.js +24 -18
- package/plugins/comments/comments.mjs +26 -20
- package/plugins/comments/editorResizeObserver.js +2 -0
- package/plugins/comments/editorResizeObserver.mjs +2 -0
- package/plugins/contextMenu/contextMenu.d.ts +2 -1
- package/plugins/contextMenu/contextMenu.js +6 -7
- package/plugins/contextMenu/contextMenu.mjs +1 -1
- package/plugins/contextMenu/menu/index.js +2 -0
- package/plugins/contextMenu/menu/menu.js +10 -5
- package/plugins/contextMenu/menu/menu.mjs +11 -6
- package/plugins/contextMenu/menu/positioner.js +4 -2
- package/plugins/contextMenu/menu/positioner.mjs +4 -2
- package/plugins/contextMenu/menu/shortcuts.js +3 -1
- package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
- package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
- package/plugins/contextMenu/utils.js +0 -10
- package/plugins/contextMenu/utils.mjs +0 -9
- package/plugins/copyPaste/copyPaste.d.ts +1 -0
- package/plugins/copyPaste/copyPaste.js +32 -23
- package/plugins/copyPaste/copyPaste.mjs +24 -15
- package/plugins/customBorders/utils.js +2 -0
- package/plugins/customBorders/utils.mjs +2 -0
- package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
- package/plugins/dropdownMenu/dropdownMenu.js +6 -7
- package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
- package/plugins/exportFile/types/csv.js +1 -0
- package/plugins/exportFile/types/csv.mjs +1 -0
- package/plugins/filters/component/condition.js +2 -0
- package/plugins/filters/component/condition.mjs +2 -0
- package/plugins/filters/component/operators.js +2 -0
- package/plugins/filters/component/operators.mjs +2 -0
- package/plugins/filters/component/value.js +3 -0
- package/plugins/filters/component/value.mjs +3 -0
- package/plugins/filters/conditionCollection.js +3 -0
- package/plugins/filters/conditionCollection.mjs +3 -0
- package/plugins/filters/conditionUpdateObserver.js +2 -0
- package/plugins/filters/conditionUpdateObserver.mjs +2 -0
- package/plugins/filters/filters.js +43 -13
- package/plugins/filters/filters.mjs +43 -13
- package/plugins/filters/logicalOperations/conjunction.js +2 -0
- package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
- package/plugins/filters/logicalOperations/disjunction.js +2 -0
- package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
- package/plugins/filters/menu/focusController.js +38 -14
- package/plugins/filters/menu/focusController.mjs +38 -14
- package/plugins/filters/ui/multipleSelect.js +10 -0
- package/plugins/filters/ui/multipleSelect.mjs +10 -0
- package/plugins/formulas/engine/register.js +3 -0
- package/plugins/formulas/engine/register.mjs +3 -0
- package/plugins/formulas/engine/settings.js +3 -0
- package/plugins/formulas/engine/settings.mjs +3 -0
- package/plugins/formulas/formulas.js +12 -7
- package/plugins/formulas/formulas.mjs +6 -1
- package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
- package/plugins/hiddenColumns/hiddenColumns.js +22 -30
- package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
- package/plugins/hiddenRows/hiddenRows.js +21 -29
- package/plugins/hiddenRows/hiddenRows.mjs +17 -25
- package/plugins/index.d.ts +3 -0
- package/plugins/index.js +3 -0
- package/plugins/index.mjs +3 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
- package/plugins/manualColumnMove/manualColumnMove.js +6 -6
- package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
- package/plugins/manualColumnResize/manualColumnResize.js +26 -12
- package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
- package/plugins/manualRowMove/manualRowMove.js +8 -6
- package/plugins/manualRowMove/manualRowMove.mjs +6 -4
- package/plugins/manualRowResize/manualRowResize.js +3 -2
- package/plugins/manualRowResize/manualRowResize.mjs +4 -3
- package/plugins/mergeCells/cellsCollection.js +19 -3
- package/plugins/mergeCells/cellsCollection.mjs +20 -4
- package/plugins/mergeCells/mergeCells.d.ts +6 -2
- package/plugins/mergeCells/mergeCells.js +84 -56
- package/plugins/mergeCells/mergeCells.mjs +82 -54
- package/plugins/mergeCells/renderer.js +13 -3
- package/plugins/mergeCells/renderer.mjs +13 -3
- package/plugins/multiColumnSorting/domHelpers.js +2 -0
- package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
- package/plugins/nestedHeaders/nestedHeaders.js +63 -16
- package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
- package/plugins/nestedHeaders/stateManager/index.js +1 -0
- package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
- package/plugins/nestedRows/nestedRows.js +3 -0
- package/plugins/nestedRows/nestedRows.mjs +3 -0
- package/plugins/nestedRows/ui/headers.js +7 -1
- package/plugins/nestedRows/ui/headers.mjs +7 -1
- package/plugins/nestedRows/utils/rowMoveController.js +4 -0
- package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
- package/plugins/persistentState/persistentState.js +4 -4
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/stretchColumns/calculator.js +162 -0
- package/plugins/stretchColumns/calculator.mjs +158 -0
- package/plugins/stretchColumns/index.d.ts +1 -0
- package/plugins/stretchColumns/index.js +7 -0
- package/plugins/stretchColumns/index.mjs +1 -0
- package/plugins/stretchColumns/strategies/_base.js +85 -0
- package/plugins/stretchColumns/strategies/_base.mjs +81 -0
- package/plugins/stretchColumns/strategies/all.js +71 -0
- package/plugins/stretchColumns/strategies/all.mjs +67 -0
- package/plugins/stretchColumns/strategies/last.js +79 -0
- package/plugins/stretchColumns/strategies/last.mjs +75 -0
- package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
- package/plugins/stretchColumns/stretchColumns.js +222 -0
- package/plugins/stretchColumns/stretchColumns.mjs +218 -0
- package/plugins/trimRows/trimRows.js +2 -0
- package/plugins/trimRows/trimRows.mjs +2 -0
- package/plugins/undoRedo/undoRedo.js +9 -5
- package/plugins/undoRedo/undoRedo.mjs +8 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
- package/selection/index.js +2 -0
- package/selection/range.js +2 -0
- package/selection/range.mjs +2 -0
- package/selection/selection.js +7 -2
- package/selection/selection.mjs +7 -2
- package/selection/utils.js +2 -0
- package/selection/utils.mjs +2 -0
- package/settings.d.ts +4 -1
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
- package/shortcutContexts/commands/index.js +2 -0
- package/shortcutContexts/commands/index.mjs +2 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
- package/shortcutContexts/index.js +2 -0
- package/shortcutContexts/index.mjs +2 -0
- package/shortcuts/context.js +3 -0
- package/shortcuts/context.mjs +3 -0
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +1 -0
- package/shortcuts/utils.mjs +1 -0
- package/styles/handsontable.css +2307 -0
- package/styles/handsontable.min.css +30 -0
- package/styles/ht-theme-horizon.css +607 -0
- package/styles/ht-theme-horizon.min.css +30 -0
- package/styles/ht-theme-main.css +613 -0
- package/styles/ht-theme-main.min.css +30 -0
- package/tableView.js +205 -33
- package/tableView.mjs +206 -34
- package/translations/changesObservable/observable.js +2 -0
- package/translations/changesObservable/observable.mjs +2 -0
- package/translations/index.js +2 -0
- package/translations/indexMapper.js +4 -0
- package/translations/indexMapper.mjs +4 -0
- package/translations/mapCollections/index.js +2 -0
- package/translations/mapCollections/mapCollection.js +2 -0
- package/translations/mapCollections/mapCollection.mjs +2 -0
- package/translations/maps/index.js +2 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
- package/translations/maps/utils/actionsOnIndexes.js +2 -0
- package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
- package/translations/maps/utils/physicallyIndexed.js +1 -0
- package/translations/maps/utils/physicallyIndexed.mjs +1 -0
- package/utils/autoResize.js +11 -3
- package/utils/autoResize.mjs +11 -3
- package/utils/dataStructures/priorityMap.js +1 -0
- package/utils/dataStructures/priorityMap.mjs +1 -0
- package/utils/dataStructures/uniqueMap.js +2 -0
- package/utils/dataStructures/uniqueMap.mjs +2 -0
- package/utils/ghostTable.js +7 -3
- package/utils/ghostTable.mjs +7 -3
- package/utils/parseTable.js +4 -0
- package/utils/parseTable.mjs +4 -0
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
@@ -1,5 +1,7 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
4
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
3
5
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
4
6
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
5
7
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
@@ -71,6 +73,7 @@ var _stateManager = /*#__PURE__*/new WeakMap();
|
|
71
73
|
var _hidingIndexMapObserver = /*#__PURE__*/new WeakMap();
|
72
74
|
var _focusInitialCoords = /*#__PURE__*/new WeakMap();
|
73
75
|
var _isColumnsSelectionInProgress = /*#__PURE__*/new WeakMap();
|
76
|
+
var _recentlyHighlightCoords = /*#__PURE__*/new WeakMap();
|
74
77
|
var _NestedHeaders_brand = /*#__PURE__*/new WeakSet();
|
75
78
|
export class NestedHeaders extends BasePlugin {
|
76
79
|
constructor() {
|
@@ -105,6 +108,14 @@ export class NestedHeaders extends BasePlugin {
|
|
105
108
|
* @type {boolean}
|
106
109
|
*/
|
107
110
|
_classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress, false);
|
111
|
+
/**
|
112
|
+
* Keeps the last highlight position made by column selection. The coords are necessary to scroll
|
113
|
+
* the viewport to the correct position when the nested header is clicked when the `navigableHeaders`
|
114
|
+
* option is disabled.
|
115
|
+
*
|
116
|
+
* @type {CellCoords | null}
|
117
|
+
*/
|
118
|
+
_classPrivateFieldInitSpec(this, _recentlyHighlightCoords, null);
|
108
119
|
/**
|
109
120
|
* Custom helper for getting widths of the nested headers.
|
110
121
|
*
|
@@ -524,9 +535,13 @@ function _updateFocusHighlightPosition() {
|
|
524
535
|
* indexes are used.
|
525
536
|
*
|
526
537
|
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
538
|
+
* @param {{ value: 'auto' | 'start' | 'end' }} snapping If `'start'`, viewport is scrolled to show
|
539
|
+
* the cell on the left of the table. If `'end'`, viewport is scrolled to show the cell on the right of
|
540
|
+
* the table. When `'auto'`, the viewport is scrolled only when the column is outside of the viewport.
|
527
541
|
* @returns {number}
|
528
542
|
*/
|
529
|
-
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
543
|
+
function _onBeforeViewportScrollHorizontally(visualColumn, snapping) {
|
544
|
+
var _classPrivateFieldGet4;
|
530
545
|
const selection = this.hot.getSelectedRangeLast();
|
531
546
|
if (!selection) {
|
532
547
|
return visualColumn;
|
@@ -534,20 +549,50 @@ function _onBeforeViewportScrollHorizontally(visualColumn) {
|
|
534
549
|
const {
|
535
550
|
highlight
|
536
551
|
} = selection;
|
537
|
-
const
|
552
|
+
const {
|
553
|
+
navigableHeaders
|
554
|
+
} = this.hot.getSettings();
|
555
|
+
const isSelectedByColumnHeader = this.hot.selection.isSelectedByColumnHeader();
|
556
|
+
const highlightRow = navigableHeaders ? highlight.row : (_classPrivateFieldGet4 = _classPrivateFieldGet(_recentlyHighlightCoords, this)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.row;
|
557
|
+
const highlightColumn = isSelectedByColumnHeader ? visualColumn : highlight.col;
|
558
|
+
const isNestedHeadersRange = highlightRow < 0 && highlightColumn >= 0;
|
559
|
+
_classPrivateFieldSet(_recentlyHighlightCoords, this, null);
|
538
560
|
if (!isNestedHeadersRange) {
|
539
561
|
return visualColumn;
|
540
562
|
}
|
541
|
-
const
|
542
|
-
const
|
543
|
-
const
|
544
|
-
const
|
563
|
+
const firstVisibleColumn = this.hot.getFirstFullyVisibleColumn();
|
564
|
+
const lastVisibleColumn = this.hot.getLastFullyVisibleColumn();
|
565
|
+
const viewportWidth = lastVisibleColumn - firstVisibleColumn + 1;
|
566
|
+
const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlightRow, highlightColumn);
|
567
|
+
const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlightRow, highlightColumn);
|
568
|
+
const headerWidth = mostRightColumnIndex - mostLeftColumnIndex + 1;
|
545
569
|
|
546
|
-
//
|
547
|
-
if (mostLeftColumnIndex <
|
548
|
-
return
|
570
|
+
// scroll the viewport always to the left when the header is wider than the viewport
|
571
|
+
if (mostLeftColumnIndex < firstVisibleColumn && mostRightColumnIndex > lastVisibleColumn) {
|
572
|
+
return mostLeftColumnIndex;
|
573
|
+
}
|
574
|
+
if (isSelectedByColumnHeader) {
|
575
|
+
let scrollColumnIndex = null;
|
576
|
+
if (mostLeftColumnIndex >= firstVisibleColumn && mostRightColumnIndex > lastVisibleColumn) {
|
577
|
+
if (headerWidth > viewportWidth) {
|
578
|
+
snapping.value = 'start';
|
579
|
+
scrollColumnIndex = mostLeftColumnIndex;
|
580
|
+
} else {
|
581
|
+
snapping.value = 'end';
|
582
|
+
scrollColumnIndex = mostRightColumnIndex;
|
583
|
+
}
|
584
|
+
} else if (mostLeftColumnIndex < firstVisibleColumn && mostRightColumnIndex <= lastVisibleColumn) {
|
585
|
+
if (headerWidth > viewportWidth) {
|
586
|
+
snapping.value = 'end';
|
587
|
+
scrollColumnIndex = mostRightColumnIndex;
|
588
|
+
} else {
|
589
|
+
snapping.value = 'start';
|
590
|
+
scrollColumnIndex = mostLeftColumnIndex;
|
591
|
+
}
|
592
|
+
}
|
593
|
+
return scrollColumnIndex;
|
549
594
|
}
|
550
|
-
return mostLeftColumnIndex
|
595
|
+
return mostLeftColumnIndex <= firstVisibleColumn ? mostLeftColumnIndex : mostRightColumnIndex;
|
551
596
|
}
|
552
597
|
/**
|
553
598
|
* Allows to control which header DOM element will be used to highlight.
|
@@ -618,13 +663,13 @@ function _onBeforeCopy(data, copyableRanges, _ref2) {
|
|
618
663
|
}
|
619
664
|
for (let column = startCol; column <= endCol; column++) {
|
620
665
|
for (let row = startRow; row <= endRow; row++) {
|
621
|
-
var
|
666
|
+
var _classPrivateFieldGet5;
|
622
667
|
const zeroBasedColumnHeaderLevel = rowsCount + row;
|
623
668
|
const zeroBasedColumnIndex = column - startCol;
|
624
669
|
if (zeroBasedColumnIndex === 0) {
|
625
670
|
continue; // eslint-disable-line no-continue
|
626
671
|
}
|
627
|
-
const isRoot = (
|
672
|
+
const isRoot = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.isRoot;
|
628
673
|
if (isRoot === false) {
|
629
674
|
data[zeroBasedColumnHeaderLevel][zeroBasedColumnIndex] = '';
|
630
675
|
}
|
@@ -702,7 +747,7 @@ function _onAfterOnCellMouseDown(event, coords) {
|
|
702
747
|
* a boolean value that allows or disallows changing the selection for that particular area.
|
703
748
|
*/
|
704
749
|
function _onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
705
|
-
if (!this.hot.view.isMouseDown()) {
|
750
|
+
if (!this.hot.view.isMouseDown() || controller.column) {
|
706
751
|
return;
|
707
752
|
}
|
708
753
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
@@ -810,8 +855,9 @@ function _onModifyTransformStart(delta) {
|
|
810
855
|
*
|
811
856
|
* @param {CellCoords} from The coords object where the selection starts.
|
812
857
|
* @param {CellCoords} to The coords object where the selection ends.
|
858
|
+
* @param {CellCoords} highlight The coords object where the focus is.
|
813
859
|
*/
|
814
|
-
function _onBeforeSelectColumns(from, to) {
|
860
|
+
function _onBeforeSelectColumns(from, to, highlight) {
|
815
861
|
const headerLevel = from.row;
|
816
862
|
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
817
863
|
row: headerLevel,
|
@@ -821,6 +867,7 @@ function _onBeforeSelectColumns(from, to) {
|
|
821
867
|
row: headerLevel,
|
822
868
|
col: to.col
|
823
869
|
});
|
870
|
+
_classPrivateFieldSet(_recentlyHighlightCoords, this, highlight.clone());
|
824
871
|
if (to.col < from.col) {
|
825
872
|
// Column selection from right to left
|
826
873
|
if (startNodeData) {
|
@@ -905,10 +952,10 @@ function _onModifyColWidth(width, column) {
|
|
905
952
|
* @returns {string} Returns the column header value to update.
|
906
953
|
*/
|
907
954
|
function _onModifyColumnHeaderValue(value, visualColumnIndex, headerLevel) {
|
908
|
-
var
|
955
|
+
var _classPrivateFieldGet6;
|
909
956
|
const {
|
910
957
|
label
|
911
|
-
} = (
|
958
|
+
} = (_classPrivateFieldGet6 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet6 !== void 0 ? _classPrivateFieldGet6 : {
|
912
959
|
label: ''
|
913
960
|
};
|
914
961
|
return label;
|
@@ -3,6 +3,7 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
|
+
require("core-js/modules/esnext.iterator.map.js");
|
6
7
|
var _array = require("../../../helpers/array");
|
7
8
|
var _sourceSettings2 = _interopRequireDefault(require("./sourceSettings"));
|
8
9
|
var _headersTree2 = _interopRequireDefault(require("./headersTree"));
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
+
import "core-js/modules/esnext.iterator.map.js";
|
3
4
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
4
5
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
5
6
|
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
@@ -10,6 +10,9 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
|
|
10
10
|
require("core-js/modules/es.set.is-superset-of.v2.js");
|
11
11
|
require("core-js/modules/es.set.symmetric-difference.v2.js");
|
12
12
|
require("core-js/modules/es.set.union.v2.js");
|
13
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
14
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
15
|
+
require("core-js/modules/esnext.iterator.reduce.js");
|
13
16
|
var _base = require("../base");
|
14
17
|
var _dataManager = _interopRequireDefault(require("./data/dataManager"));
|
15
18
|
var _collapsing = _interopRequireDefault(require("./ui/collapsing"));
|
@@ -7,6 +7,9 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
|
|
7
7
|
import "core-js/modules/es.set.is-superset-of.v2.js";
|
8
8
|
import "core-js/modules/es.set.symmetric-difference.v2.js";
|
9
9
|
import "core-js/modules/es.set.union.v2.js";
|
10
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
11
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
12
|
+
import "core-js/modules/esnext.iterator.reduce.js";
|
10
13
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
11
14
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
12
15
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -125,7 +125,13 @@ class HeadersUI extends _base.default {
|
|
125
125
|
if (!deepestLevelIndex) {
|
126
126
|
deepestLevelIndex = this.dataManager.cache.levelCount;
|
127
127
|
}
|
128
|
-
|
128
|
+
const stylesHandler = this.hot.view.getStylesHandler();
|
129
|
+
let completeVerticalPadding = 11;
|
130
|
+
if (!stylesHandler.isClassicTheme()) {
|
131
|
+
const verticalPadding = stylesHandler.getCSSVariableValue('cell-horizontal-padding');
|
132
|
+
completeVerticalPadding = verticalPadding * 2;
|
133
|
+
}
|
134
|
+
this.rowHeaderWidthCache = Math.max(50, completeVerticalPadding + 10 * deepestLevelIndex + 25);
|
129
135
|
this.hot.render();
|
130
136
|
}
|
131
137
|
}
|
@@ -121,7 +121,13 @@ class HeadersUI extends BaseUI {
|
|
121
121
|
if (!deepestLevelIndex) {
|
122
122
|
deepestLevelIndex = this.dataManager.cache.levelCount;
|
123
123
|
}
|
124
|
-
|
124
|
+
const stylesHandler = this.hot.view.getStylesHandler();
|
125
|
+
let completeVerticalPadding = 11;
|
126
|
+
if (!stylesHandler.isClassicTheme()) {
|
127
|
+
const verticalPadding = stylesHandler.getCSSVariableValue('cell-horizontal-padding');
|
128
|
+
completeVerticalPadding = verticalPadding * 2;
|
129
|
+
}
|
130
|
+
this.rowHeaderWidthCache = Math.max(50, completeVerticalPadding + 10 * deepestLevelIndex + 25);
|
125
131
|
this.hot.render();
|
126
132
|
}
|
127
133
|
}
|
@@ -3,6 +3,10 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
7
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
8
|
+
require("core-js/modules/esnext.iterator.map.js");
|
9
|
+
require("core-js/modules/esnext.iterator.some.js");
|
6
10
|
var _mixed = require("../../../helpers/mixed");
|
7
11
|
var _console = require("../../../helpers/console");
|
8
12
|
var _templateLiteralTag = require("../../../helpers/templateLiteralTag");
|
@@ -1,5 +1,9 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
4
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
5
|
+
import "core-js/modules/esnext.iterator.map.js";
|
6
|
+
import "core-js/modules/esnext.iterator.some.js";
|
3
7
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
4
8
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
5
9
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
@@ -4,14 +4,14 @@ exports.__esModule = true;
|
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
var _base = require("../base");
|
6
6
|
var _storage = _interopRequireDefault(require("./storage"));
|
7
|
-
var
|
7
|
+
var _hooks = require("../../core/hooks");
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
9
9
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
10
10
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
11
11
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
_hooks.Hooks.getSingleton().register('persistentStateSave');
|
13
|
+
_hooks.Hooks.getSingleton().register('persistentStateLoad');
|
14
|
+
_hooks.Hooks.getSingleton().register('persistentStateReset');
|
15
15
|
const PLUGIN_KEY = exports.PLUGIN_KEY = 'persistentState';
|
16
16
|
const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 0;
|
17
17
|
|
@@ -4,7 +4,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
4
4
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
5
5
|
import { BasePlugin } from "../base/index.mjs";
|
6
6
|
import Storage from "./storage.mjs";
|
7
|
-
import Hooks from "../../
|
7
|
+
import { Hooks } from "../../core/hooks/index.mjs";
|
8
8
|
Hooks.getSingleton().register('persistentStateSave');
|
9
9
|
Hooks.getSingleton().register('persistentStateLoad');
|
10
10
|
Hooks.getSingleton().register('persistentStateReset');
|
@@ -0,0 +1,162 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
5
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
6
|
+
require("core-js/modules/esnext.iterator.for-each.js");
|
7
|
+
var _src = require("../../3rdparty/walkontable/src");
|
8
|
+
var _element = require("../../helpers/dom/element");
|
9
|
+
var _all = require("./strategies/all");
|
10
|
+
var _last = require("./strategies/last");
|
11
|
+
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
12
|
+
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
13
|
+
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
14
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
15
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
16
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
17
|
+
const STRETCH_WIDTH_MAP_NAME = 'stretchColumns';
|
18
|
+
|
19
|
+
/**
|
20
|
+
* The class responsible for calculating the column widths based on the specified column stretching strategy.
|
21
|
+
*
|
22
|
+
* @private
|
23
|
+
* @class StretchCalculator
|
24
|
+
*/
|
25
|
+
var _hot = /*#__PURE__*/new WeakMap();
|
26
|
+
var _widthsMap = /*#__PURE__*/new WeakMap();
|
27
|
+
var _stretchStrategies = /*#__PURE__*/new WeakMap();
|
28
|
+
var _activeStrategy = /*#__PURE__*/new WeakMap();
|
29
|
+
var _StretchCalculator_brand = /*#__PURE__*/new WeakSet();
|
30
|
+
class StretchCalculator {
|
31
|
+
constructor(hotInstance) {
|
32
|
+
/**
|
33
|
+
* Checks if the vertical scrollbar will appear. Based on the current data and viewport size
|
34
|
+
* the method calculates if the vertical scrollbar will appear after the table is rendered.
|
35
|
+
* The method is a workaround for the issue in the Walkontable that returns unstable viewport
|
36
|
+
* size.
|
37
|
+
*
|
38
|
+
* @returns {boolean}
|
39
|
+
*/
|
40
|
+
_classPrivateMethodInitSpec(this, _StretchCalculator_brand);
|
41
|
+
/**
|
42
|
+
* The Handsontable instance.
|
43
|
+
*
|
44
|
+
* @type {Core}
|
45
|
+
*/
|
46
|
+
_classPrivateFieldInitSpec(this, _hot, void 0);
|
47
|
+
/**
|
48
|
+
* The map that stores the calculated column widths.
|
49
|
+
*
|
50
|
+
* @type {IndexToValueMap}
|
51
|
+
*/
|
52
|
+
_classPrivateFieldInitSpec(this, _widthsMap, void 0);
|
53
|
+
/**
|
54
|
+
* The map that stores the available stretch strategies.
|
55
|
+
*
|
56
|
+
* @type {Map<string, StretchAllStrategy | StretchLastStrategy>}
|
57
|
+
*/
|
58
|
+
_classPrivateFieldInitSpec(this, _stretchStrategies, new Map([['all', new _all.StretchAllStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))], ['last', new _last.StretchLastStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))]]));
|
59
|
+
/**
|
60
|
+
* The active stretch mode.
|
61
|
+
*
|
62
|
+
* @type {'all' | 'last' | 'none'}
|
63
|
+
*/
|
64
|
+
_classPrivateFieldInitSpec(this, _activeStrategy, 'none');
|
65
|
+
_classPrivateFieldSet(_hot, this, hotInstance);
|
66
|
+
_classPrivateFieldSet(_widthsMap, this, _classPrivateFieldGet(_hot, this).columnIndexMapper.createAndRegisterIndexMap(STRETCH_WIDTH_MAP_NAME, 'physicalIndexToValue'));
|
67
|
+
}
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Sets the active stretch strategy.
|
71
|
+
*
|
72
|
+
* @param {'all' | 'last' | 'none'} strategyName The stretch strategy to use.
|
73
|
+
*/
|
74
|
+
useStrategy(strategyName) {
|
75
|
+
_classPrivateFieldSet(_activeStrategy, this, _classPrivateFieldGet(_stretchStrategies, this).has(strategyName) ? strategyName : 'none');
|
76
|
+
}
|
77
|
+
|
78
|
+
/**
|
79
|
+
* Recalculates the column widths.
|
80
|
+
*/
|
81
|
+
refreshStretching() {
|
82
|
+
if (_classPrivateFieldGet(_activeStrategy, this) === 'none') {
|
83
|
+
_classPrivateFieldGet(_widthsMap, this).clear();
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
_classPrivateFieldGet(_hot, this).batchExecution(() => {
|
87
|
+
_classPrivateFieldGet(_widthsMap, this).clear();
|
88
|
+
const stretchStrategy = _classPrivateFieldGet(_stretchStrategies, this).get(_classPrivateFieldGet(_activeStrategy, this));
|
89
|
+
const view = _classPrivateFieldGet(_hot, this).view;
|
90
|
+
let viewportWidth = view.getViewportWidth();
|
91
|
+
if (_assertClassBrand(_StretchCalculator_brand, this, _willVerticalScrollAppear).call(this)) {
|
92
|
+
viewportWidth -= (0, _element.getScrollbarWidth)(_classPrivateFieldGet(_hot, this).rootDocument);
|
93
|
+
}
|
94
|
+
stretchStrategy.prepare({
|
95
|
+
viewportWidth
|
96
|
+
});
|
97
|
+
for (let columnIndex = 0; columnIndex < _classPrivateFieldGet(_hot, this).countCols(); columnIndex++) {
|
98
|
+
if (!_classPrivateFieldGet(_hot, this).columnIndexMapper.isHidden(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex))) {
|
99
|
+
stretchStrategy.setColumnBaseWidth(columnIndex, _assertClassBrand(_StretchCalculator_brand, this, _getWidthWithoutStretching).call(this, columnIndex));
|
100
|
+
}
|
101
|
+
}
|
102
|
+
stretchStrategy.calculate();
|
103
|
+
stretchStrategy.getWidths().forEach(_ref => {
|
104
|
+
let [columnIndex, width] = _ref;
|
105
|
+
_classPrivateFieldGet(_widthsMap, this).setValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex), width);
|
106
|
+
});
|
107
|
+
}, true);
|
108
|
+
}
|
109
|
+
|
110
|
+
/**
|
111
|
+
* Gets the calculated column width.
|
112
|
+
*
|
113
|
+
* @param {number} columnVisualIndex Column visual index.
|
114
|
+
* @returns {number | null}
|
115
|
+
*/
|
116
|
+
getStretchedWidth(columnVisualIndex) {
|
117
|
+
return _classPrivateFieldGet(_widthsMap, this).getValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnVisualIndex));
|
118
|
+
}
|
119
|
+
}
|
120
|
+
exports.StretchCalculator = StretchCalculator;
|
121
|
+
function _willVerticalScrollAppear() {
|
122
|
+
const {
|
123
|
+
view
|
124
|
+
} = _classPrivateFieldGet(_hot, this);
|
125
|
+
if (view.isVerticallyScrollableByWindow()) {
|
126
|
+
return false;
|
127
|
+
}
|
128
|
+
const viewportHeight = view.getViewportHeight();
|
129
|
+
const totalRows = _classPrivateFieldGet(_hot, this).countRows();
|
130
|
+
const defaultRowHeight = view.getStylesHandler().getDefaultRowHeight();
|
131
|
+
let totalHeight = 0;
|
132
|
+
let hasVerticalScroll = false;
|
133
|
+
for (let row = 0; row < totalRows; row++) {
|
134
|
+
var _classPrivateFieldGet2;
|
135
|
+
totalHeight += ((_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getRowHeight(row)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : defaultRowHeight) + (row === 0 ? 1 : 0);
|
136
|
+
if (totalHeight > viewportHeight) {
|
137
|
+
hasVerticalScroll = true;
|
138
|
+
break;
|
139
|
+
}
|
140
|
+
}
|
141
|
+
return hasVerticalScroll;
|
142
|
+
}
|
143
|
+
/**
|
144
|
+
* Gets the column width from the Handsontable API without logic related to stretching.
|
145
|
+
*
|
146
|
+
* @param {number} columnVisualIndex Column visual index.
|
147
|
+
* @returns {number}
|
148
|
+
*/
|
149
|
+
function _getWidthWithoutStretching(columnVisualIndex) {
|
150
|
+
var _classPrivateFieldGet3;
|
151
|
+
return (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getColWidth(columnVisualIndex, 'StretchColumns')) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : _src.DEFAULT_COLUMN_WIDTH;
|
152
|
+
}
|
153
|
+
/**
|
154
|
+
* Executes the hook that allows to overwrite the column width.
|
155
|
+
*
|
156
|
+
* @param {number} columnWidth The column width.
|
157
|
+
* @param {number} columnVisualIndex Column visual index.
|
158
|
+
* @returns {number}
|
159
|
+
*/
|
160
|
+
function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
|
161
|
+
return _classPrivateFieldGet(_hot, this).runHooks('beforeStretchingColumnWidth', columnWidth, columnVisualIndex);
|
162
|
+
}
|
@@ -0,0 +1,158 @@
|
|
1
|
+
import "core-js/modules/es.error.cause.js";
|
2
|
+
import "core-js/modules/esnext.iterator.constructor.js";
|
3
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
4
|
+
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
5
|
+
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
6
|
+
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
7
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
8
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
9
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
10
|
+
import { DEFAULT_COLUMN_WIDTH } from "../../3rdparty/walkontable/src/index.mjs";
|
11
|
+
import { getScrollbarWidth } from "../../helpers/dom/element.mjs";
|
12
|
+
import { StretchAllStrategy } from "./strategies/all.mjs";
|
13
|
+
import { StretchLastStrategy } from "./strategies/last.mjs";
|
14
|
+
const STRETCH_WIDTH_MAP_NAME = 'stretchColumns';
|
15
|
+
|
16
|
+
/**
|
17
|
+
* The class responsible for calculating the column widths based on the specified column stretching strategy.
|
18
|
+
*
|
19
|
+
* @private
|
20
|
+
* @class StretchCalculator
|
21
|
+
*/
|
22
|
+
var _hot = /*#__PURE__*/new WeakMap();
|
23
|
+
var _widthsMap = /*#__PURE__*/new WeakMap();
|
24
|
+
var _stretchStrategies = /*#__PURE__*/new WeakMap();
|
25
|
+
var _activeStrategy = /*#__PURE__*/new WeakMap();
|
26
|
+
var _StretchCalculator_brand = /*#__PURE__*/new WeakSet();
|
27
|
+
export class StretchCalculator {
|
28
|
+
constructor(hotInstance) {
|
29
|
+
/**
|
30
|
+
* Checks if the vertical scrollbar will appear. Based on the current data and viewport size
|
31
|
+
* the method calculates if the vertical scrollbar will appear after the table is rendered.
|
32
|
+
* The method is a workaround for the issue in the Walkontable that returns unstable viewport
|
33
|
+
* size.
|
34
|
+
*
|
35
|
+
* @returns {boolean}
|
36
|
+
*/
|
37
|
+
_classPrivateMethodInitSpec(this, _StretchCalculator_brand);
|
38
|
+
/**
|
39
|
+
* The Handsontable instance.
|
40
|
+
*
|
41
|
+
* @type {Core}
|
42
|
+
*/
|
43
|
+
_classPrivateFieldInitSpec(this, _hot, void 0);
|
44
|
+
/**
|
45
|
+
* The map that stores the calculated column widths.
|
46
|
+
*
|
47
|
+
* @type {IndexToValueMap}
|
48
|
+
*/
|
49
|
+
_classPrivateFieldInitSpec(this, _widthsMap, void 0);
|
50
|
+
/**
|
51
|
+
* The map that stores the available stretch strategies.
|
52
|
+
*
|
53
|
+
* @type {Map<string, StretchAllStrategy | StretchLastStrategy>}
|
54
|
+
*/
|
55
|
+
_classPrivateFieldInitSpec(this, _stretchStrategies, new Map([['all', new StretchAllStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))], ['last', new StretchLastStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))]]));
|
56
|
+
/**
|
57
|
+
* The active stretch mode.
|
58
|
+
*
|
59
|
+
* @type {'all' | 'last' | 'none'}
|
60
|
+
*/
|
61
|
+
_classPrivateFieldInitSpec(this, _activeStrategy, 'none');
|
62
|
+
_classPrivateFieldSet(_hot, this, hotInstance);
|
63
|
+
_classPrivateFieldSet(_widthsMap, this, _classPrivateFieldGet(_hot, this).columnIndexMapper.createAndRegisterIndexMap(STRETCH_WIDTH_MAP_NAME, 'physicalIndexToValue'));
|
64
|
+
}
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Sets the active stretch strategy.
|
68
|
+
*
|
69
|
+
* @param {'all' | 'last' | 'none'} strategyName The stretch strategy to use.
|
70
|
+
*/
|
71
|
+
useStrategy(strategyName) {
|
72
|
+
_classPrivateFieldSet(_activeStrategy, this, _classPrivateFieldGet(_stretchStrategies, this).has(strategyName) ? strategyName : 'none');
|
73
|
+
}
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Recalculates the column widths.
|
77
|
+
*/
|
78
|
+
refreshStretching() {
|
79
|
+
if (_classPrivateFieldGet(_activeStrategy, this) === 'none') {
|
80
|
+
_classPrivateFieldGet(_widthsMap, this).clear();
|
81
|
+
return;
|
82
|
+
}
|
83
|
+
_classPrivateFieldGet(_hot, this).batchExecution(() => {
|
84
|
+
_classPrivateFieldGet(_widthsMap, this).clear();
|
85
|
+
const stretchStrategy = _classPrivateFieldGet(_stretchStrategies, this).get(_classPrivateFieldGet(_activeStrategy, this));
|
86
|
+
const view = _classPrivateFieldGet(_hot, this).view;
|
87
|
+
let viewportWidth = view.getViewportWidth();
|
88
|
+
if (_assertClassBrand(_StretchCalculator_brand, this, _willVerticalScrollAppear).call(this)) {
|
89
|
+
viewportWidth -= getScrollbarWidth(_classPrivateFieldGet(_hot, this).rootDocument);
|
90
|
+
}
|
91
|
+
stretchStrategy.prepare({
|
92
|
+
viewportWidth
|
93
|
+
});
|
94
|
+
for (let columnIndex = 0; columnIndex < _classPrivateFieldGet(_hot, this).countCols(); columnIndex++) {
|
95
|
+
if (!_classPrivateFieldGet(_hot, this).columnIndexMapper.isHidden(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex))) {
|
96
|
+
stretchStrategy.setColumnBaseWidth(columnIndex, _assertClassBrand(_StretchCalculator_brand, this, _getWidthWithoutStretching).call(this, columnIndex));
|
97
|
+
}
|
98
|
+
}
|
99
|
+
stretchStrategy.calculate();
|
100
|
+
stretchStrategy.getWidths().forEach(_ref => {
|
101
|
+
let [columnIndex, width] = _ref;
|
102
|
+
_classPrivateFieldGet(_widthsMap, this).setValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex), width);
|
103
|
+
});
|
104
|
+
}, true);
|
105
|
+
}
|
106
|
+
|
107
|
+
/**
|
108
|
+
* Gets the calculated column width.
|
109
|
+
*
|
110
|
+
* @param {number} columnVisualIndex Column visual index.
|
111
|
+
* @returns {number | null}
|
112
|
+
*/
|
113
|
+
getStretchedWidth(columnVisualIndex) {
|
114
|
+
return _classPrivateFieldGet(_widthsMap, this).getValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnVisualIndex));
|
115
|
+
}
|
116
|
+
}
|
117
|
+
function _willVerticalScrollAppear() {
|
118
|
+
const {
|
119
|
+
view
|
120
|
+
} = _classPrivateFieldGet(_hot, this);
|
121
|
+
if (view.isVerticallyScrollableByWindow()) {
|
122
|
+
return false;
|
123
|
+
}
|
124
|
+
const viewportHeight = view.getViewportHeight();
|
125
|
+
const totalRows = _classPrivateFieldGet(_hot, this).countRows();
|
126
|
+
const defaultRowHeight = view.getStylesHandler().getDefaultRowHeight();
|
127
|
+
let totalHeight = 0;
|
128
|
+
let hasVerticalScroll = false;
|
129
|
+
for (let row = 0; row < totalRows; row++) {
|
130
|
+
var _classPrivateFieldGet2;
|
131
|
+
totalHeight += ((_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getRowHeight(row)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : defaultRowHeight) + (row === 0 ? 1 : 0);
|
132
|
+
if (totalHeight > viewportHeight) {
|
133
|
+
hasVerticalScroll = true;
|
134
|
+
break;
|
135
|
+
}
|
136
|
+
}
|
137
|
+
return hasVerticalScroll;
|
138
|
+
}
|
139
|
+
/**
|
140
|
+
* Gets the column width from the Handsontable API without logic related to stretching.
|
141
|
+
*
|
142
|
+
* @param {number} columnVisualIndex Column visual index.
|
143
|
+
* @returns {number}
|
144
|
+
*/
|
145
|
+
function _getWidthWithoutStretching(columnVisualIndex) {
|
146
|
+
var _classPrivateFieldGet3;
|
147
|
+
return (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getColWidth(columnVisualIndex, 'StretchColumns')) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : DEFAULT_COLUMN_WIDTH;
|
148
|
+
}
|
149
|
+
/**
|
150
|
+
* Executes the hook that allows to overwrite the column width.
|
151
|
+
*
|
152
|
+
* @param {number} columnWidth The column width.
|
153
|
+
* @param {number} columnVisualIndex Column visual index.
|
154
|
+
* @returns {number}
|
155
|
+
*/
|
156
|
+
function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
|
157
|
+
return _classPrivateFieldGet(_hot, this).runHooks('beforeStretchingColumnWidth', columnWidth, columnVisualIndex);
|
158
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './stretchColumns';
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
var _stretchColumns = require("./stretchColumns");
|
5
|
+
exports.PLUGIN_KEY = _stretchColumns.PLUGIN_KEY;
|
6
|
+
exports.PLUGIN_PRIORITY = _stretchColumns.PLUGIN_PRIORITY;
|
7
|
+
exports.StretchColumns = _stretchColumns.StretchColumns;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { PLUGIN_KEY, PLUGIN_PRIORITY, StretchColumns } from "./stretchColumns.mjs";
|