corrade-nucleus-nucleons – Blame information for rev
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | define( [ |
2 | "../core", |
||
3 | "../data/var/dataPriv", |
||
4 | "../css/var/isHiddenWithinTree" |
||
5 | ], function( jQuery, dataPriv, isHiddenWithinTree ) { |
||
6 | |||
7 | "use strict"; |
||
8 | |||
9 | var defaultDisplayMap = {}; |
||
10 | |||
11 | function getDefaultDisplay( elem ) { |
||
12 | var temp, |
||
13 | doc = elem.ownerDocument, |
||
14 | nodeName = elem.nodeName, |
||
15 | display = defaultDisplayMap[ nodeName ]; |
||
16 | |||
17 | if ( display ) { |
||
18 | return display; |
||
19 | } |
||
20 | |||
21 | temp = doc.body.appendChild( doc.createElement( nodeName ) ); |
||
22 | display = jQuery.css( temp, "display" ); |
||
23 | |||
24 | temp.parentNode.removeChild( temp ); |
||
25 | |||
26 | if ( display === "none" ) { |
||
27 | display = "block"; |
||
28 | } |
||
29 | defaultDisplayMap[ nodeName ] = display; |
||
30 | |||
31 | return display; |
||
32 | } |
||
33 | |||
34 | function showHide( elements, show ) { |
||
35 | var display, elem, |
||
36 | values = [], |
||
37 | index = 0, |
||
38 | length = elements.length; |
||
39 | |||
40 | // Determine new display value for elements that need to change |
||
41 | for ( ; index < length; index++ ) { |
||
42 | elem = elements[ index ]; |
||
43 | if ( !elem.style ) { |
||
44 | continue; |
||
45 | } |
||
46 | |||
47 | display = elem.style.display; |
||
48 | if ( show ) { |
||
49 | |||
50 | // Since we force visibility upon cascade-hidden elements, an immediate (and slow) |
||
51 | // check is required in this first loop unless we have a nonempty display value (either |
||
52 | // inline or about-to-be-restored) |
||
53 | if ( display === "none" ) { |
||
54 | values[ index ] = dataPriv.get( elem, "display" ) || null; |
||
55 | if ( !values[ index ] ) { |
||
56 | elem.style.display = ""; |
||
57 | } |
||
58 | } |
||
59 | if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { |
||
60 | values[ index ] = getDefaultDisplay( elem ); |
||
61 | } |
||
62 | } else { |
||
63 | if ( display !== "none" ) { |
||
64 | values[ index ] = "none"; |
||
65 | |||
66 | // Remember what we're overwriting |
||
67 | dataPriv.set( elem, "display", display ); |
||
68 | } |
||
69 | } |
||
70 | } |
||
71 | |||
72 | // Set the display of the elements in a second loop to avoid constant reflow |
||
73 | for ( index = 0; index < length; index++ ) { |
||
74 | if ( values[ index ] != null ) { |
||
75 | elements[ index ].style.display = values[ index ]; |
||
76 | } |
||
77 | } |
||
78 | |||
79 | return elements; |
||
80 | } |
||
81 | |||
82 | jQuery.fn.extend( { |
||
83 | show: function() { |
||
84 | return showHide( this, true ); |
||
85 | }, |
||
86 | hide: function() { |
||
87 | return showHide( this ); |
||
88 | }, |
||
89 | toggle: function( state ) { |
||
90 | if ( typeof state === "boolean" ) { |
||
91 | return state ? this.show() : this.hide(); |
||
92 | } |
||
93 | |||
94 | return this.each( function() { |
||
95 | if ( isHiddenWithinTree( this ) ) { |
||
96 | jQuery( this ).show(); |
||
97 | } else { |
||
98 | jQuery( this ).hide(); |
||
99 | } |
||
100 | } ); |
||
101 | } |
||
102 | } ); |
||
103 | |||
104 | return showHide; |
||
105 | } ); |