handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-20231025
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/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +11 -50
- package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -38
- package/3rdparty/walkontable/src/cell/range.mjs +7 -38
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- 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 +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- package/3rdparty/walkontable/src/event.js +10 -12
- package/3rdparty/walkontable/src/event.mjs +10 -12
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +2 -10
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +2 -13
- package/3rdparty/walkontable/src/overlay/_base.mjs +3 -14
- package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
- package/3rdparty/walkontable/src/overlay/top.js +6 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/cells.js +0 -10
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +0 -10
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +0 -5
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +0 -5
- package/3rdparty/walkontable/src/renderer/rows.js +0 -13
- package/3rdparty/walkontable/src/renderer/rows.mjs +0 -13
- package/3rdparty/walkontable/src/renderer/table.js +0 -9
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -9
- package/3rdparty/walkontable/src/scroll.js +0 -2
- package/3rdparty/walkontable/src/scroll.mjs +0 -2
- package/3rdparty/walkontable/src/selection.js +295 -0
- package/3rdparty/walkontable/src/selection.mjs +290 -0
- package/3rdparty/walkontable/src/settings.js +4 -13
- package/3rdparty/walkontable/src/settings.mjs +4 -13
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +78 -19
- package/3rdparty/walkontable/src/table.mjs +79 -20
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +0 -3
- package/cellTypes/index.js +0 -4
- package/cellTypes/index.mjs +1 -3
- package/core.d.ts +4 -9
- package/core.js +327 -285
- package/core.mjs +327 -285
- package/dataMap/metaManager/metaSchema.js +0 -65
- package/dataMap/metaManager/metaSchema.mjs +0 -65
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -7
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -7
- package/dataMap/replaceData.js +0 -5
- package/dataMap/replaceData.mjs +0 -5
- package/dist/handsontable.css +5 -40
- package/dist/handsontable.full.css +5 -40
- package/dist/handsontable.full.js +8038 -12837
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +141 -141
- package/dist/handsontable.js +11488 -16287
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +21 -21
- package/dist/languages/all.js +2 -6
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +1 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +1 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +87 -15
- package/editorManager.mjs +87 -16
- package/editors/autocompleteEditor/autocompleteEditor.js +2 -53
- package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -54
- package/editors/dateEditor/dateEditor.js +7 -26
- package/editors/dateEditor/dateEditor.mjs +8 -27
- package/editors/handsontableEditor/handsontableEditor.js +1 -9
- package/editors/handsontableEditor/handsontableEditor.mjs +2 -10
- package/editors/textEditor/textEditor.js +27 -19
- package/editors/textEditor/textEditor.mjs +30 -22
- package/helpers/dom/element.js +9 -188
- package/helpers/dom/element.mjs +9 -182
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/i18n/constants.js +1 -7
- package/i18n/constants.mjs +1 -4
- package/i18n/languages/en-US.js +1 -3
- package/i18n/languages/en-US.mjs +1 -3
- package/i18n/languages/pl-PL.js +1 -3
- package/i18n/languages/pl-PL.mjs +1 -3
- package/languages/all.js +2 -6
- package/languages/en-US.js +1 -3
- package/languages/en-US.mjs +1 -3
- package/languages/index.js +2 -6
- package/languages/pl-PL.js +1 -3
- package/languages/pl-PL.mjs +1 -3
- package/package.json +99 -116
- package/pluginHooks.d.ts +1 -12
- package/pluginHooks.js +1 -152
- package/pluginHooks.mjs +1 -152
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -74
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +5 -75
- package/plugins/columnSorting/columnSorting.js +0 -43
- package/plugins/columnSorting/columnSorting.mjs +3 -44
- package/plugins/columnSorting/index.js +1 -3
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +189 -252
- package/plugins/comments/comments.mjs +190 -251
- package/plugins/contextMenu/commandExecutor.js +3 -2
- package/plugins/contextMenu/commandExecutor.mjs +3 -2
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +36 -75
- package/plugins/contextMenu/contextMenu.mjs +35 -74
- package/plugins/contextMenu/{menu/cursor.mjs → cursor.js} +10 -4
- package/plugins/contextMenu/{menu/cursor.js → cursor.mjs} +4 -6
- package/plugins/contextMenu/itemsFactory.js +3 -2
- package/plugins/contextMenu/itemsFactory.mjs +4 -3
- package/plugins/contextMenu/{menu/menu.js → menu.js} +308 -96
- package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +309 -97
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/{predefinedItems/index.js → predefinedItems.js} +14 -14
- package/plugins/contextMenu/predefinedItems.mjs +68 -0
- package/plugins/contextMenu/utils.js +151 -35
- package/plugins/contextMenu/utils.mjs +144 -35
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +78 -127
- package/plugins/copyPaste/copyPaste.mjs +79 -128
- package/plugins/copyPaste/focusableElement.js +186 -0
- package/plugins/copyPaste/focusableElement.mjs +180 -0
- package/plugins/customBorders/customBorders.js +20 -23
- package/plugins/customBorders/customBorders.mjs +21 -24
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +38 -97
- package/plugins/dropdownMenu/dropdownMenu.mjs +37 -96
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +14 -31
- package/plugins/filters/filters.mjs +14 -31
- package/plugins/filters/ui/select.js +3 -3
- package/plugins/filters/ui/select.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +1 -3
- package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
- package/plugins/mergeCells/mergeCells.js +16 -5
- package/plugins/mergeCells/mergeCells.mjs +16 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
- package/plugins/nestedHeaders/nestedHeaders.js +10 -240
- package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
- package/plugins/nestedHeaders/stateManager/index.js +3 -102
- package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
- package/plugins/nestedRows/nestedRows.js +0 -41
- package/plugins/nestedRows/nestedRows.mjs +0 -41
- package/plugins/nestedRows/ui/headers.js +0 -11
- package/plugins/nestedRows/ui/headers.mjs +1 -12
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
- package/renderers/baseRenderer/baseRenderer.js +0 -17
- package/renderers/baseRenderer/baseRenderer.mjs +1 -18
- package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
- package/renderers/index.d.ts +0 -9
- package/selection/highlight/constants.js +15 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +71 -256
- package/selection/highlight/highlight.mjs +71 -250
- package/selection/highlight/types/activeHeader.js +8 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +18 -6
- package/selection/highlight/types/area.mjs +18 -6
- package/selection/highlight/types/{focus.js → cell.js} +7 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +9 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +7 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +18 -9
- package/selection/highlight/types/header.mjs +18 -9
- package/selection/highlight/types/index.js +35 -0
- package/selection/highlight/types/index.mjs +31 -0
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- package/selection/mouseEventHandler.js +1 -7
- package/selection/mouseEventHandler.mjs +1 -7
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +152 -321
- package/selection/selection.mjs +151 -318
- package/selection/transformation.js +90 -232
- package/selection/transformation.mjs +90 -232
- package/selection/utils.js +21 -15
- package/selection/utils.mjs +21 -16
- package/settings.d.ts +0 -4
- package/shortcuts/context.js +2 -20
- package/shortcuts/context.mjs +3 -20
- package/shortcuts/manager.js +7 -25
- package/shortcuts/manager.mjs +7 -26
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +5 -19
- package/shortcuts/utils.mjs +4 -18
- package/tableView.js +13 -111
- package/tableView.mjs +14 -112
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/selection/constants.js +0 -62
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -26
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -274
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
- package/3rdparty/walkontable/src/selection/scanner.js +0 -270
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
- package/3rdparty/walkontable/src/selection/selection.js +0 -101
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
- package/cellTypes/selectType/index.d.ts +0 -1
- package/cellTypes/selectType/index.js +0 -6
- package/cellTypes/selectType/index.mjs +0 -1
- package/cellTypes/selectType/selectType.d.ts +0 -14
- package/cellTypes/selectType/selectType.js +0 -13
- package/cellTypes/selectType/selectType.mjs +0 -8
- package/core/focusCatcher/focusDetector.js +0 -63
- package/core/focusCatcher/focusDetector.mjs +0 -59
- package/core/focusCatcher/index.js +0 -142
- package/core/focusCatcher/index.mjs +0 -138
- package/core/index.js +0 -9
- package/core/index.mjs +0 -1
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -265
- package/focusManager.mjs +0 -261
- package/helpers/a11y.js +0 -79
- package/helpers/a11y.mjs +0 -38
- package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
- package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
- package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
- package/plugins/comments/contextMenuItem/removeComment.js +0 -38
- package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
- package/plugins/contextMenu/menu/index.js +0 -9
- package/plugins/contextMenu/menu/index.mjs +0 -1
- package/plugins/contextMenu/menu/navigator.js +0 -152
- package/plugins/contextMenu/menu/navigator.mjs +0 -148
- package/plugins/contextMenu/menu/positioner.js +0 -213
- package/plugins/contextMenu/menu/positioner.mjs +0 -209
- package/plugins/contextMenu/menu/utils.js +0 -177
- package/plugins/contextMenu/menu/utils.mjs +0 -163
- package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
- package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
- package/renderers/dateRenderer/dateRenderer.js +0 -29
- package/renderers/dateRenderer/dateRenderer.mjs +0 -24
- package/renderers/dateRenderer/index.d.ts +0 -1
- package/renderers/dateRenderer/index.js +0 -6
- package/renderers/dateRenderer/index.mjs +0 -1
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
- package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
- package/renderers/handsontableRenderer/index.d.ts +0 -1
- package/renderers/handsontableRenderer/index.js +0 -6
- package/renderers/handsontableRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/index.d.ts +0 -1
- package/renderers/selectRenderer/index.js +0 -6
- package/renderers/selectRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
- package/renderers/selectRenderer/selectRenderer.js +0 -27
- package/renderers/selectRenderer/selectRenderer.mjs +0 -22
- package/selection/highlight/types/areaLayered.js +0 -31
- package/selection/highlight/types/areaLayered.mjs +0 -26
- package/selection/highlight/types/column.js +0 -27
- package/selection/highlight/types/column.mjs +0 -22
- package/selection/highlight/types/row.js +0 -27
- package/selection/highlight/types/row.mjs +0 -22
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -27
- package/shortcutContexts/commands/editor/open.mjs +0 -23
- package/shortcutContexts/commands/emptySelectedCells.js +0 -11
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/index.js +0 -35
- package/shortcutContexts/commands/index.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
- package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
- package/shortcutContexts/commands/selectAll.js +0 -12
- package/shortcutContexts/commands/selectAll.mjs +0 -8
- package/shortcutContexts/constants.js +0 -13
- package/shortcutContexts/constants.mjs +0 -8
- package/shortcutContexts/editor.js +0 -25
- package/shortcutContexts/editor.mjs +0 -21
- package/shortcutContexts/grid.js +0 -163
- package/shortcutContexts/grid.mjs +0 -159
- package/shortcutContexts/index.js +0 -24
- package/shortcutContexts/index.mjs +0 -11
@@ -1,142 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
exports.__esModule = true;
|
4
|
-
exports.installFocusCatcher = installFocusCatcher;
|
5
|
-
var _shortcutContexts = require("../../shortcutContexts");
|
6
|
-
var _focusDetector = require("./focusDetector");
|
7
|
-
/**
|
8
|
-
* Installs a focus catcher module. The module observes when the table is focused and depending on
|
9
|
-
* from the which side it was focused on it selects a specified cell or releases the TAB navigation
|
10
|
-
* to the browser.
|
11
|
-
*
|
12
|
-
* @param {Core} hot The Handsontable instance.
|
13
|
-
*/
|
14
|
-
function installFocusCatcher(hot) {
|
15
|
-
let recentlyAddedFocusCoords;
|
16
|
-
const {
|
17
|
-
activate,
|
18
|
-
deactivate
|
19
|
-
} = (0, _focusDetector.installFocusDetector)(hot, {
|
20
|
-
onFocusFromTop() {
|
21
|
-
var _recentlyAddedFocusCo;
|
22
|
-
const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
|
23
|
-
if (mostTopStartCoords) {
|
24
|
-
hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
|
25
|
-
hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
|
26
|
-
}
|
27
|
-
hot.listen();
|
28
|
-
},
|
29
|
-
onFocusFromBottom() {
|
30
|
-
var _recentlyAddedFocusCo2;
|
31
|
-
const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
|
32
|
-
if (mostBottomEndCoords) {
|
33
|
-
hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
|
34
|
-
hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
|
35
|
-
}
|
36
|
-
hot.listen();
|
37
|
-
}
|
38
|
-
});
|
39
|
-
hot.addHook('afterListen', () => deactivate());
|
40
|
-
hot.addHook('afterUnlisten', () => activate());
|
41
|
-
hot.addHook('afterSelection', () => {
|
42
|
-
var _hot$getSelectedRange;
|
43
|
-
recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
|
44
|
-
});
|
45
|
-
hot.getShortcutManager().getContext('grid').addShortcut({
|
46
|
-
keys: [['Tab'], ['Shift', 'Tab']],
|
47
|
-
callback: event => {
|
48
|
-
var _hot$getSelectedRange2;
|
49
|
-
const {
|
50
|
-
disableTabNavigation,
|
51
|
-
autoWrapRow
|
52
|
-
} = hot.getSettings();
|
53
|
-
if (disableTabNavigation) {
|
54
|
-
hot.deselectCell();
|
55
|
-
hot.unlisten();
|
56
|
-
return false;
|
57
|
-
}
|
58
|
-
const isSelected = hot.selection.isSelected();
|
59
|
-
const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
|
60
|
-
const mostTopStartCoords = getMostTopStartPosition(hot);
|
61
|
-
const mostBottomEndCoords = getMostBottomEndPosition(hot);
|
62
|
-
|
63
|
-
// For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
|
64
|
-
if (!autoWrapRow) {
|
65
|
-
mostTopStartCoords.row = highlight.row;
|
66
|
-
mostBottomEndCoords.row = highlight.row;
|
67
|
-
}
|
68
|
-
if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
|
69
|
-
hot.deselectCell();
|
70
|
-
hot.unlisten();
|
71
|
-
return false;
|
72
|
-
}
|
73
|
-
return true;
|
74
|
-
},
|
75
|
-
runOnlyIf: () => !hot.getSettings().minSpareCols,
|
76
|
-
preventDefault: false,
|
77
|
-
stopPropagation: false,
|
78
|
-
position: 'before',
|
79
|
-
relativeToGroup: _shortcutContexts.GRID_GROUP,
|
80
|
-
group: 'focusCatcher'
|
81
|
-
});
|
82
|
-
}
|
83
|
-
|
84
|
-
/**
|
85
|
-
* Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
|
86
|
-
*
|
87
|
-
* @param {Core} hot The Handsontable instance.
|
88
|
-
* @returns {CellCoords|null}
|
89
|
-
*/
|
90
|
-
function getMostTopStartPosition(hot) {
|
91
|
-
const {
|
92
|
-
rowIndexMapper,
|
93
|
-
columnIndexMapper
|
94
|
-
} = hot;
|
95
|
-
const {
|
96
|
-
navigableHeaders
|
97
|
-
} = hot.getSettings();
|
98
|
-
let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
|
99
|
-
let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
|
100
|
-
if (topRow === 0) {
|
101
|
-
topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
|
102
|
-
}
|
103
|
-
if (startColumn === 0) {
|
104
|
-
startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
|
105
|
-
}
|
106
|
-
if (topRow === null || startColumn === null) {
|
107
|
-
return null;
|
108
|
-
}
|
109
|
-
return hot._createCellCoords(topRow, startColumn);
|
110
|
-
}
|
111
|
-
|
112
|
-
/**
|
113
|
-
* Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
|
114
|
-
*
|
115
|
-
* @param {Core} hot The Handsontable instance.
|
116
|
-
* @returns {CellCoords|null}
|
117
|
-
*/
|
118
|
-
function getMostBottomEndPosition(hot) {
|
119
|
-
var _rowIndexMapper$getVi, _columnIndexMapper$ge;
|
120
|
-
const {
|
121
|
-
rowIndexMapper,
|
122
|
-
columnIndexMapper
|
123
|
-
} = hot;
|
124
|
-
const {
|
125
|
-
navigableHeaders
|
126
|
-
} = hot.getSettings();
|
127
|
-
let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
|
128
|
-
let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
|
129
|
-
if (bottomRow < 0) {
|
130
|
-
if (!navigableHeaders || hot.countColHeaders() === 0) {
|
131
|
-
return null;
|
132
|
-
}
|
133
|
-
bottomRow = -1;
|
134
|
-
}
|
135
|
-
if (endColumn < 0) {
|
136
|
-
if (!navigableHeaders || hot.countColHeaders() === 0) {
|
137
|
-
return null;
|
138
|
-
}
|
139
|
-
endColumn = -1;
|
140
|
-
}
|
141
|
-
return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
|
142
|
-
}
|
@@ -1,138 +0,0 @@
|
|
1
|
-
import { GRID_GROUP } from "../../shortcutContexts/index.mjs";
|
2
|
-
import { installFocusDetector } from "./focusDetector.mjs";
|
3
|
-
/**
|
4
|
-
* Installs a focus catcher module. The module observes when the table is focused and depending on
|
5
|
-
* from the which side it was focused on it selects a specified cell or releases the TAB navigation
|
6
|
-
* to the browser.
|
7
|
-
*
|
8
|
-
* @param {Core} hot The Handsontable instance.
|
9
|
-
*/
|
10
|
-
export function installFocusCatcher(hot) {
|
11
|
-
let recentlyAddedFocusCoords;
|
12
|
-
const {
|
13
|
-
activate,
|
14
|
-
deactivate
|
15
|
-
} = installFocusDetector(hot, {
|
16
|
-
onFocusFromTop() {
|
17
|
-
var _recentlyAddedFocusCo;
|
18
|
-
const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
|
19
|
-
if (mostTopStartCoords) {
|
20
|
-
hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
|
21
|
-
hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
|
22
|
-
}
|
23
|
-
hot.listen();
|
24
|
-
},
|
25
|
-
onFocusFromBottom() {
|
26
|
-
var _recentlyAddedFocusCo2;
|
27
|
-
const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
|
28
|
-
if (mostBottomEndCoords) {
|
29
|
-
hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
|
30
|
-
hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
|
31
|
-
}
|
32
|
-
hot.listen();
|
33
|
-
}
|
34
|
-
});
|
35
|
-
hot.addHook('afterListen', () => deactivate());
|
36
|
-
hot.addHook('afterUnlisten', () => activate());
|
37
|
-
hot.addHook('afterSelection', () => {
|
38
|
-
var _hot$getSelectedRange;
|
39
|
-
recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
|
40
|
-
});
|
41
|
-
hot.getShortcutManager().getContext('grid').addShortcut({
|
42
|
-
keys: [['Tab'], ['Shift', 'Tab']],
|
43
|
-
callback: event => {
|
44
|
-
var _hot$getSelectedRange2;
|
45
|
-
const {
|
46
|
-
disableTabNavigation,
|
47
|
-
autoWrapRow
|
48
|
-
} = hot.getSettings();
|
49
|
-
if (disableTabNavigation) {
|
50
|
-
hot.deselectCell();
|
51
|
-
hot.unlisten();
|
52
|
-
return false;
|
53
|
-
}
|
54
|
-
const isSelected = hot.selection.isSelected();
|
55
|
-
const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
|
56
|
-
const mostTopStartCoords = getMostTopStartPosition(hot);
|
57
|
-
const mostBottomEndCoords = getMostBottomEndPosition(hot);
|
58
|
-
|
59
|
-
// For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
|
60
|
-
if (!autoWrapRow) {
|
61
|
-
mostTopStartCoords.row = highlight.row;
|
62
|
-
mostBottomEndCoords.row = highlight.row;
|
63
|
-
}
|
64
|
-
if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
|
65
|
-
hot.deselectCell();
|
66
|
-
hot.unlisten();
|
67
|
-
return false;
|
68
|
-
}
|
69
|
-
return true;
|
70
|
-
},
|
71
|
-
runOnlyIf: () => !hot.getSettings().minSpareCols,
|
72
|
-
preventDefault: false,
|
73
|
-
stopPropagation: false,
|
74
|
-
position: 'before',
|
75
|
-
relativeToGroup: GRID_GROUP,
|
76
|
-
group: 'focusCatcher'
|
77
|
-
});
|
78
|
-
}
|
79
|
-
|
80
|
-
/**
|
81
|
-
* Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
|
82
|
-
*
|
83
|
-
* @param {Core} hot The Handsontable instance.
|
84
|
-
* @returns {CellCoords|null}
|
85
|
-
*/
|
86
|
-
function getMostTopStartPosition(hot) {
|
87
|
-
const {
|
88
|
-
rowIndexMapper,
|
89
|
-
columnIndexMapper
|
90
|
-
} = hot;
|
91
|
-
const {
|
92
|
-
navigableHeaders
|
93
|
-
} = hot.getSettings();
|
94
|
-
let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
|
95
|
-
let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
|
96
|
-
if (topRow === 0) {
|
97
|
-
topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
|
98
|
-
}
|
99
|
-
if (startColumn === 0) {
|
100
|
-
startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
|
101
|
-
}
|
102
|
-
if (topRow === null || startColumn === null) {
|
103
|
-
return null;
|
104
|
-
}
|
105
|
-
return hot._createCellCoords(topRow, startColumn);
|
106
|
-
}
|
107
|
-
|
108
|
-
/**
|
109
|
-
* Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
|
110
|
-
*
|
111
|
-
* @param {Core} hot The Handsontable instance.
|
112
|
-
* @returns {CellCoords|null}
|
113
|
-
*/
|
114
|
-
function getMostBottomEndPosition(hot) {
|
115
|
-
var _rowIndexMapper$getVi, _columnIndexMapper$ge;
|
116
|
-
const {
|
117
|
-
rowIndexMapper,
|
118
|
-
columnIndexMapper
|
119
|
-
} = hot;
|
120
|
-
const {
|
121
|
-
navigableHeaders
|
122
|
-
} = hot.getSettings();
|
123
|
-
let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
|
124
|
-
let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
|
125
|
-
if (bottomRow < 0) {
|
126
|
-
if (!navigableHeaders || hot.countColHeaders() === 0) {
|
127
|
-
return null;
|
128
|
-
}
|
129
|
-
bottomRow = -1;
|
130
|
-
}
|
131
|
-
if (endColumn < 0) {
|
132
|
-
if (!navigableHeaders || hot.countColHeaders() === 0) {
|
133
|
-
return null;
|
134
|
-
}
|
135
|
-
endColumn = -1;
|
136
|
-
}
|
137
|
-
return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
|
138
|
-
}
|
package/core/index.js
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
exports.__esModule = true;
|
4
|
-
var _focusCatcher = require("./focusCatcher");
|
5
|
-
Object.keys(_focusCatcher).forEach(function (key) {
|
6
|
-
if (key === "default" || key === "__esModule") return;
|
7
|
-
if (key in exports && exports[key] === _focusCatcher[key]) return;
|
8
|
-
exports[key] = _focusCatcher[key];
|
9
|
-
});
|
package/core/index.mjs
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export * from "./focusCatcher/index.mjs";
|
package/focusManager.d.ts
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
type FocusMode = 'cell' | 'mixed';
|
2
|
-
|
3
|
-
export interface FocusManager {
|
4
|
-
getFocusMode(): FocusMode;
|
5
|
-
setFocusMode(focusMode: FocusMode): void;
|
6
|
-
getRefocusDelay(): number;
|
7
|
-
setRefocusDelay(delay: number): void;
|
8
|
-
setRefocusElementGetter(getterFn: () => HTMLElement): void;
|
9
|
-
getRefocusElement(): HTMLElement | void;
|
10
|
-
focusOnHighlightedCell(): void;
|
11
|
-
refocusToEditorTextarea(delay: number): void;
|
12
|
-
}
|
package/focusManager.js
DELETED
@@ -1,265 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
exports.__esModule = true;
|
4
|
-
require("core-js/modules/es.error.cause.js");
|
5
|
-
var _console = require("./helpers/console");
|
6
|
-
var _element = require("./helpers/dom/element");
|
7
|
-
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
8
|
-
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
9
|
-
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
10
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
11
|
-
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
12
|
-
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
13
|
-
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
14
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
15
|
-
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; } }
|
16
|
-
/**
|
17
|
-
* Possible focus modes.
|
18
|
-
* - CELL - The browser's focus stays on the lastly selected cell element.
|
19
|
-
* - MIXED - The browser's focus switches from the lastly selected cell element to the currently active editor's
|
20
|
-
* `TEXTAREA` element after a delay defined in the manager.
|
21
|
-
*
|
22
|
-
* @type {{CELL: string, MIXED: string}}
|
23
|
-
*/
|
24
|
-
const FOCUS_MODES = Object.freeze({
|
25
|
-
CELL: 'cell',
|
26
|
-
MIXED: 'mixed'
|
27
|
-
});
|
28
|
-
|
29
|
-
/**
|
30
|
-
* Manages the browser's focus in the table.
|
31
|
-
*/
|
32
|
-
var _hot = /*#__PURE__*/new WeakMap();
|
33
|
-
var _focusMode = /*#__PURE__*/new WeakMap();
|
34
|
-
var _refocusDelay = /*#__PURE__*/new WeakMap();
|
35
|
-
var _refocusElementGetter = /*#__PURE__*/new WeakMap();
|
36
|
-
var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
|
37
|
-
var _getSelectedCell = /*#__PURE__*/new WeakSet();
|
38
|
-
var _manageFocus = /*#__PURE__*/new WeakSet();
|
39
|
-
var _onUpdateSettings = /*#__PURE__*/new WeakSet();
|
40
|
-
class FocusManager {
|
41
|
-
constructor(hotInstance) {
|
42
|
-
var _this = this;
|
43
|
-
/**
|
44
|
-
* Update the manager configuration after calling `updateSettings`.
|
45
|
-
*
|
46
|
-
* @private
|
47
|
-
* @param {object} newSettings The new settings passed to the `updateSettings` method.
|
48
|
-
*/
|
49
|
-
_classPrivateMethodInitSpec(this, _onUpdateSettings);
|
50
|
-
/**
|
51
|
-
* Manage the browser's focus after cell selection.
|
52
|
-
*
|
53
|
-
* @private
|
54
|
-
*/
|
55
|
-
_classPrivateMethodInitSpec(this, _manageFocus);
|
56
|
-
/**
|
57
|
-
* Get and return the currently selected and highlighted cell/header element.
|
58
|
-
*
|
59
|
-
* @private
|
60
|
-
* @returns {HTMLTableCellElement}
|
61
|
-
*/
|
62
|
-
_classPrivateMethodInitSpec(this, _getSelectedCell);
|
63
|
-
/**
|
64
|
-
* Get the coordinates of the highlight of the currently selected cell/header.
|
65
|
-
*
|
66
|
-
* @returns {CellCoords}
|
67
|
-
*/
|
68
|
-
_classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
|
69
|
-
/**
|
70
|
-
* The Handsontable instance.
|
71
|
-
*/
|
72
|
-
_classPrivateFieldInitSpec(this, _hot, {
|
73
|
-
writable: true,
|
74
|
-
value: void 0
|
75
|
-
});
|
76
|
-
/**
|
77
|
-
* The currently enabled focus mode.
|
78
|
-
* Can be either:
|
79
|
-
*
|
80
|
-
* - 'cell' - The browser's focus stays on the lastly selected cell element.
|
81
|
-
* - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
|
82
|
-
* `TEXTAREA` element after a delay defined in the manager.
|
83
|
-
*
|
84
|
-
* @type {string}
|
85
|
-
*/
|
86
|
-
_classPrivateFieldInitSpec(this, _focusMode, {
|
87
|
-
writable: true,
|
88
|
-
value: void 0
|
89
|
-
});
|
90
|
-
/**
|
91
|
-
* The delay after which the focus switches from the lastly selected cell to the active editor's `TEXTAREA`
|
92
|
-
* element if the focus mode is set to 'mixed'.
|
93
|
-
*
|
94
|
-
* @type {number}
|
95
|
-
*/
|
96
|
-
_classPrivateFieldInitSpec(this, _refocusDelay, {
|
97
|
-
writable: true,
|
98
|
-
value: 50
|
99
|
-
});
|
100
|
-
/**
|
101
|
-
* Getter function for the element to be used when refocusing the browser after a delay. If `null`, the active
|
102
|
-
* editor's `TEXTAREA` element will be used.
|
103
|
-
*
|
104
|
-
* @type {null|Function}
|
105
|
-
*/
|
106
|
-
_classPrivateFieldInitSpec(this, _refocusElementGetter, {
|
107
|
-
writable: true,
|
108
|
-
value: null
|
109
|
-
});
|
110
|
-
const hotSettings = hotInstance.getSettings();
|
111
|
-
_classPrivateFieldSet(this, _hot, hotInstance);
|
112
|
-
_classPrivateFieldSet(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
|
113
|
-
_classPrivateFieldGet(this, _hot).addHook('afterUpdateSettings', function () {
|
114
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
115
|
-
args[_key] = arguments[_key];
|
116
|
-
}
|
117
|
-
return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
|
118
|
-
});
|
119
|
-
_classPrivateFieldGet(this, _hot).addHook('afterSelection', function () {
|
120
|
-
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
121
|
-
args[_key2] = arguments[_key2];
|
122
|
-
}
|
123
|
-
return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
|
124
|
-
});
|
125
|
-
}
|
126
|
-
|
127
|
-
/**
|
128
|
-
* Get the current focus mode.
|
129
|
-
*
|
130
|
-
* @returns {'cell' | 'mixed'}
|
131
|
-
*/
|
132
|
-
getFocusMode() {
|
133
|
-
return _classPrivateFieldGet(this, _focusMode);
|
134
|
-
}
|
135
|
-
|
136
|
-
/**
|
137
|
-
* Set the focus mode.
|
138
|
-
*
|
139
|
-
* @param {'cell' | 'mixed'} focusMode The new focus mode.
|
140
|
-
*/
|
141
|
-
setFocusMode(focusMode) {
|
142
|
-
if (Object.values(FOCUS_MODES).includes(focusMode)) {
|
143
|
-
_classPrivateFieldSet(this, _focusMode, focusMode);
|
144
|
-
} else {
|
145
|
-
(0, _console.warn)(`"${focusMode}" is not a valid focus mode.`);
|
146
|
-
}
|
147
|
-
}
|
148
|
-
|
149
|
-
/**
|
150
|
-
* Get the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
|
151
|
-
* element if the focus mode is set to 'mixed'.
|
152
|
-
*
|
153
|
-
* @returns {number} Delay in milliseconds.
|
154
|
-
*/
|
155
|
-
getRefocusDelay() {
|
156
|
-
return _classPrivateFieldGet(this, _refocusDelay);
|
157
|
-
}
|
158
|
-
|
159
|
-
/**
|
160
|
-
* Set the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
|
161
|
-
* element if the focus mode is set to 'mixed'.
|
162
|
-
*
|
163
|
-
* @param {number} delay Delay in milliseconds.
|
164
|
-
*/
|
165
|
-
setRefocusDelay(delay) {
|
166
|
-
_classPrivateFieldSet(this, _refocusDelay, delay);
|
167
|
-
}
|
168
|
-
|
169
|
-
/**
|
170
|
-
* Set the function to be used as the "refocus element" getter. It should return a focusable HTML element.
|
171
|
-
*
|
172
|
-
* @param {Function} getRefocusElementFunction The refocus element getter.
|
173
|
-
*/
|
174
|
-
setRefocusElementGetter(getRefocusElementFunction) {
|
175
|
-
_classPrivateFieldSet(this, _refocusElementGetter, getRefocusElementFunction);
|
176
|
-
}
|
177
|
-
|
178
|
-
/**
|
179
|
-
* Get the element to be used when refocusing the browser after a delay in case of the focus mode being 'mixed'.
|
180
|
-
*
|
181
|
-
* @returns {HTMLTextAreaElement|HTMLElement|undefined}
|
182
|
-
*/
|
183
|
-
getRefocusElement() {
|
184
|
-
if (typeof _classPrivateFieldGet(this, _refocusElementGetter) === 'function') {
|
185
|
-
return _classPrivateFieldGet(this, _refocusElementGetter).call(this);
|
186
|
-
} else {
|
187
|
-
var _classPrivateFieldGet2;
|
188
|
-
return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
|
189
|
-
}
|
190
|
-
}
|
191
|
-
|
192
|
-
/**
|
193
|
-
* Set the browser's focus to the highlighted cell of the last selection.
|
194
|
-
*
|
195
|
-
* @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
|
196
|
-
*/
|
197
|
-
focusOnHighlightedCell(selectedCell) {
|
198
|
-
var _classPrivateFieldGet3;
|
199
|
-
const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
|
200
|
-
const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
|
201
|
-
let elementToBeFocused = _classPrivateFieldGet(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
|
202
|
-
if (!(elementToBeFocused instanceof HTMLElement)) {
|
203
|
-
elementToBeFocused = currentlySelectedHighlight;
|
204
|
-
}
|
205
|
-
if (elementToBeFocused && !((_classPrivateFieldGet3 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
|
206
|
-
elementToBeFocused.focus({
|
207
|
-
preventScroll: true
|
208
|
-
});
|
209
|
-
}
|
210
|
-
}
|
211
|
-
|
212
|
-
/**
|
213
|
-
* Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
|
214
|
-
* will be taken from the manager's configuration.
|
215
|
-
*
|
216
|
-
* @param {number} delay Delay in milliseconds.
|
217
|
-
*/
|
218
|
-
refocusToEditorTextarea() {
|
219
|
-
let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _refocusDelay);
|
220
|
-
const refocusElement = this.getRefocusElement();
|
221
|
-
|
222
|
-
// Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
|
223
|
-
if (_classPrivateFieldGet(this, _hot).getSettings().imeFastEdit && !!refocusElement) {
|
224
|
-
_classPrivateFieldGet(this, _hot)._registerTimeout(() => {
|
225
|
-
refocusElement.select();
|
226
|
-
}, delay);
|
227
|
-
}
|
228
|
-
}
|
229
|
-
}
|
230
|
-
exports.FocusManager = FocusManager;
|
231
|
-
function _getCurrentHighlightCoords2() {
|
232
|
-
const lastSelectedRange = _classPrivateFieldGet(this, _hot).getSelectedRangeLast();
|
233
|
-
return lastSelectedRange.highlight;
|
234
|
-
}
|
235
|
-
function _getSelectedCell2() {
|
236
|
-
const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
|
237
|
-
return _classPrivateFieldGet(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
|
238
|
-
}
|
239
|
-
function _manageFocus2() {
|
240
|
-
const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
|
241
|
-
const {
|
242
|
-
activeElement
|
243
|
-
} = _classPrivateFieldGet(this, _hot).rootDocument;
|
244
|
-
|
245
|
-
// Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
|
246
|
-
// and resets the `document.activeElement` property. The blurring should happen only when the
|
247
|
-
// previously selected input element has not belonged to the Handsontable editor. If blurring is
|
248
|
-
// triggered for all elements, there is a problem with the disappearing IME editor (#9672).
|
249
|
-
if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
|
250
|
-
activeElement.blur();
|
251
|
-
}
|
252
|
-
this.focusOnHighlightedCell(selectedCell);
|
253
|
-
if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
|
254
|
-
_classPrivateFieldGet(this, _hot).addHookOnce('afterSelectionEnd', () => {
|
255
|
-
this.refocusToEditorTextarea();
|
256
|
-
});
|
257
|
-
}
|
258
|
-
}
|
259
|
-
function _onUpdateSettings2(newSettings) {
|
260
|
-
if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
|
261
|
-
this.setFocusMode(FOCUS_MODES.MIXED);
|
262
|
-
} else if (!newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.CELL) {
|
263
|
-
this.setFocusMode(FOCUS_MODES.CELL);
|
264
|
-
}
|
265
|
-
}
|