handsontable 13.1.0-next-e1a7d2c-20230831 → 14.0.0-next-d97b156-20231027
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 +21236 -14104
- package/dist/handsontable.full.min.css +8 -8
- package/dist/handsontable.full.min.js +170 -152
- package/dist/handsontable.js +22016 -15254
- package/dist/handsontable.min.css +7 -7
- package/dist/handsontable.min.js +31 -23
- 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 +108 -66
- package/plugins/filters/filters.mjs +99 -55
- 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,27 +6,27 @@ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollect
|
|
6
6
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
7
7
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
8
8
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
9
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
10
9
|
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
11
10
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
11
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
12
12
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
13
13
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
14
14
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
15
15
|
import { BasePlugin } from "../base/index.mjs";
|
16
16
|
import Hooks from "../../pluginHooks.mjs";
|
17
|
-
import { stringify
|
18
|
-
import { arrayEach } from "../../helpers/array.mjs";
|
17
|
+
import { stringify } from "../../3rdparty/SheetClip/index.mjs";
|
19
18
|
import { sanitize } from "../../helpers/string.mjs";
|
20
|
-
import {
|
19
|
+
import { removeContentEditableFromElementAndDeselect, runWithSelectedContendEditableElement, makeElementContentEditableAndSelectItsContent } from "../../helpers/dom/element.mjs";
|
20
|
+
import { isSafari } from "../../helpers/browser.mjs";
|
21
21
|
import copyItem from "./contextMenuItem/copy.mjs";
|
22
22
|
import copyColumnHeadersOnlyItem from "./contextMenuItem/copyColumnHeadersOnly.mjs";
|
23
23
|
import copyWithColumnGroupHeadersItem from "./contextMenuItem/copyWithColumnGroupHeaders.mjs";
|
24
24
|
import copyWithColumnHeadersItem from "./contextMenuItem/copyWithColumnHeaders.mjs";
|
25
25
|
import cutItem from "./contextMenuItem/cut.mjs";
|
26
|
-
import PasteEvent from "./pasteEvent.mjs";
|
27
|
-
import { createElement, destroyElement } from "./focusableElement.mjs";
|
28
26
|
import { CopyableRangesFactory, normalizeRanges } from "./copyableRanges.mjs";
|
29
|
-
import {
|
27
|
+
import { getDataByCoords, getHTMLFromConfig } from "../../utils/parseTable.mjs";
|
28
|
+
import EventManager from "../../eventManager.mjs";
|
29
|
+
import { CopyClipboardData, PasteClipboardData, META_HEAD } from "./clipboardData/index.mjs";
|
30
30
|
Hooks.getSingleton().register('afterCopyLimit');
|
31
31
|
Hooks.getSingleton().register('modifyCopyableRange');
|
32
32
|
Hooks.getSingleton().register('beforeCut');
|
@@ -38,7 +38,6 @@ Hooks.getSingleton().register('afterCopy');
|
|
38
38
|
export const PLUGIN_KEY = 'copyPaste';
|
39
39
|
export const PLUGIN_PRIORITY = 80;
|
40
40
|
const SETTING_KEYS = ['fragmentSelection'];
|
41
|
-
const META_HEAD = ['<meta name="generator" content="Handsontable"/>', '<style type="text/css">td{white-space:normal}br{mso-data-placement:same-cell}</style>'].join('');
|
42
41
|
|
43
42
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
44
43
|
/**
|
@@ -82,19 +81,26 @@ var _copyMode = /*#__PURE__*/new WeakMap();
|
|
82
81
|
var _isTriggeredByCopy = /*#__PURE__*/new WeakMap();
|
83
82
|
var _isTriggeredByCut = /*#__PURE__*/new WeakMap();
|
84
83
|
var _copyableRangesFactory = /*#__PURE__*/new WeakMap();
|
85
|
-
var
|
84
|
+
var _ensureClipboardEventsGetTriggered = /*#__PURE__*/new WeakSet();
|
85
|
+
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
86
|
+
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
86
87
|
export class CopyPaste extends BasePlugin {
|
87
88
|
constructor() {
|
88
89
|
super(...arguments);
|
89
90
|
/**
|
90
|
-
*
|
91
|
+
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
92
|
+
*/
|
93
|
+
_classPrivateMethodInitSpec(this, _removeContentEditableFromHighlightedCell);
|
94
|
+
/**
|
95
|
+
* Add the `contenteditable` attribute to the highlighted cell and select its content.
|
96
|
+
*/
|
97
|
+
_classPrivateMethodInitSpec(this, _addContentEditableToHighlightedCell);
|
98
|
+
/**
|
99
|
+
* Ensure that the `copy`/`cut` events get triggered properly in Safari.
|
91
100
|
*
|
92
|
-
* @
|
93
|
-
* @param {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>} ranges Array of objects with properties `startRow`, `startCol`, `endRow` and `endCol`.
|
94
|
-
* @returns {{ columnHeadersCount: number }} Returns an object with keys that holds
|
95
|
-
* information with the number of copied headers.
|
101
|
+
* @param {string} eventName Name of the event to get triggered.
|
96
102
|
*/
|
97
|
-
_classPrivateMethodInitSpec(this,
|
103
|
+
_classPrivateMethodInitSpec(this, _ensureClipboardEventsGetTriggered);
|
98
104
|
/**
|
99
105
|
* The maximum number of columns than can be copied to the clipboard.
|
100
106
|
*
|
@@ -212,13 +218,6 @@ export class CopyPaste extends BasePlugin {
|
|
212
218
|
* @type {Array<{startRow: number, startCol: number, endRow: number, endCol: number}>}
|
213
219
|
*/
|
214
220
|
_defineProperty(this, "copyableRanges", []);
|
215
|
-
/**
|
216
|
-
* Provides focusable element to support IME and copy/paste/cut actions.
|
217
|
-
*
|
218
|
-
* @private
|
219
|
-
* @type {FocusableWrapper}
|
220
|
-
*/
|
221
|
-
_defineProperty(this, "focusableElement", void 0);
|
222
221
|
}
|
223
222
|
static get PLUGIN_KEY() {
|
224
223
|
return PLUGIN_KEY;
|
@@ -245,6 +244,7 @@ export class CopyPaste extends BasePlugin {
|
|
245
244
|
* Enables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
|
246
245
|
*/
|
247
246
|
enablePlugin() {
|
247
|
+
var _this = this;
|
248
248
|
if (this.enabled) {
|
249
249
|
return;
|
250
250
|
}
|
@@ -262,11 +262,28 @@ export class CopyPaste extends BasePlugin {
|
|
262
262
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
263
263
|
}
|
264
264
|
this.addHook('afterContextMenuDefaultOptions', options => this.onAfterContextMenuDefaultOptions(options));
|
265
|
-
this.addHook('afterOnCellMouseUp', () => this.onAfterOnCellMouseUp());
|
266
265
|
this.addHook('afterSelectionEnd', () => this.onAfterSelectionEnd());
|
267
|
-
this.
|
268
|
-
this.
|
269
|
-
|
266
|
+
this.eventManager = new EventManager(this);
|
267
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
268
|
+
return _this.onCopy(...arguments);
|
269
|
+
});
|
270
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'cut', function () {
|
271
|
+
return _this.onCut(...arguments);
|
272
|
+
});
|
273
|
+
this.eventManager.addEventListener(this.hot.rootDocument, 'paste', function () {
|
274
|
+
return _this.onPaste(...arguments);
|
275
|
+
});
|
276
|
+
|
277
|
+
// Without this workaround Safari (tested on Safari@16.5.2) does allow copying/cutting from the browser menu.
|
278
|
+
if (isSafari()) {
|
279
|
+
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseenter', function () {
|
280
|
+
return _this.onSafariMouseEnter(...arguments);
|
281
|
+
});
|
282
|
+
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
283
|
+
return _this.onSafariMouseLeave(...arguments);
|
284
|
+
});
|
285
|
+
this.addHook('afterSelection', () => this.onSafariAfterSelection());
|
286
|
+
}
|
270
287
|
super.enablePlugin();
|
271
288
|
}
|
272
289
|
|
@@ -281,7 +298,6 @@ export class CopyPaste extends BasePlugin {
|
|
281
298
|
updatePlugin() {
|
282
299
|
this.disablePlugin();
|
283
300
|
this.enablePlugin();
|
284
|
-
this.getOrCreateFocusableElement();
|
285
301
|
super.updatePlugin();
|
286
302
|
}
|
287
303
|
|
@@ -289,9 +305,6 @@ export class CopyPaste extends BasePlugin {
|
|
289
305
|
* Disables the [`CopyPaste`](#copypaste) plugin for your Handsontable instance.
|
290
306
|
*/
|
291
307
|
disablePlugin() {
|
292
|
-
if (this.focusableElement) {
|
293
|
-
destroyElement(this.focusableElement);
|
294
|
-
}
|
295
308
|
super.disablePlugin();
|
296
309
|
}
|
297
310
|
|
@@ -313,9 +326,7 @@ export class CopyPaste extends BasePlugin {
|
|
313
326
|
let copyMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'cells-only';
|
314
327
|
_classPrivateFieldSet(this, _copyMode, copyMode);
|
315
328
|
_classPrivateFieldSet(this, _isTriggeredByCopy, true);
|
316
|
-
this.
|
317
|
-
this.focusableElement.focus();
|
318
|
-
this.hot.rootDocument.execCommand('copy');
|
329
|
+
_classPrivateMethodGet(this, _ensureClipboardEventsGetTriggered, _ensureClipboardEventsGetTriggered2).call(this, 'copy');
|
319
330
|
}
|
320
331
|
|
321
332
|
/**
|
@@ -348,9 +359,7 @@ export class CopyPaste extends BasePlugin {
|
|
348
359
|
*/
|
349
360
|
cut() {
|
350
361
|
_classPrivateFieldSet(this, _isTriggeredByCut, true);
|
351
|
-
this.
|
352
|
-
this.focusableElement.focus();
|
353
|
-
this.hot.rootDocument.execCommand('cut');
|
362
|
+
_classPrivateMethodGet(this, _ensureClipboardEventsGetTriggered, _ensureClipboardEventsGetTriggered2).call(this, 'cut');
|
354
363
|
}
|
355
364
|
|
356
365
|
/**
|
@@ -370,26 +379,14 @@ export class CopyPaste extends BasePlugin {
|
|
370
379
|
* @returns {Array[]} An array of arrays that will be copied to the clipboard.
|
371
380
|
*/
|
372
381
|
getRangedData(ranges) {
|
373
|
-
const data = [];
|
374
382
|
const {
|
375
383
|
rows,
|
376
384
|
columns
|
377
385
|
} = normalizeRanges(ranges);
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
const rowSet = [];
|
382
|
-
arrayEach(columns, column => {
|
383
|
-
if (row < 0) {
|
384
|
-
// `row` as the second argument acts here as the `headerLevel` argument
|
385
|
-
rowSet.push(this.hot.getColHeader(column, row));
|
386
|
-
} else {
|
387
|
-
rowSet.push(this.hot.getCopyableData(row, column));
|
388
|
-
}
|
389
|
-
});
|
390
|
-
data.push(rowSet);
|
386
|
+
return getDataByCoords(this.hot, {
|
387
|
+
rows,
|
388
|
+
columns
|
391
389
|
});
|
392
|
-
return data;
|
393
390
|
}
|
394
391
|
|
395
392
|
/**
|
@@ -406,14 +403,23 @@ export class CopyPaste extends BasePlugin {
|
|
406
403
|
if (!pastableText && !pastableHtml) {
|
407
404
|
return;
|
408
405
|
}
|
409
|
-
const pasteData =
|
406
|
+
const pasteData = {
|
407
|
+
clipboardData: {
|
408
|
+
data: {},
|
409
|
+
setData(type, value) {
|
410
|
+
this.data[type] = value;
|
411
|
+
},
|
412
|
+
getData(type) {
|
413
|
+
return this.data[type];
|
414
|
+
}
|
415
|
+
}
|
416
|
+
};
|
410
417
|
if (pastableText) {
|
411
418
|
pasteData.clipboardData.setData('text/plain', pastableText);
|
412
419
|
}
|
413
420
|
if (pastableHtml) {
|
414
421
|
pasteData.clipboardData.setData('text/html', pastableHtml);
|
415
422
|
}
|
416
|
-
this.getOrCreateFocusableElement();
|
417
423
|
this.onPaste(pasteData);
|
418
424
|
}
|
419
425
|
|
@@ -425,6 +431,10 @@ export class CopyPaste extends BasePlugin {
|
|
425
431
|
if (!selectionRange) {
|
426
432
|
return;
|
427
433
|
}
|
434
|
+
if (selectionRange.isSingleHeader()) {
|
435
|
+
this.copyableRanges = [];
|
436
|
+
return;
|
437
|
+
}
|
428
438
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
429
439
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
430
440
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -464,21 +474,6 @@ export class CopyPaste extends BasePlugin {
|
|
464
474
|
}
|
465
475
|
}
|
466
476
|
|
467
|
-
/**
|
468
|
-
* Force focus on editable element.
|
469
|
-
*
|
470
|
-
* @private
|
471
|
-
*/
|
472
|
-
getOrCreateFocusableElement() {
|
473
|
-
var _this$hot$getActiveEd;
|
474
|
-
const editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
475
|
-
if (editableElement) {
|
476
|
-
this.focusableElement.setFocusableElement(editableElement);
|
477
|
-
} else {
|
478
|
-
this.focusableElement.useSecondaryElement();
|
479
|
-
}
|
480
|
-
}
|
481
|
-
|
482
477
|
/**
|
483
478
|
* Verifies if editor exists and is open.
|
484
479
|
*
|
@@ -486,8 +481,8 @@ export class CopyPaste extends BasePlugin {
|
|
486
481
|
* @returns {boolean}
|
487
482
|
*/
|
488
483
|
isEditorOpened() {
|
489
|
-
var _this$hot$
|
490
|
-
return (_this$hot$
|
484
|
+
var _this$hot$getActiveEd;
|
485
|
+
return (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.isOpened();
|
491
486
|
}
|
492
487
|
/**
|
493
488
|
* Prepares new values to populate them into datasource.
|
@@ -554,11 +549,10 @@ export class CopyPaste extends BasePlugin {
|
|
554
549
|
this.hot.populateFromArray(startRow, startColumn, newRows, void 0, void 0, 'CopyPaste.paste', this.pasteMode);
|
555
550
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
556
551
|
}
|
557
|
-
|
558
552
|
/**
|
559
553
|
* `copy` event callback on textarea element.
|
560
554
|
*
|
561
|
-
* @param {
|
555
|
+
* @param {ClipboardEvent} event ClipboardEvent.
|
562
556
|
* @private
|
563
557
|
*/
|
564
558
|
onCopy(event) {
|
@@ -567,19 +561,12 @@ export class CopyPaste extends BasePlugin {
|
|
567
561
|
}
|
568
562
|
this.setCopyableText();
|
569
563
|
_classPrivateFieldSet(this, _isTriggeredByCopy, false);
|
570
|
-
const
|
571
|
-
const
|
572
|
-
const allowCopying = !!this.hot.runHooks('beforeCopy', data, this.copyableRanges, copiedHeadersCount);
|
564
|
+
const copyClipboardData = new CopyClipboardData(this.hot, this.copyableRanges);
|
565
|
+
const allowCopying = !!this.hot.runHooks('beforeCopy', copyClipboardData);
|
573
566
|
if (allowCopying) {
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
event.clipboardData.setData('text/plain', textPlain);
|
578
|
-
event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
|
579
|
-
} else if (typeof ClipboardEvent === 'undefined') {
|
580
|
-
this.hot.rootWindow.clipboardData.setData('Text', textPlain);
|
581
|
-
}
|
582
|
-
this.hot.runHooks('afterCopy', data, this.copyableRanges, copiedHeadersCount);
|
567
|
+
event.clipboardData.setData('text/plain', stringify(copyClipboardData.getData()));
|
568
|
+
event.clipboardData.setData('text/html', [copyClipboardData.getType() === 'handsontable' ? META_HEAD : '', getHTMLFromConfig(copyClipboardData.getMetaInfo())].join(''));
|
569
|
+
this.hot.runHooks('afterCopy', copyClipboardData);
|
583
570
|
}
|
584
571
|
_classPrivateFieldSet(this, _copyMode, 'cells-only');
|
585
572
|
event.preventDefault();
|
@@ -588,7 +575,7 @@ export class CopyPaste extends BasePlugin {
|
|
588
575
|
/**
|
589
576
|
* `cut` event callback on textarea element.
|
590
577
|
*
|
591
|
-
* @param {
|
578
|
+
* @param {ClipboardEvent} event ClipboardEvent.
|
592
579
|
* @private
|
593
580
|
*/
|
594
581
|
onCut(event) {
|
@@ -597,19 +584,13 @@ export class CopyPaste extends BasePlugin {
|
|
597
584
|
}
|
598
585
|
this.setCopyableText();
|
599
586
|
_classPrivateFieldSet(this, _isTriggeredByCut, false);
|
600
|
-
const
|
601
|
-
const allowCuttingOut = !!this.hot.runHooks('beforeCut',
|
587
|
+
const copyClipboardData = new CopyClipboardData(this.hot, this.copyableRanges);
|
588
|
+
const allowCuttingOut = !!this.hot.runHooks('beforeCut', copyClipboardData);
|
602
589
|
if (allowCuttingOut) {
|
603
|
-
|
604
|
-
|
605
|
-
const textHTML = _dataToHTML(rangedData, this.hot.rootDocument);
|
606
|
-
event.clipboardData.setData('text/plain', textPlain);
|
607
|
-
event.clipboardData.setData('text/html', [META_HEAD, textHTML].join(''));
|
608
|
-
} else if (typeof ClipboardEvent === 'undefined') {
|
609
|
-
this.hot.rootWindow.clipboardData.setData('Text', textPlain);
|
610
|
-
}
|
590
|
+
event.clipboardData.setData('text/plain', stringify(copyClipboardData.getData()));
|
591
|
+
event.clipboardData.setData('text/html', [copyClipboardData.getType() === 'handsontable' ? META_HEAD : '', getHTMLFromConfig(copyClipboardData.getMetaInfo())].join(''));
|
611
592
|
this.hot.emptySelectedCells('CopyPaste.cut');
|
612
|
-
this.hot.runHooks('afterCut',
|
593
|
+
this.hot.runHooks('afterCut', copyClipboardData);
|
613
594
|
}
|
614
595
|
event.preventDefault();
|
615
596
|
}
|
@@ -621,40 +602,28 @@ export class CopyPaste extends BasePlugin {
|
|
621
602
|
* @private
|
622
603
|
*/
|
623
604
|
onPaste(event) {
|
624
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
605
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
625
606
|
return;
|
626
607
|
}
|
627
608
|
if (event && event.preventDefault) {
|
628
609
|
event.preventDefault();
|
629
610
|
}
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
if (textHTML && /(<table)|(<TABLE)/g.test(textHTML)) {
|
638
|
-
const parsedConfig = htmlToGridSettings(textHTML, this.hot.rootDocument);
|
639
|
-
pastedData = parsedConfig.data;
|
640
|
-
} else {
|
641
|
-
pastedData = event.clipboardData.getData('text/plain');
|
642
|
-
}
|
643
|
-
} else if (typeof ClipboardEvent === 'undefined' && typeof this.hot.rootWindow.clipboardData !== 'undefined') {
|
644
|
-
pastedData = this.hot.rootWindow.clipboardData.getData('Text');
|
645
|
-
}
|
646
|
-
if (typeof pastedData === 'string') {
|
647
|
-
pastedData = parse(pastedData);
|
648
|
-
}
|
649
|
-
if (pastedData && pastedData.length === 0) {
|
611
|
+
const html = sanitize(event.clipboardData.getData('text/html'), {
|
612
|
+
ADD_TAGS: ['meta'],
|
613
|
+
ADD_ATTR: ['content'],
|
614
|
+
FORCE_BODY: true
|
615
|
+
});
|
616
|
+
const pasteClipboardData = new PasteClipboardData(event.clipboardData.getData('text/plain'), html);
|
617
|
+
if (this.hot.runHooks('beforePaste', pasteClipboardData) === false) {
|
650
618
|
return;
|
651
619
|
}
|
652
|
-
|
620
|
+
const pastedTable = pasteClipboardData.getData();
|
621
|
+
if (pastedTable.length === 0) {
|
653
622
|
return;
|
654
623
|
}
|
655
|
-
const [startRow, startColumn, endRow, endColumn] = this.populateValues(
|
624
|
+
const [startRow, startColumn, endRow, endColumn] = this.populateValues(pastedTable);
|
656
625
|
this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
|
657
|
-
this.hot.runHooks('afterPaste',
|
626
|
+
this.hot.runHooks('afterPaste', pasteClipboardData);
|
658
627
|
}
|
659
628
|
|
660
629
|
/**
|
@@ -679,21 +648,6 @@ export class CopyPaste extends BasePlugin {
|
|
679
648
|
options.items.push(cutItem(this));
|
680
649
|
}
|
681
650
|
|
682
|
-
/**
|
683
|
-
* Force focus on focusableElement.
|
684
|
-
*
|
685
|
-
* @private
|
686
|
-
*/
|
687
|
-
onAfterOnCellMouseUp() {
|
688
|
-
// Changing focused element will remove current selection. It's unnecessary in case when we give possibility
|
689
|
-
// for fragment selection
|
690
|
-
if (!this.hot.isListening() || this.isEditorOpened() || this.hot.getSettings().fragmentSelection) {
|
691
|
-
return;
|
692
|
-
}
|
693
|
-
this.getOrCreateFocusableElement();
|
694
|
-
this.focusableElement.focus();
|
695
|
-
}
|
696
|
-
|
697
651
|
/**
|
698
652
|
* Force focus on focusableElement after end of the selection.
|
699
653
|
*
|
@@ -703,55 +657,96 @@ export class CopyPaste extends BasePlugin {
|
|
703
657
|
if (this.isEditorOpened()) {
|
704
658
|
return;
|
705
659
|
}
|
706
|
-
this.
|
707
|
-
if (this.hot.getSettings().fragmentSelection && this.focusableElement.getFocusableElement() !== this.hot.rootDocument.activeElement && getSelectionText()) {
|
660
|
+
if (this.hot.getSettings().fragmentSelection) {
|
708
661
|
return;
|
709
662
|
}
|
710
663
|
this.setCopyableText();
|
711
|
-
this.focusableElement.focus();
|
712
664
|
}
|
713
665
|
|
714
666
|
/**
|
715
|
-
* `
|
667
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
668
|
+
* browser's menu.
|
716
669
|
*
|
717
670
|
* @private
|
718
671
|
*/
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
672
|
+
onSafariMouseEnter() {
|
673
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
674
|
+
}
|
675
|
+
|
676
|
+
/**
|
677
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
678
|
+
* browser's menu.
|
679
|
+
*
|
680
|
+
* @private
|
681
|
+
*/
|
682
|
+
onSafariMouseLeave() {
|
683
|
+
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
684
|
+
}
|
685
|
+
|
686
|
+
/**
|
687
|
+
* `afterSelection` hook callback triggered only on Safari.
|
688
|
+
*
|
689
|
+
* @private
|
690
|
+
*/
|
691
|
+
onSafariAfterSelection() {
|
692
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
730
693
|
}
|
731
694
|
|
732
695
|
/**
|
733
696
|
* Destroys the `CopyPaste` plugin instance.
|
734
697
|
*/
|
735
698
|
destroy() {
|
736
|
-
if (this.focusableElement) {
|
737
|
-
destroyElement(this.focusableElement);
|
738
|
-
this.focusableElement = null;
|
739
|
-
}
|
740
699
|
super.destroy();
|
741
700
|
}
|
742
701
|
}
|
743
|
-
function
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
702
|
+
function _ensureClipboardEventsGetTriggered2(eventName) {
|
703
|
+
// Without this workaround Safari (tested on Safari@16.5.2) does not trigger the 'copy' event.
|
704
|
+
if (isSafari()) {
|
705
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
706
|
+
if (lastSelectedRange) {
|
707
|
+
const {
|
708
|
+
row: highlightRow,
|
709
|
+
col: highlightColumn
|
710
|
+
} = lastSelectedRange.highlight;
|
711
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
712
|
+
if (currentlySelectedCell) {
|
713
|
+
runWithSelectedContendEditableElement(currentlySelectedCell, () => {
|
714
|
+
this.hot.rootDocument.execCommand(eventName);
|
715
|
+
});
|
716
|
+
}
|
717
|
+
}
|
718
|
+
} else {
|
719
|
+
this.hot.rootDocument.execCommand(eventName);
|
720
|
+
}
|
721
|
+
}
|
722
|
+
function _addContentEditableToHighlightedCell2() {
|
723
|
+
if (this.hot.isListening()) {
|
724
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
725
|
+
if (lastSelectedRange) {
|
726
|
+
const {
|
727
|
+
row: highlightRow,
|
728
|
+
col: highlightColumn
|
729
|
+
} = lastSelectedRange.highlight;
|
730
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
731
|
+
if (currentlySelectedCell) {
|
732
|
+
makeElementContentEditableAndSelectItsContent(currentlySelectedCell);
|
733
|
+
}
|
734
|
+
}
|
735
|
+
}
|
736
|
+
}
|
737
|
+
function _removeContentEditableFromHighlightedCell2() {
|
738
|
+
// If the instance is not listening, the workaround is not needed.
|
739
|
+
if (this.hot.isListening()) {
|
740
|
+
const lastSelectedRange = this.hot.getSelectedRangeLast();
|
741
|
+
if (lastSelectedRange) {
|
742
|
+
const {
|
743
|
+
row: highlightRow,
|
744
|
+
col: highlightColumn
|
745
|
+
} = lastSelectedRange.highlight;
|
746
|
+
const currentlySelectedCell = this.hot.getCell(highlightRow, highlightColumn, true);
|
747
|
+
if (currentlySelectedCell !== null && currentlySelectedCell !== void 0 && currentlySelectedCell.hasAttribute('contenteditable')) {
|
748
|
+
removeContentEditableFromElementAndDeselect(currentlySelectedCell);
|
749
|
+
}
|
751
750
|
}
|
752
|
-
columnHeadersCount += 1;
|
753
751
|
}
|
754
|
-
return {
|
755
|
-
columnHeadersCount
|
756
|
-
};
|
757
752
|
}
|
@@ -4,8 +4,8 @@ exports.__esModule = true;
|
|
4
4
|
exports.default = bottom;
|
5
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
6
|
var _utils = require("../utils");
|
7
|
-
function _getRequireWildcardCache(
|
8
|
-
function _interopRequireWildcard(
|
7
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
8
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
9
9
|
/**
|
10
10
|
* @param {CustomBorders} customBordersPlugin The plugin instance.
|
11
11
|
* @returns {object}
|
@@ -4,8 +4,8 @@ exports.__esModule = true;
|
|
4
4
|
exports.default = left;
|
5
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
6
|
var _utils = require("../utils");
|
7
|
-
function _getRequireWildcardCache(
|
8
|
-
function _interopRequireWildcard(
|
7
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
8
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
9
9
|
/**
|
10
10
|
* @param {CustomBorders} customBordersPlugin The plugin instance.
|
11
11
|
* @returns {object}
|
@@ -4,8 +4,8 @@ exports.__esModule = true;
|
|
4
4
|
exports.default = noBorders;
|
5
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
6
|
var _utils = require("../utils");
|
7
|
-
function _getRequireWildcardCache(
|
8
|
-
function _interopRequireWildcard(
|
7
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
8
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
9
9
|
/**
|
10
10
|
* @param {CustomBorders} customBordersPlugin The plugin instance.
|
11
11
|
* @returns {object}
|
@@ -4,8 +4,8 @@ exports.__esModule = true;
|
|
4
4
|
exports.default = right;
|
5
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
6
|
var _utils = require("../utils");
|
7
|
-
function _getRequireWildcardCache(
|
8
|
-
function _interopRequireWildcard(
|
7
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
8
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
9
9
|
/**
|
10
10
|
* @param {CustomBorders} customBordersPlugin The plugin instance.
|
11
11
|
* @returns {object}
|
@@ -4,8 +4,8 @@ exports.__esModule = true;
|
|
4
4
|
exports.default = top;
|
5
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
6
|
var _utils = require("../utils");
|
7
|
-
function _getRequireWildcardCache(
|
8
|
-
function _interopRequireWildcard(
|
7
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
8
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
9
9
|
/**
|
10
10
|
* @param {CustomBorders} customBordersPlugin The plugin instance.
|
11
11
|
* @returns {object}
|