handsontable 14.4.0-next-1ffa7bc-20240606 → 14.5.0-next-ede811d-20240717
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/calculator/renderAllColumns.js +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +3 -3
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +3 -3
- package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
- package/3rdparty/walkontable/src/cell/coords.js +3 -3
- package/3rdparty/walkontable/src/cell/coords.mjs +3 -3
- package/3rdparty/walkontable/src/cell/range.js +4 -4
- package/3rdparty/walkontable/src/cell/range.mjs +3 -3
- package/3rdparty/walkontable/src/core/_base.js +2 -2
- package/3rdparty/walkontable/src/core/_base.mjs +1 -1
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +1 -1
- package/3rdparty/walkontable/src/core/core.js +17 -1
- package/3rdparty/walkontable/src/core/core.mjs +16 -0
- package/3rdparty/walkontable/src/event.js +2 -2
- package/3rdparty/walkontable/src/event.mjs +2 -2
- package/3rdparty/walkontable/src/facade/core.js +4 -1
- package/3rdparty/walkontable/src/facade/core.mjs +3 -0
- package/3rdparty/walkontable/src/filter/column.js +1 -1
- package/3rdparty/walkontable/src/filter/column.mjs +1 -1
- package/3rdparty/walkontable/src/filter/row.js +1 -1
- package/3rdparty/walkontable/src/filter/row.mjs +1 -1
- package/3rdparty/walkontable/src/index.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.js +2 -2
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -1
- package/3rdparty/walkontable/src/overlay/top.js +2 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +2 -2
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
- package/3rdparty/walkontable/src/overlays.js +36 -4
- package/3rdparty/walkontable/src/overlays.mjs +36 -4
- package/3rdparty/walkontable/src/renderer/_base.js +2 -2
- package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/cells.js +2 -2
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +1 -1
- package/3rdparty/walkontable/src/renderer/index.js +12 -1
- package/3rdparty/walkontable/src/renderer/index.mjs +11 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rows.js +2 -2
- package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/table.js +17 -2
- package/3rdparty/walkontable/src/renderer/table.mjs +17 -2
- package/3rdparty/walkontable/src/scroll.js +3 -3
- package/3rdparty/walkontable/src/scroll.mjs +3 -3
- package/3rdparty/walkontable/src/selection/index.js +1 -1
- package/3rdparty/walkontable/src/selection/manager.js +4 -4
- package/3rdparty/walkontable/src/selection/manager.mjs +3 -3
- package/3rdparty/walkontable/src/selection/scanner.js +3 -3
- package/3rdparty/walkontable/src/selection/scanner.mjs +3 -3
- package/3rdparty/walkontable/src/selection/selection.js +1 -1
- package/3rdparty/walkontable/src/settings.js +6 -2
- package/3rdparty/walkontable/src/settings.mjs +6 -2
- package/3rdparty/walkontable/src/table/bottom.js +1 -1
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -1
- package/3rdparty/walkontable/src/table/inlineStart.js +1 -1
- package/3rdparty/walkontable/src/table/master.js +1 -1
- package/3rdparty/walkontable/src/table/top.js +1 -1
- package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -1
- package/3rdparty/walkontable/src/table.js +3 -3
- package/3rdparty/walkontable/src/table.mjs +2 -2
- package/3rdparty/walkontable/src/utils/column.js +1 -1
- package/3rdparty/walkontable/src/utils/column.mjs +1 -1
- package/3rdparty/walkontable/src/utils/columnStretching.js +3 -3
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +3 -3
- package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/index.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/sharedView.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
- package/3rdparty/walkontable/src/utils/row.js +17 -1
- package/3rdparty/walkontable/src/utils/row.mjs +17 -1
- package/CHANGELOG.md +27 -1
- package/base.js +3 -3
- package/base.mjs +2 -2
- package/cellTypes/registry.js +1 -1
- package/common.d.ts +3 -0
- package/core.d.ts +2 -0
- package/core.js +36 -31
- package/core.mjs +35 -30
- package/dataMap/dataMap.js +1 -1
- package/dataMap/dataMap.mjs +1 -1
- package/dataMap/dataSource.js +1 -1
- package/dataMap/dataSource.mjs +1 -1
- package/dataMap/index.js +1 -1
- package/dataMap/metaManager/index.js +1 -1
- package/dataMap/metaManager/lazyFactoryMap.js +1 -1
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -1
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/columnMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +25 -0
- package/dataMap/metaManager/metaSchema.mjs +25 -0
- package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +3 -3
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +3 -3
- package/dataMap/replaceData.js +1 -1
- package/dist/handsontable.css +134 -88
- package/dist/handsontable.full.css +134 -88
- package/dist/handsontable.full.js +2191 -1503
- package/dist/handsontable.full.min.css +7 -7
- package/dist/handsontable.full.min.js +86 -86
- package/dist/handsontable.js +2180 -1440
- package/dist/handsontable.min.css +6 -6
- package/dist/handsontable.min.js +23 -23
- package/dist/languages/all.js +3 -3
- package/dist/languages/ar-AR.js +3 -3
- package/dist/languages/cs-CZ.js +3 -3
- package/dist/languages/de-CH.js +3 -3
- package/dist/languages/de-DE.js +3 -3
- package/dist/languages/en-US.js +3 -3
- package/dist/languages/es-MX.js +3 -3
- package/dist/languages/fr-FR.js +3 -3
- package/dist/languages/hr-HR.js +3 -3
- package/dist/languages/it-IT.js +3 -3
- package/dist/languages/ja-JP.js +3 -3
- package/dist/languages/ko-KR.js +3 -3
- package/dist/languages/lv-LV.js +3 -3
- package/dist/languages/nb-NO.js +3 -3
- package/dist/languages/nl-NL.js +3 -3
- package/dist/languages/pl-PL.js +3 -3
- package/dist/languages/pt-BR.js +3 -3
- package/dist/languages/ru-RU.js +3 -3
- package/dist/languages/sr-SP.js +3 -3
- package/dist/languages/zh-CN.js +3 -3
- package/dist/languages/zh-TW.js +3 -3
- package/editorManager.js +4 -4
- package/editorManager.mjs +3 -3
- package/editors/autocompleteEditor/autocompleteEditor.js +3 -3
- package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -3
- package/editors/baseEditor/baseEditor.js +2 -2
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +2 -2
- package/editors/dateEditor/dateEditor.mjs +1 -1
- package/editors/dropdownEditor/dropdownEditor.js +1 -1
- package/editors/registry.js +1 -1
- package/editors/textEditor/textEditor.js +2 -2
- package/editors/textEditor/textEditor.mjs +1 -1
- package/eventManager.js +1 -1
- package/eventManager.mjs +1 -1
- package/focusManager.js +3 -3
- package/focusManager.mjs +3 -3
- package/helpers/dom/event.d.ts +1 -0
- package/helpers/dom/event.js +11 -0
- package/helpers/dom/event.mjs +10 -0
- package/helpers/mixed.js +3 -3
- package/helpers/mixed.mjs +2 -2
- package/helpers/string.js +1 -1
- package/i18n/languages/index.js +1 -1
- package/i18n/phraseFormatters/index.js +1 -1
- package/i18n/registry.js +1 -1
- package/index.js +1 -1
- package/languages/all.js +3 -3
- package/languages/ar-AR.js +3 -3
- package/languages/cs-CZ.js +3 -3
- package/languages/de-CH.js +3 -3
- package/languages/de-DE.js +3 -3
- package/languages/en-US.js +3 -3
- package/languages/es-MX.js +3 -3
- package/languages/fr-FR.js +3 -3
- package/languages/hr-HR.js +3 -3
- package/languages/index.js +3 -3
- package/languages/it-IT.js +3 -3
- package/languages/ja-JP.js +3 -3
- package/languages/ko-KR.js +3 -3
- package/languages/lv-LV.js +3 -3
- package/languages/nb-NO.js +3 -3
- package/languages/nl-NL.js +3 -3
- package/languages/pl-PL.js +3 -3
- package/languages/pt-BR.js +3 -3
- package/languages/ru-RU.js +3 -3
- package/languages/sr-SP.js +3 -3
- package/languages/zh-CN.js +3 -3
- package/languages/zh-TW.js +3 -3
- package/package.json +1 -5
- package/pluginHooks.d.ts +3 -1
- package/pluginHooks.js +12 -1
- package/pluginHooks.mjs +12 -1
- package/plugins/autoColumnSize/autoColumnSize.d.ts +1 -1
- package/plugins/autoColumnSize/autoColumnSize.js +123 -123
- package/plugins/autoColumnSize/autoColumnSize.mjs +122 -122
- package/plugins/autoRowSize/autoRowSize.d.ts +2 -1
- package/plugins/autoRowSize/autoRowSize.js +162 -100
- package/plugins/autoRowSize/autoRowSize.mjs +161 -99
- package/plugins/autofill/autofill.js +4 -4
- package/plugins/autofill/autofill.mjs +3 -3
- package/plugins/base/base.js +5 -5
- package/plugins/base/base.mjs +4 -4
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -4
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -4
- package/plugins/columnSorting/columnSorting.js +6 -5
- package/plugins/columnSorting/columnSorting.mjs +5 -4
- package/plugins/columnSorting/columnStatesManager.js +1 -1
- package/plugins/columnSorting/columnStatesManager.mjs +1 -1
- package/plugins/columnSorting/sortService/registry.js +1 -1
- package/plugins/columnSorting/utils.js +1 -1
- package/plugins/columnSummary/columnSummary.d.ts +1 -1
- package/plugins/columnSummary/columnSummary.js +4 -4
- package/plugins/columnSummary/columnSummary.mjs +3 -3
- package/plugins/columnSummary/endpoints.js +1 -1
- package/plugins/columnSummary/endpoints.mjs +1 -1
- package/plugins/comments/commentEditor.js +74 -39
- package/plugins/comments/commentEditor.mjs +73 -39
- package/plugins/comments/comments.js +25 -44
- package/plugins/comments/comments.mjs +25 -44
- package/plugins/comments/displaySwitch.js +2 -2
- package/plugins/comments/displaySwitch.mjs +1 -1
- package/plugins/comments/editorResizeObserver.js +100 -0
- package/plugins/comments/editorResizeObserver.mjs +95 -0
- package/plugins/contextMenu/commandExecutor.js +1 -1
- package/plugins/contextMenu/commandExecutor.mjs +1 -1
- package/plugins/contextMenu/contextMenu.js +4 -4
- package/plugins/contextMenu/contextMenu.mjs +3 -3
- package/plugins/contextMenu/itemsFactory.js +1 -1
- package/plugins/contextMenu/itemsFactory.mjs +1 -1
- package/plugins/contextMenu/menu/cursor.js +1 -1
- package/plugins/contextMenu/menu/cursor.mjs +1 -1
- package/plugins/contextMenu/menu/menu.js +5 -4
- package/plugins/contextMenu/menu/menu.mjs +4 -3
- package/plugins/contextMenu/menu/positioner.js +2 -2
- package/plugins/contextMenu/menu/positioner.mjs +2 -2
- package/plugins/copyPaste/copyPaste.js +5 -5
- package/plugins/copyPaste/copyPaste.mjs +4 -4
- package/plugins/copyPaste/copyableRanges.js +3 -3
- package/plugins/copyPaste/copyableRanges.mjs +3 -3
- package/plugins/copyPaste/pasteEvent.js +1 -1
- package/plugins/customBorders/contextMenuItem/index.js +1 -1
- package/plugins/customBorders/customBorders.js +3 -3
- package/plugins/customBorders/customBorders.mjs +3 -3
- package/plugins/dragToScroll/dragToScroll.js +4 -4
- package/plugins/dragToScroll/dragToScroll.mjs +4 -4
- package/plugins/dropdownMenu/dropdownMenu.js +5 -5
- package/plugins/dropdownMenu/dropdownMenu.mjs +4 -4
- package/plugins/exportFile/dataProvider.js +1 -1
- package/plugins/exportFile/dataProvider.mjs +1 -1
- package/plugins/exportFile/exportFile.js +1 -1
- package/plugins/exportFile/typeFactory.js +1 -1
- package/plugins/exportFile/types/_base.js +1 -1
- package/plugins/exportFile/types/_base.mjs +1 -1
- package/plugins/exportFile/types/csv.js +1 -1
- package/plugins/filters/component/_base.js +2 -2
- package/plugins/filters/component/_base.mjs +1 -1
- package/plugins/filters/component/actionBar.js +3 -3
- package/plugins/filters/component/actionBar.mjs +3 -3
- package/plugins/filters/component/condition.js +3 -3
- package/plugins/filters/component/condition.mjs +3 -3
- package/plugins/filters/component/operators.js +3 -3
- package/plugins/filters/component/operators.mjs +3 -3
- package/plugins/filters/component/value.js +3 -3
- package/plugins/filters/component/value.mjs +3 -3
- package/plugins/filters/condition/date/after.js +1 -1
- package/plugins/filters/condition/date/before.js +1 -1
- package/plugins/filters/condition/date/today.js +1 -1
- package/plugins/filters/condition/date/tomorrow.js +1 -1
- package/plugins/filters/condition/date/yesterday.js +1 -1
- package/plugins/filters/conditionCollection.js +2 -2
- package/plugins/filters/conditionCollection.mjs +1 -1
- package/plugins/filters/conditionUpdateObserver.js +4 -4
- package/plugins/filters/conditionUpdateObserver.mjs +3 -3
- package/plugins/filters/dataFilter.js +1 -1
- package/plugins/filters/dataFilter.mjs +1 -1
- package/plugins/filters/filters.js +5 -5
- package/plugins/filters/filters.mjs +4 -4
- package/plugins/filters/ui/_base.js +2 -2
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/ui/input.js +3 -3
- package/plugins/filters/ui/input.mjs +3 -3
- package/plugins/filters/ui/link.js +2 -2
- package/plugins/filters/ui/link.mjs +2 -2
- package/plugins/filters/ui/multipleSelect.js +3 -3
- package/plugins/filters/ui/multipleSelect.mjs +3 -3
- package/plugins/filters/ui/radioInput.js +2 -2
- package/plugins/filters/ui/radioInput.mjs +2 -2
- package/plugins/filters/ui/select.js +3 -3
- package/plugins/filters/ui/select.mjs +3 -3
- package/plugins/formulas/engine/register.js +1 -1
- package/plugins/formulas/formulas.js +7 -7
- package/plugins/formulas/formulas.mjs +6 -6
- package/plugins/formulas/indexSyncer/axisSyncer.js +2 -2
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +2 -2
- package/plugins/formulas/indexSyncer/index.js +3 -3
- package/plugins/formulas/indexSyncer/index.mjs +2 -2
- package/plugins/formulas/utils.js +1 -1
- package/plugins/hiddenColumns/hiddenColumns.js +4 -4
- package/plugins/hiddenColumns/hiddenColumns.mjs +3 -3
- package/plugins/hiddenRows/hiddenRows.js +4 -4
- package/plugins/hiddenRows/hiddenRows.mjs +3 -3
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +4 -4
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -3
- package/plugins/manualColumnMove/manualColumnMove.js +4 -4
- package/plugins/manualColumnMove/manualColumnMove.mjs +3 -3
- package/plugins/manualColumnMove/ui/_base.js +1 -1
- package/plugins/manualColumnMove/ui/_base.mjs +1 -1
- package/plugins/manualColumnMove/ui/backlight.js +1 -1
- package/plugins/manualColumnMove/ui/guideline.js +1 -1
- package/plugins/manualColumnResize/manualColumnResize.js +3 -3
- package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
- package/plugins/manualRowMove/manualRowMove.js +4 -4
- package/plugins/manualRowMove/manualRowMove.mjs +3 -3
- package/plugins/manualRowMove/ui/_base.js +1 -1
- package/plugins/manualRowMove/ui/_base.mjs +1 -1
- package/plugins/manualRowMove/ui/backlight.js +1 -1
- package/plugins/manualRowMove/ui/guideline.js +1 -1
- package/plugins/manualRowResize/manualRowResize.js +3 -3
- package/plugins/manualRowResize/manualRowResize.mjs +3 -3
- package/plugins/mergeCells/calculations/autofill.js +2 -2
- package/plugins/mergeCells/calculations/autofill.mjs +2 -2
- package/plugins/mergeCells/calculations/selection.js +1 -1
- package/plugins/mergeCells/calculations/selection.mjs +1 -1
- package/plugins/mergeCells/cellCoords.js +81 -24
- package/plugins/mergeCells/cellCoords.mjs +81 -24
- package/plugins/mergeCells/cellsCollection.js +167 -91
- package/plugins/mergeCells/cellsCollection.mjs +166 -90
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -1
- package/plugins/mergeCells/focusOrder.js +4 -4
- package/plugins/mergeCells/focusOrder.mjs +3 -3
- package/plugins/mergeCells/mergeCells.js +171 -122
- package/plugins/mergeCells/mergeCells.mjs +171 -122
- package/plugins/mergeCells/renderer.js +74 -0
- package/plugins/mergeCells/renderer.mjs +70 -0
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -1
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -1
- package/plugins/multiColumnSorting/utils.js +1 -1
- package/plugins/multiColumnSorting/utils.mjs +1 -1
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
- package/plugins/nestedHeaders/nestedHeaders.d.ts +1 -0
- package/plugins/nestedHeaders/nestedHeaders.js +20 -9
- package/plugins/nestedHeaders/nestedHeaders.mjs +20 -9
- package/plugins/nestedHeaders/stateManager/headersTree.js +3 -3
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +2 -2
- package/plugins/nestedHeaders/stateManager/index.js +3 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +2 -2
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +2 -2
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +2 -2
- package/plugins/nestedHeaders/stateManager/utils.js +6 -2
- package/plugins/nestedHeaders/stateManager/utils.mjs +6 -2
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
- package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +1 -1
- package/plugins/nestedRows/data/dataManager.mjs +1 -1
- package/plugins/nestedRows/nestedRows.js +5 -5
- package/plugins/nestedRows/nestedRows.mjs +4 -4
- package/plugins/nestedRows/ui/_base.js +1 -1
- package/plugins/nestedRows/ui/_base.mjs +1 -1
- package/plugins/nestedRows/ui/collapsing.js +1 -1
- package/plugins/nestedRows/ui/contextMenu.js +4 -4
- package/plugins/nestedRows/ui/contextMenu.mjs +3 -3
- package/plugins/nestedRows/ui/headers.js +1 -1
- package/plugins/nestedRows/utils/rowMoveController.js +1 -1
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
- package/plugins/persistentState/persistentState.js +2 -2
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/persistentState/storage.js +1 -1
- package/plugins/persistentState/storage.mjs +1 -1
- package/plugins/search/search.js +3 -3
- package/plugins/search/search.mjs +3 -3
- package/plugins/touchScroll/touchScroll.js +3 -3
- package/plugins/touchScroll/touchScroll.mjs +3 -3
- package/plugins/trimRows/trimRows.js +3 -3
- package/plugins/trimRows/trimRows.mjs +3 -3
- package/plugins/undoRedo/undoRedo.js +38 -1
- package/plugins/undoRedo/undoRedo.mjs +37 -0
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
- package/renderers/numericRenderer/numericRenderer.js +1 -1
- package/renderers/registry.js +1 -1
- package/selection/highlight/highlight.js +3 -3
- package/selection/highlight/highlight.mjs +3 -3
- package/selection/highlight/types/activeHeader.js +1 -1
- package/selection/highlight/types/area.js +1 -1
- package/selection/highlight/types/areaLayered.js +1 -1
- package/selection/highlight/types/column.js +1 -1
- package/selection/highlight/types/customSelection.js +1 -1
- package/selection/highlight/types/fill.js +1 -1
- package/selection/highlight/types/focus.js +1 -1
- package/selection/highlight/types/header.js +1 -1
- package/selection/highlight/types/row.js +1 -1
- package/selection/highlight/visualSelection.js +1 -1
- package/selection/highlight/visualSelection.mjs +1 -1
- package/selection/index.js +1 -1
- package/selection/range.js +1 -1
- package/selection/range.mjs +1 -1
- package/selection/selection.js +8 -4
- package/selection/selection.mjs +7 -3
- package/selection/transformation.js +14 -4
- package/selection/transformation.mjs +13 -3
- package/settings.d.ts +1 -0
- package/shortcuts/utils.js +18 -27
- package/shortcuts/utils.mjs +18 -27
- package/tableView.js +126 -28
- package/tableView.mjs +125 -27
- package/translations/changesObservable/observable.js +2 -2
- package/translations/changesObservable/observable.mjs +2 -2
- package/translations/changesObservable/observer.js +3 -3
- package/translations/changesObservable/observer.mjs +2 -2
- package/translations/indexMapper.js +2 -2
- package/translations/indexMapper.mjs +1 -1
- package/translations/mapCollections/aggregatedCollection.js +1 -1
- package/translations/mapCollections/aggregatedCollection.mjs +1 -1
- package/translations/mapCollections/mapCollection.js +2 -2
- package/translations/mapCollections/mapCollection.mjs +1 -1
- package/translations/maps/indexMap.js +2 -2
- package/translations/maps/indexMap.mjs +1 -1
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +1 -1
- package/utils/dataStructures/linkedList.mjs +1 -1
- package/utils/dataStructures/tree.js +1 -1
- package/utils/dataStructures/tree.mjs +1 -1
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/utils/interval.js +4 -4
- package/utils/interval.mjs +4 -4
- package/utils/samplesGenerator.js +1 -1
- package/utils/samplesGenerator.mjs +1 -1
- package/validators/dateValidator/dateValidator.js +1 -1
- package/validators/registry.js +1 -1
- package/validators/timeValidator/timeValidator.js +1 -1
- package/plugins/mergeCells/utils.js +0 -28
- package/plugins/mergeCells/utils.mjs +0 -24
@@ -7,10 +7,10 @@ import "core-js/modules/esnext.set.is-subset-of.v2.js";
|
|
7
7
|
import "core-js/modules/esnext.set.is-superset-of.v2.js";
|
8
8
|
import "core-js/modules/esnext.set.symmetric-difference.v2.js";
|
9
9
|
import "core-js/modules/esnext.set.union.v2.js";
|
10
|
-
function _classPrivateMethodInitSpec(
|
11
|
-
function _classPrivateFieldInitSpec(
|
12
|
-
function _checkPrivateRedeclaration(
|
13
|
-
function _defineProperty(
|
10
|
+
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
11
|
+
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
12
|
+
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
13
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
14
14
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
15
15
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
16
16
|
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
@@ -24,13 +24,13 @@ import AutofillCalculations from "./calculations/autofill.mjs";
|
|
24
24
|
import SelectionCalculations from "./calculations/selection.mjs";
|
25
25
|
import toggleMergeItem from "./contextMenuItem/toggleMerge.mjs";
|
26
26
|
import { arrayEach } from "../../helpers/array.mjs";
|
27
|
-
import { isObject
|
27
|
+
import { isObject } from "../../helpers/object.mjs";
|
28
28
|
import { warn } from "../../helpers/console.mjs";
|
29
29
|
import { rangeEach } from "../../helpers/number.mjs";
|
30
|
-
import { applySpanProperties } from "./utils.mjs";
|
31
30
|
import { getStyle } from "../../helpers/dom/element.mjs";
|
32
31
|
import { isChrome } from "../../helpers/browser.mjs";
|
33
32
|
import { FocusOrder } from "./focusOrder.mjs";
|
33
|
+
import { createMergeCellRenderer } from "./renderer.mjs";
|
34
34
|
Hooks.getSingleton().register('beforeMergeCells');
|
35
35
|
Hooks.getSingleton().register('afterMergeCells');
|
36
36
|
Hooks.getSingleton().register('beforeUnmergeCells');
|
@@ -79,6 +79,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
79
79
|
var _lastSelectedFocus = /*#__PURE__*/new WeakMap();
|
80
80
|
var _lastFocusDelta = /*#__PURE__*/new WeakMap();
|
81
81
|
var _focusOrder = /*#__PURE__*/new WeakMap();
|
82
|
+
var _cellRenderer = /*#__PURE__*/new WeakMap();
|
82
83
|
var _MergeCells_brand = /*#__PURE__*/new WeakSet();
|
83
84
|
export class MergeCells extends BasePlugin {
|
84
85
|
constructor() {
|
@@ -135,6 +136,12 @@ export class MergeCells extends BasePlugin {
|
|
135
136
|
rowIndexMapper: this.hot.rowIndexMapper,
|
136
137
|
columnIndexMapper: this.hot.columnIndexMapper
|
137
138
|
}));
|
139
|
+
/**
|
140
|
+
* The cell renderer responsible for rendering the merged cells.
|
141
|
+
*
|
142
|
+
* @type {{before: Function, after: Function}}
|
143
|
+
*/
|
144
|
+
_classPrivateFieldInitSpec(this, _cellRenderer, createMergeCellRenderer(this));
|
138
145
|
}
|
139
146
|
static get PLUGIN_KEY() {
|
140
147
|
return PLUGIN_KEY;
|
@@ -236,94 +243,97 @@ export class MergeCells extends BasePlugin {
|
|
236
243
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
|
237
244
|
});
|
238
245
|
this.addHook('afterRenderer', function () {
|
246
|
+
return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
|
247
|
+
});
|
248
|
+
this.addHook('afterContextMenuDefaultOptions', function () {
|
239
249
|
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
240
250
|
args[_key13] = arguments[_key13];
|
241
251
|
}
|
242
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
252
|
+
return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
|
243
253
|
});
|
244
|
-
this.addHook('
|
254
|
+
this.addHook('afterGetCellMeta', function () {
|
245
255
|
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
246
256
|
args[_key14] = arguments[_key14];
|
247
257
|
}
|
248
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
258
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
|
249
259
|
});
|
250
|
-
this.addHook('
|
260
|
+
this.addHook('afterViewportRowCalculatorOverride', function () {
|
251
261
|
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
252
262
|
args[_key15] = arguments[_key15];
|
253
263
|
}
|
254
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
264
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
|
255
265
|
});
|
256
|
-
this.addHook('
|
266
|
+
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
257
267
|
for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
258
268
|
args[_key16] = arguments[_key16];
|
259
269
|
}
|
260
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
270
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
261
271
|
});
|
262
|
-
this.addHook('
|
272
|
+
this.addHook('modifyAutofillRange', function () {
|
263
273
|
for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
|
264
274
|
args[_key17] = arguments[_key17];
|
265
275
|
}
|
266
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
276
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
|
267
277
|
});
|
268
|
-
this.addHook('
|
278
|
+
this.addHook('afterCreateCol', function () {
|
269
279
|
for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
|
270
280
|
args[_key18] = arguments[_key18];
|
271
281
|
}
|
272
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
282
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
|
273
283
|
});
|
274
|
-
this.addHook('
|
284
|
+
this.addHook('afterRemoveCol', function () {
|
275
285
|
for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
|
276
286
|
args[_key19] = arguments[_key19];
|
277
287
|
}
|
278
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
288
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
|
279
289
|
});
|
280
|
-
this.addHook('
|
290
|
+
this.addHook('afterCreateRow', function () {
|
281
291
|
for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
|
282
292
|
args[_key20] = arguments[_key20];
|
283
293
|
}
|
284
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
294
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
|
285
295
|
});
|
286
|
-
this.addHook('
|
296
|
+
this.addHook('afterRemoveRow', function () {
|
287
297
|
for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
|
288
298
|
args[_key21] = arguments[_key21];
|
289
299
|
}
|
290
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
300
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
|
291
301
|
});
|
292
|
-
this.addHook('
|
302
|
+
this.addHook('afterChange', function () {
|
293
303
|
for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
|
294
304
|
args[_key22] = arguments[_key22];
|
295
305
|
}
|
296
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
306
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
|
297
307
|
});
|
298
|
-
this.addHook('
|
308
|
+
this.addHook('beforeDrawBorders', function () {
|
299
309
|
for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
|
300
310
|
args[_key23] = arguments[_key23];
|
301
311
|
}
|
302
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
312
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
|
303
313
|
});
|
304
|
-
this.addHook('
|
314
|
+
this.addHook('afterDrawSelection', function () {
|
305
315
|
for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
|
306
316
|
args[_key24] = arguments[_key24];
|
307
317
|
}
|
308
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
318
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
|
309
319
|
});
|
310
|
-
this.addHook('
|
320
|
+
this.addHook('beforeRemoveCellClassNames', function () {
|
311
321
|
for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
|
312
322
|
args[_key25] = arguments[_key25];
|
313
323
|
}
|
314
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
324
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
|
315
325
|
});
|
316
|
-
this.addHook('
|
326
|
+
this.addHook('beforeBeginEditing', function () {
|
317
327
|
for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
318
328
|
args[_key26] = arguments[_key26];
|
319
329
|
}
|
320
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
330
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
|
321
331
|
});
|
322
|
-
this.addHook('
|
332
|
+
this.addHook('modifyRowHeightByOverlayName', function () {
|
323
333
|
for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
|
324
334
|
args[_key27] = arguments[_key27];
|
325
335
|
}
|
326
|
-
return _assertClassBrand(_MergeCells_brand, _this,
|
336
|
+
return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
|
327
337
|
});
|
328
338
|
this.addHook('beforeUndoStackChange', (action, source) => {
|
329
339
|
if (source === 'MergeCells') {
|
@@ -414,24 +424,26 @@ export class MergeCells extends BasePlugin {
|
|
414
424
|
* @returns {boolean}
|
415
425
|
*/
|
416
426
|
validateSetting(setting) {
|
417
|
-
let valid = true;
|
418
427
|
if (!setting) {
|
419
428
|
return false;
|
420
429
|
}
|
421
430
|
if (MergedCellCoords.containsNegativeValues(setting)) {
|
422
431
|
warn(MergedCellCoords.NEGATIVE_VALUES_WARNING(setting));
|
423
|
-
|
424
|
-
}
|
432
|
+
return false;
|
433
|
+
}
|
434
|
+
if (MergedCellCoords.isOutOfBounds(setting, this.hot.countRows(), this.hot.countCols())) {
|
425
435
|
warn(MergedCellCoords.IS_OUT_OF_BOUNDS_WARNING(setting));
|
426
|
-
|
427
|
-
}
|
436
|
+
return false;
|
437
|
+
}
|
438
|
+
if (MergedCellCoords.isSingleCell(setting)) {
|
428
439
|
warn(MergedCellCoords.IS_SINGLE_CELL(setting));
|
429
|
-
|
430
|
-
}
|
440
|
+
return false;
|
441
|
+
}
|
442
|
+
if (MergedCellCoords.containsZeroSpan(setting)) {
|
431
443
|
warn(MergedCellCoords.ZERO_SPAN_WARNING(setting));
|
432
|
-
|
444
|
+
return false;
|
433
445
|
}
|
434
|
-
return
|
446
|
+
return true;
|
435
447
|
}
|
436
448
|
|
437
449
|
/**
|
@@ -441,36 +453,42 @@ export class MergeCells extends BasePlugin {
|
|
441
453
|
* @param {Array|boolean} settings The settings provided to the plugin.
|
442
454
|
*/
|
443
455
|
generateFromSettings(settings) {
|
444
|
-
if (Array.isArray(settings)) {
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
populatedNulls.push([rowIndex, columnIndex, null]);
|
461
|
-
}
|
462
|
-
});
|
463
|
-
});
|
464
|
-
});
|
456
|
+
if (!Array.isArray(settings)) {
|
457
|
+
return;
|
458
|
+
}
|
459
|
+
const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
|
460
|
+
const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
|
461
|
+
const populatedNulls = [];
|
462
|
+
nonOverlappingSettings.forEach(mergeCellInfo => {
|
463
|
+
const {
|
464
|
+
row,
|
465
|
+
col,
|
466
|
+
rowspan,
|
467
|
+
colspan
|
468
|
+
} = mergeCellInfo;
|
469
|
+
const from = this.hot._createCellCoords(row, col);
|
470
|
+
const to = this.hot._createCellCoords(row + rowspan - 1, col + colspan - 1);
|
471
|
+
const mergeRange = this.hot._createCellRange(from, from, to);
|
465
472
|
|
466
|
-
//
|
467
|
-
|
468
|
-
|
473
|
+
// Merging without data population.
|
474
|
+
this.mergeRange(mergeRange, true, true);
|
475
|
+
for (let r = row; r < row + rowspan; r++) {
|
476
|
+
for (let c = col; c < col + colspan; c++) {
|
477
|
+
// Not resetting a cell representing a merge area's value.
|
478
|
+
if (r !== row || c !== col) {
|
479
|
+
populatedNulls.push([r, c, null]);
|
480
|
+
}
|
481
|
+
}
|
469
482
|
}
|
483
|
+
});
|
470
484
|
|
471
|
-
|
472
|
-
|
485
|
+
// There are no merged cells. Thus, no data population is needed.
|
486
|
+
if (populatedNulls.length === 0) {
|
487
|
+
return;
|
473
488
|
}
|
489
|
+
|
490
|
+
// TODO: Change the `source` argument to a more meaningful value, e.g. `${this.pluginName}.clearCells`.
|
491
|
+
this.hot.setDataAtCell(populatedNulls, undefined, undefined, this.pluginName);
|
474
492
|
}
|
475
493
|
|
476
494
|
/**
|
@@ -576,7 +594,7 @@ export class MergeCells extends BasePlugin {
|
|
576
594
|
});
|
577
595
|
});
|
578
596
|
this.hot.setCellMeta(mergeParent.row, mergeParent.col, 'spanned', true);
|
579
|
-
const mergedCellAdded = this.mergedCellsCollection.add(mergeParent);
|
597
|
+
const mergedCellAdded = this.mergedCellsCollection.add(mergeParent, auto);
|
580
598
|
if (mergedCellAdded) {
|
581
599
|
if (preventPopulation) {
|
582
600
|
populationInfo = [mergeParent.row, mergeParent.col, clearedData];
|
@@ -606,7 +624,7 @@ export class MergeCells extends BasePlugin {
|
|
606
624
|
unmergeRange(cellRange) {
|
607
625
|
let auto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
608
626
|
const mergedCells = this.mergedCellsCollection.getWithinRange(cellRange);
|
609
|
-
if (
|
627
|
+
if (mergedCells.length === 0) {
|
610
628
|
return;
|
611
629
|
}
|
612
630
|
this.hot.runHooks('beforeUnmergeCells', cellRange, auto);
|
@@ -1110,45 +1128,6 @@ function _addMergeActionsToContextMenu(defaultOptions) {
|
|
1110
1128
|
name: '---------'
|
1111
1129
|
}, toggleMergeItem(this));
|
1112
1130
|
}
|
1113
|
-
/**
|
1114
|
-
* `afterRenderer` hook callback.
|
1115
|
-
*
|
1116
|
-
* @param {HTMLElement} TD The cell to be modified.
|
1117
|
-
* @param {number} row Row index.
|
1118
|
-
* @param {number} col Visual column index.
|
1119
|
-
*/
|
1120
|
-
function _onAfterRenderer(TD, row, col) {
|
1121
|
-
const mergedCell = this.mergedCellsCollection.get(row, col);
|
1122
|
-
// We shouldn't override data in the collection.
|
1123
|
-
const mergedCellCopy = isObject(mergedCell) ? clone(mergedCell) : undefined;
|
1124
|
-
if (isObject(mergedCellCopy)) {
|
1125
|
-
const {
|
1126
|
-
rowIndexMapper: rowMapper,
|
1127
|
-
columnIndexMapper: columnMapper
|
1128
|
-
} = this.hot;
|
1129
|
-
const {
|
1130
|
-
row: mergeRow,
|
1131
|
-
col: mergeColumn,
|
1132
|
-
colspan,
|
1133
|
-
rowspan
|
1134
|
-
} = mergedCellCopy;
|
1135
|
-
const [lastMergedRowIndex, lastMergedColumnIndex] = this.translateMergedCellToRenderable(mergeRow, rowspan, mergeColumn, colspan);
|
1136
|
-
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
1137
|
-
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
1138
|
-
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
1139
|
-
const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
|
1140
|
-
|
1141
|
-
// We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
|
1142
|
-
mergedCellCopy.row = rowMapper.getNearestNotHiddenIndex(mergedCellCopy.row, 1);
|
1143
|
-
// We just try to determine some values basing on the actual number of rendered indexes (some columns may be hidden).
|
1144
|
-
mergedCellCopy.col = columnMapper.getNearestNotHiddenIndex(mergedCellCopy.col, 1);
|
1145
|
-
// The `rowSpan` property for a `TD` element should be at most equal to number of rendered rows in the merge area.
|
1146
|
-
mergedCellCopy.rowspan = Math.min(mergedCellCopy.rowspan, maxRowSpan);
|
1147
|
-
// The `colSpan` property for a `TD` element should be at most equal to number of rendered columns in the merge area.
|
1148
|
-
mergedCellCopy.colspan = Math.min(mergedCellCopy.colspan, maxColSpan);
|
1149
|
-
}
|
1150
|
-
applySpanProperties(TD, mergedCellCopy, row, col);
|
1151
|
-
}
|
1152
1131
|
/**
|
1153
1132
|
* Clears the last selected coordinates before setting a new selection range.
|
1154
1133
|
*/
|
@@ -1290,17 +1269,11 @@ function _onModifyAutofillRange(drag, select) {
|
|
1290
1269
|
dragArea = select;
|
1291
1270
|
return dragArea;
|
1292
1271
|
}
|
1293
|
-
const
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
to: {
|
1299
|
-
row: select[2],
|
1300
|
-
col: select[3]
|
1301
|
-
}
|
1302
|
-
});
|
1303
|
-
if (!mergedCellsWithinSelectionArea) {
|
1272
|
+
const from = this.hot._createCellCoords(select[0], select[1]);
|
1273
|
+
const to = this.hot._createCellCoords(select[2], select[3]);
|
1274
|
+
const range = this.hot._createCellRange(from, from, to);
|
1275
|
+
const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange(range);
|
1276
|
+
if (mergedCellsWithinSelectionArea.length === 0) {
|
1304
1277
|
return dragArea;
|
1305
1278
|
}
|
1306
1279
|
dragArea = this.autofillCalculations.snapDragArea(select, dragArea, dragDirection, mergedCellsWithinSelectionArea);
|
@@ -1424,4 +1397,80 @@ function _onBeforeBeginEditing(row, column, initialValue, event) {
|
|
1424
1397
|
const from = this.hot._createCellCoords(mergeCell.row, mergeCell.col);
|
1425
1398
|
const to = this.hot._createCellCoords(mergeCell.row + mergeCell.rowspan - 1, mergeCell.col + mergeCell.colspan - 1);
|
1426
1399
|
return this.hot.selection.getLayerLevel() === 0 && selection.isEqual(this.hot._createCellRange(from, from, to));
|
1400
|
+
}
|
1401
|
+
/**
|
1402
|
+
* Hook used to modify the row height depends on the merged cells in the row.
|
1403
|
+
*
|
1404
|
+
* @param {number} height The row height value provided by the Core.
|
1405
|
+
* @param {number} row The visual row index.
|
1406
|
+
* @param {string} overlayType The overlay type that is currently rendered.
|
1407
|
+
* @returns {number}
|
1408
|
+
*/
|
1409
|
+
function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
1410
|
+
if (this.hot.getSettings().rowHeaders ||
|
1411
|
+
// merged cells do not work with the bottom overlays
|
1412
|
+
overlayType === 'bottom' || overlayType === 'bottom_inline_start_corner') {
|
1413
|
+
return height;
|
1414
|
+
}
|
1415
|
+
let firstColumn;
|
1416
|
+
let lastColumn;
|
1417
|
+
if (overlayType === 'master') {
|
1418
|
+
firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
|
1419
|
+
lastColumn = this.hot.view.getLastRenderedVisibleColumn();
|
1420
|
+
} else {
|
1421
|
+
const activeOverlay = this.hot.view.getOverlayByName(overlayType);
|
1422
|
+
firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
|
1423
|
+
lastColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getLastRenderedColumn());
|
1424
|
+
}
|
1425
|
+
const firstMergedCellInRow = this.mergedCellsCollection.get(row, firstColumn);
|
1426
|
+
if (!firstMergedCellInRow) {
|
1427
|
+
return height;
|
1428
|
+
}
|
1429
|
+
const from = this.hot._createCellCoords(row, firstColumn);
|
1430
|
+
const to = this.hot._createCellCoords(row, lastColumn);
|
1431
|
+
const viewportRange = this.hot._createCellRange(from, from, to);
|
1432
|
+
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
|
1433
|
+
const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
|
1434
|
+
let {
|
1435
|
+
rowspan
|
1436
|
+
} = _ref;
|
1437
|
+
return Math.max(acc, rowspan);
|
1438
|
+
}, 1);
|
1439
|
+
let rowspanCorrection = 0;
|
1440
|
+
if (mergedCellsWithinRange.length > 1 && mergedCellsWithinRange[0].rowspan < maxRowspan) {
|
1441
|
+
rowspanCorrection = maxRowspan - mergedCellsWithinRange[0].rowspan;
|
1442
|
+
}
|
1443
|
+
mergedCellsWithinRange.forEach(_ref2 => {
|
1444
|
+
var _height;
|
1445
|
+
let {
|
1446
|
+
rowspan
|
1447
|
+
} = _ref2;
|
1448
|
+
let rowspanAfterCorrection = 0;
|
1449
|
+
if (overlayType === 'top' || overlayType === 'top_inline_start_corner') {
|
1450
|
+
rowspanAfterCorrection = Math.min(maxRowspan, this.hot.view.countNotHiddenFixedRowsTop() - row);
|
1451
|
+
} else {
|
1452
|
+
rowspanAfterCorrection = rowspan - rowspanCorrection;
|
1453
|
+
}
|
1454
|
+
height = Math.max((_height = height) !== null && _height !== void 0 ? _height : 0, _assertClassBrand(_MergeCells_brand, this, _sumCellsHeights).call(this, row, rowspanAfterCorrection));
|
1455
|
+
});
|
1456
|
+
return height;
|
1457
|
+
}
|
1458
|
+
/**
|
1459
|
+
* Sums the heights of the all cells that the merge cell consists of.
|
1460
|
+
*
|
1461
|
+
* @param {number} row The visual row index of the merged cell.
|
1462
|
+
* @param {number} rowspan The rowspan value of the merged cell.
|
1463
|
+
* @returns {number}
|
1464
|
+
*/
|
1465
|
+
function _sumCellsHeights(row, rowspan) {
|
1466
|
+
const defaultHeight = this.hot.view._wt.wtSettings.getSettingPure('defaultRowHeight');
|
1467
|
+
const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
|
1468
|
+
let height = 0;
|
1469
|
+
for (let i = row; i < row + rowspan; i++) {
|
1470
|
+
if (!this.hot.rowIndexMapper.isHidden(i)) {
|
1471
|
+
var _autoRowSizePlugin$ge;
|
1472
|
+
height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
|
1473
|
+
}
|
1474
|
+
}
|
1475
|
+
return height;
|
1427
1476
|
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.createMergeCellRenderer = createMergeCellRenderer;
|
5
|
+
var _object = require("../../helpers/object");
|
6
|
+
/**
|
7
|
+
* Creates a renderer object for the `MergeCells` plugin.
|
8
|
+
*
|
9
|
+
* @private
|
10
|
+
* @param {MergeCells} plugin The `MergeCells` plugin instance.
|
11
|
+
* @returns {{before: Function, after: Function}}
|
12
|
+
*/
|
13
|
+
function createMergeCellRenderer(plugin) {
|
14
|
+
const {
|
15
|
+
hot
|
16
|
+
} = plugin;
|
17
|
+
const {
|
18
|
+
rowIndexMapper: rowMapper,
|
19
|
+
columnIndexMapper: columnMapper
|
20
|
+
} = hot;
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Runs before the cell is rendered.
|
24
|
+
*
|
25
|
+
* @private
|
26
|
+
*/
|
27
|
+
function before() {}
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Runs after the cell is rendered.
|
31
|
+
*
|
32
|
+
* @private
|
33
|
+
* @param {HTMLElement} TD The cell to be modified.
|
34
|
+
* @param {number} row Row index.
|
35
|
+
* @param {number} col Visual column index.
|
36
|
+
*/
|
37
|
+
function after(TD, row, col) {
|
38
|
+
const mergedCell = plugin.mergedCellsCollection.get(row, col);
|
39
|
+
if (!(0, _object.isObject)(mergedCell)) {
|
40
|
+
TD.removeAttribute('rowspan');
|
41
|
+
TD.removeAttribute('colspan');
|
42
|
+
TD.style.display = '';
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
const {
|
46
|
+
row: origRow,
|
47
|
+
col: origColumn,
|
48
|
+
colspan: origColspan,
|
49
|
+
rowspan: origRowspan
|
50
|
+
} = mergedCell;
|
51
|
+
const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
|
52
|
+
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
53
|
+
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
54
|
+
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
55
|
+
const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
|
56
|
+
|
57
|
+
const notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
|
58
|
+
const notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
|
59
|
+
const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
|
60
|
+
const notHiddenColspan = Math.min(origColspan, maxColSpan);
|
61
|
+
if (notHiddenRow === row && notHiddenColumn === col) {
|
62
|
+
TD.setAttribute('rowspan', notHiddenRowspan);
|
63
|
+
TD.setAttribute('colspan', notHiddenColspan);
|
64
|
+
} else {
|
65
|
+
TD.removeAttribute('rowspan');
|
66
|
+
TD.removeAttribute('colspan');
|
67
|
+
TD.style.display = 'none';
|
68
|
+
}
|
69
|
+
}
|
70
|
+
return {
|
71
|
+
before,
|
72
|
+
after
|
73
|
+
};
|
74
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { isObject } from "../../helpers/object.mjs";
|
2
|
+
/**
|
3
|
+
* Creates a renderer object for the `MergeCells` plugin.
|
4
|
+
*
|
5
|
+
* @private
|
6
|
+
* @param {MergeCells} plugin The `MergeCells` plugin instance.
|
7
|
+
* @returns {{before: Function, after: Function}}
|
8
|
+
*/
|
9
|
+
export function createMergeCellRenderer(plugin) {
|
10
|
+
const {
|
11
|
+
hot
|
12
|
+
} = plugin;
|
13
|
+
const {
|
14
|
+
rowIndexMapper: rowMapper,
|
15
|
+
columnIndexMapper: columnMapper
|
16
|
+
} = hot;
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Runs before the cell is rendered.
|
20
|
+
*
|
21
|
+
* @private
|
22
|
+
*/
|
23
|
+
function before() {}
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Runs after the cell is rendered.
|
27
|
+
*
|
28
|
+
* @private
|
29
|
+
* @param {HTMLElement} TD The cell to be modified.
|
30
|
+
* @param {number} row Row index.
|
31
|
+
* @param {number} col Visual column index.
|
32
|
+
*/
|
33
|
+
function after(TD, row, col) {
|
34
|
+
const mergedCell = plugin.mergedCellsCollection.get(row, col);
|
35
|
+
if (!isObject(mergedCell)) {
|
36
|
+
TD.removeAttribute('rowspan');
|
37
|
+
TD.removeAttribute('colspan');
|
38
|
+
TD.style.display = '';
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
const {
|
42
|
+
row: origRow,
|
43
|
+
col: origColumn,
|
44
|
+
colspan: origColspan,
|
45
|
+
rowspan: origRowspan
|
46
|
+
} = mergedCell;
|
47
|
+
const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
|
48
|
+
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
49
|
+
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
50
|
+
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
51
|
+
const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
|
52
|
+
|
53
|
+
const notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
|
54
|
+
const notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
|
55
|
+
const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
|
56
|
+
const notHiddenColspan = Math.min(origColspan, maxColSpan);
|
57
|
+
if (notHiddenRow === row && notHiddenColumn === col) {
|
58
|
+
TD.setAttribute('rowspan', notHiddenRowspan);
|
59
|
+
TD.setAttribute('colspan', notHiddenColspan);
|
60
|
+
} else {
|
61
|
+
TD.removeAttribute('rowspan');
|
62
|
+
TD.removeAttribute('colspan');
|
63
|
+
TD.style.display = 'none';
|
64
|
+
}
|
65
|
+
}
|
66
|
+
return {
|
67
|
+
before,
|
68
|
+
after
|
69
|
+
};
|
70
|
+
}
|
@@ -10,7 +10,7 @@ var _rootComparator = require("./rootComparator");
|
|
10
10
|
var _utils2 = require("./utils");
|
11
11
|
var _domHelpers = require("./domHelpers");
|
12
12
|
var _shortcutContexts = require("../../shortcutContexts");
|
13
|
-
function _defineProperty(
|
13
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
14
14
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
15
15
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
16
16
|
const PLUGIN_KEY = exports.PLUGIN_KEY = 'multiColumnSorting';
|
@@ -104,6 +104,7 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
|
|
104
104
|
enablePlugin() {
|
105
105
|
if (!this.enabled && this.hot.getSettings()[this.pluginKey] && this.hot.getSettings()[CONFLICTED_PLUGIN_KEY]) {
|
106
106
|
(0, _utils2.warnAboutPluginsConflict)();
|
107
|
+
this.hot.getPlugin(CONFLICTED_PLUGIN_KEY).disablePlugin();
|
107
108
|
}
|
108
109
|
super.enablePlugin();
|
109
110
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
-
function _defineProperty(
|
2
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
3
3
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
4
4
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
5
5
|
import { APPEND_COLUMN_CONFIG_STRATEGY, ColumnSorting } from "../columnSorting/index.mjs";
|
@@ -101,6 +101,7 @@ export class MultiColumnSorting extends ColumnSorting {
|
|
101
101
|
enablePlugin() {
|
102
102
|
if (!this.enabled && this.hot.getSettings()[this.pluginKey] && this.hot.getSettings()[CONFLICTED_PLUGIN_KEY]) {
|
103
103
|
warnAboutPluginsConflict();
|
104
|
+
this.hot.getPlugin(CONFLICTED_PLUGIN_KEY).disablePlugin();
|
104
105
|
}
|
105
106
|
super.enablePlugin();
|
106
107
|
}
|
@@ -9,5 +9,5 @@ var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
|
9
9
|
*/
|
10
10
|
function warnAboutPluginsConflict() {
|
11
11
|
(0, _console.warn)((0, _templateLiteralTag.toSingleLine)`Plugins \`columnSorting\` and \`multiColumnSorting\` should not be enabled simultaneously.
|
12
|
-
Only \`multiColumnSorting\` will work.`);
|
12
|
+
Only \`multiColumnSorting\` will work. The \`columnSorting\` plugin will be disabled.`);
|
13
13
|
}
|
@@ -5,5 +5,5 @@ import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
|
5
5
|
*/
|
6
6
|
export function warnAboutPluginsConflict() {
|
7
7
|
warn(toSingleLine`Plugins \`columnSorting\` and \`multiColumnSorting\` should not be enabled simultaneously.
|
8
|
-
Only \`multiColumnSorting\` will work.`);
|
8
|
+
Only \`multiColumnSorting\` will work. The \`columnSorting\` plugin will be disabled.`);
|
9
9
|
}
|