@@ -17,26 +17,19 @@ if (typeof _sageInitialized === 'undefined') {
17
17
Array . prototype . slice . call ( document . querySelectorAll ( selector ) , 0 ) . forEach ( callback )
18
18
} ,
19
19
20
- hasClass : function ( target , className ) {
21
- if ( ! target . classList ) return false ;
22
-
23
- if ( typeof className === 'undefined' ) {
24
- className = '_sage-show' ;
20
+ hasClass : function ( target , className = '_sage-show' ) {
21
+ if ( ! target . classList ) {
22
+ return false ;
25
23
}
24
+
26
25
return target . classList . contains ( className ) ;
27
26
} ,
28
27
29
- addClass : function ( target , className ) {
30
- if ( typeof className === 'undefined' ) {
31
- className = '_sage-show' ;
32
- }
28
+ addClass : function ( target , className = '_sage-show' ) {
33
29
target . classList . add ( className ) ;
34
30
} ,
35
31
36
- removeClass : function ( target , className ) {
37
- if ( typeof className === 'undefined' ) {
38
- className = '_sage-show' ;
39
- }
32
+ removeClass : function ( target , className = '_sage-show' ) {
40
33
target . classList . remove ( className ) ;
41
34
return target ;
42
35
} ,
@@ -87,13 +80,16 @@ if (typeof _sageInitialized === 'undefined') {
87
80
_sage . toggle ( element , hide ) ;
88
81
} ,
89
82
90
- toggleAll : function ( caret ) {
83
+ toggleAll : function ( show ) {
91
84
const elements = document . getElementsByClassName ( '_sage-parent' )
92
85
let i = elements . length
93
- const visible = _sage . hasClass ( caret . parentNode ) ;
94
86
95
87
while ( i -- ) {
96
- _sage . toggle ( elements [ i ] , visible ) ;
88
+ if ( show ) {
89
+ _sage . addClass ( elements [ i ] ) ;
90
+ } else {
91
+ _sage . removeClass ( elements [ i ] ) ;
92
+ }
97
93
}
98
94
} ,
99
95
@@ -115,7 +111,9 @@ if (typeof _sageInitialized === 'undefined') {
115
111
isSibling : function ( el ) {
116
112
for ( ; ; ) {
117
113
el = el . parentNode ;
118
- if ( ! el || _sage . hasClass ( el , '_sage' ) ) break ;
114
+ if ( ! el || _sage . hasClass ( el , '_sage' ) ) {
115
+ break ;
116
+ }
119
117
}
120
118
121
119
return ! ! el ;
@@ -216,11 +214,13 @@ if (typeof _sageInitialized === 'undefined') {
216
214
}
217
215
} ;
218
216
219
- window . addEventListener ( " click" , function ( e ) {
217
+ window . addEventListener ( ' click' , function ( e ) {
220
218
let target = e . target
221
219
, tagName = target . tagName ;
222
220
223
- if ( ! _sage . isSibling ( target ) ) return ;
221
+ if ( ! _sage . isSibling ( target ) ) {
222
+ return ;
223
+ }
224
224
225
225
// auto-select name of variable
226
226
if ( tagName === 'DFN' ) {
@@ -240,7 +240,9 @@ if (typeof _sageInitialized === 'undefined') {
240
240
if ( tagName === 'LI' && target . parentNode . className === '_sage-tabs' ) {
241
241
if ( target . className !== '_sage-active-tab' ) {
242
242
_sage . switchTab ( target ) ;
243
- if ( _sage . currentPlus !== - 1 ) _sage . fetchVisiblePluses ( ) ;
243
+ if ( _sage . currentPlus !== - 1 ) {
244
+ _sage . fetchVisiblePluses ( ) ;
245
+ }
244
246
}
245
247
return false ;
246
248
}
@@ -259,7 +261,9 @@ if (typeof _sageInitialized === 'undefined') {
259
261
target . _sageTimer -- ;
260
262
} else {
261
263
_sage . toggleChildren ( target . parentNode ) ; // <dt>
262
- if ( _sage . currentPlus !== - 1 ) _sage . fetchVisiblePluses ( ) ;
264
+ if ( _sage . currentPlus !== - 1 ) {
265
+ _sage . fetchVisiblePluses ( ) ;
266
+ }
263
267
}
264
268
} , 300 ) ;
265
269
}
@@ -268,7 +272,9 @@ if (typeof _sageInitialized === 'undefined') {
268
272
return false ;
269
273
} else if ( _sage . hasClass ( target , '_sage-parent' ) ) {
270
274
_sage . toggle ( target ) ;
271
- if ( _sage . currentPlus !== - 1 ) _sage . fetchVisiblePluses ( ) ;
275
+ if ( _sage . currentPlus !== - 1 ) {
276
+ _sage . fetchVisiblePluses ( ) ;
277
+ }
272
278
return false ;
273
279
} else if ( _sage . hasClass ( target , '_sage-ide-link' ) ) {
274
280
fetch ( target . href ) ;
@@ -289,29 +295,38 @@ if (typeof _sageInitialized === 'undefined') {
289
295
}
290
296
} , false ) ;
291
297
292
- window . addEventListener ( " dblclick" , function ( e ) {
298
+ window . addEventListener ( ' dblclick' , function ( e ) {
293
299
const target = e . target ;
294
- if ( ! _sage . isSibling ( target ) ) return ;
300
+ if ( ! _sage . isSibling ( target ) ) {
301
+ return ;
302
+ }
295
303
296
304
if ( target . tagName === 'NAV' ) {
297
305
target . _sageTimer = 2 ;
298
- _sage . toggleAll ( target ) ;
299
- if ( _sage . currentPlus !== - 1 ) _sage . fetchVisiblePluses ( ) ;
306
+ _sage . toggleAll ( _sage . hasClass ( target ) ) ;
307
+ if ( _sage . currentPlus !== - 1 ) {
308
+ _sage . fetchVisiblePluses ( ) ;
309
+ }
300
310
e . stopPropagation ( ) ;
301
311
}
302
312
} , false ) ;
303
313
304
314
// keyboard navigation
305
315
window . onkeydown = function ( e ) { // direct assignment is used to have priority over ex FAYT
306
-
307
- // do nothing if alt/ctrl key is pressed or if we're actually typing somewhere
308
- if ( [ "INPUT" , "TEXTAREA" ] . includes ( e . target . tagName ) || e . altKey || e . ctrlKey ) return ;
309
-
310
316
// todo use e.key https://www.toptal.com/developers/keycode
311
- const keyCode = e . keyCode
312
- , shiftKey = e . shiftKey
317
+ const keyCode = e . keyCode ;
313
318
let i = _sage . currentPlus ;
314
319
320
+ // user pressed ctrl+f
321
+ if ( keyCode === 70 && e . ctrlKey ) {
322
+ _sage . toggleAll ( true ) ;
323
+ return ;
324
+ }
325
+
326
+ // do nothing if alt/ctrl key is pressed or if we're actually typing somewhere
327
+ if ( [ 'INPUT' , 'TEXTAREA' ] . includes ( e . target . tagName ) || e . altKey || e . ctrlKey ) {
328
+ return ;
329
+ }
315
330
316
331
if ( keyCode === 9 ) { // TAB jumps out of navigation
317
332
_sage . keyCallBacks . cleanup ( - 1 ) ;
@@ -327,7 +342,9 @@ if (typeof _sageInitialized === 'undefined') {
327
342
return false ;
328
343
}
329
344
} else {
330
- if ( i === - 1 ) return ;
345
+ if ( i === - 1 ) {
346
+ return ;
347
+ }
331
348
332
349
if ( keyCode === 38 ) { // ARROW UP : moves up
333
350
return _sage . keyCallBacks . moveCursor ( true , i ) ;
@@ -398,16 +415,20 @@ if (typeof _sageInitialized === 'undefined') {
398
415
}
399
416
} ;
400
417
401
- window . addEventListener ( " load" , function ( ) { // colorize microtime results relative to others
418
+ window . addEventListener ( ' load' , function ( ) { // colorize microtime results relative to others
402
419
const elements = Array . prototype . slice . call ( document . querySelectorAll ( '._sage-microtime' ) , 0 ) ;
403
420
let min = Infinity
404
421
, max = - Infinity ;
405
422
406
423
elements . forEach ( function ( el ) {
407
424
const val = parseFloat ( el . innerHTML ) ;
408
425
409
- if ( min > val ) min = val ;
410
- if ( max < val ) max = val ;
426
+ if ( min > val ) {
427
+ min = val ;
428
+ }
429
+ if ( max < val ) {
430
+ max = val ;
431
+ }
411
432
} ) ;
412
433
413
434
elements . forEach ( function ( el ) {
@@ -421,7 +442,9 @@ if (typeof _sageInitialized === 'undefined') {
421
442
422
443
// debug purposes only, removed in minified source
423
444
function clg ( i ) {
424
- if ( ! window . console ) return ;
445
+ if ( ! window . console ) {
446
+ return ;
447
+ }
425
448
const l = arguments . length ;
426
449
let o = 0 ;
427
450
while ( o < l ) console . log ( arguments [ o ++ ] )
0 commit comments