Untitled diff

Created Diff never expires
17 removals
137 lines
49 additions
170 lines
var playButton = (function iife() {
var playButton = (function iife() {
"use strict";
"use strict";


function show(el) {
function show(el) {
el.classList.remove("hide");
el.classList.remove("hide");
}
}


function hide(el) {
function hide(el) {
el.classList.add("hide");
el.classList.add("hide");
}
}


function getButtonContainer(el) {
function getButtonContainer(el) {
while (el.classList.contains("playButton") === false) {
while (el.classList.contains("playButton") === false) {
el = el.parentNode;
el = el.parentNode;
}
}
return el;
return el;
}
}


function hideAllButtons(button) {
function hideAllButtons(button) {
button.querySelectorAll(".play, .pause, .cover, .speaker").forEach(hide);
button.querySelectorAll(".play, .pause, .cover, .speaker").forEach(hide);
}
}


function getPlay(button) {
function getPlay(button) {
return button.querySelector(".play");
return button.querySelector(".play");
}
}


function getPause(button) {
function getPause(button) {
return button.querySelector(".pause");
return button.querySelector(".pause");
}
}


function getSpeaker(button) {
return button.querySelector(".speaker");
}

function showPlayButton(button) {
function showPlayButton(button) {
var play = getPlay(button);
var play = getPlay(button);
hideAllButtons(button);
hideAllButtons(button);
show(play);
show(play);
button.classList.remove("active");
button.classList.remove("active");
}
}


function hideInitialOverlay(wrapper) {
function hideInitialOverlay(button) {
wrapper.classList.remove("inactive");
hide(button.querySelector(".cover"));
wrapper.classList.add("active");
showPlayButton(button);
hide(wrapper.querySelector(".cover"));
}
}


function isPlaying(button) {
function isPlaying(button) {
var play = getPlay(button);
var play = getPlay(button);
return play.classList.contains("hide");
return play.classList.contains("hide");
}
}


function pauseAllButtons() {
function pauseAllButtons() {
var buttons = document.querySelectorAll(".playButton");
var buttons = document.querySelectorAll(".playButton");
buttons.forEach(function hidePause(button) {
buttons.forEach(function hidePause(button) {
if (isPlaying(button)) {
if (isPlaying(button)) {
showPlayButton(button);
showPlayButton(button);
}
}
});
});
}
}


function showPauseButton(button) {
function showPauseButton(button) {
var pause = getPause(button);
var pause = getPause(button);
pauseAllButtons();
pauseAllButtons();
hideAllButtons(button);
hideAllButtons(button);
show(pause);
show(pause);
button.classList.add("active");
button.classList.add("activated");
}

function showSpeakerButton(button) {
var speaker = getSpeaker(button);
hideAllButtons(button);
show(speaker);
}
}


function getAudio() {
function getAudio() {
return document.querySelector("audio");
return document.querySelector("audio");
}
}


function playAudio(player, src) {
function playAudio(player, src) {
player.volume = 1.0;
player.volume = 1.0;
player.setAttribute("src", src);
player.setAttribute("src", src);
player.play();
player.play();
}
}


function showButton(button, opts) {
function showButton(button, opts) {
if (opts.playing) {
if (opts.playing) {
showPlayButton(button);
showPlayButton(button);
} else {
} else {
showPauseButton(button);
showPauseButton(button);
}
}
}
}


function pauseAudio(player) {
function pauseAudio(player) {
player.pause();
player.pause();
}
}


function manageAudio(player, opts) {
function manageAudio(player, opts) {
if (opts.playing) {
if (opts.playing) {
pauseAudio(player);
pauseAudio(player);
} else {
} else {
playAudio(player, opts.src);
playAudio(player, opts.src);
}
}
}
}


function togglePlayButton(button) {
function togglePlayButton(button) {
var player = getAudio();
var player = getAudio();
var playing = isPlaying(button);
var playing = isPlaying(button);
showButton(button, {
showButton(button, {
playing
playing
});
});
manageAudio(player, {
manageAudio(player, {
src: button.getAttribute("data-audio"),
src: button.getAttribute("data-audio"),
playing
playing
});
});
}
}


function showPause(button) {
if (isPlaying(button)) {
showPauseButton(button);
}
}

function showSpeaker(button) {
if (isPlaying(button)) {
showSpeakerButton(button);
}
}

function playButtonClickHandler(evt) {
function playButtonClickHandler(evt) {
var button = getButtonContainer(evt.target);
var button = getButtonContainer(evt.target);
togglePlayButton(button);
togglePlayButton(button);
}
}


function initialOverlayClickHandler() {
function playButtonMouseoverHandler(evt) {
var wrapper = document.querySelector(".wrape");
var button = getButtonContainer(evt.target);
var button = wrapper.querySelector(".playButton");
showPause(button);
hideInitialOverlay(wrapper);
}
showPlayButton(button);

wrapper.removeEventListener("click", initialOverlayClickHandler);
function playButtonMouseoutHandler(evt) {
var button = getButtonContainer(evt.target);
showSpeaker(button);
}

function initialOverlayClickHandler(evt) {
var button = getButtonContainer(evt.target);
hideInitialOverlay(button);
button.removeEventListener("click", initialOverlayClickHandler);
button.addEventListener("click", playButtonClickHandler);
button.addEventListener("click", playButtonClickHandler);
button.addEventListener("mouseover", playButtonMouseoverHandler);
button.addEventListener("mouseout", playButtonMouseoutHandler);
playButtonClickHandler(evt);
}
}

function initPlayButton(selector) {
function initPlayButton(selector) {
var playButtons = document.querySelectorAll(selector);
var playButtons = document.querySelectorAll(selector);
playButtons.forEach(function (button) {
playButtons.forEach(function (button) {
button.classList.add("inactive");
button.classList.add("inactive");
if (button.querySelector(".cover")) {
if (button.querySelector(".cover")) {
return button.addEventListener("click", initialOverlayClickHandler);
return button.addEventListener("click", initialOverlayClickHandler);
} else {
} else {
button.addEventListener("click", playButtonClickHandler);
button.addEventListener("click", playButtonClickHandler);
}
}
});
});
}
}


return {
return {
init: initPlayButton
init: initPlayButton
};
};
}());
}());