UNPKG

@junte/ui

Version:

Quality Angular UI components kit

149 lines 14.3 kB
import { __decorate, __metadata } from "tslib"; import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core'; import { BehaviorSubject, combineLatest } from 'rxjs'; import { MethodApi, PropertyApi } from '../../core/decorators/api'; import { UI } from '../../core/enums/ui'; export const SECONDS_IN_MINUTE = 60; export const SECONDS_IN_HOUR = 3600; export const HOURS_IN_DAY = 24; let TimerComponent = class TimerComponent { constructor() { this.ui = UI; this.remains = 0; this.counter = { days: 0, hours: 0, minutes: 0, seconds: 0 }; this.days$ = new BehaviorSubject(0); this.hours$ = new BehaviorSubject(0); this.minutes$ = new BehaviorSubject(0); this.seconds$ = new BehaviorSubject(0); this.host = 'jnt-timer-host'; this.tick = new EventEmitter(); this.finished = new EventEmitter(); } set days(days) { this.days$.next(days); } get days() { return this.days$.getValue(); } set hours(hours) { this.hours$.next(hours); } get hours() { return this.hours$.getValue(); } set minutes(minutes) { this.minutes$.next(minutes); } get minutes() { return this.minutes$.getValue(); } set seconds(seconds) { this.seconds$.next(seconds); } get seconds() { return this.seconds$.getValue(); } pause() { clearInterval(this.timer); this.timer = null; } reset() { this.remains = this.days * SECONDS_IN_HOUR * HOURS_IN_DAY + this.hours * SECONDS_IN_HOUR + this.minutes * SECONDS_IN_MINUTE + this.seconds; this.start(); } ngOnInit() { combineLatest([this.days$, this.hours$, this.minutes$, this.seconds$]) .subscribe(() => { this.remains = this.days * SECONDS_IN_HOUR * HOURS_IN_DAY + this.hours * SECONDS_IN_HOUR + this.minutes * SECONDS_IN_MINUTE + this.seconds; this.start(); }); } start() { if (!!this.timer) { return; } this.pause(); this.timer = setInterval(() => { if (this.remains >= 0) { this.counter.days = Math.floor((this.remains / SECONDS_IN_HOUR) / HOURS_IN_DAY); this.counter.hours = Math.floor((this.remains / SECONDS_IN_HOUR) % HOURS_IN_DAY); this.counter.minutes = Math.floor((this.remains / SECONDS_IN_MINUTE) % SECONDS_IN_MINUTE); this.counter.seconds = Math.floor(this.remains % SECONDS_IN_MINUTE); this.remains--; } else { this.pause(); this.finished.emit(); } }, 1000); } }; __decorate([ HostBinding('attr.host'), __metadata("design:type", Object) ], TimerComponent.prototype, "host", void 0); __decorate([ PropertyApi({ description: 'Days count', type: 'number', }), Input(), __metadata("design:type", Number), __metadata("design:paramtypes", [Number]) ], TimerComponent.prototype, "days", null); __decorate([ PropertyApi({ description: 'Hours count', type: 'number', }), Input(), __metadata("design:type", Number), __metadata("design:paramtypes", [Number]) ], TimerComponent.prototype, "hours", null); __decorate([ PropertyApi({ description: 'Minutes count', type: 'number', }), Input(), __metadata("design:type", Number), __metadata("design:paramtypes", [Number]) ], TimerComponent.prototype, "minutes", null); __decorate([ PropertyApi({ description: 'Seconds count', type: 'number', }), Input(), __metadata("design:type", Number), __metadata("design:paramtypes", [Number]) ], TimerComponent.prototype, "seconds", null); __decorate([ Output(), __metadata("design:type", Object) ], TimerComponent.prototype, "tick", void 0); __decorate([ Output(), __metadata("design:type", Object) ], TimerComponent.prototype, "finished", void 0); __decorate([ MethodApi({ description: 'Pause timer' }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], TimerComponent.prototype, "pause", null); __decorate([ MethodApi({ description: 'Reset timer' }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], TimerComponent.prototype, "reset", null); TimerComponent = __decorate([ Component({ selector: 'jnt-timer', template: "{{counter.days}}:{{counter.hours}}:{{counter.minutes}}:{{counter.seconds}}\n", styles: [""] }) ], TimerComponent); export { TimerComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGp1bnRlL3VpLyIsInNvdXJjZXMiOlsibGliL2R5bmFtaWMvdGltZXIvdGltZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVN6QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDcEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBTy9CLElBQWEsY0FBYyxHQUEzQixNQUFhLGNBQWM7SUFBM0I7UUFFRSxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUVaLFlBQU8sR0FBWSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQztRQUV2RCxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFZixTQUFJLEdBQUcsZ0JBQWdCLENB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QUFTLENBQUMsRUFBQyxXQUFXLEVBQUUsYUFBYSxFQUFDLENBQUM7Ozs7MkNBSXZDO0FBM0VVLGNBQWM7SUFMMUIsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLFdBQVc7UUFDckIsd0ZBQXFDOztLQUV0QyxDQUFDO0dBQ1csY0FBYyxDQTBHMUI7U0ExR1ksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1ldGhvZEFwaSwgUHJvcGVydHlBcGkgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMvYXBpJztcbmltcG9ydCB7IFVJIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy91aSc7XG5cbnR5cGUgQ291bnRlciA9IHtcbiAgZGF5czogbnVtYmVyLFxuICBob3VyczogbnVtYmVyLFxuICBtaW51dGVzOiBudW1iZXIsXG4gIHNlY29uZHM6IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgU0VDT05EU19JTl9NSU5VVEUgPSA2MDtcbmV4cG9ydCBjb25zdCBTRUNPTkRTX0lOX0hPVVIgPSAzNjAwO1xuZXhwb3J0IGNvbnN0IEhPVVJTX0lOX0RBWSA9IDI0O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqbnQtdGltZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICB1aSA9IFVJO1xuICByZW1haW5zID0gMDtcbiAgdGltZXI6IGFueTtcbiAgY291bnRlcjogQ291bnRlciA9IHtkYXlzOiAwLCBob3VyczogMCwgbWludXRlczogMCwgc2Vjb25kczogMH07XG5cbiAgcHJpdmF0ZSBkYXlzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBob3VycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgbWludXRlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgc2Vjb25kcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmhvc3QnKSByZWFkb25seSBob3N0ID0gJ2pudC10aW1lci1ob3N0JztcblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnRGF5cyBjb3VudCcsXG4gICAgdHlwZTogJ251bWJlcicsXG4gIH0pXG4gIEBJbnB1dCgpIHNldCBkYXlzKGRheXM6IG51bWJlcikge1xuICAgIHRoaXMuZGF5cyQubmV4dChkYXlzKTtcbiAgfVxuXG4gIGdldCBkYXlzKCkge1xuICAgIHJldHVybiB0aGlzLmRheXMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnSG91cnMgY291bnQnLFxuICAgIHR5cGU6ICdudW1iZXInLFxuICB9KVxuICBASW5wdXQoKSBzZXQgaG91cnMoaG91cnM6IG51bWJlcikge1xuICAgIHRoaXMuaG91cnMkLm5leHQoaG91cnMpO1xuICB9XG5cbiAgZ2V0IGhvdXJzKCkge1xuICAgIHJldHVybiB0aGlzLmhvdXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ01pbnV0ZXMgY291bnQnLFxuICAgIHR5cGU6ICdudW1iZXInLFxuICB9KVxuICBASW5wdXQoKSBzZXQgbWludXRlcyhtaW51dGVzOiBudW1iZXIpIHtcbiAgICB0aGlzLm1pbnV0ZXMkLm5leHQobWludXRlcyk7XG4gIH1cblxuICBnZXQgbWludXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5taW51dGVzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ1NlY29uZHMgY291bnQnLFxuICAgIHR5cGU6ICdudW1iZXInLFxuICB9KVxuICBASW5wdXQoKSBzZXQgc2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlY29uZHMkLm5leHQoc2Vjb25kcyk7XG4gIH1cblxuICBnZXQgc2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQE91dHB1dCgpIHRpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZpbmlzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE1ldGhvZEFwaSh7ZGVzY3JpcHRpb246ICdQYXVzZSB0aW1lcid9KVxuICBwYXVzZSgpIHtcbiAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgIHRoaXMudGltZXIgPSBudWxsO1xuICB9XG5cbiAgQE1ldGhvZEFwaSh7ZGVzY3JpcHRpb246ICdSZXNldCB0aW1lcid9KVxuICByZXNldCgpIHtcbiAgICB0aGlzLnJlbWFpbnMgPSB0aGlzLmRheXMgKiBTRUNPTkRTX0lOX0hPVVIgKiBIT1VSU19JTl9EQVkgKyB0aGlzLmhvdXJzICogU0VDT05EU19JTl9IT1VSICsgdGhpcy5taW51dGVzICogU0VDT05EU19JTl9NSU5VVEUgKyB0aGlzLnNlY29uZHM7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5kYXlzJCwgdGhpcy5ob3VycyQsIHRoaXMubWludXRlcyQsIHRoaXMuc2Vjb25kcyRdKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtYWlucyA9IHRoaXMuZGF5cyAqIFNFQ09ORFNfSU5fSE9VUiAqIEhPVVJTX0lOX0RBWSArIHRoaXMuaG91cnMgKiBTRUNPTkRTX0lOX0hPVVIgKyB0aGlzLm1pbnV0ZXMgKiBTRUNPTkRTX0lOX01JTlVURSArIHRoaXMuc2Vjb25kcztcbiAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBzdGFydCgpIHtcbiAgICBpZiAoISF0aGlzLnRpbWVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5yZW1haW5zID49IDApIHtcbiAgICAgICAgdGhpcy5jb3VudGVyLmRheXMgPSBNYXRoLmZsb29yKCh0aGlzLnJlbWFpbnMgLyBTRUNPTkRTX0lOX0hPVVIpIC8gSE9VUlNfSU5fREFZKTtcbiAgICAgICAgdGhpcy5jb3VudGVyLmhvdXJzID0gTWF0aC5mbG9vcigodGhpcy5yZW1haW5zIC8gU0VDT05EU19JTl9IT1VSKSAlIEhPVVJTX0lOX0RBWSk7XG4gICAgICAgIHRoaXMuY291bnRlci5taW51dGVzID0gTWF0aC5mbG9vcigodGhpcy5yZW1haW5zIC8gU0VDT05EU19JTl9NSU5VVEUpICUgU0VDT05EU19JTl9NSU5VVEUpO1xuICAgICAgICB0aGlzLmNvdW50ZXIuc2Vjb25kcyA9IE1hdGguZmxvb3IodGhpcy5yZW1haW5zICUgU0VDT05EU19JTl9NSU5VVEUpO1xuICAgICAgICB0aGlzLnJlbWFpbnMtLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGF1c2UoKTtcbiAgICAgICAgdGhpcy5maW5pc2hlZC5lbWl0KCk7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuXG59XG4iXX0=