handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-21d91d0-20231025
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 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +12 -10
- package/3rdparty/walkontable/src/event.mjs +12 -10
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +13 -2
- package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- package/3rdparty/walkontable/src/renderer/cells.js +10 -0
- package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/rows.js +13 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
- package/3rdparty/walkontable/src/renderer/table.js +9 -0
- package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
- package/3rdparty/walkontable/src/scroll.js +2 -0
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +274 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
- package/3rdparty/walkontable/src/settings.js +13 -4
- package/3rdparty/walkontable/src/settings.mjs +13 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +19 -78
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +3 -0
- package/cellTypes/index.js +4 -0
- package/cellTypes/index.mjs +3 -1
- package/cellTypes/selectType/index.d.ts +1 -0
- package/cellTypes/selectType/index.js +6 -0
- package/cellTypes/selectType/index.mjs +1 -0
- package/cellTypes/selectType/selectType.d.ts +14 -0
- package/cellTypes/selectType/selectType.js +13 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +9 -4
- package/core.js +285 -327
- package/core.mjs +285 -327
- package/dataMap/metaManager/metaSchema.js +65 -0
- package/dataMap/metaManager/metaSchema.mjs +65 -0
- package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
- package/dataMap/replaceData.js +5 -0
- package/dataMap/replaceData.mjs +5 -0
- package/dist/handsontable.css +51 -15
- package/dist/handsontable.full.css +51 -15
- package/dist/handsontable.full.js +13360 -7840
- package/dist/handsontable.full.min.css +7 -7
- package/dist/handsontable.full.min.js +136 -136
- package/dist/handsontable.js +20955 -15435
- package/dist/handsontable.min.css +6 -6
- package/dist/handsontable.min.js +24 -24
- package/dist/languages/all.js +6 -2
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +3 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +3 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +15 -87
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
- package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
- package/editors/dateEditor/dateEditor.js +26 -7
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/handsontableEditor/handsontableEditor.js +9 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
- package/editors/textEditor/textEditor.js +19 -27
- package/editors/textEditor/textEditor.mjs +22 -30
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +79 -0
- package/helpers/a11y.mjs +38 -0
- package/helpers/dom/element.js +188 -9
- package/helpers/dom/element.mjs +182 -9
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/i18n/constants.js +7 -1
- package/i18n/constants.mjs +4 -1
- package/i18n/languages/en-US.js +3 -1
- package/i18n/languages/en-US.mjs +3 -1
- package/i18n/languages/pl-PL.js +3 -1
- package/i18n/languages/pl-PL.mjs +3 -1
- package/languages/all.js +6 -2
- package/languages/en-US.js +3 -1
- package/languages/en-US.mjs +3 -1
- package/languages/index.js +6 -2
- package/languages/pl-PL.js +3 -1
- package/languages/pl-PL.mjs +3 -1
- package/package.json +21 -1
- package/pluginHooks.d.ts +12 -1
- package/pluginHooks.js +152 -1
- package/pluginHooks.mjs +152 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
- package/plugins/columnSorting/columnSorting.js +43 -0
- package/plugins/columnSorting/columnSorting.mjs +44 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +252 -189
- package/plugins/comments/comments.mjs +251 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/commandExecutor.js +2 -3
- package/plugins/contextMenu/commandExecutor.mjs +2 -3
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +75 -36
- package/plugins/contextMenu/contextMenu.mjs +74 -35
- package/plugins/contextMenu/itemsFactory.js +2 -3
- package/plugins/contextMenu/itemsFactory.mjs +3 -4
- package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
- package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
- package/plugins/contextMenu/menu/index.js +9 -0
- package/plugins/contextMenu/menu/index.mjs +1 -0
- package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
- package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
- package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
- package/plugins/contextMenu/menu/navigator.js +27 -0
- package/plugins/contextMenu/menu/navigator.mjs +23 -0
- package/plugins/contextMenu/menu/positioner.js +213 -0
- package/plugins/contextMenu/menu/positioner.mjs +209 -0
- package/plugins/contextMenu/menu/shortcuts.js +114 -0
- package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
- package/plugins/contextMenu/menu/utils.js +177 -0
- package/plugins/contextMenu/menu/utils.mjs +163 -0
- 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.js → predefinedItems/index.js} +14 -14
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -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 +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- 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 +127 -78
- package/plugins/copyPaste/copyPaste.mjs +128 -79
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +127 -40
- package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +29 -27
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +46 -59
- package/plugins/filters/component/condition.mjs +40 -52
- package/plugins/filters/component/operators.js +21 -22
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +35 -26
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +106 -62
- package/plugins/filters/filters.mjs +99 -55
- package/plugins/filters/menu/focusController.js +123 -0
- package/plugins/filters/menu/focusController.mjs +119 -0
- package/plugins/filters/menu/focusNavigator.js +30 -0
- package/plugins/filters/menu/focusNavigator.mjs +26 -0
- package/plugins/filters/ui/_base.js +35 -13
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -32
- package/plugins/filters/ui/input.mjs +42 -30
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +234 -129
- package/plugins/filters/ui/multipleSelect.mjs +232 -127
- package/plugins/filters/ui/radioInput.js +42 -18
- package/plugins/filters/ui/radioInput.mjs +42 -17
- package/plugins/filters/ui/select.js +144 -75
- package/plugins/filters/ui/select.mjs +142 -72
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +3 -1
- package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
- package/plugins/mergeCells/mergeCells.js +5 -16
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +240 -10
- package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/nestedRows/ui/headers.js +11 -0
- package/plugins/nestedRows/ui/headers.mjs +12 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +17 -0
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +29 -0
- package/renderers/dateRenderer/dateRenderer.mjs +24 -0
- package/renderers/dateRenderer/index.d.ts +1 -0
- package/renderers/dateRenderer/index.js +6 -0
- package/renderers/dateRenderer/index.mjs +1 -0
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
- package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
- package/renderers/handsontableRenderer/index.d.ts +1 -0
- package/renderers/handsontableRenderer/index.js +6 -0
- package/renderers/handsontableRenderer/index.mjs +1 -0
- package/renderers/index.d.ts +9 -0
- package/renderers/selectRenderer/index.d.ts +1 -0
- package/renderers/selectRenderer/index.js +6 -0
- package/renderers/selectRenderer/index.mjs +1 -0
- package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
- package/renderers/selectRenderer/selectRenderer.js +27 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +7 -1
- package/selection/mouseEventHandler.mjs +7 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +321 -152
- package/selection/selection.mjs +318 -151
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -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 +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +12 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/context.js +23 -4
- package/shortcuts/context.mjs +23 -5
- package/shortcuts/manager.js +25 -7
- package/shortcuts/manager.mjs +26 -7
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +111 -13
- package/tableView.mjs +112 -14
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
@@ -6,9 +6,9 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
6
6
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
7
7
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
8
8
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
9
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
10
9
|
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
11
10
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
11
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
12
12
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
13
13
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
14
14
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
@@ -17,16 +17,17 @@ import Hooks from "../../pluginHooks.mjs";
|
|
17
17
|
import { stringify, parse } from "../../3rdparty/SheetClip/index.mjs";
|
18
18
|
import { arrayEach } from "../../helpers/array.mjs";
|
19
19
|
import { sanitize } from "../../helpers/string.mjs";
|
20
|
-
import {
|
20
|
+
import { removeContentEditableFromElementAndDeselect, runWithSelectedContendEditableElement, makeElementContentEditableAndSelectItsContent } from "../../helpers/dom/element.mjs";
|
21
|
+
import { isSafari } from "../../helpers/browser.mjs";
|
21
22
|
import copyItem from "./contextMenuItem/copy.mjs";
|
22
23
|
import copyColumnHeadersOnlyItem from "./contextMenuItem/copyColumnHeadersOnly.mjs";
|
23
24
|
import copyWithColumnGroupHeadersItem from "./contextMenuItem/copyWithColumnGroupHeaders.mjs";
|
24
25
|
import copyWithColumnHeadersItem from "./contextMenuItem/copyWithColumnHeaders.mjs";
|
25
26
|
import cutItem from "./contextMenuItem/cut.mjs";
|
26
27
|
import PasteEvent from "./pasteEvent.mjs";
|
27
|
-
import { createElement, destroyElement } from "./focusableElement.mjs";
|
28
28
|
import { CopyableRangesFactory, normalizeRanges } from "./copyableRanges.mjs";
|
29
29
|
import { _dataToHTML, htmlToGridSettings } from "../../utils/parseTable.mjs";
|
30
|
+
import EventManager from "../../eventManager.mjs";
|
30
31
|
Hooks.getSingleton().register('afterCopyLimit');
|
31
32
|
Hooks.getSingleton().register('modifyCopyableRange');
|
32
33
|
Hooks.getSingleton().register('beforeCut');
|
@@ -82,10 +83,21 @@ var _copyMode = /*#__PURE__*/new WeakMap();
|
|
82
83
|
var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
|
83
84
|
var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
|
84
85
|
var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
|
86
|
+
var _ensureClipboardEventsGetTriggered = /*#__PURE__*/new WeakSet();
|
85
87
|
var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
|
88
|
+
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
89
|
+
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
86
90
|
export class CopyPaste extends BasePlugin {
|
87
91
|
constructor() {
|
88
92
|
super(...arguments);
|
93
|
+
/**
|
94
|
+
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
95
|
+
*/
|
96
|
+
_classPrivateMethodInitSpec(this, _removeContentEditableFromHighlightedCell);
|
97
|
+
/**
|
98
|
+
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
99
|
+
*/
|
100
|
+
_classPrivateMethodInitSpec(this, _addContentEditableToHighlightedCell);
|
89
101
|
/**
|
90
102
|
* Counts how many column headers will be copied based on the passed range.
|
91
103
|
*
|
@@ -95,6 +107,12 @@ export class CopyPaste extends BasePlugin {
|
|
95
107
|
* information with the number of copied headers.
|
96
108
|
*/
|
97
109
|
_classPrivateMethodInitSpec(this, _countCopiedHeaders);
|
110
|
+
/**
|
111
|
+
* Ensure that the `copy`/`cut` events get triggered properly in Safari.
|
112
|
+
*
|
113
|
+
* @param {string} eventName Name of the event to get triggered.
|
114
|
+
*/
|
115
|
+
_classPrivateMethodInitSpec(this, _ensureClipboardEventsGetTriggered);
|
98
116
|
/**
|
99
117
|
* The maximum number of columns than can be copied to the clipboard.
|
100
118
|
*
|
@@ -212,13 +230,6 @@ export class CopyPaste extends BasePlugin {
|
|
212
230
|
* @type {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>}
|
213
231
|
*/
|
214
232
|
_defineProperty(this, "copyableRanges", []);
|
215
|
-
/**
|
216
|
-
* Provides focusable element to support IME and copy/paste/cut actions.
|
217
|
-
*
|
218
|
-
* @private
|
219
|
-
* @type {FocusableWrapper}
|
220
|
-
*/
|
221
|
-
_defineProperty(this, "focusableElement", void 0);
|
222
233
|
}
|
223
234
|
static get PLUGIN_KEY() {
|
224
235
|
return PLUGIN_KEY;
|
@@ -245,6 +256,7 @@ export class CopyPaste extends BasePlugin {
|
|
245
256
|
* Enables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
|
246
257
|
*/
|
247
258
|
enablePlugin() {
|
259
|
+
var _this = this;
|
248
260
|
if (this.enabled) {
|
249
261
|
return;
|
250
262
|
}
|
@@ -262,11 +274,28 @@ export class CopyPaste extends BasePlugin {
|
|
262
274
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
263
275
|
}
|
264
276
|
this.addHook('afterContextMenuDefaultOptions', options => this.onAfterContextMenuDefaultOptions(options));
|
265
|
-
this.addHook('afterOnCellMouseUp', () => this.onAfterOnCellMouseUp());
|
266
277
|
this.addHook('afterSelectionEnd', () => this.onAfterSelectionEnd());
|
267
|
-
this.
|
268
|
-
this.
|
269
|
-
|
278
|
+
this.eventManager = new EventManager(this);
|
279
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
280
|
+
return _this.onCopy(...arguments);
|
281
|
+
});
|
282
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'cut', function () {
|
283
|
+
return _this.onCut(...arguments);
|
284
|
+
});
|
285
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'paste', function () {
|
286
|
+
return _this.onPaste(...arguments);
|
287
|
+
});
|
288
|
+
|
289
|
+
// Without this workaround Safari (tested on Safari@16.5.2) does allow copying/cutting from the browser menu.
|
290
|
+
if (isSafari()) {
|
291
|
+
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseenter', function () {
|
292
|
+
return _this.onSafariMouseEnter(...arguments);
|
293
|
+
});
|
294
|
+
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
295
|
+
return _this.onSafariMouseLeave(...arguments);
|
296
|
+
});
|
297
|
+
this.addHook('afterSelection', () => this.onSafariAfterSelection());
|
298
|
+
}
|
270
299
|
super.enablePlugin();
|
271
300
|
}
|
272
301
|
|
@@ -281,7 +310,6 @@ export class CopyPaste extends BasePlugin {
|
|
281
310
|
updatePlugin() {
|
282
311
|
this.disablePlugin();
|
283
312
|
this.enablePlugin();
|
284
|
-
this.getOrCreateFocusableElement();
|
285
313
|
super.updatePlugin();
|
286
314
|
}
|
287
315
|
|
@@ -289,9 +317,6 @@ export class CopyPaste extends BasePlugin {
|
|
289
317
|
* Disables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
|
290
318
|
*/
|
291
319
|
disablePlugin() {
|
292
|
-
if (this.focusableElement) {
|
293
|
-
destroyElement(this.focusableElement);
|
294
|
-
}
|
295
320
|
super.disablePlugin();
|
296
321
|
}
|
297
322
|
|
@@ -313,9 +338,7 @@ export class CopyPaste extends BasePlugin {
|
|
313
338
|
let copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
314
339
|
_classPrivateFieldSet(this, _copyMode, copyMode);
|
315
340
|
_classPrivateFieldSet(this, _isTriggeredByCopy, true);
|
316
|
-
this.
|
317
|
-
this.focusableElement.focus();
|
318
|
-
this.hot.rootDocument.execCommand('copy');
|
341
|
+
_classPrivateMethodGet(this, _ensureClipboardEventsGetTriggered, _ensureClipboardEventsGetTriggered2).call(this, 'copy');
|
319
342
|
}
|
320
343
|
|
321
344
|
/**
|
@@ -348,9 +371,7 @@ export class CopyPaste extends BasePlugin {
|
|
348
371
|
*/
|
349
372
|
cut() {
|
350
373
|
_classPrivateFieldSet(this, _isTriggeredByCut, true);
|
351
|
-
this.
|
352
|
-
this.focusableElement.focus();
|
353
|
-
this.hot.rootDocument.execCommand('cut');
|
374
|
+
_classPrivateMethodGet(this, _ensureClipboardEventsGetTriggered, _ensureClipboardEventsGetTriggered2).call(this, 'cut');
|
354
375
|
}
|
355
376
|
|
356
377
|
/**
|
@@ -413,7 +434,6 @@ export class CopyPaste extends BasePlugin {
|
|
413
434
|
if (pastableHtml) {
|
414
435
|
pasteData.clipboardData.setData('text/html', pastableHtml);
|
415
436
|
}
|
416
|
-
this.getOrCreateFocusableElement();
|
417
437
|
this.onPaste(pasteData);
|
418
438
|
}
|
419
439
|
|
@@ -425,6 +445,10 @@ export class CopyPaste extends BasePlugin {
|
|
425
445
|
if (!selectionRange) {
|
426
446
|
return;
|
427
447
|
}
|
448
|
+
if (selectionRange.isSingleHeader()) {
|
449
|
+
this.copyableRanges = [];
|
450
|
+
return;
|
451
|
+
}
|
428
452
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
429
453
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
430
454
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -464,21 +488,6 @@ export class CopyPaste extends BasePlugin {
|
|
464
488
|
}
|
465
489
|
}
|
466
490
|
|
467
|
-
/**
|
468
|
-
* Force focus on editable element.
|
469
|
-
*
|
470
|
-
* @private
|
471
|
-
*/
|
472
|
-
getOrCreateFocusableElement() {
|
473
|
-
var _this$hot$getActiveEd;
|
474
|
-
const editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
475
|
-
if (editableElement) {
|
476
|
-
this.focusableElement.setFocusableElement(editableElement);
|
477
|
-
} else {
|
478
|
-
this.focusableElement.useSecondaryElement();
|
479
|
-
}
|
480
|
-
}
|
481
|
-
|
482
491
|
/**
|
483
492
|
* Verifies if editor exists and is open.
|
484
493
|
*
|
@@ -486,8 +495,8 @@ export class CopyPaste extends BasePlugin {
|
|
486
495
|
* @returns {boolean}
|
487
496
|
*/
|
488
497
|
isEditorOpened() {
|
489
|
-
var _this$hot$
|
490
|
-
return (_this$hot$
|
498
|
+
var _this$hot$getActiveEd;
|
499
|
+
return (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.isOpened();
|
491
500
|
}
|
492
501
|
/**
|
493
502
|
* Prepares new values to populate them into datasource.
|
@@ -554,7 +563,6 @@ export class CopyPaste extends BasePlugin {
|
|
554
563
|
this.hot.populateFromArray(startRow, startColumn, newRows, void 0, void 0, 'CopyPaste.paste', this.pasteMode);
|
555
564
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
556
565
|
}
|
557
|
-
|
558
566
|
/**
|
559
567
|
* `copy` event callback on textarea element.
|
560
568
|
*
|
@@ -621,7 +629,7 @@ export class CopyPaste extends BasePlugin {
|
|
621
629
|
* @private
|
622
630
|
*/
|
623
631
|
onPaste(event) {
|
624
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
632
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
625
633
|
return;
|
626
634
|
}
|
627
635
|
if (event && event.preventDefault) {
|
@@ -646,7 +654,7 @@ export class CopyPaste extends BasePlugin {
|
|
646
654
|
if (typeof pastedData === 'string') {
|
647
655
|
pastedData = parse(pastedData);
|
648
656
|
}
|
649
|
-
if (pastedData && pastedData.length === 0) {
|
657
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
650
658
|
return;
|
651
659
|
}
|
652
660
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -679,21 +687,6 @@ export class CopyPaste extends BasePlugin {
|
|
679
687
|
options.items.push(cutItem(this));
|
680
688
|
}
|
681
689
|
|
682
|
-
/**
|
683
|
-
* Force focus on focusableElement.
|
684
|
-
*
|
685
|
-
* @private
|
686
|
-
*/
|
687
|
-
onAfterOnCellMouseUp() {
|
688
|
-
// Changing focused element will remove current selection. It's unnecessary in case when we give possibility
|
689
|
-
// for fragment selection
|
690
|
-
if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
|
691
|
-
return;
|
692
|
-
}
|
693
|
-
this.getOrCreateFocusableElement();
|
694
|
-
this.focusableElement.focus();
|
695
|
-
}
|
696
|
-
|
697
690
|
/**
|
698
691
|
* Force focus on focusableElement after end of the selection.
|
699
692
|
*
|
@@ -703,43 +696,68 @@ export class CopyPaste extends BasePlugin {
|
|
703
696
|
if (this.isEditorOpened()) {
|
704
697
|
return;
|
705
698
|
}
|
706
|
-
this.
|
707
|
-
if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && getSelectionText()) {
|
699
|
+
if (this.hot.getSettings().fragmentSelection) {
|
708
700
|
return;
|
709
701
|
}
|
710
702
|
this.setCopyableText();
|
711
|
-
this.focusableElement.focus();
|
712
703
|
}
|
713
704
|
|
714
705
|
/**
|
715
|
-
* `
|
706
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
707
|
+
* browser's menu.
|
716
708
|
*
|
717
709
|
* @private
|
718
710
|
*/
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
711
|
+
onSafariMouseEnter() {
|
712
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
713
|
+
}
|
714
|
+
|
715
|
+
/**
|
716
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
717
|
+
* browser's menu.
|
718
|
+
*
|
719
|
+
* @private
|
720
|
+
*/
|
721
|
+
onSafariMouseLeave() {
|
722
|
+
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
723
|
+
}
|
724
|
+
|
725
|
+
/**
|
726
|
+
* `afterSelection` hook callback triggered only on Safari.
|
727
|
+
*
|
728
|
+
* @private
|
729
|
+
*/
|
730
|
+
onSafariAfterSelection() {
|
731
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
730
732
|
}
|
731
733
|
|
732
734
|
/**
|
733
735
|
* Destroys the `CopyPaste` plugin instance.
|
734
736
|
*/
|
735
737
|
destroy() {
|
736
|
-
if (this.focusableElement) {
|
737
|
-
destroyElement(this.focusableElement);
|
738
|
-
this.focusableElement = null;
|
739
|
-
}
|
740
738
|
super.destroy();
|
741
739
|
}
|
742
740
|
}
|
741
|
+
function _ensureClipboardEventsGetTriggered2(eventName) {
|
742
|
+
// Without this workaround Safari (tested on Safari@16.5.2) does not trigger the 'copy' event.
|
743
|
+
if (isSafari()) {
|
744
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
745
|
+
if (lastSelectedRange) {
|
746
|
+
const {
|
747
|
+
row: highlightRow,
|
748
|
+
col: highlightColumn
|
749
|
+
} = lastSelectedRange.highlight;
|
750
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
751
|
+
if (currentlySelectedCell) {
|
752
|
+
runWithSelectedContendEditableElement(currentlySelectedCell, () => {
|
753
|
+
this.hot.rootDocument.execCommand(eventName);
|
754
|
+
});
|
755
|
+
}
|
756
|
+
}
|
757
|
+
} else {
|
758
|
+
this.hot.rootDocument.execCommand(eventName);
|
759
|
+
}
|
760
|
+
}
|
743
761
|
function _countCopiedHeaders2(ranges) {
|
744
762
|
const {
|
745
763
|
rows
|
@@ -754,4 +772,35 @@ function _countCopiedHeaders2(ranges) {
|
|
754
772
|
return {
|
755
773
|
columnHeadersCount
|
756
774
|
};
|
775
|
+
}
|
776
|
+
function _addContentEditableToHighlightedCell2() {
|
777
|
+
if (this.hot.isListening()) {
|
778
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
779
|
+
if (lastSelectedRange) {
|
780
|
+
const {
|
781
|
+
row: highlightRow,
|
782
|
+
col: highlightColumn
|
783
|
+
} = lastSelectedRange.highlight;
|
784
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
785
|
+
if (currentlySelectedCell) {
|
786
|
+
makeElementContentEditableAndSelectItsContent(currentlySelectedCell);
|
787
|
+
}
|
788
|
+
}
|
789
|
+
}
|
790
|
+
}
|
791
|
+
function _removeContentEditableFromHighlightedCell2() {
|
792
|
+
// If the instance is not listening, the workaround is not needed.
|
793
|
+
if (this.hot.isListening()) {
|
794
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
795
|
+
if (lastSelectedRange) {
|
796
|
+
const {
|
797
|
+
row: highlightRow,
|
798
|
+
col: highlightColumn
|
799
|
+
} = lastSelectedRange.highlight;
|
800
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
801
|
+
if (currentlySelectedCell !== null && currentlySelectedCell !== void 0 && currentlySelectedCell.hasAttribute('contenteditable')) {
|
802
|
+
removeContentEditableFromElementAndDeselect(currentlySelectedCell);
|
803
|
+
}
|
804
|
+
}
|
805
|
+
}
|
757
806
|
}
|
@@ -167,14 +167,11 @@ class CustomBorders extends _base.BasePlugin {
|
|
167
167
|
const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
|
168
168
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
169
169
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
});
|
176
|
-
}
|
177
|
-
}
|
170
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
171
|
+
(0, _array.arrayEach)(borderKeys, borderKey => {
|
172
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
|
173
|
+
});
|
174
|
+
});
|
178
175
|
});
|
179
176
|
|
180
177
|
/*
|
@@ -214,16 +211,13 @@ class CustomBorders extends _base.BasePlugin {
|
|
214
211
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
215
212
|
const selectedBorders = [];
|
216
213
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
});
|
225
|
-
}
|
226
|
-
}
|
214
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
215
|
+
(0, _array.arrayEach)(this.savedBorders, border => {
|
216
|
+
if (border.row === row && border.col === col) {
|
217
|
+
selectedBorders.push((0, _utils.denormalizeBorder)(border));
|
218
|
+
}
|
219
|
+
});
|
220
|
+
});
|
227
221
|
});
|
228
222
|
return selectedBorders;
|
229
223
|
}
|
@@ -614,7 +608,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
614
608
|
let check = false;
|
615
609
|
(0, _array.arrayEach)(this.hot.selection.highlight.customSelections, customSelection => {
|
616
610
|
if (border.id === customSelection.settings.id) {
|
617
|
-
|
611
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
612
|
+
(0, _array.arrayEach)(borders, borderObject => {
|
618
613
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
619
614
|
});
|
620
615
|
|
@@ -648,7 +643,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
648
643
|
customSelection.visualCellRange = cellRange;
|
649
644
|
customSelection.commit();
|
650
645
|
if (place) {
|
651
|
-
|
646
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
647
|
+
(0, _array.arrayEach)(borders, borderObject => {
|
652
648
|
borderObject.changeBorderStyle(place, border);
|
653
649
|
});
|
654
650
|
}
|
@@ -716,6 +712,13 @@ class CustomBorders extends _base.BasePlugin {
|
|
716
712
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
717
713
|
},
|
718
714
|
disabled() {
|
715
|
+
const range = this.getSelectedRangeLast();
|
716
|
+
if (!range) {
|
717
|
+
return true;
|
718
|
+
}
|
719
|
+
if (range.isSingleHeader()) {
|
720
|
+
return true;
|
721
|
+
}
|
719
722
|
return this.selection.isSelectedByCorner();
|
720
723
|
},
|
721
724
|
submenu: {
|
@@ -4,7 +4,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
4
4
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
5
5
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
6
6
|
import { BasePlugin } from "../base/index.mjs";
|
7
|
-
import { hasOwnProperty,
|
7
|
+
import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
|
8
8
|
import { rangeEach } from "../../helpers/number.mjs";
|
9
9
|
import { arrayEach, arrayReduce, arrayMap } from "../../helpers/array.mjs";
|
10
10
|
import * as C from "../../i18n/constants.mjs";
|
@@ -160,14 +160,11 @@ export class CustomBorders extends BasePlugin {
|
|
160
160
|
const selectionType = detectSelectionType(selectionRanges);
|
161
161
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
162
162
|
arrayEach(selectionRanges, selection => {
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
});
|
169
|
-
}
|
170
|
-
}
|
163
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
164
|
+
arrayEach(borderKeys, borderKey => {
|
165
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
|
166
|
+
});
|
167
|
+
});
|
171
168
|
});
|
172
169
|
|
173
170
|
/*
|
@@ -207,16 +204,13 @@ export class CustomBorders extends BasePlugin {
|
|
207
204
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
208
205
|
const selectedBorders = [];
|
209
206
|
arrayEach(selectionRanges, selection => {
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
});
|
218
|
-
}
|
219
|
-
}
|
207
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
208
|
+
arrayEach(this.savedBorders, border => {
|
209
|
+
if (border.row === row && border.col === col) {
|
210
|
+
selectedBorders.push(denormalizeBorder(border));
|
211
|
+
}
|
212
|
+
});
|
213
|
+
});
|
220
214
|
});
|
221
215
|
return selectedBorders;
|
222
216
|
}
|
@@ -607,7 +601,8 @@ export class CustomBorders extends BasePlugin {
|
|
607
601
|
let check = false;
|
608
602
|
arrayEach(this.hot.selection.highlight.customSelections, customSelection => {
|
609
603
|
if (border.id === customSelection.settings.id) {
|
610
|
-
|
604
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
605
|
+
arrayEach(borders, borderObject => {
|
611
606
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
612
607
|
});
|
613
608
|
|
@@ -641,7 +636,8 @@ export class CustomBorders extends BasePlugin {
|
|
641
636
|
customSelection.visualCellRange = cellRange;
|
642
637
|
customSelection.commit();
|
643
638
|
if (place) {
|
644
|
-
|
639
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
640
|
+
arrayEach(borders, borderObject => {
|
645
641
|
borderObject.changeBorderStyle(place, border);
|
646
642
|
});
|
647
643
|
}
|
@@ -709,6 +705,13 @@ export class CustomBorders extends BasePlugin {
|
|
709
705
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
710
706
|
},
|
711
707
|
disabled() {
|
708
|
+
const range = this.getSelectedRangeLast();
|
709
|
+
if (!range) {
|
710
|
+
return true;
|
711
|
+
}
|
712
|
+
if (range.isSingleHeader()) {
|
713
|
+
return true;
|
714
|
+
}
|
712
715
|
return this.selection.isSelectedByCorner();
|
713
716
|
},
|
714
717
|
submenu: {
|
@@ -18,7 +18,7 @@ export class DropdownMenu extends BasePlugin {
|
|
18
18
|
|
19
19
|
constructor(hotInstance: Core);
|
20
20
|
isEnabled(): boolean;
|
21
|
-
open(
|
21
|
+
open(position: { left: number, top: number } | Event, offset?: { above?: number, below?: number, left?: number, right?: number }): void;
|
22
22
|
close(): void;
|
23
23
|
executeCommand(commandName: string, ...params: any): void;
|
24
24
|
}
|