handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -28
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +69 -36
- package/3rdparty/walkontable/src/cell/range.mjs +68 -35
- package/3rdparty/walkontable/src/event.js +3 -5
- package/3rdparty/walkontable/src/event.mjs +3 -5
- package/3rdparty/walkontable/src/overlay/_base.js +6 -7
- package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/top.js +6 -7
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
- package/3rdparty/walkontable/src/overlays.js +55 -64
- package/3rdparty/walkontable/src/overlays.mjs +55 -64
- package/3rdparty/walkontable/src/renderer/table.js +0 -2
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
- package/3rdparty/walkontable/src/scroll.js +20 -23
- package/3rdparty/walkontable/src/scroll.mjs +20 -23
- package/3rdparty/walkontable/src/selection/border/border.js +1 -0
- package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
- package/3rdparty/walkontable/src/selection/manager.js +40 -45
- package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
- package/3rdparty/walkontable/src/selection/scanner.js +5 -4
- package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
- package/3rdparty/walkontable/src/settings.js +13 -15
- package/3rdparty/walkontable/src/settings.mjs +13 -15
- package/3rdparty/walkontable/src/table.js +23 -26
- package/3rdparty/walkontable/src/table.mjs +23 -26
- package/CHANGELOG.md +56 -0
- package/base.js +2 -4
- package/base.mjs +2 -2
- package/common.d.ts +1 -1
- package/core.d.ts +7 -9
- package/core.js +241 -439
- package/core.mjs +245 -443
- package/dataMap/dataMap.js +1 -0
- package/dataMap/dataMap.mjs +1 -0
- package/dataMap/dataSource.js +5 -5
- package/dataMap/dataSource.mjs +5 -5
- package/dataMap/metaManager/lazyFactoryMap.js +1 -0
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
- package/dataMap/metaManager/metaSchema.js +33 -24
- package/dataMap/metaManager/metaSchema.mjs +33 -24
- package/dist/handsontable.css +25 -3
- package/dist/handsontable.full.css +25 -3
- package/dist/handsontable.full.js +14539 -11358
- package/dist/handsontable.full.min.css +5 -5
- package/dist/handsontable.full.min.js +137 -125
- package/dist/handsontable.js +31414 -28455
- package/dist/handsontable.min.css +5 -5
- package/dist/handsontable.min.js +11 -3
- package/dist/languages/all.js +133 -0
- package/dist/languages/ar-AR.js +7 -0
- package/dist/languages/cs-CZ.js +7 -0
- package/dist/languages/de-CH.js +7 -0
- package/dist/languages/de-DE.js +7 -0
- package/dist/languages/en-US.js +7 -0
- package/dist/languages/es-MX.js +7 -0
- package/dist/languages/fr-FR.js +7 -0
- package/dist/languages/it-IT.js +7 -0
- package/dist/languages/ja-JP.js +7 -0
- package/dist/languages/ko-KR.js +7 -0
- package/dist/languages/lv-LV.js +7 -0
- package/dist/languages/nb-NO.js +7 -0
- package/dist/languages/nl-NL.js +7 -0
- package/dist/languages/pl-PL.js +7 -0
- package/dist/languages/pt-BR.js +7 -0
- package/dist/languages/ru-RU.js +7 -0
- package/dist/languages/sr-SP.js +7 -0
- package/dist/languages/zh-CN.js +7 -0
- package/dist/languages/zh-TW.js +7 -0
- package/editorManager.js +19 -89
- package/editorManager.mjs +24 -93
- package/editors/baseEditor/baseEditor.js +1 -0
- package/editors/baseEditor/baseEditor.mjs +1 -0
- package/editors/textEditor/textEditor.js +14 -20
- package/editors/textEditor/textEditor.mjs +16 -22
- package/helpers/dom/element.js +0 -11
- package/helpers/dom/element.mjs +0 -10
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/helpers/object.js +2 -0
- package/helpers/object.mjs +2 -0
- package/i18n/languages/ar-AR.js +7 -1
- package/i18n/languages/cs-CZ.js +7 -1
- package/i18n/languages/de-CH.js +7 -1
- package/i18n/languages/de-DE.js +7 -1
- package/i18n/languages/en-US.js +7 -1
- package/i18n/languages/es-MX.js +7 -1
- package/i18n/languages/fr-FR.js +7 -1
- package/i18n/languages/it-IT.js +7 -1
- package/i18n/languages/ja-JP.js +7 -1
- package/i18n/languages/ko-KR.js +7 -1
- package/i18n/languages/lv-LV.js +7 -1
- package/i18n/languages/nb-NO.js +7 -1
- package/i18n/languages/nl-NL.js +7 -1
- package/i18n/languages/pl-PL.js +7 -1
- package/i18n/languages/pt-BR.js +7 -1
- package/i18n/languages/ru-RU.js +7 -1
- package/i18n/languages/sr-SP.js +7 -1
- package/i18n/languages/zh-CN.js +7 -1
- package/i18n/languages/zh-TW.js +7 -1
- package/languages/all.js +133 -0
- package/languages/ar-AR.js +7 -0
- package/languages/cs-CZ.js +7 -0
- package/languages/de-CH.js +7 -0
- package/languages/de-DE.js +7 -0
- package/languages/en-US.js +7 -0
- package/languages/es-MX.js +7 -0
- package/languages/fr-FR.js +7 -0
- package/languages/index.js +133 -0
- package/languages/it-IT.js +7 -0
- package/languages/ja-JP.js +7 -0
- package/languages/ko-KR.js +7 -0
- package/languages/lv-LV.js +7 -0
- package/languages/nb-NO.js +7 -0
- package/languages/nl-NL.js +7 -0
- package/languages/pl-PL.js +7 -0
- package/languages/pt-BR.js +7 -0
- package/languages/ru-RU.js +7 -0
- package/languages/sr-SP.js +7 -0
- package/languages/zh-CN.js +7 -0
- package/languages/zh-TW.js +7 -0
- package/package.json +3 -2
- package/pluginHooks.d.ts +8 -2
- package/pluginHooks.js +116 -18
- package/pluginHooks.mjs +115 -15
- package/plugins/autoColumnSize/autoColumnSize.js +1 -0
- package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
- package/plugins/autoRowSize/autoRowSize.js +3 -2
- package/plugins/autoRowSize/autoRowSize.mjs +3 -2
- package/plugins/autofill/autofill.js +2 -2
- package/plugins/autofill/autofill.mjs +3 -3
- package/plugins/autofill/utils.js +1 -39
- package/plugins/autofill/utils.mjs +0 -37
- package/plugins/base/base.js +1 -0
- package/plugins/base/base.mjs +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
- package/plugins/columnSorting/columnSorting.js +51 -8
- package/plugins/columnSorting/columnSorting.mjs +50 -9
- package/plugins/columnSorting/columnStatesManager.js +1 -0
- package/plugins/columnSorting/columnStatesManager.mjs +1 -0
- package/plugins/columnSorting/index.js +4 -2
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/columnSorting/rootComparator.js +1 -0
- package/plugins/columnSorting/rootComparator.mjs +1 -0
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +289 -224
- package/plugins/comments/comments.mjs +297 -234
- package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
- package/plugins/comments/contextMenuItem/removeComment.js +48 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +81 -29
- package/plugins/contextMenu/contextMenu.mjs +82 -30
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +25 -16
- package/plugins/contextMenu/utils.mjs +24 -15
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +100 -14
- package/plugins/copyPaste/copyPaste.mjs +100 -14
- package/plugins/copyPaste/copyableRanges.js +25 -31
- package/plugins/copyPaste/copyableRanges.mjs +18 -24
- package/plugins/copyPaste/focusableElement.js +219 -0
- package/plugins/copyPaste/focusableElement.mjs +213 -0
- package/plugins/customBorders/customBorders.d.ts +2 -0
- package/plugins/customBorders/customBorders.js +19 -50
- package/plugins/customBorders/customBorders.mjs +19 -50
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +94 -30
- package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
- package/plugins/exportFile/dataProvider.js +1 -0
- package/plugins/exportFile/dataProvider.mjs +1 -0
- package/plugins/filters/component/value.js +1 -0
- package/plugins/filters/component/value.mjs +1 -0
- package/plugins/filters/condition/beginsWith.js +1 -0
- package/plugins/filters/condition/beginsWith.mjs +1 -0
- package/plugins/filters/condition/between.js +1 -0
- package/plugins/filters/condition/between.mjs +1 -0
- package/plugins/filters/condition/byValue.js +1 -0
- package/plugins/filters/condition/byValue.mjs +1 -0
- package/plugins/filters/condition/contains.js +1 -0
- package/plugins/filters/condition/contains.mjs +1 -0
- package/plugins/filters/condition/date/after.js +1 -0
- package/plugins/filters/condition/date/after.mjs +1 -0
- package/plugins/filters/condition/date/before.js +1 -0
- package/plugins/filters/condition/date/before.mjs +1 -0
- package/plugins/filters/condition/endsWith.js +1 -0
- package/plugins/filters/condition/endsWith.mjs +1 -0
- package/plugins/filters/condition/equal.js +1 -0
- package/plugins/filters/condition/equal.mjs +1 -0
- package/plugins/filters/condition/greaterThan.js +1 -0
- package/plugins/filters/condition/greaterThan.mjs +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
- package/plugins/filters/condition/lessThan.js +1 -0
- package/plugins/filters/condition/lessThan.mjs +1 -0
- package/plugins/filters/condition/lessThanOrEqual.js +1 -0
- package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
- package/plugins/filters/conditionCollection.js +1 -0
- package/plugins/filters/conditionCollection.mjs +1 -0
- package/plugins/filters/filters.js +68 -42
- package/plugins/filters/filters.mjs +67 -41
- package/plugins/filters/ui/multipleSelect.js +1 -0
- package/plugins/filters/ui/multipleSelect.mjs +1 -0
- package/plugins/formulas/formulas.js +191 -168
- package/plugins/formulas/formulas.mjs +191 -168
- package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
- package/plugins/formulas/indexSyncer/index.js +225 -0
- package/plugins/formulas/indexSyncer/index.mjs +219 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
- package/plugins/manualColumnResize/manualColumnResize.js +36 -5
- package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
- package/plugins/manualRowMove/manualRowMove.js +31 -12
- package/plugins/manualRowMove/manualRowMove.mjs +32 -13
- package/plugins/manualRowResize/manualRowResize.js +40 -9
- package/plugins/manualRowResize/manualRowResize.mjs +40 -9
- package/plugins/mergeCells/calculations/autofill.js +1 -0
- package/plugins/mergeCells/calculations/autofill.mjs +1 -0
- package/plugins/mergeCells/cellsCollection.js +1 -0
- package/plugins/mergeCells/cellsCollection.mjs +1 -0
- package/plugins/mergeCells/mergeCells.js +6 -2
- package/plugins/mergeCells/mergeCells.mjs +6 -2
- package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
- package/plugins/multiColumnSorting/rootComparator.js +1 -0
- package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
- package/plugins/nestedHeaders/nestedHeaders.js +129 -6
- package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
- package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
- package/plugins/nestedHeaders/stateManager/index.js +40 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
- package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
- package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
- package/plugins/nestedRows/data/dataManager.js +1 -0
- package/plugins/nestedRows/data/dataManager.mjs +1 -0
- package/plugins/nestedRows/nestedRows.js +53 -7
- package/plugins/nestedRows/nestedRows.mjs +53 -7
- package/plugins/nestedRows/ui/collapsing.js +1 -0
- package/plugins/nestedRows/ui/collapsing.mjs +1 -0
- package/plugins/nestedRows/utils/rowMoveController.js +1 -0
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
- package/plugins/persistentState/storage.js +1 -0
- package/plugins/persistentState/storage.mjs +1 -0
- package/plugins/registry.js +4 -1
- package/plugins/registry.mjs +1 -0
- package/plugins/undoRedo/undoRedo.js +1 -1
- package/plugins/undoRedo/undoRedo.mjs +1 -1
- package/renderers/baseRenderer/baseRenderer.js +0 -3
- package/renderers/baseRenderer/baseRenderer.mjs +0 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +120 -98
- package/selection/highlight/highlight.mjs +118 -96
- package/selection/highlight/visualSelection.js +30 -17
- package/selection/highlight/visualSelection.mjs +30 -17
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +246 -153
- package/selection/selection.mjs +247 -154
- package/selection/transformation.js +233 -96
- package/selection/transformation.mjs +230 -93
- package/selection/utils.js +12 -35
- package/selection/utils.mjs +13 -35
- package/settings.d.ts +2 -1
- package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +29 -0
- package/shortcutContexts/commands/editor/open.mjs +24 -0
- package/shortcutContexts/commands/emptySelectedCells.js +12 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/index.js +53 -0
- package/shortcutContexts/commands/index.mjs +49 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +19 -0
- package/shortcutContexts/constants.mjs +12 -0
- package/shortcutContexts/editor.js +29 -0
- package/shortcutContexts/editor.mjs +25 -0
- package/shortcutContexts/grid.js +252 -0
- package/shortcutContexts/grid.mjs +248 -0
- package/shortcutContexts/index.js +29 -0
- package/shortcutContexts/index.mjs +15 -0
- package/shortcuts/context.js +1 -0
- package/shortcuts/context.mjs +1 -0
- package/shortcuts/manager.js +2 -0
- package/shortcuts/manager.mjs +2 -0
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +21 -5
- package/shortcuts/utils.mjs +20 -4
- package/tableView.js +112 -82
- package/tableView.mjs +112 -82
- package/translations/changesObservable/observable.js +41 -46
- package/translations/changesObservable/observable.mjs +36 -41
- package/translations/changesObservable/observer.js +1 -1
- package/translations/indexMapper.d.ts +0 -2
- package/translations/indexMapper.js +38 -64
- package/translations/indexMapper.mjs +39 -64
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
- package/translations/maps/utils/indexesSequence.js +1 -0
- package/translations/maps/utils/indexesSequence.mjs +1 -0
- package/translations/maps/utils/physicallyIndexed.js +1 -0
- package/translations/maps/utils/physicallyIndexed.mjs +1 -0
- package/utils/dataStructures/priorityMap.js +1 -0
- package/utils/dataStructures/priorityMap.mjs +1 -0
- package/utils/dataStructures/tree.js +16 -18
- package/utils/dataStructures/tree.mjs +16 -18
- package/utils/dataStructures/uniqueMap.js +1 -0
- package/utils/dataStructures/uniqueMap.mjs +1 -0
- package/utils/dataStructures/uniqueSet.js +1 -0
- package/utils/dataStructures/uniqueSet.mjs +1 -0
- package/utils/ghostTable.js +1 -0
- package/utils/ghostTable.mjs +1 -0
- package/utils/parseTable.js +5 -1
- package/utils/parseTable.mjs +5 -1
- package/utils/staticRegister.js +1 -0
- package/utils/staticRegister.mjs +1 -0
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -275
- package/focusManager.mjs +0 -270
@@ -1,4 +1,5 @@
|
|
1
1
|
import { CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS } from "../../../i18n/constants.mjs";
|
2
|
+
import { clamp } from "../../../helpers/number.mjs";
|
2
3
|
/**
|
3
4
|
* @param {CopyPaste} copyPastePlugin The plugin instance.
|
4
5
|
* @returns {object}
|
@@ -8,7 +9,7 @@ export default function copyWithColumnGroupHeadersItem(copyPastePlugin) {
|
|
8
9
|
key: 'copy_with_column_group_headers',
|
9
10
|
name: function name() {
|
10
11
|
var selectedRange = this.getSelectedRangeLast();
|
11
|
-
var nounForm = selectedRange ?
|
12
|
+
var nounForm = selectedRange ? clamp(selectedRange.getWidth() - 1, 0, 1) : 0;
|
12
13
|
return this.getTranslatedPhrase(CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS, nounForm);
|
13
14
|
},
|
14
15
|
callback: function callback() {
|
@@ -18,6 +19,13 @@ export default function copyWithColumnGroupHeadersItem(copyPastePlugin) {
|
|
18
19
|
if (!this.hasColHeaders() || !this.getSettings().nestedHeaders) {
|
19
20
|
return true;
|
20
21
|
}
|
22
|
+
var range = this.getSelectedRangeLast();
|
23
|
+
if (!range) {
|
24
|
+
return true;
|
25
|
+
}
|
26
|
+
if (range.isSingleHeader()) {
|
27
|
+
return true;
|
28
|
+
}
|
21
29
|
var selected = this.getSelected();
|
22
30
|
|
23
31
|
// Disable for no selection or for non-contiguous selection.
|
@@ -3,6 +3,7 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.default = copyWithColumnHeadersItem;
|
5
5
|
var _constants = require("../../../i18n/constants");
|
6
|
+
var _number = require("../../../helpers/number");
|
6
7
|
/**
|
7
8
|
* @param {CopyPaste} copyPastePlugin The plugin instance.
|
8
9
|
* @returns {object}
|
@@ -12,7 +13,7 @@ function copyWithColumnHeadersItem(copyPastePlugin) {
|
|
12
13
|
key: 'copy_with_column_headers',
|
13
14
|
name: function name() {
|
14
15
|
var selectedRange = this.getSelectedRangeLast();
|
15
|
-
var nounForm = selectedRange ?
|
16
|
+
var nounForm = selectedRange ? (0, _number.clamp)(selectedRange.getWidth() - 1, 0, 1) : 0;
|
16
17
|
return this.getTranslatedPhrase(_constants.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS, nounForm);
|
17
18
|
},
|
18
19
|
callback: function callback() {
|
@@ -22,6 +23,13 @@ function copyWithColumnHeadersItem(copyPastePlugin) {
|
|
22
23
|
if (!this.hasColHeaders()) {
|
23
24
|
return true;
|
24
25
|
}
|
26
|
+
var range = this.getSelectedRangeLast();
|
27
|
+
if (!range) {
|
28
|
+
return true;
|
29
|
+
}
|
30
|
+
if (range.isSingleHeader()) {
|
31
|
+
return true;
|
32
|
+
}
|
25
33
|
var selected = this.getSelected();
|
26
34
|
|
27
35
|
// Disable for no selection or for non-contiguous selection.
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS } from "../../../i18n/constants.mjs";
|
2
|
+
import { clamp } from "../../../helpers/number.mjs";
|
2
3
|
/**
|
3
4
|
* @param {CopyPaste} copyPastePlugin The plugin instance.
|
4
5
|
* @returns {object}
|
@@ -8,7 +9,7 @@ export default function copyWithColumnHeadersItem(copyPastePlugin) {
|
|
8
9
|
key: 'copy_with_column_headers',
|
9
10
|
name: function name() {
|
10
11
|
var selectedRange = this.getSelectedRangeLast();
|
11
|
-
var nounForm = selectedRange ?
|
12
|
+
var nounForm = selectedRange ? clamp(selectedRange.getWidth() - 1, 0, 1) : 0;
|
12
13
|
return this.getTranslatedPhrase(CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS, nounForm);
|
13
14
|
},
|
14
15
|
callback: function callback() {
|
@@ -18,6 +19,13 @@ export default function copyWithColumnHeadersItem(copyPastePlugin) {
|
|
18
19
|
if (!this.hasColHeaders()) {
|
19
20
|
return true;
|
20
21
|
}
|
22
|
+
var range = this.getSelectedRangeLast();
|
23
|
+
if (!range) {
|
24
|
+
return true;
|
25
|
+
}
|
26
|
+
if (range.isSingleHeader()) {
|
27
|
+
return true;
|
28
|
+
}
|
21
29
|
var selected = this.getSelected();
|
22
30
|
|
23
31
|
// Disable for no selection or for non-contiguous selection.
|
@@ -32,6 +32,13 @@ function cutItem(copyPastePlugin) {
|
|
32
32
|
if (this.countRows() === 0 || this.countCols() === 0) {
|
33
33
|
return true;
|
34
34
|
}
|
35
|
+
var range = this.getSelectedRangeLast();
|
36
|
+
if (!range) {
|
37
|
+
return true;
|
38
|
+
}
|
39
|
+
if (range.isSingleHeader()) {
|
40
|
+
return true;
|
41
|
+
}
|
35
42
|
var selected = this.getSelected();
|
36
43
|
|
37
44
|
// Disable for no selection or for non-contiquous selection.
|
@@ -16,6 +16,13 @@ export default function cutItem(copyPastePlugin) {
|
|
16
16
|
if (this.countRows() === 0 || this.countCols() === 0) {
|
17
17
|
return true;
|
18
18
|
}
|
19
|
+
var range = this.getSelectedRangeLast();
|
20
|
+
if (!range) {
|
21
|
+
return true;
|
22
|
+
}
|
23
|
+
if (range.isSingleHeader()) {
|
24
|
+
return true;
|
25
|
+
}
|
19
26
|
var selected = this.getSelected();
|
20
27
|
|
21
28
|
// Disable for no selection or for non-contiquous selection.
|
@@ -12,6 +12,7 @@ require("core-js/modules/es.reflect.get.js");
|
|
12
12
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
13
13
|
require("core-js/modules/es.symbol.iterator.js");
|
14
14
|
require("core-js/modules/es.array.slice.js");
|
15
|
+
require("core-js/modules/es.regexp.to-string.js");
|
15
16
|
require("core-js/modules/es.function.name.js");
|
16
17
|
exports.__esModule = true;
|
17
18
|
exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.CopyPaste = void 0;
|
@@ -33,15 +34,16 @@ var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
|
33
34
|
var _SheetClip = require("../../3rdparty/SheetClip");
|
34
35
|
var _array = require("../../helpers/array");
|
35
36
|
var _string = require("../../helpers/string");
|
37
|
+
var _element = require("../../helpers/dom/element");
|
36
38
|
var _copy = _interopRequireDefault(require("./contextMenuItem/copy"));
|
37
39
|
var _copyColumnHeadersOnly = _interopRequireDefault(require("./contextMenuItem/copyColumnHeadersOnly"));
|
38
40
|
var _copyWithColumnGroupHeaders = _interopRequireDefault(require("./contextMenuItem/copyWithColumnGroupHeaders"));
|
39
41
|
var _copyWithColumnHeaders = _interopRequireDefault(require("./contextMenuItem/copyWithColumnHeaders"));
|
40
42
|
var _cut = _interopRequireDefault(require("./contextMenuItem/cut"));
|
41
43
|
var _pasteEvent = _interopRequireDefault(require("./pasteEvent"));
|
44
|
+
var _focusableElement = require("./focusableElement");
|
42
45
|
var _copyableRanges = require("./copyableRanges");
|
43
46
|
var _parseTable = require("../../utils/parseTable");
|
44
|
-
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
45
47
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
46
48
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
47
49
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
@@ -278,6 +280,13 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
278
280
|
* @type {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>}
|
279
281
|
*/
|
280
282
|
_defineProperty(_assertThisInitialized(_this), "copyableRanges", []);
|
283
|
+
/**
|
284
|
+
* Provides focusable element to support IME and copy/paste/cut actions.
|
285
|
+
*
|
286
|
+
* @private
|
287
|
+
* @type {FocusableWrapper}
|
288
|
+
*/
|
289
|
+
_defineProperty(_assertThisInitialized(_this), "focusableElement", void 0);
|
281
290
|
return _this;
|
282
291
|
}
|
283
292
|
_createClass(CopyPaste, [{
|
@@ -320,18 +329,22 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
320
329
|
this.addHook('afterContextMenuDefaultOptions', function (options) {
|
321
330
|
return _this2.onAfterContextMenuDefaultOptions(options);
|
322
331
|
});
|
332
|
+
this.addHook('afterOnCellMouseUp', function () {
|
333
|
+
return _this2.onAfterOnCellMouseUp();
|
334
|
+
});
|
323
335
|
this.addHook('afterSelectionEnd', function () {
|
324
336
|
return _this2.onAfterSelectionEnd();
|
325
337
|
});
|
326
|
-
this.
|
327
|
-
|
328
|
-
return _this2.onCopy.apply(_this2, arguments);
|
329
|
-
});
|
330
|
-
this.eventManager.addEventListener(this.hot.rootDocument, 'cut', function () {
|
331
|
-
return _this2.onCut.apply(_this2, arguments);
|
338
|
+
this.addHook('beforeKeyDown', function () {
|
339
|
+
return _this2.onBeforeKeyDown();
|
332
340
|
});
|
333
|
-
this.
|
334
|
-
|
341
|
+
this.focusableElement = (0, _focusableElement.createElement)(this.uiContainer);
|
342
|
+
this.focusableElement.addLocalHook('copy', function (event) {
|
343
|
+
return _this2.onCopy(event);
|
344
|
+
}).addLocalHook('cut', function (event) {
|
345
|
+
return _this2.onCut(event);
|
346
|
+
}).addLocalHook('paste', function (event) {
|
347
|
+
return _this2.onPaste(event);
|
335
348
|
});
|
336
349
|
_get(_getPrototypeOf(CopyPaste.prototype), "enablePlugin", this).call(this);
|
337
350
|
}
|
@@ -349,6 +362,7 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
349
362
|
value: function updatePlugin() {
|
350
363
|
this.disablePlugin();
|
351
364
|
this.enablePlugin();
|
365
|
+
this.getOrCreateFocusableElement();
|
352
366
|
_get(_getPrototypeOf(CopyPaste.prototype), "updatePlugin", this).call(this);
|
353
367
|
}
|
354
368
|
|
@@ -358,6 +372,9 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
358
372
|
}, {
|
359
373
|
key: "disablePlugin",
|
360
374
|
value: function disablePlugin() {
|
375
|
+
if (this.focusableElement) {
|
376
|
+
(0, _focusableElement.destroyElement)(this.focusableElement);
|
377
|
+
}
|
361
378
|
_get(_getPrototypeOf(CopyPaste.prototype), "disablePlugin", this).call(this);
|
362
379
|
}
|
363
380
|
|
@@ -381,6 +398,8 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
381
398
|
var copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
382
399
|
_classPrivateFieldSet(this, _copyMode, copyMode);
|
383
400
|
_classPrivateFieldSet(this, _isTriggeredByCopy, true);
|
401
|
+
this.getOrCreateFocusableElement();
|
402
|
+
this.focusableElement.focus();
|
384
403
|
this.hot.rootDocument.execCommand('copy');
|
385
404
|
}
|
386
405
|
|
@@ -424,6 +443,8 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
424
443
|
key: "cut",
|
425
444
|
value: function cut() {
|
426
445
|
_classPrivateFieldSet(this, _isTriggeredByCut, true);
|
446
|
+
this.getOrCreateFocusableElement();
|
447
|
+
this.focusableElement.focus();
|
427
448
|
this.hot.rootDocument.execCommand('cut');
|
428
449
|
}
|
429
450
|
|
@@ -493,6 +514,7 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
493
514
|
if (pastableHtml) {
|
494
515
|
pasteData.clipboardData.setData('text/html', pastableHtml);
|
495
516
|
}
|
517
|
+
this.getOrCreateFocusableElement();
|
496
518
|
this.onPaste(pasteData);
|
497
519
|
}
|
498
520
|
|
@@ -506,6 +528,10 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
506
528
|
if (!selectionRange) {
|
507
529
|
return;
|
508
530
|
}
|
531
|
+
if (selectionRange.isSingleHeader()) {
|
532
|
+
this.copyableRanges = [];
|
533
|
+
return;
|
534
|
+
}
|
509
535
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
510
536
|
var groupedRanges = new Map([['headers', null], ['cells', null]]);
|
511
537
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -543,6 +569,23 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
543
569
|
}
|
544
570
|
}
|
545
571
|
|
572
|
+
/**
|
573
|
+
* Force focus on editable element.
|
574
|
+
*
|
575
|
+
* @private
|
576
|
+
*/
|
577
|
+
}, {
|
578
|
+
key: "getOrCreateFocusableElement",
|
579
|
+
value: function getOrCreateFocusableElement() {
|
580
|
+
var _this$hot$getActiveEd;
|
581
|
+
var editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
582
|
+
if (editableElement) {
|
583
|
+
this.focusableElement.setFocusableElement(editableElement);
|
584
|
+
} else {
|
585
|
+
this.focusableElement.useSecondaryElement();
|
586
|
+
}
|
587
|
+
}
|
588
|
+
|
546
589
|
/**
|
547
590
|
* Verifies if editor exists and is open.
|
548
591
|
*
|
@@ -552,8 +595,8 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
552
595
|
}, {
|
553
596
|
key: "isEditorOpened",
|
554
597
|
value: function isEditorOpened() {
|
555
|
-
var _this$hot$
|
556
|
-
return (_this$hot$
|
598
|
+
var _this$hot$getActiveEd2;
|
599
|
+
return (_this$hot$getActiveEd2 = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd2 === void 0 ? void 0 : _this$hot$getActiveEd2.isOpened();
|
557
600
|
}
|
558
601
|
}, {
|
559
602
|
key: "populateValues",
|
@@ -692,7 +735,7 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
692
735
|
}, {
|
693
736
|
key: "onPaste",
|
694
737
|
value: function onPaste(event) {
|
695
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
738
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
696
739
|
return;
|
697
740
|
}
|
698
741
|
if (event && event.preventDefault) {
|
@@ -717,7 +760,7 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
717
760
|
if (typeof pastedData === 'string') {
|
718
761
|
pastedData = (0, _SheetClip.parse)(pastedData);
|
719
762
|
}
|
720
|
-
if (pastedData && pastedData.length === 0) {
|
763
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
721
764
|
return;
|
722
765
|
}
|
723
766
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -757,6 +800,23 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
757
800
|
options.items.push((0, _cut.default)(this));
|
758
801
|
}
|
759
802
|
|
803
|
+
/**
|
804
|
+
* Force focus on focusableElement.
|
805
|
+
*
|
806
|
+
* @private
|
807
|
+
*/
|
808
|
+
}, {
|
809
|
+
key: "onAfterOnCellMouseUp",
|
810
|
+
value: function onAfterOnCellMouseUp() {
|
811
|
+
// Changing focused element will remove current selection. It's unnecessary in case when we give possibility
|
812
|
+
// for fragment selection
|
813
|
+
if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
|
814
|
+
return;
|
815
|
+
}
|
816
|
+
this.getOrCreateFocusableElement();
|
817
|
+
this.focusableElement.focus();
|
818
|
+
}
|
819
|
+
|
760
820
|
/**
|
761
821
|
* Force focus on focusableElement after end of the selection.
|
762
822
|
*
|
@@ -768,10 +828,32 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
768
828
|
if (this.isEditorOpened()) {
|
769
829
|
return;
|
770
830
|
}
|
771
|
-
|
831
|
+
this.getOrCreateFocusableElement();
|
832
|
+
if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && (0, _element.getSelectionText)()) {
|
772
833
|
return;
|
773
834
|
}
|
774
835
|
this.setCopyableText();
|
836
|
+
this.focusableElement.focus();
|
837
|
+
}
|
838
|
+
|
839
|
+
/**
|
840
|
+
* `beforeKeyDown` listener to force focus of focusableElement.
|
841
|
+
*
|
842
|
+
* @private
|
843
|
+
*/
|
844
|
+
}, {
|
845
|
+
key: "onBeforeKeyDown",
|
846
|
+
value: function onBeforeKeyDown() {
|
847
|
+
if (!this.hot.isListening() || this.isEditorOpened()) {
|
848
|
+
return;
|
849
|
+
}
|
850
|
+
var activeElement = this.hot.rootDocument.activeElement;
|
851
|
+
var activeEditor = this.hot.getActiveEditor();
|
852
|
+
if (!activeEditor || activeElement !== this.focusableElement.getFocusableElement() && activeElement !== activeEditor.select) {
|
853
|
+
return;
|
854
|
+
}
|
855
|
+
this.getOrCreateFocusableElement();
|
856
|
+
this.focusableElement.focus();
|
775
857
|
}
|
776
858
|
|
777
859
|
/**
|
@@ -780,6 +862,10 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
780
862
|
}, {
|
781
863
|
key: "destroy",
|
782
864
|
value: function destroy() {
|
865
|
+
if (this.focusableElement) {
|
866
|
+
(0, _focusableElement.destroyElement)(this.focusableElement);
|
867
|
+
this.focusableElement = null;
|
868
|
+
}
|
783
869
|
_get(_getPrototypeOf(CopyPaste.prototype), "destroy", this).call(this);
|
784
870
|
}
|
785
871
|
}], [{
|
@@ -54,21 +54,23 @@ import "core-js/modules/es.reflect.get.js";
|
|
54
54
|
import "core-js/modules/es.object.get-own-property-descriptor.js";
|
55
55
|
import "core-js/modules/es.symbol.iterator.js";
|
56
56
|
import "core-js/modules/es.array.slice.js";
|
57
|
+
import "core-js/modules/es.regexp.to-string.js";
|
57
58
|
import "core-js/modules/es.function.name.js";
|
58
59
|
import { BasePlugin } from "../base/index.mjs";
|
59
60
|
import Hooks from "../../pluginHooks.mjs";
|
60
61
|
import { stringify, parse } from "../../3rdparty/SheetClip/index.mjs";
|
61
62
|
import { arrayEach } from "../../helpers/array.mjs";
|
62
63
|
import { sanitize } from "../../helpers/string.mjs";
|
64
|
+
import { getSelectionText } from "../../helpers/dom/element.mjs";
|
63
65
|
import copyItem from "./contextMenuItem/copy.mjs";
|
64
66
|
import copyColumnHeadersOnlyItem from "./contextMenuItem/copyColumnHeadersOnly.mjs";
|
65
67
|
import copyWithColumnGroupHeadersItem from "./contextMenuItem/copyWithColumnGroupHeaders.mjs";
|
66
68
|
import copyWithColumnHeadersItem from "./contextMenuItem/copyWithColumnHeaders.mjs";
|
67
69
|
import cutItem from "./contextMenuItem/cut.mjs";
|
68
70
|
import PasteEvent from "./pasteEvent.mjs";
|
71
|
+
import { createElement, destroyElement } from "./focusableElement.mjs";
|
69
72
|
import { CopyableRangesFactory, normalizeRanges } from "./copyableRanges.mjs";
|
70
73
|
import { _dataToHTML, htmlToGridSettings } from "../../utils/parseTable.mjs";
|
71
|
-
import EventManager from "../../eventManager.mjs";
|
72
74
|
Hooks.getSingleton().register('afterCopyLimit');
|
73
75
|
Hooks.getSingleton().register('modifyCopyableRange');
|
74
76
|
Hooks.getSingleton().register('beforeCut');
|
@@ -271,6 +273,13 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
271
273
|
* @type {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>}
|
272
274
|
*/
|
273
275
|
_defineProperty(_assertThisInitialized(_this), "copyableRanges", []);
|
276
|
+
/**
|
277
|
+
* Provides focusable element to support IME and copy/paste/cut actions.
|
278
|
+
*
|
279
|
+
* @private
|
280
|
+
* @type {FocusableWrapper}
|
281
|
+
*/
|
282
|
+
_defineProperty(_assertThisInitialized(_this), "focusableElement", void 0);
|
274
283
|
return _this;
|
275
284
|
}
|
276
285
|
_createClass(CopyPaste, [{
|
@@ -313,18 +322,22 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
313
322
|
this.addHook('afterContextMenuDefaultOptions', function (options) {
|
314
323
|
return _this2.onAfterContextMenuDefaultOptions(options);
|
315
324
|
});
|
325
|
+
this.addHook('afterOnCellMouseUp', function () {
|
326
|
+
return _this2.onAfterOnCellMouseUp();
|
327
|
+
});
|
316
328
|
this.addHook('afterSelectionEnd', function () {
|
317
329
|
return _this2.onAfterSelectionEnd();
|
318
330
|
});
|
319
|
-
this.
|
320
|
-
|
321
|
-
return _this2.onCopy.apply(_this2, arguments);
|
322
|
-
});
|
323
|
-
this.eventManager.addEventListener(this.hot.rootDocument, 'cut', function () {
|
324
|
-
return _this2.onCut.apply(_this2, arguments);
|
331
|
+
this.addHook('beforeKeyDown', function () {
|
332
|
+
return _this2.onBeforeKeyDown();
|
325
333
|
});
|
326
|
-
this.
|
327
|
-
|
334
|
+
this.focusableElement = createElement(this.uiContainer);
|
335
|
+
this.focusableElement.addLocalHook('copy', function (event) {
|
336
|
+
return _this2.onCopy(event);
|
337
|
+
}).addLocalHook('cut', function (event) {
|
338
|
+
return _this2.onCut(event);
|
339
|
+
}).addLocalHook('paste', function (event) {
|
340
|
+
return _this2.onPaste(event);
|
328
341
|
});
|
329
342
|
_get(_getPrototypeOf(CopyPaste.prototype), "enablePlugin", this).call(this);
|
330
343
|
}
|
@@ -342,6 +355,7 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
342
355
|
value: function updatePlugin() {
|
343
356
|
this.disablePlugin();
|
344
357
|
this.enablePlugin();
|
358
|
+
this.getOrCreateFocusableElement();
|
345
359
|
_get(_getPrototypeOf(CopyPaste.prototype), "updatePlugin", this).call(this);
|
346
360
|
}
|
347
361
|
|
@@ -351,6 +365,9 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
351
365
|
}, {
|
352
366
|
key: "disablePlugin",
|
353
367
|
value: function disablePlugin() {
|
368
|
+
if (this.focusableElement) {
|
369
|
+
destroyElement(this.focusableElement);
|
370
|
+
}
|
354
371
|
_get(_getPrototypeOf(CopyPaste.prototype), "disablePlugin", this).call(this);
|
355
372
|
}
|
356
373
|
|
@@ -374,6 +391,8 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
374
391
|
var copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
375
392
|
_classPrivateFieldSet(this, _copyMode, copyMode);
|
376
393
|
_classPrivateFieldSet(this, _isTriggeredByCopy, true);
|
394
|
+
this.getOrCreateFocusableElement();
|
395
|
+
this.focusableElement.focus();
|
377
396
|
this.hot.rootDocument.execCommand('copy');
|
378
397
|
}
|
379
398
|
|
@@ -417,6 +436,8 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
417
436
|
key: "cut",
|
418
437
|
value: function cut() {
|
419
438
|
_classPrivateFieldSet(this, _isTriggeredByCut, true);
|
439
|
+
this.getOrCreateFocusableElement();
|
440
|
+
this.focusableElement.focus();
|
420
441
|
this.hot.rootDocument.execCommand('cut');
|
421
442
|
}
|
422
443
|
|
@@ -486,6 +507,7 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
486
507
|
if (pastableHtml) {
|
487
508
|
pasteData.clipboardData.setData('text/html', pastableHtml);
|
488
509
|
}
|
510
|
+
this.getOrCreateFocusableElement();
|
489
511
|
this.onPaste(pasteData);
|
490
512
|
}
|
491
513
|
|
@@ -499,6 +521,10 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
499
521
|
if (!selectionRange) {
|
500
522
|
return;
|
501
523
|
}
|
524
|
+
if (selectionRange.isSingleHeader()) {
|
525
|
+
this.copyableRanges = [];
|
526
|
+
return;
|
527
|
+
}
|
502
528
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
503
529
|
var groupedRanges = new Map([['headers', null], ['cells', null]]);
|
504
530
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -536,6 +562,23 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
536
562
|
}
|
537
563
|
}
|
538
564
|
|
565
|
+
/**
|
566
|
+
* Force focus on editable element.
|
567
|
+
*
|
568
|
+
* @private
|
569
|
+
*/
|
570
|
+
}, {
|
571
|
+
key: "getOrCreateFocusableElement",
|
572
|
+
value: function getOrCreateFocusableElement() {
|
573
|
+
var _this$hot$getActiveEd;
|
574
|
+
var editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
575
|
+
if (editableElement) {
|
576
|
+
this.focusableElement.setFocusableElement(editableElement);
|
577
|
+
} else {
|
578
|
+
this.focusableElement.useSecondaryElement();
|
579
|
+
}
|
580
|
+
}
|
581
|
+
|
539
582
|
/**
|
540
583
|
* Verifies if editor exists and is open.
|
541
584
|
*
|
@@ -545,8 +588,8 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
545
588
|
}, {
|
546
589
|
key: "isEditorOpened",
|
547
590
|
value: function isEditorOpened() {
|
548
|
-
var _this$hot$
|
549
|
-
return (_this$hot$
|
591
|
+
var _this$hot$getActiveEd2;
|
592
|
+
return (_this$hot$getActiveEd2 = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd2 === void 0 ? void 0 : _this$hot$getActiveEd2.isOpened();
|
550
593
|
}
|
551
594
|
}, {
|
552
595
|
key: "populateValues",
|
@@ -685,7 +728,7 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
685
728
|
}, {
|
686
729
|
key: "onPaste",
|
687
730
|
value: function onPaste(event) {
|
688
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
731
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
689
732
|
return;
|
690
733
|
}
|
691
734
|
if (event && event.preventDefault) {
|
@@ -710,7 +753,7 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
710
753
|
if (typeof pastedData === 'string') {
|
711
754
|
pastedData = parse(pastedData);
|
712
755
|
}
|
713
|
-
if (pastedData && pastedData.length === 0) {
|
756
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
714
757
|
return;
|
715
758
|
}
|
716
759
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -750,6 +793,23 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
750
793
|
options.items.push(cutItem(this));
|
751
794
|
}
|
752
795
|
|
796
|
+
/**
|
797
|
+
* Force focus on focusableElement.
|
798
|
+
*
|
799
|
+
* @private
|
800
|
+
*/
|
801
|
+
}, {
|
802
|
+
key: "onAfterOnCellMouseUp",
|
803
|
+
value: function onAfterOnCellMouseUp() {
|
804
|
+
// Changing focused element will remove current selection. It's unnecessary in case when we give possibility
|
805
|
+
// for fragment selection
|
806
|
+
if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
|
807
|
+
return;
|
808
|
+
}
|
809
|
+
this.getOrCreateFocusableElement();
|
810
|
+
this.focusableElement.focus();
|
811
|
+
}
|
812
|
+
|
753
813
|
/**
|
754
814
|
* Force focus on focusableElement after end of the selection.
|
755
815
|
*
|
@@ -761,10 +821,32 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
761
821
|
if (this.isEditorOpened()) {
|
762
822
|
return;
|
763
823
|
}
|
764
|
-
|
824
|
+
this.getOrCreateFocusableElement();
|
825
|
+
if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && getSelectionText()) {
|
765
826
|
return;
|
766
827
|
}
|
767
828
|
this.setCopyableText();
|
829
|
+
this.focusableElement.focus();
|
830
|
+
}
|
831
|
+
|
832
|
+
/**
|
833
|
+
* `beforeKeyDown` listener to force focus of focusableElement.
|
834
|
+
*
|
835
|
+
* @private
|
836
|
+
*/
|
837
|
+
}, {
|
838
|
+
key: "onBeforeKeyDown",
|
839
|
+
value: function onBeforeKeyDown() {
|
840
|
+
if (!this.hot.isListening() || this.isEditorOpened()) {
|
841
|
+
return;
|
842
|
+
}
|
843
|
+
var activeElement = this.hot.rootDocument.activeElement;
|
844
|
+
var activeEditor = this.hot.getActiveEditor();
|
845
|
+
if (!activeEditor || activeElement !== this.focusableElement.getFocusableElement() && activeElement !== activeEditor.select) {
|
846
|
+
return;
|
847
|
+
}
|
848
|
+
this.getOrCreateFocusableElement();
|
849
|
+
this.focusableElement.focus();
|
768
850
|
}
|
769
851
|
|
770
852
|
/**
|
@@ -773,6 +855,10 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
|
|
773
855
|
}, {
|
774
856
|
key: "destroy",
|
775
857
|
value: function destroy() {
|
858
|
+
if (this.focusableElement) {
|
859
|
+
destroyElement(this.focusableElement);
|
860
|
+
this.focusableElement = null;
|
861
|
+
}
|
776
862
|
_get(_getPrototypeOf(CopyPaste.prototype), "destroy", this).call(this);
|
777
863
|
}
|
778
864
|
}], [{
|