66
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
1 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
2 |
* Interface Elements for jQuery |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
3 |
* Resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
4 |
* |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
5 |
* http://interface.eyecon.ro |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
6 |
* |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
7 |
* Copyright (c) 2006 Stefan Petre |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
8 |
* Dual licensed under the MIT (MIT-LICENSE.txt) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
9 |
* and GPL (GPL-LICENSE.txt) licenses. |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
10 |
* |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
11 |
* |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
12 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
13 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
14 |
jQuery.iResize = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
15 |
resizeElement: null, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
16 |
resizeDirection: null, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
17 |
dragged: null, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
18 |
pointer: null, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
19 |
sizes: null, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
20 |
position: null, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
21 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
22 |
* internal: Start function |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
23 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
24 |
startDrag: function(e) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
25 |
jQuery.iResize.dragged = (this.dragEl) ? this.dragEl: this; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
26 |
jQuery.iResize.pointer = jQuery.iUtil.getPointer(e); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
27 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
28 |
// Save original size |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
29 |
jQuery.iResize.sizes = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
30 |
width: parseInt(jQuery(jQuery.iResize.dragged).css('width')) || 0, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
31 |
height: parseInt(jQuery(jQuery.iResize.dragged).css('height')) || 0 |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
32 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
33 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
34 |
// Save original position |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
35 |
jQuery.iResize.position = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
36 |
top: parseInt(jQuery(jQuery.iResize.dragged).css('top')) || 0, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
37 |
left: parseInt(jQuery(jQuery.iResize.dragged).css('left')) || 0 |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
38 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
39 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
40 |
// Assign event handlers |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
41 |
jQuery(document) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
42 |
.bind('mousemove', jQuery.iResize.moveDrag) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
43 |
.bind('mouseup', jQuery.iResize.stopDrag); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
44 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
45 |
// Callback? |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
46 |
if (typeof jQuery.iResize.dragged.resizeOptions.onDragStart === 'function') { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
47 |
jQuery.iResize.dragged.resizeOptions.onDragStart.apply(jQuery.iResize.dragged); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
48 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
49 |
return false; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
50 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
51 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
52 |
* internal: Stop function |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
53 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
54 |
stopDrag: function(e) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
55 |
// Unbind event handlers |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
56 |
jQuery(document) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
57 |
.unbind('mousemove', jQuery.iResize.moveDrag) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
58 |
.unbind('mouseup', jQuery.iResize.stopDrag); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
59 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
60 |
// Callback? |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
61 |
if (typeof jQuery.iResize.dragged.resizeOptions.onDragStop === 'function') { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
62 |
jQuery.iResize.dragged.resizeOptions.onDragStop.apply(jQuery.iResize.dragged); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
63 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
64 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
65 |
// Remove dragged element |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
66 |
jQuery.iResize.dragged = null; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
67 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
68 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
69 |
* internal: Move function |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
70 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
71 |
moveDrag: function(e) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
72 |
if (!jQuery.iResize.dragged) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
73 |
return; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
74 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
75 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
76 |
pointer = jQuery.iUtil.getPointer(e); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
77 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
78 |
// Calculate new positions |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
79 |
newTop = jQuery.iResize.position.top - jQuery.iResize.pointer.y + pointer.y; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
80 |
newLeft = jQuery.iResize.position.left - jQuery.iResize.pointer.x + pointer.x; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
81 |
newTop = Math.max( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
82 |
Math.min(newTop, jQuery.iResize.dragged.resizeOptions.maxBottom - jQuery.iResize.sizes.height), |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
83 |
jQuery.iResize.dragged.resizeOptions.minTop |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
84 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
85 |
newLeft = Math.max( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
86 |
Math.min(newLeft, jQuery.iResize.dragged.resizeOptions.maxRight- jQuery.iResize.sizes.width), |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
87 |
jQuery.iResize.dragged.resizeOptions.minLeft |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
88 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
89 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
90 |
// Callback |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
91 |
if (typeof jQuery.iResize.dragged.resizeOptions.onDrag === 'function') { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
92 |
var newPos = jQuery.iResize.dragged.resizeOptions.onDrag.apply(jQuery.iResize.dragged, [newLeft, newTop]); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
93 |
if (typeof newPos == 'array' && newPos.length == 2) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
94 |
newLeft = newPos[0]; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
95 |
newTop = newPos[1]; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
96 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
97 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
98 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
99 |
// Update the element |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
100 |
jQuery.iResize.dragged.style.top = newTop + 'px'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
101 |
jQuery.iResize.dragged.style.left = newLeft + 'px'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
102 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
103 |
return false; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
104 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
105 |
start: function(e) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
106 |
// Bind event handlers |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
107 |
jQuery(document) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
108 |
.bind('mousemove', jQuery.iResize.move) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
109 |
.bind('mouseup', jQuery.iResize.stop); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
110 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
111 |
// Initialize resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
112 |
jQuery.iResize.resizeElement = this.resizeElement; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
113 |
jQuery.iResize.resizeDirection = this.resizeDirection; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
114 |
jQuery.iResize.pointer = jQuery.iUtil.getPointer(e); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
115 |
jQuery.iResize.sizes = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
116 |
width: parseInt(jQuery(this.resizeElement).css('width'))||0, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
117 |
height: parseInt(jQuery(this.resizeElement).css('height'))||0 |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
118 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
119 |
jQuery.iResize.position = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
120 |
top: parseInt(jQuery(this.resizeElement).css('top'))||0, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
121 |
left: parseInt(jQuery(this.resizeElement).css('left'))||0 |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
122 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
123 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
124 |
// Callback function |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
125 |
if (jQuery.iResize.resizeElement.resizeOptions.onStart) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
126 |
jQuery.iResize.resizeElement.resizeOptions.onStart.apply(jQuery.iResize.resizeElement, [this]); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
127 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
128 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
129 |
return false; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
130 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
131 |
stop: function() { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
132 |
// Unbind event handlers |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
133 |
jQuery(document) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
134 |
.unbind('mousemove', jQuery.iResize.move) |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
135 |
.unbind('mouseup', jQuery.iResize.stop); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
136 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
137 |
// Callback function |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
138 |
if (jQuery.iResize.resizeElement.resizeOptions.onStop) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
139 |
jQuery.iResize.resizeElement.resizeOptions.onStop.apply(jQuery.iResize.resizeElement, [jQuery.iResize.resizeDirection]); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
140 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
141 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
142 |
// Unbind |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
143 |
jQuery.iResize.resizeElement = null; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
144 |
jQuery.iResize.resizeDirection = null; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
145 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
146 |
getWidth: function(dx, side) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
147 |
return Math.min( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
148 |
Math.max(jQuery.iResize.sizes.width + dx * side, jQuery.iResize.resizeElement.resizeOptions.minWidth), |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
149 |
jQuery.iResize.resizeElement.resizeOptions.maxWidth |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
150 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
151 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
152 |
getHeight: function(dy, side) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
153 |
return Math.min( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
154 |
Math.max(jQuery.iResize.sizes.height + dy * side, jQuery.iResize.resizeElement.resizeOptions.minHeight), |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
155 |
jQuery.iResize.resizeElement.resizeOptions.maxHeight |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
156 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
157 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
158 |
getHeightMinMax: function(height) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
159 |
return Math.min( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
160 |
Math.max(height, jQuery.iResize.resizeElement.resizeOptions.minHeight), |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
161 |
jQuery.iResize.resizeElement.resizeOptions.maxHeight |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
162 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
163 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
164 |
move: function(e) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
165 |
if (jQuery.iResize.resizeElement == null) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
166 |
return; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
167 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
168 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
169 |
pointer = jQuery.iUtil.getPointer(e); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
170 |
dx = pointer.x - jQuery.iResize.pointer.x; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
171 |
dy = pointer.y - jQuery.iResize.pointer.y; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
172 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
173 |
newSizes = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
174 |
width: jQuery.iResize.sizes.width, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
175 |
height: jQuery.iResize.sizes.height |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
176 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
177 |
newPosition = { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
178 |
top: jQuery.iResize.position.top, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
179 |
left: jQuery.iResize.position.left |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
180 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
181 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
182 |
switch (jQuery.iResize.resizeDirection){ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
183 |
case 'e': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
184 |
newSizes.width = jQuery.iResize.getWidth(dx,1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
185 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
186 |
case 'se': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
187 |
newSizes.width = jQuery.iResize.getWidth(dx,1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
188 |
newSizes.height = jQuery.iResize.getHeight(dy,1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
189 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
190 |
case 'w': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
191 |
newSizes.width = jQuery.iResize.getWidth(dx,-1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
192 |
newPosition.left = jQuery.iResize.position.left - newSizes.width + jQuery.iResize.sizes.width; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
193 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
194 |
case 'sw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
195 |
newSizes.width = jQuery.iResize.getWidth(dx,-1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
196 |
newPosition.left = jQuery.iResize.position.left - newSizes.width + jQuery.iResize.sizes.width; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
197 |
newSizes.height = jQuery.iResize.getHeight(dy,1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
198 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
199 |
case 'nw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
200 |
newSizes.height = jQuery.iResize.getHeight(dy,-1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
201 |
newPosition.top = jQuery.iResize.position.top - newSizes.height + jQuery.iResize.sizes.height; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
202 |
newSizes.width = jQuery.iResize.getWidth(dx,-1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
203 |
newPosition.left = jQuery.iResize.position.left - newSizes.width + jQuery.iResize.sizes.width; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
204 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
205 |
case 'n': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
206 |
newSizes.height = jQuery.iResize.getHeight(dy,-1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
207 |
newPosition.top = jQuery.iResize.position.top - newSizes.height + jQuery.iResize.sizes.height; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
208 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
209 |
case 'ne': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
210 |
newSizes.height = jQuery.iResize.getHeight(dy,-1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
211 |
newPosition.top = jQuery.iResize.position.top - newSizes.height + jQuery.iResize.sizes.height; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
212 |
newSizes.width = jQuery.iResize.getWidth(dx,1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
213 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
214 |
case 's': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
215 |
newSizes.height = jQuery.iResize.getHeight(dy,1); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
216 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
217 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
218 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
219 |
if (jQuery.iResize.resizeElement.resizeOptions.ratio) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
220 |
if (jQuery.iResize.resizeDirection == 'n' || jQuery.iResize.resizeDirection == 's') |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
221 |
nWidth = newSizes.height * jQuery.iResize.resizeElement.resizeOptions.ratio; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
222 |
else |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
223 |
nWidth = newSizes.width; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
224 |
nHeight = jQuery.iResize.getHeightMinMax(nWidth * jQuery.iResize.resizeElement.resizeOptions.ratio); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
225 |
nWidth = nHeight / jQuery.iResize.resizeElement.resizeOptions.ratio; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
226 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
227 |
switch (jQuery.iResize.resizeDirection){ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
228 |
case 'n': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
229 |
case 'nw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
230 |
case 'ne': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
231 |
newPosition.top += newSizes.height - nHeight; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
232 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
233 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
234 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
235 |
switch (jQuery.iResize.resizeDirection){ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
236 |
case 'nw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
237 |
case 'w': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
238 |
case 'sw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
239 |
newPosition.left += newSizes.width - nWidth; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
240 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
241 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
242 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
243 |
newSizes.height = nHeight; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
244 |
newSizes.width = nWidth; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
245 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
246 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
247 |
if (newPosition.top < jQuery.iResize.resizeElement.resizeOptions.minTop) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
248 |
nHeight = newSizes.height + newPosition.top - jQuery.iResize.resizeElement.resizeOptions.minTop; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
249 |
newPosition.top = jQuery.iResize.resizeElement.resizeOptions.minTop; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
250 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
251 |
if (jQuery.iResize.resizeElement.resizeOptions.ratio) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
252 |
nWidth = nHeight / jQuery.iResize.resizeElement.resizeOptions.ratio; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
253 |
switch (jQuery.iResize.resizeDirection){ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
254 |
case 'nw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
255 |
case 'w': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
256 |
case 'sw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
257 |
newPosition.left += newSizes.width - nWidth; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
258 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
259 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
260 |
newSizes.width = nWidth; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
261 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
262 |
newSizes.height = nHeight; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
263 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
264 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
265 |
if (newPosition.left < jQuery.iResize.resizeElement.resizeOptions.minLeft ) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
266 |
nWidth = newSizes.width + newPosition.left - jQuery.iResize.resizeElement.resizeOptions.minLeft; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
267 |
newPosition.left = jQuery.iResize.resizeElement.resizeOptions.minLeft; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
268 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
269 |
if (jQuery.iResize.resizeElement.resizeOptions.ratio) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
270 |
nHeight = nWidth * jQuery.iResize.resizeElement.resizeOptions.ratio; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
271 |
switch (jQuery.iResize.resizeDirection){ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
272 |
case 'n': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
273 |
case 'nw': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
274 |
case 'ne': |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
275 |
newPosition.top += newSizes.height - nHeight; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
276 |
break; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
277 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
278 |
newSizes.height = nHeight; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
279 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
280 |
newSizes.width = nWidth; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
281 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
282 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
283 |
if (newPosition.top + newSizes.height > jQuery.iResize.resizeElement.resizeOptions.maxBottom) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
284 |
newSizes.height = jQuery.iResize.resizeElement.resizeOptions.maxBottom - newPosition.top; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
285 |
if (jQuery.iResize.resizeElement.resizeOptions.ratio) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
286 |
newSizes.width = newSizes.height / jQuery.iResize.resizeElement.resizeOptions.ratio; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
287 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
288 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
289 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
290 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
291 |
if (newPosition.left + newSizes.width > jQuery.iResize.resizeElement.resizeOptions.maxRight) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
292 |
newSizes.width = jQuery.iResize.resizeElement.resizeOptions.maxRight - newPosition.left; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
293 |
if (jQuery.iResize.resizeElement.resizeOptions.ratio) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
294 |
newSizes.height = newSizes.width * jQuery.iResize.resizeElement.resizeOptions.ratio; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
295 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
296 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
297 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
298 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
299 |
var newDimensions = false; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
300 |
if (jQuery.iResize.resizeElement.resizeOptions.onResize) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
301 |
newDimensions = jQuery.iResize.resizeElement.resizeOptions.onResize.apply( jQuery.iResize.resizeElement, [ newSizes, newPosition ] ); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
302 |
if (newDimensions) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
303 |
if (newDimensions.sizes) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
304 |
jQuery.extend(newSizes, newDimensions.sizes); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
305 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
306 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
307 |
if (newDimensions.position) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
308 |
jQuery.extend(newPosition, newDimensions.position); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
309 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
310 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
311 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
312 |
elS = jQuery.iResize.resizeElement.style; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
313 |
elS.left = newPosition.left + 'px'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
314 |
elS.top = newPosition.top + 'px'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
315 |
elS.width = newSizes.width + 'px'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
316 |
elS.height = newSizes.height + 'px'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
317 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
318 |
return false; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
319 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
320 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
321 |
* Builds the resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
322 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
323 |
build: function(options) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
324 |
if (!options || !options.handlers || options.handlers.constructor != Object) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
325 |
return; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
326 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
327 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
328 |
return this.each( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
329 |
function() { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
330 |
var el = this; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
331 |
el.resizeOptions = options; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
332 |
el.resizeOptions.minWidth = options.minWidth || 10; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
333 |
el.resizeOptions.minHeight = options.minHeight || 10; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
334 |
el.resizeOptions.maxWidth = options.maxWidth || 3000; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
335 |
el.resizeOptions.maxHeight = options.maxHeight || 3000; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
336 |
el.resizeOptions.minTop = options.minTop || -1000; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
337 |
el.resizeOptions.minLeft = options.minLeft || -1000; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
338 |
el.resizeOptions.maxRight = options.maxRight || 3000; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
339 |
el.resizeOptions.maxBottom = options.maxBottom || 3000; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
340 |
elPosition = jQuery(el).css('position'); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
341 |
if (!(elPosition == 'relative' || elPosition == 'absolute')) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
342 |
el.style.position = 'relative'; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
343 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
344 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
345 |
directions = /n|ne|e|se|s|sw|w|nw/g; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
346 |
for (i in el.resizeOptions.handlers) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
347 |
if (i.toLowerCase().match(directions) != null) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
348 |
if (el.resizeOptions.handlers[i].constructor == String) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
349 |
handle = jQuery(el.resizeOptions.handlers[i]); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
350 |
if (handle.size() > 0) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
351 |
el.resizeOptions.handlers[i] = handle.get(0); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
352 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
353 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
354 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
355 |
if (el.resizeOptions.handlers[i].tagName) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
356 |
el.resizeOptions.handlers[i].resizeElement = el; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
357 |
el.resizeOptions.handlers[i].resizeDirection = i; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
358 |
jQuery(el.resizeOptions.handlers[i]).bind('mousedown', jQuery.iResize.start); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
359 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
360 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
361 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
362 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
363 |
if (el.resizeOptions.dragHandle) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
364 |
if (typeof el.resizeOptions.dragHandle === 'string') { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
365 |
handleEl = jQuery(el.resizeOptions.dragHandle); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
366 |
if (handleEl.size() > 0) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
367 |
handleEl.each(function() { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
368 |
this.dragEl = el; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
369 |
}); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
370 |
handleEl.bind('mousedown', jQuery.iResize.startDrag); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
371 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
372 |
} else if (el.resizeOptions.dragHandle == true) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
373 |
jQuery(this).bind('mousedown', jQuery.iResize.startDrag); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
374 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
375 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
376 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
377 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
378 |
}, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
379 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
380 |
* Destroys the resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
381 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
382 |
destroy: function() { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
383 |
return this.each( |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
384 |
function() { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
385 |
var el = this; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
386 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
387 |
// Unbind the handlers |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
388 |
for (i in el.resizeOptions.handlers) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
389 |
el.resizeOptions.handlers[i].resizeElement = null; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
390 |
el.resizeOptions.handlers[i].resizeDirection = null; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
391 |
jQuery(el.resizeOptions.handlers[i]).unbind('mousedown', jQuery.iResize.start); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
392 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
393 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
394 |
// Remove the draghandle |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
395 |
if (el.resizeOptions.dragHandle) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
396 |
if (typeof el.resizeOptions.dragHandle === 'string') { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
397 |
handle = jQuery(el.resizeOptions.dragHandle); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
398 |
if (handle.size() > 0) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
399 |
handle.unbind('mousedown', jQuery.iResize.startDrag); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
400 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
401 |
} else if (el.resizeOptions.dragHandle == true) { |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
402 |
jQuery(this).unbind('mousedown', jQuery.iResize.startDrag); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
403 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
404 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
405 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
406 |
// Reset the options |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
407 |
el.resizeOptions = null; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
408 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
409 |
); |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
410 |
} |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
411 |
}; |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
412 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
413 |
|
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
414 |
jQuery.fn.extend ({ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
415 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
416 |
* Create a resizable element with a number of advanced options including callback, dragging |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
417 |
* |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
418 |
* @name Resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
419 |
* @description Create a resizable element with a number of advanced options including callback, dragging |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
420 |
* @param Hash hash A hash of parameters. All parameters are optional. |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
421 |
* @option Hash handlers hash with keys for each resize direction (e, es, s, sw, w, nw, n) and value string selection |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
422 |
* @option Integer minWidth (optional) the minimum width that element can be resized to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
423 |
* @option Integer maxWidth (optional) the maximum width that element can be resized to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
424 |
* @option Integer minHeight (optional) the minimum height that element can be resized to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
425 |
* @option Integer maxHeight (optional) the maximum height that element can be resized to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
426 |
* @option Integer minTop (optional) the minmum top position to wich element can be moved to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
427 |
* @option Integer minLeft (optional) the minmum left position to wich element can be moved to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
428 |
* @option Integer maxRight (optional) the maximum right position to wich element can be moved to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
429 |
* @option Integer maxBottom (optional) the maximum bottom position to wich element can be moved to |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
430 |
* @option Float ratio (optional) the ratio between width and height to constrain elements sizes to that ratio |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
431 |
* @option Mixed dragHandle (optional) true to make the element draggable, string selection for drag handle |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
432 |
* @option Function onDragStart (optional) A function to be executed whenever the dragging starts |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
433 |
* @option Function onDragStop (optional) A function to be executed whenever the dragging stops |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
434 |
* @option Function onDrag (optional) A function to be executed whenever the element is dragged |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
435 |
* @option Function onStart (optional) A function to be executed whenever the element starts to be resized |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
436 |
* @option Function onStop (optional) A function to be executed whenever the element stops to be resized |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
437 |
* @option Function onResize (optional) A function to be executed whenever the element is resized |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
438 |
* @type jQuery |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
439 |
* @cat Plugins/Interface |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
440 |
* @author Stefan Petre |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
441 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
442 |
Resizable: jQuery.iResize.build, |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
443 |
/** |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
444 |
* Destroy a resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
445 |
* |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
446 |
* @name ResizableDestroy |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
447 |
* @description Destroy a resizable |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
448 |
* @type jQuery |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
449 |
* @cat Plugins/Interface |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
450 |
* @author Stefan Petre |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
451 |
*/ |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
452 |
ResizableDestroy: jQuery.iResize.destroy |
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff
changeset
|
453 |
}); |