handsontable 13.1.0 → 14.0.0-next-e8f87aa-20231030
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/calculator/constants.js +3 -6
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
- package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
- package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
- package/3rdparty/walkontable/src/cell/coords.js +81 -13
- package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +39 -9
- 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 +13 -12
- 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/filter/column.js +1 -2
- package/3rdparty/walkontable/src/filter/row.js +1 -2
- package/3rdparty/walkontable/src/index.js +12 -4
- 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/constants.js +7 -14
- 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/overlays.js +1 -2
- 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 +13 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -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 +3 -2
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +54 -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 +100 -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/bottom.js +1 -2
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
- package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
- package/3rdparty/walkontable/src/table/master.js +3 -6
- package/3rdparty/walkontable/src/table/master.mjs +2 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table/top.js +1 -2
- package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
- package/3rdparty/walkontable/src/table.js +20 -80
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
- package/3rdparty/walkontable/src/viewport.js +1 -2
- package/CHANGELOG.md +51 -0
- package/base.js +3 -4
- package/base.mjs +2 -2
- package/cellTypes/autocompleteType/autocompleteType.js +3 -5
- package/cellTypes/checkboxType/checkboxType.js +3 -5
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +5 -7
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/dropdownType/dropdownType.js +3 -5
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +5 -7
- 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/numericType/numericType.js +3 -5
- package/cellTypes/passwordType/passwordType.js +3 -5
- 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 +11 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/cellTypes/textType/textType.js +3 -5
- package/cellTypes/timeType/timeType.js +3 -5
- package/common.d.ts +1 -1
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +148 -0
- package/core/focusCatcher/index.mjs +144 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +10 -5
- package/core.js +327 -359
- package/core.mjs +327 -359
- package/dataMap/dataMap.js +1 -2
- package/dataMap/dataSource.js +1 -2
- 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 +94 -76
- package/dist/handsontable.full.css +94 -76
- package/dist/handsontable.full.js +23133 -15992
- package/dist/handsontable.full.min.css +8 -8
- package/dist/handsontable.full.min.js +170 -152
- package/dist/handsontable.js +21856 -15085
- package/dist/handsontable.min.css +7 -7
- package/dist/handsontable.min.js +30 -22
- package/dist/languages/all.js +47 -40
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +1 -2
- package/dist/languages/cs-CZ.js +1 -2
- package/dist/languages/de-CH.js +1 -2
- package/dist/languages/de-DE.js +1 -2
- package/dist/languages/en-US.js +15 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +1 -2
- package/dist/languages/fr-FR.js +1 -2
- package/dist/languages/it-IT.js +1 -2
- package/dist/languages/ja-JP.js +1 -2
- package/dist/languages/ko-KR.js +1 -2
- package/dist/languages/lv-LV.js +1 -2
- package/dist/languages/nb-NO.js +1 -2
- package/dist/languages/nl-NL.js +1 -2
- package/dist/languages/pl-PL.js +15 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +1 -2
- package/dist/languages/ru-RU.js +1 -2
- package/dist/languages/sr-SP.js +1 -2
- package/dist/languages/zh-CN.js +1 -2
- package/dist/languages/zh-TW.js +1 -2
- package/editorManager.js +17 -91
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
- package/editors/baseEditor/baseEditor.js +19 -13
- package/editors/baseEditor/baseEditor.mjs +16 -7
- package/editors/checkboxEditor/checkboxEditor.js +1 -2
- package/editors/dateEditor/dateEditor.js +27 -9
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/dropdownEditor/dropdownEditor.js +1 -2
- package/editors/handsontableEditor/handsontableEditor.js +14 -7
- package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
- package/editors/numericEditor/numericEditor.js +1 -2
- package/editors/passwordEditor/passwordEditor.js +1 -2
- package/editors/selectEditor/selectEditor.js +1 -2
- package/editors/textEditor/textEditor.js +20 -29
- package/editors/textEditor/textEditor.mjs +22 -30
- package/editors/timeEditor/timeEditor.js +1 -2
- package/eventManager.js +1 -2
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +81 -0
- package/helpers/a11y.mjs +39 -0
- package/helpers/dom/element.js +224 -12
- package/helpers/dom/element.mjs +216 -10
- package/helpers/dom/event.d.ts +1 -0
- package/helpers/dom/event.js +25 -0
- package/helpers/dom/event.mjs +24 -0
- 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/unicode.js +1 -2
- package/i18n/constants.js +97 -160
- package/i18n/constants.mjs +17 -1
- package/i18n/languages/ar-AR.js +3 -4
- package/i18n/languages/cs-CZ.js +3 -4
- package/i18n/languages/de-CH.js +3 -4
- package/i18n/languages/de-DE.js +3 -4
- package/i18n/languages/en-US.js +17 -5
- package/i18n/languages/en-US.mjs +14 -1
- package/i18n/languages/es-MX.js +3 -4
- package/i18n/languages/fr-FR.js +3 -4
- package/i18n/languages/it-IT.js +3 -4
- package/i18n/languages/ja-JP.js +3 -4
- package/i18n/languages/ko-KR.js +3 -4
- package/i18n/languages/lv-LV.js +3 -4
- package/i18n/languages/nb-NO.js +3 -4
- package/i18n/languages/nl-NL.js +3 -4
- package/i18n/languages/pl-PL.js +17 -5
- package/i18n/languages/pl-PL.mjs +14 -1
- package/i18n/languages/pt-BR.js +3 -4
- package/i18n/languages/ru-RU.js +3 -4
- package/i18n/languages/sr-SP.js +3 -4
- package/i18n/languages/zh-CN.js +3 -4
- package/i18n/languages/zh-TW.js +3 -4
- package/i18n/registry.js +4 -6
- package/index.js +3 -4
- package/languages/all.js +47 -40
- package/languages/ar-AR.js +1 -2
- package/languages/cs-CZ.js +1 -2
- package/languages/de-CH.js +1 -2
- package/languages/de-DE.js +1 -2
- package/languages/en-US.js +15 -3
- package/languages/en-US.mjs +14 -1
- package/languages/es-MX.js +1 -2
- package/languages/fr-FR.js +1 -2
- package/languages/index.js +47 -40
- package/languages/it-IT.js +1 -2
- package/languages/ja-JP.js +1 -2
- package/languages/ko-KR.js +1 -2
- package/languages/lv-LV.js +1 -2
- package/languages/nb-NO.js +1 -2
- package/languages/nl-NL.js +1 -2
- package/languages/pl-PL.js +15 -3
- package/languages/pl-PL.mjs +14 -1
- package/languages/pt-BR.js +1 -2
- package/languages/ru-RU.js +1 -2
- package/languages/sr-SP.js +1 -2
- package/languages/zh-CN.js +1 -2
- package/languages/zh-TW.js +1 -2
- package/mixins/hooksRefRegisterer.js +1 -2
- package/mixins/localHooks.js +1 -2
- package/package.json +119 -96
- package/pluginHooks.d.ts +42 -7
- package/pluginHooks.js +301 -65
- package/pluginHooks.mjs +300 -63
- package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
- package/plugins/autoColumnSize/autoColumnSize.js +2 -4
- package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
- package/plugins/autoRowSize/autoRowSize.js +15 -10
- package/plugins/autoRowSize/autoRowSize.mjs +13 -6
- package/plugins/autofill/autofill.js +2 -4
- package/plugins/autofill/utils.js +1 -2
- package/plugins/base/base.js +1 -2
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
- package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
- package/plugins/columnSorting/columnSorting.js +71 -6
- package/plugins/columnSorting/columnSorting.mjs +70 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
- package/plugins/columnSorting/sortFunction/date.js +1 -2
- package/plugins/columnSorting/sortFunction/default.js +1 -2
- package/plugins/columnSorting/sortFunction/numeric.js +1 -2
- package/plugins/columnSorting/sortService/engine.js +3 -6
- package/plugins/columnSorting/utils.js +3 -6
- package/plugins/columnSummary/columnSummary.js +2 -4
- package/plugins/columnSummary/endpoints.js +1 -2
- package/plugins/comments/commentEditor.js +2 -2
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +254 -197
- 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/comments/displaySwitch.js +1 -2
- 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 +77 -40
- 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 +70 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -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 +10 -4
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/index.js +75 -0
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
- package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/redo.js +3 -4
- package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/separator.js +1 -2
- package/plugins/contextMenu/predefinedItems/undo.js +3 -4
- package/plugins/contextMenu/utils.js +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
- package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
- package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
- package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
- package/plugins/copyPaste/clipboardData/index.js +9 -0
- package/plugins/copyPaste/clipboardData/index.mjs +4 -0
- package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
- package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
- 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 +9 -2
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +160 -167
- package/plugins/copyPaste/copyPaste.mjs +161 -166
- package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
- package/plugins/customBorders/contextMenuItem/left.js +2 -2
- package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
- package/plugins/customBorders/contextMenuItem/right.js +2 -2
- package/plugins/customBorders/contextMenuItem/top.js +2 -2
- package/plugins/customBorders/customBorders.js +27 -26
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dragToScroll/dragToScroll.js +2 -4
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +130 -44
- package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
- package/plugins/exportFile/dataProvider.js +1 -2
- package/plugins/exportFile/exportFile.js +4 -6
- package/plugins/exportFile/typeFactory.js +5 -8
- package/plugins/exportFile/types/_base.js +1 -2
- package/plugins/exportFile/types/csv.js +1 -2
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +31 -29
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +48 -61
- 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 +37 -28
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/condition/beginsWith.js +3 -4
- package/plugins/filters/condition/between.js +3 -4
- package/plugins/filters/condition/byValue.js +1 -2
- package/plugins/filters/condition/contains.js +3 -4
- package/plugins/filters/condition/date/after.js +3 -4
- package/plugins/filters/condition/date/before.js +3 -4
- package/plugins/filters/condition/date/today.js +3 -4
- package/plugins/filters/condition/date/tomorrow.js +3 -4
- package/plugins/filters/condition/date/yesterday.js +3 -4
- package/plugins/filters/condition/empty.js +3 -4
- package/plugins/filters/condition/endsWith.js +3 -4
- package/plugins/filters/condition/equal.js +3 -4
- package/plugins/filters/condition/false.js +1 -2
- package/plugins/filters/condition/greaterThan.js +3 -4
- package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
- package/plugins/filters/condition/lessThan.js +3 -4
- package/plugins/filters/condition/lessThanOrEqual.js +3 -4
- package/plugins/filters/condition/none.js +3 -4
- package/plugins/filters/condition/notBetween.js +3 -4
- package/plugins/filters/condition/notContains.js +3 -4
- package/plugins/filters/condition/notEmpty.js +3 -4
- package/plugins/filters/condition/notEqual.js +3 -4
- package/plugins/filters/condition/true.js +1 -2
- package/plugins/filters/conditionCollection.d.ts +3 -2
- package/plugins/filters/conditionCollection.js +1 -2
- package/plugins/filters/conditionRegisterer.js +1 -2
- package/plugins/filters/conditionUpdateObserver.js +1 -2
- package/plugins/filters/constants.js +4 -8
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/dataFilter.js +1 -2
- package/plugins/filters/filters.d.ts +3 -5
- package/plugins/filters/filters.js +118 -67
- package/plugins/filters/filters.mjs +109 -56
- package/plugins/filters/logicalOperationRegisterer.js +1 -2
- package/plugins/filters/logicalOperations/conjunction.js +4 -6
- package/plugins/filters/logicalOperations/disjunction.js +4 -6
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
- 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 +37 -15
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -35
- package/plugins/filters/ui/input.mjs +42 -33
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +237 -133
- 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 +152 -77
- package/plugins/filters/ui/select.mjs +148 -72
- package/plugins/formulas/engine/settings.js +2 -4
- package/plugins/formulas/formulas.js +3 -6
- package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
- package/plugins/formulas/indexSyncer/index.js +1 -2
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
- package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
- package/plugins/hiddenColumns/hiddenColumns.js +49 -6
- package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
- package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
- package/plugins/hiddenRows/hiddenRows.js +49 -6
- package/plugins/hiddenRows/hiddenRows.mjs +48 -3
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
- package/plugins/manualColumnMove/manualColumnMove.js +9 -17
- package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
- package/plugins/manualColumnMove/ui/_base.js +1 -2
- package/plugins/manualColumnMove/ui/backlight.js +1 -2
- package/plugins/manualColumnMove/ui/guideline.js +1 -2
- package/plugins/manualColumnResize/manualColumnResize.js +2 -4
- package/plugins/manualRowMove/manualRowMove.js +6 -23
- package/plugins/manualRowMove/manualRowMove.mjs +4 -19
- package/plugins/manualRowMove/ui/_base.js +1 -2
- package/plugins/manualRowMove/ui/backlight.js +1 -2
- package/plugins/manualRowMove/ui/guideline.js +1 -2
- package/plugins/manualRowResize/manualRowResize.js +2 -4
- package/plugins/mergeCells/calculations/autofill.js +1 -2
- package/plugins/mergeCells/calculations/selection.js +1 -2
- package/plugins/mergeCells/cellCoords.js +1 -2
- package/plugins/mergeCells/cellsCollection.js +1 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
- package/plugins/mergeCells/mergeCells.js +7 -20
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
- package/plugins/nestedHeaders/nestedHeaders.js +263 -36
- package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
- package/plugins/nestedRows/data/dataManager.js +1 -2
- package/plugins/nestedRows/nestedRows.js +47 -10
- package/plugins/nestedRows/nestedRows.mjs +45 -6
- package/plugins/nestedRows/ui/_base.js +1 -2
- package/plugins/nestedRows/ui/collapsing.js +1 -2
- package/plugins/nestedRows/ui/contextMenu.js +3 -4
- package/plugins/nestedRows/ui/headers.js +13 -3
- package/plugins/nestedRows/ui/headers.mjs +13 -2
- package/plugins/persistentState/persistentState.js +2 -4
- package/plugins/persistentState/storage.js +1 -2
- package/plugins/search/search.js +2 -4
- package/plugins/touchScroll/touchScroll.js +2 -4
- package/plugins/trimRows/trimRows.js +2 -4
- package/plugins/undoRedo/index.js +2 -2
- package/plugins/undoRedo/undoRedo.js +2 -4
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +18 -2
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +28 -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 +28 -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/htmlRenderer/htmlRenderer.js +1 -2
- package/renderers/index.d.ts +9 -0
- package/renderers/numericRenderer/numericRenderer.js +1 -2
- package/renderers/passwordRenderer/passwordRenderer.js +1 -2
- 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 +26 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/renderers/textRenderer/textRenderer.js +1 -2
- package/renderers/timeRenderer/timeRenderer.js +1 -2
- package/selection/highlight/highlight.js +257 -73
- 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 +32 -29
- 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 +9 -10
- package/selection/range.mjs +8 -8
- package/selection/selection.js +334 -154
- package/selection/selection.mjs +330 -151
- package/selection/transformation.js +233 -94
- package/selection/transformation.mjs +232 -92
- package/selection/utils.js +20 -31
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +15 -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 +26 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +10 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -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 +14 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -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 +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -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 +11 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +11 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +167 -0
- package/shortcutContexts/grid.mjs +163 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/context.d.ts +1 -0
- package/shortcuts/context.js +23 -4
- package/shortcuts/context.mjs +23 -5
- package/shortcuts/manager.js +31 -7
- package/shortcuts/manager.mjs +32 -7
- package/shortcuts/recorder.js +30 -14
- package/shortcuts/recorder.mjs +30 -14
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +113 -16
- package/tableView.mjs +113 -15
- package/utils/dataStructures/linkedList.js +1 -2
- package/utils/dataStructures/priorityMap.js +2 -4
- package/utils/dataStructures/queue.js +1 -2
- package/utils/dataStructures/stack.js +1 -2
- package/utils/dataStructures/tree.js +3 -6
- package/utils/ghostTable.js +32 -17
- package/utils/ghostTable.mjs +31 -15
- package/utils/interval.js +1 -2
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
- package/utils/parseTable.js +527 -83
- package/utils/parseTable.mjs +523 -82
- package/utils/rootInstance.js +2 -4
- package/utils/samplesGenerator.js +21 -13
- package/utils/samplesGenerator.mjs +20 -11
- package/utils/staticRegister.js +1 -2
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
- package/validators/dateValidator/dateValidator.js +1 -2
- package/validators/numericValidator/numericValidator.js +1 -2
- package/validators/timeValidator/timeValidator.js +1 -2
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.js +0 -76
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/clipboardData.js +0 -18
- package/plugins/copyPaste/clipboardData.mjs +0 -14
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/plugins/copyPaste/pasteEvent.js +0 -14
- package/plugins/copyPaste/pasteEvent.mjs +0 -9
- 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,18 +6,18 @@ require("core-js/modules/es.error.cause.js");
|
|
6
6
|
var _base = require("../base");
|
7
7
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
8
8
|
var _SheetClip = require("../../3rdparty/SheetClip");
|
9
|
-
var _array = require("../../helpers/array");
|
10
9
|
var _string = require("../../helpers/string");
|
11
10
|
var _element = require("../../helpers/dom/element");
|
11
|
+
var _browser = require("../../helpers/browser");
|
12
12
|
var _copy = _interopRequireDefault(require("./contextMenuItem/copy"));
|
13
13
|
var _copyColumnHeadersOnly = _interopRequireDefault(require("./contextMenuItem/copyColumnHeadersOnly"));
|
14
14
|
var _copyWithColumnGroupHeaders = _interopRequireDefault(require("./contextMenuItem/copyWithColumnGroupHeaders"));
|
15
15
|
var _copyWithColumnHeaders = _interopRequireDefault(require("./contextMenuItem/copyWithColumnHeaders"));
|
16
16
|
var _cut = _interopRequireDefault(require("./contextMenuItem/cut"));
|
17
|
-
var _pasteEvent = _interopRequireDefault(require("./pasteEvent"));
|
18
|
-
var _focusableElement = require("./focusableElement");
|
19
17
|
var _copyableRanges = require("./copyableRanges");
|
20
18
|
var _parseTable = require("../../utils/parseTable");
|
19
|
+
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
20
|
+
var _clipboardData = require("./clipboardData");
|
21
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
22
22
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
23
23
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
@@ -25,9 +25,9 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
25
25
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
26
26
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
27
27
|
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); }
|
28
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
29
28
|
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
30
29
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
30
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
31
31
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
32
32
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
33
33
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
@@ -39,12 +39,9 @@ _pluginHooks.default.getSingleton().register('beforePaste');
|
|
39
39
|
_pluginHooks.default.getSingleton().register('afterPaste');
|
40
40
|
_pluginHooks.default.getSingleton().register('beforeCopy');
|
41
41
|
_pluginHooks.default.getSingleton().register('afterCopy');
|
42
|
-
const PLUGIN_KEY = 'copyPaste';
|
43
|
-
exports.
|
44
|
-
const PLUGIN_PRIORITY = 80;
|
45
|
-
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
42
|
+
const PLUGIN_KEY = exports.PLUGIN_KEY = 'copyPaste';
|
43
|
+
const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 80;
|
46
44
|
const SETTING_KEYS = ['fragmentSelection'];
|
47
|
-
const META_HEAD = ['<meta name="generator" content="Handsontable"/>', '<style type="text/css">td{white-space:normal}br{mso-data-placement:same-cell}</style>'].join('');
|
48
45
|
|
49
46
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
50
47
|
/**
|
@@ -88,19 +85,26 @@ var _copyMode = /*#__PURE__*/new WeakMap();
|
|
88
85
|
var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
|
89
86
|
var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
|
90
87
|
var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
|
91
|
-
var
|
88
|
+
var _ensureClipboardEventsGetTriggered = /*#__PURE__*/new WeakSet();
|
89
|
+
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
90
|
+
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
92
91
|
class CopyPaste extends _base.BasePlugin {
|
93
92
|
constructor() {
|
94
93
|
super(...arguments);
|
95
94
|
/**
|
96
|
-
*
|
95
|
+
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
96
|
+
*/
|
97
|
+
_classPrivateMethodInitSpec(this, _removeContentEditableFromHighlightedCell);
|
98
|
+
/**
|
99
|
+
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
100
|
+
*/
|
101
|
+
_classPrivateMethodInitSpec(this, _addContentEditableToHighlightedCell);
|
102
|
+
/**
|
103
|
+
* Ensure that the `copy`/`cut` events get triggered properly in Safari.
|
97
104
|
*
|
98
|
-
* @
|
99
|
-
* @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
|
100
|
-
* @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
|
101
|
-
* information with the number of copied headers.
|
105
|
+
* @param {string} eventName Name of the event to get triggered.
|
102
106
|
*/
|
103
|
-
_classPrivateMethodInitSpec(this,
|
107
|
+
_classPrivateMethodInitSpec(this, _ensureClipboardEventsGetTriggered);
|
104
108
|
/**
|
105
109
|
* The maximum number of columns than can be copied to the clipboard.
|
106
110
|
*
|
@@ -218,13 +222,6 @@ class CopyPaste extends _base.BasePlugin {
|
|
218
222
|
* @type {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>}
|
219
223
|
*/
|
220
224
|
_defineProperty(this, "copyableRanges", []);
|
221
|
-
/**
|
222
|
-
* Provides focusable element to support IME and copy/paste/cut actions.
|
223
|
-
*
|
224
|
-
* @private
|
225
|
-
* @type {FocusableWrapper}
|
226
|
-
*/
|
227
|
-
_defineProperty(this, "focusableElement", void 0);
|
228
225
|
}
|
229
226
|
static get PLUGIN_KEY() {
|
230
227
|
return PLUGIN_KEY;
|
@@ -251,6 +248,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
251
248
|
* Enables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
|
252
249
|
*/
|
253
250
|
enablePlugin() {
|
251
|
+
var _this = this;
|
254
252
|
if (this.enabled) {
|
255
253
|
return;
|
256
254
|
}
|
@@ -268,11 +266,28 @@ class CopyPaste extends _base.BasePlugin {
|
|
268
266
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
269
267
|
}
|
270
268
|
this.addHook('afterContextMenuDefaultOptions', options => this.onAfterContextMenuDefaultOptions(options));
|
271
|
-
this.addHook('afterOnCellMouseUp', () => this.onAfterOnCellMouseUp());
|
272
269
|
this.addHook('afterSelectionEnd', () => this.onAfterSelectionEnd());
|
273
|
-
this.
|
274
|
-
this.
|
275
|
-
|
270
|
+
this.eventManager = new _eventManager.default(this);
|
271
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
272
|
+
return _this.onCopy(...arguments);
|
273
|
+
});
|
274
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'cut', function () {
|
275
|
+
return _this.onCut(...arguments);
|
276
|
+
});
|
277
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'paste', function () {
|
278
|
+
return _this.onPaste(...arguments);
|
279
|
+
});
|
280
|
+
|
281
|
+
// Without this workaround Safari (tested on Safari@16.5.2) does allow copying/cutting from the browser menu.
|
282
|
+
if ((0, _browser.isSafari)()) {
|
283
|
+
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseenter', function () {
|
284
|
+
return _this.onSafariMouseEnter(...arguments);
|
285
|
+
});
|
286
|
+
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
287
|
+
return _this.onSafariMouseLeave(...arguments);
|
288
|
+
});
|
289
|
+
this.addHook('afterSelection', () => this.onSafariAfterSelection());
|
290
|
+
}
|
276
291
|
super.enablePlugin();
|
277
292
|
}
|
278
293
|
|
@@ -287,7 +302,6 @@ class CopyPaste extends _base.BasePlugin {
|
|
287
302
|
updatePlugin() {
|
288
303
|
this.disablePlugin();
|
289
304
|
this.enablePlugin();
|
290
|
-
this.getOrCreateFocusableElement();
|
291
305
|
super.updatePlugin();
|
292
306
|
}
|
293
307
|
|
@@ -295,9 +309,6 @@ class CopyPaste extends _base.BasePlugin {
|
|
295
309
|
* Disables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
|
296
310
|
*/
|
297
311
|
disablePlugin() {
|
298
|
-
if (this.focusableElement) {
|
299
|
-
(0, _focusableElement.destroyElement)(this.focusableElement);
|
300
|
-
}
|
301
312
|
super.disablePlugin();
|
302
313
|
}
|
303
314
|
|
@@ -319,9 +330,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
319
330
|
let copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
320
331
|
_classPrivateFieldSet(this, _copyMode, copyMode);
|
321
332
|
_classPrivateFieldSet(this, _isTriggeredByCopy, true);
|
322
|
-
this.
|
323
|
-
this.focusableElement.focus();
|
324
|
-
this.hot.rootDocument.execCommand('copy');
|
333
|
+
_classPrivateMethodGet(this, _ensureClipboardEventsGetTriggered, _ensureClipboardEventsGetTriggered2).call(this, 'copy');
|
325
334
|
}
|
326
335
|
|
327
336
|
/**
|
@@ -354,9 +363,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
354
363
|
*/
|
355
364
|
cut() {
|
356
365
|
_classPrivateFieldSet(this, _isTriggeredByCut, true);
|
357
|
-
this.
|
358
|
-
this.focusableElement.focus();
|
359
|
-
this.hot.rootDocument.execCommand('cut');
|
366
|
+
_classPrivateMethodGet(this, _ensureClipboardEventsGetTriggered, _ensureClipboardEventsGetTriggered2).call(this, 'cut');
|
360
367
|
}
|
361
368
|
|
362
369
|
/**
|
@@ -376,26 +383,14 @@ class CopyPaste extends _base.BasePlugin {
|
|
376
383
|
* @returns {Array[]} An array of arrays that will be copied to the clipboard.
|
377
384
|
*/
|
378
385
|
getRangedData(ranges) {
|
379
|
-
const data = [];
|
380
386
|
const {
|
381
387
|
rows,
|
382
388
|
columns
|
383
389
|
} = (0, _copyableRanges.normalizeRanges)(ranges);
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
const rowSet = [];
|
388
|
-
(0, _array.arrayEach)(columns, column => {
|
389
|
-
if (row < 0) {
|
390
|
-
// `row` as the second argument acts here as the `headerLevel` argument
|
391
|
-
rowSet.push(this.hot.getColHeader(column, row));
|
392
|
-
} else {
|
393
|
-
rowSet.push(this.hot.getCopyableData(row, column));
|
394
|
-
}
|
395
|
-
});
|
396
|
-
data.push(rowSet);
|
390
|
+
return (0, _parseTable.getDataByCoords)(this.hot, {
|
391
|
+
rows,
|
392
|
+
columns
|
397
393
|
});
|
398
|
-
return data;
|
399
394
|
}
|
400
395
|
|
401
396
|
/**
|
@@ -412,14 +407,23 @@ class CopyPaste extends _base.BasePlugin {
|
|
412
407
|
if (!pastableText && !pastableHtml) {
|
413
408
|
return;
|
414
409
|
}
|
415
|
-
const pasteData =
|
410
|
+
const pasteData = {
|
411
|
+
clipboardData: {
|
412
|
+
data: {},
|
413
|
+
setData(type, value) {
|
414
|
+
this.data[type] = value;
|
415
|
+
},
|
416
|
+
getData(type) {
|
417
|
+
return this.data[type];
|
418
|
+
}
|
419
|
+
}
|
420
|
+
};
|
416
421
|
if (pastableText) {
|
417
422
|
pasteData.clipboardData.setData('text/plain', pastableText);
|
418
423
|
}
|
419
424
|
if (pastableHtml) {
|
420
425
|
pasteData.clipboardData.setData('text/html', pastableHtml);
|
421
426
|
}
|
422
|
-
this.getOrCreateFocusableElement();
|
423
427
|
this.onPaste(pasteData);
|
424
428
|
}
|
425
429
|
|
@@ -431,6 +435,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
431
435
|
if (!selectionRange) {
|
432
436
|
return;
|
433
437
|
}
|
438
|
+
if (selectionRange.isSingleHeader()) {
|
439
|
+
this.copyableRanges = [];
|
440
|
+
return;
|
441
|
+
}
|
434
442
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
435
443
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
436
444
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -470,21 +478,6 @@ class CopyPaste extends _base.BasePlugin {
|
|
470
478
|
}
|
471
479
|
}
|
472
480
|
|
473
|
-
/**
|
474
|
-
* Force focus on editable element.
|
475
|
-
*
|
476
|
-
* @private
|
477
|
-
*/
|
478
|
-
getOrCreateFocusableElement() {
|
479
|
-
var _this$hot$getActiveEd;
|
480
|
-
const editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
481
|
-
if (editableElement) {
|
482
|
-
this.focusableElement.setFocusableElement(editableElement);
|
483
|
-
} else {
|
484
|
-
this.focusableElement.useSecondaryElement();
|
485
|
-
}
|
486
|
-
}
|
487
|
-
|
488
481
|
/**
|
489
482
|
* Verifies if editor exists and is open.
|
490
483
|
*
|
@@ -492,8 +485,8 @@ class CopyPaste extends _base.BasePlugin {
|
|
492
485
|
* @returns {boolean}
|
493
486
|
*/
|
494
487
|
isEditorOpened() {
|
495
|
-
var _this$hot$
|
496
|
-
return (_this$hot$
|
488
|
+
var _this$hot$getActiveEd;
|
489
|
+
return (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.isOpened();
|
497
490
|
}
|
498
491
|
/**
|
499
492
|
* Prepares new values to populate them into datasource.
|
@@ -560,11 +553,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
560
553
|
this.hot.populateFromArray(startRow, startColumn, newRows, void 0, void 0, 'CopyPaste.paste', this.pasteMode);
|
561
554
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
562
555
|
}
|
563
|
-
|
564
556
|
/**
|
565
557
|
* `copy` event callback on textarea element.
|
566
558
|
*
|
567
|
-
* @param {
|
559
|
+
* @param {ClipboardEvent} event ClipboardEvent.
|
568
560
|
* @private
|
569
561
|
*/
|
570
562
|
onCopy(event) {
|
@@ -573,19 +565,12 @@ class CopyPaste extends _base.BasePlugin {
|
|
573
565
|
}
|
574
566
|
this.setCopyableText();
|
575
567
|
_classPrivateFieldSet(this, _isTriggeredByCopy, false);
|
576
|
-
const
|
577
|
-
const
|
578
|
-
const allowCopying = !!this.hot.runHooks('beforeCopy', data, this.copyableRanges, copiedHeadersCount);
|
568
|
+
const copyClipboardData = new _clipboardData.CopyClipboardData(this.hot, this.copyableRanges);
|
569
|
+
const allowCopying = !!this.hot.runHooks('beforeCopy', copyClipboardData);
|
579
570
|
if (allowCopying) {
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
event.clipboardData.setData('text/plain', textPlain);
|
584
|
-
event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
|
585
|
-
} else if (typeof ClipboardEvent === 'undefined') {
|
586
|
-
this.hot.rootWindow.clipboardData.setData('Text', textPlain);
|
587
|
-
}
|
588
|
-
this.hot.runHooks('afterCopy', data, this.copyableRanges, copiedHeadersCount);
|
571
|
+
event.clipboardData.setData('text/plain', (0, _SheetClip.stringify)(copyClipboardData.getData()));
|
572
|
+
event.clipboardData.setData('text/html', [copyClipboardData.getType() === 'handsontable' ? _clipboardData.META_HEAD : '', (0, _parseTable.getHTMLFromConfig)(copyClipboardData.getMetaInfo())].join(''));
|
573
|
+
this.hot.runHooks('afterCopy', copyClipboardData);
|
589
574
|
}
|
590
575
|
_classPrivateFieldSet(this, _copyMode, 'cells-only');
|
591
576
|
event.preventDefault();
|
@@ -594,7 +579,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
594
579
|
/**
|
595
580
|
* `cut` event callback on textarea element.
|
596
581
|
*
|
597
|
-
* @param {
|
582
|
+
* @param {ClipboardEvent} event ClipboardEvent.
|
598
583
|
* @private
|
599
584
|
*/
|
600
585
|
onCut(event) {
|
@@ -603,19 +588,13 @@ class CopyPaste extends _base.BasePlugin {
|
|
603
588
|
}
|
604
589
|
this.setCopyableText();
|
605
590
|
_classPrivateFieldSet(this, _isTriggeredByCut, false);
|
606
|
-
const
|
607
|
-
const allowCuttingOut = !!this.hot.runHooks('beforeCut',
|
591
|
+
const copyClipboardData = new _clipboardData.CopyClipboardData(this.hot, this.copyableRanges);
|
592
|
+
const allowCuttingOut = !!this.hot.runHooks('beforeCut', copyClipboardData);
|
608
593
|
if (allowCuttingOut) {
|
609
|
-
|
610
|
-
|
611
|
-
const textHTML = (0, _parseTable._dataToHTML)(rangedData, this.hot.rootDocument);
|
612
|
-
event.clipboardData.setData('text/plain', textPlain);
|
613
|
-
event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
|
614
|
-
} else if (typeof ClipboardEvent === 'undefined') {
|
615
|
-
this.hot.rootWindow.clipboardData.setData('Text', textPlain);
|
616
|
-
}
|
594
|
+
event.clipboardData.setData('text/plain', (0, _SheetClip.stringify)(copyClipboardData.getData()));
|
595
|
+
event.clipboardData.setData('text/html', [copyClipboardData.getType() === 'handsontable' ? _clipboardData.META_HEAD : '', (0, _parseTable.getHTMLFromConfig)(copyClipboardData.getMetaInfo())].join(''));
|
617
596
|
this.hot.emptySelectedCells('CopyPaste.cut');
|
618
|
-
this.hot.runHooks('afterCut',
|
597
|
+
this.hot.runHooks('afterCut', copyClipboardData);
|
619
598
|
}
|
620
599
|
event.preventDefault();
|
621
600
|
}
|
@@ -627,40 +606,28 @@ class CopyPaste extends _base.BasePlugin {
|
|
627
606
|
* @private
|
628
607
|
*/
|
629
608
|
onPaste(event) {
|
630
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
609
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
631
610
|
return;
|
632
611
|
}
|
633
612
|
if (event && event.preventDefault) {
|
634
613
|
event.preventDefault();
|
635
614
|
}
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
if (textHTML && /(<table)|(<TABLE)/g.test(textHTML)) {
|
644
|
-
const parsedConfig = (0, _parseTable.htmlToGridSettings)(textHTML, this.hot.rootDocument);
|
645
|
-
pastedData = parsedConfig.data;
|
646
|
-
} else {
|
647
|
-
pastedData = event.clipboardData.getData('text/plain');
|
648
|
-
}
|
649
|
-
} else if (typeof ClipboardEvent === 'undefined' && typeof this.hot.rootWindow.clipboardData !== 'undefined') {
|
650
|
-
pastedData = this.hot.rootWindow.clipboardData.getData('Text');
|
651
|
-
}
|
652
|
-
if (typeof pastedData === 'string') {
|
653
|
-
pastedData = (0, _SheetClip.parse)(pastedData);
|
654
|
-
}
|
655
|
-
if (pastedData && pastedData.length === 0) {
|
615
|
+
const html = (0, _string.sanitize)(event.clipboardData.getData('text/html'), {
|
616
|
+
ADD_TAGS: ['meta'],
|
617
|
+
ADD_ATTR: ['content'],
|
618
|
+
FORCE_BODY: true
|
619
|
+
});
|
620
|
+
const pasteClipboardData = new _clipboardData.PasteClipboardData(event.clipboardData.getData('text/plain'), html);
|
621
|
+
if (this.hot.runHooks('beforePaste', pasteClipboardData) === false) {
|
656
622
|
return;
|
657
623
|
}
|
658
|
-
|
624
|
+
const pastedTable = pasteClipboardData.getData();
|
625
|
+
if (pastedTable.length === 0) {
|
659
626
|
return;
|
660
627
|
}
|
661
|
-
const [startRow, startColumn, endRow, endColumn] = this.populateValues(
|
628
|
+
const [startRow, startColumn, endRow, endColumn] = this.populateValues(pastedTable);
|
662
629
|
this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
|
663
|
-
this.hot.runHooks('afterPaste',
|
630
|
+
this.hot.runHooks('afterPaste', pasteClipboardData);
|
664
631
|
}
|
665
632
|
|
666
633
|
/**
|
@@ -685,21 +652,6 @@ class CopyPaste extends _base.BasePlugin {
|
|
685
652
|
options.items.push((0, _cut.default)(this));
|
686
653
|
}
|
687
654
|
|
688
|
-
/**
|
689
|
-
* Force focus on focusableElement.
|
690
|
-
*
|
691
|
-
* @private
|
692
|
-
*/
|
693
|
-
onAfterOnCellMouseUp() {
|
694
|
-
// Changing focused element will remove current selection. It's unnecessary in case when we give possibility
|
695
|
-
// for fragment selection
|
696
|
-
if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
|
697
|
-
return;
|
698
|
-
}
|
699
|
-
this.getOrCreateFocusableElement();
|
700
|
-
this.focusableElement.focus();
|
701
|
-
}
|
702
|
-
|
703
655
|
/**
|
704
656
|
* Force focus on focusableElement after end of the selection.
|
705
657
|
*
|
@@ -709,56 +661,97 @@ class CopyPaste extends _base.BasePlugin {
|
|
709
661
|
if (this.isEditorOpened()) {
|
710
662
|
return;
|
711
663
|
}
|
712
|
-
this.
|
713
|
-
if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && (0, _element.getSelectionText)()) {
|
664
|
+
if (this.hot.getSettings().fragmentSelection) {
|
714
665
|
return;
|
715
666
|
}
|
716
667
|
this.setCopyableText();
|
717
|
-
this.focusableElement.focus();
|
718
668
|
}
|
719
669
|
|
720
670
|
/**
|
721
|
-
* `
|
671
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
672
|
+
* browser's menu.
|
722
673
|
*
|
723
674
|
* @private
|
724
675
|
*/
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
676
|
+
onSafariMouseEnter() {
|
677
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
678
|
+
}
|
679
|
+
|
680
|
+
/**
|
681
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
682
|
+
* browser's menu.
|
683
|
+
*
|
684
|
+
* @private
|
685
|
+
*/
|
686
|
+
onSafariMouseLeave() {
|
687
|
+
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
688
|
+
}
|
689
|
+
|
690
|
+
/**
|
691
|
+
* `afterSelection` hook callback triggered only on Safari.
|
692
|
+
*
|
693
|
+
* @private
|
694
|
+
*/
|
695
|
+
onSafariAfterSelection() {
|
696
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
736
697
|
}
|
737
698
|
|
738
699
|
/**
|
739
700
|
* Destroys the `CopyPaste` plugin instance.
|
740
701
|
*/
|
741
702
|
destroy() {
|
742
|
-
if (this.focusableElement) {
|
743
|
-
(0, _focusableElement.destroyElement)(this.focusableElement);
|
744
|
-
this.focusableElement = null;
|
745
|
-
}
|
746
703
|
super.destroy();
|
747
704
|
}
|
748
705
|
}
|
749
706
|
exports.CopyPaste = CopyPaste;
|
750
|
-
function
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
707
|
+
function _ensureClipboardEventsGetTriggered2(eventName) {
|
708
|
+
// Without this workaround Safari (tested on Safari@16.5.2) does not trigger the 'copy' event.
|
709
|
+
if ((0, _browser.isSafari)()) {
|
710
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
711
|
+
if (lastSelectedRange) {
|
712
|
+
const {
|
713
|
+
row: highlightRow,
|
714
|
+
col: highlightColumn
|
715
|
+
} = lastSelectedRange.highlight;
|
716
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
717
|
+
if (currentlySelectedCell) {
|
718
|
+
(0, _element.runWithSelectedContendEditableElement)(currentlySelectedCell, () => {
|
719
|
+
this.hot.rootDocument.execCommand(eventName);
|
720
|
+
});
|
721
|
+
}
|
722
|
+
}
|
723
|
+
} else {
|
724
|
+
this.hot.rootDocument.execCommand(eventName);
|
725
|
+
}
|
726
|
+
}
|
727
|
+
function _addContentEditableToHighlightedCell2() {
|
728
|
+
if (this.hot.isListening()) {
|
729
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
730
|
+
if (lastSelectedRange) {
|
731
|
+
const {
|
732
|
+
row: highlightRow,
|
733
|
+
col: highlightColumn
|
734
|
+
} = lastSelectedRange.highlight;
|
735
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
736
|
+
if (currentlySelectedCell) {
|
737
|
+
(0, _element.makeElementContentEditableAndSelectItsContent)(currentlySelectedCell);
|
738
|
+
}
|
739
|
+
}
|
740
|
+
}
|
741
|
+
}
|
742
|
+
function _removeContentEditableFromHighlightedCell2() {
|
743
|
+
// If the instance is not listening, the workaround is not needed.
|
744
|
+
if (this.hot.isListening()) {
|
745
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
746
|
+
if (lastSelectedRange) {
|
747
|
+
const {
|
748
|
+
row: highlightRow,
|
749
|
+
col: highlightColumn
|
750
|
+
} = lastSelectedRange.highlight;
|
751
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
752
|
+
if (currentlySelectedCell !== null && currentlySelectedCell !== void 0 && currentlySelectedCell.hasAttribute('contenteditable')) {
|
753
|
+
(0, _element.removeContentEditableFromElementAndDeselect)(currentlySelectedCell);
|
754
|
+
}
|
758
755
|
}
|
759
|
-
columnHeadersCount += 1;
|
760
756
|
}
|
761
|
-
return {
|
762
|
-
columnHeadersCount
|
763
|
-
};
|
764
757
|
}
|