1 line
2.8 KiB
JavaScript
1 line
2.8 KiB
JavaScript
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var e,n=1,s=arguments.length;n<s;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},defaults={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",fadeColor:"transparent",animation:"spinner-line-fade-default",rotate:0,direction:1,speed:1,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:"0 0 1px transparent",position:"absolute"},Spinner=function(){function t(t){void 0===t&&(t={}),this.opts=__assign(__assign({},defaults),t)}return t.prototype.spin=function(t){return this.stop(),this.el=document.createElement("div"),this.el.className=this.opts.className,this.el.setAttribute("role","progressbar"),css(this.el,{position:this.opts.position,width:0,zIndex:this.opts.zIndex,left:this.opts.left,top:this.opts.top,transform:"scale("+this.opts.scale+")"}),t&&t.insertBefore(this.el,t.firstChild||null),drawLines(this.el,this.opts),this},t.prototype.stop=function(){return this.el&&(("undefined"!=typeof requestAnimationFrame?cancelAnimationFrame:clearTimeout)(this.animateId),this.el.parentNode&&this.el.parentNode.removeChild(this.el),this.el=void 0),this},t}();function css(t,e){for(var n in e)t.style[n]=e[n];return t}function getColor(t,e){return"string"==typeof t?t:t[e%t.length]}function drawLines(t,e){var n=Math.round(e.corners*e.width*500)/1e3+"px",s="none";!0===e.shadow?s="0 2px 4px #000":"string"==typeof e.shadow&&(s=e.shadow);for(var i=parseBoxShadow(s),o=0;o<e.lines;o++){var r=~~(360/e.lines*o+e.rotate),a=css(document.createElement("div"),{position:"absolute",top:-e.width/2+"px",width:e.length+e.width+"px",height:e.width+"px",background:getColor(e.fadeColor,o),borderRadius:n,transformOrigin:"left",transform:"rotate("+r+"deg) translateX("+e.radius+"px)"}),d=o*e.direction/e.lines/e.speed;d-=1/e.speed;d=css(document.createElement("div"),{width:"100%",height:"100%",background:getColor(e.color,o),borderRadius:n,boxShadow:normalizeShadow(i,r),animation:1/e.speed+"s linear "+d+"s infinite "+e.animation});a.appendChild(d),t.appendChild(a)}}function parseBoxShadow(t){for(var e=/^\s*([a-zA-Z]+\s+)?(-?\d+(\.\d+)?)([a-zA-Z]*)\s+(-?\d+(\.\d+)?)([a-zA-Z]*)(.*)$/,n=[],s=0,i=t.split(",");s<i.length;s++){var o,r,a,d,h=i[s].match(e);null!==h&&(o=+h[2],r=+h[5],a=h[4],d=h[7],(a=0==o&&!a?d:a)===(d=0==r&&!d?a:d)&&n.push({prefix:h[1]||"",x:o,y:r,xUnits:a,yUnits:d,end:h[8]}))}return n}function normalizeShadow(t,e){for(var n=[],s=0,i=t;s<i.length;s++){var o=i[s],r=convertOffset(o.x,o.y,e);n.push(o.prefix+r[0]+o.xUnits+" "+r[1]+o.yUnits+o.end)}return n.join(", ")}function convertOffset(t,e,n){var s=n*Math.PI/180,n=Math.sin(s),s=Math.cos(s);return[Math.round(1e3*(t*s+e*n))/1e3,Math.round(1e3*(-t*n+e*s))/1e3]}export{Spinner}; |