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
@@ -1,7 +1,12 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
-
function
|
2
|
+
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
3
|
+
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
4
|
+
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
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
4
6
|
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); }
|
7
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
8
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
9
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
5
10
|
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
6
11
|
/**
|
7
12
|
* The `MergedCellCoords` class represents a single merged cell.
|
@@ -9,6 +14,7 @@ import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
|
9
14
|
* @private
|
10
15
|
* @class MergedCellCoords
|
11
16
|
*/
|
17
|
+
var _cellRange = /*#__PURE__*/new WeakMap();
|
12
18
|
class MergedCellCoords {
|
13
19
|
constructor(row, column, rowspan, colspan, cellCoordsFactory, cellRangeFactory) {
|
14
20
|
/**
|
@@ -53,6 +59,12 @@ class MergedCellCoords {
|
|
53
59
|
* @type {Function}
|
54
60
|
*/
|
55
61
|
_defineProperty(this, "cellRangeFactory", void 0);
|
62
|
+
/**
|
63
|
+
* The cached range coordinates of the merged cell.
|
64
|
+
*
|
65
|
+
* @type {CellRange}
|
66
|
+
*/
|
67
|
+
_classPrivateFieldInitSpec(this, _cellRange, null);
|
56
68
|
this.row = row;
|
57
69
|
this.col = column;
|
58
70
|
this.rowspan = rowspan;
|
@@ -64,78 +76,117 @@ class MergedCellCoords {
|
|
64
76
|
/**
|
65
77
|
* Get a warning message for when the declared merged cell data contains negative values.
|
66
78
|
*
|
67
|
-
* @param {
|
79
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
80
|
+
* about the merged cells that was about to be added.
|
68
81
|
* @returns {string}
|
69
82
|
*/
|
70
|
-
static NEGATIVE_VALUES_WARNING(
|
71
|
-
|
72
|
-
|
83
|
+
static NEGATIVE_VALUES_WARNING(_ref) {
|
84
|
+
let {
|
85
|
+
row,
|
86
|
+
col,
|
87
|
+
rowspan,
|
88
|
+
colspan
|
89
|
+
} = _ref;
|
90
|
+
return toSingleLine`The merged cell declared with {row: ${row}, col: ${col},\x20
|
91
|
+
rowspan: ${rowspan}, colspan: ${colspan}} contains negative values, which is\x20
|
73
92
|
not supported. It will not be added to the collection.`;
|
74
93
|
}
|
75
94
|
|
76
95
|
/**
|
77
96
|
* Get a warning message for when the declared merged cell data contains values exceeding the table limits.
|
78
97
|
*
|
79
|
-
* @param {
|
98
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
99
|
+
* about the merged cells that was about to be added.
|
80
100
|
* @returns {string}
|
81
101
|
*/
|
82
|
-
static IS_OUT_OF_BOUNDS_WARNING(
|
83
|
-
|
102
|
+
static IS_OUT_OF_BOUNDS_WARNING(_ref2) {
|
103
|
+
let {
|
104
|
+
row,
|
105
|
+
col
|
106
|
+
} = _ref2;
|
107
|
+
return toSingleLine`The merged cell declared at [${row}, ${col}] is positioned\x20
|
84
108
|
(or positioned partially) outside of the table range. It was not added to the table, please fix your setup.`;
|
85
109
|
}
|
86
110
|
|
87
111
|
/**
|
88
112
|
* Get a warning message for when the declared merged cell data represents a single cell.
|
89
113
|
*
|
90
|
-
* @param {
|
114
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
115
|
+
* about the merged cells that was about to be added.
|
91
116
|
* @returns {string}
|
92
117
|
*/
|
93
|
-
static IS_SINGLE_CELL(
|
94
|
-
|
118
|
+
static IS_SINGLE_CELL(_ref3) {
|
119
|
+
let {
|
120
|
+
row,
|
121
|
+
col
|
122
|
+
} = _ref3;
|
123
|
+
return toSingleLine`The merged cell declared at [${row}, ${col}] has both "rowspan"\x20
|
95
124
|
and "colspan" declared as "1", which makes it a single cell. It cannot be added to the collection.`;
|
96
125
|
}
|
97
126
|
|
98
127
|
/**
|
99
128
|
* Get a warning message for when the declared merged cell data contains "colspan" or "rowspan", that equals 0.
|
100
129
|
*
|
101
|
-
* @param {
|
130
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
131
|
+
* about the merged cells that was about to be added.
|
102
132
|
* @returns {string}
|
103
133
|
*/
|
104
|
-
static ZERO_SPAN_WARNING(
|
105
|
-
|
134
|
+
static ZERO_SPAN_WARNING(_ref4) {
|
135
|
+
let {
|
136
|
+
row,
|
137
|
+
col
|
138
|
+
} = _ref4;
|
139
|
+
return toSingleLine`The merged cell declared at [${row}, ${col}] has "rowspan"\x20
|
106
140
|
or "colspan" declared as "0", which is not supported. It cannot be added to the collection.`;
|
107
141
|
}
|
108
142
|
|
109
143
|
/**
|
110
144
|
* Check whether the values provided for a merged cell contain any negative values.
|
111
145
|
*
|
112
|
-
* @param {
|
146
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
147
|
+
* about the merged cells that was about to be added.
|
113
148
|
* @returns {boolean}
|
114
149
|
*/
|
115
|
-
static containsNegativeValues(
|
116
|
-
|
150
|
+
static containsNegativeValues(_ref5) {
|
151
|
+
let {
|
152
|
+
row,
|
153
|
+
col,
|
154
|
+
rowspan,
|
155
|
+
colspan
|
156
|
+
} = _ref5;
|
157
|
+
return row < 0 || col < 0 || rowspan < 0 || colspan < 0;
|
117
158
|
}
|
118
159
|
|
119
160
|
/**
|
120
161
|
* Check whether the provided merged cell information object represents a single cell.
|
121
162
|
*
|
122
163
|
* @private
|
123
|
-
* @param {
|
164
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
165
|
+
* about the merged cells that was about to be added.
|
124
166
|
* @returns {boolean}
|
125
167
|
*/
|
126
|
-
static isSingleCell(
|
127
|
-
|
168
|
+
static isSingleCell(_ref6) {
|
169
|
+
let {
|
170
|
+
rowspan,
|
171
|
+
colspan
|
172
|
+
} = _ref6;
|
173
|
+
return colspan === 1 && rowspan === 1;
|
128
174
|
}
|
129
175
|
|
130
176
|
/**
|
131
177
|
* Check whether the provided merged cell information object contains a rowspan or colspan of 0.
|
132
178
|
*
|
133
179
|
* @private
|
134
|
-
* @param {
|
180
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
181
|
+
* about the merged cells that was about to be added.
|
135
182
|
* @returns {boolean}
|
136
183
|
*/
|
137
|
-
static containsZeroSpan(
|
138
|
-
|
184
|
+
static containsZeroSpan(_ref7) {
|
185
|
+
let {
|
186
|
+
rowspan,
|
187
|
+
colspan
|
188
|
+
} = _ref7;
|
189
|
+
return colspan === 0 || rowspan === 0;
|
139
190
|
}
|
140
191
|
|
141
192
|
/**
|
@@ -174,6 +225,7 @@ class MergedCellCoords {
|
|
174
225
|
if (this.col + this.colspan > totalColumns - 1) {
|
175
226
|
this.colspan = totalColumns - this.col;
|
176
227
|
}
|
228
|
+
_classPrivateFieldSet(_cellRange, this, null);
|
177
229
|
}
|
178
230
|
|
179
231
|
/**
|
@@ -238,6 +290,7 @@ class MergedCellCoords {
|
|
238
290
|
// removing the whole merge
|
239
291
|
if (changeStart <= mergeStart && changeEnd >= mergeEnd) {
|
240
292
|
this.removed = true;
|
293
|
+
_classPrivateFieldSet(_cellRange, this, null);
|
241
294
|
return false;
|
242
295
|
|
243
296
|
// removing the merge partially, including the beginning
|
@@ -257,6 +310,7 @@ class MergedCellCoords {
|
|
257
310
|
this[span] -= removedPart;
|
258
311
|
}
|
259
312
|
}
|
313
|
+
_classPrivateFieldSet(_cellRange, this, null);
|
260
314
|
return true;
|
261
315
|
}
|
262
316
|
|
@@ -307,7 +361,10 @@ class MergedCellCoords {
|
|
307
361
|
* @returns {CellRange}
|
308
362
|
*/
|
309
363
|
getRange() {
|
310
|
-
|
364
|
+
if (!_classPrivateFieldGet(_cellRange, this)) {
|
365
|
+
_classPrivateFieldSet(_cellRange, this, this.cellRangeFactory(this.cellCoordsFactory(this.row, this.col), this.cellCoordsFactory(this.row, this.col), this.cellCoordsFactory(this.getLastRow(), this.getLastColumn())));
|
366
|
+
}
|
367
|
+
return _classPrivateFieldGet(_cellRange, this);
|
311
368
|
}
|
312
369
|
}
|
313
370
|
export default MergedCellCoords;
|
@@ -15,12 +15,11 @@ var _cellCoords = _interopRequireDefault(require("./cellCoords"));
|
|
15
15
|
var _number = require("../../helpers/number");
|
16
16
|
var _console = require("../../helpers/console");
|
17
17
|
var _array = require("../../helpers/array");
|
18
|
-
var _utils = require("./utils");
|
19
18
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
20
|
-
function _interopRequireDefault(
|
21
|
-
function _classPrivateMethodInitSpec(
|
22
|
-
function _checkPrivateRedeclaration(
|
23
|
-
function _defineProperty(
|
19
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
20
|
+
function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
|
21
|
+
function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
|
22
|
+
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; }
|
24
23
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
25
24
|
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); }
|
26
25
|
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
@@ -51,9 +50,15 @@ class MergedCellsCollection {
|
|
51
50
|
/**
|
52
51
|
* Array of merged cells.
|
53
52
|
*
|
54
|
-
* @type {
|
53
|
+
* @type {MergedCellCoords[]}
|
55
54
|
*/
|
56
55
|
_defineProperty(this, "mergedCells", []);
|
56
|
+
/**
|
57
|
+
* Matrix of cells (row, col) that points to the instances of the MergedCellCoords objects.
|
58
|
+
*
|
59
|
+
* @type {Array}
|
60
|
+
*/
|
61
|
+
_defineProperty(this, "mergedCellsMatrix", new Map());
|
57
62
|
/**
|
58
63
|
* The Handsontable instance.
|
59
64
|
*
|
@@ -67,11 +72,16 @@ class MergedCellsCollection {
|
|
67
72
|
/**
|
68
73
|
* Get a warning message for when the declared merged cell data overlaps already existing merged cells.
|
69
74
|
*
|
70
|
-
* @param {
|
75
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCell Object containing information
|
76
|
+
* about the merged cells that was about to be added.
|
71
77
|
* @returns {string}
|
72
78
|
*/
|
73
|
-
static IS_OVERLAPPING_WARNING(
|
74
|
-
|
79
|
+
static IS_OVERLAPPING_WARNING(_ref) {
|
80
|
+
let {
|
81
|
+
row,
|
82
|
+
col
|
83
|
+
} = _ref;
|
84
|
+
return (0, _templateLiteralTag.toSingleLine)`The merged cell declared at [${row}, ${col}], overlaps\x20
|
75
85
|
with the other declared merged cell. The overlapping merged cell was not added to the table, please\x20
|
76
86
|
fix your setup.`;
|
77
87
|
}
|
@@ -85,16 +95,11 @@ class MergedCellsCollection {
|
|
85
95
|
* @returns {MergedCellCoords|boolean} Returns a wanted merged cell on success and `false` on failure.
|
86
96
|
*/
|
87
97
|
get(row, column) {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
return false;
|
94
|
-
}
|
95
|
-
return true;
|
96
|
-
});
|
97
|
-
return result;
|
98
|
+
var _this$mergedCellsMatr;
|
99
|
+
if (!this.mergedCellsMatrix.has(row)) {
|
100
|
+
return false;
|
101
|
+
}
|
102
|
+
return (_this$mergedCellsMatr = this.mergedCellsMatrix.get(row).get(column)) !== null && _this$mergedCellsMatr !== void 0 ? _this$mergedCellsMatr : false;
|
98
103
|
}
|
99
104
|
|
100
105
|
/**
|
@@ -104,9 +109,8 @@ class MergedCellsCollection {
|
|
104
109
|
* @returns {MergedCellCoords|boolean}
|
105
110
|
*/
|
106
111
|
getByRange(range) {
|
107
|
-
const mergedCells = this.mergedCells;
|
108
112
|
let result = false;
|
109
|
-
(0, _array.arrayEach)(mergedCells, mergedCell => {
|
113
|
+
(0, _array.arrayEach)(this.mergedCells, mergedCell => {
|
110
114
|
if (mergedCell.row <= range.from.row && mergedCell.row + mergedCell.rowspan - 1 >= range.to.row && mergedCell.col <= range.from.col && mergedCell.col + mergedCell.colspan - 1 >= range.to.col) {
|
111
115
|
result = mergedCell;
|
112
116
|
return result;
|
@@ -116,58 +120,110 @@ class MergedCellsCollection {
|
|
116
120
|
return result;
|
117
121
|
}
|
118
122
|
|
123
|
+
/**
|
124
|
+
* Filters merge cells objects provided by users from overlapping cells.
|
125
|
+
*
|
126
|
+
* @param {{ row: number, col: number, rowspan: number, colspan: number }} mergedCellsInfo The merged cell information object.
|
127
|
+
* Has to contain `row`, `col`, `colspan` and `rowspan` properties.
|
128
|
+
* @returns {Array<{ row: number, col: number, rowspan: number, colspan: number }>}
|
129
|
+
*/
|
130
|
+
filterOverlappingMergeCells(mergedCellsInfo) {
|
131
|
+
const occupiedCells = new Set();
|
132
|
+
this.mergedCells.forEach(mergedCell => {
|
133
|
+
const {
|
134
|
+
row,
|
135
|
+
col,
|
136
|
+
colspan,
|
137
|
+
rowspan
|
138
|
+
} = mergedCell;
|
139
|
+
for (let r = row; r < row + rowspan; r++) {
|
140
|
+
for (let c = col; c < col + colspan; c++) {
|
141
|
+
occupiedCells.add(`r${r},c${c}`);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
});
|
145
|
+
const filteredMergeCells = mergedCellsInfo.filter(mergedCell => {
|
146
|
+
const {
|
147
|
+
row,
|
148
|
+
col,
|
149
|
+
colspan,
|
150
|
+
rowspan
|
151
|
+
} = mergedCell;
|
152
|
+
const localOccupiedCells = new Set();
|
153
|
+
let isOverlapping = false;
|
154
|
+
for (let r = row; r < row + rowspan; r++) {
|
155
|
+
for (let c = col; c < col + colspan; c++) {
|
156
|
+
const cellId = `r${r},c${c}`;
|
157
|
+
if (occupiedCells.has(cellId)) {
|
158
|
+
(0, _console.warn)(MergedCellsCollection.IS_OVERLAPPING_WARNING(mergedCell));
|
159
|
+
isOverlapping = true;
|
160
|
+
break;
|
161
|
+
}
|
162
|
+
localOccupiedCells.add(cellId);
|
163
|
+
}
|
164
|
+
if (isOverlapping) {
|
165
|
+
break;
|
166
|
+
}
|
167
|
+
}
|
168
|
+
if (!isOverlapping) {
|
169
|
+
occupiedCells.add(...localOccupiedCells);
|
170
|
+
}
|
171
|
+
return !isOverlapping;
|
172
|
+
});
|
173
|
+
return filteredMergeCells;
|
174
|
+
}
|
175
|
+
|
119
176
|
/**
|
120
177
|
* Get a merged cell contained in the provided range.
|
121
178
|
*
|
122
|
-
* @param {CellRange
|
179
|
+
* @param {CellRange} range The range to search merged cells in.
|
123
180
|
* @param {boolean} [countPartials=false] If set to `true`, all the merged cells overlapping the range will be taken into calculation.
|
124
|
-
* @returns {
|
181
|
+
* @returns {MergedCellCoords[]} Array of found merged cells.
|
125
182
|
*/
|
126
183
|
getWithinRange(range) {
|
127
184
|
let countPartials = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
128
|
-
const
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
}
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
foundMergedCells.push(mergedCell);
|
185
|
+
const {
|
186
|
+
row: rowStart,
|
187
|
+
col: columnStart
|
188
|
+
} = range.getTopStartCorner();
|
189
|
+
const {
|
190
|
+
row: rowEnd,
|
191
|
+
col: columnEnd
|
192
|
+
} = range.getBottomEndCorner();
|
193
|
+
const result = [];
|
194
|
+
for (let row = rowStart; row <= rowEnd; row++) {
|
195
|
+
for (let column = columnStart; column <= columnEnd; column++) {
|
196
|
+
const mergedCell = this.get(row, column);
|
197
|
+
if (mergedCell && (countPartials || !countPartials && mergedCell.row === row && mergedCell.col === column)) {
|
198
|
+
result.push(mergedCell);
|
143
199
|
}
|
144
|
-
} else if (testedRange.includesRange(mergedCellRange)) {
|
145
|
-
foundMergedCells.push(mergedCell);
|
146
200
|
}
|
147
|
-
}
|
148
|
-
return
|
201
|
+
}
|
202
|
+
return result;
|
149
203
|
}
|
150
204
|
|
151
205
|
/**
|
152
206
|
* Add a merged cell to the container.
|
153
207
|
*
|
154
208
|
* @param {object} mergedCellInfo The merged cell information object. Has to contain `row`, `col`, `colspan` and `rowspan` properties.
|
209
|
+
* @param {boolean} [auto=false] `true` if called internally by the plugin (usually in batch).
|
155
210
|
* @returns {MergedCellCoords|boolean} Returns the new merged cell on success and `false` on failure.
|
156
211
|
*/
|
157
212
|
add(mergedCellInfo) {
|
158
|
-
|
213
|
+
let auto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
159
214
|
const row = mergedCellInfo.row;
|
160
215
|
const column = mergedCellInfo.col;
|
161
216
|
const rowspan = mergedCellInfo.rowspan;
|
162
217
|
const colspan = mergedCellInfo.colspan;
|
163
218
|
const newMergedCell = new _cellCoords.default(row, column, rowspan, colspan, this.hot._createCellCoords, this.hot._createCellRange);
|
164
219
|
const alreadyExists = this.get(row, column);
|
165
|
-
const isOverlapping = this.isOverlapping(newMergedCell);
|
220
|
+
const isOverlapping = auto ? false : this.isOverlapping(newMergedCell);
|
166
221
|
if (!alreadyExists && !isOverlapping) {
|
167
222
|
if (this.hot) {
|
168
223
|
newMergedCell.normalize(this.hot);
|
169
224
|
}
|
170
|
-
mergedCells.push(newMergedCell);
|
225
|
+
this.mergedCells.push(newMergedCell);
|
226
|
+
_assertClassBrand(_MergedCellsCollection_brand, this, _addMergedCellToMatrix).call(this, newMergedCell);
|
171
227
|
return newMergedCell;
|
172
228
|
}
|
173
229
|
(0, _console.warn)(MergedCellsCollection.IS_OVERLAPPING_WARNING(newMergedCell));
|
@@ -183,12 +239,12 @@ class MergedCellsCollection {
|
|
183
239
|
* @returns {MergedCellCoords|boolean} Returns the removed merged cell on success and `false` on failure.
|
184
240
|
*/
|
185
241
|
remove(row, column) {
|
186
|
-
const
|
187
|
-
const
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
return
|
242
|
+
const mergedCell = this.get(row, column);
|
243
|
+
const mergedCellIndex = mergedCell ? this.mergedCells.indexOf(mergedCell) : -1;
|
244
|
+
if (mergedCell && mergedCellIndex !== -1) {
|
245
|
+
this.mergedCells.splice(mergedCellIndex, 1);
|
246
|
+
_assertClassBrand(_MergedCellsCollection_brand, this, _removeMergedCellFromMatrix).call(this, mergedCell);
|
247
|
+
return mergedCell;
|
192
248
|
}
|
193
249
|
return false;
|
194
250
|
}
|
@@ -197,55 +253,44 @@ class MergedCellsCollection {
|
|
197
253
|
* Clear all the merged cells.
|
198
254
|
*/
|
199
255
|
clear() {
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
const TD = this.hot.getCell(mergedCell.row + j, mergedCell.col + k);
|
215
|
-
if (TD) {
|
216
|
-
hiddenCollectionElements.push([TD, null, null, null]);
|
217
|
-
}
|
256
|
+
(0, _array.arrayEach)(this.mergedCells, _ref2 => {
|
257
|
+
let {
|
258
|
+
row,
|
259
|
+
col,
|
260
|
+
rowspan,
|
261
|
+
colspan
|
262
|
+
} = _ref2;
|
263
|
+
(0, _number.rangeEach)(row, row + rowspan, r => {
|
264
|
+
(0, _number.rangeEach)(col, col + colspan, c => {
|
265
|
+
const TD = this.hot.getCell(r, c);
|
266
|
+
if (TD) {
|
267
|
+
TD.removeAttribute('rowspan');
|
268
|
+
TD.removeAttribute('colspan');
|
269
|
+
TD.style.display = '';
|
218
270
|
}
|
219
271
|
});
|
220
272
|
});
|
221
|
-
mergedCellParentsToClear[i][1] = null;
|
222
|
-
});
|
223
|
-
(0, _array.arrayEach)(mergedCellParentsToClear, mergedCellParents => {
|
224
|
-
(0, _utils.applySpanProperties)(...mergedCellParents);
|
225
|
-
});
|
226
|
-
(0, _array.arrayEach)(hiddenCollectionElements, hiddenCollectionElement => {
|
227
|
-
(0, _utils.applySpanProperties)(...hiddenCollectionElement);
|
228
273
|
});
|
274
|
+
this.mergedCells.length = 0;
|
275
|
+
this.mergedCellsMatrix = new Map();
|
229
276
|
}
|
230
277
|
|
231
278
|
/**
|
232
|
-
* Check if the provided merged cell overlaps with the others
|
279
|
+
* Check if the provided merged cell overlaps with the others already added.
|
233
280
|
*
|
234
281
|
* @param {MergedCellCoords} mergedCell The merged cell to check against all others in the container.
|
235
282
|
* @returns {boolean} `true` if the provided merged cell overlaps with the others, `false` otherwise.
|
236
283
|
*/
|
237
284
|
isOverlapping(mergedCell) {
|
238
|
-
const mergedCellRange =
|
239
|
-
let
|
240
|
-
|
241
|
-
const
|
242
|
-
if (
|
243
|
-
|
244
|
-
return false;
|
285
|
+
const mergedCellRange = mergedCell.getRange();
|
286
|
+
for (let i = 0; i < this.mergedCells.length; i++) {
|
287
|
+
const otherMergedCell = this.mergedCells[i];
|
288
|
+
const otherMergedCellRange = otherMergedCell.getRange();
|
289
|
+
if (otherMergedCellRange.overlaps(mergedCellRange)) {
|
290
|
+
return true;
|
245
291
|
}
|
246
|
-
|
247
|
-
|
248
|
-
return result;
|
292
|
+
}
|
293
|
+
return false;
|
249
294
|
}
|
250
295
|
|
251
296
|
/**
|
@@ -380,15 +425,24 @@ class MergedCellsCollection {
|
|
380
425
|
default:
|
381
426
|
}
|
382
427
|
(0, _array.arrayEach)(this.mergedCells, currentMerge => {
|
428
|
+
_assertClassBrand(_MergedCellsCollection_brand, this, _removeMergedCellFromMatrix).call(this, currentMerge);
|
383
429
|
currentMerge.shift(shiftVector, index);
|
430
|
+
_assertClassBrand(_MergedCellsCollection_brand, this, _addMergedCellToMatrix).call(this, currentMerge);
|
384
431
|
});
|
385
432
|
(0, _number.rangeEachReverse)(this.mergedCells.length - 1, 0, i => {
|
386
433
|
const currentMerge = this.mergedCells[i];
|
387
434
|
if (currentMerge && currentMerge.removed) {
|
388
435
|
this.mergedCells.splice(this.mergedCells.indexOf(currentMerge), 1);
|
436
|
+
_assertClassBrand(_MergedCellsCollection_brand, this, _removeMergedCellFromMatrix).call(this, currentMerge);
|
389
437
|
}
|
390
438
|
});
|
391
439
|
}
|
440
|
+
|
441
|
+
/**
|
442
|
+
* Adds a merged cell to the matrix.
|
443
|
+
*
|
444
|
+
* @param {MergedCellCoords} mergedCell The merged cell to add.
|
445
|
+
*/
|
392
446
|
}
|
393
447
|
function _getNonIntersectingIndexes(range, axis) {
|
394
448
|
let scanDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
@@ -409,12 +463,34 @@ function _getNonIntersectingIndexes(range, axis) {
|
|
409
463
|
indexes.get(index).add(lastIndex);
|
410
464
|
}
|
411
465
|
}
|
412
|
-
return Array.from(new Set(Array.from(indexes.entries()).filter(
|
413
|
-
let [, set] =
|
466
|
+
return Array.from(new Set(Array.from(indexes.entries()).filter(_ref3 => {
|
467
|
+
let [, set] = _ref3;
|
414
468
|
return set.size === 1;
|
415
|
-
}).flatMap(
|
416
|
-
let [, set] =
|
469
|
+
}).flatMap(_ref4 => {
|
470
|
+
let [, set] = _ref4;
|
417
471
|
return Array.from(set);
|
418
472
|
})));
|
419
473
|
}
|
474
|
+
function _addMergedCellToMatrix(mergedCell) {
|
475
|
+
for (let row = mergedCell.row; row < mergedCell.row + mergedCell.rowspan; row++) {
|
476
|
+
for (let col = mergedCell.col; col < mergedCell.col + mergedCell.colspan; col++) {
|
477
|
+
if (!this.mergedCellsMatrix.has(row)) {
|
478
|
+
this.mergedCellsMatrix.set(row, new Map());
|
479
|
+
}
|
480
|
+
this.mergedCellsMatrix.get(row).set(col, mergedCell);
|
481
|
+
}
|
482
|
+
}
|
483
|
+
}
|
484
|
+
/**
|
485
|
+
* Removes a merged cell from the matrix.
|
486
|
+
*
|
487
|
+
* @param {MergedCellCoords} mergedCell The merged cell to remove.
|
488
|
+
*/
|
489
|
+
function _removeMergedCellFromMatrix(mergedCell) {
|
490
|
+
for (let row = mergedCell.row; row < mergedCell.row + mergedCell.rowspan; row++) {
|
491
|
+
for (let col = mergedCell.col; col < mergedCell.col + mergedCell.colspan; col++) {
|
492
|
+
this.mergedCellsMatrix.get(row).delete(col);
|
493
|
+
}
|
494
|
+
}
|
495
|
+
}
|
420
496
|
var _default = exports.default = MergedCellsCollection;
|