Untitled diff
137 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
    };
    };
}());
}());