PluginProbe
RSVP and Event Management / 1.3.0
RSVP and Event Management v1.3.0
trunk 0.5.0 0.6.0 0.7.0 0.8.0 0.9.0 0.9.5 1.0.0 1.1.0 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.5.0 1.6.0 1.6.1 1.6.2 1.6.5 1.7.0 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 All 136 releases
rsvp / jquery-ui-1.7.2.custom / development-bundle / ui / effects.scale.js

effects.scale.js in RSVP and Event Management 1.3.0, at jquery-ui-1.7.2.custom/development-bundle/ui/effects.scale.js

181 lines 6.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * jQuery UI Effects Scale 1.7.2
3 *
4 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5 * Dual licensed under the MIT (MIT-LICENSE.txt)
6 * and GPL (GPL-LICENSE.txt) licenses.
7 *
8 * http://docs.jquery.com/UI/Effects/Scale
9 *
10 * Depends:
11 * effects.core.js
12 */
13 (function($) {
14
15 $.effects.puff = function(o) {
16
17 return this.queue(function() {
18
19 // Create element
20 var el = $(this);
21
22 // Set options
23 var options = $.extend(true, {}, o.options);
24 var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode
25 var percent = parseInt(o.options.percent,10) || 150; // Set default puff percent
26 options.fade = true; // It's not a puff if it doesn't fade! :)
27 var original = {height: el.height(), width: el.width()}; // Save original
28
29 // Adjust
30 var factor = percent / 100;
31 el.from = (mode == 'hide') ? original : {height: original.height * factor, width: original.width * factor};
32
33 // Animation
34 options.from = el.from;
35 options.percent = (mode == 'hide') ? percent : 100;
36 options.mode = mode;
37
38 // Animate
39 el.effect('scale', options, o.duration, o.callback);
40 el.dequeue();
41 });
42
43 };
44
45 $.effects.scale = function(o) {
46
47 return this.queue(function() {
48
49 // Create element
50 var el = $(this);
51
52 // Set options
53 var options = $.extend(true, {}, o.options);
54 var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
55 var percent = parseInt(o.options.percent,10) || (parseInt(o.options.percent,10) == 0 ? 0 : (mode == 'hide' ? 0 : 100)); // Set default scaling percent
56 var direction = o.options.direction || 'both'; // Set default axis
57 var origin = o.options.origin; // The origin of the scaling
58 if (mode != 'effect') { // Set default origin and restore for show/hide
59 options.origin = origin || ['middle','center'];
60 options.restore = true;
61 }
62 var original = {height: el.height(), width: el.width()}; // Save original
63 el.from = o.options.from || (mode == 'show' ? {height: 0, width: 0} : original); // Default from state
64
65 // Adjust
66 var factor = { // Set scaling factor
67 y: direction != 'horizontal' ? (percent / 100) : 1,
68 x: direction != 'vertical' ? (percent / 100) : 1
69 };
70 el.to = {height: original.height * factor.y, width: original.width * factor.x}; // Set to state
71
72 if (o.options.fade) { // Fade option to support puff
73 if (mode == 'show') {el.from.opacity = 0; el.to.opacity = 1;};
74 if (mode == 'hide') {el.from.opacity = 1; el.to.opacity = 0;};
75 };
76
77 // Animation
78 options.from = el.from; options.to = el.to; options.mode = mode;
79
80 // Animate
81 el.effect('size', options, o.duration, o.callback);
82 el.dequeue();
83 });
84
85 };
86
87 $.effects.size = function(o) {
88
89 return this.queue(function() {
90
91 // Create element
92 var el = $(this), props = ['position','top','left','width','height','overflow','opacity'];
93 var props1 = ['position','top','left','overflow','opacity']; // Always restore
94 var props2 = ['width','height','overflow']; // Copy for children
95 var cProps = ['fontSize'];
96 var vProps = ['borderTopWidth', 'borderBottomWidth', 'paddingTop', 'paddingBottom'];
97 var hProps = ['borderLeftWidth', 'borderRightWidth', 'paddingLeft', 'paddingRight'];
98
99 // Set options
100 var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode
101 var restore = o.options.restore || false; // Default restore
102 var scale = o.options.scale || 'both'; // Default scale mode
103 var origin = o.options.origin; // The origin of the sizing
104 var original = {height: el.height(), width: el.width()}; // Save original
105 el.from = o.options.from || original; // Default from state
106 el.to = o.options.to || original; // Default to state
107 // Adjust
108 if (origin) { // Calculate baseline shifts
109 var baseline = $.effects.getBaseline(origin, original);
110 el.from.top = (original.height - el.from.height) * baseline.y;
111 el.from.left = (original.width - el.from.width) * baseline.x;
112 el.to.top = (original.height - el.to.height) * baseline.y;
113 el.to.left = (original.width - el.to.width) * baseline.x;
114 };
115 var factor = { // Set scaling factor
116 from: {y: el.from.height / original.height, x: el.from.width / original.width},
117 to: {y: el.to.height / original.height, x: el.to.width / original.width}
118 };
119 if (scale == 'box' || scale == 'both') { // Scale the css box
120 if (factor.from.y != factor.to.y) { // Vertical props scaling
121 props = props.concat(vProps);
122 el.from = $.effects.setTransition(el, vProps, factor.from.y, el.from);
123 el.to = $.effects.setTransition(el, vProps, factor.to.y, el.to);
124 };
125 if (factor.from.x != factor.to.x) { // Horizontal props scaling
126 props = props.concat(hProps);
127 el.from = $.effects.setTransition(el, hProps, factor.from.x, el.from);
128 el.to = $.effects.setTransition(el, hProps, factor.to.x, el.to);
129 };
130 };
131 if (scale == 'content' || scale == 'both') { // Scale the content
132 if (factor.from.y != factor.to.y) { // Vertical props scaling
133 props = props.concat(cProps);
134 el.from = $.effects.setTransition(el, cProps, factor.from.y, el.from);
135 el.to = $.effects.setTransition(el, cProps, factor.to.y, el.to);
136 };
137 };
138 $.effects.save(el, restore ? props : props1); el.show(); // Save & Show
139 $.effects.createWrapper(el); // Create Wrapper
140 el.css('overflow','hidden').css(el.from); // Shift
141
142 // Animate
143 if (scale == 'content' || scale == 'both') { // Scale the children
144 vProps = vProps.concat(['marginTop','marginBottom']).concat(cProps); // Add margins/font-size
145 hProps = hProps.concat(['marginLeft','marginRight']); // Add margins
146 props2 = props.concat(vProps).concat(hProps); // Concat
147 el.find("*[width]").each(function(){
148 child = $(this);
149 if (restore) $.effects.save(child, props2);
150 var c_original = {height: child.height(), width: child.width()}; // Save original
151 child.from = {height: c_original.height * factor.from.y, width: c_original.width * factor.from.x};
152 child.to = {height: c_original.height * factor.to.y, width: c_original.width * factor.to.x};
153 if (factor.from.y != factor.to.y) { // Vertical props scaling
154 child.from = $.effects.setTransition(child, vProps, factor.from.y, child.from);
155 child.to = $.effects.setTransition(child, vProps, factor.to.y, child.to);
156 };
157 if (factor.from.x != factor.to.x) { // Horizontal props scaling
158 child.from = $.effects.setTransition(child, hProps, factor.from.x, child.from);
159 child.to = $.effects.setTransition(child, hProps, factor.to.x, child.to);
160 };
161 child.css(child.from); // Shift children
162 child.animate(child.to, o.duration, o.options.easing, function(){
163 if (restore) $.effects.restore(child, props2); // Restore children
164 }); // Animate children
165 });
166 };
167
168 // Animate
169 el.animate(el.to, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
170 if(mode == 'hide') el.hide(); // Hide
171 $.effects.restore(el, restore ? props : props1); $.effects.removeWrapper(el); // Restore
172 if(o.callback) o.callback.apply(this, arguments); // Callback
173 el.dequeue();
174 }});
175
176 });
177
178 };
179
180 })(jQuery);
181