{"version":3,"file":"./modules/Countdown-Countdown.xxxxxxxx.js","mappings":"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","sources":["webpack:///./modules/Countdown/Countdown.ts"],"sourcesContent":["import { addClasses, removeClasses } from \"../../helpers/DOMHelpers\";\r\nimport { createCountdownColonElement, createCountdownTimeUnitElement } from \"../../libs/markUpCreator\";\r\n\r\nconst moduleSelector = '[data-module=\"Countdown\"]';\r\n\r\nenum TimeUnits {\r\n weeks = \"weeks\",\r\n days = \"days\",\r\n hours = \"hours\",\r\n minutes = \"minutes\",\r\n seconds = \"seconds\"\r\n}\r\n\r\nenum CountdownFormats {\r\n days = \"days\",\r\n weeks = \"weeks\",\r\n hoursMinutesSeconds = \"hoursMinutesSeconds\"\r\n}\r\n\r\nexport default class Countdown {\r\n targetDateTime: Date;\r\n\r\n weeksToTarget: number;\r\n daysToTarget: number;\r\n hoursToTarget: number;\r\n minutesToTarget: number;\r\n secondsToTarget: number;\r\n\r\n currentCountdownFormat: CountdownFormats;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Countdown(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement) {\r\n this.init();\r\n }\r\n\r\n private init() {\r\n this.targetDateTime = this.getTargetDateTime();\r\n if (!this.targetDateTime) return;\r\n\r\n this.initTimeToTarget()\r\n this.initCountdownFormat();\r\n this.createTimeElements();\r\n\r\n this.startCountdown();\r\n }\r\n\r\n private getTargetDateTime() {\r\n let utcTime = this.element.getAttribute(\"data-target-datetime\");\r\n if (!utcTime) return;\r\n\r\n const localDateTime = new Date(utcTime);\r\n return localDateTime;\r\n }\r\n\r\n private initTimeToTarget() {\r\n this.updateWeeksToTarget();\r\n this.updateDaysToTarget();\r\n this.updateHoursMinutesSecondsToTarget();\r\n }\r\n\r\n private initCountdownFormat() {\r\n const format = this.element.getAttribute('data-format');\r\n this.currentCountdownFormat = CountdownFormats[format] ? CountdownFormats[format] : CountdownFormats.hoursMinutesSeconds;\r\n this.updateCurrentCountdownFormat();\r\n }\r\n\r\n private createTimeElements() {\r\n if (this.currentCountdownFormat == CountdownFormats.weeks && this.weeksToTarget > 0) {\r\n this.createWeeksElement();\r\n return;\r\n }\r\n if (this.currentCountdownFormat == CountdownFormats.days && this.daysToTarget > 0) {\r\n this.createDaysElement();\r\n return;\r\n }\r\n this.createHoursMinutesSecondsElement();\r\n }\r\n\r\n private startCountdown() {\r\n const interval = setInterval(() => {\r\n this.countdown(interval);\r\n }, 1000);\r\n }\r\n\r\n private getMsToTarget() {\r\n const now = new Date();\r\n return this.targetDateTime.getTime() - now.getTime();\r\n }\r\n\r\n private updateDaysToTarget() {\r\n this.daysToTarget = this.getTimeToTargetIn(TimeUnits.days);\r\n }\r\n\r\n private updateWeeksToTarget() {\r\n this.weeksToTarget = this.getTimeToTargetIn(TimeUnits.weeks);\r\n }\r\n\r\n private updateHoursMinutesSecondsToTarget() {\r\n this.hoursToTarget = this.getTimeToTargetIn(TimeUnits.hours);\r\n this.minutesToTarget = this.getTimeToTargetIn(TimeUnits.minutes);\r\n this.secondsToTarget = this.getTimeToTargetIn(TimeUnits.seconds);\r\n }\r\n\r\n private updateCurrentCountdownFormat() {\r\n if (this.currentCountdownFormat == CountdownFormats.weeks && this.weeksToTarget < 1) {\r\n this.currentCountdownFormat = CountdownFormats.days;\r\n this.removeCountdownTimeUnitElement(TimeUnits.weeks);\r\n this.createDaysElement();\r\n }\r\n if (this.currentCountdownFormat == CountdownFormats.days && this.daysToTarget < 1) {\r\n this.currentCountdownFormat = CountdownFormats.hoursMinutesSeconds;\r\n this.removeCountdownTimeUnitElement(TimeUnits.days);\r\n this.createHoursMinutesSecondsElement();\r\n }\r\n }\r\n\r\n private removeCountdownTimeUnitElement(unit: TimeUnits) {\r\n const timeUnitElement = this.element.querySelector(\".nx-countdown__time-unit-\" + unit);\r\n if (timeUnitElement) {\r\n const parent = timeUnitElement.closest(\".nx-countdown__time\");\r\n parent?.remove();\r\n }\r\n }\r\n\r\n private createHoursMinutesSecondsElement() {\r\n this.createHoursElement();\r\n this.createMinutesElement();\r\n this.createSecondsElement();\r\n }\r\n\r\n private createWeeksElement() {\r\n const weeksElement = createCountdownTimeUnitElement(TimeUnits.weeks, this.weeksToTarget.toString(), this.element.getAttribute('data-weeks-label'));\r\n const parent = this.element.querySelector(\".nx-countdown__time-container\");\r\n parent?.appendChild(weeksElement);\r\n }\r\n\r\n private createDaysElement() {\r\n const element = this.element.querySelector(\".nx-countdown__time-unit-\" + TimeUnits.days);\r\n if (!element) {\r\n const daysElement = createCountdownTimeUnitElement(TimeUnits.days, this.daysToTarget.toString(), this.element.getAttribute('data-days-label'));\r\n this.element.querySelector(\".nx-countdown__time-container\")?.appendChild(daysElement);\r\n }\r\n }\r\n\r\n private createHoursElement() {\r\n const hoursElement = this.element.querySelector(\".nx-countdown__time-unit-\" + TimeUnits.hours);\r\n if (!hoursElement) {\r\n const parent = this.element.querySelector(\".nx-countdown__time-container\");\r\n parent?.appendChild(createCountdownTimeUnitElement(TimeUnits.hours, this.getTimeStringWithPreZero(this.hoursToTarget), this.element.getAttribute('data-hours-label')));\r\n parent?.appendChild(createCountdownColonElement(TimeUnits.hours));\r\n }\r\n }\r\n\r\n private createMinutesElement() {\r\n const minutesElement = this.element.querySelector(\".nx-countdown__time-unit-\" + TimeUnits.minutes);\r\n if (!minutesElement) {\r\n const parent = this.element.querySelector(\".nx-countdown__time-container\");\r\n parent?.appendChild(createCountdownTimeUnitElement(TimeUnits.minutes, this.getTimeStringWithPreZero(this.minutesToTarget), this.element.getAttribute('data-minutes-label')));\r\n parent?.appendChild(createCountdownColonElement(TimeUnits.minutes));\r\n }\r\n }\r\n\r\n private createSecondsElement() {\r\n const secondsElement = this.element.querySelector(\".nx-countdown__time-unit-\" + TimeUnits.seconds);\r\n if (!secondsElement) {\r\n const parent = this.element.querySelector(\".nx-countdown__time-container\");\r\n parent?.appendChild(createCountdownTimeUnitElement(TimeUnits.seconds, this.getTimeStringWithPreZero(this.secondsToTarget), this.element.getAttribute('data-seconds-label')));\r\n }\r\n }\r\n\r\n private getTimeToTargetIn(unit: TimeUnits) {\r\n const msToTarget = this.getMsToTarget();\r\n\r\n switch (unit) {\r\n case TimeUnits.weeks: {\r\n const weeks = Math.floor(msToTarget / (1000 * 60 * 60 * 24 * 7));\r\n return weeks >= 0 ? weeks : 0;\r\n }\r\n case TimeUnits.days: {\r\n const days = Math.floor(msToTarget / (1000 * 60 * 60 * 24));\r\n return days >= 0 ? days : 0;\r\n }\r\n case TimeUnits.hours: {\r\n const hours = Math.floor((msToTarget / (1000 * 60 * 60)));\r\n return hours >= 0 ? hours : 0;\r\n }\r\n case TimeUnits.minutes: {\r\n const minutes = Math.floor((msToTarget % (1000 * 60 * 60)) / (1000 * 60));\r\n return minutes >= 0 ? minutes : 0;\r\n }\r\n case TimeUnits.seconds: {\r\n const seconds = Math.floor((msToTarget % (1000 * 60)) / 1000);\r\n return seconds >= 0 ? seconds : 0;\r\n }\r\n default: {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private countdown(interval: NodeJS.Timer) {\r\n if (this.currentCountdownFormat == CountdownFormats.weeks) {\r\n const weeksBeforeUpdate = this.weeksToTarget;\r\n this.updateWeeksToTarget();\r\n this.updateCurrentCountdownFormat();\r\n if (weeksBeforeUpdate != this.weeksToTarget) {\r\n this.updateWeeksElement();\r\n }\r\n }\r\n\r\n if (this.currentCountdownFormat == CountdownFormats.days) {\r\n const daysBeforeUpdate = this.daysToTarget;\r\n this.updateDaysToTarget();\r\n this.updateCurrentCountdownFormat();\r\n if (daysBeforeUpdate != this.daysToTarget) {\r\n this.updateDaysElement();\r\n }\r\n }\r\n\r\n if (this.currentCountdownFormat == CountdownFormats.hoursMinutesSeconds) {\r\n const hours = this.hoursToTarget;\r\n const minutes = this.minutesToTarget;\r\n\r\n this.updateHoursMinutesSecondsToTarget();\r\n this.updateCurrentCountdownFormat();\r\n\r\n if (hours != this.hoursToTarget) {\r\n this.updateHoursElement();\r\n }\r\n if (minutes != this.minutesToTarget) {\r\n this.updateMinuteElement();\r\n }\r\n this.updateSecondsElement();\r\n }\r\n\r\n if (this.getMsToTarget() < 0) {\r\n this.stopCountdown(interval);\r\n }\r\n }\r\n\r\n private updateWeeksElement() {\r\n const unitSubElements = this.element.querySelectorAll(\".nx-countdown__time-unit-\" + TimeUnits.weeks);\r\n this.updateUnitSubElements(unitSubElements, this.weeksToTarget, false);\r\n }\r\n\r\n private updateDaysElement() {\r\n const unitSubElements = this.element.querySelectorAll(\".nx-countdown__time-unit-\" + TimeUnits.days);\r\n this.updateUnitSubElements(unitSubElements, this.daysToTarget, false);\r\n }\r\n\r\n private updateHoursElement() {\r\n const unitSubElements = this.element.querySelectorAll(\".nx-countdown__time-unit-\" + TimeUnits.hours);\r\n this.updateUnitSubElements(unitSubElements, this.hoursToTarget, true);\r\n }\r\n\r\n private updateMinuteElement() {\r\n const unitSubElements = this.element.querySelectorAll(\".nx-countdown__time-unit-\" + TimeUnits.minutes);\r\n this.updateUnitSubElements(unitSubElements, this.minutesToTarget, true);\r\n }\r\n\r\n private updateSecondsElement() {\r\n const unitSubElements = this.element.querySelectorAll(\".nx-countdown__time-unit-\" + TimeUnits.seconds);\r\n this.updateUnitSubElements(unitSubElements, this.secondsToTarget, true);\r\n }\r\n\r\n private updateUnitSubElements(unitElements: NodeListOf, timeToTarget: number, prependWithZero: boolean) {\r\n if (unitElements.length > 1) {\r\n unitElements.forEach(element => {\r\n if (element.classList.contains(\"nx-countdown__time-unit-a\")) {\r\n removeClasses(element, \"nx-countdown__time-unit--fade-in\", \"nx-countdown__time-unit-a\");\r\n addClasses(element, \"nx-countdown__time-unit--fade-out\", \"nx-countdown__time-unit-b\");\r\n element.offsetHeight; // force recalc layout\r\n } else if (element.classList.contains(\"nx-countdown__time-unit-b\")) {\r\n element.innerHTML = prependWithZero ? this.getTimeStringWithPreZero(timeToTarget) : timeToTarget.toString();\r\n removeClasses(element, \"nx-countdown__time-unit--fade-out\", \"nx-countdown__time-unit-b\");\r\n addClasses(element, \"nx-countdown__time-unit--fade-in\", \"nx-countdown__time-unit-a\");\r\n element.offsetHeight; // force recalc layout\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getTimeStringWithPreZero(time: number) {\r\n let timeStr = time.toString();\r\n if (time < 10) {\r\n timeStr = \"0\".concat(timeStr);\r\n }\r\n return timeStr;\r\n }\r\n\r\n private stopCountdown(interval) {\r\n clearInterval(interval);\r\n // celebrate finished countdown now\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n Countdown.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n Countdown.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n Countdown.setup(moduleSelector);\r\n}"],"names":["moduleSelector","TimeUnits","CountdownFormats","Countdown","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","this","init","targetDateTime","getTargetDateTime","initTimeToTarget","initCountdownFormat","createTimeElements","startCountdown","utcTime","getAttribute","Date","updateWeeksToTarget","updateDaysToTarget","updateHoursMinutesSecondsToTarget","format","currentCountdownFormat","hoursMinutesSeconds","updateCurrentCountdownFormat","weeks","weeksToTarget","createWeeksElement","days","daysToTarget","createDaysElement","createHoursMinutesSecondsElement","interval","setInterval","countdown","getMsToTarget","now","getTime","getTimeToTargetIn","hoursToTarget","hours","minutesToTarget","minutes","secondsToTarget","seconds","removeCountdownTimeUnitElement","unit","timeUnitElement","querySelector","parent","closest","remove","createHoursElement","createMinutesElement","createSecondsElement","weeksElement","toString","appendChild","daysElement","getTimeStringWithPreZero","msToTarget","Math","floor","weeksBeforeUpdate","updateWeeksElement","daysBeforeUpdate","updateDaysElement","updateHoursElement","updateMinuteElement","updateSecondsElement","stopCountdown","unitSubElements","updateUnitSubElements","unitElements","timeToTarget","prependWithZero","length","classList","contains","offsetHeight","innerHTML","time","timeStr","concat","clearInterval"],"sourceRoot":""}