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
package/selection/selection.mjs
CHANGED
@@ -1,31 +1,18 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
|
-
|
3
|
-
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
5
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
6
|
-
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); }
|
7
|
-
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
8
|
-
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; } }
|
9
|
-
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
10
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
11
|
-
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
12
|
-
import { CellCoords, CellRange } from "./../3rdparty/walkontable/src/index.mjs";
|
13
|
-
import Highlight, { AREA_TYPE, HEADER_TYPE, FOCUS_TYPE } from "./highlight/highlight.mjs";
|
2
|
+
import Highlight from "./highlight/highlight.mjs";
|
3
|
+
import { AREA_TYPE, HEADER_TYPE, CELL_TYPE } from "./highlight/constants.mjs";
|
14
4
|
import SelectionRange from "./range.mjs";
|
15
5
|
import { createObjectPropListener, mixin } from "./../helpers/object.mjs";
|
16
6
|
import { isUndefined } from "./../helpers/mixed.mjs";
|
17
|
-
import { clamp } from "./../helpers/number.mjs";
|
18
7
|
import { arrayEach } from "./../helpers/array.mjs";
|
19
8
|
import localHooks from "./../mixins/localHooks.mjs";
|
20
9
|
import Transformation from "./transformation.mjs";
|
21
|
-
import { detectSelectionType, normalizeSelectionFactory, SELECTION_TYPE_EMPTY, SELECTION_TYPE_UNRECOGNIZED } from "./utils.mjs";
|
10
|
+
import { detectSelectionType, isValidCoord, normalizeSelectionFactory, SELECTION_TYPE_EMPTY, SELECTION_TYPE_UNRECOGNIZED } from "./utils.mjs";
|
22
11
|
import { toSingleLine } from "./../helpers/templateLiteralTag.mjs";
|
23
|
-
import { A11Y_SELECTED } from "../helpers/a11y.mjs";
|
24
12
|
/**
|
25
13
|
* @class Selection
|
26
14
|
* @util
|
27
15
|
*/
|
28
|
-
var _disableHeadersHighlight = /*#__PURE__*/new WeakMap();
|
29
16
|
class Selection {
|
30
17
|
constructor(settings, tableProps) {
|
31
18
|
var _this = this;
|
@@ -34,73 +21,57 @@ class Selection {
|
|
34
21
|
*
|
35
22
|
* @type {GridSettings}
|
36
23
|
*/
|
37
|
-
|
24
|
+
this.settings = settings;
|
38
25
|
/**
|
39
26
|
* An additional object with dynamically defined properties which describes table state.
|
40
27
|
*
|
41
28
|
* @type {object}
|
42
29
|
*/
|
43
|
-
|
30
|
+
this.tableProps = tableProps;
|
44
31
|
/**
|
45
32
|
* The flag which determines if the selection is in progress.
|
46
33
|
*
|
47
34
|
* @type {boolean}
|
48
35
|
*/
|
49
|
-
|
50
|
-
/**
|
51
|
-
* Selection data layer (handle visual coordinates).
|
52
|
-
*
|
53
|
-
* @type {SelectionRange}
|
54
|
-
*/
|
55
|
-
_defineProperty(this, "selectedRange", new SelectionRange((highlight, from, to) => {
|
56
|
-
return this.tableProps.createCellRange(highlight, from, to);
|
57
|
-
}));
|
58
|
-
/**
|
59
|
-
* Visualization layer.
|
60
|
-
*
|
61
|
-
* @type {Highlight}
|
62
|
-
*/
|
63
|
-
_defineProperty(this, "highlight", void 0);
|
36
|
+
this.inProgress = false;
|
64
37
|
/**
|
65
|
-
* The
|
38
|
+
* The flag indicates that selection was performed by clicking the corner overlay.
|
66
39
|
*
|
67
|
-
* @type {
|
40
|
+
* @type {boolean}
|
68
41
|
*/
|
69
|
-
|
42
|
+
this.selectedByCorner = false;
|
70
43
|
/**
|
71
44
|
* The collection of the selection layer levels where the whole row was selected using the row header or
|
72
45
|
* the corner header.
|
73
46
|
*
|
74
|
-
* @type {Set
|
47
|
+
* @type {Set.<number>}
|
75
48
|
*/
|
76
|
-
|
49
|
+
this.selectedByRowHeader = new Set();
|
77
50
|
/**
|
78
51
|
* The collection of the selection layer levels where the whole column was selected using the column header or
|
79
52
|
* the corner header.
|
80
53
|
*
|
81
|
-
* @type {Set
|
54
|
+
* @type {Set.<number>}
|
82
55
|
*/
|
83
|
-
|
56
|
+
this.selectedByColumnHeader = new Set();
|
84
57
|
/**
|
85
|
-
*
|
58
|
+
* Selection data layer (handle visual coordinates).
|
86
59
|
*
|
87
|
-
* @type {
|
60
|
+
* @type {SelectionRange}
|
88
61
|
*/
|
89
|
-
|
90
|
-
|
91
|
-
value: false
|
62
|
+
this.selectedRange = new SelectionRange((highlight, from, to) => {
|
63
|
+
return this.tableProps.createCellRange(highlight, from, to);
|
92
64
|
});
|
93
|
-
|
94
|
-
|
65
|
+
/**
|
66
|
+
* Visualization layer.
|
67
|
+
*
|
68
|
+
* @type {Highlight}
|
69
|
+
*/
|
95
70
|
this.highlight = new Highlight({
|
96
71
|
headerClassName: settings.currentHeaderClassName,
|
97
|
-
headerAttributes: [A11Y_SELECTED()],
|
98
72
|
activeHeaderClassName: settings.activeHeaderClassName,
|
99
73
|
rowClassName: settings.currentRowClassName,
|
100
74
|
columnClassName: settings.currentColClassName,
|
101
|
-
cellAttributes: [A11Y_SELECTED()],
|
102
|
-
rowIndexMapper: this.tableProps.rowIndexMapper,
|
103
|
-
columnIndexMapper: this.tableProps.columnIndexMapper,
|
104
75
|
disabledCellSelection: (row, column) => this.tableProps.isDisabledCellSelection(row, column),
|
105
76
|
cellCornerVisible: function () {
|
106
77
|
return _this.isCellCornerVisible(...arguments);
|
@@ -111,19 +82,21 @@ class Selection {
|
|
111
82
|
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
112
83
|
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
113
84
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
114
|
-
createCellRange: (highlight, from, to) => this.tableProps.createCellRange(highlight, from, to)
|
85
|
+
createCellRange: (highlight, from, to) => this.tableProps.createCellRange(highlight, from, to),
|
86
|
+
rowIndexMapper: () => this.tableProps.rowIndexMapper(),
|
87
|
+
columnIndexMapper: () => this.tableProps.columnIndexMapper()
|
115
88
|
});
|
89
|
+
/**
|
90
|
+
* The module for modifying coordinates.
|
91
|
+
*
|
92
|
+
* @type {Transformation}
|
93
|
+
*/
|
116
94
|
this.transformation = new Transformation(this.selectedRange, {
|
117
|
-
|
118
|
-
|
119
|
-
countRenderableRows: () => this.tableProps.countRenderableRows(),
|
120
|
-
countRenderableColumns: () => this.tableProps.countRenderableColumns(),
|
121
|
-
countRowHeaders: () => this.tableProps.countRowHeaders(),
|
122
|
-
countColHeaders: () => this.tableProps.countColHeaders(),
|
95
|
+
countRows: () => this.tableProps.countRowsTranslated(),
|
96
|
+
countCols: () => this.tableProps.countColsTranslated(),
|
123
97
|
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
124
98
|
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
125
99
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
126
|
-
navigableHeaders: () => settings.navigableHeaders,
|
127
100
|
fixedRowsBottom: () => settings.fixedRowsBottom,
|
128
101
|
minSpareRows: () => settings.minSpareRows,
|
129
102
|
minSpareCols: () => settings.minSpareCols,
|
@@ -178,14 +151,14 @@ class Selection {
|
|
178
151
|
}
|
179
152
|
|
180
153
|
/**
|
181
|
-
* Indicate that selection process began. It sets
|
154
|
+
* Indicate that selection process began. It sets internaly `.inProgress` property to `true`.
|
182
155
|
*/
|
183
156
|
begin() {
|
184
157
|
this.inProgress = true;
|
185
158
|
}
|
186
159
|
|
187
160
|
/**
|
188
|
-
* Indicate that selection process finished. It sets
|
161
|
+
* Indicate that selection process finished. It sets internaly `.inProgress` property to `false`.
|
189
162
|
*/
|
190
163
|
finish() {
|
191
164
|
this.runLocalHooks('afterSelectionFinished', Array.from(this.selectedRange));
|
@@ -210,25 +183,33 @@ class Selection {
|
|
210
183
|
* the default trigger will be used.
|
211
184
|
* @param {boolean} [fragment=false] If `true`, the selection will be treated as a partial selection where the
|
212
185
|
* `setRangeEnd` method won't be called on every `setRangeStart` call.
|
213
|
-
* @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
|
214
186
|
*/
|
215
187
|
setRangeStart(coords, multipleSelection) {
|
216
188
|
let fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
217
|
-
let highlightCoords = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : coords;
|
218
189
|
const isMultipleMode = this.settings.selectionMode === 'multiple';
|
219
190
|
const isMultipleSelection = isUndefined(multipleSelection) ? this.tableProps.getShortcutManager().isCtrlPressed() : multipleSelection;
|
191
|
+
const isRowNegative = coords.row < 0;
|
192
|
+
const isColumnNegative = coords.col < 0;
|
193
|
+
const selectedByCorner = isRowNegative && isColumnNegative;
|
220
194
|
// We are creating copy. We would like to modify just the start of the selection by below hook. Then original coords
|
221
195
|
// should be handled by next methods.
|
222
196
|
const coordsClone = coords.clone();
|
197
|
+
this.selectedByCorner = selectedByCorner;
|
223
198
|
this.runLocalHooks(`beforeSetRangeStart${fragment ? 'Only' : ''}`, coordsClone);
|
224
199
|
if (!isMultipleMode || isMultipleMode && !isMultipleSelection && isUndefined(multipleSelection)) {
|
225
200
|
this.selectedRange.clear();
|
226
201
|
}
|
227
|
-
this.selectedRange.add(coordsClone)
|
202
|
+
this.selectedRange.add(coordsClone);
|
228
203
|
if (this.getLayerLevel() === 0) {
|
229
204
|
this.selectedByRowHeader.clear();
|
230
205
|
this.selectedByColumnHeader.clear();
|
231
206
|
}
|
207
|
+
if (!selectedByCorner && isColumnNegative) {
|
208
|
+
this.selectedByRowHeader.add(this.getLayerLevel());
|
209
|
+
}
|
210
|
+
if (!selectedByCorner && isRowNegative) {
|
211
|
+
this.selectedByColumnHeader.add(this.getLayerLevel());
|
212
|
+
}
|
232
213
|
if (!fragment) {
|
233
214
|
this.setRangeEnd(coords);
|
234
215
|
}
|
@@ -241,11 +222,9 @@ class Selection {
|
|
241
222
|
* @param {boolean} [multipleSelection] If `true`, selection will be worked in 'multiple' mode. This option works
|
242
223
|
* only when 'selectionMode' is set as 'multiple'. If the argument is not defined
|
243
224
|
* the default trigger will be used.
|
244
|
-
* @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
|
245
225
|
*/
|
246
226
|
setRangeStartOnly(coords, multipleSelection) {
|
247
|
-
|
248
|
-
this.setRangeStart(coords, multipleSelection, true, highlightCoords);
|
227
|
+
this.setRangeStart(coords, multipleSelection, true);
|
249
228
|
}
|
250
229
|
|
251
230
|
/**
|
@@ -257,40 +236,21 @@ class Selection {
|
|
257
236
|
if (this.selectedRange.isEmpty()) {
|
258
237
|
return;
|
259
238
|
}
|
260
|
-
const coordsClone = coords.clone();
|
261
|
-
const countRows = this.tableProps.countRows();
|
262
|
-
const countCols = this.tableProps.countCols();
|
263
|
-
const isSingle = this.selectedRange.current().clone().setTo(coords).isSingleHeader();
|
264
239
|
|
265
|
-
//
|
266
|
-
//
|
267
|
-
|
268
|
-
return;
|
269
|
-
}
|
240
|
+
// We are creating copy. We would like to modify just the end of the selection by below hook. Then original coords
|
241
|
+
// should be handled by next methods.
|
242
|
+
const coordsClone = coords.clone();
|
270
243
|
this.runLocalHooks('beforeSetRangeEnd', coordsClone);
|
271
244
|
this.begin();
|
272
245
|
const cellRange = this.selectedRange.current();
|
273
|
-
if (
|
274
|
-
cellRange.
|
275
|
-
}
|
276
|
-
if (this.settings.selectionMode === 'single') {
|
277
|
-
cellRange.setFrom(cellRange.highlight);
|
278
|
-
cellRange.setTo(cellRange.highlight);
|
279
|
-
} else {
|
280
|
-
cellRange.setTo(coordsClone);
|
246
|
+
if (this.settings.selectionMode !== 'single') {
|
247
|
+
cellRange.setTo(this.tableProps.createCellCoords(coordsClone.row, coordsClone.col));
|
281
248
|
}
|
282
249
|
|
283
|
-
//
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
}
|
288
|
-
}
|
289
|
-
this.runLocalHooks('beforeHighlightSet');
|
290
|
-
const focusHighlight = this.highlight.getFocus();
|
291
|
-
focusHighlight.clear();
|
292
|
-
if (this.highlight.isEnabledFor(FOCUS_TYPE, cellRange.highlight)) {
|
293
|
-
focusHighlight.add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
|
250
|
+
// Set up current selection.
|
251
|
+
this.highlight.getCell().clear();
|
252
|
+
if (this.highlight.isEnabledFor(CELL_TYPE, cellRange.highlight)) {
|
253
|
+
this.highlight.getCell().add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
|
294
254
|
}
|
295
255
|
const layerLevel = this.getLayerLevel();
|
296
256
|
|
@@ -298,80 +258,69 @@ class Selection {
|
|
298
258
|
// indication that the new selection is performing.
|
299
259
|
if (layerLevel < this.highlight.layerLevel) {
|
300
260
|
arrayEach(this.highlight.getAreas(), highlight => void highlight.clear());
|
301
|
-
arrayEach(this.highlight.
|
302
|
-
arrayEach(this.highlight.
|
303
|
-
arrayEach(this.highlight.getColumnHeaders(), highlight => void highlight.clear());
|
304
|
-
arrayEach(this.highlight.getActiveRowHeaders(), highlight => void highlight.clear());
|
305
|
-
arrayEach(this.highlight.getActiveColumnHeaders(), highlight => void highlight.clear());
|
306
|
-
arrayEach(this.highlight.getActiveCornerHeaders(), highlight => void highlight.clear());
|
307
|
-
arrayEach(this.highlight.getRowHighlights(), highlight => void highlight.clear());
|
308
|
-
arrayEach(this.highlight.getColumnHighlights(), highlight => void highlight.clear());
|
261
|
+
arrayEach(this.highlight.getHeaders(), highlight => void highlight.clear());
|
262
|
+
arrayEach(this.highlight.getActiveHeaders(), highlight => void highlight.clear());
|
309
263
|
}
|
310
264
|
this.highlight.useLayerLevel(layerLevel);
|
311
|
-
const areaHighlight = this.highlight.
|
312
|
-
const
|
313
|
-
const
|
314
|
-
const columnHeaderHighlight = this.highlight.createColumnHeader();
|
315
|
-
const activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
|
316
|
-
const activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
|
317
|
-
const activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
|
318
|
-
const rowHighlight = this.highlight.createRowHighlight();
|
319
|
-
const columnHighlight = this.highlight.createColumnHighlight();
|
265
|
+
const areaHighlight = this.highlight.createOrGetArea();
|
266
|
+
const headerHighlight = this.highlight.createOrGetHeader();
|
267
|
+
const activeHeaderHighlight = this.highlight.createOrGetActiveHeader();
|
320
268
|
areaHighlight.clear();
|
321
|
-
|
322
|
-
|
323
|
-
columnHeaderHighlight.clear();
|
324
|
-
activeRowHeaderHighlight.clear();
|
325
|
-
activeColumnHeaderHighlight.clear();
|
326
|
-
activeCornerHeaderHighlight.clear();
|
327
|
-
rowHighlight.clear();
|
328
|
-
columnHighlight.clear();
|
269
|
+
headerHighlight.clear();
|
270
|
+
activeHeaderHighlight.clear();
|
329
271
|
if (this.highlight.isEnabledFor(AREA_TYPE, cellRange.highlight) && (this.isMultiple() || layerLevel >= 1)) {
|
330
272
|
areaHighlight.add(cellRange.from).add(cellRange.to).commit();
|
331
|
-
layeredAreaHighlight.add(cellRange.from).add(cellRange.to).commit();
|
332
273
|
if (layerLevel === 1) {
|
333
274
|
// For single cell selection in the same layer, we do not create area selection to prevent blue background.
|
334
275
|
// When non-consecutive selection is performed we have to add that missing area selection to the previous layer
|
335
276
|
// based on previous coordinates. It only occurs when the previous selection wasn't select multiple cells.
|
336
277
|
const previousRange = this.selectedRange.previous();
|
337
|
-
this.highlight.useLayerLevel(layerLevel - 1)
|
338
|
-
this.highlight.createArea().add(previousRange.from).commit()
|
339
|
-
// Range may start with hidden indexes. Commit would not found start point (as we add just the `from` coords).
|
340
|
-
.syncWith(previousRange);
|
341
|
-
this.highlight.createLayeredArea().add(previousRange.from).commit()
|
278
|
+
this.highlight.useLayerLevel(layerLevel - 1).createOrGetArea().add(previousRange.from).commit()
|
342
279
|
// Range may start with hidden indexes. Commit would not found start point (as we add just the `from` coords).
|
343
280
|
.syncWith(previousRange);
|
344
281
|
this.highlight.useLayerLevel(layerLevel);
|
345
282
|
}
|
346
283
|
}
|
347
284
|
if (this.highlight.isEnabledFor(HEADER_TYPE, cellRange.highlight)) {
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
columnHighlight.add(columnCoordsFrom).commit();
|
358
|
-
} else {
|
359
|
-
rowHeaderHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
|
360
|
-
columnHeaderHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
361
|
-
rowHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
|
362
|
-
columnHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
363
|
-
}
|
285
|
+
// The header selection generally contains cell selection. In a case when all rows (or columns)
|
286
|
+
// are hidden that visual coordinates are translated to renderable coordinates that do not exist.
|
287
|
+
// Hence no header highlight is generated. In that case, to make a column (or a row) header
|
288
|
+
// highlight, the row and column index has to point to the header (the negative value). See #7052.
|
289
|
+
const areAnyRowsRendered = this.tableProps.countRowsTranslated() === 0;
|
290
|
+
const areAnyColumnsRendered = this.tableProps.countColsTranslated() === 0;
|
291
|
+
let headerCellRange = cellRange;
|
292
|
+
if (areAnyRowsRendered || areAnyColumnsRendered) {
|
293
|
+
headerCellRange = cellRange.clone();
|
364
294
|
}
|
365
|
-
|
366
|
-
|
367
|
-
if (highlightRowHeaders) {
|
368
|
-
activeRowHeaderHighlight.add(this.tableProps.createCellCoords(Math.max(cellRange.from.row, 0), Math.min(-this.tableProps.countRowHeaders(), -1))).add(this.tableProps.createCellCoords(Math.max(cellRange.to.row, 0), -1)).commit();
|
295
|
+
if (areAnyRowsRendered) {
|
296
|
+
headerCellRange.from.row = -1;
|
369
297
|
}
|
370
|
-
if (
|
371
|
-
|
298
|
+
if (areAnyColumnsRendered) {
|
299
|
+
headerCellRange.from.col = -1;
|
372
300
|
}
|
373
|
-
if (
|
374
|
-
|
301
|
+
if (this.settings.selectionMode === 'single') {
|
302
|
+
if (this.isSelectedByAnyHeader()) {
|
303
|
+
headerCellRange.from.normalize();
|
304
|
+
}
|
305
|
+
headerHighlight.add(headerCellRange.from).commit();
|
306
|
+
} else {
|
307
|
+
headerHighlight.add(headerCellRange.from).add(headerCellRange.to).commit();
|
308
|
+
}
|
309
|
+
if (this.isEntireRowSelected()) {
|
310
|
+
const isRowSelected = this.tableProps.countCols() === cellRange.getWidth();
|
311
|
+
|
312
|
+
// Make sure that the whole row is selected (in case where selectionMode is set to 'single')
|
313
|
+
if (isRowSelected) {
|
314
|
+
activeHeaderHighlight.add(this.tableProps.createCellCoords(cellRange.from.row, -1)).add(this.tableProps.createCellCoords(cellRange.to.row, -1)).commit();
|
315
|
+
}
|
316
|
+
}
|
317
|
+
if (this.isEntireColumnSelected()) {
|
318
|
+
const isColumnSelected = this.tableProps.countRows() === cellRange.getHeight();
|
319
|
+
|
320
|
+
// Make sure that the whole column is selected (in case where selectionMode is set to 'single')
|
321
|
+
if (isColumnSelected) {
|
322
|
+
activeHeaderHighlight.add(this.tableProps.createCellCoords(-1, cellRange.from.col)).add(this.tableProps.createCellCoords(-1, cellRange.to.col)).commit();
|
323
|
+
}
|
375
324
|
}
|
376
325
|
}
|
377
326
|
this.runLocalHooks('afterSetRangeEnd', coords);
|
@@ -394,12 +343,12 @@ class Selection {
|
|
394
343
|
*
|
395
344
|
* @param {number} rowDelta Rows number to move, value can be passed as negative number.
|
396
345
|
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
397
|
-
* @param {boolean} [
|
398
|
-
*
|
346
|
+
* @param {boolean} [force=false] If `true` the new rows/columns will be created if necessary. Otherwise, row/column will
|
347
|
+
* be created according to `minSpareRows/minSpareCols` settings of Handsontable.
|
399
348
|
*/
|
400
349
|
transformStart(rowDelta, colDelta) {
|
401
|
-
let
|
402
|
-
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta,
|
350
|
+
let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
351
|
+
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta, force));
|
403
352
|
}
|
404
353
|
|
405
354
|
/**
|
@@ -440,7 +389,7 @@ class Selection {
|
|
440
389
|
*/
|
441
390
|
isSelectedByRowHeader() {
|
442
391
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
443
|
-
return !this.isSelectedByCorner(layerLevel) &&
|
392
|
+
return !this.isSelectedByCorner(layerLevel) && this.isEntireRowSelected(layerLevel);
|
444
393
|
}
|
445
394
|
|
446
395
|
/**
|
@@ -452,19 +401,7 @@ class Selection {
|
|
452
401
|
*/
|
453
402
|
isEntireRowSelected() {
|
454
403
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
455
|
-
|
456
|
-
const {
|
457
|
-
col
|
458
|
-
} = range.getOuterTopStartCorner();
|
459
|
-
const rowHeaders = this.tableProps.countRowHeaders();
|
460
|
-
const countCols = this.tableProps.countCols();
|
461
|
-
return (rowHeaders > 0 && col < 0 || rowHeaders === 0) && range.getWidth() === countCols;
|
462
|
-
};
|
463
|
-
if (layerLevel === -1) {
|
464
|
-
return Array.from(this.selectedRange).some(range => tester(range));
|
465
|
-
}
|
466
|
-
const range = this.selectedRange.peekByIndex(layerLevel);
|
467
|
-
return range ? tester(range) : false;
|
404
|
+
return layerLevel === -1 ? this.selectedByRowHeader.size > 0 : this.selectedByRowHeader.has(layerLevel);
|
468
405
|
}
|
469
406
|
|
470
407
|
/**
|
@@ -477,7 +414,7 @@ class Selection {
|
|
477
414
|
*/
|
478
415
|
isSelectedByColumnHeader() {
|
479
416
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
480
|
-
return !this.isSelectedByCorner() &&
|
417
|
+
return !this.isSelectedByCorner() && this.isEntireColumnSelected(layerLevel);
|
481
418
|
}
|
482
419
|
|
483
420
|
/**
|
@@ -489,19 +426,7 @@ class Selection {
|
|
489
426
|
*/
|
490
427
|
isEntireColumnSelected() {
|
491
428
|
let layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
492
|
-
|
493
|
-
const {
|
494
|
-
row
|
495
|
-
} = range.getOuterTopStartCorner();
|
496
|
-
const colHeaders = this.tableProps.countColHeaders();
|
497
|
-
const countRows = this.tableProps.countRows();
|
498
|
-
return (colHeaders > 0 && row < 0 || colHeaders === 0) && range.getHeight() === countRows;
|
499
|
-
};
|
500
|
-
if (layerLevel === -1) {
|
501
|
-
return Array.from(this.selectedRange).some(range => tester(range));
|
502
|
-
}
|
503
|
-
const range = this.selectedRange.peekByIndex(layerLevel);
|
504
|
-
return range ? tester(range) : false;
|
429
|
+
return layerLevel === -1 ? this.selectedByColumnHeader.size > 0 : this.selectedByColumnHeader.has(layerLevel);
|
505
430
|
}
|
506
431
|
|
507
432
|
/**
|
@@ -519,7 +444,7 @@ class Selection {
|
|
519
444
|
* @returns {boolean}
|
520
445
|
*/
|
521
446
|
isSelectedByCorner() {
|
522
|
-
return this.
|
447
|
+
return this.selectedByCorner;
|
523
448
|
}
|
524
449
|
|
525
450
|
/**
|
@@ -578,61 +503,31 @@ class Selection {
|
|
578
503
|
}
|
579
504
|
|
580
505
|
/**
|
581
|
-
*
|
506
|
+
* Select all cells.
|
582
507
|
*
|
583
|
-
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
584
|
-
*
|
585
|
-
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
586
|
-
*
|
587
|
-
* @param {object} [options] Additional object with options.
|
588
|
-
* @param {{row: number, col: number} | boolean} [options.focusPosition] The argument allows changing the cell/header
|
589
|
-
* focus position. The value takes an object with a `row` and `col` properties from -N to N, where
|
590
|
-
* negative values point to the headers and positive values point to the cell range. If `false`, the focus
|
591
|
-
* position won't be changed.
|
592
|
-
* @param {boolean} [options.disableHeadersHighlight] If `true`, disables highlighting the headers even when
|
593
|
-
* the logical coordinates points on them.
|
508
|
+
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers, `false`
|
509
|
+
* otherwise.
|
510
|
+
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column headers, `false`
|
511
|
+
* otherwise.
|
594
512
|
*/
|
595
513
|
selectAll() {
|
596
|
-
var _this$getSelectedRang;
|
597
514
|
let includeRowHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
598
515
|
let includeColumnHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
599
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
600
|
-
focusPosition: false,
|
601
|
-
disableHeadersHighlight: false
|
602
|
-
};
|
603
516
|
const nrOfRows = this.tableProps.countRows();
|
604
517
|
const nrOfColumns = this.tableProps.countCols();
|
605
|
-
const countRowHeaders = this.tableProps.countRowHeaders();
|
606
|
-
const countColHeaders = this.tableProps.countColHeaders();
|
607
|
-
const rowFrom = includeColumnHeaders ? -countColHeaders : 0;
|
608
|
-
const columnFrom = includeRowHeaders ? -countRowHeaders : 0;
|
609
518
|
|
610
519
|
// We can't select cells when there is no data.
|
611
|
-
if (
|
520
|
+
if (!includeRowHeaders && !includeColumnHeaders && (nrOfRows === 0 || nrOfColumns === 0)) {
|
612
521
|
return;
|
613
522
|
}
|
614
|
-
|
615
|
-
const {
|
616
|
-
focusPosition,
|
617
|
-
disableHeadersHighlight
|
618
|
-
} = options;
|
619
|
-
_classPrivateFieldSet(this, _disableHeadersHighlight, disableHeadersHighlight);
|
620
|
-
if (focusPosition && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
621
|
-
highlight = this.tableProps.createCellCoords(clamp(focusPosition.row, rowFrom, nrOfRows - 1), clamp(focusPosition.col, columnFrom, nrOfColumns - 1));
|
622
|
-
}
|
623
|
-
const startCoords = this.tableProps.createCellCoords(rowFrom, columnFrom);
|
523
|
+
const startCoords = this.tableProps.createCellCoords(includeColumnHeaders ? -1 : 0, includeRowHeaders ? -1 : 0);
|
624
524
|
const endCoords = this.tableProps.createCellCoords(nrOfRows - 1, nrOfColumns - 1);
|
625
525
|
this.clear();
|
626
|
-
this.setRangeStartOnly(startCoords
|
627
|
-
|
628
|
-
|
629
|
-
}
|
630
|
-
if (rowFrom < 0) {
|
631
|
-
this.selectedByColumnHeader.add(this.getLayerLevel());
|
632
|
-
}
|
526
|
+
this.setRangeStartOnly(startCoords);
|
527
|
+
this.selectedByRowHeader.add(this.getLayerLevel());
|
528
|
+
this.selectedByColumnHeader.add(this.getLayerLevel());
|
633
529
|
this.setRangeEnd(endCoords);
|
634
530
|
this.finish();
|
635
|
-
_classPrivateFieldSet(this, _disableHeadersHighlight, false);
|
636
531
|
}
|
637
532
|
|
638
533
|
/**
|
@@ -657,29 +552,21 @@ class Selection {
|
|
657
552
|
propToCol: prop => this.tableProps.propToCol(prop),
|
658
553
|
keepDirection: true
|
659
554
|
});
|
660
|
-
const
|
661
|
-
const
|
662
|
-
countRows: this.tableProps.countRows(),
|
663
|
-
countCols: this.tableProps.countCols(),
|
664
|
-
countRowHeaders: navigableHeaders ? this.tableProps.countRowHeaders() : 0,
|
665
|
-
countColHeaders: navigableHeaders ? this.tableProps.countColHeaders() : 0
|
666
|
-
};
|
555
|
+
const nrOfRows = this.tableProps.countRows();
|
556
|
+
const nrOfColumns = this.tableProps.countCols();
|
667
557
|
|
668
558
|
// Check if every layer of the coordinates are valid.
|
669
559
|
const isValid = !selectionRanges.some(selection => {
|
670
|
-
const
|
671
|
-
const
|
672
|
-
return !
|
560
|
+
const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
|
561
|
+
const _isValid = isValidCoord(rowStart, nrOfRows) && isValidCoord(columnStart, nrOfColumns) && isValidCoord(rowEnd, nrOfRows) && isValidCoord(columnEnd, nrOfColumns);
|
562
|
+
return !_isValid;
|
673
563
|
});
|
674
564
|
if (isValid) {
|
675
565
|
this.clear();
|
676
566
|
arrayEach(selectionRanges, selection => {
|
677
|
-
const
|
678
|
-
|
679
|
-
|
680
|
-
} = selectionSchemaNormalizer(selection);
|
681
|
-
this.setRangeStartOnly(from.clone(), false);
|
682
|
-
this.setRangeEnd(to.clone());
|
567
|
+
const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
|
568
|
+
this.setRangeStartOnly(this.tableProps.createCellCoords(rowStart, columnStart), false);
|
569
|
+
this.setRangeEnd(this.tableProps.createCellCoords(rowEnd, columnEnd));
|
683
570
|
this.finish();
|
684
571
|
});
|
685
572
|
}
|
@@ -692,43 +579,22 @@ class Selection {
|
|
692
579
|
*
|
693
580
|
* @param {number|string} startColumn Visual column index or column property from which the selection starts.
|
694
581
|
* @param {number|string} [endColumn] Visual column index or column property from to the selection finishes.
|
695
|
-
* @param {number} [
|
696
|
-
*
|
697
|
-
*
|
582
|
+
* @param {number} [headerLevel=-1] A row header index that triggers the column selection. The value can
|
583
|
+
* take -1 to -N, where -1 means the header closest to the cells.
|
584
|
+
*
|
698
585
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
699
586
|
*/
|
700
587
|
selectColumns(startColumn) {
|
701
588
|
let endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;
|
702
|
-
let
|
589
|
+
let headerLevel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
703
590
|
const start = typeof startColumn === 'string' ? this.tableProps.propToCol(startColumn) : startColumn;
|
704
591
|
const end = typeof endColumn === 'string' ? this.tableProps.propToCol(endColumn) : endColumn;
|
705
|
-
const
|
706
|
-
const
|
707
|
-
const
|
708
|
-
const columnHeaderLastIndex = countColHeaders === 0 ? 0 : -countColHeaders;
|
709
|
-
const fromCoords = new CellCoords(columnHeaderLastIndex, start);
|
710
|
-
const toCoords = new CellCoords(countRows - 1, end);
|
711
|
-
const isValid = new CellRange(fromCoords, fromCoords, toCoords).isValid({
|
712
|
-
countRows,
|
713
|
-
countCols,
|
714
|
-
countRowHeaders: 0,
|
715
|
-
countColHeaders
|
716
|
-
});
|
592
|
+
const nrOfColumns = this.tableProps.countCols();
|
593
|
+
const nrOfRows = this.tableProps.countRows();
|
594
|
+
const isValid = isValidCoord(start, nrOfColumns) && isValidCoord(end, nrOfColumns);
|
717
595
|
if (isValid) {
|
718
|
-
|
719
|
-
|
720
|
-
const from = this.tableProps.createCellCoords(fromRow, start);
|
721
|
-
const to = this.tableProps.createCellCoords(toRow, end);
|
722
|
-
const highlight = this.tableProps.createCellCoords(clamp(focusPosition, columnHeaderLastIndex, countRows - 1), start);
|
723
|
-
this.runLocalHooks('beforeSelectColumns', from, to, highlight);
|
724
|
-
|
725
|
-
// disallow modifying row axis for that hooks
|
726
|
-
from.row = fromRow;
|
727
|
-
to.row = toRow;
|
728
|
-
this.setRangeStartOnly(from, void 0, highlight);
|
729
|
-
this.selectedByColumnHeader.add(this.getLayerLevel());
|
730
|
-
this.setRangeEnd(to);
|
731
|
-
this.runLocalHooks('afterSelectColumns', from, to, highlight);
|
596
|
+
this.setRangeStartOnly(this.tableProps.createCellCoords(headerLevel, start));
|
597
|
+
this.setRangeEnd(this.tableProps.createCellCoords(nrOfRows - 1, end));
|
732
598
|
this.finish();
|
733
599
|
}
|
734
600
|
return isValid;
|
@@ -739,41 +605,20 @@ class Selection {
|
|
739
605
|
*
|
740
606
|
* @param {number} startRow Visual row index from which the selection starts.
|
741
607
|
* @param {number} [endRow] Visual row index from to the selection finishes.
|
742
|
-
* @param {number} [
|
743
|
-
*
|
744
|
-
*
|
608
|
+
* @param {number} [headerLevel=-1] A column header index that triggers the row selection.
|
609
|
+
* The value can take -1 to -N, where -1 means the header
|
610
|
+
* closest to the cells.
|
745
611
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
746
612
|
*/
|
747
613
|
selectRows(startRow) {
|
748
614
|
let endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;
|
749
|
-
let
|
750
|
-
const
|
751
|
-
const
|
752
|
-
const
|
753
|
-
const rowHeaderLastIndex = countRowHeaders === 0 ? 0 : -countRowHeaders;
|
754
|
-
const fromCoords = new CellCoords(startRow, rowHeaderLastIndex);
|
755
|
-
const toCoords = new CellCoords(endRow, countCols - 1);
|
756
|
-
const isValid = new CellRange(fromCoords, fromCoords, toCoords).isValid({
|
757
|
-
countRows,
|
758
|
-
countCols,
|
759
|
-
countRowHeaders,
|
760
|
-
countColHeaders: 0
|
761
|
-
});
|
615
|
+
let headerLevel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
616
|
+
const nrOfRows = this.tableProps.countRows();
|
617
|
+
const nrOfColumns = this.tableProps.countCols();
|
618
|
+
const isValid = isValidCoord(startRow, nrOfRows) && isValidCoord(endRow, nrOfRows);
|
762
619
|
if (isValid) {
|
763
|
-
|
764
|
-
|
765
|
-
const from = this.tableProps.createCellCoords(startRow, fromColumn);
|
766
|
-
const to = this.tableProps.createCellCoords(endRow, toColumn);
|
767
|
-
const highlight = this.tableProps.createCellCoords(startRow, clamp(focusPosition, rowHeaderLastIndex, countCols - 1));
|
768
|
-
this.runLocalHooks('beforeSelectRows', from, to, highlight);
|
769
|
-
|
770
|
-
// disallow modifying column axis for that hooks
|
771
|
-
from.col = fromColumn;
|
772
|
-
to.col = toColumn;
|
773
|
-
this.setRangeStartOnly(from, void 0, highlight);
|
774
|
-
this.selectedByRowHeader.add(this.getLayerLevel());
|
775
|
-
this.setRangeEnd(to);
|
776
|
-
this.runLocalHooks('afterSelectRows', from, to, highlight);
|
620
|
+
this.setRangeStartOnly(this.tableProps.createCellCoords(startRow, headerLevel));
|
621
|
+
this.setRangeEnd(this.tableProps.createCellCoords(endRow, nrOfColumns - 1));
|
777
622
|
this.finish();
|
778
623
|
}
|
779
624
|
return isValid;
|
@@ -790,31 +635,19 @@ class Selection {
|
|
790
635
|
if (!this.isSelected()) {
|
791
636
|
return;
|
792
637
|
}
|
793
|
-
const
|
638
|
+
const cellHighlight = this.highlight.getCell();
|
794
639
|
const currentLayer = this.getLayerLevel();
|
795
|
-
|
640
|
+
cellHighlight.commit().syncWith(this.selectedRange.current());
|
796
641
|
|
797
642
|
// Rewriting rendered ranges going through all layers.
|
798
643
|
for (let layerLevel = 0; layerLevel < this.selectedRange.size(); layerLevel += 1) {
|
799
644
|
this.highlight.useLayerLevel(layerLevel);
|
800
|
-
const areaHighlight = this.highlight.
|
801
|
-
const
|
802
|
-
const
|
803
|
-
const columnHeaderHighlight = this.highlight.createColumnHeader();
|
804
|
-
const activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
|
805
|
-
const activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
|
806
|
-
const activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
|
807
|
-
const rowHighlight = this.highlight.createRowHighlight();
|
808
|
-
const columnHighlight = this.highlight.createColumnHighlight();
|
645
|
+
const areaHighlight = this.highlight.createOrGetArea();
|
646
|
+
const headerHighlight = this.highlight.createOrGetHeader();
|
647
|
+
const activeHeaderHighlight = this.highlight.createOrGetActiveHeader();
|
809
648
|
areaHighlight.commit();
|
810
|
-
|
811
|
-
|
812
|
-
columnHeaderHighlight.commit();
|
813
|
-
activeRowHeaderHighlight.commit();
|
814
|
-
activeColumnHeaderHighlight.commit();
|
815
|
-
activeCornerHeaderHighlight.commit();
|
816
|
-
rowHighlight.commit();
|
817
|
-
columnHighlight.commit();
|
649
|
+
headerHighlight.commit();
|
650
|
+
activeHeaderHighlight.commit();
|
818
651
|
}
|
819
652
|
|
820
653
|
// Reverting starting layer for the Highlight.
|