countdown-pro
Version:
A simple countdown.
3 lines (2 loc) • 2.78 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).CountDown=e()}(this,(function(){"use strict";function t(t,e){void 0===e&&(e=2);for(var i=""+t;i.length<e;)i="0"+i;return i}var e=1e3,i=60*e,n=60*i,s=24*n,r=Math.floor;function o(t){return{days:r(t/s),hours:r(t%s/n),minutes:r(t%n/i),seconds:r(t%i/e),milliseconds:r(t%e)}}function u(e,i){var n=i.days,s=i.hours,r=i.minutes,o=i.seconds,u=i.milliseconds;return-1===e.indexOf("DD")?s+=24*n:e=e.replace("DD",t(n)),-1===e.indexOf("HH")?r+=60*s:e=e.replace("HH",t(s)),-1===e.indexOf("mm")?o+=60*r:e=e.replace("mm",t(r)),-1===e.indexOf("ss")?u+=1e3*o:e=e.replace("ss",t(o)),e.replace("SSS",t(u,3))}function a(t,e){return void 0===e&&(e="HH:mm:ss"),u(e,o(t))}var h=function(){};return function(){function e(t){this.options=this.o={onChange:h,onEnd:h,interval:1e3,time:0,adjustInterval:0},this.updateOptions(t),this.timer=null,this.counting=!1,this.completed=!1,this.currentTime=this.o.time,this.adjustStartTime=0,this.adjustCurrentTime=0,this.adjustTimer=null}return e.prototype._handleEnd=function(){clearInterval(this.adjustTimer),this.counting=!1,this.completed=!0,this.o.onEnd()},e.prototype.updateOptions=function(t){if("object"==typeof t)for(var e in t)void 0!==t[e]&&(this.o[e]=t[e]);("number"!=typeof this.o.time||this.o.time<0)&&(this.o.time=0),("number"!=typeof this.o.interval||this.o.interval<0)&&(this.o.interval=1e3)},e.prototype.start=function(){var t=this;this.counting||this.completed||(this.adjustStartTime=Date.now(),this.adjustCurrentTime=this.currentTime,this.o.adjustInterval>0&&(this.adjustTimer=setInterval((function(){t.adjustTime()}),this.o.adjustInterval)),this.counting=!0,this.tick())},e.prototype.adjustTime=function(){if(this.counting){var t=Date.now()-this.adjustStartTime,e=Math.round(t/this.o.interval)*this.o.interval,i=this.adjustCurrentTime-e;i>=0&&this.currentTime!==i&&(this.pause(),this.currentTime=i,this.o.onChange(this.currentTime),0===this.currentTime?this._handleEnd():this.start())}},e.prototype.pause=function(){this.counting&&(clearTimeout(this.timer),clearInterval(this.adjustTimer),this.counting=!1)},e.prototype.reset=function(){this.pause(),this.completed=!1,this.currentTime!==this.o.time&&(this.currentTime=this.o.time,this.o.onChange(this.currentTime))},e.prototype.restart=function(){this.reset(),this.start()},e.prototype.tick=function(){var t=this,e=this.o.interval;this.timer=setTimeout((function(){t.currentTime-=e,t.currentTime<0&&(t.currentTime=0),t.o.onChange(t.currentTime),0===t.currentTime?t._handleEnd():t.tick()}),e)},e.format=a,e.parseTimeData=o,e.parseFormat=u,e.padZero=t,e}()}));
//# sourceMappingURL=countdown.umd.min.js.map