@ciri/ngx-countdown
Version:
An angular countdown component.
2 lines • 3.81 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/internal/scheduler/animationFrame"),require("@angular/common")):"function"==typeof define&&define.amd?define("@ciri/ngx-countdown",["exports","@angular/core","rxjs","rxjs/internal/scheduler/animationFrame","@angular/common"],t):t(((e=e||self).ciri=e.ciri||{},e.ciri["ngx-countdown"]={}),e.ng.core,e.rxjs,e.rxjs["internal/scheduler/animationFrame"],e.ng.common)}(this,(function(e,t,n,i,r){"use strict";function a(e,t){void 0===t&&(t=2);var n=e+"";return n.length>=t?n:(Array(t).join("0")+n).slice(-t)}var o={paused:0,playing:1,finished:2};o[o.paused]="paused",o[o.playing]="playing",o[o.finished]="finished";var s,c=[],u=n.interval(0,i.animationFrame);function m(){s&&s.unsubscribe()}var p=function(){function e(e){this.cdr=e,this.format="HH:mm:ss",this.autoStart=!0,this.millisecond=!1,this.finish=new t.EventEmitter,this.tick=new t.EventEmitter,this.state=o.paused,this._time=6e4}return Object.defineProperty(e.prototype,"time",{get:function(){return this._time},set:function(e){this._time=Math.max(e,0),this.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"data",{get:function(){var e,t=-1===this.format.indexOf("S"),n=this.state===o.playing,i=(e=this.remain+(t&&n?1e3:0),{days:Math.floor(e/864e5),hours:Math.floor(e%864e5/36e5),minutes:Math.floor(e%36e5/6e4),seconds:Math.floor(e%6e4/1e3),milliseconds:Math.floor(e%1e3)}),r=function(e,t){var n=t.days,i=t.hours,r=t.minutes,o=t.seconds,s=t.milliseconds;if(-1===e.indexOf("DD")?i+=24*n:e=e.replace("DD",a(n)),-1===e.indexOf("HH")?r+=60*i:e=e.replace("HH",a(i)),-1===e.indexOf("mm")?o+=60*r:e=e.replace("mm",a(r)),-1===e.indexOf("ss")?s+=1e3*o:e=e.replace("ss",a(o)),-1!==e.indexOf("S")){var c=a(s,3);e=-1!==e.indexOf("SSS")?e.replace("SSS",c):-1!==e.indexOf("SS")?e.replace("SS",c.slice(0,2)):e.replace("S",c.charAt(0))}return e}(this.format,i);return{formattedTime:r,remain:this.remain,fragments:r.split(":")}},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){c.push(this),1===c.length&&(m(),s=u.subscribe((function(){for(var e=0;e<c.length;e++){var t=c[e];if(t.state===o.playing)if(t.remain<=0)t.state=o.finished,t.cdr.detectChanges(),t.finish.emit();else{var n=Math.max(t.endTime-Date.now(),0);t.millisecond?(t.remain=n,t.tick.emit(t.remain)):(i=n,r=t.remain,(Math.floor(i/1e3)!==Math.floor(r/1e3)||0===n)&&(t.remain=n,t.tick.emit(t.remain))),t.cdr.detectChanges()}}var i,r})))},e.prototype.ngOnDestroy=function(){this.pause();var e=c.indexOf(this);-1!==e&&c.splice(e,1),0===c.length&&m()},e.prototype.start=function(){this.state!==o.playing&&(this.state===o.finished&&(this.remain=this.time),this.endTime=Date.now()+this.remain,this.state=o.playing)},e.prototype.pause=function(){this.state=o.paused},e.prototype.reset=function(){this.pause(),this.remain=this.time,this.cdr.detectChanges(),this.autoStart&&this.start()},e.decorators=[{type:t.Component,args:[{selector:"ngx-countdown",template:'<ng-container *ngIf="!render">{{ data.formattedTime }}</ng-container>\n<ng-container *ngTemplateOutlet="render; context: { $implicit: data }"></ng-container>\n',changeDetection:t.ChangeDetectionStrategy.OnPush}]}],e.ctorParameters=function(){return[{type:t.ChangeDetectorRef}]},e.propDecorators={format:[{type:t.Input}],autoStart:[{type:t.Input}],millisecond:[{type:t.Input}],render:[{type:t.Input}],time:[{type:t.Input}],finish:[{type:t.Output}],tick:[{type:t.Output}]},e}();var d=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{declarations:[p],imports:[r.CommonModule],exports:[p]}]}],e}();e.CountdownComponent=p,e.CountdownModule=d,e.CountdownState=o,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ciri-ngx-countdown.umd.min.js.map