UNPKG

qcobjects

Version:

QCObjects is an Open-source framework that empowers full-stack developers to make micro-services and micro-frontends into an N-Tier architecture.

43 lines (30 loc) 991 B
import { ITimer, TTimerParams } from "types"; import { InheritClass } from "./InheritClass"; import { Package } from "./Package"; export class Timer extends InheritClass implements ITimer { duration = 1000; alive = true; thread({ timing, intervalInterceptor, duration }:TTimerParams):void { const timer = this; const start = performance.now(); requestAnimationFrame(function thread(time) { // timeFraction goes from 0 to 1 const elapsed = (time - start); let timeFraction = elapsed / duration; if (timeFraction > 1) timeFraction = 1; // calculate the current progress state const progress = timing(timeFraction, elapsed); intervalInterceptor(Math.round(progress * 100)); // draw it if ((timeFraction < 1 || duration === -1) && timer.alive) { requestAnimationFrame(thread); } }); } } Package("com.qcobjects.timing", [ Timer ]);