Untitled diff

Created Diff never expires
15 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
137 lines
48 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
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 upTo(el, selector) {
function getButtonContainer(el) {
while (el.matches(selector) === 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 hideInitialOverlay(wrapper) {
function getSpeaker(button) {
wrapper.classList.remove("inactive");
return button.querySelector(".speaker");
wrapper.classList.add("active");
hide(wrapper.querySelector(".cover"));
}
}


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(button) {
hide(button.querySelector(".cover"));
showPlayButton(button);
}

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 = upTo(evt.target, ".wrape .playButton");
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
};
};
}());
}());