handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|