Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ngx-countdown

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-countdown - npm Package Compare versions

Comparing version 11.0.2 to 11.0.3

13

bundles/ngx-countdown.umd.js

@@ -132,2 +132,15 @@ (function (global, factory) {

}
Object.defineProperty(CountdownComponent.prototype, "config", {
get: function () {
return this._config;
},
set: function (i) {
if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {
i.notify = [i.notify];
}
this._config = i;
},
enumerable: false,
configurable: true
});
/**

@@ -134,0 +147,0 @@ * Start countdown, you must manually call when `demand: false`

2

bundles/ngx-countdown.umd.min.js

@@ -1,2 +0,2 @@

!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-countdown",["exports","@angular/core","@angular/common"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self)["ngx-countdown"]={},t.ng.core,t.ng.common)}(this,(function(t,n,e){"use strict";var o;(o=t.CountdownStatus||(t.CountdownStatus={}))[o.ing=0]="ing",o[o.pause=1]="pause",o[o.stop=2]="stop",o[o.done=3]="done";var s=function(){function t(t){this.ngZone=t,this.fns=[],this.commands=[],this.ing=!1}return t.prototype.start=function(){var t=this;!0!==this.ing&&(this.ing=!0,this.nextTime=+new Date,this.ngZone.runOutsideAngular((function(){t.process()})))},t.prototype.process=function(){for(var t=this;this.commands.length;)this.commands.shift()();var n=+new Date-this.nextTime,e=1+Math.floor(n/100);n=100-n%100,this.nextTime+=100*e;for(var o=0,s=this.fns.length;o<s;o+=2){var i=this.fns[o+1];if(0===i)this.fns[o](e);else{i+=2*e-1;var r=Math.floor(i/20);r>0&&this.fns[o](r),this.fns[o+1]=i%20+1}}this.ing&&setTimeout((function(){return t.process()}),n)},t.prototype.add=function(t,n){var e=this;return this.commands.push((function(){e.fns.push(t),e.fns.push(1e3===n?1:0),e.ing=!0})),this},t.prototype.remove=function(t){var n=this;return this.commands.push((function(){var e=n.fns.indexOf(t);-1!==e&&n.fns.splice(e,2),n.ing=n.fns.length>0})),this},t}();s.decorators=[{type:n.Injectable}],s.ctorParameters=function(){return[{type:n.NgZone}]};var i=function(t){var n=this;this.locale=t,this.demand=!1,this.leftTime=0,this.format="HH:mm:ss",this.timezone="+0000",this.formatDate=function(t){var o=t.date,s=t.formatStr,i=t.timezone;return e.formatDate(new Date(o),s,n.locale,i||n.timezone||"+0000")}};i.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new i(n.ɵɵinject(n.LOCALE_ID))},token:i,providedIn:"root"}),i.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],i.ctorParameters=function(){return[{type:String,decorators:[{type:n.Inject,args:[n.LOCALE_ID]}]}]};var r=function(){function e(e,o,s,i,r){this.locale=e,this.timer=o,this.defCog=s,this.cdr=i,this.ngZone=r,this.frequency=1e3,this._notify={},this.status=t.CountdownStatus.ing,this.isDestroy=!1,this.i={},this.left=0,this.event=new n.EventEmitter}return e.prototype.begin=function(){this.status=t.CountdownStatus.ing,this.callEvent("start")},e.prototype.restart=function(){this.status!==t.CountdownStatus.stop&&this.destroy(),this.init(),this.callEvent("restart")},e.prototype.stop=function(){this.status!==t.CountdownStatus.stop&&(this.status=t.CountdownStatus.stop,this.destroy(),this.callEvent("stop"))},e.prototype.pause=function(){this.status!==t.CountdownStatus.stop&&this.status!==t.CountdownStatus.pause&&(this.status=t.CountdownStatus.pause,this.callEvent("pause"))},e.prototype.resume=function(){this.status!==t.CountdownStatus.stop&&this.status===t.CountdownStatus.pause&&(this.status=t.CountdownStatus.ing,this.callEvent("resume"))},e.prototype.callEvent=function(t){this.event.emit({action:t,left:this.left,status:this.status,text:this.i.text})},e.prototype.init=function(){var n=this,e=this.locale,o=this.defCog,s=this.config=Object.assign(Object.assign(Object.assign({},new i(e)),o),this.config),r=this.frequency=~s.format.indexOf("S")?100:1e3;this.status=s.demand?t.CountdownStatus.pause:t.CountdownStatus.ing,this.getLeft();var a=this.reflow;this.reflow=function(t,e){return void 0===t&&(t=0),void 0===e&&(e=!1),a.apply(n,[t,e])},Array.isArray(s.notify)&&s.notify.forEach((function(t){if(t<1)throw new Error("The notify config must be a positive integer.");t*=1e3,t-=t%r,n._notify[t]=!0})),this.timer.add(this.reflow,r).start(),this.reflow(0,!0)},e.prototype.destroy=function(){return this.timer.remove(this.reflow),this},e.prototype.reflow=function(n,e){var o=this;if(void 0===n&&(n=0),void 0===e&&(e=!1),!this.isDestroy){var s=this,i=s.status,r=s.config,a=s._notify;if(e||i===t.CountdownStatus.ing){var u=this.left=this.left-this.frequency*n;u<1&&(u=0),this.i={value:u,text:r.formatDate({date:u,formatStr:r.format,timezone:r.timezone})},"function"==typeof r.prettyText&&(this.i.text=r.prettyText(this.i.text)),this.cdr.detectChanges(),(0===r.notify||a[u])&&this.ngZone.run((function(){o.callEvent("notify")})),0===u&&this.ngZone.run((function(){o.status=t.CountdownStatus.done,o.destroy(),o.callEvent("done")}))}}},e.prototype.getLeft=function(){var t=this.config,n=this.frequency,e=1e3*t.leftTime,o=t.stopTime;!e&&o&&(e=o-(new Date).getTime()),this.left=e-e%n},e.prototype.ngOnInit=function(){this.init(),this.config.demand||this.begin()},e.prototype.ngOnDestroy=function(){this.isDestroy=!0,this.destroy()},e.prototype.ngOnChanges=function(t){t.config.firstChange||this.restart()},e}();r.decorators=[{type:n.Component,args:[{selector:"countdown",template:'\n <ng-container *ngIf="!render">\n <span [innerHTML]="i.text"></span>\n </ng-container>\n <ng-container *ngTemplateOutlet="render; context: { $implicit: i }"></ng-container>\n ',host:{"[class.count-down]":"true"},encapsulation:n.ViewEncapsulation.None,changeDetection:n.ChangeDetectionStrategy.OnPush}]}],r.ctorParameters=function(){return[{type:String,decorators:[{type:n.Inject,args:[n.LOCALE_ID]}]},{type:s},{type:i},{type:n.ChangeDetectorRef},{type:n.NgZone}]},r.propDecorators={config:[{type:n.Input}],render:[{type:n.Input}],event:[{type:n.Output}]};var a=function(){};a.decorators=[{type:n.NgModule,args:[{imports:[e.CommonModule],providers:[s],declarations:[r],exports:[r]}]}],t.CountdownComponent=r,t.CountdownGlobalConfig=i,t.CountdownModule=a,t.CountdownTimer=s,Object.defineProperty(t,"__esModule",{value:!0})}));
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-countdown",["exports","@angular/core","@angular/common"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self)["ngx-countdown"]={},t.ng.core,t.ng.common)}(this,(function(t,n,e){"use strict";var o;(o=t.CountdownStatus||(t.CountdownStatus={}))[o.ing=0]="ing",o[o.pause=1]="pause",o[o.stop=2]="stop",o[o.done=3]="done";var i=function(){function t(t){this.ngZone=t,this.fns=[],this.commands=[],this.ing=!1}return t.prototype.start=function(){var t=this;!0!==this.ing&&(this.ing=!0,this.nextTime=+new Date,this.ngZone.runOutsideAngular((function(){t.process()})))},t.prototype.process=function(){for(var t=this;this.commands.length;)this.commands.shift()();var n=+new Date-this.nextTime,e=1+Math.floor(n/100);n=100-n%100,this.nextTime+=100*e;for(var o=0,i=this.fns.length;o<i;o+=2){var s=this.fns[o+1];if(0===s)this.fns[o](e);else{s+=2*e-1;var r=Math.floor(s/20);r>0&&this.fns[o](r),this.fns[o+1]=s%20+1}}this.ing&&setTimeout((function(){return t.process()}),n)},t.prototype.add=function(t,n){var e=this;return this.commands.push((function(){e.fns.push(t),e.fns.push(1e3===n?1:0),e.ing=!0})),this},t.prototype.remove=function(t){var n=this;return this.commands.push((function(){var e=n.fns.indexOf(t);-1!==e&&n.fns.splice(e,2),n.ing=n.fns.length>0})),this},t}();i.decorators=[{type:n.Injectable}],i.ctorParameters=function(){return[{type:n.NgZone}]};var s=function(t){var n=this;this.locale=t,this.demand=!1,this.leftTime=0,this.format="HH:mm:ss",this.timezone="+0000",this.formatDate=function(t){var o=t.date,i=t.formatStr,s=t.timezone;return e.formatDate(new Date(o),i,n.locale,s||n.timezone||"+0000")}};s.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new s(n.ɵɵinject(n.LOCALE_ID))},token:s,providedIn:"root"}),s.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],s.ctorParameters=function(){return[{type:String,decorators:[{type:n.Inject,args:[n.LOCALE_ID]}]}]};var r=function(){function e(e,o,i,s,r){this.locale=e,this.timer=o,this.defCog=i,this.cdr=s,this.ngZone=r,this.frequency=1e3,this._notify={},this.status=t.CountdownStatus.ing,this.isDestroy=!1,this.i={},this.left=0,this.event=new n.EventEmitter}return Object.defineProperty(e.prototype,"config",{get:function(){return this._config},set:function(t){null!=t.notify&&!Array.isArray(t.notify)&&t.notify>0&&(t.notify=[t.notify]),this._config=t},enumerable:!1,configurable:!0}),e.prototype.begin=function(){this.status=t.CountdownStatus.ing,this.callEvent("start")},e.prototype.restart=function(){this.status!==t.CountdownStatus.stop&&this.destroy(),this.init(),this.callEvent("restart")},e.prototype.stop=function(){this.status!==t.CountdownStatus.stop&&(this.status=t.CountdownStatus.stop,this.destroy(),this.callEvent("stop"))},e.prototype.pause=function(){this.status!==t.CountdownStatus.stop&&this.status!==t.CountdownStatus.pause&&(this.status=t.CountdownStatus.pause,this.callEvent("pause"))},e.prototype.resume=function(){this.status!==t.CountdownStatus.stop&&this.status===t.CountdownStatus.pause&&(this.status=t.CountdownStatus.ing,this.callEvent("resume"))},e.prototype.callEvent=function(t){this.event.emit({action:t,left:this.left,status:this.status,text:this.i.text})},e.prototype.init=function(){var n=this,e=this.locale,o=this.defCog,i=this.config=Object.assign(Object.assign(Object.assign({},new s(e)),o),this.config),r=this.frequency=~i.format.indexOf("S")?100:1e3;this.status=i.demand?t.CountdownStatus.pause:t.CountdownStatus.ing,this.getLeft();var a=this.reflow;this.reflow=function(t,e){return void 0===t&&(t=0),void 0===e&&(e=!1),a.apply(n,[t,e])},Array.isArray(i.notify)&&i.notify.forEach((function(t){if(t<1)throw new Error("The notify config must be a positive integer.");t*=1e3,t-=t%r,n._notify[t]=!0})),this.timer.add(this.reflow,r).start(),this.reflow(0,!0)},e.prototype.destroy=function(){return this.timer.remove(this.reflow),this},e.prototype.reflow=function(n,e){var o=this;if(void 0===n&&(n=0),void 0===e&&(e=!1),!this.isDestroy){var i=this,s=i.status,r=i.config,a=i._notify;if(e||s===t.CountdownStatus.ing){var u=this.left=this.left-this.frequency*n;u<1&&(u=0),this.i={value:u,text:r.formatDate({date:u,formatStr:r.format,timezone:r.timezone})},"function"==typeof r.prettyText&&(this.i.text=r.prettyText(this.i.text)),this.cdr.detectChanges(),(0===r.notify||a[u])&&this.ngZone.run((function(){o.callEvent("notify")})),0===u&&this.ngZone.run((function(){o.status=t.CountdownStatus.done,o.destroy(),o.callEvent("done")}))}}},e.prototype.getLeft=function(){var t=this.config,n=this.frequency,e=1e3*t.leftTime,o=t.stopTime;!e&&o&&(e=o-(new Date).getTime()),this.left=e-e%n},e.prototype.ngOnInit=function(){this.init(),this.config.demand||this.begin()},e.prototype.ngOnDestroy=function(){this.isDestroy=!0,this.destroy()},e.prototype.ngOnChanges=function(t){t.config.firstChange||this.restart()},e}();r.decorators=[{type:n.Component,args:[{selector:"countdown",template:'\n <ng-container *ngIf="!render">\n <span [innerHTML]="i.text"></span>\n </ng-container>\n <ng-container *ngTemplateOutlet="render; context: { $implicit: i }"></ng-container>\n ',host:{"[class.count-down]":"true"},encapsulation:n.ViewEncapsulation.None,changeDetection:n.ChangeDetectionStrategy.OnPush}]}],r.ctorParameters=function(){return[{type:String,decorators:[{type:n.Inject,args:[n.LOCALE_ID]}]},{type:i},{type:s},{type:n.ChangeDetectorRef},{type:n.NgZone}]},r.propDecorators={config:[{type:n.Input}],render:[{type:n.Input}],event:[{type:n.Output}]};var a=function(){};a.decorators=[{type:n.NgModule,args:[{imports:[e.CommonModule],providers:[i],declarations:[r],exports:[r]}]}],t.CountdownComponent=r,t.CountdownGlobalConfig=s,t.CountdownModule=a,t.CountdownTimer=i,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=ngx-countdown.umd.min.js.map

@@ -15,5 +15,7 @@ import { OnChanges, SimpleChanges, OnDestroy, EventEmitter, OnInit, SimpleChange, ChangeDetectorRef, TemplateRef, NgZone } from '@angular/core';

private isDestroy;
private _config;
i: CountdownItem;
left: number;
config: CountdownConfig;
set config(i: CountdownConfig);
get config(): CountdownConfig;
render: TemplateRef<void>;

@@ -20,0 +22,0 @@ readonly event: EventEmitter<CountdownEvent>;

@@ -20,2 +20,11 @@ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Inject, LOCALE_ID, ChangeDetectorRef, TemplateRef, NgZone, } from '@angular/core';

}
set config(i) {
if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {
i.notify = [i.notify];
}
this._config = i;
}
get config() {
return this._config;
}
/**

@@ -189,2 +198,2 @@ * Start countdown, you must manually call when `demand: false`

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9saWIvc3JjLyIsInNvdXJjZXMiOlsiY291bnRkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBQ04sWUFBWSxFQUdaLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQW1CLGVBQWUsRUFBdUQsTUFBTSxjQUFjLENBQUM7QUFDckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBYzNELE1BQU0sT0FBTyxrQkFBa0I7SUFZN0IsWUFDNkIsTUFBYyxFQUNqQyxLQUFxQixFQUNyQixNQUE2QixFQUM3QixHQUFzQixFQUN0QixNQUFjO1FBSkssV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNqQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUM3QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBaEJoQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBK0IsRUFBRSxDQUFDO1FBQ3pDLFdBQU0sR0FBb0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUM5QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQUMsR0FBa0IsRUFBRSxDQUFDO1FBQ3RCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFJVSxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFRM0QsQ0FBQztJQUVKOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcs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QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbmplY3QsXG4gIExPQ0FMRV9JRCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb3VudGRvd25Db25maWcsIENvdW50ZG93blN0YXR1cywgQ291bnRkb3duRXZlbnQsIENvdW50ZG93bkV2ZW50QWN0aW9uLCBDb3VudGRvd25JdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvdW50ZG93blRpbWVyIH0gZnJvbSAnLi9jb3VudGRvd24udGltZXInO1xuaW1wb3J0IHsgQ291bnRkb3duR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi9jb3VudGRvd24uY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY291bnRkb3duJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlbmRlclwiPlxuICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpLnRleHRcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlbmRlcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICBgLFxuICBob3N0OiB7ICdbY2xhc3MuY291bnQtZG93bl0nOiAndHJ1ZScgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvdW50ZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGZyZXF1ZW5jeSA9IDEwMDA7XG4gIHByaXZhdGUgX25vdGlmeTogeyBba2V5OiBudW1iZXJdOiBib29sZWFuIH0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0dXM6IENvdW50ZG93blN0YXR1cyA9IENvdW50ZG93blN0YXR1cy5pbmc7XG4gIHByaXZhdGUgaXNEZXN0cm95ID0gZmFsc2U7XG4gIGk6IENvdW50ZG93bkl0ZW0gPSB7fTtcbiAgbGVmdCA9IDA7XG5cbiAgQElucHV0KCkgY29uZmlnOiBDb3VudGRvd25Db25maWc7XG4gIEBJbnB1dCgpIHJlbmRlcjogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBPdXRwdXQoKSByZWFkb25seSBldmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRkb3duRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0aW1lcjogQ291bnRkb3duVGltZXIsXG4gICAgcHJpdmF0ZSBkZWZDb2c6IENvdW50ZG93bkdsb2JhbENvbmZpZyxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBTdGFydCBjb3VudGRvd24sIHlvdSBtdXN0IG1hbnVhbGx5IGNhbGwgd2hlbiBgZGVtYW5kOiBmYWxzZWBcbiAgICovXG4gIGJlZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzID0gQ291bnRkb3duU3RhdHVzLmluZztcbiAgICB0aGlzLmNhbGxFdmVudCgnc3RhcnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0YXJ0IGNvdW50ZG93blxuICAgKi9cbiAgcmVzdGFydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5zdG9wKSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jYWxsRXZlbnQoJ3Jlc3RhcnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGNvdW50ZG93biwgbXVzdCBjYWxsIGByZXN0YXJ0YCB3aGVuIHN0b3BwZWQsIGl0J3MgZGlmZmVyZW50IGZyb20gcGF1c2UsIHVuYWJsZSB0byByZWNvdmVyXG4gICAqL1xuICBzdG9wKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnN0b3ApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuc3RvcDtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNhbGxFdmVudCgnc3RvcCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlIGNvdW50ZG93biwgeW91IGNhbiB1c2UgYHJlc3VtZWAgdG8gcmVjb3ZlciBhZ2FpblxuICAgKi9cbiAgcGF1c2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzID09PSBDb3VudGRvd25TdGF0dXMuc3RvcCB8fCB0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnBhdXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdHVzID0gQ291bnRkb3duU3RhdHVzLnBhdXNlO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdwYXVzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSBjb3VudGRvd25cbiAgICovXG4gIHJlc3VtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgPT09IENvdW50ZG93blN0YXR1cy5zdG9wIHx8IHRoaXMuc3RhdHVzICE9PSBDb3VudGRvd25TdGF0dXMucGF1c2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuaW5nO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdyZXN1bWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbEV2ZW50KGFjdGlvbjogQ291bnRkb3duRXZlbnRBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50LmVtaXQoeyBhY3Rpb24sIGxlZnQ6IHRoaXMubGVmdCwgc3RhdHVzOiB0aGlzLnN0YXR1cywgdGV4dDogdGhpcy5pLnRleHQgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBsb2NhbGUsIGRlZkNvZyB9ID0gdGhpcztcbiAgICBjb25zdCBjb25maWcgPSAodGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5uZXcgQ291bnRkb3duR2xvYmFsQ29uZmlnKGxvY2FsZSksXG4gICAgICAuLi5kZWZDb2csXG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICB9KTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWJpdHdpc2VcbiAgICBjb25zdCBmcnEgPSAodGhpcy5mcmVxdWVuY3kgPSB+Y29uZmlnLmZvcm1hdC5pbmRleE9mKCdTJykgPyAxMDAgOiAxMDAwKTtcbiAgICB0aGlzLnN0YXR1cyA9IGNvbmZpZy5kZW1hbmQgPyBDb3VudGRvd25TdGF0dXMucGF1c2UgOiBDb3VudGRvd25TdGF0dXMuaW5nO1xuXG4gICAgdGhpcy5nZXRMZWZ0KCk7XG5cbiAgICAvLyBiaW5kIHJlZmxvdyB0byBtZVxuICAgIGNvbnN0IF9yZWZsb3cgPSB0aGlzLnJlZmxvdztcbiAgICB0aGlzLnJlZmxvdyA9IChjb3VudDogbnVtYmVyID0gMCwgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkgPT4gX3JlZmxvdy5hcHBseSh0aGlzLCBbY291bnQsIGZvcmNlXSk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWcubm90aWZ5KSkge1xuICAgICAgY29uZmlnLm5vdGlmeS5mb3JFYWNoKCh0aW1lOiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHRpbWUgPCAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgbm90aWZ5IGNvbmZpZyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRpbWUgPSB0aW1lICogMTAwMDtcbiAgICAgICAgdGltZSA9IHRpbWUgLSAodGltZSAlIGZycSk7XG4gICAgICAgIHRoaXMuX25vdGlmeVt0aW1lXSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnRpbWVyLmFkZCh0aGlzLnJlZmxvdywgZnJxKS5zdGFydCgpO1xuXG4gICAgdGhpcy5yZWZsb3coMCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3koKTogdGhpcyB7XG4gICAgdGhpcy50aW1lci5yZW1vdmUodGhpcy5yZWZsb3cpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIOabtOaWsOaXtumSn1xuICAgKi9cbiAgcHJpdmF0ZSByZWZsb3coY291bnQ6IG51bWJlciA9IDAsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rlc3Ryb3kpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0YXR1cywgY29uZmlnLCBfbm90aWZ5IH0gPSB0aGlzO1xuICAgIGlmICghZm9yY2UgJiYgc3RhdHVzICE9PSBDb3VudGRvd25TdGF0dXMuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gKHRoaXMubGVmdCA9IHRoaXMubGVmdCAtIHRoaXMuZnJlcXVlbmN5ICogY291bnQpO1xuICAgIGlmICh2YWx1ZSA8IDEpIHtcbiAgICAgIHZhbHVlID0gMDtcbiAgICB9XG4gICAgdGhpcy5pID0ge1xuICAgICAgdmFsdWUsXG4gICAgICB0ZXh0OiBjb25maWcuZm9ybWF0RGF0ZSh7IGRhdGU6IHZhbHVlLCBmb3JtYXRTdHI6IGNvbmZpZy5mb3JtYXQsIHRpbWV6b25lOiBjb25maWcudGltZXpvbmUgfSksXG4gICAgfTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5wcmV0dHlUZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmkudGV4dCA9IGNvbmZpZy5wcmV0dHlUZXh0KHRoaXMuaS50ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKGNvbmZpZy5ub3RpZnkgPT09IDAgfHwgX25vdGlmeVt2YWx1ZV0pIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsbEV2ZW50KCdub3RpZnknKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuZG9uZTtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuY2FsbEV2ZW50KCdkb25lJyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5YCS6K6h5pe25Ymp5L2Z5bin5pWwXG4gICAqL1xuICBwcml2YXRlIGdldExlZnQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb25maWcsIGZyZXF1ZW5jeSB9ID0gdGhpcztcbiAgICBsZXQgbGVmdCA9IGNvbmZpZy5sZWZ0VGltZSAqIDEwMDA7XG4gICAgY29uc3QgZW5kID0gY29uZmlnLnN0b3BUaW1lO1xuXG4gICAgaWYgKCFsZWZ0ICYmIGVuZCkge1xuICAgICAgbGVmdCA9IGVuZCAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIHRoaXMubGVmdCA9IGxlZnQgLSAobGVmdCAlIGZyZXF1ZW5jeSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRlbWFuZCkge1xuICAgICAgdGhpcy5iZWdpbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZXN0cm95ID0gdHJ1ZTtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW1AgaW4ga2V5b2YgdGhpc10/OiBTaW1wbGVDaGFuZ2UgfSAmIFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMuY29uZmlnLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnJlc3RhcnQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9saWIvc3JjLyIsInNvdXJjZXMiOlsiY291bnRkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBQ04sWUFBWSxFQUdaLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQW1CLGVBQWUsRUFBdUQsTUFBTSxjQUFjLENBQUM7QUFDckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBYzNELE1BQU0sT0FBTyxrQkFBa0I7SUFzQjdCLFlBQzZCLE1BQWMsRUFDakMsS0FBcUIsRUFDckIsTUFBNkIsRUFDN0IsR0FBc0IsRUFDdEIsTUFBYztRQUpLLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDakMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDN0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFCaEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQStCLEVBQUUsQ0FBQztRQUN6QyxXQUFNLEdBQW9CLGVBQWUsQ0FBQyxHQUFHLENBQUM7UUFDOUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQixNQUFDLEdBQWtCLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBYVUsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBUTNELENBQUM7SUFuQkosSUFDSSxNQUFNLENBQUMsQ0FBa0I7UUFDM0IsSUFBSSxDQUFDLENB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QUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQzs7O1lBbE5GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsUUFBUSxFQUFFOzs7OztHQUtUO2dCQUNELElBQUksRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRTtnQkFDdEMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7eUNBd0JJLE1BQU0sU0FBQyxTQUFTO1lBdENaLGNBQWM7WUFDZCxxQkFBcUI7WUFQNUIsaUJBQWlCO1lBRWpCLE1BQU07OztxQkE0QkwsS0FBSztxQkFVTCxLQUFLO29CQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEluamVjdCxcbiAgTE9DQUxFX0lELFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvdW50ZG93bkNvbmZpZywgQ291bnRkb3duU3RhdHVzLCBDb3VudGRvd25FdmVudCwgQ291bnRkb3duRXZlbnRBY3Rpb24sIENvdW50ZG93bkl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ291bnRkb3duVGltZXIgfSBmcm9tICcuL2NvdW50ZG93bi50aW1lcic7XG5pbXBvcnQgeyBDb3VudGRvd25HbG9iYWxDb25maWcgfSBmcm9tICcuL2NvdW50ZG93bi5jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb3VudGRvd24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVuZGVyXCI+XG4gICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImkudGV4dFwiPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gIGAsXG4gIGhvc3Q6IHsgJ1tjbGFzcy5jb3VudC1kb3duXSc6ICd0cnVlJyB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZnJlcXVlbmN5ID0gMTAwMDtcbiAgcHJpdmF0ZSBfbm90aWZ5OiB7IFtrZXk6IG51bWJlcl06IGJvb2xlYW4gfSA9IHt9O1xuICBwcml2YXRlIHN0YXR1czogQ291bnRkb3duU3RhdHVzID0gQ291bnRkb3duU3RhdHVzLmluZztcbiAgcHJpdmF0ZSBpc0Rlc3Ryb3kgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBDb3VudGRvd25Db25maWc7XG4gIGk6IENvdW50ZG93bkl0ZW0gPSB7fTtcbiAgbGVmdCA9IDA7XG5cbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyhpOiBDb3VudGRvd25Db25maWcpIHtcbiAgICBpZiAoaS5ub3RpZnkgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpLm5vdGlmeSkgJiYgaS5ub3RpZnkgPiAwKSB7XG4gICAgICBpLm5vdGlmeSA9IFtpLm5vdGlmeV07XG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZyA9IGk7XG4gIH1cbiAgZ2V0IGNvbmZpZygpOiBDb3VudGRvd25Db25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cbiAgQElucHV0KCkgcmVuZGVyOiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb3VudGRvd25FdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZyxcbiAgICBwcml2YXRlIHRpbWVyOiBDb3VudGRvd25UaW1lcixcbiAgICBwcml2YXRlIGRlZkNvZzogQ291bnRkb3duR2xvYmFsQ29uZmlnLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGNvdW50ZG93biwgeW91IG11c3QgbWFudWFsbHkgY2FsbCB3aGVuIGBkZW1hbmQ6IGZhbHNlYFxuICAgKi9cbiAgYmVnaW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuaW5nO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdzdGFydCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RhcnQgY291bnRkb3duXG4gICAqL1xuICByZXN0YXJ0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXR1cyAhPT0gQ291bnRkb3duU3RhdHVzLnN0b3ApIHtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLmNhbGxFdmVudCgncmVzdGFydCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgY291bnRkb3duLCBtdXN0IGNhbGwgYHJlc3RhcnRgIHdoZW4gc3RvcHBlZCwgaXQncyBkaWZmZXJlbnQgZnJvbSBwYXVzZSwgdW5hYmxlIHRvIHJlY292ZXJcbiAgICovXG4gIHN0b3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzID09PSBDb3VudGRvd25TdGF0dXMuc3RvcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXR1cyA9IENvdW50ZG93blN0YXR1cy5zdG9wO1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdzdG9wJyk7XG4gIH1cblxuICAvKipcbiAgICogUGF1c2UgY291bnRkb3duLCB5b3UgY2FuIHVzZSBgcmVzdW1lYCB0byByZWNvdmVyIGFnYWluXG4gICAqL1xuICBwYXVzZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgPT09IENvdW50ZG93blN0YXR1cy5zdG9wIHx8IHRoaXMuc3RhdHVzID09PSBDb3VudGRvd25TdGF0dXMucGF1c2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMucGF1c2U7XG4gICAgdGhpcy5jYWxsRXZlbnQoJ3BhdXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdW1lIGNvdW50ZG93blxuICAgKi9cbiAgcmVzdW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnN0b3AgfHwgdGhpcy5zdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5wYXVzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXR1cyA9IENvdW50ZG93blN0YXR1cy5pbmc7XG4gICAgdGhpcy5jYWxsRXZlbnQoJ3Jlc3VtZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsRXZlbnQoYWN0aW9uOiBDb3VudGRvd25FdmVudEFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuZXZlbnQuZW1pdCh7IGFjdGlvbiwgbGVmdDogdGhpcy5sZWZ0LCBzdGF0dXM6IHRoaXMuc3RhdHVzLCB0ZXh0OiB0aGlzLmkudGV4dCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGxvY2FsZSwgZGVmQ29nIH0gPSB0aGlzO1xuICAgIGNvbnN0IGNvbmZpZyA9ICh0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLm5ldyBDb3VudGRvd25HbG9iYWxDb25maWcobG9jYWxlKSxcbiAgICAgIC4uLmRlZkNvZyxcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgIH0pO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYml0d2lzZVxuICAgIGNvbnN0IGZycSA9ICh0aGlzLmZyZXF1ZW5jeSA9IH5jb25maWcuZm9ybWF0LmluZGV4T2YoJ1MnKSA/IDEwMCA6IDEwMDApO1xuICAgIHRoaXMuc3RhdHVzID0gY29uZmlnLmRlbWFuZCA/IENvdW50ZG93blN0YXR1cy5wYXVzZSA6IENvdW50ZG93blN0YXR1cy5pbmc7XG5cbiAgICB0aGlzLmdldExlZnQoKTtcblxuICAgIC8vIGJpbmQgcmVmbG93IHRvIG1lXG4gICAgY29uc3QgX3JlZmxvdyA9IHRoaXMucmVmbG93O1xuICAgIHRoaXMucmVmbG93ID0gKGNvdW50OiBudW1iZXIgPSAwLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSA9PiBfcmVmbG93LmFwcGx5KHRoaXMsIFtjb3VudCwgZm9yY2VdKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5ub3RpZnkpKSB7XG4gICAgICBjb25maWcubm90aWZ5LmZvckVhY2goKHRpbWU6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodGltZSA8IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBub3RpZnkgY29uZmlnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGltZSA9IHRpbWUgKiAxMDAwO1xuICAgICAgICB0aW1lID0gdGltZSAtICh0aW1lICUgZnJxKTtcbiAgICAgICAgdGhpcy5fbm90aWZ5W3RpbWVdID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudGltZXIuYWRkKHRoaXMucmVmbG93LCBmcnEpLnN0YXJ0KCk7XG5cbiAgICB0aGlzLnJlZmxvdygwLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSgpOiB0aGlzIHtcbiAgICB0aGlzLnRpbWVyLnJlbW92ZSh0aGlzLnJlZmxvdyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICog5pu05paw5pe26ZKfXG4gICAqL1xuICBwcml2YXRlIHJlZmxvdyhjb3VudDogbnVtYmVyID0gMCwgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdHVzLCBjb25maWcsIF9ub3RpZnkgfSA9IHRoaXM7XG4gICAgaWYgKCFmb3JjZSAmJiBzdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSAodGhpcy5sZWZ0ID0gdGhpcy5sZWZ0IC0gdGhpcy5mcmVxdWVuY3kgKiBjb3VudCk7XG4gICAgaWYgKHZhbHVlIDwgMSkge1xuICAgICAgdmFsdWUgPSAwO1xuICAgIH1cbiAgICB0aGlzLmkgPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHRleHQ6IGNvbmZpZy5mb3JtYXREYXRlKHsgZGF0ZTogdmFsdWUsIGZvcm1hdFN0cjogY29uZmlnLmZvcm1hdCwgdGltZXpvbmU6IGNvbmZpZy50aW1lem9uZSB9KSxcbiAgICB9O1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnByZXR0eVRleHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaS50ZXh0ID0gY29uZmlnLnByZXR0eVRleHQodGhpcy5pLnRleHQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAoY29uZmlnLm5vdGlmeSA9PT0gMCB8fCBfbm90aWZ5W3ZhbHVlXSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsRXZlbnQoJ25vdGlmeScpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IENvdW50ZG93blN0YXR1cy5kb25lO1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jYWxsRXZlbnQoJ2RvbmUnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blgJLorqHml7bliankvZnluKfmlbBcbiAgICovXG4gIHByaXZhdGUgZ2V0TGVmdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbmZpZywgZnJlcXVlbmN5IH0gPSB0aGlzO1xuICAgIGxldCBsZWZ0ID0gY29uZmlnLmxlZnRUaW1lICogMTAwMDtcbiAgICBjb25zdCBlbmQgPSBjb25maWcuc3RvcFRpbWU7XG5cbiAgICBpZiAoIWxlZnQgJiYgZW5kKSB7XG4gICAgICBsZWZ0ID0gZW5kIC0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgdGhpcy5sZWZ0ID0gbGVmdCAtIChsZWZ0ICUgZnJlcXVlbmN5KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIGlmICghdGhpcy5jb25maWcuZGVtYW5kKSB7XG4gICAgICB0aGlzLmJlZ2luKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rlc3Ryb3kgPSB0cnVlO1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbUCBpbiBrZXlvZiB0aGlzXT86IFNpbXBsZUNoYW5nZSB9ICYgU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghY2hhbmdlcy5jb25maWcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMucmVzdGFydCgpO1xuICAgIH1cbiAgfVxufVxuIl19

@@ -122,2 +122,11 @@ import { Injectable, NgZone, ɵɵdefineInjectable, ɵɵinject, LOCALE_ID, Inject, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, NgModule } from '@angular/core';

}
set config(i) {
if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {
i.notify = [i.notify];
}
this._config = i;
}
get config() {
return this._config;
}
/**

@@ -124,0 +133,0 @@ * Start countdown, you must manually call when `demand: false`

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"CountdownFormatFn":{"__symbolic":"interface"},"CountdownFormatFnOption":{"__symbolic":"interface"},"CountdownStatus":{"ing":0,"pause":1,"stop":2,"done":3},"CountdownConfig":{"__symbolic":"interface"},"CountdownEventAction":{"__symbolic":"interface"},"CountdownEvent":{"__symbolic":"interface"},"CountdownItem":{"__symbolic":"interface"},"CountdownComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"countdown","template":"\n <ng-container *ngIf=\"!render\">\n <span [innerHTML]=\"i.text\"></span>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"render; context: { $implicit: i }\"></ng-container>\n ","host":{"[class.count-down]":"true","$quoted$":["[class.count-down]"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":32,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":33,"character":19},"member":"OnPush"}}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"render":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"event":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":45,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":48,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":48,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"CountdownTimer"},{"__symbolic":"reference","name":"CountdownGlobalConfig"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":51,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":52,"character":20}]}],"begin":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"stop":[{"__symbolic":"method"}],"pause":[{"__symbolic":"method"}],"resume":[{"__symbolic":"method"}],"callEvent":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"reflow":[{"__symbolic":"method"}],"getLeft":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"CountdownTimer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":9,"character":30}]}],"start":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"CountdownGlobalConfig":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":7,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":7,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"ɵprov":{}}},"CountdownModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":12}],"providers":[{"__symbolic":"reference","name":"CountdownTimer"}],"declarations":[{"__symbolic":"reference","name":"CountdownComponent"}],"exports":[{"__symbolic":"reference","name":"CountdownComponent"}]}]}],"members":{}}},"origins":{"CountdownFormatFn":"./interfaces","CountdownFormatFnOption":"./interfaces","CountdownStatus":"./interfaces","CountdownConfig":"./interfaces","CountdownEventAction":"./interfaces","CountdownEvent":"./interfaces","CountdownItem":"./interfaces","CountdownComponent":"./countdown.component","CountdownTimer":"./countdown.timer","CountdownGlobalConfig":"./countdown.config","CountdownModule":"./countdown.module"},"importAs":"ngx-countdown"}
{"__symbolic":"module","version":4,"metadata":{"CountdownFormatFn":{"__symbolic":"interface"},"CountdownFormatFnOption":{"__symbolic":"interface"},"CountdownStatus":{"ing":0,"pause":1,"stop":2,"done":3},"CountdownConfig":{"__symbolic":"interface"},"CountdownEventAction":{"__symbolic":"interface"},"CountdownEvent":{"__symbolic":"interface"},"CountdownItem":{"__symbolic":"interface"},"CountdownComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"countdown","template":"\n <ng-container *ngIf=\"!render\">\n <span [innerHTML]=\"i.text\"></span>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"render; context: { $implicit: i }\"></ng-container>\n ","host":{"[class.count-down]":"true","$quoted$":["[class.count-down]"]},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":32,"character":17},"member":"None"},"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":33,"character":19},"member":"OnPush"}}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"render":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"event":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":55,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":58,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"CountdownTimer"},{"__symbolic":"reference","name":"CountdownGlobalConfig"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":61,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":62,"character":20}]}],"begin":[{"__symbolic":"method"}],"restart":[{"__symbolic":"method"}],"stop":[{"__symbolic":"method"}],"pause":[{"__symbolic":"method"}],"resume":[{"__symbolic":"method"}],"callEvent":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"reflow":[{"__symbolic":"method"}],"getLeft":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"CountdownTimer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":9,"character":30}]}],"start":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"CountdownGlobalConfig":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":7,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":7,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"ɵprov":{}}},"CountdownModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":12}],"providers":[{"__symbolic":"reference","name":"CountdownTimer"}],"declarations":[{"__symbolic":"reference","name":"CountdownComponent"}],"exports":[{"__symbolic":"reference","name":"CountdownComponent"}]}]}],"members":{}}},"origins":{"CountdownFormatFn":"./interfaces","CountdownFormatFnOption":"./interfaces","CountdownStatus":"./interfaces","CountdownConfig":"./interfaces","CountdownEventAction":"./interfaces","CountdownEvent":"./interfaces","CountdownItem":"./interfaces","CountdownComponent":"./countdown.component","CountdownTimer":"./countdown.timer","CountdownGlobalConfig":"./countdown.config","CountdownModule":"./countdown.module"},"importAs":"ngx-countdown"}
{
"name": "ngx-countdown",
"version": "11.0.2",
"version": "11.0.3",
"description": "Simple, easy and performance countdown for angular",

@@ -5,0 +5,0 @@ "keywords": [

@@ -42,9 +42,9 @@ # ngx-countdown

| Name | Description |
|-------------|------------------------------------------------------------------------------------------------|
| `begin()` | Start countdown, you must manually call when `demand: false` |
| `restart()` | Restart countdown |
| `stop()` | Stop countdown, must call `restart` when stopped, it's different from pause, unable to recover |
| `pause()` | Pause countdown, you can use `resume` to recover again |
| `resume()` | Resume countdown |
| Name | Description |
|------|-------------|
| `begin()` | Start countdown, you must manually call when `demand: false` |
| `restart()` | Restart countdown |
| `stop()` | Stop countdown, must call `restart` when stopped, it's different from pause, unable to recover |
| `pause()` | Pause countdown, you can use `resume` to recover again |
| `resume()` | Resume countdown |

@@ -62,12 +62,12 @@ **How call component methods**

| Name | Type | Default | Summary |
|----------|--------------------------------|---------|---------|
| `config` | `CountdownConfig` | - | Config |
| `event` | `EventEmitter<CountdownEvent>` | - | Events |
| Name | Type | Default | Summary |
|------|------|---------|---------|
| `config` | `CountdownConfig` | - | Config |
| `event` | `EventEmitter<CountdownEvent>` | - | Events |
### CountdownConfig
| Name | Type | Default | Summary |
| ------- | ------------- | ----- | ----- |
| demand | `boolean` | `false` | Start the counter on demand, must call `begin()` to starting |
| Name | Type | Default | Summary |
|------|------|---------|---------|
| demand | `boolean` | `false` | Start the counter on demand, must call `begin()` to starting |
| leftTime | `number` | `0` | Calculate the remaining time based on the server, e.g: `10`,`5.5`, (Unit: seconds) |

@@ -77,3 +77,3 @@ | stopTime | `number` | - | Refers to counting down from local time to end time (Unit: Milliseconds second UNIX timestamp) |

| prettyText | `(text: string) => string` | - | Beautify text, generally used to convert formatted time text into HTML |
| notify | `number[] | number` | - | Should be trigger type `notify` event on the x second. When values is `0` will be trigger every time |
| notify | `number[], number` | - | Should be trigger type `notify` event on the x second. When values is `0` will be trigger every time |
| formatDate | `CountdownFormatFn` | - | Default based on the implementation of `formatDate` in `@angular/common`, You can changed to other libs, e.g: [date-fns](https://date-fns.org/v2.0.1/docs/format) |

@@ -84,8 +84,8 @@ | timezone | `string` | `+0000` | A timezone offset (such as '+0430'), or a standard UTC/GMT. When not supplied, uses the end-user's local system timezone |

| Name | Type | Summary |
|----------|-----------------------------------------------|----------------------------------|
| `action` | `start,stop,restart,pause,resume,notify,done` | Action of the event |
| `status` | `CountdownStatus` | Status of the countdown |
| `left` | `number` | Number of remaining milliseconds |
| `text` | `string` | Format the text |
| Name | Type | Summary |
|------|------|---------|
| `action` | `start,stop,restart,pause,resume,notify,done` | Action of the event |
| `status` | `CountdownStatus` | Status of the countdown |
| `left` | `number` | Number of remaining milliseconds |
| `text` | `string` | Format the text |

@@ -92,0 +92,0 @@ **Global Config**

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc