@fork-api/chat-sdk 0.1.154 → 0.1.158
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.cjs +8 -8
- package/dist/index.js +8 -8
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use strict';var ir=require('react'),Tn=require('react-dom'),Ln=require('react/jsx-runtime'),Bn=require('react/jsx-dev-runtime'),lucideReact=require('lucide-react');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ir__namespace=/*#__PURE__*/_interopNamespace(ir);var Tn__namespace=/*#__PURE__*/_interopNamespace(Tn);var Ln__namespace=/*#__PURE__*/_interopNamespace(Ln);var Bn__namespace=/*#__PURE__*/_interopNamespace(Bn);var We="__FORK_SHARED__";function Gt(){var t,r,n,o;let e=globalThis;return e[We]||(e[We]={}),(t=e[We]).react||(t.react=ir__namespace),(r=e[We])["react-dom"]||(r["react-dom"]=Tn__namespace),(n=e[We])["react/jsx-runtime"]||(n["react/jsx-runtime"]=Ln__namespace),(o=e[We])["react/jsx-dev-runtime"]||(o["react/jsx-dev-runtime"]=Bn__namespace),e[We]}function qt(e){return Object.assign(Gt(),e)}var Nn="__fork_preview_session__";function
|
|
2
|
-
`);return lt&&er===o||(er=o,lt=(async()=>{try{let i=await fetch(`${t}/api/v1/preview/auto-activate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,"X-Fork-User-Id":r.userId,"X-Fork-User-Hash":r.userHash},body:JSON.stringify({appId:r.appId})});if(i.status===204)return null;if(!i.ok){let f=await i.json().catch(()=>({}));return console.warn(`[fork-preview] auto admin activate failed (${i.status}): ${f.error??"unknown"}`),null}let s=await i.json(),l={preview_session_id:s.preview_session_id,tenant_id:s.tenant_id,app_id:s.app_id,target:s.target,operator_id:s.operator_id,container_id:s.container_id??null,container_name:s.container_name??"Fork",fork_id:s.fork_id??null,expires_at:s.expires_at};return It(l),l}catch(i){return console.warn("[fork-preview] auto admin activate threw",i),null}finally{er=null,lt=null;}})()),lt}function On(){return Ne()}function Dn(){return null}function Mt(){return ir.useSyncExternalStore(Qt,On,Dn)}function re(){let e=Ne();if(!e)return {};let t={"X-Fork-Preview-Session":e.preview_session_id};return e.fork_id&&(t["X-Fork-Preview-Fork-Id"]=e.fork_id),t}async function Tt(e){let t=new URLSearchParams({app:e.appId,user:e.userId});e.containerId&&t.set("containerId",e.containerId);let r=`${e.baseUrl}/api/v1/manifest?${t.toString()}`,n={Authorization:`Bearer ${e.apiKey}`,"X-Fork-App-Id":e.appId,"X-Fork-User-Id":e.userId,...e.extraHeaders??{}};e.userHash&&(n["X-Fork-User-Hash"]=e.userHash),e.previous?.etag&&(n["If-None-Match"]=e.previous.etag);let o=await fetch(r,{headers:n,signal:e.signal});if(o.status===304)return null;if(!o.ok)throw new Error(`manifest ${o.status} ${o.statusText}`);let i=await o.json(),s={};for(let[l,f]of Object.entries(i.modules)){let w=f.moduleUrl??f.bundleUrl??null,k=f.legacyModuleUrl??f.legacyBundleUrl??null;s[l]={forkId:f.forkId,moduleUrl:w,legacyModuleUrl:k,bundleUrl:f.bundleUrl??w,legacyBundleUrl:f.legacyBundleUrl??k,cssUrls:f.cssUrls??[],integrity:f.integrity,metadata:f.metadata,buildId:f.buildId,updatedAt:f.updatedAt};}return {containerId:i.containerId,slots:i.slots,modules:s,generatedAt:i.generatedAt,etag:o.headers.get("ETag")??void 0}}var jn="fork:manifest:v1";function or(e,t,r){return `${jn}:${e}:${t}:${r}`}function zn(e,t,r){if(typeof window>"u")return null;try{let n=window.localStorage.getItem(or(e,t,r));return n?JSON.parse(n):null}catch{return null}}function Kn(e,t,r,n){if(!(typeof window>"u"))try{window.localStorage.setItem(or(e,t,r),JSON.stringify(n));}catch{}}function Wn(e,t,r){if(!(typeof window>"u"))try{window.localStorage.removeItem(or(e,t,r));}catch{}}function Vn(e,t){if(!e||!t)return e!==t;if(e.containerId!==t.containerId)return true;let r=Object.entries(e.slots),n=Object.entries(t.slots);if(r.length!==n.length)return true;for(let[s,l]of r){let f=t.slots[s];if(!f||f.forkId!==l.forkId||f.buildId!==l.buildId)return true}let o=Object.entries(e.modules),i=Object.entries(t.modules);if(o.length!==i.length)return true;for(let[s,l]of o){let f=t.modules[s];if(!f||f.forkId!==l.forkId||f.buildId!==l.buildId)return true}return false}var Xr=ir.createContext(null),Gn=12e3,qn=45e3,zr="fork:activity:v1",Yn=new Set(["pending","running","building"]),Zn="Setting up environment";function Se(e){return Yn.has(e)}function Qn(e,t){return t?.targetId?t:e.boundaryId?{targetKind:"module",targetId:e.boundaryId}:e.slotId?{targetKind:"slot",targetId:e.slotId}:null}function eo(e,t){let r=Qn(e,t);if(!r)return null;let n=new Date().toISOString();return {id:e.id,status:e.status,targetKind:r.targetKind,targetId:r.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,createdAt:e.createdAt||n,updatedAt:e.completedAt||n,completedAt:e.completedAt??null}}function Kr(e){return {id:e.id,status:e.status,targetKind:e.targetKind,targetId:e.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,promptCount:e.promptCount,messageCount:e.messageCount,isActive:e.isActive,createdAt:e.createdAt,updatedAt:e.updatedAt,completedAt:e.completedAt??null}}function Lt(e,t){let r=typeof t.summary=="string"&&t.summary.trim()?t.summary.trim():void 0,n=typeof e?.summary=="string"&&e.summary.trim()?e.summary.trim():void 0,o=typeof t.estimateMinutes=="number"&&Number.isFinite(t.estimateMinutes)?t.estimateMinutes:void 0,i=typeof e?.estimateMinutes=="number"&&Number.isFinite(e.estimateMinutes)?e.estimateMinutes:void 0;return {...e,...t,summary:r??n??null,estimateMinutes:o??i??null,latestMessage:t.latestMessage??e?.latestMessage??null,unread:t.unread??e?.unread??false}}function ct(e){return `${e.id}:${e.completedAt||e.updatedAt}`}function Je(e){if(typeof window>"u")return new Set;try{let t=window.localStorage.getItem(e);if(!t)return new Set;let r=JSON.parse(t);return Array.isArray(r)?new Set(r.filter(n=>typeof n=="string")):new Set}catch{return new Set}}function Ge(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}function to(e){if(e.estimateMinutes)return `~${e.estimateMinutes}m`}function ro(e){let t=e.data&&typeof e.data=="object"?e.data:{};if(e.type==="status"){let r=typeof t.status=="string"?t.status:"running",n=typeof t.summary=="string"?t.summary:void 0;return {status:r,latestMessage:Se(r)?"Building":void 0,summary:n,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,updatedAt:e.timestamp}}return e.type==="tool_use"?{status:"running",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_start"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_complete"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="complete"?{status:"complete",summary:typeof t.summary=="string"?t.summary:void 0,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,latestMessage:"Fork ready",completedAt:e.timestamp,updatedAt:e.timestamp}:e.type==="error"||e.type==="build_error"?{status:"error",latestMessage:typeof t.error=="string"?t.error:typeof t.message=="string"?t.message:"Fork failed",updatedAt:e.timestamp}:{updatedAt:e.timestamp}}function no(e){let t=e.filter(o=>Se(o.status)),r=e.filter(o=>o.status==="complete"&&o.unread),n=[...e].sort((o,i)=>Date.parse(i.updatedAt)-Date.parse(o.updatedAt))[0]??null;if(t.length>1)return {state:"running",label:`${t.length} forks running`,count:t.length,runningCount:t.length,unreadCompletedCount:r.length,latest:t[0]};if(t.length===1){let o=t[0],i=!!(typeof o.summary=="string"&&o.summary.trim());return {state:"running",label:i?o.summary.trim():Zn,detail:i?to(o):void 0,count:1,runningCount:1,unreadCompletedCount:r.length,latest:o}}if(r.length>1)return {state:"complete",label:`${r.length} forks ready`,count:r.length,runningCount:0,unreadCompletedCount:r.length,latest:r[0]};if(r.length===1){let o=r[0];return {state:"complete",label:o.summary||"Fork ready",count:1,runningCount:0,unreadCompletedCount:1,latest:o}}return {state:n?.status==="error"?"error":"idle",label:"Fork",count:0,runningCount:0,unreadCompletedCount:0,latest:n}}function dt(e,t){if(!t)return t;try{return new URL(t,`${e.replace(/\/+$/,"")}/`).toString()}catch{return t}}function oo(e,t){let r={};for(let[n,o]of Object.entries(t.boundaries||{}))r[n]={...o,moduleUrl:dt(e,o.moduleUrl),cssUrls:Array.isArray(o.cssUrls)?o.cssUrls.map(i=>dt(e,i)):[]};return r}function Wr(e,t,r,n){let o={};for(let[i,s]of Object.entries(t.slots)){let l=s.bundleUrl??s.legacyBundleUrl;l&&(o[i]={id:s.forkId,userId:r,prompt:"",status:"complete",slotId:i,appId:n,bundleUrl:dt(e,l),createdAt:s.updatedAt,completedAt:s.updatedAt});}return o}function Vr(e,t){let r={};for(let[n,o]of Object.entries(t.modules)){let i=o.moduleUrl??o.legacyModuleUrl??o.bundleUrl??"";i&&(r[n]={id:o.forkId,boundaryId:n,moduleUrl:dt(e,i),cssUrls:(o.cssUrls??[]).map(s=>dt(e,s)),integrity:o.integrity,metadata:o.metadata,createdAt:o.updatedAt});}return r}function so(e){let{apiKey:t,baseUrl:r,children:n,appId:o,shared:i}=e,s="userId"in e?e.userId:void 0,l="authUrl"in e?e.authUrl:void 0,[f]=ir.useState(()=>(nt(t),tr(t))),[w,k]=ir.useState({}),[p,v]=ir.useState(s?{userId:s,userHash:void 0}:null),[C,R]=ir.useState(!!s||f),[b,x]=ir.useState({}),[O,g]=ir.useState(!o),[$,T]=ir.useState(0),[L,U]=ir.useState(null),[S,y]=ir.useState([]),[h,P]=ir.useState(()=>typeof document>"u"?true:document.visibilityState!=="hidden"),m=ir.useRef(new Map),c=ir.useRef(new Map),[I,D]=ir.useState(0),B=ir.useRef(new Set),A=ir.useRef(new Map),F=ir.useRef(void 0),H=ir.useRef(new Map),Z=ir.useRef([]),G=ir.useRef(new Set),we=ir.useRef(false);Gt(),ir.useEffect(()=>{return rr(t,r).then(()=>{}),()=>{}},[]);let j=Mt();ir.useEffect(()=>{f||j||!o||!p?.userHash||nr(t,r,{appId:o,userId:p.userId,userHash:p.userHash});},[t,o,p?.userHash,p?.userId,r,f,j?.preview_session_id]),i&&F.current!==i&&(qt(i),F.current=i),ir.useEffect(()=>{l&&(f||(R(false),fetch(l,{credentials:"include"}).then(d=>{if(!d.ok)throw new Error(`Auth endpoint returned ${d.status}`);return d.json()}).then(d=>{if(!d.userId||typeof d.userId!="string")throw new Error("authUrl response must include userId");v({userId:d.userId,userHash:typeof d.userHash=="string"?d.userHash:void 0});}).catch(d=>{console.error("[ForkProvider] Failed to fetch user identity from authUrl:",d.message);}).finally(()=>{R(true);})));},[l,f]),ir.useEffect(()=>{!l&&s&&(v({userId:s,userHash:void 0}),R(true));},[s,l]);let ne=p?.userId??"",ue=p?.userHash,q=j?"":ne,ie=j?void 0:ue,Ze=!!o,xe=ir.useCallback(async()=>{if(!Ze){U(null),x({}),g(true),T(u=>u+1);return}if(!C){g(false);return}if(!j&&!q||!o){U(null),x({}),g(true),T(u=>u+1);return}if(g(false),!j){try{let u=await Tt({baseUrl:r,apiKey:t,appId:o,userId:q,userHash:ie});u&&(U(u.containerId),k(Wr(r,u,q,o)),x(Vr(r,u)));}catch(u){console.error("[ForkProvider] Failed to fetch fork manifest:",u.message),U(null),k({}),x({});}finally{T(u=>u+1),g(true);}return}if(U(j.container_id??null),j.container_id){try{let u=await Tt({baseUrl:r,apiKey:t,appId:o,userId:q,containerId:j.container_id,extraHeaders:re()});u&&(k(Wr(r,u,q,o)),x(Vr(r,u)));}catch(u){console.error("[ForkProvider] Failed to fetch preview container manifest:",u.message),k({}),x({});}finally{T(u=>u+1),g(true);}return}let d=new URLSearchParams({appId:o,userId:q});ie&&d.set("userHash",ie);try{let u=await fetch(`${r}/api/v1/boundaries/manifest?${d.toString()}`,{headers:{Authorization:`Bearer ${t}`,...re()}});if(!u.ok)throw new Error(`${u.status}`);let M=await u.json();x(oo(r,M));}catch(u){console.error("[ForkProvider] Failed to fetch module override manifest:",u.message),x({});}finally{T(u=>u+1),g(true);}},[t,o,r,C,Ze,ie,q,j?.preview_session_id,j?.fork_id,j?.container_id]);ir.useEffect(()=>{if(!q||o&&(!j||j.container_id))return;let d=new URLSearchParams({userId:q});ie&&d.set("userHash",ie),fetch(`${r}/api/v1/forks/active?${d.toString()}`,{headers:{Authorization:`Bearer ${t}`,...re()}}).then(u=>{if(!u.ok)throw new Error(`${u.status}`);return u.json()}).then(u=>{u&&typeof u=="object"&&k(u);}).catch(()=>{});},[t,o,q,ie,r,j?.preview_session_id,j?.fork_id]),ir.useEffect(()=>{xe();},[xe]);let Re=ir.useCallback((d,u)=>{k(M=>({...M,[d]:u}));},[]),me=ir.useCallback(d=>{k(u=>{let M={...u};return delete M[d],M});},[]),Ee=ir.useCallback(d=>{B.current.add(d);},[]),He=ir.useCallback(d=>B.current.has(d)?(B.current.delete(d),true):false,[]),_e=ir.useCallback((d,u)=>{A.current.set(d,u);},[]),Ce=ir.useCallback((d,u)=>A.current.get(d)!==u?false:(A.current.delete(d),true),[]),Oe=ir.useCallback(d=>{if(!o)return;let u=JSON.stringify(d);m.current.get(d.id)===u||c.current.get(d.id)?.signature===u||(c.current.set(d.id,{boundary:d,signature:u}),D(ee=>ee+1));},[o]);ir.useEffect(()=>{if(!o||c.current.size===0)return;let d=setTimeout(()=>{let u=Array.from(c.current.values());u.length!==0&&fetch(`${r}/api/v1/boundaries`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({appId:o,boundaries:u.map(M=>M.boundary)})}).then(M=>{if(!M.ok)throw new Error(`${M.status}`)}).then(()=>{for(let M of u)c.current.get(M.boundary.id)?.signature===M.signature&&(c.current.delete(M.boundary.id),m.current.set(M.boundary.id,M.signature));}).catch(M=>{console.error("[ForkProvider] Failed to register module boundaries:",M.message);});},50);return ()=>{clearTimeout(d);}},[t,o,r,I]);let Vt=ir.useCallback(d=>b[d],[b]),St=j?`preview:${j.preview_session_id}`:q,Ft=`${t}:${o||"no-app"}:${L||"no-container"}:${St||"anonymous"}`,ve=`${zr}:seen:${Ft}`,K=`${zr}:tracked:${Ft}`;ir.useEffect(()=>{Z.current=S;},[S]);let De=ir.useCallback(()=>{let d={Authorization:`Bearer ${t}`,...re()};return o&&(d["X-Fork-App-Id"]=o),!j&&q&&(d["X-Fork-User-Id"]=q),!j&&ie&&(d["X-Fork-User-Hash"]=ie),d},[t,o,j,ie,q]),$e=ir.useCallback(async()=>{if(!L)return;let d=new URLSearchParams({container_id:L}),u=await fetch(`${r}/api/v1/forks?${d.toString()}`,{headers:De()}).catch(()=>null);if(!u||!u.ok)return;let M=await u.json().catch(()=>({})),ee=Array.isArray(M.forks)?M.forks:[],X=Je(ve),z=Je(K),oe=false,ae=new Map(Z.current.map(J=>[J.id,J])),ke=[];for(let J of ee){let le=Kr(J);Se(le.status)&&!z.has(le.id)&&(z.add(le.id),oe=true);let Q=ae.get(le.id),se=Q?Se(Q.status):false,fe=ct(le);le.status==="complete"&&(z.has(le.id)||se)&&!X.has(fe)&&!G.current.has(fe)&&!Q?.unread&&(we.current||z.has(le.id)||se)&&(G.current.add(fe),ke.push(le));}if(y(J=>{let le=new Map(J.map(ce=>[ce.id,ce])),Q=new Set,se=new Map;for(let ce of ee){let ge=Kr(ce);Q.add(ge.id);let Le=le.get(ge.id),Y=Le?Se(Le.status):false,it=ct(ge),Ie=ge.status==="complete"&&(z.has(ge.id)||Y)&&!X.has(it),et=Lt(Le,{...ge,unread:Ie});se.set(ge.id,et);}for(let ce of J)Q.has(ce.id)||(Se(ce.status)||ce.unread)&&se.set(ce.id,ce);let fe=[...se.values()].sort((ce,ge)=>Date.parse(ge.updatedAt)-Date.parse(ce.updatedAt));return Z.current=fe,fe}),oe&&Ge(K,z),ke.length>0){for(let J of ke)J.targetKind==="module"&&_e(J.targetId,J.id);xe().catch(()=>{});}we.current=true;},[ve,K,r,De,L,xe,_e]),xt=ir.useCallback((d,u)=>{let M=eo(d,u);if(!M)return;let ee=d.containerId??d._containerId;if(ee&&!L&&U(ee),Se(M.status)){let oe=Je(K);oe.has(M.id)||(oe.add(M.id),Ge(K,oe));}let X=new Map(Z.current.map(oe=>[oe.id,oe]));X.set(M.id,Lt(X.get(M.id),M));let z=[...X.values()].sort((oe,ae)=>Date.parse(ae.updatedAt)-Date.parse(oe.updatedAt));Z.current=z,y(z);},[K,L]),je=ir.useCallback((d,u)=>{let M=ro(u),ee=Je(ve),X=Je(K),z=Z.current.find(Q=>Q.id===d),oe=z?Se(z.status):false;M.status&&Se(M.status)&&!X.has(d)&&(X.add(d),Ge(K,X));let ae=z?Lt(z,{...z,...M}):null,ke=ae?ct(ae):null,J=!!(ae&&ae.status==="complete"&&(X.has(d)||oe)&&ke&&!ee.has(ke)&&!G.current.has(ke)&&!z?.unread),le=u.type==="complete"&&z?.targetKind==="module"?z.targetId:null;if(y(Q=>{let se=Q.find(Y=>Y.id===d);if(!se)return Q;let fe=Lt(se,{...se,...M}),ce=fe.status==="complete"&&(X.has(d)||Se(se.status))&&!ee.has(ct(fe)),ge={...fe,unread:ce},Le=Q.map(Y=>Y.id===d?ge:Y).sort((Y,it)=>Date.parse(it.updatedAt)-Date.parse(Y.updatedAt));return Z.current=Le,Le}),J&&ae&&ke&&G.current.add(ke),u.type==="complete"){let Q=u.data&&typeof u.data=="object"?u.data:{},se=typeof Q.boundaryId=="string"?Q.boundaryId:le;se&&_e(se,d),xe().catch(()=>{});}},[ve,K,xe,_e]),Qe=ir.useCallback(d=>{let u=Je(ve),M=Je(K),ee=false,X=false;for(let z of Z.current){if(z.status!=="complete"||d&&z.id!==d)continue;let oe=ct(z);u.has(oe)||(u.add(oe),ee=true),M.delete(z.id)&&(X=true);}y(z=>{let oe=z.map(ae=>ae.status!=="complete"||d&&ae.id!==d?ae:{...ae,unread:false});return Z.current=oe,oe}),ee&&Ge(ve,u),X&&Ge(K,M);},[ve,K]);ir.useEffect(()=>{we.current=false,G.current.clear(),y([]);for(let d of H.current.values())d.close();H.current.clear(),L&&$e();},[L,$e]),ir.useEffect(()=>{if(typeof document>"u")return;let d=()=>{let u=document.visibilityState!=="hidden";P(u),u&&L&&$e();};return document.addEventListener("visibilitychange",d),window.addEventListener("focus",d),window.addEventListener("online",d),()=>{document.removeEventListener("visibilitychange",d),window.removeEventListener("focus",d),window.removeEventListener("online",d);}},[L,$e]),ir.useEffect(()=>{let d=S.filter(ee=>Se(ee.status));if(!L||d.length===0)return;let u=h?Gn:qn,M=window.setInterval(()=>{$e();},u);return ()=>window.clearInterval(M)},[L,h,S,$e]),ir.useEffect(()=>{for(let d of H.current.values())d.close();H.current.clear();},[t,r,j?.preview_session_id,ie,q]),ir.useEffect(()=>{let d=new Set(S.filter(u=>Se(u.status)).map(u=>u.id));for(let[u,M]of H.current.entries())d.has(u)||(M.close(),H.current.delete(u));for(let u of d){if(H.current.has(u))continue;let M=new URLSearchParams({key:t});j?(M.set("previewSessionId",j.preview_session_id),M.set("previewForkId",u)):q&&M.set("userId",q),ie&&M.set("userHash",ie);let ee=new EventSource(`${r}/api/v1/forks/${u}/events?${M.toString()}`);ee.onmessage=X=>{try{je(u,JSON.parse(X.data));}catch{}},ee.onerror=()=>{ee.close(),H.current.delete(u);},H.current.set(u,ee);}},[t,r,S,j,je,ie,q]),ir.useEffect(()=>()=>{for(let d of H.current.values())d.close();H.current.clear();},[]);let Pe=no(S),ze=ir.useCallback(async()=>{if(!q)throw new Error("Reset requires a resolved user identity.");let d=new URLSearchParams({userId:q});ie&&d.set("userHash",ie);let u={Authorization:`Bearer ${t}`,...re()};o&&(u["X-Fork-App-Id"]=o);let M=await fetch(`${r}/api/v1/forks/all?${d.toString()}`,{method:"DELETE",headers:u});if(!M.ok){let X=await M.json().catch(()=>({}));throw new Error(X.error||`API error: ${M.status}`)}let ee=await M.json().catch(()=>({}));k({}),x({}),g(true),T(X=>X+1),y([]),G.current.clear(),Ge(ve,new Set),Ge(K,new Set),B.current.clear(),A.current.clear();try{for(let X=sessionStorage.length-1;X>=0;X-=1){let z=sessionStorage.key(X);z&&z.startsWith("__fork_animated_")&&sessionStorage.removeItem(z);}}catch{}return ee},[ve,K,t,o,r,ie,q]);return Ln.jsx(Xr.Provider,{value:{apiKey:t,userId:q,userHash:ie,baseUrl:r,appId:o,forks:w,moduleOverridesEnabled:Ze,moduleManifestReady:O,moduleManifestVersion:$,currentContainerId:L,forkActivities:S,activitySummary:Pe,previewSession:j,trackForkActivity:xt,recordForkActivityEvent:je,markForkActivitySeen:Qe,refreshForkActivities:$e,setSlotFork:Re,clearSlotFork:me,skipAnimationForSlot:Ee,shouldSkipAnimation:He,queueBoundaryAnimation:_e,consumeBoundaryAnimation:Ce,registerBoundary:Oe,getBoundaryOverride:Vt,refreshModuleManifest:xe,resetAllForks:ze},children:n})}function ye(){let e=ir.useContext(Xr);if(!e)throw new Error("useForkContext must be used within <ForkProvider>");return e}function Bt(e){return ye().forks[e]}var ut=class{constructor(t){this.values=new Map;this.snapshots=new Map;this.listeners=new Map;this.eventHandlers=new Map;this.slotId=t,window.__FORK_BRIDGE__||(window.__FORK_BRIDGE__={}),window.__FORK_BRIDGE__[t]=this;}set(t,r){let n=this.values.get(t);if(Object.is(n,r))return;if(n!==void 0&&r!==null&&n!==null&&typeof n=="object"&&typeof r=="object")try{if(JSON.stringify(n)===JSON.stringify(r))return}catch{}this.values.set(t,r),this.snapshots.set(t,r);let o=this.listeners.get(t);o&&o.forEach(i=>i());}get(t){return this.values.get(t)}getSnapshot(t){return this.snapshots.get(t)}subscribe(t,r){return this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(r),()=>{this.listeners.get(t)?.delete(r);}}useValue(t){let r=window.__FORK_REACT__;return r?.useSyncExternalStore?r.useSyncExternalStore(n=>this.subscribe(t,n),()=>this.getSnapshot(t)):(console.warn("[ForkBridge] React.useSyncExternalStore not available, returning static value"),this.values.get(t))}emit(t,...r){let n=this.eventHandlers.get(t);n&&n.forEach(o=>o(...r));}on(t,r){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(r),()=>{this.eventHandlers.get(t)?.delete(r);}}destroy(){this.listeners.clear(),this.eventHandlers.clear(),this.values.clear(),this.snapshots.clear();let t=window.__FORK_BRIDGE__;t&&delete t[this.slotId];}};function ar(e,t){let r;try{r=ir.Children.only(e);}catch{let o=ir.Children.count(e);throw new Error(`<ForkSlot slotId="${t}"> must wrap exactly one React component, got ${o} children. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`)}let n=r.type;if(typeof n=="string")throw new Error(`<ForkSlot slotId="${t}"> child must be a React component (function or class), not an HTML element <${n}>. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);if(typeof n=="symbol")throw new Error(`<ForkSlot slotId="${t}"> child must be a single React component, not a fragment or special React element. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);return r}var Gr=new Set;function qr(e){let t=[],r=e.querySelectorAll("*");for(let n of r){if(!(n instanceof HTMLElement))continue;let o=n.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(n.tagName))continue;let i=getComputedStyle(n),s=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:n.tagName,className:n.className||"",text:(n.textContent||"").slice(0,50).trim(),rect:o,borderRadius:s});}return t}function uo(e,t){let r=[];for(let n of t)if(!e.find(i=>i.tag===n.tag&&i.className===n.className&&Math.abs(i.rect.top-n.rect.top)<20&&Math.abs(i.rect.left-n.rect.left)<20)&&!r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom)){for(let s=r.length-1;s>=0;s--){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function fo(e,t){let r=[];for(let n of e)if(!t.find(i=>i.tag===n.tag&&i.className===n.className&&Math.abs(i.rect.top-n.rect.top)<20&&Math.abs(i.rect.left-n.rect.left)<20)&&!r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom)){for(let s=r.length-1;s>=0;s--){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function Zr(e,t,r,n,o){return o=Math.max(0,Math.min(o,r/2,n/2)),o===0?`M ${e} ${t} L ${e+r} ${t} L ${e+r} ${t+n} L ${e} ${t+n} Z`:[`M ${e+o} ${t}`,`L ${e+r-o} ${t}`,`A ${o} ${o} 0 0 1 ${e+r} ${t+o}`,`L ${e+r} ${t+n-o}`,`A ${o} ${o} 0 0 1 ${e+r-o} ${t+n}`,`L ${e+o} ${t+n}`,`A ${o} ${o} 0 0 1 ${e} ${t+n-o}`,`L ${e} ${t+o}`,`A ${o} ${o} 0 0 1 ${e+o} ${t}`,"Z"].join(" ")}function Yr(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-highlights","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");n.appendChild(o);let i=[];for(let k=0;k<e.length;k++){let{rect:p,borderRadius:v}=e[k],C=p.left-.5,R=p.top-.5,b=p.width+1,x=p.height+1,O=Math.min(v+.5,b/2,x/2),g=Zr(C,R,b,x,O),$=`__fork-glow-${k}`,T=document.createElementNS(t,"filter");T.setAttribute("id",$),T.setAttribute("x","-100%"),T.setAttribute("y","-100%"),T.setAttribute("width","300%"),T.setAttribute("height","300%");let L=document.createElementNS(t,"feGaussianBlur");L.setAttribute("in","SourceGraphic"),L.setAttribute("stdDeviation","8"),T.appendChild(L),o.appendChild(T);let U=`__fork-mask-${k}`,S=document.createElementNS(t,"mask");S.setAttribute("id",U),S.setAttribute("maskUnits","userSpaceOnUse"),S.setAttribute("x",String(C-200)),S.setAttribute("y",String(R-200)),S.setAttribute("width",String(b+400)),S.setAttribute("height",String(x+400));let y=document.createElementNS(t,"rect");y.setAttribute("x",String(C-200)),y.setAttribute("y",String(R-200)),y.setAttribute("width",String(b+400)),y.setAttribute("height",String(x+400)),y.setAttribute("fill","white"),S.appendChild(y);let h=document.createElementNS(t,"path");h.setAttribute("d",g),h.setAttribute("fill","black"),S.appendChild(h),o.appendChild(S);let P=document.createElementNS(t,"g");P.setAttribute("mask",`url(#${U})`),P.setAttribute("opacity","0");let m=document.createElementNS(t,"g");m.setAttribute("filter",`url(#${$})`);let c=document.createElementNS(t,"path");c.setAttribute("d",g),c.setAttribute("fill","none"),c.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),c.setAttribute("stroke-width","6"),c.setAttribute("stroke-linecap","round"),m.appendChild(c),P.appendChild(m),n.appendChild(P);let I=document.createElementNS(t,"path");I.setAttribute("d",g),I.setAttribute("fill","none"),I.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),I.setAttribute("stroke-width","2"),I.setAttribute("stroke-linecap","round"),I.setAttribute("opacity","0"),n.appendChild(I),i.push(c,I),c.__group=P;}r.appendChild(n),document.body.appendChild(r);let s=[];for(let k=0;k<i.length;k+=2){let p=i[k],v=i[k+1],C=p.__group,R=v.getTotalLength(),b=p.getTotalLength();if(R<=0)continue;let x=R*.35;v.setAttribute("stroke-dasharray",`${x} ${R-x}`),v.setAttribute("stroke-dashoffset","0"),s.push(v.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*R,opacity:.92,offset:.06},{strokeDashoffset:-2*R,opacity:.92,offset:.92},{strokeDashoffset:-2.25*R,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let O=b*.35;p.setAttribute("stroke-dasharray",`${O} ${b-O}`),p.setAttribute("stroke-dashoffset","0"),s.push(p.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*b,offset:.06},{strokeDashoffset:-2*b,offset:.92},{strokeDashoffset:-2.25*b,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),s.push(C.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,f=()=>{if(l)return;l=true,clearTimeout(w);for(let p of s)try{p.cancel();}catch{}let k=r.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});k.onfinish=()=>r.remove(),window.removeEventListener("click",f);},w=setTimeout(f,14500);return setTimeout(()=>{l||window.addEventListener("click",f);},500),f}function po(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-removed","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let s=document.createElementNS(t,"feDropShadow");s.setAttribute("dx","0"),s.setAttribute("dy","1"),s.setAttribute("stdDeviation","2"),s.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(s),o.appendChild(i),n.appendChild(o);for(let{rect:l,borderRadius:f}of e){let w=l.left,k=l.top,p=l.width,v=l.height,C=Math.min(f,p/2,v/2),R=Zr(w,k,p,v,C),b=document.createElementNS(t,"path");b.setAttribute("d",R),b.setAttribute("fill","none"),b.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),b.setAttribute("stroke-width","1.5"),b.setAttribute("stroke-dasharray","8 4"),b.setAttribute("stroke-linecap","round"),b.setAttribute("filter","url(#__fork-removed-shadow)"),b.setAttribute("opacity","0"),n.appendChild(b),b.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return r.appendChild(n),document.body.appendChild(r),r}function mo(e,t){if(e===t)return true;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return false;for(let n of r)if(!Object.is(e[n],t[n]))return false;return true}var go=ir__namespace.default.memo(function({component:t,containerRef:r,wrapperStyle:n,hostProps:o}){return Ln.jsx("div",{ref:r,style:n,children:Ln.jsx(t,{...o})})},(e,t)=>e.component===t.component&&mo(e.hostProps,t.hostProps)),sr=class extends ir__namespace.default.Component{constructor(t){super(t),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(t){console.error(`[Fork:${this.props.slotId}] fork render failed`,t);}componentDidUpdate(t){t.resetKey!==this.props.resetKey&&this.state.hasError&&this.setState({hasError:false});}render(){return this.state.hasError?this.props.fallback:this.props.children}};function Qr({slotId:e,children:t,githubRepo:r,shared:n,events:o}){ar(t,e);let i=Bt(e),{baseUrl:s,apiKey:l,appId:f,shouldSkipAnimation:w}=ye(),[k,p]=ir.useState(null),v=ir.useRef(null),C=ir.useRef(null),R=ir.useRef(null),b=ir.useRef(false),x=ir.useRef(null),O=ir.useRef(null),g=!!(n||o),$=ir.useRef(null);g&&!$.current&&($.current=new ut(e));let T=ir.useRef(o);if(T.current=o,ir.useEffect(()=>{if(g)return ()=>{$.current?.destroy(),$.current=null;}},[g,e]),g&&$.current&&n)for(let[h,P]of Object.entries(n))$.current.set(h,P);ir.useEffect(()=>{if(!g)return;$.current||($.current=new ut(e));let h=$.current,P=Object.keys(T.current||{}).map(m=>h.on(m,(...c)=>T.current?.[m]?.(...c)));return ()=>P.forEach(m=>m())},[g,e]),ir.useEffect(()=>{if(Gr.has(e))return;Gr.add(e);let h={id:e,appId:f,label:e,eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:r,mode:"direct",sharedKeys:n?Object.keys(n):[],eventNames:o?Object.keys(o):[],propsShape:"",callbackNames:[]};fetch(`${s}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${l}`,"Content-Type":"application/json"},body:JSON.stringify(h)}).catch(()=>{});},[e,s,l,r,f]);let L=i?.id||null;ir.useEffect(()=>{if(i?.bundleUrl,v.current,C.current,!i?.bundleUrl||!L){return}let h=`${s}${i.bundleUrl.replace("bundle.js","component.js")}`,P=`__fork_animated_${e}`,m=sessionStorage.getItem(P),c=w(e),I=!c&&m!==L;if(c&&L&&sessionStorage.setItem(P,L),I&&C.current){let H=qr(C.current);R.current=H,b.current=true,`${e}${H.length}`;}window.__FORK_REACT__=ir__namespace.default,window.__FORK_REACT_DOM__=Tn__namespace,window.__FORK_REACT_JSX__=Ln__namespace;let D=Date.now(),B=`${s}${i.bundleUrl.replace("bundle.js","component.css")}?t=${D}`,A=document.createElement("link");A.rel="stylesheet",A.href=B,A.dataset.forkSlot=e,document.head.appendChild(A);let F=document.createElement("script");return F.src=h+"?t="+D,F.onload=()=>{let H=window.__FORK_EXPORT__;if(H?.default){if(C.current&&R.current&&b.current){let Z=C.current.getBoundingClientRect(),G=C.current.cloneNode(true);G.setAttribute("data-fork-clone-overlay","true"),G.style.position="fixed",G.style.top=`${Z.top}px`,G.style.left=`${Z.left}px`,G.style.width=`${Z.width}px`,G.style.height=`${Z.height}px`,G.style.flex="none",G.style.minHeight="auto",G.style.zIndex="9998",G.style.pointerEvents="none",G.style.overflow="hidden";let we=getComputedStyle(C.current).backgroundColor;G.style.backgroundColor=we&&we!=="rgba(0, 0, 0, 0)"&&we!=="transparent"?we:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(G);let j=C.current.querySelectorAll("*"),ne=G.querySelectorAll("*");for(let ue=0;ue<j.length;ue++)j[ue].scrollTop!==0&&(ne[ue].scrollTop=j[ue].scrollTop),j[ue].scrollLeft!==0&&(ne[ue].scrollLeft=j[ue].scrollLeft);x.current=G;}p(()=>H.default),v.current=L;}else console.error(`[Fork:${e}] component.js loaded but no default export found`);window.__FORK_EXPORT__=void 0;},F.onerror=()=>{console.error(`[Fork:${e}] failed to load component.js`);},document.head.appendChild(F),()=>{F.remove(),A.remove(),O.current&&(clearTimeout(O.current),O.current=null),x.current&&(x.current.remove(),x.current=null);}},[L,s,e]),ir.useEffect(()=>{if(!b.current||!k||!C.current){`${e}${b.current}`,C.current;return}let h=R.current;if(!h){return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!C.current)return;let P=qr(C.current),m=uo(h,P),c=fo(h,P),I=x.current;if(`${e}${m.length}${c.length}`,c.length>0&&I){let D=po(c);O.current=setTimeout(()=>{O.current=null;let B=400;I.animate([{opacity:1},{opacity:0}],{duration:B,fill:"forwards"}),D.animate([{opacity:1},{opacity:0}],{duration:B,fill:"forwards"}),setTimeout(()=>{I.remove(),D.remove(),x.current=null,m.length>0&&(Yr(m));},B);},3500);}else I&&(I.remove(),x.current=null),m.length>0&&(Yr(m));R.current=null,b.current=false,L&&(sessionStorage.setItem(`__fork_animated_${e}`,L),`${e}`);});});},[k]);let U={flex:1,minHeight:0,display:"flex",flexDirection:"column"};if(!i||i.status!=="complete"||!i.bundleUrl)return Ln.jsx("div",{ref:C,style:U,children:t});if(!k)return Ln.jsx("div",{ref:C,style:U,children:t});let y=t?.props??{};return Ln.jsx(sr,{slotId:e,resetKey:L,fallback:Ln.jsx("div",{ref:C,style:U,children:t}),children:Ln.jsx(go,{component:k,containerRef:C,wrapperStyle:U,hostProps:y})})}var tn=new Set;function ko(e){return `{ ${Object.entries(e).map(([r,n])=>n==null?`${r}: unknown`:Array.isArray(n)?`${r}: ${n.length>0?typeof n[0]:"unknown"}[]`:`${r}: ${typeof n}`).join("; ")} }`}function rn(e,t=new Set){return ir.Children.forEach(e,r=>{if(!ir.isValidElement(r))return;let n=r.props;for(let[o,i]of Object.entries(n))typeof i=="function"&&/^on[A-Z]/.test(o)&&t.add(o);n.children&&rn(n.children,t);}),t}function bo({slotId:e,props:t,children:r,allowedFetches:n,githubRepo:o,callbacks:i,mode:s="iframe",shared:l,events:f}){if(ar(r,e),s==="direct")return Ln.jsx(Qr,{slotId:e,githubRepo:o,shared:l,events:f,children:r});let w=Bt(e),{baseUrl:k,apiKey:p,appId:v}=ye(),C=ir.useRef(null),R=ir.useRef(false),b=ir.useRef(null),x=ir.useRef(i);x.current=i;let O=ir.useRef(t);O.current=t;let g=ir.useRef(n);g.current=n,ir.useEffect(()=>{if(typeof process<"u")return;let U=rn(r),S=new Set(i?Object.keys(i):[]),y=[...U].filter(h=>!S.has(h));y.length>0&&console.error(`[ForkSlot:${e}] Missing bridged callbacks! The following callback props are used by children but not passed to ForkSlot's \`callbacks\` prop:
|
|
3
|
-
`+
|
|
4
|
-
`)+"\n\nThe forked component will not be able to call these. Add them to the `callbacks` prop of <ForkSlot>.");},[e,r,i]),ir.useEffect(()=>{
|
|
1
|
+
'use strict';var ir=require('react'),Tn=require('react-dom'),Ln=require('react/jsx-runtime'),Bn=require('react/jsx-dev-runtime'),lucideReact=require('lucide-react');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var ir__namespace=/*#__PURE__*/_interopNamespace(ir);var Tn__namespace=/*#__PURE__*/_interopNamespace(Tn);var Ln__namespace=/*#__PURE__*/_interopNamespace(Ln);var Bn__namespace=/*#__PURE__*/_interopNamespace(Bn);var We="__FORK_SHARED__";function Gt(){var t,r,n,o;let e=globalThis;return e[We]||(e[We]={}),(t=e[We]).react||(t.react=ir__namespace),(r=e[We])["react-dom"]||(r["react-dom"]=Tn__namespace),(n=e[We])["react/jsx-runtime"]||(n["react/jsx-runtime"]=Ln__namespace),(o=e[We])["react/jsx-dev-runtime"]||(o["react/jsx-dev-runtime"]=Bn__namespace),e[We]}function qt(e){return Object.assign(Gt(),e)}var Nn="__fork_preview_session__";function Pt(e){return `${Nn}${e}`}var ee={apiKey:null,session:null},Yt=new Set;function It(){for(let e of Yt)try{e();}catch(t){console.error("[fork-preview] subscriber threw",t);}}function Nr(e){let t=Date.parse(e.expires_at);return Number.isFinite(t)?t<=Date.now():true}function Un(e){if(typeof window>"u")return null;try{let t=window.sessionStorage.getItem(Pt(e));if(!t)return null;let r=JSON.parse(t);return !r||typeof r!="object"||typeof r.preview_session_id!="string"?null:Nr(r)?(window.sessionStorage.removeItem(Pt(e)),null):r}catch{return null}}function Zt(e,t){if(!(typeof window>"u"))try{t?window.sessionStorage.setItem(Pt(e),JSON.stringify(t)):window.sessionStorage.removeItem(Pt(e));}catch{}}function nt(e){ee.apiKey!==e&&(ee.apiKey=e,ee.session=Un(e),It());}function Ne(){return ee.session?Nr(ee.session)?(Mt(null),null):ee.session:null}function Mt(e){ee.session=e,ee.apiKey&&Zt(ee.apiKey,e),It();}function lt(e){ee.session&&ee.session.fork_id!==e&&(ee.session={...ee.session,fork_id:e},ee.apiKey&&Zt(ee.apiKey,ee.session),It());}function Ve(e,t){ee.session&&(ee.session.container_id===e&&ee.session.container_name===t||(ee.session={...ee.session,container_id:e,container_name:t??ee.session.container_name??"Fork",fork_id:null},ee.apiKey&&Zt(ee.apiKey,ee.session),It()));}function Qt(e){return Yt.add(e),()=>{Yt.delete(e);}}var Ur="__fork_preview";function Hr(){if(typeof window>"u")return null;let e=window.location.hash;if(!e||e.length<2)return null;let r=new URLSearchParams(e.slice(1)).get(Ur);return typeof r=="string"&&r.length>0?r:null}function tr(e){if(typeof window>"u")return false;try{let t=window.sessionStorage.getItem(`__fork_preview_session__${e}`);if(t){let r=JSON.parse(t),n=typeof r?.expires_at=="string"?Date.parse(r.expires_at):NaN;if(Number.isFinite(n)&&n>Date.now())return !0;window.sessionStorage.removeItem(`__fork_preview_session__${e}`);}}catch{}return Dr()!==null}function Or(){if(typeof window>"u")return;let e=window.location.hash;if(!e||e.length<2)return;let t=new URLSearchParams(e.slice(1));t.delete(Ur);let r=t.toString(),n=r?`#${r}`:"";try{window.history.replaceState(null,"",window.location.pathname+window.location.search+n);}catch{}}var Xe=null,er=null,ct=null;function Dr(){if(Xe)return Xe;let e=Hr();return e?(Xe=e,Or(),Xe):null}async function rr(e,t){nt(e);let r=Ne();if(r)return Xe=null,r;let n=Xe??Hr();if(Xe=null,!n)return null;Or();try{let o=await fetch(`${t}/api/v1/preview/activate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({token:n})});if(!o.ok){let l=await o.json().catch(()=>({}));return console.warn(`[fork-preview] activate failed (${o.status}): ${l.error??"unknown"}`),null}let i=await o.json(),s={preview_session_id:i.preview_session_id,tenant_id:i.tenant_id,app_id:i.app_id,target:i.target,operator_id:i.operator_id,container_id:i.container_id??null,container_name:i.container_name??"Fork",fork_id:i.fork_id??null,expires_at:i.expires_at};return Mt(s),s}catch(o){return console.warn("[fork-preview] activate threw",o),null}}async function nr(e,t,r){nt(e);let n=Ne();if(n)return n;if(!r.appId||!r.userId||!r.userHash)return null;let o=[e,t,r.appId,r.userId].join(`
|
|
2
|
+
`);return ct&&er===o||(er=o,ct=(async()=>{try{let i=await fetch(`${t}/api/v1/preview/auto-activate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,"X-Fork-User-Id":r.userId,"X-Fork-User-Hash":r.userHash},body:JSON.stringify({appId:r.appId})});if(i.status===204)return null;if(!i.ok){let f=await i.json().catch(()=>({}));return console.warn(`[fork-preview] auto admin activate failed (${i.status}): ${f.error??"unknown"}`),null}let s=await i.json(),l={preview_session_id:s.preview_session_id,tenant_id:s.tenant_id,app_id:s.app_id,target:s.target,operator_id:s.operator_id,container_id:s.container_id??null,container_name:s.container_name??"Fork",fork_id:s.fork_id??null,expires_at:s.expires_at};return Mt(l),l}catch(i){return console.warn("[fork-preview] auto admin activate threw",i),null}finally{er=null,ct=null;}})()),ct}function On(){return Ne()}function Dn(){return null}function Tt(){return ir.useSyncExternalStore(Qt,On,Dn)}function re(){let e=Ne();if(!e)return {};let t={"X-Fork-Preview-Session":e.preview_session_id};return e.fork_id&&(t["X-Fork-Preview-Fork-Id"]=e.fork_id),t}async function Lt(e){let t=new URLSearchParams({app:e.appId,user:e.userId});e.containerId&&t.set("containerId",e.containerId);let r=`${e.baseUrl}/api/v1/manifest?${t.toString()}`,n={Authorization:`Bearer ${e.apiKey}`,"X-Fork-App-Id":e.appId,"X-Fork-User-Id":e.userId,...e.extraHeaders??{}};e.userHash&&(n["X-Fork-User-Hash"]=e.userHash),e.previous?.etag&&(n["If-None-Match"]=e.previous.etag);let o=await fetch(r,{headers:n,signal:e.signal});if(o.status===304)return null;if(!o.ok)throw new Error(`manifest ${o.status} ${o.statusText}`);let i=await o.json(),s={};for(let[l,f]of Object.entries(i.modules)){let w=f.moduleUrl??f.bundleUrl??null,y=f.legacyModuleUrl??f.legacyBundleUrl??null;s[l]={forkId:f.forkId,moduleUrl:w,legacyModuleUrl:y,bundleUrl:f.bundleUrl??w,legacyBundleUrl:f.legacyBundleUrl??y,cssUrls:f.cssUrls??[],integrity:f.integrity,metadata:f.metadata,buildId:f.buildId,updatedAt:f.updatedAt};}return {containerId:i.containerId,slots:i.slots,modules:s,generatedAt:i.generatedAt,etag:o.headers.get("ETag")??void 0}}var jn="fork:manifest:v1";function or(e,t,r){return `${jn}:${e}:${t}:${r}`}function zn(e,t,r){if(typeof window>"u")return null;try{let n=window.localStorage.getItem(or(e,t,r));return n?JSON.parse(n):null}catch{return null}}function Kn(e,t,r,n){if(!(typeof window>"u"))try{window.localStorage.setItem(or(e,t,r),JSON.stringify(n));}catch{}}function Wn(e,t,r){if(!(typeof window>"u"))try{window.localStorage.removeItem(or(e,t,r));}catch{}}function Vn(e,t){if(!e||!t)return e!==t;if(e.containerId!==t.containerId)return true;let r=Object.entries(e.slots),n=Object.entries(t.slots);if(r.length!==n.length)return true;for(let[s,l]of r){let f=t.slots[s];if(!f||f.forkId!==l.forkId||f.buildId!==l.buildId)return true}let o=Object.entries(e.modules),i=Object.entries(t.modules);if(o.length!==i.length)return true;for(let[s,l]of o){let f=t.modules[s];if(!f||f.forkId!==l.forkId||f.buildId!==l.buildId)return true}return false}var Vr=ir.createContext(null),Gn=12e3,qn=45e3,jr="fork:activity:v1",Yn=new Set(["pending","running","building"]),Zn="Setting up environment";function Se(e){return Yn.has(e)}function Qn(e,t){return t?.targetId?t:e.boundaryId?{targetKind:"module",targetId:e.boundaryId}:e.slotId?{targetKind:"slot",targetId:e.slotId}:null}function eo(e,t){let r=Qn(e,t);if(!r)return null;let n=new Date().toISOString();return {id:e.id,status:e.status,targetKind:r.targetKind,targetId:r.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,createdAt:e.createdAt||n,updatedAt:e.completedAt||n,completedAt:e.completedAt??null}}function zr(e){return {id:e.id,status:e.status,targetKind:e.targetKind,targetId:e.targetId,summary:e.summary??null,estimateMinutes:e.estimateMinutes??null,promptCount:e.promptCount,messageCount:e.messageCount,isActive:e.isActive,createdAt:e.createdAt,updatedAt:e.updatedAt,completedAt:e.completedAt??null}}function Bt(e,t){let r=typeof t.summary=="string"&&t.summary.trim()?t.summary.trim():void 0,n=typeof e?.summary=="string"&&e.summary.trim()?e.summary.trim():void 0,o=typeof t.estimateMinutes=="number"&&Number.isFinite(t.estimateMinutes)?t.estimateMinutes:void 0,i=typeof e?.estimateMinutes=="number"&&Number.isFinite(e.estimateMinutes)?e.estimateMinutes:void 0;return {...e,...t,summary:r??n??null,estimateMinutes:o??i??null,latestMessage:t.latestMessage??e?.latestMessage??null,unread:t.unread??e?.unread??false}}function dt(e){return `${e.id}:${e.completedAt||e.updatedAt}`}function Je(e){if(typeof window>"u")return new Set;try{let t=window.localStorage.getItem(e);if(!t)return new Set;let r=JSON.parse(t);return Array.isArray(r)?new Set(r.filter(n=>typeof n=="string")):new Set}catch{return new Set}}function Ge(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,JSON.stringify([...t].slice(-200)));}catch{}}function to(e){if(e.estimateMinutes)return `~${e.estimateMinutes}m`}function ro(e){let t=e.data&&typeof e.data=="object"?e.data:{};if(e.type==="status"){let r=typeof t.status=="string"?t.status:"running",n=typeof t.summary=="string"?t.summary:void 0;return {status:r,latestMessage:Se(r)?"Building":void 0,summary:n,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,updatedAt:e.timestamp}}return e.type==="tool_use"?{status:"running",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_start"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="build_complete"?{status:"building",latestMessage:"Building",updatedAt:e.timestamp}:e.type==="complete"?{status:"complete",summary:typeof t.summary=="string"?t.summary:void 0,estimateMinutes:typeof t.estimateMinutes=="number"?t.estimateMinutes:void 0,latestMessage:"Fork ready",completedAt:e.timestamp,updatedAt:e.timestamp}:e.type==="error"||e.type==="build_error"?{status:"error",latestMessage:typeof t.error=="string"?t.error:typeof t.message=="string"?t.message:"Fork failed",updatedAt:e.timestamp}:{updatedAt:e.timestamp}}function no(e){let t=e.filter(o=>Se(o.status)),r=e.filter(o=>o.status==="complete"&&o.unread),n=[...e].sort((o,i)=>Date.parse(i.updatedAt)-Date.parse(o.updatedAt))[0]??null;if(t.length>1)return {state:"running",label:`${t.length} forks running`,count:t.length,runningCount:t.length,unreadCompletedCount:r.length,latest:t[0]};if(t.length===1){let o=t[0],i=!!(typeof o.summary=="string"&&o.summary.trim());return {state:"running",label:i?o.summary.trim():Zn,detail:i?to(o):void 0,count:1,runningCount:1,unreadCompletedCount:r.length,latest:o}}if(r.length>1)return {state:"complete",label:`${r.length} forks ready`,count:r.length,runningCount:0,unreadCompletedCount:r.length,latest:r[0]};if(r.length===1){let o=r[0];return {state:"complete",label:o.summary||"Fork ready",count:1,runningCount:0,unreadCompletedCount:1,latest:o}}return {state:n?.status==="error"?"error":"idle",label:"Fork",count:0,runningCount:0,unreadCompletedCount:0,latest:n}}function ut(e,t){if(!t)return t;try{return new URL(t,`${e.replace(/\/+$/,"")}/`).toString()}catch{return t}}function oo(e,t){let r={};for(let[n,o]of Object.entries(t.boundaries||{}))r[n]={...o,moduleUrl:ut(e,o.moduleUrl),cssUrls:Array.isArray(o.cssUrls)?o.cssUrls.map(i=>ut(e,i)):[]};return r}function Kr(e,t,r,n){let o={};for(let[i,s]of Object.entries(t.slots)){let l=s.bundleUrl??s.legacyBundleUrl;l&&(o[i]={id:s.forkId,userId:r,prompt:"",status:"complete",slotId:i,appId:n,bundleUrl:ut(e,l),createdAt:s.updatedAt,completedAt:s.updatedAt});}return o}function Wr(e,t){let r={};for(let[n,o]of Object.entries(t.modules)){let i=o.moduleUrl??o.legacyModuleUrl??o.bundleUrl??"";i&&(r[n]={id:o.forkId,boundaryId:n,moduleUrl:ut(e,i),cssUrls:(o.cssUrls??[]).map(s=>ut(e,s)),integrity:o.integrity,metadata:o.metadata,createdAt:o.updatedAt});}return r}function so(e){let{apiKey:t,baseUrl:r,children:n,appId:o,shared:i}=e,s="userId"in e?e.userId:void 0,l="authUrl"in e?e.authUrl:void 0,[f]=ir.useState(()=>(nt(t),tr(t))),[w,y]=ir.useState({}),[p,v]=ir.useState(s?{userId:s,userHash:void 0}:null),[_,C]=ir.useState(!!s||f),[b,A]=ir.useState({}),[O,g]=ir.useState(!o),[P,L]=ir.useState(0),[B,U]=ir.useState(null),[S,k]=ir.useState([]),[h,E]=ir.useState(()=>typeof document>"u"?true:document.visibilityState!=="hidden"),m=ir.useRef(new Map),c=ir.useRef(new Map),[I,D]=ir.useState(0),N=ir.useRef(new Set),R=ir.useRef(new Map),x=ir.useRef(void 0),H=ir.useRef(new Map),Z=ir.useRef([]),G=ir.useRef(new Set),we=ir.useRef(false);Gt(),ir.useEffect(()=>{return rr(t,r).then(()=>{}),()=>{}},[]);let j=Tt();ir.useEffect(()=>{f||j||!o||!p?.userHash||nr(t,r,{appId:o,userId:p.userId,userHash:p.userHash});},[t,o,p?.userHash,p?.userId,r,f,j?.preview_session_id]),i&&x.current!==i&&(qt(i),x.current=i),ir.useEffect(()=>{l&&(f||(C(false),fetch(l,{credentials:"include"}).then(d=>{if(!d.ok)throw new Error(`Auth endpoint returned ${d.status}`);return d.json()}).then(d=>{if(!d.userId||typeof d.userId!="string")throw new Error("authUrl response must include userId");v({userId:d.userId,userHash:typeof d.userHash=="string"?d.userHash:void 0});}).catch(d=>{console.error("[ForkProvider] Failed to fetch user identity from authUrl:",d.message);}).finally(()=>{C(true);})));},[l,f]),ir.useEffect(()=>{!l&&s&&(v({userId:s,userHash:void 0}),C(true));},[s,l]);let ne=p?.userId??"",fe=p?.userHash,q=j?"":ne,ie=j?void 0:fe,Ze=!!o,xe=ir.useCallback(async()=>{if(!Ze){U(null),A({}),g(true),L(u=>u+1);return}if(!_){g(false);return}if(!j&&!q||!o){U(null),A({}),g(true),L(u=>u+1);return}if(g(false),!j){try{let u=await Lt({baseUrl:r,apiKey:t,appId:o,userId:q,userHash:ie});u&&(U(u.containerId),y(Kr(r,u,q,o)),A(Wr(r,u)));}catch(u){console.error("[ForkProvider] Failed to fetch fork manifest:",u.message),U(null),y({}),A({});}finally{L(u=>u+1),g(true);}return}if(U(j.container_id??null),j.container_id){try{let u=await Lt({baseUrl:r,apiKey:t,appId:o,userId:q,containerId:j.container_id,extraHeaders:re()});u&&(y(Kr(r,u,q,o)),A(Wr(r,u)));}catch(u){console.error("[ForkProvider] Failed to fetch preview container manifest:",u.message),y({}),A({});}finally{L(u=>u+1),g(true);}return}let d=new URLSearchParams({appId:o,userId:q});ie&&d.set("userHash",ie);try{let u=await fetch(`${r}/api/v1/boundaries/manifest?${d.toString()}`,{headers:{Authorization:`Bearer ${t}`,...re()}});if(!u.ok)throw new Error(`${u.status}`);let M=await u.json();A(oo(r,M));}catch(u){console.error("[ForkProvider] Failed to fetch module override manifest:",u.message),A({});}finally{L(u=>u+1),g(true);}},[t,o,r,_,Ze,ie,q,j?.preview_session_id,j?.fork_id,j?.container_id]);ir.useEffect(()=>{if(!q||o&&(!j||j.container_id))return;let d=new URLSearchParams({userId:q});ie&&d.set("userHash",ie),fetch(`${r}/api/v1/forks/active?${d.toString()}`,{headers:{Authorization:`Bearer ${t}`,...re()}}).then(u=>{if(!u.ok)throw new Error(`${u.status}`);return u.json()}).then(u=>{u&&typeof u=="object"&&y(u);}).catch(()=>{});},[t,o,q,ie,r,j?.preview_session_id,j?.fork_id]),ir.useEffect(()=>{xe();},[xe]);let Ee=ir.useCallback((d,u)=>{y(M=>({...M,[d]:u}));},[]),me=ir.useCallback(d=>{y(u=>{let M={...u};return delete M[d],M});},[]),$e=ir.useCallback(d=>{N.current.add(d);},[]),He=ir.useCallback(d=>N.current.has(d)?(N.current.delete(d),true):false,[]),Ce=ir.useCallback((d,u)=>{R.current.set(d,u);},[]),Re=ir.useCallback((d,u)=>R.current.get(d)!==u?false:(R.current.delete(d),true),[]),Oe=ir.useCallback(d=>{if(!o)return;let u=JSON.stringify(d);m.current.get(d.id)===u||c.current.get(d.id)?.signature===u||(c.current.set(d.id,{boundary:d,signature:u}),D(Q=>Q+1));},[o]);ir.useEffect(()=>{if(!o||c.current.size===0)return;let d=setTimeout(()=>{let u=Array.from(c.current.values());u.length!==0&&fetch(`${r}/api/v1/boundaries`,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({appId:o,boundaries:u.map(M=>M.boundary)})}).then(M=>{if(!M.ok)throw new Error(`${M.status}`)}).then(()=>{for(let M of u)c.current.get(M.boundary.id)?.signature===M.signature&&(c.current.delete(M.boundary.id),m.current.set(M.boundary.id,M.signature));}).catch(M=>{console.error("[ForkProvider] Failed to register module boundaries:",M.message);});},50);return ()=>{clearTimeout(d);}},[t,o,r,I]);let Vt=ir.useCallback(d=>b[d],[b]),xt=j?`preview:${j.preview_session_id}`:q,At=`${t}:${o||"no-app"}:${B||"no-container"}:${xt||"anonymous"}`,ve=`${jr}:seen:${At}`,K=`${jr}:tracked:${At}`;ir.useEffect(()=>{Z.current=S;},[S]);let De=ir.useCallback(()=>{let d={Authorization:`Bearer ${t}`,...re()};return o&&(d["X-Fork-App-Id"]=o),!j&&q&&(d["X-Fork-User-Id"]=q),!j&&ie&&(d["X-Fork-User-Hash"]=ie),d},[t,o,j,ie,q]),Pe=ir.useCallback(async()=>{if(!B)return;let d=new URLSearchParams({container_id:B}),u=await fetch(`${r}/api/v1/forks?${d.toString()}`,{headers:De()}).catch(()=>null);if(!u||!u.ok)return;let M=await u.json().catch(()=>({})),Q=Array.isArray(M.forks)?M.forks:[],V=Je(ve),z=Je(K),oe=false,ae=new Map(Z.current.map(X=>[X.id,X])),ke=[];for(let X of Q){let le=zr(X);Se(le.status)&&!z.has(le.id)&&(z.add(le.id),oe=true);let te=ae.get(le.id),se=te?Se(te.status):false,pe=dt(le);le.status==="complete"&&(z.has(le.id)||se)&&!V.has(pe)&&!G.current.has(pe)&&!te?.unread&&(we.current||z.has(le.id)||se)&&(G.current.add(pe),ke.push(le));}if(k(X=>{let le=new Map(X.map(de=>[de.id,de])),te=new Set,se=new Map;for(let de of Q){let ge=zr(de);te.add(ge.id);let Be=le.get(ge.id),Y=Be?Se(Be.status):false,it=dt(ge),Me=ge.status==="complete"&&(z.has(ge.id)||Y)&&!V.has(it),et=Bt(Be,{...ge,unread:Me});se.set(ge.id,et);}for(let de of X)te.has(de.id)||(Se(de.status)||de.unread)&&se.set(de.id,de);let pe=[...se.values()].sort((de,ge)=>Date.parse(ge.updatedAt)-Date.parse(de.updatedAt));return Z.current=pe,pe}),oe&&Ge(K,z),ke.length>0){for(let X of ke)X.targetKind==="module"&&Ce(X.targetId,X.id);xe().catch(()=>{});}we.current=true;},[ve,K,r,De,B,xe,Ce]),_t=ir.useCallback((d,u)=>{let M=eo(d,u);if(!M)return;let Q=d.containerId??d._containerId;if(Q&&!B&&U(Q),Se(M.status)){let oe=Je(K);oe.has(M.id)||(oe.add(M.id),Ge(K,oe));}let V=new Map(Z.current.map(oe=>[oe.id,oe]));V.set(M.id,Bt(V.get(M.id),M));let z=[...V.values()].sort((oe,ae)=>Date.parse(ae.updatedAt)-Date.parse(oe.updatedAt));Z.current=z,k(z);},[K,B]),je=ir.useCallback((d,u)=>{let M=ro(u),Q=Je(ve),V=Je(K),z=Z.current.find(te=>te.id===d),oe=z?Se(z.status):false;M.status&&Se(M.status)&&!V.has(d)&&(V.add(d),Ge(K,V));let ae=z?Bt(z,{...z,...M}):null,ke=ae?dt(ae):null,X=!!(ae&&ae.status==="complete"&&(V.has(d)||oe)&&ke&&!Q.has(ke)&&!G.current.has(ke)&&!z?.unread),le=u.type==="complete"&&z?.targetKind==="module"?z.targetId:null;if(k(te=>{let se=te.find(Y=>Y.id===d);if(!se)return te;let pe=Bt(se,{...se,...M}),de=pe.status==="complete"&&(V.has(d)||Se(se.status))&&!Q.has(dt(pe)),ge={...pe,unread:de},Be=te.map(Y=>Y.id===d?ge:Y).sort((Y,it)=>Date.parse(it.updatedAt)-Date.parse(Y.updatedAt));return Z.current=Be,Be}),X&&ae&&ke&&G.current.add(ke),u.type==="complete"){let te=u.data&&typeof u.data=="object"?u.data:{},se=typeof te.boundaryId=="string"?te.boundaryId:le;se&&Ce(se,d),xe().catch(()=>{});}},[ve,K,xe,Ce]),Qe=ir.useCallback(d=>{let u=Je(ve),M=Je(K),Q=false,V=false;for(let z of Z.current){if(z.status!=="complete"||d&&z.id!==d)continue;let oe=dt(z);u.has(oe)||(u.add(oe),Q=true),M.delete(z.id)&&(V=true);}k(z=>{let oe=z.map(ae=>ae.status!=="complete"||d&&ae.id!==d?ae:{...ae,unread:false});return Z.current=oe,oe}),Q&&Ge(ve,u),V&&Ge(K,M);},[ve,K]);ir.useEffect(()=>{we.current=false,G.current.clear(),k([]);for(let d of H.current.values())d.close();H.current.clear(),B&&Pe();},[B,Pe]),ir.useEffect(()=>{if(typeof document>"u")return;let d=()=>{let u=document.visibilityState!=="hidden";E(u),u&&B&&Pe();};return document.addEventListener("visibilitychange",d),window.addEventListener("focus",d),window.addEventListener("online",d),()=>{document.removeEventListener("visibilitychange",d),window.removeEventListener("focus",d),window.removeEventListener("online",d);}},[B,Pe]),ir.useEffect(()=>{let d=S.filter(Q=>Se(Q.status));if(!B||d.length===0)return;let u=h?Gn:qn,M=window.setInterval(()=>{Pe();},u);return ()=>window.clearInterval(M)},[B,h,S,Pe]),ir.useEffect(()=>{for(let d of H.current.values())d.close();H.current.clear();},[t,r,j?.preview_session_id,ie,q]),ir.useEffect(()=>{let d=new Set(S.filter(u=>Se(u.status)).map(u=>u.id));for(let[u,M]of H.current.entries())d.has(u)||(M.close(),H.current.delete(u));for(let u of d){if(H.current.has(u))continue;let M=new URLSearchParams({key:t});j?(M.set("previewSessionId",j.preview_session_id),M.set("previewForkId",u)):q&&M.set("userId",q),ie&&M.set("userHash",ie);let Q=new EventSource(`${r}/api/v1/forks/${u}/events?${M.toString()}`);Q.onmessage=V=>{try{je(u,JSON.parse(V.data));}catch{}},Q.onerror=()=>{Q.close(),H.current.delete(u);},H.current.set(u,Q);}},[t,r,S,j,je,ie,q]),ir.useEffect(()=>()=>{for(let d of H.current.values())d.close();H.current.clear();},[]);let Ie=no(S),ze=ir.useCallback(async()=>{if(!q)throw new Error("Reset requires a resolved user identity.");let d=new URLSearchParams({userId:q});ie&&d.set("userHash",ie);let u={Authorization:`Bearer ${t}`,...re()};o&&(u["X-Fork-App-Id"]=o);let M=await fetch(`${r}/api/v1/forks/all?${d.toString()}`,{method:"DELETE",headers:u});if(!M.ok){let V=await M.json().catch(()=>({}));throw new Error(V.error||`API error: ${M.status}`)}let Q=await M.json().catch(()=>({}));y({}),A({}),g(true),L(V=>V+1),k([]),G.current.clear(),Ge(ve,new Set),Ge(K,new Set),N.current.clear(),R.current.clear();try{for(let V=sessionStorage.length-1;V>=0;V-=1){let z=sessionStorage.key(V);z&&z.startsWith("__fork_animated_")&&sessionStorage.removeItem(z);}}catch{}return Q},[ve,K,t,o,r,ie,q]);return Ln.jsx(Vr.Provider,{value:{apiKey:t,userId:q,userHash:ie,baseUrl:r,appId:o,forks:w,moduleOverridesEnabled:Ze,moduleManifestReady:O,moduleManifestVersion:P,currentContainerId:B,forkActivities:S,activitySummary:Ie,previewSession:j,trackForkActivity:_t,recordForkActivityEvent:je,markForkActivitySeen:Qe,refreshForkActivities:Pe,setSlotFork:Ee,clearSlotFork:me,skipAnimationForSlot:$e,shouldSkipAnimation:He,queueBoundaryAnimation:Ce,consumeBoundaryAnimation:Re,registerBoundary:Oe,getBoundaryOverride:Vt,refreshModuleManifest:xe,resetAllForks:ze},children:n})}function ye(){let e=ir.useContext(Vr);if(!e)throw new Error("useForkContext must be used within <ForkProvider>");return e}function Nt(e){return ye().forks[e]}var ft=class{constructor(t){this.values=new Map;this.snapshots=new Map;this.listeners=new Map;this.eventHandlers=new Map;this.slotId=t,window.__FORK_BRIDGE__||(window.__FORK_BRIDGE__={}),window.__FORK_BRIDGE__[t]=this;}set(t,r){let n=this.values.get(t);if(Object.is(n,r))return;if(n!==void 0&&r!==null&&n!==null&&typeof n=="object"&&typeof r=="object")try{if(JSON.stringify(n)===JSON.stringify(r))return}catch{}this.values.set(t,r),this.snapshots.set(t,r);let o=this.listeners.get(t);o&&o.forEach(i=>i());}get(t){return this.values.get(t)}getSnapshot(t){return this.snapshots.get(t)}subscribe(t,r){return this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(r),()=>{this.listeners.get(t)?.delete(r);}}useValue(t){let r=window.__FORK_REACT__;return r?.useSyncExternalStore?r.useSyncExternalStore(n=>this.subscribe(t,n),()=>this.getSnapshot(t)):(console.warn("[ForkBridge] React.useSyncExternalStore not available, returning static value"),this.values.get(t))}emit(t,...r){let n=this.eventHandlers.get(t);n&&n.forEach(o=>o(...r));}on(t,r){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(r),()=>{this.eventHandlers.get(t)?.delete(r);}}destroy(){this.listeners.clear(),this.eventHandlers.clear(),this.values.clear(),this.snapshots.clear();let t=window.__FORK_BRIDGE__;t&&delete t[this.slotId];}};function ar(e,t){let r;try{r=ir.Children.only(e);}catch{let o=ir.Children.count(e);throw new Error(`<ForkSlot slotId="${t}"> must wrap exactly one React component, got ${o} children. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`)}let n=r.type;if(typeof n=="string")throw new Error(`<ForkSlot slotId="${t}"> child must be a React component (function or class), not an HTML element <${n}>. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);if(typeof n=="symbol")throw new Error(`<ForkSlot slotId="${t}"> child must be a single React component, not a fragment or special React element. Wrap your slot's contents in a single named component, e.g. <ForkSlot slotId="${t}"><MyShell ...props /></ForkSlot>.`);return r}var Jr=new Set;function Gr(e){let t=[],r=e.querySelectorAll("*");for(let n of r){if(!(n instanceof HTMLElement))continue;let o=n.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(n.tagName))continue;let i=getComputedStyle(n),s=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:n.tagName,className:n.className||"",text:(n.textContent||"").slice(0,50).trim(),rect:o,borderRadius:s});}return t}function uo(e,t){let r=[];for(let n of t)if(!e.find(i=>i.tag===n.tag&&i.className===n.className&&Math.abs(i.rect.top-n.rect.top)<20&&Math.abs(i.rect.left-n.rect.left)<20)&&!r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom)){for(let s=r.length-1;s>=0;s--){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function fo(e,t){let r=[];for(let n of e)if(!t.find(i=>i.tag===n.tag&&i.className===n.className&&Math.abs(i.rect.top-n.rect.top)<20&&Math.abs(i.rect.left-n.rect.left)<20)&&!r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom)){for(let s=r.length-1;s>=0;s--){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function Yr(e,t,r,n,o){return o=Math.max(0,Math.min(o,r/2,n/2)),o===0?`M ${e} ${t} L ${e+r} ${t} L ${e+r} ${t+n} L ${e} ${t+n} Z`:[`M ${e+o} ${t}`,`L ${e+r-o} ${t}`,`A ${o} ${o} 0 0 1 ${e+r} ${t+o}`,`L ${e+r} ${t+n-o}`,`A ${o} ${o} 0 0 1 ${e+r-o} ${t+n}`,`L ${e+o} ${t+n}`,`A ${o} ${o} 0 0 1 ${e} ${t+n-o}`,`L ${e} ${t+o}`,`A ${o} ${o} 0 0 1 ${e+o} ${t}`,"Z"].join(" ")}function qr(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-highlights","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");n.appendChild(o);let i=[];for(let y=0;y<e.length;y++){let{rect:p,borderRadius:v}=e[y],_=p.left-.5,C=p.top-.5,b=p.width+1,A=p.height+1,O=Math.min(v+.5,b/2,A/2),g=Yr(_,C,b,A,O),P=`__fork-glow-${y}`,L=document.createElementNS(t,"filter");L.setAttribute("id",P),L.setAttribute("x","-100%"),L.setAttribute("y","-100%"),L.setAttribute("width","300%"),L.setAttribute("height","300%");let B=document.createElementNS(t,"feGaussianBlur");B.setAttribute("in","SourceGraphic"),B.setAttribute("stdDeviation","8"),L.appendChild(B),o.appendChild(L);let U=`__fork-mask-${y}`,S=document.createElementNS(t,"mask");S.setAttribute("id",U),S.setAttribute("maskUnits","userSpaceOnUse"),S.setAttribute("x",String(_-200)),S.setAttribute("y",String(C-200)),S.setAttribute("width",String(b+400)),S.setAttribute("height",String(A+400));let k=document.createElementNS(t,"rect");k.setAttribute("x",String(_-200)),k.setAttribute("y",String(C-200)),k.setAttribute("width",String(b+400)),k.setAttribute("height",String(A+400)),k.setAttribute("fill","white"),S.appendChild(k);let h=document.createElementNS(t,"path");h.setAttribute("d",g),h.setAttribute("fill","black"),S.appendChild(h),o.appendChild(S);let E=document.createElementNS(t,"g");E.setAttribute("mask",`url(#${U})`),E.setAttribute("opacity","0");let m=document.createElementNS(t,"g");m.setAttribute("filter",`url(#${P})`);let c=document.createElementNS(t,"path");c.setAttribute("d",g),c.setAttribute("fill","none"),c.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),c.setAttribute("stroke-width","6"),c.setAttribute("stroke-linecap","round"),m.appendChild(c),E.appendChild(m),n.appendChild(E);let I=document.createElementNS(t,"path");I.setAttribute("d",g),I.setAttribute("fill","none"),I.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),I.setAttribute("stroke-width","2"),I.setAttribute("stroke-linecap","round"),I.setAttribute("opacity","0"),n.appendChild(I),i.push(c,I),c.__group=E;}r.appendChild(n),document.body.appendChild(r);let s=[];for(let y=0;y<i.length;y+=2){let p=i[y],v=i[y+1],_=p.__group,C=v.getTotalLength(),b=p.getTotalLength();if(C<=0)continue;let A=C*.35;v.setAttribute("stroke-dasharray",`${A} ${C-A}`),v.setAttribute("stroke-dashoffset","0"),s.push(v.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*C,opacity:.92,offset:.06},{strokeDashoffset:-2*C,opacity:.92,offset:.92},{strokeDashoffset:-2.25*C,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let O=b*.35;p.setAttribute("stroke-dasharray",`${O} ${b-O}`),p.setAttribute("stroke-dashoffset","0"),s.push(p.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*b,offset:.06},{strokeDashoffset:-2*b,offset:.92},{strokeDashoffset:-2.25*b,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),s.push(_.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,f=()=>{if(l)return;l=true,clearTimeout(w);for(let p of s)try{p.cancel();}catch{}let y=r.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});y.onfinish=()=>r.remove(),window.removeEventListener("click",f);},w=setTimeout(f,14500);return setTimeout(()=>{l||window.addEventListener("click",f);},500),f}function po(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-removed","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let s=document.createElementNS(t,"feDropShadow");s.setAttribute("dx","0"),s.setAttribute("dy","1"),s.setAttribute("stdDeviation","2"),s.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(s),o.appendChild(i),n.appendChild(o);for(let{rect:l,borderRadius:f}of e){let w=l.left,y=l.top,p=l.width,v=l.height,_=Math.min(f,p/2,v/2),C=Yr(w,y,p,v,_),b=document.createElementNS(t,"path");b.setAttribute("d",C),b.setAttribute("fill","none"),b.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),b.setAttribute("stroke-width","1.5"),b.setAttribute("stroke-dasharray","8 4"),b.setAttribute("stroke-linecap","round"),b.setAttribute("filter","url(#__fork-removed-shadow)"),b.setAttribute("opacity","0"),n.appendChild(b),b.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return r.appendChild(n),document.body.appendChild(r),r}function mo(e,t){if(e===t)return true;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return false;for(let n of r)if(!Object.is(e[n],t[n]))return false;return true}var go=ir__namespace.default.memo(function({component:t,containerRef:r,wrapperStyle:n,hostProps:o}){return Ln.jsx("div",{ref:r,style:n,children:Ln.jsx(t,{...o})})},(e,t)=>e.component===t.component&&mo(e.hostProps,t.hostProps)),sr=class extends ir__namespace.default.Component{constructor(t){super(t),this.state={hasError:false};}static getDerivedStateFromError(){return {hasError:true}}componentDidCatch(t){console.error(`[Fork:${this.props.slotId}] fork render failed`,t);}componentDidUpdate(t){t.resetKey!==this.props.resetKey&&this.state.hasError&&this.setState({hasError:false});}render(){return this.state.hasError?this.props.fallback:this.props.children}};function Zr({slotId:e,children:t,githubRepo:r,shared:n,events:o}){ar(t,e);let i=Nt(e),{baseUrl:s,apiKey:l,appId:f,shouldSkipAnimation:w}=ye(),[y,p]=ir.useState(null),v=ir.useRef(null),_=ir.useRef(null),C=ir.useRef(null),b=ir.useRef(false),A=ir.useRef(null),O=ir.useRef(null),g=!!(n||o),P=ir.useRef(null);g&&!P.current&&(P.current=new ft(e));let L=ir.useRef(o);if(L.current=o,ir.useEffect(()=>{if(g)return ()=>{P.current?.destroy(),P.current=null;}},[g,e]),g&&P.current&&n)for(let[h,E]of Object.entries(n))P.current.set(h,E);ir.useEffect(()=>{if(!g)return;P.current||(P.current=new ft(e));let h=P.current,E=Object.keys(L.current||{}).map(m=>h.on(m,(...c)=>L.current?.[m]?.(...c)));return ()=>E.forEach(m=>m())},[g,e]),ir.useEffect(()=>{if(Jr.has(e))return;Jr.add(e);let h={id:e,appId:f,label:e,eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:r,mode:"direct",sharedKeys:n?Object.keys(n):[],eventNames:o?Object.keys(o):[],propsShape:"",callbackNames:[]};fetch(`${s}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${l}`,"Content-Type":"application/json"},body:JSON.stringify(h)}).catch(()=>{});},[e,s,l,r,f]);let B=i?.id||null;ir.useEffect(()=>{if(i?.bundleUrl,v.current,_.current,!i?.bundleUrl||!B){return}let h=`${s}${i.bundleUrl.replace("bundle.js","component.js")}`,E=`__fork_animated_${e}`,m=sessionStorage.getItem(E),c=w(e),I=!c&&m!==B;if(c&&B&&sessionStorage.setItem(E,B),I&&_.current){let H=Gr(_.current);C.current=H,b.current=true,`${e}${H.length}`;}window.__FORK_REACT__=ir__namespace.default,window.__FORK_REACT_DOM__=Tn__namespace,window.__FORK_REACT_JSX__=Ln__namespace;let D=Date.now(),N=`${s}${i.bundleUrl.replace("bundle.js","component.css")}?t=${D}`,R=document.createElement("link");R.rel="stylesheet",R.href=N,R.dataset.forkSlot=e,document.head.appendChild(R);let x=document.createElement("script");return x.src=h+"?t="+D,x.onload=()=>{let H=window.__FORK_EXPORT__;if(H?.default){if(_.current&&C.current&&b.current){let Z=_.current.getBoundingClientRect(),G=_.current.cloneNode(true);G.setAttribute("data-fork-clone-overlay","true"),G.style.position="fixed",G.style.top=`${Z.top}px`,G.style.left=`${Z.left}px`,G.style.width=`${Z.width}px`,G.style.height=`${Z.height}px`,G.style.flex="none",G.style.minHeight="auto",G.style.zIndex="9998",G.style.pointerEvents="none",G.style.overflow="hidden";let we=getComputedStyle(_.current).backgroundColor;G.style.backgroundColor=we&&we!=="rgba(0, 0, 0, 0)"&&we!=="transparent"?we:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(G);let j=_.current.querySelectorAll("*"),ne=G.querySelectorAll("*");for(let fe=0;fe<j.length;fe++)j[fe].scrollTop!==0&&(ne[fe].scrollTop=j[fe].scrollTop),j[fe].scrollLeft!==0&&(ne[fe].scrollLeft=j[fe].scrollLeft);A.current=G;}p(()=>H.default),v.current=B;}else console.error(`[Fork:${e}] component.js loaded but no default export found`);window.__FORK_EXPORT__=void 0;},x.onerror=()=>{console.error(`[Fork:${e}] failed to load component.js`);},document.head.appendChild(x),()=>{x.remove(),R.remove(),O.current&&(clearTimeout(O.current),O.current=null),A.current&&(A.current.remove(),A.current=null);}},[B,s,e]),ir.useEffect(()=>{if(!b.current||!y||!_.current){`${e}${b.current}`,_.current;return}let h=C.current;if(!h){return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!_.current)return;let E=Gr(_.current),m=uo(h,E),c=fo(h,E),I=A.current;if(`${e}${m.length}${c.length}`,c.length>0&&I){let D=po(c);O.current=setTimeout(()=>{O.current=null;let N=400;I.animate([{opacity:1},{opacity:0}],{duration:N,fill:"forwards"}),D.animate([{opacity:1},{opacity:0}],{duration:N,fill:"forwards"}),setTimeout(()=>{I.remove(),D.remove(),A.current=null,m.length>0&&(qr(m));},N);},3500);}else I&&(I.remove(),A.current=null),m.length>0&&(qr(m));C.current=null,b.current=false,B&&(sessionStorage.setItem(`__fork_animated_${e}`,B),`${e}`);});});},[y]);let U={flex:1,minHeight:0,display:"flex",flexDirection:"column"};if(!i||i.status!=="complete"||!i.bundleUrl)return Ln.jsx("div",{ref:_,style:U,children:t});if(!y)return Ln.jsx("div",{ref:_,style:U,children:t});let k=t?.props??{};return Ln.jsx(sr,{slotId:e,resetKey:B,fallback:Ln.jsx("div",{ref:_,style:U,children:t}),children:Ln.jsx(go,{component:y,containerRef:_,wrapperStyle:U,hostProps:k})})}var en=new Set;function ko(e){return `{ ${Object.entries(e).map(([r,n])=>n==null?`${r}: unknown`:Array.isArray(n)?`${r}: ${n.length>0?typeof n[0]:"unknown"}[]`:`${r}: ${typeof n}`).join("; ")} }`}function tn(e,t=new Set){return ir.Children.forEach(e,r=>{if(!ir.isValidElement(r))return;let n=r.props;for(let[o,i]of Object.entries(n))typeof i=="function"&&/^on[A-Z]/.test(o)&&t.add(o);n.children&&tn(n.children,t);}),t}function bo({slotId:e,props:t,children:r,allowedFetches:n,githubRepo:o,callbacks:i,mode:s="iframe",shared:l,events:f}){if(ar(r,e),s==="direct")return Ln.jsx(Zr,{slotId:e,githubRepo:o,shared:l,events:f,children:r});let w=Nt(e),{baseUrl:y,apiKey:p,appId:v}=ye(),_=ir.useRef(null),C=ir.useRef(false),b=ir.useRef(null),A=ir.useRef(i);A.current=i;let O=ir.useRef(t);O.current=t;let g=ir.useRef(n);g.current=n,ir.useEffect(()=>{if(typeof process<"u")return;let U=tn(r),S=new Set(i?Object.keys(i):[]),k=[...U].filter(h=>!S.has(h));k.length>0&&console.error(`[ForkSlot:${e}] Missing bridged callbacks! The following callback props are used by children but not passed to ForkSlot's \`callbacks\` prop:
|
|
3
|
+
`+k.map(h=>` - ${h}`).join(`
|
|
4
|
+
`)+"\n\nThe forked component will not be able to call these. Add them to the `callbacks` prop of <ForkSlot>.");},[e,r,i]),ir.useEffect(()=>{en.has(e)||(en.add(e),fetch(`${y}/api/v1/slots`,{method:"POST",headers:{Authorization:`Bearer ${p}`,"Content-Type":"application/json"},body:JSON.stringify({id:e,appId:v,label:e,propsShape:t?ko(t):"",eventsShape:"{ navigate?: string }",currentLayout:"",githubRepo:o,callbackNames:i?Object.keys(i):[],mode:s||"iframe"})}).catch(()=>{}));},[e,y,p,o,v]);let P=ir.useCallback(U=>{let S=_.current;if(S?.contentWindow&&C.current){let k=A.current?Object.keys(A.current):[];S.contentWindow.postMessage({type:"slot:props",props:U,callbackNames:k},"*"),b.current=null;}else b.current=U;},[]),L=ir.useCallback((U,S)=>{let k=g.current;return !k||k.length===0?false:k.some(h=>{let[E,m]=h.split(" "),c=S.split("?")[0];return U.toUpperCase()===E.toUpperCase()&&c.startsWith(m)})},[]);if(ir.useEffect(()=>{if(!w?.bundleUrl)return;let U=async S=>{if(S.source===_.current?.contentWindow){if(S.data?.type==="slot:ready")C.current=true,_.current?.contentWindow?.postMessage({type:"slot:allowed-fetches",paths:g.current||[]},"*"),g.current,b.current?P(b.current):P(O.current||{});else if(S.data?.type==="slot:event"){let k=S.data.event;k?.navigate&&(window.location.hash=k.navigate);}else if(S.data?.type==="slot:clipboard-write")navigator.clipboard.writeText(S.data.text).catch(k=>{console.warn(`[ForkSlot:${e}] clipboard write failed:`,k.message);});else if(S.data?.type==="slot:callback"){let{name:k,args:h}=S.data,E=A.current?.[k];E?(E(...h||[])):console.warn(`[ForkSlot:${e}] unknown callback: ${k}`);}else if(S.data?.type==="slot:fetch"){let{id:k,method:h,url:E,body:m}=S.data,c=_.current?.contentWindow;if(!c)return;let I=h||"GET";if(!L(I,E)){console.warn(`[ForkSlot:${e}] BLOCKED fetch #${k}: ${I} ${E} \u2014 not in allowedFetches`),c.postMessage({type:"slot:fetch-response",id:k,error:`Fetch not allowed: ${I} ${E}`},"*");return}try{let D={method:I};m&&I!=="GET"&&(D.headers={"Content-Type":"application/json"},D.body=JSON.stringify(m));let N=await fetch(E,D),R=await N.json();`${e}${k}${N.status}`,c.postMessage({type:"slot:fetch-response",id:k,data:R,status:N.status},"*");}catch(D){console.error(`[ForkSlot:${e}] fetch #${k} failed:`,D.message),c.postMessage({type:"slot:fetch-response",id:k,error:D.message},"*");}}}};return window.addEventListener("message",U),()=>{window.removeEventListener("message",U),C.current=false;}},[w?.bundleUrl,e,P,L]),ir.useEffect(()=>{w?.bundleUrl&&C.current&&P(t||{});},[t,w?.bundleUrl,P]),!w||w.status!=="complete"||!w.bundleUrl)return `${e}${w?.status||"none"}${w?.bundleUrl||"none"}`,Ln.jsx(Ln.Fragment,{children:r});`${e}${w.bundleUrl}`;let B=`${y}${w.bundleUrl.replace("/bundle.js","/host")}`;return Ln.jsx("iframe",{ref:_,src:B,sandbox:"allow-scripts allow-same-origin allow-forms allow-clipboard-write",title:`Forked ${e}`,style:{width:"100%",border:"none",flex:1,minHeight:0}})}function Ht({style:e={width:20,height:20},...t}){return Ln.jsxs("svg",{viewBox:"320 95 270 345",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:e,...t,children:[Ln.jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M357.789 145.428c0-16.186 13.121-29.307 29.307-29.307 7.773 0 15.227 3.088 20.723 8.584 5.496 5.496 8.584 12.95 8.584 20.723 0 16.186-13.121 29.307-29.307 29.307s-29.307-13.121-29.307-29.307z"}),Ln.jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M387.096 174.735v188"}),Ln.jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M357.789 394.572c0-16.186 13.121-29.307 29.307-29.307 7.773 0 15.227 3.088 20.723 8.584 5.496 5.496 8.584 12.95 8.584 20.723 0 16.186-13.121 29.307-29.307 29.307s-29.307-13.121-29.307-29.307z"}),Ln.jsx("path",{stroke:"currentColor",strokeWidth:"30",strokeLinejoin:"round",strokeLinecap:"round",d:"M388.739 319c10.168-6.317 43.997-26.932 61.009-37.9 17.012-10.968 31.758-19.978 41.064-27.91 9.305-7.931 11.782-14.213 14.767-19.679 2.985-5.465 3.014-8.99 3.141-13.114.128-4.124-.999-8.178-2.377-11.632-1.378-3.454-3.563-6.55-5.889-9.094-2.326-2.543-4.98-4.679-8.066-6.167-3.085-1.488-6.624-2.601-10.448-2.76-3.823-.159-8.624.2-12.495 1.806-3.871 1.607-8.047 4.68-10.732 7.835-2.685 3.156-4.446 7.448-5.378 11.099-.932 3.651-.742 7.485-.213 10.807.528 3.322 1.864 6.46 3.386 9.123 1.523 2.663 3.543 4.843 5.75 6.854 2.207 2.011 4.38 3.914 7.491 5.214 3.111 1.3 6.57 2.808 11.178 2.584 4.607-.225 9.363-.471 16.466-3.932 7.103-3.46 16.076-5.382 26.154-16.831 10.077-11.449 28.593-43.219 34.312-51.862"}),Ln.jsx("path",{fill:"currentColor",stroke:"currentColor",strokeWidth:"1",strokeLinejoin:"round",d:"M527.117 162.547L570.487 134.368Q577.196 130.009 577.624 137.997L580.39 189.69Q580.818 197.678 573.69 194.047L527.536 170.538Q520.408 166.907 527.117 162.547Z"})]})}var xo=5600,cr=2147483002;function Ao(e){return !e||e.state!=="complete"||!e.latest?null:`${e.latest.id}:${e.latest.completedAt??e.latest.updatedAt}`}function _o(){return typeof document>"u"?false:!!document.querySelector("[data-fork-clone-overlay], [data-fork-removed], [data-fork-highlights]")}function dr(e,t){let r=Math.min(e.length,t?26:34)*7.4,n=t?Math.min(t.length,24)*6.8+10:0;return Math.round(Math.min(390,Math.max(116,56+r+n)))}function Co(e,t=false){return e?.state==="complete"&&e.unreadCompletedCount>0?e.unreadCompletedCount>1?`${e.unreadCompletedCount} forks ready`:`${e.label} ready`:t?"Fork update ready":void 0}function ur({onClick:e,hasNotification:t=false,activity:r}){let[n,o]=ir.useState(false),[i,s]=ir.useState(false),[l,f]=ir.useState(null),[w,y]=ir.useState(null),[p,v]=ir.useState(null),_=ir.useRef(0),C=n?48:40,b=Ao(r),A=!!(b&&r?.state==="complete"&&r.unreadCompletedCount>0),O=A?b:w?.key??null,g=!!(r&&r.state==="running"&&r.runningCount>0),P=!!(O&&O!==l&&(A||w)),L=g||P,B=A?r?.label:w?.label,U=P?"Built":r?.label??"Fork this app",S=P?B:r?.detail,k=dr(r?.label??"Fork this app",r?.detail),h=dr(U,S),E=P?Math.min(420,Math.max(326,h,w?.width??0,_.current+40)):h,m=P?46:40,c=L?[U,S].filter(Boolean).join(" "):Co(r,t)??"Fork this app",I=L?`${U}:${S??""}`:"idle",D=(t||r?.state==="complete"&&r.unreadCompletedCount>0)&&!L;ir.useEffect(()=>{if(typeof document>"u")return;let ne=document.createElement("div");return ne.setAttribute("data-fork-button-host","true"),ne.style.position="relative",ne.style.zIndex=String(cr),document.body.appendChild(ne),v(ne),()=>{ne.remove(),v(null);}},[]),ir.useEffect(()=>{g&&(_.current=k);},[k,g]),ir.useEffect(()=>{!A||!b||!r?.label||y(ne=>{if(ne?.key===b)return ne;let fe=Math.min(420,Math.max(326,dr("Built",r.label),_.current+40));return {key:b,label:r.label,width:fe,startedAt:Date.now()}});},[r?.label,b,A]),ir.useEffect(()=>{r?.state==="complete"&&r.unreadCompletedCount===0&&y(null);},[r?.state,r?.unreadCompletedCount]),ir.useEffect(()=>{if(!O||!P||O===l)return;let ne,fe=w?.key===O?w.startedAt:Date.now(),q=()=>{if(Date.now()-fe>=xo&&!_o()){f(O);return}ne=window.setTimeout(q,250);};return ne=window.setTimeout(q,250),()=>{ne!==void 0&&window.clearTimeout(ne);}},[O,l,w?.key,w?.startedAt,P]);let N=L?{position:"fixed",bottom:24,right:24,zIndex:cr,width:`min(${E}px, calc(100vw - 32px))`,height:m,minWidth:0,maxWidth:"calc(100vw - 32px)",borderRadius:P?12:999,backgroundColor:n?"#ffffff":"rgba(255, 255, 255, 0.92)",border:"1px solid rgba(148, 163, 184, 0.42)",display:"inline-flex",alignItems:"center",justifyContent:P?"flex-start":"center",gap:P?10:8,color:"#111827",boxShadow:n?"0 12px 24px -16px rgba(15, 23, 42, 0.45), 0 4px 10px -6px rgba(15, 23, 42, 0.25)":"0 10px 20px -18px rgba(15, 23, 42, 0.35), 0 2px 7px -5px rgba(15, 23, 42, 0.18)",transform:i?"scale(0.98)":"scale(1)",transition:"width 320ms cubic-bezier(0.16, 1, 0.3, 1), height 320ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 320ms cubic-bezier(0.16, 1, 0.3, 1), transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease",cursor:"pointer",padding:P?"0 16px 0 14px":"0 13px 0 11px",margin:0,outline:"none",boxSizing:"border-box",fontFamily:'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'}:{position:"fixed",bottom:24,right:24,zIndex:cr,width:C,height:C,borderRadius:"50%",backgroundColor:n?"rgba(255, 255, 255, 1)":"rgba(255, 255, 255, 0.3)",border:n?"1px solid rgba(156, 163, 175, 1)":"1px solid rgba(156, 163, 175, 0.3)",display:"flex",alignItems:"center",justifyContent:"center",color:n?"#1c4587":"rgba(28, 69, 135, 0.5)",boxShadow:n?"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)":"0 1px 2px 0 rgba(0, 0, 0, 0.05)",transform:i?"scale(0.95)":"scale(1)",transition:"width 320ms cubic-bezier(0.16, 1, 0.3, 1), height 320ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 320ms cubic-bezier(0.16, 1, 0.3, 1), transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease, color 180ms ease",cursor:"pointer",padding:0,margin:0,outline:"none",boxSizing:"border-box"},R={minWidth:0,maxWidth:g?286:P?82:S?116:238,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,fontWeight:650,lineHeight:"16px",letterSpacing:0},x={minWidth:0,maxWidth:P?278:void 0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:P?1:0,color:"#64748b",fontSize:g?13:12,fontWeight:650,lineHeight:"16px",letterSpacing:0},H={minWidth:0,flex:P?1:void 0,display:"inline-flex",alignItems:"center",justifyContent:P?"flex-start":void 0,gap:8,animation:"__forkButtonTextSwap 220ms ease-out"},Z={width:8,height:8,borderRadius:"50%",backgroundColor:r?.state==="complete"?"#16a34a":"#ef4444",boxShadow:r?.state==="complete"?"0 0 0 3px rgba(22, 163, 74, 0.14)":"none",animation:P?"__forkButtonBuiltDot 420ms ease-out":void 0,flexShrink:0},j=Ln.jsxs(Ln.Fragment,{children:[Ln.jsx("style",{children:`
|
|
5
5
|
@keyframes __forkButtonSpin { to { transform: rotate(360deg); } }
|
|
6
6
|
@keyframes __forkButtonTextSwap {
|
|
7
7
|
from { opacity: 0; transform: translateY(2px); }
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
70% { opacity: 1; transform: scale(1.18); }
|
|
17
17
|
100% { opacity: 1; transform: scale(1); }
|
|
18
18
|
}
|
|
19
|
-
`}),Ln.jsxs("button",{onClick:e,onMouseEnter:()=>o(true),onMouseLeave:()=>{o(false),s(false);},onMouseDown:()=>s(true),onMouseUp:()=>s(false),style:
|
|
19
|
+
`}),Ln.jsxs("button",{onClick:e,onMouseEnter:()=>o(true),onMouseLeave:()=>{o(false),s(false);},onMouseDown:()=>s(true),onMouseUp:()=>s(false),style:N,title:c,"aria-label":c,children:[L&&r?Ln.jsxs(Ln.Fragment,{children:[g?Ln.jsx("span",{"aria-hidden":true,style:{width:14,height:14,borderRadius:"50%",border:"2px solid rgba(37, 99, 235, 0.18)",borderTopColor:"#2563eb",animation:"__forkButtonSpin 780ms linear infinite",flexShrink:0,boxSizing:"border-box"}}):Ln.jsx("span",{"aria-hidden":true,style:Z}),Ln.jsxs("span",{style:H,children:[Ln.jsx("span",{style:R,children:U}),S&&Ln.jsx("span",{style:x,children:S})]},I)]}):Ln.jsx(Ht,{style:{width:24,height:24,animation:"__forkButtonLogoIn 220ms ease-out"}}),D&&Ln.jsx("span",{"aria-hidden":true,style:{position:"absolute",top:2,right:2,width:10,height:10,borderRadius:"50%",backgroundColor:"#2563eb",border:"2px solid #ffffff",boxSizing:"border-box",pointerEvents:"none"}})]})]});return p?Tn.createPortal(j,p):j}var Lo={status:lucideReact.Loader2,agent_message:lucideReact.MessageSquare,tool_use:lucideReact.Wrench,build_start:lucideReact.Package,build_complete:lucideReact.Check,build_error:lucideReact.AlertCircle,complete:lucideReact.Sparkles,error:lucideReact.AlertCircle},Bo={status:"#60a5fa",agent_message:"#a0a0a0",tool_use:"#fbbf24",build_start:"#c084fc",build_complete:"#6b7280",build_error:"#f87171",complete:"#6b7280",error:"#f87171"},No={read:lucideReact.FileSearch,write:lucideReact.Pencil,search:lucideReact.FileSearch,shell:lucideReact.Terminal,build:lucideReact.Package},Uo={read:"#60a5fa",write:"#fbbf24",search:"#60a5fa",shell:"#a78bfa",build:"#c084fc"};function pr(e){let t=e.data;switch(e.type){case "status":return `${t.message||t.status||"..."}`;case "agent_message":{let r=String(t.content||"");return /failed:/i.test(r)&&(r.includes("ENOENT")||r.includes("{")||r.includes("/Users/"))?"Adapting approach...":r}case "tool_use":return String(t.label||"Working on it");case "build_start":return "Bundling your component...";case "build_complete":return "Build complete!";case "build_error":return `Build failed: ${t.error}`;case "complete":return "Your fork is ready!";case "error":return `Error: ${t.error}`;default:return JSON.stringify(t)}}function cn({events:e}){let t=ir.useRef(null);return ir.useEffect(()=>{t.current&&(t.current.scrollTop=t.current.scrollHeight);},[e]),Ln.jsxs(Ln.Fragment,{children:[Ln.jsx("style",{children:`
|
|
20
20
|
@keyframes __fork-spin {
|
|
21
21
|
from { transform: rotate(0deg); }
|
|
22
22
|
to { transform: rotate(360deg); }
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
.__fork-stream::-webkit-scrollbar-thumb:hover {
|
|
35
35
|
background: rgba(255, 255, 255, 0.3);
|
|
36
36
|
}
|
|
37
|
-
`}),Ln.jsxs("div",{className:"__fork-stream",ref:t,style:{scrollbarWidth:"thin",scrollbarColor:"rgba(255, 255, 255, 0.15) transparent",backgroundColor:"#1a1a2e",borderRadius:"8px",padding:"12px",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fontSize:"11px",maxHeight:"300px",overflowY:"auto",boxSizing:"border-box"},children:[e.length===0&&Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"#6b7280",fontSize:"11px"},children:[Ln.jsx(lucideReact.Loader2,{style:{width:"12px",height:"12px",animation:"__fork-spin 1s linear infinite",flexShrink:0}}),"Connecting to agent..."]}),e.map((r,n)=>{let o=n===e.length-1,i=r.type==="complete"||r.type==="error"||r.type==="build_complete"||r.type==="build_error",s=o&&!i&&(r.type==="status"||r.type==="tool_use"||r.type==="build_start"),l=Lo[r.type]||lucideReact.Code,f=Bo[r.type]||"#9ca3af";if(r.type==="tool_use"){let w=String(r.data.category||"");l=No[w]||lucideReact.Wrench,f=Uo[w]||"#fbbf24";}return s?l=lucideReact.Loader2:!o&&r.type==="status"&&(l=lucideReact.Check,f="#4ade80"),Ln.jsxs("div",{style:{display:"flex",gap:"6px",marginBottom:"6px",lineHeight:1.625},children:[Ln.jsx(l,{style:{width:"12px",height:"12px",marginTop:"2px",flexShrink:0,color:f,...s?{animation:"__fork-spin 1s linear infinite"}:{}}}),Ln.jsx("span",{style:{color:o&&!i?"#d1d5db":"#6b7280",wordBreak:"break-all"},children:pr(r)})]},n)})]})]})}var pn=35,Xo="Setting up environment",Jo="Built Custom Feature",mn=360,jt=350;function Go(e){let t=Date.parse(e);if(Number.isNaN(t))return "";let r=Math.max(1,Math.round((Date.now()-t)/1e3));if(r<60)return `${r}s`;let n=Math.round(r/60);if(n<60)return `${n}m`;let o=Math.round(n/60);return o<24?`${o}h`:`${Math.round(o/24)}d`}function qo(e){return e.length<=pn?e:e.slice(0,pn-3).trimEnd()+"..."}function Yo({events:e}){let[t,r]=ir.useState("Setting up environment..."),[n,o]=ir.useState(true),i=ir.useRef(t),s=ir.useRef(false);return ir.useEffect(()=>{if(!s.current){for(let f of e)if(f.type==="status"&&String(f.data.message||"").includes("Agent started")){s.current=true;break}}let l="Setting up environment...";if(s.current)for(let f=e.length-1;f>=0;f--){let w=e[f];if(w.type==="tool_use"||w.type==="build_start"||w.type==="build_complete"){l=qo(pr(w));break}}if(l!==i.current){o(false);let f=setTimeout(()=>{r(l),i.current=l,o(true);},200);return ()=>clearTimeout(f)}},[e]),Ln.jsx("span",{style:{fontSize:11,color:"#d1d5db",fontWeight:500,opacity:n?1:0,transition:"opacity 0.2s ease",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:t})}function Zo({children:e}){let[t,r]=ir.useState(null);return ir.useEffect(()=>{if(typeof document>"u")return;let n=document.createElement("div");n.setAttribute("data-fork-panel-host",""),n.style.cssText="all: initial;",document.body.appendChild(n);let o=n.attachShadow({mode:"open"});return r(o),()=>{n.remove();}},[]),t?Tn.createPortal(e,t):null}function zt({state:e,fork:t,events:r,error:n,slotId:o,targetId:i,targetLabel:s,historyMode:l="slot",onSubmit:f,onUndo:w,onClose:k,baseUrl:p,apiKey:v,userId:C,userHash:R,appId:b,embedded:x=false,completeVariant:O="bubble"}){let[g,$]=ir.useState(""),[T,L]=ir.useState([]),[U,S]=ir.useState(false),[y,h]=ir.useState(false),[P,m]=ir.useState(false),[c,I]=ir.useState(false),[D,B]=ir.useState(false),[A,F]=ir.useState(false),[H,Z]=ir.useState(false),[G,we]=ir.useState(false),[j,ne]=ir.useState(false),[ue,q]=ir.useState(null),[ie,Ze]=ir.useState(false),[xe,Re]=ir.useState([]),[me,Ee]=ir.useState(null),[He,_e]=ir.useState(false),[Ce,Oe]=ir.useState(false),[Vt,St]=ir.useState(false),[Ft,ve]=ir.useState(null),[K,De]=ir.useState(null),[$e,xt]=ir.useState(false),[je,Qe]=ir.useState(false),[Pe,ze]=ir.useState(""),d=ir.useRef(null),[u,M]=ir.useState(null),[ee,X]=ir.useState(false),[z,oe]=ir.useState(null),[ae,ke]=ir.useState([]),[J,le]=ir.useState(null),[Q,se]=ir.useState(false),fe=ir.useRef(false),ce=ir.useRef(null),ge=ir.useRef(null),{resetAllForks:Le,previewSession:Y,currentContainerId:it}=ye(),Ie=Y?.container_id??it,et=!!(Y&&ee),Me=z!==null,Cr=ir.useRef(k);ir.useEffect(()=>{Cr.current=k;});let Xt=ir.useRef(null),At=ir.useRef(false),Rr=typeof window<"u"&&"documentPictureInPicture"in window,Cn=async()=>{if(!(!Rr||Me))try{let a=await window.documentPictureInPicture.requestWindow({width:mn,height:640});a.document.body.style.margin="0",a.document.body.style.padding="0",a.document.body.style.height="100vh",a.document.body.style.overflow="hidden",a.document.body.style.background="#ffffff";try{let _=document.adoptedStyleSheets??[];_.length>0&&(a.document.adoptedStyleSheets=[..._]);}catch{}a.addEventListener("pagehide",()=>{Xt.current=null,oe(null),At.current||Cr.current(),At.current=!1;},{once:!0}),Xt.current=a,oe(a);}catch(a){console.warn("[Fork] PiP open failed:",a);}},Rn=()=>{z&&(At.current=true,z.close());};ir.useEffect(()=>()=>{At.current=true,Xt.current?.close();},[]);let Be=i??o??"",Er=(s||Be).replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()),_t=ir.useRef(""),$r=()=>{let a={Authorization:`Bearer ${v}`,...re()};return b&&(a["X-Fork-App-Id"]=b),!Y&&C&&(a["X-Fork-User-Id"]=C),!Y&&R&&(a["X-Fork-User-Hash"]=R),a},Ct=x?true:y&&!P,En=r.find(a=>{let _=a.data;return a.type==="status"&&_.summary})?.data?.summary||t?.summary||Xo,Ke=r.find(a=>{let _=a.data;return (a.type==="status"||a.type==="complete")&&typeof _?.estimateMinutes=="number"})?.data?.estimateMinutes??t?.estimateMinutes;ir.useEffect(()=>{if(l==="none"){S(true);return}if(!p||!v)return;if(!J){L([]),S(true);return}let a=new AbortController;return fetch(`${p}/api/v1/forks/${encodeURIComponent(J)}/messages`,{headers:$r(),signal:a.signal}).then(_=>_.ok?_.json():[]).then(_=>{if(a.signal.aborted)return;let N=[];for(let pe of _){let rt=pe.forkId??J;pe.role==="user"?N.push({type:"user",text:pe.content,forkId:rt}):N.push({type:"applied",text:pe.content,forkId:rt});}L(N),S(true);}).catch(()=>{a.signal.aborted||S(true);}),()=>{a.abort();}},[v,b,p,l,J,Y?.fork_id,Y?.preview_session_id,R,C,t?.id,t?.completedAt]),ir.useEffect(()=>{if(l==="none"||!p||!v||!He)return;if(!me){ke([]);return}let a=new AbortController,_=new URLSearchParams({container_id:me});return fetch(`${p}/api/v1/forks?${_.toString()}`,{headers:$r(),signal:a.signal}).then(N=>N.ok?N.json():{forks:[]}).then(N=>{a.signal.aborted||ke(N.forks??[]);}).catch(()=>{}),()=>{a.abort();}},[v,b,p,l,me,He,t?.id,t?.completedAt,Y?.fork_id,Y?.preview_session_id,R,C]),ir.useEffect(()=>{e==="complete"&&we(false);},[e]);let Pr=ae.some(a=>a.status==="pending"||a.status==="running"||a.status==="building");ir.useEffect(()=>{if(!Pr||!p||!v||!me)return;let a=new URLSearchParams({container_id:me}),_={Authorization:`Bearer ${v}`,...re()};b&&(_["X-Fork-App-Id"]=b);let pe=setInterval(async()=>{try{let rt=await fetch(`${p}/api/v1/forks?${a.toString()}`,{headers:_});if(!rt.ok)return;let In=await rt.json();ke(In.forks??[]);}catch{}},3e3);return ()=>clearInterval(pe)},[Pr,p,v,b,me]),ir.useEffect(()=>{if(x&&l==="none"){Re([]),Ee(null),_e(true),X(false);return}if(Y){let a=false;return _e(false),X(false),M(null),fetch(`${p}/api/v1/preview/${encodeURIComponent(Y.preview_session_id)}/containers`,{headers:{Authorization:`Bearer ${v}`,...re()}}).then(_=>{if(!_.ok)throw new Error(`${_.status}`);return _.json()}).then(_=>{a||(Re(_.containers),Ee(_.currentContainerId??Y.container_id??null),X(true));}).catch(_=>{a||(X(false),M(_ instanceof Error?_.message:String(_)),Ie?(Re([{id:Ie,name:Y.container_name||"Primary container",createdAt:"",hasAccess:true,isPrimary:true}]),Ee(Ie)):(Re([]),Ee(null)));}).finally(()=>{a||_e(true);}),()=>{a=true;}}Ie?(Re([{id:Ie,name:"Primary container",createdAt:""}]),Ee(Ie)):(Re([]),Ee(null)),_e(true),X(false);},[v,Ie,p,x,l,Y?.container_id,Y?.container_name,Y?.preview_session_id]);let Rt=ir.useRef(void 0);ir.useEffect(()=>{if(He){if(Rt.current===void 0){Rt.current=me;return}Rt.current!==me&&(Rt.current=me,L([]),S(false));}},[me,He]);let Et=ir.useRef(null);ir.useEffect(()=>{if(!Ce)return;let a=N=>{if(!Et.current)return;let pe=typeof N.composedPath=="function"?N.composedPath():[];Et.current.contains(N.target)||pe.includes(Et.current)||Oe(false);},_=N=>{N.key==="Escape"&&Oe(false);};return document.addEventListener("mousedown",a,true),document.addEventListener("keydown",_,true),()=>{document.removeEventListener("mousedown",a,true),document.removeEventListener("keydown",_,true);}},[Ce]),ir.useEffect(()=>{Ce||(Qe(false),ze(""));},[Ce]),ir.useEffect(()=>{je&&(d.current?.focus(),d.current?.select());},[je]),ir.useEffect(()=>{if(x)return;let a=requestAnimationFrame(()=>h(true));return ()=>cancelAnimationFrame(a)},[x]),ir.useEffect(()=>{let a=x||Me;if((a||Ct)&&(e==="prompting"||e==="complete")){let _=setTimeout(()=>ce.current?.focus(),a?100:jt+100);return ()=>clearTimeout(_)}},[Ct,x,Me,e]),ir.useEffect(()=>{if(e==="complete"&&_t.current){let _=r.find(N=>N.type==="complete")?.data?.summary||t?.summary||Jo;L(N=>N[N.length-1]?.type==="applied"?N:[...N,{type:"applied",text:_}]),$(""),setTimeout(()=>ce.current?.focus(),200);}},[e,Er,r,t?.summary]),ir.useEffect(()=>{ge.current&&(ge.current.scrollTop=ge.current.scrollHeight);},[T,e]);let Ir=()=>{if(g.trim()){_t.current=g.trim();let a={};Q?(a.forceNew=true,fe.current=true):J&&(a.forkId=J),Q||L(_=>[..._,{type:"user",text:g.trim(),forkId:J}]),f(g.trim(),Be,me,a),$("");}};ir.useEffect(()=>{if(fe.current){if(e==="error"){fe.current=false;return}t?.id&&(le(t.id),se(false),fe.current=false);}},[t?.id,e]),ir.useEffect(()=>{t?.id&&(fe.current||e!=="running"&&e!=="complete"||(le(a=>a??t.id),se(false)));},[t?.id,e]);let Mr=a=>{Ve(a.session.containerId,a.session.containerName),Ee(a.session.containerId),Re(_=>{let N=_.filter(pe=>pe.id!==a.container.id);return [{...a.container,isPrimary:true,hasAccess:true},...N.map(pe=>({...pe,isPrimary:false}))]}),le(null),se(false),fe.current=false,L([]),S(false),_t.current="";},$n=async a=>{if(!(!Y||!et||K)){De(a),M(null);try{let _=await fetch(`${p}/api/v1/preview/${encodeURIComponent(Y.preview_session_id)}/containers/${encodeURIComponent(a)}/primary`,{method:"POST",headers:{Authorization:`Bearer ${v}`,...re()}});if(!_.ok){let N=await _.json().catch(()=>({}));throw new Error(N.error||`API error: ${_.status}`)}Mr(await _.json()),Oe(!1);}catch(_){M(_ instanceof Error?_.message:String(_));}finally{De(null);}}},Tr=async a=>{if(!Y||!et||K)return;let _=a.trim();if(_){De("__new__"),M(null);try{let N=await fetch(`${p}/api/v1/preview/${encodeURIComponent(Y.preview_session_id)}/containers`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${v}`,...re()},body:JSON.stringify({name:_})});if(!N.ok){let pe=await N.json().catch(()=>({}));throw new Error(pe.error||`API error: ${N.status}`)}Mr(await N.json()),Qe(!1),ze(""),Oe(!1);}catch(N){M(N instanceof Error?N.message:String(N));}finally{De(null);}}},Lr=async()=>{if(!(!w||j||!Be)){ne(true);try{let a=await w(Be);L(_=>{let N=[..._];return N.length>=2&&N[N.length-1]?.type==="applied"?N.splice(-2,2):N.length>=1&&N[N.length-1]?.type==="applied"&&N.splice(-1,1),N}),a?.removed&&L([]);}catch{}finally{ne(false);}}},Br=()=>{if(x){k();return}if(Me){z?.close();return}m(true),h(false),setTimeout(()=>k(),jt);},Pn=x||Me?{position:"relative",width:"100%",height:"100%",background:"#ffffff",display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'}:{position:"fixed",top:0,right:0,bottom:0,zIndex:2147483e3,width:mn,maxWidth:"100vw",background:"#ffffff",boxShadow:Ct?"-12px 0 32px -16px rgba(0, 0, 0, 0.18), -2px 0 8px -2px rgba(0, 0, 0, 0.06)":"none",borderLeft:"1px solid rgba(0, 0, 0, 0.08)",transform:Ct?"translateX(0)":"translateX(100%)",transition:`transform ${jt}ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow ${jt}ms ease`,display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'},Nr=xe.find(a=>a.id===me)?.name??(He?"Fork":"Loading..."),tt=Q?[]:J?T.filter(a=>a.forkId===J||a.forkId==null):T,Jt=Ln.jsxs(Ln.Fragment,{children:[Ln.jsx("style",{children:`
|
|
37
|
+
`}),Ln.jsxs("div",{className:"__fork-stream",ref:t,style:{scrollbarWidth:"thin",scrollbarColor:"rgba(255, 255, 255, 0.15) transparent",backgroundColor:"#1a1a2e",borderRadius:"8px",padding:"12px",fontFamily:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",fontSize:"11px",maxHeight:"300px",overflowY:"auto",boxSizing:"border-box"},children:[e.length===0&&Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",color:"#6b7280",fontSize:"11px"},children:[Ln.jsx(lucideReact.Loader2,{style:{width:"12px",height:"12px",animation:"__fork-spin 1s linear infinite",flexShrink:0}}),"Connecting to agent..."]}),e.map((r,n)=>{let o=n===e.length-1,i=r.type==="complete"||r.type==="error"||r.type==="build_complete"||r.type==="build_error",s=o&&!i&&(r.type==="status"||r.type==="tool_use"||r.type==="build_start"),l=Lo[r.type]||lucideReact.Code,f=Bo[r.type]||"#9ca3af";if(r.type==="tool_use"){let w=String(r.data.category||"");l=No[w]||lucideReact.Wrench,f=Uo[w]||"#fbbf24";}return s?l=lucideReact.Loader2:!o&&r.type==="status"&&(l=lucideReact.Check,f="#4ade80"),Ln.jsxs("div",{style:{display:"flex",gap:"6px",marginBottom:"6px",lineHeight:1.625},children:[Ln.jsx(l,{style:{width:"12px",height:"12px",marginTop:"2px",flexShrink:0,color:f,...s?{animation:"__fork-spin 1s linear infinite"}:{}}}),Ln.jsx("span",{style:{color:o&&!i?"#d1d5db":"#6b7280",wordBreak:"break-all"},children:pr(r)})]},n)})]})]})}var fn=35,Xo="Setting up environment",Jo="Built Custom Feature",pn=360,yt=350;function Go(e){let t=Date.parse(e);if(Number.isNaN(t))return "";let r=Math.max(1,Math.round((Date.now()-t)/1e3));if(r<60)return `${r}s`;let n=Math.round(r/60);if(n<60)return `${n}m`;let o=Math.round(n/60);return o<24?`${o}h`:`${Math.round(o/24)}d`}function qo(e){return e.length<=fn?e:e.slice(0,fn-3).trimEnd()+"..."}function Yo({events:e}){let[t,r]=ir.useState("Setting up environment..."),[n,o]=ir.useState(true),i=ir.useRef(t),s=ir.useRef(false);return ir.useEffect(()=>{if(!s.current){for(let f of e)if(f.type==="status"&&String(f.data.message||"").includes("Agent started")){s.current=true;break}}let l="Setting up environment...";if(s.current)for(let f=e.length-1;f>=0;f--){let w=e[f];if(w.type==="tool_use"||w.type==="build_start"||w.type==="build_complete"){l=qo(pr(w));break}}if(l!==i.current){o(false);let f=setTimeout(()=>{r(l),i.current=l,o(true);},200);return ()=>clearTimeout(f)}},[e]),Ln.jsx("span",{style:{fontSize:11,color:"#d1d5db",fontWeight:500,opacity:n?1:0,transition:"opacity 0.2s ease",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0},children:t})}function Zo({children:e}){let[t,r]=ir.useState(null);return ir.useEffect(()=>{if(typeof document>"u")return;let n=document.createElement("div");n.setAttribute("data-fork-panel-host",""),n.style.cssText="all: initial;",document.body.appendChild(n);let o=n.attachShadow({mode:"open"});return r(o),()=>{n.remove();}},[]),t?Tn.createPortal(e,t):null}function zt({state:e,fork:t,events:r,error:n,slotId:o,targetId:i,targetLabel:s,historyMode:l="slot",onSubmit:f,onUndo:w,onClose:y,baseUrl:p,apiKey:v,userId:_,userHash:C,appId:b,embedded:A=false,completeVariant:O="bubble"}){let[g,P]=ir.useState(""),[L,B]=ir.useState([]),[U,S]=ir.useState(false),[k,h]=ir.useState(false),[E,m]=ir.useState(false),[c,I]=ir.useState(false),[D,N]=ir.useState(false),[R,x]=ir.useState(false),[H,Z]=ir.useState(false),[G,we]=ir.useState(false),[j,ne]=ir.useState(false),[fe,q]=ir.useState(null),[ie,Ze]=ir.useState(false),[xe,Ee]=ir.useState([]),[me,$e]=ir.useState(null),[He,Ce]=ir.useState(false),[Re,Oe]=ir.useState(false),[Vt,xt]=ir.useState(false),[At,ve]=ir.useState(null),[K,De]=ir.useState(null),[Pe,_t]=ir.useState(false),[je,Qe]=ir.useState(false),[Ie,ze]=ir.useState(""),d=ir.useRef(null),[u,M]=ir.useState(null),[Q,V]=ir.useState(false),[z,oe]=ir.useState(null),[ae,ke]=ir.useState([]),[X,le]=ir.useState(null),[te,se]=ir.useState(false),pe=ir.useRef(false),de=ir.useRef(null),ge=ir.useRef(null),{resetAllForks:Be,previewSession:Y,currentContainerId:it}=ye(),Me=Y?.container_id??it,et=!!(Y&&Q),Ae=z!==null,Cr=ir.useRef(y);ir.useEffect(()=>{Cr.current=y;});let Xt=ir.useRef(null),Ct=ir.useRef(false),Rr=typeof window<"u"&&"documentPictureInPicture"in window,_n=async()=>{if(!(!Rr||Ae))try{let a=await window.documentPictureInPicture.requestWindow({width:pn,height:640});a.document.body.style.margin="0",a.document.body.style.padding="0",a.document.body.style.height="100vh",a.document.body.style.overflow="hidden",a.document.body.style.background="#ffffff";try{let F=document.adoptedStyleSheets??[];F.length>0&&(a.document.adoptedStyleSheets=[...F]);}catch{}a.addEventListener("pagehide",()=>{Xt.current=null,oe(null),Ct.current||Cr.current(),Ct.current=!1;},{once:!0}),Xt.current=a,oe(a);}catch(a){console.warn("[Fork] PiP open failed:",a);}},Cn=()=>{z&&(Ct.current=true,z.close());};ir.useEffect(()=>()=>{Ct.current=true,Xt.current?.close();},[]);let tt=i??o??"",Rn=(s||tt).replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()),Rt=ir.useRef(""),Er=()=>{let a={Authorization:`Bearer ${v}`,...re()};return b&&(a["X-Fork-App-Id"]=b),!Y&&_&&(a["X-Fork-User-Id"]=_),!Y&&C&&(a["X-Fork-User-Hash"]=C),a},rt=A?true:k&&!E,En=r.find(a=>{let F=a.data;return a.type==="status"&&F.summary})?.data?.summary||t?.summary||Xo,Ke=r.find(a=>{let F=a.data;return (a.type==="status"||a.type==="complete")&&typeof F?.estimateMinutes=="number"})?.data?.estimateMinutes??t?.estimateMinutes;ir.useEffect(()=>{if(l==="none"){S(true);return}if(!p||!v)return;if(!X){B([]),S(true);return}let a=new AbortController;return fetch(`${p}/api/v1/forks/${encodeURIComponent(X)}/messages`,{headers:Er(),signal:a.signal}).then(F=>F.ok?F.json():[]).then(F=>{if(a.signal.aborted)return;let T=[];for(let ue of F){let Te=ue.forkId??X;ue.role==="user"?T.push({type:"user",text:ue.content,forkId:Te}):T.push({type:"applied",text:ue.content,forkId:Te});}B(T),S(true);}).catch(()=>{a.signal.aborted||S(true);}),()=>{a.abort();}},[v,b,p,l,X,Y?.fork_id,Y?.preview_session_id,C,_,t?.id,t?.completedAt]),ir.useEffect(()=>{if(l==="none"||!p||!v||!He)return;if(!me){ke([]);return}let a=new AbortController,F=new URLSearchParams({container_id:me});return fetch(`${p}/api/v1/forks?${F.toString()}`,{headers:Er(),signal:a.signal}).then(T=>T.ok?T.json():{forks:[]}).then(T=>{a.signal.aborted||ke(T.forks??[]);}).catch(()=>{}),()=>{a.abort();}},[v,b,p,l,me,He,t?.id,t?.completedAt,Y?.fork_id,Y?.preview_session_id,C,_]),ir.useEffect(()=>{e==="complete"&&we(false);},[e]);let $r=ae.some(a=>a.status==="pending"||a.status==="running"||a.status==="building");ir.useEffect(()=>{if(!$r||!p||!v||!me)return;let a=new URLSearchParams({container_id:me}),F={Authorization:`Bearer ${v}`,...re()};b&&(F["X-Fork-App-Id"]=b);let ue=setInterval(async()=>{try{let Te=await fetch(`${p}/api/v1/forks?${a.toString()}`,{headers:F});if(!Te.ok)return;let In=await Te.json();ke(In.forks??[]);}catch{}},3e3);return ()=>clearInterval(ue)},[$r,p,v,b,me]),ir.useEffect(()=>{if(A&&l==="none"){Ee([]),$e(null),Ce(true),V(false);return}if(Y){let a=false;return Ce(false),V(false),M(null),fetch(`${p}/api/v1/preview/${encodeURIComponent(Y.preview_session_id)}/containers`,{headers:{Authorization:`Bearer ${v}`,...re()}}).then(F=>{if(!F.ok)throw new Error(`${F.status}`);return F.json()}).then(F=>{a||(Ee(F.containers),$e(F.currentContainerId??Y.container_id??null),V(true));}).catch(F=>{a||(V(false),M(F instanceof Error?F.message:String(F)),Me?(Ee([{id:Me,name:Y.container_name||"Primary container",createdAt:"",hasAccess:true,isPrimary:true}]),$e(Me)):(Ee([]),$e(null)));}).finally(()=>{a||Ce(true);}),()=>{a=true;}}Me?(Ee([{id:Me,name:"Primary container",createdAt:""}]),$e(Me)):(Ee([]),$e(null)),Ce(true),V(false);},[v,Me,p,A,l,Y?.container_id,Y?.container_name,Y?.preview_session_id]);let Et=ir.useRef(void 0);ir.useEffect(()=>{if(He){if(Et.current===void 0){Et.current=me;return}Et.current!==me&&(Et.current=me,B([]),S(false));}},[me,He]);let $t=ir.useRef(null);ir.useEffect(()=>{if(!Re)return;let a=T=>{if(!$t.current)return;let ue=typeof T.composedPath=="function"?T.composedPath():[];$t.current.contains(T.target)||ue.includes($t.current)||Oe(false);},F=T=>{T.key==="Escape"&&Oe(false);};return document.addEventListener("mousedown",a,true),document.addEventListener("keydown",F,true),()=>{document.removeEventListener("mousedown",a,true),document.removeEventListener("keydown",F,true);}},[Re]),ir.useEffect(()=>{if(A||!rt||E||Ae)return;let a=F=>{(typeof F.composedPath=="function"?F.composedPath():[]).some(Te=>Te instanceof Element&&Te.hasAttribute("data-fork-panel-host"))||(m(true),h(false),setTimeout(()=>y(),yt));};return document.addEventListener("mousedown",a,true),()=>{document.removeEventListener("mousedown",a,true);}},[A,rt,E,Ae,y]),ir.useEffect(()=>{Re||(Qe(false),ze(""));},[Re]),ir.useEffect(()=>{je&&(d.current?.focus(),d.current?.select());},[je]),ir.useEffect(()=>{if(A)return;let a=requestAnimationFrame(()=>h(true));return ()=>cancelAnimationFrame(a)},[A]),ir.useEffect(()=>{let a=A||Ae;if((a||rt)&&(e==="prompting"||e==="complete")){let F=setTimeout(()=>de.current?.focus(),a?100:yt+100);return ()=>clearTimeout(F)}},[rt,A,Ae,e]),ir.useEffect(()=>{if(e==="complete"&&Rt.current){let F=r.find(T=>T.type==="complete")?.data?.summary||t?.summary||Jo;B(T=>T[T.length-1]?.type==="applied"?T:[...T,{type:"applied",text:F}]),P(""),setTimeout(()=>de.current?.focus(),200);}},[e,Rn,r,t?.summary]),ir.useEffect(()=>{ge.current&&(ge.current.scrollTop=ge.current.scrollHeight);},[L,e]);let Pr=()=>{if(g.trim()){Rt.current=g.trim();let a={},F=te||!X;F?(a.forceNew=true,pe.current=true,te||se(true)):a.forkId=X,F||B(T=>[...T,{type:"user",text:g.trim(),forkId:X}]),f(g.trim(),tt,me,a),P("");}};ir.useEffect(()=>{if(pe.current){if(e==="error"){pe.current=false;return}t?.id&&(le(t.id),se(false),pe.current=false);}},[t?.id,e]),ir.useEffect(()=>{t?.id&&(pe.current||e!=="running"&&e!=="complete"||(le(a=>a??t.id),se(false)));},[t?.id,e]);let Ir=a=>{Ve(a.session.containerId,a.session.containerName),$e(a.session.containerId),Ee(F=>{let T=F.filter(ue=>ue.id!==a.container.id);return [{...a.container,isPrimary:true,hasAccess:true},...T.map(ue=>({...ue,isPrimary:false}))]}),le(null),se(false),pe.current=false,B([]),S(false),Rt.current="";},$n=async a=>{if(!(!Y||!et||K)){De(a),M(null);try{let F=await fetch(`${p}/api/v1/preview/${encodeURIComponent(Y.preview_session_id)}/containers/${encodeURIComponent(a)}/primary`,{method:"POST",headers:{Authorization:`Bearer ${v}`,...re()}});if(!F.ok){let T=await F.json().catch(()=>({}));throw new Error(T.error||`API error: ${F.status}`)}Ir(await F.json()),Oe(!1);}catch(F){M(F instanceof Error?F.message:String(F));}finally{De(null);}}},Mr=async a=>{if(!Y||!et||K)return;let F=a.trim();if(F){De("__new__"),M(null);try{let T=await fetch(`${p}/api/v1/preview/${encodeURIComponent(Y.preview_session_id)}/containers`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${v}`,...re()},body:JSON.stringify({name:F})});if(!T.ok){let ue=await T.json().catch(()=>({}));throw new Error(ue.error||`API error: ${T.status}`)}Ir(await T.json()),Qe(!1),ze(""),Oe(!1);}catch(T){M(T instanceof Error?T.message:String(T));}finally{De(null);}}},Tr=async()=>{if(!(!w||j||!tt)){ne(true);try{let a=await w(tt);B(F=>{let T=[...F];return T.length>=2&&T[T.length-1]?.type==="applied"?T.splice(-2,2):T.length>=1&&T[T.length-1]?.type==="applied"&&T.splice(-1,1),T}),a?.removed&&B([]);}catch{}finally{ne(false);}}},Lr=()=>{if(A){y();return}if(Ae){z?.close();return}m(true),h(false),setTimeout(()=>y(),yt);},Pn=A||Ae?{position:"relative",width:"100%",height:"100%",background:"#ffffff",display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'}:{position:"fixed",top:0,right:0,bottom:0,zIndex:2147483e3,width:pn,maxWidth:"100vw",background:"#ffffff",boxShadow:rt?"-12px 0 32px -16px rgba(0, 0, 0, 0.18), -2px 0 8px -2px rgba(0, 0, 0, 0.06)":"none",borderLeft:"1px solid rgba(0, 0, 0, 0.08)",transform:rt?"translateX(0)":"translateX(100%)",transition:`transform ${yt}ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow ${yt}ms ease`,display:"flex",flexDirection:"column",fontFamily:'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'},Br=xe.find(a=>a.id===me)?.name??(He?"Fork":"Loading..."),at=te?[]:X?L.filter(a=>a.forkId===X||a.forkId==null):L,Jt=Ln.jsxs(Ln.Fragment,{children:[Ln.jsx("style",{children:`
|
|
38
38
|
@keyframes __fork-pulse {
|
|
39
39
|
0%, 100% { opacity: 1; }
|
|
40
40
|
50% { opacity: 0.5; }
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
scrollbar-width: thin;
|
|
57
57
|
scrollbar-color: rgba(0, 0, 0, 0.12) transparent;
|
|
58
58
|
}
|
|
59
|
-
`}),Ln.jsxs("div",{className:"__fork-panel",style:Pn,children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",borderBottom:"1px solid rgba(229, 231, 235, 0.8)",flexShrink:0},children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0,flex:1},children:[Ln.jsx("span",{onDoubleClick:async a=>{if(a.stopPropagation(),!ie&&confirm("Kill all forks in this container?")){Ze(true);try{let _=await Le();`${_?.deleted??0}`,ke([]),le(null),se(!1),$("");}catch(_){console.error("[Fork] Reset failed:",_);}finally{Ze(false);}}},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:4,margin:-4,cursor:"pointer",flexShrink:0},children:Ln.jsx(Ut,{style:{width:16,height:16,color:"#1c4587",pointerEvents:"none"}})}),e==="running"?Ln.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:En}):xe.length===0&&!et?Ln.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:"Fork"}):et?Ln.jsxs("div",{ref:Et,style:{position:"relative",minWidth:0,display:"inline-flex"},children:[Ln.jsxs("button",{type:"button",onClick:()=>{Oe(a=>!a);},onMouseEnter:()=>St(true),onMouseLeave:()=>St(false),"aria-haspopup":"menu","aria-expanded":Ce,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 6px",border:"1px solid transparent",borderRadius:6,background:Vt||Ce?"#f3f4f6":"transparent",fontSize:13,fontWeight:600,color:"#111827",fontFamily:"inherit",cursor:"pointer",maxWidth:180,minWidth:0,transition:"background-color 0.12s"},children:[Ln.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Nr}),Ln.jsx(lucideReact.ChevronDown,{style:{width:12,height:12,color:"#6b7280",flexShrink:0,transform:Ce?"rotate(180deg)":void 0,transition:"transform 0.15s"}})]}),Ce&&Ln.jsxs("div",{role:"menu",style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:200,maxWidth:260,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:8,boxShadow:"0 4px 12px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.06)",padding:4,zIndex:2147483001},children:[xe.map(a=>{let _=a.id===me,N=Ft===a.id,pe=K===a.id;return Ln.jsxs("button",{type:"button",role:"menuitem",onMouseEnter:()=>ve(a.id),onMouseLeave:()=>ve(null),onClick:()=>{a.id!==me&&$n(a.id);},disabled:!!K,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 8px",border:"none",background:N?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:K?"default":"pointer",textAlign:"left",fontWeight:_?600:400,opacity:K&&!pe?.55:1},children:[Ln.jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,color:"#111827",flexShrink:0},children:_&&Ln.jsx(lucideReact.Check,{style:{width:12,height:12}})}),Ln.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:pe?"Switching...":a.name})]},a.id)}),Ln.jsx("div",{style:{height:1,background:"#e5e7eb",margin:"4px 0"}}),je?Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 4px"},children:[Ln.jsx("input",{ref:d,type:"text",value:Pe,placeholder:"Container name",disabled:K==="__new__",onChange:a=>ze(a.target.value),onKeyDown:a=>{a.key==="Enter"?(a.preventDefault(),Tr(Pe)):a.key==="Escape"&&(a.preventDefault(),a.stopPropagation(),Qe(false),ze(""));},style:{flex:1,minWidth:0,padding:"5px 8px",border:"1px solid #d1d5db",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",background:"#ffffff",outline:"none"},onFocus:a=>{a.currentTarget.style.borderColor="#1c4587",a.currentTarget.style.boxShadow="0 0 0 2px rgba(28,69,135,0.15)";},onBlur:a=>{a.currentTarget.style.borderColor="#d1d5db",a.currentTarget.style.boxShadow="none";}}),Ln.jsx("button",{type:"button",onClick:()=>{Tr(Pe);},disabled:!Pe.trim()||K==="__new__",title:"Create",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:26,height:26,border:"none",borderRadius:4,background:!Pe.trim()||K==="__new__"?"#e5e7eb":"#1c4587",color:!Pe.trim()||K==="__new__"?"#9ca3af":"#ffffff",cursor:!Pe.trim()||K==="__new__"?"default":"pointer",flexShrink:0},children:K==="__new__"?Ln.jsx("span",{style:{width:10,height:10,border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"__fork-spin 0.7s linear infinite"}}):Ln.jsx(lucideReact.Check,{style:{width:12,height:12}})})]}):Ln.jsx("button",{type:"button",role:"menuitem",onMouseEnter:()=>xt(true),onMouseLeave:()=>xt(false),onClick:()=>{K||(M(null),ze(""),Qe(true));},disabled:!!K,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 8px",border:"none",background:$e?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:K?"default":"pointer",textAlign:"left",opacity:K&&K!=="__new__"?.55:1},children:"+ New container"}),u&&Ln.jsx("div",{style:{padding:"6px 8px",fontSize:11,lineHeight:1.35,color:"#b91c1c"},children:u})]})]}):Ln.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Nr}),e==="running"&&Ln.jsx("span",{title:Ke?`Estimated ~${Ke} min`:"Estimating\u2026",style:{fontSize:10,fontWeight:600,color:Ke?"#1c4587":"#9ca3af",backgroundColor:Ke?"rgba(28, 69, 135, 0.08)":"rgba(156, 163, 175, 0.12)",padding:"1px 6px",borderRadius:999,flexShrink:0,fontVariantNumeric:"tabular-nums",animation:Ke?void 0:"__fork-pulse 1.4s ease-in-out infinite",minWidth:28,textAlign:"center"},children:Ke?`~${Ke}m`:"~ m"})]}),!x&&Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},children:[Rr&&Ln.jsx("button",{onClick:Me?Rn:Cn,onMouseEnter:()=>B(true),onMouseLeave:()=>B(false),title:Me?"Redock to sidebar":"Pop out into window",style:{padding:6,borderRadius:6,color:D?"#4b5563":"#9ca3af",backgroundColor:D?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:Me?Ln.jsx(lucideReact.PictureInPicture,{style:{width:16,height:16}}):Ln.jsx(lucideReact.PictureInPicture2,{style:{width:16,height:16}})}),Ln.jsx("button",{onClick:Br,onMouseEnter:()=>I(true),onMouseLeave:()=>I(false),style:{padding:6,borderRadius:6,color:c?"#4b5563":"#9ca3af",backgroundColor:c?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:Ln.jsx(lucideReact.X,{style:{width:16,height:16}})})]})]}),Ln.jsxs("div",{ref:ge,style:{flex:1,overflowY:"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[(J||Q)&&Ln.jsxs("div",{style:{padding:"10px 12px 6px 12px",display:"flex",alignItems:"center",gap:8,borderBottom:"1px solid #f3f4f6"},children:[Ln.jsx("button",{onClick:()=>{le(null),se(false),fe.current=false;},style:{fontSize:12,color:"#374151",background:"transparent",border:"none",padding:"2px 4px",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:4},title:"Back to all forks",children:"\u2190 All forks"}),(()=>{let _=(J?ae.find(N=>N.id===J)?.targetId:null)??Be;return _?Ln.jsxs("span",{style:{fontSize:11,color:"#9ca3af",fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Liberation Mono", "Courier New", monospace',whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",flex:1},title:`Forking ${_}`,children:["Forking ",Ln.jsx("span",{style:{color:"#6b7280"},children:_})]}):null})()]}),!J&&!Q&&Ln.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Ln.jsxs("div",{style:{padding:"12px 16px 6px 16px",display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[Ln.jsx("span",{style:{fontSize:12,fontWeight:600,color:"#111827"},children:"Forks"}),Be&&Ln.jsx("button",{onClick:()=>{le(null),se(true);},title:`Start a new fork on ${Be}`,style:{padding:"4px 10px",fontSize:11,lineHeight:1.3,borderRadius:999,border:"1px dashed #d1d5db",background:"#ffffff",color:"#374151",cursor:"pointer",whiteSpace:"nowrap"},children:"+ New fork"})]}),ae.length===0&&Ln.jsx("div",{style:{padding:"24px 20px",textAlign:"center",fontSize:13,color:"#6b7280"},children:"No forks yet. Click + New fork to build something."}),ae.length>0&&Ln.jsx("div",{style:{display:"flex",flexDirection:"column"},children:ae.map(a=>{let _=a.summary||"Untitled fork";return Ln.jsxs("button",{onClick:()=>{se(false),le(a.id);},style:{textAlign:"left",padding:"10px 16px",background:"#ffffff",border:"none",borderBottom:"1px solid #f3f4f6",cursor:"pointer",display:"flex",flexDirection:"column",gap:2},onMouseEnter:N=>N.currentTarget.style.background="#fafafa",onMouseLeave:N=>N.currentTarget.style.background="#ffffff",children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[Ln.jsx("span",{style:{fontSize:13,fontWeight:500,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",flex:1},children:_}),Ln.jsx("span",{style:{fontSize:11,color:"#9ca3af",flexShrink:0},children:Go(a.updatedAt)})]}),Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:11,color:"#6b7280"},children:[Ln.jsx("span",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Liberation Mono", "Courier New", monospace',whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:a.targetId}),Ln.jsx("span",{style:{color:"#d1d5db"},children:"\xB7"}),Ln.jsxs("span",{children:[a.promptCount," prompt",a.promptCount===1?"":"s"]}),a.status==="running"||a.status==="building"?Ln.jsxs(Ln.Fragment,{children:[Ln.jsx("span",{style:{color:"#d1d5db"},children:"\xB7"}),Ln.jsx("span",{style:{color:"#2563eb"},children:"running"})]}):null]})]},a.id)})})]}),Q&&Ln.jsx("div",{style:{padding:"24px 20px",textAlign:"center"},children:Ln.jsx("p",{style:{fontSize:13,color:"#6b7280",marginBottom:14,lineHeight:1.625,margin:"0 0 14px 0"},children:"Describe the feature you want to build."})}),J&&tt.length>0&&Ln.jsx("div",{style:{padding:"16px 16px 0 16px"},children:tt.map((a,_)=>Ln.jsx("div",{style:{marginBottom:_<tt.length-1?10:0},children:a.type==="user"?Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:8,flexDirection:"row-reverse"},children:[Ln.jsx("div",{style:{width:22,height:22,borderRadius:"50%",backgroundColor:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginTop:2},children:Ln.jsx(lucideReact.User,{style:{width:13,height:13,color:"#6b7280"}})}),Ln.jsx("div",{style:{backgroundColor:"#f3f4f6",borderRadius:"12px 4px 12px 12px",padding:"8px 12px",fontSize:13,color:"#374151",lineHeight:1.5,maxWidth:"75%"},children:a.text})]}):O==="item"&&_===tt.length-1?Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:12,padding:12,borderRadius:8,border:"1px solid #e4e4e7",background:"#ffffff"},children:[Ln.jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,flexShrink:0,borderRadius:6,background:"#f4f4f5",color:"#0a0a0a"},children:Ln.jsx(lucideReact.BadgeCheck,{style:{width:16,height:16}})}),Ln.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:[Ln.jsx("div",{style:{fontSize:13,fontWeight:500,color:"#0a0a0a",lineHeight:1.3},children:"Feature applied"}),Ln.jsx("div",{style:{fontSize:13,color:"#71717a",lineHeight:1.4},children:a.text})]}),w&&e!=="running"&&Ln.jsx("button",{onClick:N=>{N.stopPropagation(),Lr();},disabled:j,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e4e4e7",background:"#ffffff",color:"#0a0a0a",cursor:j?"default":"pointer",opacity:j?.4:1,height:28,flexShrink:0},children:"Undo"})]}):Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[Ln.jsx("div",{style:{width:22,height:22,borderRadius:"50%",backgroundColor:"#f0fdf4",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginTop:2},children:Ln.jsx(lucideReact.Check,{style:{width:13,height:13,color:"#9ca3af"}})}),Ln.jsxs("div",{style:{backgroundColor:"#f9fafb",borderRadius:"4px 12px 12px 12px",padding:"8px 12px",fontSize:13,color:"#6b7280",fontWeight:500,display:"flex",alignItems:"center",gap:6,maxWidth:"75%"},children:[Ln.jsx("span",{style:{flex:1},children:a.text}),w&&_===tt.length-1&&e!=="running"&&Ln.jsxs("button",{onClick:N=>{N.stopPropagation(),Lr();},onMouseEnter:()=>q(_),onMouseLeave:()=>q(null),disabled:j,style:{position:"relative",padding:2,borderRadius:4,border:"none",background:ue===_?"rgba(0,0,0,0.06)":"transparent",color:ue===_?"#6b7280":"#d1d5db",cursor:j?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"color 0.15s, background 0.15s",opacity:j?.4:1,flexShrink:0},children:[Ln.jsx(lucideReact.Undo2,{style:{width:12,height:12}}),ue===_&&Ln.jsx("span",{style:{position:"absolute",bottom:"calc(100% + 4px)",right:0,fontSize:10,fontWeight:500,color:"#fff",background:"#374151",borderRadius:4,padding:"2px 6px",whiteSpace:"nowrap",pointerEvents:"none",lineHeight:"16px"},children:"Undo"})]})]})]})},_))}),e==="running"&&(J||Q)&&Ln.jsx("div",{style:{padding:16},children:Ln.jsxs("div",{onClick:()=>we(!G),style:{backgroundColor:"#1a1a2e",borderRadius:12,overflow:"hidden",cursor:"pointer",transition:"all 0.3s cubic-bezier(0.22, 1, 0.36, 1)"},children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 14px"},children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[Ln.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"#6b7280",strokeWidth:"2.5",strokeLinecap:"round",style:{animation:"__fork-spin 2s linear infinite",flexShrink:0},children:Ln.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),Ln.jsx(Yo,{events:r})]}),Ln.jsx("div",{style:{color:"#6b7280",flexShrink:0,marginLeft:8,transition:"transform 0.2s ease",transform:G?"rotate(180deg)":"rotate(0deg)"},children:Ln.jsx(lucideReact.ChevronDown,{style:{width:14,height:14}})})]}),Ln.jsx("div",{style:{maxHeight:G?320:0,opacity:G?1:0,transition:"max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease",overflow:"hidden"},children:Ln.jsx("div",{style:{borderTop:"1px solid rgba(255,255,255,0.08)",maxHeight:320,overflowY:"auto"},children:Ln.jsx(dn,{events:r})})})]})}),e==="error"&&(J||Q)&&Ln.jsxs("div",{style:{padding:"20px 16px",textAlign:"center"},children:[Ln.jsx("div",{style:{width:36,height:36,backgroundColor:"#fef2f2",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 10px auto"},children:Ln.jsx(lucideReact.X,{style:{width:18,height:18,color:"#ef4444"}})}),Ln.jsx("p",{style:{fontSize:12,color:"#6b7280",marginBottom:10,maxWidth:260,margin:"0 auto 10px auto"},children:n}),Ln.jsxs("button",{onClick:()=>{let a=t?.prompt||_t.current;a&&f(a,Be);},onMouseEnter:()=>Z(true),onMouseLeave:()=>Z(false),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,fontSize:12,fontWeight:500,color:"#4f46e5",backgroundColor:H?"#e0e7ff":"#eef2ff",border:"none",cursor:"pointer",transition:"background-color 0.15s",fontFamily:"inherit"},children:[Ln.jsx(lucideReact.RotateCcw,{style:{width:12,height:12}})," Try Again"]})]})]}),e!=="running"&&(J||Q)&&Ln.jsx("div",{style:{padding:"8px 12px 12px 12px",borderTop:"1px solid rgba(229, 231, 235, 0.6)",flexShrink:0},children:Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-end",gap:6,borderRadius:12,padding:"8px 8px 8px 12px",background:"rgba(0, 0, 0, 0.04)",border:"1px solid rgba(0, 0, 0, 0.06)"},children:[Ln.jsx("textarea",{ref:ce,value:g,onChange:a=>{$(a.target.value),a.target.style.height="auto",a.target.style.height=Math.min(a.target.scrollHeight,160)+"px";},onKeyDown:a=>{a.key==="Enter"&&!a.shiftKey&&(a.preventDefault(),Ir()),a.key==="Escape"&&!x&&Br();},placeholder:tt.length>0&&!Q?"Ask for another change...":`Describe your ideal ${Er.toLowerCase()}...`,rows:1,style:{flex:1,backgroundColor:"transparent",fontSize:13,color:"#111827",border:"none",outline:"none",padding:"0 4px 0 0",fontFamily:"inherit",resize:"none",lineHeight:1.5,maxHeight:160,overflow:"auto"}}),Ln.jsx("button",{onClick:Ir,disabled:!g.trim(),onMouseEnter:()=>F(true),onMouseLeave:()=>F(false),style:{width:26,height:26,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",color:"#ffffff",opacity:g.trim()?1:.25,transform:A&&g.trim()?"scale(1.1)":"scale(1)",background:g.trim()?"#1c4587":"rgba(0,0,0,0.12)",border:"none",cursor:g.trim()?"pointer":"default",flexShrink:0,transition:"transform 0.15s, opacity 0.15s",padding:0},children:Ln.jsx(lucideReact.ArrowUp,{style:{width:13,height:13}})})]})})]})]});return x?Jt:Me&&z?Tn.createPortal(Jt,z.document.body):Ln.jsx(Zo,{children:Jt})}function yn(e){if("target"in e&&e.target)return e.target;if("boundaryId"in e&&e.boundaryId)return {type:"boundary",id:e.boundaryId,title:e.title};if("slotId"in e&&e.slotId)return {type:"slot",id:e.slotId,title:e.title??e.slotLabel};throw new Error("Fork chat target requires either target, slotId, or boundaryId.")}function gr(e){let{apiKey:t,userId:r,userHash:n,baseUrl:o,appId:i,previewSession:s,refreshModuleManifest:l,queueBoundaryAnimation:f,trackForkActivity:w,recordForkActivityEvent:k}=ye(),[p,v]=ir.useState("idle"),[C,R]=ir.useState(null),[b,x]=ir.useState([]),[O,g]=ir.useState(null),$=ir.useRef(null),T=ir.useCallback(()=>{v("prompting"),x([]),g(null),R(null);},[]),L=ir.useCallback(()=>{v("idle"),$.current&&($.current.close(),$.current=null);},[]);ir.useEffect(()=>{s&&s.target.kind==="module"&&s.target.id===e&&v(h=>h==="idle"?"prompting":h);},[s?.preview_session_id,s?.target.id,e]);let U=ir.useCallback(async(h,P,m)=>{try{if(!i)throw new Error("ForkProvider requires appId for module boundary prompts.");v("running"),x([]),g(null);let c;if(s){let B=m?.forkId??s.fork_id??void 0,A=await fetch(`${o}/api/v1/preview/${encodeURIComponent(s.preview_session_id)}/author`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...re()},body:JSON.stringify({prompt:h,...e?{boundary_id:e}:{},...B&&!m?.forceNew?{fork_id:B}:{},...m?.forceNew?{force_new:!0}:{}})});if(!A.ok){let Z=await A.json().catch(()=>({}));throw new Error(Z.error||`API error: ${A.status}`)}let F=await A.json();F.container_id&&Ve(F.container_id,F.container_name),at(F.fork_id),c=await(await fetch(`${o}/api/v1/forks/${F.fork_id}`,{headers:{Authorization:`Bearer ${t}`,...re()}})).json();}else if(m?.forkId){let B={prompt:h};r&&(B.userId=r),n&&(B.userHash=n);let A=await fetch(`${o}/api/v1/forks/${encodeURIComponent(m.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(B)});if(!A.ok){let F=await A.json().catch(()=>({}));throw new Error(F.error||`API error: ${A.status}`)}c=await A.json();}else {let B={userId:r,prompt:h,boundaryId:e,appId:i};P&&(B.containerId=P),n&&(B.userHash=n),m?.forceNew&&(B.force_new=!0);let A=await fetch(`${o}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(B)});if(!A.ok){let F=await A.json().catch(()=>({}));throw new Error(F.error||`API error: ${A.status}`)}c=await A.json();}R(c),w(c,{targetKind:"module",targetId:e});let I=new URLSearchParams({key:t});s?(I.set("previewSessionId",s.preview_session_id),I.set("previewForkId",c.id)):r&&I.set("userId",r),n&&I.set("userHash",n);let D=new EventSource(`${o}/api/v1/forks/${c.id}/events?${I.toString()}`);$.current=D,D.onmessage=B=>{try{let A=JSON.parse(B.data);if(k(c.id,A),x(F=>[...F,A]),A.type==="complete"){let F=A.data;f(e,c.id),l().catch(()=>{}).finally(()=>{let H={...c,status:"complete",moduleUrl:F.moduleUrl,cssUrls:F.cssUrls,summary:F.summary,completedAt:new Date().toISOString()};R(H),v("complete"),D.close();});}else if(A.type==="error"){let F=A.data;g(F.error||"Unknown error"),v("error"),D.close();}}catch{}},D.onerror=()=>{let B={Authorization:`Bearer ${t}`,...re()};!s&&r&&(B["X-Fork-User-Id"]=r),!s&&n&&(B["X-Fork-User-Hash"]=n),fetch(`${o}/api/v1/forks/${c.id}`,{headers:B}).then(A=>A.json()).then(A=>{R(A),A.status==="complete"?(f(e,A.id),l().catch(()=>{}),v("complete")):A.status==="error"&&(g(A.error||"Fork generation failed"),v("error"));}).catch(()=>{g("Connection lost"),v("error");}),D.close();};}catch(c){g(c.message),v("error");}},[t,i,o,e,s,f,l,k,w,n,r]),S=ir.useCallback(async h=>{try{let P={Authorization:`Bearer ${t}`,...re()};!s&&r&&(P["X-Fork-User-Id"]=r),!s&&n&&(P["X-Fork-User-Hash"]=n);let m=await fetch(`${o}/api/v1/forks/${h}`,{headers:P});if(!m.ok)return;let c=await m.json(),I=c.boundaryId??e;if(w(c,{targetKind:"module",targetId:I}),c.status==="complete"){v("complete"),R(c),g(null),x([]);return}if(c.status==="error"){v("error"),R(c),g(c.error||"Fork generation failed"),x([]);return}if(c.status!=="pending"&&c.status!=="running"&&c.status!=="building")return;v("running"),R(c),g(null),x([]);let D=new URLSearchParams({key:t});s?(D.set("previewSessionId",s.preview_session_id),D.set("previewForkId",c.id)):r&&D.set("userId",r),n&&D.set("userHash",n);let B=new EventSource(`${o}/api/v1/forks/${c.id}/events?${D.toString()}`);$.current&&$.current.close(),$.current=B,B.onmessage=A=>{try{let F=JSON.parse(A.data);if(k(c.id,F),x(H=>[...H,F]),F.type==="complete"){let H=F.data;f(e,c.id),l().catch(()=>{}).finally(()=>{let Z={...c,status:"complete",moduleUrl:H.moduleUrl,cssUrls:H.cssUrls,summary:H.summary,completedAt:new Date().toISOString()};R(Z),v("complete"),B.close();});}else if(F.type==="error"){let H=F.data;g(H.error||"Unknown error"),v("error"),B.close();}}catch{}},B.onerror=()=>{B.close();};}catch{}},[t,o,e,s,f,k,l,w,n,r]),y=ir.useCallback(async()=>{try{if(!i)throw new Error("ForkProvider requires appId for boundary undo.");let h={userId:r,boundaryId:e,appId:i};n&&(h.userHash=n);let P=await fetch(`${o}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(h)});if(!P.ok){let c=await P.json().catch(()=>({}));throw new Error(c.error||`API error: ${P.status}`)}let m=await P.json();return await l().catch(()=>{}),m.removed?(R(null),v("prompting")):m.fork&&(R(m.fork),v("complete")),m}catch(h){throw g(h.message),h}},[t,i,o,e,l,n,r]);return {state:p,fork:C,events:b,error:O,open:T,close:L,startFork:U,undoFork:y,adoptRunningFork:S}}function kn(e){let{state:t,fork:r,events:n,error:o,open:i,close:s,startFork:l,undoFork:f,adoptRunningFork:w}=gr(e),[k,p]=ir.useState(false),v=ir.useCallback(()=>{p(true),i();},[i]),C=ir.useCallback(()=>{p(false),s();},[s]),R=ir.useCallback(async b=>{p(true),await w(b);},[w]);return {state:t,fork:r,events:n,error:o,isOpen:k,open:v,close:C,submit:l,undo:f,adoptRunningFork:R}}function yr(){let{apiKey:e,userId:t,userHash:r,baseUrl:n,previewSession:o,setSlotFork:i,clearSlotFork:s,skipAnimationForSlot:l,trackForkActivity:f,recordForkActivityEvent:w}=ye(),[k,p]=ir.useState("idle"),[v,C]=ir.useState(null),[R,b]=ir.useState([]),[x,O]=ir.useState(null),g=ir.useRef(null),$=ir.useCallback(()=>{p("prompting"),b([]),O(null),C(null);},[]),T=ir.useCallback(()=>{p("idle"),g.current&&(g.current.close(),g.current=null);},[]);ir.useEffect(()=>{o&&o.target.kind==="slot"&&p(y=>y==="idle"?"prompting":y);},[o?.preview_session_id,o?.target.kind]);let L=ir.useCallback(async(y,h,P,m)=>{try{p("running"),b([]),O(null);let c;if(o){let A=m?.forkId??o.fork_id??void 0,F=await fetch(`${n}/api/v1/preview/${encodeURIComponent(o.preview_session_id)}/author`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...re()},body:JSON.stringify({prompt:y,...h?{slot_id:h}:{},...A&&!m?.forceNew?{fork_id:A}:{},...m?.forceNew?{force_new:!0}:{}})});if(!F.ok){let G=await F.json().catch(()=>({}));throw new Error(G.error||`API error: ${F.status}`)}let H=await F.json();H.container_id&&Ve(H.container_id,H.container_name),at(H.fork_id),c=await(await fetch(`${n}/api/v1/forks/${H.fork_id}`,{headers:{Authorization:`Bearer ${e}`,...re()}})).json();}else if(m?.forkId){let A={prompt:y};t&&(A.userId=t),r&&(A.userHash=r);let F=await fetch(`${n}/api/v1/forks/${encodeURIComponent(m.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(A)});if(!F.ok){let H=await F.json().catch(()=>({}));throw new Error(H.error||`API error: ${F.status}`)}c=await F.json();}else {let A={userId:t,prompt:y};h&&(A.slotId=h),P&&(A.containerId=P),r&&(A.userHash=r),m?.forceNew&&(A.force_new=!0);let F=await fetch(`${n}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(A)});if(!F.ok){let H=await F.json().catch(()=>({}));throw new Error(H.error||`API error: ${F.status}`)}c=await F.json();}C(c);let I=h??c.slotId;I&&f(c,{targetKind:"slot",targetId:I});let D=new URLSearchParams({key:e});o?(D.set("previewSessionId",o.preview_session_id),D.set("previewForkId",c.id)):t&&D.set("userId",t),r&&D.set("userHash",r);let B=new EventSource(`${n}/api/v1/forks/${c.id}/events?${D.toString()}`);g.current=B,B.onmessage=A=>{try{let F=JSON.parse(A.data);if(w(c.id,F),b(H=>[...H,F]),F.type==="complete"){let H=F.data,Z={...c,status:"complete",bundleUrl:H.bundleUrl,summary:H.summary,completedAt:new Date().toISOString()};C(Z),p("complete"),h&&H.bundleUrl&&i(h,Z),B.close();}else if(F.type==="error"){let H=F.data;O(H.error||"Unknown error"),p("error"),B.close();}}catch{}},B.onerror=()=>{let A={Authorization:`Bearer ${e}`,...re()};!o&&t&&(A["X-Fork-User-Id"]=t),!o&&r&&(A["X-Fork-User-Hash"]=r),fetch(`${n}/api/v1/forks/${c.id}`,{headers:A}).then(F=>F.json()).then(F=>{C(F),F.status==="complete"?(p("complete"),h&&F.bundleUrl&&i(h,F)):F.status==="error"&&(O(F.error||"Fork generation failed"),p("error"));}).catch(()=>{O("Connection lost"),p("error");}),B.close();};}catch(c){O(c.message),p("error");}},[e,n,o,w,i,f,r,t]),U=ir.useCallback(async y=>{try{let h={Authorization:`Bearer ${e}`,...re()};!o&&t&&(h["X-Fork-User-Id"]=t),!o&&r&&(h["X-Fork-User-Hash"]=r);let P=await fetch(`${n}/api/v1/forks/${y}`,{headers:h});if(!P.ok)return;let m=await P.json();if(m.slotId&&f(m,{targetKind:"slot",targetId:m.slotId}),m.status==="complete"){p("complete"),C(m),O(null),b([]);return}if(m.status==="error"){p("error"),C(m),O(m.error||"Fork generation failed"),b([]);return}if(m.status!=="pending"&&m.status!=="running"&&m.status!=="building")return;p("running"),C(m),O(null),b([]);let c=new URLSearchParams({key:e});o?(c.set("previewSessionId",o.preview_session_id),c.set("previewForkId",m.id)):t&&c.set("userId",t),r&&c.set("userHash",r);let I=new EventSource(`${n}/api/v1/forks/${m.id}/events?${c.toString()}`);g.current&&g.current.close(),g.current=I;let D=m.slotId;I.onmessage=B=>{try{let A=JSON.parse(B.data);if(w(m.id,A),b(F=>[...F,A]),A.type==="complete"){let F=A.data,H={...m,status:"complete",bundleUrl:F.bundleUrl,summary:F.summary,completedAt:new Date().toISOString()};C(H),p("complete"),D&&F.bundleUrl&&i(D,H),I.close();}else if(A.type==="error"){let F=A.data;O(F.error||"Unknown error"),p("error"),I.close();}}catch{}},I.onerror=()=>{I.close();};}catch{}},[e,n,o,w,i,f,r,t]),S=ir.useCallback(async y=>{try{let h={userId:t,slotId:y};r&&(h.userHash=r);let P=await fetch(`${n}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(h)});if(!P.ok){let c=await P.json().catch(()=>({}));throw new Error(c.error||`API error: ${P.status}`)}let m=await P.json();return l(y),m.removed?(s(y),C(null),p("prompting")):m.fork&&(i(y,m.fork),C(m.fork)),m}catch(h){throw O(h.message),h}},[e,t,r,n,s,i]);return {state:k,fork:v,events:R,error:x,open:$,close:T,startFork:L,undoFork:S,adoptRunningFork:U}}function bn(){let{state:e,fork:t,events:r,error:n,open:o,close:i,startFork:s,undoFork:l,adoptRunningFork:f}=yr(),[w,k]=ir.useState(false),p=ir.useCallback(()=>{k(true),o();},[o]),v=ir.useCallback(()=>{k(false),i();},[i]),C=ir.useCallback(async R=>{k(true),await f(R);},[f]);return {state:e,fork:t,events:r,error:n,isOpen:w,open:p,close:v,submit:s,undo:l,adoptRunningFork:C}}var ss=new Set(["pending","running","building"]);function wr(e){let t=yn(e),r=bn(),n=kn(t.type==="boundary"?t.id:""),{baseUrl:o,apiKey:i,userId:s,userHash:l,appId:f,activitySummary:w,forkActivities:k,markForkActivitySeen:p}=ye(),v=t.type==="slot"?r:n,C=t.type==="slot"?"slot":"boundary",R=t.id,b=t.title,x=t.type==="slot"?"slot":"module",O=k.find(U=>U.targetKind===x&&U.targetId===t.id&&ss.has(U.status)),g=k.find(U=>U.targetKind===x&&U.targetId===t.id&&U.status==="complete"&&U.unread),$=ir.useCallback(()=>{p();let U=O??g;if(U){v.adoptRunningFork(U.id);return}v.open();},[v,p,O,g]),T=ir.useCallback((U,S,y,h)=>t.type==="slot"?r.submit(U,S??t.id,y,h):n.submit(U,y,h),[n,r,t]),L=ir.useCallback(U=>t.type==="slot"?r.undo(U??t.id):n.undo(),[n,r,t]);return {...v,open:$,target:t,targetId:R,targetLabel:b,historyMode:C,submit:T,undo:L,buttonProps:{onClick:$,hasNotification:w.unreadCompletedCount>0,activity:w},panelProps:{state:v.state,fork:v.fork,events:v.events,error:v.error,...t.type==="slot"?{slotId:R,targetLabel:b,historyMode:C}:{targetId:R,targetLabel:b,historyMode:C},onSubmit:T,onUndo:L,onClose:v.close,baseUrl:o,apiKey:i,userId:s,userHash:l,appId:f}}}function kt(e){let{embedded:t,completeVariant:r}=e,n=wr(e);return t?Ln.jsx(zt,{...n.panelProps,embedded:true,completeVariant:r}):n.isOpen?Ln.jsx(zt,{...n.panelProps,completeVariant:r}):Ln.jsx(ur,{...n.buttonProps})}function is({boundaryId:e,title:t}){return Ln.jsx(kt,{boundaryId:e,title:t})}function Sr(e){let t=Array.from(e.children).filter(n=>n instanceof HTMLElement);return t.length===1?t[0]:getComputedStyle(e).display==="contents"?null:e}function wn(e){let t=e.getBoundingClientRect(),r=e.cloneNode(true);r.setAttribute("data-fork-clone-overlay","true"),r.style.position="fixed",r.style.top=`${t.top}px`,r.style.left=`${t.left}px`,r.style.width=`${t.width}px`,r.style.height=`${t.height}px`,r.style.flex="none",r.style.minHeight="auto",r.style.zIndex="9998",r.style.pointerEvents="none",r.style.overflow="hidden";let n=getComputedStyle(e).backgroundColor;r.style.backgroundColor=n&&n!=="rgba(0, 0, 0, 0)"&&n!=="transparent"?n:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(r);let o=e.querySelectorAll("*"),i=r.querySelectorAll("*");for(let s=0;s<o.length;s+=1)o[s].scrollTop!==0&&(i[s].scrollTop=o[s].scrollTop),o[s].scrollLeft!==0&&(i[s].scrollLeft=o[s].scrollLeft);return r}function Fr(e){let t=[],r=e.querySelectorAll("*");for(let n of r){if(!(n instanceof HTMLElement))continue;let o=n.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(n.tagName))continue;let i=getComputedStyle(n),s=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:n.tagName,className:n.className||"",text:(n.textContent||"").slice(0,50).trim(),rect:o,borderRadius:s});}return t}function vn(e,t){let r=[];for(let n of t)if(!(e.find(s=>s.tag===n.tag&&s.className===n.className&&Math.abs(s.rect.top-n.rect.top)<20&&Math.abs(s.rect.left-n.rect.left)<20)||r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom))){for(let s=r.length-1;s>=0;s-=1){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function Sn(e,t){let r=[];for(let n of e)if(!(t.find(s=>s.tag===n.tag&&s.className===n.className&&Math.abs(s.rect.top-n.rect.top)<20&&Math.abs(s.rect.left-n.rect.left)<20)||r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom))){for(let s=r.length-1;s>=0;s-=1){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function Fn(e,t,r,n,o){let i=Math.max(0,Math.min(o,r/2,n/2));return i===0?`M ${e} ${t} L ${e+r} ${t} L ${e+r} ${t+n} L ${e} ${t+n} Z`:[`M ${e+i} ${t}`,`L ${e+r-i} ${t}`,`A ${i} ${i} 0 0 1 ${e+r} ${t+i}`,`L ${e+r} ${t+n-i}`,`A ${i} ${i} 0 0 1 ${e+r-i} ${t+n}`,`L ${e+i} ${t+n}`,`A ${i} ${i} 0 0 1 ${e} ${t+n-i}`,`L ${e} ${t+i}`,`A ${i} ${i} 0 0 1 ${e+i} ${t}`,"Z"].join(" ")}function xr(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-highlights","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");n.appendChild(o);let i=[];for(let k=0;k<e.length;k+=1){let{rect:p,borderRadius:v}=e[k],C=p.left-.5,R=p.top-.5,b=p.width+1,x=p.height+1,O=Math.min(v+.5,b/2,x/2),g=Fn(C,R,b,x,O),$=`__fork-glow-${k}`,T=document.createElementNS(t,"filter");T.setAttribute("id",$),T.setAttribute("x","-100%"),T.setAttribute("y","-100%"),T.setAttribute("width","300%"),T.setAttribute("height","300%");let L=document.createElementNS(t,"feGaussianBlur");L.setAttribute("in","SourceGraphic"),L.setAttribute("stdDeviation","8"),T.appendChild(L),o.appendChild(T);let U=`__fork-mask-${k}`,S=document.createElementNS(t,"mask");S.setAttribute("id",U),S.setAttribute("maskUnits","userSpaceOnUse"),S.setAttribute("x",String(C-200)),S.setAttribute("y",String(R-200)),S.setAttribute("width",String(b+400)),S.setAttribute("height",String(x+400));let y=document.createElementNS(t,"rect");y.setAttribute("x",String(C-200)),y.setAttribute("y",String(R-200)),y.setAttribute("width",String(b+400)),y.setAttribute("height",String(x+400)),y.setAttribute("fill","white"),S.appendChild(y);let h=document.createElementNS(t,"path");h.setAttribute("d",g),h.setAttribute("fill","black"),S.appendChild(h),o.appendChild(S);let P=document.createElementNS(t,"g");P.setAttribute("mask",`url(#${U})`),P.setAttribute("opacity","0");let m=document.createElementNS(t,"g");m.setAttribute("filter",`url(#${$})`);let c=document.createElementNS(t,"path");c.setAttribute("d",g),c.setAttribute("fill","none"),c.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),c.setAttribute("stroke-width","6"),c.setAttribute("stroke-linecap","round"),m.appendChild(c),P.appendChild(m),n.appendChild(P);let I=document.createElementNS(t,"path");I.setAttribute("d",g),I.setAttribute("fill","none"),I.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),I.setAttribute("stroke-width","2"),I.setAttribute("stroke-linecap","round"),I.setAttribute("opacity","0"),n.appendChild(I),i.push(c,I),c.__group=P;}r.appendChild(n),document.body.appendChild(r);let s=[];for(let k=0;k<i.length;k+=2){let p=i[k],v=i[k+1],C=p.__group;if(!C)continue;let R=v.getTotalLength(),b=p.getTotalLength();if(R<=0)continue;let x=R*.35;v.setAttribute("stroke-dasharray",`${x} ${R-x}`),v.setAttribute("stroke-dashoffset","0"),s.push(v.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*R,opacity:.92,offset:.06},{strokeDashoffset:-2*R,opacity:.92,offset:.92},{strokeDashoffset:-2.25*R,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let O=b*.35;p.setAttribute("stroke-dasharray",`${O} ${b-O}`),p.setAttribute("stroke-dashoffset","0"),s.push(p.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*b,offset:.06},{strokeDashoffset:-2*b,offset:.92},{strokeDashoffset:-2.25*b,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),s.push(C.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,f=()=>{if(l)return;l=true,clearTimeout(w);for(let p of s)try{p.cancel();}catch{}let k=r.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});k.onfinish=()=>r.remove(),window.removeEventListener("click",f);},w=setTimeout(f,14500);return setTimeout(()=>{l||window.addEventListener("click",f);},500),f}function xn(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-removed","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let s=document.createElementNS(t,"feDropShadow");s.setAttribute("dx","0"),s.setAttribute("dy","1"),s.setAttribute("stdDeviation","2"),s.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(s),o.appendChild(i),n.appendChild(o);for(let{rect:l,borderRadius:f}of e){let w=document.createElementNS(t,"path");w.setAttribute("d",Fn(l.left,l.top,l.width,l.height,f)),w.setAttribute("fill","none"),w.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),w.setAttribute("stroke-width","1.5"),w.setAttribute("stroke-dasharray","8 4"),w.setAttribute("stroke-linecap","round"),w.setAttribute("filter","url(#__fork-removed-shadow)"),w.setAttribute("opacity","0"),n.appendChild(w),w.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return r.appendChild(n),document.body.appendChild(r),r}var wt=new Map,vt=new Map,Ar=new Map;function cs(e){for(let t of e)vt.set(t,(vt.get(t)??0)+1);}function ds(e){if(!(typeof document>"u"))for(let t of e){let r=(vt.get(t)??0)-1;if(r>0){vt.set(t,r);continue}vt.delete(t),wt.delete(t);let n=document.querySelector(`link[data-fork-override-href="${CSS.escape(t)}"]`);n&&n.remove();}}function us(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown module override error")}function _n(e,t){let r=(t?e[t]:void 0)??e.default;if(typeof r!="function"){let n=t||"default";throw new Error(`Fork boundary module is missing a React component export: ${n}`)}return r}function fs(e){if(!e||typeof document>"u")return Promise.resolve();let t=wt.get(e);if(t)return t;let r=document.querySelector(`link[data-fork-override-href="${e}"]`);if(r instanceof HTMLLinkElement){let o=r.sheet?Promise.resolve():new Promise((i,s)=>{let l=()=>{r.removeEventListener("load",l),r.removeEventListener("error",f),i();},f=()=>{r.removeEventListener("load",l),r.removeEventListener("error",f),s(new Error(`Failed to load boundary stylesheet: ${e}`));};r.addEventListener("load",l,{once:true}),r.addEventListener("error",f,{once:true});});return wt.set(e,o),o}let n=new Promise((o,i)=>{let s=document.createElement("link");s.rel="stylesheet",s.href=e,s.setAttribute("data-fork-override-href",e),s.onload=()=>o(),s.onerror=()=>{s.remove(),i(new Error(`Failed to load boundary stylesheet: ${e}`));},document.head.appendChild(s);}).catch(o=>{throw wt.delete(e),o});return wt.set(e,n),n}function ps(e){let t=Ar.get(e);if(t)return t;let r=import(e).catch(n=>{throw Ar.delete(e),n});return Ar.set(e,r),r}async function ms(e,t,r){if(e)try{await Promise.all(e.cssUrls.map(i=>fs(i)));let o=await ps(e.moduleUrl);return _n(o,r)}catch(o){console.error(`[Fork] Failed to load override for boundary "${e.boundaryId}", falling back to original module.`,o);}let n=await t();return _n(n,r)}function gs(e){function t(r){let{appId:n,moduleOverridesEnabled:o,moduleManifestReady:i,moduleManifestVersion:s,registerBoundary:l,getBoundaryOverride:f,consumeBoundaryAnimation:w}=ye(),[k,p]=ir.useState(null),[v,C]=ir.useState(null),R=ir.useRef(null),b=ir.useRef(null),x=ir.useRef(null),O=ir.useRef(false),g=ir.useRef(null),$=ir.useRef(null),T=f(e.id),L=T?`override:${T.id}`:"original",U=e.editorMetadata?JSON.stringify(e.editorMetadata):void 0;if(ir.useEffect(()=>()=>{$.current&&(clearTimeout($.current),$.current=null),g.current&&(g.current.remove(),g.current=null);},[]),ir.useEffect(()=>{l({id:e.id,exportName:e.exportName,editorMetadata:e.editorMetadata});},[n,l,e.id,e.exportName,U]),ir.useEffect(()=>{let S=T?.cssUrls??[];if(S.length!==0)return cs(S),()=>ds(S)},[T?.cssUrls.join("|")]),ir.useEffect(()=>{if(o&&!i&&!k||b.current===L&&k)return;let S=false;return C(null),ms(T,e.original,e.exportName).then(y=>{if(!S){if(T?.id&&w(e.id,T.id)&&R.current){let h=Sr(R.current);if(h){let P=Fr(h);P.length>0&&(x.current=P,O.current=true,$.current&&(clearTimeout($.current),$.current=null),g.current&&g.current.remove(),g.current=wn(h));}}b.current=L,ir.startTransition(()=>{p(()=>y);});}}).catch(y=>{S||C(us(y));}),()=>{S=true;}},[w,L,o,i,s,T?.id,T?.moduleUrl,T?.integrity,T?.cssUrls.join("|"),e.exportName,e.original,k]),ir.useEffect(()=>{if(!O.current||!k||!R.current)return;let S=false;return requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(S||!R.current)return;let y=x.current,h=Sr(R.current);if(x.current=null,O.current=false,!y||!h){g.current&&(g.current.remove(),g.current=null);return}let P=Fr(h),m=vn(y,P),c=Sn(y,P),I=g.current;if(c.length>0&&I){let D=xn(c);$.current=setTimeout(()=>{$.current=null;let B=400;I.animate([{opacity:1},{opacity:0}],{duration:B,fill:"forwards"}),D.animate([{opacity:1},{opacity:0}],{duration:B,fill:"forwards"}),setTimeout(()=>{I.remove(),D.remove(),g.current===I&&(g.current=null),m.length>0&&xr(m);},B);},3500);}else I&&(I.remove(),g.current===I&&(g.current=null)),m.length>0&&xr(m);});}),()=>{S=true;}},[k]),v)throw v;return k?Ln.jsx("div",{ref:R,style:{display:"contents"},children:Ln.jsx(k,{...r})}):Ln.jsx(Ln.Fragment,{children:e.loading??null})}return t.displayName=`ForkBoundary(${e.id})`,t}function ys({slotId:e,title:t,slotLabel:r}){return Ln.jsx(kt,{slotId:e,title:t,slotLabel:r})}
|
|
60
|
-
exports.ForkBoundaryUI=is;exports.ForkButton=ur;exports.ForkChatInterface=
|
|
59
|
+
`}),Ln.jsxs("div",{className:"__fork-panel",style:Pn,children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",borderBottom:"1px solid rgba(229, 231, 235, 0.8)",flexShrink:0},children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0,flex:1},children:[Ln.jsx("span",{onDoubleClick:async a=>{if(a.stopPropagation(),!ie&&confirm("Kill all forks in this container?")){Ze(true);try{let F=await Be();`${F?.deleted??0}`,ke([]),le(null),se(!1),P("");}catch(F){console.error("[Fork] Reset failed:",F);}finally{Ze(false);}}},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:4,margin:-4,cursor:"pointer",flexShrink:0},children:Ln.jsx(Ht,{style:{width:16,height:16,color:"#1c4587",pointerEvents:"none"}})}),e==="running"?Ln.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:En}):xe.length===0&&!et?Ln.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:"Fork"}):et?Ln.jsxs("div",{ref:$t,style:{position:"relative",minWidth:0,display:"inline-flex"},children:[Ln.jsxs("button",{type:"button",onClick:()=>{Oe(a=>!a);},onMouseEnter:()=>xt(true),onMouseLeave:()=>xt(false),"aria-haspopup":"menu","aria-expanded":Re,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 6px",border:"1px solid transparent",borderRadius:6,background:Vt||Re?"#f3f4f6":"transparent",fontSize:13,fontWeight:600,color:"#111827",fontFamily:"inherit",cursor:"pointer",maxWidth:180,minWidth:0,transition:"background-color 0.12s"},children:[Ln.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Br}),Ln.jsx(lucideReact.ChevronDown,{style:{width:12,height:12,color:"#6b7280",flexShrink:0,transform:Re?"rotate(180deg)":void 0,transition:"transform 0.15s"}})]}),Re&&Ln.jsxs("div",{role:"menu",style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:200,maxWidth:260,background:"#ffffff",border:"1px solid #e5e7eb",borderRadius:8,boxShadow:"0 4px 12px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.06)",padding:4,zIndex:2147483001},children:[xe.map(a=>{let F=a.id===me,T=At===a.id,ue=K===a.id;return Ln.jsxs("button",{type:"button",role:"menuitem",onMouseEnter:()=>ve(a.id),onMouseLeave:()=>ve(null),onClick:()=>{a.id!==me&&$n(a.id);},disabled:!!K,style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 8px",border:"none",background:T?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:K?"default":"pointer",textAlign:"left",fontWeight:F?600:400,opacity:K&&!ue?.55:1},children:[Ln.jsx("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,color:"#111827",flexShrink:0},children:F&&Ln.jsx(lucideReact.Check,{style:{width:12,height:12}})}),Ln.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:ue?"Switching...":a.name})]},a.id)}),Ln.jsx("div",{style:{height:1,background:"#e5e7eb",margin:"4px 0"}}),je?Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"4px 4px"},children:[Ln.jsx("input",{ref:d,type:"text",value:Ie,placeholder:"Container name",disabled:K==="__new__",onChange:a=>ze(a.target.value),onKeyDown:a=>{a.key==="Enter"?(a.preventDefault(),Mr(Ie)):a.key==="Escape"&&(a.preventDefault(),a.stopPropagation(),Qe(false),ze(""));},style:{flex:1,minWidth:0,padding:"5px 8px",border:"1px solid #d1d5db",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",background:"#ffffff",outline:"none"},onFocus:a=>{a.currentTarget.style.borderColor="#1c4587",a.currentTarget.style.boxShadow="0 0 0 2px rgba(28,69,135,0.15)";},onBlur:a=>{a.currentTarget.style.borderColor="#d1d5db",a.currentTarget.style.boxShadow="none";}}),Ln.jsx("button",{type:"button",onClick:()=>{Mr(Ie);},disabled:!Ie.trim()||K==="__new__",title:"Create",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:26,height:26,border:"none",borderRadius:4,background:!Ie.trim()||K==="__new__"?"#e5e7eb":"#1c4587",color:!Ie.trim()||K==="__new__"?"#9ca3af":"#ffffff",cursor:!Ie.trim()||K==="__new__"?"default":"pointer",flexShrink:0},children:K==="__new__"?Ln.jsx("span",{style:{width:10,height:10,border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",animation:"__fork-spin 0.7s linear infinite"}}):Ln.jsx(lucideReact.Check,{style:{width:12,height:12}})})]}):Ln.jsx("button",{type:"button",role:"menuitem",onMouseEnter:()=>_t(true),onMouseLeave:()=>_t(false),onClick:()=>{K||(M(null),ze(""),Qe(true));},disabled:!!K,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 8px",border:"none",background:Pe?"#f3f4f6":"transparent",borderRadius:4,fontSize:13,fontFamily:"inherit",color:"#111827",cursor:K?"default":"pointer",textAlign:"left",opacity:K&&K!=="__new__"?.55:1},children:"+ New container"}),u&&Ln.jsx("div",{style:{padding:"6px 8px",fontSize:11,lineHeight:1.35,color:"#b91c1c"},children:u})]})]}):Ln.jsx("span",{style:{fontSize:13,fontWeight:600,color:"#111827",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0},children:Br}),e==="running"&&Ln.jsx("span",{title:Ke?`Estimated ~${Ke} min`:"Estimating\u2026",style:{fontSize:10,fontWeight:600,color:Ke?"#1c4587":"#9ca3af",backgroundColor:Ke?"rgba(28, 69, 135, 0.08)":"rgba(156, 163, 175, 0.12)",padding:"1px 6px",borderRadius:999,flexShrink:0,fontVariantNumeric:"tabular-nums",animation:Ke?void 0:"__fork-pulse 1.4s ease-in-out infinite",minWidth:28,textAlign:"center"},children:Ke?`~${Ke}m`:"~ m"})]}),!A&&Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2,flexShrink:0},children:[Rr&&Ln.jsx("button",{onClick:Ae?Cn:_n,onMouseEnter:()=>N(true),onMouseLeave:()=>N(false),title:Ae?"Redock to sidebar":"Pop out into window",style:{padding:6,borderRadius:6,color:D?"#4b5563":"#9ca3af",backgroundColor:D?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:Ae?Ln.jsx(lucideReact.PictureInPicture,{style:{width:16,height:16}}):Ln.jsx(lucideReact.PictureInPicture2,{style:{width:16,height:16}})}),Ln.jsx("button",{onClick:Lr,onMouseEnter:()=>I(true),onMouseLeave:()=>I(false),style:{padding:6,borderRadius:6,color:c?"#4b5563":"#9ca3af",backgroundColor:c?"#f3f4f6":"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background-color 0.15s, color 0.15s"},children:Ln.jsx(lucideReact.X,{style:{width:16,height:16}})})]})]}),Ln.jsxs("div",{ref:ge,style:{flex:1,overflowY:"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[(X||te)&&Ln.jsxs("div",{style:{padding:"10px 12px 6px 12px",display:"flex",alignItems:"center",gap:8,borderBottom:"1px solid #f3f4f6"},children:[Ln.jsx("button",{onClick:()=>{le(null),se(false),pe.current=false;},style:{fontSize:12,color:"#374151",background:"transparent",border:"none",padding:"2px 4px",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:4},title:"Back to all forks",children:"\u2190 All forks"}),(()=>{let F=(X?ae.find(T=>T.id===X)?.targetId:null)??tt;return F?Ln.jsxs("span",{style:{fontSize:11,color:"#9ca3af",fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Liberation Mono", "Courier New", monospace',whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",flex:1},title:`Forking ${F}`,children:["Forking ",Ln.jsx("span",{style:{color:"#6b7280"},children:F})]}):null})()]}),!X&&!te&&Ln.jsxs("div",{style:{display:"flex",flexDirection:"column"},children:[Ln.jsx("div",{style:{padding:"12px 16px 10px 16px",borderBottom:"1px solid #f3f4f6"},children:Ln.jsx("span",{style:{fontSize:12,fontWeight:600,color:"#111827"},children:"Forks"})}),ae.length===0&&Ln.jsx("div",{style:{padding:"24px 20px",textAlign:"center",fontSize:13,color:"#6b7280"},children:"No forks yet. Describe a feature below to start one."}),ae.length>0&&Ln.jsx("div",{style:{display:"flex",flexDirection:"column"},children:ae.map(a=>{let F=a.summary||"Untitled fork";return Ln.jsxs("button",{onClick:()=>{se(false),le(a.id);},style:{textAlign:"left",padding:"10px 16px",background:"#ffffff",border:"none",borderBottom:"1px solid #f3f4f6",cursor:"pointer",display:"flex",flexDirection:"column",gap:2},onMouseEnter:T=>T.currentTarget.style.background="#fafafa",onMouseLeave:T=>T.currentTarget.style.background="#ffffff",children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[Ln.jsx("span",{style:{fontSize:13,fontWeight:500,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",flex:1},children:F}),Ln.jsx("span",{style:{fontSize:11,color:"#9ca3af",flexShrink:0},children:Go(a.updatedAt)})]}),Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:11,color:"#6b7280"},children:[Ln.jsx("span",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Liberation Mono", "Courier New", monospace',whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:a.targetId}),Ln.jsx("span",{style:{color:"#d1d5db"},children:"\xB7"}),Ln.jsxs("span",{children:[a.promptCount," prompt",a.promptCount===1?"":"s"]}),a.status==="running"||a.status==="building"?Ln.jsxs(Ln.Fragment,{children:[Ln.jsx("span",{style:{color:"#d1d5db"},children:"\xB7"}),Ln.jsx("span",{style:{color:"#2563eb"},children:"running"})]}):null]})]},a.id)})})]}),X&&at.length>0&&Ln.jsx("div",{style:{padding:"16px 16px 0 16px"},children:at.map((a,F)=>Ln.jsx("div",{style:{marginBottom:F<at.length-1?10:0},children:a.type==="user"?Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:8,flexDirection:"row-reverse"},children:[Ln.jsx("div",{style:{width:22,height:22,borderRadius:"50%",backgroundColor:"#e5e7eb",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginTop:2},children:Ln.jsx(lucideReact.User,{style:{width:13,height:13,color:"#6b7280"}})}),Ln.jsx("div",{style:{backgroundColor:"#f3f4f6",borderRadius:"12px 4px 12px 12px",padding:"8px 12px",fontSize:13,color:"#374151",lineHeight:1.5,maxWidth:"75%"},children:a.text})]}):O==="item"&&F===at.length-1?Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:12,padding:12,borderRadius:8,border:"1px solid #e4e4e7",background:"#ffffff"},children:[Ln.jsx("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,flexShrink:0,borderRadius:6,background:"#f4f4f5",color:"#0a0a0a"},children:Ln.jsx(lucideReact.BadgeCheck,{style:{width:16,height:16}})}),Ln.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2,flex:1,minWidth:0},children:[Ln.jsx("div",{style:{fontSize:13,fontWeight:500,color:"#0a0a0a",lineHeight:1.3},children:"Feature applied"}),Ln.jsx("div",{style:{fontSize:13,color:"#71717a",lineHeight:1.4},children:a.text})]}),w&&e!=="running"&&Ln.jsx("button",{onClick:T=>{T.stopPropagation(),Tr();},disabled:j,style:{padding:"4px 10px",fontSize:12,fontWeight:500,borderRadius:6,border:"1px solid #e4e4e7",background:"#ffffff",color:"#0a0a0a",cursor:j?"default":"pointer",opacity:j?.4:1,height:28,flexShrink:0},children:"Undo"})]}):Ln.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:8},children:[Ln.jsx("div",{style:{width:22,height:22,borderRadius:"50%",backgroundColor:"#f0fdf4",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,marginTop:2},children:Ln.jsx(lucideReact.Check,{style:{width:13,height:13,color:"#9ca3af"}})}),Ln.jsxs("div",{style:{backgroundColor:"#f9fafb",borderRadius:"4px 12px 12px 12px",padding:"8px 12px",fontSize:13,color:"#6b7280",fontWeight:500,display:"flex",alignItems:"center",gap:6,maxWidth:"75%"},children:[Ln.jsx("span",{style:{flex:1},children:a.text}),w&&F===at.length-1&&e!=="running"&&Ln.jsxs("button",{onClick:T=>{T.stopPropagation(),Tr();},onMouseEnter:()=>q(F),onMouseLeave:()=>q(null),disabled:j,style:{position:"relative",padding:2,borderRadius:4,border:"none",background:fe===F?"rgba(0,0,0,0.06)":"transparent",color:fe===F?"#6b7280":"#d1d5db",cursor:j?"default":"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"color 0.15s, background 0.15s",opacity:j?.4:1,flexShrink:0},children:[Ln.jsx(lucideReact.Undo2,{style:{width:12,height:12}}),fe===F&&Ln.jsx("span",{style:{position:"absolute",bottom:"calc(100% + 4px)",right:0,fontSize:10,fontWeight:500,color:"#fff",background:"#374151",borderRadius:4,padding:"2px 6px",whiteSpace:"nowrap",pointerEvents:"none",lineHeight:"16px"},children:"Undo"})]})]})]})},F))}),e==="running"&&(X||te)&&Ln.jsx("div",{style:{padding:16},children:Ln.jsxs("div",{onClick:()=>we(!G),style:{backgroundColor:"#1a1a2e",borderRadius:12,overflow:"hidden",cursor:"pointer",transition:"all 0.3s cubic-bezier(0.22, 1, 0.36, 1)"},children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 14px"},children:[Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[Ln.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"#6b7280",strokeWidth:"2.5",strokeLinecap:"round",style:{animation:"__fork-spin 2s linear infinite",flexShrink:0},children:Ln.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})}),Ln.jsx(Yo,{events:r})]}),Ln.jsx("div",{style:{color:"#6b7280",flexShrink:0,marginLeft:8,transition:"transform 0.2s ease",transform:G?"rotate(180deg)":"rotate(0deg)"},children:Ln.jsx(lucideReact.ChevronDown,{style:{width:14,height:14}})})]}),Ln.jsx("div",{style:{maxHeight:G?320:0,opacity:G?1:0,transition:"max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s ease",overflow:"hidden"},children:Ln.jsx("div",{style:{borderTop:"1px solid rgba(255,255,255,0.08)",maxHeight:320,overflowY:"auto"},children:Ln.jsx(cn,{events:r})})})]})}),e==="error"&&(X||te)&&Ln.jsxs("div",{style:{padding:"20px 16px",textAlign:"center"},children:[Ln.jsx("div",{style:{width:36,height:36,backgroundColor:"#fef2f2",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 10px auto"},children:Ln.jsx(lucideReact.X,{style:{width:18,height:18,color:"#ef4444"}})}),Ln.jsx("p",{style:{fontSize:12,color:"#6b7280",marginBottom:10,maxWidth:260,margin:"0 auto 10px auto"},children:n}),Ln.jsxs("button",{onClick:()=>{let a=t?.prompt||Rt.current;a&&f(a,tt);},onMouseEnter:()=>Z(true),onMouseLeave:()=>Z(false),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,fontSize:12,fontWeight:500,color:"#4f46e5",backgroundColor:H?"#e0e7ff":"#eef2ff",border:"none",cursor:"pointer",transition:"background-color 0.15s",fontFamily:"inherit"},children:[Ln.jsx(lucideReact.RotateCcw,{style:{width:12,height:12}})," Try Again"]})]})]}),e!=="running"&&Ln.jsx("div",{style:{padding:"8px 12px 12px 12px",borderTop:"1px solid rgba(229, 231, 235, 0.6)",flexShrink:0},children:Ln.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,borderRadius:12,padding:"8px 8px 8px 12px",background:"rgba(0, 0, 0, 0.04)",border:"1px solid rgba(0, 0, 0, 0.06)"},children:[Ln.jsx("textarea",{ref:de,value:g,onChange:a=>{P(a.target.value),a.target.style.height="auto",a.target.style.height=Math.min(a.target.scrollHeight,160)+"px";},onKeyDown:a=>{a.key==="Enter"&&!a.shiftKey&&(a.preventDefault(),Pr()),a.key==="Escape"&&!A&&Lr();},placeholder:X?"Iterate on this feature...":"Start building a new Fork...",rows:1,style:{flex:1,backgroundColor:"transparent",fontSize:13,color:"#111827",border:"none",outline:"none",padding:"0 4px 0 0",fontFamily:"inherit",resize:"none",lineHeight:1.5,maxHeight:160,overflow:"auto"}}),Ln.jsx("button",{onClick:Pr,disabled:!g.trim(),onMouseEnter:()=>x(true),onMouseLeave:()=>x(false),style:{width:26,height:26,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",color:"#ffffff",opacity:g.trim()?1:.25,transform:R&&g.trim()?"scale(1.1)":"scale(1)",background:g.trim()?"#1c4587":"rgba(0,0,0,0.12)",border:"none",cursor:g.trim()?"pointer":"default",flexShrink:0,transition:"transform 0.15s, opacity 0.15s",padding:0},children:Ln.jsx(lucideReact.ArrowUp,{style:{width:13,height:13}})})]})})]})]});return A?Jt:Ae&&z?Tn.createPortal(Jt,z.document.body):Ln.jsx(Zo,{children:Jt})}function hn(e){if("target"in e&&e.target)return e.target;if("boundaryId"in e&&e.boundaryId)return {type:"boundary",id:e.boundaryId,title:e.title};if("slotId"in e&&e.slotId)return {type:"slot",id:e.slotId,title:e.title??e.slotLabel};throw new Error("Fork chat target requires either target, slotId, or boundaryId.")}function gr(e){let{apiKey:t,userId:r,userHash:n,baseUrl:o,appId:i,previewSession:s,refreshModuleManifest:l,queueBoundaryAnimation:f,trackForkActivity:w,recordForkActivityEvent:y}=ye(),[p,v]=ir.useState("idle"),[_,C]=ir.useState(null),[b,A]=ir.useState([]),[O,g]=ir.useState(null),P=ir.useRef(null),L=ir.useCallback(()=>{v("prompting"),A([]),g(null),C(null);},[]),B=ir.useCallback(()=>{v("idle"),P.current&&(P.current.close(),P.current=null);},[]);ir.useEffect(()=>{s&&s.target.kind==="module"&&s.target.id===e&&v(h=>h==="idle"?"prompting":h);},[s?.preview_session_id,s?.target.id,e]);let U=ir.useCallback(async(h,E,m)=>{try{if(!i)throw new Error("ForkProvider requires appId for module boundary prompts.");v("running"),A([]),g(null),C(null);let c;if(s){let N=m?.forkId??s.fork_id??void 0,R=await fetch(`${o}/api/v1/preview/${encodeURIComponent(s.preview_session_id)}/author`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`,...re()},body:JSON.stringify({prompt:h,...e?{boundary_id:e}:{},...N&&!m?.forceNew?{fork_id:N}:{},...m?.forceNew?{force_new:!0}:{}})});if(!R.ok){let Z=await R.json().catch(()=>({}));throw new Error(Z.error||`API error: ${R.status}`)}let x=await R.json();x.container_id&&Ve(x.container_id,x.container_name),lt(x.fork_id),c=await(await fetch(`${o}/api/v1/forks/${x.fork_id}`,{headers:{Authorization:`Bearer ${t}`,...re()}})).json();}else if(m?.forkId){let N={prompt:h};r&&(N.userId=r),n&&(N.userHash=n);let R=await fetch(`${o}/api/v1/forks/${encodeURIComponent(m.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(N)});if(!R.ok){let x=await R.json().catch(()=>({}));throw new Error(x.error||`API error: ${R.status}`)}c=await R.json();}else {let N={userId:r,prompt:h,boundaryId:e,appId:i};E&&(N.containerId=E),n&&(N.userHash=n),m?.forceNew&&(N.force_new=!0);let R=await fetch(`${o}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(N)});if(!R.ok){let x=await R.json().catch(()=>({}));throw new Error(x.error||`API error: ${R.status}`)}c=await R.json();}C(c),w(c,{targetKind:"module",targetId:e});let I=new URLSearchParams({key:t});s?(I.set("previewSessionId",s.preview_session_id),I.set("previewForkId",c.id)):r&&I.set("userId",r),n&&I.set("userHash",n);let D=new EventSource(`${o}/api/v1/forks/${c.id}/events?${I.toString()}`);P.current=D,D.onmessage=N=>{try{let R=JSON.parse(N.data);if(y(c.id,R),A(x=>[...x,R]),R.type==="complete"){let x=R.data;f(e,c.id),l().catch(()=>{}).finally(()=>{let H={...c,status:"complete",moduleUrl:x.moduleUrl,cssUrls:x.cssUrls,summary:x.summary,completedAt:new Date().toISOString()};C(H),v("complete"),D.close();});}else if(R.type==="error"){let x=R.data;g(x.error||"Unknown error"),v("error"),D.close();}}catch{}},D.onerror=()=>{let N={Authorization:`Bearer ${t}`,...re()};!s&&r&&(N["X-Fork-User-Id"]=r),!s&&n&&(N["X-Fork-User-Hash"]=n),fetch(`${o}/api/v1/forks/${c.id}`,{headers:N}).then(R=>R.json()).then(R=>{C(R),R.status==="complete"?(f(e,R.id),l().catch(()=>{}),v("complete")):R.status==="error"&&(g(R.error||"Fork generation failed"),v("error"));}).catch(()=>{g("Connection lost"),v("error");}),D.close();};}catch(c){g(c.message),v("error");}},[t,i,o,e,s,f,l,y,w,n,r]),S=ir.useCallback(async h=>{try{let E={Authorization:`Bearer ${t}`,...re()};!s&&r&&(E["X-Fork-User-Id"]=r),!s&&n&&(E["X-Fork-User-Hash"]=n);let m=await fetch(`${o}/api/v1/forks/${h}`,{headers:E});if(!m.ok)return;let c=await m.json(),I=c.boundaryId??e;if(w(c,{targetKind:"module",targetId:I}),c.status==="complete"){v("complete"),C(c),g(null),A([]);return}if(c.status==="error"){v("error"),C(c),g(c.error||"Fork generation failed"),A([]);return}if(c.status!=="pending"&&c.status!=="running"&&c.status!=="building")return;v("running"),C(c),g(null),A([]);let D=new URLSearchParams({key:t});s?(D.set("previewSessionId",s.preview_session_id),D.set("previewForkId",c.id)):r&&D.set("userId",r),n&&D.set("userHash",n);let N=new EventSource(`${o}/api/v1/forks/${c.id}/events?${D.toString()}`);P.current&&P.current.close(),P.current=N,N.onmessage=R=>{try{let x=JSON.parse(R.data);if(y(c.id,x),A(H=>[...H,x]),x.type==="complete"){let H=x.data;f(e,c.id),l().catch(()=>{}).finally(()=>{let Z={...c,status:"complete",moduleUrl:H.moduleUrl,cssUrls:H.cssUrls,summary:H.summary,completedAt:new Date().toISOString()};C(Z),v("complete"),N.close();});}else if(x.type==="error"){let H=x.data;g(H.error||"Unknown error"),v("error"),N.close();}}catch{}},N.onerror=()=>{N.close();};}catch{}},[t,o,e,s,f,y,l,w,n,r]),k=ir.useCallback(async()=>{try{if(!i)throw new Error("ForkProvider requires appId for boundary undo.");let h={userId:r,boundaryId:e,appId:i};n&&(h.userHash=n);let E=await fetch(`${o}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(h)});if(!E.ok){let c=await E.json().catch(()=>({}));throw new Error(c.error||`API error: ${E.status}`)}let m=await E.json();return await l().catch(()=>{}),m.removed?(C(null),v("prompting")):m.fork&&(C(m.fork),v("complete")),m}catch(h){throw g(h.message),h}},[t,i,o,e,l,n,r]);return {state:p,fork:_,events:b,error:O,open:L,close:B,startFork:U,undoFork:k,adoptRunningFork:S}}function yn(e){let{state:t,fork:r,events:n,error:o,open:i,close:s,startFork:l,undoFork:f,adoptRunningFork:w}=gr(e),[y,p]=ir.useState(false),v=ir.useCallback(()=>{p(true),i();},[i]),_=ir.useCallback(()=>{p(false),s();},[s]),C=ir.useCallback(async b=>{p(true),await w(b);},[w]);return {state:t,fork:r,events:n,error:o,isOpen:y,open:v,close:_,submit:l,undo:f,adoptRunningFork:C}}function yr(){let{apiKey:e,userId:t,userHash:r,baseUrl:n,previewSession:o,setSlotFork:i,clearSlotFork:s,skipAnimationForSlot:l,trackForkActivity:f,recordForkActivityEvent:w}=ye(),[y,p]=ir.useState("idle"),[v,_]=ir.useState(null),[C,b]=ir.useState([]),[A,O]=ir.useState(null),g=ir.useRef(null),P=ir.useCallback(()=>{p("prompting"),b([]),O(null),_(null);},[]),L=ir.useCallback(()=>{p("idle"),g.current&&(g.current.close(),g.current=null);},[]);ir.useEffect(()=>{o&&o.target.kind==="slot"&&p(k=>k==="idle"?"prompting":k);},[o?.preview_session_id,o?.target.kind]);let B=ir.useCallback(async(k,h,E,m)=>{try{p("running"),b([]),O(null),_(null);let c;if(o){let R=m?.forkId??o.fork_id??void 0,x=await fetch(`${n}/api/v1/preview/${encodeURIComponent(o.preview_session_id)}/author`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...re()},body:JSON.stringify({prompt:k,...h?{slot_id:h}:{},...R&&!m?.forceNew?{fork_id:R}:{},...m?.forceNew?{force_new:!0}:{}})});if(!x.ok){let G=await x.json().catch(()=>({}));throw new Error(G.error||`API error: ${x.status}`)}let H=await x.json();H.container_id&&Ve(H.container_id,H.container_name),lt(H.fork_id),c=await(await fetch(`${n}/api/v1/forks/${H.fork_id}`,{headers:{Authorization:`Bearer ${e}`,...re()}})).json();}else if(m?.forkId){let R={prompt:k};t&&(R.userId=t),r&&(R.userHash=r);let x=await fetch(`${n}/api/v1/forks/${encodeURIComponent(m.forkId)}/prompts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(R)});if(!x.ok){let H=await x.json().catch(()=>({}));throw new Error(H.error||`API error: ${x.status}`)}c=await x.json();}else {let R={userId:t,prompt:k};h&&(R.slotId=h),E&&(R.containerId=E),r&&(R.userHash=r),m?.forceNew&&(R.force_new=!0);let x=await fetch(`${n}/api/v1/forks`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(R)});if(!x.ok){let H=await x.json().catch(()=>({}));throw new Error(H.error||`API error: ${x.status}`)}c=await x.json();}_(c);let I=h??c.slotId;I&&f(c,{targetKind:"slot",targetId:I});let D=new URLSearchParams({key:e});o?(D.set("previewSessionId",o.preview_session_id),D.set("previewForkId",c.id)):t&&D.set("userId",t),r&&D.set("userHash",r);let N=new EventSource(`${n}/api/v1/forks/${c.id}/events?${D.toString()}`);g.current=N,N.onmessage=R=>{try{let x=JSON.parse(R.data);if(w(c.id,x),b(H=>[...H,x]),x.type==="complete"){let H=x.data,Z={...c,status:"complete",bundleUrl:H.bundleUrl,summary:H.summary,completedAt:new Date().toISOString()};_(Z),p("complete"),h&&H.bundleUrl&&i(h,Z),N.close();}else if(x.type==="error"){let H=x.data;O(H.error||"Unknown error"),p("error"),N.close();}}catch{}},N.onerror=()=>{let R={Authorization:`Bearer ${e}`,...re()};!o&&t&&(R["X-Fork-User-Id"]=t),!o&&r&&(R["X-Fork-User-Hash"]=r),fetch(`${n}/api/v1/forks/${c.id}`,{headers:R}).then(x=>x.json()).then(x=>{_(x),x.status==="complete"?(p("complete"),h&&x.bundleUrl&&i(h,x)):x.status==="error"&&(O(x.error||"Fork generation failed"),p("error"));}).catch(()=>{O("Connection lost"),p("error");}),N.close();};}catch(c){O(c.message),p("error");}},[e,n,o,w,i,f,r,t]),U=ir.useCallback(async k=>{try{let h={Authorization:`Bearer ${e}`,...re()};!o&&t&&(h["X-Fork-User-Id"]=t),!o&&r&&(h["X-Fork-User-Hash"]=r);let E=await fetch(`${n}/api/v1/forks/${k}`,{headers:h});if(!E.ok)return;let m=await E.json();if(m.slotId&&f(m,{targetKind:"slot",targetId:m.slotId}),m.status==="complete"){p("complete"),_(m),O(null),b([]);return}if(m.status==="error"){p("error"),_(m),O(m.error||"Fork generation failed"),b([]);return}if(m.status!=="pending"&&m.status!=="running"&&m.status!=="building")return;p("running"),_(m),O(null),b([]);let c=new URLSearchParams({key:e});o?(c.set("previewSessionId",o.preview_session_id),c.set("previewForkId",m.id)):t&&c.set("userId",t),r&&c.set("userHash",r);let I=new EventSource(`${n}/api/v1/forks/${m.id}/events?${c.toString()}`);g.current&&g.current.close(),g.current=I;let D=m.slotId;I.onmessage=N=>{try{let R=JSON.parse(N.data);if(w(m.id,R),b(x=>[...x,R]),R.type==="complete"){let x=R.data,H={...m,status:"complete",bundleUrl:x.bundleUrl,summary:x.summary,completedAt:new Date().toISOString()};_(H),p("complete"),D&&x.bundleUrl&&i(D,H),I.close();}else if(R.type==="error"){let x=R.data;O(x.error||"Unknown error"),p("error"),I.close();}}catch{}},I.onerror=()=>{I.close();};}catch{}},[e,n,o,w,i,f,r,t]),S=ir.useCallback(async k=>{try{let h={userId:t,slotId:k};r&&(h.userHash=r);let E=await fetch(`${n}/api/v1/forks/undo`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify(h)});if(!E.ok){let c=await E.json().catch(()=>({}));throw new Error(c.error||`API error: ${E.status}`)}let m=await E.json();return l(k),m.removed?(s(k),_(null),p("prompting")):m.fork&&(i(k,m.fork),_(m.fork)),m}catch(h){throw O(h.message),h}},[e,t,r,n,s,i]);return {state:y,fork:v,events:C,error:A,open:P,close:L,startFork:B,undoFork:S,adoptRunningFork:U}}function kn(){let{state:e,fork:t,events:r,error:n,open:o,close:i,startFork:s,undoFork:l,adoptRunningFork:f}=yr(),[w,y]=ir.useState(false),p=ir.useCallback(()=>{y(true),o();},[o]),v=ir.useCallback(()=>{y(false),i();},[i]),_=ir.useCallback(async C=>{y(true),await f(C);},[f]);return {state:e,fork:t,events:r,error:n,isOpen:w,open:p,close:v,submit:s,undo:l,adoptRunningFork:_}}var ss=new Set(["pending","running","building"]);function wr(e){let t=hn(e),r=kn(),n=yn(t.type==="boundary"?t.id:""),{baseUrl:o,apiKey:i,userId:s,userHash:l,appId:f,activitySummary:w,forkActivities:y,markForkActivitySeen:p}=ye(),v=t.type==="slot"?r:n,_=t.type==="slot"?"slot":"boundary",C=t.id,b=t.title,A=t.type==="slot"?"slot":"module",O=y.find(U=>U.targetKind===A&&U.targetId===t.id&&ss.has(U.status)),g=y.find(U=>U.targetKind===A&&U.targetId===t.id&&U.status==="complete"&&U.unread),P=ir.useCallback(()=>{p();let U=O??g;if(U){v.adoptRunningFork(U.id);return}v.open();},[v,p,O,g]),L=ir.useCallback((U,S,k,h)=>t.type==="slot"?r.submit(U,S??t.id,k,h):n.submit(U,k,h),[n,r,t]),B=ir.useCallback(U=>t.type==="slot"?r.undo(U??t.id):n.undo(),[n,r,t]);return {...v,open:P,target:t,targetId:C,targetLabel:b,historyMode:_,submit:L,undo:B,buttonProps:{onClick:P,hasNotification:w.unreadCompletedCount>0,activity:w},panelProps:{state:v.state,fork:v.fork,events:v.events,error:v.error,...t.type==="slot"?{slotId:C,targetLabel:b,historyMode:_}:{targetId:C,targetLabel:b,historyMode:_},onSubmit:L,onUndo:B,onClose:v.close,baseUrl:o,apiKey:i,userId:s,userHash:l,appId:f}}}function wt(e){let{embedded:t,completeVariant:r}=e,n=wr(e);return t?Ln.jsx(zt,{...n.panelProps,embedded:true,completeVariant:r}):n.isOpen?Ln.jsx(zt,{...n.panelProps,completeVariant:r}):Ln.jsx(ur,{...n.buttonProps})}function is({boundaryId:e,title:t}){return Ln.jsx(wt,{boundaryId:e,title:t})}function Sr(e){let t=Array.from(e.children).filter(n=>n instanceof HTMLElement);return t.length===1?t[0]:getComputedStyle(e).display==="contents"?null:e}function bn(e){let t=e.getBoundingClientRect(),r=e.cloneNode(true);r.setAttribute("data-fork-clone-overlay","true"),r.style.position="fixed",r.style.top=`${t.top}px`,r.style.left=`${t.left}px`,r.style.width=`${t.width}px`,r.style.height=`${t.height}px`,r.style.flex="none",r.style.minHeight="auto",r.style.zIndex="9998",r.style.pointerEvents="none",r.style.overflow="hidden";let n=getComputedStyle(e).backgroundColor;r.style.backgroundColor=n&&n!=="rgba(0, 0, 0, 0)"&&n!=="transparent"?n:getComputedStyle(document.body).backgroundColor||"#ffffff",document.body.appendChild(r);let o=e.querySelectorAll("*"),i=r.querySelectorAll("*");for(let s=0;s<o.length;s+=1)o[s].scrollTop!==0&&(i[s].scrollTop=o[s].scrollTop),o[s].scrollLeft!==0&&(i[s].scrollLeft=o[s].scrollLeft);return r}function Fr(e){let t=[],r=e.querySelectorAll("*");for(let n of r){if(!(n instanceof HTMLElement))continue;let o=n.getBoundingClientRect();if(o.width<10||o.height<10||["SCRIPT","STYLE","META","LINK"].includes(n.tagName))continue;let i=getComputedStyle(n),s=parseFloat(i.borderTopLeftRadius)||0;t.push({tag:n.tagName,className:n.className||"",text:(n.textContent||"").slice(0,50).trim(),rect:o,borderRadius:s});}return t}function wn(e,t){let r=[];for(let n of t)if(!(e.find(s=>s.tag===n.tag&&s.className===n.className&&Math.abs(s.rect.top-n.rect.top)<20&&Math.abs(s.rect.left-n.rect.left)<20)||r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom))){for(let s=r.length-1;s>=0;s-=1){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function vn(e,t){let r=[];for(let n of e)if(!(t.find(s=>s.tag===n.tag&&s.className===n.className&&Math.abs(s.rect.top-n.rect.top)<20&&Math.abs(s.rect.left-n.rect.left)<20)||r.some(s=>n.rect.top>=s.rect.top&&n.rect.left>=s.rect.left&&n.rect.right<=s.rect.right&&n.rect.bottom<=s.rect.bottom))){for(let s=r.length-1;s>=0;s-=1){let l=r[s];l.rect.top>=n.rect.top&&l.rect.left>=n.rect.left&&l.rect.right<=n.rect.right&&l.rect.bottom<=n.rect.bottom&&r.splice(s,1);}r.push({rect:n.rect,borderRadius:n.borderRadius});}return r}function Sn(e,t,r,n,o){let i=Math.max(0,Math.min(o,r/2,n/2));return i===0?`M ${e} ${t} L ${e+r} ${t} L ${e+r} ${t+n} L ${e} ${t+n} Z`:[`M ${e+i} ${t}`,`L ${e+r-i} ${t}`,`A ${i} ${i} 0 0 1 ${e+r} ${t+i}`,`L ${e+r} ${t+n-i}`,`A ${i} ${i} 0 0 1 ${e+r-i} ${t+n}`,`L ${e+i} ${t+n}`,`A ${i} ${i} 0 0 1 ${e} ${t+n-i}`,`L ${e} ${t+i}`,`A ${i} ${i} 0 0 1 ${e+i} ${t}`,"Z"].join(" ")}function xr(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-highlights","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs");n.appendChild(o);let i=[];for(let y=0;y<e.length;y+=1){let{rect:p,borderRadius:v}=e[y],_=p.left-.5,C=p.top-.5,b=p.width+1,A=p.height+1,O=Math.min(v+.5,b/2,A/2),g=Sn(_,C,b,A,O),P=`__fork-glow-${y}`,L=document.createElementNS(t,"filter");L.setAttribute("id",P),L.setAttribute("x","-100%"),L.setAttribute("y","-100%"),L.setAttribute("width","300%"),L.setAttribute("height","300%");let B=document.createElementNS(t,"feGaussianBlur");B.setAttribute("in","SourceGraphic"),B.setAttribute("stdDeviation","8"),L.appendChild(B),o.appendChild(L);let U=`__fork-mask-${y}`,S=document.createElementNS(t,"mask");S.setAttribute("id",U),S.setAttribute("maskUnits","userSpaceOnUse"),S.setAttribute("x",String(_-200)),S.setAttribute("y",String(C-200)),S.setAttribute("width",String(b+400)),S.setAttribute("height",String(A+400));let k=document.createElementNS(t,"rect");k.setAttribute("x",String(_-200)),k.setAttribute("y",String(C-200)),k.setAttribute("width",String(b+400)),k.setAttribute("height",String(A+400)),k.setAttribute("fill","white"),S.appendChild(k);let h=document.createElementNS(t,"path");h.setAttribute("d",g),h.setAttribute("fill","black"),S.appendChild(h),o.appendChild(S);let E=document.createElementNS(t,"g");E.setAttribute("mask",`url(#${U})`),E.setAttribute("opacity","0");let m=document.createElementNS(t,"g");m.setAttribute("filter",`url(#${P})`);let c=document.createElementNS(t,"path");c.setAttribute("d",g),c.setAttribute("fill","none"),c.setAttribute("stroke","rgba(150, 185, 220, 0.6)"),c.setAttribute("stroke-width","6"),c.setAttribute("stroke-linecap","round"),m.appendChild(c),E.appendChild(m),n.appendChild(E);let I=document.createElementNS(t,"path");I.setAttribute("d",g),I.setAttribute("fill","none"),I.setAttribute("stroke","rgba(150, 185, 220, 0.35)"),I.setAttribute("stroke-width","2"),I.setAttribute("stroke-linecap","round"),I.setAttribute("opacity","0"),n.appendChild(I),i.push(c,I),c.__group=E;}r.appendChild(n),document.body.appendChild(r);let s=[];for(let y=0;y<i.length;y+=2){let p=i[y],v=i[y+1],_=p.__group;if(!_)continue;let C=v.getTotalLength(),b=p.getTotalLength();if(C<=0)continue;let A=C*.35;v.setAttribute("stroke-dasharray",`${A} ${C-A}`),v.setAttribute("stroke-dashoffset","0"),s.push(v.animate([{strokeDashoffset:0,opacity:0,offset:0},{strokeDashoffset:-0.2*C,opacity:.92,offset:.06},{strokeDashoffset:-2*C,opacity:.92,offset:.92},{strokeDashoffset:-2.25*C,opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));let O=b*.35;p.setAttribute("stroke-dasharray",`${O} ${b-O}`),p.setAttribute("stroke-dashoffset","0"),s.push(p.animate([{strokeDashoffset:0,offset:0},{strokeDashoffset:-0.2*b,offset:.06},{strokeDashoffset:-2*b,offset:.92},{strokeDashoffset:-2.25*b,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"})),s.push(_.animate([{opacity:0,offset:0},{opacity:.92,offset:.06},{opacity:.92,offset:.92},{opacity:0,offset:1}],{duration:14e3,easing:"ease-in-out",fill:"forwards"}));}let l=false,f=()=>{if(l)return;l=true,clearTimeout(w);for(let p of s)try{p.cancel();}catch{}let y=r.animate([{opacity:1},{opacity:0}],{duration:400,fill:"forwards"});y.onfinish=()=>r.remove(),window.removeEventListener("click",f);},w=setTimeout(f,14500);return setTimeout(()=>{l||window.addEventListener("click",f);},500),f}function Fn(e){let t="http://www.w3.org/2000/svg",r=document.createElement("div");r.setAttribute("data-fork-removed","true"),r.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;";let n=document.createElementNS(t,"svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.style.cssText="position:absolute;top:0;left:0;overflow:visible;";let o=document.createElementNS(t,"defs"),i=document.createElementNS(t,"filter");i.setAttribute("id","__fork-removed-shadow"),i.setAttribute("x","-10%"),i.setAttribute("y","-10%"),i.setAttribute("width","120%"),i.setAttribute("height","120%");let s=document.createElementNS(t,"feDropShadow");s.setAttribute("dx","0"),s.setAttribute("dy","1"),s.setAttribute("stdDeviation","2"),s.setAttribute("flood-color","rgba(0,0,0,0.15)"),i.appendChild(s),o.appendChild(i),n.appendChild(o);for(let{rect:l,borderRadius:f}of e){let w=document.createElementNS(t,"path");w.setAttribute("d",Sn(l.left,l.top,l.width,l.height,f)),w.setAttribute("fill","none"),w.setAttribute("stroke","rgba(120, 125, 135, 0.6)"),w.setAttribute("stroke-width","1.5"),w.setAttribute("stroke-dasharray","8 4"),w.setAttribute("stroke-linecap","round"),w.setAttribute("filter","url(#__fork-removed-shadow)"),w.setAttribute("opacity","0"),n.appendChild(w),w.animate([{opacity:0,offset:0},{opacity:.6,offset:.08},{opacity:.05,offset:.45},{opacity:.6,offset:.85},{opacity:.05,offset:1}],{duration:5e3,easing:"ease-in-out",fill:"forwards"});}return r.appendChild(n),document.body.appendChild(r),r}var St=new Map,Ft=new Map,Ar=new Map;function cs(e){for(let t of e)Ft.set(t,(Ft.get(t)??0)+1);}function ds(e){if(!(typeof document>"u"))for(let t of e){let r=(Ft.get(t)??0)-1;if(r>0){Ft.set(t,r);continue}Ft.delete(t),St.delete(t);let n=document.querySelector(`link[data-fork-override-href="${CSS.escape(t)}"]`);n&&n.remove();}}function us(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown module override error")}function An(e,t){let r=(t?e[t]:void 0)??e.default;if(typeof r!="function"){let n=t||"default";throw new Error(`Fork boundary module is missing a React component export: ${n}`)}return r}function fs(e){if(!e||typeof document>"u")return Promise.resolve();let t=St.get(e);if(t)return t;let r=document.querySelector(`link[data-fork-override-href="${e}"]`);if(r instanceof HTMLLinkElement){let o=r.sheet?Promise.resolve():new Promise((i,s)=>{let l=()=>{r.removeEventListener("load",l),r.removeEventListener("error",f),i();},f=()=>{r.removeEventListener("load",l),r.removeEventListener("error",f),s(new Error(`Failed to load boundary stylesheet: ${e}`));};r.addEventListener("load",l,{once:true}),r.addEventListener("error",f,{once:true});});return St.set(e,o),o}let n=new Promise((o,i)=>{let s=document.createElement("link");s.rel="stylesheet",s.href=e,s.setAttribute("data-fork-override-href",e),s.onload=()=>o(),s.onerror=()=>{s.remove(),i(new Error(`Failed to load boundary stylesheet: ${e}`));},document.head.appendChild(s);}).catch(o=>{throw St.delete(e),o});return St.set(e,n),n}function ps(e){let t=Ar.get(e);if(t)return t;let r=import(e).catch(n=>{throw Ar.delete(e),n});return Ar.set(e,r),r}async function ms(e,t,r){if(e)try{await Promise.all(e.cssUrls.map(i=>fs(i)));let o=await ps(e.moduleUrl);return An(o,r)}catch(o){console.error(`[Fork] Failed to load override for boundary "${e.boundaryId}", falling back to original module.`,o);}let n=await t();return An(n,r)}function gs(e){function t(r){let{appId:n,moduleOverridesEnabled:o,moduleManifestReady:i,moduleManifestVersion:s,registerBoundary:l,getBoundaryOverride:f,consumeBoundaryAnimation:w}=ye(),[y,p]=ir.useState(null),[v,_]=ir.useState(null),C=ir.useRef(null),b=ir.useRef(null),A=ir.useRef(null),O=ir.useRef(false),g=ir.useRef(null),P=ir.useRef(null),L=f(e.id),B=L?`override:${L.id}`:"original",U=e.editorMetadata?JSON.stringify(e.editorMetadata):void 0;if(ir.useEffect(()=>()=>{P.current&&(clearTimeout(P.current),P.current=null),g.current&&(g.current.remove(),g.current=null);},[]),ir.useEffect(()=>{l({id:e.id,exportName:e.exportName,editorMetadata:e.editorMetadata});},[n,l,e.id,e.exportName,U]),ir.useEffect(()=>{let S=L?.cssUrls??[];if(S.length!==0)return cs(S),()=>ds(S)},[L?.cssUrls.join("|")]),ir.useEffect(()=>{if(o&&!i&&!y||b.current===B&&y)return;let S=false;return _(null),ms(L,e.original,e.exportName).then(k=>{if(!S){if(L?.id&&w(e.id,L.id)&&C.current){let h=Sr(C.current);if(h){let E=Fr(h);E.length>0&&(A.current=E,O.current=true,P.current&&(clearTimeout(P.current),P.current=null),g.current&&g.current.remove(),g.current=bn(h));}}b.current=B,ir.startTransition(()=>{p(()=>k);});}}).catch(k=>{S||_(us(k));}),()=>{S=true;}},[w,B,o,i,s,L?.id,L?.moduleUrl,L?.integrity,L?.cssUrls.join("|"),e.exportName,e.original,y]),ir.useEffect(()=>{if(!O.current||!y||!C.current)return;let S=false;return requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(S||!C.current)return;let k=A.current,h=Sr(C.current);if(A.current=null,O.current=false,!k||!h){g.current&&(g.current.remove(),g.current=null);return}let E=Fr(h),m=wn(k,E),c=vn(k,E),I=g.current;if(c.length>0&&I){let D=Fn(c);P.current=setTimeout(()=>{P.current=null;let N=400;I.animate([{opacity:1},{opacity:0}],{duration:N,fill:"forwards"}),D.animate([{opacity:1},{opacity:0}],{duration:N,fill:"forwards"}),setTimeout(()=>{I.remove(),D.remove(),g.current===I&&(g.current=null),m.length>0&&xr(m);},N);},3500);}else I&&(I.remove(),g.current===I&&(g.current=null)),m.length>0&&xr(m);});}),()=>{S=true;}},[y]),v)throw v;return y?Ln.jsx("div",{ref:C,style:{display:"contents"},children:Ln.jsx(y,{...r})}):Ln.jsx(Ln.Fragment,{children:e.loading??null})}return t.displayName=`ForkBoundary(${e.id})`,t}function ys({slotId:e,title:t,slotLabel:r}){return Ln.jsx(wt,{slotId:e,title:t,slotLabel:r})}
|
|
60
|
+
exports.ForkBoundaryUI=is;exports.ForkButton=ur;exports.ForkChatInterface=wt;exports.ForkPanel=zt;exports.ForkProvider=so;exports.ForkSlot=bo;exports.ForkUI=ys;exports.clearCachedManifest=Wn;exports.forkable=gs;exports.loadManifest=Lt;exports.manifestDiffers=Vn;exports.readCachedManifest=zn;exports.registerForkShared=qt;exports.useBoundaryFork=gr;exports.useFork=yr;exports.useForkChatPanel=wr;exports.usePreviewSession=Tt;exports.writeCachedManifest=Kn;
|