PageSourceSearch

https://cdn.iol.pt/js/utils/iol-web-components/latest.js

js iol.pt collected 2026-09-24 08:27:01 UTC 21,288 bytes, 1 lines download raw bytes

1!function(){async function e(e=250){return new Promise(t=>setTimeout(()=>t(!0),e))}function t(e){return e=e.substring(0,e.lastIndexOf("%"))}function i(e,i){for(var n=encodeURIComponent(e);n.length>i;)n=t(n.substring(0,i));return decodeURIComponent(n)}function n(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/ /g,"")}function o(e,t,n,o){const r=document.querySelector("meta[property='iol:adunit']"),s=r?r.getAttribute("content"):"",a=document.querySelector("meta[property='iol:project']"),l=a?a.getAttribute("content"):"",d=/android|webview/i.test(navigator.userAgent)?"app":"web";return{"versao player":"MACRO_3.0",Programa_Nome:i(o?`${e} - ${o}`:e,150),Episodio_Id:"Sem Episódio",Multimedia_Id:t,Titulo:i(n||e,150),Videoplay_Simultaneo:"s",Tipo:"macro",Live:"vod",AdUnit:s,Video_Play:1,Plataforma:d.toUpperCase(),afiliado:l}}function r(e){window.dataLayer=window.dataLayer||[],"localhost"!==window.location.hostname&&"127.0.0.1"!==window.location.hostname?window.dataLayer.push(e):console.log("[dataLayer] "+e.eventCategory,e)}function s(e,t,i,n){const s={...o(e,t,i,n),eventLabel:e,eventAction:"Play",event:"gaPlay"};r({...s,eventCategory:"JW Player Video Plays"}),r({...s,eventCategory:"Play Programa"})}const a={Request:"JW Player Ad Request",Impression:"JW Player Ad Impression",Complete:"JW Player Ad Complete",Error:"JW Player Ad Error"};function l(e,t,i){const n=o(i,t.getAttribute("video-id")||t.getAttribute("tweet-id")||t.getAttribute("post-id")||"",t.getAttribute("title"),t.getAttribute("author"));r({...n,AdUnit:(n.AdUnit||"/130294768/iol_news")+"/VIDEO",eventCategory:a[e],eventAction:e,eventLabel:"pre",event:"gaEvent"})}const d=new Set(["7","8","9","12","13","14"]);function c(e,t,i){!function(e){const t=e.getAttribute("data-disable-preroll")??e.getAttribute("disable-preroll");return null!==t&&"false"!==t}(e)?u.playAd(e,t,i):console.log("IOLCOMERCIAL: pre-roll disabled for",e.tagName.toLowerCase())}class u{static loadIMASDK(){return window.google&&window.google.ima?Promise.resolve():(u._imaLoadPromise||(u._imaLoadPromise=new Promise((e,t)=>{const i=document.createElement("script");i.src="https://imasdk.googleapis.com/js/sdkloader/ima3.js",i.onload=()=>{console.log("IMA SDK Loaded"),e()},i.onerror=()=>{console.error("Failed to load IMA SDK"),u._imaLoadPromise=null,t()},document.head.appendChild(i)})),u._imaLoadPromise)}static async playAd(e,t,i){if(await async function(){try{let e=null;if(window._iol?.user?.accessToken?e=window._iol.user.accessToken:window.iol?.getAccessToken&&(e=await window.iol.getAccessToken()),!e)return!1;const t=e.split(".")[1];if(!t)return!1;const i=JSON.parse(atob(t.replace(/-/g,"+").replace(/_/g,"/")));return!!i?.subscribedProducts&&i.subscribedProducts.some(e=>d.has(String(e)))}catch{return!1}}())return void t();try{await this.loadIMASDK()}catch{return console.error("IMA SDK failed to load, skipping ad"),void t()}const o=`ad-player-${Math.random().toString(36).substr(2,9)}`,r=document.createElement("div");r.id=o,r.style.width="100%",r.style.height="100%",r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.zIndex="10",r.style.background="#000",r.style.opacity="0",r.style.transition="opacity 0.3s ease",r.style.cursor="pointer",r.style.display="flex",r.style.flexDirection="column",r.style.justifyContent="center",r.style.alignItems="center";const s=document.createElement("video");s.src="https://cdn.iol.pt/js/utils/SNMacro/assets/loading_1s.mp4",s.playsInline=!0,s.loop=!0,s.style.width="100%",s.style.height="100%",s.style.display="none",s.style.pointerEvents="none",r.appendChild(s);const a=document.createElement("div");a.style.position="absolute",a.style.bottom="0",a.style.left="0",a.style.right="0",a.style.display="none",a.style.alignItems="center",a.style.justifyContent="space-between",a.style.padding="6px 10px",a.style.background="linear-gradient(transparent, rgba(0,0,0,0.5))",a.style.zIndex="10001",a.style.pointerEvents="none",a.style.boxSizing="border-box";const c="background:none;border:none;color:#fff;cursor:pointer;font-size:18px;padding:2px 6px;pointer-events:auto;line-height:1;",u=document.createElement("button");u.textContent="⏸",u.style.cssText=c,u.addEventListener("click",e=>{e.stopPropagation(),C&&(x=!x,x?0===S.size&&C.pause():0===S.size&&C.resume())});const p=document.createElement("button");p.textContent="🔊",p.style.cssText=c;
1const m=document.createElement("input");m.type="range",m.min="0",m.max="1",m.step="0.05",m.value="1",m.style.cssText="width:70px;cursor:pointer;pointer-events:auto;accent-color:#fff;vertical-align:middle;";const h=e=>{p.textContent=0===e?"🔇":"🔊"};let g=1;p.addEventListener("click",e=>{if(e.stopPropagation(),C)if(0===C.getVolume()){const e=g||1;C.setVolume(e),m.value=e,h(e)}else g=C.getVolume(),C.setVolume(0),m.value="0",h(0)}),m.addEventListener("input",e=>{if(e.stopPropagation(),!C)return;const t=parseFloat(e.target.value);t>0&&(g=t),C.setVolume(t),h(t)});const y=document.createElement("span");y.style.cssText="color:#fff;font-size:12px;font-family:sans-serif;pointer-events:none;";const w=document.createElement("div");w.style.cssText="display:flex;align-items:center;gap:2px;pointer-events:none;",w.appendChild(u),w.appendChild(p),w.appendChild(m),a.appendChild(w),a.appendChild(y),r.appendChild(a),e.style.position="relative",e.style.display="block";const b=Array.from(e.querySelectorAll("iframe"));b.forEach(e=>e.style.pointerEvents="none"),e.appendChild(r);const v=document.querySelector("meta[property='iol:adunit']"),f=(v?v.getAttribute("content"):"/130294768/iol_news")+"/VIDEO",E=encodeURIComponent(window.location.href),A=Math.floor(1e5*Math.random())+1,_=(async()=>{const e=await async function(){return window._iol?window._iol.consentimento?.consentString||"":new Promise(e=>{let t=0;const i=setInterval(()=>{if(window.__tcfapi||t>=60){clearInterval(i);try{window.__tcfapi?.("addEventListener",2,(t,i)=>{i&&t.tcString?(window.__tcfapi("removeEventListener",2,e=>{e&&console.info("IOLCOMERCIAL: Quantcast listener removed")},t.listenerId),e(t.tcString)):e("")}),window.__tcfapi||e("")}catch(t){console.error("IOLCOMERCIAL: CMP not loaded",t),e("")}}t++},100)})}(),t=e?`&gdpr=1&gdpr_consent=${e}`:"",o=document.querySelector("meta[name='keywords']")||document.querySelector("meta[property='article:tag']"),r=o?o.getAttribute("content"):"",s=Array.from(new Set((r||"").split(",").map(n).filter(e=>e)));return i&&s.push(`macro_${n(i)}`),`https://pubads.g.doubleclick.net/gampad/ads?&sz=720x576&iu=${f}&ciu_szs&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&description_url=${E}&url=${E}${t}&plcmt=1&vpos=preroll&ad_rule=0&correlator=${A}&vid_d=0&cust_params=${encodeURIComponent(`category=${s.join(",")}`)}`})();let C=null,L=null,k=null,I=1,T=1,x=!1;const S=new Set;let M=null,P=null;const $=e=>{console.log("IMA Finish triggered:",e||"No reason given"),b.forEach(e=>e.style.pointerEvents=""),k&&(clearInterval(k),k=null),M&&(document.removeEventListener("visibilitychange",M),M=null),P&&(P.disconnect(),P=null),C&&(C.destroy(),C=null),r.parentNode&&r.remove(),t()},j=e=>{S.add(e),1===S.size&&!x&&C&&C.pause()},O=e=>{S.delete(e),0===S.size&&!x&&C&&C.resume()};let R=!1;const D=t=>{R||(R=!0,t&&"touchend"===t.type&&t.preventDefault(),(async()=>{const t=await _;console.log("User tapped overlay — requesting IMA Ads:",t),l("Request",e,i),r.style.opacity="1",s.style.display="block",s.play().catch(()=>{}),L=new google.ima.AdDisplayContainer(r,s),L.initialize();const n=new google.ima.AdsLoader(L);n.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,t=>{console.log("IMA AdsManager Loaded");const n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,C=t.getAdsManager(s,n),C.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,t=>{l("Error",e,i),$("AdError: "+t.getError())}),C.addEventListener(google.ima.AdEvent.Type.COMPLETE,()=>
1l("Complete",e,i)),C.addEventListener(google.ima.AdEvent.Type.ALL_ADS_COMPLETED,()=>$("All ads completed")),C.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>$("Content resume requested")),C.addEventListener(google.ima.AdEvent.Type.STARTED,t=>{const n=t.getAd().getAdPodInfo();I=n.getAdPosition(),T=n.getTotalAds(),l("Impression",e,i),u.textContent="⏸",a.style.display="flex",M||(M=()=>{document.hidden?j("visibility"):O("visibility")},document.addEventListener("visibilitychange",M)),P||(P=new IntersectionObserver(e=>{e[0].isIntersecting?O("viewport"):j("viewport")},{threshold:.5}),P.observe(r)),k&&clearInterval(k),k=setInterval(()=>{if(!C)return;const e=Math.ceil(C.getRemainingTime()),t=T>1?`Anúncio ${I} de ${T} · `:"";y.textContent=e>0?`${t}Esta publicidade termina em ${e} segundos.`:t.slice(0,-3)},500)}),C.addEventListener(google.ima.AdEvent.Type.PAUSED,()=>{u.textContent="▶"}),C.addEventListener(google.ima.AdEvent.Type.RESUMED,()=>{u.textContent="⏸"}),C.addEventListener(google.ima.AdEvent.Type.CLICK,()=>{const e=window.open;window.open=function(t,i,n){window.open=e;const o=e.call(window,t,i,n);return!o&&t&&(window.location.href=t),o}});try{const t=e.clientWidth||640,i=e.clientHeight||360;C.init(t,i,google.ima.ViewMode.NORMAL),C.start()}catch(e){console.error("IMA Error on start:",e),$("Start error")}},!1),n.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,t=>{l("Error",e,i),$("LoaderError: "+t.getError())},!1);const o=new google.ima.AdsRequest;o.adTagUrl=t;const d=e.clientWidth||640,c=e.clientHeight||360;o.linearAdSlotWidth=d,o.linearAdSlotHeight=c,o.nonLinearAdSlotWidth=d,o.nonLinearAdSlotHeight=c,n.requestAds(o)})().catch(e=>$("Start flow error: "+e)))};r.addEventListener("click",D),r.addEventListener("touchend",D)}}customElements.define("iol-gallery",class extends HTMLElement{constructor(){super()}async connectedCallback(){if(this._initialized)return;for(this._initialized=!0,void 0===window.IOLGallery&&(console.log("Injecting IOLGallery script..."),await new Promise(e=>{const t=document.createElement("script");t.src="https://cdn.iol.pt/js/utils/iol-gallery-2/iol-gallery-2.js",t.onload=e,document.head.appendChild(t)}));void 0===window.IOLGallery;)await e(250);const t=this.id,i=`iol-gallery-${t}`,n=this.dataset.project||(document.querySelector("meta[property='iol:project']")?.getAttribute("content")??"iol");this.innerHTML=`<div data-iol-gallery class="gallery-iol" id="${i}"/>`,new IOLGallery({id:t,project:n,selector:"#"+i})}}),customElements.define("iol-instant-gallery",class extends HTMLElement{constructor(){super()}async connectedCallback(){if(this._initialized)return;for(this._initialized=!0,void 0===window.IOLGallery&&(console.log("Injecting IOLGallery script for instant gallery..."),await new Promise(e=>{const t=document.createElement("script");t.src="https://cdn.iol.pt/js/utils/iol-gallery-2/iol-gallery-2.js",t.onload=e,document.head.appendChild(t)}));void 0===window.IOLGallery;)await e(250);const t="instant-gallery-"+(new Date).getTime(),i=this.dataset.pics,n=this.dataset.title,o=this.dataset.description,r=`iol-gallery-${t}`;this.innerHTML=`<div data-iol-gallery class="gallery-iol" id="${r}"/>`,new IOLInstantGallery(t,"#"+r,i,n,o)}}),customElements.define("iol-video",class extends HTMLElement{constructor(){super()}async connectedCallback(){if(this._initialized)return;this._initialized=!0;if(void 0===window.jwplayer||void 0===window.$||void 0===window.$.fn||void 0===window.$.fn.iolplayer){await(async()=>{window.$||(console.log("Injecting jQuery 3.7.1..."),await new Promise(e=>{const t=document.createElement("script");t.src="https://code.jquery.com/jquery-3.7.1.min.js",t.onload=e,document.head.appendChild(t)})),window.$.cookie||(console.log("Injecting jQuery Cookie..."),await new Promise(e=>{const t=document.createElement("script");t.src="https://cdn.iol.pt/js/utils/external/jquery.cookie/jquery.cookie.min.js",t.onload=e,document.head.appendChild(t)})),window.jwplayer||(console.log("Injecting JWPlayer base library..."),await new Promise(e=>{const t=document.createElement("script");t.src="https://content.jwplatform.com/libraries/giBojDlP.js",t.onload=e,document.head.appendChild(t)})),void 0===window.$.fn.iolplayer&&(console.log("Injecting IOL Player wrapper..."),await new Promise(e=>{const t=document.createElement("script");t.src="https://cdn.iol.pt/js/utils/JW8/iol.player_2.4.3.js",t.onload=e,document.head.appendChild(t)}))})();let t=0;for(;void 0===window.$.fn.iolplayer&&t<20;)await e(250),t++}const t=this.dataset.iolId,i=this.dataset.cover,n=this.dataset.prog,o=this.dataset.ep,r=this.dataset.title,s=this.dataset.desc,a=this.dataset.seconds,l=d
1ocument.querySelector("meta[property='iol:project']")?.getAttribute("content")??"iol",d=t.length,c=t.slice(d-4,d).split("").join("/"),u={id:t,videoType:"Clip",liveType:"VOD",program:{name:n??"Sem Programa",ep:o??"Sem Episódio"},title:r,description:s,duration:a,cover:`https://img.iol.pt/image/id/${i}/`,videoUrl:`https://streaming-vod2.iol.pt/vod/${c}/smil:${t}-L.smil/playlist.m3u8`,pub:`/130294768/${l}/web/VIDEO`};console.log("Initializing video "+t),this.innerHTML=`<div data-iol-video class="iol-video iol-embed" id="iol-video-${t}"></div>`;const p=this.querySelector(`#iol-video-${t}`);$(p).iolplayer({video:[u]})}}),customElements.define("iol-facebook-macro",class extends HTMLElement{constructor(){super()}static get observedAttributes(){return["video-id"]}_generateEmbed(e){if(!e)return"";return`\n                <div class="fb-video" id="facebook-embed" style="width:476px; height:476px;">\n                    <iframe\n                        src="https://www.facebook.com/plugins/video.php?height=476&href=${encodeURIComponent(`https://www.facebook.com/video.php?v=${e}`)}&show_text=false&width=476&t=0"\n                        width="476"\n                        height="476"\n                        style="border:none; overflow:hidden; width:476px; height:476px;"\n                        scrolling="no"\n                        frameborder="0"\n                        allowfullscreen="true"\n                        allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share">\n                    </iframe>\n                </div>`.trim()}render(){const e=this.getAttribute("video-id");e&&e!==this._renderedId&&(this._renderedId=e,this._analyticsFired=!1,this.innerHTML=this._generateEmbed(e),c(this,()=>{this._analyticsFired||(this._analyticsFired=!0,s("Facebook",e,this.getAttribute("title"),this.getAttribute("author")))},"Facebook"))}connectedCallback(){this.render()}attributeChangedCallback(e,t,i){"video-id"===e&&t!==i&&this.isConnected&&this.render()}}),customElements.define("iol-youtube-macro",class extends HTMLElement{constructor(){super()}static get observedAttributes(){return["video-id"]}_generateEmbed(e){if(!e)return"";return`\n                <div class="youtube-video" id="youtube-embed" style="width:100%; aspect-ratio:16/9; background:#000;">\n                    <iframe\n                        width="100%"\n                        height="100%"\n                        src="https://www.youtube-nocookie.com/embed/${e}?rel=0&enablejsapi=1&origin=${window.location.origin}"\n                        title="YouTube video player"\n                        frameborder="0"\n                        allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"\n                        referrerpolicy="strict-origin-when-cross-origin"\n                        allowfullscreen>\n                    </iframe>\n                </div>`.trim()}render(){const e=this.getAttribute("video-id");e&&e!==this._renderedId&&(this._renderedId=e,this._analyticsFired=!1,this.innerHTML=this._generateEmbed(e),c(this,()=>{const t=this.querySelector("iframe"),i=window.location.origin;t&&(t.src=`https://www.youtube-nocookie.com/embed/${e}?rel=0&autoplay=1&enablejsapi=1&origin=${i}`),this._analyticsFired||(this._analyticsFired=!0,s("YouTube",e,this.getAttribute("title"),this.getAttribute("author")))},"YouTube"))}connectedCallback(){this.render()}attributeChangedCallback(e,t,i){"video-id"===e&&t!==i&&this.isConnected&&this.render()}}),customElements.define("iol-twitter-macro",class extends HTMLElement{constructor(){super()}static get observedAttributes(){return["tweet-id"]}_generateEmbed(e){return e?`\n                <div class="twitter-embed-container" style="min-height: 300px;">\n                    <blockquote class="twitter-tweet" data-dnt="true">\n                        <a href="https://twitter.com/x/status/${e}"></a>\n                    </blockquote>\n                </div>`.trim():""}_loadTwitterScript(){if(window.twttr)return void window.twttr.widgets.load(this);const e=document.createElement("script");e.setAttribute("src","https://platform.twitter.com/widgets.js"),e.setAttribute("charset","utf-8"),e.async=!0,document.head.appendChild(e)}render(){const e=this.getAttribute("tweet-id");e&&e!==this._renderedId&&(this._renderedId=e,this._analyticsFired=!1,this.innerHTML=this._generateEmbed(e),this._loadTwitterScript(),c(this,()=>{this._analyticsFired||(this._analyticsFired=!0,s("Twitter",e,this.getAttribute("title"),this.getAttribute("author")))},"Twitter"))}connectedCallback(){this.render()}attributeChangedCallback(e,t,i){"tweet-id"===e&&t!==i&&this.isConnected&&this.render()}}),customElements.define("iol-tiktok-macro",class extends HTMLElement{constructor(){super()}static get observedAttributes(){return["video-id"]}_generateEmbed(e){return e?`\n                <div class="tiktok-embed-container" style="min-width: 325px; min-height: 580px;">\n                    <blockquote class="tiktok-embed"\n                                cite="https://www.tiktok.com/video/${e}
1?autoplay=0"\n                                data-video-id="${e}"\n                                style="max-width: 605px; min-width: 325px;">\n                        <section>\n                            <a target="_blank" href="https://www.tiktok.com/video/${e}">Loading TikTok...</a>\n                        </section>\n                    </blockquote>\n                </div>`.trim():""}_loadTiktokScript(){const e=document.getElementById("tiktok-embed-script");if(!window.tiktokEmbed&&!e){const e=document.createElement("script");e.id="tiktok-embed-script",e.src="https://www.tiktok.com/embed.js",e.async=!0,document.head.appendChild(e)}}render(){const e=this.getAttribute("video-id");e&&e!==this._renderedId&&(this._renderedId=e,this._analyticsFired=!1,this.innerHTML=this._generateEmbed(e),this._loadTiktokScript(),c(this,()=>{this._analyticsFired||(this._analyticsFired=!0,s("TikTok",e,this.getAttribute("title"),this.getAttribute("author")))},"TikTok"))}connectedCallback(){this.render()}attributeChangedCallback(e,t,i){"video-id"===e&&t!==i&&this.isConnected&&this.render()}});const p={_heights:new WeakMap,_installed:!1,install(){this._installed||(this._installed=!0,window.addEventListener("message",e=>this._onMessage(e)))},_frameFor(e){const t=document.getElementsByTagName("iframe");for(let i=t.length-1;i>=0;i--)if(t[i].contentWindow===e)return t[i];return null},_onMessage(e){let t,i;try{t=new URL(e.origin).host}catch{return}if("instagram.com"!==t&&!t.endsWith(".instagram.com"))return;try{i=JSON.parse(e.data)}catch{return}if("MEASURE"!==i?.type&&"MOUNTED"!==i?.type)return;const n=this._frameFor(e.source);if(!n||!n.classList.contains("instagram-media"))return;const o=Number(i.details?.height);
1"MEASURE"===i.type&&o>0&&this._heights.set(n,o);const r=this._heights.get(n);r&&setTimeout(()=>{n.getAttribute("height")!==String(r)&&n.setAttribute("height",String(r))},0)}};customElements.define("iol-instagram-macro",class extends HTMLElement{constructor(){super()}static get observedAttributes(){return["post-id"]}_generateEmbed(e){if(!e)return"";const t=new URL(`https://www.instagram.com/p/${encodeURIComponent(e)}/embed/captioned/`);return t.searchParams.set("cr","1"),t.searchParams.set("v","14"),t.searchParams.set("wp",String(Math.round((this.clientWidth||540)*(window.devicePixelRatio||1)))),t.searchParams.set("rd",location.origin),t.searchParams.set("rp",location.pathname.substring(0,200)),`\n                <div class="instagram-embed-container" style="min-width: 326px;">\n                    <iframe class="instagram-media"\n                            src="${t.toString()}"\n                            title="Publicação no Instagram"\n                            width="100%"\n                            height="540"\n                            frameborder="0"\n                            scrolling="no"\n                            allowtransparency="true"\n                            allowfullscreen\n                            style="background:#FFF; border:1px solid #dbdbdb; border-radius:3px; display:block; margin:1px auto; max-width:540px; min-width:326px;"></iframe>\n                </div>`.trim()}render(){const e=this.getAttribute("post-id");e&&e!==this._renderedId&&(this._renderedId=e,this._analyticsFired=!1,p.install(),this.innerHTML=this._generateEmbed(e),c(this,()=>{this._analyticsFired||(this._analyticsFired=!0,s("Instagram",e,this.getAttribute("title"),this.getAttribute("author")))},"Instagram"))}connectedCallback(){this.render()}attributeChangedCallback(e,t,i){"post-id"===e&&t!==i&&this.isConnected&&this.render()}})}();

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.