handsontable 14.2.0 → 14.3.0-next-3fa6b18-20240410
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/calculator/renderAllColumns.js +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
- package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +13 -18
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +13 -18
- package/3rdparty/walkontable/src/calculator/viewportRows.js +11 -16
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +11 -16
- package/3rdparty/walkontable/src/cell/coords.js +13 -18
- package/3rdparty/walkontable/src/cell/coords.mjs +13 -18
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
- package/3rdparty/walkontable/src/cell/range.js +42 -30
- package/3rdparty/walkontable/src/cell/range.mjs +42 -30
- package/3rdparty/walkontable/src/core/_base.js +2 -2
- package/3rdparty/walkontable/src/core/_base.mjs +2 -2
- package/3rdparty/walkontable/src/core/clone.js +1 -1
- package/3rdparty/walkontable/src/core/clone.mjs +1 -1
- package/3rdparty/walkontable/src/event.js +72 -104
- package/3rdparty/walkontable/src/event.mjs +72 -104
- package/3rdparty/walkontable/src/filter/column.js +1 -1
- package/3rdparty/walkontable/src/filter/column.mjs +1 -1
- package/3rdparty/walkontable/src/filter/row.js +1 -1
- package/3rdparty/walkontable/src/filter/row.mjs +1 -1
- package/3rdparty/walkontable/src/index.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
- package/3rdparty/walkontable/src/overlay/top.js +12 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +13 -2
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +1 -1
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
- package/3rdparty/walkontable/src/overlays.js +47 -5
- package/3rdparty/walkontable/src/overlays.mjs +47 -5
- package/3rdparty/walkontable/src/renderer/_base.js +1 -1
- package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/cells.js +1 -1
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/rows.js +1 -1
- package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/table.js +1 -1
- package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
- package/3rdparty/walkontable/src/scroll.js +16 -18
- package/3rdparty/walkontable/src/scroll.mjs +16 -18
- package/3rdparty/walkontable/src/selection/manager.js +48 -69
- package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
- package/3rdparty/walkontable/src/selection/scanner.js +33 -42
- package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
- package/3rdparty/walkontable/src/settings.js +1 -1
- package/3rdparty/walkontable/src/settings.mjs +1 -1
- package/3rdparty/walkontable/src/table.js +1 -1
- package/3rdparty/walkontable/src/table.mjs +1 -1
- package/3rdparty/walkontable/src/utils/column.js +1 -1
- package/3rdparty/walkontable/src/utils/column.mjs +1 -1
- package/3rdparty/walkontable/src/utils/columnStretching.js +28 -45
- package/3rdparty/walkontable/src/utils/columnStretching.mjs +28 -45
- package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +2 -2
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +1 -1
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
- package/3rdparty/walkontable/src/utils/row.js +1 -1
- package/3rdparty/walkontable/src/utils/row.mjs +1 -1
- package/CHANGELOG.md +20 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core/viewportScroll/index.js +4 -1
- package/core/viewportScroll/index.mjs +4 -1
- package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
- package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
- package/core.d.ts +4 -3
- package/core.js +98 -43
- package/core.mjs +98 -43
- package/dataMap/dataMap.js +1 -1
- package/dataMap/dataMap.mjs +1 -1
- package/dataMap/dataSource.js +2 -2
- package/dataMap/dataSource.mjs +2 -2
- package/dataMap/metaManager/lazyFactoryMap.js +3 -5
- package/dataMap/metaManager/lazyFactoryMap.mjs +2 -4
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -2
- package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +272 -272
- package/dataMap/metaManager/metaSchema.mjs +272 -272
- package/dataMap/metaManager/mods/dynamicCellMeta.js +1 -1
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -1
- package/dataMap/replaceData.js +1 -1
- package/dataMap/replaceData.mjs +1 -1
- package/dist/handsontable.css +4 -4
- package/dist/handsontable.full.css +4 -4
- package/dist/handsontable.full.js +9814 -10020
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +292 -292
- package/dist/handsontable.js +7484 -7056
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +25 -25
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.min.js +1 -1
- package/dist/languages/cs-CZ.min.js +1 -1
- package/dist/languages/de-CH.min.js +1 -1
- package/dist/languages/de-DE.min.js +1 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.min.js +1 -1
- package/dist/languages/fr-FR.min.js +1 -1
- package/dist/languages/hr-HR.min.js +1 -1
- package/dist/languages/it-IT.min.js +1 -1
- package/dist/languages/ja-JP.min.js +1 -1
- package/dist/languages/ko-KR.min.js +1 -1
- package/dist/languages/lv-LV.min.js +1 -1
- package/dist/languages/nb-NO.min.js +1 -1
- package/dist/languages/nl-NL.min.js +1 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.min.js +1 -1
- package/dist/languages/ru-RU.min.js +1 -1
- package/dist/languages/sr-SP.min.js +1 -1
- package/dist/languages/zh-CN.min.js +1 -1
- package/dist/languages/zh-TW.min.js +1 -1
- package/editorManager.js +26 -24
- package/editorManager.mjs +26 -24
- package/editors/autocompleteEditor/autocompleteEditor.js +7 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +7 -11
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +49 -11
- package/editors/dateEditor/dateEditor.mjs +49 -11
- package/editors/selectEditor/selectEditor.js +20 -19
- package/editors/selectEditor/selectEditor.mjs +20 -19
- package/editors/textEditor/textEditor.js +1 -1
- package/editors/textEditor/textEditor.mjs +1 -1
- package/eventManager.js +2 -2
- package/eventManager.mjs +2 -2
- package/focusManager.js +64 -82
- package/focusManager.mjs +64 -82
- package/helpers/dom/element.js +23 -1
- package/helpers/dom/element.mjs +21 -1
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/object.js +2 -2
- package/helpers/object.mjs +2 -2
- package/i18n/languages/ar-AR.d.ts +5 -0
- package/i18n/languages/ar-AR.js +1 -1
- package/i18n/languages/cs-CZ.d.ts +5 -0
- package/i18n/languages/cs-CZ.js +1 -1
- package/i18n/languages/de-CH.js +1 -1
- package/i18n/languages/de-DE.js +1 -1
- package/i18n/languages/en-US.js +1 -1
- package/i18n/languages/es-MX.js +1 -1
- package/i18n/languages/fr-FR.js +1 -1
- package/i18n/languages/hr-HR.d.ts +5 -0
- package/i18n/languages/hr-HR.js +1 -1
- package/i18n/languages/it-IT.js +1 -1
- package/i18n/languages/ja-JP.js +1 -1
- package/i18n/languages/ko-KR.js +1 -1
- package/i18n/languages/lv-LV.js +1 -1
- package/i18n/languages/nb-NO.js +1 -1
- package/i18n/languages/nl-NL.js +1 -1
- package/i18n/languages/pl-PL.js +1 -1
- package/i18n/languages/pt-BR.js +1 -1
- package/i18n/languages/ru-RU.js +1 -1
- package/i18n/languages/sr-SP.d.ts +5 -0
- package/i18n/languages/sr-SP.js +1 -1
- package/i18n/languages/zh-CN.js +1 -1
- package/i18n/languages/zh-TW.js +1 -1
- package/i18n/registry.js +1 -1
- package/index.d.ts +10 -0
- package/index.js +1 -1
- package/package.json +14 -10
- package/pluginHooks.d.ts +4 -3
- package/pluginHooks.js +143 -82
- package/pluginHooks.mjs +143 -82
- package/plugins/autoColumnSize/autoColumnSize.js +50 -66
- package/plugins/autoColumnSize/autoColumnSize.mjs +50 -66
- package/plugins/autoRowSize/autoRowSize.js +29 -35
- package/plugins/autoRowSize/autoRowSize.mjs +29 -35
- package/plugins/autofill/autofill.js +31 -39
- package/plugins/autofill/autofill.mjs +31 -39
- package/plugins/base/base.js +13 -18
- package/plugins/base/base.mjs +13 -18
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -6
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +6 -6
- package/plugins/collapsibleColumns/collapsibleColumns.js +60 -51
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +60 -51
- package/plugins/columnSorting/columnSorting.js +50 -46
- package/plugins/columnSorting/columnSorting.mjs +50 -46
- package/plugins/columnSorting/columnStatesManager.js +1 -1
- package/plugins/columnSorting/columnStatesManager.mjs +1 -1
- package/plugins/columnSummary/columnSummary.js +36 -40
- package/plugins/columnSummary/columnSummary.mjs +36 -40
- package/plugins/columnSummary/endpoints.js +1 -1
- package/plugins/columnSummary/endpoints.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -1
- package/plugins/comments/commentEditor.mjs +1 -1
- package/plugins/comments/comments.js +117 -159
- package/plugins/comments/comments.mjs +117 -159
- package/plugins/comments/contextMenuItem/addEditComment.js +1 -1
- package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -1
- package/plugins/comments/contextMenuItem/removeComment.js +1 -1
- package/plugins/comments/displaySwitch.js +1 -1
- package/plugins/comments/displaySwitch.mjs +1 -1
- package/plugins/contextMenu/commandExecutor.js +1 -1
- package/plugins/contextMenu/commandExecutor.mjs +1 -1
- package/plugins/contextMenu/contextMenu.js +24 -30
- package/plugins/contextMenu/contextMenu.mjs +24 -30
- package/plugins/contextMenu/itemsFactory.js +2 -2
- package/plugins/contextMenu/itemsFactory.mjs +2 -2
- package/plugins/contextMenu/menu/cursor.js +1 -1
- package/plugins/contextMenu/menu/cursor.mjs +1 -1
- package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
- package/plugins/contextMenu/menu/menu.js +14 -22
- package/plugins/contextMenu/menu/menu.mjs +14 -22
- package/plugins/contextMenu/menu/positioner.js +41 -58
- package/plugins/contextMenu/menu/positioner.mjs +41 -58
- package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
- package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -1
- package/plugins/contextMenu/predefinedItems/columnRight.js +1 -1
- package/plugins/contextMenu/predefinedItems/index.js +1 -1
- package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
- package/plugins/contextMenu/predefinedItems/redo.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
- package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -1
- package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -1
- package/plugins/contextMenu/predefinedItems/undo.js +1 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
- package/plugins/copyPaste/copyPaste.js +120 -161
- package/plugins/copyPaste/copyPaste.mjs +120 -161
- package/plugins/copyPaste/copyableRanges.js +43 -66
- package/plugins/copyPaste/copyableRanges.mjs +43 -66
- package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
- package/plugins/customBorders/contextMenuItem/left.js +1 -1
- package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
- package/plugins/customBorders/contextMenuItem/right.js +1 -1
- package/plugins/customBorders/contextMenuItem/top.js +1 -1
- package/plugins/customBorders/customBorders.js +14 -16
- package/plugins/customBorders/customBorders.mjs +13 -15
- package/plugins/dragToScroll/dragToScroll.js +7 -7
- package/plugins/dragToScroll/dragToScroll.mjs +7 -7
- package/plugins/dropdownMenu/dropdownMenu.js +84 -110
- package/plugins/dropdownMenu/dropdownMenu.mjs +84 -110
- package/plugins/exportFile/dataProvider.js +2 -2
- package/plugins/exportFile/dataProvider.mjs +2 -2
- package/plugins/exportFile/exportFile.js +2 -2
- package/plugins/exportFile/exportFile.mjs +1 -1
- package/plugins/exportFile/types/_base.js +1 -1
- package/plugins/exportFile/types/_base.mjs +1 -1
- package/plugins/filters/component/_base.js +1 -1
- package/plugins/filters/component/_base.mjs +1 -1
- package/plugins/filters/component/actionBar.js +11 -11
- package/plugins/filters/component/actionBar.mjs +9 -9
- package/plugins/filters/component/condition.js +15 -17
- package/plugins/filters/component/condition.mjs +14 -16
- package/plugins/filters/component/operators.js +7 -7
- package/plugins/filters/component/operators.mjs +7 -7
- package/plugins/filters/component/value.js +26 -30
- package/plugins/filters/component/value.mjs +25 -29
- package/plugins/filters/condition/beginsWith.js +1 -1
- package/plugins/filters/condition/between.js +1 -1
- package/plugins/filters/condition/contains.js +1 -1
- package/plugins/filters/condition/date/after.js +1 -1
- package/plugins/filters/condition/date/before.js +1 -1
- package/plugins/filters/condition/date/today.js +1 -1
- package/plugins/filters/condition/date/tomorrow.js +1 -1
- package/plugins/filters/condition/date/yesterday.js +1 -1
- package/plugins/filters/condition/empty.js +1 -1
- package/plugins/filters/condition/endsWith.js +1 -1
- package/plugins/filters/condition/equal.js +1 -1
- package/plugins/filters/condition/greaterThan.js +1 -1
- package/plugins/filters/condition/greaterThanOrEqual.js +1 -1
- package/plugins/filters/condition/lessThan.js +1 -1
- package/plugins/filters/condition/lessThanOrEqual.js +1 -1
- package/plugins/filters/condition/none.js +1 -1
- package/plugins/filters/condition/notBetween.js +1 -1
- package/plugins/filters/condition/notContains.js +1 -1
- package/plugins/filters/condition/notEmpty.js +1 -1
- package/plugins/filters/condition/notEqual.js +1 -1
- package/plugins/filters/conditionCollection.js +1 -1
- package/plugins/filters/conditionCollection.mjs +1 -1
- package/plugins/filters/conditionUpdateObserver.js +23 -25
- package/plugins/filters/conditionUpdateObserver.mjs +23 -25
- package/plugins/filters/dataFilter.js +2 -2
- package/plugins/filters/dataFilter.mjs +2 -2
- package/plugins/filters/filters.js +84 -98
- package/plugins/filters/filters.mjs +83 -97
- package/plugins/filters/logicalOperations/conjunction.js +1 -1
- package/plugins/filters/logicalOperations/disjunction.js +1 -1
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -1
- package/plugins/filters/ui/_base.js +2 -2
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/ui/input.js +13 -19
- package/plugins/filters/ui/input.mjs +13 -19
- package/plugins/filters/ui/link.js +8 -13
- package/plugins/filters/ui/link.mjs +8 -13
- package/plugins/filters/ui/multipleSelect.js +86 -113
- package/plugins/filters/ui/multipleSelect.mjs +85 -112
- package/plugins/filters/ui/radioInput.js +12 -20
- package/plugins/filters/ui/radioInput.mjs +12 -20
- package/plugins/filters/ui/select.js +51 -73
- package/plugins/filters/ui/select.mjs +49 -71
- package/plugins/formulas/formulas.js +270 -328
- package/plugins/formulas/formulas.mjs +271 -329
- package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
- package/plugins/formulas/indexSyncer/index.js +25 -48
- package/plugins/formulas/indexSyncer/index.mjs +25 -48
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
- package/plugins/hiddenColumns/hiddenColumns.js +68 -87
- package/plugins/hiddenColumns/hiddenColumns.mjs +68 -87
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
- package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
- package/plugins/hiddenRows/hiddenRows.js +67 -86
- package/plugins/hiddenRows/hiddenRows.mjs +67 -86
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
- package/plugins/manualColumnMove/manualColumnMove.js +133 -177
- package/plugins/manualColumnMove/manualColumnMove.mjs +133 -177
- package/plugins/manualColumnMove/ui/_base.js +1 -1
- package/plugins/manualColumnMove/ui/_base.mjs +1 -1
- package/plugins/manualColumnResize/manualColumnResize.js +169 -230
- package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
- package/plugins/manualRowMove/manualRowMove.js +106 -135
- package/plugins/manualRowMove/manualRowMove.mjs +106 -135
- package/plugins/manualRowMove/ui/_base.js +1 -1
- package/plugins/manualRowMove/ui/_base.mjs +1 -1
- package/plugins/manualRowResize/manualRowResize.js +150 -209
- package/plugins/manualRowResize/manualRowResize.mjs +150 -209
- package/plugins/mergeCells/calculations/autofill.js +1 -1
- package/plugins/mergeCells/calculations/autofill.mjs +1 -1
- package/plugins/mergeCells/calculations/selection.js +3 -72
- package/plugins/mergeCells/calculations/selection.mjs +3 -72
- package/plugins/mergeCells/cellCoords.js +1 -1
- package/plugins/mergeCells/cellCoords.mjs +1 -1
- package/plugins/mergeCells/cellsCollection.js +118 -2
- package/plugins/mergeCells/cellsCollection.mjs +118 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +12 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
- package/plugins/mergeCells/focusOrder.js +305 -0
- package/plugins/mergeCells/focusOrder.mjs +300 -0
- package/plugins/mergeCells/mergeCells.js +500 -398
- package/plugins/mergeCells/mergeCells.mjs +500 -398
- package/plugins/multiColumnSorting/multiColumnSorting.js +9 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +9 -3
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -2
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +2 -2
- package/plugins/nestedHeaders/nestedHeaders.js +206 -254
- package/plugins/nestedHeaders/nestedHeaders.mjs +207 -255
- package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
- package/plugins/nestedHeaders/stateManager/index.js +30 -41
- package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
- package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +2 -2
- package/plugins/nestedRows/data/dataManager.mjs +2 -2
- package/plugins/nestedRows/nestedRows.js +154 -185
- package/plugins/nestedRows/nestedRows.mjs +155 -186
- package/plugins/nestedRows/ui/_base.js +1 -1
- package/plugins/nestedRows/ui/_base.mjs +1 -1
- package/plugins/nestedRows/ui/contextMenu.js +13 -17
- package/plugins/nestedRows/ui/contextMenu.mjs +11 -15
- package/plugins/nestedRows/utils/rowMoveController.js +6 -6
- package/plugins/nestedRows/utils/rowMoveController.mjs +6 -6
- package/plugins/persistentState/persistentState.js +1 -1
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/persistentState/storage.js +3 -3
- package/plugins/persistentState/storage.mjs +3 -3
- package/plugins/search/search.js +8 -8
- package/plugins/search/search.mjs +8 -8
- package/plugins/touchScroll/touchScroll.js +16 -20
- package/plugins/touchScroll/touchScroll.mjs +17 -21
- package/plugins/trimRows/trimRows.js +7 -7
- package/plugins/trimRows/trimRows.mjs +7 -7
- package/plugins/undoRedo/index.js +1 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
- package/selection/highlight/highlight.js +16 -18
- package/selection/highlight/highlight.mjs +15 -17
- package/selection/highlight/visualSelection.js +3 -1
- package/selection/highlight/visualSelection.mjs +3 -1
- package/selection/range.js +3 -5
- package/selection/range.mjs +2 -4
- package/selection/selection.js +227 -69
- package/selection/selection.mjs +225 -67
- package/selection/transformation.js +149 -118
- package/selection/transformation.mjs +149 -118
- package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
- package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
- package/shortcutContexts/commands/editor/open.js +18 -3
- package/shortcutContexts/commands/editor/open.mjs +18 -3
- package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
- package/shortcutContexts/grid.js +9 -3
- package/shortcutContexts/grid.mjs +9 -3
- package/shortcuts/context.js +3 -2
- package/shortcuts/context.mjs +3 -2
- package/shortcuts/manager.js +2 -2
- package/shortcuts/manager.mjs +2 -2
- package/tableView.js +53 -79
- package/tableView.mjs +53 -79
- package/translations/changesObservable/observable.js +21 -38
- package/translations/changesObservable/observable.mjs +21 -38
- package/translations/changesObservable/observer.js +7 -12
- package/translations/changesObservable/observer.mjs +6 -11
- package/translations/indexMapper.js +1 -1
- package/translations/indexMapper.mjs +1 -1
- package/translations/mapCollections/aggregatedCollection.js +2 -2
- package/translations/mapCollections/aggregatedCollection.mjs +2 -2
- package/translations/mapCollections/mapCollection.js +1 -1
- package/translations/mapCollections/mapCollection.mjs +1 -1
- package/translations/maps/indexMap.js +2 -2
- package/translations/maps/indexMap.mjs +2 -2
- package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
- package/utils/dataStructures/linkedList.js +7 -2
- package/utils/dataStructures/linkedList.mjs +7 -2
- package/utils/dataStructures/tree.js +2 -2
- package/utils/dataStructures/tree.mjs +2 -2
- package/utils/ghostTable.js +1 -1
- package/utils/ghostTable.mjs +1 -1
- package/utils/interval.js +27 -45
- package/utils/interval.mjs +27 -45
- package/utils/samplesGenerator.js +1 -1
- package/utils/samplesGenerator.mjs +1 -1
package/selection/selection.mjs
CHANGED
@@ -2,13 +2,11 @@ import "core-js/modules/es.error.cause.js";
|
|
2
2
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
3
3
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
4
4
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
6
6
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
7
|
-
function _classPrivateFieldGet(
|
8
|
-
function
|
9
|
-
function
|
10
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
11
|
-
function _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; } }
|
7
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
8
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
9
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
12
10
|
import Highlight, { AREA_TYPE, HEADER_TYPE, FOCUS_TYPE } from "./highlight/highlight.mjs";
|
13
11
|
import SelectionRange from "./range.mjs";
|
14
12
|
import { createObjectPropListener, mixin } from "./../helpers/object.mjs";
|
@@ -24,6 +22,9 @@ import { A11Y_SELECTED } from "../helpers/a11y.mjs";
|
|
24
22
|
* @class Selection
|
25
23
|
* @util
|
26
24
|
*/
|
25
|
+
var _transformation = /*#__PURE__*/new WeakMap();
|
26
|
+
var _focusTransformation = /*#__PURE__*/new WeakMap();
|
27
|
+
var _isFocusSelectionChanged = /*#__PURE__*/new WeakMap();
|
27
28
|
var _disableHeadersHighlight = /*#__PURE__*/new WeakMap();
|
28
29
|
var _selectionSource = /*#__PURE__*/new WeakMap();
|
29
30
|
var _expectedLayersCount = /*#__PURE__*/new WeakMap();
|
@@ -63,11 +64,17 @@ class Selection {
|
|
63
64
|
*/
|
64
65
|
_defineProperty(this, "highlight", void 0);
|
65
66
|
/**
|
66
|
-
* The module for modifying coordinates.
|
67
|
+
* The module for modifying coordinates of the start and end selection.
|
67
68
|
*
|
68
69
|
* @type {Transformation}
|
69
70
|
*/
|
70
|
-
|
71
|
+
_classPrivateFieldInitSpec(this, _transformation, void 0);
|
72
|
+
/**
|
73
|
+
* The module for modifying coordinates of the focus selection.
|
74
|
+
*
|
75
|
+
* @type {Transformation}
|
76
|
+
*/
|
77
|
+
_classPrivateFieldInitSpec(this, _focusTransformation, void 0);
|
71
78
|
/**
|
72
79
|
* The collection of the selection layer levels where the whole row was selected using the row header or
|
73
80
|
* the corner header.
|
@@ -82,34 +89,31 @@ class Selection {
|
|
82
89
|
* @type {Set<number>}
|
83
90
|
*/
|
84
91
|
_defineProperty(this, "selectedByColumnHeader", new Set());
|
92
|
+
/**
|
93
|
+
* The flag which determines if the focus selection was changed.
|
94
|
+
*
|
95
|
+
* @type {boolean}
|
96
|
+
*/
|
97
|
+
_classPrivateFieldInitSpec(this, _isFocusSelectionChanged, false);
|
85
98
|
/**
|
86
99
|
* When sets disable highlighting the headers even when the logical coordinates points on them.
|
87
100
|
*
|
88
101
|
* @type {boolean}
|
89
102
|
*/
|
90
|
-
_classPrivateFieldInitSpec(this, _disableHeadersHighlight,
|
91
|
-
writable: true,
|
92
|
-
value: false
|
93
|
-
});
|
103
|
+
_classPrivateFieldInitSpec(this, _disableHeadersHighlight, false);
|
94
104
|
/**
|
95
105
|
* The source of the selection. It can be one of the following values: `mouse`, `unknown` or any other string.
|
96
106
|
*
|
97
107
|
* @type {'mouse' | 'unknown' | string}
|
98
108
|
*/
|
99
|
-
_classPrivateFieldInitSpec(this, _selectionSource,
|
100
|
-
writable: true,
|
101
|
-
value: 'unknown'
|
102
|
-
});
|
109
|
+
_classPrivateFieldInitSpec(this, _selectionSource, 'unknown');
|
103
110
|
/**
|
104
111
|
* The number of expected layers. It is used mostly to track when the last selection layer of non-contiguous
|
105
112
|
* selection is applied, thus the viewport scroll is triggered.
|
106
113
|
*
|
107
114
|
* @param {number}
|
108
115
|
*/
|
109
|
-
_classPrivateFieldInitSpec(this, _expectedLayersCount,
|
110
|
-
writable: true,
|
111
|
-
value: -1
|
112
|
-
});
|
116
|
+
_classPrivateFieldInitSpec(this, _expectedLayersCount, -1);
|
113
117
|
this.settings = settings;
|
114
118
|
this.tableProps = tableProps;
|
115
119
|
this.highlight = new Highlight({
|
@@ -132,71 +136,112 @@ class Selection {
|
|
132
136
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
133
137
|
createCellRange: (highlight, from, to) => this.tableProps.createCellRange(highlight, from, to)
|
134
138
|
});
|
135
|
-
this
|
139
|
+
_classPrivateFieldSet(_transformation, this, new Transformation(this.selectedRange, {
|
136
140
|
rowIndexMapper: this.tableProps.rowIndexMapper,
|
137
141
|
columnIndexMapper: this.tableProps.columnIndexMapper,
|
138
142
|
countRenderableRows: () => this.tableProps.countRenderableRows(),
|
139
143
|
countRenderableColumns: () => this.tableProps.countRenderableColumns(),
|
140
|
-
countRowHeaders: () => this.tableProps.countRowHeaders(),
|
141
|
-
countColHeaders: () => this.tableProps.countColHeaders(),
|
142
144
|
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
143
145
|
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
146
|
+
findFirstNonHiddenRenderableRow: function () {
|
147
|
+
return _this.tableProps.findFirstNonHiddenRenderableRow(...arguments);
|
148
|
+
},
|
149
|
+
findFirstNonHiddenRenderableColumn: function () {
|
150
|
+
return _this.tableProps.findFirstNonHiddenRenderableColumn(...arguments);
|
151
|
+
},
|
144
152
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
145
|
-
navigableHeaders: () => settings.navigableHeaders,
|
146
153
|
fixedRowsBottom: () => settings.fixedRowsBottom,
|
147
154
|
minSpareRows: () => settings.minSpareRows,
|
148
155
|
minSpareCols: () => settings.minSpareCols,
|
149
156
|
autoWrapRow: () => settings.autoWrapRow,
|
150
157
|
autoWrapCol: () => settings.autoWrapCol
|
151
|
-
});
|
152
|
-
|
158
|
+
}));
|
159
|
+
_classPrivateFieldSet(_focusTransformation, this, new Transformation(this.selectedRange, {
|
160
|
+
rowIndexMapper: this.tableProps.rowIndexMapper,
|
161
|
+
columnIndexMapper: this.tableProps.columnIndexMapper,
|
162
|
+
countRenderableRows: () => {
|
163
|
+
const range = this.selectedRange.current();
|
164
|
+
return this.tableProps.countRenderableRowsInRange(0, range.getOuterBottomEndCorner().row);
|
165
|
+
},
|
166
|
+
countRenderableColumns: () => {
|
167
|
+
const range = this.selectedRange.current();
|
168
|
+
return this.tableProps.countRenderableColumnsInRange(0, range.getOuterBottomEndCorner().col);
|
169
|
+
},
|
170
|
+
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
171
|
+
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
172
|
+
findFirstNonHiddenRenderableRow: function () {
|
173
|
+
return _this.tableProps.findFirstNonHiddenRenderableRow(...arguments);
|
174
|
+
},
|
175
|
+
findFirstNonHiddenRenderableColumn: function () {
|
176
|
+
return _this.tableProps.findFirstNonHiddenRenderableColumn(...arguments);
|
177
|
+
},
|
178
|
+
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
179
|
+
fixedRowsBottom: () => 0,
|
180
|
+
minSpareRows: () => 0,
|
181
|
+
minSpareCols: () => 0,
|
182
|
+
autoWrapRow: () => true,
|
183
|
+
autoWrapCol: () => true
|
184
|
+
}));
|
185
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeTransformStart', function () {
|
153
186
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
154
187
|
args[_key] = arguments[_key];
|
155
188
|
}
|
156
189
|
return _this.runLocalHooks('beforeModifyTransformStart', ...args);
|
157
190
|
});
|
158
|
-
this.
|
191
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('afterTransformStart', function () {
|
159
192
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
160
193
|
args[_key2] = arguments[_key2];
|
161
194
|
}
|
162
195
|
return _this.runLocalHooks('afterModifyTransformStart', ...args);
|
163
196
|
});
|
164
|
-
this.
|
197
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeTransformEnd', function () {
|
165
198
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
166
199
|
args[_key3] = arguments[_key3];
|
167
200
|
}
|
168
201
|
return _this.runLocalHooks('beforeModifyTransformEnd', ...args);
|
169
202
|
});
|
170
|
-
this.
|
203
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('afterTransformEnd', function () {
|
171
204
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
172
205
|
args[_key4] = arguments[_key4];
|
173
206
|
}
|
174
207
|
return _this.runLocalHooks('afterModifyTransformEnd', ...args);
|
175
208
|
});
|
176
|
-
this.
|
209
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('insertRowRequire', function () {
|
177
210
|
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
178
211
|
args[_key5] = arguments[_key5];
|
179
212
|
}
|
180
213
|
return _this.runLocalHooks('insertRowRequire', ...args);
|
181
214
|
});
|
182
|
-
this.
|
215
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('insertColRequire', function () {
|
183
216
|
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
184
217
|
args[_key6] = arguments[_key6];
|
185
218
|
}
|
186
219
|
return _this.runLocalHooks('insertColRequire', ...args);
|
187
220
|
});
|
188
|
-
this.
|
221
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeRowWrap', function () {
|
189
222
|
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
190
223
|
args[_key7] = arguments[_key7];
|
191
224
|
}
|
192
225
|
return _this.runLocalHooks('beforeRowWrap', ...args);
|
193
226
|
});
|
194
|
-
this.
|
227
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeColumnWrap', function () {
|
195
228
|
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
196
229
|
args[_key8] = arguments[_key8];
|
197
230
|
}
|
198
231
|
return _this.runLocalHooks('beforeColumnWrap', ...args);
|
199
232
|
});
|
233
|
+
_classPrivateFieldGet(_focusTransformation, this).addLocalHook('beforeTransformStart', function () {
|
234
|
+
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
235
|
+
args[_key9] = arguments[_key9];
|
236
|
+
}
|
237
|
+
return _this.runLocalHooks('beforeModifyTransformFocus', ...args);
|
238
|
+
});
|
239
|
+
_classPrivateFieldGet(_focusTransformation, this).addLocalHook('afterTransformStart', function () {
|
240
|
+
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
241
|
+
args[_key10] = arguments[_key10];
|
242
|
+
}
|
243
|
+
return _this.runLocalHooks('afterModifyTransformFocus', ...args);
|
244
|
+
});
|
200
245
|
}
|
201
246
|
|
202
247
|
/**
|
@@ -214,14 +259,14 @@ class Selection {
|
|
214
259
|
* @param {'mouse' | 'unknown' | string} sourceName The source name.
|
215
260
|
*/
|
216
261
|
markSource(sourceName) {
|
217
|
-
_classPrivateFieldSet(
|
262
|
+
_classPrivateFieldSet(_selectionSource, this, sourceName);
|
218
263
|
}
|
219
264
|
|
220
265
|
/**
|
221
266
|
* Marks end of the selection source. It restores the selection source to default value which is 'unknown'.
|
222
267
|
*/
|
223
268
|
markEndSource() {
|
224
|
-
_classPrivateFieldSet(
|
269
|
+
_classPrivateFieldSet(_selectionSource, this, 'unknown');
|
225
270
|
}
|
226
271
|
|
227
272
|
/**
|
@@ -230,7 +275,7 @@ class Selection {
|
|
230
275
|
* @returns {'mouse' | 'unknown' | string}
|
231
276
|
*/
|
232
277
|
getSelectionSource() {
|
233
|
-
return _classPrivateFieldGet(
|
278
|
+
return _classPrivateFieldGet(_selectionSource, this);
|
234
279
|
}
|
235
280
|
|
236
281
|
/**
|
@@ -240,7 +285,7 @@ class Selection {
|
|
240
285
|
* @param {number} layersCount The number of expected layers.
|
241
286
|
*/
|
242
287
|
setExpectedLayers(layersCount) {
|
243
|
-
_classPrivateFieldSet(
|
288
|
+
_classPrivateFieldSet(_expectedLayersCount, this, layersCount);
|
244
289
|
}
|
245
290
|
|
246
291
|
/**
|
@@ -256,7 +301,7 @@ class Selection {
|
|
256
301
|
finish() {
|
257
302
|
this.runLocalHooks('afterSelectionFinished', Array.from(this.selectedRange));
|
258
303
|
this.inProgress = false;
|
259
|
-
_classPrivateFieldSet(
|
304
|
+
_classPrivateFieldSet(_expectedLayersCount, this, -1);
|
260
305
|
}
|
261
306
|
|
262
307
|
/**
|
@@ -287,6 +332,7 @@ class Selection {
|
|
287
332
|
// We are creating copy. We would like to modify just the start of the selection by below hook. Then original coords
|
288
333
|
// should be handled by next methods.
|
289
334
|
const coordsClone = coords.clone();
|
335
|
+
_classPrivateFieldSet(_isFocusSelectionChanged, this, false);
|
290
336
|
this.runLocalHooks(`beforeSetRangeStart${fragment ? 'Only' : ''}`, coordsClone);
|
291
337
|
if (!isMultipleMode || isMultipleMode && !isMultipleSelection && isUndefined(multipleSelection)) {
|
292
338
|
this.selectedRange.clear();
|
@@ -344,7 +390,20 @@ class Selection {
|
|
344
390
|
cellRange.setFrom(cellRange.highlight);
|
345
391
|
cellRange.setTo(cellRange.highlight);
|
346
392
|
} else {
|
393
|
+
const horizontalDir = cellRange.getHorizontalDirection();
|
394
|
+
const verticalDir = cellRange.getVerticalDirection();
|
395
|
+
const isMultiple = this.isMultiple();
|
347
396
|
cellRange.setTo(coordsClone);
|
397
|
+
if (isMultiple && (horizontalDir !== cellRange.getHorizontalDirection() || cellRange.getWidth() === 1 && !cellRange.includes(cellRange.highlight))) {
|
398
|
+
cellRange.from.assign({
|
399
|
+
col: cellRange.highlight.col
|
400
|
+
});
|
401
|
+
}
|
402
|
+
if (isMultiple && (verticalDir !== cellRange.getVerticalDirection() || cellRange.getHeight() === 1 && !cellRange.includes(cellRange.highlight))) {
|
403
|
+
cellRange.from.assign({
|
404
|
+
row: cellRange.highlight.row
|
405
|
+
});
|
406
|
+
}
|
348
407
|
}
|
349
408
|
|
350
409
|
// Prevent creating "area" selection that overlaps headers.
|
@@ -354,11 +413,7 @@ class Selection {
|
|
354
413
|
}
|
355
414
|
}
|
356
415
|
this.runLocalHooks('beforeHighlightSet');
|
357
|
-
|
358
|
-
focusHighlight.clear();
|
359
|
-
if (this.highlight.isEnabledFor(FOCUS_TYPE, cellRange.highlight)) {
|
360
|
-
focusHighlight.add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
|
361
|
-
}
|
416
|
+
this.setRangeFocus(this.selectedRange.current().highlight);
|
362
417
|
const layerLevel = this.getLayerLevel();
|
363
418
|
|
364
419
|
// If the next layer level is lower than previous then clear all area and header highlights. This is the
|
@@ -429,8 +484,8 @@ class Selection {
|
|
429
484
|
columnHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
430
485
|
}
|
431
486
|
}
|
432
|
-
const highlightRowHeaders = !_classPrivateFieldGet(
|
433
|
-
const highlightColumnHeaders = !_classPrivateFieldGet(
|
487
|
+
const highlightRowHeaders = !_classPrivateFieldGet(_disableHeadersHighlight, this) && this.isEntireRowSelected() && (countCols > 0 && countCols === cellRange.getWidth() || countCols === 0 && this.isSelectedByRowHeader());
|
488
|
+
const highlightColumnHeaders = !_classPrivateFieldGet(_disableHeadersHighlight, this) && this.isEntireColumnSelected() && (countRows > 0 && countRows === cellRange.getHeight() || countRows === 0 && this.isSelectedByColumnHeader());
|
434
489
|
if (highlightRowHeaders) {
|
435
490
|
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();
|
436
491
|
}
|
@@ -441,20 +496,36 @@ class Selection {
|
|
441
496
|
activeCornerHeaderHighlight.add(this.tableProps.createCellCoords(-this.tableProps.countColHeaders(), -this.tableProps.countRowHeaders())).add(this.tableProps.createCellCoords(-1, -1)).commit();
|
442
497
|
}
|
443
498
|
}
|
444
|
-
const isLastLayer = _classPrivateFieldGet(
|
499
|
+
const isLastLayer = _classPrivateFieldGet(_expectedLayersCount, this) === -1 || this.selectedRange.size() === _classPrivateFieldGet(_expectedLayersCount, this);
|
445
500
|
this.runLocalHooks('afterSetRangeEnd', coords, isLastLayer);
|
446
501
|
}
|
447
502
|
|
448
503
|
/**
|
449
|
-
*
|
450
|
-
* the selection.
|
504
|
+
* Sets the selection focus position at the specified coordinates.
|
451
505
|
*
|
452
|
-
* @
|
506
|
+
* @param {CellCoords} coords The CellCoords instance with defined visual coordinates.
|
453
507
|
*/
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
508
|
+
setRangeFocus(coords) {
|
509
|
+
if (this.selectedRange.isEmpty()) {
|
510
|
+
return;
|
511
|
+
}
|
512
|
+
const cellRange = this.selectedRange.current();
|
513
|
+
if (!this.inProgress) {
|
514
|
+
this.runLocalHooks('beforeSetFocus', coords);
|
515
|
+
}
|
516
|
+
const focusHighlight = this.highlight.getFocus();
|
517
|
+
focusHighlight.clear();
|
518
|
+
cellRange.setHighlight(coords);
|
519
|
+
if (!this.inProgress) {
|
520
|
+
this.runLocalHooks('beforeHighlightSet');
|
521
|
+
}
|
522
|
+
if (this.highlight.isEnabledFor(FOCUS_TYPE, cellRange.highlight)) {
|
523
|
+
focusHighlight.add(cellRange.highlight).commit().syncWith(cellRange);
|
524
|
+
}
|
525
|
+
if (!this.inProgress) {
|
526
|
+
_classPrivateFieldSet(_isFocusSelectionChanged, this, true);
|
527
|
+
this.runLocalHooks('afterSetFocus', cellRange.highlight);
|
528
|
+
}
|
458
529
|
}
|
459
530
|
|
460
531
|
/**
|
@@ -467,7 +538,13 @@ class Selection {
|
|
467
538
|
*/
|
468
539
|
transformStart(rowDelta, colDelta) {
|
469
540
|
let createMissingRecords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
470
|
-
|
541
|
+
if (this.settings.navigableHeaders) {
|
542
|
+
_classPrivateFieldGet(_transformation, this).setOffsetSize({
|
543
|
+
x: this.tableProps.countRowHeaders(),
|
544
|
+
y: this.tableProps.countColHeaders()
|
545
|
+
});
|
546
|
+
}
|
547
|
+
this.setRangeStart(_classPrivateFieldGet(_transformation, this).transformStart(rowDelta, colDelta, createMissingRecords));
|
471
548
|
}
|
472
549
|
|
473
550
|
/**
|
@@ -477,7 +554,44 @@ class Selection {
|
|
477
554
|
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
478
555
|
*/
|
479
556
|
transformEnd(rowDelta, colDelta) {
|
480
|
-
|
557
|
+
if (this.settings.navigableHeaders) {
|
558
|
+
_classPrivateFieldGet(_transformation, this).setOffsetSize({
|
559
|
+
x: this.tableProps.countRowHeaders(),
|
560
|
+
y: this.tableProps.countColHeaders()
|
561
|
+
});
|
562
|
+
}
|
563
|
+
this.setRangeEnd(_classPrivateFieldGet(_transformation, this).transformEnd(rowDelta, colDelta));
|
564
|
+
}
|
565
|
+
|
566
|
+
/**
|
567
|
+
* Transforms the focus cell selection relative to the current focus position.
|
568
|
+
*
|
569
|
+
* @param {number} rowDelta Rows number to move, value can be passed as negative number.
|
570
|
+
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
571
|
+
*/
|
572
|
+
transformFocus(rowDelta, colDelta) {
|
573
|
+
const range = this.selectedRange.current();
|
574
|
+
const {
|
575
|
+
row,
|
576
|
+
col
|
577
|
+
} = range.getOuterTopStartCorner();
|
578
|
+
const columnsInRange = this.tableProps.countRenderableColumnsInRange(0, col - 1);
|
579
|
+
const rowsInRange = this.tableProps.countRenderableRowsInRange(0, row - 1);
|
580
|
+
if (range.highlight.isHeader()) {
|
581
|
+
// for header focus selection calculate the new coords based on the selection including headers
|
582
|
+
_classPrivateFieldGet(_focusTransformation, this).setOffsetSize({
|
583
|
+
x: col < 0 ? Math.abs(col) : -columnsInRange,
|
584
|
+
y: row < 0 ? Math.abs(row) : -rowsInRange
|
585
|
+
});
|
586
|
+
} else {
|
587
|
+
// for focus selection in cells calculate the new coords only based on the selected cells
|
588
|
+
_classPrivateFieldGet(_focusTransformation, this).setOffsetSize({
|
589
|
+
x: col < 0 ? 0 : -columnsInRange,
|
590
|
+
y: row < 0 ? 0 : -rowsInRange
|
591
|
+
});
|
592
|
+
}
|
593
|
+
const focusCoords = _classPrivateFieldGet(_focusTransformation, this).transformStart(rowDelta, colDelta);
|
594
|
+
this.setRangeFocus(focusCoords.normalize());
|
481
595
|
}
|
482
596
|
|
483
597
|
/**
|
@@ -498,6 +612,30 @@ class Selection {
|
|
498
612
|
return !this.selectedRange.isEmpty();
|
499
613
|
}
|
500
614
|
|
615
|
+
/**
|
616
|
+
* Returns information if we have a multi-selection. This method check multi-selection only on the latest layer of
|
617
|
+
* the selection.
|
618
|
+
*
|
619
|
+
* @returns {boolean}
|
620
|
+
*/
|
621
|
+
isMultiple() {
|
622
|
+
if (!this.isSelected()) {
|
623
|
+
return false;
|
624
|
+
}
|
625
|
+
const isMultipleListener = createObjectPropListener(!this.selectedRange.current().isSingle());
|
626
|
+
this.runLocalHooks('afterIsMultipleSelection', isMultipleListener);
|
627
|
+
return isMultipleListener.value;
|
628
|
+
}
|
629
|
+
|
630
|
+
/**
|
631
|
+
* Checks if the last selection involves changing the focus cell position only.
|
632
|
+
*
|
633
|
+
* @returns {boolean}
|
634
|
+
*/
|
635
|
+
isFocusSelectionChanged() {
|
636
|
+
return this.isSelected() && _classPrivateFieldGet(_isFocusSelectionChanged, this);
|
637
|
+
}
|
638
|
+
|
501
639
|
/**
|
502
640
|
* Returns `true` if the selection was applied by clicking to the row header. If the `layerLevel`
|
503
641
|
* argument is passed then only that layer will be checked. Otherwise, it checks if any row header
|
@@ -696,7 +834,7 @@ class Selection {
|
|
696
834
|
focusPosition,
|
697
835
|
disableHeadersHighlight
|
698
836
|
} = options;
|
699
|
-
_classPrivateFieldSet(
|
837
|
+
_classPrivateFieldSet(_disableHeadersHighlight, this, disableHeadersHighlight);
|
700
838
|
if (focusPosition && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
701
839
|
highlight = this.tableProps.createCellCoords(clamp(focusPosition.row, rowFrom, nrOfRows - 1), clamp(focusPosition.col, columnFrom, nrOfColumns - 1));
|
702
840
|
}
|
@@ -712,7 +850,7 @@ class Selection {
|
|
712
850
|
}
|
713
851
|
this.setRangeEnd(endCoords);
|
714
852
|
this.finish();
|
715
|
-
_classPrivateFieldSet(
|
853
|
+
_classPrivateFieldSet(_disableHeadersHighlight, this, false);
|
716
854
|
}
|
717
855
|
|
718
856
|
/**
|
@@ -780,9 +918,10 @@ class Selection {
|
|
780
918
|
*
|
781
919
|
* @param {number|string} startColumn Visual column index or column property from which the selection starts.
|
782
920
|
* @param {number|string} [endColumn] Visual column index or column property from to the selection finishes.
|
783
|
-
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus
|
784
|
-
*
|
785
|
-
*
|
921
|
+
* @param {number | { row: number, col: number }} [focusPosition=0] The argument allows changing the cell/header focus
|
922
|
+
* position. The value can take visual row index from -N to N, where negative values point to the headers and positive
|
923
|
+
* values point to the cell range. An object with `row` and `col` properties also can be passed to change the focus
|
924
|
+
* position horizontally.
|
786
925
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
787
926
|
*/
|
788
927
|
selectColumns(startColumn) {
|
@@ -803,11 +942,20 @@ class Selection {
|
|
803
942
|
countColHeaders
|
804
943
|
});
|
805
944
|
if (isValid) {
|
806
|
-
|
945
|
+
let highlightRow = 0;
|
946
|
+
let highlightColumn = 0;
|
947
|
+
if (Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
948
|
+
highlightRow = clamp(focusPosition.row, columnHeaderLastIndex, countRows - 1);
|
949
|
+
highlightColumn = clamp(focusPosition.col, Math.min(start, end), Math.max(start, end));
|
950
|
+
} else {
|
951
|
+
highlightRow = clamp(focusPosition, columnHeaderLastIndex, countRows - 1);
|
952
|
+
highlightColumn = start;
|
953
|
+
}
|
954
|
+
const highlight = this.tableProps.createCellCoords(highlightRow, highlightColumn);
|
955
|
+
const fromRow = countColHeaders === 0 ? 0 : clamp(highlight.row, columnHeaderLastIndex, -1);
|
807
956
|
const toRow = countRows - 1;
|
808
957
|
const from = this.tableProps.createCellCoords(fromRow, start);
|
809
958
|
const to = this.tableProps.createCellCoords(toRow, end);
|
810
|
-
const highlight = this.tableProps.createCellCoords(clamp(focusPosition, columnHeaderLastIndex, countRows - 1), start);
|
811
959
|
this.runLocalHooks('beforeSelectColumns', from, to, highlight);
|
812
960
|
|
813
961
|
// disallow modifying row axis for that hooks
|
@@ -827,9 +975,10 @@ class Selection {
|
|
827
975
|
*
|
828
976
|
* @param {number} startRow Visual row index from which the selection starts.
|
829
977
|
* @param {number} [endRow] Visual row index from to the selection finishes.
|
830
|
-
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus
|
831
|
-
*
|
832
|
-
*
|
978
|
+
* @param {number | { row: number, col: number }} [focusPosition=0] The argument allows changing the cell/header focus
|
979
|
+
* position. The value can take visual row index from -N to N, where negative values point to the headers and positive
|
980
|
+
* values point to the cell range. An object with `row` and `col` properties also can be passed to change the focus
|
981
|
+
* position horizontally.
|
833
982
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
834
983
|
*/
|
835
984
|
selectRows(startRow) {
|
@@ -848,11 +997,20 @@ class Selection {
|
|
848
997
|
countColHeaders: 0
|
849
998
|
});
|
850
999
|
if (isValid) {
|
851
|
-
|
1000
|
+
let highlightRow = 0;
|
1001
|
+
let highlightColumn = 0;
|
1002
|
+
if (Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
1003
|
+
highlightRow = clamp(focusPosition.row, Math.min(startRow, endRow), Math.max(startRow, endRow));
|
1004
|
+
highlightColumn = clamp(focusPosition.col, rowHeaderLastIndex, countCols - 1);
|
1005
|
+
} else {
|
1006
|
+
highlightRow = startRow;
|
1007
|
+
highlightColumn = clamp(focusPosition, rowHeaderLastIndex, countCols - 1);
|
1008
|
+
}
|
1009
|
+
const highlight = this.tableProps.createCellCoords(highlightRow, highlightColumn);
|
1010
|
+
const fromColumn = countRowHeaders === 0 ? 0 : clamp(highlight.col, rowHeaderLastIndex, -1);
|
852
1011
|
const toColumn = countCols - 1;
|
853
1012
|
const from = this.tableProps.createCellCoords(startRow, fromColumn);
|
854
1013
|
const to = this.tableProps.createCellCoords(endRow, toColumn);
|
855
|
-
const highlight = this.tableProps.createCellCoords(startRow, clamp(focusPosition, rowHeaderLastIndex, countCols - 1));
|
856
1014
|
this.runLocalHooks('beforeSelectRows', from, to, highlight);
|
857
1015
|
|
858
1016
|
// disallow modifying column axis for that hooks
|