Mercurial > hg > ismi-richfaces
comparison src/main/webapp/imageServer/resources/js/jquery-ui-1.10.4/ui/jquery.ui.effect-scale.js @ 7:764f47286679
(none)
author | jurzua |
---|---|
date | Wed, 29 Oct 2014 14:28:34 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
6:ded3bccf2cf9 | 7:764f47286679 |
---|---|
1 /*! | |
2 * jQuery UI Effects Scale 1.10.4 | |
3 * http://jqueryui.com | |
4 * | |
5 * Copyright 2014 jQuery Foundation and other contributors | |
6 * Released under the MIT license. | |
7 * http://jquery.org/license | |
8 * | |
9 * http://api.jqueryui.com/scale-effect/ | |
10 * | |
11 * Depends: | |
12 * jquery.ui.effect.js | |
13 */ | |
14 (function( $, undefined ) { | |
15 | |
16 $.effects.effect.puff = function( o, done ) { | |
17 var elem = $( this ), | |
18 mode = $.effects.setMode( elem, o.mode || "hide" ), | |
19 hide = mode === "hide", | |
20 percent = parseInt( o.percent, 10 ) || 150, | |
21 factor = percent / 100, | |
22 original = { | |
23 height: elem.height(), | |
24 width: elem.width(), | |
25 outerHeight: elem.outerHeight(), | |
26 outerWidth: elem.outerWidth() | |
27 }; | |
28 | |
29 $.extend( o, { | |
30 effect: "scale", | |
31 queue: false, | |
32 fade: true, | |
33 mode: mode, | |
34 complete: done, | |
35 percent: hide ? percent : 100, | |
36 from: hide ? | |
37 original : | |
38 { | |
39 height: original.height * factor, | |
40 width: original.width * factor, | |
41 outerHeight: original.outerHeight * factor, | |
42 outerWidth: original.outerWidth * factor | |
43 } | |
44 }); | |
45 | |
46 elem.effect( o ); | |
47 }; | |
48 | |
49 $.effects.effect.scale = function( o, done ) { | |
50 | |
51 // Create element | |
52 var el = $( this ), | |
53 options = $.extend( true, {}, o ), | |
54 mode = $.effects.setMode( el, o.mode || "effect" ), | |
55 percent = parseInt( o.percent, 10 ) || | |
56 ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), | |
57 direction = o.direction || "both", | |
58 origin = o.origin, | |
59 original = { | |
60 height: el.height(), | |
61 width: el.width(), | |
62 outerHeight: el.outerHeight(), | |
63 outerWidth: el.outerWidth() | |
64 }, | |
65 factor = { | |
66 y: direction !== "horizontal" ? (percent / 100) : 1, | |
67 x: direction !== "vertical" ? (percent / 100) : 1 | |
68 }; | |
69 | |
70 // We are going to pass this effect to the size effect: | |
71 options.effect = "size"; | |
72 options.queue = false; | |
73 options.complete = done; | |
74 | |
75 // Set default origin and restore for show/hide | |
76 if ( mode !== "effect" ) { | |
77 options.origin = origin || ["middle","center"]; | |
78 options.restore = true; | |
79 } | |
80 | |
81 options.from = o.from || ( mode === "show" ? { | |
82 height: 0, | |
83 width: 0, | |
84 outerHeight: 0, | |
85 outerWidth: 0 | |
86 } : original ); | |
87 options.to = { | |
88 height: original.height * factor.y, | |
89 width: original.width * factor.x, | |
90 outerHeight: original.outerHeight * factor.y, | |
91 outerWidth: original.outerWidth * factor.x | |
92 }; | |
93 | |
94 // Fade option to support puff | |
95 if ( options.fade ) { | |
96 if ( mode === "show" ) { | |
97 options.from.opacity = 0; | |
98 options.to.opacity = 1; | |
99 } | |
100 if ( mode === "hide" ) { | |
101 options.from.opacity = 1; | |
102 options.to.opacity = 0; | |
103 } | |
104 } | |
105 | |
106 // Animate | |
107 el.effect( options ); | |
108 | |
109 }; | |
110 | |
111 $.effects.effect.size = function( o, done ) { | |
112 | |
113 // Create element | |
114 var original, baseline, factor, | |
115 el = $( this ), | |
116 props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], | |
117 | |
118 // Always restore | |
119 props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], | |
120 | |
121 // Copy for children | |
122 props2 = [ "width", "height", "overflow" ], | |
123 cProps = [ "fontSize" ], | |
124 vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], | |
125 hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], | |
126 | |
127 // Set options | |
128 mode = $.effects.setMode( el, o.mode || "effect" ), | |
129 restore = o.restore || mode !== "effect", | |
130 scale = o.scale || "both", | |
131 origin = o.origin || [ "middle", "center" ], | |
132 position = el.css( "position" ), | |
133 props = restore ? props0 : props1, | |
134 zero = { | |
135 height: 0, | |
136 width: 0, | |
137 outerHeight: 0, | |
138 outerWidth: 0 | |
139 }; | |
140 | |
141 if ( mode === "show" ) { | |
142 el.show(); | |
143 } | |
144 original = { | |
145 height: el.height(), | |
146 width: el.width(), | |
147 outerHeight: el.outerHeight(), | |
148 outerWidth: el.outerWidth() | |
149 }; | |
150 | |
151 if ( o.mode === "toggle" && mode === "show" ) { | |
152 el.from = o.to || zero; | |
153 el.to = o.from || original; | |
154 } else { | |
155 el.from = o.from || ( mode === "show" ? zero : original ); | |
156 el.to = o.to || ( mode === "hide" ? zero : original ); | |
157 } | |
158 | |
159 // Set scaling factor | |
160 factor = { | |
161 from: { | |
162 y: el.from.height / original.height, | |
163 x: el.from.width / original.width | |
164 }, | |
165 to: { | |
166 y: el.to.height / original.height, | |
167 x: el.to.width / original.width | |
168 } | |
169 }; | |
170 | |
171 // Scale the css box | |
172 if ( scale === "box" || scale === "both" ) { | |
173 | |
174 // Vertical props scaling | |
175 if ( factor.from.y !== factor.to.y ) { | |
176 props = props.concat( vProps ); | |
177 el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); | |
178 el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); | |
179 } | |
180 | |
181 // Horizontal props scaling | |
182 if ( factor.from.x !== factor.to.x ) { | |
183 props = props.concat( hProps ); | |
184 el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); | |
185 el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); | |
186 } | |
187 } | |
188 | |
189 // Scale the content | |
190 if ( scale === "content" || scale === "both" ) { | |
191 | |
192 // Vertical props scaling | |
193 if ( factor.from.y !== factor.to.y ) { | |
194 props = props.concat( cProps ).concat( props2 ); | |
195 el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); | |
196 el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); | |
197 } | |
198 } | |
199 | |
200 $.effects.save( el, props ); | |
201 el.show(); | |
202 $.effects.createWrapper( el ); | |
203 el.css( "overflow", "hidden" ).css( el.from ); | |
204 | |
205 // Adjust | |
206 if (origin) { // Calculate baseline shifts | |
207 baseline = $.effects.getBaseline( origin, original ); | |
208 el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; | |
209 el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; | |
210 el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; | |
211 el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; | |
212 } | |
213 el.css( el.from ); // set top & left | |
214 | |
215 // Animate | |
216 if ( scale === "content" || scale === "both" ) { // Scale the children | |
217 | |
218 // Add margins/font-size | |
219 vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); | |
220 hProps = hProps.concat([ "marginLeft", "marginRight" ]); | |
221 props2 = props0.concat(vProps).concat(hProps); | |
222 | |
223 el.find( "*[width]" ).each( function(){ | |
224 var child = $( this ), | |
225 c_original = { | |
226 height: child.height(), | |
227 width: child.width(), | |
228 outerHeight: child.outerHeight(), | |
229 outerWidth: child.outerWidth() | |
230 }; | |
231 if (restore) { | |
232 $.effects.save(child, props2); | |
233 } | |
234 | |
235 child.from = { | |
236 height: c_original.height * factor.from.y, | |
237 width: c_original.width * factor.from.x, | |
238 outerHeight: c_original.outerHeight * factor.from.y, | |
239 outerWidth: c_original.outerWidth * factor.from.x | |
240 }; | |
241 child.to = { | |
242 height: c_original.height * factor.to.y, | |
243 width: c_original.width * factor.to.x, | |
244 outerHeight: c_original.height * factor.to.y, | |
245 outerWidth: c_original.width * factor.to.x | |
246 }; | |
247 | |
248 // Vertical props scaling | |
249 if ( factor.from.y !== factor.to.y ) { | |
250 child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); | |
251 child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); | |
252 } | |
253 | |
254 // Horizontal props scaling | |
255 if ( factor.from.x !== factor.to.x ) { | |
256 child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); | |
257 child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); | |
258 } | |
259 | |
260 // Animate children | |
261 child.css( child.from ); | |
262 child.animate( child.to, o.duration, o.easing, function() { | |
263 | |
264 // Restore children | |
265 if ( restore ) { | |
266 $.effects.restore( child, props2 ); | |
267 } | |
268 }); | |
269 }); | |
270 } | |
271 | |
272 // Animate | |
273 el.animate( el.to, { | |
274 queue: false, | |
275 duration: o.duration, | |
276 easing: o.easing, | |
277 complete: function() { | |
278 if ( el.to.opacity === 0 ) { | |
279 el.css( "opacity", el.from.opacity ); | |
280 } | |
281 if( mode === "hide" ) { | |
282 el.hide(); | |
283 } | |
284 $.effects.restore( el, props ); | |
285 if ( !restore ) { | |
286 | |
287 // we need to calculate our new positioning based on the scaling | |
288 if ( position === "static" ) { | |
289 el.css({ | |
290 position: "relative", | |
291 top: el.to.top, | |
292 left: el.to.left | |
293 }); | |
294 } else { | |
295 $.each([ "top", "left" ], function( idx, pos ) { | |
296 el.css( pos, function( _, str ) { | |
297 var val = parseInt( str, 10 ), | |
298 toRef = idx ? el.to.left : el.to.top; | |
299 | |
300 // if original was "auto", recalculate the new value from wrapper | |
301 if ( str === "auto" ) { | |
302 return toRef + "px"; | |
303 } | |
304 | |
305 return val + toRef + "px"; | |
306 }); | |
307 }); | |
308 } | |
309 } | |
310 | |
311 $.effects.removeWrapper( el ); | |
312 done(); | |
313 } | |
314 }); | |
315 | |
316 }; | |
317 | |
318 })(jQuery); |