{"version":3,"sources":["countdown.js"],"names":["Countdown","resolution","message","year","month","day","hour","minutes","resolutions","target","Date","current","includes","Error","e","console","warn","document","getElementById","element","container","createElement","classList","add","timer","mess","innerHTML","appendChild","intervalID","setInterval","tick","remove","error","prototype","stop","clearInterval","targetTimestamp","getTime","now","diff","days","Math","floor","hours","seconds","inner","dtext","parseInt","innerText"],"mappings":"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","sourcesContent":["function Countdown (resolution, message, year, month, day, hour = 0, minutes = 0) {\r\n const resolutions = ['day', 'hour', 'minute', 'second']\r\n this.message = message\r\n this.target = new Date(year, month, day, hour, minutes)\r\n this.current = ''\r\n try {\r\n if (resolutions.includes(resolution)) {\r\n this.resolution = resolution\r\n } else {\r\n throw new Error('resolution scope of ' + resolution + 'does not exist')\r\n }\r\n } catch (e) {\r\n console.warn(e.message)\r\n this.resolution = 'minute'\r\n }\r\n\r\n try {\r\n if (document.getElementById('countdown')) {\r\n this.element = document.getElementById('countdown')\r\n this.container = document.createElement('div')\r\n this.container.classList.add('countdown__text')\r\n this.container.classList.add('not-ready')\r\n const timer = document.createElement('span')\r\n const mess = document.createElement('span')\r\n timer.classList.add('countdown__timer')\r\n mess.classList.add('countdown__message')\r\n mess.innerHTML = this.message\r\n this.container.appendChild(timer)\r\n this.container.appendChild(mess)\r\n this.element.appendChild(this.container)\r\n this.intervalID = setInterval(this.tick, 1000, this.target, this.resolution, timer)\r\n this.container.classList.remove('not-ready')\r\n } else {\r\n throw new Error('no target element found, not creating timer')\r\n }\r\n } catch (e) {\r\n console.error(e.message)\r\n }\r\n}\r\nCountdown.prototype.stop = function () {\r\n clearInterval(this.intervalID)\r\n}\r\n\r\nCountdown.prototype.tick = function (target, resolution, element) {\r\n const targetTimestamp = target.getTime()\r\n const now = new Date().getTime()\r\n\r\n const diff = targetTimestamp - now\r\n\r\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\r\n const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))\r\n const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))\r\n const seconds = Math.floor((diff % (1000 * 60)) / 1000)\r\n\r\n if (diff <= 0) {\r\n this.stop()\r\n element.remove()\r\n return\r\n }\r\n\r\n let inner = ''\r\n\r\n if (days !== 0) {\r\n const dtext = days === 1 ? 'Day ' : 'Days '\r\n inner += parseInt(days) + ' ' + dtext\r\n }\r\n\r\n if (resolution !== 'day' && hours !== 0) {\r\n inner += parseInt(hours) + 'h '\r\n };\r\n\r\n if (resolution !== 'day' && resolution !== 'hour' && minutes !== 0) {\r\n inner += parseInt(minutes) + 'm '\r\n };\r\n\r\n if (resolution === 'second') {\r\n inner += parseInt(seconds) + 's '\r\n };\r\n\r\n if (inner === this.current) {\r\n return\r\n } else {\r\n this.current = inner\r\n element.innerText = inner\r\n }\r\n}\r\n"],"file":"countdown.js"}