From 29a6bf2a7bb07be2bace750409afc08a8171b9d7 Mon Sep 17 00:00:00 2001 From: Fanny Date: Sat, 27 Jul 2019 13:04:20 -0300 Subject: [PATCH] Feature: tweak search behaviour (#353) Merge PR #353 from @fanny This change changes search beahvior to initially select the result nearest the currently selected element (rather than selecting the first result in the set). --- src/devtools/views/Components/TreeContext.js | 23 ++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/devtools/views/Components/TreeContext.js b/src/devtools/views/Components/TreeContext.js index 7b8f54805a..5af9398fe5 100644 --- a/src/devtools/views/Components/TreeContext.js +++ b/src/devtools/views/Components/TreeContext.js @@ -277,7 +277,6 @@ function reduceSearchState(store: Store, state: State, action: Action): State { selectedElementIndex, } = state; - const prevSearchIndex = searchIndex; const prevSearchText = searchText; const numPrevSearchResults = searchResults.length; @@ -380,15 +379,11 @@ function reduceSearchState(store: Store, state: State, action: Action): State { store.roots.forEach(rootID => { recursivelySearchTree(store, rootID, regExp, searchResults); }); - if (searchResults.length > 0) { - if (prevSearchIndex === null) { - searchIndex = 0; + if (selectedElementID !== null) { + searchIndex = getNearestResult(searchResults, selectedElementID); } else { - searchIndex = Math.min( - ((prevSearchIndex: any): number), - searchResults.length - 1 - ); + searchIndex = 0; } } } @@ -760,7 +755,6 @@ function TreeContextController({ ); } - function recursivelySearchTree( store: Store, elementID: number, @@ -780,4 +774,15 @@ function recursivelySearchTree( ); } +function getNearestResult( + searchResults: Array, + selectedElementID: number | null +) { + const result = searchResults.findIndex( + value => value >= ((selectedElementID: any): number) + ); + + return result === -1 ? 0 : result; +} + export { TreeDispatcherContext, TreeStateContext, TreeContextController };