/*! Source: /themes/default/assets/js/radio/base.js */ ; // Rádio Variáveis window.menuAsideContainer ??= document.querySelector('.ib-menuAside'); let dropDowns = document.querySelectorAll('.ib-radio-dropdown') if (dropDowns) { dropDowns.forEach(menu => menu.addEventListener('mouseover', () => { menu.classList.remove('show') let ul = menu.querySelector('ul') menu.classList.toggle('show') ul.addEventListener('mouseleave', () => { menu.classList.remove('show') }) })) } if(document.querySelector('#playerFlutuante')){ let playingRadio = false let imgRadioPlayer = document.querySelector('#imgRadioPlayer') let imgPlayer = document.querySelector('#controlImage') let radioLoading = false let shareIcon = document.querySelector('#shareIcon') let shareInfo = document.querySelector('.shareInfo') let player = document.querySelector('#playerFlutuante') let playerAudio = document.querySelector('#playerFlutuante audio') let loadingImage = '/themes/default/assets/img/radios/loading.svg' let playImage = '/themes/default/assets/img/radios/play_radio.svg' let pauseImage = '/themes/default/assets/img/radios/pause_radio.svg' let volOff = '/themes/default/assets/img/radios/volume_off.svg' let volOn = '/themes/default/assets/img/radios/volume_on.svg' let volImg = document.querySelector('#volImg') let freq = document.querySelector('#freq') let loadingRadioModal = document.querySelector('.ib-modal.loadingRadio') let imgPlayerControl = { img1: document.querySelector('#controlImage'), img2: null, }; shareIcon.addEventListener('click', () => { shareInfo.classList.toggle('show') }) // O código define diversas variáveis e elementos, como dropDowns, playingRadio, imgRadioPlayer, player, playerAudio, loadingImage, playImage, pauseImage e volOff. Ele também define imgPlayerControl, um objeto com duas propriedades, img1 e img2, que contém referências a dois elementos de imagem. //O código então configura um ouvinte de evento para quando o DOM é carregado, que chama a função playerMountInfo(). Essa função localiza o primeiro player div na página e define a fonte playerAudio e a fonte imgRadioPlayer para os atributos de dados desse div. Ele também define imgPlayerControl.img2 como o elemento .control desse div. // É definida a função loadRadioPlayer(), que é responsável por carregar e reproduzir o áudio quando o usuário clicar no botão play. Se o sinalizador radioLoading for definido como true, o modal de carregamento será exibido. Se o áudio não tiver sido carregado antes, a função define o atributo src de playerAudio para o atributo data-src e define playerAudio.dataset.load como verdadeiro. Em seguida, ele carrega o áudio e configura um ouvinte de evento para quando o áudio começar a ser reproduzido. Se o áudio já estiver tocando, a função o pausa. //A função changeVol() é definida, que recebe um argumento vol e define o volume de playerAudio para esse valor. Se o volume estiver definido como 0, o ícone de volume será definido como o ícone "volume desligado". Caso contrário, é definido para o ícone "volume ligado". // O elemento volImg possui um ouvinte de evento para quando é clicado. Se playerAudio não estiver mudo, ele estará mudo e o ícone de volume será definido como "volume desligado". Caso contrário, o som é ativado, o volume é definido como 0,5 e o ícone de volume é definido como "volume ativado". // A função changeLinkRadio() é definida, que recebe esse argumento e altera a fonte playerAudio e a fonte imgRadioPlayer para os atributos de dados do elemento que foi clicado. Ele também define imgPlayerControl.img2 para o elemento .control desse elemento. // Por fim, playerMountInfo() é chamado no evento DOMContentLoaded, que define a fonte inicial e os elementos de controle para o player de rádio. async function loadRadioPlayer() { if (radioLoading) return loadingRadioModal.classList.remove('hidden'); else if (!playingRadio) { if (playerAudio.dataset.load == 'false') { playerAudio.src = playerAudio.dataset.src playerAudio.dataset.load == 'true' } playerAudio.load() playerAudio.onloadstart = () => { for (let key in imgPlayerControl) { imgPlayerControl[key].src = loadingImage; imgPlayerControl[key].classList.add('spin'); } radioLoading = true } playerAudio.onloadeddata = () => { radioLoading = false } await playerAudio.play() } else { playerAudio.pause(); } } if(playerAudio) { playerAudio.onplaying = () => { loadingRadioModal.classList.add('hidden') playingRadio = true for (let key in imgPlayerControl) { imgPlayerControl[key].setAttribute('src', pauseImage); imgPlayerControl[key].classList.remove('spin'); } }; playerAudio.onpause = () => { playingRadio = false for (let key in imgPlayerControl) { imgPlayerControl[key].setAttribute('src', playImage); } } } function changeVol(vol) { playerAudio.muted = false playerAudio.volume = vol if (playerAudio.volume == 0) { volImg.setAttribute('src', volOff) } else { volImg.setAttribute('src', volOn) } } volImg?.addEventListener('click', () => { if (!playerAudio.muted) { volImg.setAttribute('src', volOff) playerAudio.muted = true } else { playerAudio.muted = false playerAudio.volume = 0.5 volImg.setAttribute('src', volOn) } }) loadingRadioModal?.addEventListener('click', e => { if (e.target !== loadingRadioModal) { return; } else { loadingRadioModal.classList.toggle('hidden') } }); function changeLinkRadio(that) { if (radioLoading) return loadingRadioModal.classList.remove('hidden'); else if (playingRadio) { playingRadio = false for (let key in imgPlayerControl) { imgPlayerControl[key].setAttribute('src', playImage); } playerAudio.pause(); } else { playerAudio.dataset.src = that.dataset.audiosrc imgRadioPlayer.src = that.dataset.img freq.innerHTML = that.dataset.freq playerAudio.title = that.dataset.title imgPlayerControl.img2.setAttribute('src', playImage) imgPlayerControl.img2 = that.querySelector('.control') playingRadio = false loadRadioPlayer() } } function playerMountInfo() { let firstPlayerDiv = document.querySelector('.ib-playRadios .wrapper div div') if (firstPlayerDiv) { playerAudio.dataset.src = firstPlayerDiv.dataset.audiosrc playerAudio.title = firstPlayerDiv.dataset.title imgRadioPlayer.src = firstPlayerDiv.dataset.img freq.innerHTML = firstPlayerDiv.dataset.freq imgPlayerControl.img2 = firstPlayerDiv.querySelector('.control') } } if (window.innerWidth > 700) { window.onscroll = function () { var distanceScrolled = document.documentElement.scrollTop; if (distanceScrolled > 250) player?.classList.remove('hidden') else player?.classList.add('hidden') } } else{ player?.classList.remove('hidden') } document.addEventListener('DOMContentLoaded', () => { playerMountInfo() }) // SCRIPTS ADS function loadScripts(scripts) { scripts.forEach(scriptUrl => { var start = +new Date(); const script = document.createElement('script'); script.src = scriptUrl; script.async = true; script.onload = () => { var end = +new Date(); var time = end - start; // console.log(`${scriptUrl} levou ${time}ms para ser carregado`); }; document.head.appendChild(script); }); } let newRadioPlayer = document.getElementById('radioPlayer') newRadioPlayer?.addEventListener('click', () => { loadRadioPlayer() }) } // ABRIR/FECHAR MENU LATERAL window.toggleAsideMenu ??= () => { const body = document.getElementsByTagName('body')[0]; const isActive = menuAsideContainer?.classList?.contains('active'); menuAsideContainer?.classList?.toggle('active'); body.style.overflow = isActive ? 'auto' : 'hidden'; }; // openPopup function openPopup(that) { // Obter o valor do atributo "data-popup" do elemento clicado var popupUrl = that.dataset.popup; // Abrir a janela popup com a URL obtida window.open(popupUrl, "popup", "width=350,height=665"); }