(function () {
var SVG_PLAY = '<svg width="10" height="12" viewBox="0 0 10 12" fill="currentColor"><polygon points="0,0 10,6 0,12"/></svg>';
var SVG_PAUSE = '<svg width="10" height="12" viewBox="0 0 10 12" fill="currentColor"><rect x="0" y="0" width="3.5" height="12"/><rect x="6.5" y="0" width="3.5" height="12"/></svg>';
var cfg = window.TP_AUDIO_CONFIG || {};
var sectionSelector = cfg.sectionSelector || 'section[id*="audio-play"]';
var itemSelector = cfg.itemSelector || '.list-item';
var anchorSelector = cfg.anchorSelector || 'a.list-item-content__button';
var contentSelector = cfg.contentSelector || '.list-item-content';
var loop = cfg.loop !== undefined ? cfg.loop : false;
var volume = cfg.volume !== undefined ? cfg.volume : 1;
var currentAudio = null;
var currentBtn = null;
function resetBtn(btn) {
btn.innerHTML = SVG_PLAY;
btn.setAttribute('aria-label', 'Play');
}
function initItem(item) {
if (item.dataset.tpAudio) return;
var anchor = item.querySelector(anchorSelector);
var contentEl = item.querySelector(contentSelector);
if (!contentEl) return;
var mp3 = anchor ? anchor.getAttribute('href') : '';
if (!mp3) return;
item.dataset.tpAudio = '1';
var audio = new Audio(mp3);
audio.loop = loop;
audio.volume = volume;
var btn = document.createElement('button');
btn.className = 'tp-play-btn';
btn.setAttribute('aria-label', 'Play');
btn.innerHTML = SVG_PLAY;
audio.addEventListener('ended', function () {
if (!loop) {
resetBtn(btn);
currentAudio = null;
currentBtn = null;
}
});
btn.addEventListener('click', function () {
if (currentAudio && currentAudio !== audio) {
currentAudio.pause();
currentAudio.currentTime = 0;
resetBtn(currentBtn);
}
if (audio.paused) {
audio.play();
btn.innerHTML = SVG_PAUSE;
btn.setAttribute('aria-label', 'Pause');
currentAudio = audio;
currentBtn = btn;
} else {
audio.pause();
resetBtn(btn);
currentAudio = null;
currentBtn = null;
}
});
contentEl.insertBefore(btn, contentEl.firstChild);
}
function initSection() {
var section = document.querySelector(sectionSelector);
if (!section) return false;
var items = section.querySelectorAll(itemSelector);
if (!items.length) return false;
items.forEach(initItem);
return true;
}
function tryInit() {
if (initSection()) return;
var tries = 0;
var interval = setInterval(function () {
if (initSection() || ++tries > 20) clearInterval(interval);
}, 300);
}
document.addEventListener('DOMContentLoaded', tryInit);
window.addEventListener('load', tryInit);
window.addEventListener('mercury:load', tryInit);
})();