1$.fn.rotate=function(options) { 2 var $this=$(this), prefixes, opts, wait4css=0; 3 prefixes=['-Webkit-', '-Moz-', '-O-', '-ms-', '']; 4 opts=$.extend({ 5 startDeg: false, 6 endDeg: 360, 7 duration: 1, 8 count: 1, 9 easing: 'linear', 10 animate: {}, 11 forceJS: false 12 }, options); 13 14 function supports(prop) { 15 var can=false, style=document.createElement('div').style; 16 $.each(prefixes, function(i, prefix) { 17 if (style[prefix.replace(/\-/g, '')+prop]==='') { 18 can=true; 19 } 20 }); 21 return can; 22 } 23 24 function prefixed(prop, value) { 25 var css={}; 26 if (!supports.transform) { 27 return css; 28 } 29 $.each(prefixes, function(i, prefix) { 30 css[prefix.toLowerCase()+prop]=value || ''; 31 }); 32 return css; 33 } 34 35 function generateFilter(deg) { 36 var rot, cos, sin, matrix; 37 if (supports.transform) { 38 return ''; 39 } 40 rot=deg>=0 ? Math.PI*deg/180 : Math.PI*(360+deg)/180; 41 cos=Math.cos(rot); 42 sin=Math.sin(rot); 43 matrix='M11='+cos+',M12='+(-sin)+',M21='+sin+',M22='+cos+',SizingMethod="auto expand"'; 44 return 'progid:DXImageTransform.Microsoft.Matrix('+matrix+')'; 45 } 46 47 supports.transform=supports('Transform'); 48 supports.transition=supports('Transition'); 49 50 opts.endDeg*=opts.count; 51 opts.duration*=opts.count; 52 53 if (supports.transition && !opts.forceJS) { // CSS-Transition 54 if ((/Firefox/).test(navigator.userAgent)) { 55 wait4css=(!options||!options.animate)&&(opts.startDeg===false||opts.startDeg>=0)?0:25; 56 } 57 $this.queue(function(next) { 58 if (opts.startDeg!==false) { 59 $this.css(prefixed('transform', 'rotate('+opts.startDeg+'deg)')); 60 } 61 setTimeout(function() { 62 $this 63 .css(prefixed('transition', 'all '+opts.duration+'s '+opts.easing)) 64 .css(prefixed('transform', 'rotate('+opts.endDeg+'deg)')) 65 .css(opts.animate); 66 }, wait4css); 67 68 setTimeout(function() { 69 $this.css(prefixed('transition')); 70 if (!opts.persist) { 71 $this.css(prefixed('transform')); 72 } 73 next(); 74 }, (opts.duration*1000)-wait4css); 75 }); 76 77 } else { // JavaScript-Animation + filter 78 if (opts.startDeg===false) { 79 opts.startDeg=$this.data('rotated') || 0; 80 } 81 opts.animate.perc=100; 82 83 $this.animate(opts.animate, { 84 duration: opts.duration*1000, 85 easing: $.easing[opts.easing] ? opts.easing : '', 86 step: function(perc, fx) { 87 var deg; 88 if (fx.prop==='perc') { 89 deg=opts.startDeg+(opts.endDeg-opts.startDeg)*perc/100; 90 $this 91 .css(prefixed('transform', 'rotate('+deg+'deg)')) 92 .css('filter', generateFilter(deg)); 93 } 94 }, 95 complete: function() { 96 if (opts.persist) { 97 while (opts.endDeg>=360) { 98 opts.endDeg-=360; 99 } 100 } else { 101 opts.endDeg=0; 102 $this.css(prefixed('transform')); 103 } 104 $this.css('perc', 0).data('rotated', opts.endDeg); 105 } 106 }); 107 } 108 109 return $this; 110}; 111/* 112 FILE ARCHIVED ON 05:30:19 Feb 24, 2018 AND RETRIEVED FROM THE 113 INTERNET ARCHIVE ON 18:51:32 Sep 05, 2018. 114 JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. 115 116 ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. 117 SECTION 108(a)(3)). 118*/ 119/* 120playback timings (ms): 121 LoadShardBlock: 745.06 (3) 122 esindex: 0.008 123 captures_list: 760.585 124 CDXLines.iter: 10.421 (3) 125 PetaboxLoader3.datanode: 541.956 (4) 126 exclusion.robots: 0.201 127 exclusion.robots.policy: 0.187 128 RedisCDXSource: 1.807 129 PetaboxLoader3.resolve: 2172.098 130 load_resource: 2188.678 131*/
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.