kwikui
Version:
KwikID's UI Component Library in Angular
62 lines • 7.57 kB
JavaScript
import { Injectable } from "@angular/core";
import { BehaviorSubject } from "rxjs";
import { EKwikUIButtonApiCallTimerType } from "./button-api-call.definitions";
import * as i0 from "@angular/core";
export class KwikUIButtonApiCallTimerService {
constructor() {
this.timerSource = new BehaviorSubject(null);
this.timer$ = this.timerSource.asObservable();
this.stopTimerSource = new BehaviorSubject(false);
this.stopTimer$ = this.stopTimerSource.asObservable();
}
startTimer({ maxTime = 0, timerChangeType, timerStep = 1 }) {
if (maxTime <= 0 ||
typeof maxTime !== "number" ||
typeof timerStep !== "number") {
this.stopTimer();
return;
}
this.stopTimerSource.next(false);
if (timerChangeType == EKwikUIButtonApiCallTimerType.INCREMENT) {
let currentTime = 0;
this.timerInterval = setInterval(() => {
if (currentTime >= maxTime) {
this.stopTimer();
}
else {
currentTime += timerStep;
this.timerSource.next(String(currentTime));
}
}, timerStep * 1000);
}
else if (timerChangeType == EKwikUIButtonApiCallTimerType.DECREMENT) {
let currentTime = maxTime;
this.timerInterval = setInterval(() => {
if (currentTime <= 0) {
this.stopTimer();
}
else {
currentTime -= timerStep;
this.timerSource.next(String(currentTime));
}
}, timerStep * 1000);
}
else {
this.stopTimer();
}
}
stopTimer() {
clearInterval(this.timerInterval);
this.timerSource.next(undefined);
this.stopTimerSource.next(true);
}
}
/** @nocollapse */ KwikUIButtonApiCallTimerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonApiCallTimerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ KwikUIButtonApiCallTimerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonApiCallTimerService, providedIn: "root" });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonApiCallTimerService, decorators: [{
type: Injectable,
args: [{
providedIn: "root"
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWFwaS1jYWxsLnRpbWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lrdWkvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS9idXR0b24tYXBpLWNhbGwvYnV0dG9uLWFwaS1jYWxsLnRpbWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCw2QkFBNkIsRUFFOUIsTUFBTSwrQkFBK0IsQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLCtCQUErQjtJQUg1QztRQUlVLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLENBQUM7UUFFeEQsV0FBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFakMsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU5RCxlQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQWlEbEQ7SUE3Q0MsVUFBVSxDQUFDLEVBQ1QsT0FBTyxHQUFHLENBQUMsRUFDWCxlQUFlLEVBQ2YsU0FBUyxHQUFHLENBQUMsRUFDYTtRQUMxQixJQUNFLE9BQU8sSUFBSSxDQUFDO1lBQ1osT0FBTyxPQUFPLEtBQUssUUFBUTtZQUMzQixPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQzdCO1lBQ0EsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksZUFBZSxJQUFJLDZCQUE2QixDQUFDLFNBQVMsRUFBRTtZQUM5RCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNwQyxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsV0FBVyxJQUFJLFNBQVMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQzVDO1lBQ0gsQ0FBQyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUN0QjthQUFNLElBQUksZUFBZSxJQUFJLDZCQUE2QixDQUFDLFNBQVMsRUFBRTtZQUNyRSxJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNwQyxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsV0FBVyxJQUFJLFNBQVMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7aUJBQzVDO1lBQ0gsQ0FBQyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUN0QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O2dKQXZEVSwrQkFBK0I7b0pBQS9CLCtCQUErQixjQUY5QixNQUFNOzRGQUVQLCtCQUErQjtrQkFIM0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1xuICBFS3dpa1VJQnV0dG9uQXBpQ2FsbFRpbWVyVHlwZSxcbiAgVEt3aWtVSUJ1dHRvbkFwaUNhbGxUaW1lclxufSBmcm9tIFwiLi9idXR0b24tYXBpLWNhbGwuZGVmaW5pdGlvbnNcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBLd2lrVUlCdXR0b25BcGlDYWxsVGltZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0aW1lclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcblxuICB0aW1lciQgPSB0aGlzLnRpbWVyU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgc3RvcFRpbWVyU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgc3RvcFRpbWVyJCA9IHRoaXMuc3RvcFRpbWVyU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgdGltZXJJbnRlcnZhbDogYW55O1xuXG4gIHN0YXJ0VGltZXIoe1xuICAgIG1heFRpbWUgPSAwLFxuICAgIHRpbWVyQ2hhbmdlVHlwZSxcbiAgICB0aW1lclN0ZXAgPSAxXG4gIH06IFRLd2lrVUlCdXR0b25BcGlDYWxsVGltZXIpIHtcbiAgICBpZiAoXG4gICAgICBtYXhUaW1lIDw9IDAgfHxcbiAgICAgIHR5cGVvZiBtYXhUaW1lICE9PSBcIm51bWJlclwiIHx8XG4gICAgICB0eXBlb2YgdGltZXJTdGVwICE9PSBcIm51bWJlclwiXG4gICAgKSB7XG4gICAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcFRpbWVyU291cmNlLm5leHQoZmFsc2UpO1xuICAgIGlmICh0aW1lckNoYW5nZVR5cGUgPT0gRUt3aWtVSUJ1dHRvbkFwaUNhbGxUaW1lclR5cGUuSU5DUkVNRU5UKSB7XG4gICAgICBsZXQgY3VycmVudFRpbWUgPSAwO1xuICAgICAgdGhpcy50aW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudFRpbWUgPj0gbWF4VGltZSkge1xuICAgICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFRpbWUgKz0gdGltZXJTdGVwO1xuICAgICAgICAgIHRoaXMudGltZXJTb3VyY2UubmV4dChTdHJpbmcoY3VycmVudFRpbWUpKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGltZXJTdGVwICogMTAwMCk7XG4gICAgfSBlbHNlIGlmICh0aW1lckNoYW5nZVR5cGUgPT0gRUt3aWtVSUJ1dHRvbkFwaUNhbGxUaW1lclR5cGUuREVDUkVNRU5UKSB7XG4gICAgICBsZXQgY3VycmVudFRpbWUgPSBtYXhUaW1lO1xuICAgICAgdGhpcy50aW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudFRpbWUgPD0gMCkge1xuICAgICAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFRpbWUgLT0gdGltZXJTdGVwO1xuICAgICAgICAgIHRoaXMudGltZXJTb3VyY2UubmV4dChTdHJpbmcoY3VycmVudFRpbWUpKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGltZXJTdGVwICogMTAwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgfVxuICB9XG5cbiAgc3RvcFRpbWVyKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lckludGVydmFsKTtcbiAgICB0aGlzLnRpbWVyU291cmNlLm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnN0b3BUaW1lclNvdXJjZS5uZXh0KHRydWUpO1xuICB9XG59XG4iXX0=