1 2(function(){'use strict';var config={rootMargin:'100px',threshold:0.1,vimeoAPI:'https://player.vimeo.com/api/player.js'};document.addEventListener('DOMContentLoaded',function(){var vimeoIframes=document.querySelectorAll('iframe[src*="vimeo.com"]');if(vimeoIframes.length===0){return} 3loadVimeoAPI();if('IntersectionObserver' in window){var observer=new IntersectionObserver(handleIntersection,config);vimeoIframes.forEach(function(iframe){var src=iframe.getAttribute('src');iframe.setAttribute('data-src',src);iframe.removeAttribute('src');iframe.style.background='#f0f0f0';iframe.style.minHeight='200px';observer.observe(iframe)})}else{vimeoIframes.forEach(function(iframe){loadIframe(iframe)})}});function handleIntersection(entries,observer){entries.forEach(function(entry){if(entry.isIntersecting){var iframe=entry.target;loadIframe(iframe);observer.unobserve(iframe)}})} 4function loadIframe(iframe){var src=iframe.getAttribute('data-src');if(!src)return;var url=new URL(src);url.searchParams.set('autoplay','0');url.searchParams.set('background','0');url.searchParams.set('muted','1');iframe.setAttribute('src',url.toString());iframe.style.background='none';setupVimeoControls(iframe)} 5function loadVimeoAPI(){if(window.Vimeo)return;var script=document.createElement('script');script.src=config.vimeoAPI;script.async=!0;script.onload=initVimeoPlayers;document.head.appendChild(script)} 6function initVimeoPlayers(){var iframes=document.querySelectorAll('iframe[src*="vimeo.com"]');iframes.forEach(function(iframe){if(iframe.getAttribute('data-vimeo-initialized')){return} 7try{var player=new Vimeo.Player(iframe);iframe.setAttribute('title','Vimeo video player');iframe.setAttribute('allow','autoplay; fullscreen; picture-in-picture');player.on('play',function(){iframe.setAttribute('aria-busy','true')});player.on('pause',function(){iframe.setAttribute('aria-busy','false')});player.on('ended',function(){iframe.setAttribute('aria-busy','false')});
7iframe.setAttribute('data-vimeo-initialized','true')}catch(error){console.warn('Error inicializando Vimeo player:',error)}})} 8function setupVimeoControls(iframe){var container=iframe.parentElement;if(container.querySelector('.vimeo-controls')){return} 9var controls=document.createElement('div');controls.className='vimeo-controls';controls.style.cssText=` 10 position: absolute; 11 bottom: 10px; 12 left: 10px; 13 right: 10px; 14 display: flex; 15 gap: 10px; 16 align-items: center; 17 z-index: 10; 18 opacity: 0; 19 transition: opacity 0.3s; 20 `;var playBtn=document.createElement('button');playBtn.className='vimeo-play-btn';playBtn.innerHTML='â¶';playBtn.style.cssText=` 21 background: rgba(0, 0, 0, 0.7); 22 color: white; 23 border: none; 24 width: 40px; 25 height: 40px; 26 border-radius: 50%; 27 font-size: 16px; 28 cursor: pointer; 29 display: flex; 30 align-items: center; 31 justify-content: center; 32 `;var progress=document.createElement('div');progress.className='vimeo-progress';progress.style.cssText=` 33 flex: 1; 34 height: 4px; 35 background: rgba(255, 255, 255, 0.3); 36 border-radius: 2px; 37 overflow: hidden; 38 `;var progressBar=document.createElement('div');progressBar.className='vimeo-progress-bar';progressBar.style.cssText=` 39 width: 0%; 40 height: 100%; 41 background: #00adef; 42 transition: width 0.1s; 43 `;progress.appendChild(progressBar);controls.appendChild(playBtn);controls.appendChild(progress);container.appendChild(controls);container.style.position='relative';container.addEventListener('mouseenter',function(){controls.style.opacity='1'});container.addEventListener('mouseleave',function(){controls.style.opacity='0'});container.setAttribute('tabindex','0');container.addEventListener('keydown',function(e){if(e.key===' '){e.preventDefault();playBtn.click()}})} 44window.cirionVimeoLazy={init:initVimeoPlayers,loadVimeoAPI:loadVimeoAPI}})(); 45 46
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.