@@ -74,6 +74,8 @@ export const info = {
74
74
stoppedScrollingTimeout : null ,
75
75
76
76
indexDownloadStatuses : Object . create ( null ) ,
77
+
78
+ currentValue : null ,
77
79
} ,
78
80
79
81
session : {
@@ -298,22 +300,32 @@ export function mutatePageContent() {
298
300
info . searchBox . appendChild ( info . endSearchLine ) ;
299
301
}
300
302
303
+ function trackSidebarSearchInputChanged ( ) {
304
+ const { state} = info ;
305
+
306
+ const newValue = info . searchInput . value ;
307
+
308
+ if ( newValue === state . currentValue ) {
309
+ return false ;
310
+ } else {
311
+ state . currentValue = newValue ;
312
+ return ! ! newValue ;
313
+ }
314
+ }
315
+
301
316
export function addPageListeners ( ) {
302
317
if ( ! info . searchInput ) return ;
303
318
304
- let prevValue = null ;
305
319
info . searchInput . addEventListener ( 'change' , _domEvent => {
306
- if ( info . searchInput . value && info . searchInput . value !== prevValue ) {
320
+ if ( trackSidebarSearchInputChanged ( ) ) {
307
321
activateSidebarSearch ( info . searchInput . value ) ;
308
322
}
309
- prevValue = info . searchInput . value ;
310
323
} ) ;
311
324
312
325
info . searchInput . addEventListener ( 'input' , _domEvent => {
313
326
const { settings, state} = info ;
314
327
315
- if ( prevValue === info . searchInput . value ) return ;
316
- prevValue = info . searchInput . value ;
328
+ trackSidebarSearchInputChanged ( ) ;
317
329
318
330
if ( ! info . searchInput . value ) {
319
331
clearSidebarSearch ( ) ;
@@ -604,7 +616,7 @@ function showSidebarSearchResults(results) {
604
616
}
605
617
606
618
for ( const result of flatResults ) {
607
- const el = generateSidebarSearchResult ( result , info ) ;
619
+ const el = generateSidebarSearchResult ( result ) ;
608
620
if ( ! el ) continue ;
609
621
610
622
info . results . appendChild ( el ) ;
@@ -620,7 +632,7 @@ function showSidebarSearchResults(results) {
620
632
restoreSidebarSearchResultsScrollOffset ( ) ;
621
633
}
622
634
623
- function generateSidebarSearchResult ( result , info ) {
635
+ function generateSidebarSearchResult ( result ) {
624
636
const preparedSlots = {
625
637
color :
626
638
result . data . color ?? null ,
@@ -691,7 +703,7 @@ function generateSidebarSearchResult(result, info) {
691
703
return null ;
692
704
}
693
705
694
- return generateSidebarSearchResultTemplate ( preparedSlots , info ) ;
706
+ return generateSidebarSearchResultTemplate ( preparedSlots ) ;
695
707
}
696
708
697
709
function getSearchResultImageSource ( result ) {
@@ -704,7 +716,7 @@ function getSearchResultImageSource(result) {
704
716
'rebaseThumb' ) ) ;
705
717
}
706
718
707
- function generateSidebarSearchResultTemplate ( slots , info ) {
719
+ function generateSidebarSearchResultTemplate ( slots ) {
708
720
const link = document . createElement ( 'a' ) ;
709
721
link . classList . add ( 'wiki-search-result' ) ;
710
722
0 commit comments