@@ -487,19 +487,20 @@ function showCurrent(state)
487487 var searchInput = search.querySelector('.sf-dump-search-input');
488488 var counter = search.querySelector('.sf-dump-search-count');
489489 var searchInputTimer = 0;
490+ var previousSearchQuery = '';
490491
491- addEventListener(searchInput, 'keydown', function (e) {
492- /* Don't intercept escape key in order to not start a search */
493- if (27 === e.keyCode) {
492+ addEventListener(searchInput, 'keyup', function (e) {
493+ var searchQuery = e.target.value;
494+ /* Don't perform anything if the pressed key didn't change the query */
495+ if (searchQuery === previousSearchQuery) {
494496 return;
495497 }
496-
498+ previousSearchQuery = searchQuery;
497499 clearTimeout(searchInputTimer);
498500 searchInputTimer = setTimeout(function () {
499501 state.reset();
500502 collapseAll(root);
501503 resetHighlightedNodes(root);
502- var searchQuery = e.target.value;
503504 if ('' === searchQuery) {
504505 counter.textContent = '0 on 0';
505506
@@ -526,17 +527,29 @@ function showCurrent(state)
526527 });
527528
528529 addEventListener(root, 'keydown', function (e) {
529- if (114 === e.keyCode || (isCtrlKey(e) && 70 === e.keyCode)) {
530- /* CTRL + F or CMD + F */
530+ var isSearchActive = !/\bsf-dump-search-hidden\b/.test(search.className);
531+ if ((114 === e.keyCode && !isSearchActive) || (isCtrlKey(e) && 70 === e.keyCode)) {
532+ /* F3 or CMD/CTRL + F */
531533 e.preventDefault();
532534 search.className = search.className.replace(/\bsf-dump-search-hidden\b/, '');
533535 searchInput.focus();
534- } else if (27 === e.keyCode && !/\bsf-dump-search-hidden\b/.test(search.className)) {
535- /* ESC key */
536- search.className += ' sf-dump-search-hidden';
537- e.preventDefault();
538- resetHighlightedNodes(root);
539- searchInput.value = '';
536+ } else if (isSearchActive) {
537+ if (27 === e.keyCode) {
538+ /* ESC key */
539+ search.className += ' sf-dump-search-hidden';
540+ e.preventDefault();
541+ resetHighlightedNodes(root);
542+ searchInput.value = '';
543+ } else if (
544+ (isCtrlKey(e) && 71 === e.keyCode) /* CMD/CTRL + G */
545+ || 13 === e.keyCode /* Enter */
546+ || 114 === e.keyCode /* F3 */
547+ ) {
548+ e.preventDefault();
549+ e.shiftKey ? state.previous() : state.next();
550+ collapseAll(root);
551+ showCurrent(state);
552+ }
540553 }
541554 });
542555 }
0 commit comments