1515 *
1616 * Usages:
1717 * $('#foo .bar').rotatable();
18- * $('#foo .bar').resizable().rotatable();
18+ * $('#foo .bar').resizable().rotatable().draggable() ;
1919 * $('#foo .bar').rotatable({ angle: 30 });
2020 *
2121 * Inspired by jQuery UI Resizable Widget and Aidan Rogers's (godswearhats) jquery-ui-rotatable Widget
@@ -151,8 +151,9 @@ $.widget('ui.rotatable', $.ui.mouse, {
151151 } ;
152152 }
153153 // or
154- if ( this . element . css ( 'transform-origin' ) !== undefined ) {
155- var origin = this . element . css ( 'transform-origin' ) . match ( / ( [ \d . ] + ) p x + ( [ \d . ] + ) p x / ) ;
154+ var transformOrigin = this . element . css ( 'transform-origin' ) ;
155+ if ( typeof transformOrigin === 'string' ) {
156+ var origin = transformOrigin . match ( / ( [ \d . ] + ) p x + ( [ \d . ] + ) p x / ) ;
156157 if ( origin !== null ) {
157158 return {
158159 x : elementOffset . left + this . _num ( origin [ 1 ] ) ,
@@ -180,32 +181,17 @@ $.widget('ui.rotatable', $.ui.mouse, {
180181 } ,
181182
182183 _do : function ( angle ) {
183- if ( this . _isRotationOriginPositionGiven ( ) ) {
184- var transformOrigin = this . _getRotationOriginPositionLeft ( ) + 'px ' + this . _getRotationOriginPositionTop ( ) + 'px' ;
185- this . element . css ( '-webkit-transform-origin' , transformOrigin ) ;
186- this . element . css ( '-moz-transform-origin' , transformOrigin ) ;
187- this . element . css ( '-ms-transform-origin' , transformOrigin ) ;
188- this . element . css ( 'transform-origin' , transformOrigin ) ;
189- }
184+ var element = this . element ;
190185 var oldAngle = null ;
191- var currentTransform = this . element . css ( '-webkit-transform' ) ;
192- if ( currentTransform === undefined || currentTransform === 'none' ) {
193- currentTransform = this . element . css ( '-moz-transform' ) ;
194- if ( currentTransform === undefined || currentTransform === 'none' ) {
195- currentTransform = this . element . css ( '-ms-transform' ) ;
196- if ( currentTransform === undefined || currentTransform === 'none' ) {
197- currentTransform = this . element . css ( '-o-transform' ) ;
198- if ( currentTransform === undefined || currentTransform === 'none' ) {
199- currentTransform = this . element . css ( 'transform' ) ;
200- if ( currentTransform === undefined || currentTransform === 'none' ) {
201- currentTransform = null ;
202- }
203- }
204- }
205- }
186+ var currentTransform = element . css ( 'transform' ) ;
187+ if ( currentTransform === undefined ) {
188+ return ;
189+ }
190+ if ( this . _isRotationOriginPositionGiven ( ) ) {
191+ element . css ( 'transform-origin' , this . _getRotationOriginPositionLeft ( ) + 'px ' + this . _getRotationOriginPositionTop ( ) + 'px' ) ;
206192 }
207193 var newTransform = 'rotate(' + angle + 'deg) ' ;
208- if ( currentTransform !== null ) {
194+ if ( currentTransform !== 'none' ) {
209195 var regex = / m a t r i x \( ( .* ) , ( .* ) , ( .* ) , ( .* ) , ( .* ) , ( .* ) \) / ;
210196 var match = regex . exec ( currentTransform ) ;
211197 if ( match !== null ) {
@@ -215,8 +201,8 @@ $.widget('ui.rotatable', $.ui.mouse, {
215201 var d = this . _num ( match [ 4 ] ) ;
216202 var e = this . _num ( match [ 5 ] ) ;
217203 var f = this . _num ( match [ 6 ] ) ;
218- if ( e != 0 ) {
219- if ( f == 0 ) {
204+ if ( e !== 0 ) {
205+ if ( f === 0 ) {
220206 newTransform += 'translate(' + e + 'px) ' ;
221207 }
222208 else {
@@ -226,29 +212,29 @@ $.widget('ui.rotatable', $.ui.mouse, {
226212 var del = a * d - b * c ;
227213 var x = null ;
228214 var y = null ;
229- if ( a != 0 || b != 0 ) {
215+ if ( a !== 0 || b != = 0 ) {
230216 var r = this . _round ( Math . sqrt ( a * a + b * b ) , 5 ) ;
231217 oldAngle = this . _angleInDegrees ( b > 0 ? Math . acos ( a / r ) : - Math . acos ( a / r ) ) ;
232218 x = r ;
233219 y = this . _round ( del / r , 5 ) ;
234- if ( x != 1 || y != 1 ) {
220+ if ( x !== 1 || y != = 1 ) {
235221 newTransform += 'scale(' + x + ( x === y ? '' : ', ' + y ) + ') ' ;
236222 }
237223 x = Math . atan ( ( a * c + b * d ) / ( r * r ) ) ;
238- if ( x != 0 ) {
224+ if ( x !== 0 ) {
239225 newTransform += 'skewX(' + this . _angleInDegrees ( x ) + 'deg) ' ;
240226 }
241227 }
242- else if ( c != 0 || d != 0 ) {
228+ else if ( c !== 0 || d != = 0 ) {
243229 var s = Math . sqrt ( c * c + d * d ) ;
244230 oldAngle = this . _angleInDegrees ( ( Math . PI / 2 ) - ( d > 0 ? Math . acos ( - c / s ) : - Math . acos ( c / s ) ) ) ;
245231 x = del / s ;
246232 y = s ;
247- if ( x != 1 || y != 1 ) {
233+ if ( x !== 1 || y != = 1 ) {
248234 newTransform += 'scale(' + x + ( x === y ? '' : ', ' + y ) + ') ' ;
249235 }
250236 x = Math . atan ( ( a * c + b * d ) / ( s * s ) ) ;
251- if ( x != 0 ) {
237+ if ( x !== 0 ) {
252238 newTransform += 'skewY(' + this . _angleInDegrees ( x ) + 'deg) ' ;
253239 }
254240 }
@@ -257,11 +243,7 @@ $.widget('ui.rotatable', $.ui.mouse, {
257243 }
258244 }
259245 }
260- this . element . css ( '-webkit-transform' , newTransform ) ;
261- this . element . css ( '-moz-transform' , newTransform ) ;
262- this . element . css ( '-ms-transform' , newTransform ) ;
263- this . element . css ( '-o-transform' , newTransform ) ;
264- this . element . css ( 'transform' , newTransform ) ;
246+ element . css ( 'transform' , newTransform ) ;
265247 } ,
266248
267249 _create : function ( ) {
0 commit comments