!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).Danmaku=i()}(this,(function(){"use strict";!function(){for(var t=["oTransform","msTransform","mozTransform","webkitTransform","transform"],i=document.createElement("div").style,e=0;e0&&o!==1/0?Math.ceil(o):1*!!a.strokeStyle,r.font=a.font,e.width=e.width||Math.max(1,Math.ceil(r.measureText(e.text).width)+2*o),e.height=e.height||Math.ceil(function(t,e){if(i[t])return i[t];var n=12,s=t.match(/(\d+(?:\.\d+)?)(px|%|em|rem)(?:\s*\/\s*(\d+(?:\.\d+)?)(px|%|em|rem)?)?/);if(s){var h=1*s[1]||10,r=s[2],a=1*s[3]||1.2,o=s[4];"%"===r&&(h*=e.container/100),"em"===r&&(h*=e.container),"rem"===r&&(h*=e.root),"px"===o&&(n=a),"%"===o&&(n=h*a/100),"em"===o&&(n=h*a),"rem"===o&&(n=e.root*a),void 0===o&&(n=h*a)}return i[t]=n,n}(a.font,n))+2*o,h.width=e.width*t,h.height=e.height*t,r.scale(t,t),a)r[d]=a[d];var m=0;switch(a.textBaseline){case"top":case"hanging":m=o;break;case"middle":m=e.height>>1;break;default:m=e.height-o}return a.strokeStyle&&r.strokeText(e.text,o,m),r.fillText(e.text,o,m),h}function n(t){return 1*window.getComputedStyle(t,null).getPropertyValue("font-size").match(/(.+)px/)[1]}var s={name:"canvas",init:function(t){var i=document.createElement("canvas");return i.context=i.getContext("2d"),i._fontSize={root:n(document.getElementsByTagName("html")[0]),container:n(t)},i},clear:function(t,i){t.context.clearRect(0,0,t.width,t.height);for(var e=0;eh)return!0;var r=i._.duration+t.time-e,a=i._.width+s.width,o=i.media?s.time:s._utc,d=a*(e-o)*n/i._.duration,m=i._.width-d;return r>i._.duration*m/(i._.width+s.width)}for(var h=this._.space[t.mode],r=0,a=0,o=1;o=m){a=o;break}s(d,t)&&(r=o)}var u=h[r].range,c={range:u+t.height,time:this.media?t.time:t._utc,width:t.width,height:t.height};return h.splice(r+1,a-r-1,c),"bottom"===t.mode?this._.height-t.height-u%this._.height:u%(this._.height-t.height)}var r=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return setTimeout(t,50/3)},a=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||clearTimeout;function o(t,i,e){for(var n=0,s=0,h=t.length;s=t[n=s+h>>1][i]?s=n:h=n;return t[s]&&e=0;m--)o=this._.runningList[m],r-(d=this.media?o.time:o._utc)>this._.duration&&(n(this._.stage,o),this._.runningList.splice(m,1));for(var u=[];this._.position=r));)r-d>this._.duration||(this.media&&(o._utc=s-(this.media.currentTime-o.time)),u.push(o)),++this._.position;for(i(this._.stage,u),m=0;m>1),e(this._.stage,o)}}}(this._.engine.framing.bind(this),this._.engine.setup.bind(this),this._.engine.render.bind(this),this._.engine.remove.bind(this));return this._.requestID=r((function t(){n.call(e),e._.requestID=r(t)})),this}function l(){return!this._.visible||this._.paused||(this._.paused=!0,a(this._.requestID),this._.requestID=0),this}function f(){if(!this.media)return this;this.clear(),u(this._.space);var t=o(this.comments,"time",this.media.currentTime);return this._.position=Math.max(0,t-1),this}function _(t){t.play=c.bind(this),t.pause=l.bind(this),t.seeking=f.bind(this),this.media.addEventListener("play",t.play),this.media.addEventListener("pause",t.pause),this.media.addEventListener("playing",t.play),this.media.addEventListener("waiting",t.pause),this.media.addEventListener("seeking",t.seeking)}function g(t){this.media.removeEventListener("play",t.play),this.media.removeEventListener("pause",t.pause),this.media.removeEventListener("playing",t.play),this.media.removeEventListener("waiting",t.pause),this.media.removeEventListener("seeking",t.seeking),t.play=null,t.pause=null,t.seeking=null}function p(t){this._={},this.container=t.container||document.createElement("div"),this.media=t.media,this._.visible=!0,this.engine="canvas",this._.engine=s,this._.requestID=0,this._.speed=Math.max(0,t.speed)||144,this._.duration=4,this.comments=t.comments||[],this.comments.sort((function(t,i){return t.time-i.time}));for(var i=0;i