UNPKG

ca-web-components

Version:

web components for Clínica Alemana

90 lines (83 loc) 5.4 kB
var c=Object.defineProperty;var l=(a,e,t)=>e in a?c(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var n=(a,e,t)=>l(a,typeof e!="symbol"?e+"":e,t);import{r as d,i as p,x as h}from"../assets/unsafe-html-DS3AO1W7.js";const i=class i extends d{static get properties(){return{videoId:{type:String},uri:{type:String},uriEmbed:{type:String},playLabel:{type:String},posterUrl:{type:String}}}constructor(){super(),this.videoId=this.getAttribute("videoid"),this.uri=this.getAttribute("uri"),this.uriEmbed=this.getAttribute("uriembed"),this.playLabel=this.getAttribute("playlabel")||"Play"}connectedCallback(){super.connectedCallback(),this.init()}disconnectedCallback(){this.removeEventListener("pointerover",i.warmConnections),super.disconnectedCallback()}static addPrefetch(e,t,r){const o=document.createElement("link");o.rel=e,o.href=t,r&&(o.as=r),document.head.append(o)}static checkWebPSupport(){return typeof i.hasWebPSupport<"u"?Promise.resolve(i.hasWebPSupport):new Promise(e=>{const t=o=>{i.hasWebPSupport=o,e(o)},r=new window.Image;r.onload=()=>t(!0),r.onerror=()=>t(!1),r.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="})}static warmConnections(){i.preconnected||(i.addPrefetch("preconnect","https://www.youtube-nocookie.com"),i.addPrefetch("preconnect","https://www.google.com"),i.addPrefetch("preconnect","https://googleads.g.doubleclick.net"),i.addPrefetch("preconnect","https://static.doubleclick.net"),i.preconnected=!0)}async init(){const e=await i.checkWebPSupport();if(this.uri){const t=new URL(this.uri);this.videoId=t.searchParams.get("v")}this.uriEmbed&&(this.videoId=this.uriEmbed.split("/").pop()),this.posterUrl=e?`https://i.ytimg.com/vi_webp/${this.videoId}/hqdefault.webp`:`https://i.ytimg.com/vi/${this.videoId}/hqdefault.jpg`,i.addPrefetch("preload",this.posterUrl,"image"),this.style.backgroundImage=`url("${this.posterUrl}")`,this.addEventListener("pointerover",i.warmConnections,{once:!0})}addIframe(){const e=new URLSearchParams(this.getAttribute("params")||[]);e.append("autoplay","1");const t=document.createElement("iframe");t.width=560,t.height=315,t.title=this.playLabel,t.allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",t.allowFullscreen=!0,t.src=`https://www.youtube-nocookie.com/embed/${this.videoId}?${e.toString()}`,this.renderRoot.appendChild(t),this.classList.add("lyt-activated"),this.renderRoot.querySelector(".lty-vid").remove(),this.renderRoot.querySelector(".lty-playbtn").remove()}render(){return h` <button @click="${this.addIframe}" class="lty-playbtn" aria-label="Botón de reproducción"><svg height="100%" version="1.1" viewBox="0 0 68 48" width="100%"><path class="ytp-large-play-button-bg" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z" fill="#f00"></path><path d="M 45,24 27,14 27,34" fill="#fff"></path></svg></button> <div class="lty-vid" videoid="${this.videoId}" playlabel="${this.playLabel}" style='background-image: url("${this.posterUrl}")'></div> `}};n(i,"styles",p` :host { background-color: #000; position: relative; display: block; contain: content; background-position: center center; background-size: cover; cursor: pointer; max-width: 720px; border-radius: 10px; width: 100%; } /* gradient */ :host::before { content: ''; display: block; position: absolute; top: 0; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==); background-position: top; background-repeat: repeat-x; height: 60px; padding-bottom: 50px; width: 100%; transition: all 0.2s cubic-bezier(0, 0, 0.2, 1); } :host::after { content: ""; display: block; padding-bottom: calc(100% / (16 / 9)); } :host > iframe { width: 100%; height: 100%; position: absolute; top: 0; left: 0; border: 0; } /* play button */ :host > .lty-playbtn { display: block; width: 68px; height: 48px; position: absolute; cursor: pointer; transform: translate3d(-50%, -50%, 0); top: 50%; left: 50%; z-index: 1; background-color: transparent; transition: filter .1s cubic-bezier(0, 0, 0.2, 1); border: none; padding: 0; margin: 0; } :host:hover > .lty-playbtn, :host .lty-playbtn:focus { filter: none; } /* Post-click styles */ :host.lyt-activated { cursor: unset; } :host.lyt-activated::before, :host.lyt-activated > .lty-playbtn { opacity: 0; pointer-events: none; } .lyt-visually-hidden { clip: rect(0 0 0 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; } `);let s=i;customElements.define("ca-youtube",s);