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
@@ -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;
|