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,8 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
-
require("core-js/modules/es.array.push.js");
|
5
4
|
require("core-js/modules/es.error.cause.js");
|
5
|
+
require("core-js/modules/es.array.push.js");
|
6
6
|
var _base = require("../base");
|
7
7
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
8
8
|
var _SheetClip = require("../../3rdparty/SheetClip");
|
@@ -23,14 +23,11 @@ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclarati
|
|
23
23
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
24
24
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
25
25
|
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; }
|
26
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
26
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
27
27
|
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); }
|
28
|
-
function _classPrivateFieldGet(
|
29
|
-
function
|
30
|
-
function
|
31
|
-
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
32
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
33
|
-
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; } }
|
28
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
29
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
30
|
+
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"); }
|
34
31
|
_pluginHooks.default.getSingleton().register('afterCopyLimit');
|
35
32
|
_pluginHooks.default.getSingleton().register('modifyCopyableRange');
|
36
33
|
_pluginHooks.default.getSingleton().register('beforeCut');
|
@@ -52,12 +49,12 @@ const META_HEAD = ['<meta name="generator" content="Handsontable"/>', '<style ty
|
|
52
49
|
* Control the `CopyPaste` plugin programmatically through its [API methods](#methods).
|
53
50
|
*
|
54
51
|
* The user can access the copy-paste features through:
|
55
|
-
* - The [context menu](@/guides/cell-features/clipboard.md#context-menu).
|
56
|
-
* - The [keyboard shortcuts](@/guides/cell-features/clipboard.md#related-keyboard-shortcuts).
|
52
|
+
* - The [context menu](@/guides/cell-features/clipboard/clipboard.md#context-menu).
|
53
|
+
* - The [keyboard shortcuts](@/guides/cell-features/clipboard/clipboard.md#related-keyboard-shortcuts).
|
57
54
|
* - The browser's menu bar.
|
58
55
|
*
|
59
56
|
* Read more:
|
60
|
-
* - [Guides: Clipboard](@/guides/cell-features/clipboard.md)
|
57
|
+
* - [Guides: Clipboard](@/guides/cell-features/clipboard/clipboard.md)
|
61
58
|
* - [Configuration options: `copyPaste`](@/api/options.md#copypaste)
|
62
59
|
*
|
63
60
|
* @example
|
@@ -87,76 +84,16 @@ var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
|
|
87
84
|
var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
|
88
85
|
var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
|
89
86
|
var _preventViewportScrollOnPaste = /*#__PURE__*/new WeakMap();
|
90
|
-
var
|
91
|
-
var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
|
92
|
-
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
93
|
-
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
94
|
-
var _onAfterContextMenuDefaultOptions = /*#__PURE__*/new WeakSet();
|
95
|
-
var _onAfterSelection = /*#__PURE__*/new WeakSet();
|
96
|
-
var _onAfterSelectionEnd = /*#__PURE__*/new WeakSet();
|
97
|
-
var _onSafariMouseEnter = /*#__PURE__*/new WeakSet();
|
98
|
-
var _onSafariMouseLeave = /*#__PURE__*/new WeakSet();
|
99
|
-
var _onSafariAfterSelection = /*#__PURE__*/new WeakSet();
|
87
|
+
var _CopyPaste_brand = /*#__PURE__*/new WeakSet();
|
100
88
|
class CopyPaste extends _base.BasePlugin {
|
101
89
|
constructor() {
|
102
90
|
super(...arguments);
|
103
|
-
/**
|
104
|
-
* `afterSelection` hook callback triggered only on Safari.
|
105
|
-
*/
|
106
|
-
_classPrivateMethodInitSpec(this, _onSafariAfterSelection);
|
107
|
-
/**
|
108
|
-
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
109
|
-
* browser's menu.
|
110
|
-
*/
|
111
|
-
_classPrivateMethodInitSpec(this, _onSafariMouseLeave);
|
112
|
-
/**
|
113
|
-
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
114
|
-
* browser's menu.
|
115
|
-
*/
|
116
|
-
_classPrivateMethodInitSpec(this, _onSafariMouseEnter);
|
117
|
-
/**
|
118
|
-
* Force focus on focusableElement after end of the selection.
|
119
|
-
*/
|
120
|
-
_classPrivateMethodInitSpec(this, _onAfterSelectionEnd);
|
121
|
-
/**
|
122
|
-
* Disables the viewport scroll after pasting the data.
|
123
|
-
*
|
124
|
-
* @param {number} fromRow Selection start row visual index.
|
125
|
-
* @param {number} fromColumn Selection start column visual index.
|
126
|
-
* @param {number} toRow Selection end row visual index.
|
127
|
-
* @param {number} toColumn Selection end column visual index.
|
128
|
-
* @param {object} preventScrolling Object with `value` property. If `true`, the viewport scroll will be prevented.
|
129
|
-
*/
|
130
|
-
_classPrivateMethodInitSpec(this, _onAfterSelection);
|
131
|
-
/**
|
132
|
-
* Add copy and cut options to the Context Menu.
|
133
|
-
*
|
134
|
-
* @param {object} options Contains default added options of the Context Menu.
|
135
|
-
*/
|
136
|
-
_classPrivateMethodInitSpec(this, _onAfterContextMenuDefaultOptions);
|
137
|
-
/**
|
138
|
-
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
139
|
-
*/
|
140
|
-
_classPrivateMethodInitSpec(this, _removeContentEditableFromHighlightedCell);
|
141
|
-
/**
|
142
|
-
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
143
|
-
*/
|
144
|
-
_classPrivateMethodInitSpec(this, _addContentEditableToHighlightedCell);
|
145
|
-
/**
|
146
|
-
* Counts how many column headers will be copied based on the passed range.
|
147
|
-
*
|
148
|
-
* @private
|
149
|
-
* @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
|
150
|
-
* @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
|
151
|
-
* information with the number of copied headers.
|
152
|
-
*/
|
153
|
-
_classPrivateMethodInitSpec(this, _countCopiedHeaders);
|
154
91
|
/**
|
155
92
|
* Ensure that the `copy`/`cut` events get triggered properly in Safari.
|
156
93
|
*
|
157
94
|
* @param {string} eventName Name of the event to get triggered.
|
158
95
|
*/
|
159
|
-
_classPrivateMethodInitSpec(this,
|
96
|
+
_classPrivateMethodInitSpec(this, _CopyPaste_brand);
|
160
97
|
/**
|
161
98
|
* The maximum number of columns than can be copied to the clipboard.
|
162
99
|
*
|
@@ -173,9 +110,9 @@ class CopyPaste extends _base.BasePlugin {
|
|
173
110
|
_defineProperty(this, "rowsLimit", Infinity);
|
174
111
|
/**
|
175
112
|
* When pasting:
|
176
|
-
* - `'overwrite'
|
177
|
-
* - `'shift_down'
|
178
|
-
* - `'shift_right'
|
113
|
+
* - `'overwrite'` - overwrite the currently-selected cells
|
114
|
+
* - `'shift_down'` - move currently-selected cells down
|
115
|
+
* - `'shift_right'` - move currently-selected cells to the right
|
179
116
|
*
|
180
117
|
* @type {string}
|
181
118
|
* @default 'overwrite'
|
@@ -194,10 +131,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
194
131
|
* @type {boolean}
|
195
132
|
* @default false
|
196
133
|
*/
|
197
|
-
_classPrivateFieldInitSpec(this, _enableCopyColumnHeaders,
|
198
|
-
writable: true,
|
199
|
-
value: false
|
200
|
-
});
|
134
|
+
_classPrivateFieldInitSpec(this, _enableCopyColumnHeaders, false);
|
201
135
|
/**
|
202
136
|
* Shows the "Copy with group headers" item in the context menu and extends the context menu with the
|
203
137
|
* `'copy_with_column_group headers'` option that can be used for creating custom menus arrangements.
|
@@ -205,10 +139,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
205
139
|
* @type {boolean}
|
206
140
|
* @default false
|
207
141
|
*/
|
208
|
-
_classPrivateFieldInitSpec(this, _enableCopyColumnGroupHeaders,
|
209
|
-
writable: true,
|
210
|
-
value: false
|
211
|
-
});
|
142
|
+
_classPrivateFieldInitSpec(this, _enableCopyColumnGroupHeaders, false);
|
212
143
|
/**
|
213
144
|
* Shows the "Copy headers only" item in the context menu and extends the context menu with the
|
214
145
|
* `'copy_column_headers_only'` option that can be used for creating custom menus arrangements.
|
@@ -216,10 +147,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
216
147
|
* @type {boolean}
|
217
148
|
* @default false
|
218
149
|
*/
|
219
|
-
_classPrivateFieldInitSpec(this, _enableCopyColumnHeadersOnly,
|
220
|
-
writable: true,
|
221
|
-
value: false
|
222
|
-
});
|
150
|
+
_classPrivateFieldInitSpec(this, _enableCopyColumnHeadersOnly, false);
|
223
151
|
/**
|
224
152
|
* Defines the data range to copy. Possible values:
|
225
153
|
* * `'cells-only'` Copy selected cells only;
|
@@ -229,53 +157,38 @@ class CopyPaste extends _base.BasePlugin {
|
|
229
157
|
*
|
230
158
|
* @type {'cells-only' | 'column-headers-only' | 'with-column-group-headers' | 'with-column-headers'}
|
231
159
|
*/
|
232
|
-
_classPrivateFieldInitSpec(this, _copyMode,
|
233
|
-
writable: true,
|
234
|
-
value: 'cells-only'
|
235
|
-
});
|
160
|
+
_classPrivateFieldInitSpec(this, _copyMode, 'cells-only');
|
236
161
|
/**
|
237
162
|
* Flag that is used to prevent copying when the native shortcut was not pressed.
|
238
163
|
*
|
239
164
|
* @type {boolean}
|
240
165
|
*/
|
241
|
-
_classPrivateFieldInitSpec(this, _isTriggeredByCopy,
|
242
|
-
writable: true,
|
243
|
-
value: false
|
244
|
-
});
|
166
|
+
_classPrivateFieldInitSpec(this, _isTriggeredByCopy, false);
|
245
167
|
/**
|
246
168
|
* Flag that is used to prevent cutting when the native shortcut was not pressed.
|
247
169
|
*
|
248
170
|
* @type {boolean}
|
249
171
|
*/
|
250
|
-
_classPrivateFieldInitSpec(this, _isTriggeredByCut,
|
251
|
-
writable: true,
|
252
|
-
value: false
|
253
|
-
});
|
172
|
+
_classPrivateFieldInitSpec(this, _isTriggeredByCut, false);
|
254
173
|
/**
|
255
174
|
* Class that helps generate copyable ranges based on the current selection for different copy mode
|
256
175
|
* types.
|
257
176
|
*
|
258
177
|
* @type {CopyableRangesFactory}
|
259
178
|
*/
|
260
|
-
_classPrivateFieldInitSpec(this, _copyableRangesFactory, {
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
countColumnHeaders: () => this.hot.view.getColumnHeadersCount()
|
268
|
-
})
|
269
|
-
});
|
179
|
+
_classPrivateFieldInitSpec(this, _copyableRangesFactory, new _copyableRanges.CopyableRangesFactory({
|
180
|
+
countRows: () => this.hot.countRows(),
|
181
|
+
countColumns: () => this.hot.countCols(),
|
182
|
+
rowsLimit: () => this.rowsLimit,
|
183
|
+
columnsLimit: () => this.columnsLimit,
|
184
|
+
countColumnHeaders: () => this.hot.view.getColumnHeadersCount()
|
185
|
+
}));
|
270
186
|
/**
|
271
187
|
* Flag that indicates if the viewport scroll should be prevented after pasting the data.
|
272
188
|
*
|
273
189
|
* @type {boolean}
|
274
190
|
*/
|
275
|
-
_classPrivateFieldInitSpec(this, _preventViewportScrollOnPaste,
|
276
|
-
writable: true,
|
277
|
-
value: false
|
278
|
-
});
|
191
|
+
_classPrivateFieldInitSpec(this, _preventViewportScrollOnPaste, false);
|
279
192
|
/**
|
280
193
|
* Ranges of the cells coordinates, which should be used to copy/cut/paste actions.
|
281
194
|
*
|
@@ -321,19 +234,19 @@ class CopyPaste extends _base.BasePlugin {
|
|
321
234
|
this.pasteMode = (_settings$pasteMode = settings.pasteMode) !== null && _settings$pasteMode !== void 0 ? _settings$pasteMode : this.pasteMode;
|
322
235
|
this.rowsLimit = isNaN(settings.rowsLimit) ? this.rowsLimit : settings.rowsLimit;
|
323
236
|
this.columnsLimit = isNaN(settings.columnsLimit) ? this.columnsLimit : settings.columnsLimit;
|
324
|
-
_classPrivateFieldSet(
|
325
|
-
_classPrivateFieldSet(
|
326
|
-
_classPrivateFieldSet(
|
237
|
+
_classPrivateFieldSet(_enableCopyColumnHeaders, this, !!settings.copyColumnHeaders);
|
238
|
+
_classPrivateFieldSet(_enableCopyColumnGroupHeaders, this, !!settings.copyColumnGroupHeaders);
|
239
|
+
_classPrivateFieldSet(_enableCopyColumnHeadersOnly, this, !!settings.copyColumnHeadersOnly);
|
327
240
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
328
241
|
}
|
329
|
-
this.addHook('afterContextMenuDefaultOptions', options =>
|
242
|
+
this.addHook('afterContextMenuDefaultOptions', options => _assertClassBrand(_CopyPaste_brand, this, _onAfterContextMenuDefaultOptions).call(this, options));
|
330
243
|
this.addHook('afterSelection', function () {
|
331
244
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
332
245
|
args[_key] = arguments[_key];
|
333
246
|
}
|
334
|
-
return
|
247
|
+
return _assertClassBrand(_CopyPaste_brand, _this, _onAfterSelection).call(_this, ...args);
|
335
248
|
});
|
336
|
-
this.addHook('afterSelectionEnd', () =>
|
249
|
+
this.addHook('afterSelectionEnd', () => _assertClassBrand(_CopyPaste_brand, this, _onAfterSelectionEnd).call(this));
|
337
250
|
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
338
251
|
return _this.onCopy(...arguments);
|
339
252
|
});
|
@@ -350,15 +263,15 @@ class CopyPaste extends _base.BasePlugin {
|
|
350
263
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
351
264
|
args[_key2] = arguments[_key2];
|
352
265
|
}
|
353
|
-
return
|
266
|
+
return _assertClassBrand(_CopyPaste_brand, _this, _onSafariMouseEnter).call(_this, ...args);
|
354
267
|
});
|
355
268
|
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
356
269
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
357
270
|
args[_key3] = arguments[_key3];
|
358
271
|
}
|
359
|
-
return
|
272
|
+
return _assertClassBrand(_CopyPaste_brand, _this, _onSafariMouseLeave).call(_this, ...args);
|
360
273
|
});
|
361
|
-
this.addHook('afterSelection', () =>
|
274
|
+
this.addHook('afterSelection', () => _assertClassBrand(_CopyPaste_brand, this, _onSafariAfterSelection).call(this));
|
362
275
|
}
|
363
276
|
super.enablePlugin();
|
364
277
|
}
|
@@ -400,9 +313,9 @@ class CopyPaste extends _base.BasePlugin {
|
|
400
313
|
*/
|
401
314
|
copy() {
|
402
315
|
let copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
403
|
-
_classPrivateFieldSet(
|
404
|
-
_classPrivateFieldSet(
|
405
|
-
|
316
|
+
_classPrivateFieldSet(_copyMode, this, copyMode);
|
317
|
+
_classPrivateFieldSet(_isTriggeredByCopy, this, true);
|
318
|
+
_assertClassBrand(_CopyPaste_brand, this, _ensureClipboardEventsGetTriggered).call(this, 'copy');
|
406
319
|
}
|
407
320
|
|
408
321
|
/**
|
@@ -434,8 +347,8 @@ class CopyPaste extends _base.BasePlugin {
|
|
434
347
|
* Cuts the contents of the selected cells to the system clipboard.
|
435
348
|
*/
|
436
349
|
cut() {
|
437
|
-
_classPrivateFieldSet(
|
438
|
-
|
350
|
+
_classPrivateFieldSet(_isTriggeredByCut, this, true);
|
351
|
+
_assertClassBrand(_CopyPaste_brand, this, _ensureClipboardEventsGetTriggered).call(this, 'cut');
|
439
352
|
}
|
440
353
|
|
441
354
|
/**
|
@@ -513,17 +426,17 @@ class CopyPaste extends _base.BasePlugin {
|
|
513
426
|
this.copyableRanges = [];
|
514
427
|
return;
|
515
428
|
}
|
516
|
-
_classPrivateFieldGet(
|
429
|
+
_classPrivateFieldGet(_copyableRangesFactory, this).setSelectedRange(selectionRange);
|
517
430
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
518
|
-
if (_classPrivateFieldGet(
|
519
|
-
groupedRanges.set('headers', _classPrivateFieldGet(
|
431
|
+
if (_classPrivateFieldGet(_copyMode, this) === 'column-headers-only') {
|
432
|
+
groupedRanges.set('headers', _classPrivateFieldGet(_copyableRangesFactory, this).getMostBottomColumnHeadersRange());
|
520
433
|
} else {
|
521
|
-
if (_classPrivateFieldGet(
|
522
|
-
groupedRanges.set('headers', _classPrivateFieldGet(
|
523
|
-
} else if (_classPrivateFieldGet(
|
524
|
-
groupedRanges.set('headers', _classPrivateFieldGet(
|
434
|
+
if (_classPrivateFieldGet(_copyMode, this) === 'with-column-headers') {
|
435
|
+
groupedRanges.set('headers', _classPrivateFieldGet(_copyableRangesFactory, this).getMostBottomColumnHeadersRange());
|
436
|
+
} else if (_classPrivateFieldGet(_copyMode, this) === 'with-column-group-headers') {
|
437
|
+
groupedRanges.set('headers', _classPrivateFieldGet(_copyableRangesFactory, this).getAllColumnHeadersRange());
|
525
438
|
}
|
526
|
-
groupedRanges.set('cells', _classPrivateFieldGet(
|
439
|
+
groupedRanges.set('cells', _classPrivateFieldGet(_copyableRangesFactory, this).getCellsRange());
|
527
440
|
}
|
528
441
|
this.copyableRanges = Array.from(groupedRanges.values()).filter(range => range !== null).map(_ref => {
|
529
442
|
let {
|
@@ -624,10 +537,15 @@ class CopyPaste extends _base.BasePlugin {
|
|
624
537
|
}
|
625
538
|
newRows.push(newRow);
|
626
539
|
}
|
627
|
-
_classPrivateFieldSet(
|
540
|
+
_classPrivateFieldSet(_preventViewportScrollOnPaste, this, true);
|
628
541
|
this.hot.populateFromArray(startRow, startColumn, newRows, undefined, undefined, 'CopyPaste.paste', this.pasteMode);
|
629
542
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
630
543
|
}
|
544
|
+
|
545
|
+
/**
|
546
|
+
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
547
|
+
*/
|
548
|
+
|
631
549
|
/**
|
632
550
|
* `copy` event callback on textarea element.
|
633
551
|
*
|
@@ -635,13 +553,13 @@ class CopyPaste extends _base.BasePlugin {
|
|
635
553
|
* @private
|
636
554
|
*/
|
637
555
|
onCopy(event) {
|
638
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(
|
556
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened()) {
|
639
557
|
return;
|
640
558
|
}
|
641
559
|
this.setCopyableText();
|
642
|
-
_classPrivateFieldSet(
|
560
|
+
_classPrivateFieldSet(_isTriggeredByCopy, this, false);
|
643
561
|
const data = this.getRangedData(this.copyableRanges);
|
644
|
-
const copiedHeadersCount =
|
562
|
+
const copiedHeadersCount = _assertClassBrand(_CopyPaste_brand, this, _countCopiedHeaders).call(this, this.copyableRanges);
|
645
563
|
const allowCopying = !!this.hot.runHooks('beforeCopy', data, this.copyableRanges, copiedHeadersCount);
|
646
564
|
if (allowCopying) {
|
647
565
|
const textPlain = (0, _SheetClip.stringify)(data);
|
@@ -654,7 +572,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
654
572
|
}
|
655
573
|
this.hot.runHooks('afterCopy', data, this.copyableRanges, copiedHeadersCount);
|
656
574
|
}
|
657
|
-
_classPrivateFieldSet(
|
575
|
+
_classPrivateFieldSet(_copyMode, this, 'cells-only');
|
658
576
|
event.preventDefault();
|
659
577
|
}
|
660
578
|
|
@@ -665,11 +583,11 @@ class CopyPaste extends _base.BasePlugin {
|
|
665
583
|
* @private
|
666
584
|
*/
|
667
585
|
onCut(event) {
|
668
|
-
if (!this.hot.isListening() && !_classPrivateFieldGet(
|
586
|
+
if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened()) {
|
669
587
|
return;
|
670
588
|
}
|
671
589
|
this.setCopyableText();
|
672
|
-
_classPrivateFieldSet(
|
590
|
+
_classPrivateFieldSet(_isTriggeredByCut, this, false);
|
673
591
|
const rangedData = this.getRangedData(this.copyableRanges);
|
674
592
|
const allowCuttingOut = !!this.hot.runHooks('beforeCut', rangedData, this.copyableRanges);
|
675
593
|
if (allowCuttingOut) {
|
@@ -729,6 +647,13 @@ class CopyPaste extends _base.BasePlugin {
|
|
729
647
|
this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
|
730
648
|
this.hot.runHooks('afterPaste', pastedData, this.copyableRanges);
|
731
649
|
}
|
650
|
+
|
651
|
+
/**
|
652
|
+
* Add copy and cut options to the Context Menu.
|
653
|
+
*
|
654
|
+
* @param {object} options Contains default added options of the Context Menu.
|
655
|
+
*/
|
656
|
+
|
732
657
|
/**
|
733
658
|
* Destroys the `CopyPaste` plugin instance.
|
734
659
|
*/
|
@@ -737,7 +662,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
737
662
|
}
|
738
663
|
}
|
739
664
|
exports.CopyPaste = CopyPaste;
|
740
|
-
function
|
665
|
+
function _ensureClipboardEventsGetTriggered(eventName) {
|
741
666
|
// Without this workaround Safari (tested on Safari@16.5.2) does not trigger the 'copy' event.
|
742
667
|
if ((0, _browser.isSafari)()) {
|
743
668
|
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
@@ -757,7 +682,15 @@ function _ensureClipboardEventsGetTriggered2(eventName) {
|
|
757
682
|
this.hot.rootDocument.execCommand(eventName);
|
758
683
|
}
|
759
684
|
}
|
760
|
-
|
685
|
+
/**
|
686
|
+
* Counts how many column headers will be copied based on the passed range.
|
687
|
+
*
|
688
|
+
* @private
|
689
|
+
* @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
|
690
|
+
* @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
|
691
|
+
* information with the number of copied headers.
|
692
|
+
*/
|
693
|
+
function _countCopiedHeaders(ranges) {
|
761
694
|
const {
|
762
695
|
rows
|
763
696
|
} = (0, _copyableRanges.normalizeRanges)(ranges);
|
@@ -772,7 +705,7 @@ function _countCopiedHeaders2(ranges) {
|
|
772
705
|
columnHeadersCount
|
773
706
|
};
|
774
707
|
}
|
775
|
-
function
|
708
|
+
function _addContentEditableToHighlightedCell() {
|
776
709
|
if (this.hot.isListening()) {
|
777
710
|
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
778
711
|
if (lastSelectedRange) {
|
@@ -787,7 +720,10 @@ function _addContentEditableToHighlightedCell2() {
|
|
787
720
|
}
|
788
721
|
}
|
789
722
|
}
|
790
|
-
|
723
|
+
/**
|
724
|
+
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
725
|
+
*/
|
726
|
+
function _removeContentEditableFromHighlightedCell() {
|
791
727
|
// If the instance is not listening, the workaround is not needed.
|
792
728
|
if (this.hot.isListening()) {
|
793
729
|
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
@@ -803,28 +739,40 @@ function _removeContentEditableFromHighlightedCell2() {
|
|
803
739
|
}
|
804
740
|
}
|
805
741
|
}
|
806
|
-
function
|
742
|
+
function _onAfterContextMenuDefaultOptions(options) {
|
807
743
|
options.items.push({
|
808
744
|
name: '---------'
|
809
745
|
}, (0, _copy.default)(this));
|
810
|
-
if (_classPrivateFieldGet(
|
746
|
+
if (_classPrivateFieldGet(_enableCopyColumnHeaders, this)) {
|
811
747
|
options.items.push((0, _copyWithColumnHeaders.default)(this));
|
812
748
|
}
|
813
|
-
if (_classPrivateFieldGet(
|
749
|
+
if (_classPrivateFieldGet(_enableCopyColumnGroupHeaders, this)) {
|
814
750
|
options.items.push((0, _copyWithColumnGroupHeaders.default)(this));
|
815
751
|
}
|
816
|
-
if (_classPrivateFieldGet(
|
752
|
+
if (_classPrivateFieldGet(_enableCopyColumnHeadersOnly, this)) {
|
817
753
|
options.items.push((0, _copyColumnHeadersOnly.default)(this));
|
818
754
|
}
|
819
755
|
options.items.push((0, _cut.default)(this));
|
820
756
|
}
|
821
|
-
|
822
|
-
|
757
|
+
/**
|
758
|
+
* Disables the viewport scroll after pasting the data.
|
759
|
+
*
|
760
|
+
* @param {number} fromRow Selection start row visual index.
|
761
|
+
* @param {number} fromColumn Selection start column visual index.
|
762
|
+
* @param {number} toRow Selection end row visual index.
|
763
|
+
* @param {number} toColumn Selection end column visual index.
|
764
|
+
* @param {object} preventScrolling Object with `value` property. If `true`, the viewport scroll will be prevented.
|
765
|
+
*/
|
766
|
+
function _onAfterSelection(fromRow, fromColumn, toRow, toColumn, preventScrolling) {
|
767
|
+
if (_classPrivateFieldGet(_preventViewportScrollOnPaste, this)) {
|
823
768
|
preventScrolling.value = true;
|
824
769
|
}
|
825
|
-
_classPrivateFieldSet(
|
770
|
+
_classPrivateFieldSet(_preventViewportScrollOnPaste, this, false);
|
826
771
|
}
|
827
|
-
|
772
|
+
/**
|
773
|
+
* Force focus on focusableElement after end of the selection.
|
774
|
+
*/
|
775
|
+
function _onAfterSelectionEnd() {
|
828
776
|
if (this.isEditorOpened()) {
|
829
777
|
return;
|
830
778
|
}
|
@@ -833,12 +781,23 @@ function _onAfterSelectionEnd2() {
|
|
833
781
|
}
|
834
782
|
this.setCopyableText();
|
835
783
|
}
|
836
|
-
|
837
|
-
|
784
|
+
/**
|
785
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
786
|
+
* browser's menu.
|
787
|
+
*/
|
788
|
+
function _onSafariMouseEnter() {
|
789
|
+
_assertClassBrand(_CopyPaste_brand, this, _removeContentEditableFromHighlightedCell).call(this);
|
838
790
|
}
|
839
|
-
|
840
|
-
|
791
|
+
/**
|
792
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
793
|
+
* browser's menu.
|
794
|
+
*/
|
795
|
+
function _onSafariMouseLeave() {
|
796
|
+
_assertClassBrand(_CopyPaste_brand, this, _addContentEditableToHighlightedCell).call(this);
|
841
797
|
}
|
842
|
-
|
843
|
-
|
798
|
+
/**
|
799
|
+
* `afterSelection` hook callback triggered only on Safari.
|
800
|
+
*/
|
801
|
+
function _onSafariAfterSelection() {
|
802
|
+
_assertClassBrand(_CopyPaste_brand, this, _removeContentEditableFromHighlightedCell).call(this);
|
844
803
|
}
|