{"version":3,"file":"podcast-block.min.js","sources":["podcast-block.min.js"],"sourcesContent":["\"use strict\";\n\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n(function () {\n var podcasts = document.querySelectorAll('[data-podcast]');\n var globalPlayer = null;\n if (podcasts.length) {\n podcasts.forEach(function (item) {\n var audio = item.querySelector('[data-podcast-audio]'),\n button = item.querySelector('[data-audio-play-btn]'),\n progress = item.querySelector('[data-audio-progress]');\n var itemText = item.querySelector('[data-podcast-text]');\n var audioContainer = item.querySelector('[data-podcast-audio-container]');\n var textFrame = item.querySelector('[data-text-animate-frame]');\n var podcast = {\n animationTimer: null,\n symbols: null,\n speed: 55,\n currentSymbol: 0,\n text: itemText.dataset.content,\n audio: audio,\n button: button,\n status: button.dataset,\n progress: progress,\n setProgressValue: function setProgressValue(value) {\n this.progress.value = value;\n },\n stopText: function stopText() {\n clearInterval(this.animationTimer);\n this.animationTimer = null;\n },\n resetText: function resetText() {\n this.stopText();\n this.resetFrame();\n },\n resetPlayer: function resetPlayer() {\n this.audio.muted = false;\n this.audio.currentTime = 0;\n this.progress.value = 0;\n },\n resetFrame: function resetFrame() {\n this.symbols.forEach(function (symbol) {\n return symbol.classList.remove('animated');\n });\n this.currentSymbol = 0;\n },\n startText: function startText() {\n var _this = this;\n if (!this.animationTimer) {\n this.animationTimer = setInterval(function () {\n if (_this.currentSymbol !== _this.text.length) {\n _this.symbols[_this.currentSymbol].classList.add('animated');\n _this.setProgressValue(_this.currentSymbol / _this.text.length);\n _this.currentSymbol += 1;\n } else {\n _this.setProgressValue(1);\n _this.stopText();\n }\n }, this.speed);\n }\n },\n play: function play() {\n if (!globalPlayer) globalPlayer = this;\n if (globalPlayer && globalPlayer !== this) {\n globalPlayer.audio.pause();\n globalPlayer.stopText();\n globalPlayer.status.status = 'play';\n globalPlayer = this;\n }\n if (globalPlayer.audio.paused === false) {\n globalPlayer.audio.pause();\n globalPlayer.status.status = 'play';\n globalPlayer.stopText();\n } else {\n if (globalPlayer.status.status === 'muted' || globalPlayer.status.status === 'repeat') {\n globalPlayer.resetText();\n globalPlayer.resetPlayer();\n }\n globalPlayer.audio.muted = globalPlayer.audio.muted && false;\n globalPlayer.status.status = 'pause';\n globalPlayer.audio.play();\n globalPlayer.startText();\n }\n },\n setAnimationFrameProgress: function setAnimationFrameProgress() {\n for (var i = 0; i < this.currentSymbol; i++) {\n this.symbols[i].classList.add('animated');\n }\n },\n seek: function seek(event) {\n //TODO - seeking not work on LOCAL/DEV ENV. Can't set currentTime - ByteRange issue -- END\n var percent = event.offsetX / event.target.offsetWidth;\n var currentTime = Math.floor(percent * this.getDuration());\n this.audio.currentTime = currentTime;\n if (this.audio.currentTime === currentTime) {\n this.stopText();\n this.resetFrame();\n this.currentSymbol = Math.floor(percent * this.text.length);\n this.setProgressValue(percent);\n this.setAnimationFrameProgress();\n this.startText();\n this.play();\n } else {\n if (!globalPlayer) return;\n this.stopText();\n this.resetFrame();\n this.setProgressValue(0);\n globalPlayer.audio.pause();\n globalPlayer.status.status = 'play';\n }\n },\n calculateSpeed: function calculateSpeed() {\n this.speed = Math.floor(this.getDuration() * 1000 / this.text.length);\n },\n getDuration: function getDuration() {\n return this.audio.duration !== Infinity && !isNaN(Number(this.audio.duration)) ? this.audio.duration : this.audio.dataset.duration;\n },\n inViewport: function inViewport(el) {\n var rect = el.getBoundingClientRect();\n\n // Partially visible elements return true:\n //return (elemTop < viewHeight && elemBottom >= 0);\n\n // Only completely visible elements return true:\n return rect.top >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight);\n },\n handleScroll: function handleScroll(element) {\n if (this.currentSymbol === this.text.length || this.status.status !== 'muted') return;\n if (this.inViewport(element) && (!globalPlayer || globalPlayer !== this && globalPlayer.audio.paused)) {\n this.startText();\n } else {\n this.stopText();\n }\n },\n init: function init() {\n var _this2 = this;\n _toConsumableArray(this.text).forEach(function (letter) {\n textFrame.innerHTML += '' + letter + '';\n });\n this.symbols = textFrame.querySelectorAll(':scope > span');\n this.audio.addEventListener('ended', function () {\n _this2.currentSymbol === _this2.text.length && _this2.stopText();\n _this2.status.status = 'repeat';\n globalPlayer = null;\n });\n this.button && this.button.addEventListener('click', function () {\n return _this2.play();\n });\n this.button && this.button.addEventListener('keydown', function (e) {\n if (e.keyCode === 32) {\n _this2.play();\n e.preventDefault();\n }\n });\n document.addEventListener('readystatechange', function (e) {\n var currentTime = 1;\n\n //set currentTime for test & enable progress bar\n _this2.audio.currentTime = currentTime;\n if (e.target.readyState === 'interactive') {\n _this2.audio.currentTime = currentTime;\n }\n if (e.target.readyState === 'complete') {\n audioContainer.removeAttribute('disabled');\n _this2.calculateSpeed();\n window.addEventListener('scroll', function () {\n return _this2.handleScroll(item);\n });\n\n //TODO - seeking not work on LOCAL/DEV ENV. Can't set currentTime - ByteRange issue -- END\n //check if audio can be seeking by click on progress bar\n if (_this2.audio.currentTime === currentTime) {\n _this2.audio.currentTime = 0;\n _this2.progress && _this2.progress.addEventListener(\"click\", function (e) {\n return _this2.seek(e);\n });\n } else _this2.audio.currentTime = 0;\n }\n });\n }\n };\n podcast.init();\n });\n }\n})();"],"names":["_toConsumableArray","r","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","a","t","_arrayLikeToArray","toString","call","slice","constructor","name","Array","from","test","Symbol","iterator","isArray","length","e","n","podcasts","document","querySelectorAll","globalPlayer","forEach","item","audio","querySelector","button","progress","itemText","audioContainer","textFrame","animationTimer","symbols","speed","currentSymbol","text","dataset","content","status","setProgressValue","value","this","stopText","clearInterval","resetText","resetFrame","resetPlayer","muted","currentTime","symbol","classList","remove","startText","_this","setInterval","add","play","pause","paused","setAnimationFrameProgress","i","seek","event","percent","offsetX","target","offsetWidth","Math","floor","getDuration","calculateSpeed","duration","Infinity","isNaN","Number","inViewport","el","rect","getBoundingClientRect","top","bottom","window","innerHeight","documentElement","clientHeight","handleScroll","element","init","_this2","letter","innerHTML","addEventListener","keyCode","preventDefault","readyState","removeAttribute"],"mappings":"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"}