1
+ // ignore-tidy-filelength
1
2
// Local js definitions:
2
3
/* global addClass, getSettingValue, hasClass */
3
4
/* global onEach, onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
@@ -374,28 +375,35 @@ function defocusSearchBar() {
374
375
}
375
376
}
376
377
377
- function getHelpElement ( ) {
378
- buildHelperPopup ( ) ;
378
+ function getHelpElement ( build ) {
379
+ if ( build !== false ) {
380
+ buildHelperPopup ( ) ;
381
+ }
379
382
return document . getElementById ( "help" ) ;
380
383
}
381
384
382
385
function displayHelp ( display , ev , help ) {
383
- help = help ? help : getHelpElement ( ) ;
384
386
if ( display === true ) {
387
+ help = help ? help : getHelpElement ( true ) ;
385
388
if ( hasClass ( help , "hidden" ) ) {
386
389
ev . preventDefault ( ) ;
387
390
removeClass ( help , "hidden" ) ;
388
391
addClass ( document . body , "blur" ) ;
389
392
}
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
+ }
394
402
}
395
403
}
396
404
397
405
function handleEscape ( ev ) {
398
- var help = getHelpElement ( ) ;
406
+ var help = getHelpElement ( false ) ;
399
407
var search = getSearchElement ( ) ;
400
408
if ( hasClass ( help , "hidden" ) === false ) {
401
409
displayHelp ( false , ev , help ) ;
@@ -558,6 +566,7 @@ function defocusSearchBar() {
558
566
} ( ) ) ;
559
567
560
568
document . addEventListener ( "click" , function ( ev ) {
569
+ var helpElem = getHelpElement ( false ) ;
561
570
if ( hasClass ( ev . target , "help-button" ) ) {
562
571
displayHelp ( true , ev ) ;
563
572
} else if ( hasClass ( ev . target , "collapse-toggle" ) ) {
@@ -566,11 +575,10 @@ function defocusSearchBar() {
566
575
collapseDocs ( ev . target . parentNode , "toggle" ) ;
567
576
} else if ( ev . target . tagName === "SPAN" && hasClass ( ev . target . parentNode , "line-numbers" ) ) {
568
577
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 ) ;
572
580
if ( is_inside_help_popup === false ) {
573
- addClass ( help , "hidden" ) ;
581
+ addClass ( helpElem , "hidden" ) ;
574
582
removeClass ( document . body , "blur" ) ;
575
583
}
576
584
} else {
0 commit comments