JSFiddle - React, Tailwind, and code Playground

HTML

<div id="timer"></div>

JavaScript

function miniTimer(s,callback,opt){ 
    function getParam(value,defaultValue){
        return typeof value == 'undefined' ? defaultValue : value;
    }
    this.s = getParam(s,0);
    this.callback = getParam(callback,null);// a callback function that takes the current time in seconds as the first parameter and the formated time as the second
    var opt = getParam(opt,{});
    this.settings = {
        masterCallback : getParam(opt.masterCallback,null),// same as above, but this one is called when the miniTimer finishes it's work (if maxPaceDuration or limitValue is set)
        autoplay : getParam(opt.autoplay,false),
        limitValue : getParam(opt.limitValue,null),
        maxPaceCount : getParam(opt.maxPaceCount,null),
        paceDuration : getParam(opt.paceDuration,1000),//milisec,
        paceValue : getParam(opt.paceValue,1)//increment with only one second; set to -1 to countdown
    };
    this.interval = 0; 
    this.paceCount = 0;
    if(this.settings.autoplay)
        this.start();
    return this;
} 
miniTimer.prototype = { 
    toString : function(){
        var d = Math.floor(this.s / (24 * 3600)); 
        var h = Math.floor((this.s - d* 24 * 3600) / 3600); 
        var m = Math.floor((this.s - d* 24 * 3600 - h * 3600) / 60); 
        var s = this.s % 60; 
        if(h <= 9 && h >= 0) 
            h = "0"+h; 
        if(m <= 9 && m >= 0) 
            m = "0"+m; 
        if(s <= 9 && s >= 0) 
            s = "0"+s; 
        var day = d != 1 ? "days" : "day";
        return d+" "+day+" "+h+":"+m+":"+s;
    }, 
    nextPace : function(){ 
        if((this.settings.maxPaceCount != null && this.settings.maxPaceCount <= this.paceCount) 
            || (this.settings.limitValue != null && this.settings.limitValue == this.s))
            {
                this.stop();
                if(this.settings.masterCallback != null)
                    this.settings.masterCallback(this.s,this.toString());
                return;
            }
       ...