handsontable 13.1.0 → 14.0.0-next-e8f87aa-20231030
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/calculator/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
|
}
|