corrade-http-templates – Blame information for rev 57

Subversion Repositories:
Rev:
Rev Author Line No. Line
57 office 1 /*!
2 * jQuery UI Effects Size 1.12.1
3 * http://jqueryui.com
4 *
5 * Copyright jQuery Foundation and other contributors
6 * Released under the MIT license.
7 * http://jquery.org/license
8 */
9  
10 //>>label: Size Effect
11 //>>group: Effects
12 //>>description: Resize an element to a specified width and height.
13 //>>docs: http://api.jqueryui.com/size-effect/
14 //>>demos: http://jqueryui.com/effect/
15  
16 ( function( factory ) {
17 if ( typeof define === "function" && define.amd ) {
18  
19 // AMD. Register as an anonymous module.
20 define( [
21 "jquery",
22 "../version",
23 "../effect"
24 ], factory );
25 } else {
26  
27 // Browser globals
28 factory( jQuery );
29 }
30 }( function( $ ) {
31  
32 return $.effects.define( "size", function( options, done ) {
33  
34 // Create element
35 var baseline, factor, temp,
36 element = $( this ),
37  
38 // Copy for children
39 cProps = [ "fontSize" ],
40 vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
41 hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
42  
43 // Set options
44 mode = options.mode,
45 restore = mode !== "effect",
46 scale = options.scale || "both",
47 origin = options.origin || [ "middle", "center" ],
48 position = element.css( "position" ),
49 pos = element.position(),
50 original = $.effects.scaledDimensions( element ),
51 from = options.from || original,
52 to = options.to || $.effects.scaledDimensions( element, 0 );
53  
54 $.effects.createPlaceholder( element );
55  
56 if ( mode === "show" ) {
57 temp = from;
58 from = to;
59 to = temp;
60 }
61  
62 // Set scaling factor
63 factor = {
64 from: {
65 y: from.height / original.height,
66 x: from.width / original.width
67 },
68 to: {
69 y: to.height / original.height,
70 x: to.width / original.width
71 }
72 };
73  
74 // Scale the css box
75 if ( scale === "box" || scale === "both" ) {
76  
77 // Vertical props scaling
78 if ( factor.from.y !== factor.to.y ) {
79 from = $.effects.setTransition( element, vProps, factor.from.y, from );
80 to = $.effects.setTransition( element, vProps, factor.to.y, to );
81 }
82  
83 // Horizontal props scaling
84 if ( factor.from.x !== factor.to.x ) {
85 from = $.effects.setTransition( element, hProps, factor.from.x, from );
86 to = $.effects.setTransition( element, hProps, factor.to.x, to );
87 }
88 }
89  
90 // Scale the content
91 if ( scale === "content" || scale === "both" ) {
92  
93 // Vertical props scaling
94 if ( factor.from.y !== factor.to.y ) {
95 from = $.effects.setTransition( element, cProps, factor.from.y, from );
96 to = $.effects.setTransition( element, cProps, factor.to.y, to );
97 }
98 }
99  
100 // Adjust the position properties based on the provided origin points
101 if ( origin ) {
102 baseline = $.effects.getBaseline( origin, original );
103 from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
104 from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
105 to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
106 to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
107 }
108 element.css( from );
109  
110 // Animate the children if desired
111 if ( scale === "content" || scale === "both" ) {
112  
113 vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
114 hProps = hProps.concat( [ "marginLeft", "marginRight" ] );
115  
116 // Only animate children with width attributes specified
117 // TODO: is this right? should we include anything with css width specified as well
118 element.find( "*[width]" ).each( function() {
119 var child = $( this ),
120 childOriginal = $.effects.scaledDimensions( child ),
121 childFrom = {
122 height: childOriginal.height * factor.from.y,
123 width: childOriginal.width * factor.from.x,
124 outerHeight: childOriginal.outerHeight * factor.from.y,
125 outerWidth: childOriginal.outerWidth * factor.from.x
126 },
127 childTo = {
128 height: childOriginal.height * factor.to.y,
129 width: childOriginal.width * factor.to.x,
130 outerHeight: childOriginal.height * factor.to.y,
131 outerWidth: childOriginal.width * factor.to.x
132 };
133  
134 // Vertical props scaling
135 if ( factor.from.y !== factor.to.y ) {
136 childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
137 childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
138 }
139  
140 // Horizontal props scaling
141 if ( factor.from.x !== factor.to.x ) {
142 childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
143 childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
144 }
145  
146 if ( restore ) {
147 $.effects.saveStyle( child );
148 }
149  
150 // Animate children
151 child.css( childFrom );
152 child.animate( childTo, options.duration, options.easing, function() {
153  
154 // Restore children
155 if ( restore ) {
156 $.effects.restoreStyle( child );
157 }
158 } );
159 } );
160 }
161  
162 // Animate
163 element.animate( to, {
164 queue: false,
165 duration: options.duration,
166 easing: options.easing,
167 complete: function() {
168  
169 var offset = element.offset();
170  
171 if ( to.opacity === 0 ) {
172 element.css( "opacity", from.opacity );
173 }
174  
175 if ( !restore ) {
176 element
177 .css( "position", position === "static" ? "relative" : position )
178 .offset( offset );
179  
180 // Need to save style here so that automatic style restoration
181 // doesn't restore to the original styles from before the animation.
182 $.effects.saveStyle( element );
183 }
184  
185 done();
186 }
187 } );
188  
189 } );
190  
191 } ) );