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
@@ -25,8 +25,8 @@ require("core-js/modules/es.weak-map.js");
|
|
25
25
|
require("core-js/modules/web.dom-collections.iterator.js");
|
26
26
|
var _element = require("../../helpers/dom/element");
|
27
27
|
var _number = require("../../helpers/number");
|
28
|
-
var _event = require("../../helpers/dom/event");
|
29
28
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
29
|
+
var _event = require("../../helpers/dom/event");
|
30
30
|
var _console = require("../../helpers/console");
|
31
31
|
var _selection = require("../../selection");
|
32
32
|
var _base = require("../base");
|
@@ -201,6 +201,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
201
201
|
this.addHook('beforeOnCellMouseOver', function () {
|
202
202
|
return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
|
203
203
|
});
|
204
|
+
this.addHook('modifyTransformStart', function () {
|
205
|
+
return _this2.onModifyTransformStart.apply(_this2, arguments);
|
206
|
+
});
|
207
|
+
this.addHook('afterSelection', function () {
|
208
|
+
return _this2.updateFocusHighlightPosition();
|
209
|
+
});
|
204
210
|
this.addHook('afterGetColumnHeaderRenderers', function (array) {
|
205
211
|
return _this2.onAfterGetColumnHeaderRenderers(array);
|
206
212
|
});
|
@@ -216,9 +222,18 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
216
222
|
this.addHook('beforeCopy', function () {
|
217
223
|
return _this2.onBeforeCopy.apply(_this2, arguments);
|
218
224
|
});
|
225
|
+
this.addHook('beforeSelectColumns', function () {
|
226
|
+
return _this2.onBeforeSelectColumns.apply(_this2, arguments);
|
227
|
+
});
|
219
228
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
220
229
|
return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
|
221
230
|
});
|
231
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
|
232
|
+
return _this2.updateFocusHighlightPosition();
|
233
|
+
});
|
234
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
|
235
|
+
return _this2.updateFocusHighlightPosition();
|
236
|
+
});
|
222
237
|
_get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
|
223
238
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
224
239
|
}
|
@@ -440,6 +455,34 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
440
455
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
441
456
|
}
|
442
457
|
|
458
|
+
/**
|
459
|
+
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
460
|
+
* even when the logical coordinates point in-between the header.
|
461
|
+
*
|
462
|
+
* @private
|
463
|
+
*/
|
464
|
+
}, {
|
465
|
+
key: "updateFocusHighlightPosition",
|
466
|
+
value: function updateFocusHighlightPosition() {
|
467
|
+
var _this$hot;
|
468
|
+
var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
469
|
+
if (!selection) {
|
470
|
+
return;
|
471
|
+
}
|
472
|
+
var highlight = selection.highlight;
|
473
|
+
var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
474
|
+
if (isNestedHeadersRange) {
|
475
|
+
var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
476
|
+
var focusHighlight = this.hot.selection.highlight.getFocus();
|
477
|
+
|
478
|
+
// Correct the highlight/focus selection to highlight the correct TH element
|
479
|
+
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
480
|
+
focusHighlight.visualCellRange.from.col = columnIndex;
|
481
|
+
focusHighlight.visualCellRange.to.col = columnIndex;
|
482
|
+
focusHighlight.commit();
|
483
|
+
}
|
484
|
+
}
|
485
|
+
|
443
486
|
/**
|
444
487
|
* Allows to control which header DOM element will be used to highlight.
|
445
488
|
*
|
@@ -600,7 +643,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
600
643
|
}, {
|
601
644
|
key: "onBeforeOnCellMouseOver",
|
602
645
|
value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
603
|
-
var _this$hot;
|
646
|
+
var _this$hot$selection;
|
604
647
|
if (!this.hot.view.isMouseDown()) {
|
605
648
|
return;
|
606
649
|
}
|
@@ -621,13 +664,93 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
621
664
|
controller.cell = true;
|
622
665
|
var columnsToSelect = [];
|
623
666
|
if (coords.col < from.col) {
|
624
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
667
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
|
625
668
|
} else if (coords.col > from.col) {
|
626
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
669
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
|
627
670
|
} else {
|
628
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
671
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
672
|
+
}
|
673
|
+
(_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
|
674
|
+
}
|
675
|
+
|
676
|
+
/**
|
677
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
678
|
+
*
|
679
|
+
* @private
|
680
|
+
* @param {object} delta The transformation delta.
|
681
|
+
*/
|
682
|
+
}, {
|
683
|
+
key: "onModifyTransformStart",
|
684
|
+
value: function onModifyTransformStart(delta) {
|
685
|
+
var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
|
686
|
+
highlight = _this$hot$getSelected.highlight;
|
687
|
+
var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
688
|
+
var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
689
|
+
if (!isNestedHeadersRange) {
|
690
|
+
return;
|
691
|
+
}
|
692
|
+
var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
693
|
+
var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
694
|
+
if (delta.col < 0) {
|
695
|
+
var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
696
|
+
var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
697
|
+
if (notHiddenColumnIndex === null) {
|
698
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
699
|
+
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
700
|
+
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
701
|
+
} else {
|
702
|
+
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
703
|
+
}
|
704
|
+
} else if (delta.col > 0) {
|
705
|
+
var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
706
|
+
var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
|
707
|
+
if (_notHiddenColumnIndex === null) {
|
708
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
709
|
+
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
710
|
+
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
711
|
+
} else {
|
712
|
+
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
|
713
|
+
}
|
714
|
+
}
|
715
|
+
}
|
716
|
+
|
717
|
+
/**
|
718
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
719
|
+
* ensure that the whole nested column will be covered.
|
720
|
+
*
|
721
|
+
* @private
|
722
|
+
* @param {*} from The coords object where the selection starts.
|
723
|
+
* @param {*} to The coords object where the selection ends.
|
724
|
+
*/
|
725
|
+
}, {
|
726
|
+
key: "onBeforeSelectColumns",
|
727
|
+
value: function onBeforeSelectColumns(from, to) {
|
728
|
+
var headerLevel = from.row;
|
729
|
+
var startNodeData = this._getHeaderTreeNodeDataByCoords({
|
730
|
+
row: headerLevel,
|
731
|
+
col: from.col
|
732
|
+
});
|
733
|
+
var endNodeData = this._getHeaderTreeNodeDataByCoords({
|
734
|
+
row: headerLevel,
|
735
|
+
col: to.col
|
736
|
+
});
|
737
|
+
if (to.col < from.col) {
|
738
|
+
// Column selection from right to left
|
739
|
+
if (startNodeData) {
|
740
|
+
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
741
|
+
}
|
742
|
+
if (endNodeData) {
|
743
|
+
to.col = endNodeData.columnIndex;
|
744
|
+
}
|
745
|
+
} else if (to.col >= from.col) {
|
746
|
+
// Column selection from left to right or a single column selection
|
747
|
+
if (startNodeData) {
|
748
|
+
from.col = startNodeData.columnIndex;
|
749
|
+
}
|
750
|
+
if (endNodeData) {
|
751
|
+
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
752
|
+
}
|
629
753
|
}
|
630
|
-
(_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
|
631
754
|
}
|
632
755
|
|
633
756
|
/**
|
@@ -45,8 +45,8 @@ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!priva
|
|
45
45
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
46
46
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
47
47
|
import { isNumeric } from "../../helpers/number.mjs";
|
48
|
-
import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
|
49
48
|
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
49
|
+
import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
|
50
50
|
import { warn } from "../../helpers/console.mjs";
|
51
51
|
import { ACTIVE_HEADER_TYPE, HEADER_TYPE } from "../../selection/index.mjs";
|
52
52
|
import { BasePlugin } from "../base/index.mjs";
|
@@ -194,6 +194,12 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
194
194
|
this.addHook('beforeOnCellMouseOver', function () {
|
195
195
|
return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
|
196
196
|
});
|
197
|
+
this.addHook('modifyTransformStart', function () {
|
198
|
+
return _this2.onModifyTransformStart.apply(_this2, arguments);
|
199
|
+
});
|
200
|
+
this.addHook('afterSelection', function () {
|
201
|
+
return _this2.updateFocusHighlightPosition();
|
202
|
+
});
|
197
203
|
this.addHook('afterGetColumnHeaderRenderers', function (array) {
|
198
204
|
return _this2.onAfterGetColumnHeaderRenderers(array);
|
199
205
|
});
|
@@ -209,9 +215,18 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
209
215
|
this.addHook('beforeCopy', function () {
|
210
216
|
return _this2.onBeforeCopy.apply(_this2, arguments);
|
211
217
|
});
|
218
|
+
this.addHook('beforeSelectColumns', function () {
|
219
|
+
return _this2.onBeforeSelectColumns.apply(_this2, arguments);
|
220
|
+
});
|
212
221
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
213
222
|
return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
|
214
223
|
});
|
224
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
|
225
|
+
return _this2.updateFocusHighlightPosition();
|
226
|
+
});
|
227
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
|
228
|
+
return _this2.updateFocusHighlightPosition();
|
229
|
+
});
|
215
230
|
_get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
|
216
231
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
217
232
|
}
|
@@ -433,6 +448,34 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
433
448
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
434
449
|
}
|
435
450
|
|
451
|
+
/**
|
452
|
+
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
453
|
+
* even when the logical coordinates point in-between the header.
|
454
|
+
*
|
455
|
+
* @private
|
456
|
+
*/
|
457
|
+
}, {
|
458
|
+
key: "updateFocusHighlightPosition",
|
459
|
+
value: function updateFocusHighlightPosition() {
|
460
|
+
var _this$hot;
|
461
|
+
var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
462
|
+
if (!selection) {
|
463
|
+
return;
|
464
|
+
}
|
465
|
+
var highlight = selection.highlight;
|
466
|
+
var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
467
|
+
if (isNestedHeadersRange) {
|
468
|
+
var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
469
|
+
var focusHighlight = this.hot.selection.highlight.getFocus();
|
470
|
+
|
471
|
+
// Correct the highlight/focus selection to highlight the correct TH element
|
472
|
+
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
473
|
+
focusHighlight.visualCellRange.from.col = columnIndex;
|
474
|
+
focusHighlight.visualCellRange.to.col = columnIndex;
|
475
|
+
focusHighlight.commit();
|
476
|
+
}
|
477
|
+
}
|
478
|
+
|
436
479
|
/**
|
437
480
|
* Allows to control which header DOM element will be used to highlight.
|
438
481
|
*
|
@@ -593,7 +636,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
593
636
|
}, {
|
594
637
|
key: "onBeforeOnCellMouseOver",
|
595
638
|
value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
596
|
-
var _this$hot;
|
639
|
+
var _this$hot$selection;
|
597
640
|
if (!this.hot.view.isMouseDown()) {
|
598
641
|
return;
|
599
642
|
}
|
@@ -614,13 +657,93 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
614
657
|
controller.cell = true;
|
615
658
|
var columnsToSelect = [];
|
616
659
|
if (coords.col < from.col) {
|
617
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
660
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
|
618
661
|
} else if (coords.col > from.col) {
|
619
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
662
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
|
620
663
|
} else {
|
621
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
664
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
665
|
+
}
|
666
|
+
(_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
|
667
|
+
}
|
668
|
+
|
669
|
+
/**
|
670
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
671
|
+
*
|
672
|
+
* @private
|
673
|
+
* @param {object} delta The transformation delta.
|
674
|
+
*/
|
675
|
+
}, {
|
676
|
+
key: "onModifyTransformStart",
|
677
|
+
value: function onModifyTransformStart(delta) {
|
678
|
+
var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
|
679
|
+
highlight = _this$hot$getSelected.highlight;
|
680
|
+
var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
681
|
+
var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
682
|
+
if (!isNestedHeadersRange) {
|
683
|
+
return;
|
684
|
+
}
|
685
|
+
var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
686
|
+
var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
687
|
+
if (delta.col < 0) {
|
688
|
+
var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
689
|
+
var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
690
|
+
if (notHiddenColumnIndex === null) {
|
691
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
692
|
+
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
693
|
+
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
694
|
+
} else {
|
695
|
+
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
696
|
+
}
|
697
|
+
} else if (delta.col > 0) {
|
698
|
+
var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
699
|
+
var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
|
700
|
+
if (_notHiddenColumnIndex === null) {
|
701
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
702
|
+
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
703
|
+
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
704
|
+
} else {
|
705
|
+
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
|
706
|
+
}
|
707
|
+
}
|
708
|
+
}
|
709
|
+
|
710
|
+
/**
|
711
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
712
|
+
* ensure that the whole nested column will be covered.
|
713
|
+
*
|
714
|
+
* @private
|
715
|
+
* @param {*} from The coords object where the selection starts.
|
716
|
+
* @param {*} to The coords object where the selection ends.
|
717
|
+
*/
|
718
|
+
}, {
|
719
|
+
key: "onBeforeSelectColumns",
|
720
|
+
value: function onBeforeSelectColumns(from, to) {
|
721
|
+
var headerLevel = from.row;
|
722
|
+
var startNodeData = this._getHeaderTreeNodeDataByCoords({
|
723
|
+
row: headerLevel,
|
724
|
+
col: from.col
|
725
|
+
});
|
726
|
+
var endNodeData = this._getHeaderTreeNodeDataByCoords({
|
727
|
+
row: headerLevel,
|
728
|
+
col: to.col
|
729
|
+
});
|
730
|
+
if (to.col < from.col) {
|
731
|
+
// Column selection from right to left
|
732
|
+
if (startNodeData) {
|
733
|
+
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
734
|
+
}
|
735
|
+
if (endNodeData) {
|
736
|
+
to.col = endNodeData.columnIndex;
|
737
|
+
}
|
738
|
+
} else if (to.col >= from.col) {
|
739
|
+
// Column selection from left to right or a single column selection
|
740
|
+
if (startNodeData) {
|
741
|
+
from.col = startNodeData.columnIndex;
|
742
|
+
}
|
743
|
+
if (endNodeData) {
|
744
|
+
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
745
|
+
}
|
622
746
|
}
|
623
|
-
(_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
|
624
747
|
}
|
625
748
|
|
626
749
|
/**
|
@@ -7,6 +7,7 @@ require("core-js/modules/es.symbol.description.js");
|
|
7
7
|
require("core-js/modules/es.number.constructor.js");
|
8
8
|
require("core-js/modules/es.symbol.iterator.js");
|
9
9
|
require("core-js/modules/es.array.slice.js");
|
10
|
+
require("core-js/modules/es.regexp.to-string.js");
|
10
11
|
require("core-js/modules/es.function.name.js");
|
11
12
|
require("core-js/modules/es.regexp.exec.js");
|
12
13
|
require("core-js/modules/es.object.keys.js");
|
@@ -48,9 +49,6 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
|
|
48
49
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
49
50
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
50
51
|
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; } }
|
51
|
-
var _rootNodes = /*#__PURE__*/new WeakMap();
|
52
|
-
var _rootsIndex = /*#__PURE__*/new WeakMap();
|
53
|
-
var _sourceSettings = /*#__PURE__*/new WeakMap();
|
54
52
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
55
53
|
/**
|
56
54
|
* @private
|
@@ -87,40 +85,40 @@ var _sourceSettings = /*#__PURE__*/new WeakMap();
|
|
87
85
|
*
|
88
86
|
*/
|
89
87
|
/* eslint-enable jsdoc/require-description-complete-sentence */
|
88
|
+
var _rootNodes = /*#__PURE__*/new WeakMap();
|
89
|
+
var _rootsIndex = /*#__PURE__*/new WeakMap();
|
90
|
+
var _sourceSettings = /*#__PURE__*/new WeakMap();
|
90
91
|
var HeadersTree = /*#__PURE__*/function () {
|
91
|
-
/**
|
92
|
-
* The collection of nested headers settings structured into trees. The root trees are stored
|
93
|
-
* under the visual column index.
|
94
|
-
*
|
95
|
-
* @private
|
96
|
-
* @type {Map<number, TreeNode>}
|
97
|
-
*/
|
98
|
-
|
99
|
-
/**
|
100
|
-
* A map that translates the visual column indexes that intersect the range
|
101
|
-
* defined by the header colspan width to the root index.
|
102
|
-
*
|
103
|
-
* @private
|
104
|
-
* @type {Map<number, number>}
|
105
|
-
*/
|
106
|
-
|
107
|
-
/**
|
108
|
-
* The instance of the SourceSettings class.
|
109
|
-
*
|
110
|
-
* @private
|
111
|
-
* @type {SourceSettings}
|
112
|
-
*/
|
113
|
-
|
114
92
|
function HeadersTree(sourceSettings) {
|
115
93
|
_classCallCheck(this, HeadersTree);
|
94
|
+
/**
|
95
|
+
* The collection of nested headers settings structured into trees. The root trees are stored
|
96
|
+
* under the visual column index.
|
97
|
+
*
|
98
|
+
* @private
|
99
|
+
* @type {Map<number, TreeNode>}
|
100
|
+
*/
|
116
101
|
_classPrivateFieldInitSpec(this, _rootNodes, {
|
117
102
|
writable: true,
|
118
103
|
value: new Map()
|
119
104
|
});
|
105
|
+
/**
|
106
|
+
* A map that translates the visual column indexes that intersect the range
|
107
|
+
* defined by the header colspan width to the root index.
|
108
|
+
*
|
109
|
+
* @private
|
110
|
+
* @type {Map<number, number>}
|
111
|
+
*/
|
120
112
|
_classPrivateFieldInitSpec(this, _rootsIndex, {
|
121
113
|
writable: true,
|
122
114
|
value: new Map()
|
123
115
|
});
|
116
|
+
/**
|
117
|
+
* The instance of the SourceSettings class.
|
118
|
+
*
|
119
|
+
* @private
|
120
|
+
* @type {SourceSettings}
|
121
|
+
*/
|
124
122
|
_classPrivateFieldInitSpec(this, _sourceSettings, {
|
125
123
|
writable: true,
|
126
124
|
value: null
|
@@ -22,6 +22,7 @@ import "core-js/modules/es.symbol.description.js";
|
|
22
22
|
import "core-js/modules/es.number.constructor.js";
|
23
23
|
import "core-js/modules/es.symbol.iterator.js";
|
24
24
|
import "core-js/modules/es.array.slice.js";
|
25
|
+
import "core-js/modules/es.regexp.to-string.js";
|
25
26
|
import "core-js/modules/es.function.name.js";
|
26
27
|
import "core-js/modules/es.regexp.exec.js";
|
27
28
|
import "core-js/modules/es.object.keys.js";
|
@@ -83,39 +84,36 @@ var _rootNodes = /*#__PURE__*/new WeakMap();
|
|
83
84
|
var _rootsIndex = /*#__PURE__*/new WeakMap();
|
84
85
|
var _sourceSettings = /*#__PURE__*/new WeakMap();
|
85
86
|
var HeadersTree = /*#__PURE__*/function () {
|
86
|
-
/**
|
87
|
-
* The collection of nested headers settings structured into trees. The root trees are stored
|
88
|
-
* under the visual column index.
|
89
|
-
*
|
90
|
-
* @private
|
91
|
-
* @type {Map<number, TreeNode>}
|
92
|
-
*/
|
93
|
-
|
94
|
-
/**
|
95
|
-
* A map that translates the visual column indexes that intersect the range
|
96
|
-
* defined by the header colspan width to the root index.
|
97
|
-
*
|
98
|
-
* @private
|
99
|
-
* @type {Map<number, number>}
|
100
|
-
*/
|
101
|
-
|
102
|
-
/**
|
103
|
-
* The instance of the SourceSettings class.
|
104
|
-
*
|
105
|
-
* @private
|
106
|
-
* @type {SourceSettings}
|
107
|
-
*/
|
108
|
-
|
109
87
|
function HeadersTree(sourceSettings) {
|
110
88
|
_classCallCheck(this, HeadersTree);
|
89
|
+
/**
|
90
|
+
* The collection of nested headers settings structured into trees. The root trees are stored
|
91
|
+
* under the visual column index.
|
92
|
+
*
|
93
|
+
* @private
|
94
|
+
* @type {Map<number, TreeNode>}
|
95
|
+
*/
|
111
96
|
_classPrivateFieldInitSpec(this, _rootNodes, {
|
112
97
|
writable: true,
|
113
98
|
value: new Map()
|
114
99
|
});
|
100
|
+
/**
|
101
|
+
* A map that translates the visual column indexes that intersect the range
|
102
|
+
* defined by the header colspan width to the root index.
|
103
|
+
*
|
104
|
+
* @private
|
105
|
+
* @type {Map<number, number>}
|
106
|
+
*/
|
115
107
|
_classPrivateFieldInitSpec(this, _rootsIndex, {
|
116
108
|
writable: true,
|
117
109
|
value: new Map()
|
118
110
|
});
|
111
|
+
/**
|
112
|
+
* The instance of the SourceSettings class.
|
113
|
+
*
|
114
|
+
* @private
|
115
|
+
* @type {SourceSettings}
|
116
|
+
*/
|
119
117
|
_classPrivateFieldInitSpec(this, _sourceSettings, {
|
120
118
|
writable: true,
|
121
119
|
value: null
|
@@ -45,9 +45,6 @@ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.
|
|
45
45
|
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
46
46
|
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
47
47
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
48
|
-
var _sourceSettings = /*#__PURE__*/new WeakMap();
|
49
|
-
var _headersTree = /*#__PURE__*/new WeakMap();
|
50
|
-
var _stateMatrix = /*#__PURE__*/new WeakMap();
|
51
48
|
/**
|
52
49
|
* The state manager is a source of truth for nested headers configuration.
|
53
50
|
* The state generation process is divided into three stages.
|
@@ -76,6 +73,9 @@ var _stateMatrix = /*#__PURE__*/new WeakMap();
|
|
76
73
|
*
|
77
74
|
* @class StateManager
|
78
75
|
*/
|
76
|
+
var _sourceSettings = /*#__PURE__*/new WeakMap();
|
77
|
+
var _headersTree = /*#__PURE__*/new WeakMap();
|
78
|
+
var _stateMatrix = /*#__PURE__*/new WeakMap();
|
79
79
|
var StateManager = /*#__PURE__*/function () {
|
80
80
|
function StateManager() {
|
81
81
|
_classCallCheck(this, StateManager);
|
@@ -416,6 +416,43 @@ var StateManager = /*#__PURE__*/function () {
|
|
416
416
|
return stepBackColumn;
|
417
417
|
}
|
418
418
|
|
419
|
+
/**
|
420
|
+
* The method is helpful in cases where the column index targets in-between currently
|
421
|
+
* collapsed column. In that case, the method returns the right-most column index
|
422
|
+
* where the nested header ends.
|
423
|
+
*
|
424
|
+
* @param {number} headerLevel Header level (there is support for negative and positive values).
|
425
|
+
* @param {number} columnIndex A visual column index.
|
426
|
+
* @returns {number}
|
427
|
+
*/
|
428
|
+
}, {
|
429
|
+
key: "findRightMostColumnIndex",
|
430
|
+
value: function findRightMostColumnIndex(headerLevel, columnIndex) {
|
431
|
+
var _this$getHeaderSettin3;
|
432
|
+
var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
|
433
|
+
isRoot: true,
|
434
|
+
origColspan: 1
|
435
|
+
},
|
436
|
+
isRoot = _ref4.isRoot,
|
437
|
+
origColspan = _ref4.origColspan;
|
438
|
+
if (isRoot) {
|
439
|
+
return columnIndex + origColspan - 1;
|
440
|
+
}
|
441
|
+
var stepForthColumn = columnIndex + 1;
|
442
|
+
while (stepForthColumn < this.getColumnsCount()) {
|
443
|
+
var _this$getHeaderSettin4;
|
444
|
+
var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
|
445
|
+
isRoot: true
|
446
|
+
},
|
447
|
+
isRootNode = _ref5.isRoot;
|
448
|
+
if (isRootNode) {
|
449
|
+
break;
|
450
|
+
}
|
451
|
+
stepForthColumn += 1;
|
452
|
+
}
|
453
|
+
return stepForthColumn - 1;
|
454
|
+
}
|
455
|
+
|
419
456
|
/**
|
420
457
|
* Gets a total number of headers levels.
|
421
458
|
*
|
@@ -411,6 +411,43 @@ var StateManager = /*#__PURE__*/function () {
|
|
411
411
|
return stepBackColumn;
|
412
412
|
}
|
413
413
|
|
414
|
+
/**
|
415
|
+
* The method is helpful in cases where the column index targets in-between currently
|
416
|
+
* collapsed column. In that case, the method returns the right-most column index
|
417
|
+
* where the nested header ends.
|
418
|
+
*
|
419
|
+
* @param {number} headerLevel Header level (there is support for negative and positive values).
|
420
|
+
* @param {number} columnIndex A visual column index.
|
421
|
+
* @returns {number}
|
422
|
+
*/
|
423
|
+
}, {
|
424
|
+
key: "findRightMostColumnIndex",
|
425
|
+
value: function findRightMostColumnIndex(headerLevel, columnIndex) {
|
426
|
+
var _this$getHeaderSettin3;
|
427
|
+
var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
|
428
|
+
isRoot: true,
|
429
|
+
origColspan: 1
|
430
|
+
},
|
431
|
+
isRoot = _ref4.isRoot,
|
432
|
+
origColspan = _ref4.origColspan;
|
433
|
+
if (isRoot) {
|
434
|
+
return columnIndex + origColspan - 1;
|
435
|
+
}
|
436
|
+
var stepForthColumn = columnIndex + 1;
|
437
|
+
while (stepForthColumn < this.getColumnsCount()) {
|
438
|
+
var _this$getHeaderSettin4;
|
439
|
+
var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
|
440
|
+
isRoot: true
|
441
|
+
},
|
442
|
+
isRootNode = _ref5.isRoot;
|
443
|
+
if (isRootNode) {
|
444
|
+
break;
|
445
|
+
}
|
446
|
+
stepForthColumn += 1;
|
447
|
+
}
|
448
|
+
return stepForthColumn - 1;
|
449
|
+
}
|
450
|
+
|
414
451
|
/**
|
415
452
|
* Gets a total number of headers levels.
|
416
453
|
*
|
@@ -10,6 +10,7 @@ require("core-js/modules/es.string.includes.js");
|
|
10
10
|
var _array = require("../../../helpers/array");
|
11
11
|
var _utils = require("./utils");
|
12
12
|
var _excluded = ["crossHiddenColumns"];
|
13
|
+
/* eslint-disable jsdoc/require-description-complete-sentence */
|
13
14
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
14
15
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
15
16
|
/**
|
@@ -9,6 +9,7 @@ require("core-js/modules/es.string.iterator.js");
|
|
9
9
|
require("core-js/modules/web.dom-collections.iterator.js");
|
10
10
|
require("core-js/modules/es.array.from.js");
|
11
11
|
require("core-js/modules/es.array.slice.js");
|
12
|
+
require("core-js/modules/es.regexp.to-string.js");
|
12
13
|
require("core-js/modules/es.function.name.js");
|
13
14
|
require("core-js/modules/es.regexp.exec.js");
|
14
15
|
exports.__esModule = true;
|
@@ -24,7 +25,7 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
24
25
|
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); }
|
25
26
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
26
27
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
27
|
-
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; }
|
28
|
+
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; } /* eslint-disable jsdoc/require-description-complete-sentence */
|
28
29
|
/**
|
29
30
|
* A function that normalizes user-defined settings into one predictable
|
30
31
|
* structure. Currently, the developer can declare nested headers by passing
|
@@ -9,6 +9,7 @@ import "core-js/modules/es.string.iterator.js";
|
|
9
9
|
import "core-js/modules/web.dom-collections.iterator.js";
|
10
10
|
import "core-js/modules/es.array.from.js";
|
11
11
|
import "core-js/modules/es.array.slice.js";
|
12
|
+
import "core-js/modules/es.regexp.to-string.js";
|
12
13
|
import "core-js/modules/es.function.name.js";
|
13
14
|
import "core-js/modules/es.regexp.exec.js";
|
14
15
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|