Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

ngx-countdown

Package Overview
Dependencies
Maintainers
1
Versions
46
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
12.0.0
to
12.0.1
+1
countdown.component.ngfactory.d.ts
export {};
import * as i0 from '@angular/core';
import * as i1 from './countdown.module';
export declare const CountdownModuleNgFactory: i0.NgModuleFactory<i1.CountdownModule>;
/**
* @fileoverview This file was generated by the Angular template compiler. Do not edit.
*
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
* tslint:disable
*/
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "./countdown.component";
import * as i3 from "./countdown.timer";
import * as i4 from "./countdown.config";
var styles_CountdownComponent = [];
var RenderType_CountdownComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_CountdownComponent, data: {} });
export { RenderType_CountdownComponent as RenderType_CountdownComponent };
function View_CountdownComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, null, null, null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 0, "span", [], [[8, "innerHTML", 1]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.i.text; _ck(_v, 1, 0, currVal_0); }); }
function View_CountdownComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, null, null, null, null, null, null, null))], null, null); }
export function View_CountdownComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_CountdownComponent_1)), i0.ɵdid(1, 16384, null, 0, i1.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, "ngIf"] }, null), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_CountdownComponent_2)), i0.ɵdid(3, 540672, null, 0, i1.NgTemplateOutlet, [i0.ViewContainerRef], { ngTemplateOutletContext: [0, "ngTemplateOutletContext"], ngTemplateOutlet: [1, "ngTemplateOutlet"] }, null), i0.ɵpod(4, { $implicit: 0 })], function (_ck, _v) { var _co = _v.component; var currVal_0 = !_co.render; _ck(_v, 1, 0, currVal_0); var currVal_1 = _ck(_v, 4, 0, _co.i); var currVal_2 = _co.render; _ck(_v, 3, 0, currVal_1, currVal_2); }, null); }
export function View_CountdownComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, "countdown", [], [[2, "count-down", null]], null, null, View_CountdownComponent_0, RenderType_CountdownComponent)), i0.ɵdid(1, 770048, null, 0, i2.CountdownComponent, [i0.LOCALE_ID, i3.CountdownTimer, i4.CountdownGlobalConfig, i0.ChangeDetectorRef, i0.NgZone], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = true; _ck(_v, 0, 0, currVal_0); }); }
var CountdownComponentNgFactory = i0.ɵccf("countdown", i2.CountdownComponent, View_CountdownComponent_Host_0, { config: "config", render: "render" }, { event: "event" }, []);
export { CountdownComponentNgFactory as CountdownComponentNgFactory };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5uZ2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc3JjL2NvdW50ZG93bi5jb21wb25lbnQubmdmYWN0b3J5LnRzIiwiLi4vLi4vbGliL3NyYy9jb3VudGRvd24uY29tcG9uZW50LnRzLkNvdW50ZG93bkNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OzZEQ0NJLDZFQUVlLEtBRGIsOEZBQWtDLHdEQUE1QixtQkFBb0IsU0FBMUIsWUFBa0MsRUFBNUIsU0FBb0I7NkRBRTVCLDZFQUFtRjtvRUFIbkYsa0xBRWUsSUFDZixnUUFBbUYsR0FBckUseUJBQXFELG1EQUhyRCxvQkFBZSxTQUE3QixZQUVlLEVBRkQsU0FBZSxHQUdmLHlEQUFxRCxTQUFuRSxZQUFtRixFQUFyRSxvQkFBcUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmkwLkNvbXBvbmVudEZhY3Rvcnk7XG4iLCJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlbmRlclwiPlxuICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpLnRleHRcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlbmRlcjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAiXX0=
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"render":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":1,"members":[]}}]}],"event":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbol":2,"members":[]}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbol":3,"members":[]},"arguments":[{"__symbol":4,"members":[]}]}],null,null,null,null],"parameters":[null,{"__symbol":5,"members":[]},{"__symbol":6,"members":[]},{"__symbol":7,"members":[]},{"__symbol":8,"members":[]}]}],"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"}]}},"type":{"summaryKind":1,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":4,"members":[]}}}},{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":5,"members":[]}}}},{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":6,"members":[]}}}},{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":7,"members":[]}}}},{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":8,"members":[]}}}}],"lifecycleHooks":[0,1,3]},"isComponent":true,"selector":"countdown","exportAs":null,"inputs":{"config":"config","render":"render"},"outputs":{"event":"event"},"hostListeners":{},"hostProperties":{"class.count-down":"true"},"hostAttributes":{},"providers":[],"viewProviders":[],"queries":[],"guards":{},"viewQueries":[],"entryComponents":[],"changeDetection":0,"template":{"ngContentSelectors":[],"encapsulation":2,"styles":[],"animations":[]},"componentViewType":{"__symbol":9,"members":[]},"rendererType":{"__symbol":10,"members":[]},"componentFactory":{"__symbol":11,"members":[]}}}],"symbols":[{"__symbol":0,"name":"CountdownComponent","filePath":"./countdown.component"},{"__symbol":1,"name":"Input","filePath":"@angular/core"},{"__symbol":2,"name":"Output","filePath":"@angular/core"},{"__symbol":3,"name":"Inject","filePath":"@angular/core"},{"__symbol":4,"name":"LOCALE_ID","filePath":"@angular/core"},{"__symbol":5,"name":"CountdownTimer","filePath":"./countdown.timer"},{"__symbol":6,"name":"CountdownGlobalConfig","filePath":"./countdown.config"},{"__symbol":7,"name":"ChangeDetectorRef","filePath":"@angular/core"},{"__symbol":8,"name":"NgZone","filePath":"@angular/core"},{"__symbol":9,"name":"View_CountdownComponent_0","filePath":"./countdown.component.ngfactory"},{"__symbol":10,"name":"RenderType_CountdownComponent","filePath":"./countdown.component.ngfactory"},{"__symbol":11,"name":"CountdownComponentNgFactory","filePath":"./countdown.component.ngfactory"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbol":1,"members":[]},"arguments":[{"__symbol":2,"members":[]}]}]],"parameters":[null]}]}},"type":{"summaryKind":3,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":2,"members":[]}}}}],"lifecycleHooks":[]}}}],"symbols":[{"__symbol":0,"name":"CountdownGlobalConfig","filePath":"./countdown.config"},{"__symbol":1,"name":"Inject","filePath":"@angular/core"},{"__symbol":2,"name":"LOCALE_ID","filePath":"@angular/core"}]}
/**
* @fileoverview This file was generated by the Angular template compiler. Do not edit.
*
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
* tslint:disable
*/
import * as i0 from "@angular/core";
import * as i1 from "./countdown.module";
import * as i2 from "@angular/common";
import * as i3 from "./countdown.timer";
var CountdownModuleNgFactory = i0.ɵcmf(i1.CountdownModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID]), i0.ɵmpd(4608, i3.CountdownTimer, i3.CountdownTimer, [i0.NgZone]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.CountdownModule, i1.CountdownModule, [])]); });
export { CountdownModuleNgFactory as CountdownModuleNgFactory };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLm1vZHVsZS5uZ2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc3JjL2NvdW50ZG93bi5tb2R1bGUubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGkxIGZyb20gJy4vY291bnRkb3duLm1vZHVsZSc7XG5pbXBvcnQgKiBhcyBpMiBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0ICogYXMgaTMgZnJvbSAnLi9jb3VudGRvd24uY29tcG9uZW50JztcbmV4cG9ydCBjb25zdCBDb3VudGRvd25Nb2R1bGVOZ0ZhY3Rvcnk6aTAuTmdNb2R1bGVGYWN0b3J5PGkxLkNvdW50ZG93bk1vZHVsZT4gPSAobnVsbCBhcyBhbnkpO1xudmFyIF9kZWNsMF8wOmkyLk5nQ2xhc3MgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTppMi5OZ0NvbXBvbmVudE91dGxldCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yOmkyLk5nRm9yT2Y8YW55LGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMzppMi5OZ0lmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfNDppMi5OZ1RlbXBsYXRlT3V0bGV0ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzU6aTIuTmdTdHlsZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF82OmkyLk5nU3dpdGNoID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzc6aTIuTmdTd2l0Y2hDYXNlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzg6aTIuTmdTd2l0Y2hEZWZhdWx0ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzk6aTIuTmdQbHVyYWwgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTA6aTIuTmdQbHVyYWxDYXNlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzExOmkzLkNvdW50ZG93bkNvbXBvbmVudCA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xMjppMi5Bc3luY1BpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMTM6aTIuVXBwZXJDYXNlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNDppMi5Mb3dlckNhc2VQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE1OmkyLkpzb25QaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzE2OmkyLlNsaWNlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xNzppMi5EZWNpbWFsUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xODppMi5QZXJjZW50UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8xOTppMi5UaXRsZUNhc2VQaXBlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzIwOmkyLkN1cnJlbmN5UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMTppMi5EYXRlUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMjppMi5JMThuUGx1cmFsUGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yMzppMi5JMThuU2VsZWN0UGlwZSA9ICg8YW55PihudWxsIGFzIGFueSkpO1xudmFyIF9kZWNsMF8yNDppMi5LZXlWYWx1ZVBpcGUgPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjU6aTIuQ29tbW9uTW9kdWxlID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG52YXIgX2RlY2wwXzI2OmkwLlRlbXBsYXRlUmVmPGFueT4gPSAoPGFueT4obnVsbCBhcyBhbnkpKTtcbnZhciBfZGVjbDBfMjc6aTAuRWxlbWVudFJlZjxhbnk+ID0gKDxhbnk+KG51bGwgYXMgYW55KSk7XG5mdW5jdGlvbiBfVmlld19Db3VudGRvd25Db21wb25lbnRfSG9zdF8xXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbn1cbmZ1bmN0aW9uIF9WaWV3X0NvdW50ZG93bkNvbXBvbmVudF8xXzAoKTp2b2lkIHtcbiAgdmFyIF9hbnk6YW55ID0gKG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3VyclZhbF8wOmFueSA9ICFfZGVjbDBfMTEucmVuZGVyO1xuICBjdXJyVmFsXzA7XG4gIGNvbnN0IGN1cnJWYWxfMTphbnkgPSAoPGFueT57JGltcGxpY2l0Ol9kZWNsMF8xMS5pfSk7XG4gIGN1cnJWYWxfMTtcbiAgY29uc3QgY3VyclZhbF8yOmFueSA9IF9kZWNsMF8xMS5yZW5kZXI7XG4gIGN1cnJWYWxfMjtcbn1cbiJdfQ==
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class"},"type":{"summaryKind":2,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]},"entryComponents":[],"providers":[{"provider":{"token":{"identifier":{"reference":{"__symbol":1,"members":[]}}},"useClass":{"reference":{"__symbol":2,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":3,"members":[]}}}}],"lifecycleHooks":[]},"useFactory":null,"deps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":3,"members":[]}}}}],"multi":false},"module":{"reference":{"__symbol":4,"members":[]},"diDeps":[],"lifecycleHooks":[]}},{"provider":{"token":{"identifier":{"reference":{"__symbol":5,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":6,"members":[]}}}}],"lifecycleHooks":[]}},"useClass":{"reference":{"__symbol":5,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":6,"members":[]}}}}],"lifecycleHooks":[]},"useFactory":null,"deps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":6,"members":[]}}}}],"multi":false},"module":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}}],"modules":[{"reference":{"__symbol":4,"members":[]},"diDeps":[],"lifecycleHooks":[]},{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}],"exportedDirectives":[{"reference":{"__symbol":7,"members":[]}}],"exportedPipes":[]}}],"symbols":[{"__symbol":0,"name":"CountdownModule","filePath":"./countdown.module"},{"__symbol":1,"name":"NgLocalization","filePath":"@angular/common"},{"__symbol":2,"name":"NgLocaleLocalization","filePath":"@angular/common"},{"__symbol":3,"name":"LOCALE_ID","filePath":"@angular/core"},{"__symbol":4,"name":"CommonModule","filePath":"@angular/common"},{"__symbol":5,"name":"CountdownTimer","filePath":"./countdown.timer"},{"__symbol":6,"name":"NgZone","filePath":"@angular/core"},{"__symbol":7,"name":"CountdownComponent","filePath":"./countdown.component"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbol":1,"members":[]}]}],"start":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"type":{"summaryKind":3,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[{"isAttribute":false,"isHost":false,"isSelf":false,"isSkipSelf":false,"isOptional":false,"token":{"identifier":{"reference":{"__symbol":1,"members":[]}}}}],"lifecycleHooks":[]}}}],"symbols":[{"__symbol":0,"name":"CountdownTimer","filePath":"./countdown.timer"},{"__symbol":1,"name":"NgZone","filePath":"@angular/core"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":1,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"ing":0,"pause":1,"stop":2,"done":3}},{"symbol":{"__symbol":3,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":5,"members":[]},"metadata":{"__symbolic":"interface"}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbolic":"interface"}}],"symbols":[{"__symbol":0,"name":"CountdownFormatFn","filePath":"./interfaces"},{"__symbol":1,"name":"CountdownFormatFnOption","filePath":"./interfaces"},{"__symbol":2,"name":"CountdownStatus","filePath":"./interfaces"},{"__symbol":3,"name":"CountdownConfig","filePath":"./interfaces"},{"__symbol":4,"name":"CountdownEventAction","filePath":"./interfaces"},{"__symbol":5,"name":"CountdownEvent","filePath":"./interfaces"},{"__symbol":6,"name":"CountdownItem","filePath":"./interfaces"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}},{"symbol":{"__symbol":8,"members":[]},"metadata":{"__symbol":9,"members":[]}},{"symbol":{"__symbol":10,"members":[]},"metadata":{"__symbol":11,"members":[]}},{"symbol":{"__symbol":12,"members":[]},"metadata":{"__symbol":13,"members":[]}},{"symbol":{"__symbol":14,"members":[]},"metadata":{"__symbol":15,"members":[]}},{"symbol":{"__symbol":16,"members":[]},"metadata":{"__symbol":17,"members":[]}},{"symbol":{"__symbol":18,"members":[]},"metadata":{"__symbol":19,"members":[]}},{"symbol":{"__symbol":20,"members":[]},"metadata":{"__symbol":21,"members":[]}}],"symbols":[{"__symbol":0,"name":"CountdownFormatFn","filePath":"./ngx-countdown"},{"__symbol":1,"name":"CountdownFormatFn","filePath":"./public_api"},{"__symbol":2,"name":"CountdownFormatFnOption","filePath":"./ngx-countdown"},{"__symbol":3,"name":"CountdownFormatFnOption","filePath":"./public_api"},{"__symbol":4,"name":"CountdownStatus","filePath":"./ngx-countdown"},{"__symbol":5,"name":"CountdownStatus","filePath":"./public_api"},{"__symbol":6,"name":"CountdownConfig","filePath":"./ngx-countdown"},{"__symbol":7,"name":"CountdownConfig","filePath":"./public_api"},{"__symbol":8,"name":"CountdownEventAction","filePath":"./ngx-countdown"},{"__symbol":9,"name":"CountdownEventAction","filePath":"./public_api"},{"__symbol":10,"name":"CountdownEvent","filePath":"./ngx-countdown"},{"__symbol":11,"name":"CountdownEvent","filePath":"./public_api"},{"__symbol":12,"name":"CountdownItem","filePath":"./ngx-countdown"},{"__symbol":13,"name":"CountdownItem","filePath":"./public_api"},{"__symbol":14,"name":"CountdownComponent","filePath":"./ngx-countdown"},{"__symbol":15,"name":"CountdownComponent","filePath":"./public_api"},{"__symbol":16,"name":"CountdownTimer","filePath":"./ngx-countdown"},{"__symbol":17,"name":"CountdownTimer","filePath":"./public_api"},{"__symbol":18,"name":"CountdownGlobalConfig","filePath":"./ngx-countdown"},{"__symbol":19,"name":"CountdownGlobalConfig","filePath":"./public_api"},{"__symbol":20,"name":"CountdownModule","filePath":"./ngx-countdown"},{"__symbol":21,"name":"CountdownModule","filePath":"./public_api"}]}
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}},{"symbol":{"__symbol":8,"members":[]},"metadata":{"__symbol":9,"members":[]}},{"symbol":{"__symbol":10,"members":[]},"metadata":{"__symbol":11,"members":[]}},{"symbol":{"__symbol":12,"members":[]},"metadata":{"__symbol":13,"members":[]}},{"symbol":{"__symbol":14,"members":[]},"metadata":{"__symbol":15,"members":[]}},{"symbol":{"__symbol":16,"members":[]},"metadata":{"__symbol":17,"members":[]}},{"symbol":{"__symbol":18,"members":[]},"metadata":{"__symbol":19,"members":[]}},{"symbol":{"__symbol":20,"members":[]},"metadata":{"__symbol":21,"members":[]}}],"symbols":[{"__symbol":0,"name":"CountdownFormatFn","filePath":"./public_api"},{"__symbol":1,"name":"CountdownFormatFn","filePath":"./interfaces"},{"__symbol":2,"name":"CountdownFormatFnOption","filePath":"./public_api"},{"__symbol":3,"name":"CountdownFormatFnOption","filePath":"./interfaces"},{"__symbol":4,"name":"CountdownStatus","filePath":"./public_api"},{"__symbol":5,"name":"CountdownStatus","filePath":"./interfaces"},{"__symbol":6,"name":"CountdownConfig","filePath":"./public_api"},{"__symbol":7,"name":"CountdownConfig","filePath":"./interfaces"},{"__symbol":8,"name":"CountdownEventAction","filePath":"./public_api"},{"__symbol":9,"name":"CountdownEventAction","filePath":"./interfaces"},{"__symbol":10,"name":"CountdownEvent","filePath":"./public_api"},{"__symbol":11,"name":"CountdownEvent","filePath":"./interfaces"},{"__symbol":12,"name":"CountdownItem","filePath":"./public_api"},{"__symbol":13,"name":"CountdownItem","filePath":"./interfaces"},{"__symbol":14,"name":"CountdownComponent","filePath":"./public_api"},{"__symbol":15,"name":"CountdownComponent","filePath":"./countdown.component"},{"__symbol":16,"name":"CountdownTimer","filePath":"./public_api"},{"__symbol":17,"name":"CountdownTimer","filePath":"./countdown.timer"},{"__symbol":18,"name":"CountdownGlobalConfig","filePath":"./public_api"},{"__symbol":19,"name":"CountdownGlobalConfig","filePath":"./countdown.config"},{"__symbol":20,"name":"CountdownModule","filePath":"./public_api"},{"__symbol":21,"name":"CountdownModule","filePath":"./countdown.module"}]}
{"__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"}
+60
-70

@@ -5,3 +5,3 @@ (function (global, factory) {

(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['ngx-countdown'] = {}, global.ng.core, global.ng.common));
}(this, (function (exports, i0, i3) { 'use strict';
}(this, (function (exports, i0, common) { 'use strict';

@@ -29,3 +29,2 @@ function _interopNamespace(e) {

var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
var i3__namespace = /*#__PURE__*/_interopNamespace(i3);

@@ -40,30 +39,2 @@ exports.CountdownStatus = void 0;

// tslint:disable: no-inferrable-types
var CountdownGlobalConfig = /** @class */ (function () {
function CountdownGlobalConfig(locale) {
var _this = this;
this.locale = locale;
this.demand = false;
this.leftTime = 0;
this.format = 'HH:mm:ss';
this.timezone = '+0000';
this.formatDate = function (_a) {
var date = _a.date, formatStr = _a.formatStr, timezone = _a.timezone;
return i3.formatDate(new Date(date), formatStr, _this.locale, timezone || _this.timezone || '+0000');
};
}
return CountdownGlobalConfig;
}());
CountdownGlobalConfig.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownGlobalConfig, deps: [{ token: i0.LOCALE_ID }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
CountdownGlobalConfig.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownGlobalConfig, providedIn: 'root' });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownGlobalConfig, decorators: [{
type: i0.Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: i0.Inject,
args: [i0.LOCALE_ID]
}] }];
} });
var CountdownTimer = /** @class */ (function () {

@@ -142,8 +113,33 @@ function CountdownTimer(ngZone) {

}());
CountdownTimer.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownTimer, deps: [{ token: i0__namespace.NgZone }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
CountdownTimer.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownTimer });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownTimer, decorators: [{
type: i0.Injectable
}], ctorParameters: function () { return [{ type: i0__namespace.NgZone }]; } });
CountdownTimer.decorators = [
{ type: i0.Injectable }
];
CountdownTimer.ctorParameters = function () { return [
{ type: i0.NgZone }
]; };
// tslint:disable: no-inferrable-types
var CountdownGlobalConfig = /** @class */ (function () {
function CountdownGlobalConfig(locale) {
var _this = this;
this.locale = locale;
this.demand = false;
this.leftTime = 0;
this.format = 'HH:mm:ss';
this.timezone = '+0000';
this.formatDate = function (_a) {
var date = _a.date, formatStr = _a.formatStr, timezone = _a.timezone;
return common.formatDate(new Date(date), formatStr, _this.locale, timezone || _this.timezone || '+0000');
};
}
return CountdownGlobalConfig;
}());
CountdownGlobalConfig.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function CountdownGlobalConfig_Factory() { return new CountdownGlobalConfig(i0__namespace.ɵɵinject(i0__namespace.LOCALE_ID)); }, token: CountdownGlobalConfig, providedIn: "root" });
CountdownGlobalConfig.decorators = [
{ type: i0.Injectable, args: [{ providedIn: 'root' },] }
];
CountdownGlobalConfig.ctorParameters = function () { return [
{ type: String, decorators: [{ type: i0.Inject, args: [i0.LOCALE_ID,] }] }
]; };
var CountdownComponent = /** @class */ (function () {

@@ -328,25 +324,23 @@ function CountdownComponent(locale, timer, defCog, cdr, ngZone) {

}());
CountdownComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownComponent, deps: [{ token: i0.LOCALE_ID }, { token: CountdownTimer }, { token: CountdownGlobalConfig }, { token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.NgZone }], target: i0__namespace.ɵɵFactoryTarget.Component });
CountdownComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.2", type: CountdownComponent, selector: "countdown", inputs: { config: "config", render: "render" }, outputs: { event: "event" }, host: { properties: { "class.count-down": "true" } }, usesOnChanges: true, ngImport: i0__namespace, 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 ", isInline: true, directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownComponent, decorators: [{
type: i0.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: i0.ViewEncapsulation.None,
changeDetection: i0.ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: function () {
return [{ type: undefined, decorators: [{
type: i0.Inject,
args: [i0.LOCALE_ID]
}] }, { type: CountdownTimer }, { type: CountdownGlobalConfig }, { type: i0__namespace.ChangeDetectorRef }, { type: i0__namespace.NgZone }];
}, propDecorators: { config: [{
type: i0.Input
}], render: [{
type: i0.Input
}], event: [{
type: i0.Output
}] } });
CountdownComponent.decorators = [
{ type: i0.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: i0.ViewEncapsulation.None,
changeDetection: i0.ChangeDetectionStrategy.OnPush
},] }
];
CountdownComponent.ctorParameters = function () { return [
{ type: String, decorators: [{ type: i0.Inject, args: [i0.LOCALE_ID,] }] },
{ type: CountdownTimer },
{ type: CountdownGlobalConfig },
{ type: i0.ChangeDetectorRef },
{ type: i0.NgZone }
]; };
CountdownComponent.propDecorators = {
config: [{ type: i0.Input }],
render: [{ type: i0.Input }],
event: [{ type: i0.Output }]
};

@@ -358,14 +352,10 @@ var CountdownModule = /** @class */ (function () {

}());
CountdownModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
CountdownModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownModule, declarations: [CountdownComponent], imports: [i3.CommonModule], exports: [CountdownComponent] });
CountdownModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownModule, providers: [CountdownTimer], imports: [[i3.CommonModule]] });
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0__namespace, type: CountdownModule, decorators: [{
type: i0.NgModule,
args: [{
imports: [i3.CommonModule],
providers: [CountdownTimer],
declarations: [CountdownComponent],
exports: [CountdownComponent],
}]
}] });
CountdownModule.decorators = [
{ type: i0.NgModule, args: [{
imports: [common.CommonModule],
providers: [CountdownTimer],
declarations: [CountdownComponent],
exports: [CountdownComponent],
},] }
];

@@ -372,0 +362,0 @@ /**

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

{"version":3,"file":"ngx-countdown.umd.js","sources":["../../lib/src/interfaces.ts","../../lib/src/countdown.config.ts","../../lib/src/countdown.timer.ts","../../lib/src/countdown.component.ts","../../lib/src/countdown.module.ts","../../lib/src/ngx-countdown.ts"],"sourcesContent":["export type CountdownFormatFn = (opt: CountdownFormatFnOption) => string;\n\nexport interface CountdownFormatFnOption {\n date: number;\n formatStr: string;\n timezone?: string;\n}\n\nexport enum CountdownStatus {\n ing,\n pause,\n stop,\n done,\n}\n\nexport interface CountdownConfig {\n /**\n * Start the counter on demand, must call `begin()` to starting, Default: `false`\n */\n demand?: boolean;\n\n /**\n * Calculate the remaining time based on the server, e.g: `10`,`5.5`, (Unit: seconds)\n */\n leftTime?: number;\n\n /**\n * Refers to counting down from local time to end time (Unit: Milliseconds second UNIX timestamp)\n */\n stopTime?: number;\n\n /**\n * Formats a date value, pls refer to [Accepted patterns](https://angular.io/api/common/DatePipe#usage-notes), Default: `HH:mm:ss`\n */\n format?: string;\n\n /**\n * Beautify text, generally used to convert formatted time text into HTML\n */\n prettyText?: (text: string) => string;\n\n /**\n * Should be trigger type `notify` event on the x second. When values is `0` will be trigger every time.\n */\n notify?: number[] | number;\n\n /**\n * Default based on the implementation of `formatDate` in `@angular/common`\n *\n * You can changed to other libs, e.g: [date-fns](https://date-fns.org/v2.0.1/docs/format)\n */\n formatDate?: CountdownFormatFn;\n\n /**\n * A timezone offset (such as '+0430'), or a standard UTC/GMT.\n * When not supplied, uses the end-user's local system timezone, Default: `+0000`\n */\n timezone?: string;\n}\n\nexport type CountdownEventAction = 'start' | 'stop' | 'restart' | 'pause' | 'resume' | 'notify' | 'done';\n\nexport interface CountdownEvent {\n action: CountdownEventAction;\n status: CountdownStatus;\n left: number;\n text: string;\n}\n\nexport interface CountdownItem {\n text?: string;\n value?: number;\n}\n","// tslint:disable: no-inferrable-types\nimport { Injectable, Inject, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { CountdownFormatFn, CountdownConfig } from './interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class CountdownGlobalConfig implements CountdownConfig {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n demand?: boolean = false;\n\n leftTime?: number = 0;\n\n format?: string = 'HH:mm:ss';\n\n timezone?: string = '+0000';\n\n formatDate?: CountdownFormatFn = ({ date, formatStr, timezone }) => {\n return formatDate(new Date(date), formatStr, this.locale, timezone || this.timezone || '+0000');\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable()\nexport class CountdownTimer {\n private fns: Array<((count: number) => number | void) | number> = [];\n private commands: Array<() => void> = [];\n private nextTime = 0;\n private ing = false;\n\n constructor(private ngZone: NgZone) {}\n\n start(): void {\n if (this.ing === true) {\n return;\n }\n\n this.ing = true;\n this.nextTime = +new Date();\n this.ngZone.runOutsideAngular(() => {\n this.process();\n });\n }\n\n private process(): void {\n while (this.commands.length) {\n this.commands.shift()!();\n }\n let diff = +new Date() - this.nextTime;\n const count = 1 + Math.floor(diff / 100);\n\n diff = 100 - (diff % 100);\n this.nextTime += 100 * count;\n\n for (let i = 0, len = this.fns.length; i < len; i += 2) {\n let frequency = this.fns[i + 1] as number;\n\n // 100/s\n if (0 === frequency) {\n (this.fns[i] as (count: number) => void)(count);\n // 1000/s\n } else {\n // 先把末位至0,再每次加2\n frequency += 2 * count - 1;\n\n const step = Math.floor(frequency / 20);\n if (step > 0) {\n (this.fns[i] as (count: number) => void)(step);\n }\n\n // 把末位还原成1\n this.fns[i + 1] = (frequency % 20) + 1;\n }\n }\n\n if (!this.ing) {\n return;\n }\n\n setTimeout(() => this.process(), diff);\n }\n\n add(fn: () => void, frequency: number): this {\n this.commands.push(() => {\n this.fns.push(fn);\n this.fns.push(frequency === 1000 ? 1 : 0);\n this.ing = true;\n });\n return this;\n }\n\n remove(fn: () => void): this {\n this.commands.push(() => {\n const i = this.fns.indexOf(fn);\n if (i !== -1) {\n this.fns.splice(i, 2);\n }\n this.ing = this.fns.length > 0;\n });\n return this;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n Output,\n EventEmitter,\n OnInit,\n SimpleChange,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Inject,\n LOCALE_ID,\n ChangeDetectorRef,\n TemplateRef,\n NgZone,\n} from '@angular/core';\n\nimport { CountdownConfig, CountdownStatus, CountdownEvent, CountdownEventAction, CountdownItem } from './interfaces';\nimport { CountdownTimer } from './countdown.timer';\nimport { CountdownGlobalConfig } from './countdown.config';\n\n@Component({\n selector: 'countdown',\n 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 `,\n host: { '[class.count-down]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CountdownComponent implements OnInit, OnChanges, OnDestroy {\n private frequency = 1000;\n private _notify: { [key: number]: boolean } = {};\n private status: CountdownStatus = CountdownStatus.ing;\n private isDestroy = false;\n private _config!: CountdownConfig;\n i: CountdownItem = {};\n left = 0;\n\n @Input()\n set config(i: CountdownConfig) {\n if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {\n i.notify = [i.notify];\n }\n this._config = i;\n }\n get config(): CountdownConfig {\n return this._config;\n }\n @Input() render!: TemplateRef<void>;\n @Output() readonly event = new EventEmitter<CountdownEvent>();\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private timer: CountdownTimer,\n private defCog: CountdownGlobalConfig,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n ) {}\n\n /**\n * Start countdown, you must manually call when `demand: false`\n */\n begin(): void {\n this.status = CountdownStatus.ing;\n this.callEvent('start');\n }\n\n /**\n * Restart countdown\n */\n restart(): void {\n if (this.status !== CountdownStatus.stop) {\n this.destroy();\n }\n this.init();\n this.callEvent('restart');\n }\n\n /**\n * Stop countdown, must call `restart` when stopped, it's different from pause, unable to recover\n */\n stop(): void {\n if (this.status === CountdownStatus.stop) {\n return;\n }\n this.status = CountdownStatus.stop;\n this.destroy();\n this.callEvent('stop');\n }\n\n /**\n * Pause countdown, you can use `resume` to recover again\n */\n pause(): void {\n if (this.status === CountdownStatus.stop || this.status === CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.pause;\n this.callEvent('pause');\n }\n\n /**\n * Resume countdown\n */\n resume(): void {\n if (this.status === CountdownStatus.stop || this.status !== CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.ing;\n this.callEvent('resume');\n }\n\n private callEvent(action: CountdownEventAction): void {\n this.event.emit({ action, left: this.left, status: this.status, text: this.i.text! });\n }\n\n private init(): void {\n const { locale, defCog } = this;\n const config = (this.config = {\n ...new CountdownGlobalConfig(locale),\n ...defCog,\n ...this.config,\n });\n // tslint:disable-next-line: no-bitwise\n const frq = (this.frequency = ~config.format!.indexOf('S') ? 100 : 1000);\n this.status = config.demand ? CountdownStatus.pause : CountdownStatus.ing;\n\n this.getLeft();\n\n // bind reflow to me\n const _reflow = this.reflow;\n this.reflow = (count: number = 0, force: boolean = false) => _reflow.apply(this, [count, force]);\n\n if (Array.isArray(config.notify)) {\n config.notify.forEach((time: number) => {\n if (time < 1) {\n throw new Error(`The notify config must be a positive integer.`);\n }\n\n time = time * 1000;\n time = time - (time % frq);\n this._notify[time] = true;\n });\n }\n\n this.timer.add(this.reflow, frq).start();\n\n this.reflow(0, true);\n }\n\n private destroy(): this {\n this.timer.remove(this.reflow);\n return this;\n }\n\n /**\n * 更新时钟\n */\n private reflow(count: number = 0, force: boolean = false): void {\n if (this.isDestroy) {\n return;\n }\n\n const { status, config, _notify } = this;\n if (!force && status !== CountdownStatus.ing) {\n return;\n }\n\n let value = (this.left = this.left - this.frequency * count);\n if (value < 1) {\n value = 0;\n }\n this.i = {\n value,\n text: config.formatDate!({ date: value, formatStr: config.format!, timezone: config.timezone }),\n };\n if (typeof config.prettyText === 'function') {\n this.i.text = config.prettyText(this.i.text!);\n }\n this.cdr.detectChanges();\n\n if (config.notify === 0 || _notify[value]) {\n this.ngZone.run(() => {\n this.callEvent('notify');\n });\n }\n\n if (value === 0) {\n this.ngZone.run(() => {\n this.status = CountdownStatus.done;\n this.destroy();\n this.callEvent('done');\n });\n }\n }\n\n /**\n * 获取倒计时剩余帧数\n */\n private getLeft(): void {\n const { config, frequency } = this;\n let left = config.leftTime! * 1000;\n const end = config.stopTime;\n\n if (!left && end) {\n left = end - new Date().getTime();\n }\n\n this.left = left - (left % frequency);\n }\n\n ngOnInit(): void {\n this.init();\n if (!this.config.demand) {\n this.begin();\n }\n }\n\n ngOnDestroy(): void {\n this.isDestroy = true;\n this.destroy();\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (!changes.config!.firstChange) {\n this.restart();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CountdownComponent } from './countdown.component';\nimport { CountdownTimer } from './countdown.timer';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CountdownTimer],\n declarations: [CountdownComponent],\n exports: [CountdownComponent],\n})\nexport class CountdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["CountdownStatus","formatDate","LOCALE_ID","Injectable","Inject","EventEmitter","Component","ViewEncapsulation","ChangeDetectionStrategy","Input","Output","CommonModule","NgModule"],"mappings":"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"}
{"version":3,"file":"ngx-countdown.umd.js","sources":["../../lib/src/interfaces.ts","../../lib/src/countdown.timer.ts","../../lib/src/countdown.config.ts","../../lib/src/countdown.component.ts","../../lib/src/countdown.module.ts","../../lib/src/ngx-countdown.ts"],"sourcesContent":["export type CountdownFormatFn = (opt: CountdownFormatFnOption) => string;\n\nexport interface CountdownFormatFnOption {\n date: number;\n formatStr: string;\n timezone?: string;\n}\n\nexport enum CountdownStatus {\n ing,\n pause,\n stop,\n done,\n}\n\nexport interface CountdownConfig {\n /**\n * Start the counter on demand, must call `begin()` to starting, Default: `false`\n */\n demand?: boolean;\n\n /**\n * Calculate the remaining time based on the server, e.g: `10`,`5.5`, (Unit: seconds)\n */\n leftTime?: number;\n\n /**\n * Refers to counting down from local time to end time (Unit: Milliseconds second UNIX timestamp)\n */\n stopTime?: number;\n\n /**\n * Formats a date value, pls refer to [Accepted patterns](https://angular.io/api/common/DatePipe#usage-notes), Default: `HH:mm:ss`\n */\n format?: string;\n\n /**\n * Beautify text, generally used to convert formatted time text into HTML\n */\n prettyText?: (text: string) => string;\n\n /**\n * Should be trigger type `notify` event on the x second. When values is `0` will be trigger every time.\n */\n notify?: number[] | number;\n\n /**\n * Default based on the implementation of `formatDate` in `@angular/common`\n *\n * You can changed to other libs, e.g: [date-fns](https://date-fns.org/v2.0.1/docs/format)\n */\n formatDate?: CountdownFormatFn;\n\n /**\n * A timezone offset (such as '+0430'), or a standard UTC/GMT.\n * When not supplied, uses the end-user's local system timezone, Default: `+0000`\n */\n timezone?: string;\n}\n\nexport type CountdownEventAction = 'start' | 'stop' | 'restart' | 'pause' | 'resume' | 'notify' | 'done';\n\nexport interface CountdownEvent {\n action: CountdownEventAction;\n status: CountdownStatus;\n left: number;\n text: string;\n}\n\nexport interface CountdownItem {\n text?: string;\n value?: number;\n}\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable()\nexport class CountdownTimer {\n private fns: Array<((count: number) => number | void) | number> = [];\n private commands: Array<() => void> = [];\n private nextTime = 0;\n private ing = false;\n\n constructor(private ngZone: NgZone) {}\n\n start(): void {\n if (this.ing === true) {\n return;\n }\n\n this.ing = true;\n this.nextTime = +new Date();\n this.ngZone.runOutsideAngular(() => {\n this.process();\n });\n }\n\n private process(): void {\n while (this.commands.length) {\n this.commands.shift()!();\n }\n let diff = +new Date() - this.nextTime;\n const count = 1 + Math.floor(diff / 100);\n\n diff = 100 - (diff % 100);\n this.nextTime += 100 * count;\n\n for (let i = 0, len = this.fns.length; i < len; i += 2) {\n let frequency = this.fns[i + 1] as number;\n\n // 100/s\n if (0 === frequency) {\n (this.fns[i] as (count: number) => void)(count);\n // 1000/s\n } else {\n // 先把末位至0,再每次加2\n frequency += 2 * count - 1;\n\n const step = Math.floor(frequency / 20);\n if (step > 0) {\n (this.fns[i] as (count: number) => void)(step);\n }\n\n // 把末位还原成1\n this.fns[i + 1] = (frequency % 20) + 1;\n }\n }\n\n if (!this.ing) {\n return;\n }\n\n setTimeout(() => this.process(), diff);\n }\n\n add(fn: () => void, frequency: number): this {\n this.commands.push(() => {\n this.fns.push(fn);\n this.fns.push(frequency === 1000 ? 1 : 0);\n this.ing = true;\n });\n return this;\n }\n\n remove(fn: () => void): this {\n this.commands.push(() => {\n const i = this.fns.indexOf(fn);\n if (i !== -1) {\n this.fns.splice(i, 2);\n }\n this.ing = this.fns.length > 0;\n });\n return this;\n }\n}\n","// tslint:disable: no-inferrable-types\nimport { Injectable, Inject, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { CountdownFormatFn, CountdownConfig } from './interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class CountdownGlobalConfig implements CountdownConfig {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n demand?: boolean = false;\n\n leftTime?: number = 0;\n\n format?: string = 'HH:mm:ss';\n\n timezone?: string = '+0000';\n\n formatDate?: CountdownFormatFn = ({ date, formatStr, timezone }) => {\n return formatDate(new Date(date), formatStr, this.locale, timezone || this.timezone || '+0000');\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n Output,\n EventEmitter,\n OnInit,\n SimpleChange,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Inject,\n LOCALE_ID,\n ChangeDetectorRef,\n TemplateRef,\n NgZone,\n} from '@angular/core';\n\nimport { CountdownConfig, CountdownStatus, CountdownEvent, CountdownEventAction, CountdownItem } from './interfaces';\nimport { CountdownTimer } from './countdown.timer';\nimport { CountdownGlobalConfig } from './countdown.config';\n\n@Component({\n selector: 'countdown',\n 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 `,\n host: { '[class.count-down]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CountdownComponent implements OnInit, OnChanges, OnDestroy {\n private frequency = 1000;\n private _notify: { [key: number]: boolean } = {};\n private status: CountdownStatus = CountdownStatus.ing;\n private isDestroy = false;\n private _config!: CountdownConfig;\n i: CountdownItem = {};\n left = 0;\n\n @Input()\n set config(i: CountdownConfig) {\n if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {\n i.notify = [i.notify];\n }\n this._config = i;\n }\n get config(): CountdownConfig {\n return this._config;\n }\n @Input() render!: TemplateRef<void>;\n @Output() readonly event = new EventEmitter<CountdownEvent>();\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private timer: CountdownTimer,\n private defCog: CountdownGlobalConfig,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n ) {}\n\n /**\n * Start countdown, you must manually call when `demand: false`\n */\n begin(): void {\n this.status = CountdownStatus.ing;\n this.callEvent('start');\n }\n\n /**\n * Restart countdown\n */\n restart(): void {\n if (this.status !== CountdownStatus.stop) {\n this.destroy();\n }\n this.init();\n this.callEvent('restart');\n }\n\n /**\n * Stop countdown, must call `restart` when stopped, it's different from pause, unable to recover\n */\n stop(): void {\n if (this.status === CountdownStatus.stop) {\n return;\n }\n this.status = CountdownStatus.stop;\n this.destroy();\n this.callEvent('stop');\n }\n\n /**\n * Pause countdown, you can use `resume` to recover again\n */\n pause(): void {\n if (this.status === CountdownStatus.stop || this.status === CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.pause;\n this.callEvent('pause');\n }\n\n /**\n * Resume countdown\n */\n resume(): void {\n if (this.status === CountdownStatus.stop || this.status !== CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.ing;\n this.callEvent('resume');\n }\n\n private callEvent(action: CountdownEventAction): void {\n this.event.emit({ action, left: this.left, status: this.status, text: this.i.text! });\n }\n\n private init(): void {\n const { locale, defCog } = this;\n const config = (this.config = {\n ...new CountdownGlobalConfig(locale),\n ...defCog,\n ...this.config,\n });\n // tslint:disable-next-line: no-bitwise\n const frq = (this.frequency = ~config.format!.indexOf('S') ? 100 : 1000);\n this.status = config.demand ? CountdownStatus.pause : CountdownStatus.ing;\n\n this.getLeft();\n\n // bind reflow to me\n const _reflow = this.reflow;\n this.reflow = (count: number = 0, force: boolean = false) => _reflow.apply(this, [count, force]);\n\n if (Array.isArray(config.notify)) {\n config.notify.forEach((time: number) => {\n if (time < 1) {\n throw new Error(`The notify config must be a positive integer.`);\n }\n\n time = time * 1000;\n time = time - (time % frq);\n this._notify[time] = true;\n });\n }\n\n this.timer.add(this.reflow, frq).start();\n\n this.reflow(0, true);\n }\n\n private destroy(): this {\n this.timer.remove(this.reflow);\n return this;\n }\n\n /**\n * 更新时钟\n */\n private reflow(count: number = 0, force: boolean = false): void {\n if (this.isDestroy) {\n return;\n }\n\n const { status, config, _notify } = this;\n if (!force && status !== CountdownStatus.ing) {\n return;\n }\n\n let value = (this.left = this.left - this.frequency * count);\n if (value < 1) {\n value = 0;\n }\n this.i = {\n value,\n text: config.formatDate!({ date: value, formatStr: config.format!, timezone: config.timezone }),\n };\n if (typeof config.prettyText === 'function') {\n this.i.text = config.prettyText(this.i.text!);\n }\n this.cdr.detectChanges();\n\n if (config.notify === 0 || _notify[value]) {\n this.ngZone.run(() => {\n this.callEvent('notify');\n });\n }\n\n if (value === 0) {\n this.ngZone.run(() => {\n this.status = CountdownStatus.done;\n this.destroy();\n this.callEvent('done');\n });\n }\n }\n\n /**\n * 获取倒计时剩余帧数\n */\n private getLeft(): void {\n const { config, frequency } = this;\n let left = config.leftTime! * 1000;\n const end = config.stopTime;\n\n if (!left && end) {\n left = end - new Date().getTime();\n }\n\n this.left = left - (left % frequency);\n }\n\n ngOnInit(): void {\n this.init();\n if (!this.config.demand) {\n this.begin();\n }\n }\n\n ngOnDestroy(): void {\n this.isDestroy = true;\n this.destroy();\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (!changes.config!.firstChange) {\n this.restart();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CountdownComponent } from './countdown.component';\nimport { CountdownTimer } from './countdown.timer';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CountdownTimer],\n declarations: [CountdownComponent],\n exports: [CountdownComponent],\n})\nexport class CountdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["CountdownStatus","Injectable","NgZone","formatDate","Inject","LOCALE_ID","EventEmitter","Component","ViewEncapsulation","ChangeDetectionStrategy","ChangeDetectorRef","Input","Output","NgModule","CommonModule"],"mappings":"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"}

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

import { CountdownGlobalConfig } from './countdown.config';
import * as i0 from "@angular/core";
export declare class CountdownComponent implements OnInit, OnChanges, OnDestroy {

@@ -61,4 +60,2 @@ private locale;

} & SimpleChanges): void;
static ɵfac: i0.ɵɵFactoryDeclaration<CountdownComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<CountdownComponent, "countdown", never, { "config": "config"; "render": "render"; }, { "event": "event"; }, never, never>;
}
import { CountdownFormatFn, CountdownConfig } from './interfaces';
import * as i0 from "@angular/core";
export declare class CountdownGlobalConfig implements CountdownConfig {

@@ -11,4 +10,2 @@ private locale;

formatDate?: CountdownFormatFn;
static ɵfac: i0.ɵɵFactoryDeclaration<CountdownGlobalConfig, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<CountdownGlobalConfig>;
}

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

import * as i0 from "@angular/core";
import * as i1 from "./countdown.component";
import * as i2 from "@angular/common";
export declare class CountdownModule {
static ɵfac: i0.ɵɵFactoryDeclaration<CountdownModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<CountdownModule, [typeof i1.CountdownComponent], [typeof i2.CommonModule], [typeof i1.CountdownComponent]>;
static ɵinj: i0.ɵɵInjectorDeclaration<CountdownModule>;
}
import { NgZone } from '@angular/core';
import * as i0 from "@angular/core";
export declare class CountdownTimer {

@@ -14,4 +13,2 @@ private ngZone;

remove(fn: () => void): this;
static ɵfac: i0.ɵɵFactoryDeclaration<CountdownTimer, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<CountdownTimer>;
}

@@ -1,8 +0,5 @@

import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Inject, LOCALE_ID, } from '@angular/core';
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, Inject, LOCALE_ID, ChangeDetectorRef, NgZone, } from '@angular/core';
import { CountdownStatus } from './interfaces';
import { CountdownTimer } from './countdown.timer';
import { CountdownGlobalConfig } from './countdown.config';
import * as i0 from "@angular/core";
import * as i1 from "./countdown.timer";
import * as i2 from "./countdown.config";
import * as i3 from "@angular/common";
export class CountdownComponent {

@@ -174,4 +171,6 @@ constructor(locale, timer, defCog, cdr, ngZone) {

}
CountdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownComponent, deps: [{ token: LOCALE_ID }, { token: i1.CountdownTimer }, { token: i2.CountdownGlobalConfig }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
CountdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.2", type: CountdownComponent, selector: "countdown", inputs: { config: "config", render: "render" }, outputs: { event: "event" }, host: { properties: { "class.count-down": "true" } }, usesOnChanges: true, ngImport: i0, template: `
CountdownComponent.decorators = [
{ type: Component, args: [{
selector: 'countdown',
template: `
<ng-container *ngIf="!render">

@@ -181,27 +180,20 @@ <span [innerHTML]="i.text"></span>

<ng-container *ngTemplateOutlet="render; context: { $implicit: i }"></ng-container>
`, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownComponent, decorators: [{
type: Component,
args: [{
selector: 'countdown',
template: `
<ng-container *ngIf="!render">
<span [innerHTML]="i.text"></span>
</ng-container>
<ng-container *ngTemplateOutlet="render; context: { $implicit: i }"></ng-container>
`,
host: { '[class.count-down]': 'true' },
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [LOCALE_ID]
}] }, { type: i1.CountdownTimer }, { type: i2.CountdownGlobalConfig }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { config: [{
type: Input
}], render: [{
type: Input
}], event: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvY291bnRkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBQ04sWUFBWSxFQUdaLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFNBQVMsR0FJVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQW1CLGVBQWUsRUFBdUQsTUFBTSxjQUFjLENBQUM7QUFFckgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBYzNELE1BQU0sT0FBTyxrQkFBa0I7SUFzQjdCLFlBQzZCLE1BQWMsRUFDakMsS0FBcUIsRUFDckIsTUFBNkIsRUFDN0IsR0FBc0IsRUFDdEIsTUFBYztRQUpLLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDakMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDN0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFCaEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQStCLEVBQUUsQ0FBQztRQUN6QyxXQUFNLEdBQW9CLGVBQWUsQ0FBQyxHQUFHLENBQUM7UUFDOUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUxQixNQUFDLEdBQWtCLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBYVUsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBUTNELENBQUM7SUFuQkosSUFDSSxNQUFNLENBQUMsQ0FBa0I7UUFDM0IsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENB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Qix5TUFWbkI7Ozs7O0dBS1Q7MkZBS1Usa0JBQWtCO2tCQVo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUU7Ozs7O0dBS1Q7b0JBQ0QsSUFBSSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFO29CQUN0QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkF3QkksTUFBTTsyQkFBQyxTQUFTO2tLQWJmLE1BQU07c0JBRFQsS0FBSztnQkFVRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ2EsS0FBSztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ291bnRkb3duQ29uZmlnLCBDb3VudGRvd25TdGF0dXMsIENvdW50ZG93bkV2ZW50LCBDb3VudGRvd25FdmVudEFjdGlvbiwgQ291bnRkb3duSXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb3VudGRvd25UaW1lciB9IGZyb20gJy4vY291bnRkb3duLnRpbWVyJztcbmltcG9ydCB7IENvdW50ZG93bkdsb2JhbENvbmZpZyB9IGZyb20gJy4vY291bnRkb3duLmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvdW50ZG93bicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZW5kZXJcIj5cbiAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaS50ZXh0XCI+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW5kZXI7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgaG9zdDogeyAnW2NsYXNzLmNvdW50LWRvd25dJzogJ3RydWUnIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBmcmVxdWVuY3kgPSAxMDAwO1xuICBwcml2YXRlIF9ub3RpZnk6IHsgW2tleTogbnVtYmVyXTogYm9vbGVhbiB9ID0ge307XG4gIHByaXZhdGUgc3RhdHVzOiBDb3VudGRvd25TdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuaW5nO1xuICBwcml2YXRlIGlzRGVzdHJveSA9IGZhbHNlO1xuICBwcml2YXRlIF9jb25maWchOiBDb3VudGRvd25Db25maWc7XG4gIGk6IENvdW50ZG93bkl0ZW0gPSB7fTtcbiAgbGVmdCA9IDA7XG5cbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyhpOiBDb3VudGRvd25Db25maWcpIHtcbiAgICBpZiAoaS5ub3RpZnkgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpLm5vdGlmeSkgJiYgaS5ub3RpZnkgPiAwKSB7XG4gICAgICBpLm5vdGlmeSA9IFtpLm5vdGlmeV07XG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZyA9IGk7XG4gIH1cbiAgZ2V0IGNvbmZpZygpOiBDb3VudGRvd25Db25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cbiAgQElucHV0KCkgcmVuZGVyITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBPdXRwdXQoKSByZWFkb25seSBldmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRkb3duRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0aW1lcjogQ291bnRkb3duVGltZXIsXG4gICAgcHJpdmF0ZSBkZWZDb2c6IENvdW50ZG93bkdsb2JhbENvbmZpZyxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBTdGFydCBjb3VudGRvd24sIHlvdSBtdXN0IG1hbnVhbGx5IGNhbGwgd2hlbiBgZGVtYW5kOiBmYWxzZWBcbiAgICovXG4gIGJlZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzID0gQ291bnRkb3duU3RhdHVzLmluZztcbiAgICB0aGlzLmNhbGxFdmVudCgnc3RhcnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0YXJ0IGNvdW50ZG93blxuICAgKi9cbiAgcmVzdGFydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5zdG9wKSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jYWxsRXZlbnQoJ3Jlc3RhcnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGNvdW50ZG93biwgbXVzdCBjYWxsIGByZXN0YXJ0YCB3aGVuIHN0b3BwZWQsIGl0J3MgZGlmZmVyZW50IGZyb20gcGF1c2UsIHVuYWJsZSB0byByZWNvdmVyXG4gICAqL1xuICBzdG9wKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnN0b3ApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuc3RvcDtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNhbGxFdmVudCgnc3RvcCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlIGNvdW50ZG93biwgeW91IGNhbiB1c2UgYHJlc3VtZWAgdG8gcmVjb3ZlciBhZ2FpblxuICAgKi9cbiAgcGF1c2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzID09PSBDb3VudGRvd25TdGF0dXMuc3RvcCB8fCB0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnBhdXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdHVzID0gQ291bnRkb3duU3RhdHVzLnBhdXNlO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdwYXVzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSBjb3VudGRvd25cbiAgICovXG4gIHJlc3VtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgPT09IENvdW50ZG93blN0YXR1cy5zdG9wIHx8IHRoaXMuc3RhdHVzICE9PSBDb3VudGRvd25TdGF0dXMucGF1c2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuaW5nO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdyZXN1bWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbEV2ZW50KGFjdGlvbjogQ291bnRkb3duRXZlbnRBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50LmVtaXQoeyBhY3Rpb24sIGxlZnQ6IHRoaXMubGVmdCwgc3RhdHVzOiB0aGlzLnN0YXR1cywgdGV4dDogdGhpcy5pLnRleHQhIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgbG9jYWxlLCBkZWZDb2cgfSA9IHRoaXM7XG4gICAgY29uc3QgY29uZmlnID0gKHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4ubmV3IENvdW50ZG93bkdsb2JhbENvbmZpZyhsb2NhbGUpLFxuICAgICAgLi4uZGVmQ29nLFxuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgfSk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1iaXR3aXNlXG4gICAgY29uc3QgZnJxID0gKHRoaXMuZnJlcXVlbmN5ID0gfmNvbmZpZy5mb3JtYXQhLmluZGV4T2YoJ1MnKSA/IDEwMCA6IDEwMDApO1xuICAgIHRoaXMuc3RhdHVzID0gY29uZmlnLmRlbWFuZCA/IENvdW50ZG93blN0YXR1cy5wYXVzZSA6IENvdW50ZG93blN0YXR1cy5pbmc7XG5cbiAgICB0aGlzLmdldExlZnQoKTtcblxuICAgIC8vIGJpbmQgcmVmbG93IHRvIG1lXG4gICAgY29uc3QgX3JlZmxvdyA9IHRoaXMucmVmbG93O1xuICAgIHRoaXMucmVmbG93ID0gKGNvdW50OiBudW1iZXIgPSAwLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSA9PiBfcmVmbG93LmFwcGx5KHRoaXMsIFtjb3VudCwgZm9yY2VdKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5ub3RpZnkpKSB7XG4gICAgICBjb25maWcubm90aWZ5LmZvckVhY2goKHRpbWU6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodGltZSA8IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBub3RpZnkgY29uZmlnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGltZSA9IHRpbWUgKiAxMDAwO1xuICAgICAgICB0aW1lID0gdGltZSAtICh0aW1lICUgZnJxKTtcbiAgICAgICAgdGhpcy5fbm90aWZ5W3RpbWVdID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudGltZXIuYWRkKHRoaXMucmVmbG93LCBmcnEpLnN0YXJ0KCk7XG5cbiAgICB0aGlzLnJlZmxvdygwLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSgpOiB0aGlzIHtcbiAgICB0aGlzLnRpbWVyLnJlbW92ZSh0aGlzLnJlZmxvdyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICog5pu05paw5pe26ZKfXG4gICAqL1xuICBwcml2YXRlIHJlZmxvdyhjb3VudDogbnVtYmVyID0gMCwgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdHVzLCBjb25maWcsIF9ub3RpZnkgfSA9IHRoaXM7XG4gICAgaWYgKCFmb3JjZSAmJiBzdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSAodGhpcy5sZWZ0ID0gdGhpcy5sZWZ0IC0gdGhpcy5mcmVxdWVuY3kgKiBjb3VudCk7XG4gICAgaWYgKHZhbHVlIDwgMSkge1xuICAgICAgdmFsdWUgPSAwO1xuICAgIH1cbiAgICB0aGlzLmkgPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHRleHQ6IGNvbmZpZy5mb3JtYXREYXRlISh7IGRhdGU6IHZhbHVlLCBmb3JtYXRTdHI6IGNvbmZpZy5mb3JtYXQhLCB0aW1lem9uZTogY29uZmlnLnRpbWV6b25lIH0pLFxuICAgIH07XG4gICAgaWYgKHR5cGVvZiBjb25maWcucHJldHR5VGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5pLnRleHQgPSBjb25maWcucHJldHR5VGV4dCh0aGlzLmkudGV4dCEpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAoY29uZmlnLm5vdGlmeSA9PT0gMCB8fCBfbm90aWZ5W3ZhbHVlXSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsRXZlbnQoJ25vdGlmeScpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IENvdW50ZG93blN0YXR1cy5kb25lO1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jYWxsRXZlbnQoJ2RvbmUnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blgJLorqHml7bliankvZnluKfmlbBcbiAgICovXG4gIHByaXZhdGUgZ2V0TGVmdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbmZpZywgZnJlcXVlbmN5IH0gPSB0aGlzO1xuICAgIGxldCBsZWZ0ID0gY29uZmlnLmxlZnRUaW1lISAqIDEwMDA7XG4gICAgY29uc3QgZW5kID0gY29uZmlnLnN0b3BUaW1lO1xuXG4gICAgaWYgKCFsZWZ0ICYmIGVuZCkge1xuICAgICAgbGVmdCA9IGVuZCAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIHRoaXMubGVmdCA9IGxlZnQgLSAobGVmdCAlIGZyZXF1ZW5jeSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRlbWFuZCkge1xuICAgICAgdGhpcy5iZWdpbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZXN0cm95ID0gdHJ1ZTtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW1AgaW4ga2V5b2YgdGhpc10/OiBTaW1wbGVDaGFuZ2UgfSAmIFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMuY29uZmlnIS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5yZXN0YXJ0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
host: { '[class.count-down]': 'true' },
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush
},] }
];
CountdownComponent.ctorParameters = () => [
{ type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },
{ type: CountdownTimer },
{ type: CountdownGlobalConfig },
{ type: ChangeDetectorRef },
{ type: NgZone }
];
CountdownComponent.propDecorators = {
config: [{ type: Input }],
render: [{ type: Input }],
event: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvY291bnRkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBQ04sWUFBWSxFQUdaLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFFakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBbUIsZUFBZSxFQUF1RCxNQUFNLGNBQWMsQ0FBQztBQUNySCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFjM0QsTUFBTSxPQUFPLGtCQUFrQjtJQXNCN0IsWUFDNkIsTUFBYyxFQUNqQyxLQUFxQixFQUNyQixNQUE2QixFQUM3QixHQUFzQixFQUN0QixNQUFjO1FBSkssV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNqQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUM3QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBMUJoQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBK0IsRUFBRSxDQUFDO1FBQ3pDLFdBQU0sR0FBb0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUM5QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTFCLE1BQUMsR0FBa0IsRUFBRSxDQUFDO1FBQ3RCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFhVSxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFRM0QsQ0FBQztJQW5CSixJQUNJLE1BQU0sQ0FBQyxDQUFrQjtRQUMzQixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUks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LENBQUM7U0FDaEI7SUFDSCxDQUFDOzs7WUFsTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixRQUFRLEVBQUU7Ozs7O0dBS1Q7Z0JBQ0QsSUFBSSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFO2dCQUN0QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7Ozt5Q0F3QkksTUFBTSxTQUFDLFNBQVM7WUF0Q1osY0FBYztZQUNkLHFCQUFxQjtZQVA1QixpQkFBaUI7WUFFakIsTUFBTTs7O3FCQTRCTCxLQUFLO3FCQVVMLEtBQUs7b0JBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5qZWN0LFxuICBMT0NBTEVfSUQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ291bnRkb3duQ29uZmlnLCBDb3VudGRvd25TdGF0dXMsIENvdW50ZG93bkV2ZW50LCBDb3VudGRvd25FdmVudEFjdGlvbiwgQ291bnRkb3duSXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb3VudGRvd25UaW1lciB9IGZyb20gJy4vY291bnRkb3duLnRpbWVyJztcbmltcG9ydCB7IENvdW50ZG93bkdsb2JhbENvbmZpZyB9IGZyb20gJy4vY291bnRkb3duLmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvdW50ZG93bicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZW5kZXJcIj5cbiAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaS50ZXh0XCI+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW5kZXI7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgaG9zdDogeyAnW2NsYXNzLmNvdW50LWRvd25dJzogJ3RydWUnIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBmcmVxdWVuY3kgPSAxMDAwO1xuICBwcml2YXRlIF9ub3RpZnk6IHsgW2tleTogbnVtYmVyXTogYm9vbGVhbiB9ID0ge307XG4gIHByaXZhdGUgc3RhdHVzOiBDb3VudGRvd25TdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuaW5nO1xuICBwcml2YXRlIGlzRGVzdHJveSA9IGZhbHNlO1xuICBwcml2YXRlIF9jb25maWchOiBDb3VudGRvd25Db25maWc7XG4gIGk6IENvdW50ZG93bkl0ZW0gPSB7fTtcbiAgbGVmdCA9IDA7XG5cbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyhpOiBDb3VudGRvd25Db25maWcpIHtcbiAgICBpZiAoaS5ub3RpZnkgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpLm5vdGlmeSkgJiYgaS5ub3RpZnkgPiAwKSB7XG4gICAgICBpLm5vdGlmeSA9IFtpLm5vdGlmeV07XG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZyA9IGk7XG4gIH1cbiAgZ2V0IGNvbmZpZygpOiBDb3VudGRvd25Db25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cbiAgQElucHV0KCkgcmVuZGVyITogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBPdXRwdXQoKSByZWFkb25seSBldmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRkb3duRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0aW1lcjogQ291bnRkb3duVGltZXIsXG4gICAgcHJpdmF0ZSBkZWZDb2c6IENvdW50ZG93bkdsb2JhbENvbmZpZyxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBTdGFydCBjb3VudGRvd24sIHlvdSBtdXN0IG1hbnVhbGx5IGNhbGwgd2hlbiBgZGVtYW5kOiBmYWxzZWBcbiAgICovXG4gIGJlZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzID0gQ291bnRkb3duU3RhdHVzLmluZztcbiAgICB0aGlzLmNhbGxFdmVudCgnc3RhcnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0YXJ0IGNvdW50ZG93blxuICAgKi9cbiAgcmVzdGFydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5zdG9wKSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jYWxsRXZlbnQoJ3Jlc3RhcnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGNvdW50ZG93biwgbXVzdCBjYWxsIGByZXN0YXJ0YCB3aGVuIHN0b3BwZWQsIGl0J3MgZGlmZmVyZW50IGZyb20gcGF1c2UsIHVuYWJsZSB0byByZWNvdmVyXG4gICAqL1xuICBzdG9wKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnN0b3ApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuc3RvcDtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLmNhbGxFdmVudCgnc3RvcCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdXNlIGNvdW50ZG93biwgeW91IGNhbiB1c2UgYHJlc3VtZWAgdG8gcmVjb3ZlciBhZ2FpblxuICAgKi9cbiAgcGF1c2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzID09PSBDb3VudGRvd25TdGF0dXMuc3RvcCB8fCB0aGlzLnN0YXR1cyA9PT0gQ291bnRkb3duU3RhdHVzLnBhdXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdHVzID0gQ291bnRkb3duU3RhdHVzLnBhdXNlO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdwYXVzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3VtZSBjb3VudGRvd25cbiAgICovXG4gIHJlc3VtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgPT09IENvdW50ZG93blN0YXR1cy5zdG9wIHx8IHRoaXMuc3RhdHVzICE9PSBDb3VudGRvd25TdGF0dXMucGF1c2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0dXMgPSBDb3VudGRvd25TdGF0dXMuaW5nO1xuICAgIHRoaXMuY2FsbEV2ZW50KCdyZXN1bWUnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbEV2ZW50KGFjdGlvbjogQ291bnRkb3duRXZlbnRBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50LmVtaXQoeyBhY3Rpb24sIGxlZnQ6IHRoaXMubGVmdCwgc3RhdHVzOiB0aGlzLnN0YXR1cywgdGV4dDogdGhpcy5pLnRleHQhIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgbG9jYWxlLCBkZWZDb2cgfSA9IHRoaXM7XG4gICAgY29uc3QgY29uZmlnID0gKHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4ubmV3IENvdW50ZG93bkdsb2JhbENvbmZpZyhsb2NhbGUpLFxuICAgICAgLi4uZGVmQ29nLFxuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgfSk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1iaXR3aXNlXG4gICAgY29uc3QgZnJxID0gKHRoaXMuZnJlcXVlbmN5ID0gfmNvbmZpZy5mb3JtYXQhLmluZGV4T2YoJ1MnKSA/IDEwMCA6IDEwMDApO1xuICAgIHRoaXMuc3RhdHVzID0gY29uZmlnLmRlbWFuZCA/IENvdW50ZG93blN0YXR1cy5wYXVzZSA6IENvdW50ZG93blN0YXR1cy5pbmc7XG5cbiAgICB0aGlzLmdldExlZnQoKTtcblxuICAgIC8vIGJpbmQgcmVmbG93IHRvIG1lXG4gICAgY29uc3QgX3JlZmxvdyA9IHRoaXMucmVmbG93O1xuICAgIHRoaXMucmVmbG93ID0gKGNvdW50OiBudW1iZXIgPSAwLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSA9PiBfcmVmbG93LmFwcGx5KHRoaXMsIFtjb3VudCwgZm9yY2VdKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5ub3RpZnkpKSB7XG4gICAgICBjb25maWcubm90aWZ5LmZvckVhY2goKHRpbWU6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodGltZSA8IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBub3RpZnkgY29uZmlnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGltZSA9IHRpbWUgKiAxMDAwO1xuICAgICAgICB0aW1lID0gdGltZSAtICh0aW1lICUgZnJxKTtcbiAgICAgICAgdGhpcy5fbm90aWZ5W3RpbWVdID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudGltZXIuYWRkKHRoaXMucmVmbG93LCBmcnEpLnN0YXJ0KCk7XG5cbiAgICB0aGlzLnJlZmxvdygwLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSgpOiB0aGlzIHtcbiAgICB0aGlzLnRpbWVyLnJlbW92ZSh0aGlzLnJlZmxvdyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICog5pu05paw5pe26ZKfXG4gICAqL1xuICBwcml2YXRlIHJlZmxvdyhjb3VudDogbnVtYmVyID0gMCwgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRGVzdHJveSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RhdHVzLCBjb25maWcsIF9ub3RpZnkgfSA9IHRoaXM7XG4gICAgaWYgKCFmb3JjZSAmJiBzdGF0dXMgIT09IENvdW50ZG93blN0YXR1cy5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSAodGhpcy5sZWZ0ID0gdGhpcy5sZWZ0IC0gdGhpcy5mcmVxdWVuY3kgKiBjb3VudCk7XG4gICAgaWYgKHZhbHVlIDwgMSkge1xuICAgICAgdmFsdWUgPSAwO1xuICAgIH1cbiAgICB0aGlzLmkgPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHRleHQ6IGNvbmZpZy5mb3JtYXREYXRlISh7IGRhdGU6IHZhbHVlLCBmb3JtYXRTdHI6IGNvbmZpZy5mb3JtYXQhLCB0aW1lem9uZTogY29uZmlnLnRpbWV6b25lIH0pLFxuICAgIH07XG4gICAgaWYgKHR5cGVvZiBjb25maWcucHJldHR5VGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5pLnRleHQgPSBjb25maWcucHJldHR5VGV4dCh0aGlzLmkudGV4dCEpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAoY29uZmlnLm5vdGlmeSA9PT0gMCB8fCBfbm90aWZ5W3ZhbHVlXSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsRXZlbnQoJ25vdGlmeScpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IENvdW50ZG93blN0YXR1cy5kb25lO1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5jYWxsRXZlbnQoJ2RvbmUnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blgJLorqHml7bliankvZnluKfmlbBcbiAgICovXG4gIHByaXZhdGUgZ2V0TGVmdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbmZpZywgZnJlcXVlbmN5IH0gPSB0aGlzO1xuICAgIGxldCBsZWZ0ID0gY29uZmlnLmxlZnRUaW1lISAqIDEwMDA7XG4gICAgY29uc3QgZW5kID0gY29uZmlnLnN0b3BUaW1lO1xuXG4gICAgaWYgKCFsZWZ0ICYmIGVuZCkge1xuICAgICAgbGVmdCA9IGVuZCAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIHRoaXMubGVmdCA9IGxlZnQgLSAobGVmdCAlIGZyZXF1ZW5jeSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRlbWFuZCkge1xuICAgICAgdGhpcy5iZWdpbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZXN0cm95ID0gdHJ1ZTtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW1AgaW4ga2V5b2YgdGhpc10/OiBTaW1wbGVDaGFuZ2UgfSAmIFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMuY29uZmlnIS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5yZXN0YXJ0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -17,11 +17,9 @@ // tslint:disable: no-inferrable-types

}
CountdownGlobalConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownGlobalConfig, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
CountdownGlobalConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownGlobalConfig, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownGlobalConfig, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [LOCALE_ID]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvY291bnRkb3duLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFJN0MsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUF1QyxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVyRCxXQUFNLEdBQWEsS0FBSyxDQUFDO1FBRXpCLGFBQVEsR0FBWSxDQUFDLENBQUM7UUFFdEIsV0FBTSxHQUFZLFVBQVUsQ0FBQztRQUU3QixhQUFRLEdBQVksT0FBTyxDQUFDO1FBRTVCLGVBQVUsR0FBdUIsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUNqRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUE7SUFadUQsQ0FBQzs7a0hBRDlDLHFCQUFxQixrQkFDWixTQUFTO3NIQURsQixxQkFBcUIsY0FEUixNQUFNOzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFFbkIsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG5vLWluZmVycmFibGUtdHlwZXNcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvdW50ZG93bkZvcm1hdEZuLCBDb3VudGRvd25Db25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvdW50ZG93bkdsb2JhbENvbmZpZyBpbXBsZW1lbnRzIENvdW50ZG93bkNvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nKSB7fVxuXG4gIGRlbWFuZD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsZWZ0VGltZT86IG51bWJlciA9IDA7XG5cbiAgZm9ybWF0Pzogc3RyaW5nID0gJ0hIOm1tOnNzJztcblxuICB0aW1lem9uZT86IHN0cmluZyA9ICcrMDAwMCc7XG5cbiAgZm9ybWF0RGF0ZT86IENvdW50ZG93bkZvcm1hdEZuID0gKHsgZGF0ZSwgZm9ybWF0U3RyLCB0aW1lem9uZSB9KSA9PiB7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUobmV3IERhdGUoZGF0ZSksIGZvcm1hdFN0ciwgdGhpcy5sb2NhbGUsIHRpbWV6b25lIHx8IHRoaXMudGltZXpvbmUgfHwgJyswMDAwJyk7XG4gIH1cbn1cbiJdfQ==
CountdownGlobalConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function CountdownGlobalConfig_Factory() { return new CountdownGlobalConfig(i0.ɵɵinject(i0.LOCALE_ID)); }, token: CountdownGlobalConfig, providedIn: "root" });
CountdownGlobalConfig.decorators = [
{ type: Injectable, args: [{ providedIn: 'root' },] }
];
CountdownGlobalConfig.ctorParameters = () => [
{ type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvY291bnRkb3duLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFJN0MsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUF1QyxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVyRCxXQUFNLEdBQWEsS0FBSyxDQUFDO1FBRXpCLGFBQVEsR0FBWSxDQUFDLENBQUM7UUFFdEIsV0FBTSxHQUFZLFVBQVUsQ0FBQztRQUU3QixhQUFRLEdBQVksT0FBTyxDQUFDO1FBRTVCLGVBQVUsR0FBdUIsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUNqRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUE7SUFadUQsQ0FBQzs7OztZQUYxRCxVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7eUNBRW5CLE1BQU0sU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG5vLWluZmVycmFibGUtdHlwZXNcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvdW50ZG93bkZvcm1hdEZuLCBDb3VudGRvd25Db25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvdW50ZG93bkdsb2JhbENvbmZpZyBpbXBsZW1lbnRzIENvdW50ZG93bkNvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nKSB7fVxuXG4gIGRlbWFuZD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsZWZ0VGltZT86IG51bWJlciA9IDA7XG5cbiAgZm9ybWF0Pzogc3RyaW5nID0gJ0hIOm1tOnNzJztcblxuICB0aW1lem9uZT86IHN0cmluZyA9ICcrMDAwMCc7XG5cbiAgZm9ybWF0RGF0ZT86IENvdW50ZG93bkZvcm1hdEZuID0gKHsgZGF0ZSwgZm9ybWF0U3RyLCB0aW1lem9uZSB9KSA9PiB7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUobmV3IERhdGUoZGF0ZSksIGZvcm1hdFN0ciwgdGhpcy5sb2NhbGUsIHRpbWV6b25lIHx8IHRoaXMudGltZXpvbmUgfHwgJyswMDAwJyk7XG4gIH1cbn1cbiJdfQ==

@@ -5,17 +5,12 @@ import { CommonModule } from '@angular/common';

import { CountdownTimer } from './countdown.timer';
import * as i0 from "@angular/core";
export class CountdownModule {
}
CountdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
CountdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, declarations: [CountdownComponent], imports: [CommonModule], exports: [CountdownComponent] });
CountdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, providers: [CountdownTimer], imports: [[CommonModule]] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, decorators: [{
type: NgModule,
args: [{
imports: [CommonModule],
providers: [CountdownTimer],
declarations: [CountdownComponent],
exports: [CountdownComponent],
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvY291bnRkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBUW5ELE1BQU0sT0FBTyxlQUFlOzs0R0FBZixlQUFlOzZHQUFmLGVBQWUsaUJBSFgsa0JBQWtCLGFBRnZCLFlBQVksYUFHWixrQkFBa0I7NkdBRWpCLGVBQWUsYUFKZixDQUFDLGNBQWMsQ0FBQyxZQURsQixDQUFDLFlBQVksQ0FBQzsyRkFLWixlQUFlO2tCQU4zQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUMzQixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvdW50ZG93bkNvbXBvbmVudCB9IGZyb20gJy4vY291bnRkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3VudGRvd25UaW1lciB9IGZyb20gJy4vY291bnRkb3duLnRpbWVyJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW0NvdW50ZG93blRpbWVyXSxcbiAgZGVjbGFyYXRpb25zOiBbQ291bnRkb3duQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0NvdW50ZG93bkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIENvdW50ZG93bk1vZHVsZSB7fVxuIl19
CountdownModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
providers: [CountdownTimer],
declarations: [CountdownComponent],
exports: [CountdownComponent],
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvY291bnRkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFRbkQsTUFBTSxPQUFPLGVBQWU7OztZQU4zQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUN2QixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7Z0JBQzNCLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO2dCQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb3VudGRvd25Db21wb25lbnQgfSBmcm9tICcuL2NvdW50ZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291bnRkb3duVGltZXIgfSBmcm9tICcuL2NvdW50ZG93bi50aW1lcic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtDb3VudGRvd25UaW1lcl0sXG4gIGRlY2xhcmF0aW9uczogW0NvdW50ZG93bkNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtDb3VudGRvd25Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudGRvd25Nb2R1bGUge31cbiJdfQ==

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

import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import { Injectable, NgZone } from '@angular/core';
export class CountdownTimer {

@@ -71,7 +70,8 @@ constructor(ngZone) {

}
CountdownTimer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownTimer, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
CountdownTimer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownTimer });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownTimer, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLnRpbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3NyYy9jb3VudGRvd24udGltZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkQsTUFBTSxPQUFPLGNBQWM7SUFNekIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFMMUIsUUFBRyxHQUF1RCxFQUFFLENBQUM7UUFDN0QsYUFBUSxHQUFzQixFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLFFBQUcsR0FBRyxLQUFLLENBQUM7SUFFaUIsQ0FBQztJQUV0QyxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUcsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBRTdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFXLENBQUM7WUFFMUMsUUFBUTtZQUNSLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELFNBQVM7YUFDVjtpQkFBTTtnQkFDTCxlQUFlO2dCQUNmLFNBQVMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFFM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDaEQ7Z0JBRUQsVUFBVTtnQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEM7U0FDRjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQWMsRUFBRSxTQUFpQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFjO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7MkdBNUVVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb3VudGRvd25UaW1lciB7XG4gIHByaXZhdGUgZm5zOiBBcnJheTwoKGNvdW50OiBudW1iZXIpID0+IG51bWJlciB8IHZvaWQpIHwgbnVtYmVyPiA9IFtdO1xuICBwcml2YXRlIGNvbW1hbmRzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICBwcml2YXRlIG5leHRUaW1lID0gMDtcbiAgcHJpdmF0ZSBpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluZyA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm5leHRUaW1lID0gK25ldyBEYXRlKCk7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3MoKTogdm9pZCB7XG4gICAgd2hpbGUgKHRoaXMuY29tbWFuZHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzLnNoaWZ0KCkhKCk7XG4gICAgfVxuICAgIGxldCBkaWZmID0gK25ldyBEYXRlKCkgLSB0aGlzLm5leHRUaW1lO1xuICAgIGNvbnN0IGNvdW50ID0gMSArIE1hdGguZmxvb3IoZGlmZiAvIDEwMCk7XG5cbiAgICBkaWZmID0gMTAwIC0gKGRpZmYgJSAxMDApO1xuICAgIHRoaXMubmV4dFRpbWUgKz0gMTAwICogY291bnQ7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5mbnMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICAgIGxldCBmcmVxdWVuY3kgPSB0aGlzLmZuc1tpICsgMV0gYXMgbnVtYmVyO1xuXG4gICAgICAvLyAxMDAvc1xuICAgICAgaWYgKDAgPT09IGZyZXF1ZW5jeSkge1xuICAgICAgICAodGhpcy5mbnNbaV0gYXMgKGNvdW50OiBudW1iZXIpID0+IHZvaWQpKGNvdW50KTtcbiAgICAgICAgLy8gMTAwMC9zXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDlhYjmiormnKvkvY3oh7Mw77yM5YaN5q+P5qyh5YqgMlxuICAgICAgICBmcmVxdWVuY3kgKz0gMiAqIGNvdW50IC0gMTtcblxuICAgICAgICBjb25zdCBzdGVwID0gTWF0aC5mbG9vcihmcmVxdWVuY3kgLyAyMCk7XG4gICAgICAgIGlmIChzdGVwID4gMCkge1xuICAgICAgICAgICh0aGlzLmZuc1tpXSBhcyAoY291bnQ6IG51bWJlcikgPT4gdm9pZCkoc3RlcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDmiormnKvkvY3ov5jljp/miJAxXG4gICAgICAgIHRoaXMuZm5zW2kgKyAxXSA9IChmcmVxdWVuY3kgJSAyMCkgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2VzcygpLCBkaWZmKTtcbiAgfVxuXG4gIGFkZChmbjogKCkgPT4gdm9pZCwgZnJlcXVlbmN5OiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbW1hbmRzLnB1c2goKCkgPT4ge1xuICAgICAgdGhpcy5mbnMucHVzaChmbik7XG4gICAgICB0aGlzLmZucy5wdXNoKGZyZXF1ZW5jeSA9PT0gMTAwMCA/IDEgOiAwKTtcbiAgICAgIHRoaXMuaW5nID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZShmbjogKCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIHRoaXMuY29tbWFuZHMucHVzaCgoKSA9PiB7XG4gICAgICBjb25zdCBpID0gdGhpcy5mbnMuaW5kZXhPZihmbik7XG4gICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5mbnMuc3BsaWNlKGksIDIpO1xuICAgICAgfVxuICAgICAgdGhpcy5pbmcgPSB0aGlzLmZucy5sZW5ndGggPiAwO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
CountdownTimer.decorators = [
{ type: Injectable }
];
CountdownTimer.ctorParameters = () => [
{ type: NgZone }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLnRpbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3NyYy9jb3VudGRvd24udGltZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsTUFBTSxPQUFPLGNBQWM7SUFNekIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFMMUIsUUFBRyxHQUF1RCxFQUFFLENBQUM7UUFDN0QsYUFBUSxHQUFzQixFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLFFBQUcsR0FBRyxLQUFLLENBQUM7SUFFaUIsQ0FBQztJQUV0QyxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUcsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBRTdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFXLENBQUM7WUFFMUMsUUFBUTtZQUNSLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELFNBQVM7YUFDVjtpQkFBTTtnQkFDTCxlQUFlO2dCQUNmLFNBQVMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFFM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDaEQ7Z0JBRUQsVUFBVTtnQkFDVixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEM7U0FDRjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQWMsRUFBRSxTQUFpQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFjO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkI7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBN0VGLFVBQVU7OztZQUZVLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvdW50ZG93blRpbWVyIHtcbiAgcHJpdmF0ZSBmbnM6IEFycmF5PCgoY291bnQ6IG51bWJlcikgPT4gbnVtYmVyIHwgdm9pZCkgfCBudW1iZXI+ID0gW107XG4gIHByaXZhdGUgY29tbWFuZHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gIHByaXZhdGUgbmV4dFRpbWUgPSAwO1xuICBwcml2YXRlIGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5nID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbmcgPSB0cnVlO1xuICAgIHRoaXMubmV4dFRpbWUgPSArbmV3IERhdGUoKTtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3MoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2VzcygpOiB2b2lkIHtcbiAgICB3aGlsZSAodGhpcy5jb21tYW5kcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29tbWFuZHMuc2hpZnQoKSEoKTtcbiAgICB9XG4gICAgbGV0IGRpZmYgPSArbmV3IERhdGUoKSAtIHRoaXMubmV4dFRpbWU7XG4gICAgY29uc3QgY291bnQgPSAxICsgTWF0aC5mbG9vcihkaWZmIC8gMTAwKTtcblxuICAgIGRpZmYgPSAxMDAgLSAoZGlmZiAlIDEwMCk7XG4gICAgdGhpcy5uZXh0VGltZSArPSAxMDAgKiBjb3VudDtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmZucy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMikge1xuICAgICAgbGV0IGZyZXF1ZW5jeSA9IHRoaXMuZm5zW2kgKyAxXSBhcyBudW1iZXI7XG5cbiAgICAgIC8vIDEwMC9zXG4gICAgICBpZiAoMCA9PT0gZnJlcXVlbmN5KSB7XG4gICAgICAgICh0aGlzLmZuc1tpXSBhcyAoY291bnQ6IG51bWJlcikgPT4gdm9pZCkoY291bnQpO1xuICAgICAgICAvLyAxMDAwL3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOWFiOaKiuacq+S9jeiHszDvvIzlho3mr4/mrKHliqAyXG4gICAgICAgIGZyZXF1ZW5jeSArPSAyICogY291bnQgLSAxO1xuXG4gICAgICAgIGNvbnN0IHN0ZXAgPSBNYXRoLmZsb29yKGZyZXF1ZW5jeSAvIDIwKTtcbiAgICAgICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgICAgKHRoaXMuZm5zW2ldIGFzIChjb3VudDogbnVtYmVyKSA9PiB2b2lkKShzdGVwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOaKiuacq+S9jei/mOWOn+aIkDFcbiAgICAgICAgdGhpcy5mbnNbaSArIDFdID0gKGZyZXF1ZW5jeSAlIDIwKSArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzKCksIGRpZmYpO1xuICB9XG5cbiAgYWRkKGZuOiAoKSA9PiB2b2lkLCBmcmVxdWVuY3k6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29tbWFuZHMucHVzaCgoKSA9PiB7XG4gICAgICB0aGlzLmZucy5wdXNoKGZuKTtcbiAgICAgIHRoaXMuZm5zLnB1c2goZnJlcXVlbmN5ID09PSAxMDAwID8gMSA6IDApO1xuICAgICAgdGhpcy5pbmcgPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlKGZuOiAoKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgdGhpcy5jb21tYW5kcy5wdXNoKCgpID0+IHtcbiAgICAgIGNvbnN0IGkgPSB0aGlzLmZucy5pbmRleE9mKGZuKTtcbiAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICB0aGlzLmZucy5zcGxpY2UoaSwgMik7XG4gICAgICB9XG4gICAgICB0aGlzLmluZyA9IHRoaXMuZm5zLmxlbmd0aCA+IDA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==
import * as i0 from '@angular/core';
import { LOCALE_ID, Injectable, Inject, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, NgModule } from '@angular/core';
import * as i3 from '@angular/common';
import { Injectable, NgZone, Inject, LOCALE_ID, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, NgModule } from '@angular/core';
import { formatDate, CommonModule } from '@angular/common';

@@ -14,25 +13,2 @@

// tslint:disable: no-inferrable-types
class CountdownGlobalConfig {
constructor(locale) {
this.locale = locale;
this.demand = false;
this.leftTime = 0;
this.format = 'HH:mm:ss';
this.timezone = '+0000';
this.formatDate = ({ date, formatStr, timezone }) => {
return formatDate(new Date(date), formatStr, this.locale, timezone || this.timezone || '+0000');
};
}
}
CountdownGlobalConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownGlobalConfig, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
CountdownGlobalConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownGlobalConfig, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownGlobalConfig, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [LOCALE_ID]
}] }]; } });
class CountdownTimer {

@@ -106,8 +82,30 @@ constructor(ngZone) {

}
CountdownTimer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownTimer, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
CountdownTimer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownTimer });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownTimer, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
CountdownTimer.decorators = [
{ type: Injectable }
];
CountdownTimer.ctorParameters = () => [
{ type: NgZone }
];
// tslint:disable: no-inferrable-types
class CountdownGlobalConfig {
constructor(locale) {
this.locale = locale;
this.demand = false;
this.leftTime = 0;
this.format = 'HH:mm:ss';
this.timezone = '+0000';
this.formatDate = ({ date, formatStr, timezone }) => {
return formatDate(new Date(date), formatStr, this.locale, timezone || this.timezone || '+0000');
};
}
}
CountdownGlobalConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function CountdownGlobalConfig_Factory() { return new CountdownGlobalConfig(i0.ɵɵinject(i0.LOCALE_ID)); }, token: CountdownGlobalConfig, providedIn: "root" });
CountdownGlobalConfig.decorators = [
{ type: Injectable, args: [{ providedIn: 'root' },] }
];
CountdownGlobalConfig.ctorParameters = () => [
{ type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
];
class CountdownComponent {

@@ -279,4 +277,6 @@ constructor(locale, timer, defCog, cdr, ngZone) {

}
CountdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownComponent, deps: [{ token: LOCALE_ID }, { token: CountdownTimer }, { token: CountdownGlobalConfig }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
CountdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.2", type: CountdownComponent, selector: "countdown", inputs: { config: "config", render: "render" }, outputs: { event: "event" }, host: { properties: { "class.count-down": "true" } }, usesOnChanges: true, ngImport: i0, template: `
CountdownComponent.decorators = [
{ type: Component, args: [{
selector: 'countdown',
template: `
<ng-container *ngIf="!render">

@@ -286,42 +286,31 @@ <span [innerHTML]="i.text"></span>

<ng-container *ngTemplateOutlet="render; context: { $implicit: i }"></ng-container>
`, isInline: true, directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownComponent, decorators: [{
type: Component,
args: [{
selector: 'countdown',
template: `
<ng-container *ngIf="!render">
<span [innerHTML]="i.text"></span>
</ng-container>
<ng-container *ngTemplateOutlet="render; context: { $implicit: i }"></ng-container>
`,
host: { '[class.count-down]': 'true' },
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [LOCALE_ID]
}] }, { type: CountdownTimer }, { type: CountdownGlobalConfig }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { config: [{
type: Input
}], render: [{
type: Input
}], event: [{
type: Output
}] } });
host: { '[class.count-down]': 'true' },
encapsulation: ViewEncapsulation.None,
changeDetection: ChangeDetectionStrategy.OnPush
},] }
];
CountdownComponent.ctorParameters = () => [
{ type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },
{ type: CountdownTimer },
{ type: CountdownGlobalConfig },
{ type: ChangeDetectorRef },
{ type: NgZone }
];
CountdownComponent.propDecorators = {
config: [{ type: Input }],
render: [{ type: Input }],
event: [{ type: Output }]
};
class CountdownModule {
}
CountdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
CountdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, declarations: [CountdownComponent], imports: [CommonModule], exports: [CountdownComponent] });
CountdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, providers: [CountdownTimer], imports: [[CommonModule]] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.2", ngImport: i0, type: CountdownModule, decorators: [{
type: NgModule,
args: [{
imports: [CommonModule],
providers: [CountdownTimer],
declarations: [CountdownComponent],
exports: [CountdownComponent],
}]
}] });
CountdownModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
providers: [CountdownTimer],
declarations: [CountdownComponent],
exports: [CountdownComponent],
},] }
];

@@ -328,0 +317,0 @@ /**

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

{"version":3,"file":"ngx-countdown.js","sources":["../../lib/src/interfaces.ts","../../lib/src/countdown.config.ts","../../lib/src/countdown.timer.ts","../../lib/src/countdown.component.ts","../../lib/src/countdown.module.ts","../../lib/src/ngx-countdown.ts"],"sourcesContent":["export type CountdownFormatFn = (opt: CountdownFormatFnOption) => string;\n\nexport interface CountdownFormatFnOption {\n date: number;\n formatStr: string;\n timezone?: string;\n}\n\nexport enum CountdownStatus {\n ing,\n pause,\n stop,\n done,\n}\n\nexport interface CountdownConfig {\n /**\n * Start the counter on demand, must call `begin()` to starting, Default: `false`\n */\n demand?: boolean;\n\n /**\n * Calculate the remaining time based on the server, e.g: `10`,`5.5`, (Unit: seconds)\n */\n leftTime?: number;\n\n /**\n * Refers to counting down from local time to end time (Unit: Milliseconds second UNIX timestamp)\n */\n stopTime?: number;\n\n /**\n * Formats a date value, pls refer to [Accepted patterns](https://angular.io/api/common/DatePipe#usage-notes), Default: `HH:mm:ss`\n */\n format?: string;\n\n /**\n * Beautify text, generally used to convert formatted time text into HTML\n */\n prettyText?: (text: string) => string;\n\n /**\n * Should be trigger type `notify` event on the x second. When values is `0` will be trigger every time.\n */\n notify?: number[] | number;\n\n /**\n * Default based on the implementation of `formatDate` in `@angular/common`\n *\n * You can changed to other libs, e.g: [date-fns](https://date-fns.org/v2.0.1/docs/format)\n */\n formatDate?: CountdownFormatFn;\n\n /**\n * A timezone offset (such as '+0430'), or a standard UTC/GMT.\n * When not supplied, uses the end-user's local system timezone, Default: `+0000`\n */\n timezone?: string;\n}\n\nexport type CountdownEventAction = 'start' | 'stop' | 'restart' | 'pause' | 'resume' | 'notify' | 'done';\n\nexport interface CountdownEvent {\n action: CountdownEventAction;\n status: CountdownStatus;\n left: number;\n text: string;\n}\n\nexport interface CountdownItem {\n text?: string;\n value?: number;\n}\n","// tslint:disable: no-inferrable-types\nimport { Injectable, Inject, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { CountdownFormatFn, CountdownConfig } from './interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class CountdownGlobalConfig implements CountdownConfig {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n demand?: boolean = false;\n\n leftTime?: number = 0;\n\n format?: string = 'HH:mm:ss';\n\n timezone?: string = '+0000';\n\n formatDate?: CountdownFormatFn = ({ date, formatStr, timezone }) => {\n return formatDate(new Date(date), formatStr, this.locale, timezone || this.timezone || '+0000');\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable()\nexport class CountdownTimer {\n private fns: Array<((count: number) => number | void) | number> = [];\n private commands: Array<() => void> = [];\n private nextTime = 0;\n private ing = false;\n\n constructor(private ngZone: NgZone) {}\n\n start(): void {\n if (this.ing === true) {\n return;\n }\n\n this.ing = true;\n this.nextTime = +new Date();\n this.ngZone.runOutsideAngular(() => {\n this.process();\n });\n }\n\n private process(): void {\n while (this.commands.length) {\n this.commands.shift()!();\n }\n let diff = +new Date() - this.nextTime;\n const count = 1 + Math.floor(diff / 100);\n\n diff = 100 - (diff % 100);\n this.nextTime += 100 * count;\n\n for (let i = 0, len = this.fns.length; i < len; i += 2) {\n let frequency = this.fns[i + 1] as number;\n\n // 100/s\n if (0 === frequency) {\n (this.fns[i] as (count: number) => void)(count);\n // 1000/s\n } else {\n // 先把末位至0,再每次加2\n frequency += 2 * count - 1;\n\n const step = Math.floor(frequency / 20);\n if (step > 0) {\n (this.fns[i] as (count: number) => void)(step);\n }\n\n // 把末位还原成1\n this.fns[i + 1] = (frequency % 20) + 1;\n }\n }\n\n if (!this.ing) {\n return;\n }\n\n setTimeout(() => this.process(), diff);\n }\n\n add(fn: () => void, frequency: number): this {\n this.commands.push(() => {\n this.fns.push(fn);\n this.fns.push(frequency === 1000 ? 1 : 0);\n this.ing = true;\n });\n return this;\n }\n\n remove(fn: () => void): this {\n this.commands.push(() => {\n const i = this.fns.indexOf(fn);\n if (i !== -1) {\n this.fns.splice(i, 2);\n }\n this.ing = this.fns.length > 0;\n });\n return this;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n Output,\n EventEmitter,\n OnInit,\n SimpleChange,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Inject,\n LOCALE_ID,\n ChangeDetectorRef,\n TemplateRef,\n NgZone,\n} from '@angular/core';\n\nimport { CountdownConfig, CountdownStatus, CountdownEvent, CountdownEventAction, CountdownItem } from './interfaces';\nimport { CountdownTimer } from './countdown.timer';\nimport { CountdownGlobalConfig } from './countdown.config';\n\n@Component({\n selector: 'countdown',\n 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 `,\n host: { '[class.count-down]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CountdownComponent implements OnInit, OnChanges, OnDestroy {\n private frequency = 1000;\n private _notify: { [key: number]: boolean } = {};\n private status: CountdownStatus = CountdownStatus.ing;\n private isDestroy = false;\n private _config!: CountdownConfig;\n i: CountdownItem = {};\n left = 0;\n\n @Input()\n set config(i: CountdownConfig) {\n if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {\n i.notify = [i.notify];\n }\n this._config = i;\n }\n get config(): CountdownConfig {\n return this._config;\n }\n @Input() render!: TemplateRef<void>;\n @Output() readonly event = new EventEmitter<CountdownEvent>();\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private timer: CountdownTimer,\n private defCog: CountdownGlobalConfig,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n ) {}\n\n /**\n * Start countdown, you must manually call when `demand: false`\n */\n begin(): void {\n this.status = CountdownStatus.ing;\n this.callEvent('start');\n }\n\n /**\n * Restart countdown\n */\n restart(): void {\n if (this.status !== CountdownStatus.stop) {\n this.destroy();\n }\n this.init();\n this.callEvent('restart');\n }\n\n /**\n * Stop countdown, must call `restart` when stopped, it's different from pause, unable to recover\n */\n stop(): void {\n if (this.status === CountdownStatus.stop) {\n return;\n }\n this.status = CountdownStatus.stop;\n this.destroy();\n this.callEvent('stop');\n }\n\n /**\n * Pause countdown, you can use `resume` to recover again\n */\n pause(): void {\n if (this.status === CountdownStatus.stop || this.status === CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.pause;\n this.callEvent('pause');\n }\n\n /**\n * Resume countdown\n */\n resume(): void {\n if (this.status === CountdownStatus.stop || this.status !== CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.ing;\n this.callEvent('resume');\n }\n\n private callEvent(action: CountdownEventAction): void {\n this.event.emit({ action, left: this.left, status: this.status, text: this.i.text! });\n }\n\n private init(): void {\n const { locale, defCog } = this;\n const config = (this.config = {\n ...new CountdownGlobalConfig(locale),\n ...defCog,\n ...this.config,\n });\n // tslint:disable-next-line: no-bitwise\n const frq = (this.frequency = ~config.format!.indexOf('S') ? 100 : 1000);\n this.status = config.demand ? CountdownStatus.pause : CountdownStatus.ing;\n\n this.getLeft();\n\n // bind reflow to me\n const _reflow = this.reflow;\n this.reflow = (count: number = 0, force: boolean = false) => _reflow.apply(this, [count, force]);\n\n if (Array.isArray(config.notify)) {\n config.notify.forEach((time: number) => {\n if (time < 1) {\n throw new Error(`The notify config must be a positive integer.`);\n }\n\n time = time * 1000;\n time = time - (time % frq);\n this._notify[time] = true;\n });\n }\n\n this.timer.add(this.reflow, frq).start();\n\n this.reflow(0, true);\n }\n\n private destroy(): this {\n this.timer.remove(this.reflow);\n return this;\n }\n\n /**\n * 更新时钟\n */\n private reflow(count: number = 0, force: boolean = false): void {\n if (this.isDestroy) {\n return;\n }\n\n const { status, config, _notify } = this;\n if (!force && status !== CountdownStatus.ing) {\n return;\n }\n\n let value = (this.left = this.left - this.frequency * count);\n if (value < 1) {\n value = 0;\n }\n this.i = {\n value,\n text: config.formatDate!({ date: value, formatStr: config.format!, timezone: config.timezone }),\n };\n if (typeof config.prettyText === 'function') {\n this.i.text = config.prettyText(this.i.text!);\n }\n this.cdr.detectChanges();\n\n if (config.notify === 0 || _notify[value]) {\n this.ngZone.run(() => {\n this.callEvent('notify');\n });\n }\n\n if (value === 0) {\n this.ngZone.run(() => {\n this.status = CountdownStatus.done;\n this.destroy();\n this.callEvent('done');\n });\n }\n }\n\n /**\n * 获取倒计时剩余帧数\n */\n private getLeft(): void {\n const { config, frequency } = this;\n let left = config.leftTime! * 1000;\n const end = config.stopTime;\n\n if (!left && end) {\n left = end - new Date().getTime();\n }\n\n this.left = left - (left % frequency);\n }\n\n ngOnInit(): void {\n this.init();\n if (!this.config.demand) {\n this.begin();\n }\n }\n\n ngOnDestroy(): void {\n this.isDestroy = true;\n this.destroy();\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (!changes.config!.firstChange) {\n this.restart();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CountdownComponent } from './countdown.component';\nimport { CountdownTimer } from './countdown.timer';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CountdownTimer],\n declarations: [CountdownComponent],\n exports: [CountdownComponent],\n})\nexport class CountdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;IAQY;AAAZ,WAAY,eAAe;IACzB,mDAAG,CAAA;IACH,uDAAK,CAAA;IACL,qDAAI,CAAA;IACJ,qDAAI,CAAA;AACN,CAAC,EALW,eAAe,KAAf,eAAe;;ACR3B;MAMa,qBAAqB;IAChC,YAAuC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAErD,WAAM,GAAa,KAAK,CAAC;QAEzB,aAAQ,GAAY,CAAC,CAAC;QAEtB,WAAM,GAAY,UAAU,CAAC;QAE7B,aAAQ,GAAY,OAAO,CAAC;QAE5B,eAAU,GAAuB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC7D,OAAO,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;SACjG,CAAA;KAZwD;;kHAD9C,qBAAqB,kBACZ,SAAS;sHADlB,qBAAqB,cADR,MAAM;2FACnB,qBAAqB;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAEnB,MAAM;2BAAC,SAAS;;;MCJlB,cAAc;IAMzB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAL1B,QAAG,GAAuD,EAAE,CAAC;QAC7D,aAAQ,GAAsB,EAAE,CAAC;QACjC,aAAQ,GAAG,CAAC,CAAC;QACb,QAAG,GAAG,KAAK,CAAC;KAEkB;IAEtC,KAAK;QACH,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB,CAAC,CAAC;KACJ;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAG,EAAE,CAAC;SAC1B;QACD,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAEzC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC;QAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;YACtD,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;;YAG1C,IAAI,CAAC,KAAK,SAAS,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAA6B,CAAC,KAAK,CAAC,CAAC;;aAEjD;iBAAM;;gBAEL,SAAS,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gBAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;gBACxC,IAAI,IAAI,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAA6B,CAAC,IAAI,CAAC,CAAC;iBAChD;;gBAGD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,CAAC;aACxC;SACF;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,OAAO;SACR;QAED,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;KACxC;IAED,GAAG,CAAC,EAAc,EAAE,SAAiB;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;SACjB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb;IAED,MAAM,CAAC,EAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvB;YACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb;;2GA5EU,cAAc;+GAAd,cAAc;2FAAd,cAAc;kBAD1B,UAAU;;;MCiCE,kBAAkB;IAsB7B,YAC6B,MAAc,EACjC,KAAqB,EACrB,MAA6B,EAC7B,GAAsB,EACtB,MAAc;QAJK,WAAM,GAAN,MAAM,CAAQ;QACjC,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAuB;QAC7B,QAAG,GAAH,GAAG,CAAmB;QACtB,WAAM,GAAN,MAAM,CAAQ;QA1BhB,cAAS,GAAG,IAAI,CAAC;QACjB,YAAO,GAA+B,EAAE,CAAC;QACzC,WAAM,GAAoB,eAAe,CAAC,GAAG,CAAC;QAC9C,cAAS,GAAG,KAAK,CAAC;QAE1B,MAAC,GAAkB,EAAE,CAAC;QACtB,SAAI,GAAG,CAAC,CAAC;QAaU,UAAK,GAAG,IAAI,YAAY,EAAkB,CAAC;KAQ1D;IAnBJ,IACI,MAAM,CAAC,CAAkB;QAC3B,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAChE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;KAClB;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;;;IAeD,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB;;;;IAKD,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,EAAE;YACxC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KAC3B;;;;IAKD,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,EAAE;YACxC,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACxB;;;;IAKD,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,KAAK,EAAE;YACjF,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB;;;;IAKD,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,KAAK,EAAE;YACjF,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC1B;IAEO,SAAS,CAAC,MAA4B;QAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC;KACvF;IAEO,IAAI;QACV,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,iDACtB,IAAI,qBAAqB,CAAC,MAAM,CAAC,GACjC,MAAM,GACN,IAAI,CAAC,MAAM,CACf,CAAC,CAAC;;QAEH,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC;QAE1E,IAAI,CAAC,OAAO,EAAE,CAAC;;QAGf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,QAAgB,CAAC,EAAE,QAAiB,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAEjG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAY;gBACjC,IAAI,IAAI,GAAG,CAAC,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;iBAClE;gBAED,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;gBACnB,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;aAC3B,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACtB;IAEO,OAAO;QACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;KACb;;;;IAKO,MAAM,CAAC,QAAgB,CAAC,EAAE,QAAiB,KAAK;QACtD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,eAAe,CAAC,GAAG,EAAE;YAC5C,OAAO;SACR;QAED,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;QAC7D,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,KAAK,GAAG,CAAC,CAAC;SACX;QACD,IAAI,CAAC,CAAC,GAAG;YACP,KAAK;YACL,IAAI,EAAE,MAAM,CAAC,UAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,MAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;SAChG,CAAC;QACF,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;YAC3C,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACd,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC1B,CAAC,CAAC;SACJ;QAED,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACd,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;gBACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACxB,CAAC,CAAC;SACJ;KACF;;;;IAKO,OAAO;QACb,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACnC,IAAI,IAAI,GAAG,MAAM,CAAC,QAAS,GAAG,IAAI,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE5B,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE;YAChB,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC;KACvC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;IAED,WAAW;QACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,WAAW,CAAC,OAA6D;QACvE,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,WAAW,EAAE;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;KACF;;+GAtMU,kBAAkB,kBAuBnB,SAAS;mGAvBR,kBAAkB,yMAVnB;;;;;GAKT;2FAKU,kBAAkB;kBAZ9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,WAAW;oBACrB,QAAQ,EAAE;;;;;GAKT;oBACD,IAAI,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE;oBACtC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAwBI,MAAM;2BAAC,SAAS;4JAbf,MAAM;sBADT,KAAK;gBAUG,MAAM;sBAAd,KAAK;gBACa,KAAK;sBAAvB,MAAM;;;MC3CI,eAAe;;4GAAf,eAAe;6GAAf,eAAe,iBAHX,kBAAkB,aAFvB,YAAY,aAGZ,kBAAkB;6GAEjB,eAAe,aAJf,CAAC,cAAc,CAAC,YADlB,CAAC,YAAY,CAAC;2FAKZ,eAAe;kBAN3B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,cAAc,CAAC;oBAC3B,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B;;;ACXD;;;;;;"}
{"version":3,"file":"ngx-countdown.js","sources":["../../lib/src/interfaces.ts","../../lib/src/countdown.timer.ts","../../lib/src/countdown.config.ts","../../lib/src/countdown.component.ts","../../lib/src/countdown.module.ts","../../lib/src/ngx-countdown.ts"],"sourcesContent":["export type CountdownFormatFn = (opt: CountdownFormatFnOption) => string;\n\nexport interface CountdownFormatFnOption {\n date: number;\n formatStr: string;\n timezone?: string;\n}\n\nexport enum CountdownStatus {\n ing,\n pause,\n stop,\n done,\n}\n\nexport interface CountdownConfig {\n /**\n * Start the counter on demand, must call `begin()` to starting, Default: `false`\n */\n demand?: boolean;\n\n /**\n * Calculate the remaining time based on the server, e.g: `10`,`5.5`, (Unit: seconds)\n */\n leftTime?: number;\n\n /**\n * Refers to counting down from local time to end time (Unit: Milliseconds second UNIX timestamp)\n */\n stopTime?: number;\n\n /**\n * Formats a date value, pls refer to [Accepted patterns](https://angular.io/api/common/DatePipe#usage-notes), Default: `HH:mm:ss`\n */\n format?: string;\n\n /**\n * Beautify text, generally used to convert formatted time text into HTML\n */\n prettyText?: (text: string) => string;\n\n /**\n * Should be trigger type `notify` event on the x second. When values is `0` will be trigger every time.\n */\n notify?: number[] | number;\n\n /**\n * Default based on the implementation of `formatDate` in `@angular/common`\n *\n * You can changed to other libs, e.g: [date-fns](https://date-fns.org/v2.0.1/docs/format)\n */\n formatDate?: CountdownFormatFn;\n\n /**\n * A timezone offset (such as '+0430'), or a standard UTC/GMT.\n * When not supplied, uses the end-user's local system timezone, Default: `+0000`\n */\n timezone?: string;\n}\n\nexport type CountdownEventAction = 'start' | 'stop' | 'restart' | 'pause' | 'resume' | 'notify' | 'done';\n\nexport interface CountdownEvent {\n action: CountdownEventAction;\n status: CountdownStatus;\n left: number;\n text: string;\n}\n\nexport interface CountdownItem {\n text?: string;\n value?: number;\n}\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable()\nexport class CountdownTimer {\n private fns: Array<((count: number) => number | void) | number> = [];\n private commands: Array<() => void> = [];\n private nextTime = 0;\n private ing = false;\n\n constructor(private ngZone: NgZone) {}\n\n start(): void {\n if (this.ing === true) {\n return;\n }\n\n this.ing = true;\n this.nextTime = +new Date();\n this.ngZone.runOutsideAngular(() => {\n this.process();\n });\n }\n\n private process(): void {\n while (this.commands.length) {\n this.commands.shift()!();\n }\n let diff = +new Date() - this.nextTime;\n const count = 1 + Math.floor(diff / 100);\n\n diff = 100 - (diff % 100);\n this.nextTime += 100 * count;\n\n for (let i = 0, len = this.fns.length; i < len; i += 2) {\n let frequency = this.fns[i + 1] as number;\n\n // 100/s\n if (0 === frequency) {\n (this.fns[i] as (count: number) => void)(count);\n // 1000/s\n } else {\n // 先把末位至0,再每次加2\n frequency += 2 * count - 1;\n\n const step = Math.floor(frequency / 20);\n if (step > 0) {\n (this.fns[i] as (count: number) => void)(step);\n }\n\n // 把末位还原成1\n this.fns[i + 1] = (frequency % 20) + 1;\n }\n }\n\n if (!this.ing) {\n return;\n }\n\n setTimeout(() => this.process(), diff);\n }\n\n add(fn: () => void, frequency: number): this {\n this.commands.push(() => {\n this.fns.push(fn);\n this.fns.push(frequency === 1000 ? 1 : 0);\n this.ing = true;\n });\n return this;\n }\n\n remove(fn: () => void): this {\n this.commands.push(() => {\n const i = this.fns.indexOf(fn);\n if (i !== -1) {\n this.fns.splice(i, 2);\n }\n this.ing = this.fns.length > 0;\n });\n return this;\n }\n}\n","// tslint:disable: no-inferrable-types\nimport { Injectable, Inject, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { CountdownFormatFn, CountdownConfig } from './interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class CountdownGlobalConfig implements CountdownConfig {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n demand?: boolean = false;\n\n leftTime?: number = 0;\n\n format?: string = 'HH:mm:ss';\n\n timezone?: string = '+0000';\n\n formatDate?: CountdownFormatFn = ({ date, formatStr, timezone }) => {\n return formatDate(new Date(date), formatStr, this.locale, timezone || this.timezone || '+0000');\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n Output,\n EventEmitter,\n OnInit,\n SimpleChange,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Inject,\n LOCALE_ID,\n ChangeDetectorRef,\n TemplateRef,\n NgZone,\n} from '@angular/core';\n\nimport { CountdownConfig, CountdownStatus, CountdownEvent, CountdownEventAction, CountdownItem } from './interfaces';\nimport { CountdownTimer } from './countdown.timer';\nimport { CountdownGlobalConfig } from './countdown.config';\n\n@Component({\n selector: 'countdown',\n 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 `,\n host: { '[class.count-down]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CountdownComponent implements OnInit, OnChanges, OnDestroy {\n private frequency = 1000;\n private _notify: { [key: number]: boolean } = {};\n private status: CountdownStatus = CountdownStatus.ing;\n private isDestroy = false;\n private _config!: CountdownConfig;\n i: CountdownItem = {};\n left = 0;\n\n @Input()\n set config(i: CountdownConfig) {\n if (i.notify != null && !Array.isArray(i.notify) && i.notify > 0) {\n i.notify = [i.notify];\n }\n this._config = i;\n }\n get config(): CountdownConfig {\n return this._config;\n }\n @Input() render!: TemplateRef<void>;\n @Output() readonly event = new EventEmitter<CountdownEvent>();\n\n constructor(\n @Inject(LOCALE_ID) private locale: string,\n private timer: CountdownTimer,\n private defCog: CountdownGlobalConfig,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n ) {}\n\n /**\n * Start countdown, you must manually call when `demand: false`\n */\n begin(): void {\n this.status = CountdownStatus.ing;\n this.callEvent('start');\n }\n\n /**\n * Restart countdown\n */\n restart(): void {\n if (this.status !== CountdownStatus.stop) {\n this.destroy();\n }\n this.init();\n this.callEvent('restart');\n }\n\n /**\n * Stop countdown, must call `restart` when stopped, it's different from pause, unable to recover\n */\n stop(): void {\n if (this.status === CountdownStatus.stop) {\n return;\n }\n this.status = CountdownStatus.stop;\n this.destroy();\n this.callEvent('stop');\n }\n\n /**\n * Pause countdown, you can use `resume` to recover again\n */\n pause(): void {\n if (this.status === CountdownStatus.stop || this.status === CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.pause;\n this.callEvent('pause');\n }\n\n /**\n * Resume countdown\n */\n resume(): void {\n if (this.status === CountdownStatus.stop || this.status !== CountdownStatus.pause) {\n return;\n }\n this.status = CountdownStatus.ing;\n this.callEvent('resume');\n }\n\n private callEvent(action: CountdownEventAction): void {\n this.event.emit({ action, left: this.left, status: this.status, text: this.i.text! });\n }\n\n private init(): void {\n const { locale, defCog } = this;\n const config = (this.config = {\n ...new CountdownGlobalConfig(locale),\n ...defCog,\n ...this.config,\n });\n // tslint:disable-next-line: no-bitwise\n const frq = (this.frequency = ~config.format!.indexOf('S') ? 100 : 1000);\n this.status = config.demand ? CountdownStatus.pause : CountdownStatus.ing;\n\n this.getLeft();\n\n // bind reflow to me\n const _reflow = this.reflow;\n this.reflow = (count: number = 0, force: boolean = false) => _reflow.apply(this, [count, force]);\n\n if (Array.isArray(config.notify)) {\n config.notify.forEach((time: number) => {\n if (time < 1) {\n throw new Error(`The notify config must be a positive integer.`);\n }\n\n time = time * 1000;\n time = time - (time % frq);\n this._notify[time] = true;\n });\n }\n\n this.timer.add(this.reflow, frq).start();\n\n this.reflow(0, true);\n }\n\n private destroy(): this {\n this.timer.remove(this.reflow);\n return this;\n }\n\n /**\n * 更新时钟\n */\n private reflow(count: number = 0, force: boolean = false): void {\n if (this.isDestroy) {\n return;\n }\n\n const { status, config, _notify } = this;\n if (!force && status !== CountdownStatus.ing) {\n return;\n }\n\n let value = (this.left = this.left - this.frequency * count);\n if (value < 1) {\n value = 0;\n }\n this.i = {\n value,\n text: config.formatDate!({ date: value, formatStr: config.format!, timezone: config.timezone }),\n };\n if (typeof config.prettyText === 'function') {\n this.i.text = config.prettyText(this.i.text!);\n }\n this.cdr.detectChanges();\n\n if (config.notify === 0 || _notify[value]) {\n this.ngZone.run(() => {\n this.callEvent('notify');\n });\n }\n\n if (value === 0) {\n this.ngZone.run(() => {\n this.status = CountdownStatus.done;\n this.destroy();\n this.callEvent('done');\n });\n }\n }\n\n /**\n * 获取倒计时剩余帧数\n */\n private getLeft(): void {\n const { config, frequency } = this;\n let left = config.leftTime! * 1000;\n const end = config.stopTime;\n\n if (!left && end) {\n left = end - new Date().getTime();\n }\n\n this.left = left - (left % frequency);\n }\n\n ngOnInit(): void {\n this.init();\n if (!this.config.demand) {\n this.begin();\n }\n }\n\n ngOnDestroy(): void {\n this.isDestroy = true;\n this.destroy();\n }\n\n ngOnChanges(changes: { [P in keyof this]?: SimpleChange } & SimpleChanges): void {\n if (!changes.config!.firstChange) {\n this.restart();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CountdownComponent } from './countdown.component';\nimport { CountdownTimer } from './countdown.timer';\n\n@NgModule({\n imports: [CommonModule],\n providers: [CountdownTimer],\n declarations: [CountdownComponent],\n exports: [CountdownComponent],\n})\nexport class CountdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
/**
* Generated bundle index. Do not edit.
*/
/// <amd-module name="ngx-countdown" />
export * from './public_api';
{
"name": "ngx-countdown",
"version": "12.0.0",
"version": "12.0.1",
"description": "Simple, easy and performance countdown for angular",

@@ -29,2 +29,3 @@ "keywords": [

"typings": "ngx-countdown.d.ts",
"metadata": "ngx-countdown.metadata.json",
"sideEffects": false,

@@ -31,0 +32,0 @@ "dependencies": {