let timer; let startTimer = false; const createVideoOverlay = (playerElement) => { const overlay = document.createElement("div"); overlay.className = "ag-video-overlay"; if (playerElement) { playerElement.appendChild(overlay); } return overlay; }; const createButtonMuted = (playerElement) => { const wrapperButton = document.createElement("div"); wrapperButton.className = "ag-wrapper-button-mute"; const button = document.createElement("button"); button.className = "ag-button-mute"; button.innerHTML = `
Clique aqui
para ativar o som
`; wrapperButton.appendChild(button); if (playerElement) { playerElement.appendChild(wrapperButton); } return wrapperButton; }; const createFakeLive = (playerElement) => { const tag = document.createElement("div"); tag.className = "ag-video-live"; tag.innerHTML = ` Ao vivo `; if (playerElement) { playerElement.appendChild(tag); } }; const createPlayer = () => { const player = new Plyr("#player", { controls: ["play-large"], i18n: { restart: "Reiniciar", rewind: "Recuar {seektime}s", play: "Reproduzir", pause: "Pausar", fastForward: "Avançar {seektime}s", seek: "Procurar", seekLabel: "{currentTime} de {duration}", played: "Reproduzido", buffered: "Colocado na memória intermdia", currentTime: "Tempo atual", duration: "Duração", volume: "Volume", mute: "Sem som", unmute: "Com som", enableCaptions: "Ativar legendas", disableCaptions: "Desativar legendas", download: "Transferir", enterFullscreen: "Entrar no modo de fullscreen", exitFullscreen: "Sair do modo de fullscreen", frameTitle: "Leitor para {title}", captions: "Legendas", settings: "Configurações", pip: "PIP", menuBack: "Voltar ao menu anterior", speed: "Velocidade", normal: "Normal", quality: "Qualidade", loop: "Repetir", start: "Início", end: "Fim", all: "Tudo", reset: "Repor", disabled: "Desativado", enabled: "Ativado", advertisement: "Anúncio", qualityBadge: { 2160: "4K", 1440: "HD", 1080: "HD", 720: "HD", 576: "SD", 480: "SD", }, }, keyboard: { focused: false, global: false, }, }); window.player = player; return player; }; const timeToSeconds = (time) => { return time .split(":") .reduce((acc, currentTime) => 60 * acc + Number(currentTime)); }; const showAllElements = () => { const elements = document.querySelectorAll(`.ag-hide`); elements.forEach((element) => { element.classList.remove("ag-hide"); }); }; const observerVideoTime = (player) => { const { delay, smartAutoplay } = _player_config; const seconds = timeToSeconds(delay); let currentTime = 0; let interval = null; player.on("play", () => { clearInterval(interval); interval = setInterval(() => { if (startTimer || !smartAutoplay) { currentTime++; } if (currentTime === seconds) { showAllElements(); } }, 1000); }); player.on("pause", () => { clearInterval(interval); }); player.on("end", () => { clearInterval(interval); }); }; const handlePlayVideo = (player, overlay) => { player.once("play", () => { player.currentTime = 0; }); overlay.addEventListener("click", () => { player.togglePlay(); player.muted = false; player.volume = 1; }); }; const handleWidthFakeProgress = (progressElement, progress, height) => { progressElement.style = `--value-progress: ${progress}%; ${ height ? `height: ${height}px` : "" }`; }; const handleLoopFor80PercentVideo = (player) => { const { smartAutoplay } = _player_config; const percentage = 0.8; player.on("timeupdate", (event) => { if (!startTimer && smartAutoplay) { const duration = event.detail.plyr.duration; const currentTime = event.detail.plyr.currentTime; const timeToLoop = duration * percentage; if (currentTime >= timeToLoop) { player.currentTime = 0; } } }); }; const createProgress = (playerElement) => { const wrapper = document.createElement("div"); wrapper.className = "ag-wrapper-alternative-progress"; const progressElement = document.createElement("div"); progressElement.className = "ag-alternative-progress"; wrapper.appendChild(progressElement); if (playerElement) { playerElement.appendChild(wrapper); } const { alternativeProgress } = _player_config; player.on("timeupdate", (event) => { const defaultVelocity = alternativeProgress.recommendedSettings; const height = alternativeProgress.height; const duration = parseFloat(event.detail.plyr.duration.toFixed(3), 10); const currentTime = parseFloat( event.detail.plyr.currentTime.toFixed(3), 10 ); let progress; if (defaultVelocity) { let percentage = currentTime / duration; progress = 100 * Math.sqrt(1 - (percentage -= 1) * percentage); handleWidthFakeProgress(progressElement, progress, height); return; } const percentageVideo = alternativeProgress.percentage; const velocity = alternativeProgress.velocity; const l = percentageVideo / 100 / velocity; progress = currentTime < duration * l ? (progress = ((100 * currentTime) / duration) * velocity).toFixed(2) : percentageVideo + ((currentTime - duration * l) * (100 - percentageVideo)) / (duration * (1 - l)); if (progressElement && progress) { handleWidthFakeProgress(progressElement, progress, height); } }); }; const handleAutoplayAndMuted = (player) => { const { smartAutoplay } = _player_config; const wrapperButton = document.querySelector(".ag-wrapper-button-mute"); if (smartAutoplay && !!wrapperButton) { wrapperButton.style.display = "block"; } player.on("ready", (event) => { const instance = event.detail.plyr; instance.currentTime = 0; instance.muted = true; instance.play(); }); }; const handlePlayVideoMuted = (player, button) => { button.addEventListener("click", (e) => { e.preventDefault(); player.pause(); player.currentTime = 0; player.muted = false; player.volume = 1; player.play(); startTimer = true; button.style.display = "none"; const playerElement = document.querySelector(".plyr"); const { alternativeProgress } = window._player_config; if (alternativeProgress.active) createProgress(playerElement); }); }; var video; var canvas; const init = () => { const { alternativeProgress, smartAutoplay } = window._player_config; const fakeProgress = alternativeProgress.active; const player = createPlayer(); const playerElement = document.querySelector(".plyr"); const button = createButtonMuted(playerElement); createFakeLive(playerElement); handlePlayVideoMuted(player, button); const overlay = createVideoOverlay(playerElement); handlePlayVideo(player, overlay); observerVideoTime(player); if (smartAutoplay) handleAutoplayAndMuted(player); // fake progress if (fakeProgress && !smartAutoplay) createProgress(playerElement); handleLoopFor80PercentVideo(player); }; const start = (e) => { if (e.type === "load" && window.location.search.includes("elementor")) { setTimeout(() => { init(); }, 1000 * 2); } else { init(); } }; window.addEventListener("load", start); window.addEventListener("playerload", start);