UNPKG

@iqmo/browser

Version:

Browser Stlite

2 lines (1 loc) 1.6 kB
import{c as l,r as n,u as T,j as m,l as y}from"./index-C9lG8Cnd.js";const A=l("div",{target:"exyuj7n1"})(()=>({lineHeight:0}),""),L=l("audio",{target:"exyuj7n0"})(({theme:r})=>({width:"100%",height:r.sizes.minElementHeight,margin:0,padding:0}),""),h=y.getLogger("Audio");function x({element:r,endpoints:a,elementMgr:d}){const o=n.useRef(null),{startTime:i,endTime:u,loop:s,autoplay:f}=r,E=n.useMemo(()=>{if(!r.id)return!0;const e=d.getElementState(r.id,"preventAutoplay");return e||d.setElementState(r.id,"preventAutoplay",!0),e??!1},[r.id,d]);n.useEffect(()=>{o.current&&(o.current.currentTime=i)},[i]),n.useEffect(()=>{const e=o.current,t=()=>{e&&(e.currentTime=r.startTime)};return e&&e.addEventListener("loadedmetadata",t),()=>{e&&e.removeEventListener("loadedmetadata",t)}},[r]),n.useEffect(()=>{const e=o.current;if(!e)return;let t=!1;const c=()=>{u>0&&e.currentTime>=u&&(s?(e.currentTime=i||0,e.play()):t||(t=!0,e.pause()))};return u>0&&e.addEventListener("timeupdate",c),()=>{e&&u>0&&e.removeEventListener("timeupdate",c)}},[u,s,i]),n.useEffect(()=>{const e=o.current;if(!e)return;const t=()=>{s&&(e.currentTime=i||0,e.play())};return e.addEventListener("ended",t),()=>{e&&e.removeEventListener("ended",t)}},[s,i]);const g=T(r.url),p=a.buildMediaURL(g),v=e=>{const t=e.currentTarget.src;h.error(`Client Error: Audio source error - ${t}`),a.sendClientErrorToHost("Audio","Audio source failed to load","onerror triggered",t)};return m.jsx(A,{children:m.jsx(L,{className:"stAudio","data-testid":"stAudio",ref:o,controls:!0,autoPlay:f&&!E,src:p,onError:v})})}const j=n.memo(x);export{j as default};