1+ // ignore-tidy-filelength
12// Local js definitions:
23/* global addClass, getSettingValue, hasClass */
34/* global onEach, onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
@@ -374,28 +375,35 @@ function defocusSearchBar() {
374375 }
375376 }
376377
377- function getHelpElement ( ) {
378- buildHelperPopup ( ) ;
378+ function getHelpElement ( build ) {
379+ if ( build !== false ) {
380+ buildHelperPopup ( ) ;
381+ }
379382 return document . getElementById ( "help" ) ;
380383 }
381384
382385 function displayHelp ( display , ev , help ) {
383- help = help ? help : getHelpElement ( ) ;
384386 if ( display === true ) {
387+ help = help ? help : getHelpElement ( true ) ;
385388 if ( hasClass ( help , "hidden" ) ) {
386389 ev . preventDefault ( ) ;
387390 removeClass ( help , "hidden" ) ;
388391 addClass ( document . body , "blur" ) ;
389392 }
390- } else if ( hasClass ( help , "hidden" ) === false ) {
391- ev . preventDefault ( ) ;
392- addClass ( help , "hidden" ) ;
393- removeClass ( document . body , "blur" ) ;
393+ } else {
394+ // No need to build the help popup if we want to hide it in case it hasn't been
395+ // built yet...
396+ help = help ? help : getHelpElement ( false ) ;
397+ if ( help && hasClass ( help , "hidden" ) === false ) {
398+ ev . preventDefault ( ) ;
399+ addClass ( help , "hidden" ) ;
400+ removeClass ( document . body , "blur" ) ;
401+ }
394402 }
395403 }
396404
397405 function handleEscape ( ev ) {
398- var help = getHelpElement ( ) ;
406+ var help = getHelpElement ( false ) ;
399407 var search = getSearchElement ( ) ;
400408 if ( hasClass ( help , "hidden" ) === false ) {
401409 displayHelp ( false , ev , help ) ;
@@ -558,6 +566,7 @@ function defocusSearchBar() {
558566 } ( ) ) ;
559567
560568 document . addEventListener ( "click" , function ( ev ) {
569+ var helpElem = getHelpElement ( false ) ;
561570 if ( hasClass ( ev . target , "help-button" ) ) {
562571 displayHelp ( true , ev ) ;
563572 } else if ( hasClass ( ev . target , "collapse-toggle" ) ) {
@@ -566,11 +575,10 @@ function defocusSearchBar() {
566575 collapseDocs ( ev . target . parentNode , "toggle" ) ;
567576 } else if ( ev . target . tagName === "SPAN" && hasClass ( ev . target . parentNode , "line-numbers" ) ) {
568577 handleSourceHighlight ( ev ) ;
569- } else if ( hasClass ( getHelpElement ( ) , "hidden" ) === false ) {
570- var help = getHelpElement ( ) ;
571- var is_inside_help_popup = ev . target !== help && help . contains ( ev . target ) ;
578+ } else if ( helpElem && hasClass ( helpElem , "hidden" ) === false ) {
579+ var is_inside_help_popup = ev . target !== helpElem && helpElem . contains ( ev . target ) ;
572580 if ( is_inside_help_popup === false ) {
573- addClass ( help , "hidden" ) ;
581+ addClass ( helpElem , "hidden" ) ;
574582 removeClass ( document . body , "blur" ) ;
575583 }
576584 } else {
0 commit comments