handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205
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
@@ -7,6 +7,11 @@ 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.filter.js";
|
12
|
+
import "core-js/modules/esnext.iterator.for-each.js";
|
13
|
+
import "core-js/modules/esnext.iterator.map.js";
|
14
|
+
import "core-js/modules/esnext.iterator.reduce.js";
|
10
15
|
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
11
16
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
12
17
|
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
@@ -16,8 +21,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
16
21
|
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
17
22
|
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
18
23
|
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"); }
|
19
|
-
import { BasePlugin } from "../base/index.mjs";
|
20
|
-
import Hooks from "../../
|
24
|
+
import { BasePlugin, defaultMainSettingSymbol } from "../base/index.mjs";
|
25
|
+
import { Hooks } from "../../core/hooks/index.mjs";
|
21
26
|
import MergedCellsCollection from "./cellsCollection.mjs";
|
22
27
|
import MergedCellCoords from "./cellCoords.mjs";
|
23
28
|
import AutofillCalculations from "./calculations/autofill.mjs";
|
@@ -26,7 +31,7 @@ import toggleMergeItem from "./contextMenuItem/toggleMerge.mjs";
|
|
26
31
|
import { arrayEach } from "../../helpers/array.mjs";
|
27
32
|
import { isObject } from "../../helpers/object.mjs";
|
28
33
|
import { warn } from "../../helpers/console.mjs";
|
29
|
-
import { rangeEach } from "../../helpers/number.mjs";
|
34
|
+
import { rangeEach, clamp } from "../../helpers/number.mjs";
|
30
35
|
import { getStyle } from "../../helpers/dom/element.mjs";
|
31
36
|
import { isChrome } from "../../helpers/browser.mjs";
|
32
37
|
import { FocusOrder } from "./focusOrder.mjs";
|
@@ -149,6 +154,13 @@ export class MergeCells extends BasePlugin {
|
|
149
154
|
static get PLUGIN_PRIORITY() {
|
150
155
|
return PLUGIN_PRIORITY;
|
151
156
|
}
|
157
|
+
static get DEFAULT_SETTINGS() {
|
158
|
+
return {
|
159
|
+
[defaultMainSettingSymbol]: 'cells',
|
160
|
+
virtualized: false,
|
161
|
+
cells: []
|
162
|
+
};
|
163
|
+
}
|
152
164
|
/**
|
153
165
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
154
166
|
* hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
|
@@ -236,102 +248,108 @@ export class MergeCells extends BasePlugin {
|
|
236
248
|
}
|
237
249
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
|
238
250
|
});
|
239
|
-
this.addHook('
|
251
|
+
this.addHook('modifyGetCoordsElement', function () {
|
240
252
|
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
241
253
|
args[_key12] = arguments[_key12];
|
242
254
|
}
|
255
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
|
256
|
+
});
|
257
|
+
this.addHook('afterIsMultipleSelection', function () {
|
258
|
+
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
259
|
+
args[_key13] = arguments[_key13];
|
260
|
+
}
|
243
261
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
|
244
262
|
});
|
245
263
|
this.addHook('afterRenderer', function () {
|
246
264
|
return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
|
247
265
|
});
|
248
266
|
this.addHook('afterContextMenuDefaultOptions', function () {
|
249
|
-
for (var
|
250
|
-
args[
|
267
|
+
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
268
|
+
args[_key14] = arguments[_key14];
|
251
269
|
}
|
252
270
|
return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
|
253
271
|
});
|
254
272
|
this.addHook('afterGetCellMeta', function () {
|
255
|
-
for (var
|
256
|
-
args[
|
273
|
+
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
274
|
+
args[_key15] = arguments[_key15];
|
257
275
|
}
|
258
276
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
|
259
277
|
});
|
260
278
|
this.addHook('afterViewportRowCalculatorOverride', function () {
|
261
|
-
for (var
|
262
|
-
args[
|
279
|
+
for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
280
|
+
args[_key16] = arguments[_key16];
|
263
281
|
}
|
264
282
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
|
265
283
|
});
|
266
284
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
267
|
-
for (var
|
268
|
-
args[
|
285
|
+
for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
|
286
|
+
args[_key17] = arguments[_key17];
|
269
287
|
}
|
270
288
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
271
289
|
});
|
272
290
|
this.addHook('modifyAutofillRange', function () {
|
273
|
-
for (var
|
274
|
-
args[
|
291
|
+
for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
|
292
|
+
args[_key18] = arguments[_key18];
|
275
293
|
}
|
276
294
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
|
277
295
|
});
|
278
296
|
this.addHook('afterCreateCol', function () {
|
279
|
-
for (var
|
280
|
-
args[
|
297
|
+
for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
|
298
|
+
args[_key19] = arguments[_key19];
|
281
299
|
}
|
282
300
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
|
283
301
|
});
|
284
302
|
this.addHook('afterRemoveCol', function () {
|
285
|
-
for (var
|
286
|
-
args[
|
303
|
+
for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
|
304
|
+
args[_key20] = arguments[_key20];
|
287
305
|
}
|
288
306
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
|
289
307
|
});
|
290
308
|
this.addHook('afterCreateRow', function () {
|
291
|
-
for (var
|
292
|
-
args[
|
309
|
+
for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
|
310
|
+
args[_key21] = arguments[_key21];
|
293
311
|
}
|
294
312
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
|
295
313
|
});
|
296
314
|
this.addHook('afterRemoveRow', function () {
|
297
|
-
for (var
|
298
|
-
args[
|
315
|
+
for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
|
316
|
+
args[_key22] = arguments[_key22];
|
299
317
|
}
|
300
318
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
|
301
319
|
});
|
302
320
|
this.addHook('afterChange', function () {
|
303
|
-
for (var
|
304
|
-
args[
|
321
|
+
for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
|
322
|
+
args[_key23] = arguments[_key23];
|
305
323
|
}
|
306
324
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
|
307
325
|
});
|
308
326
|
this.addHook('beforeDrawBorders', function () {
|
309
|
-
for (var
|
310
|
-
args[
|
327
|
+
for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
|
328
|
+
args[_key24] = arguments[_key24];
|
311
329
|
}
|
312
330
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
|
313
331
|
});
|
314
332
|
this.addHook('afterDrawSelection', function () {
|
315
|
-
for (var
|
316
|
-
args[
|
333
|
+
for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
|
334
|
+
args[_key25] = arguments[_key25];
|
317
335
|
}
|
318
336
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
|
319
337
|
});
|
320
338
|
this.addHook('beforeRemoveCellClassNames', function () {
|
321
|
-
for (var
|
322
|
-
args[
|
339
|
+
for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
340
|
+
args[_key26] = arguments[_key26];
|
323
341
|
}
|
324
342
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
|
325
343
|
});
|
326
344
|
this.addHook('beforeBeginEditing', function () {
|
327
|
-
for (var
|
328
|
-
args[
|
345
|
+
for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
|
346
|
+
args[_key27] = arguments[_key27];
|
329
347
|
}
|
330
348
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
|
331
349
|
});
|
332
350
|
this.addHook('modifyRowHeightByOverlayName', function () {
|
333
|
-
for (var
|
334
|
-
args[
|
351
|
+
for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
|
352
|
+
args[_key28] = arguments[_key28];
|
335
353
|
}
|
336
354
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
|
337
355
|
});
|
@@ -362,10 +380,9 @@ export class MergeCells extends BasePlugin {
|
|
362
380
|
* - [`mergeCells`](@/api/options.md#mergecells)
|
363
381
|
*/
|
364
382
|
updatePlugin() {
|
365
|
-
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
366
383
|
this.disablePlugin();
|
367
384
|
this.enablePlugin();
|
368
|
-
this.generateFromSettings(
|
385
|
+
this.generateFromSettings();
|
369
386
|
super.updatePlugin();
|
370
387
|
}
|
371
388
|
|
@@ -450,13 +467,9 @@ export class MergeCells extends BasePlugin {
|
|
450
467
|
* Generates the merged cells from the settings provided to the plugin.
|
451
468
|
*
|
452
469
|
* @private
|
453
|
-
* @param {Array|boolean} settings The settings provided to the plugin.
|
454
470
|
*/
|
455
|
-
generateFromSettings(
|
456
|
-
|
457
|
-
return;
|
458
|
-
}
|
459
|
-
const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
|
471
|
+
generateFromSettings() {
|
472
|
+
const validSettings = this.getSetting('cells').filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
|
460
473
|
const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
|
461
474
|
const populatedNulls = [];
|
462
475
|
nonOverlappingSettings.forEach(mergeCellInfo => {
|
@@ -898,7 +911,7 @@ export class MergeCells extends BasePlugin {
|
|
898
911
|
*/
|
899
912
|
}
|
900
913
|
function _onAfterInit() {
|
901
|
-
this.generateFromSettings(
|
914
|
+
this.generateFromSettings();
|
902
915
|
this.hot.render();
|
903
916
|
}
|
904
917
|
function _onAfterIsMultipleSelection(isMultiple) {
|
@@ -1092,13 +1105,16 @@ function _onBeforeSelectionHighlightSet() {
|
|
1092
1105
|
}
|
1093
1106
|
}
|
1094
1107
|
/**
|
1095
|
-
* `modifyGetCellCoords` hook callback
|
1108
|
+
* The `modifyGetCellCoords` hook callback allows forwarding all `getCell` calls that point in-between the merged cells
|
1109
|
+
* to the root element of the cell.
|
1096
1110
|
*
|
1097
1111
|
* @param {number} row Row index.
|
1098
1112
|
* @param {number} column Visual column index.
|
1113
|
+
* @param {boolean} topmost Indicates if the requested element belongs to the topmost layer (any overlay) or not.
|
1114
|
+
* @param {string} [source] String that identifies how this coords change will be processed.
|
1099
1115
|
* @returns {Array|undefined} Visual coordinates of the merge.
|
1100
1116
|
*/
|
1101
|
-
function _onModifyGetCellCoords(row, column) {
|
1117
|
+
function _onModifyGetCellCoords(row, column, topmost, source) {
|
1102
1118
|
if (row < 0 || column < 0) {
|
1103
1119
|
return;
|
1104
1120
|
}
|
@@ -1112,11 +1128,17 @@ function _onModifyGetCellCoords(row, column) {
|
|
1112
1128
|
colspan,
|
1113
1129
|
rowspan
|
1114
1130
|
} = mergeParent;
|
1115
|
-
|
1116
|
-
|
1117
|
-
mergeRow
|
1118
|
-
|
1119
|
-
|
1131
|
+
const topStartRow = mergeRow;
|
1132
|
+
const topStartColumn = mergeColumn;
|
1133
|
+
const bottomEndRow = mergeRow + rowspan - 1;
|
1134
|
+
const bottomEndColumn = mergeColumn + colspan - 1;
|
1135
|
+
if (source === 'render' && this.getSetting('virtualized')) {
|
1136
|
+
const overlayName = this.hot.view.getActiveOverlayName();
|
1137
|
+
const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
|
1138
|
+
const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
|
1139
|
+
return [clamp(firstRenderedRow, topStartRow, bottomEndRow), clamp(firstRenderedColumn, topStartColumn, bottomEndColumn), clamp(this.hot.getLastRenderedVisibleRow(), topStartRow, bottomEndRow), clamp(this.hot.getLastRenderedVisibleColumn(), topStartColumn, bottomEndColumn)];
|
1140
|
+
}
|
1141
|
+
return [topStartRow, topStartColumn, bottomEndRow, bottomEndColumn];
|
1120
1142
|
}
|
1121
1143
|
/**
|
1122
1144
|
* `afterContextMenuDefaultOptions` hook callback.
|
@@ -1252,11 +1274,17 @@ function _onAfterGetCellMeta(row, col, cellProperties) {
|
|
1252
1274
|
* @param {object} calc The row calculator object.
|
1253
1275
|
*/
|
1254
1276
|
function _onAfterViewportRowCalculatorOverride(calc) {
|
1277
|
+
if (this.getSetting('virtualized')) {
|
1278
|
+
return;
|
1279
|
+
}
|
1255
1280
|
const nrOfColumns = this.hot.countCols();
|
1256
1281
|
this.modifyViewportRowStart(calc, nrOfColumns);
|
1257
1282
|
this.modifyViewportRowEnd(calc, nrOfColumns);
|
1258
1283
|
}
|
1259
1284
|
function _onAfterViewportColumnCalculatorOverride(calc) {
|
1285
|
+
if (this.getSetting('virtualized')) {
|
1286
|
+
return;
|
1287
|
+
}
|
1260
1288
|
const nrOfRows = this.hot.countRows();
|
1261
1289
|
this.modifyViewportColumnStart(calc, nrOfRows);
|
1262
1290
|
this.modifyViewportColumnEnd(calc, nrOfRows);
|
@@ -1415,8 +1443,8 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1415
1443
|
let firstColumn;
|
1416
1444
|
let lastColumn;
|
1417
1445
|
if (overlayType === 'master') {
|
1418
|
-
firstColumn = this.hot.
|
1419
|
-
lastColumn = this.hot.
|
1446
|
+
firstColumn = this.hot.getFirstRenderedVisibleColumn();
|
1447
|
+
lastColumn = this.hot.getLastRenderedVisibleColumn();
|
1420
1448
|
} else {
|
1421
1449
|
const activeOverlay = this.hot.view.getOverlayByName(overlayType);
|
1422
1450
|
firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
|
@@ -1429,7 +1457,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1429
1457
|
const from = this.hot._createCellCoords(row, firstColumn);
|
1430
1458
|
const to = this.hot._createCellCoords(row, lastColumn);
|
1431
1459
|
const viewportRange = this.hot._createCellRange(from, from, to);
|
1432
|
-
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
|
1460
|
+
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange, true);
|
1433
1461
|
const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
|
1434
1462
|
let {
|
1435
1463
|
rowspan
|
@@ -1463,7 +1491,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1463
1491
|
* @returns {number}
|
1464
1492
|
*/
|
1465
1493
|
function _sumCellsHeights(row, rowspan) {
|
1466
|
-
const defaultHeight = this.hot.view.
|
1494
|
+
const defaultHeight = this.hot.view.getDefaultRowHeight();
|
1467
1495
|
const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
|
1468
1496
|
let height = 0;
|
1469
1497
|
for (let i = row; i < row + rowspan; i++) {
|
@@ -31,7 +31,7 @@ function createMergeCellRenderer(plugin) {
|
|
31
31
|
*
|
32
32
|
* @private
|
33
33
|
* @param {HTMLElement} TD The cell to be modified.
|
34
|
-
* @param {number} row
|
34
|
+
* @param {number} row Visual row index.
|
35
35
|
* @param {number} col Visual column index.
|
36
36
|
*/
|
37
37
|
function after(TD, row, col) {
|
@@ -49,13 +49,23 @@ function createMergeCellRenderer(plugin) {
|
|
49
49
|
rowspan: origRowspan
|
50
50
|
} = mergedCell;
|
51
51
|
const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
|
52
|
+
const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
|
52
53
|
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
53
54
|
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
54
55
|
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
55
56
|
const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
|
56
57
|
|
57
|
-
|
58
|
-
|
58
|
+
let notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
|
59
|
+
let notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
|
60
|
+
if (isVirtualRenderingEnabled) {
|
61
|
+
const overlayName = hot.view.getActiveOverlayName();
|
62
|
+
if (!['top', 'top_inline_start_corner'].includes(overlayName)) {
|
63
|
+
notHiddenRow = Math.max(notHiddenRow, hot.getFirstRenderedVisibleRow());
|
64
|
+
}
|
65
|
+
if (!['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName)) {
|
66
|
+
notHiddenColumn = Math.max(notHiddenColumn, hot.getFirstRenderedVisibleColumn());
|
67
|
+
}
|
68
|
+
}
|
59
69
|
const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
|
60
70
|
const notHiddenColspan = Math.min(origColspan, maxColSpan);
|
61
71
|
if (notHiddenRow === row && notHiddenColumn === col) {
|
@@ -27,7 +27,7 @@ export function createMergeCellRenderer(plugin) {
|
|
27
27
|
*
|
28
28
|
* @private
|
29
29
|
* @param {HTMLElement} TD The cell to be modified.
|
30
|
-
* @param {number} row
|
30
|
+
* @param {number} row Visual row index.
|
31
31
|
* @param {number} col Visual column index.
|
32
32
|
*/
|
33
33
|
function after(TD, row, col) {
|
@@ -45,13 +45,23 @@ export function createMergeCellRenderer(plugin) {
|
|
45
45
|
rowspan: origRowspan
|
46
46
|
} = mergedCell;
|
47
47
|
const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
|
48
|
+
const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
|
48
49
|
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
49
50
|
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
50
51
|
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
51
52
|
const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
|
52
53
|
|
53
|
-
|
54
|
-
|
54
|
+
let notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
|
55
|
+
let notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
|
56
|
+
if (isVirtualRenderingEnabled) {
|
57
|
+
const overlayName = hot.view.getActiveOverlayName();
|
58
|
+
if (!['top', 'top_inline_start_corner'].includes(overlayName)) {
|
59
|
+
notHiddenRow = Math.max(notHiddenRow, hot.getFirstRenderedVisibleRow());
|
60
|
+
}
|
61
|
+
if (!['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName)) {
|
62
|
+
notHiddenColumn = Math.max(notHiddenColumn, hot.getFirstRenderedVisibleColumn());
|
63
|
+
}
|
64
|
+
}
|
55
65
|
const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
|
56
66
|
const notHiddenColspan = Math.min(origColspan, maxColSpan);
|
57
67
|
if (notHiddenRow === row && notHiddenColumn === col) {
|
@@ -4,6 +4,8 @@ exports.__esModule = true;
|
|
4
4
|
exports.getClassesToAdd = getClassesToAdd;
|
5
5
|
exports.getClassesToRemove = getClassesToRemove;
|
6
6
|
require("core-js/modules/es.array.push.js");
|
7
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
8
|
+
require("core-js/modules/esnext.iterator.filter.js");
|
7
9
|
const COLUMN_ORDER_PREFIX = 'sort';
|
8
10
|
|
9
11
|
/**
|
@@ -3,6 +3,8 @@
|
|
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");
|
6
8
|
var _element = require("../../helpers/dom/element");
|
7
9
|
var _number = require("../../helpers/number");
|
8
10
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
@@ -75,6 +77,7 @@ var _stateManager = /*#__PURE__*/new WeakMap();
|
|
75
77
|
var _hidingIndexMapObserver = /*#__PURE__*/new WeakMap();
|
76
78
|
var _focusInitialCoords = /*#__PURE__*/new WeakMap();
|
77
79
|
var _isColumnsSelectionInProgress = /*#__PURE__*/new WeakMap();
|
80
|
+
var _recentlyHighlightCoords = /*#__PURE__*/new WeakMap();
|
78
81
|
var _NestedHeaders_brand = /*#__PURE__*/new WeakSet();
|
79
82
|
class NestedHeaders extends _base.BasePlugin {
|
80
83
|
constructor() {
|
@@ -109,6 +112,14 @@ class NestedHeaders extends _base.BasePlugin {
|
|
109
112
|
* @type {boolean}
|
110
113
|
*/
|
111
114
|
_classPrivateFieldInitSpec(this, _isColumnsSelectionInProgress, false);
|
115
|
+
/**
|
116
|
+
* Keeps the last highlight position made by column selection. The coords are necessary to scroll
|
117
|
+
* the viewport to the correct position when the nested header is clicked when the `navigableHeaders`
|
118
|
+
* option is disabled.
|
119
|
+
*
|
120
|
+
* @type {CellCoords | null}
|
121
|
+
*/
|
122
|
+
_classPrivateFieldInitSpec(this, _recentlyHighlightCoords, null);
|
112
123
|
/**
|
113
124
|
* Custom helper for getting widths of the nested headers.
|
114
125
|
*
|
@@ -529,9 +540,13 @@ function _updateFocusHighlightPosition() {
|
|
529
540
|
* indexes are used.
|
530
541
|
*
|
531
542
|
* @param {number} visualColumn A visual column index to which the viewport will be scrolled.
|
543
|
+
* @param {{ value: 'auto' | 'start' | 'end' }} snapping If `'start'`, viewport is scrolled to show
|
544
|
+
* the cell on the left of the table. If `'end'`, viewport is scrolled to show the cell on the right of
|
545
|
+
* the table. When `'auto'`, the viewport is scrolled only when the column is outside of the viewport.
|
532
546
|
* @returns {number}
|
533
547
|
*/
|
534
|
-
function _onBeforeViewportScrollHorizontally(visualColumn) {
|
548
|
+
function _onBeforeViewportScrollHorizontally(visualColumn, snapping) {
|
549
|
+
var _classPrivateFieldGet4;
|
535
550
|
const selection = this.hot.getSelectedRangeLast();
|
536
551
|
if (!selection) {
|
537
552
|
return visualColumn;
|
@@ -539,20 +554,50 @@ function _onBeforeViewportScrollHorizontally(visualColumn) {
|
|
539
554
|
const {
|
540
555
|
highlight
|
541
556
|
} = selection;
|
542
|
-
const
|
557
|
+
const {
|
558
|
+
navigableHeaders
|
559
|
+
} = this.hot.getSettings();
|
560
|
+
const isSelectedByColumnHeader = this.hot.selection.isSelectedByColumnHeader();
|
561
|
+
const highlightRow = navigableHeaders ? highlight.row : (_classPrivateFieldGet4 = _classPrivateFieldGet(_recentlyHighlightCoords, this)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.row;
|
562
|
+
const highlightColumn = isSelectedByColumnHeader ? visualColumn : highlight.col;
|
563
|
+
const isNestedHeadersRange = highlightRow < 0 && highlightColumn >= 0;
|
564
|
+
_classPrivateFieldSet(_recentlyHighlightCoords, this, null);
|
543
565
|
if (!isNestedHeadersRange) {
|
544
566
|
return visualColumn;
|
545
567
|
}
|
546
|
-
const
|
547
|
-
const
|
548
|
-
const
|
549
|
-
const
|
568
|
+
const firstVisibleColumn = this.hot.getFirstFullyVisibleColumn();
|
569
|
+
const lastVisibleColumn = this.hot.getLastFullyVisibleColumn();
|
570
|
+
const viewportWidth = lastVisibleColumn - firstVisibleColumn + 1;
|
571
|
+
const mostLeftColumnIndex = _classPrivateFieldGet(_stateManager, this).findLeftMostColumnIndex(highlightRow, highlightColumn);
|
572
|
+
const mostRightColumnIndex = _classPrivateFieldGet(_stateManager, this).findRightMostColumnIndex(highlightRow, highlightColumn);
|
573
|
+
const headerWidth = mostRightColumnIndex - mostLeftColumnIndex + 1;
|
550
574
|
|
551
|
-
//
|
552
|
-
if (mostLeftColumnIndex <
|
553
|
-
return
|
575
|
+
// scroll the viewport always to the left when the header is wider than the viewport
|
576
|
+
if (mostLeftColumnIndex < firstVisibleColumn && mostRightColumnIndex > lastVisibleColumn) {
|
577
|
+
return mostLeftColumnIndex;
|
578
|
+
}
|
579
|
+
if (isSelectedByColumnHeader) {
|
580
|
+
let scrollColumnIndex = null;
|
581
|
+
if (mostLeftColumnIndex >= firstVisibleColumn && mostRightColumnIndex > lastVisibleColumn) {
|
582
|
+
if (headerWidth > viewportWidth) {
|
583
|
+
snapping.value = 'start';
|
584
|
+
scrollColumnIndex = mostLeftColumnIndex;
|
585
|
+
} else {
|
586
|
+
snapping.value = 'end';
|
587
|
+
scrollColumnIndex = mostRightColumnIndex;
|
588
|
+
}
|
589
|
+
} else if (mostLeftColumnIndex < firstVisibleColumn && mostRightColumnIndex <= lastVisibleColumn) {
|
590
|
+
if (headerWidth > viewportWidth) {
|
591
|
+
snapping.value = 'end';
|
592
|
+
scrollColumnIndex = mostRightColumnIndex;
|
593
|
+
} else {
|
594
|
+
snapping.value = 'start';
|
595
|
+
scrollColumnIndex = mostLeftColumnIndex;
|
596
|
+
}
|
597
|
+
}
|
598
|
+
return scrollColumnIndex;
|
554
599
|
}
|
555
|
-
return mostLeftColumnIndex
|
600
|
+
return mostLeftColumnIndex <= firstVisibleColumn ? mostLeftColumnIndex : mostRightColumnIndex;
|
556
601
|
}
|
557
602
|
/**
|
558
603
|
* Allows to control which header DOM element will be used to highlight.
|
@@ -623,13 +668,13 @@ function _onBeforeCopy(data, copyableRanges, _ref2) {
|
|
623
668
|
}
|
624
669
|
for (let column = startCol; column <= endCol; column++) {
|
625
670
|
for (let row = startRow; row <= endRow; row++) {
|
626
|
-
var
|
671
|
+
var _classPrivateFieldGet5;
|
627
672
|
const zeroBasedColumnHeaderLevel = rowsCount + row;
|
628
673
|
const zeroBasedColumnIndex = column - startCol;
|
629
674
|
if (zeroBasedColumnIndex === 0) {
|
630
675
|
continue; // eslint-disable-line no-continue
|
631
676
|
}
|
632
|
-
const isRoot = (
|
677
|
+
const isRoot = (_classPrivateFieldGet5 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(row, column)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.isRoot;
|
633
678
|
if (isRoot === false) {
|
634
679
|
data[zeroBasedColumnHeaderLevel][zeroBasedColumnIndex] = '';
|
635
680
|
}
|
@@ -707,7 +752,7 @@ function _onAfterOnCellMouseDown(event, coords) {
|
|
707
752
|
* a boolean value that allows or disallows changing the selection for that particular area.
|
708
753
|
*/
|
709
754
|
function _onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
710
|
-
if (!this.hot.view.isMouseDown()) {
|
755
|
+
if (!this.hot.view.isMouseDown() || controller.column) {
|
711
756
|
return;
|
712
757
|
}
|
713
758
|
const headerNodeData = this._getHeaderTreeNodeDataByCoords(coords);
|
@@ -815,8 +860,9 @@ function _onModifyTransformStart(delta) {
|
|
815
860
|
*
|
816
861
|
* @param {CellCoords} from The coords object where the selection starts.
|
817
862
|
* @param {CellCoords} to The coords object where the selection ends.
|
863
|
+
* @param {CellCoords} highlight The coords object where the focus is.
|
818
864
|
*/
|
819
|
-
function _onBeforeSelectColumns(from, to) {
|
865
|
+
function _onBeforeSelectColumns(from, to, highlight) {
|
820
866
|
const headerLevel = from.row;
|
821
867
|
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
822
868
|
row: headerLevel,
|
@@ -826,6 +872,7 @@ function _onBeforeSelectColumns(from, to) {
|
|
826
872
|
row: headerLevel,
|
827
873
|
col: to.col
|
828
874
|
});
|
875
|
+
_classPrivateFieldSet(_recentlyHighlightCoords, this, highlight.clone());
|
829
876
|
if (to.col < from.col) {
|
830
877
|
// Column selection from right to left
|
831
878
|
if (startNodeData) {
|
@@ -910,10 +957,10 @@ function _onModifyColWidth(width, column) {
|
|
910
957
|
* @returns {string} Returns the column header value to update.
|
911
958
|
*/
|
912
959
|
function _onModifyColumnHeaderValue(value, visualColumnIndex, headerLevel) {
|
913
|
-
var
|
960
|
+
var _classPrivateFieldGet6;
|
914
961
|
const {
|
915
962
|
label
|
916
|
-
} = (
|
963
|
+
} = (_classPrivateFieldGet6 = _classPrivateFieldGet(_stateManager, this).getHeaderTreeNodeData(headerLevel, visualColumnIndex)) !== null && _classPrivateFieldGet6 !== void 0 ? _classPrivateFieldGet6 : {
|
917
964
|
label: ''
|
918
965
|
};
|
919
966
|
return label;
|