handsontable 14.2.0-next-75c8bcd-20240306 → 14.3.0-next-13fe676-20240409
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 +9800 -10020
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +292 -292
- package/dist/handsontable.js +7470 -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 +35 -11
- package/editors/dateEditor/dateEditor.mjs +35 -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.js
CHANGED
@@ -9,27 +9,28 @@ var _mixed = require("./../helpers/mixed");
|
|
9
9
|
var _number = require("./../helpers/number");
|
10
10
|
var _array = require("./../helpers/array");
|
11
11
|
var _localHooks = _interopRequireDefault(require("./../mixins/localHooks"));
|
12
|
-
var
|
12
|
+
var _transformation2 = _interopRequireDefault(require("./transformation"));
|
13
13
|
var _utils = require("./utils");
|
14
14
|
var _templateLiteralTag = require("./../helpers/templateLiteralTag");
|
15
15
|
var _a11y = require("../helpers/a11y");
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
18
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
18
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
19
19
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
20
20
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
21
21
|
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; }
|
22
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i :
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
23
23
|
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); }
|
24
|
-
function _classPrivateFieldGet(
|
25
|
-
function
|
26
|
-
function
|
27
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
28
|
-
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; } }
|
24
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
25
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
26
|
+
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"); }
|
29
27
|
/**
|
30
28
|
* @class Selection
|
31
29
|
* @util
|
32
30
|
*/
|
31
|
+
var _transformation = /*#__PURE__*/new WeakMap();
|
32
|
+
var _focusTransformation = /*#__PURE__*/new WeakMap();
|
33
|
+
var _isFocusSelectionChanged = /*#__PURE__*/new WeakMap();
|
33
34
|
var _disableHeadersHighlight = /*#__PURE__*/new WeakMap();
|
34
35
|
var _selectionSource = /*#__PURE__*/new WeakMap();
|
35
36
|
var _expectedLayersCount = /*#__PURE__*/new WeakMap();
|
@@ -69,11 +70,17 @@ class Selection {
|
|
69
70
|
*/
|
70
71
|
_defineProperty(this, "highlight", void 0);
|
71
72
|
/**
|
72
|
-
* The module for modifying coordinates.
|
73
|
+
* The module for modifying coordinates of the start and end selection.
|
73
74
|
*
|
74
75
|
* @type {Transformation}
|
75
76
|
*/
|
76
|
-
|
77
|
+
_classPrivateFieldInitSpec(this, _transformation, void 0);
|
78
|
+
/**
|
79
|
+
* The module for modifying coordinates of the focus selection.
|
80
|
+
*
|
81
|
+
* @type {Transformation}
|
82
|
+
*/
|
83
|
+
_classPrivateFieldInitSpec(this, _focusTransformation, void 0);
|
77
84
|
/**
|
78
85
|
* The collection of the selection layer levels where the whole row was selected using the row header or
|
79
86
|
* the corner header.
|
@@ -88,34 +95,31 @@ class Selection {
|
|
88
95
|
* @type {Set<number>}
|
89
96
|
*/
|
90
97
|
_defineProperty(this, "selectedByColumnHeader", new Set());
|
98
|
+
/**
|
99
|
+
* The flag which determines if the focus selection was changed.
|
100
|
+
*
|
101
|
+
* @type {boolean}
|
102
|
+
*/
|
103
|
+
_classPrivateFieldInitSpec(this, _isFocusSelectionChanged, false);
|
91
104
|
/**
|
92
105
|
* When sets disable highlighting the headers even when the logical coordinates points on them.
|
93
106
|
*
|
94
107
|
* @type {boolean}
|
95
108
|
*/
|
96
|
-
_classPrivateFieldInitSpec(this, _disableHeadersHighlight,
|
97
|
-
writable: true,
|
98
|
-
value: false
|
99
|
-
});
|
109
|
+
_classPrivateFieldInitSpec(this, _disableHeadersHighlight, false);
|
100
110
|
/**
|
101
111
|
* The source of the selection. It can be one of the following values: `mouse`, `unknown` or any other string.
|
102
112
|
*
|
103
113
|
* @type {'mouse' | 'unknown' | string}
|
104
114
|
*/
|
105
|
-
_classPrivateFieldInitSpec(this, _selectionSource,
|
106
|
-
writable: true,
|
107
|
-
value: 'unknown'
|
108
|
-
});
|
115
|
+
_classPrivateFieldInitSpec(this, _selectionSource, 'unknown');
|
109
116
|
/**
|
110
117
|
* The number of expected layers. It is used mostly to track when the last selection layer of non-contiguous
|
111
118
|
* selection is applied, thus the viewport scroll is triggered.
|
112
119
|
*
|
113
120
|
* @param {number}
|
114
121
|
*/
|
115
|
-
_classPrivateFieldInitSpec(this, _expectedLayersCount,
|
116
|
-
writable: true,
|
117
|
-
value: -1
|
118
|
-
});
|
122
|
+
_classPrivateFieldInitSpec(this, _expectedLayersCount, -1);
|
119
123
|
this.settings = settings;
|
120
124
|
this.tableProps = tableProps;
|
121
125
|
this.highlight = new _highlight.default({
|
@@ -138,71 +142,112 @@ class Selection {
|
|
138
142
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
139
143
|
createCellRange: (highlight, from, to) => this.tableProps.createCellRange(highlight, from, to)
|
140
144
|
});
|
141
|
-
this
|
145
|
+
_classPrivateFieldSet(_transformation, this, new _transformation2.default(this.selectedRange, {
|
142
146
|
rowIndexMapper: this.tableProps.rowIndexMapper,
|
143
147
|
columnIndexMapper: this.tableProps.columnIndexMapper,
|
144
148
|
countRenderableRows: () => this.tableProps.countRenderableRows(),
|
145
149
|
countRenderableColumns: () => this.tableProps.countRenderableColumns(),
|
146
|
-
countRowHeaders: () => this.tableProps.countRowHeaders(),
|
147
|
-
countColHeaders: () => this.tableProps.countColHeaders(),
|
148
150
|
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
149
151
|
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
152
|
+
findFirstNonHiddenRenderableRow: function () {
|
153
|
+
return _this.tableProps.findFirstNonHiddenRenderableRow(...arguments);
|
154
|
+
},
|
155
|
+
findFirstNonHiddenRenderableColumn: function () {
|
156
|
+
return _this.tableProps.findFirstNonHiddenRenderableColumn(...arguments);
|
157
|
+
},
|
150
158
|
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
151
|
-
navigableHeaders: () => settings.navigableHeaders,
|
152
159
|
fixedRowsBottom: () => settings.fixedRowsBottom,
|
153
160
|
minSpareRows: () => settings.minSpareRows,
|
154
161
|
minSpareCols: () => settings.minSpareCols,
|
155
162
|
autoWrapRow: () => settings.autoWrapRow,
|
156
163
|
autoWrapCol: () => settings.autoWrapCol
|
157
|
-
});
|
158
|
-
|
164
|
+
}));
|
165
|
+
_classPrivateFieldSet(_focusTransformation, this, new _transformation2.default(this.selectedRange, {
|
166
|
+
rowIndexMapper: this.tableProps.rowIndexMapper,
|
167
|
+
columnIndexMapper: this.tableProps.columnIndexMapper,
|
168
|
+
countRenderableRows: () => {
|
169
|
+
const range = this.selectedRange.current();
|
170
|
+
return this.tableProps.countRenderableRowsInRange(0, range.getOuterBottomEndCorner().row);
|
171
|
+
},
|
172
|
+
countRenderableColumns: () => {
|
173
|
+
const range = this.selectedRange.current();
|
174
|
+
return this.tableProps.countRenderableColumnsInRange(0, range.getOuterBottomEndCorner().col);
|
175
|
+
},
|
176
|
+
visualToRenderableCoords: coords => this.tableProps.visualToRenderableCoords(coords),
|
177
|
+
renderableToVisualCoords: coords => this.tableProps.renderableToVisualCoords(coords),
|
178
|
+
findFirstNonHiddenRenderableRow: function () {
|
179
|
+
return _this.tableProps.findFirstNonHiddenRenderableRow(...arguments);
|
180
|
+
},
|
181
|
+
findFirstNonHiddenRenderableColumn: function () {
|
182
|
+
return _this.tableProps.findFirstNonHiddenRenderableColumn(...arguments);
|
183
|
+
},
|
184
|
+
createCellCoords: (row, column) => this.tableProps.createCellCoords(row, column),
|
185
|
+
fixedRowsBottom: () => 0,
|
186
|
+
minSpareRows: () => 0,
|
187
|
+
minSpareCols: () => 0,
|
188
|
+
autoWrapRow: () => true,
|
189
|
+
autoWrapCol: () => true
|
190
|
+
}));
|
191
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeTransformStart', function () {
|
159
192
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
160
193
|
args[_key] = arguments[_key];
|
161
194
|
}
|
162
195
|
return _this.runLocalHooks('beforeModifyTransformStart', ...args);
|
163
196
|
});
|
164
|
-
this.
|
197
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('afterTransformStart', function () {
|
165
198
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
166
199
|
args[_key2] = arguments[_key2];
|
167
200
|
}
|
168
201
|
return _this.runLocalHooks('afterModifyTransformStart', ...args);
|
169
202
|
});
|
170
|
-
this.
|
203
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeTransformEnd', function () {
|
171
204
|
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
172
205
|
args[_key3] = arguments[_key3];
|
173
206
|
}
|
174
207
|
return _this.runLocalHooks('beforeModifyTransformEnd', ...args);
|
175
208
|
});
|
176
|
-
this.
|
209
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('afterTransformEnd', function () {
|
177
210
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
178
211
|
args[_key4] = arguments[_key4];
|
179
212
|
}
|
180
213
|
return _this.runLocalHooks('afterModifyTransformEnd', ...args);
|
181
214
|
});
|
182
|
-
this.
|
215
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('insertRowRequire', function () {
|
183
216
|
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
184
217
|
args[_key5] = arguments[_key5];
|
185
218
|
}
|
186
219
|
return _this.runLocalHooks('insertRowRequire', ...args);
|
187
220
|
});
|
188
|
-
this.
|
221
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('insertColRequire', function () {
|
189
222
|
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
190
223
|
args[_key6] = arguments[_key6];
|
191
224
|
}
|
192
225
|
return _this.runLocalHooks('insertColRequire', ...args);
|
193
226
|
});
|
194
|
-
this.
|
227
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeRowWrap', function () {
|
195
228
|
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
196
229
|
args[_key7] = arguments[_key7];
|
197
230
|
}
|
198
231
|
return _this.runLocalHooks('beforeRowWrap', ...args);
|
199
232
|
});
|
200
|
-
this.
|
233
|
+
_classPrivateFieldGet(_transformation, this).addLocalHook('beforeColumnWrap', function () {
|
201
234
|
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
202
235
|
args[_key8] = arguments[_key8];
|
203
236
|
}
|
204
237
|
return _this.runLocalHooks('beforeColumnWrap', ...args);
|
205
238
|
});
|
239
|
+
_classPrivateFieldGet(_focusTransformation, this).addLocalHook('beforeTransformStart', function () {
|
240
|
+
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
241
|
+
args[_key9] = arguments[_key9];
|
242
|
+
}
|
243
|
+
return _this.runLocalHooks('beforeModifyTransformFocus', ...args);
|
244
|
+
});
|
245
|
+
_classPrivateFieldGet(_focusTransformation, this).addLocalHook('afterTransformStart', function () {
|
246
|
+
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
247
|
+
args[_key10] = arguments[_key10];
|
248
|
+
}
|
249
|
+
return _this.runLocalHooks('afterModifyTransformFocus', ...args);
|
250
|
+
});
|
206
251
|
}
|
207
252
|
|
208
253
|
/**
|
@@ -220,14 +265,14 @@ class Selection {
|
|
220
265
|
* @param {'mouse' | 'unknown' | string} sourceName The source name.
|
221
266
|
*/
|
222
267
|
markSource(sourceName) {
|
223
|
-
_classPrivateFieldSet(
|
268
|
+
_classPrivateFieldSet(_selectionSource, this, sourceName);
|
224
269
|
}
|
225
270
|
|
226
271
|
/**
|
227
272
|
* Marks end of the selection source. It restores the selection source to default value which is 'unknown'.
|
228
273
|
*/
|
229
274
|
markEndSource() {
|
230
|
-
_classPrivateFieldSet(
|
275
|
+
_classPrivateFieldSet(_selectionSource, this, 'unknown');
|
231
276
|
}
|
232
277
|
|
233
278
|
/**
|
@@ -236,7 +281,7 @@ class Selection {
|
|
236
281
|
* @returns {'mouse' | 'unknown' | string}
|
237
282
|
*/
|
238
283
|
getSelectionSource() {
|
239
|
-
return _classPrivateFieldGet(
|
284
|
+
return _classPrivateFieldGet(_selectionSource, this);
|
240
285
|
}
|
241
286
|
|
242
287
|
/**
|
@@ -246,7 +291,7 @@ class Selection {
|
|
246
291
|
* @param {number} layersCount The number of expected layers.
|
247
292
|
*/
|
248
293
|
setExpectedLayers(layersCount) {
|
249
|
-
_classPrivateFieldSet(
|
294
|
+
_classPrivateFieldSet(_expectedLayersCount, this, layersCount);
|
250
295
|
}
|
251
296
|
|
252
297
|
/**
|
@@ -262,7 +307,7 @@ class Selection {
|
|
262
307
|
finish() {
|
263
308
|
this.runLocalHooks('afterSelectionFinished', Array.from(this.selectedRange));
|
264
309
|
this.inProgress = false;
|
265
|
-
_classPrivateFieldSet(
|
310
|
+
_classPrivateFieldSet(_expectedLayersCount, this, -1);
|
266
311
|
}
|
267
312
|
|
268
313
|
/**
|
@@ -293,6 +338,7 @@ class Selection {
|
|
293
338
|
// We are creating copy. We would like to modify just the start of the selection by below hook. Then original coords
|
294
339
|
// should be handled by next methods.
|
295
340
|
const coordsClone = coords.clone();
|
341
|
+
_classPrivateFieldSet(_isFocusSelectionChanged, this, false);
|
296
342
|
this.runLocalHooks(`beforeSetRangeStart${fragment ? 'Only' : ''}`, coordsClone);
|
297
343
|
if (!isMultipleMode || isMultipleMode && !isMultipleSelection && (0, _mixed.isUndefined)(multipleSelection)) {
|
298
344
|
this.selectedRange.clear();
|
@@ -350,7 +396,20 @@ class Selection {
|
|
350
396
|
cellRange.setFrom(cellRange.highlight);
|
351
397
|
cellRange.setTo(cellRange.highlight);
|
352
398
|
} else {
|
399
|
+
const horizontalDir = cellRange.getHorizontalDirection();
|
400
|
+
const verticalDir = cellRange.getVerticalDirection();
|
401
|
+
const isMultiple = this.isMultiple();
|
353
402
|
cellRange.setTo(coordsClone);
|
403
|
+
if (isMultiple && (horizontalDir !== cellRange.getHorizontalDirection() || cellRange.getWidth() === 1 && !cellRange.includes(cellRange.highlight))) {
|
404
|
+
cellRange.from.assign({
|
405
|
+
col: cellRange.highlight.col
|
406
|
+
});
|
407
|
+
}
|
408
|
+
if (isMultiple && (verticalDir !== cellRange.getVerticalDirection() || cellRange.getHeight() === 1 && !cellRange.includes(cellRange.highlight))) {
|
409
|
+
cellRange.from.assign({
|
410
|
+
row: cellRange.highlight.row
|
411
|
+
});
|
412
|
+
}
|
354
413
|
}
|
355
414
|
|
356
415
|
// Prevent creating "area" selection that overlaps headers.
|
@@ -360,11 +419,7 @@ class Selection {
|
|
360
419
|
}
|
361
420
|
}
|
362
421
|
this.runLocalHooks('beforeHighlightSet');
|
363
|
-
|
364
|
-
focusHighlight.clear();
|
365
|
-
if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, cellRange.highlight)) {
|
366
|
-
focusHighlight.add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
|
367
|
-
}
|
422
|
+
this.setRangeFocus(this.selectedRange.current().highlight);
|
368
423
|
const layerLevel = this.getLayerLevel();
|
369
424
|
|
370
425
|
// If the next layer level is lower than previous then clear all area and header highlights. This is the
|
@@ -435,8 +490,8 @@ class Selection {
|
|
435
490
|
columnHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
|
436
491
|
}
|
437
492
|
}
|
438
|
-
const highlightRowHeaders = !_classPrivateFieldGet(
|
439
|
-
const highlightColumnHeaders = !_classPrivateFieldGet(
|
493
|
+
const highlightRowHeaders = !_classPrivateFieldGet(_disableHeadersHighlight, this) && this.isEntireRowSelected() && (countCols > 0 && countCols === cellRange.getWidth() || countCols === 0 && this.isSelectedByRowHeader());
|
494
|
+
const highlightColumnHeaders = !_classPrivateFieldGet(_disableHeadersHighlight, this) && this.isEntireColumnSelected() && (countRows > 0 && countRows === cellRange.getHeight() || countRows === 0 && this.isSelectedByColumnHeader());
|
440
495
|
if (highlightRowHeaders) {
|
441
496
|
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();
|
442
497
|
}
|
@@ -447,20 +502,36 @@ class Selection {
|
|
447
502
|
activeCornerHeaderHighlight.add(this.tableProps.createCellCoords(-this.tableProps.countColHeaders(), -this.tableProps.countRowHeaders())).add(this.tableProps.createCellCoords(-1, -1)).commit();
|
448
503
|
}
|
449
504
|
}
|
450
|
-
const isLastLayer = _classPrivateFieldGet(
|
505
|
+
const isLastLayer = _classPrivateFieldGet(_expectedLayersCount, this) === -1 || this.selectedRange.size() === _classPrivateFieldGet(_expectedLayersCount, this);
|
451
506
|
this.runLocalHooks('afterSetRangeEnd', coords, isLastLayer);
|
452
507
|
}
|
453
508
|
|
454
509
|
/**
|
455
|
-
*
|
456
|
-
* the selection.
|
510
|
+
* Sets the selection focus position at the specified coordinates.
|
457
511
|
*
|
458
|
-
* @
|
512
|
+
* @param {CellCoords} coords The CellCoords instance with defined visual coordinates.
|
459
513
|
*/
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
514
|
+
setRangeFocus(coords) {
|
515
|
+
if (this.selectedRange.isEmpty()) {
|
516
|
+
return;
|
517
|
+
}
|
518
|
+
const cellRange = this.selectedRange.current();
|
519
|
+
if (!this.inProgress) {
|
520
|
+
this.runLocalHooks('beforeSetFocus', coords);
|
521
|
+
}
|
522
|
+
const focusHighlight = this.highlight.getFocus();
|
523
|
+
focusHighlight.clear();
|
524
|
+
cellRange.setHighlight(coords);
|
525
|
+
if (!this.inProgress) {
|
526
|
+
this.runLocalHooks('beforeHighlightSet');
|
527
|
+
}
|
528
|
+
if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, cellRange.highlight)) {
|
529
|
+
focusHighlight.add(cellRange.highlight).commit().syncWith(cellRange);
|
530
|
+
}
|
531
|
+
if (!this.inProgress) {
|
532
|
+
_classPrivateFieldSet(_isFocusSelectionChanged, this, true);
|
533
|
+
this.runLocalHooks('afterSetFocus', cellRange.highlight);
|
534
|
+
}
|
464
535
|
}
|
465
536
|
|
466
537
|
/**
|
@@ -473,7 +544,13 @@ class Selection {
|
|
473
544
|
*/
|
474
545
|
transformStart(rowDelta, colDelta) {
|
475
546
|
let createMissingRecords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
476
|
-
|
547
|
+
if (this.settings.navigableHeaders) {
|
548
|
+
_classPrivateFieldGet(_transformation, this).setOffsetSize({
|
549
|
+
x: this.tableProps.countRowHeaders(),
|
550
|
+
y: this.tableProps.countColHeaders()
|
551
|
+
});
|
552
|
+
}
|
553
|
+
this.setRangeStart(_classPrivateFieldGet(_transformation, this).transformStart(rowDelta, colDelta, createMissingRecords));
|
477
554
|
}
|
478
555
|
|
479
556
|
/**
|
@@ -483,7 +560,44 @@ class Selection {
|
|
483
560
|
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
484
561
|
*/
|
485
562
|
transformEnd(rowDelta, colDelta) {
|
486
|
-
|
563
|
+
if (this.settings.navigableHeaders) {
|
564
|
+
_classPrivateFieldGet(_transformation, this).setOffsetSize({
|
565
|
+
x: this.tableProps.countRowHeaders(),
|
566
|
+
y: this.tableProps.countColHeaders()
|
567
|
+
});
|
568
|
+
}
|
569
|
+
this.setRangeEnd(_classPrivateFieldGet(_transformation, this).transformEnd(rowDelta, colDelta));
|
570
|
+
}
|
571
|
+
|
572
|
+
/**
|
573
|
+
* Transforms the focus cell selection relative to the current focus position.
|
574
|
+
*
|
575
|
+
* @param {number} rowDelta Rows number to move, value can be passed as negative number.
|
576
|
+
* @param {number} colDelta Columns number to move, value can be passed as negative number.
|
577
|
+
*/
|
578
|
+
transformFocus(rowDelta, colDelta) {
|
579
|
+
const range = this.selectedRange.current();
|
580
|
+
const {
|
581
|
+
row,
|
582
|
+
col
|
583
|
+
} = range.getOuterTopStartCorner();
|
584
|
+
const columnsInRange = this.tableProps.countRenderableColumnsInRange(0, col - 1);
|
585
|
+
const rowsInRange = this.tableProps.countRenderableRowsInRange(0, row - 1);
|
586
|
+
if (range.highlight.isHeader()) {
|
587
|
+
// for header focus selection calculate the new coords based on the selection including headers
|
588
|
+
_classPrivateFieldGet(_focusTransformation, this).setOffsetSize({
|
589
|
+
x: col < 0 ? Math.abs(col) : -columnsInRange,
|
590
|
+
y: row < 0 ? Math.abs(row) : -rowsInRange
|
591
|
+
});
|
592
|
+
} else {
|
593
|
+
// for focus selection in cells calculate the new coords only based on the selected cells
|
594
|
+
_classPrivateFieldGet(_focusTransformation, this).setOffsetSize({
|
595
|
+
x: col < 0 ? 0 : -columnsInRange,
|
596
|
+
y: row < 0 ? 0 : -rowsInRange
|
597
|
+
});
|
598
|
+
}
|
599
|
+
const focusCoords = _classPrivateFieldGet(_focusTransformation, this).transformStart(rowDelta, colDelta);
|
600
|
+
this.setRangeFocus(focusCoords.normalize());
|
487
601
|
}
|
488
602
|
|
489
603
|
/**
|
@@ -504,6 +618,30 @@ class Selection {
|
|
504
618
|
return !this.selectedRange.isEmpty();
|
505
619
|
}
|
506
620
|
|
621
|
+
/**
|
622
|
+
* Returns information if we have a multi-selection. This method check multi-selection only on the latest layer of
|
623
|
+
* the selection.
|
624
|
+
*
|
625
|
+
* @returns {boolean}
|
626
|
+
*/
|
627
|
+
isMultiple() {
|
628
|
+
if (!this.isSelected()) {
|
629
|
+
return false;
|
630
|
+
}
|
631
|
+
const isMultipleListener = (0, _object.createObjectPropListener)(!this.selectedRange.current().isSingle());
|
632
|
+
this.runLocalHooks('afterIsMultipleSelection', isMultipleListener);
|
633
|
+
return isMultipleListener.value;
|
634
|
+
}
|
635
|
+
|
636
|
+
/**
|
637
|
+
* Checks if the last selection involves changing the focus cell position only.
|
638
|
+
*
|
639
|
+
* @returns {boolean}
|
640
|
+
*/
|
641
|
+
isFocusSelectionChanged() {
|
642
|
+
return this.isSelected() && _classPrivateFieldGet(_isFocusSelectionChanged, this);
|
643
|
+
}
|
644
|
+
|
507
645
|
/**
|
508
646
|
* Returns `true` if the selection was applied by clicking to the row header. If the `layerLevel`
|
509
647
|
* argument is passed then only that layer will be checked. Otherwise, it checks if any row header
|
@@ -702,7 +840,7 @@ class Selection {
|
|
702
840
|
focusPosition,
|
703
841
|
disableHeadersHighlight
|
704
842
|
} = options;
|
705
|
-
_classPrivateFieldSet(
|
843
|
+
_classPrivateFieldSet(_disableHeadersHighlight, this, disableHeadersHighlight);
|
706
844
|
if (focusPosition && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
707
845
|
highlight = this.tableProps.createCellCoords((0, _number.clamp)(focusPosition.row, rowFrom, nrOfRows - 1), (0, _number.clamp)(focusPosition.col, columnFrom, nrOfColumns - 1));
|
708
846
|
}
|
@@ -718,7 +856,7 @@ class Selection {
|
|
718
856
|
}
|
719
857
|
this.setRangeEnd(endCoords);
|
720
858
|
this.finish();
|
721
|
-
_classPrivateFieldSet(
|
859
|
+
_classPrivateFieldSet(_disableHeadersHighlight, this, false);
|
722
860
|
}
|
723
861
|
|
724
862
|
/**
|
@@ -786,9 +924,10 @@ class Selection {
|
|
786
924
|
*
|
787
925
|
* @param {number|string} startColumn Visual column index or column property from which the selection starts.
|
788
926
|
* @param {number|string} [endColumn] Visual column index or column property from to the selection finishes.
|
789
|
-
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus
|
790
|
-
*
|
791
|
-
*
|
927
|
+
* @param {number | { row: number, col: number }} [focusPosition=0] The argument allows changing the cell/header focus
|
928
|
+
* position. The value can take visual row index from -N to N, where negative values point to the headers and positive
|
929
|
+
* values point to the cell range. An object with `row` and `col` properties also can be passed to change the focus
|
930
|
+
* position horizontally.
|
792
931
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
793
932
|
*/
|
794
933
|
selectColumns(startColumn) {
|
@@ -809,11 +948,20 @@ class Selection {
|
|
809
948
|
countColHeaders
|
810
949
|
});
|
811
950
|
if (isValid) {
|
812
|
-
|
951
|
+
let highlightRow = 0;
|
952
|
+
let highlightColumn = 0;
|
953
|
+
if (Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
954
|
+
highlightRow = (0, _number.clamp)(focusPosition.row, columnHeaderLastIndex, countRows - 1);
|
955
|
+
highlightColumn = (0, _number.clamp)(focusPosition.col, Math.min(start, end), Math.max(start, end));
|
956
|
+
} else {
|
957
|
+
highlightRow = (0, _number.clamp)(focusPosition, columnHeaderLastIndex, countRows - 1);
|
958
|
+
highlightColumn = start;
|
959
|
+
}
|
960
|
+
const highlight = this.tableProps.createCellCoords(highlightRow, highlightColumn);
|
961
|
+
const fromRow = countColHeaders === 0 ? 0 : (0, _number.clamp)(highlight.row, columnHeaderLastIndex, -1);
|
813
962
|
const toRow = countRows - 1;
|
814
963
|
const from = this.tableProps.createCellCoords(fromRow, start);
|
815
964
|
const to = this.tableProps.createCellCoords(toRow, end);
|
816
|
-
const highlight = this.tableProps.createCellCoords((0, _number.clamp)(focusPosition, columnHeaderLastIndex, countRows - 1), start);
|
817
965
|
this.runLocalHooks('beforeSelectColumns', from, to, highlight);
|
818
966
|
|
819
967
|
// disallow modifying row axis for that hooks
|
@@ -833,9 +981,10 @@ class Selection {
|
|
833
981
|
*
|
834
982
|
* @param {number} startRow Visual row index from which the selection starts.
|
835
983
|
* @param {number} [endRow] Visual row index from to the selection finishes.
|
836
|
-
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus
|
837
|
-
*
|
838
|
-
*
|
984
|
+
* @param {number | { row: number, col: number }} [focusPosition=0] The argument allows changing the cell/header focus
|
985
|
+
* position. The value can take visual row index from -N to N, where negative values point to the headers and positive
|
986
|
+
* values point to the cell range. An object with `row` and `col` properties also can be passed to change the focus
|
987
|
+
* position horizontally.
|
839
988
|
* @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
|
840
989
|
*/
|
841
990
|
selectRows(startRow) {
|
@@ -854,11 +1003,20 @@ class Selection {
|
|
854
1003
|
countColHeaders: 0
|
855
1004
|
});
|
856
1005
|
if (isValid) {
|
857
|
-
|
1006
|
+
let highlightRow = 0;
|
1007
|
+
let highlightColumn = 0;
|
1008
|
+
if (Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.row) && Number.isInteger(focusPosition === null || focusPosition === void 0 ? void 0 : focusPosition.col)) {
|
1009
|
+
highlightRow = (0, _number.clamp)(focusPosition.row, Math.min(startRow, endRow), Math.max(startRow, endRow));
|
1010
|
+
highlightColumn = (0, _number.clamp)(focusPosition.col, rowHeaderLastIndex, countCols - 1);
|
1011
|
+
} else {
|
1012
|
+
highlightRow = startRow;
|
1013
|
+
highlightColumn = (0, _number.clamp)(focusPosition, rowHeaderLastIndex, countCols - 1);
|
1014
|
+
}
|
1015
|
+
const highlight = this.tableProps.createCellCoords(highlightRow, highlightColumn);
|
1016
|
+
const fromColumn = countRowHeaders === 0 ? 0 : (0, _number.clamp)(highlight.col, rowHeaderLastIndex, -1);
|
858
1017
|
const toColumn = countCols - 1;
|
859
1018
|
const from = this.tableProps.createCellCoords(startRow, fromColumn);
|
860
1019
|
const to = this.tableProps.createCellCoords(endRow, toColumn);
|
861
|
-
const highlight = this.tableProps.createCellCoords(startRow, (0, _number.clamp)(focusPosition, rowHeaderLastIndex, countCols - 1));
|
862
1020
|
this.runLocalHooks('beforeSelectRows', from, to, highlight);
|
863
1021
|
|
864
1022
|
// disallow modifying column axis for that hooks
|