1
- // From rust:
2
- /* global ALIASES */
3
-
4
1
// Local js definitions:
5
- /* global addClass, getCurrentValue , hasClass */
6
- /* global onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
2
+ /* global addClass, getSettingValue , hasClass */
3
+ /* global onEach, onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
7
4
/* global hideThemeButtonState, showThemeButtonState */
8
5
9
6
if ( ! String . prototype . startsWith ) {
@@ -2214,7 +2211,7 @@ function defocusSearchBar() {
2214
2211
}
2215
2212
}
2216
2213
2217
- function toggleAllDocs ( pageId , fromAutoCollapse ) {
2214
+ function toggleAllDocs ( fromAutoCollapse ) {
2218
2215
var innerToggle = document . getElementById ( toggleAllDocsId ) ;
2219
2216
if ( ! innerToggle ) {
2220
2217
return ;
@@ -2257,14 +2254,14 @@ function defocusSearchBar() {
2257
2254
}
2258
2255
if ( ! parent || ! superParent || superParent . id !== "main" ||
2259
2256
hasClass ( parent , "impl" ) === false ) {
2260
- collapseDocs ( e , "hide" , pageId ) ;
2257
+ collapseDocs ( e , "hide" ) ;
2261
2258
}
2262
2259
} ) ;
2263
2260
}
2264
2261
}
2265
2262
}
2266
2263
2267
- function collapseDocs ( toggle , mode , pageId ) {
2264
+ function collapseDocs ( toggle , mode ) {
2268
2265
if ( ! toggle || ! toggle . parentNode ) {
2269
2266
return ;
2270
2267
}
@@ -2384,35 +2381,35 @@ function defocusSearchBar() {
2384
2381
}
2385
2382
}
2386
2383
2387
- function collapser ( pageId , e , collapse ) {
2384
+ function collapser ( e , collapse ) {
2388
2385
// inherent impl ids are like "impl" or impl-<number>'.
2389
2386
// they will never be hidden by default.
2390
2387
var n = e . parentElement ;
2391
2388
if ( n . id . match ( / ^ i m p l (?: - \d + ) ? $ / ) === null ) {
2392
2389
// Automatically minimize all non-inherent impls
2393
2390
if ( collapse || hasClass ( n , "impl" ) ) {
2394
- collapseDocs ( e , "hide" , pageId ) ;
2391
+ collapseDocs ( e , "hide" ) ;
2395
2392
}
2396
2393
}
2397
2394
}
2398
2395
2399
- function autoCollapse ( pageId , collapse ) {
2396
+ function autoCollapse ( collapse ) {
2400
2397
if ( collapse ) {
2401
- toggleAllDocs ( pageId , true ) ;
2398
+ toggleAllDocs ( true ) ;
2402
2399
} else if ( getSettingValue ( "auto-hide-trait-implementations" ) !== "false" ) {
2403
2400
var impl_list = document . getElementById ( "trait-implementations-list" ) ;
2404
2401
2405
2402
if ( impl_list !== null ) {
2406
2403
onEachLazy ( impl_list . getElementsByClassName ( "collapse-toggle" ) , function ( e ) {
2407
- collapser ( pageId , e , collapse ) ;
2404
+ collapser ( e , collapse ) ;
2408
2405
} ) ;
2409
2406
}
2410
2407
2411
2408
var blanket_list = document . getElementById ( "blanket-implementations-list" ) ;
2412
2409
2413
2410
if ( blanket_list !== null ) {
2414
2411
onEachLazy ( blanket_list . getElementsByClassName ( "collapse-toggle" ) , function ( e ) {
2415
- collapser ( pageId , e , collapse ) ;
2412
+ collapser ( e , collapse ) ;
2416
2413
} ) ;
2417
2414
}
2418
2415
}
@@ -2475,7 +2472,6 @@ function defocusSearchBar() {
2475
2472
var toggle = createSimpleToggle ( false ) ;
2476
2473
var hideMethodDocs = getSettingValue ( "auto-hide-method-docs" ) === "true" ;
2477
2474
var hideImplementors = getSettingValue ( "auto-collapse-implementors" ) !== "false" ;
2478
- var pageId = getPageId ( ) ;
2479
2475
2480
2476
var func = function ( e ) {
2481
2477
var next = e . nextElementSibling ;
@@ -2489,7 +2485,7 @@ function defocusSearchBar() {
2489
2485
var newToggle = toggle . cloneNode ( true ) ;
2490
2486
insertAfter ( newToggle , e . childNodes [ e . childNodes . length - 1 ] ) ;
2491
2487
if ( hideMethodDocs === true && hasClass ( e , "method" ) === true ) {
2492
- collapseDocs ( newToggle , "hide" , pageId ) ;
2488
+ collapseDocs ( newToggle , "hide" ) ;
2493
2489
}
2494
2490
}
2495
2491
} ;
@@ -2513,7 +2509,7 @@ function defocusSearchBar() {
2513
2509
// In case the option "auto-collapse implementors" is not set to false, we collapse
2514
2510
// all implementors.
2515
2511
if ( hideImplementors === true && e . parentNode . id === "implementors-list" ) {
2516
- collapseDocs ( newToggle , "hide" , pageId ) ;
2512
+ collapseDocs ( newToggle , "hide" ) ;
2517
2513
}
2518
2514
}
2519
2515
} ;
@@ -2527,7 +2523,7 @@ function defocusSearchBar() {
2527
2523
if ( e . id . match ( / ^ i m p l (?: - \d + ) ? $ / ) === null ) {
2528
2524
// Automatically minimize all non-inherent impls
2529
2525
if ( hasClass ( e , "impl" ) === true ) {
2530
- collapseDocs ( newToggle , "hide" , pageId ) ;
2526
+ collapseDocs ( newToggle , "hide" ) ;
2531
2527
}
2532
2528
}
2533
2529
} ;
@@ -2562,14 +2558,12 @@ function defocusSearchBar() {
2562
2558
}
2563
2559
onEachLazy ( document . getElementsByClassName ( "impl-items" ) , function ( e ) {
2564
2560
onEachLazy ( e . getElementsByClassName ( "associatedconstant" ) , func ) ;
2565
- var hiddenElems = e . getElementsByClassName ( "hidden" ) ;
2566
- var needToggle = false ;
2567
-
2568
- var needToggle = onEachLazy ( e . getElementsByClassName ( "hidden" ) , function ( hiddenElem ) {
2569
- if ( hasClass ( hiddenElem , "content" ) === false &&
2570
- hasClass ( hiddenElem , "docblock" ) === false ) {
2571
- return true ;
2572
- }
2561
+ // We transform the DOM iterator into a vec of DOM elements to prevent performance
2562
+ // issues on webkit browsers.
2563
+ var hiddenElems = Array . prototype . slice . call ( e . getElementsByClassName ( "hidden" ) ) ;
2564
+ var needToggle = hiddenElems . some ( function ( hiddenElem ) {
2565
+ return hasClass ( hiddenElem , "content" ) === false &&
2566
+ hasClass ( hiddenElem , "docblock" ) === false ;
2573
2567
} ) ;
2574
2568
if ( needToggle === true ) {
2575
2569
var inner_toggle = newToggle . cloneNode ( true ) ;
@@ -2672,10 +2666,10 @@ function defocusSearchBar() {
2672
2666
2673
2667
onEachLazy ( document . getElementsByClassName ( "docblock" ) , buildToggleWrapper ) ;
2674
2668
onEachLazy ( document . getElementsByClassName ( "sub-variant" ) , buildToggleWrapper ) ;
2675
- var pageId = getPageId ( ) ;
2676
2669
2677
- autoCollapse ( pageId , getSettingValue ( "collapse" ) === "true" ) ;
2670
+ autoCollapse ( getSettingValue ( "collapse" ) === "true" ) ;
2678
2671
2672
+ var pageId = getPageId ( ) ;
2679
2673
if ( pageId !== null ) {
2680
2674
expandSection ( pageId ) ;
2681
2675
}
0 commit comments