handsontable 14.2.0 → 14.3.0-next-3fa6b18-20240410
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 +13 -18
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +13 -18
- package/3rdparty/walkontable/src/calculator/viewportRows.js +11 -16
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +11 -16
- package/3rdparty/walkontable/src/cell/coords.js +13 -18
- package/3rdparty/walkontable/src/cell/coords.mjs +13 -18
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
- package/3rdparty/walkontable/src/cell/range.js +42 -30
- package/3rdparty/walkontable/src/cell/range.mjs +42 -30
- package/3rdparty/walkontable/src/core/_base.js +2 -2
- package/3rdparty/walkontable/src/core/_base.mjs +2 -2
- package/3rdparty/walkontable/src/core/clone.js +1 -1
- package/3rdparty/walkontable/src/core/clone.mjs +1 -1
- package/3rdparty/walkontable/src/event.js +72 -104
- package/3rdparty/walkontable/src/event.mjs +72 -104
- 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 +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
- package/3rdparty/walkontable/src/overlay/top.js +12 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +13 -2
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +1 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
- package/3rdparty/walkontable/src/overlays.js +47 -5
- package/3rdparty/walkontable/src/overlays.mjs +47 -5
- package/3rdparty/walkontable/src/renderer/_base.js +1 -1
- package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/cells.js +1 -1
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rows.js +1 -1
- package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/table.js +1 -1
- package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
- package/3rdparty/walkontable/src/scroll.js +16 -18
- package/3rdparty/walkontable/src/scroll.mjs +16 -18
- package/3rdparty/walkontable/src/selection/manager.js +48 -69
- package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
- package/3rdparty/walkontable/src/selection/scanner.js +33 -42
- package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
- package/3rdparty/walkontable/src/settings.js +1 -1
- package/3rdparty/walkontable/src/settings.mjs +1 -1
- package/3rdparty/walkontable/src/table.js +1 -1
- package/3rdparty/walkontable/src/table.mjs +1 -1
- 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 +28 -45
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +28 -45
- package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +2 -2
- 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 +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
- package/3rdparty/walkontable/src/utils/row.js +1 -1
- package/3rdparty/walkontable/src/utils/row.mjs +1 -1
- package/CHANGELOG.md +20 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/viewportScroll/index.js +4 -1
- package/core/viewportScroll/index.mjs +4 -1
- package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
- package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
- package/core.d.ts +4 -3
- package/core.js +98 -43
- package/core.mjs +98 -43
- package/dataMap/dataMap.js +1 -1
- package/dataMap/dataMap.mjs +1 -1
- package/dataMap/dataSource.js +2 -2
- package/dataMap/dataSource.mjs +2 -2
- package/dataMap/metaManager/lazyFactoryMap.js +3 -5
- package/dataMap/metaManager/lazyFactoryMap.mjs +2 -4
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -2
- package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
- 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 +272 -272
- package/dataMap/metaManager/metaSchema.mjs +272 -272
- package/dataMap/metaManager/mods/dynamicCellMeta.js +1 -1
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -1
- package/dataMap/replaceData.js +1 -1
- package/dataMap/replaceData.mjs +1 -1
- package/dist/handsontable.css +4 -4
- package/dist/handsontable.full.css +4 -4
- package/dist/handsontable.full.js +9814 -10020
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +292 -292
- package/dist/handsontable.js +7484 -7056
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +25 -25
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +26 -24
- package/editorManager.mjs +26 -24
- package/editors/autocompleteEditor/autocompleteEditor.js +7 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +7 -11
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +49 -11
- package/editors/dateEditor/dateEditor.mjs +49 -11
- package/editors/selectEditor/selectEditor.js +20 -19
- package/editors/selectEditor/selectEditor.mjs +20 -19
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +1 -1
- package/eventManager.js +2 -2
- package/eventManager.mjs +2 -2
- package/focusManager.js +64 -82
- package/focusManager.mjs +64 -82
- package/helpers/dom/element.js +23 -1
- package/helpers/dom/element.mjs +21 -1
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/object.js +2 -2
- package/helpers/object.mjs +2 -2
- package/i18n/languages/ar-AR.d.ts +5 -0
- package/i18n/languages/ar-AR.js +1 -1
- package/i18n/languages/cs-CZ.d.ts +5 -0
- package/i18n/languages/cs-CZ.js +1 -1
- package/i18n/languages/de-CH.js +1 -1
- package/i18n/languages/de-DE.js +1 -1
- package/i18n/languages/en-US.js +1 -1
- package/i18n/languages/es-MX.js +1 -1
- package/i18n/languages/fr-FR.js +1 -1
- package/i18n/languages/hr-HR.d.ts +5 -0
- package/i18n/languages/hr-HR.js +1 -1
- package/i18n/languages/it-IT.js +1 -1
- package/i18n/languages/ja-JP.js +1 -1
- package/i18n/languages/ko-KR.js +1 -1
- package/i18n/languages/lv-LV.js +1 -1
- package/i18n/languages/nb-NO.js +1 -1
- package/i18n/languages/nl-NL.js +1 -1
- package/i18n/languages/pl-PL.js +1 -1
- package/i18n/languages/pt-BR.js +1 -1
- package/i18n/languages/ru-RU.js +1 -1
- package/i18n/languages/sr-SP.d.ts +5 -0
- package/i18n/languages/sr-SP.js +1 -1
- package/i18n/languages/zh-CN.js +1 -1
- package/i18n/languages/zh-TW.js +1 -1
- package/i18n/registry.js +1 -1
- package/index.d.ts +10 -0
- package/index.js +1 -1
- package/package.json +14 -10
- package/pluginHooks.d.ts +4 -3
- package/pluginHooks.js +143 -82
- package/pluginHooks.mjs +143 -82
- package/plugins/autoColumnSize/autoColumnSize.js +50 -66
- package/plugins/autoColumnSize/autoColumnSize.mjs +50 -66
- package/plugins/autoRowSize/autoRowSize.js +29 -35
- package/plugins/autoRowSize/autoRowSize.mjs +29 -35
- package/plugins/autofill/autofill.js +31 -39
- package/plugins/autofill/autofill.mjs +31 -39
- package/plugins/base/base.js +13 -18
- package/plugins/base/base.mjs +13 -18
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -6
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +6 -6
- package/plugins/collapsibleColumns/collapsibleColumns.js +60 -51
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +60 -51
- package/plugins/columnSorting/columnSorting.js +50 -46
- package/plugins/columnSorting/columnSorting.mjs +50 -46
- package/plugins/columnSorting/columnStatesManager.js +1 -1
- package/plugins/columnSorting/columnStatesManager.mjs +1 -1
- package/plugins/columnSummary/columnSummary.js +36 -40
- package/plugins/columnSummary/columnSummary.mjs +36 -40
- package/plugins/columnSummary/endpoints.js +1 -1
- package/plugins/columnSummary/endpoints.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -1
- package/plugins/comments/commentEditor.mjs +1 -1
- package/plugins/comments/comments.js +117 -159
- package/plugins/comments/comments.mjs +117 -159
- package/plugins/comments/contextMenuItem/addEditComment.js +1 -1
- package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -1
- package/plugins/comments/contextMenuItem/removeComment.js +1 -1
- package/plugins/comments/displaySwitch.js +1 -1
- package/plugins/comments/displaySwitch.mjs +1 -1
- package/plugins/contextMenu/commandExecutor.js +1 -1
- package/plugins/contextMenu/commandExecutor.mjs +1 -1
- package/plugins/contextMenu/contextMenu.js +24 -30
- package/plugins/contextMenu/contextMenu.mjs +24 -30
- package/plugins/contextMenu/itemsFactory.js +2 -2
- package/plugins/contextMenu/itemsFactory.mjs +2 -2
- package/plugins/contextMenu/menu/cursor.js +1 -1
- package/plugins/contextMenu/menu/cursor.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
- package/plugins/contextMenu/menu/menu.js +14 -22
- package/plugins/contextMenu/menu/menu.mjs +14 -22
- package/plugins/contextMenu/menu/positioner.js +41 -58
- package/plugins/contextMenu/menu/positioner.mjs +41 -58
- package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
- package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnRight.js +1 -1
- package/plugins/contextMenu/predefinedItems/index.js +1 -1
- package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
- package/plugins/contextMenu/predefinedItems/redo.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
- package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -1
- package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -1
- package/plugins/contextMenu/predefinedItems/undo.js +1 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
- package/plugins/copyPaste/copyPaste.js +120 -161
- package/plugins/copyPaste/copyPaste.mjs +120 -161
- package/plugins/copyPaste/copyableRanges.js +43 -66
- package/plugins/copyPaste/copyableRanges.mjs +43 -66
- package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
- package/plugins/customBorders/contextMenuItem/left.js +1 -1
- package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
- package/plugins/customBorders/contextMenuItem/right.js +1 -1
- package/plugins/customBorders/contextMenuItem/top.js +1 -1
- package/plugins/customBorders/customBorders.js +14 -16
- package/plugins/customBorders/customBorders.mjs +13 -15
- package/plugins/dragToScroll/dragToScroll.js +7 -7
- package/plugins/dragToScroll/dragToScroll.mjs +7 -7
- package/plugins/dropdownMenu/dropdownMenu.js +84 -110
- package/plugins/dropdownMenu/dropdownMenu.mjs +84 -110
- package/plugins/exportFile/dataProvider.js +2 -2
- package/plugins/exportFile/dataProvider.mjs +2 -2
- package/plugins/exportFile/exportFile.js +2 -2
- package/plugins/exportFile/exportFile.mjs +1 -1
- package/plugins/exportFile/types/_base.js +1 -1
- package/plugins/exportFile/types/_base.mjs +1 -1
- package/plugins/filters/component/_base.js +1 -1
- package/plugins/filters/component/_base.mjs +1 -1
- package/plugins/filters/component/actionBar.js +11 -11
- package/plugins/filters/component/actionBar.mjs +9 -9
- package/plugins/filters/component/condition.js +15 -17
- package/plugins/filters/component/condition.mjs +14 -16
- package/plugins/filters/component/operators.js +7 -7
- package/plugins/filters/component/operators.mjs +7 -7
- package/plugins/filters/component/value.js +26 -30
- package/plugins/filters/component/value.mjs +25 -29
- package/plugins/filters/condition/beginsWith.js +1 -1
- package/plugins/filters/condition/between.js +1 -1
- package/plugins/filters/condition/contains.js +1 -1
- 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/condition/empty.js +1 -1
- package/plugins/filters/condition/endsWith.js +1 -1
- package/plugins/filters/condition/equal.js +1 -1
- package/plugins/filters/condition/greaterThan.js +1 -1
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -1
- package/plugins/filters/condition/lessThan.js +1 -1
- package/plugins/filters/condition/lessThanOrEqual.js +1 -1
- package/plugins/filters/condition/none.js +1 -1
- package/plugins/filters/condition/notBetween.js +1 -1
- package/plugins/filters/condition/notContains.js +1 -1
- package/plugins/filters/condition/notEmpty.js +1 -1
- package/plugins/filters/condition/notEqual.js +1 -1
- package/plugins/filters/conditionCollection.js +1 -1
- package/plugins/filters/conditionCollection.mjs +1 -1
- package/plugins/filters/conditionUpdateObserver.js +23 -25
- package/plugins/filters/conditionUpdateObserver.mjs +23 -25
- package/plugins/filters/dataFilter.js +2 -2
- package/plugins/filters/dataFilter.mjs +2 -2
- package/plugins/filters/filters.js +84 -98
- package/plugins/filters/filters.mjs +83 -97
- package/plugins/filters/logicalOperations/conjunction.js +1 -1
- package/plugins/filters/logicalOperations/disjunction.js +1 -1
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -1
- package/plugins/filters/ui/_base.js +2 -2
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/ui/input.js +13 -19
- package/plugins/filters/ui/input.mjs +13 -19
- package/plugins/filters/ui/link.js +8 -13
- package/plugins/filters/ui/link.mjs +8 -13
- package/plugins/filters/ui/multipleSelect.js +86 -113
- package/plugins/filters/ui/multipleSelect.mjs +85 -112
- package/plugins/filters/ui/radioInput.js +12 -20
- package/plugins/filters/ui/radioInput.mjs +12 -20
- package/plugins/filters/ui/select.js +51 -73
- package/plugins/filters/ui/select.mjs +49 -71
- package/plugins/formulas/formulas.js +270 -328
- package/plugins/formulas/formulas.mjs +271 -329
- package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
- package/plugins/formulas/indexSyncer/index.js +25 -48
- package/plugins/formulas/indexSyncer/index.mjs +25 -48
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
- package/plugins/hiddenColumns/hiddenColumns.js +68 -87
- package/plugins/hiddenColumns/hiddenColumns.mjs +68 -87
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
- package/plugins/hiddenRows/hiddenRows.js +67 -86
- package/plugins/hiddenRows/hiddenRows.mjs +67 -86
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
- package/plugins/manualColumnMove/manualColumnMove.js +133 -177
- package/plugins/manualColumnMove/manualColumnMove.mjs +133 -177
- package/plugins/manualColumnMove/ui/_base.js +1 -1
- package/plugins/manualColumnMove/ui/_base.mjs +1 -1
- package/plugins/manualColumnResize/manualColumnResize.js +169 -230
- package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
- package/plugins/manualRowMove/manualRowMove.js +106 -135
- package/plugins/manualRowMove/manualRowMove.mjs +106 -135
- package/plugins/manualRowMove/ui/_base.js +1 -1
- package/plugins/manualRowMove/ui/_base.mjs +1 -1
- package/plugins/manualRowResize/manualRowResize.js +150 -209
- package/plugins/manualRowResize/manualRowResize.mjs +150 -209
- package/plugins/mergeCells/calculations/autofill.js +1 -1
- package/plugins/mergeCells/calculations/autofill.mjs +1 -1
- package/plugins/mergeCells/calculations/selection.js +3 -72
- package/plugins/mergeCells/calculations/selection.mjs +3 -72
- package/plugins/mergeCells/cellCoords.js +1 -1
- package/plugins/mergeCells/cellCoords.mjs +1 -1
- package/plugins/mergeCells/cellsCollection.js +118 -2
- package/plugins/mergeCells/cellsCollection.mjs +118 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +12 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
- package/plugins/mergeCells/focusOrder.js +305 -0
- package/plugins/mergeCells/focusOrder.mjs +300 -0
- package/plugins/mergeCells/mergeCells.js +500 -398
- package/plugins/mergeCells/mergeCells.mjs +500 -398
- package/plugins/multiColumnSorting/multiColumnSorting.js +9 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +9 -3
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -2
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +2 -2
- package/plugins/nestedHeaders/nestedHeaders.js +206 -254
- package/plugins/nestedHeaders/nestedHeaders.mjs +207 -255
- package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
- package/plugins/nestedHeaders/stateManager/index.js +30 -41
- package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
- package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +2 -2
- package/plugins/nestedRows/data/dataManager.mjs +2 -2
- package/plugins/nestedRows/nestedRows.js +154 -185
- package/plugins/nestedRows/nestedRows.mjs +155 -186
- package/plugins/nestedRows/ui/_base.js +1 -1
- package/plugins/nestedRows/ui/_base.mjs +1 -1
- package/plugins/nestedRows/ui/contextMenu.js +13 -17
- package/plugins/nestedRows/ui/contextMenu.mjs +11 -15
- package/plugins/nestedRows/utils/rowMoveController.js +6 -6
- package/plugins/nestedRows/utils/rowMoveController.mjs +6 -6
- package/plugins/persistentState/persistentState.js +1 -1
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/persistentState/storage.js +3 -3
- package/plugins/persistentState/storage.mjs +3 -3
- package/plugins/search/search.js +8 -8
- package/plugins/search/search.mjs +8 -8
- package/plugins/touchScroll/touchScroll.js +16 -20
- package/plugins/touchScroll/touchScroll.mjs +17 -21
- package/plugins/trimRows/trimRows.js +7 -7
- package/plugins/trimRows/trimRows.mjs +7 -7
- package/plugins/undoRedo/index.js +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
- package/selection/highlight/highlight.js +16 -18
- package/selection/highlight/highlight.mjs +15 -17
- package/selection/highlight/visualSelection.js +3 -1
- package/selection/highlight/visualSelection.mjs +3 -1
- package/selection/range.js +3 -5
- package/selection/range.mjs +2 -4
- package/selection/selection.js +227 -69
- package/selection/selection.mjs +225 -67
- package/selection/transformation.js +149 -118
- package/selection/transformation.mjs +149 -118
- package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
- package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
- package/shortcutContexts/commands/editor/open.js +18 -3
- package/shortcutContexts/commands/editor/open.mjs +18 -3
- package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
- package/shortcutContexts/grid.js +9 -3
- package/shortcutContexts/grid.mjs +9 -3
- package/shortcuts/context.js +3 -2
- package/shortcuts/context.mjs +3 -2
- package/shortcuts/manager.js +2 -2
- package/shortcuts/manager.mjs +2 -2
- package/tableView.js +53 -79
- package/tableView.mjs +53 -79
- package/translations/changesObservable/observable.js +21 -38
- package/translations/changesObservable/observable.mjs +21 -38
- package/translations/changesObservable/observer.js +7 -12
- package/translations/changesObservable/observer.mjs +6 -11
- package/translations/indexMapper.js +1 -1
- package/translations/indexMapper.mjs +1 -1
- package/translations/mapCollections/aggregatedCollection.js +2 -2
- package/translations/mapCollections/aggregatedCollection.mjs +2 -2
- package/translations/mapCollections/mapCollection.js +1 -1
- package/translations/mapCollections/mapCollection.mjs +1 -1
- package/translations/maps/indexMap.js +2 -2
- package/translations/maps/indexMap.mjs +2 -2
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +7 -2
- package/utils/dataStructures/linkedList.mjs +7 -2
- package/utils/dataStructures/tree.js +2 -2
- package/utils/dataStructures/tree.mjs +2 -2
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/utils/interval.js +27 -45
- package/utils/interval.mjs +27 -45
- package/utils/samplesGenerator.js +1 -1
- package/utils/samplesGenerator.mjs +1 -1
@@ -1,17 +1,14 @@
|
|
1
|
-
import "core-js/modules/es.array.push.js";
|
2
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
+
import "core-js/modules/es.array.push.js";
|
3
3
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
4
4
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
5
5
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
6
6
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
7
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
8
8
|
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); }
|
9
|
-
function _classPrivateFieldGet(
|
10
|
-
function
|
11
|
-
function
|
12
|
-
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
13
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
14
|
-
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
9
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
10
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
11
|
+
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"); }
|
15
12
|
import { BasePlugin } from "../base/index.mjs";
|
16
13
|
import Hooks from "../../pluginHooks.mjs";
|
17
14
|
import { stringify, parse } from "../../3rdparty/SheetClip/index.mjs";
|
@@ -48,12 +45,12 @@ const META_HEAD = ['<meta name="generator" content="Handsontable"/>', '<style ty
|
|
48
45
|
* Control the `CopyPaste` plugin programmatically through its [API methods](#methods).
|
49
46
|
*
|
50
47
|
* The user can access the copy-paste features through:
|
51
|
-
* - The [context menu](@/guides/cell-features/clipboard.md#context-menu).
|
52
|
-
* - The [keyboard shortcuts](@/guides/cell-features/clipboard.md#related-keyboard-shortcuts).
|
48
|
+
* - The [context menu](@/guides/cell-features/clipboard/clipboard.md#context-menu).
|
49
|
+
* - The [keyboard shortcuts](@/guides/cell-features/clipboard/clipboard.md#related-keyboard-shortcuts).
|
53
50
|
* - The browser's menu bar.
|
54
51
|
*
|
55
52
|
* Read more:
|
56
|
-
* - [Guides: Clipboard](@/guides/cell-features/clipboard.md)
|
53
|
+
* - [Guides: Clipboard](@/guides/cell-features/clipboard/clipboard.md)
|
57
54
|
* - [Configuration options: `copyPaste`](@/api/options.md#copypaste)
|
58
55
|
*
|
59
56
|
* @example
|
@@ -83,76 +80,16 @@ var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
|
|
83
80
|
var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
|
84
81
|
var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
|
85
82
|
var _preventViewportScrollOnPaste = /*#__PURE__*/new WeakMap();
|
86
|
-
var
|
87
|
-
var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
|
88
|
-
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
89
|
-
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
90
|
-
var _onAfterContextMenuDefaultOptions = /*#__PURE__*/new WeakSet();
|
91
|
-
var _onAfterSelection = /*#__PURE__*/new WeakSet();
|
92
|
-
var _onAfterSelectionEnd = /*#__PURE__*/new WeakSet();
|
93
|
-
var _onSafariMouseEnter = /*#__PURE__*/new WeakSet();
|
94
|
-
var _onSafariMouseLeave = /*#__PURE__*/new WeakSet();
|
95
|
-
var _onSafariAfterSelection = /*#__PURE__*/new WeakSet();
|
83
|
+
var _CopyPaste_brand = /*#__PURE__*/new WeakSet();
|
96
84
|
export class CopyPaste extends BasePlugin {
|
97
85
|
constructor() {
|
98
86
|
super(...arguments);
|
99
|
-
/**
|
100
|
-
* `afterSelection` hook callback triggered only on Safari.
|
101
|
-
*/
|
102
|
-
_classPrivateMethodInitSpec(this, _onSafariAfterSelection);
|
103
|
-
/**
|
104
|
-
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
105
|
-
* browser's menu.
|
106
|
-
*/
|
107
|
-
_classPrivateMethodInitSpec(this, _onSafariMouseLeave);
|
108
|
-
/**
|
109
|
-
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
110
|
-
* browser's menu.
|
111
|
-
*/
|
112
|
-
_classPrivateMethodInitSpec(this, _onSafariMouseEnter);
|
113
|
-
/**
|
114
|
-
* Force focus on focusableElement after end of the selection.
|
115
|
-
*/
|
116
|
-
_classPrivateMethodInitSpec(this, _onAfterSelectionEnd);
|
117
|
-
/**
|
118
|
-
* Disables the viewport scroll after pasting the data.
|
119
|
-
*
|
120
|
-
* @param {number} fromRow Selection start row visual index.
|
121
|
-
* @param {number} fromColumn Selection start column visual index.
|
122
|
-
* @param {number} toRow Selection end row visual index.
|
123
|
-
* @param {number} toColumn Selection end column visual index.
|
124
|
-
* @param {object} preventScrolling Object with `value` property. If `true`, the viewport scroll will be prevented.
|
125
|
-
*/
|
126
|
-
_classPrivateMethodInitSpec(this, _onAfterSelection);
|
127
|
-
/**
|
128
|
-
* Add copy and cut options to the Context Menu.
|
129
|
-
*
|
130
|
-
* @param {object} options Contains default added options of the Context Menu.
|
131
|
-
*/
|
132
|
-
_classPrivateMethodInitSpec(this, _onAfterContextMenuDefaultOptions);
|
133
|
-
/**
|
134
|
-
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
135
|
-
*/
|
136
|
-
_classPrivateMethodInitSpec(this, _removeContentEditableFromHighlightedCell);
|
137
|
-
/**
|
138
|
-
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
139
|
-
*/
|
140
|
-
_classPrivateMethodInitSpec(this, _addContentEditableToHighlightedCell);
|
141
|
-
/**
|
142
|
-
* Counts how many column headers will be copied based on the passed range.
|
143
|
-
*
|
144
|
-
* @private
|
145
|
-
* @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
|
146
|
-
* @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
|
147
|
-
* information with the number of copied headers.
|
148
|
-
*/
|
149
|
-
_classPrivateMethodInitSpec(this, _countCopiedHeaders);
|
150
87
|
/**
|
151
88
|
* Ensure that the `copy`/`cut` events get triggered properly in Safari.
|
152
89
|
*
|
153
90
|
* @param {string} eventName Name of the event to get triggered.
|
154
91
|
*/
|
155
|
-
_classPrivateMethodInitSpec(this,
|
92
|
+
_classPrivateMethodInitSpec(this, _CopyPaste_brand);
|
156
93
|
/**
|
157
94
|
* The maximum number of columns than can be copied to the clipboard.
|
158
95
|
*
|
@@ -169,9 +106,9 @@ export class CopyPaste extends BasePlugin {
|
|
169
106
|
_defineProperty(this, "rowsLimit", Infinity);
|
170
107
|
/**
|
171
108
|
* When pasting:
|
172
|
-
* - `'overwrite'
|
173
|
-
* - `'shift_down'
|
174
|
-
* - `'shift_right'
|
109
|
+
* - `'overwrite'` - overwrite the currently-selected cells
|
110
|
+
* - `'shift_down'` - move currently-selected cells down
|
111
|
+
* - `'shift_right'` - move currently-selected cells to the right
|
175
112
|
*
|
176
113
|
* @type {string}
|
177
114
|
* @default 'overwrite'
|
@@ -190,10 +127,7 @@ export class CopyPaste extends BasePlugin {
|
|
190
127
|
* @type {boolean}
|
191
128
|
* @default false
|
192
129
|
*/
|
193
|
-
_classPrivateFieldInitSpec(this, _enableCopyColumnHeaders,
|
194
|
-
writable: true,
|
195
|
-
value: false
|
196
|
-
});
|
130
|
+
_classPrivateFieldInitSpec(this, _enableCopyColumnHeaders, false);
|
197
131
|
/**
|
198
132
|
* Shows the "Copy with group headers" item in the context menu and extends the context menu with the
|
199
133
|
* `'copy_with_column_group headers'` option that can be used for creating custom menus arrangements.
|
@@ -201,10 +135,7 @@ export class CopyPaste extends BasePlugin {
|
|
201
135
|
* @type {boolean}
|
202
136
|
* @default false
|
203
137
|
*/
|
204
|
-
_classPrivateFieldInitSpec(this, _enableCopyColumnGroupHeaders,
|
205
|
-
writable: true,
|
206
|
-
value: false
|
207
|
-
});
|
138
|
+
_classPrivateFieldInitSpec(this, _enableCopyColumnGroupHeaders, false);
|
208
139
|
/**
|
209
140
|
* Shows the "Copy headers only" item in the context menu and extends the context menu with the
|
210
141
|
* `'copy_column_headers_only'` option that can be used for creating custom menus arrangements.
|
@@ -212,10 +143,7 @@ export class CopyPaste extends BasePlugin {
|
|
212
143
|
* @type {boolean}
|
213
144
|
* @default false
|
214
145
|
*/
|
215
|
-
_classPrivateFieldInitSpec(this, _enableCopyColumnHeadersOnly,
|
216
|
-
writable: true,
|
217
|
-
value: false
|
218
|
-
});
|
146
|
+
_classPrivateFieldInitSpec(this, _enableCopyColumnHeadersOnly, false);
|
219
147
|
/**
|
220
148
|
* Defines the data range to copy. Possible values:
|
221
149
|
* * `'cells-only'` Copy selected cells only;
|
@@ -225,53 +153,38 @@ export class CopyPaste extends BasePlugin {
|
|
225
153
|
*
|
226
154
|
* @type {'cells-only' | 'column-headers-only' | 'with-column-group-headers' | 'with-column-headers'}
|
227
155
|
*/
|
228
|
-
_classPrivateFieldInitSpec(this, _copyMode,
|
229
|
-
writable: true,
|
230
|
-
value: 'cells-only'
|
231
|
-
});
|
156
|
+
_classPrivateFieldInitSpec(this, _copyMode, 'cells-only');
|
232
157
|
/**
|
233
158
|
* Flag that is used to prevent copying when the native shortcut was not pressed.
|
234
159
|
*
|
235
160
|
* @type {boolean}
|
236
161
|
*/
|
237
|
-
_classPrivateFieldInitSpec(this, _isTriggeredByCopy,
|
238
|
-
writable: true,
|
239
|
-
value: false
|
240
|
-
});
|
162
|
+
_classPrivateFieldInitSpec(this, _isTriggeredByCopy, false);
|
241
163
|
/**
|
242
164
|
* Flag that is used to prevent cutting when the native shortcut was not pressed.
|
243
165
|
*
|
244
166
|
* @type {boolean}
|
245
167
|
*/
|
246
|
-
_classPrivateFieldInitSpec(this, _isTriggeredByCut,
|
247
|
-
writable: true,
|
248
|
-
value: false
|
249
|
-
});
|
168
|
+
_classPrivateFieldInitSpec(this, _isTriggeredByCut, false);
|
250
169
|
/**
|
251
170
|
* Class that helps generate copyable ranges based on the current selection for different copy mode
|
252
171
|
* types.
|
253
172
|
*
|
254
173
|
* @type {CopyableRangesFactory}
|
255
174
|
*/
|
256
|
-
_classPrivateFieldInitSpec(this, _copyableRangesFactory, {
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
countColumnHeaders: () => this.hot.view.getColumnHeadersCount()
|
264
|
-
})
|
265
|
-
});
|
175
|
+
_classPrivateFieldInitSpec(this, _copyableRangesFactory, new CopyableRangesFactory({
|
176
|
+
countRows: () => this.hot.countRows(),
|
177
|
+
countColumns: () => this.hot.countCols(),
|
178
|
+
rowsLimit: () => this.rowsLimit,
|
179
|
+
columnsLimit: () => this.columnsLimit,
|
180
|
+
countColumnHeaders: () => this.hot.view.getColumnHeadersCount()
|
181
|
+
}));
|
266
182
|
/**
|
267
183
|
* Flag that indicates if the viewport scroll should be prevented after pasting the data.
|
268
184
|
*
|
269
185
|
* @type {boolean}
|
270
186
|
*/
|
271
|
-
_classPrivateFieldInitSpec(this, _preventViewportScrollOnPaste,
|
272
|
-
writable: true,
|
273
|
-
value: false
|
274
|
-
});
|
187
|
+
_classPrivateFieldInitSpec(this, _preventViewportScrollOnPaste, false);
|
275
188
|
/**
|
276
189
|
* Ranges of the cells coordinates, which should be used to copy/cut/paste actions.
|
277
190
|
*
|
@@ -317,19 +230,19 @@ export class CopyPaste extends BasePlugin {
|
|
317
230
|
this.pasteMode = (_settings$pasteMode = settings.pasteMode) !== null && _settings$pasteMode !== void 0 ? _settings$pasteMode : this.pasteMode;
|
318
231
|
this.rowsLimit = isNaN(settings.rowsLimit) ? this.rowsLimit : settings.rowsLimit;
|
319
232
|
this.columnsLimit = isNaN(settings.columnsLimit) ? this.columnsLimit : settings.columnsLimit;
|
320
|
-
_classPrivateFieldSet(
|
321
|
-
_classPrivateFieldSet(
|
322
|
-
_classPrivateFieldSet(
|
233
|
+
_classPrivateFieldSet(_enableCopyColumnHeaders, this, !!settings.copyColumnHeaders);
|
234
|
+
_classPrivateFieldSet(_enableCopyColumnGroupHeaders, this, !!settings.copyColumnGroupHeaders);
|
235
|
+
_classPrivateFieldSet(_enableCopyColumnHeadersOnly, this, !!settings.copyColumnHeadersOnly);
|
323
236
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
324
237
|
}
|
325
|
-
this.addHook('afterContextMenuDefaultOptions', options =>
|
238
|
+
this.addHook('afterContextMenuDefaultOptions', options => _assertClassBrand(_CopyPaste_brand, this, _onAfterContextMenuDefaultOptions).call(this, options));
|
326
239
|
this.addHook('afterSelection', function () {
|
327
240
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
328
241
|
args[_key] = arguments[_key];
|
329
242
|
}
|
330
|
-
return
|
243
|
+
return _assertClassBrand(_CopyPaste_brand, _this, _onAfterSelection).call(_this, ...args);
|
331
244
|
});
|
332
|
-
this.addHook('afterSelectionEnd', () =>
|
245
|
+
this.addHook('afterSelectionEnd', () => _assertClassBrand(_CopyPaste_brand, this, _onAfterSelectionEnd).call(this));
|
333
246
|
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
334
247
|
return _this.onCopy(...arguments);
|
335
248
|
});
|
@@ -346,15 +259,15 @@ export class CopyPaste extends BasePlugin {
|
|
346
259
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
347
260
|
args[_key2] = arguments[_key2];
|
348
261
|
}
|
349
|
-
return
|
262
|
+
return _assertClassBrand(_CopyPaste_brand, _this, _onSafariMouseEnter).call(_this, ...args);
|
350
263
|
});
|
351
264
|
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
352
265
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
353
266
|
args[_key3] = arguments[_key3];
|
354
267
|
}
|
355
|
-
return
|
268
|
+
return _assertClassBrand(_CopyPaste_brand, _this, _onSafariMouseLeave).call(_this, ...args);
|
356
269
|
});
|
357
|
-
this.addHook('afterSelection', () =>
|
270
|
+
this.addHook('afterSelection', () => _assertClassBrand(_CopyPaste_brand, this, _onSafariAfterSelection).call(this));
|
358
271
|
}
|
359
272
|
super.enablePlugin();
|
360
273
|
}
|
@@ -396,9 +309,9 @@ export class CopyPaste extends BasePlugin {
|
|
396
309
|
*/
|
397
310
|
copy() {
|
398
311
|
let copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
399
|
-
_classPrivateFieldSet(
|
400
|
-
_classPrivateFieldSet(
|
401
|
-
|
312
|
+
_classPrivateFieldSet(_copyMode, this, copyMode);
|
313
|
+
_classPrivateFieldSet(_isTriggeredByCopy, this, true);
|
314
|
+
_assertClassBrand(_CopyPaste_brand, this, _ensureClipboardEventsGetTriggered).call(this, 'copy');
|
402
315
|
}
|
403
316
|
|
404
317
|
/**
|
@@ -430,8 +343,8 @@ export class CopyPaste extends BasePlugin {
|
|
430
343
|
* Cuts the contents of the selected cells to the system clipboard.
|
431
344
|
*/
|
432
345
|
cut() {
|
433
|
-
_classPrivateFieldSet(
|
434
|
-
|
346
|
+
_classPrivateFieldSet(_isTriggeredByCut, this, true);
|
347
|
+
_assertClassBrand(_CopyPaste_brand, this, _ensureClipboardEventsGetTriggered).call(this, 'cut');
|
435
348
|
}
|
436
349
|
|
437
350
|
/**
|
@@ -509,17 +422,17 @@ export class CopyPaste extends BasePlugin {
|
|
509
422
|
this.copyableRanges = [];
|
510
423
|
return;
|
511
424
|
}
|
512
|
-
_classPrivateFieldGet(
|
425
|
+
_classPrivateFieldGet(_copyableRangesFactory, this).setSelectedRange(selectionRange);
|
513
426
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
514
|
-
if (_classPrivateFieldGet(
|
515
|
-
groupedRanges.set('headers', _classPrivateFieldGet(
|
427
|
+
if (_classPrivateFieldGet(_copyMode, this) === 'column-headers-only') {
|
428
|
+
groupedRanges.set('headers', _classPrivateFieldGet(_copyableRangesFactory, this).getMostBottomColumnHeadersRange());
|
516
429
|
} else {
|
517
|
-
if (_classPrivateFieldGet(
|
518
|
-
groupedRanges.set('headers', _classPrivateFieldGet(
|
519
|
-
} else if (_classPrivateFieldGet(
|
520
|
-
groupedRanges.set('headers', _classPrivateFieldGet(
|
430
|
+
if (_classPrivateFieldGet(_copyMode, this) === 'with-column-headers') {
|
431
|
+
groupedRanges.set('headers', _classPrivateFieldGet(_copyableRangesFactory, this).getMostBottomColumnHeadersRange());
|
432
|
+
} else if (_classPrivateFieldGet(_copyMode, this) === 'with-column-group-headers') {
|
433
|
+
groupedRanges.set('headers', _classPrivateFieldGet(_copyableRangesFactory, this).getAllColumnHeadersRange());
|
521
434
|
}
|
522
|
-
groupedRanges.set('cells', _classPrivateFieldGet(
|
435
|
+
groupedRanges.set('cells', _classPrivateFieldGet(_copyableRangesFactory, this).getCellsRange());
|
523
436
|
}
|
524
437
|
this.copyableRanges = Array.from(groupedRanges.values()).filter(range => range !== null).map(_ref => {
|
525
438
|
let {
|
@@ -620,10 +533,15 @@ export class CopyPaste extends BasePlugin {
|
|
620
533
|
}
|
621
534
|
newRows.push(newRow);
|
622
535
|
}
|
623
|
-
_classPrivateFieldSet(
|
536
|
+
_classPrivateFieldSet(_preventViewportScrollOnPaste, this, true);
|
624
537
|
this.hot.populateFromArray(startRow, startColumn, newRows, undefined, undefined, 'CopyPaste.paste', this.pasteMode);
|
625
538
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
626
539
|
}
|
540
|
+
|
541
|
+
/**
|
542
|
+
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
543
|
+
*/
|
544
|
+
|
627
545
|
/**
|
628
546
|
* `copy` event callback on textarea element.
|
629
547
|
*
|
@@ -631,13 +549,13 @@ export class CopyPaste extends BasePlugin {
|
|
631
549
|
* @private
|
632
550
|
*/
|
633
551
|
onCopy(event) {
|
634
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(
|
552
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened()) {
|
635
553
|
return;
|
636
554
|
}
|
637
555
|
this.setCopyableText();
|
638
|
-
_classPrivateFieldSet(
|
556
|
+
_classPrivateFieldSet(_isTriggeredByCopy, this, false);
|
639
557
|
const data = this.getRangedData(this.copyableRanges);
|
640
|
-
const copiedHeadersCount =
|
558
|
+
const copiedHeadersCount = _assertClassBrand(_CopyPaste_brand, this, _countCopiedHeaders).call(this, this.copyableRanges);
|
641
559
|
const allowCopying = !!this.hot.runHooks('beforeCopy', data, this.copyableRanges, copiedHeadersCount);
|
642
560
|
if (allowCopying) {
|
643
561
|
const textPlain = stringify(data);
|
@@ -650,7 +568,7 @@ export class CopyPaste extends BasePlugin {
|
|
650
568
|
}
|
651
569
|
this.hot.runHooks('afterCopy', data, this.copyableRanges, copiedHeadersCount);
|
652
570
|
}
|
653
|
-
_classPrivateFieldSet(
|
571
|
+
_classPrivateFieldSet(_copyMode, this, 'cells-only');
|
654
572
|
event.preventDefault();
|
655
573
|
}
|
656
574
|
|
@@ -661,11 +579,11 @@ export class CopyPaste extends BasePlugin {
|
|
661
579
|
* @private
|
662
580
|
*/
|
663
581
|
onCut(event) {
|
664
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(
|
582
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened()) {
|
665
583
|
return;
|
666
584
|
}
|
667
585
|
this.setCopyableText();
|
668
|
-
_classPrivateFieldSet(
|
586
|
+
_classPrivateFieldSet(_isTriggeredByCut, this, false);
|
669
587
|
const rangedData = this.getRangedData(this.copyableRanges);
|
670
588
|
const allowCuttingOut = !!this.hot.runHooks('beforeCut', rangedData, this.copyableRanges);
|
671
589
|
if (allowCuttingOut) {
|
@@ -725,6 +643,13 @@ export class CopyPaste extends BasePlugin {
|
|
725
643
|
this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
|
726
644
|
this.hot.runHooks('afterPaste', pastedData, this.copyableRanges);
|
727
645
|
}
|
646
|
+
|
647
|
+
/**
|
648
|
+
* Add copy and cut options to the Context Menu.
|
649
|
+
*
|
650
|
+
* @param {object} options Contains default added options of the Context Menu.
|
651
|
+
*/
|
652
|
+
|
728
653
|
/**
|
729
654
|
* Destroys the `CopyPaste` plugin instance.
|
730
655
|
*/
|
@@ -732,7 +657,7 @@ export class CopyPaste extends BasePlugin {
|
|
732
657
|
super.destroy();
|
733
658
|
}
|
734
659
|
}
|
735
|
-
function
|
660
|
+
function _ensureClipboardEventsGetTriggered(eventName) {
|
736
661
|
// Without this workaround Safari (tested on Safari@16.5.2) does not trigger the 'copy' event.
|
737
662
|
if (isSafari()) {
|
738
663
|
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
@@ -752,7 +677,15 @@ function _ensureClipboardEventsGetTriggered2(eventName) {
|
|
752
677
|
this.hot.rootDocument.execCommand(eventName);
|
753
678
|
}
|
754
679
|
}
|
755
|
-
|
680
|
+
/**
|
681
|
+
* Counts how many column headers will be copied based on the passed range.
|
682
|
+
*
|
683
|
+
* @private
|
684
|
+
* @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
|
685
|
+
* @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
|
686
|
+
* information with the number of copied headers.
|
687
|
+
*/
|
688
|
+
function _countCopiedHeaders(ranges) {
|
756
689
|
const {
|
757
690
|
rows
|
758
691
|
} = normalizeRanges(ranges);
|
@@ -767,7 +700,7 @@ function _countCopiedHeaders2(ranges) {
|
|
767
700
|
columnHeadersCount
|
768
701
|
};
|
769
702
|
}
|
770
|
-
function
|
703
|
+
function _addContentEditableToHighlightedCell() {
|
771
704
|
if (this.hot.isListening()) {
|
772
705
|
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
773
706
|
if (lastSelectedRange) {
|
@@ -782,7 +715,10 @@ function _addContentEditableToHighlightedCell2() {
|
|
782
715
|
}
|
783
716
|
}
|
784
717
|
}
|
785
|
-
|
718
|
+
/**
|
719
|
+
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
720
|
+
*/
|
721
|
+
function _removeContentEditableFromHighlightedCell() {
|
786
722
|
// If the instance is not listening, the workaround is not needed.
|
787
723
|
if (this.hot.isListening()) {
|
788
724
|
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
@@ -798,28 +734,40 @@ function _removeContentEditableFromHighlightedCell2() {
|
|
798
734
|
}
|
799
735
|
}
|
800
736
|
}
|
801
|
-
function
|
737
|
+
function _onAfterContextMenuDefaultOptions(options) {
|
802
738
|
options.items.push({
|
803
739
|
name: '---------'
|
804
740
|
}, copyItem(this));
|
805
|
-
if (_classPrivateFieldGet(
|
741
|
+
if (_classPrivateFieldGet(_enableCopyColumnHeaders, this)) {
|
806
742
|
options.items.push(copyWithColumnHeadersItem(this));
|
807
743
|
}
|
808
|
-
if (_classPrivateFieldGet(
|
744
|
+
if (_classPrivateFieldGet(_enableCopyColumnGroupHeaders, this)) {
|
809
745
|
options.items.push(copyWithColumnGroupHeadersItem(this));
|
810
746
|
}
|
811
|
-
if (_classPrivateFieldGet(
|
747
|
+
if (_classPrivateFieldGet(_enableCopyColumnHeadersOnly, this)) {
|
812
748
|
options.items.push(copyColumnHeadersOnlyItem(this));
|
813
749
|
}
|
814
750
|
options.items.push(cutItem(this));
|
815
751
|
}
|
816
|
-
|
817
|
-
|
752
|
+
/**
|
753
|
+
* Disables the viewport scroll after pasting the data.
|
754
|
+
*
|
755
|
+
* @param {number} fromRow Selection start row visual index.
|
756
|
+
* @param {number} fromColumn Selection start column visual index.
|
757
|
+
* @param {number} toRow Selection end row visual index.
|
758
|
+
* @param {number} toColumn Selection end column visual index.
|
759
|
+
* @param {object} preventScrolling Object with `value` property. If `true`, the viewport scroll will be prevented.
|
760
|
+
*/
|
761
|
+
function _onAfterSelection(fromRow, fromColumn, toRow, toColumn, preventScrolling) {
|
762
|
+
if (_classPrivateFieldGet(_preventViewportScrollOnPaste, this)) {
|
818
763
|
preventScrolling.value = true;
|
819
764
|
}
|
820
|
-
_classPrivateFieldSet(
|
765
|
+
_classPrivateFieldSet(_preventViewportScrollOnPaste, this, false);
|
821
766
|
}
|
822
|
-
|
767
|
+
/**
|
768
|
+
* Force focus on focusableElement after end of the selection.
|
769
|
+
*/
|
770
|
+
function _onAfterSelectionEnd() {
|
823
771
|
if (this.isEditorOpened()) {
|
824
772
|
return;
|
825
773
|
}
|
@@ -828,12 +776,23 @@ function _onAfterSelectionEnd2() {
|
|
828
776
|
}
|
829
777
|
this.setCopyableText();
|
830
778
|
}
|
831
|
-
|
832
|
-
|
779
|
+
/**
|
780
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
781
|
+
* browser's menu.
|
782
|
+
*/
|
783
|
+
function _onSafariMouseEnter() {
|
784
|
+
_assertClassBrand(_CopyPaste_brand, this, _removeContentEditableFromHighlightedCell).call(this);
|
833
785
|
}
|
834
|
-
|
835
|
-
|
786
|
+
/**
|
787
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
788
|
+
* browser's menu.
|
789
|
+
*/
|
790
|
+
function _onSafariMouseLeave() {
|
791
|
+
_assertClassBrand(_CopyPaste_brand, this, _addContentEditableToHighlightedCell).call(this);
|
836
792
|
}
|
837
|
-
|
838
|
-
|
793
|
+
/**
|
794
|
+
* `afterSelection` hook callback triggered only on Safari.
|
795
|
+
*/
|
796
|
+
function _onSafariAfterSelection() {
|
797
|
+
_assertClassBrand(_CopyPaste_brand, this, _removeContentEditableFromHighlightedCell).call(this);
|
839
798
|
}
|