@stlite/browser
Version:
Browser Stlite
2 lines (1 loc) • 2.62 kB
JavaScript
import{c as M,r as a,u as U,bz as w,bP as j,j as f,l as x}from"./index-B3URMCDH.js";const O=M("iframe",{target:"evvcert0"})(({theme:r})=>({colorScheme:"normal",border:"none",padding:r.spacing.none,margin:r.spacing.none,width:"100%",aspectRatio:"16 / 9"}),""),$=x.getLogger("Video"),A={width:"100%"};function k({element:r,endpoints:s,elementMgr:m}){const i=a.useRef(null),{type:h,url:v,startTime:o,subtitles:y,endTime:c,loop:l,autoplay:T,muted:S}=r,p=U(v),u=w(y),b=a.useMemo(()=>{if(!r.id)return!0;const e=m.getElementState(r.id,"preventAutoplay");return e||m.setElementState(r.id,"preventAutoplay",!0),e??!1},[r.id,m]),g=a.useMemo(()=>JSON.stringify(u?u.map(e=>s.buildMediaURL(`${e.url}`)):[]),[u,s]);a.useEffect(()=>{const e=JSON.parse(g);e.length!==0&&e.forEach(t=>{s.checkSourceUrlResponse(t,"Video Subtitle")})},[g,s]),a.useEffect(()=>{i.current&&(i.current.currentTime=o)},[o]),a.useEffect(()=>{const e=i.current,t=()=>{e&&(e.currentTime=r.startTime)};return e&&e.addEventListener("loadedmetadata",t),()=>{e&&e.removeEventListener("loadedmetadata",t)}},[r]),a.useEffect(()=>{const e=i.current;if(!e)return;let t=!1;const d=()=>{c>0&&e.currentTime>=c&&(l?(e.currentTime=o||0,e.play()):t||(t=!0,e.pause()))};return c>0&&e.addEventListener("timeupdate",d),()=>{e&&c>0&&e.removeEventListener("timeupdate",d)}},[c,l,o]),a.useEffect(()=>{const e=i.current;if(!e)return;const t=()=>{l&&(e.currentTime=o||0,e.play())};return e.addEventListener("ended",t),()=>{e&&e.removeEventListener("ended",t)}},[l,o]);const L=e=>{const{startTime:t,endTime:d,loop:N,autoplay:P,muted:R}=r,n=new URL(e);if(t&&!isNaN(t)&&n.searchParams.append("start",t.toString()),d&&!isNaN(d)&&n.searchParams.append("end",d.toString()),N){n.searchParams.append("loop","1");const E=n.pathname.split("/").pop();E&&n.searchParams.append("playlist",E)}return P&&n.searchParams.append("autoplay","1"),R&&n.searchParams.append("mute","1"),n.toString()};if(h===j.Type.YOUTUBE_IFRAME)return f.jsx(O,{className:"stVideo","data-testid":"stVideo",title:p,src:L(p),allow:"autoplay; encrypted-media",allowFullScreen:!0});const V=e=>{const t=e.currentTarget.src;$.error(`Client Error: Video source error - ${t}`),s.sendClientErrorToHost("Video","Video source failed to load","onerror triggered",t)};return f.jsx("video",{className:"stVideo","data-testid":"stVideo",ref:i,controls:!0,muted:S,autoPlay:T&&!b,src:s.buildMediaURL(p),style:A,crossOrigin:void 0,onError:V,children:u&&u.map((e,t)=>f.jsx("track",{kind:"captions",src:s.buildMediaURL(`${e.url}`),label:`${e.label}`,default:t===0,"data-testid":"stVideoSubtitle"},t))})}const J=a.memo(k);export{J as default};