@losting/timeline
Advanced tools
Comparing version 2.0.1 to 2.0.2
@@ -35,3 +35,3 @@ "use strict"; | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */}function i(t){var e="function"==typeof Symbol&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function n(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,s,r=i.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return a}function s(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t}var r=function(){function t(){this._listenersMap={}}return t.prototype.on=function(t,e){return void 0===this._listenersMap[t]&&(this._listenersMap[t]=[]),this._listenersMap[t].push(e),this},t.prototype.once=function(t,e){return e.isOnce=!0,this.on(t,e),this},t.prototype.off=function(t,e){var i=this._listenersMap[t];if(void 0!==i)if(void 0===e)delete this._listenersMap[t];else{var n=i.findIndex((function(t){return t===e}));i.splice(n,1)}return this},t.prototype.offAll=function(){this._listenersMap={}},t.prototype.emit=function(t){for(var e,r,a=[],o=1;o<arguments.length;o++)a[o-1]=arguments[o];var h=this._listenersMap[t];if(void 0!==h&&h.length>0){try{for(var c=i(h.entries()),u=c.next();!u.done;u=c.next()){var f=n(u.value,2),l=f[0],d=f[1];if(d.isOnce){var v=d;h.splice(l,1),v.apply(void 0,s(a))}else d.apply(void 0,s(a))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(e)throw e.error}}return!0}return!1},t.prototype.has=function(t){return void 0!==this._listenersMap[t]&&this._listenersMap[t].length>0},t.prototype.eventNames=function(){var t=[];for(var e in this._listenersMap)t.push(e);return t},t.prototype.destroy=function(){this.offAll()},t}(),a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o=/^\s+|\s+$/g,h=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,f=parseInt,l="object"==typeof a&&a&&a.Object===Object&&a,d="object"==typeof self&&self&&self.Object===Object&&self,v=l||d||Function("return this")(),g=Object.prototype.toString,m=Math.max,p=Math.min,$=function(){return v.Date.now()};function w(t,e,i){var n,s,r,a,o,h,c=0,u=!1,f=!1,l=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function d(e){var i=n,r=s;return n=s=void 0,c=e,a=t.apply(r,i)}function v(t){return c=t,o=setTimeout(w,e),u?d(t):a}function g(t){var i=t-h;return void 0===h||i>=e||i<0||f&&t-c>=r}function w(){var t=$();if(g(t))return M(t);o=setTimeout(w,function(t){var i=e-(t-h);return f?p(i,r-(t-c)):i}(t))}function M(t){return o=void 0,l&&n?d(t):(n=s=void 0,a)}function C(){var t=$(),i=g(t);if(n=arguments,s=this,h=t,i){if(void 0===o)return v(h);if(f)return o=setTimeout(w,e),d(h)}return void 0===o&&(o=setTimeout(w,e)),a}return e=x(e)||0,y(i)&&(u=!!i.leading,r=(f="maxWait"in i)?m(x(i.maxWait)||0,e):r,l="trailing"in i?!!i.trailing:l),C.cancel=function(){void 0!==o&&clearTimeout(o),c=0,n=h=s=o=void 0},C.flush=function(){return void 0===o?a:M($())},C}function y(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function x(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==g.call(t)}(t))return NaN;if(y(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=y(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(o,"");var i=c.test(t);return i||u.test(t)?f(t.slice(2),i?2:8):h.test(t)?NaN:+t}var M=function(t,e,i){var n=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return y(i)&&(n="leading"in i?!!i.leading:n,s="trailing"in i?!!i.trailing:s),w(t,e,{leading:n,maxWait:e,trailing:s})},C={exports:{}},b=C.exports=function(){var t=1e3,e=6e4,i=36e5,n="millisecond",s="second",r="minute",a="hour",o="day",h="week",c="month",u="quarter",f="year",l="date",d="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},p=function(t,e,i){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(i)+t},$={s:p,z:function(t){var e=-t.utcOffset(),i=Math.abs(e),n=Math.floor(i/60),s=i%60;return(e<=0?"+":"-")+p(n,2,"0")+":"+p(s,2,"0")},m:function t(e,i){if(e.date()<i.date())return-t(i,e);var n=12*(i.year()-e.year())+(i.month()-e.month()),s=e.clone().add(n,c),r=i-s<0,a=e.clone().add(n+(r?-1:1),c);return+(-(n+(i-s)/(r?s-a:a-s))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:f,w:h,d:o,D:l,h:a,m:r,s:s,ms:n,Q:u}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},w="en",y={};y[w]=m;var x=function(t){return t instanceof T},M=function t(e,i,n){var s;if(!e)return w;if("string"==typeof e){var r=e.toLowerCase();y[r]&&(s=r),i&&(y[r]=i,s=r);var a=e.split("-");if(!s&&a.length>1)return t(a[0])}else{var o=e.name;y[o]=e,s=o}return!n&&s&&(w=s),s||!n&&w},C=function(t,e){if(x(t))return t.clone();var i="object"==typeof e?e:{};return i.date=t,i.args=arguments,new T(i)},b=$;b.l=M,b.i=x,b.w=function(t,e){return C(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function m(t){this.$L=M(t.locale,null,!0),this.parse(t)}var p=m.prototype;return p.parse=function(t){this.$d=function(t){var e=t.date,i=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(v);if(n){var s=n[2]-1||0,r=(n[7]||"0").substring(0,3);return i?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},p.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},p.$utils=function(){return b},p.isValid=function(){return!(this.$d.toString()===d)},p.isSame=function(t,e){var i=C(t);return this.startOf(e)<=i&&i<=this.endOf(e)},p.isAfter=function(t,e){return C(t)<this.startOf(e)},p.isBefore=function(t,e){return this.endOf(e)<C(t)},p.$g=function(t,e,i){return b.u(t)?this[e]:this.set(i,t)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(t,e){var i=this,n=!!b.u(e)||e,u=b.p(t),d=function(t,e){var s=b.w(i.$u?Date.UTC(i.$y,e,t):new Date(i.$y,e,t),i);return n?s:s.endOf(o)},v=function(t,e){return b.w(i.toDate()[t].apply(i.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(e)),i)},g=this.$W,m=this.$M,p=this.$D,$="set"+(this.$u?"UTC":"");switch(u){case f:return n?d(1,0):d(31,11);case c:return n?d(1,m):d(0,m+1);case h:var w=this.$locale().weekStart||0,y=(g<w?g+7:g)-w;return d(n?p-y:p+(6-y),m);case o:case l:return v($+"Hours",0);case a:return v($+"Minutes",1);case r:return v($+"Seconds",2);case s:return v($+"Milliseconds",3);default:return this.clone()}},p.endOf=function(t){return this.startOf(t,!1)},p.$set=function(t,e){var i,h=b.p(t),u="set"+(this.$u?"UTC":""),d=(i={},i[o]=u+"Date",i[l]=u+"Date",i[c]=u+"Month",i[f]=u+"FullYear",i[a]=u+"Hours",i[r]=u+"Minutes",i[s]=u+"Seconds",i[n]=u+"Milliseconds",i)[h],v=h===o?this.$D+(e-this.$W):e;if(h===c||h===f){var g=this.clone().set(l,1);g.$d[d](v),g.init(),this.$d=g.set(l,Math.min(this.$D,g.daysInMonth())).$d}else d&&this.$d[d](v);return this.init(),this},p.set=function(t,e){return this.clone().$set(t,e)},p.get=function(t){return this[b.p(t)]()},p.add=function(n,u){var l,d=this;n=Number(n);var v=b.p(u),g=function(t){var e=C(d);return b.w(e.date(e.date()+Math.round(t*n)),d)};if(v===c)return this.set(c,this.$M+n);if(v===f)return this.set(f,this.$y+n);if(v===o)return g(1);if(v===h)return g(7);var m=(l={},l[r]=e,l[a]=i,l[s]=t,l)[v]||1,p=this.$d.getTime()+n*m;return b.w(p,this)},p.subtract=function(t,e){return this.add(-1*t,e)},p.format=function(t){var e=this,i=this.$locale();if(!this.isValid())return i.invalidDate||d;var n=t||"YYYY-MM-DDTHH:mm:ssZ",s=b.z(this),r=this.$H,a=this.$m,o=this.$M,h=i.weekdays,c=i.months,u=function(t,i,s,r){return t&&(t[i]||t(e,n))||s[i].slice(0,r)},f=function(t){return b.s(r%12||12,t,"0")},l=i.meridiem||function(t,e,i){var n=t<12?"AM":"PM";return i?n.toLowerCase():n},v={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:b.s(o+1,2,"0"),MMM:u(i.monthsShort,o,c,3),MMMM:u(c,o),D:this.$D,DD:b.s(this.$D,2,"0"),d:String(this.$W),dd:u(i.weekdaysMin,this.$W,h,2),ddd:u(i.weekdaysShort,this.$W,h,3),dddd:h[this.$W],H:String(r),HH:b.s(r,2,"0"),h:f(1),hh:f(2),a:l(r,a,!0),A:l(r,a,!1),m:String(a),mm:b.s(a,2,"0"),s:String(this.$s),ss:b.s(this.$s,2,"0"),SSS:b.s(this.$ms,3,"0"),Z:s};return n.replace(g,(function(t,e){return e||v[t]||s.replace(":","")}))},p.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},p.diff=function(n,l,d){var v,g=b.p(l),m=C(n),p=(m.utcOffset()-this.utcOffset())*e,$=this-m,w=b.m(this,m);return w=(v={},v[f]=w/12,v[c]=w,v[u]=w/3,v[h]=($-p)/6048e5,v[o]=($-p)/864e5,v[a]=$/i,v[r]=$/e,v[s]=$/t,v)[g]||$,d?w:b.a(w)},p.daysInMonth=function(){return this.endOf(c).$D},p.$locale=function(){return y[this.$L]},p.locale=function(t,e){if(!t)return this.$L;var i=this.clone(),n=M(t,e,!0);return n&&(i.$L=n),i},p.clone=function(){return b.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},m}(),S=T.prototype;return C.prototype=S,[["$ms",n],["$s",s],["$m",r],["$H",a],["$W",o],["$M",c],["$y",f],["$D",l]].forEach((function(t){S[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),C.extend=function(t,e){return t.$i||(t(e,T,C),t.$i=!0),C},C.locale=M,C.isDayjs=x,C.unix=function(t){return C(1e3*t)},C.en=y[w],C.Ls=y,C.p={},C}();const T=(t,e="MM/DD HH:mm")=>b(1e3*t).format(e);function S({pointWidth:t,timePerPixel:e,timeSpacing:i,screenScaleCount:n,scaleSpacing:s,scaleHeight:r,startTime:a,drawLine:o,drawText:h}){if(1!==i)if(10!==i)if(30!==i)if(60!==i)if(120!==i)if(300!==i)if(7200!==i)if(86400!==i)if(604800!==i);else{const t=a-((t=Math.floor(Date.now()/1e3))=>{const e=1e3*t,i=b(e).year(),n=b(e).month(),s=b(e).date(),r=b(e).day(),a=new Date(i,n,s-r).getTime();return Math.floor(a/1e3)})(a),c=t/e,u=new Array(n).fill(!1),f=t=>{for(let e=t;e>t-7;e--)if(u[e])return!1;return!0};for(let e=0;e<n;e++){const n=e*s-c,l=Math.ceil(a+e*i-t);0===b(1e3*l).month()&&(b(1e3*l).date()>0||b(1e3*l).date()<=31)&&f(e)?(u[e]=!0,o(n,r.height5),h(n-30,r.height5+12,`${T(l,"YYYY/MM/DD")}`)):0!==b(1e3*l).day()||o(n,r.height1)}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%86400,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);"1"!==T(c,"D")?c%86400!=57600||o(n,r.height1):(o(n,r.height5),h(n-30,r.height5+12,`${T(c,"YYYY/MM/DD")}`))}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%7200,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%86400!=0?c%43200!=0?c%7200!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-30,r.height5+12,`${T(c,"MM/DD HH:mm")}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%300,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%3600!=0?c%1800!=0?c%300!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-30,r.height5+12,`${T(c)}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%120,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%1800!=0?c%600!=0?c%120!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-30,r.height5+12,`${T(c)}`))}}else{const c=+T(a,"s")%60,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%3600!=0?f%300!=0?f%60!=0||o(n,r.height1):(o(n,r.height3),f%600==0&&h(n-15,r.height5+12,`${T(f,"HH:mm")}`)):(o(n,r.height5),h(n-30,r.height5+12,`${T(f)}`))}}else{const c=+T(a,"s")%30,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%300!=0?f%30!=0||o(n,r.height1):(o(n,r.height4),h(n-15,r.height5+12,`${T(f,"HH:mm")}`))}}else{const c=+T(a,"s")%10,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%60!=0?f%10!=0||o(n,r.height1):(o(n,r.height4),h(n-15,r.height5+12,`${T(f,"HH:mm")}`))}}else for(let e=0;e<n;e++){const n=e*s+t/2,c=Math.ceil(a+e*i);c%10!=0?c%5!=0?c%1!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-15,r.height5+12,`${T(c,"HH:mm:ss")}`))}}var D,_,O,k,H;const W={fill:!1,bgColor:"rgba(0,0,0,0.5)",textColor:"#ffffff",scaleColor:"#ffffff",areaBgColor:"#ffffff55",pointColor:"#00aeec",pointWidth:3,scaleSpacing:7,fps:60,zoom:2,maxZoom:9,minZoom:1};D=new WeakMap,_=new WeakMap,O=new WeakMap,k=new WeakMap,H=new WeakMap,module.exports=class{constructor(i,n){if(D.set(this,void 0),_.set(this,void 0),O.set(this,void 0),k.set(this,void 0),H.set(this,void 0),!i)throw new Error("canvas id is required!");this.$canvas=document.getElementById(i),this.canvasContext=this.$canvas.getContext("2d");const{fill:s,width:a,height:o,bgColor:h,textColor:c,scaleColor:u,areaBgColor:f,pointColor:l,pointWidth:d,scaleSpacing:v,fps:g,zoom:m,maxZoom:p,minZoom:$}=Object.assign(Object.assign({},W),n);if(m<1||m>9||m%1!=0)throw new Error("zoom must be 1 ~ 9, and must be an integer");if(p<1||p>9||p%1!=0)throw new Error("maxZoom must be 1 ~ 9, and must be an integer");if($<1||$>9||$%1!=0)throw new Error("minZoom must be 1 ~ 9, and must be an integer");if(p<$)throw new Error("maxZoom must be greater than minZoom");if(s){const t=this.$canvas.parentElement;this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight;new ResizeObserver(M(this._onParentResize.bind(this),200)).observe(t)}else a&&(this.$canvas.width=a),o&&(this.$canvas.height=o);e(this,H,!1,"f"),e(this,D,new r,"f"),this.currentTime=0;const w=[1,10,30,60,120,300,7200,86400,604800];e(this,_,[],"f");for(let e=$-1;e<p;e++)t(this,_,"f").push(w[e]);e(this,O,t(this,_,"f")[m-1],"f"),this.scaleSpacing=v,e(this,k,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.bgColor=h,this.pointWidth=d,this.pointColor=l,this.textColor=c,this.scaleColor=u,this.areaBgColor=f,this.fps=g}draw({currentTime:e=0,areas:i,_privateFlag:n}={}){if(t(this,H,"f")&&!n)return;this.currentTime=e||Math.floor(Date.now()/1e3),this.areas=i||[];const s=Math.ceil(this.$canvas.width/this.scaleSpacing),r=s*t(this,O,"f"),a=this.currentTime-r/2,o=this.currentTime+r/2,h=this.$canvas.width/2,c=r/this.$canvas.width;this.clear(),this.drawArea(0,0,this.$canvas.width,this.$canvas.height,this.bgColor),this.areas.forEach((t=>{const e=t.startTime<a?0:Math.floor((t.startTime-a)/c),i=t.endTime>o?this.$canvas.width:Math.floor((t.endTime-a)/c);this.drawArea(e,0,i,this.$canvas.height,t.bgColor||this.areaBgColor)})),S.bind(this)({pointWidth:this.pointWidth,timePerPixel:c,scaleHeight:t(this,k,"f"),scaleSpacing:this.scaleSpacing,timeSpacing:t(this,O,"f"),screenScaleCount:s,startTime:a,drawLine:this.drawLine.bind(this),drawText:this.drawText.bind(this)}),this.drawTimelineScale(t(this,O,"f")),this.drawLine(h-this.pointWidth/2,this.$canvas.height,this.pointWidth,this.pointColor),this.drawArea(h-52,3,h+52,18,this.pointColor),this.drawText(h-50,15,`${T(this.currentTime,"YYYY/MM/DD HH:mm:ss")}`),this.$canvas.onwheel=this._onZoom.bind(this),this.$canvas.onmousedown=this._onDrag.bind(this)}_onDrag({clientX:i}){e(this,H,!0,"f");let n=0;document.onmousemove=M((e=>{const s=e.clientX-i,r=this.currentTime-t(this,O,"f")/this.scaleSpacing*(s-n);n=s,this.draw({currentTime:Math.round(r),areas:this.areas,_privateFlag:!0})}),1===t(this,O,"f")?100:1e3/this.fps),document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,e(this,H,!1,"f"),this.emit("timeUpdate",this.currentTime)}}_onZoom(i){i.preventDefault();const n=t(this,_,"f").findIndex((e=>e===t(this,O,"f")));i.deltaY<0&&n>0?(e(this,O,t(this,_,"f")[n-1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0})):i.deltaY>0&&n<t(this,_,"f").length-1&&(e(this,O,t(this,_,"f")[n+1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0}))}_onParentResize(){const t=this.$canvas.parentNode;t&&(this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight,e(this,k,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.draw({currentTime:this.currentTime,areas:this.areas}))}clear(){this.canvasContext&&this.canvasContext.clearRect(0,0,this.$canvas.width,this.$canvas.height),this.$canvas&&(this.$canvas.onwheel=null,this.$canvas.onmousedown=null)}drawTimelineScale(t){switch(t){case 1:this.drawText(25,12,"1s");break;case 10:this.drawText(25,12,"10s");break;case 30:this.drawText(25,12,"30s");break;case 60:this.drawText(25,12,"1min");break;case 120:this.drawText(25,12,"2min");break;case 300:this.drawText(25,12,"5min");break;case 7200:this.drawText(25,12,"1hour");break;case 86400:this.drawText(25,12,"1day");break;case 604800:this.drawText(25,12,"1week")}this.drawLine(0,0),this.canvasContext.beginPath(),this.canvasContext.moveTo(5,5),this.canvasContext.lineTo(5,10),this.canvasContext.stroke(),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1,this.canvasContext.stroke(),this.canvasContext.closePath(),this.canvasContext.beginPath(),this.canvasContext.moveTo(4,10),this.canvasContext.lineTo(20,10),this.canvasContext.stroke(),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1,this.canvasContext.stroke(),this.canvasContext.closePath(),this.canvasContext.beginPath(),this.canvasContext.moveTo(20,11),this.canvasContext.lineTo(20,5),this.canvasContext.stroke(),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1,this.canvasContext.stroke(),this.canvasContext.closePath()}drawLine(t,e,i=1,n=this.scaleColor){this.canvasContext.beginPath(),this.canvasContext.moveTo(t,this.$canvas.height),this.canvasContext.lineTo(t,this.$canvas.height-e),this.canvasContext.stroke(),this.canvasContext.strokeStyle=n,this.canvasContext.lineWidth=i,this.canvasContext.stroke(),this.canvasContext.closePath()}drawText(t,e,i,n=this.textColor){this.canvasContext.beginPath(),this.canvasContext.fillStyle=n,this.canvasContext.font="12px",this.canvasContext.fillText(i,t,e),this.canvasContext.closePath()}drawArea(t,e,i,n,s){this.canvasContext.beginPath(),this.canvasContext.rect(t,e,i-t,n-e),this.canvasContext.fillStyle=s,this.canvasContext.fill(),this.canvasContext.closePath()}on(e,i){t(this,D,"f").on(e,i)}off(e,i){t(this,D,"f").off(e,i)}emit(...e){t(this,D,"f").emit(...e)}}; | ||
***************************************************************************** */}function i(t){var e="function"==typeof Symbol&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function n(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,s,r=i.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return a}function s(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t}var r=function(){function t(){this._listenersMap={}}return t.prototype.on=function(t,e){return void 0===this._listenersMap[t]&&(this._listenersMap[t]=[]),this._listenersMap[t].push(e),this},t.prototype.once=function(t,e){return e.isOnce=!0,this.on(t,e),this},t.prototype.off=function(t,e){var i=this._listenersMap[t];if(void 0!==i)if(void 0===e)delete this._listenersMap[t];else{var n=i.findIndex((function(t){return t===e}));i.splice(n,1)}return this},t.prototype.offAll=function(){this._listenersMap={}},t.prototype.emit=function(t){for(var e,r,a=[],o=1;o<arguments.length;o++)a[o-1]=arguments[o];var h=this._listenersMap[t];if(void 0!==h&&h.length>0){try{for(var c=i(h.entries()),u=c.next();!u.done;u=c.next()){var f=n(u.value,2),l=f[0],d=f[1];if(d.isOnce){var v=d;h.splice(l,1),v.apply(void 0,s(a))}else d.apply(void 0,s(a))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(e)throw e.error}}return!0}return!1},t.prototype.has=function(t){return void 0!==this._listenersMap[t]&&this._listenersMap[t].length>0},t.prototype.eventNames=function(){var t=[];for(var e in this._listenersMap)t.push(e);return t},t.prototype.destroy=function(){this.offAll()},t}(),a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o=/^\s+|\s+$/g,h=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,f=parseInt,l="object"==typeof a&&a&&a.Object===Object&&a,d="object"==typeof self&&self&&self.Object===Object&&self,v=l||d||Function("return this")(),g=Object.prototype.toString,m=Math.max,p=Math.min,$=function(){return v.Date.now()};function w(t,e,i){var n,s,r,a,o,h,c=0,u=!1,f=!1,l=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function d(e){var i=n,r=s;return n=s=void 0,c=e,a=t.apply(r,i)}function v(t){return c=t,o=setTimeout(w,e),u?d(t):a}function g(t){var i=t-h;return void 0===h||i>=e||i<0||f&&t-c>=r}function w(){var t=$();if(g(t))return b(t);o=setTimeout(w,function(t){var i=e-(t-h);return f?p(i,r-(t-c)):i}(t))}function b(t){return o=void 0,l&&n?d(t):(n=s=void 0,a)}function x(){var t=$(),i=g(t);if(n=arguments,s=this,h=t,i){if(void 0===o)return v(h);if(f)return o=setTimeout(w,e),d(h)}return void 0===o&&(o=setTimeout(w,e)),a}return e=M(e)||0,y(i)&&(u=!!i.leading,r=(f="maxWait"in i)?m(M(i.maxWait)||0,e):r,l="trailing"in i?!!i.trailing:l),x.cancel=function(){void 0!==o&&clearTimeout(o),c=0,n=h=s=o=void 0},x.flush=function(){return void 0===o?a:b($())},x}function y(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function M(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==g.call(t)}(t))return NaN;if(y(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=y(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(o,"");var i=c.test(t);return i||u.test(t)?f(t.slice(2),i?2:8):h.test(t)?NaN:+t}var b=function(t,e,i){var n=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return y(i)&&(n="leading"in i?!!i.leading:n,s="trailing"in i?!!i.trailing:s),w(t,e,{leading:n,maxWait:e,trailing:s})},x={exports:{}},C=x.exports=function(){var t=1e3,e=6e4,i=36e5,n="millisecond",s="second",r="minute",a="hour",o="day",h="week",c="month",u="quarter",f="year",l="date",d="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},p=function(t,e,i){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(i)+t},$={s:p,z:function(t){var e=-t.utcOffset(),i=Math.abs(e),n=Math.floor(i/60),s=i%60;return(e<=0?"+":"-")+p(n,2,"0")+":"+p(s,2,"0")},m:function t(e,i){if(e.date()<i.date())return-t(i,e);var n=12*(i.year()-e.year())+(i.month()-e.month()),s=e.clone().add(n,c),r=i-s<0,a=e.clone().add(n+(r?-1:1),c);return+(-(n+(i-s)/(r?s-a:a-s))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:f,w:h,d:o,D:l,h:a,m:r,s:s,ms:n,Q:u}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},w="en",y={};y[w]=m;var M=function(t){return t instanceof T},b=function t(e,i,n){var s;if(!e)return w;if("string"==typeof e){var r=e.toLowerCase();y[r]&&(s=r),i&&(y[r]=i,s=r);var a=e.split("-");if(!s&&a.length>1)return t(a[0])}else{var o=e.name;y[o]=e,s=o}return!n&&s&&(w=s),s||!n&&w},x=function(t,e){if(M(t))return t.clone();var i="object"==typeof e?e:{};return i.date=t,i.args=arguments,new T(i)},C=$;C.l=b,C.i=M,C.w=function(t,e){return x(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function m(t){this.$L=b(t.locale,null,!0),this.parse(t)}var p=m.prototype;return p.parse=function(t){this.$d=function(t){var e=t.date,i=t.utc;if(null===e)return new Date(NaN);if(C.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(v);if(n){var s=n[2]-1||0,r=(n[7]||"0").substring(0,3);return i?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},p.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},p.$utils=function(){return C},p.isValid=function(){return!(this.$d.toString()===d)},p.isSame=function(t,e){var i=x(t);return this.startOf(e)<=i&&i<=this.endOf(e)},p.isAfter=function(t,e){return x(t)<this.startOf(e)},p.isBefore=function(t,e){return this.endOf(e)<x(t)},p.$g=function(t,e,i){return C.u(t)?this[e]:this.set(i,t)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(t,e){var i=this,n=!!C.u(e)||e,u=C.p(t),d=function(t,e){var s=C.w(i.$u?Date.UTC(i.$y,e,t):new Date(i.$y,e,t),i);return n?s:s.endOf(o)},v=function(t,e){return C.w(i.toDate()[t].apply(i.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(e)),i)},g=this.$W,m=this.$M,p=this.$D,$="set"+(this.$u?"UTC":"");switch(u){case f:return n?d(1,0):d(31,11);case c:return n?d(1,m):d(0,m+1);case h:var w=this.$locale().weekStart||0,y=(g<w?g+7:g)-w;return d(n?p-y:p+(6-y),m);case o:case l:return v($+"Hours",0);case a:return v($+"Minutes",1);case r:return v($+"Seconds",2);case s:return v($+"Milliseconds",3);default:return this.clone()}},p.endOf=function(t){return this.startOf(t,!1)},p.$set=function(t,e){var i,h=C.p(t),u="set"+(this.$u?"UTC":""),d=(i={},i[o]=u+"Date",i[l]=u+"Date",i[c]=u+"Month",i[f]=u+"FullYear",i[a]=u+"Hours",i[r]=u+"Minutes",i[s]=u+"Seconds",i[n]=u+"Milliseconds",i)[h],v=h===o?this.$D+(e-this.$W):e;if(h===c||h===f){var g=this.clone().set(l,1);g.$d[d](v),g.init(),this.$d=g.set(l,Math.min(this.$D,g.daysInMonth())).$d}else d&&this.$d[d](v);return this.init(),this},p.set=function(t,e){return this.clone().$set(t,e)},p.get=function(t){return this[C.p(t)]()},p.add=function(n,u){var l,d=this;n=Number(n);var v=C.p(u),g=function(t){var e=x(d);return C.w(e.date(e.date()+Math.round(t*n)),d)};if(v===c)return this.set(c,this.$M+n);if(v===f)return this.set(f,this.$y+n);if(v===o)return g(1);if(v===h)return g(7);var m=(l={},l[r]=e,l[a]=i,l[s]=t,l)[v]||1,p=this.$d.getTime()+n*m;return C.w(p,this)},p.subtract=function(t,e){return this.add(-1*t,e)},p.format=function(t){var e=this,i=this.$locale();if(!this.isValid())return i.invalidDate||d;var n=t||"YYYY-MM-DDTHH:mm:ssZ",s=C.z(this),r=this.$H,a=this.$m,o=this.$M,h=i.weekdays,c=i.months,u=function(t,i,s,r){return t&&(t[i]||t(e,n))||s[i].slice(0,r)},f=function(t){return C.s(r%12||12,t,"0")},l=i.meridiem||function(t,e,i){var n=t<12?"AM":"PM";return i?n.toLowerCase():n},v={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:C.s(o+1,2,"0"),MMM:u(i.monthsShort,o,c,3),MMMM:u(c,o),D:this.$D,DD:C.s(this.$D,2,"0"),d:String(this.$W),dd:u(i.weekdaysMin,this.$W,h,2),ddd:u(i.weekdaysShort,this.$W,h,3),dddd:h[this.$W],H:String(r),HH:C.s(r,2,"0"),h:f(1),hh:f(2),a:l(r,a,!0),A:l(r,a,!1),m:String(a),mm:C.s(a,2,"0"),s:String(this.$s),ss:C.s(this.$s,2,"0"),SSS:C.s(this.$ms,3,"0"),Z:s};return n.replace(g,(function(t,e){return e||v[t]||s.replace(":","")}))},p.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},p.diff=function(n,l,d){var v,g=C.p(l),m=x(n),p=(m.utcOffset()-this.utcOffset())*e,$=this-m,w=C.m(this,m);return w=(v={},v[f]=w/12,v[c]=w,v[u]=w/3,v[h]=($-p)/6048e5,v[o]=($-p)/864e5,v[a]=$/i,v[r]=$/e,v[s]=$/t,v)[g]||$,d?w:C.a(w)},p.daysInMonth=function(){return this.endOf(c).$D},p.$locale=function(){return y[this.$L]},p.locale=function(t,e){if(!t)return this.$L;var i=this.clone(),n=b(t,e,!0);return n&&(i.$L=n),i},p.clone=function(){return C.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},m}(),S=T.prototype;return x.prototype=S,[["$ms",n],["$s",s],["$m",r],["$H",a],["$W",o],["$M",c],["$y",f],["$D",l]].forEach((function(t){S[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),x.extend=function(t,e){return t.$i||(t(e,T,x),t.$i=!0),x},x.locale=b,x.isDayjs=M,x.unix=function(t){return x(1e3*t)},x.en=y[w],x.Ls=y,x.p={},x}();const T=(t,e="MM/DD HH:mm")=>C(1e3*t).format(e);function S({pointWidth:t,timePerPixel:e,timeSpacing:i,screenScaleCount:n,scaleSpacing:s,scaleHeight:r,startTime:a,drawLine:o,drawText:h}){if(1!==i)if(10!==i)if(30!==i)if(60!==i)if(120!==i)if(300!==i)if(7200!==i)if(86400!==i)if(604800!==i);else{const t=a-((t=Math.floor(Date.now()/1e3))=>{const e=1e3*t,i=C(e).year(),n=C(e).month(),s=C(e).date(),r=C(e).day(),a=new Date(i,n,s-r).getTime();return Math.floor(a/1e3)})(a),c=t/e,u=new Array(n).fill(!1),f=t=>{for(let e=t;e>t-7;e--)if(u[e])return!1;return!0};for(let e=0;e<n;e++){const n=e*s-c,l=Math.ceil(a+e*i-t);0===C(1e3*l).month()&&(C(1e3*l).date()>0||C(1e3*l).date()<=31)&&f(e)?(u[e]=!0,o(n,r.height5),h(n,r.height5+13,`${T(l,"YYYY/MM/DD")}`)):0!==C(1e3*l).day()||o(n,r.height1)}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%86400,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);"1"!==T(c,"D")?c%86400!=57600||o(n,r.height1):(o(n,r.height5),h(n,r.height5+13,`${T(c,"YYYY/MM/DD")}`))}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%7200,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%86400!=0?c%43200!=0?c%7200!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c,"MM/DD HH:mm")}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%300,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%3600!=0?c%1800!=0?c%300!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c)}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%120,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%1800!=0?c%600!=0?c%120!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c)}`))}}else{const c=+T(a,"s")%60,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%3600!=0?f%300!=0?f%60!=0||o(n,r.height1):(o(n,r.height3),f%600==0&&h(n,r.height5+13,`${T(f,"HH:mm")}`)):(o(n,r.height5),h(n,r.height5+13,`${T(f)}`))}}else{const c=+T(a,"s")%30,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%300!=0?f%30!=0||o(n,r.height1):(o(n,r.height4),h(n,r.height5+13,`${T(f,"HH:mm")}`))}}else{const c=+T(a,"s")%10,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%60!=0?f%10!=0||o(n,r.height1):(o(n,r.height4),h(n,r.height5+13,`${T(f,"HH:mm")}`))}}else for(let e=0;e<n;e++){const n=e*s+t/2,c=Math.ceil(a+e*i);c%10!=0?c%5!=0?c%1!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c,"HH:mm:ss")}`))}}var D,_,O,H,W;const Y={fill:!1,bgColor:"rgba(0,0,0,0.5)",textColor:"#ffffff",scaleColor:"#ffffff",areaBgColor:"#ffffff55",pointColor:"#00aeec",pointWidth:3,scaleSpacing:7,fps:60,zoom:2,maxZoom:9,minZoom:1};D=new WeakMap,_=new WeakMap,O=new WeakMap,H=new WeakMap,W=new WeakMap,module.exports=class{constructor(i,n){if(D.set(this,void 0),_.set(this,void 0),O.set(this,void 0),H.set(this,void 0),W.set(this,void 0),!i)throw new Error("canvas id is required!");this.$canvas=document.getElementById(i),this.canvasContext=this.$canvas.getContext("2d");const{fill:s,width:a,height:o,bgColor:h,textColor:c,scaleColor:u,areaBgColor:f,pointColor:l,pointWidth:d,scaleSpacing:v,fps:g,zoom:m,maxZoom:p,minZoom:$}=Object.assign(Object.assign({},Y),n);if(m<1||m>9||m%1!=0)throw new Error("zoom must be 1 ~ 9, and must be an integer");if(p<1||p>9||p%1!=0)throw new Error("maxZoom must be 1 ~ 9, and must be an integer");if($<1||$>9||$%1!=0)throw new Error("minZoom must be 1 ~ 9, and must be an integer");if(p<$)throw new Error("maxZoom must be greater than minZoom");if(s){const t=this.$canvas.parentElement;this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight;new ResizeObserver(b(this._onParentResize.bind(this),200)).observe(t)}else a&&(this.$canvas.width=a),o&&(this.$canvas.height=o);e(this,W,!1,"f"),e(this,D,new r,"f"),this.currentTime=0;const w=[1,10,30,60,120,300,7200,86400,604800];e(this,_,[],"f");for(let e=$-1;e<p;e++)t(this,_,"f").push(w[e]);e(this,O,t(this,_,"f")[m-1],"f"),this.scaleSpacing=v,e(this,H,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.bgColor=h,this.pointWidth=d,this.pointColor=l,this.textColor=c,this.scaleColor=u,this.areaBgColor=f,this.fps=g}draw({currentTime:e=0,areas:i,_privateFlag:n}={}){if(t(this,W,"f")&&!n)return;this.currentTime=e||Math.floor(Date.now()/1e3),this.areas=i||[];const s=Math.ceil(this.$canvas.width/this.scaleSpacing),r=s*t(this,O,"f"),a=this.currentTime-r/2,o=this.currentTime+r/2,h=this.$canvas.width/2,c=r/this.$canvas.width;this.clear(),this.drawArea(0,0,this.$canvas.width,this.$canvas.height,this.bgColor),this.areas.forEach((t=>{const e=t.startTime<a?0:Math.floor((t.startTime-a)/c),i=t.endTime>o?this.$canvas.width:Math.floor((t.endTime-a)/c);this.drawArea(e,0,i,this.$canvas.height,t.bgColor||this.areaBgColor)})),S.bind(this)({pointWidth:this.pointWidth,timePerPixel:c,scaleHeight:t(this,H,"f"),scaleSpacing:this.scaleSpacing,timeSpacing:t(this,O,"f"),screenScaleCount:s,startTime:a,drawLine:this.drawLine.bind(this),drawText:this.drawText.bind(this)}),this.drawTimelineScale(t(this,O,"f")),this.drawLine(h-this.pointWidth/2,this.$canvas.height,this.pointWidth,this.pointColor),this.drawArea(h-54,4,h+54,18,this.pointColor),this.drawText(h,6,`${T(this.currentTime,"YYYY/MM/DD HH:mm:ss")}`,this.textColor,"center","top"),this.$canvas.onwheel=this._onZoom.bind(this),this.$canvas.onmousedown=this._onDrag.bind(this)}_onDrag({clientX:i}){e(this,W,!0,"f");let n=0;document.onmousemove=b((e=>{const s=e.clientX-i,r=this.currentTime-t(this,O,"f")/this.scaleSpacing*(s-n);n=s,this.draw({currentTime:Math.round(r),areas:this.areas,_privateFlag:!0})}),1===t(this,O,"f")?100:1e3/this.fps),document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,e(this,W,!1,"f"),this.emit("timeUpdate",this.currentTime)}}_onZoom(i){i.preventDefault();const n=t(this,_,"f").findIndex((e=>e===t(this,O,"f")));i.deltaY<0&&n>0?(e(this,O,t(this,_,"f")[n-1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0})):i.deltaY>0&&n<t(this,_,"f").length-1&&(e(this,O,t(this,_,"f")[n+1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0}))}_onParentResize(){const t=this.$canvas.parentNode;t&&(this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight,e(this,H,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.draw({currentTime:this.currentTime,areas:this.areas}))}clear(){this.canvasContext&&this.canvasContext.clearRect(0,0,this.$canvas.width,this.$canvas.height),this.$canvas&&(this.$canvas.onwheel=null,this.$canvas.onmousedown=null)}drawTimelineScale(t){let e="";switch(t){case 1:e="1s";break;case 10:e="10s";break;case 30:e="30s";break;case 60:e="1min";break;case 120:e="2min";break;case 300:e="5min";break;case 7200:e="2hour";break;case 86400:e="1day";break;case 604800:e="1week"}this.drawText(this.scaleSpacing+12,9,`${e}`,this.textColor,"left","middle"),this.canvasContext.beginPath(),this.canvasContext.moveTo(5,6),this.canvasContext.lineTo(5,10),this.canvasContext.lineTo(this.scaleSpacing+7,10),this.canvasContext.lineTo(this.scaleSpacing+7,6),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1.5,this.canvasContext.stroke()}drawLine(t,e,i=1,n=this.scaleColor){this.canvasContext.beginPath(),this.canvasContext.moveTo(t,this.$canvas.height),this.canvasContext.lineTo(t,this.$canvas.height-e),this.canvasContext.closePath(),this.canvasContext.strokeStyle=n,this.canvasContext.lineWidth=i,this.canvasContext.stroke()}drawText(t,e,i,n=this.textColor,s="center",r="alphabetic"){this.canvasContext.beginPath(),this.canvasContext.font="11px Arial",this.canvasContext.fillStyle=n,this.canvasContext.textAlign=s,this.canvasContext.textBaseline=r,this.canvasContext.fillText(i,t,e)}drawArea(t,e,i,n,s){this.canvasContext.beginPath(),this.canvasContext.rect(t,e,i-t,n-e),this.canvasContext.fillStyle=s,this.canvasContext.fill()}on(e,i){t(this,D,"f").on(e,i)}off(e,i){t(this,D,"f").off(e,i)}emit(...e){t(this,D,"f").emit(...e)}}; | ||
//# sourceMappingURL=timeline.cjs.min.js.map |
@@ -35,3 +35,3 @@ /*! ***************************************************************************** | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */}function i(t){var e="function"==typeof Symbol&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function n(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,s,r=i.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return a}function s(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t}var r=function(){function t(){this._listenersMap={}}return t.prototype.on=function(t,e){return void 0===this._listenersMap[t]&&(this._listenersMap[t]=[]),this._listenersMap[t].push(e),this},t.prototype.once=function(t,e){return e.isOnce=!0,this.on(t,e),this},t.prototype.off=function(t,e){var i=this._listenersMap[t];if(void 0!==i)if(void 0===e)delete this._listenersMap[t];else{var n=i.findIndex((function(t){return t===e}));i.splice(n,1)}return this},t.prototype.offAll=function(){this._listenersMap={}},t.prototype.emit=function(t){for(var e,r,a=[],o=1;o<arguments.length;o++)a[o-1]=arguments[o];var h=this._listenersMap[t];if(void 0!==h&&h.length>0){try{for(var c=i(h.entries()),u=c.next();!u.done;u=c.next()){var f=n(u.value,2),l=f[0],d=f[1];if(d.isOnce){var v=d;h.splice(l,1),v.apply(void 0,s(a))}else d.apply(void 0,s(a))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(e)throw e.error}}return!0}return!1},t.prototype.has=function(t){return void 0!==this._listenersMap[t]&&this._listenersMap[t].length>0},t.prototype.eventNames=function(){var t=[];for(var e in this._listenersMap)t.push(e);return t},t.prototype.destroy=function(){this.offAll()},t}(),a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o=/^\s+|\s+$/g,h=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,f=parseInt,l="object"==typeof a&&a&&a.Object===Object&&a,d="object"==typeof self&&self&&self.Object===Object&&self,v=l||d||Function("return this")(),g=Object.prototype.toString,m=Math.max,p=Math.min,$=function(){return v.Date.now()};function w(t,e,i){var n,s,r,a,o,h,c=0,u=!1,f=!1,l=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function d(e){var i=n,r=s;return n=s=void 0,c=e,a=t.apply(r,i)}function v(t){return c=t,o=setTimeout(w,e),u?d(t):a}function g(t){var i=t-h;return void 0===h||i>=e||i<0||f&&t-c>=r}function w(){var t=$();if(g(t))return M(t);o=setTimeout(w,function(t){var i=e-(t-h);return f?p(i,r-(t-c)):i}(t))}function M(t){return o=void 0,l&&n?d(t):(n=s=void 0,a)}function C(){var t=$(),i=g(t);if(n=arguments,s=this,h=t,i){if(void 0===o)return v(h);if(f)return o=setTimeout(w,e),d(h)}return void 0===o&&(o=setTimeout(w,e)),a}return e=x(e)||0,y(i)&&(u=!!i.leading,r=(f="maxWait"in i)?m(x(i.maxWait)||0,e):r,l="trailing"in i?!!i.trailing:l),C.cancel=function(){void 0!==o&&clearTimeout(o),c=0,n=h=s=o=void 0},C.flush=function(){return void 0===o?a:M($())},C}function y(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function x(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==g.call(t)}(t))return NaN;if(y(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=y(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(o,"");var i=c.test(t);return i||u.test(t)?f(t.slice(2),i?2:8):h.test(t)?NaN:+t}var M=function(t,e,i){var n=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return y(i)&&(n="leading"in i?!!i.leading:n,s="trailing"in i?!!i.trailing:s),w(t,e,{leading:n,maxWait:e,trailing:s})},C={exports:{}},b=C.exports=function(){var t=1e3,e=6e4,i=36e5,n="millisecond",s="second",r="minute",a="hour",o="day",h="week",c="month",u="quarter",f="year",l="date",d="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},p=function(t,e,i){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(i)+t},$={s:p,z:function(t){var e=-t.utcOffset(),i=Math.abs(e),n=Math.floor(i/60),s=i%60;return(e<=0?"+":"-")+p(n,2,"0")+":"+p(s,2,"0")},m:function t(e,i){if(e.date()<i.date())return-t(i,e);var n=12*(i.year()-e.year())+(i.month()-e.month()),s=e.clone().add(n,c),r=i-s<0,a=e.clone().add(n+(r?-1:1),c);return+(-(n+(i-s)/(r?s-a:a-s))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:f,w:h,d:o,D:l,h:a,m:r,s:s,ms:n,Q:u}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},w="en",y={};y[w]=m;var x=function(t){return t instanceof T},M=function t(e,i,n){var s;if(!e)return w;if("string"==typeof e){var r=e.toLowerCase();y[r]&&(s=r),i&&(y[r]=i,s=r);var a=e.split("-");if(!s&&a.length>1)return t(a[0])}else{var o=e.name;y[o]=e,s=o}return!n&&s&&(w=s),s||!n&&w},C=function(t,e){if(x(t))return t.clone();var i="object"==typeof e?e:{};return i.date=t,i.args=arguments,new T(i)},b=$;b.l=M,b.i=x,b.w=function(t,e){return C(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function m(t){this.$L=M(t.locale,null,!0),this.parse(t)}var p=m.prototype;return p.parse=function(t){this.$d=function(t){var e=t.date,i=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(v);if(n){var s=n[2]-1||0,r=(n[7]||"0").substring(0,3);return i?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},p.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},p.$utils=function(){return b},p.isValid=function(){return!(this.$d.toString()===d)},p.isSame=function(t,e){var i=C(t);return this.startOf(e)<=i&&i<=this.endOf(e)},p.isAfter=function(t,e){return C(t)<this.startOf(e)},p.isBefore=function(t,e){return this.endOf(e)<C(t)},p.$g=function(t,e,i){return b.u(t)?this[e]:this.set(i,t)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(t,e){var i=this,n=!!b.u(e)||e,u=b.p(t),d=function(t,e){var s=b.w(i.$u?Date.UTC(i.$y,e,t):new Date(i.$y,e,t),i);return n?s:s.endOf(o)},v=function(t,e){return b.w(i.toDate()[t].apply(i.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(e)),i)},g=this.$W,m=this.$M,p=this.$D,$="set"+(this.$u?"UTC":"");switch(u){case f:return n?d(1,0):d(31,11);case c:return n?d(1,m):d(0,m+1);case h:var w=this.$locale().weekStart||0,y=(g<w?g+7:g)-w;return d(n?p-y:p+(6-y),m);case o:case l:return v($+"Hours",0);case a:return v($+"Minutes",1);case r:return v($+"Seconds",2);case s:return v($+"Milliseconds",3);default:return this.clone()}},p.endOf=function(t){return this.startOf(t,!1)},p.$set=function(t,e){var i,h=b.p(t),u="set"+(this.$u?"UTC":""),d=(i={},i[o]=u+"Date",i[l]=u+"Date",i[c]=u+"Month",i[f]=u+"FullYear",i[a]=u+"Hours",i[r]=u+"Minutes",i[s]=u+"Seconds",i[n]=u+"Milliseconds",i)[h],v=h===o?this.$D+(e-this.$W):e;if(h===c||h===f){var g=this.clone().set(l,1);g.$d[d](v),g.init(),this.$d=g.set(l,Math.min(this.$D,g.daysInMonth())).$d}else d&&this.$d[d](v);return this.init(),this},p.set=function(t,e){return this.clone().$set(t,e)},p.get=function(t){return this[b.p(t)]()},p.add=function(n,u){var l,d=this;n=Number(n);var v=b.p(u),g=function(t){var e=C(d);return b.w(e.date(e.date()+Math.round(t*n)),d)};if(v===c)return this.set(c,this.$M+n);if(v===f)return this.set(f,this.$y+n);if(v===o)return g(1);if(v===h)return g(7);var m=(l={},l[r]=e,l[a]=i,l[s]=t,l)[v]||1,p=this.$d.getTime()+n*m;return b.w(p,this)},p.subtract=function(t,e){return this.add(-1*t,e)},p.format=function(t){var e=this,i=this.$locale();if(!this.isValid())return i.invalidDate||d;var n=t||"YYYY-MM-DDTHH:mm:ssZ",s=b.z(this),r=this.$H,a=this.$m,o=this.$M,h=i.weekdays,c=i.months,u=function(t,i,s,r){return t&&(t[i]||t(e,n))||s[i].slice(0,r)},f=function(t){return b.s(r%12||12,t,"0")},l=i.meridiem||function(t,e,i){var n=t<12?"AM":"PM";return i?n.toLowerCase():n},v={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:b.s(o+1,2,"0"),MMM:u(i.monthsShort,o,c,3),MMMM:u(c,o),D:this.$D,DD:b.s(this.$D,2,"0"),d:String(this.$W),dd:u(i.weekdaysMin,this.$W,h,2),ddd:u(i.weekdaysShort,this.$W,h,3),dddd:h[this.$W],H:String(r),HH:b.s(r,2,"0"),h:f(1),hh:f(2),a:l(r,a,!0),A:l(r,a,!1),m:String(a),mm:b.s(a,2,"0"),s:String(this.$s),ss:b.s(this.$s,2,"0"),SSS:b.s(this.$ms,3,"0"),Z:s};return n.replace(g,(function(t,e){return e||v[t]||s.replace(":","")}))},p.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},p.diff=function(n,l,d){var v,g=b.p(l),m=C(n),p=(m.utcOffset()-this.utcOffset())*e,$=this-m,w=b.m(this,m);return w=(v={},v[f]=w/12,v[c]=w,v[u]=w/3,v[h]=($-p)/6048e5,v[o]=($-p)/864e5,v[a]=$/i,v[r]=$/e,v[s]=$/t,v)[g]||$,d?w:b.a(w)},p.daysInMonth=function(){return this.endOf(c).$D},p.$locale=function(){return y[this.$L]},p.locale=function(t,e){if(!t)return this.$L;var i=this.clone(),n=M(t,e,!0);return n&&(i.$L=n),i},p.clone=function(){return b.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},m}(),S=T.prototype;return C.prototype=S,[["$ms",n],["$s",s],["$m",r],["$H",a],["$W",o],["$M",c],["$y",f],["$D",l]].forEach((function(t){S[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),C.extend=function(t,e){return t.$i||(t(e,T,C),t.$i=!0),C},C.locale=M,C.isDayjs=x,C.unix=function(t){return C(1e3*t)},C.en=y[w],C.Ls=y,C.p={},C}();const T=(t,e="MM/DD HH:mm")=>b(1e3*t).format(e);function S({pointWidth:t,timePerPixel:e,timeSpacing:i,screenScaleCount:n,scaleSpacing:s,scaleHeight:r,startTime:a,drawLine:o,drawText:h}){if(1!==i)if(10!==i)if(30!==i)if(60!==i)if(120!==i)if(300!==i)if(7200!==i)if(86400!==i)if(604800!==i);else{const t=a-((t=Math.floor(Date.now()/1e3))=>{const e=1e3*t,i=b(e).year(),n=b(e).month(),s=b(e).date(),r=b(e).day(),a=new Date(i,n,s-r).getTime();return Math.floor(a/1e3)})(a),c=t/e,u=new Array(n).fill(!1),f=t=>{for(let e=t;e>t-7;e--)if(u[e])return!1;return!0};for(let e=0;e<n;e++){const n=e*s-c,l=Math.ceil(a+e*i-t);0===b(1e3*l).month()&&(b(1e3*l).date()>0||b(1e3*l).date()<=31)&&f(e)?(u[e]=!0,o(n,r.height5),h(n-30,r.height5+12,`${T(l,"YYYY/MM/DD")}`)):0!==b(1e3*l).day()||o(n,r.height1)}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%86400,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);"1"!==T(c,"D")?c%86400!=57600||o(n,r.height1):(o(n,r.height5),h(n-30,r.height5+12,`${T(c,"YYYY/MM/DD")}`))}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%7200,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%86400!=0?c%43200!=0?c%7200!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-30,r.height5+12,`${T(c,"MM/DD HH:mm")}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%300,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%3600!=0?c%1800!=0?c%300!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-30,r.height5+12,`${T(c)}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%120,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%1800!=0?c%600!=0?c%120!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-30,r.height5+12,`${T(c)}`))}}else{const c=+T(a,"s")%60,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%3600!=0?f%300!=0?f%60!=0||o(n,r.height1):(o(n,r.height3),f%600==0&&h(n-15,r.height5+12,`${T(f,"HH:mm")}`)):(o(n,r.height5),h(n-30,r.height5+12,`${T(f)}`))}}else{const c=+T(a,"s")%30,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%300!=0?f%30!=0||o(n,r.height1):(o(n,r.height4),h(n-15,r.height5+12,`${T(f,"HH:mm")}`))}}else{const c=+T(a,"s")%10,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%60!=0?f%10!=0||o(n,r.height1):(o(n,r.height4),h(n-15,r.height5+12,`${T(f,"HH:mm")}`))}}else for(let e=0;e<n;e++){const n=e*s+t/2,c=Math.ceil(a+e*i);c%10!=0?c%5!=0?c%1!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n-15,r.height5+12,`${T(c,"HH:mm:ss")}`))}}var D,_,O,k,H;const W={fill:!1,bgColor:"rgba(0,0,0,0.5)",textColor:"#ffffff",scaleColor:"#ffffff",areaBgColor:"#ffffff55",pointColor:"#00aeec",pointWidth:3,scaleSpacing:7,fps:60,zoom:2,maxZoom:9,minZoom:1};class Y{constructor(i,n){if(D.set(this,void 0),_.set(this,void 0),O.set(this,void 0),k.set(this,void 0),H.set(this,void 0),!i)throw new Error("canvas id is required!");this.$canvas=document.getElementById(i),this.canvasContext=this.$canvas.getContext("2d");const{fill:s,width:a,height:o,bgColor:h,textColor:c,scaleColor:u,areaBgColor:f,pointColor:l,pointWidth:d,scaleSpacing:v,fps:g,zoom:m,maxZoom:p,minZoom:$}=Object.assign(Object.assign({},W),n);if(m<1||m>9||m%1!=0)throw new Error("zoom must be 1 ~ 9, and must be an integer");if(p<1||p>9||p%1!=0)throw new Error("maxZoom must be 1 ~ 9, and must be an integer");if($<1||$>9||$%1!=0)throw new Error("minZoom must be 1 ~ 9, and must be an integer");if(p<$)throw new Error("maxZoom must be greater than minZoom");if(s){const t=this.$canvas.parentElement;this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight;new ResizeObserver(M(this._onParentResize.bind(this),200)).observe(t)}else a&&(this.$canvas.width=a),o&&(this.$canvas.height=o);e(this,H,!1,"f"),e(this,D,new r,"f"),this.currentTime=0;const w=[1,10,30,60,120,300,7200,86400,604800];e(this,_,[],"f");for(let e=$-1;e<p;e++)t(this,_,"f").push(w[e]);e(this,O,t(this,_,"f")[m-1],"f"),this.scaleSpacing=v,e(this,k,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.bgColor=h,this.pointWidth=d,this.pointColor=l,this.textColor=c,this.scaleColor=u,this.areaBgColor=f,this.fps=g}draw({currentTime:e=0,areas:i,_privateFlag:n}={}){if(t(this,H,"f")&&!n)return;this.currentTime=e||Math.floor(Date.now()/1e3),this.areas=i||[];const s=Math.ceil(this.$canvas.width/this.scaleSpacing),r=s*t(this,O,"f"),a=this.currentTime-r/2,o=this.currentTime+r/2,h=this.$canvas.width/2,c=r/this.$canvas.width;this.clear(),this.drawArea(0,0,this.$canvas.width,this.$canvas.height,this.bgColor),this.areas.forEach((t=>{const e=t.startTime<a?0:Math.floor((t.startTime-a)/c),i=t.endTime>o?this.$canvas.width:Math.floor((t.endTime-a)/c);this.drawArea(e,0,i,this.$canvas.height,t.bgColor||this.areaBgColor)})),S.bind(this)({pointWidth:this.pointWidth,timePerPixel:c,scaleHeight:t(this,k,"f"),scaleSpacing:this.scaleSpacing,timeSpacing:t(this,O,"f"),screenScaleCount:s,startTime:a,drawLine:this.drawLine.bind(this),drawText:this.drawText.bind(this)}),this.drawTimelineScale(t(this,O,"f")),this.drawLine(h-this.pointWidth/2,this.$canvas.height,this.pointWidth,this.pointColor),this.drawArea(h-52,3,h+52,18,this.pointColor),this.drawText(h-50,15,`${T(this.currentTime,"YYYY/MM/DD HH:mm:ss")}`),this.$canvas.onwheel=this._onZoom.bind(this),this.$canvas.onmousedown=this._onDrag.bind(this)}_onDrag({clientX:i}){e(this,H,!0,"f");let n=0;document.onmousemove=M((e=>{const s=e.clientX-i,r=this.currentTime-t(this,O,"f")/this.scaleSpacing*(s-n);n=s,this.draw({currentTime:Math.round(r),areas:this.areas,_privateFlag:!0})}),1===t(this,O,"f")?100:1e3/this.fps),document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,e(this,H,!1,"f"),this.emit("timeUpdate",this.currentTime)}}_onZoom(i){i.preventDefault();const n=t(this,_,"f").findIndex((e=>e===t(this,O,"f")));i.deltaY<0&&n>0?(e(this,O,t(this,_,"f")[n-1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0})):i.deltaY>0&&n<t(this,_,"f").length-1&&(e(this,O,t(this,_,"f")[n+1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0}))}_onParentResize(){const t=this.$canvas.parentNode;t&&(this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight,e(this,k,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.draw({currentTime:this.currentTime,areas:this.areas}))}clear(){this.canvasContext&&this.canvasContext.clearRect(0,0,this.$canvas.width,this.$canvas.height),this.$canvas&&(this.$canvas.onwheel=null,this.$canvas.onmousedown=null)}drawTimelineScale(t){switch(t){case 1:this.drawText(25,12,"1s");break;case 10:this.drawText(25,12,"10s");break;case 30:this.drawText(25,12,"30s");break;case 60:this.drawText(25,12,"1min");break;case 120:this.drawText(25,12,"2min");break;case 300:this.drawText(25,12,"5min");break;case 7200:this.drawText(25,12,"1hour");break;case 86400:this.drawText(25,12,"1day");break;case 604800:this.drawText(25,12,"1week")}this.drawLine(0,0),this.canvasContext.beginPath(),this.canvasContext.moveTo(5,5),this.canvasContext.lineTo(5,10),this.canvasContext.stroke(),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1,this.canvasContext.stroke(),this.canvasContext.closePath(),this.canvasContext.beginPath(),this.canvasContext.moveTo(4,10),this.canvasContext.lineTo(20,10),this.canvasContext.stroke(),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1,this.canvasContext.stroke(),this.canvasContext.closePath(),this.canvasContext.beginPath(),this.canvasContext.moveTo(20,11),this.canvasContext.lineTo(20,5),this.canvasContext.stroke(),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1,this.canvasContext.stroke(),this.canvasContext.closePath()}drawLine(t,e,i=1,n=this.scaleColor){this.canvasContext.beginPath(),this.canvasContext.moveTo(t,this.$canvas.height),this.canvasContext.lineTo(t,this.$canvas.height-e),this.canvasContext.stroke(),this.canvasContext.strokeStyle=n,this.canvasContext.lineWidth=i,this.canvasContext.stroke(),this.canvasContext.closePath()}drawText(t,e,i,n=this.textColor){this.canvasContext.beginPath(),this.canvasContext.fillStyle=n,this.canvasContext.font="12px",this.canvasContext.fillText(i,t,e),this.canvasContext.closePath()}drawArea(t,e,i,n,s){this.canvasContext.beginPath(),this.canvasContext.rect(t,e,i-t,n-e),this.canvasContext.fillStyle=s,this.canvasContext.fill(),this.canvasContext.closePath()}on(e,i){t(this,D,"f").on(e,i)}off(e,i){t(this,D,"f").off(e,i)}emit(...e){t(this,D,"f").emit(...e)}}D=new WeakMap,_=new WeakMap,O=new WeakMap,k=new WeakMap,H=new WeakMap;export{Y as default}; | ||
***************************************************************************** */}function i(t){var e="function"==typeof Symbol&&Symbol.iterator,i=e&&t[e],n=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function n(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var n,s,r=i.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(i=r.return)&&i.call(r)}finally{if(s)throw s.error}}return a}function s(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t}var r=function(){function t(){this._listenersMap={}}return t.prototype.on=function(t,e){return void 0===this._listenersMap[t]&&(this._listenersMap[t]=[]),this._listenersMap[t].push(e),this},t.prototype.once=function(t,e){return e.isOnce=!0,this.on(t,e),this},t.prototype.off=function(t,e){var i=this._listenersMap[t];if(void 0!==i)if(void 0===e)delete this._listenersMap[t];else{var n=i.findIndex((function(t){return t===e}));i.splice(n,1)}return this},t.prototype.offAll=function(){this._listenersMap={}},t.prototype.emit=function(t){for(var e,r,a=[],o=1;o<arguments.length;o++)a[o-1]=arguments[o];var h=this._listenersMap[t];if(void 0!==h&&h.length>0){try{for(var c=i(h.entries()),u=c.next();!u.done;u=c.next()){var f=n(u.value,2),l=f[0],d=f[1];if(d.isOnce){var v=d;h.splice(l,1),v.apply(void 0,s(a))}else d.apply(void 0,s(a))}}catch(t){e={error:t}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(e)throw e.error}}return!0}return!1},t.prototype.has=function(t){return void 0!==this._listenersMap[t]&&this._listenersMap[t].length>0},t.prototype.eventNames=function(){var t=[];for(var e in this._listenersMap)t.push(e);return t},t.prototype.destroy=function(){this.offAll()},t}(),a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},o=/^\s+|\s+$/g,h=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,u=/^0o[0-7]+$/i,f=parseInt,l="object"==typeof a&&a&&a.Object===Object&&a,d="object"==typeof self&&self&&self.Object===Object&&self,v=l||d||Function("return this")(),g=Object.prototype.toString,m=Math.max,p=Math.min,$=function(){return v.Date.now()};function w(t,e,i){var n,s,r,a,o,h,c=0,u=!1,f=!1,l=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function d(e){var i=n,r=s;return n=s=void 0,c=e,a=t.apply(r,i)}function v(t){return c=t,o=setTimeout(w,e),u?d(t):a}function g(t){var i=t-h;return void 0===h||i>=e||i<0||f&&t-c>=r}function w(){var t=$();if(g(t))return b(t);o=setTimeout(w,function(t){var i=e-(t-h);return f?p(i,r-(t-c)):i}(t))}function b(t){return o=void 0,l&&n?d(t):(n=s=void 0,a)}function x(){var t=$(),i=g(t);if(n=arguments,s=this,h=t,i){if(void 0===o)return v(h);if(f)return o=setTimeout(w,e),d(h)}return void 0===o&&(o=setTimeout(w,e)),a}return e=M(e)||0,y(i)&&(u=!!i.leading,r=(f="maxWait"in i)?m(M(i.maxWait)||0,e):r,l="trailing"in i?!!i.trailing:l),x.cancel=function(){void 0!==o&&clearTimeout(o),c=0,n=h=s=o=void 0},x.flush=function(){return void 0===o?a:b($())},x}function y(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function M(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==g.call(t)}(t))return NaN;if(y(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=y(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(o,"");var i=c.test(t);return i||u.test(t)?f(t.slice(2),i?2:8):h.test(t)?NaN:+t}var b=function(t,e,i){var n=!0,s=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return y(i)&&(n="leading"in i?!!i.leading:n,s="trailing"in i?!!i.trailing:s),w(t,e,{leading:n,maxWait:e,trailing:s})},x={exports:{}},C=x.exports=function(){var t=1e3,e=6e4,i=36e5,n="millisecond",s="second",r="minute",a="hour",o="day",h="week",c="month",u="quarter",f="year",l="date",d="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},p=function(t,e,i){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(i)+t},$={s:p,z:function(t){var e=-t.utcOffset(),i=Math.abs(e),n=Math.floor(i/60),s=i%60;return(e<=0?"+":"-")+p(n,2,"0")+":"+p(s,2,"0")},m:function t(e,i){if(e.date()<i.date())return-t(i,e);var n=12*(i.year()-e.year())+(i.month()-e.month()),s=e.clone().add(n,c),r=i-s<0,a=e.clone().add(n+(r?-1:1),c);return+(-(n+(i-s)/(r?s-a:a-s))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:f,w:h,d:o,D:l,h:a,m:r,s:s,ms:n,Q:u}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},w="en",y={};y[w]=m;var M=function(t){return t instanceof T},b=function t(e,i,n){var s;if(!e)return w;if("string"==typeof e){var r=e.toLowerCase();y[r]&&(s=r),i&&(y[r]=i,s=r);var a=e.split("-");if(!s&&a.length>1)return t(a[0])}else{var o=e.name;y[o]=e,s=o}return!n&&s&&(w=s),s||!n&&w},x=function(t,e){if(M(t))return t.clone();var i="object"==typeof e?e:{};return i.date=t,i.args=arguments,new T(i)},C=$;C.l=b,C.i=M,C.w=function(t,e){return x(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function m(t){this.$L=b(t.locale,null,!0),this.parse(t)}var p=m.prototype;return p.parse=function(t){this.$d=function(t){var e=t.date,i=t.utc;if(null===e)return new Date(NaN);if(C.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(v);if(n){var s=n[2]-1||0,r=(n[7]||"0").substring(0,3);return i?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,r)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},p.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},p.$utils=function(){return C},p.isValid=function(){return!(this.$d.toString()===d)},p.isSame=function(t,e){var i=x(t);return this.startOf(e)<=i&&i<=this.endOf(e)},p.isAfter=function(t,e){return x(t)<this.startOf(e)},p.isBefore=function(t,e){return this.endOf(e)<x(t)},p.$g=function(t,e,i){return C.u(t)?this[e]:this.set(i,t)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(t,e){var i=this,n=!!C.u(e)||e,u=C.p(t),d=function(t,e){var s=C.w(i.$u?Date.UTC(i.$y,e,t):new Date(i.$y,e,t),i);return n?s:s.endOf(o)},v=function(t,e){return C.w(i.toDate()[t].apply(i.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(e)),i)},g=this.$W,m=this.$M,p=this.$D,$="set"+(this.$u?"UTC":"");switch(u){case f:return n?d(1,0):d(31,11);case c:return n?d(1,m):d(0,m+1);case h:var w=this.$locale().weekStart||0,y=(g<w?g+7:g)-w;return d(n?p-y:p+(6-y),m);case o:case l:return v($+"Hours",0);case a:return v($+"Minutes",1);case r:return v($+"Seconds",2);case s:return v($+"Milliseconds",3);default:return this.clone()}},p.endOf=function(t){return this.startOf(t,!1)},p.$set=function(t,e){var i,h=C.p(t),u="set"+(this.$u?"UTC":""),d=(i={},i[o]=u+"Date",i[l]=u+"Date",i[c]=u+"Month",i[f]=u+"FullYear",i[a]=u+"Hours",i[r]=u+"Minutes",i[s]=u+"Seconds",i[n]=u+"Milliseconds",i)[h],v=h===o?this.$D+(e-this.$W):e;if(h===c||h===f){var g=this.clone().set(l,1);g.$d[d](v),g.init(),this.$d=g.set(l,Math.min(this.$D,g.daysInMonth())).$d}else d&&this.$d[d](v);return this.init(),this},p.set=function(t,e){return this.clone().$set(t,e)},p.get=function(t){return this[C.p(t)]()},p.add=function(n,u){var l,d=this;n=Number(n);var v=C.p(u),g=function(t){var e=x(d);return C.w(e.date(e.date()+Math.round(t*n)),d)};if(v===c)return this.set(c,this.$M+n);if(v===f)return this.set(f,this.$y+n);if(v===o)return g(1);if(v===h)return g(7);var m=(l={},l[r]=e,l[a]=i,l[s]=t,l)[v]||1,p=this.$d.getTime()+n*m;return C.w(p,this)},p.subtract=function(t,e){return this.add(-1*t,e)},p.format=function(t){var e=this,i=this.$locale();if(!this.isValid())return i.invalidDate||d;var n=t||"YYYY-MM-DDTHH:mm:ssZ",s=C.z(this),r=this.$H,a=this.$m,o=this.$M,h=i.weekdays,c=i.months,u=function(t,i,s,r){return t&&(t[i]||t(e,n))||s[i].slice(0,r)},f=function(t){return C.s(r%12||12,t,"0")},l=i.meridiem||function(t,e,i){var n=t<12?"AM":"PM";return i?n.toLowerCase():n},v={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:C.s(o+1,2,"0"),MMM:u(i.monthsShort,o,c,3),MMMM:u(c,o),D:this.$D,DD:C.s(this.$D,2,"0"),d:String(this.$W),dd:u(i.weekdaysMin,this.$W,h,2),ddd:u(i.weekdaysShort,this.$W,h,3),dddd:h[this.$W],H:String(r),HH:C.s(r,2,"0"),h:f(1),hh:f(2),a:l(r,a,!0),A:l(r,a,!1),m:String(a),mm:C.s(a,2,"0"),s:String(this.$s),ss:C.s(this.$s,2,"0"),SSS:C.s(this.$ms,3,"0"),Z:s};return n.replace(g,(function(t,e){return e||v[t]||s.replace(":","")}))},p.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},p.diff=function(n,l,d){var v,g=C.p(l),m=x(n),p=(m.utcOffset()-this.utcOffset())*e,$=this-m,w=C.m(this,m);return w=(v={},v[f]=w/12,v[c]=w,v[u]=w/3,v[h]=($-p)/6048e5,v[o]=($-p)/864e5,v[a]=$/i,v[r]=$/e,v[s]=$/t,v)[g]||$,d?w:C.a(w)},p.daysInMonth=function(){return this.endOf(c).$D},p.$locale=function(){return y[this.$L]},p.locale=function(t,e){if(!t)return this.$L;var i=this.clone(),n=b(t,e,!0);return n&&(i.$L=n),i},p.clone=function(){return C.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},m}(),S=T.prototype;return x.prototype=S,[["$ms",n],["$s",s],["$m",r],["$H",a],["$W",o],["$M",c],["$y",f],["$D",l]].forEach((function(t){S[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),x.extend=function(t,e){return t.$i||(t(e,T,x),t.$i=!0),x},x.locale=b,x.isDayjs=M,x.unix=function(t){return x(1e3*t)},x.en=y[w],x.Ls=y,x.p={},x}();const T=(t,e="MM/DD HH:mm")=>C(1e3*t).format(e);function S({pointWidth:t,timePerPixel:e,timeSpacing:i,screenScaleCount:n,scaleSpacing:s,scaleHeight:r,startTime:a,drawLine:o,drawText:h}){if(1!==i)if(10!==i)if(30!==i)if(60!==i)if(120!==i)if(300!==i)if(7200!==i)if(86400!==i)if(604800!==i);else{const t=a-((t=Math.floor(Date.now()/1e3))=>{const e=1e3*t,i=C(e).year(),n=C(e).month(),s=C(e).date(),r=C(e).day(),a=new Date(i,n,s-r).getTime();return Math.floor(a/1e3)})(a),c=t/e,u=new Array(n).fill(!1),f=t=>{for(let e=t;e>t-7;e--)if(u[e])return!1;return!0};for(let e=0;e<n;e++){const n=e*s-c,l=Math.ceil(a+e*i-t);0===C(1e3*l).month()&&(C(1e3*l).date()>0||C(1e3*l).date()<=31)&&f(e)?(u[e]=!0,o(n,r.height5),h(n,r.height5+13,`${T(l,"YYYY/MM/DD")}`)):0!==C(1e3*l).day()||o(n,r.height1)}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%86400,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);"1"!==T(c,"D")?c%86400!=57600||o(n,r.height1):(o(n,r.height5),h(n,r.height5+13,`${T(c,"YYYY/MM/DD")}`))}}else{const c=T(a,"H:m:s").split(":"),u=(3600*+c[0]+60*+c[1]+ +c[2])%7200,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%86400!=0?c%43200!=0?c%7200!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c,"MM/DD HH:mm")}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%300,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%3600!=0?c%1800!=0?c%300!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c)}`))}}else{const c=T(a,"m:s").split(":"),u=(60*+c[0]+ +c[1])%120,f=u/e;for(let e=0;e<n;e++){const n=e*s-f-t/2,c=Math.ceil(a+e*i-u);c%1800!=0?c%600!=0?c%120!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c)}`))}}else{const c=+T(a,"s")%60,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%3600!=0?f%300!=0?f%60!=0||o(n,r.height1):(o(n,r.height3),f%600==0&&h(n,r.height5+13,`${T(f,"HH:mm")}`)):(o(n,r.height5),h(n,r.height5+13,`${T(f)}`))}}else{const c=+T(a,"s")%30,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%300!=0?f%30!=0||o(n,r.height1):(o(n,r.height4),h(n,r.height5+13,`${T(f,"HH:mm")}`))}}else{const c=+T(a,"s")%10,u=c/e;for(let e=0;e<n;e++){const n=e*s-u-t/2,f=Math.ceil(a+e*i-c);f%60!=0?f%10!=0||o(n,r.height1):(o(n,r.height4),h(n,r.height5+13,`${T(f,"HH:mm")}`))}}else for(let e=0;e<n;e++){const n=e*s+t/2,c=Math.ceil(a+e*i);c%10!=0?c%5!=0?c%1!=0||o(n,r.height1):o(n,r.height3):(o(n,r.height5),h(n,r.height5+13,`${T(c,"HH:mm:ss")}`))}}var D,_,O,H,W;const Y={fill:!1,bgColor:"rgba(0,0,0,0.5)",textColor:"#ffffff",scaleColor:"#ffffff",areaBgColor:"#ffffff55",pointColor:"#00aeec",pointWidth:3,scaleSpacing:7,fps:60,zoom:2,maxZoom:9,minZoom:1};class k{constructor(i,n){if(D.set(this,void 0),_.set(this,void 0),O.set(this,void 0),H.set(this,void 0),W.set(this,void 0),!i)throw new Error("canvas id is required!");this.$canvas=document.getElementById(i),this.canvasContext=this.$canvas.getContext("2d");const{fill:s,width:a,height:o,bgColor:h,textColor:c,scaleColor:u,areaBgColor:f,pointColor:l,pointWidth:d,scaleSpacing:v,fps:g,zoom:m,maxZoom:p,minZoom:$}=Object.assign(Object.assign({},Y),n);if(m<1||m>9||m%1!=0)throw new Error("zoom must be 1 ~ 9, and must be an integer");if(p<1||p>9||p%1!=0)throw new Error("maxZoom must be 1 ~ 9, and must be an integer");if($<1||$>9||$%1!=0)throw new Error("minZoom must be 1 ~ 9, and must be an integer");if(p<$)throw new Error("maxZoom must be greater than minZoom");if(s){const t=this.$canvas.parentElement;this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight;new ResizeObserver(b(this._onParentResize.bind(this),200)).observe(t)}else a&&(this.$canvas.width=a),o&&(this.$canvas.height=o);e(this,W,!1,"f"),e(this,D,new r,"f"),this.currentTime=0;const w=[1,10,30,60,120,300,7200,86400,604800];e(this,_,[],"f");for(let e=$-1;e<p;e++)t(this,_,"f").push(w[e]);e(this,O,t(this,_,"f")[m-1],"f"),this.scaleSpacing=v,e(this,H,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.bgColor=h,this.pointWidth=d,this.pointColor=l,this.textColor=c,this.scaleColor=u,this.areaBgColor=f,this.fps=g}draw({currentTime:e=0,areas:i,_privateFlag:n}={}){if(t(this,W,"f")&&!n)return;this.currentTime=e||Math.floor(Date.now()/1e3),this.areas=i||[];const s=Math.ceil(this.$canvas.width/this.scaleSpacing),r=s*t(this,O,"f"),a=this.currentTime-r/2,o=this.currentTime+r/2,h=this.$canvas.width/2,c=r/this.$canvas.width;this.clear(),this.drawArea(0,0,this.$canvas.width,this.$canvas.height,this.bgColor),this.areas.forEach((t=>{const e=t.startTime<a?0:Math.floor((t.startTime-a)/c),i=t.endTime>o?this.$canvas.width:Math.floor((t.endTime-a)/c);this.drawArea(e,0,i,this.$canvas.height,t.bgColor||this.areaBgColor)})),S.bind(this)({pointWidth:this.pointWidth,timePerPixel:c,scaleHeight:t(this,H,"f"),scaleSpacing:this.scaleSpacing,timeSpacing:t(this,O,"f"),screenScaleCount:s,startTime:a,drawLine:this.drawLine.bind(this),drawText:this.drawText.bind(this)}),this.drawTimelineScale(t(this,O,"f")),this.drawLine(h-this.pointWidth/2,this.$canvas.height,this.pointWidth,this.pointColor),this.drawArea(h-54,4,h+54,18,this.pointColor),this.drawText(h,6,`${T(this.currentTime,"YYYY/MM/DD HH:mm:ss")}`,this.textColor,"center","top"),this.$canvas.onwheel=this._onZoom.bind(this),this.$canvas.onmousedown=this._onDrag.bind(this)}_onDrag({clientX:i}){e(this,W,!0,"f");let n=0;document.onmousemove=b((e=>{const s=e.clientX-i,r=this.currentTime-t(this,O,"f")/this.scaleSpacing*(s-n);n=s,this.draw({currentTime:Math.round(r),areas:this.areas,_privateFlag:!0})}),1===t(this,O,"f")?100:1e3/this.fps),document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,e(this,W,!1,"f"),this.emit("timeUpdate",this.currentTime)}}_onZoom(i){i.preventDefault();const n=t(this,_,"f").findIndex((e=>e===t(this,O,"f")));i.deltaY<0&&n>0?(e(this,O,t(this,_,"f")[n-1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0})):i.deltaY>0&&n<t(this,_,"f").length-1&&(e(this,O,t(this,_,"f")[n+1],"f"),this.draw({currentTime:this.currentTime,areas:this.areas,_privateFlag:!0}))}_onParentResize(){const t=this.$canvas.parentNode;t&&(this.$canvas.width=t.clientWidth,this.$canvas.height=t.clientHeight,e(this,H,{height6:this.$canvas.height/2,height5:this.$canvas.height/3,height4:this.$canvas.height/4,height3:this.$canvas.height/5,height2:this.$canvas.height/8,height1:this.$canvas.height/10},"f"),this.draw({currentTime:this.currentTime,areas:this.areas}))}clear(){this.canvasContext&&this.canvasContext.clearRect(0,0,this.$canvas.width,this.$canvas.height),this.$canvas&&(this.$canvas.onwheel=null,this.$canvas.onmousedown=null)}drawTimelineScale(t){let e="";switch(t){case 1:e="1s";break;case 10:e="10s";break;case 30:e="30s";break;case 60:e="1min";break;case 120:e="2min";break;case 300:e="5min";break;case 7200:e="2hour";break;case 86400:e="1day";break;case 604800:e="1week"}this.drawText(this.scaleSpacing+12,9,`${e}`,this.textColor,"left","middle"),this.canvasContext.beginPath(),this.canvasContext.moveTo(5,6),this.canvasContext.lineTo(5,10),this.canvasContext.lineTo(this.scaleSpacing+7,10),this.canvasContext.lineTo(this.scaleSpacing+7,6),this.canvasContext.strokeStyle=this.scaleColor,this.canvasContext.lineWidth=1.5,this.canvasContext.stroke()}drawLine(t,e,i=1,n=this.scaleColor){this.canvasContext.beginPath(),this.canvasContext.moveTo(t,this.$canvas.height),this.canvasContext.lineTo(t,this.$canvas.height-e),this.canvasContext.closePath(),this.canvasContext.strokeStyle=n,this.canvasContext.lineWidth=i,this.canvasContext.stroke()}drawText(t,e,i,n=this.textColor,s="center",r="alphabetic"){this.canvasContext.beginPath(),this.canvasContext.font="11px Arial",this.canvasContext.fillStyle=n,this.canvasContext.textAlign=s,this.canvasContext.textBaseline=r,this.canvasContext.fillText(i,t,e)}drawArea(t,e,i,n,s){this.canvasContext.beginPath(),this.canvasContext.rect(t,e,i-t,n-e),this.canvasContext.fillStyle=s,this.canvasContext.fill()}on(e,i){t(this,D,"f").on(e,i)}off(e,i){t(this,D,"f").off(e,i)}emit(...e){t(this,D,"f").emit(...e)}}D=new WeakMap,_=new WeakMap,O=new WeakMap,H=new WeakMap,W=new WeakMap;export{k as default}; | ||
//# sourceMappingURL=timeline.esm.min.js.map |
{ | ||
"name": "@losting/timeline", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"description": "canvas timeline", | ||
@@ -5,0 +5,0 @@ "main": "lib/timeline.cjs.min.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
284376
11
280
1