@@ -189,10 +189,14 @@ export default function GraphView({
189189 // Search
190190 const [ showSearch , setShowSearch ] = useState ( false )
191191 const [ searchQuery , setSearchQuery ] = useState ( '' )
192- const [ searchResults , setSearchResults ] = useState < GraphNode [ ] > ( [ ] )
193192 const [ searchIndex , setSearchIndex ] = useState ( 0 )
194193 const searchRef = useRef < HTMLInputElement > ( null )
195194
195+ const searchResults = useMemo ( ( ) => {
196+ if ( ! showSearch ) return [ ]
197+ return graphData . nodes . filter ( ( n ) => fuzzyMatch ( n . name , searchQuery ) )
198+ } , [ searchQuery , showSearch , graphData . nodes ] )
199+
196200 const focusOnNode = useCallback ( ( nodeId : string ) => {
197201 const fg = fgRef . current
198202 if ( ! fg ) return
@@ -262,13 +266,6 @@ export default function GraphView({
262266 return false
263267 }
264268
265- useEffect ( ( ) => {
266- if ( ! showSearch ) return
267- const filtered = graphData . nodes . filter ( ( n ) => fuzzyMatch ( n . name , searchQuery ) )
268- setSearchResults ( filtered )
269- setSearchIndex ( 0 )
270- } , [ searchQuery , showSearch , graphData . nodes ] )
271-
272269 const handleSearchKeyDown = useCallback (
273270 ( e : React . KeyboardEvent ) => {
274271 if ( e . key === 'ArrowDown' ) {
@@ -342,7 +339,10 @@ export default function GraphView({
342339 < input
343340 ref = { searchRef }
344341 value = { searchQuery }
345- onChange = { ( e ) => setSearchQuery ( e . target . value ) }
342+ onChange = { ( e ) => {
343+ setSearchQuery ( e . target . value )
344+ setSearchIndex ( 0 )
345+ } }
346346 onKeyDown = { handleSearchKeyDown }
347347 placeholder = "Search notes…"
348348 style = { {
0 commit comments