handsontable 14.4.0 → 14.5.0-next-ede811d-20240717
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/calculator/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
|
}
|