annotate src/main/webapp/imageServer/resources/js/jquery-ui-1.10.4/ui/jquery.ui.effect-scale.js @ 205:f719d73383db

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