handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -28
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +69 -36
- package/3rdparty/walkontable/src/cell/range.mjs +68 -35
- package/3rdparty/walkontable/src/event.js +3 -5
- package/3rdparty/walkontable/src/event.mjs +3 -5
- package/3rdparty/walkontable/src/overlay/_base.js +6 -7
- package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/top.js +6 -7
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
- package/3rdparty/walkontable/src/overlays.js +55 -64
- package/3rdparty/walkontable/src/overlays.mjs +55 -64
- package/3rdparty/walkontable/src/renderer/table.js +0 -2
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
- package/3rdparty/walkontable/src/scroll.js +20 -23
- package/3rdparty/walkontable/src/scroll.mjs +20 -23
- package/3rdparty/walkontable/src/selection/border/border.js +1 -0
- package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
- package/3rdparty/walkontable/src/selection/manager.js +40 -45
- package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
- package/3rdparty/walkontable/src/selection/scanner.js +5 -4
- package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
- package/3rdparty/walkontable/src/settings.js +13 -15
- package/3rdparty/walkontable/src/settings.mjs +13 -15
- package/3rdparty/walkontable/src/table.js +23 -26
- package/3rdparty/walkontable/src/table.mjs +23 -26
- package/CHANGELOG.md +56 -0
- package/base.js +2 -4
- package/base.mjs +2 -2
- package/common.d.ts +1 -1
- package/core.d.ts +7 -9
- package/core.js +241 -439
- package/core.mjs +245 -443
- package/dataMap/dataMap.js +1 -0
- package/dataMap/dataMap.mjs +1 -0
- package/dataMap/dataSource.js +5 -5
- package/dataMap/dataSource.mjs +5 -5
- package/dataMap/metaManager/lazyFactoryMap.js +1 -0
- package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
- package/dataMap/metaManager/metaSchema.js +33 -24
- package/dataMap/metaManager/metaSchema.mjs +33 -24
- package/dist/handsontable.css +25 -3
- package/dist/handsontable.full.css +25 -3
- package/dist/handsontable.full.js +14539 -11358
- package/dist/handsontable.full.min.css +5 -5
- package/dist/handsontable.full.min.js +137 -125
- package/dist/handsontable.js +31414 -28455
- package/dist/handsontable.min.css +5 -5
- package/dist/handsontable.min.js +11 -3
- package/dist/languages/all.js +133 -0
- package/dist/languages/ar-AR.js +7 -0
- package/dist/languages/cs-CZ.js +7 -0
- package/dist/languages/de-CH.js +7 -0
- package/dist/languages/de-DE.js +7 -0
- package/dist/languages/en-US.js +7 -0
- package/dist/languages/es-MX.js +7 -0
- package/dist/languages/fr-FR.js +7 -0
- package/dist/languages/it-IT.js +7 -0
- package/dist/languages/ja-JP.js +7 -0
- package/dist/languages/ko-KR.js +7 -0
- package/dist/languages/lv-LV.js +7 -0
- package/dist/languages/nb-NO.js +7 -0
- package/dist/languages/nl-NL.js +7 -0
- package/dist/languages/pl-PL.js +7 -0
- package/dist/languages/pt-BR.js +7 -0
- package/dist/languages/ru-RU.js +7 -0
- package/dist/languages/sr-SP.js +7 -0
- package/dist/languages/zh-CN.js +7 -0
- package/dist/languages/zh-TW.js +7 -0
- package/editorManager.js +19 -89
- package/editorManager.mjs +24 -93
- package/editors/baseEditor/baseEditor.js +1 -0
- package/editors/baseEditor/baseEditor.mjs +1 -0
- package/editors/textEditor/textEditor.js +14 -20
- package/editors/textEditor/textEditor.mjs +16 -22
- package/helpers/dom/element.js +0 -11
- package/helpers/dom/element.mjs +0 -10
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/helpers/object.js +2 -0
- package/helpers/object.mjs +2 -0
- package/i18n/languages/ar-AR.js +7 -1
- package/i18n/languages/cs-CZ.js +7 -1
- package/i18n/languages/de-CH.js +7 -1
- package/i18n/languages/de-DE.js +7 -1
- package/i18n/languages/en-US.js +7 -1
- package/i18n/languages/es-MX.js +7 -1
- package/i18n/languages/fr-FR.js +7 -1
- package/i18n/languages/it-IT.js +7 -1
- package/i18n/languages/ja-JP.js +7 -1
- package/i18n/languages/ko-KR.js +7 -1
- package/i18n/languages/lv-LV.js +7 -1
- package/i18n/languages/nb-NO.js +7 -1
- package/i18n/languages/nl-NL.js +7 -1
- package/i18n/languages/pl-PL.js +7 -1
- package/i18n/languages/pt-BR.js +7 -1
- package/i18n/languages/ru-RU.js +7 -1
- package/i18n/languages/sr-SP.js +7 -1
- package/i18n/languages/zh-CN.js +7 -1
- package/i18n/languages/zh-TW.js +7 -1
- package/languages/all.js +133 -0
- package/languages/ar-AR.js +7 -0
- package/languages/cs-CZ.js +7 -0
- package/languages/de-CH.js +7 -0
- package/languages/de-DE.js +7 -0
- package/languages/en-US.js +7 -0
- package/languages/es-MX.js +7 -0
- package/languages/fr-FR.js +7 -0
- package/languages/index.js +133 -0
- package/languages/it-IT.js +7 -0
- package/languages/ja-JP.js +7 -0
- package/languages/ko-KR.js +7 -0
- package/languages/lv-LV.js +7 -0
- package/languages/nb-NO.js +7 -0
- package/languages/nl-NL.js +7 -0
- package/languages/pl-PL.js +7 -0
- package/languages/pt-BR.js +7 -0
- package/languages/ru-RU.js +7 -0
- package/languages/sr-SP.js +7 -0
- package/languages/zh-CN.js +7 -0
- package/languages/zh-TW.js +7 -0
- package/package.json +3 -2
- package/pluginHooks.d.ts +8 -2
- package/pluginHooks.js +116 -18
- package/pluginHooks.mjs +115 -15
- package/plugins/autoColumnSize/autoColumnSize.js +1 -0
- package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
- package/plugins/autoRowSize/autoRowSize.js +3 -2
- package/plugins/autoRowSize/autoRowSize.mjs +3 -2
- package/plugins/autofill/autofill.js +2 -2
- package/plugins/autofill/autofill.mjs +3 -3
- package/plugins/autofill/utils.js +1 -39
- package/plugins/autofill/utils.mjs +0 -37
- package/plugins/base/base.js +1 -0
- package/plugins/base/base.mjs +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
- package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
- package/plugins/columnSorting/columnSorting.js +51 -8
- package/plugins/columnSorting/columnSorting.mjs +50 -9
- package/plugins/columnSorting/columnStatesManager.js +1 -0
- package/plugins/columnSorting/columnStatesManager.mjs +1 -0
- package/plugins/columnSorting/index.js +4 -2
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/columnSorting/rootComparator.js +1 -0
- package/plugins/columnSorting/rootComparator.mjs +1 -0
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +289 -224
- package/plugins/comments/comments.mjs +297 -234
- package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
- package/plugins/comments/contextMenuItem/removeComment.js +48 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +81 -29
- package/plugins/contextMenu/contextMenu.mjs +82 -30
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +25 -16
- package/plugins/contextMenu/utils.mjs +24 -15
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +100 -14
- package/plugins/copyPaste/copyPaste.mjs +100 -14
- package/plugins/copyPaste/copyableRanges.js +25 -31
- package/plugins/copyPaste/copyableRanges.mjs +18 -24
- package/plugins/copyPaste/focusableElement.js +219 -0
- package/plugins/copyPaste/focusableElement.mjs +213 -0
- package/plugins/customBorders/customBorders.d.ts +2 -0
- package/plugins/customBorders/customBorders.js +19 -50
- package/plugins/customBorders/customBorders.mjs +19 -50
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +94 -30
- package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
- package/plugins/exportFile/dataProvider.js +1 -0
- package/plugins/exportFile/dataProvider.mjs +1 -0
- package/plugins/filters/component/value.js +1 -0
- package/plugins/filters/component/value.mjs +1 -0
- package/plugins/filters/condition/beginsWith.js +1 -0
- package/plugins/filters/condition/beginsWith.mjs +1 -0
- package/plugins/filters/condition/between.js +1 -0
- package/plugins/filters/condition/between.mjs +1 -0
- package/plugins/filters/condition/byValue.js +1 -0
- package/plugins/filters/condition/byValue.mjs +1 -0
- package/plugins/filters/condition/contains.js +1 -0
- package/plugins/filters/condition/contains.mjs +1 -0
- package/plugins/filters/condition/date/after.js +1 -0
- package/plugins/filters/condition/date/after.mjs +1 -0
- package/plugins/filters/condition/date/before.js +1 -0
- package/plugins/filters/condition/date/before.mjs +1 -0
- package/plugins/filters/condition/endsWith.js +1 -0
- package/plugins/filters/condition/endsWith.mjs +1 -0
- package/plugins/filters/condition/equal.js +1 -0
- package/plugins/filters/condition/equal.mjs +1 -0
- package/plugins/filters/condition/greaterThan.js +1 -0
- package/plugins/filters/condition/greaterThan.mjs +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
- package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
- package/plugins/filters/condition/lessThan.js +1 -0
- package/plugins/filters/condition/lessThan.mjs +1 -0
- package/plugins/filters/condition/lessThanOrEqual.js +1 -0
- package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
- package/plugins/filters/conditionCollection.js +1 -0
- package/plugins/filters/conditionCollection.mjs +1 -0
- package/plugins/filters/filters.js +68 -42
- package/plugins/filters/filters.mjs +67 -41
- package/plugins/filters/ui/multipleSelect.js +1 -0
- package/plugins/filters/ui/multipleSelect.mjs +1 -0
- package/plugins/formulas/formulas.js +191 -168
- package/plugins/formulas/formulas.mjs +191 -168
- package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
- package/plugins/formulas/indexSyncer/index.js +225 -0
- package/plugins/formulas/indexSyncer/index.mjs +219 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
- package/plugins/manualColumnResize/manualColumnResize.js +36 -5
- package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
- package/plugins/manualRowMove/manualRowMove.js +31 -12
- package/plugins/manualRowMove/manualRowMove.mjs +32 -13
- package/plugins/manualRowResize/manualRowResize.js +40 -9
- package/plugins/manualRowResize/manualRowResize.mjs +40 -9
- package/plugins/mergeCells/calculations/autofill.js +1 -0
- package/plugins/mergeCells/calculations/autofill.mjs +1 -0
- package/plugins/mergeCells/cellsCollection.js +1 -0
- package/plugins/mergeCells/cellsCollection.mjs +1 -0
- package/plugins/mergeCells/mergeCells.js +6 -2
- package/plugins/mergeCells/mergeCells.mjs +6 -2
- package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
- package/plugins/multiColumnSorting/rootComparator.js +1 -0
- package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
- package/plugins/nestedHeaders/nestedHeaders.js +129 -6
- package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
- package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
- package/plugins/nestedHeaders/stateManager/index.js +40 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
- package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
- package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
- package/plugins/nestedRows/data/dataManager.js +1 -0
- package/plugins/nestedRows/data/dataManager.mjs +1 -0
- package/plugins/nestedRows/nestedRows.js +53 -7
- package/plugins/nestedRows/nestedRows.mjs +53 -7
- package/plugins/nestedRows/ui/collapsing.js +1 -0
- package/plugins/nestedRows/ui/collapsing.mjs +1 -0
- package/plugins/nestedRows/utils/rowMoveController.js +1 -0
- package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
- package/plugins/persistentState/storage.js +1 -0
- package/plugins/persistentState/storage.mjs +1 -0
- package/plugins/registry.js +4 -1
- package/plugins/registry.mjs +1 -0
- package/plugins/undoRedo/undoRedo.js +1 -1
- package/plugins/undoRedo/undoRedo.mjs +1 -1
- package/renderers/baseRenderer/baseRenderer.js +0 -3
- package/renderers/baseRenderer/baseRenderer.mjs +0 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +120 -98
- package/selection/highlight/highlight.mjs +118 -96
- package/selection/highlight/visualSelection.js +30 -17
- package/selection/highlight/visualSelection.mjs +30 -17
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +246 -153
- package/selection/selection.mjs +247 -154
- package/selection/transformation.js +233 -96
- package/selection/transformation.mjs +230 -93
- package/selection/utils.js +12 -35
- package/selection/utils.mjs +13 -35
- package/settings.d.ts +2 -1
- package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +29 -0
- package/shortcutContexts/commands/editor/open.mjs +24 -0
- package/shortcutContexts/commands/emptySelectedCells.js +12 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/index.js +53 -0
- package/shortcutContexts/commands/index.mjs +49 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +19 -0
- package/shortcutContexts/constants.mjs +12 -0
- package/shortcutContexts/editor.js +29 -0
- package/shortcutContexts/editor.mjs +25 -0
- package/shortcutContexts/grid.js +252 -0
- package/shortcutContexts/grid.mjs +248 -0
- package/shortcutContexts/index.js +29 -0
- package/shortcutContexts/index.mjs +15 -0
- package/shortcuts/context.js +1 -0
- package/shortcuts/context.mjs +1 -0
- package/shortcuts/manager.js +2 -0
- package/shortcuts/manager.mjs +2 -0
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +21 -5
- package/shortcuts/utils.mjs +20 -4
- package/tableView.js +112 -82
- package/tableView.mjs +112 -82
- package/translations/changesObservable/observable.js +41 -46
- package/translations/changesObservable/observable.mjs +36 -41
- package/translations/changesObservable/observer.js +1 -1
- package/translations/indexMapper.d.ts +0 -2
- package/translations/indexMapper.js +38 -64
- package/translations/indexMapper.mjs +39 -64
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
- package/translations/maps/utils/indexesSequence.js +1 -0
- package/translations/maps/utils/indexesSequence.mjs +1 -0
- package/translations/maps/utils/physicallyIndexed.js +1 -0
- package/translations/maps/utils/physicallyIndexed.mjs +1 -0
- package/utils/dataStructures/priorityMap.js +1 -0
- package/utils/dataStructures/priorityMap.mjs +1 -0
- package/utils/dataStructures/tree.js +16 -18
- package/utils/dataStructures/tree.mjs +16 -18
- package/utils/dataStructures/uniqueMap.js +1 -0
- package/utils/dataStructures/uniqueMap.mjs +1 -0
- package/utils/dataStructures/uniqueSet.js +1 -0
- package/utils/dataStructures/uniqueSet.mjs +1 -0
- package/utils/ghostTable.js +1 -0
- package/utils/ghostTable.mjs +1 -0
- package/utils/parseTable.js +5 -1
- package/utils/parseTable.mjs +5 -1
- package/utils/staticRegister.js +1 -0
- package/utils/staticRegister.mjs +1 -0
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -275
- package/focusManager.mjs +0 -270
package/selection/selection.js
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
require("core-js/modules/es.array.slice.js");
|
4
4
|
require("core-js/modules/es.object.freeze.js");
|
5
5
|
require("core-js/modules/es.symbol.iterator.js");
|
6
|
-
require("core-js/modules/es.function.name.js");
|
7
|
-
require("core-js/modules/es.regexp.exec.js");
|
8
6
|
require("core-js/modules/es.weak-map.js");
|
9
7
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
10
8
|
exports.__esModule = true;
|
@@ -25,10 +23,12 @@ require("core-js/modules/es.symbol.to-primitive.js");
|
|
25
23
|
require("core-js/modules/es.date.to-primitive.js");
|
26
24
|
require("core-js/modules/es.symbol.js");
|
27
25
|
require("core-js/modules/es.symbol.description.js");
|
26
|
+
var _src = require("./../3rdparty/walkontable/src");
|
28
27
|
var _highlight = _interopRequireWildcard(require("./highlight/highlight"));
|
29
28
|
var _range = _interopRequireDefault(require("./range"));
|
30
29
|
var _object = require("./../helpers/object");
|
31
30
|
var _mixed = require("./../helpers/mixed");
|
31
|
+
var _number = require("./../helpers/number");
|
32
32
|
var _array = require("./../helpers/array");
|
33
33
|
var _localHooks = _interopRequireDefault(require("./../mixins/localHooks"));
|
34
34
|
var _transformation = _interopRequireDefault(require("./transformation"));
|
@@ -39,16 +39,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
39
39
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
40
40
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
41
41
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
42
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
43
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
44
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
45
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
46
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
47
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
48
42
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
49
43
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
50
44
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
51
45
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
46
|
+
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; }
|
52
47
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
53
48
|
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); }
|
54
49
|
/**
|
@@ -64,57 +59,62 @@ var Selection = /*#__PURE__*/function () {
|
|
64
59
|
*
|
65
60
|
* @type {GridSettings}
|
66
61
|
*/
|
67
|
-
this
|
62
|
+
_defineProperty(this, "settings", void 0);
|
68
63
|
/**
|
69
64
|
* An additional object with dynamically defined properties which describes table state.
|
70
65
|
*
|
71
66
|
* @type {object}
|
72
67
|
*/
|
73
|
-
this
|
68
|
+
_defineProperty(this, "tableProps", void 0);
|
74
69
|
/**
|
75
70
|
* The flag which determines if the selection is in progress.
|
76
71
|
*
|
77
72
|
* @type {boolean}
|
78
73
|
*/
|
79
|
-
this
|
74
|
+
_defineProperty(this, "inProgress", false);
|
80
75
|
/**
|
81
|
-
*
|
76
|
+
* Selection data layer (handle visual coordinates).
|
82
77
|
*
|
83
|
-
* @type {
|
78
|
+
* @type {SelectionRange}
|
84
79
|
*/
|
85
|
-
this.
|
80
|
+
_defineProperty(this, "selectedRange", new _range.default(function (highlight, from, to) {
|
81
|
+
return _this.tableProps.createCellRange(highlight, from, to);
|
82
|
+
}));
|
86
83
|
/**
|
87
|
-
*
|
88
|
-
* the corner header.
|
84
|
+
* Visualization layer.
|
89
85
|
*
|
90
|
-
* @type {
|
86
|
+
* @type {Highlight}
|
91
87
|
*/
|
92
|
-
this
|
88
|
+
_defineProperty(this, "highlight", void 0);
|
93
89
|
/**
|
94
|
-
* The
|
95
|
-
* the corner header.
|
90
|
+
* The module for modifying coordinates.
|
96
91
|
*
|
97
|
-
* @type {
|
92
|
+
* @type {Transformation}
|
98
93
|
*/
|
99
|
-
this
|
94
|
+
_defineProperty(this, "transformation", void 0);
|
100
95
|
/**
|
101
|
-
*
|
96
|
+
* The collection of the selection layer levels where the whole row was selected using the row header or
|
97
|
+
* the corner header.
|
102
98
|
*
|
103
|
-
* @type {
|
99
|
+
* @type {Set<number>}
|
104
100
|
*/
|
105
|
-
this
|
106
|
-
return _this.tableProps.createCellRange(highlight, from, to);
|
107
|
-
});
|
101
|
+
_defineProperty(this, "selectedByRowHeader", new Set());
|
108
102
|
/**
|
109
|
-
*
|
103
|
+
* The collection of the selection layer levels where the whole column was selected using the column header or
|
104
|
+
* the corner header.
|
110
105
|
*
|
111
|
-
* @type {
|
106
|
+
* @type {Set<number>}
|
112
107
|
*/
|
108
|
+
_defineProperty(this, "selectedByColumnHeader", new Set());
|
109
|
+
this.settings = settings;
|
110
|
+
this.tableProps = tableProps;
|
113
111
|
this.highlight = new _highlight.default({
|
114
112
|
headerClassName: settings.currentHeaderClassName,
|
115
113
|
activeHeaderClassName: settings.activeHeaderClassName,
|
116
114
|
rowClassName: settings.currentRowClassName,
|
117
115
|
columnClassName: settings.currentColClassName,
|
116
|
+
rowIndexMapper: this.tableProps.rowIndexMapper,
|
117
|
+
columnIndexMapper: this.tableProps.columnIndexMapper,
|
118
118
|
disabledCellSelection: function disabledCellSelection(row, column) {
|
119
119
|
return _this.tableProps.isDisabledCellSelection(row, column);
|
120
120
|
},
|
@@ -135,25 +135,16 @@ var Selection = /*#__PURE__*/function () {
|
|
135
135
|
},
|
136
136
|
createCellRange: function createCellRange(highlight, from, to) {
|
137
137
|
return _this.tableProps.createCellRange(highlight, from, to);
|
138
|
-
},
|
139
|
-
rowIndexMapper: function rowIndexMapper() {
|
140
|
-
return _this.tableProps.rowIndexMapper();
|
141
|
-
},
|
142
|
-
columnIndexMapper: function columnIndexMapper() {
|
143
|
-
return _this.tableProps.columnIndexMapper();
|
144
138
|
}
|
145
139
|
});
|
146
|
-
/**
|
147
|
-
* The module for modifying coordinates.
|
148
|
-
*
|
149
|
-
* @type {Transformation}
|
150
|
-
*/
|
151
140
|
this.transformation = new _transformation.default(this.selectedRange, {
|
152
|
-
|
153
|
-
|
141
|
+
rowIndexMapper: this.tableProps.rowIndexMapper,
|
142
|
+
columnIndexMapper: this.tableProps.columnIndexMapper,
|
143
|
+
countRenderableRows: function countRenderableRows() {
|
144
|
+
return _this.tableProps.countRenderableRows();
|
154
145
|
},
|
155
|
-
|
156
|
-
return _this.tableProps.
|
146
|
+
countRenderableColumns: function countRenderableColumns() {
|
147
|
+
return _this.tableProps.countRenderableColumns();
|
157
148
|
},
|
158
149
|
countRowHeaders: function countRowHeaders() {
|
159
150
|
return _this.tableProps.countRowHeaders();
|
@@ -170,6 +161,9 @@ var Selection = /*#__PURE__*/function () {
|
|
170
161
|
createCellCoords: function createCellCoords(row, column) {
|
171
162
|
return _this.tableProps.createCellCoords(row, column);
|
172
163
|
},
|
164
|
+
navigableHeaders: function navigableHeaders() {
|
165
|
+
return settings.navigableHeaders;
|
166
|
+
},
|
173
167
|
fixedRowsBottom: function fixedRowsBottom() {
|
174
168
|
return settings.fixedRowsBottom;
|
175
169
|
},
|
@@ -236,7 +230,7 @@ var Selection = /*#__PURE__*/function () {
|
|
236
230
|
}
|
237
231
|
|
238
232
|
/**
|
239
|
-
* Indicate that selection process began. It sets
|
233
|
+
* Indicate that selection process began. It sets internally `.inProgress` property to `true`.
|
240
234
|
*/
|
241
235
|
}, {
|
242
236
|
key: "begin",
|
@@ -245,7 +239,7 @@ var Selection = /*#__PURE__*/function () {
|
|
245
239
|
}
|
246
240
|
|
247
241
|
/**
|
248
|
-
* Indicate that selection process finished. It sets
|
242
|
+
* Indicate that selection process finished. It sets internally `.inProgress` property to `false`.
|
249
243
|
*/
|
250
244
|
}, {
|
251
245
|
key: "finish",
|
@@ -274,35 +268,27 @@ var Selection = /*#__PURE__*/function () {
|
|
274
268
|
* the default trigger will be used.
|
275
269
|
* @param {boolean} [fragment=false] If `true`, the selection will be treated as a partial selection where the
|
276
270
|
* `setRangeEnd` method won't be called on every `setRangeStart` call.
|
271
|
+
* @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
|
277
272
|
*/
|
278
273
|
}, {
|
279
274
|
key: "setRangeStart",
|
280
275
|
value: function setRangeStart(coords, multipleSelection) {
|
281
276
|
var fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
277
|
+
var highlightCoords = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : coords;
|
282
278
|
var isMultipleMode = this.settings.selectionMode === 'multiple';
|
283
279
|
var isMultipleSelection = (0, _mixed.isUndefined)(multipleSelection) ? this.tableProps.getShortcutManager().isCtrlPressed() : multipleSelection;
|
284
|
-
var isRowNegative = coords.row < 0;
|
285
|
-
var isColumnNegative = coords.col < 0;
|
286
|
-
var selectedByCorner = isRowNegative && isColumnNegative;
|
287
280
|
// We are creating copy. We would like to modify just the start of the selection by below hook. Then original coords
|
288
281
|
// should be handled by next methods.
|
289
282
|
var coordsClone = coords.clone();
|
290
|
-
this.selectedByCorner = selectedByCorner;
|
291
283
|
this.runLocalHooks("beforeSetRangeStart".concat(fragment ? 'Only' : ''), coordsClone);
|
292
284
|
if (!isMultipleMode || isMultipleMode && !isMultipleSelection && (0, _mixed.isUndefined)(multipleSelection)) {
|
293
285
|
this.selectedRange.clear();
|
294
286
|
}
|
295
|
-
this.selectedRange.add(coordsClone);
|
287
|
+
this.selectedRange.add(coordsClone).current().setHighlight(highlightCoords.clone());
|
296
288
|
if (this.getLayerLevel() === 0) {
|
297
289
|
this.selectedByRowHeader.clear();
|
298
290
|
this.selectedByColumnHeader.clear();
|
299
291
|
}
|
300
|
-
if (!selectedByCorner && isColumnNegative) {
|
301
|
-
this.selectedByRowHeader.add(this.getLayerLevel());
|
302
|
-
}
|
303
|
-
if (!selectedByCorner && isRowNegative) {
|
304
|
-
this.selectedByColumnHeader.add(this.getLayerLevel());
|
305
|
-
}
|
306
292
|
if (!fragment) {
|
307
293
|
this.setRangeEnd(coords);
|
308
294
|
}
|
@@ -315,11 +301,13 @@ var Selection = /*#__PURE__*/function () {
|
|
315
301
|
* @param {boolean} [multipleSelection] If `true`, selection will be worked in 'multiple' mode. This option works
|
316
302
|
* only when 'selectionMode' is set as 'multiple'. If the argument is not defined
|
317
303
|
* the default trigger will be used.
|
304
|
+
* @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
|
318
305
|
*/
|
319
306
|
}, {
|
320
307
|
key: "setRangeStartOnly",
|
321
308
|
value: function setRangeStartOnly(coords, multipleSelection) {
|
322
|
-
|
309
|
+
var highlightCoords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : coords;
|
310
|
+
this.setRangeStart(coords, multipleSelection, true, highlightCoords);
|
323
311
|
}
|
324
312
|
|
325
313
|
/**
|
@@ -333,21 +321,39 @@ var Selection = /*#__PURE__*/function () {
|
|
333
321
|
if (this.selectedRange.isEmpty()) {
|
334
322
|
return;
|
335
323
|
}
|
336
|
-
|
337
|
-
// We are creating copy. We would like to modify just the end of the selection by below hook. Then original coords
|
338
|
-
// should be handled by next methods.
|
339
324
|
var coordsClone = coords.clone();
|
325
|
+
var countRows = this.tableProps.countRows();
|
326
|
+
var countCols = this.tableProps.countCols();
|
327
|
+
var isSingle = this.selectedRange.current().clone().setTo(coords).isSingleHeader();
|
328
|
+
|
329
|
+
// Ignore processing the end range when the header selection starts overlapping the corner and
|
330
|
+
// the selection is not a single header highlight.
|
331
|
+
if ((countRows > 0 || countCols > 0) && (countRows === 0 && coordsClone.col < 0 && !isSingle || countCols === 0 && coordsClone.row < 0 && !isSingle)) {
|
332
|
+
return;
|
333
|
+
}
|
340
334
|
this.runLocalHooks('beforeSetRangeEnd', coordsClone);
|
341
335
|
this.begin();
|
342
336
|
var cellRange = this.selectedRange.current();
|
343
|
-
if (this.settings.
|
344
|
-
cellRange.
|
337
|
+
if (!this.settings.navigableHeaders) {
|
338
|
+
cellRange.highlight.normalize();
|
339
|
+
}
|
340
|
+
if (this.settings.selectionMode === 'single') {
|
341
|
+
cellRange.setFrom(cellRange.highlight);
|
342
|
+
cellRange.setTo(cellRange.highlight);
|
343
|
+
} else {
|
344
|
+
cellRange.setTo(coordsClone);
|
345
345
|
}
|
346
346
|
|
347
|
-
//
|
348
|
-
|
347
|
+
// Prevent creating "area" selection that overlaps headers.
|
348
|
+
if (countRows > 0 && countCols > 0) {
|
349
|
+
if (!this.settings.navigableHeaders || this.settings.navigableHeaders && !cellRange.isSingleHeader()) {
|
350
|
+
cellRange.to.normalize();
|
351
|
+
}
|
352
|
+
}
|
353
|
+
var focusHighlight = this.highlight.getFocus();
|
354
|
+
focusHighlight.clear();
|
349
355
|
if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, cellRange.highlight)) {
|
350
|
-
|
356
|
+
focusHighlight.add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
|
351
357
|
}
|
352
358
|
var layerLevel = this.getLayerLevel();
|
353
359
|
|
@@ -372,6 +378,9 @@ var Selection = /*#__PURE__*/function () {
|
|
372
378
|
(0, _array.arrayEach)(this.highlight.getActiveColumnHeaders(), function (highlight) {
|
373
379
|
return void highlight.clear();
|
374
380
|
});
|
381
|
+
(0, _array.arrayEach)(this.highlight.getActiveCornerHeaders(), function (highlight) {
|
382
|
+
return void highlight.clear();
|
383
|
+
});
|
375
384
|
(0, _array.arrayEach)(this.highlight.getRowHighlights(), function (highlight) {
|
376
385
|
return void highlight.clear();
|
377
386
|
});
|
@@ -386,6 +395,7 @@ var Selection = /*#__PURE__*/function () {
|
|
386
395
|
var columnHeaderHighlight = this.highlight.createColumnHeader();
|
387
396
|
var activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
|
388
397
|
var activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
|
398
|
+
var activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
|
389
399
|
var rowHighlight = this.highlight.createRowHighlight();
|
390
400
|
var columnHighlight = this.highlight.createColumnHighlight();
|
391
401
|
areaHighlight.clear();
|
@@ -394,6 +404,7 @@ var Selection = /*#__PURE__*/function () {
|
|
394
404
|
columnHeaderHighlight.clear();
|
395
405
|
activeRowHeaderHighlight.clear();
|
396
406
|
activeColumnHeaderHighlight.clear();
|
407
|
+
activeCornerHeaderHighlight.clear();
|
397
408
|
rowHighlight.clear();
|
398
409
|
columnHighlight.clear();
|
399
410
|
if (this.highlight.isEnabledFor(_highlight.AREA_TYPE, cellRange.highlight) && (this.isMultiple() || layerLevel >= 1)) {
|
@@ -415,36 +426,33 @@ var Selection = /*#__PURE__*/function () {
|
|
415
426
|
}
|
416
427
|
}
|
417
428
|
if (this.highlight.isEnabledFor(_highlight.HEADER_TYPE, cellRange.highlight)) {
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
if (this.isEntireRowSelected()) {
|
434
|
-
var isRowSelected = this.tableProps.countCols() === cellRange.getWidth();
|
435
|
-
|
436
|
-
// Make sure that the whole row is selected (in case where selectionMode is set to 'single')
|
437
|
-
if (isRowSelected) {
|
438
|
-
activeRowHeaderHighlight.add(this.tableProps.createCellCoords(cellRange.from.row, Math.min(-this.tableProps.countRowHeaders(), -1))).add(this.tableProps.createCellCoords(cellRange.to.row, -1)).commit();
|
429
|
+
if (!cellRange.isSingleHeader()) {
|
430
|
+
var rowCoordsFrom = this.tableProps.createCellCoords(Math.max(cellRange.from.row, 0), -1);
|
431
|
+
var rowCoordsTo = this.tableProps.createCellCoords(cellRange.to.row, -1);
|
432
|
+
var columnCoordsFrom = this.tableProps.createCellCoords(-1, Math.max(cellRange.from.col, 0));
|
433
|
+
var columnCoordsTo = this.tableProps.createCellCoords(-1, cellRange.to.col);
|
434
|
+
if (this.settings.selectionMode === 'single') {
|
435
|
+
rowHeaderHighlight.add(rowCoordsFrom).commit();
|
436
|
+
columnHeaderHighlight.add(columnCoordsFrom).commit();
|
437
|
+
rowHighlight.add(rowCoordsFrom).commit();
|
438
|
+
columnHighlight.add(columnCoordsFrom).commit();
|
439
|
+
} else {
|
440
|
+
rowHeaderHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
|
441
|
+
columnHeaderHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
442
|
+
rowHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
|
443
|
+
columnHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
439
444
|
}
|
440
445
|
}
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
446
|
+
var highlightRowHeaders = this.isEntireRowSelected() && (countCols > 0 && countCols === cellRange.getWidth() || countCols === 0 && (this.isSelectedByRowHeader() || this.isSelectedByCorner()));
|
447
|
+
var highlightColumnHeaders = this.isEntireColumnSelected() && (countRows > 0 && countRows === cellRange.getHeight() || countRows === 0 && (this.isSelectedByColumnHeader() || this.isSelectedByCorner()));
|
448
|
+
if (highlightRowHeaders) {
|
449
|
+
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();
|
450
|
+
}
|
451
|
+
if (highlightColumnHeaders) {
|
452
|
+
activeColumnHeaderHighlight.add(this.tableProps.createCellCoords(Math.min(-this.tableProps.countColHeaders(), -1), Math.max(cellRange.from.col, 0))).add(this.tableProps.createCellCoords(-1, Math.max(cellRange.to.col, 0))).commit();
|
453
|
+
}
|
454
|
+
if (highlightRowHeaders && highlightColumnHeaders) {
|
455
|
+
activeCornerHeaderHighlight.add(this.tableProps.createCellCoords(-this.tableProps.countColHeaders(), -this.tableProps.countRowHeaders())).add(this.tableProps.createCellCoords(-1, -1)).commit();
|
448
456
|
}
|
449
457
|
}
|
450
458
|
this.runLocalHooks('afterSetRangeEnd', coords);
|
@@ -469,14 +477,14 @@ var Selection = /*#__PURE__*/function () {
|
|
469
477
|
*
|
470
478
|
* @param {number} rowDelta Rows number to move, value can be passed as negative number.
|
471
479
|
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
472
|
-
* @param {boolean} [
|
473
|
-
*
|
480
|
+
* @param {boolean} [createMissingRecords=false] If `true` the new rows/columns will be created if necessary.
|
481
|
+
* Otherwise, row/column will be created according to `minSpareRows/minSpareCols` settings of Handsontable.
|
474
482
|
*/
|
475
483
|
}, {
|
476
484
|
key: "transformStart",
|
477
485
|
value: function transformStart(rowDelta, colDelta) {
|
478
|
-
var
|
479
|
-
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta,
|
486
|
+
var createMissingRecords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
487
|
+
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta, createMissingRecords));
|
480
488
|
}
|
481
489
|
|
482
490
|
/**
|
@@ -525,7 +533,7 @@ var Selection = /*#__PURE__*/function () {
|
|
525
533
|
key: "isSelectedByRowHeader",
|
526
534
|
value: function isSelectedByRowHeader() {
|
527
535
|
var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
528
|
-
return !this.isSelectedByCorner(layerLevel) && this.
|
536
|
+
return !this.isSelectedByCorner(layerLevel) && (layerLevel === -1 ? this.selectedByRowHeader.size > 0 : this.selectedByRowHeader.has(layerLevel));
|
529
537
|
}
|
530
538
|
|
531
539
|
/**
|
@@ -538,8 +546,22 @@ var Selection = /*#__PURE__*/function () {
|
|
538
546
|
}, {
|
539
547
|
key: "isEntireRowSelected",
|
540
548
|
value: function isEntireRowSelected() {
|
549
|
+
var _this2 = this;
|
541
550
|
var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
542
|
-
|
551
|
+
var tester = function tester(range) {
|
552
|
+
var _range$getOuterTopSta = range.getOuterTopStartCorner(),
|
553
|
+
col = _range$getOuterTopSta.col;
|
554
|
+
var rowHeaders = _this2.tableProps.countRowHeaders();
|
555
|
+
var countCols = _this2.tableProps.countCols();
|
556
|
+
return (rowHeaders > 0 && col < 0 || rowHeaders === 0) && range.getWidth() === countCols;
|
557
|
+
};
|
558
|
+
if (layerLevel === -1) {
|
559
|
+
return Array.from(this.selectedRange).some(function (range) {
|
560
|
+
return tester(range);
|
561
|
+
});
|
562
|
+
}
|
563
|
+
var range = this.selectedRange.peekByIndex(layerLevel);
|
564
|
+
return range ? tester(range) : false;
|
543
565
|
}
|
544
566
|
|
545
567
|
/**
|
@@ -554,7 +576,7 @@ var Selection = /*#__PURE__*/function () {
|
|
554
576
|
key: "isSelectedByColumnHeader",
|
555
577
|
value: function isSelectedByColumnHeader() {
|
556
578
|
var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
557
|
-
return !this.isSelectedByCorner() && this.
|
579
|
+
return !this.isSelectedByCorner() && (layerLevel === -1 ? this.selectedByColumnHeader.size > 0 : this.selectedByColumnHeader.has(layerLevel));
|
558
580
|
}
|
559
581
|
|
560
582
|
/**
|
@@ -567,8 +589,22 @@ var Selection = /*#__PURE__*/function () {
|
|
567
589
|
}, {
|
568
590
|
key: "isEntireColumnSelected",
|
569
591
|
value: function isEntireColumnSelected() {
|
592
|
+
var _this3 = this;
|
570
593
|
var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
|
571
|
-
|
594
|
+
var tester = function tester(range) {
|
595
|
+
var _range$getOuterTopSta2 = range.getOuterTopStartCorner(),
|
596
|
+
row = _range$getOuterTopSta2.row;
|
597
|
+
var colHeaders = _this3.tableProps.countColHeaders();
|
598
|
+
var countRows = _this3.tableProps.countRows();
|
599
|
+
return (colHeaders > 0 && row < 0 || colHeaders === 0) && range.getHeight() === countRows;
|
600
|
+
};
|
601
|
+
if (layerLevel === -1) {
|
602
|
+
return Array.from(this.selectedRange).some(function (range) {
|
603
|
+
return tester(range);
|
604
|
+
});
|
605
|
+
}
|
606
|
+
var range = this.selectedRange.peekByIndex(layerLevel);
|
607
|
+
return range ? tester(range) : false;
|
572
608
|
}
|
573
609
|
|
574
610
|
/**
|
@@ -590,7 +626,7 @@ var Selection = /*#__PURE__*/function () {
|
|
590
626
|
}, {
|
591
627
|
key: "isSelectedByCorner",
|
592
628
|
value: function isSelectedByCorner() {
|
593
|
-
return this.
|
629
|
+
return this.selectedByColumnHeader.has(this.getLayerLevel()) && this.selectedByRowHeader.has(this.getLayerLevel());
|
594
630
|
}
|
595
631
|
|
596
632
|
/**
|
@@ -659,33 +695,49 @@ var Selection = /*#__PURE__*/function () {
|
|
659
695
|
}
|
660
696
|
|
661
697
|
/**
|
662
|
-
*
|
698
|
+
* Selects all cells and headers.
|
663
699
|
*
|
664
|
-
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
665
|
-
* otherwise.
|
666
|
-
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
667
|
-
* otherwise.
|
700
|
+
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
701
|
+
* `false` otherwise.
|
702
|
+
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
703
|
+
* headers, `false` otherwise.
|
704
|
+
* @param {{row: number, col: number}} [focusPosition] The argument allows changing the cell/header
|
705
|
+
* focus position. The value takes an object with a `row` and `col` properties from -N to N, where
|
706
|
+
* negative values point to the headers and positive values point to the cell range.
|
668
707
|
*/
|
669
708
|
}, {
|
670
709
|
key: "selectAll",
|
671
710
|
value: function selectAll() {
|
672
711
|
var includeRowHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
673
712
|
var includeColumnHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
713
|
+
var focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
714
|
+
row: this.tableProps.countColHeaders() > 0 ? -this.tableProps.countColHeaders() : 0,
|
715
|
+
col: this.tableProps.countRowHeaders() > 0 ? -this.tableProps.countRowHeaders() : 0
|
716
|
+
};
|
674
717
|
var nrOfRows = this.tableProps.countRows();
|
675
718
|
var nrOfColumns = this.tableProps.countCols();
|
719
|
+
var countRowHeaders = this.tableProps.countRowHeaders();
|
720
|
+
var countColHeaders = this.tableProps.countColHeaders();
|
721
|
+
var rowFrom = includeRowHeaders ? -countColHeaders : 0;
|
722
|
+
var columnFrom = includeColumnHeaders ? -countRowHeaders : 0;
|
676
723
|
|
677
724
|
// We can't select cells when there is no data.
|
678
|
-
if (
|
725
|
+
if (rowFrom === 0 && columnFrom === 0 && (nrOfRows === 0 || nrOfColumns === 0)) {
|
679
726
|
return;
|
680
727
|
}
|
681
|
-
var
|
682
|
-
var
|
728
|
+
var highlightRow = Number.isInteger(focusPosition.row) ? focusPosition.row : 0;
|
729
|
+
var highlightColumn = Number.isInteger(focusPosition.col) ? focusPosition.col : 0;
|
683
730
|
var startCoords = this.tableProps.createCellCoords(rowFrom, columnFrom);
|
731
|
+
var highlight = this.tableProps.createCellCoords((0, _number.clamp)(highlightRow, rowFrom, nrOfRows - 1), (0, _number.clamp)(highlightColumn, columnFrom, nrOfColumns - 1));
|
684
732
|
var endCoords = this.tableProps.createCellCoords(nrOfRows - 1, nrOfColumns - 1);
|
685
733
|
this.clear();
|
686
|
-
this.setRangeStartOnly(startCoords);
|
687
|
-
|
688
|
-
|
734
|
+
this.setRangeStartOnly(startCoords, void 0, highlight);
|
735
|
+
if (columnFrom < 0) {
|
736
|
+
this.selectedByRowHeader.add(this.getLayerLevel());
|
737
|
+
}
|
738
|
+
if (rowFrom < 0) {
|
739
|
+
this.selectedByColumnHeader.add(this.getLayerLevel());
|
740
|
+
}
|
689
741
|
this.setRangeEnd(endCoords);
|
690
742
|
this.finish();
|
691
743
|
}
|
@@ -702,7 +754,7 @@ var Selection = /*#__PURE__*/function () {
|
|
702
754
|
}, {
|
703
755
|
key: "selectCells",
|
704
756
|
value: function selectCells(selectionRanges) {
|
705
|
-
var
|
757
|
+
var _this4 = this;
|
706
758
|
var selectionType = (0, _utils.detectSelectionType)(selectionRanges);
|
707
759
|
if (selectionType === _utils.SELECTION_TYPE_EMPTY) {
|
708
760
|
return false;
|
@@ -711,36 +763,33 @@ var Selection = /*#__PURE__*/function () {
|
|
711
763
|
}
|
712
764
|
var selectionSchemaNormalizer = (0, _utils.normalizeSelectionFactory)(selectionType, {
|
713
765
|
propToCol: function propToCol(prop) {
|
714
|
-
return
|
766
|
+
return _this4.tableProps.propToCol(prop);
|
715
767
|
},
|
716
768
|
keepDirection: true
|
717
769
|
});
|
718
|
-
var
|
719
|
-
var
|
770
|
+
var navigableHeaders = this.settings.navigableHeaders;
|
771
|
+
var tableParams = {
|
772
|
+
countRows: this.tableProps.countRows(),
|
773
|
+
countCols: this.tableProps.countCols(),
|
774
|
+
countRowHeaders: navigableHeaders ? this.tableProps.countRowHeaders() : 0,
|
775
|
+
countColHeaders: navigableHeaders ? this.tableProps.countColHeaders() : 0
|
776
|
+
};
|
720
777
|
|
721
778
|
// Check if every layer of the coordinates are valid.
|
722
779
|
var isValid = !selectionRanges.some(function (selection) {
|
723
|
-
var
|
724
|
-
|
725
|
-
|
726
|
-
columnStart = _selectionSchemaNorma2[1],
|
727
|
-
rowEnd = _selectionSchemaNorma2[2],
|
728
|
-
columnEnd = _selectionSchemaNorma2[3];
|
729
|
-
var _isValid = (0, _utils.isValidCoord)(rowStart, nrOfRows) && (0, _utils.isValidCoord)(columnStart, nrOfColumns) && (0, _utils.isValidCoord)(rowEnd, nrOfRows) && (0, _utils.isValidCoord)(columnEnd, nrOfColumns);
|
730
|
-
return !_isValid;
|
780
|
+
var cellRange = selectionSchemaNormalizer(selection);
|
781
|
+
var rangeValidity = cellRange.isValid(tableParams);
|
782
|
+
return !(rangeValidity && !cellRange.containsHeaders() || rangeValidity && cellRange.containsHeaders() && cellRange.isSingleHeader());
|
731
783
|
});
|
732
784
|
if (isValid) {
|
733
785
|
this.clear();
|
734
786
|
(0, _array.arrayEach)(selectionRanges, function (selection) {
|
735
|
-
var
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
_this2.setRangeStartOnly(_this2.tableProps.createCellCoords(rowStart, columnStart), false);
|
742
|
-
_this2.setRangeEnd(_this2.tableProps.createCellCoords(rowEnd, columnEnd));
|
743
|
-
_this2.finish();
|
787
|
+
var _selectionSchemaNorma = selectionSchemaNormalizer(selection),
|
788
|
+
from = _selectionSchemaNorma.from,
|
789
|
+
to = _selectionSchemaNorma.to;
|
790
|
+
_this4.setRangeStartOnly(from.clone(), false);
|
791
|
+
_this4.setRangeEnd(to.clone());
|
792
|
+
_this4.finish();
|
744
793
|
});
|
745
794
|
}
|
746
795
|
return isValid;
|
@@ -752,24 +801,45 @@ var Selection = /*#__PURE__*/function () {
|
|
752
801
|
*
|
753
802
|
* @param {number|string} startColumn Visual column index or column property from which the selection starts.
|
754
803
|
* @param {number|string} [endColumn] Visual column index or column property from to the selection finishes.
|
755
|
-
* @param {number} [
|
756
|
-
*
|
757
|
-
*
|
804
|
+
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
|
805
|
+
* The value can take visual row index from -N to N, where negative values
|
806
|
+
* point to the headers and positive values point to the cell range.
|
758
807
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
759
808
|
*/
|
760
809
|
}, {
|
761
810
|
key: "selectColumns",
|
762
811
|
value: function selectColumns(startColumn) {
|
763
812
|
var endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;
|
764
|
-
var
|
813
|
+
var focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
765
814
|
var start = typeof startColumn === 'string' ? this.tableProps.propToCol(startColumn) : startColumn;
|
766
815
|
var end = typeof endColumn === 'string' ? this.tableProps.propToCol(endColumn) : endColumn;
|
767
|
-
var
|
768
|
-
var
|
769
|
-
var
|
816
|
+
var countRows = this.tableProps.countRows();
|
817
|
+
var countCols = this.tableProps.countCols();
|
818
|
+
var countColHeaders = this.tableProps.countColHeaders();
|
819
|
+
var columnHeaderLastIndex = countColHeaders === 0 ? 0 : -countColHeaders;
|
820
|
+
var fromCoords = new _src.CellCoords(columnHeaderLastIndex, start);
|
821
|
+
var toCoords = new _src.CellCoords(countRows - 1, end);
|
822
|
+
var isValid = new _src.CellRange(fromCoords, fromCoords, toCoords).isValid({
|
823
|
+
countRows: countRows,
|
824
|
+
countCols: countCols,
|
825
|
+
countRowHeaders: 0,
|
826
|
+
countColHeaders: countColHeaders
|
827
|
+
});
|
770
828
|
if (isValid) {
|
771
|
-
|
772
|
-
|
829
|
+
var fromRow = countColHeaders === 0 ? 0 : (0, _number.clamp)(focusPosition, columnHeaderLastIndex, -1);
|
830
|
+
var toRow = countRows - 1;
|
831
|
+
var from = this.tableProps.createCellCoords(fromRow, start);
|
832
|
+
var to = this.tableProps.createCellCoords(toRow, end);
|
833
|
+
var highlight = this.tableProps.createCellCoords((0, _number.clamp)(focusPosition, columnHeaderLastIndex, countRows - 1), start);
|
834
|
+
this.runLocalHooks('beforeSelectColumns', from, to, highlight);
|
835
|
+
|
836
|
+
// disallow modifying row axis for that hooks
|
837
|
+
from.row = fromRow;
|
838
|
+
to.row = toRow;
|
839
|
+
this.setRangeStartOnly(from, void 0, highlight);
|
840
|
+
this.selectedByColumnHeader.add(this.getLayerLevel());
|
841
|
+
this.setRangeEnd(to);
|
842
|
+
this.runLocalHooks('afterSelectColumns', from, to, highlight);
|
773
843
|
this.finish();
|
774
844
|
}
|
775
845
|
return isValid;
|
@@ -780,22 +850,43 @@ var Selection = /*#__PURE__*/function () {
|
|
780
850
|
*
|
781
851
|
* @param {number} startRow Visual row index from which the selection starts.
|
782
852
|
* @param {number} [endRow] Visual row index from to the selection finishes.
|
783
|
-
* @param {number} [
|
784
|
-
*
|
785
|
-
*
|
853
|
+
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
|
854
|
+
* The value can take visual column index from -N to N, where negative values
|
855
|
+
* point to the headers and positive values point to the cell range.
|
786
856
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
787
857
|
*/
|
788
858
|
}, {
|
789
859
|
key: "selectRows",
|
790
860
|
value: function selectRows(startRow) {
|
791
861
|
var endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;
|
792
|
-
var
|
793
|
-
var
|
794
|
-
var
|
795
|
-
var
|
862
|
+
var focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
863
|
+
var countRows = this.tableProps.countRows();
|
864
|
+
var countCols = this.tableProps.countCols();
|
865
|
+
var countRowHeaders = this.tableProps.countRowHeaders();
|
866
|
+
var rowHeaderLastIndex = countRowHeaders === 0 ? 0 : -countRowHeaders;
|
867
|
+
var fromCoords = new _src.CellCoords(startRow, rowHeaderLastIndex);
|
868
|
+
var toCoords = new _src.CellCoords(endRow, countCols - 1);
|
869
|
+
var isValid = new _src.CellRange(fromCoords, fromCoords, toCoords).isValid({
|
870
|
+
countRows: countRows,
|
871
|
+
countCols: countCols,
|
872
|
+
countRowHeaders: countRowHeaders,
|
873
|
+
countColHeaders: 0
|
874
|
+
});
|
796
875
|
if (isValid) {
|
797
|
-
|
798
|
-
|
876
|
+
var fromColumn = countRowHeaders === 0 ? 0 : (0, _number.clamp)(focusPosition, rowHeaderLastIndex, -1);
|
877
|
+
var toColumn = countCols - 1;
|
878
|
+
var from = this.tableProps.createCellCoords(startRow, fromColumn);
|
879
|
+
var to = this.tableProps.createCellCoords(endRow, toColumn);
|
880
|
+
var highlight = this.tableProps.createCellCoords(startRow, (0, _number.clamp)(focusPosition, rowHeaderLastIndex, countCols - 1));
|
881
|
+
this.runLocalHooks('beforeSelectRows', from, to, highlight);
|
882
|
+
|
883
|
+
// disallow modifying column axis for that hooks
|
884
|
+
from.col = fromColumn;
|
885
|
+
to.col = toColumn;
|
886
|
+
this.setRangeStartOnly(from, void 0, highlight);
|
887
|
+
this.selectedByRowHeader.add(this.getLayerLevel());
|
888
|
+
this.setRangeEnd(to);
|
889
|
+
this.runLocalHooks('afterSelectRows', from, to, highlight);
|
799
890
|
this.finish();
|
800
891
|
}
|
801
892
|
return isValid;
|
@@ -827,6 +918,7 @@ var Selection = /*#__PURE__*/function () {
|
|
827
918
|
var columnHeaderHighlight = this.highlight.createColumnHeader();
|
828
919
|
var activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
|
829
920
|
var activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
|
921
|
+
var activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
|
830
922
|
var rowHighlight = this.highlight.createRowHighlight();
|
831
923
|
var columnHighlight = this.highlight.createColumnHighlight();
|
832
924
|
areaHighlight.commit();
|
@@ -835,6 +927,7 @@ var Selection = /*#__PURE__*/function () {
|
|
835
927
|
columnHeaderHighlight.commit();
|
836
928
|
activeRowHeaderHighlight.commit();
|
837
929
|
activeColumnHeaderHighlight.commit();
|
930
|
+
activeCornerHeaderHighlight.commit();
|
838
931
|
rowHighlight.commit();
|
839
932
|
columnHighlight.commit();
|
840
933
|
}
|