handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -28
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +69 -36
- package/3rdparty/walkontable/src/cell/range.mjs +68 -35
- package/3rdparty/walkontable/src/event.js +3 -5
- package/3rdparty/walkontable/src/event.mjs +3 -5
- package/3rdparty/walkontable/src/overlay/_base.js +6 -7
- package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/top.js +6 -7
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
- package/3rdparty/walkontable/src/overlays.js +55 -64
- package/3rdparty/walkontable/src/overlays.mjs +55 -64
- package/3rdparty/walkontable/src/renderer/table.js +0 -2
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
- package/3rdparty/walkontable/src/scroll.js +20 -23
- package/3rdparty/walkontable/src/scroll.mjs +20 -23
- package/3rdparty/walkontable/src/selection/border/border.js +1 -0
- package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
- package/3rdparty/walkontable/src/selection/manager.js +40 -45
- package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
- package/3rdparty/walkontable/src/selection/scanner.js +5 -4
- package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
- package/3rdparty/walkontable/src/settings.js +13 -15
- package/3rdparty/walkontable/src/settings.mjs +13 -15
- package/3rdparty/walkontable/src/table.js +23 -26
- package/3rdparty/walkontable/src/table.mjs +23 -26
- package/CHANGELOG.md +56 -0
- package/base.js +2 -4
- package/base.mjs +2 -2
- package/common.d.ts +1 -1
- package/core.d.ts +7 -9
- package/core.js +241 -439
- package/core.mjs +245 -443
- package/dataMap/dataMap.js +1 -0
- package/dataMap/dataMap.mjs +1 -0
- package/dataMap/dataSource.js +5 -5
- package/dataMap/dataSource.mjs +5 -5
- package/dataMap/metaManager/lazyFactoryMap.js +1 -0
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
- package/dataMap/metaManager/metaSchema.js +33 -24
- package/dataMap/metaManager/metaSchema.mjs +33 -24
- package/dist/handsontable.css +25 -3
- package/dist/handsontable.full.css +25 -3
- package/dist/handsontable.full.js +14539 -11358
- package/dist/handsontable.full.min.css +5 -5
- package/dist/handsontable.full.min.js +137 -125
- package/dist/handsontable.js +31414 -28455
- package/dist/handsontable.min.css +5 -5
- package/dist/handsontable.min.js +11 -3
- package/dist/languages/all.js +133 -0
- package/dist/languages/ar-AR.js +7 -0
- package/dist/languages/cs-CZ.js +7 -0
- package/dist/languages/de-CH.js +7 -0
- package/dist/languages/de-DE.js +7 -0
- package/dist/languages/en-US.js +7 -0
- package/dist/languages/es-MX.js +7 -0
- package/dist/languages/fr-FR.js +7 -0
- package/dist/languages/it-IT.js +7 -0
- package/dist/languages/ja-JP.js +7 -0
- package/dist/languages/ko-KR.js +7 -0
- package/dist/languages/lv-LV.js +7 -0
- package/dist/languages/nb-NO.js +7 -0
- package/dist/languages/nl-NL.js +7 -0
- package/dist/languages/pl-PL.js +7 -0
- package/dist/languages/pt-BR.js +7 -0
- package/dist/languages/ru-RU.js +7 -0
- package/dist/languages/sr-SP.js +7 -0
- package/dist/languages/zh-CN.js +7 -0
- package/dist/languages/zh-TW.js +7 -0
- package/editorManager.js +19 -89
- package/editorManager.mjs +24 -93
- package/editors/baseEditor/baseEditor.js +1 -0
- package/editors/baseEditor/baseEditor.mjs +1 -0
- package/editors/textEditor/textEditor.js +14 -20
- package/editors/textEditor/textEditor.mjs +16 -22
- package/helpers/dom/element.js +0 -11
- package/helpers/dom/element.mjs +0 -10
- 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/object.js +2 -0
- package/helpers/object.mjs +2 -0
- package/i18n/languages/ar-AR.js +7 -1
- package/i18n/languages/cs-CZ.js +7 -1
- package/i18n/languages/de-CH.js +7 -1
- package/i18n/languages/de-DE.js +7 -1
- package/i18n/languages/en-US.js +7 -1
- package/i18n/languages/es-MX.js +7 -1
- package/i18n/languages/fr-FR.js +7 -1
- package/i18n/languages/it-IT.js +7 -1
- package/i18n/languages/ja-JP.js +7 -1
- package/i18n/languages/ko-KR.js +7 -1
- package/i18n/languages/lv-LV.js +7 -1
- package/i18n/languages/nb-NO.js +7 -1
- package/i18n/languages/nl-NL.js +7 -1
- package/i18n/languages/pl-PL.js +7 -1
- package/i18n/languages/pt-BR.js +7 -1
- package/i18n/languages/ru-RU.js +7 -1
- package/i18n/languages/sr-SP.js +7 -1
- package/i18n/languages/zh-CN.js +7 -1
- package/i18n/languages/zh-TW.js +7 -1
- package/languages/all.js +133 -0
- package/languages/ar-AR.js +7 -0
- package/languages/cs-CZ.js +7 -0
- package/languages/de-CH.js +7 -0
- package/languages/de-DE.js +7 -0
- package/languages/en-US.js +7 -0
- package/languages/es-MX.js +7 -0
- package/languages/fr-FR.js +7 -0
- package/languages/index.js +133 -0
- package/languages/it-IT.js +7 -0
- package/languages/ja-JP.js +7 -0
- package/languages/ko-KR.js +7 -0
- package/languages/lv-LV.js +7 -0
- package/languages/nb-NO.js +7 -0
- package/languages/nl-NL.js +7 -0
- package/languages/pl-PL.js +7 -0
- package/languages/pt-BR.js +7 -0
- package/languages/ru-RU.js +7 -0
- package/languages/sr-SP.js +7 -0
- package/languages/zh-CN.js +7 -0
- package/languages/zh-TW.js +7 -0
- package/package.json +3 -2
- package/pluginHooks.d.ts +8 -2
- package/pluginHooks.js +116 -18
- package/pluginHooks.mjs +115 -15
- package/plugins/autoColumnSize/autoColumnSize.js +1 -0
- package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
- package/plugins/autoRowSize/autoRowSize.js +3 -2
- package/plugins/autoRowSize/autoRowSize.mjs +3 -2
- package/plugins/autofill/autofill.js +2 -2
- package/plugins/autofill/autofill.mjs +3 -3
- package/plugins/autofill/utils.js +1 -39
- package/plugins/autofill/utils.mjs +0 -37
- package/plugins/base/base.js +1 -0
- package/plugins/base/base.mjs +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
- package/plugins/columnSorting/columnSorting.js +51 -8
- package/plugins/columnSorting/columnSorting.mjs +50 -9
- package/plugins/columnSorting/columnStatesManager.js +1 -0
- package/plugins/columnSorting/columnStatesManager.mjs +1 -0
- package/plugins/columnSorting/index.js +4 -2
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/columnSorting/rootComparator.js +1 -0
- package/plugins/columnSorting/rootComparator.mjs +1 -0
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +289 -224
- package/plugins/comments/comments.mjs +297 -234
- package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
- package/plugins/comments/contextMenuItem/removeComment.js +48 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +81 -29
- package/plugins/contextMenu/contextMenu.mjs +82 -30
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +25 -16
- package/plugins/contextMenu/utils.mjs +24 -15
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +100 -14
- package/plugins/copyPaste/copyPaste.mjs +100 -14
- package/plugins/copyPaste/copyableRanges.js +25 -31
- package/plugins/copyPaste/copyableRanges.mjs +18 -24
- package/plugins/copyPaste/focusableElement.js +219 -0
- package/plugins/copyPaste/focusableElement.mjs +213 -0
- package/plugins/customBorders/customBorders.d.ts +2 -0
- package/plugins/customBorders/customBorders.js +19 -50
- package/plugins/customBorders/customBorders.mjs +19 -50
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +94 -30
- package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
- package/plugins/exportFile/dataProvider.js +1 -0
- package/plugins/exportFile/dataProvider.mjs +1 -0
- package/plugins/filters/component/value.js +1 -0
- package/plugins/filters/component/value.mjs +1 -0
- package/plugins/filters/condition/beginsWith.js +1 -0
- package/plugins/filters/condition/beginsWith.mjs +1 -0
- package/plugins/filters/condition/between.js +1 -0
- package/plugins/filters/condition/between.mjs +1 -0
- package/plugins/filters/condition/byValue.js +1 -0
- package/plugins/filters/condition/byValue.mjs +1 -0
- package/plugins/filters/condition/contains.js +1 -0
- package/plugins/filters/condition/contains.mjs +1 -0
- package/plugins/filters/condition/date/after.js +1 -0
- package/plugins/filters/condition/date/after.mjs +1 -0
- package/plugins/filters/condition/date/before.js +1 -0
- package/plugins/filters/condition/date/before.mjs +1 -0
- package/plugins/filters/condition/endsWith.js +1 -0
- package/plugins/filters/condition/endsWith.mjs +1 -0
- package/plugins/filters/condition/equal.js +1 -0
- package/plugins/filters/condition/equal.mjs +1 -0
- package/plugins/filters/condition/greaterThan.js +1 -0
- package/plugins/filters/condition/greaterThan.mjs +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
- package/plugins/filters/condition/lessThan.js +1 -0
- package/plugins/filters/condition/lessThan.mjs +1 -0
- package/plugins/filters/condition/lessThanOrEqual.js +1 -0
- package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
- package/plugins/filters/conditionCollection.js +1 -0
- package/plugins/filters/conditionCollection.mjs +1 -0
- package/plugins/filters/filters.js +68 -42
- package/plugins/filters/filters.mjs +67 -41
- package/plugins/filters/ui/multipleSelect.js +1 -0
- package/plugins/filters/ui/multipleSelect.mjs +1 -0
- package/plugins/formulas/formulas.js +191 -168
- package/plugins/formulas/formulas.mjs +191 -168
- package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
- package/plugins/formulas/indexSyncer/index.js +225 -0
- package/plugins/formulas/indexSyncer/index.mjs +219 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
- package/plugins/manualColumnResize/manualColumnResize.js +36 -5
- package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
- package/plugins/manualRowMove/manualRowMove.js +31 -12
- package/plugins/manualRowMove/manualRowMove.mjs +32 -13
- package/plugins/manualRowResize/manualRowResize.js +40 -9
- package/plugins/manualRowResize/manualRowResize.mjs +40 -9
- package/plugins/mergeCells/calculations/autofill.js +1 -0
- package/plugins/mergeCells/calculations/autofill.mjs +1 -0
- package/plugins/mergeCells/cellsCollection.js +1 -0
- package/plugins/mergeCells/cellsCollection.mjs +1 -0
- package/plugins/mergeCells/mergeCells.js +6 -2
- package/plugins/mergeCells/mergeCells.mjs +6 -2
- package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
- package/plugins/multiColumnSorting/rootComparator.js +1 -0
- package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
- package/plugins/nestedHeaders/nestedHeaders.js +129 -6
- package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
- package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
- package/plugins/nestedHeaders/stateManager/index.js +40 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
- package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
- package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
- package/plugins/nestedRows/data/dataManager.js +1 -0
- package/plugins/nestedRows/data/dataManager.mjs +1 -0
- package/plugins/nestedRows/nestedRows.js +53 -7
- package/plugins/nestedRows/nestedRows.mjs +53 -7
- package/plugins/nestedRows/ui/collapsing.js +1 -0
- package/plugins/nestedRows/ui/collapsing.mjs +1 -0
- package/plugins/nestedRows/utils/rowMoveController.js +1 -0
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
- package/plugins/persistentState/storage.js +1 -0
- package/plugins/persistentState/storage.mjs +1 -0
- package/plugins/registry.js +4 -1
- package/plugins/registry.mjs +1 -0
- package/plugins/undoRedo/undoRedo.js +1 -1
- package/plugins/undoRedo/undoRedo.mjs +1 -1
- package/renderers/baseRenderer/baseRenderer.js +0 -3
- package/renderers/baseRenderer/baseRenderer.mjs +0 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +120 -98
- package/selection/highlight/highlight.mjs +118 -96
- package/selection/highlight/visualSelection.js +30 -17
- package/selection/highlight/visualSelection.mjs +30 -17
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +246 -153
- package/selection/selection.mjs +247 -154
- package/selection/transformation.js +233 -96
- package/selection/transformation.mjs +230 -93
- package/selection/utils.js +12 -35
- package/selection/utils.mjs +13 -35
- package/settings.d.ts +2 -1
- package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +29 -0
- package/shortcutContexts/commands/editor/open.mjs +24 -0
- package/shortcutContexts/commands/emptySelectedCells.js +12 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/index.js +53 -0
- package/shortcutContexts/commands/index.mjs +49 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +19 -0
- package/shortcutContexts/constants.mjs +12 -0
- package/shortcutContexts/editor.js +29 -0
- package/shortcutContexts/editor.mjs +25 -0
- package/shortcutContexts/grid.js +252 -0
- package/shortcutContexts/grid.mjs +248 -0
- package/shortcutContexts/index.js +29 -0
- package/shortcutContexts/index.mjs +15 -0
- package/shortcuts/context.js +1 -0
- package/shortcuts/context.mjs +1 -0
- package/shortcuts/manager.js +2 -0
- package/shortcuts/manager.mjs +2 -0
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +21 -5
- package/shortcuts/utils.mjs +20 -4
- package/tableView.js +112 -82
- package/tableView.mjs +112 -82
- package/translations/changesObservable/observable.js +41 -46
- package/translations/changesObservable/observable.mjs +36 -41
- package/translations/changesObservable/observer.js +1 -1
- package/translations/indexMapper.d.ts +0 -2
- package/translations/indexMapper.js +38 -64
- package/translations/indexMapper.mjs +39 -64
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
- package/translations/maps/utils/indexesSequence.js +1 -0
- package/translations/maps/utils/indexesSequence.mjs +1 -0
- package/translations/maps/utils/physicallyIndexed.js +1 -0
- package/translations/maps/utils/physicallyIndexed.mjs +1 -0
- package/utils/dataStructures/priorityMap.js +1 -0
- package/utils/dataStructures/priorityMap.mjs +1 -0
- package/utils/dataStructures/tree.js +16 -18
- package/utils/dataStructures/tree.mjs +16 -18
- package/utils/dataStructures/uniqueMap.js +1 -0
- package/utils/dataStructures/uniqueMap.mjs +1 -0
- package/utils/dataStructures/uniqueSet.js +1 -0
- package/utils/dataStructures/uniqueSet.mjs +1 -0
- package/utils/ghostTable.js +1 -0
- package/utils/ghostTable.mjs +1 -0
- package/utils/parseTable.js +5 -1
- package/utils/parseTable.mjs +5 -1
- package/utils/staticRegister.js +1 -0
- package/utils/staticRegister.mjs +1 -0
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -275
- package/focusManager.mjs +0 -270
@@ -33,6 +33,13 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
|
|
33
33
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
34
34
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
35
35
|
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; } }
|
36
|
+
/**
|
37
|
+
* The utils class produces the selection ranges in the `{startRow, startCol, endRow, endCol}` format
|
38
|
+
* based on the current table selection. The CopyPaste plugin consumes that ranges to generate
|
39
|
+
* appropriate data ready to copy to the clipboard.
|
40
|
+
*
|
41
|
+
* @private
|
42
|
+
*/
|
36
43
|
var _selectedRange = /*#__PURE__*/new WeakMap();
|
37
44
|
var _countRows = /*#__PURE__*/new WeakMap();
|
38
45
|
var _countColumns = /*#__PURE__*/new WeakMap();
|
@@ -41,38 +48,7 @@ var _columnsLimit = /*#__PURE__*/new WeakMap();
|
|
41
48
|
var _countColumnHeaders = /*#__PURE__*/new WeakMap();
|
42
49
|
var _trimColumnsRange = /*#__PURE__*/new WeakSet();
|
43
50
|
var _trimRowsRange = /*#__PURE__*/new WeakSet();
|
44
|
-
/**
|
45
|
-
* The utils class produces the selection ranges in the `{startRow, startCol, endRow, endCol}` format
|
46
|
-
* based on the current table selection. The CopyPaste plugin consumes that ranges to generate
|
47
|
-
* appropriate data ready to copy to the clipboard.
|
48
|
-
*
|
49
|
-
* @private
|
50
|
-
*/
|
51
51
|
var CopyableRangesFactory = /*#__PURE__*/function () {
|
52
|
-
/**
|
53
|
-
* @type {CellRange}
|
54
|
-
*/
|
55
|
-
|
56
|
-
/**
|
57
|
-
* @type {function(): number}
|
58
|
-
*/
|
59
|
-
|
60
|
-
/**
|
61
|
-
* @type {function(): number}
|
62
|
-
*/
|
63
|
-
|
64
|
-
/**
|
65
|
-
* @type {function(): number}
|
66
|
-
*/
|
67
|
-
|
68
|
-
/**
|
69
|
-
* @type {function(): number}
|
70
|
-
*/
|
71
|
-
|
72
|
-
/**
|
73
|
-
* @type {function(): number}
|
74
|
-
*/
|
75
|
-
|
76
52
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
77
53
|
/**
|
78
54
|
* @param {{
|
@@ -106,26 +82,44 @@ var CopyableRangesFactory = /*#__PURE__*/function () {
|
|
106
82
|
* @returns {number} Returns trimmed column index if it exceeds the limit.
|
107
83
|
*/
|
108
84
|
_classPrivateMethodInitSpec(this, _trimColumnsRange);
|
85
|
+
/**
|
86
|
+
* @type {CellRange}
|
87
|
+
*/
|
109
88
|
_classPrivateFieldInitSpec(this, _selectedRange, {
|
110
89
|
writable: true,
|
111
90
|
value: void 0
|
112
91
|
});
|
92
|
+
/**
|
93
|
+
* @type {function(): number}
|
94
|
+
*/
|
113
95
|
_classPrivateFieldInitSpec(this, _countRows, {
|
114
96
|
writable: true,
|
115
97
|
value: void 0
|
116
98
|
});
|
99
|
+
/**
|
100
|
+
* @type {function(): number}
|
101
|
+
*/
|
117
102
|
_classPrivateFieldInitSpec(this, _countColumns, {
|
118
103
|
writable: true,
|
119
104
|
value: void 0
|
120
105
|
});
|
106
|
+
/**
|
107
|
+
* @type {function(): number}
|
108
|
+
*/
|
121
109
|
_classPrivateFieldInitSpec(this, _rowsLimit, {
|
122
110
|
writable: true,
|
123
111
|
value: void 0
|
124
112
|
});
|
113
|
+
/**
|
114
|
+
* @type {function(): number}
|
115
|
+
*/
|
125
116
|
_classPrivateFieldInitSpec(this, _columnsLimit, {
|
126
117
|
writable: true,
|
127
118
|
value: void 0
|
128
119
|
});
|
120
|
+
/**
|
121
|
+
* @type {function(): number}
|
122
|
+
*/
|
129
123
|
_classPrivateFieldInitSpec(this, _countColumnHeaders, {
|
130
124
|
writable: true,
|
131
125
|
value: void 0
|
@@ -44,30 +44,6 @@ var _countColumnHeaders = /*#__PURE__*/new WeakMap();
|
|
44
44
|
var _trimColumnsRange = /*#__PURE__*/new WeakSet();
|
45
45
|
var _trimRowsRange = /*#__PURE__*/new WeakSet();
|
46
46
|
export var CopyableRangesFactory = /*#__PURE__*/function () {
|
47
|
-
/**
|
48
|
-
* @type {CellRange}
|
49
|
-
*/
|
50
|
-
|
51
|
-
/**
|
52
|
-
* @type {function(): number}
|
53
|
-
*/
|
54
|
-
|
55
|
-
/**
|
56
|
-
* @type {function(): number}
|
57
|
-
*/
|
58
|
-
|
59
|
-
/**
|
60
|
-
* @type {function(): number}
|
61
|
-
*/
|
62
|
-
|
63
|
-
/**
|
64
|
-
* @type {function(): number}
|
65
|
-
*/
|
66
|
-
|
67
|
-
/**
|
68
|
-
* @type {function(): number}
|
69
|
-
*/
|
70
|
-
|
71
47
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
72
48
|
/**
|
73
49
|
* @param {{
|
@@ -101,26 +77,44 @@ export var CopyableRangesFactory = /*#__PURE__*/function () {
|
|
101
77
|
* @returns {number} Returns trimmed column index if it exceeds the limit.
|
102
78
|
*/
|
103
79
|
_classPrivateMethodInitSpec(this, _trimColumnsRange);
|
80
|
+
/**
|
81
|
+
* @type {CellRange}
|
82
|
+
*/
|
104
83
|
_classPrivateFieldInitSpec(this, _selectedRange, {
|
105
84
|
writable: true,
|
106
85
|
value: void 0
|
107
86
|
});
|
87
|
+
/**
|
88
|
+
* @type {function(): number}
|
89
|
+
*/
|
108
90
|
_classPrivateFieldInitSpec(this, _countRows, {
|
109
91
|
writable: true,
|
110
92
|
value: void 0
|
111
93
|
});
|
94
|
+
/**
|
95
|
+
* @type {function(): number}
|
96
|
+
*/
|
112
97
|
_classPrivateFieldInitSpec(this, _countColumns, {
|
113
98
|
writable: true,
|
114
99
|
value: void 0
|
115
100
|
});
|
101
|
+
/**
|
102
|
+
* @type {function(): number}
|
103
|
+
*/
|
116
104
|
_classPrivateFieldInitSpec(this, _rowsLimit, {
|
117
105
|
writable: true,
|
118
106
|
value: void 0
|
119
107
|
});
|
108
|
+
/**
|
109
|
+
* @type {function(): number}
|
110
|
+
*/
|
120
111
|
_classPrivateFieldInitSpec(this, _columnsLimit, {
|
121
112
|
writable: true,
|
122
113
|
value: void 0
|
123
114
|
});
|
115
|
+
/**
|
116
|
+
* @type {function(): number}
|
117
|
+
*/
|
124
118
|
_classPrivateFieldInitSpec(this, _countColumnHeaders, {
|
125
119
|
writable: true,
|
126
120
|
value: void 0
|
@@ -0,0 +1,219 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
require("core-js/modules/es.symbol.iterator.js");
|
4
|
+
exports.__esModule = true;
|
5
|
+
exports.createElement = createElement;
|
6
|
+
exports.deactivateElement = deactivateElement;
|
7
|
+
exports.destroyElement = destroyElement;
|
8
|
+
require("core-js/modules/es.array.iterator.js");
|
9
|
+
require("core-js/modules/es.object.to-string.js");
|
10
|
+
require("core-js/modules/es.string.iterator.js");
|
11
|
+
require("core-js/modules/es.weak-set.js");
|
12
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
13
|
+
require("core-js/modules/es.symbol.to-primitive.js");
|
14
|
+
require("core-js/modules/es.date.to-primitive.js");
|
15
|
+
require("core-js/modules/es.symbol.js");
|
16
|
+
require("core-js/modules/es.symbol.description.js");
|
17
|
+
require("core-js/modules/es.number.constructor.js");
|
18
|
+
require("core-js/modules/es.weak-map.js");
|
19
|
+
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
20
|
+
var _localHooks = _interopRequireDefault(require("../../mixins/localHooks"));
|
21
|
+
var _object = require("../../helpers/object");
|
22
|
+
var _browser = require("../../helpers/browser");
|
23
|
+
var _element = require("../../helpers/dom/element");
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
25
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
26
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
27
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
28
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
29
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
30
|
+
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); }
|
31
|
+
/**
|
32
|
+
* @private
|
33
|
+
* @class FocusableWrapper
|
34
|
+
*/
|
35
|
+
var FocusableWrapper = /*#__PURE__*/function () {
|
36
|
+
function FocusableWrapper(container) {
|
37
|
+
_classCallCheck(this, FocusableWrapper);
|
38
|
+
this.rootDocument = container.defaultView ? container : container.ownerDocument;
|
39
|
+
/**
|
40
|
+
* The main/operational focusable element.
|
41
|
+
*
|
42
|
+
* @type {HTMLElement}
|
43
|
+
*/
|
44
|
+
this.mainElement = null;
|
45
|
+
/**
|
46
|
+
* Instance of EventManager.
|
47
|
+
*
|
48
|
+
* @type {EventManager}
|
49
|
+
*/
|
50
|
+
this.eventManager = new _eventManager.default(this);
|
51
|
+
/**
|
52
|
+
* An object for tracking information about event listeners attached to the focusable element.
|
53
|
+
*
|
54
|
+
* @type {WeakSet}
|
55
|
+
*/
|
56
|
+
this.listenersCount = new WeakSet();
|
57
|
+
/**
|
58
|
+
* Parent for an focusable element.
|
59
|
+
*
|
60
|
+
* @type {HTMLElement}
|
61
|
+
*/
|
62
|
+
this.container = container;
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* Switch to the secondary focusable element. Used when no any main focusable element is provided.
|
67
|
+
*/
|
68
|
+
_createClass(FocusableWrapper, [{
|
69
|
+
key: "useSecondaryElement",
|
70
|
+
value: function useSecondaryElement() {
|
71
|
+
var el = createOrGetSecondaryElement(this.container);
|
72
|
+
if (!this.listenersCount.has(el)) {
|
73
|
+
this.listenersCount.add(el);
|
74
|
+
forwardEventsToLocalHooks(this.eventManager, el, this);
|
75
|
+
}
|
76
|
+
this.mainElement = el;
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Switch to the main focusable element.
|
81
|
+
*
|
82
|
+
* @param {HTMLElement} element The DOM element.
|
83
|
+
*/
|
84
|
+
}, {
|
85
|
+
key: "setFocusableElement",
|
86
|
+
value: function setFocusableElement(element) {
|
87
|
+
if (!this.listenersCount.has(element)) {
|
88
|
+
this.listenersCount.add(element);
|
89
|
+
forwardEventsToLocalHooks(this.eventManager, element, this);
|
90
|
+
}
|
91
|
+
this.mainElement = element;
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Get currently set focusable element.
|
96
|
+
*
|
97
|
+
* @returns {HTMLElement}
|
98
|
+
*/
|
99
|
+
}, {
|
100
|
+
key: "getFocusableElement",
|
101
|
+
value: function getFocusableElement() {
|
102
|
+
return this.mainElement;
|
103
|
+
}
|
104
|
+
|
105
|
+
/**
|
106
|
+
* Set focus to the focusable element.
|
107
|
+
*/
|
108
|
+
}, {
|
109
|
+
key: "focus",
|
110
|
+
value: function focus() {
|
111
|
+
// Add an empty space to texarea. It is necessary for safari to enable "copy" command from menu bar.
|
112
|
+
this.mainElement.value = ' ';
|
113
|
+
if (!(0, _browser.isMobileBrowser)()) {
|
114
|
+
(0, _element.selectElementIfAllowed)(this.mainElement);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
}]);
|
118
|
+
return FocusableWrapper;
|
119
|
+
}();
|
120
|
+
(0, _object.mixin)(FocusableWrapper, _localHooks.default);
|
121
|
+
var refCounter = new WeakMap();
|
122
|
+
|
123
|
+
/**
|
124
|
+
* Create and return the FocusableWrapper instance.
|
125
|
+
*
|
126
|
+
* @param {HTMLElement} container The container element, holder for focusable elements.
|
127
|
+
* @returns {FocusableWrapper}
|
128
|
+
*/
|
129
|
+
function createElement(container) {
|
130
|
+
var focusableWrapper = new FocusableWrapper(container);
|
131
|
+
var counter = refCounter.get(container);
|
132
|
+
counter = isNaN(counter) ? 0 : counter;
|
133
|
+
refCounter.set(container, counter + 1);
|
134
|
+
return focusableWrapper;
|
135
|
+
}
|
136
|
+
|
137
|
+
/**
|
138
|
+
* Deactivate the FocusableWrapper instance.
|
139
|
+
*
|
140
|
+
* @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
|
141
|
+
*/
|
142
|
+
function deactivateElement(wrapper) {
|
143
|
+
wrapper.eventManager.clear();
|
144
|
+
}
|
145
|
+
var runLocalHooks = function runLocalHooks(eventName, subject) {
|
146
|
+
return function (event) {
|
147
|
+
return subject.runLocalHooks(eventName, event);
|
148
|
+
};
|
149
|
+
};
|
150
|
+
|
151
|
+
/**
|
152
|
+
* Register copy/cut/paste events and forward their actions to the subject local hooks system.
|
153
|
+
*
|
154
|
+
* @param {EventManager} eventManager The instance of the EventManager class.
|
155
|
+
* @param {HTMLElement} element The element on which the listeners are mounted.
|
156
|
+
* @param {FocusableWrapper} subject The subject object for local hooks.
|
157
|
+
*/
|
158
|
+
function forwardEventsToLocalHooks(eventManager, element, subject) {
|
159
|
+
eventManager.addEventListener(element, 'copy', runLocalHooks('copy', subject));
|
160
|
+
eventManager.addEventListener(element, 'cut', runLocalHooks('cut', subject));
|
161
|
+
eventManager.addEventListener(element, 'paste', runLocalHooks('paste', subject));
|
162
|
+
}
|
163
|
+
var secondaryElements = new WeakMap();
|
164
|
+
|
165
|
+
/**
|
166
|
+
* Create and attach newly created focusable element to the DOM.
|
167
|
+
*
|
168
|
+
* @param {HTMLElement} container The container element, holder for focusable elements.
|
169
|
+
* @returns {HTMLElement}
|
170
|
+
*/
|
171
|
+
function createOrGetSecondaryElement(container) {
|
172
|
+
var secondaryElement = secondaryElements.get(container);
|
173
|
+
if (secondaryElement) {
|
174
|
+
if (!secondaryElement.parentElement) {
|
175
|
+
container.appendChild(secondaryElement);
|
176
|
+
}
|
177
|
+
return secondaryElement;
|
178
|
+
}
|
179
|
+
var doc = container.defaultView ? container : container.ownerDocument;
|
180
|
+
var element = doc.createElement('textarea');
|
181
|
+
secondaryElements.set(container, element);
|
182
|
+
element.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
|
183
|
+
element.className = 'HandsontableCopyPaste';
|
184
|
+
element.tabIndex = -1;
|
185
|
+
element.autocomplete = 'off';
|
186
|
+
element.wrap = 'hard';
|
187
|
+
element.value = ' ';
|
188
|
+
container.appendChild(element);
|
189
|
+
return element;
|
190
|
+
}
|
191
|
+
|
192
|
+
/**
|
193
|
+
* Destroy the FocusableWrapper instance.
|
194
|
+
*
|
195
|
+
* @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
|
196
|
+
*/
|
197
|
+
function destroyElement(wrapper) {
|
198
|
+
if (!(wrapper instanceof FocusableWrapper)) {
|
199
|
+
return;
|
200
|
+
}
|
201
|
+
var counter = refCounter.get(wrapper.container);
|
202
|
+
counter = isNaN(counter) ? 0 : counter;
|
203
|
+
if (counter > 0) {
|
204
|
+
counter -= 1;
|
205
|
+
}
|
206
|
+
deactivateElement(wrapper);
|
207
|
+
if (counter <= 0) {
|
208
|
+
counter = 0;
|
209
|
+
|
210
|
+
// Detach secondary element from the DOM.
|
211
|
+
var secondaryElement = secondaryElements.get(wrapper.container);
|
212
|
+
if (secondaryElement && secondaryElement.parentNode) {
|
213
|
+
secondaryElement.parentNode.removeChild(secondaryElement);
|
214
|
+
secondaryElements.delete(wrapper.container);
|
215
|
+
}
|
216
|
+
wrapper.mainElement = null;
|
217
|
+
}
|
218
|
+
refCounter.set(wrapper.container, counter);
|
219
|
+
}
|
@@ -0,0 +1,213 @@
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
2
|
+
import "core-js/modules/es.array.iterator.js";
|
3
|
+
import "core-js/modules/es.object.to-string.js";
|
4
|
+
import "core-js/modules/es.string.iterator.js";
|
5
|
+
import "core-js/modules/es.weak-set.js";
|
6
|
+
import "core-js/modules/web.dom-collections.iterator.js";
|
7
|
+
import "core-js/modules/es.weak-map.js";
|
8
|
+
import "core-js/modules/es.symbol.to-primitive.js";
|
9
|
+
import "core-js/modules/es.date.to-primitive.js";
|
10
|
+
import "core-js/modules/es.symbol.js";
|
11
|
+
import "core-js/modules/es.symbol.description.js";
|
12
|
+
import "core-js/modules/es.number.constructor.js";
|
13
|
+
import "core-js/modules/es.symbol.iterator.js";
|
14
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
15
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
16
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
18
|
+
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); }
|
19
|
+
import EventManager from "../../eventManager.mjs";
|
20
|
+
import localHooks from "../../mixins/localHooks.mjs";
|
21
|
+
import { mixin } from "../../helpers/object.mjs";
|
22
|
+
import { isMobileBrowser } from "../../helpers/browser.mjs";
|
23
|
+
import { selectElementIfAllowed } from "../../helpers/dom/element.mjs";
|
24
|
+
/**
|
25
|
+
* @private
|
26
|
+
* @class FocusableWrapper
|
27
|
+
*/
|
28
|
+
var FocusableWrapper = /*#__PURE__*/function () {
|
29
|
+
function FocusableWrapper(container) {
|
30
|
+
_classCallCheck(this, FocusableWrapper);
|
31
|
+
this.rootDocument = container.defaultView ? container : container.ownerDocument;
|
32
|
+
/**
|
33
|
+
* The main/operational focusable element.
|
34
|
+
*
|
35
|
+
* @type {HTMLElement}
|
36
|
+
*/
|
37
|
+
this.mainElement = null;
|
38
|
+
/**
|
39
|
+
* Instance of EventManager.
|
40
|
+
*
|
41
|
+
* @type {EventManager}
|
42
|
+
*/
|
43
|
+
this.eventManager = new EventManager(this);
|
44
|
+
/**
|
45
|
+
* An object for tracking information about event listeners attached to the focusable element.
|
46
|
+
*
|
47
|
+
* @type {WeakSet}
|
48
|
+
*/
|
49
|
+
this.listenersCount = new WeakSet();
|
50
|
+
/**
|
51
|
+
* Parent for an focusable element.
|
52
|
+
*
|
53
|
+
* @type {HTMLElement}
|
54
|
+
*/
|
55
|
+
this.container = container;
|
56
|
+
}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Switch to the secondary focusable element. Used when no any main focusable element is provided.
|
60
|
+
*/
|
61
|
+
_createClass(FocusableWrapper, [{
|
62
|
+
key: "useSecondaryElement",
|
63
|
+
value: function useSecondaryElement() {
|
64
|
+
var el = createOrGetSecondaryElement(this.container);
|
65
|
+
if (!this.listenersCount.has(el)) {
|
66
|
+
this.listenersCount.add(el);
|
67
|
+
forwardEventsToLocalHooks(this.eventManager, el, this);
|
68
|
+
}
|
69
|
+
this.mainElement = el;
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Switch to the main focusable element.
|
74
|
+
*
|
75
|
+
* @param {HTMLElement} element The DOM element.
|
76
|
+
*/
|
77
|
+
}, {
|
78
|
+
key: "setFocusableElement",
|
79
|
+
value: function setFocusableElement(element) {
|
80
|
+
if (!this.listenersCount.has(element)) {
|
81
|
+
this.listenersCount.add(element);
|
82
|
+
forwardEventsToLocalHooks(this.eventManager, element, this);
|
83
|
+
}
|
84
|
+
this.mainElement = element;
|
85
|
+
}
|
86
|
+
|
87
|
+
/**
|
88
|
+
* Get currently set focusable element.
|
89
|
+
*
|
90
|
+
* @returns {HTMLElement}
|
91
|
+
*/
|
92
|
+
}, {
|
93
|
+
key: "getFocusableElement",
|
94
|
+
value: function getFocusableElement() {
|
95
|
+
return this.mainElement;
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Set focus to the focusable element.
|
100
|
+
*/
|
101
|
+
}, {
|
102
|
+
key: "focus",
|
103
|
+
value: function focus() {
|
104
|
+
// Add an empty space to texarea. It is necessary for safari to enable "copy" command from menu bar.
|
105
|
+
this.mainElement.value = ' ';
|
106
|
+
if (!isMobileBrowser()) {
|
107
|
+
selectElementIfAllowed(this.mainElement);
|
108
|
+
}
|
109
|
+
}
|
110
|
+
}]);
|
111
|
+
return FocusableWrapper;
|
112
|
+
}();
|
113
|
+
mixin(FocusableWrapper, localHooks);
|
114
|
+
var refCounter = new WeakMap();
|
115
|
+
|
116
|
+
/**
|
117
|
+
* Create and return the FocusableWrapper instance.
|
118
|
+
*
|
119
|
+
* @param {HTMLElement} container The container element, holder for focusable elements.
|
120
|
+
* @returns {FocusableWrapper}
|
121
|
+
*/
|
122
|
+
function createElement(container) {
|
123
|
+
var focusableWrapper = new FocusableWrapper(container);
|
124
|
+
var counter = refCounter.get(container);
|
125
|
+
counter = isNaN(counter) ? 0 : counter;
|
126
|
+
refCounter.set(container, counter + 1);
|
127
|
+
return focusableWrapper;
|
128
|
+
}
|
129
|
+
|
130
|
+
/**
|
131
|
+
* Deactivate the FocusableWrapper instance.
|
132
|
+
*
|
133
|
+
* @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
|
134
|
+
*/
|
135
|
+
function deactivateElement(wrapper) {
|
136
|
+
wrapper.eventManager.clear();
|
137
|
+
}
|
138
|
+
var runLocalHooks = function runLocalHooks(eventName, subject) {
|
139
|
+
return function (event) {
|
140
|
+
return subject.runLocalHooks(eventName, event);
|
141
|
+
};
|
142
|
+
};
|
143
|
+
|
144
|
+
/**
|
145
|
+
* Register copy/cut/paste events and forward their actions to the subject local hooks system.
|
146
|
+
*
|
147
|
+
* @param {EventManager} eventManager The instance of the EventManager class.
|
148
|
+
* @param {HTMLElement} element The element on which the listeners are mounted.
|
149
|
+
* @param {FocusableWrapper} subject The subject object for local hooks.
|
150
|
+
*/
|
151
|
+
function forwardEventsToLocalHooks(eventManager, element, subject) {
|
152
|
+
eventManager.addEventListener(element, 'copy', runLocalHooks('copy', subject));
|
153
|
+
eventManager.addEventListener(element, 'cut', runLocalHooks('cut', subject));
|
154
|
+
eventManager.addEventListener(element, 'paste', runLocalHooks('paste', subject));
|
155
|
+
}
|
156
|
+
var secondaryElements = new WeakMap();
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Create and attach newly created focusable element to the DOM.
|
160
|
+
*
|
161
|
+
* @param {HTMLElement} container The container element, holder for focusable elements.
|
162
|
+
* @returns {HTMLElement}
|
163
|
+
*/
|
164
|
+
function createOrGetSecondaryElement(container) {
|
165
|
+
var secondaryElement = secondaryElements.get(container);
|
166
|
+
if (secondaryElement) {
|
167
|
+
if (!secondaryElement.parentElement) {
|
168
|
+
container.appendChild(secondaryElement);
|
169
|
+
}
|
170
|
+
return secondaryElement;
|
171
|
+
}
|
172
|
+
var doc = container.defaultView ? container : container.ownerDocument;
|
173
|
+
var element = doc.createElement('textarea');
|
174
|
+
secondaryElements.set(container, element);
|
175
|
+
element.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
|
176
|
+
element.className = 'HandsontableCopyPaste';
|
177
|
+
element.tabIndex = -1;
|
178
|
+
element.autocomplete = 'off';
|
179
|
+
element.wrap = 'hard';
|
180
|
+
element.value = ' ';
|
181
|
+
container.appendChild(element);
|
182
|
+
return element;
|
183
|
+
}
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Destroy the FocusableWrapper instance.
|
187
|
+
*
|
188
|
+
* @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
|
189
|
+
*/
|
190
|
+
function destroyElement(wrapper) {
|
191
|
+
if (!(wrapper instanceof FocusableWrapper)) {
|
192
|
+
return;
|
193
|
+
}
|
194
|
+
var counter = refCounter.get(wrapper.container);
|
195
|
+
counter = isNaN(counter) ? 0 : counter;
|
196
|
+
if (counter > 0) {
|
197
|
+
counter -= 1;
|
198
|
+
}
|
199
|
+
deactivateElement(wrapper);
|
200
|
+
if (counter <= 0) {
|
201
|
+
counter = 0;
|
202
|
+
|
203
|
+
// Detach secondary element from the DOM.
|
204
|
+
var secondaryElement = secondaryElements.get(wrapper.container);
|
205
|
+
if (secondaryElement && secondaryElement.parentNode) {
|
206
|
+
secondaryElement.parentNode.removeChild(secondaryElement);
|
207
|
+
secondaryElements.delete(wrapper.container);
|
208
|
+
}
|
209
|
+
wrapper.mainElement = null;
|
210
|
+
}
|
211
|
+
refCounter.set(wrapper.container, counter);
|
212
|
+
}
|
213
|
+
export { createElement, deactivateElement, destroyElement };
|
@@ -14,6 +14,8 @@ export interface BorderRange {
|
|
14
14
|
};
|
15
15
|
}
|
16
16
|
export type DetailedSettings = (SimpleCellCoords | BorderRange) & {
|
17
|
+
start?: BorderOptions | string;
|
18
|
+
end?: BorderOptions | string;
|
17
19
|
left?: BorderOptions | string;
|
18
20
|
right?: BorderOptions | string;
|
19
21
|
top?: BorderOptions | string;
|