{"version":3,"file":"js/component-countdownComponent.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/scripts/base/baseComponent.ts","webpack:///./assets/common/src/scripts/components/countdownComponent.ts"],"sourcesContent":["import Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport CommonInterface from './commonInterface';\nexport default class BaseComponent extends CommonInterface {\n /**\n *\n * constructor\n *\n * @param {Element} element\n */\n constructor(element) {\n super();\n this._componentElement = element;\n this._componentElement.setAttribute('data-component-init', 'true');\n this._checkMessages();\n }\n /**\n * @returns {HTMLElement}\n */\n get $el() {\n return this._componentElement;\n }\n get $options() {\n const compOptions = {};\n const options = Object.assign({}, this.$el.dataset);\n const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n optionsEntires.forEach((entry) => {\n const cleanEntry = BaseComponent.cleanOptionKey(entry);\n let optionValue;\n if (options[entry].includes('{') && options[entry].includes('}')) {\n optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n }\n else {\n optionValue = BaseComponent.convertType(options[entry]);\n }\n compOptions[cleanEntry] = optionValue;\n });\n return deepFreeze(compOptions);\n }\n get COMPONENT_NAME() {\n return this.__proto__.constructor.name;\n }\n static convertType(option) {\n let optionReturn;\n switch (option) {\n case 'false':\n optionReturn = false;\n break;\n case 'true':\n optionReturn = true;\n break;\n case 'null':\n optionReturn = null;\n break;\n default:\n optionReturn = option;\n break;\n }\n return optionReturn;\n }\n static cleanOptionKey(key) {\n const str = key.replace('option', '');\n return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n }\n /**\n *\n * $on\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n * @param {Array|String|Element} [elements = null]\n */\n $on(events, cb, element = this.$el, elements = null) {\n if (!element || !events || !cb)\n return;\n if (!elements) {\n Bean.on(element, events, (e) => {\n if (e)\n e.stopPropagation();\n cb(e);\n });\n }\n else {\n Bean.on(element, events, elements, (e) => {\n if (e)\n e.stopPropagation();\n cb(e);\n });\n }\n }\n /**\n *\n * $one\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n */\n $one(events, cb, element = this.$el) {\n Bean.one(element, events, cb);\n }\n /**\n *\n * $off\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $off(events, element = this.$el) {\n Bean.off(element, events);\n }\n /**\n *\n * $fire\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $fire(events, element = this.$el) {\n Bean.fire(element, events);\n }\n}\n","import BaseComponent from '../base/baseComponent';\nexport default class CountDownComponent extends BaseComponent {\n constructor(element) {\n super(element);\n this.initCountDown();\n }\n clearNumber(num, pad = 2) {\n return num.toString().padStart(pad, '0');\n }\n initCountDown() {\n const counterDate = this.$options.time;\n if (counterDate) {\n const timeZoneOffset = this.$options.timezone;\n const transformedDate = timeZoneOffset ? new Date(counterDate + timeZoneOffset).getTime() : new Date(counterDate).getTime();\n const timeTag = this.$el.querySelector('time');\n if (timeTag) {\n timeTag.innerText = new Date(transformedDate).toLocaleDateString();\n }\n const className = this.$options.displayValueClassname ? `.${this.$options.displayValueClassname}` : '.hero-column__title';\n const title = this.$el.querySelector(className);\n const hiddenTitle = this.$el.querySelector(`${className}--hidden`);\n this.hideMs = !!this.$options.hideMs;\n this.initTime(title, hiddenTitle, transformedDate);\n }\n }\n initTime(displayElement, hiddenTitle, countDownDate) {\n if (!displayElement)\n return;\n const currentText = displayElement.innerHTML;\n setTimeout(() => {\n if (this.$el.classList.contains('title--hidden')) {\n this.$el.classList.remove('title--hidden');\n }\n }, 100);\n const splittedText = (s) => {\n let result = '';\n for (let i = 0; i < s.length; i++) {\n result += '' + s.charAt(i) + '';\n }\n return result;\n };\n const setTimeText = (distance) => {\n const days = this.clearNumber(Math.floor(distance / (1000 * 60 * 60 * 24))) + \"D:\";\n const hours = this.clearNumber(Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))) + \"H:\";\n const minutes = this.clearNumber(Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60))) + \"M:\";\n const seconds = this.clearNumber(Math.floor((distance % (1000 * 60)) / 1000)) + \"S\";\n const milliseconds = this.clearNumber(Math.floor(distance % 1000), 3);\n // this cause flickering\n // displayElement.innerHTML = `${days}:${hours}:${minutes}:${seconds}${this.hideMs ? '' : '.' + milliseconds}`;\n displayElement.innerHTML = `${splittedText(days)}${splittedText(hours)}${splittedText(minutes)}${splittedText(seconds)}${this.hideMs ? '' : '.' + splittedText(milliseconds)}`;\n hiddenTitle.innerHTML = `${days} ${hiddenTitle.dataset.days}, ${hours} ${hiddenTitle.dataset.hours}, ${minutes} ${hiddenTitle.dataset.minutes}, ${seconds} ${hiddenTitle.dataset.seconds}`;\n };\n const timerId = setInterval(() => {\n const now = new Date().getTime();\n const distance = countDownDate - now;\n if (distance < 0) {\n clearInterval(timerId);\n if (currentText) {\n displayElement.innerHTML = currentText;\n hiddenTitle.innerHTML = currentText;\n }\n else {\n setTimeText(0);\n }\n if (this.$options.redirectUrl) {\n window.location.href = this.$options.redirectUrl;\n }\n }\n else {\n setTimeText(distance);\n }\n }, 1);\n }\n}\n"],"names":["BaseComponent","constructor","element","super","this","_componentElement","setAttribute","_checkMessages","$el","$options","compOptions","options","Object","assign","dataset","keys","filter","entry","includes","forEach","cleanEntry","cleanOptionKey","optionValue","JSON","parse","replace","convertType","COMPONENT_NAME","__proto__","name","static","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","$on","events","cb","elements","e","stopPropagation","$one","$off","$fire","CountDownComponent","initCountDown","clearNumber","num","pad","toString","padStart","counterDate","time","timeZoneOffset","timezone","transformedDate","Date","getTime","timeTag","querySelector","innerText","toLocaleDateString","className","displayValueClassname","title","hiddenTitle","hideMs","initTime","displayElement","countDownDate","currentText","innerHTML","setTimeout","classList","contains","remove","splittedText","s","result","i","length","setTimeText","distance","days","Math","floor","hours","minutes","seconds","milliseconds","timerId","setInterval","now","clearInterval","redirectUrl","window","location","href"],"sourceRoot":""}