|
1 | 1 | import { LineageView } from 'src/view/view'; |
2 | 2 | import { copySearchResultsToClipboard } from 'src/view/actions/keyboard-shortcuts/helpers/commands/commands/helpers/clipboard/copy-search-results-to-clipboard'; |
3 | 3 | import { sortNodeIdsByDepthDesc } from 'src/lib/tree-utils/sort/sort-node-ids-by-depth-desc'; |
| 4 | +import { sortNodeIdsBySectionNumber } from 'src/lib/tree-utils/sort/sort-node-ids-by-section-number'; |
4 | 5 |
|
5 | 6 | export const cutSearchResults = async (view: LineageView) => { |
6 | 7 | copySearchResultsToClipboard(view); |
7 | 8 | const viewState = view.viewStore.getValue(); |
8 | 9 | const documentState = view.documentStore.getValue(); |
9 | 10 | const results = Array.from(viewState.search.results.keys()); |
| 11 | + if (results.length === 0) return; |
10 | 12 | const sections = documentState.sections; |
11 | 13 | const sortedByDepth = sortNodeIdsByDepthDesc(sections, results); |
| 14 | + const activeNodeIsAMatch = viewState.search.results.has( |
| 15 | + viewState.document.activeNode, |
| 16 | + ); |
| 17 | + const activeSearchNode = activeNodeIsAMatch |
| 18 | + ? viewState.document.activeNode |
| 19 | + : sortNodeIdsBySectionNumber(sections, results)[0]; |
12 | 20 | view.documentStore.dispatch({ |
13 | 21 | type: 'DOCUMENT/CUT_NODE', |
14 | 22 | payload: { |
15 | | - nodeId: viewState.document.activeNode, |
| 23 | + nodeId: activeSearchNode, |
16 | 24 | selectedNodes: new Set(sortedByDepth), |
17 | 25 | }, |
18 | 26 | }); |
|
0 commit comments