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,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}
|