@urun-sh/react 0.1.47 → 0.1.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var dr=Object.create;var oe=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var mr=Object.getPrototypeOf,fr=Object.prototype.hasOwnProperty;var gr=(r,e)=>{for(var t in e)oe(r,t,{get:e[t],enumerable:!0})},xe=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pr(e))!fr.call(r,s)&&s!==t&&oe(r,s,{get:()=>e[s],enumerable:!(n=lr(e,s))||n.enumerable});return r};var hr=(r,e,t)=>(t=r!=null?dr(mr(r)):{},xe(e||!r||!r.__esModule?oe(t,"default",{value:r,enumerable:!0}):t,r)),vr=r=>xe(oe({},"__esModule",{value:!0}),r);var Ur={};gr(Ur,{ComponentRenderer:()=>He,ImageFrame:()=>Ge,ImageFrameSchema:()=>Ze,MetricsPanel:()=>Qe,MetricsPanelSchema:()=>Ye,ProgressCard:()=>Xe,ProgressCardSchema:()=>Fe,StatusBadge:()=>Je,StatusBadgeSchema:()=>$e,TextStream:()=>Ke,TextStreamSchema:()=>We,UrunAuthProvider:()=>fe,UrunErrorBoundary:()=>z,UrunJwtProvider:()=>_e,UrunProvider:()=>Ae,UrunVideo:()=>ir,authMode:()=>G,registerComponent:()=>De,urunPublicEnv:()=>M,useApp:()=>Ne,useChat:()=>Ve,useCompletion:()=>Oe,useImageFrame:()=>Ce,useMetricsPanel:()=>Re,useProgressCard:()=>be,useRequest:()=>qe,useStatusBadge:()=>Se,useTextStream:()=>ke,useUrunAuth:()=>ae,usesWorkOSAuth:()=>Ee});module.exports=vr(Ur);var F=require("react");var Te=require("react"),Z=require("react/jsx-runtime"),z=class extends Te.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,Z.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,Z.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,Z.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var Pe=require("react"),ie=(0,Pe.createContext)(null);function V(r){return r&&r.trim()?r.trim():void 0}function M(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return V(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return V(typeof process<"u"?process.env?.[r]:void 0)}}function G(){let r=M("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||M("VERCEL_ENV")==="production"?"workos":M("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function Ee(){return G()==="workos"}var H=require("react"),Ue=require("react/jsx-runtime"),we=(0,H.createContext)(null);function fe({getAccessToken:r,children:e}){let t=(0,H.useMemo)(()=>({getAccessToken:r}),[r]);return(0,Ue.jsx)(we.Provider,{value:t,children:e})}var _e=fe;function ae(){return(0,H.useContext)(we)}var ue=require("react/jsx-runtime");function Ae({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:s,fallback:i,children:a}){let[w,u]=(0,F.useState)(),m=ae(),C=M("NEXT_PUBLIC_SESSION_TOKEN")??M("NEXT_PUBLIC_URUN_JWT"),c=G(),l=c==="workos"&&!n,P=n??(c==="jwt"?C:void 0)??w,_=s??M("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),R=l&&!P,b=(0,F.useMemo)(()=>({appId:t,baseUrl:r,orgId:e,jwt:P,getAccessToken:l?m?.getAccessToken:void 0,authProvider:_}),[t,m,r,_,P,e,l]);return(0,F.useEffect)(()=>{if(!l||!m)return;let f=!1,v=m;async function g(){try{let E=await v.getAccessToken();f||u(E??void 0)}catch{f||u(void 0)}}g();let U=window.setInterval(()=>{g()},6e4);return()=>{f=!0,window.clearInterval(U)}},[m,l]),(0,ue.jsx)(z,{fallback:i,children:R?(0,ue.jsx)("div",{role:"status","aria-live":"polite",children:"Signing in..."}):(0,ue.jsx)(ie.Provider,{value:b,children:a})})}var O=require("react"),Ie=require("@urun-sh/core");function yr(r,e){return`${r}:${JSON.stringify(e??{})}`}var ge=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}get synced(){return this._doc.synced}onSynced(e){return this._doc.onSynced(()=>{e(),this._notify()})}text(e){let t=this._doc.text(e),n=this._notify;return{append(s){t.append(s),n()},toString:()=>t.toString(),get length(){return t.length},on:(s,i)=>t.on(s,a=>{i(a),n()})}}dispose(){this._unsubscribeChange()}},he=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}attachVideo(e){return this._stream.attachVideo(e)}detach(){return this._stream.detach()}detachVideo(){return this._stream.detachVideo()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}messages(){return this._stream.messages()}emit(e,t){return this._stream.emit(e,t)}dispose(){this._unsubscribeTrack()}},ve=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}request(e,t){return this._session.request(e,t)}requestStream(e,t){return this._session.requestStream(e,t)}complete(e,t){return this._session.complete(e,t)}doc(e){let t=this._docs.get(e);return t||(t=new ge(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new he(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function Ne(){let r=(0,O.useContext)(ie);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,O.useReducer)(s=>s+1,0),t=(0,O.useRef)(new Map),n=(0,O.useMemo)(()=>(0,Ie.App)(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return(0,O.useMemo)(()=>new Proxy({},{get(s,i){if(typeof i=="string")return a=>{let w=yr(i,a),u=t.current.get(w);if(u)return u;let m=new ve(n[i](a),e);return t.current.set(w,m),m}}}),[n])}var k=require("react");function X(r){let e=r;if(!e||typeof e.request!="function"||typeof e.requestStream!="function")throw new Error("This session does not support request/requestStream. Upgrade @urun-sh/core to a version that ships the request/response primitive.");return e}function br(r){return r instanceof Error?r:new Error(String(r))}function qe(r,e){let t=(0,k.useMemo)(()=>X(r),[r]),[n,s]=(0,k.useState)(void 0),[i,a]=(0,k.useState)(null),[w,u]=(0,k.useState)(!1),m=(0,k.useRef)(e);m.current=e;let C=(0,k.useRef)(0),c=(0,k.useRef)(null),l=(0,k.useRef)(!0);(0,k.useEffect)(()=>(l.current=!0,()=>{l.current=!1,c.current?.abort()}),[]);let P=(0,k.useCallback)(async b=>{c.current?.abort();let f=new AbortController;c.current=f;let v=++C.current,g=()=>l.current&&C.current===v;g()&&(u(!0),a(null));try{let U=await t.request(b,{...m.current,signal:f.signal});return g()&&(s(U),u(!1),m.current?.onSuccess?.(U)),U}catch(U){let E=br(U);throw g()&&(a(E),u(!1),m.current?.onError?.(E)),E}},[t]),_=(0,k.useCallback)(b=>{P(b).catch(()=>{})},[P]),R=(0,k.useCallback)(()=>{C.current++,c.current?.abort(),c.current=null,s(void 0),a(null),u(!1)},[]);return{mutate:_,mutateAsync:P,data:n,error:i,isPending:w,reset:R}}var T=require("react");function Me(r){return r instanceof Error?r:new Error(String(r))}var Sr=r=>typeof r=="string"?r:String(r);function Oe(r,e){let t=(0,T.useMemo)(()=>X(r),[r]),[n,s]=(0,T.useState)(""),[i,a]=(0,T.useState)(!1),[w,u]=(0,T.useState)(null),m=(0,T.useRef)(e);m.current=e;let C=(0,T.useRef)(0),c=(0,T.useRef)(null),l=(0,T.useRef)(!0);(0,T.useEffect)(()=>(l.current=!0,()=>{l.current=!1,c.current?.cancel(),c.current=null}),[]);let P=(0,T.useCallback)(()=>{C.current++,c.current?.cancel(),c.current=null,l.current&&a(!1)},[]),_=(0,T.useCallback)(async R=>{c.current?.cancel();let b=++C.current,f=()=>l.current&&C.current===b,v=m.current,g=v?.parseChunk??Sr,U=v?.buildPayload??(p=>({prompt:p}));f()&&(s(""),u(null),a(!0));let{parseChunk:E,buildPayload:le,onFinish:I,onError:o,...d}=v??{},S="",x;try{x=t.requestStream(U(R),d),c.current=x}catch(p){let N=Me(p);f()&&(u(N),a(!1),v?.onError?.(N));return}try{for await(let p of x){if(C.current!==b)break;S+=g(p),f()&&s(S)}f()&&(a(!1),v?.onFinish?.(S))}catch(p){let N=Me(p);f()&&(u(N),a(!1),v?.onError?.(N))}finally{c.current===x&&(c.current=null)}},[t]);return{completion:n,complete:_,stop:P,isStreaming:i,error:w}}var h=require("react");function Le(r){return r instanceof Error?r:new Error(String(r))}var kr=r=>typeof r=="string"?r:String(r),je=0;function ye(r){return je+=1,`${r}-${je}`}function Ve(r,e){let t=(0,h.useMemo)(()=>X(r),[r]),[n,s]=(0,h.useState)(()=>(e?.initialMessages??[]).map(g=>({id:g.id??ye("msg"),role:g.role,content:g.content}))),[i,a]=(0,h.useState)(""),[w,u]=(0,h.useState)(!1),[m,C]=(0,h.useState)(null),c=(0,h.useRef)(e);c.current=e;let l=(0,h.useRef)(n);l.current=n;let P=(0,h.useRef)(i);P.current=i;let _=(0,h.useRef)(0),R=(0,h.useRef)(null),b=(0,h.useRef)(!0);(0,h.useEffect)(()=>(b.current=!0,()=>{b.current=!1,R.current?.cancel(),R.current=null}),[]);let f=(0,h.useCallback)(()=>{_.current++,R.current?.cancel(),R.current=null,b.current&&u(!1)},[]),v=(0,h.useCallback)(async g=>{let U=g===void 0,E=(U?P.current:g)??"";if(!E.trim())return;R.current?.cancel();let I=++_.current,o=()=>b.current&&_.current===I,d=c.current,S=d?.parseChunk??kr,x={id:ye("msg"),role:"user",content:E},p={id:ye("msg"),role:"assistant",content:""},N=[...l.current,x].map(A=>({role:A.role,content:A.content})),K=[...l.current,x,p];l.current=K,s(K),U&&a(""),C(null),u(!0);let ar=d?.buildPayload??(A=>({messages:A})),{initialMessages:Ar,parseChunk:Ir,buildPayload:Nr,onFinish:qr,onError:Mr,...ur}=d??{},cr=A=>{s(j=>j.map(me=>me.id===p.id?{...me,content:A}:me))},pe="",se;try{se=t.requestStream(ar(N),ur),R.current=se}catch(A){let j=Le(A);o()&&(C(j),u(!1),d?.onError?.(j));return}try{for await(let A of se){if(_.current!==I)break;pe+=S(A),o()&&cr(pe)}o()&&(u(!1),d?.onFinish?.({...p,content:pe}))}catch(A){let j=Le(A);o()&&(C(j),u(!1),d?.onError?.(j))}finally{R.current===se&&(R.current=null)}},[t]);return{messages:n,input:i,setInput:a,sendMessage:v,stop:f,isStreaming:w,error:m}}var Be=new Map;function De(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);Be.set(r,{component:e,schema:t})}function ze(r,e){let t=Be.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}var B=require("react/jsx-runtime");function He({name:r,props:e,fallback:t}){let n=ze(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?(0,B.jsx)(B.Fragment,{children:t}):(0,B.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,B.jsx)("span",{className:"urun-component-error-text",children:n.error})});let s=n.Component;return(0,B.jsx)(s,{...n.validatedProps})}var $=require("zod"),D=require("react/jsx-runtime"),Fe=$.z.object({step:$.z.number().min(0),total:$.z.number().min(1),label:$.z.string().optional(),variant:$.z.enum(["default","success","error"]).default("default")});function be(r){let{step:e,total:t,label:n,variant:s="default"}=r,i=Math.min(e/t*100,100),a=e>=t;return{step:e,total:t,label:n,variant:s,percentage:i,isComplete:a}}function Xe(r){let{step:e,total:t,label:n,variant:s,percentage:i}=be(r);return(0,D.jsxs)("div",{className:"urun-progress-card","data-variant":s,children:[n&&(0,D.jsx)("div",{className:"urun-progress-label",children:n}),(0,D.jsx)("div",{className:"urun-progress-bar",children:(0,D.jsx)("div",{className:"urun-progress-fill",style:{width:`${i}%`}})}),(0,D.jsxs)("div",{className:"urun-progress-text",children:[e,"/",t]})]})}var ce=require("zod"),Y=require("react/jsx-runtime"),$e=ce.z.object({state:ce.z.enum(["thinking","generating","idle","error"]),message:ce.z.string().optional()}),Cr={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function Se(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",s=t??Cr[e]??e;return{state:e,message:s,isActive:n}}function Je(r){let{state:e,message:t,isActive:n}=Se(r);return(0,Y.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,Y.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,Y.jsx)("span",{className:"urun-status-message",children:t})]})}var Q=require("react"),de=require("zod"),ee=require("react/jsx-runtime"),We=de.z.object({text:de.z.string(),streaming:de.z.boolean().default(!1)});function ke(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function Ke(r){let{text:e,streaming:t}=ke(r),n=(0,Q.useRef)(null),s=(0,Q.useRef)(0);return(0,Q.useEffect)(()=>{let i=n.current;i&&e.length!==s.current&&(i.textContent=e,s.current=e.length)},[e]),(0,ee.jsxs)("div",{className:"urun-text-stream",children:[(0,ee.jsx)("span",{ref:n,className:"urun-text-content"}),t&&(0,ee.jsx)("span",{className:"urun-text-cursor"})]})}var re=require("zod"),te=require("react/jsx-runtime"),Ze=re.z.object({src:re.z.string().url(),alt:re.z.string().optional(),caption:re.z.string().optional()});function Ce(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function Ge(r){let{src:e,alt:t,caption:n}=Ce(r);return(0,te.jsxs)("figure",{className:"urun-image-frame",children:[(0,te.jsx)("img",{className:"urun-image",src:e,alt:t}),n&&(0,te.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var L=require("zod"),J=require("react/jsx-runtime"),Ye=L.z.object({metrics:L.z.array(L.z.object({label:L.z.string(),value:L.z.union([L.z.string(),L.z.number()]),unit:L.z.string().optional()}))});function Re(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function Qe(r){let{metrics:e}=Re(r);return(0,J.jsx)("div",{className:"urun-metrics-panel",children:e.map((t,n)=>(0,J.jsxs)("div",{className:"urun-metric-card",children:[(0,J.jsx)("div",{className:"urun-metric-label",children:t.label}),(0,J.jsx)("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}var y=require("react"),sr=hr(require("video.js")),ft=require("video.js/dist/video-js.css");var W=require("react");var ne=require("react"),Rr=require("@urun-sh/core/internal");var xr=require("react/jsx-runtime"),er=(0,ne.createContext)(null);function rr(r){let e=(0,W.useContext)(er);if(!e)throw new Error("useTrack must be used within <SessionProvider> or <UrunProvider>");let[t,n]=(0,W.useState)(null);return(0,W.useEffect)(()=>{let s=e.getState()._transport;if(!s)return;let i=s.getTrackByName?.bind(s),a=i?.(r);a&&a.readyState!=="ended"&&n(a);let w=s.on("track",u=>{let m=i?.(r);m&&m.id!==u.id||(n(u),u.addEventListener("ended",()=>{n(null)}))});return()=>{w()}},[r,e]),t}var q=require("react/jsx-runtime");function tr(r){r.posterImage?.hide?.()}var Tr=`
|
|
1
|
+
"use strict";var dr=Object.create;var oe=Object.defineProperty;var lr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var mr=Object.getPrototypeOf,fr=Object.prototype.hasOwnProperty;var gr=(r,e)=>{for(var t in e)oe(r,t,{get:e[t],enumerable:!0})},xe=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pr(e))!fr.call(r,s)&&s!==t&&oe(r,s,{get:()=>e[s],enumerable:!(n=lr(e,s))||n.enumerable});return r};var hr=(r,e,t)=>(t=r!=null?dr(mr(r)):{},xe(e||!r||!r.__esModule?oe(t,"default",{value:r,enumerable:!0}):t,r)),vr=r=>xe(oe({},"__esModule",{value:!0}),r);var Ur={};gr(Ur,{ComponentRenderer:()=>He,ImageFrame:()=>Ge,ImageFrameSchema:()=>Ze,MetricsPanel:()=>Qe,MetricsPanelSchema:()=>Ye,ProgressCard:()=>Xe,ProgressCardSchema:()=>Fe,StatusBadge:()=>Je,StatusBadgeSchema:()=>$e,TextStream:()=>Ke,TextStreamSchema:()=>We,UrunAuthProvider:()=>fe,UrunErrorBoundary:()=>z,UrunJwtProvider:()=>_e,UrunProvider:()=>Ae,UrunVideo:()=>ir,authMode:()=>G,registerComponent:()=>De,urunPublicEnv:()=>M,useApp:()=>Ne,useChat:()=>Ve,useCompletion:()=>Oe,useImageFrame:()=>Ce,useMetricsPanel:()=>Re,useProgressCard:()=>be,useRequest:()=>qe,useStatusBadge:()=>Se,useTextStream:()=>ke,useUrunAuth:()=>ae,usesWorkOSAuth:()=>Ee});module.exports=vr(Ur);var F=require("react");var Te=require("react"),Z=require("react/jsx-runtime"),z=class extends Te.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,Z.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,Z.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,Z.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var Pe=require("react"),ie=(0,Pe.createContext)(null);function V(r){return r&&r.trim()?r.trim():void 0}function M(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return V(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return V(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return V(typeof process<"u"?process.env?.[r]:void 0)}}function G(){let r=M("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||M("VERCEL_ENV")==="production"?"workos":M("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function Ee(){return G()==="workos"}var H=require("react"),Ue=require("react/jsx-runtime"),we=(0,H.createContext)(null);function fe({getAccessToken:r,children:e}){let t=(0,H.useMemo)(()=>({getAccessToken:r}),[r]);return(0,Ue.jsx)(we.Provider,{value:t,children:e})}var _e=fe;function ae(){return(0,H.useContext)(we)}var ue=require("react/jsx-runtime");function Ae({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:s,fallback:i,children:a}){let[w,u]=(0,F.useState)(),m=ae(),C=M("NEXT_PUBLIC_SESSION_TOKEN")??M("NEXT_PUBLIC_URUN_JWT"),c=G(),l=c==="workos"&&!n,P=n??(c==="jwt"?C:void 0)??w,_=s??M("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),R=l&&!P,b=(0,F.useMemo)(()=>({appId:t,baseUrl:r,orgId:e,jwt:P,getAccessToken:l?m?.getAccessToken:void 0,authProvider:_}),[t,m,r,_,P,e,l]);return(0,F.useEffect)(()=>{if(!l||!m)return;let f=!1,v=m;async function g(){try{let E=await v.getAccessToken();f||u(E??void 0)}catch{f||u(void 0)}}g();let U=window.setInterval(()=>{g()},6e4);return()=>{f=!0,window.clearInterval(U)}},[m,l]),(0,ue.jsx)(z,{fallback:i,children:R?(0,ue.jsx)("div",{role:"status","aria-live":"polite",children:"Signing in..."}):(0,ue.jsx)(ie.Provider,{value:b,children:a})})}var O=require("react"),Ie=require("@urun-sh/core");function yr(r,e){return`${r}:${JSON.stringify(e??{})}`}var ge=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}get synced(){return this._doc.synced}onSynced(e){return this._doc.onSynced(()=>{e(),this._notify()})}text(e){let t=this._doc.text(e),n=this._notify;return{append(s){t.append(s),n()},toString:()=>t.toString(),get length(){return t.length},on:(s,i)=>t.on(s,a=>{i(a),n()})}}dispose(){this._unsubscribeChange()}},he=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}attachVideo(e){return this._stream.attachVideo(e)}detach(){return this._stream.detach()}detachVideo(){return this._stream.detachVideo()}seek(e){return this._stream.seek(e)}chunks(e){return this._stream.chunks(e)}onSeeked(e){return this._stream.onSeeked(e)}on(e,t){return this._stream.on(e,t)}messages(){return this._stream.messages()}emit(e,t){return this._stream.emit(e,t)}dispose(){this._unsubscribeTrack()}},ve=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}request(e,t){return this._session.request(e,t)}requestStream(e,t){return this._session.requestStream(e,t)}complete(e,t){return this._session.complete(e,t)}doc(e){let t=this._docs.get(e);return t||(t=new ge(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new he(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function Ne(){let r=(0,O.useContext)(ie);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,O.useReducer)(s=>s+1,0),t=(0,O.useRef)(new Map),n=(0,O.useMemo)(()=>(0,Ie.App)(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return(0,O.useMemo)(()=>new Proxy({},{get(s,i){if(typeof i=="string")return a=>{let w=yr(i,a),u=t.current.get(w);if(u)return u;let m=new ve(n[i](a),e);return t.current.set(w,m),m}}}),[n])}var k=require("react");function X(r){let e=r;if(!e||typeof e.request!="function"||typeof e.requestStream!="function")throw new Error("This session does not support request/requestStream. Upgrade @urun-sh/core to a version that ships the request/response primitive.");return e}function br(r){return r instanceof Error?r:new Error(String(r))}function qe(r,e){let t=(0,k.useMemo)(()=>X(r),[r]),[n,s]=(0,k.useState)(void 0),[i,a]=(0,k.useState)(null),[w,u]=(0,k.useState)(!1),m=(0,k.useRef)(e);m.current=e;let C=(0,k.useRef)(0),c=(0,k.useRef)(null),l=(0,k.useRef)(!0);(0,k.useEffect)(()=>(l.current=!0,()=>{l.current=!1,c.current?.abort()}),[]);let P=(0,k.useCallback)(async b=>{c.current?.abort();let f=new AbortController;c.current=f;let v=++C.current,g=()=>l.current&&C.current===v;g()&&(u(!0),a(null));try{let U=await t.request(b,{...m.current,signal:f.signal});return g()&&(s(U),u(!1),m.current?.onSuccess?.(U)),U}catch(U){let E=br(U);throw g()&&(a(E),u(!1),m.current?.onError?.(E)),E}},[t]),_=(0,k.useCallback)(b=>{P(b).catch(()=>{})},[P]),R=(0,k.useCallback)(()=>{C.current++,c.current?.abort(),c.current=null,s(void 0),a(null),u(!1)},[]);return{mutate:_,mutateAsync:P,data:n,error:i,isPending:w,reset:R}}var T=require("react");function Me(r){return r instanceof Error?r:new Error(String(r))}var Sr=r=>typeof r=="string"?r:String(r);function Oe(r,e){let t=(0,T.useMemo)(()=>X(r),[r]),[n,s]=(0,T.useState)(""),[i,a]=(0,T.useState)(!1),[w,u]=(0,T.useState)(null),m=(0,T.useRef)(e);m.current=e;let C=(0,T.useRef)(0),c=(0,T.useRef)(null),l=(0,T.useRef)(!0);(0,T.useEffect)(()=>(l.current=!0,()=>{l.current=!1,c.current?.cancel(),c.current=null}),[]);let P=(0,T.useCallback)(()=>{C.current++,c.current?.cancel(),c.current=null,l.current&&a(!1)},[]),_=(0,T.useCallback)(async R=>{c.current?.cancel();let b=++C.current,f=()=>l.current&&C.current===b,v=m.current,g=v?.parseChunk??Sr,U=v?.buildPayload??(p=>({prompt:p}));f()&&(s(""),u(null),a(!0));let{parseChunk:E,buildPayload:le,onFinish:I,onError:o,...d}=v??{},S="",x;try{x=t.requestStream(U(R),d),c.current=x}catch(p){let N=Me(p);f()&&(u(N),a(!1),v?.onError?.(N));return}try{for await(let p of x){if(C.current!==b)break;S+=g(p),f()&&s(S)}f()&&(a(!1),v?.onFinish?.(S))}catch(p){let N=Me(p);f()&&(u(N),a(!1),v?.onError?.(N))}finally{c.current===x&&(c.current=null)}},[t]);return{completion:n,complete:_,stop:P,isStreaming:i,error:w}}var h=require("react");function Le(r){return r instanceof Error?r:new Error(String(r))}var kr=r=>typeof r=="string"?r:String(r),je=0;function ye(r){return je+=1,`${r}-${je}`}function Ve(r,e){let t=(0,h.useMemo)(()=>X(r),[r]),[n,s]=(0,h.useState)(()=>(e?.initialMessages??[]).map(g=>({id:g.id??ye("msg"),role:g.role,content:g.content}))),[i,a]=(0,h.useState)(""),[w,u]=(0,h.useState)(!1),[m,C]=(0,h.useState)(null),c=(0,h.useRef)(e);c.current=e;let l=(0,h.useRef)(n);l.current=n;let P=(0,h.useRef)(i);P.current=i;let _=(0,h.useRef)(0),R=(0,h.useRef)(null),b=(0,h.useRef)(!0);(0,h.useEffect)(()=>(b.current=!0,()=>{b.current=!1,R.current?.cancel(),R.current=null}),[]);let f=(0,h.useCallback)(()=>{_.current++,R.current?.cancel(),R.current=null,b.current&&u(!1)},[]),v=(0,h.useCallback)(async g=>{let U=g===void 0,E=(U?P.current:g)??"";if(!E.trim())return;R.current?.cancel();let I=++_.current,o=()=>b.current&&_.current===I,d=c.current,S=d?.parseChunk??kr,x={id:ye("msg"),role:"user",content:E},p={id:ye("msg"),role:"assistant",content:""},N=[...l.current,x].map(A=>({role:A.role,content:A.content})),K=[...l.current,x,p];l.current=K,s(K),U&&a(""),C(null),u(!0);let ar=d?.buildPayload??(A=>({messages:A})),{initialMessages:Ar,parseChunk:Ir,buildPayload:Nr,onFinish:qr,onError:Mr,...ur}=d??{},cr=A=>{s(j=>j.map(me=>me.id===p.id?{...me,content:A}:me))},pe="",se;try{se=t.requestStream(ar(N),ur),R.current=se}catch(A){let j=Le(A);o()&&(C(j),u(!1),d?.onError?.(j));return}try{for await(let A of se){if(_.current!==I)break;pe+=S(A),o()&&cr(pe)}o()&&(u(!1),d?.onFinish?.({...p,content:pe}))}catch(A){let j=Le(A);o()&&(C(j),u(!1),d?.onError?.(j))}finally{R.current===se&&(R.current=null)}},[t]);return{messages:n,input:i,setInput:a,sendMessage:v,stop:f,isStreaming:w,error:m}}var Be=new Map;function De(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);Be.set(r,{component:e,schema:t})}function ze(r,e){let t=Be.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}var B=require("react/jsx-runtime");function He({name:r,props:e,fallback:t}){let n=ze(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?(0,B.jsx)(B.Fragment,{children:t}):(0,B.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,B.jsx)("span",{className:"urun-component-error-text",children:n.error})});let s=n.Component;return(0,B.jsx)(s,{...n.validatedProps})}var $=require("zod"),D=require("react/jsx-runtime"),Fe=$.z.object({step:$.z.number().min(0),total:$.z.number().min(1),label:$.z.string().optional(),variant:$.z.enum(["default","success","error"]).default("default")});function be(r){let{step:e,total:t,label:n,variant:s="default"}=r,i=Math.min(e/t*100,100),a=e>=t;return{step:e,total:t,label:n,variant:s,percentage:i,isComplete:a}}function Xe(r){let{step:e,total:t,label:n,variant:s,percentage:i}=be(r);return(0,D.jsxs)("div",{className:"urun-progress-card","data-variant":s,children:[n&&(0,D.jsx)("div",{className:"urun-progress-label",children:n}),(0,D.jsx)("div",{className:"urun-progress-bar",children:(0,D.jsx)("div",{className:"urun-progress-fill",style:{width:`${i}%`}})}),(0,D.jsxs)("div",{className:"urun-progress-text",children:[e,"/",t]})]})}var ce=require("zod"),Y=require("react/jsx-runtime"),$e=ce.z.object({state:ce.z.enum(["thinking","generating","idle","error"]),message:ce.z.string().optional()}),Cr={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function Se(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",s=t??Cr[e]??e;return{state:e,message:s,isActive:n}}function Je(r){let{state:e,message:t,isActive:n}=Se(r);return(0,Y.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,Y.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,Y.jsx)("span",{className:"urun-status-message",children:t})]})}var Q=require("react"),de=require("zod"),ee=require("react/jsx-runtime"),We=de.z.object({text:de.z.string(),streaming:de.z.boolean().default(!1)});function ke(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function Ke(r){let{text:e,streaming:t}=ke(r),n=(0,Q.useRef)(null),s=(0,Q.useRef)(0);return(0,Q.useEffect)(()=>{let i=n.current;i&&e.length!==s.current&&(i.textContent=e,s.current=e.length)},[e]),(0,ee.jsxs)("div",{className:"urun-text-stream",children:[(0,ee.jsx)("span",{ref:n,className:"urun-text-content"}),t&&(0,ee.jsx)("span",{className:"urun-text-cursor"})]})}var re=require("zod"),te=require("react/jsx-runtime"),Ze=re.z.object({src:re.z.string().url(),alt:re.z.string().optional(),caption:re.z.string().optional()});function Ce(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function Ge(r){let{src:e,alt:t,caption:n}=Ce(r);return(0,te.jsxs)("figure",{className:"urun-image-frame",children:[(0,te.jsx)("img",{className:"urun-image",src:e,alt:t}),n&&(0,te.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var L=require("zod"),J=require("react/jsx-runtime"),Ye=L.z.object({metrics:L.z.array(L.z.object({label:L.z.string(),value:L.z.union([L.z.string(),L.z.number()]),unit:L.z.string().optional()}))});function Re(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function Qe(r){let{metrics:e}=Re(r);return(0,J.jsx)("div",{className:"urun-metrics-panel",children:e.map((t,n)=>(0,J.jsxs)("div",{className:"urun-metric-card",children:[(0,J.jsx)("div",{className:"urun-metric-label",children:t.label}),(0,J.jsx)("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}var y=require("react"),sr=hr(require("video.js")),ft=require("video.js/dist/video-js.css");var W=require("react");var ne=require("react"),Rr=require("@urun-sh/core/internal");var xr=require("react/jsx-runtime"),er=(0,ne.createContext)(null);function rr(r){let e=(0,W.useContext)(er);if(!e)throw new Error("useTrack must be used within <SessionProvider> or <UrunProvider>");let[t,n]=(0,W.useState)(null);return(0,W.useEffect)(()=>{let s=e.getState()._transport;if(!s)return;let i=s.getTrackByName?.bind(s),a=i?.(r);a&&a.readyState!=="ended"&&n(a);let w=s.on("track",u=>{let m=i?.(r);m&&m.id!==u.id||(n(u),u.addEventListener("ended",()=>{n(null)}))});return()=>{w()}},[r,e]),t}var q=require("react/jsx-runtime");function tr(r){r.posterImage?.hide?.()}var Tr=`
|
|
2
2
|
[data-urun-video]{width:100%;height:100%}
|
|
3
3
|
[data-urun-video] .video-js,[data-urun-video] .vjs-tech{width:100%;height:100%}
|
|
4
4
|
[data-urun-video] .vjs-tech{object-fit:contain}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as ze,b as He,c as G}from"./chunk-QAEWAWV4.mjs";import{useEffect as We,useMemo as Ke,useState as Ze}from"react";import{Component as Fe}from"react";import{jsx as pe,jsxs as Xe}from"react/jsx-runtime";var L=class extends Fe{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||Xe("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[pe("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),pe("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as $e}from"react";var D=$e(null);function A(r){return r&&r.trim()?r.trim():void 0}function U(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return A(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return A(typeof process<"u"?process.env?.[r]:void 0)}}function z(){let r=U("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||U("VERCEL_ENV")==="production"?"workos":U("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function Je(){return z()==="workos"}import{jsx as Y}from"react/jsx-runtime";function Ge({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:i,children:a}){let[x,u]=Ze(),m=G(),b=U("NEXT_PUBLIC_SESSION_TOKEN")??U("NEXT_PUBLIC_URUN_JWT"),c=z(),l=c==="workos"&&!n,R=n??(c==="jwt"?b:void 0)??x,T=o??U("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),S=l&&!R,v=Ke(()=>({appId:t,baseUrl:r,orgId:e,jwt:R,getAccessToken:l?m?.getAccessToken:void 0,authProvider:T}),[t,m,r,T,R,e,l]);return We(()=>{if(!l||!m)return;let f=!1,h=m;async function g(){try{let C=await h.getAccessToken();f||u(C??void 0)}catch{f||u(void 0)}}g();let P=window.setInterval(()=>{g()},6e4);return()=>{f=!0,window.clearInterval(P)}},[m,l]),Y(L,{fallback:i,children:S?Y("div",{role:"status","aria-live":"polite",children:"Signing in..."}):Y(D.Provider,{value:v,children:a})})}import{useContext as Ye,useMemo as me,useReducer as Qe,useRef as er}from"react";import{App as rr}from"@urun-sh/core";function tr(r,e){return`${r}:${JSON.stringify(e??{})}`}var Q=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}get synced(){return this._doc.synced}onSynced(e){return this._doc.onSynced(()=>{e(),this._notify()})}text(e){let t=this._doc.text(e),n=this._notify;return{append(o){t.append(o),n()},toString:()=>t.toString(),get length(){return t.length},on:(o,i)=>t.on(o,a=>{i(a),n()})}}dispose(){this._unsubscribeChange()}},ee=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}attachVideo(e){return this._stream.attachVideo(e)}detach(){return this._stream.detach()}detachVideo(){return this._stream.detachVideo()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}messages(){return this._stream.messages()}emit(e,t){return this._stream.emit(e,t)}dispose(){this._unsubscribeTrack()}},re=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}request(e,t){return this._session.request(e,t)}requestStream(e,t){return this._session.requestStream(e,t)}complete(e,t){return this._session.complete(e,t)}doc(e){let t=this._docs.get(e);return t||(t=new Q(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new ee(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function nr(){let r=Ye(D);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=Qe(o=>o+1,0),t=er(new Map),n=me(()=>rr(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return me(()=>new Proxy({},{get(o,i){if(typeof i=="string")return a=>{let x=tr(i,a),u=t.current.get(x);if(u)return u;let m=new re(n[i](a),e);return t.current.set(x,m),m}}}),[n])}import{useCallback as te,useEffect as sr,useMemo as or,useRef as H,useState as ne}from"react";function M(r){let e=r;if(!e||typeof e.request!="function"||typeof e.requestStream!="function")throw new Error("This session does not support request/requestStream. Upgrade @urun-sh/core to a version that ships the request/response primitive.");return e}function ir(r){return r instanceof Error?r:new Error(String(r))}function ar(r,e){let t=or(()=>M(r),[r]),[n,o]=ne(void 0),[i,a]=ne(null),[x,u]=ne(!1),m=H(e);m.current=e;let b=H(0),c=H(null),l=H(!0);sr(()=>(l.current=!0,()=>{l.current=!1,c.current?.abort()}),[]);let R=te(async v=>{c.current?.abort();let f=new AbortController;c.current=f;let h=++b.current,g=()=>l.current&&b.current===h;g()&&(u(!0),a(null));try{let P=await t.request(v,{...m.current,signal:f.signal});return g()&&(o(P),u(!1),m.current?.onSuccess?.(P)),P}catch(P){let C=ir(P);throw g()&&(a(C),u(!1),m.current?.onError?.(C)),C}},[t]),T=te(v=>{R(v).catch(()=>{})},[R]),S=te(()=>{b.current++,c.current?.abort(),c.current=null,o(void 0),a(null),u(!1)},[]);return{mutate:T,mutateAsync:R,data:n,error:i,isPending:x,reset:S}}import{useCallback as fe,useEffect as ur,useMemo as cr,useRef as F,useState as se}from"react";function ge(r){return r instanceof Error?r:new Error(String(r))}var dr=r=>typeof r=="string"?r:String(r);function lr(r,e){let t=cr(()=>M(r),[r]),[n,o]=se(""),[i,a]=se(!1),[x,u]=se(null),m=F(e);m.current=e;let b=F(0),c=F(null),l=F(!0);ur(()=>(l.current=!0,()=>{l.current=!1,c.current?.cancel(),c.current=null}),[]);let R=fe(()=>{b.current++,c.current?.cancel(),c.current=null,l.current&&a(!1)},[]),T=fe(async S=>{c.current?.cancel();let v=++b.current,f=()=>l.current&&b.current===v,h=m.current,g=h?.parseChunk??dr,P=h?.buildPayload??(p=>({prompt:p}));f()&&(o(""),u(null),a(!0));let{parseChunk:C,buildPayload:W,onFinish:w,onError:s,...d}=h??{},y="",k;try{k=t.requestStream(P(S),d),c.current=k}catch(p){let _=ge(p);f()&&(u(_),a(!1),h?.onError?.(_));return}try{for await(let p of k){if(b.current!==v)break;y+=g(p),f()&&o(y)}f()&&(a(!1),h?.onFinish?.(y))}catch(p){let _=ge(p);f()&&(u(_),a(!1),h?.onError?.(_))}finally{c.current===k&&(c.current=null)}},[t]);return{completion:n,complete:T,stop:R,isStreaming:i,error:x}}import{useCallback as he,useEffect as pr,useMemo as mr,useRef as O,useState as X}from"react";function ve(r){return r instanceof Error?r:new Error(String(r))}var fr=r=>typeof r=="string"?r:String(r),ye=0;function oe(r){return ye+=1,`${r}-${ye}`}function gr(r,e){let t=mr(()=>M(r),[r]),[n,o]=X(()=>(e?.initialMessages??[]).map(g=>({id:g.id??oe("msg"),role:g.role,content:g.content}))),[i,a]=X(""),[x,u]=X(!1),[m,b]=X(null),c=O(e);c.current=e;let l=O(n);l.current=n;let R=O(i);R.current=i;let T=O(0),S=O(null),v=O(!0);pr(()=>(v.current=!0,()=>{v.current=!1,S.current?.cancel(),S.current=null}),[]);let f=he(()=>{T.current++,S.current?.cancel(),S.current=null,v.current&&u(!1)},[]),h=he(async g=>{let P=g===void 0,C=(P?R.current:g)??"";if(!C.trim())return;S.current?.cancel();let w=++T.current,s=()=>v.current&&T.current===w,d=c.current,y=d?.parseChunk??fr,k={id:oe("msg"),role:"user",content:C},p={id:oe("msg"),role:"assistant",content:""},_=[...l.current,k].map(E=>({role:E.role,content:E.content})),j=[...l.current,k,p];l.current=j,o(j),P&&a(""),b(null),u(!0);let Ve=d?.buildPayload??(E=>({messages:E})),{initialMessages:Wr,parseChunk:Kr,buildPayload:Zr,onFinish:Gr,onError:Yr,...Be}=d??{},De=E=>{o(N=>N.map(Z=>Z.id===p.id?{...Z,content:E}:Z))},K="",B;try{B=t.requestStream(Ve(_),Be),S.current=B}catch(E){let N=ve(E);s()&&(b(N),u(!1),d?.onError?.(N));return}try{for await(let E of B){if(T.current!==w)break;K+=y(E),s()&&De(K)}s()&&(u(!1),d?.onFinish?.({...p,content:K}))}catch(E){let N=ve(E);s()&&(b(N),u(!1),d?.onError?.(N))}finally{S.current===B&&(S.current=null)}},[t]);return{messages:n,input:i,setInput:a,sendMessage:h,stop:f,isStreaming:x,error:m}}var be=new Map;function hr(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);be.set(r,{component:e,schema:t})}function Se(r,e){let t=be.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}import{Fragment as yr,jsx as $}from"react/jsx-runtime";function vr({name:r,props:e,fallback:t}){let n=Se(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?$(yr,{children:t}):$("div",{className:"urun-component-error",role:"alert",children:$("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return $(o,{...n.validatedProps})}import{z as V}from"zod";import{jsx as ie,jsxs as ke}from"react/jsx-runtime";var br=V.object({step:V.number().min(0),total:V.number().min(1),label:V.string().optional(),variant:V.enum(["default","success","error"]).default("default")});function Re(r){let{step:e,total:t,label:n,variant:o="default"}=r,i=Math.min(e/t*100,100),a=e>=t;return{step:e,total:t,label:n,variant:o,percentage:i,isComplete:a}}function Sr(r){let{step:e,total:t,label:n,variant:o,percentage:i}=Re(r);return ke("div",{className:"urun-progress-card","data-variant":o,children:[n&&ie("div",{className:"urun-progress-label",children:n}),ie("div",{className:"urun-progress-bar",children:ie("div",{className:"urun-progress-fill",style:{width:`${i}%`}})}),ke("div",{className:"urun-progress-text",children:[e,"/",t]})]})}import{z as ae}from"zod";import{jsx as Ce,jsxs as xr}from"react/jsx-runtime";var kr=ae.object({state:ae.enum(["thinking","generating","idle","error"]),message:ae.string().optional()}),Rr={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function xe(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??Rr[e]??e;return{state:e,message:o,isActive:n}}function Cr(r){let{state:e,message:t,isActive:n}=xe(r);return xr("span",{className:"urun-status-badge","data-state":e,children:[Ce("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),Ce("span",{className:"urun-status-message",children:t})]})}import{useRef as Te,useEffect as Tr}from"react";import{z as ue}from"zod";import{jsx as Pe,jsxs as wr}from"react/jsx-runtime";var Pr=ue.object({text:ue.string(),streaming:ue.boolean().default(!1)});function Ee(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function Er(r){let{text:e,streaming:t}=Ee(r),n=Te(null),o=Te(0);return Tr(()=>{let i=n.current;i&&e.length!==o.current&&(i.textContent=e,o.current=e.length)},[e]),wr("div",{className:"urun-text-stream",children:[Pe("span",{ref:n,className:"urun-text-content"}),t&&Pe("span",{className:"urun-text-cursor"})]})}import{z as J}from"zod";import{jsx as we,jsxs as Ir}from"react/jsx-runtime";var _r=J.object({src:J.string().url(),alt:J.string().optional(),caption:J.string().optional()});function _e(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function Ur(r){let{src:e,alt:t,caption:n}=_e(r);return Ir("figure",{className:"urun-image-frame",children:[we("img",{className:"urun-image",src:e,alt:t}),n&&we("figcaption",{className:"urun-image-caption",children:n})]})}import{z as I}from"zod";import{jsx as ce,jsxs as qr}from"react/jsx-runtime";var Nr=I.object({metrics:I.array(I.object({label:I.string(),value:I.union([I.string(),I.number()]),unit:I.string().optional()}))});function Ue(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function Ar(r){let{metrics:e}=Ue(r);return ce("div",{className:"urun-metrics-panel",children:e.map((t,n)=>qr("div",{className:"urun-metric-card",children:[ce("div",{className:"urun-metric-label",children:t.label}),ce("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}import{forwardRef as le,useCallback as Ae,useEffect as de,useImperativeHandle as Vr,useRef as qe,useState as Br}from"react";import Dr from"video.js";import"video.js/dist/video-js.css";import{useContext as Or,useState as jr,useEffect as Lr}from"react";import{createContext as Mr,useState as Kt,useEffect as Zt,useRef as Gt}from"react";import{TransportSession as Qt}from"@urun-sh/core/internal";import{jsx as rn}from"react/jsx-runtime";var Ie=Mr(null);function Ne(r){let e=Or(Ie);if(!e)throw new Error("useTrack must be used within <SessionProvider> or <UrunProvider>");let[t,n]=jr(null);return Lr(()=>{let o=e.getState()._transport;if(!o)return;let i=o.getTrackByName?.bind(o),a=i?.(r);a&&a.readyState!=="ended"&&n(a);let x=o.on("track",u=>{let m=i?.(r);m&&m.id!==u.id||(n(u),u.addEventListener("ended",()=>{n(null)}))});return()=>{x()}},[r,e]),t}import{jsx as q,jsxs as je}from"react/jsx-runtime";function Me(r){r.posterImage?.hide?.()}var zr=`
|
|
1
|
+
import{a as ze,b as He,c as G}from"./chunk-QAEWAWV4.mjs";import{useEffect as We,useMemo as Ke,useState as Ze}from"react";import{Component as Fe}from"react";import{jsx as pe,jsxs as Xe}from"react/jsx-runtime";var L=class extends Fe{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||Xe("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[pe("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),pe("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as $e}from"react";var D=$e(null);function A(r){return r&&r.trim()?r.trim():void 0}function U(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return A(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return A(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return A(typeof process<"u"?process.env?.[r]:void 0)}}function z(){let r=U("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||U("VERCEL_ENV")==="production"?"workos":U("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function Je(){return z()==="workos"}import{jsx as Y}from"react/jsx-runtime";function Ge({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:i,children:a}){let[x,u]=Ze(),m=G(),b=U("NEXT_PUBLIC_SESSION_TOKEN")??U("NEXT_PUBLIC_URUN_JWT"),c=z(),l=c==="workos"&&!n,R=n??(c==="jwt"?b:void 0)??x,T=o??U("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),S=l&&!R,v=Ke(()=>({appId:t,baseUrl:r,orgId:e,jwt:R,getAccessToken:l?m?.getAccessToken:void 0,authProvider:T}),[t,m,r,T,R,e,l]);return We(()=>{if(!l||!m)return;let f=!1,h=m;async function g(){try{let C=await h.getAccessToken();f||u(C??void 0)}catch{f||u(void 0)}}g();let P=window.setInterval(()=>{g()},6e4);return()=>{f=!0,window.clearInterval(P)}},[m,l]),Y(L,{fallback:i,children:S?Y("div",{role:"status","aria-live":"polite",children:"Signing in..."}):Y(D.Provider,{value:v,children:a})})}import{useContext as Ye,useMemo as me,useReducer as Qe,useRef as er}from"react";import{App as rr}from"@urun-sh/core";function tr(r,e){return`${r}:${JSON.stringify(e??{})}`}var Q=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}get synced(){return this._doc.synced}onSynced(e){return this._doc.onSynced(()=>{e(),this._notify()})}text(e){let t=this._doc.text(e),n=this._notify;return{append(o){t.append(o),n()},toString:()=>t.toString(),get length(){return t.length},on:(o,i)=>t.on(o,a=>{i(a),n()})}}dispose(){this._unsubscribeChange()}},ee=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}attachVideo(e){return this._stream.attachVideo(e)}detach(){return this._stream.detach()}detachVideo(){return this._stream.detachVideo()}seek(e){return this._stream.seek(e)}chunks(e){return this._stream.chunks(e)}onSeeked(e){return this._stream.onSeeked(e)}on(e,t){return this._stream.on(e,t)}messages(){return this._stream.messages()}emit(e,t){return this._stream.emit(e,t)}dispose(){this._unsubscribeTrack()}},re=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}request(e,t){return this._session.request(e,t)}requestStream(e,t){return this._session.requestStream(e,t)}complete(e,t){return this._session.complete(e,t)}doc(e){let t=this._docs.get(e);return t||(t=new Q(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new ee(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function nr(){let r=Ye(D);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=Qe(o=>o+1,0),t=er(new Map),n=me(()=>rr(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return me(()=>new Proxy({},{get(o,i){if(typeof i=="string")return a=>{let x=tr(i,a),u=t.current.get(x);if(u)return u;let m=new re(n[i](a),e);return t.current.set(x,m),m}}}),[n])}import{useCallback as te,useEffect as sr,useMemo as or,useRef as H,useState as ne}from"react";function M(r){let e=r;if(!e||typeof e.request!="function"||typeof e.requestStream!="function")throw new Error("This session does not support request/requestStream. Upgrade @urun-sh/core to a version that ships the request/response primitive.");return e}function ir(r){return r instanceof Error?r:new Error(String(r))}function ar(r,e){let t=or(()=>M(r),[r]),[n,o]=ne(void 0),[i,a]=ne(null),[x,u]=ne(!1),m=H(e);m.current=e;let b=H(0),c=H(null),l=H(!0);sr(()=>(l.current=!0,()=>{l.current=!1,c.current?.abort()}),[]);let R=te(async v=>{c.current?.abort();let f=new AbortController;c.current=f;let h=++b.current,g=()=>l.current&&b.current===h;g()&&(u(!0),a(null));try{let P=await t.request(v,{...m.current,signal:f.signal});return g()&&(o(P),u(!1),m.current?.onSuccess?.(P)),P}catch(P){let C=ir(P);throw g()&&(a(C),u(!1),m.current?.onError?.(C)),C}},[t]),T=te(v=>{R(v).catch(()=>{})},[R]),S=te(()=>{b.current++,c.current?.abort(),c.current=null,o(void 0),a(null),u(!1)},[]);return{mutate:T,mutateAsync:R,data:n,error:i,isPending:x,reset:S}}import{useCallback as fe,useEffect as ur,useMemo as cr,useRef as F,useState as se}from"react";function ge(r){return r instanceof Error?r:new Error(String(r))}var dr=r=>typeof r=="string"?r:String(r);function lr(r,e){let t=cr(()=>M(r),[r]),[n,o]=se(""),[i,a]=se(!1),[x,u]=se(null),m=F(e);m.current=e;let b=F(0),c=F(null),l=F(!0);ur(()=>(l.current=!0,()=>{l.current=!1,c.current?.cancel(),c.current=null}),[]);let R=fe(()=>{b.current++,c.current?.cancel(),c.current=null,l.current&&a(!1)},[]),T=fe(async S=>{c.current?.cancel();let v=++b.current,f=()=>l.current&&b.current===v,h=m.current,g=h?.parseChunk??dr,P=h?.buildPayload??(p=>({prompt:p}));f()&&(o(""),u(null),a(!0));let{parseChunk:C,buildPayload:W,onFinish:w,onError:s,...d}=h??{},y="",k;try{k=t.requestStream(P(S),d),c.current=k}catch(p){let _=ge(p);f()&&(u(_),a(!1),h?.onError?.(_));return}try{for await(let p of k){if(b.current!==v)break;y+=g(p),f()&&o(y)}f()&&(a(!1),h?.onFinish?.(y))}catch(p){let _=ge(p);f()&&(u(_),a(!1),h?.onError?.(_))}finally{c.current===k&&(c.current=null)}},[t]);return{completion:n,complete:T,stop:R,isStreaming:i,error:x}}import{useCallback as he,useEffect as pr,useMemo as mr,useRef as O,useState as X}from"react";function ve(r){return r instanceof Error?r:new Error(String(r))}var fr=r=>typeof r=="string"?r:String(r),ye=0;function oe(r){return ye+=1,`${r}-${ye}`}function gr(r,e){let t=mr(()=>M(r),[r]),[n,o]=X(()=>(e?.initialMessages??[]).map(g=>({id:g.id??oe("msg"),role:g.role,content:g.content}))),[i,a]=X(""),[x,u]=X(!1),[m,b]=X(null),c=O(e);c.current=e;let l=O(n);l.current=n;let R=O(i);R.current=i;let T=O(0),S=O(null),v=O(!0);pr(()=>(v.current=!0,()=>{v.current=!1,S.current?.cancel(),S.current=null}),[]);let f=he(()=>{T.current++,S.current?.cancel(),S.current=null,v.current&&u(!1)},[]),h=he(async g=>{let P=g===void 0,C=(P?R.current:g)??"";if(!C.trim())return;S.current?.cancel();let w=++T.current,s=()=>v.current&&T.current===w,d=c.current,y=d?.parseChunk??fr,k={id:oe("msg"),role:"user",content:C},p={id:oe("msg"),role:"assistant",content:""},_=[...l.current,k].map(E=>({role:E.role,content:E.content})),j=[...l.current,k,p];l.current=j,o(j),P&&a(""),b(null),u(!0);let Ve=d?.buildPayload??(E=>({messages:E})),{initialMessages:Wr,parseChunk:Kr,buildPayload:Zr,onFinish:Gr,onError:Yr,...Be}=d??{},De=E=>{o(N=>N.map(Z=>Z.id===p.id?{...Z,content:E}:Z))},K="",B;try{B=t.requestStream(Ve(_),Be),S.current=B}catch(E){let N=ve(E);s()&&(b(N),u(!1),d?.onError?.(N));return}try{for await(let E of B){if(T.current!==w)break;K+=y(E),s()&&De(K)}s()&&(u(!1),d?.onFinish?.({...p,content:K}))}catch(E){let N=ve(E);s()&&(b(N),u(!1),d?.onError?.(N))}finally{S.current===B&&(S.current=null)}},[t]);return{messages:n,input:i,setInput:a,sendMessage:h,stop:f,isStreaming:x,error:m}}var be=new Map;function hr(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);be.set(r,{component:e,schema:t})}function Se(r,e){let t=be.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}import{Fragment as yr,jsx as $}from"react/jsx-runtime";function vr({name:r,props:e,fallback:t}){let n=Se(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?$(yr,{children:t}):$("div",{className:"urun-component-error",role:"alert",children:$("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return $(o,{...n.validatedProps})}import{z as V}from"zod";import{jsx as ie,jsxs as ke}from"react/jsx-runtime";var br=V.object({step:V.number().min(0),total:V.number().min(1),label:V.string().optional(),variant:V.enum(["default","success","error"]).default("default")});function Re(r){let{step:e,total:t,label:n,variant:o="default"}=r,i=Math.min(e/t*100,100),a=e>=t;return{step:e,total:t,label:n,variant:o,percentage:i,isComplete:a}}function Sr(r){let{step:e,total:t,label:n,variant:o,percentage:i}=Re(r);return ke("div",{className:"urun-progress-card","data-variant":o,children:[n&&ie("div",{className:"urun-progress-label",children:n}),ie("div",{className:"urun-progress-bar",children:ie("div",{className:"urun-progress-fill",style:{width:`${i}%`}})}),ke("div",{className:"urun-progress-text",children:[e,"/",t]})]})}import{z as ae}from"zod";import{jsx as Ce,jsxs as xr}from"react/jsx-runtime";var kr=ae.object({state:ae.enum(["thinking","generating","idle","error"]),message:ae.string().optional()}),Rr={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function xe(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??Rr[e]??e;return{state:e,message:o,isActive:n}}function Cr(r){let{state:e,message:t,isActive:n}=xe(r);return xr("span",{className:"urun-status-badge","data-state":e,children:[Ce("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),Ce("span",{className:"urun-status-message",children:t})]})}import{useRef as Te,useEffect as Tr}from"react";import{z as ue}from"zod";import{jsx as Pe,jsxs as wr}from"react/jsx-runtime";var Pr=ue.object({text:ue.string(),streaming:ue.boolean().default(!1)});function Ee(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function Er(r){let{text:e,streaming:t}=Ee(r),n=Te(null),o=Te(0);return Tr(()=>{let i=n.current;i&&e.length!==o.current&&(i.textContent=e,o.current=e.length)},[e]),wr("div",{className:"urun-text-stream",children:[Pe("span",{ref:n,className:"urun-text-content"}),t&&Pe("span",{className:"urun-text-cursor"})]})}import{z as J}from"zod";import{jsx as we,jsxs as Ir}from"react/jsx-runtime";var _r=J.object({src:J.string().url(),alt:J.string().optional(),caption:J.string().optional()});function _e(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function Ur(r){let{src:e,alt:t,caption:n}=_e(r);return Ir("figure",{className:"urun-image-frame",children:[we("img",{className:"urun-image",src:e,alt:t}),n&&we("figcaption",{className:"urun-image-caption",children:n})]})}import{z as I}from"zod";import{jsx as ce,jsxs as qr}from"react/jsx-runtime";var Nr=I.object({metrics:I.array(I.object({label:I.string(),value:I.union([I.string(),I.number()]),unit:I.string().optional()}))});function Ue(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function Ar(r){let{metrics:e}=Ue(r);return ce("div",{className:"urun-metrics-panel",children:e.map((t,n)=>qr("div",{className:"urun-metric-card",children:[ce("div",{className:"urun-metric-label",children:t.label}),ce("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}import{forwardRef as le,useCallback as Ae,useEffect as de,useImperativeHandle as Vr,useRef as qe,useState as Br}from"react";import Dr from"video.js";import"video.js/dist/video-js.css";import{useContext as Or,useState as jr,useEffect as Lr}from"react";import{createContext as Mr,useState as Kt,useEffect as Zt,useRef as Gt}from"react";import{TransportSession as Qt}from"@urun-sh/core/internal";import{jsx as rn}from"react/jsx-runtime";var Ie=Mr(null);function Ne(r){let e=Or(Ie);if(!e)throw new Error("useTrack must be used within <SessionProvider> or <UrunProvider>");let[t,n]=jr(null);return Lr(()=>{let o=e.getState()._transport;if(!o)return;let i=o.getTrackByName?.bind(o),a=i?.(r);a&&a.readyState!=="ended"&&n(a);let x=o.on("track",u=>{let m=i?.(r);m&&m.id!==u.id||(n(u),u.addEventListener("ended",()=>{n(null)}))});return()=>{x()}},[r,e]),t}import{jsx as q,jsxs as je}from"react/jsx-runtime";function Me(r){r.posterImage?.hide?.()}var zr=`
|
|
2
2
|
[data-urun-video]{width:100%;height:100%}
|
|
3
3
|
[data-urun-video] .video-js,[data-urun-video] .vjs-tech{width:100%;height:100%}
|
|
4
4
|
[data-urun-video] .vjs-tech{object-fit:contain}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urun-sh/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.48",
|
|
4
4
|
"description": "React bindings for the urun TypeScript SDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"dev": "tsup --watch"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"@urun-sh/core": "^0.1.
|
|
51
|
+
"@urun-sh/core": "^0.1.48",
|
|
52
52
|
"@workos-inc/authkit-nextjs": "^3.0.0",
|
|
53
53
|
"@workos-inc/authkit-react": "^0.15.0 || ^0.16.0",
|
|
54
54
|
"next": "^15.0.0 || ^16.0.0",
|