grab 0.1.0 → 0.1.1

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.
@@ -1,4 +1,4 @@
1
- import {u,v,P,O,R,c,g,f,j,d,l,Ca as Ca$1,xa as xa$1,h,t,n,s,F,T,S,U,ya as ya$1,za,ta as ta$1,N,wa as wa$1,V,Q,ra as ra$1,ua as ua$1,E,A,M,L,e,q,r,Ba,Da,oa as oa$1,pa as pa$1,W,sa as sa$1,qa,k,ha as ha$1,_,ea as ea$1,y,B,o,D,Ea as Ea$1,Aa,Ha,Fa,Ga,x,va as va$1,a,i,ja,Z,aa as aa$1,$,ca as ca$1,da as da$1,X,b,m,la as la$1,ka,ga as ga$1,fa as fa$1,Y,ma as ma$1,ba as ba$1,C,na as na$1,ia as ia$1,G,J,K,H,I}from'./chunk-BJ4BJEGF.js';/**
1
+ import {u,v,P,O,R,c,g,f,j,d,l,Ca as Ca$1,xa as xa$1,h,t,n,s,F,T,S,U,ya as ya$1,za,ta as ta$1,N,wa as wa$1,V,Q,ra as ra$1,ua as ua$1,E,A,M,L,e,q,r,Ba,Da,oa as oa$1,pa as pa$1,W,sa as sa$1,qa,k,ha as ha$1,_,ea as ea$1,y,B,o,D,Ea as Ea$1,Aa,Ha,Fa,Ga,x,va as va$1,a,i,ja,Z,aa as aa$1,$,ca as ca$1,da as da$1,X,b,m,la as la$1,ka,ga as ga$1,fa as fa$1,Y,ma as ma$1,ba as ba$1,C,na as na$1,ia as ia$1,G,J,K,H,I}from'./chunk-XGWXDYKC.js';/**
2
2
  * @license MIT
3
3
  *
4
4
  * Copyright (c) 2025 Aiden Bai
@@ -49,7 +49,7 @@ ${e}`)]})}},jr=(e,t)=>{let n=t?.name??"div",{plainText:r,htmlContent:a,lexicalDa
49
49
 
50
50
  `);}if(s.trim()){let f=await t.transformCopyContent(s,n);l=r?`${r}
51
51
 
52
- ${f}`:f,a=jr(l,{name:e.componentName});}}catch(s){let f=s instanceof Error?s:new Error(String(s));t.onCopyError(f);}return a&&t.onCopySuccess(n,l),t.onAfterCopy(n,a),a};var _n=e=>{let t=e.tagName.toUpperCase();return t==="HTML"||t==="BODY"};var cu=(e,t)=>{let n=Math.max(e.left,t.left),r=Math.max(e.top,t.top),a=Math.min(e.right,t.right),l=Math.min(e.bottom,t.bottom),s=Math.max(0,a-n),f=Math.max(0,l-r);return s*f},uu=(e,t)=>e.left<t.right&&e.right>t.left&&e.top<t.bottom&&e.bottom>t.top,sn=(e,t,n)=>Math.min(n,Math.max(t,e)),du=e=>e.sort((t,n)=>{if(t===n)return 0;let r=t.compareDocumentPosition(n);return r&Node.DOCUMENT_POSITION_FOLLOWING?-1:r&Node.DOCUMENT_POSITION_PRECEDING?1:0}),fu=e=>{if(e.width<=0||e.height<=0)return [];let t=window.innerWidth,n=window.innerHeight,r=e.x,a=e.y,l=e.x+e.width,s=e.y+e.height,f=r+e.width/2,i=a+e.height/2,u=sn(Math.ceil(e.width/ja),ka,la$1),g=sn(Math.ceil(e.height/ja),ka,la$1),T=u*g,N=T>ma$1?Math.sqrt(ma$1/T):1,C=sn(Math.floor(u*N),ka,la$1),z=sn(Math.floor(g*N),ka,la$1),L=new Set,b=[],h=(F,Y)=>{let fe=sn(Math.round(F),0,t-1),re=sn(Math.round(Y),0,n-1),Re=`${fe}:${re}`;L.has(Re)||(L.add(Re),b.push({x:fe,y:re}));};h(r+na$1,a+na$1),h(l-na$1,a+na$1),h(r+na$1,s-na$1),h(l-na$1,s-na$1),h(f,a+na$1),h(f,s-na$1),h(r+na$1,i),h(l-na$1,i),h(f,i);for(let F=0;F<C;F+=1){let Y=r+(F+.5)/C*e.width;for(let fe=0;fe<z;fe+=1){let re=a+(fe+.5)/z*e.height;h(Y,re);}}return b},mu=(e,t,n)=>{let r={left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height},a=new Set,l=fu(e);yo();try{for(let f of l){let i=document.elementsFromPoint(f.x,f.y);for(let u of i)a.add(u);}}finally{So();}let s=[];for(let f of a){if(!n){let g=(f.tagName||"").toUpperCase();if(g==="HTML"||g==="BODY")continue}if(!t(f))continue;let i=f.getBoundingClientRect();if(i.width<=0||i.height<=0)continue;let u={left:i.left,top:i.top,right:i.left+i.width,bottom:i.top+i.height};if(n){let g=cu(r,u),T=i.width*i.height;T>0&&g/T>=ia$1&&s.push(f);}else uu(u,r)&&s.push(f);}return du(s)},pu=e=>e.filter(t=>!e.some(n=>n!==t&&n.contains(t))),Dn=(e,t,n=true)=>{let r=mu(e,t,n);return pu(r)};var Ao=e=>({x:e.pageX-window.scrollX,y:e.pageY-window.scrollY,width:e.width,height:e.height,borderRadius:"0px",transform:"none"}),Gr=e=>({pageX:e.x+window.scrollX,pageY:e.y+window.scrollY,width:e.width,height:e.height}),Nn=e=>({...e,borderRadius:"0px",transform:"none"});var Ct=e=>(e.tagName||"").toLowerCase();var In=e=>({x:e.x+e.width/2,y:e.y+e.height/2});var gu=new Set(["c","C","\u0441","\u0421","\u023C","\u023B","\u2184","\u2183","\u1D04","\u1D9C","\u2C7C","\u217D","\u216D","\xE7","\xC7","\u0107","\u0106","\u010D","\u010C","\u0109","\u0108","\u010B","\u010A"]),Po=(e,t)=>t==="KeyC"?true:!e||e.length!==1?false:gu.has(e);var aa=(e,t)=>{let n=e.toLowerCase();return t==="Space"?n==="space"||n===" ":t.startsWith("Key")?t.slice(3).toLowerCase()===n:t.startsWith("Digit")?t.slice(5)===n:false};var hu={meta:"metaKey",cmd:"metaKey",command:"metaKey",win:"metaKey",windows:"metaKey",ctrl:"ctrlKey",control:"ctrlKey",shift:"shiftKey",alt:"altKey",option:"altKey",opt:"altKey"},la=e=>{let t=e.split("+").map(r=>r.trim().toLowerCase()),n={metaKey:false,ctrlKey:false,shiftKey:false,altKey:false,key:null};for(let r of t){let a=hu[r];a?n[a]=true:n.key=r;}return n},Mo=e=>{if(typeof e=="function")return e;let t=la(e),n=t.key;return r=>{if(n===null){let f=t.metaKey?r.metaKey||r.key==="Meta":true,i=t.ctrlKey?r.ctrlKey||r.key==="Control":true,u=t.shiftKey?r.shiftKey||r.key==="Shift":true,g=t.altKey?r.altKey||r.key==="Alt":true,T=f&&i&&u&&g,N=[t.metaKey,t.ctrlKey,t.shiftKey,t.altKey].filter(Boolean).length,C=[r.metaKey||r.key==="Meta",r.ctrlKey||r.key==="Control",r.shiftKey||r.key==="Shift",r.altKey||r.key==="Alt"].filter(Boolean).length;return T&&C>=N}let a=r.key?.toLowerCase()===n||aa(n,r.code),s=t.metaKey||t.ctrlKey||t.shiftKey||t.altKey?(t.metaKey?r.metaKey:true)&&(t.ctrlKey?r.ctrlKey:true)&&(t.shiftKey?r.shiftKey:true)&&(t.altKey?r.altKey:true):!r.metaKey&&!r.ctrlKey&&!r.shiftKey&&!r.altKey;return a&&s}},ca=e=>!e||typeof e=="function"?{metaKey:Ca$1(),ctrlKey:!Ca$1(),shiftKey:false,altKey:false,key:null}:la(e);var Oo=(e,t)=>{if(t.activationKey)return Mo(t.activationKey)(e);let r=(Ca$1()?e.metaKey:e.ctrlKey)&&!e.shiftKey&&!e.altKey;return !!(e.key&&r&&Po(e.key,e.code))};var xt=(e,t)=>{try{return e.composedPath().some(n=>n instanceof HTMLElement&&n.hasAttribute(t))}catch{return false}};var an=e=>{if(e.length===0)return {x:0,y:0,width:0,height:0};if(e.length===1)return e[0];let t=1/0,n=1/0,r=-1/0,a=-1/0;for(let l of e)t=Math.min(t,l.x),n=Math.min(n,l.y),r=Math.max(r,l.x+l.width),a=Math.max(a,l.y+l.height);return {x:t,y:n,width:r-t,height:a-n}},bu=(e,t)=>new Promise((n,r)=>{let a=document.createElement("canvas"),l=a.getContext("2d");if(!l){r(new Error("Failed to get canvas context"));return}let s=e.videoWidth/window.innerWidth,f=e.videoHeight/window.innerHeight,i={x:t.x*s,y:t.y*f,width:t.width*s,height:t.height*f};a.width=i.width,a.height=i.height,l.drawImage(e,i.x,i.y,i.width,i.height,0,0,i.width,i.height),a.toBlob(u=>{u?n(u):r(new Error("Failed to create image blob"));},"image/png",1);}),Ro=async e=>{let t=await navigator.mediaDevices.getDisplayMedia({video:{displaySurface:"browser"},preferCurrentTab:true}),n=document.createElement("video");n.srcObject=t,n.autoplay=true,n.playsInline=true,await new Promise((r,a)=>{let l=setTimeout(()=>{a(new Error("Video metadata loading timed out"));},R);n.onerror=()=>{clearTimeout(l),a(new Error("Video failed to load"));},n.onloadedmetadata=()=>{clearTimeout(l),n.play(),r();};}),await new Promise((r,a)=>{let l=Date.now(),s=()=>{if(n.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA){r();return}if(Date.now()-l>=T){a(new Error("Video frame not ready within timeout"));return}setTimeout(s,S);};s();});try{return await bu(n,e)}finally{t.getTracks().forEach(r=>r.stop()),n.srcObject=null;}},_o=async e=>{try{return await navigator.clipboard.write([new ClipboardItem({[e.type]:e})]),!0}catch{return false}};var Do=()=>{if(typeof window>"u"||typeof navigator>"u")return false;let e=typeof navigator.mediaDevices?.getDisplayMedia=="function",t=typeof navigator.clipboard?.write=="function"&&typeof ClipboardItem<"u";return e&&t};var No=e=>new Promise(t=>setTimeout(t,e));var $t={enabled:true,hue:0,selectionBox:{enabled:true},dragBox:{enabled:true},grabbedBoxes:{enabled:true},elementLabel:{enabled:true},crosshair:{enabled:true},toolbar:{enabled:true}},yu=(e,t)=>({enabled:t.enabled??e.enabled,hue:t.hue??e.hue,selectionBox:{enabled:t.selectionBox?.enabled??e.selectionBox.enabled},dragBox:{enabled:t.dragBox?.enabled??e.dragBox.enabled},grabbedBoxes:{enabled:t.grabbedBoxes?.enabled??e.grabbedBoxes.enabled},elementLabel:{enabled:t.elementLabel?.enabled??e.elementLabel.enabled},crosshair:{enabled:t.crosshair?.enabled??e.crosshair.enabled},toolbar:{enabled:t.toolbar?.enabled??e.toolbar.enabled}}),Io=yu;var ua={activationMode:"toggle",keyHoldDuration:75,allowActivationInsideInput:true,maxContextLines:3,activationKey:void 0,getContent:void 0,freezeReactUpdates:true},da=(e={})=>{let t=new Map,n={},[r,a]=Zn({theme:$t,options:{...ua,...e},actions:[]}),l=()=>{let b=$t,h={...ua,...e},F=[];for(let{config:Y}of t.values())Y.theme&&(b=Io(b,Y.theme)),Y.options&&(h={...h,...Y.options}),Y.actions&&F.push(...Y.actions);h={...h,...n},a("theme",b),a("options",h),a("actions",F);},s=b=>{for(let[h,F]of Object.entries(b))F!==void 0&&(n[h]=F,a("options",h,F));},f=(b,h)=>{t.has(b.name)&&i(b.name);let F;return b.setup?F=b.setup(h)??{}:F={},b.theme&&(F.theme=F.theme?Io(Io($t,b.theme),F.theme):b.theme),b.actions&&(F.actions=[...b.actions,...F.actions??[]]),b.hooks&&(F.hooks=F.hooks?{...b.hooks,...F.hooks}:b.hooks),b.options&&(F.options=F.options?{...b.options,...F.options}:b.options),t.set(b.name,{plugin:b,config:F}),l(),F},i=b=>{let h=t.get(b);h&&(h.config.cleanup&&h.config.cleanup(),t.delete(b),l());},u=()=>Array.from(t.keys()),g=(b,...h)=>{for(let{config:F}of t.values()){let Y=F.hooks?.[b];Y&&Y(...h);}},T=(b,...h)=>{let F=false;for(let{config:Y}of t.values()){let fe=Y.hooks?.[b];fe&&fe(...h)===true&&(F=true);}return F},N=async(b,...h)=>{for(let{config:F}of t.values()){let Y=F.hooks?.[b];Y&&await Y(...h);}},C=async(b,h,...F)=>{let Y=h;for(let{config:fe}of t.values()){let re=fe.hooks?.[b];re&&(Y=await re(Y,...F));}return Y},z=(b,h,...F)=>{let Y=h;for(let{config:fe}of t.values()){let re=fe.hooks?.[b];re&&(Y=re(Y,...F));}return Y};return {register:f,unregister:i,getPluginNames:u,setOptions:s,store:r,hooks:{onActivate:()=>g("onActivate"),onDeactivate:()=>g("onDeactivate"),onElementHover:b=>g("onElementHover",b),onElementSelect:b=>g("onElementSelect",b),onDragStart:(b,h)=>g("onDragStart",b,h),onDragEnd:(b,h)=>g("onDragEnd",b,h),onBeforeCopy:async b=>N("onBeforeCopy",b),transformCopyContent:async(b,h)=>C("transformCopyContent",b,h),onAfterCopy:(b,h)=>g("onAfterCopy",b,h),onCopySuccess:(b,h)=>g("onCopySuccess",b,h),onCopyError:b=>g("onCopyError",b),onStateChange:b=>g("onStateChange",b),onPromptModeChange:(b,h)=>g("onPromptModeChange",b,h),onSelectionBox:(b,h,F)=>g("onSelectionBox",b,h,F),onDragBox:(b,h)=>g("onDragBox",b,h),onGrabbedBox:(b,h)=>g("onGrabbedBox",b,h),onElementLabel:(b,h,F)=>g("onElementLabel",b,h,F),onCrosshair:(b,h)=>g("onCrosshair",b,h),onContextMenu:(b,h)=>g("onContextMenu",b,h),onOpenFile:(b,h)=>T("onOpenFile",b,h),transformHtmlContent:async(b,h)=>C("transformHtmlContent",b,h),transformScreenshot:async(b,h,F)=>C("transformScreenshot",b,h,F),transformAgentContext:async(b,h)=>C("transformAgentContext",b,h),transformActionContext:b=>z("transformActionContext",b),transformOpenFileUrl:(b,h,F)=>z("transformOpenFileUrl",b,h,F),transformSnippet:async(b,h)=>C("transformSnippet",b,h)}}};var Wr="react-grab:agent-sessions",Su=()=>`session-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,fa=(e,t,n,r,a)=>{let l=Date.now();return {id:Su(),context:e,lastStatus:"",isStreaming:true,createdAt:l,lastUpdatedAt:l,position:t,selectionBounds:n,tagName:r,componentName:a}},zt=new Map,ko=(e,t)=>{if(!t){zt.clear(),e.forEach((n,r)=>zt.set(r,n));return}try{let n=Object.fromEntries(e);t.setItem(Wr,JSON.stringify(n));}catch{zt.clear(),e.forEach((n,r)=>zt.set(r,n));}},Fo=(e,t)=>{let n=Lo(t);n.set(e.id,e),ko(n,t);},Lo=e=>{if(!e)return new Map(zt);try{let t=e.getItem(Wr);if(!t)return new Map;let n=JSON.parse(t);return new Map(Object.entries(n))}catch{return new Map}},Bo=e=>{if(!e){zt.clear();return}try{e.removeItem(Wr);}catch{zt.clear();}},Xr=(e,t)=>{let n=Lo(t);n.delete(e),ko(n,t);},Tt=(e,t,n)=>{let r={...e,...t,lastUpdatedAt:Date.now()};return Fo(r,n),r};var Yr=(e,t)=>{let[n,r]=d(new Map),[a,l]=d(false),[s,f]=d(false),i=new Map,u=new Map,g=new Map,T=[],N=[],C=e,z=p=>g.get(p)?.agent??C,L=p=>g.get(p)?.elements??[],b=p=>{let P=p??C,I=P?.provider?.canUndo?.()??false,A=P?.provider?.canRedo?.()??false;l(I),f(A);},h=p=>{C=p,b();},F=()=>C,Y=()=>Array.from(n().values()).some(p=>p.isStreaming),fe=async(p,P,I)=>{let A=I??C,D=A?.storage,R=false;try{for await(let K of P){let G=n().get(p.id);if(!G)break;let ce=Tt(G,{lastStatus:K},D);r(ve=>new Map(ve).set(p.id,ce)),A?.onStatus?.(K,ce);}let $=n().get(p.id);if($){let K=A?.provider?.getCompletionMessage?.(),j=Tt($,{isStreaming:!1,...K?{lastStatus:K}:{}},D);r(me=>new Map(me).set(p.id,j));let G=L(p.id),ce=await A?.onComplete?.(j,G),ve=N.findIndex(me=>me.session.id===p.id);if(ve!==-1&&N.splice(ve,1),N.push({session:j,elements:G,agent:A}),b(A),T.length=0,ce?.error){let me=Tt(j,{error:ce.error},D);r(te=>new Map(te).set(p.id,me));}}}catch(_){let K=n().get(p.id);if(_ instanceof Error&&_.name==="AbortError"){if(R=true,K){let j=L(p.id);A?.onAbort?.(K,j);}}else {let j=_ instanceof Error?_.message:"Unknown error";if(K){let G=Tt(K,{error:j,isStreaming:false},D);r(ce=>new Map(ce).set(p.id,G)),_ instanceof Error&&A?.onError?.(_,G);}}}finally{i.delete(p.id),R&&(g.delete(p.id),Xr(p.id,D),r(_=>{let $=new Map(_);return $.delete(p.id),$}));}},re=p=>{let{selectionBounds:P,tagName:I}=p,A=P[0];if(!A)return;let D=A.x+A.width/2,R=A.y+A.height/2,_=document.elementFromPoint(D,R);if(!(!_||I&&!I.includes(" ")&&_.tagName.toLowerCase()!==I))return _},Re=()=>{let p=C?.storage;if(!p)return;let P=Lo(p);if(P.size===0)return;let I=Date.now(),A=Array.from(P.values()).filter(R=>{if(R.isStreaming)return true;let _=R.lastUpdatedAt??R.createdAt;return I-_<1e4&&!!R.error});if(A.length===0){Bo(p);return}if(!C?.provider?.supportsResume||!C.provider.resume){Bo(p);return}let D=new Map(A.map(R=>[R.id,R]));r(D),ko(D,p);for(let R of A){let _=re(R);_&&C&&g.set(R.id,{elements:[_],agent:C});let $={...R,isStreaming:true,error:void 0,lastStatus:R.lastStatus||"Resuming...",position:R.position??{x:window.innerWidth/2,y:window.innerHeight/2}};r(G=>new Map(G).set(R.id,$)),C?.onResume?.($);let K=new AbortController;i.set(R.id,K);let j=C.provider.resume(R.id,K.signal,p);fe(R,j);}},qe=async p=>{let{elements:P,prompt:I,position:A,selectionBounds:D,sessionId:R,agent:_}=p,$=_??(R?z(R):C),K=$?.storage;if(!$?.provider||P.length===0)return;let j=P[0],G=R?n().get(R):void 0,ce=!!R,me={content:G?G.context.content:(await Rn(P,{maxLines:1/0})).filter(we=>we.trim()),prompt:I,options:$?.getOptions?.(),sessionId:ce?R:void 0},te;if(G)te=Tt(G,{context:me,isStreaming:true,lastStatus:"Thinking\u2026"},K);else {let we=P.length>1?`${P.length} elements`:(j.tagName||"").toLowerCase()||void 0,Pt=P.length>1?void 0:await rn(j)||void 0;te=fa(me,A,D,we,Pt),te.lastStatus="Thinking\u2026";}g.set(te.id,{elements:P,agent:$}),r(we=>new Map(we).set(te.id,te)),Fo(te,K),$.onStart?.(te,P);let le=new AbortController;i.set(te.id,le);let pe={...me,sessionId:R??te.id},De;try{De=t?.transformAgentContext?await t.transformAgentContext(pe,P):pe;}catch(we){let Pt=we instanceof Error?we.message:"Context transformation failed",Mt=Tt(te,{error:Pt,isStreaming:false},K);r(ln=>new Map(ln).set(te.id,Mt)),i.delete(te.id),we instanceof Error&&$.onError?.(we,Mt);return}let Ge=$.provider.send(De,le.signal);fe(te,Ge,$);},Ze=p=>{if(p){let P=i.get(p);P&&P.abort();}else i.forEach(P=>P.abort()),i.clear(),u.forEach(P=>clearTimeout(P)),u.clear(),g.clear(),N.length=0,T.length=0,r(new Map),Bo(C?.storage),b();},He=(p,P,I)=>{let D=n().get(p),R=P??z(p),_=I??L(p);if(D?.isFading)return;D&&_.length>0&&R?.onDismiss?.(D,_),r(j=>{let G=new Map(j),ce=G.get(p);return ce&&G.set(p,{...ce,isFading:true}),G});let $=u.get(p);$&&clearTimeout($);let K=setTimeout(()=>{u.delete(p),g.delete(p),Xr(p,R?.storage),r(j=>{let G=new Map(j);return G.delete(p),G});},150);u.set(p,K);};return {sessions:n,isProcessing:Y,canUndo:a,canRedo:s,session:{start:qe,abort:Ze,dismiss:He,retry:p=>{let I=n().get(p),A=z(p);if(!I||!A?.provider)return;let D=A.storage,R=L(p),_=Tt(I,{error:void 0,isStreaming:true,lastStatus:"Retrying\u2026"},D);r(G=>new Map(G).set(p,_)),Fo(_,D),R.length>0&&A.onStart?.(_,R);let $=new AbortController;i.set(p,$);let K={..._.context,sessionId:p},j=A.provider.send(K,$.signal);fe(_,j,A);},undo:p=>{let I=n().get(p),A=z(p),D=L(p);if(I){T.push({session:I,elements:D,agent:A});let R=N.findIndex(_=>_.session.id===p);R!==-1&&N.splice(R,1),A?.onUndo?.(I,D),A?.provider?.undo?.();}He(p,A,D),b(A);},getElement:p=>L(p)[0],getElements:p=>L(p),tryResume:Re,acknowledgeError:p=>{let A=n().get(p)?.context.prompt;return He(p),A}},history:{undo:()=>{let p=N.pop();if(!p)return;let{session:P,elements:I,agent:A}=p,D=A??C;T.push(p),D?.onUndo?.(P,I),D?.provider?.undo?.(),He(P.id,D,I),b(D);},redo:()=>{let p=T.pop();if(!p)return;let P=p.agent??C,{session:I,elements:A}=p;P?.provider?.redo?.();let D=A.filter(R=>document.contains(R));if(D.length===0){let R=re(I);R&&(D=[R]);}if(D.length>0&&P){N.push(p);let R=D.map($=>be($)),_={...I,selectionBounds:R};g.set(I.id,{elements:D,agent:P}),r($=>new Map($).set(I.id,_));}b(P);}},_internal:{updateBoundsOnViewportChange:()=>{let p=n();if(p.size===0)return;let P=new Map(p),I=false;for(let[A,D]of p){let R=L(A),_=R[0];if(_&&document.contains(_)){let $=R.filter(K=>document.contains(K)).map(K=>be(K));if($.length>0){let K=D.selectionBounds[0],j=$[0],G=D.position;if(K&&j){let ce=K.x+K.width/2,ve=K.width/2,me=D.position.x-ce,te=ve>0?me/ve:0,le=j.x+j.width/2,pe=j.width/2;G={...D.position,x:le+te*pe};}P.set(A,{...D,selectionBounds:$,position:G}),I=true;}}}I&&r(P);},setOptions:h,getOptions:F}}};var ma=(e,t)=>{let n=[],r=(u,g)=>{let T=t(u),N=Lr(T.x+T.width/2,T.y+T.height/2).filter(e),C=N.indexOf(u);return C===-1?null:N[C+g]??null},a=u=>{let g=r(u,1);return g&&n.push(u),g},l=u=>{if(n.length>0){let g=n.pop();if(document.contains(g))return g}return r(u,-1)},s=(u,g)=>{let T=z=>{let L=Array.from(z.children),b=g?L:L.reverse();for(let h of b)if(g){if(e(h))return h;let F=T(h);if(F)return F}else {let F=T(h);if(F)return F;if(e(h))return h}return null},N=z=>g?z.nextElementSibling:z.previousElementSibling,C=null;if(g&&(C=T(u)),!C){let z=u;for(;z;){let L=N(z);for(;L;){let h=T(L);if(h){C=h;break}if(e(L)){C=L;break}L=N(L);}if(C)break;let b=z.parentElement;if(!g&&b&&e(b)){C=b;break}z=b;}}return C};return {findNext:(u,g)=>{switch(u){case "ArrowUp":return a(g);case "ArrowDown":return l(g);case "ArrowRight":return s(g,true);case "ArrowLeft":return s(g,false);default:return null}},clearHistory:()=>{n=[];}}};var pa=e=>{let t=ca(e.activationKey);return {metaKey:t.metaKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey}},ga=()=>{let e=new WeakSet,t=Object.getOwnPropertyDescriptor(KeyboardEvent.prototype,"key"),n=false;if(t?.get&&!t.get.__reactGrabPatched){n=true;let a=t.get,l=function(){return e.has(this)?"":a.call(this)};l.__reactGrabPatched=true,Object.defineProperty(KeyboardEvent.prototype,"key",{get:l,configurable:true});}return {claimedEvents:e,originalKeyDescriptor:t,didPatch:n,restore:()=>{n&&t&&Object.defineProperty(KeyboardEvent.prototype,"key",t);}}};var qr=(e,t)=>({top:t<25,bottom:t>window.innerHeight-25,left:e<25,right:e>window.innerWidth-25}),ha=(e,t)=>{let n=null,r=()=>{if(!t()){l();return}let f=e(),i=qr(f.x,f.y);i.top&&window.scrollBy(0,-10),i.bottom&&window.scrollBy(0,10),i.left&&window.scrollBy(-10,0),i.right&&window.scrollBy(10,0),i.top||i.bottom||i.left||i.right?n=requestAnimationFrame(r):n=null;},a=()=>{r();},l=()=>{n!==null&&(cancelAnimationFrame(n),n=null);};return {start:a,stop:l,isActive:()=>n!==null}};var ba=()=>{let e=globalThis;return !!(e.chrome?.runtime?.id||e.browser?.runtime?.id)};var ya=()=>{try{let e="0.1.0-beta.13",t=`data:image/svg+xml;base64,${btoa(wa$1)}`;console.log(`%cReact Grab${e?` v${e}`:""}%c
52
+ ${f}`:f,a=jr(l,{name:e.componentName});}}catch(s){let f=s instanceof Error?s:new Error(String(s));t.onCopyError(f);}return a&&t.onCopySuccess(n,l),t.onAfterCopy(n,a),a};var _n=e=>{let t=e.tagName.toUpperCase();return t==="HTML"||t==="BODY"};var cu=(e,t)=>{let n=Math.max(e.left,t.left),r=Math.max(e.top,t.top),a=Math.min(e.right,t.right),l=Math.min(e.bottom,t.bottom),s=Math.max(0,a-n),f=Math.max(0,l-r);return s*f},uu=(e,t)=>e.left<t.right&&e.right>t.left&&e.top<t.bottom&&e.bottom>t.top,sn=(e,t,n)=>Math.min(n,Math.max(t,e)),du=e=>e.sort((t,n)=>{if(t===n)return 0;let r=t.compareDocumentPosition(n);return r&Node.DOCUMENT_POSITION_FOLLOWING?-1:r&Node.DOCUMENT_POSITION_PRECEDING?1:0}),fu=e=>{if(e.width<=0||e.height<=0)return [];let t=window.innerWidth,n=window.innerHeight,r=e.x,a=e.y,l=e.x+e.width,s=e.y+e.height,f=r+e.width/2,i=a+e.height/2,u=sn(Math.ceil(e.width/ja),ka,la$1),g=sn(Math.ceil(e.height/ja),ka,la$1),T=u*g,N=T>ma$1?Math.sqrt(ma$1/T):1,C=sn(Math.floor(u*N),ka,la$1),z=sn(Math.floor(g*N),ka,la$1),L=new Set,b=[],h=(F,Y)=>{let fe=sn(Math.round(F),0,t-1),re=sn(Math.round(Y),0,n-1),Re=`${fe}:${re}`;L.has(Re)||(L.add(Re),b.push({x:fe,y:re}));};h(r+na$1,a+na$1),h(l-na$1,a+na$1),h(r+na$1,s-na$1),h(l-na$1,s-na$1),h(f,a+na$1),h(f,s-na$1),h(r+na$1,i),h(l-na$1,i),h(f,i);for(let F=0;F<C;F+=1){let Y=r+(F+.5)/C*e.width;for(let fe=0;fe<z;fe+=1){let re=a+(fe+.5)/z*e.height;h(Y,re);}}return b},mu=(e,t,n)=>{let r={left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height},a=new Set,l=fu(e);yo();try{for(let f of l){let i=document.elementsFromPoint(f.x,f.y);for(let u of i)a.add(u);}}finally{So();}let s=[];for(let f of a){if(!n){let g=(f.tagName||"").toUpperCase();if(g==="HTML"||g==="BODY")continue}if(!t(f))continue;let i=f.getBoundingClientRect();if(i.width<=0||i.height<=0)continue;let u={left:i.left,top:i.top,right:i.left+i.width,bottom:i.top+i.height};if(n){let g=cu(r,u),T=i.width*i.height;T>0&&g/T>=ia$1&&s.push(f);}else uu(u,r)&&s.push(f);}return du(s)},pu=e=>e.filter(t=>!e.some(n=>n!==t&&n.contains(t))),Dn=(e,t,n=true)=>{let r=mu(e,t,n);return pu(r)};var Ao=e=>({x:e.pageX-window.scrollX,y:e.pageY-window.scrollY,width:e.width,height:e.height,borderRadius:"0px",transform:"none"}),Gr=e=>({pageX:e.x+window.scrollX,pageY:e.y+window.scrollY,width:e.width,height:e.height}),Nn=e=>({...e,borderRadius:"0px",transform:"none"});var Ct=e=>(e.tagName||"").toLowerCase();var In=e=>({x:e.x+e.width/2,y:e.y+e.height/2});var gu=new Set(["c","C","\u0441","\u0421","\u023C","\u023B","\u2184","\u2183","\u1D04","\u1D9C","\u2C7C","\u217D","\u216D","\xE7","\xC7","\u0107","\u0106","\u010D","\u010C","\u0109","\u0108","\u010B","\u010A"]),Po=(e,t)=>t==="KeyC"?true:!e||e.length!==1?false:gu.has(e);var aa=(e,t)=>{let n=e.toLowerCase();return t==="Space"?n==="space"||n===" ":t.startsWith("Key")?t.slice(3).toLowerCase()===n:t.startsWith("Digit")?t.slice(5)===n:false};var hu={meta:"metaKey",cmd:"metaKey",command:"metaKey",win:"metaKey",windows:"metaKey",ctrl:"ctrlKey",control:"ctrlKey",shift:"shiftKey",alt:"altKey",option:"altKey",opt:"altKey"},la=e=>{let t=e.split("+").map(r=>r.trim().toLowerCase()),n={metaKey:false,ctrlKey:false,shiftKey:false,altKey:false,key:null};for(let r of t){let a=hu[r];a?n[a]=true:n.key=r;}return n},Mo=e=>{if(typeof e=="function")return e;let t=la(e),n=t.key;return r=>{if(n===null){let f=t.metaKey?r.metaKey||r.key==="Meta":true,i=t.ctrlKey?r.ctrlKey||r.key==="Control":true,u=t.shiftKey?r.shiftKey||r.key==="Shift":true,g=t.altKey?r.altKey||r.key==="Alt":true,T=f&&i&&u&&g,N=[t.metaKey,t.ctrlKey,t.shiftKey,t.altKey].filter(Boolean).length,C=[r.metaKey||r.key==="Meta",r.ctrlKey||r.key==="Control",r.shiftKey||r.key==="Shift",r.altKey||r.key==="Alt"].filter(Boolean).length;return T&&C>=N}let a=r.key?.toLowerCase()===n||aa(n,r.code),s=t.metaKey||t.ctrlKey||t.shiftKey||t.altKey?(t.metaKey?r.metaKey:true)&&(t.ctrlKey?r.ctrlKey:true)&&(t.shiftKey?r.shiftKey:true)&&(t.altKey?r.altKey:true):!r.metaKey&&!r.ctrlKey&&!r.shiftKey&&!r.altKey;return a&&s}},ca=e=>!e||typeof e=="function"?{metaKey:Ca$1(),ctrlKey:!Ca$1(),shiftKey:false,altKey:false,key:null}:la(e);var Oo=(e,t)=>{if(t.activationKey)return Mo(t.activationKey)(e);let r=(Ca$1()?e.metaKey:e.ctrlKey)&&!e.shiftKey&&!e.altKey;return !!(e.key&&r&&Po(e.key,e.code))};var xt=(e,t)=>{try{return e.composedPath().some(n=>n instanceof HTMLElement&&n.hasAttribute(t))}catch{return false}};var an=e=>{if(e.length===0)return {x:0,y:0,width:0,height:0};if(e.length===1)return e[0];let t=1/0,n=1/0,r=-1/0,a=-1/0;for(let l of e)t=Math.min(t,l.x),n=Math.min(n,l.y),r=Math.max(r,l.x+l.width),a=Math.max(a,l.y+l.height);return {x:t,y:n,width:r-t,height:a-n}},bu=(e,t)=>new Promise((n,r)=>{let a=document.createElement("canvas"),l=a.getContext("2d");if(!l){r(new Error("Failed to get canvas context"));return}let s=e.videoWidth/window.innerWidth,f=e.videoHeight/window.innerHeight,i={x:t.x*s,y:t.y*f,width:t.width*s,height:t.height*f};a.width=i.width,a.height=i.height,l.drawImage(e,i.x,i.y,i.width,i.height,0,0,i.width,i.height),a.toBlob(u=>{u?n(u):r(new Error("Failed to create image blob"));},"image/png",1);}),Ro=async e=>{let t=await navigator.mediaDevices.getDisplayMedia({video:{displaySurface:"browser"},preferCurrentTab:true}),n=document.createElement("video");n.srcObject=t,n.autoplay=true,n.playsInline=true,await new Promise((r,a)=>{let l=setTimeout(()=>{a(new Error("Video metadata loading timed out"));},R);n.onerror=()=>{clearTimeout(l),a(new Error("Video failed to load"));},n.onloadedmetadata=()=>{clearTimeout(l),n.play(),r();};}),await new Promise((r,a)=>{let l=Date.now(),s=()=>{if(n.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA){r();return}if(Date.now()-l>=T){a(new Error("Video frame not ready within timeout"));return}setTimeout(s,S);};s();});try{return await bu(n,e)}finally{t.getTracks().forEach(r=>r.stop()),n.srcObject=null;}},_o=async e=>{try{return await navigator.clipboard.write([new ClipboardItem({[e.type]:e})]),!0}catch{return false}};var Do=()=>{if(typeof window>"u"||typeof navigator>"u")return false;let e=typeof navigator.mediaDevices?.getDisplayMedia=="function",t=typeof navigator.clipboard?.write=="function"&&typeof ClipboardItem<"u";return e&&t};var No=e=>new Promise(t=>setTimeout(t,e));var $t={enabled:true,hue:0,selectionBox:{enabled:true},dragBox:{enabled:true},grabbedBoxes:{enabled:true},elementLabel:{enabled:true},crosshair:{enabled:true},toolbar:{enabled:true}},yu=(e,t)=>({enabled:t.enabled??e.enabled,hue:t.hue??e.hue,selectionBox:{enabled:t.selectionBox?.enabled??e.selectionBox.enabled},dragBox:{enabled:t.dragBox?.enabled??e.dragBox.enabled},grabbedBoxes:{enabled:t.grabbedBoxes?.enabled??e.grabbedBoxes.enabled},elementLabel:{enabled:t.elementLabel?.enabled??e.elementLabel.enabled},crosshair:{enabled:t.crosshair?.enabled??e.crosshair.enabled},toolbar:{enabled:t.toolbar?.enabled??e.toolbar.enabled}}),Io=yu;var ua={activationMode:"toggle",keyHoldDuration:75,allowActivationInsideInput:true,maxContextLines:3,activationKey:void 0,getContent:void 0,freezeReactUpdates:true},da=(e={})=>{let t=new Map,n={},[r,a]=Zn({theme:$t,options:{...ua,...e},actions:[]}),l=()=>{let b=$t,h={...ua,...e},F=[];for(let{config:Y}of t.values())Y.theme&&(b=Io(b,Y.theme)),Y.options&&(h={...h,...Y.options}),Y.actions&&F.push(...Y.actions);h={...h,...n},a("theme",b),a("options",h),a("actions",F);},s=b=>{for(let[h,F]of Object.entries(b))F!==void 0&&(n[h]=F,a("options",h,F));},f=(b,h)=>{t.has(b.name)&&i(b.name);let F;return b.setup?F=b.setup(h)??{}:F={},b.theme&&(F.theme=F.theme?Io(Io($t,b.theme),F.theme):b.theme),b.actions&&(F.actions=[...b.actions,...F.actions??[]]),b.hooks&&(F.hooks=F.hooks?{...b.hooks,...F.hooks}:b.hooks),b.options&&(F.options=F.options?{...b.options,...F.options}:b.options),t.set(b.name,{plugin:b,config:F}),l(),F},i=b=>{let h=t.get(b);h&&(h.config.cleanup&&h.config.cleanup(),t.delete(b),l());},u=()=>Array.from(t.keys()),g=(b,...h)=>{for(let{config:F}of t.values()){let Y=F.hooks?.[b];Y&&Y(...h);}},T=(b,...h)=>{let F=false;for(let{config:Y}of t.values()){let fe=Y.hooks?.[b];fe&&fe(...h)===true&&(F=true);}return F},N=async(b,...h)=>{for(let{config:F}of t.values()){let Y=F.hooks?.[b];Y&&await Y(...h);}},C=async(b,h,...F)=>{let Y=h;for(let{config:fe}of t.values()){let re=fe.hooks?.[b];re&&(Y=await re(Y,...F));}return Y},z=(b,h,...F)=>{let Y=h;for(let{config:fe}of t.values()){let re=fe.hooks?.[b];re&&(Y=re(Y,...F));}return Y};return {register:f,unregister:i,getPluginNames:u,setOptions:s,store:r,hooks:{onActivate:()=>g("onActivate"),onDeactivate:()=>g("onDeactivate"),onElementHover:b=>g("onElementHover",b),onElementSelect:b=>g("onElementSelect",b),onDragStart:(b,h)=>g("onDragStart",b,h),onDragEnd:(b,h)=>g("onDragEnd",b,h),onBeforeCopy:async b=>N("onBeforeCopy",b),transformCopyContent:async(b,h)=>C("transformCopyContent",b,h),onAfterCopy:(b,h)=>g("onAfterCopy",b,h),onCopySuccess:(b,h)=>g("onCopySuccess",b,h),onCopyError:b=>g("onCopyError",b),onStateChange:b=>g("onStateChange",b),onPromptModeChange:(b,h)=>g("onPromptModeChange",b,h),onSelectionBox:(b,h,F)=>g("onSelectionBox",b,h,F),onDragBox:(b,h)=>g("onDragBox",b,h),onGrabbedBox:(b,h)=>g("onGrabbedBox",b,h),onElementLabel:(b,h,F)=>g("onElementLabel",b,h,F),onCrosshair:(b,h)=>g("onCrosshair",b,h),onContextMenu:(b,h)=>g("onContextMenu",b,h),onOpenFile:(b,h)=>T("onOpenFile",b,h),transformHtmlContent:async(b,h)=>C("transformHtmlContent",b,h),transformScreenshot:async(b,h,F)=>C("transformScreenshot",b,h,F),transformAgentContext:async(b,h)=>C("transformAgentContext",b,h),transformActionContext:b=>z("transformActionContext",b),transformOpenFileUrl:(b,h,F)=>z("transformOpenFileUrl",b,h,F),transformSnippet:async(b,h)=>C("transformSnippet",b,h)}}};var Wr="react-grab:agent-sessions",Su=()=>`session-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,fa=(e,t,n,r,a)=>{let l=Date.now();return {id:Su(),context:e,lastStatus:"",isStreaming:true,createdAt:l,lastUpdatedAt:l,position:t,selectionBounds:n,tagName:r,componentName:a}},zt=new Map,ko=(e,t)=>{if(!t){zt.clear(),e.forEach((n,r)=>zt.set(r,n));return}try{let n=Object.fromEntries(e);t.setItem(Wr,JSON.stringify(n));}catch{zt.clear(),e.forEach((n,r)=>zt.set(r,n));}},Fo=(e,t)=>{let n=Lo(t);n.set(e.id,e),ko(n,t);},Lo=e=>{if(!e)return new Map(zt);try{let t=e.getItem(Wr);if(!t)return new Map;let n=JSON.parse(t);return new Map(Object.entries(n))}catch{return new Map}},Bo=e=>{if(!e){zt.clear();return}try{e.removeItem(Wr);}catch{zt.clear();}},Xr=(e,t)=>{let n=Lo(t);n.delete(e),ko(n,t);},Tt=(e,t,n)=>{let r={...e,...t,lastUpdatedAt:Date.now()};return Fo(r,n),r};var Yr=(e,t)=>{let[n,r]=d(new Map),[a,l]=d(false),[s,f]=d(false),i=new Map,u=new Map,g=new Map,T=[],N=[],C=e,z=p=>g.get(p)?.agent??C,L=p=>g.get(p)?.elements??[],b=p=>{let P=p??C,I=P?.provider?.canUndo?.()??false,A=P?.provider?.canRedo?.()??false;l(I),f(A);},h=p=>{C=p,b();},F=()=>C,Y=()=>Array.from(n().values()).some(p=>p.isStreaming),fe=async(p,P,I)=>{let A=I??C,D=A?.storage,R=false;try{for await(let K of P){let G=n().get(p.id);if(!G)break;let ce=Tt(G,{lastStatus:K},D);r(ve=>new Map(ve).set(p.id,ce)),A?.onStatus?.(K,ce);}let $=n().get(p.id);if($){let K=A?.provider?.getCompletionMessage?.(),j=Tt($,{isStreaming:!1,...K?{lastStatus:K}:{}},D);r(me=>new Map(me).set(p.id,j));let G=L(p.id),ce=await A?.onComplete?.(j,G),ve=N.findIndex(me=>me.session.id===p.id);if(ve!==-1&&N.splice(ve,1),N.push({session:j,elements:G,agent:A}),b(A),T.length=0,ce?.error){let me=Tt(j,{error:ce.error},D);r(te=>new Map(te).set(p.id,me));}}}catch(_){let K=n().get(p.id);if(_ instanceof Error&&_.name==="AbortError"){if(R=true,K){let j=L(p.id);A?.onAbort?.(K,j);}}else {let j=_ instanceof Error?_.message:"Unknown error";if(K){let G=Tt(K,{error:j,isStreaming:false},D);r(ce=>new Map(ce).set(p.id,G)),_ instanceof Error&&A?.onError?.(_,G);}}}finally{i.delete(p.id),R&&(g.delete(p.id),Xr(p.id,D),r(_=>{let $=new Map(_);return $.delete(p.id),$}));}},re=p=>{let{selectionBounds:P,tagName:I}=p,A=P[0];if(!A)return;let D=A.x+A.width/2,R=A.y+A.height/2,_=document.elementFromPoint(D,R);if(!(!_||I&&!I.includes(" ")&&_.tagName.toLowerCase()!==I))return _},Re=()=>{let p=C?.storage;if(!p)return;let P=Lo(p);if(P.size===0)return;let I=Date.now(),A=Array.from(P.values()).filter(R=>{if(R.isStreaming)return true;let _=R.lastUpdatedAt??R.createdAt;return I-_<1e4&&!!R.error});if(A.length===0){Bo(p);return}if(!C?.provider?.supportsResume||!C.provider.resume){Bo(p);return}let D=new Map(A.map(R=>[R.id,R]));r(D),ko(D,p);for(let R of A){let _=re(R);_&&C&&g.set(R.id,{elements:[_],agent:C});let $={...R,isStreaming:true,error:void 0,lastStatus:R.lastStatus||"Resuming...",position:R.position??{x:window.innerWidth/2,y:window.innerHeight/2}};r(G=>new Map(G).set(R.id,$)),C?.onResume?.($);let K=new AbortController;i.set(R.id,K);let j=C.provider.resume(R.id,K.signal,p);fe(R,j);}},qe=async p=>{let{elements:P,prompt:I,position:A,selectionBounds:D,sessionId:R,agent:_}=p,$=_??(R?z(R):C),K=$?.storage;if(!$?.provider||P.length===0)return;let j=P[0],G=R?n().get(R):void 0,ce=!!R,me={content:G?G.context.content:(await Rn(P,{maxLines:1/0})).filter(we=>we.trim()),prompt:I,options:$?.getOptions?.(),sessionId:ce?R:void 0},te;if(G)te=Tt(G,{context:me,isStreaming:true,lastStatus:"Thinking\u2026"},K);else {let we=P.length>1?`${P.length} elements`:(j.tagName||"").toLowerCase()||void 0,Pt=P.length>1?void 0:await rn(j)||void 0;te=fa(me,A,D,we,Pt),te.lastStatus="Thinking\u2026";}g.set(te.id,{elements:P,agent:$}),r(we=>new Map(we).set(te.id,te)),Fo(te,K),$.onStart?.(te,P);let le=new AbortController;i.set(te.id,le);let pe={...me,sessionId:R??te.id},De;try{De=t?.transformAgentContext?await t.transformAgentContext(pe,P):pe;}catch(we){let Pt=we instanceof Error?we.message:"Context transformation failed",Mt=Tt(te,{error:Pt,isStreaming:false},K);r(ln=>new Map(ln).set(te.id,Mt)),i.delete(te.id),we instanceof Error&&$.onError?.(we,Mt);return}let Ge=$.provider.send(De,le.signal);fe(te,Ge,$);},Ze=p=>{if(p){let P=i.get(p);P&&P.abort();}else i.forEach(P=>P.abort()),i.clear(),u.forEach(P=>clearTimeout(P)),u.clear(),g.clear(),N.length=0,T.length=0,r(new Map),Bo(C?.storage),b();},He=(p,P,I)=>{let D=n().get(p),R=P??z(p),_=I??L(p);if(D?.isFading)return;D&&_.length>0&&R?.onDismiss?.(D,_),r(j=>{let G=new Map(j),ce=G.get(p);return ce&&G.set(p,{...ce,isFading:true}),G});let $=u.get(p);$&&clearTimeout($);let K=setTimeout(()=>{u.delete(p),g.delete(p),Xr(p,R?.storage),r(j=>{let G=new Map(j);return G.delete(p),G});},150);u.set(p,K);};return {sessions:n,isProcessing:Y,canUndo:a,canRedo:s,session:{start:qe,abort:Ze,dismiss:He,retry:p=>{let I=n().get(p),A=z(p);if(!I||!A?.provider)return;let D=A.storage,R=L(p),_=Tt(I,{error:void 0,isStreaming:true,lastStatus:"Retrying\u2026"},D);r(G=>new Map(G).set(p,_)),Fo(_,D),R.length>0&&A.onStart?.(_,R);let $=new AbortController;i.set(p,$);let K={..._.context,sessionId:p},j=A.provider.send(K,$.signal);fe(_,j,A);},undo:p=>{let I=n().get(p),A=z(p),D=L(p);if(I){T.push({session:I,elements:D,agent:A});let R=N.findIndex(_=>_.session.id===p);R!==-1&&N.splice(R,1),A?.onUndo?.(I,D),A?.provider?.undo?.();}He(p,A,D),b(A);},getElement:p=>L(p)[0],getElements:p=>L(p),tryResume:Re,acknowledgeError:p=>{let A=n().get(p)?.context.prompt;return He(p),A}},history:{undo:()=>{let p=N.pop();if(!p)return;let{session:P,elements:I,agent:A}=p,D=A??C;T.push(p),D?.onUndo?.(P,I),D?.provider?.undo?.(),He(P.id,D,I),b(D);},redo:()=>{let p=T.pop();if(!p)return;let P=p.agent??C,{session:I,elements:A}=p;P?.provider?.redo?.();let D=A.filter(R=>document.contains(R));if(D.length===0){let R=re(I);R&&(D=[R]);}if(D.length>0&&P){N.push(p);let R=D.map($=>be($)),_={...I,selectionBounds:R};g.set(I.id,{elements:D,agent:P}),r($=>new Map($).set(I.id,_));}b(P);}},_internal:{updateBoundsOnViewportChange:()=>{let p=n();if(p.size===0)return;let P=new Map(p),I=false;for(let[A,D]of p){let R=L(A),_=R[0];if(_&&document.contains(_)){let $=R.filter(K=>document.contains(K)).map(K=>be(K));if($.length>0){let K=D.selectionBounds[0],j=$[0],G=D.position;if(K&&j){let ce=K.x+K.width/2,ve=K.width/2,me=D.position.x-ce,te=ve>0?me/ve:0,le=j.x+j.width/2,pe=j.width/2;G={...D.position,x:le+te*pe};}P.set(A,{...D,selectionBounds:$,position:G}),I=true;}}}I&&r(P);},setOptions:h,getOptions:F}}};var ma=(e,t)=>{let n=[],r=(u,g)=>{let T=t(u),N=Lr(T.x+T.width/2,T.y+T.height/2).filter(e),C=N.indexOf(u);return C===-1?null:N[C+g]??null},a=u=>{let g=r(u,1);return g&&n.push(u),g},l=u=>{if(n.length>0){let g=n.pop();if(document.contains(g))return g}return r(u,-1)},s=(u,g)=>{let T=z=>{let L=Array.from(z.children),b=g?L:L.reverse();for(let h of b)if(g){if(e(h))return h;let F=T(h);if(F)return F}else {let F=T(h);if(F)return F;if(e(h))return h}return null},N=z=>g?z.nextElementSibling:z.previousElementSibling,C=null;if(g&&(C=T(u)),!C){let z=u;for(;z;){let L=N(z);for(;L;){let h=T(L);if(h){C=h;break}if(e(L)){C=L;break}L=N(L);}if(C)break;let b=z.parentElement;if(!g&&b&&e(b)){C=b;break}z=b;}}return C};return {findNext:(u,g)=>{switch(u){case "ArrowUp":return a(g);case "ArrowDown":return l(g);case "ArrowRight":return s(g,true);case "ArrowLeft":return s(g,false);default:return null}},clearHistory:()=>{n=[];}}};var pa=e=>{let t=ca(e.activationKey);return {metaKey:t.metaKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey}},ga=()=>{let e=new WeakSet,t=Object.getOwnPropertyDescriptor(KeyboardEvent.prototype,"key"),n=false;if(t?.get&&!t.get.__reactGrabPatched){n=true;let a=t.get,l=function(){return e.has(this)?"":a.call(this)};l.__reactGrabPatched=true,Object.defineProperty(KeyboardEvent.prototype,"key",{get:l,configurable:true});}return {claimedEvents:e,originalKeyDescriptor:t,didPatch:n,restore:()=>{n&&t&&Object.defineProperty(KeyboardEvent.prototype,"key",t);}}};var qr=(e,t)=>({top:t<25,bottom:t>window.innerHeight-25,left:e<25,right:e>window.innerWidth-25}),ha=(e,t)=>{let n=null,r=()=>{if(!t()){l();return}let f=e(),i=qr(f.x,f.y);i.top&&window.scrollBy(0,-10),i.bottom&&window.scrollBy(0,10),i.left&&window.scrollBy(-10,0),i.right&&window.scrollBy(10,0),i.top||i.bottom||i.left||i.right?n=requestAnimationFrame(r):n=null;},a=()=>{r();},l=()=>{n!==null&&(cancelAnimationFrame(n),n=null);};return {start:a,stop:l,isActive:()=>n!==null}};var ba=()=>{let e=globalThis;return !!(e.chrome?.runtime?.id||e.browser?.runtime?.id)};var ya=()=>{try{let e="0.1.0",t=`data:image/svg+xml;base64,${btoa(wa$1)}`;console.log(`%cReact Grab${e?` v${e}`:""}%c
53
53
  https://react-grab.com`,`background: #330039; color: #ffffff; border: 1px solid #d75fcb; padding: 4px 4px 4px 24px; border-radius: 4px; background-image: url("${t}"); background-size: 16px 16px; background-repeat: no-repeat; background-position: 4px center; display: inline-block; margin-bottom: 4px;`,""),navigator.onLine&&e&&!ba()&&fetch(`https://www.react-grab.com/api/version?source=browser&t=${Date.now()}`,{referrerPolicy:"origin",keepalive:!0,priority:"low",cache:"no-store"}).then(n=>n.text()).then(n=>{n&&n!==e&&console.warn(`[React Grab] v${e} is outdated (latest: v${n})`);}).catch(()=>null);}catch{}};var Sa=e=>{if("scheduler"in globalThis){globalThis.scheduler.postTask(e,{priority:"background"});return}if(typeof window<"u"&&"requestIdleCallback"in window){requestIdleCallback(e);return}setTimeout(e,0);};var wa=()=>{if(typeof window>"u")return null;try{let e=document.currentScript?.getAttribute("data-options");return e?JSON.parse(e):null}catch{return null}};var Vt=e=>e==="Enter"||e==="NumpadEnter";var Ea={name:"copy",actions:[{id:"copy",label:"Copy",shortcut:"C",onAction:e=>{e.copy?.();}}]};var va={name:"screenshot",actions:[{id:"screenshot",label:"Screenshot",shortcut:"S",enabled:()=>Do(),onAction:async e=>{let t=e.elements.map(r=>{let a=r.getBoundingClientRect();return {x:a.x+window.scrollX,y:a.y+window.scrollY,width:a.width,height:a.height}}),n=an(t);n.width===0||n.height===0||await e.performWithFeedback(async()=>{e.hideOverlay(),await No(Q);try{let r=await Ro(n),a=await e.hooks.transformScreenshot(r,e.elements,n);return await _o(a)}finally{e.showOverlay();}});}}]};var Ca={name:"copy-html",actions:[{id:"copy-html",label:"Copy HTML",onAction:async e=>{await e.performWithFeedback(async()=>{let n=e.elements.filter(a=>a instanceof HTMLElement).map(a=>a.outerHTML).join(`
54
54
 
55
55
  `),r=await e.hooks.transformHtmlContent(n,e.elements);return r?(await navigator.clipboard.writeText(r),true):false});}}]};var xa={name:"open",actions:[{id:"open",label:"Open",shortcut:"O",enabled:e=>!!e.filePath,onAction:e=>{if(!e.filePath)return;if(!e.hooks.onOpenFile(e.filePath,e.lineNumber)){let n=en(e.filePath,e.lineNumber),r=e.hooks.transformOpenFileUrl(n,e.filePath,e.lineNumber);window.open(r,"_blank","noopener,noreferrer");}e.hideContextMenu(),e.cleanup();}}]};var Ta={name:"comment",actions:[{id:"comment",label:"Comment",shortcut:"Enter",onAction:e=>{e.enterPromptMode?.();}}]};var _u=[Ea,Ta,va,Ca,xa],Zr=false,At=new Set,Lg=e=>{if(typeof window>"u")return Ur();let t$1=wa(),n$1={enabled:true,activationMode:"toggle",keyHoldDuration:75,allowActivationInsideInput:true,maxContextLines:3,...t$1,...e};if(n$1.enabled===false||Zr)return Ur();Zr=true,ya();let{enabled:r,...a}=n$1;return c(l$1=>{let s$1=da(a),f$1=()=>{for(let o of s$1.store.actions)if(o.agent?.provider)return o.agent},{store:i,actions:u}=Qs({theme:$t,hasAgentProvider:!!f$1()?.provider,keyHoldDuration:s$1.store.options.keyHoldDuration??75}),g$1=g(()=>i.current.state==="holding"),T=g(()=>i.current.state==="active");f(j(T,(o,c)=>{o&&!c?(Eo(),po(),document.body.style.touchAction="none"):!o&&c&&(vo(),go(),document.body.style.touchAction="");}));let N=g(()=>i.current.state==="active"&&i.current.phase==="frozen"),C=g(()=>i.current.state==="active"&&i.current.phase==="dragging"),z=g(()=>i.current.state==="active"&&i.current.phase==="justDragged"),L=g(()=>i.current.state==="copying"),b=g(()=>i.current.state==="justCopied"),h$1=g(()=>i.current.state==="active"&&i.current.isPromptMode),F=g(()=>i.pendingCommentMode||h$1()),Y=g(()=>i.current.state==="active"&&i.current.isPromptMode&&i.current.isPendingDismiss),fe=It(),[re,Re]=d(fe?.enabled??true),[qe,Ze]=d(0),[He,Ie]=d(fe),[H,M]=d(false),S=g(()=>i.pendingAbortSessionId),m=g(()=>i.hasAgentProvider),y=()=>{G!==null&&(clearTimeout(G),G=null);},v=()=>{ve=false,me=false,ce=null;};f(()=>{if(i.current.state!=="holding"){y();return}ce=Date.now(),G=window.setTimeout(()=>{if(G=null,ve){me=true;return}u.activate();},i.keyHoldDuration),l(y);}),f(()=>{if(i.current.state!=="active"||i.current.phase!=="justDragged")return;let o=setTimeout(()=>{u.finishJustDragged();},1500);l(()=>clearTimeout(o));}),f(()=>{if(i.current.state!=="justCopied")return;let o=setTimeout(()=>{u.finishJustCopied();},1500);l(()=>clearTimeout(o));});let O=false;f(()=>{let o=g$1(),c=T();O&&!o&&c&&(s$1.store.options.activationMode!=="hold"&&u.setWasActivatedByToggle(true),s$1.hooks.onActivate()),O=o;});let p=new WeakMap,P=o=>{let c=p.get(o);u.setInputText(c??"");},I=(o,c,d)=>{D(o,c,d),P(o);},A=()=>{let o=i.frozenElement||V();o&&u.enterPromptMode({x:i.pointer.x,y:i.pointer.y},o);},D=(o,c,d)=>(u.setCopyStart({x:c,y:d},o),be(o)),R=0,_=null,[$,K]=d(null),j$1=null,G=null,ce=null,ve=false,me=false,te=false,le=false,pe=null,De=0,Ge=0,we=null,[Pt,Mt]=d(null),[ln,cn]=d(void 0),un=ma(St,be),Ve=ha(()=>i.pointer,()=>C()),ke=g(()=>T()&&!L()),Kt=g(()=>s$1.store.theme.enabled&&s$1.store.theme.crosshair.enabled&&ke()&&!C()&&!i.isTouchMode&&!N()&&!h$1()&&i.contextMenuPosition===null),Ut=new Map,Vo=(o,c)=>{let d=`grabbed-${Date.now()}-${Math.random()}`,w=Date.now(),E={id:d,bounds:o,createdAt:w,element:c};u.addGrabbedBox(E),s$1.hooks.onGrabbedBox(o,c);let k=window.setTimeout(()=>{Ut.delete(d),u.removeGrabbedBox(d);},1500);Ut.set(d,k);},Ot=async o=>{let c=await Promise.all(o.map(async d=>{let w=await vt(d),E=null,k,X,ae;if(w&&w.length>0)for(let ne of w){let xe=ne.functionName&&on(ne.functionName),Te=ne.fileName&&Et(ne.fileName);if(xe&&!E&&(E=ne.functionName),Te&&!k&&(k=wt(ne.fileName),X=ne.lineNumber||void 0,ae=ne.columnNumber||void 0),E&&k)break}E||(E=To(d));let he=d instanceof HTMLElement?d.innerText?.slice(0,100):void 0;return {tagName:Ct(d),id:d.id||void 0,className:d.getAttribute("class")||void 0,textContent:he,componentName:E??void 0,filePath:k,lineNumber:X,columnNumber:ae}}));window.dispatchEvent(new CustomEvent("react-grab:element-selected",{detail:{elements:c}}));},Ae=(o,c,d,w,E,k,X,ae)=>{u.clearLabelInstances();let he=`label-${Date.now()}-${Math.random().toString(36).slice(2)}`,ne=o.x+o.width/2,xe=o.width/2,Te=k!==void 0?k-ne:void 0,We={id:he,bounds:o,boundsMultiple:ae,tagName:c,componentName:d,status:w,createdAt:Date.now(),element:E,elements:X,mouseX:k,mouseXOffsetFromCenter:Te,mouseXOffsetRatio:Te!==void 0&&xe>0?Te/xe:void 0};return u.addLabelInstance(We),he},ut=(o,c,d)=>{u.updateLabelInstance(o,c,d);},dt=o=>{Je.delete(o),u.removeLabelInstance(o);},Je=new Map,ft=o=>{let c=Je.get(o);c!==void 0&&(window.clearTimeout(c),Je.delete(o));},jt=o=>{ft(o);let c=window.setTimeout(()=>{Je.delete(o),ut(o,"fading"),setTimeout(()=>{dt(o);},150);},1500);Je.set(o,c);},Ko=(o,c)=>{if(c)ft(o);else {let d=i.labelInstances.find(w=>w.id===o);d&&d.status==="copied"&&jt(o);}},Fn=async(o,c,d,w,E,k,X,ae,he)=>{le=false,u.startCopy();let ne=w&&E?Ae(w,E,k,"copying",X,o,he):null;await d().finally(()=>{u.completeCopy(X),ne&&(ut(ne,"copied"),jt(ne)),ae?ue():(u.activate(),le=true,pe!==null&&window.clearTimeout(pe),pe=window.setTimeout(()=>{le=false,pe=null;},1500));});},x=(o,c)=>{let d=o[0],w=d?To(d):null,E=d?Ct(d):null,k=w??E??void 0;return ia({maxContextLines:s$1.store.options.maxContextLines,getContent:s$1.store.options.getContent,componentName:k},{onBeforeCopy:s$1.hooks.onBeforeCopy,transformSnippet:s$1.hooks.transformSnippet,transformCopyContent:s$1.hooks.transformCopyContent,onAfterCopy:s$1.hooks.onAfterCopy,onCopySuccess:s$1.hooks.onCopySuccess,onCopyError:s$1.hooks.onCopyError},o,c)},B=async(o,c)=>{if(o.length!==0){for(let d of o)s$1.hooks.onElementSelect(d),s$1.store.theme.grabbedBoxes.enabled&&Vo(be(d),d);await new Promise(d=>requestAnimationFrame(d)),await x(o,c),Ot(o);}},W=({element:o,positionX:c,positionY:d,elements:w,extraPrompt:E,shouldDeactivateAfter:k,onComplete:X,dragRect:ae})=>{let he=w??[o],ne=ae??i.frozenDragRect,xe;ne&&he.length>1?xe=Ao(ne):xe=Nn(be(o));let Te=he.length>1?xe.x+xe.width/2:c,We=Ct(o);rn(o).then(Ue=>{Fn(Te,d,()=>B(he,E),xe,We,Ue??void 0,o,k,w).then(()=>{X?.();});});},V=g(()=>{if(!ke()||C())return null;let o=i.detectedElement;return o&&!document.contains(o)?null:o}),q=g(()=>i.frozenElement||(N()?null:V()));f(()=>{let o=i.detectedElement;if(!o)return;let c=setInterval(()=>{document.contains(o)||u.setDetectedElement(null);},100);l(()=>clearInterval(c));}),f(j(()=>q(),o=>{if(we!==null&&clearTimeout(we),!o){Mt(null);return}we=window.setTimeout(()=>{we=null,Mt(o);},100),l(()=>{we!==null&&(clearTimeout(we),we=null);});})),f(()=>{let o=i.frozenElements,c=vi(o);l(c);}),f(j(T,o=>{if(!o||!s$1.store.options.freezeReactUpdates)return;let c=fo();l(c);}));let Z=()=>{if(i.isTouchMode&&C()){let c=i.detectedElement;return !c||_n(c)?void 0:c}let o=q();if(!(!o||_n(o)))return o},U$1=()=>{if(i.isTouchMode&&C()){let c=i.detectedElement;return !c||_n(c)?false:ke()}let o=q();return !o||_n(o)?false:ke()&&!C()},ie=g(()=>{i.viewportVersion;let o=i.frozenElements;if(o.length>0){let d=o[0];if(o.length===1&&d)return be(d);let w=i.frozenDragRect;if(w)return Ao(w);let E=o.filter(k=>k!==null).map(k=>be(k));return Nn(an(E))}let c=Z();if(c)return be(c)}),ye=g(()=>{i.viewportVersion;let o=i.frozenElements;if(o.length===0)return [];let c=i.frozenDragRect;return c&&o.length>1?[Ao(c)]:o.filter(d=>d!==null).map(d=>be(d))}),Se=g(()=>i.frozenElements.length),Ce=(o,c)=>{let d=o+window.scrollX,w=c+window.scrollY;return {x:Math.abs(d-i.dragStart.x),y:Math.abs(w-i.dragStart.y)}},_e=g(()=>{if(!C())return false;let o=Ce(i.pointer.x,i.pointer.y);return o.x>2||o.y>2}),Fe=(o,c)=>{let d=o+window.scrollX,w=c+window.scrollY,E=Math.min(i.dragStart.x,d),k=Math.min(i.dragStart.y,w),X=Math.abs(d-i.dragStart.x),ae=Math.abs(w-i.dragStart.y);return {x:E-window.scrollX,y:k-window.scrollY,width:X,height:ae}},Le=g(()=>{if(i.viewportVersion,!_e())return;let o=Fe(i.pointer.x,i.pointer.y);return {borderRadius:"0px",height:o.height,transform:"none",width:o.width,x:o.x,y:o.y}}),Ne=g(()=>{if(i.viewportVersion,!_e())return [];let o=$();if(!o)return [];let c=Fe(o.x,o.y),d=Dn(c,St);return (d.length>0?d:Dn(c,St,false)).map(E=>be(E))}),Ke=g(()=>{let o=Ne();return o.length>0?o:ye()}),J=g(()=>{if(L()||h$1()){i.viewportVersion;let o=i.frozenElement||V();if(o){let c=be(o);return {x:In(c).x+i.copyOffsetFromCenterX,y:i.copyStart.y}}return {x:i.copyStart.x,y:i.copyStart.y}}return {x:i.pointer.x,y:i.pointer.y}});f(j(()=>[V(),i.lastGrabbedElement],([o,c])=>{c&&o&&c!==o&&u.setLastGrabbed(null),o&&s$1.hooks.onElementHover(o);})),f(j(()=>V(),o=>{let c=++De,d=()=>{De===c&&u.setSelectionSource(null,null);};if(!o){d();return}vt(o).then(w=>{if(De===c&&w){for(let E of w)if(E.fileName&&Et(E.fileName)){u.setSelectionSource(wt(E.fileName),E.lineNumber??null);return}d();}}).catch(()=>{De===c&&u.setSelectionSource(null,null);});})),f(j(()=>i.viewportVersion,()=>ge._internal.updateBoundsOnViewportChange())),f(j(()=>[T(),C(),L(),h$1(),Kt(),V(),Le(),i.grabbedBoxes,s$1.store.theme.enabled,s$1.store.theme.selectionBox.enabled,s$1.store.theme.dragBox.enabled,_e(),q(),b(),He()],([o,c,d,w,E,k,X,ae,he,ne,xe,Te,We,Ue,pt])=>{let mn=!!(he&&ne&&o&&!d&&!Ue&&!c&&We!=null),pn=!!(he&&xe&&o&&!d&&Te);s$1.hooks.onStateChange({isActive:o,isDragging:c,isCopying:d,isPromptMode:w,isCrosshairVisible:E??false,isSelectionBoxVisible:mn,isDragBoxVisible:pn,targetElement:k,dragBounds:X?{x:X.x,y:X.y,width:X.width,height:X.height}:null,grabbedBoxes:ae.map(qo=>({id:qo.id,bounds:qo.bounds,createdAt:qo.createdAt})),selectionFilePath:i.selectionFilePath,toolbarState:pt});})),f(j(()=>[h$1(),i.pointer.x,i.pointer.y,V()],([o,c,d,w])=>{s$1.hooks.onPromptModeChange(o,{x:c,y:d,targetElement:w});})),f(j(()=>[Wo(),ie(),V()],([o,c,d])=>{s$1.hooks.onSelectionBox(!!o,c??null,d);})),f(j(()=>[Xo(),Le()],([o,c])=>{s$1.hooks.onDragBox(!!o,c??null);})),f(j(()=>[Kt(),i.pointer.x,i.pointer.y],([o,c,d])=>{s$1.hooks.onCrosshair(!!o,{x:c,y:d});})),f(j(()=>[ol(),nl(),J(),V(),i.selectionFilePath,i.selectionLineNumber],([o,c,d,w,E,k])=>{s$1.hooks.onElementLabel(!!o,c,{x:d.x,y:d.y,content:"",element:w??void 0,tagName:w&&Ct(w)||void 0,filePath:E??void 0,lineNumber:k??void 0});}));let $e=null,Qe=o=>{o?($e||($e=document.createElement("style"),$e.setAttribute("data-react-grab-cursor",""),document.head.appendChild($e)),$e.textContent=`* { cursor: ${o} !important; }`):$e&&($e.remove(),$e=null);};f(j(()=>[T(),L(),h$1()],([o,c,d])=>{Qe(c?"progress":o&&!d?"crosshair":null);}));let rt=()=>{let o=g$1();u.activate(),o||s$1.hooks.onActivate();},ue=()=>{let o=C(),c=i.previouslyFocusedElement;u.deactivate(),un.clearHistory(),o&&(document.body.style.userSelect=""),j$1&&window.clearTimeout(j$1),Ve.stop(),c instanceof HTMLElement&&document.contains(c)&&c.focus(),s$1.hooks.onDeactivate();},Rt=()=>{u.setWasActivatedByToggle(true),rt();},dn=(o,c,d)=>{let w=c[0];if(w&&document.contains(w)){let E=w.getBoundingClientRect(),k=E.top+E.height/2;u.setPointer({x:o.position.x,y:k}),u.setFrozenElements(c),u.setInputText(o.context.prompt),u.setWasActivatedByToggle(true),d&&u.setSelectedAgent(d),T()||rt();}},fn=o=>({...o,onAbort:(c,d)=>{o.onAbort?.(c,d),dn(c,d,o);},onUndo:(c,d)=>{o.onUndo?.(c,d),dn(c,d,o);}}),Gt=()=>{let o=f$1();if(o)return fn(o)},ge=Yr(Gt(),{transformAgentContext:s$1.hooks.transformAgentContext}),Ln=o=>{u.setInputText(o);},Jr=()=>{u.setLastCopied(null);let o=[...i.frozenElements],c=i.frozenElement||V(),d=h$1()?i.inputText.trim():"";if(!c){ue();return}let w=o.length>0?o:c?[c]:[],E=w.map(ne=>be(ne)),k=E[0],X=k.x+k.width/2,ae=k.y+k.height/2,he=X+i.copyOffsetFromCenterX;if((i.selectedAgent||m())&&d){p.delete(c);let ne=i.replySessionId,xe=i.selectedAgent;ue(),u.setReplySessionId(null),u.clearSelectedAgent(),ge.session.start({elements:w,prompt:d,position:{x:he,y:ae},selectionBounds:E,sessionId:ne??void 0,agent:xe?fn(xe):void 0});return}u.setPointer({x:X,y:ae}),u.exitPromptMode(),u.clearInputText(),u.clearReplySessionId(),d?p.set(c,d):p.delete(c),W({element:c,positionX:he,positionY:ae,elements:w,extraPrompt:d||void 0,onComplete:ue});},Uo=()=>{if(u.setLastCopied(null),!h$1())return;let o=i.inputText.trim();if(o&&!Y()){u.setPendingDismiss(true);return}let c=i.frozenElement||V();c&&o&&p.set(c,o),u.clearInputText(),u.clearReplySessionId(),ue();},Oa=()=>{u.clearInputText(),u.clearReplySessionId(),ue();},Ra=()=>{u.setPendingDismiss(false);},_a=(o,c)=>{u.setPendingAbortSessionId(null),c&&ge.session.abort(o);},Da=()=>{let o=i.frozenElement||V();o&&I(o,i.pointer.x,i.pointer.y),A();},Na=(o,c)=>{let d=ge.sessions().get(o),w=ge.session.getElements(o),E=d?.selectionBounds??[],k=E[0];if(d&&w.length>0&&k){let X=d.position.x,ae=d.context.sessionId??o;ge.session.dismiss(o),ge.session.start({elements:w,prompt:c,position:{x:X,y:k.y+k.height/2},selectionBounds:E,sessionId:ae});}},Ia=o=>{let c=ge.session.acknowledgeError(o);c&&u.setInputText(c);},ka=()=>{T()?ue():re()&&Rt();},Qr=(o,c,d)=>{u.setPendingCommentMode(false),P(o),u.enterPromptMode({x:c,y:d},o);},Fa=()=>{if(!re())return;if(T()&&F()){ue();return}u.setPendingCommentMode(true),T()||Rt();},La=()=>{let o=!re();Re(o);let c=It(),d={edge:c?.edge??"bottom",ratio:c?.ratio??.5,collapsed:c?.collapsed??false,enabled:o};vn(d),Ie(d),At.forEach(w=>w(d)),o||(g$1()&&u.release(),T()&&ue(),pe!==null&&(window.clearTimeout(pe),pe=null),le=false);},Ba=(o,c)=>{if(!re()||h$1()||N()||i.contextMenuPosition!==null)return;u.setPointer({x:o,y:c});let d=performance.now();if(d-R>=32&&(R=d,Sa(()=>{let w=Mn(o,c);u.setDetectedElement(w);})),C()){_!==null&&clearTimeout(_),K(null),_=window.setTimeout(()=>{K({x:o,y:c}),_=null;},32);let w=qr(o,c),E=w.top||w.bottom||w.left||w.right;E&&!Ve.isActive()?Ve.start():!E&&Ve.isActive()&&Ve.stop();}},Ha=(o,c)=>!ke()||L()?false:(u.startDrag({x:o,y:c}),u.setPointer({x:o,y:c}),document.body.style.userSelect="none",_!==null&&clearTimeout(_),K(null),_=window.setTimeout(()=>{K({x:o,y:c}),_=null;},32),s$1.hooks.onDragStart(o+window.scrollX,c+window.scrollY),true),$a=(o,c)=>{let d=Dn(o,St),w=d.length>0?d:Dn(o,St,false);if(w.length===0)return;Pn(w),s$1.hooks.onDragEnd(w,o);let E=w[0],k=In(be(E));u.setPointer(k),u.setFrozenElements(w);let X=Gr(o);if(u.setFrozenDragRect(X),u.freeze(),u.setLastGrabbed(E),i.pendingCommentMode){Qr(E,k.x,k.y);return}let ae=i.wasActivatedByToggle&&!c;W({element:E,positionX:k.x,positionY:k.y,elements:w,shouldDeactivateAfter:ae,dragRect:X});},za$1=(o,c,d)=>{let w=i.frozenElement&&document.contains(i.frozenElement)?i.frozenElement:null,E=w??Mn(o,c)??(i.detectedElement&&document.contains(i.detectedElement)?i.detectedElement:null);if(!E)return;let k=w?i.pointer.x:o,X=w?i.pointer.y:c;if(i.pendingCommentMode){Qr(E,k,X);return}let ae=i.wasActivatedByToggle&&!d;u.setLastGrabbed(E),W({element:E,positionX:k,positionY:X,shouldDeactivateAfter:ae});},Va=(o,c,d)=>{if(!C())return;_!==null&&(clearTimeout(_),_=null),K(null);let w=Ce(o,c),E=w.x>2||w.y>2,k=E?Fe(o,c):null;E?u.endDrag():u.cancelDrag(),Ve.stop(),document.body.style.userSelect="",k?$a(k,d):za$1(o,c,d);},Pe=ra(),Bn=ga(),Wt=o=>{let c;try{c=Bn.originalKeyDescriptor?.get?Bn.originalKeyDescriptor.get.call(o):o.key;}catch{return false}let d=c==="Enter"||Vt(o.code),w=T()||g$1();return d&&w&&!h$1()&&!i.wasActivatedByToggle?(Bn.claimedEvents.add(o),o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation(),true):false};Pe.addDocumentListener("keydown",Wt,{capture:true}),Pe.addDocumentListener("keyup",Wt,{capture:true}),Pe.addDocumentListener("keypress",Wt,{capture:true});let Ka=o=>{if(!(o.code==="KeyZ"&&(o.metaKey||o.ctrlKey))||Array.from(ge.sessions().values()).some(E=>!E.isStreaming&&!E.error))return false;let w=o.shiftKey;return w&&ge.canRedo()?(o.preventDefault(),o.stopPropagation(),ge.history.redo(),true):!w&&ge.canUndo()?(o.preventDefault(),o.stopPropagation(),ge.history.undo(),true):false},Ua=o=>{if(!T()||h$1())return false;let c=q();if(!c)return false;let d=un.findNext(o.key,c);if(!d)return false;o.preventDefault(),o.stopPropagation(),u.setFrozenElement(d),u.freeze();let w=be(d),E=In(w);return u.setPointer(E),i.contextMenuPosition!==null&&u.showContextMenu(E,d),true},ja=o=>{if(!Vt(o.code))return false;let c=i.lastCopiedElement;if(!g$1()&&!h$1()&&!T()&&c&&document.contains(c)&&!i.labelInstances.some(E=>E.status==="copied"||E.status==="fading")&&c){o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation();let E=In(be(c));return u.setPointer(E),I(c,E.x,E.y),u.setFrozenElement(c),u.setLastCopied(null),A(),T()||rt(),true}if(g$1()&&!h$1()){o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation();let E=i.frozenElement||V(),k=i.pointer.x,X=i.pointer.y;return E&&I(E,k,X),u.setPointer({x:k,y:X}),E&&u.setFrozenElement(E),A(),j$1!==null&&(window.clearTimeout(j$1),j$1=null),T()||rt(),true}return false},Ga=o=>{if(o.key?.toLowerCase()!=="o"||h$1()||!T()||!(o.metaKey||o.ctrlKey))return false;let c=i.selectionFilePath,d=i.selectionLineNumber;if(!c)return false;if(o.preventDefault(),o.stopPropagation(),!s$1.hooks.onOpenFile(c,d??void 0)){let E=en(c,d??void 0),k=s$1.hooks.transformOpenFileUrl(E,c,d??void 0);window.open(k,"_blank","noopener,noreferrer");}return true},Wa=o=>{if(!Do()||i.contextMenuPosition!==null||o.key?.toLowerCase()!=="s"||h$1()||!T()||!(o.metaKey||o.ctrlKey))return false;let c=ye(),d=ie(),w=i.frozenElement||V(),E=c.length>1?an(c):d;if(!E)return false;o.preventDefault(),o.stopPropagation();let k=w&&Ct(w)||"element",X=i.wasActivatedByToggle,ae=Nn(E),he=c.length>1?c:d?[d]:[],ne=Ae(ae,k,void 0,"copying",w??void 0,E.x+E.width/2,void 0,he);te=true,Dt.style.visibility="hidden";let xe=i.frozenElements.length>0?[...i.frozenElements]:w?[w]:[];return (async()=>{await No(Q);let Te=false,We;try{let Ue=await Ro(E),pt=await s$1.hooks.transformScreenshot(Ue,xe,E);Te=await _o(pt),Te||(We="Failed to copy");}catch(Ue){We=Ue instanceof Error&&Ue.message?Ue.message:"Screenshot failed";}te=false,Dt.style.visibility="",ut(ne,Te?"copied":"error",Te?void 0:We||"Unknown error"),jt(ne),X?ue():u.unfreeze();})(),true},Xa=o=>{if(!(!s$1.store.options.allowActivationInsideInput&&xa$1(o))&&!(!Oo(o,s$1.store.options)&&(T()&&!i.wasActivatedByToggle&&(o.metaKey||o.ctrlKey)&&!U.includes(o.key)&&!Vt(o.code)&&ue(),!Vt(o.code)||!g$1()))){if((T()||g$1())&&!h$1()&&(o.preventDefault(),Vt(o.code)&&(o.stopPropagation(),o.stopImmediatePropagation())),T()){if(i.wasActivatedByToggle&&s$1.store.options.activationMode!=="hold"||o.repeat)return;j$1!==null&&window.clearTimeout(j$1),j$1=window.setTimeout(()=>{ue();},200);return}if(g$1()&&o.repeat){if(ve){let c=me;v(),c&&u.activate();}return}if(!(L()||b())&&!g$1()){let d=s$1.store.options.keyHoldDuration??75;xa$1(o)?ya$1(o)?d+=300:d+=150:za()&&(d+=300),v(),u.startHold(d);}}};Pe.addWindowListener("keydown",o=>{if(Wt(o),!re()){Oo(o,s$1.store.options)&&!o.repeat&&Ze(d=>d+1);return}if(Ka(o))return;let c=Vt(o.code)&&g$1()&&!h$1();if(h$1()&&Oo(o,s$1.store.options)&&!o.repeat){o.preventDefault(),o.stopPropagation(),Uo();return}if(h$1()||xt(o,"data-react-grab-ignore-events")&&!c){o.key==="Escape"&&(S()?(o.preventDefault(),o.stopPropagation(),u.setPendingAbortSessionId(null)):i.wasActivatedByToggle&&!h$1()&&ue());return}if(o.key==="Escape"){if(S()){o.preventDefault(),o.stopPropagation(),u.setPendingAbortSessionId(null);return}if(ge.isProcessing())return;if(g$1()||i.wasActivatedByToggle){ue();return}}Ua(o)||ja(o)||Ga(o)||Wa(o)||Xa(o);},{capture:true}),Pe.addWindowListener("keyup",o=>{if(Wt(o))return;let c=pa(s$1.store.options),d=c.metaKey||c.ctrlKey?Ca$1()?!o.metaKey:!o.ctrlKey:c.shiftKey&&!o.shiftKey||c.altKey&&!o.altKey,w=s$1.store.options.activationKey?typeof s$1.store.options.activationKey=="function"?s$1.store.options.activationKey(o):Mo(s$1.store.options.activationKey)(o):Po(o.key,o.code);if(b()||le){(w||d)&&(le=false,ue());return}if(!g$1()&&!T()||h$1())return;let E=!!s$1.store.options.activationKey,k=s$1.store.options.activationMode==="hold";if(T()){let X=i.contextMenuPosition!==null;if(d){if(i.wasActivatedByToggle&&s$1.store.options.activationMode!=="hold"||X)return;ue();}else if(k&&w){if(j$1!==null&&(window.clearTimeout(j$1),j$1=null),X)return;ue();}else !E&&w&&j$1!==null&&(window.clearTimeout(j$1),j$1=null);return}if(w||d){if(i.wasActivatedByToggle&&s$1.store.options.activationMode!=="hold")return;if(g$1()||me&&d){y();let he=(ce?Date.now()-ce:0)>=200,ne=me&&he&&(s$1.store.options.allowActivationInsideInput||!xa$1(o));v(),ne?u.activate():u.release();}else ue();}},{capture:true}),Pe.addDocumentListener("copy",()=>{g$1()&&(ve=true);}),Pe.addWindowListener("keypress",Wt,{capture:true}),Pe.addWindowListener("pointermove",o=>{if(!o.isPrimary)return;let c=o.pointerType==="touch";if(u.setTouchMode(c),xt(o,"data-react-grab-ignore-events")||i.contextMenuPosition!==null)return;(c?g$1():T())&&!h$1()&&N()&&(u.unfreeze(),un.clearHistory()),Ba(o.clientX,o.clientY);},{passive:true}),Pe.addWindowListener("pointerdown",o=>{if(o.button!==0||!o.isPrimary||(u.setTouchMode(o.pointerType==="touch"),xt(o,"data-react-grab-ignore-events"))||i.contextMenuPosition!==null)return;if(h$1()){let d=ie();d&&o.clientX>=d.x&&o.clientX<=d.x+d.width&&o.clientY>=d.y&&o.clientY<=d.y+d.height?Jr():Uo();return}Ha(o.clientX,o.clientY)&&(o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation());},{capture:true}),Pe.addWindowListener("pointerup",o=>{if(o.button!==0||!o.isPrimary||xt(o,"data-react-grab-ignore-events")||i.contextMenuPosition!==null)return;let c=o.metaKey||o.ctrlKey;Va(o.clientX,o.clientY,c);},{capture:true}),Pe.addWindowListener("contextmenu",o=>{if(!ke()||L()||h$1()||xt(o,"data-react-grab-ignore-events"))return;if(i.contextMenuPosition!==null){o.preventDefault();return}o.preventDefault(),o.stopPropagation();let c=Mn(o.clientX,o.clientY);if(!c)return;let d=i.frozenElements;d.length>1&&d.includes(c)?Pn(d):(Pn([c]),u.setFrozenElement(c));let E={x:o.clientX,y:o.clientY};u.setPointer(E),u.freeze(),u.showContextMenu(E,c),s$1.hooks.onContextMenu(c,E);},{capture:true}),Pe.addWindowListener("pointercancel",o=>{o.isPrimary&&C()&&(u.cancelDrag(),Ve.stop(),document.body.style.userSelect="");}),Pe.addWindowListener("click",o=>{xt(o,"data-react-grab-ignore-events")||i.contextMenuPosition===null&&(ke()||L()||z())&&(o.preventDefault(),o.stopPropagation(),o.stopImmediatePropagation(),i.wasActivatedByToggle&&!L()&&!h$1()&&(g$1()?u.setWasActivatedByToggle(false):ue()));},{capture:true}),Pe.addDocumentListener("visibilitychange",()=>{if(document.hidden){u.clearGrabbedBoxes();let o=i.activationTimestamp;T()&&!h$1()&&!te&&o!==null&&Date.now()-o>500&&ue();}});let Ya=()=>{if(re()&&!h$1()&&!N()&&!C()&&i.contextMenuPosition===null&&i.frozenElements.length===0){let o=Mn(i.pointer.x,i.pointer.y);u.setDetectedElement(o);}},es=()=>{Js(),ho(),xi(),Ya(),u.incrementViewportVersion(),u.updateSessionBounds(),u.updateContextMenuPosition();};Pe.addWindowListener("scroll",es,{capture:true});let jo=window.innerWidth,Go=window.innerHeight;Pe.addWindowListener("resize",()=>{let o=window.innerWidth,c=window.innerHeight;if(jo>0&&Go>0){let d=o/jo,w=c/Go,E=Math.abs(d-w)<ta$1,k=Math.abs(d-1)>ta$1;E&&k&&u.setPointer({x:i.pointer.x*d,y:i.pointer.y*w});}jo=o,Go=c,es();});let _t=null,mt=null,qa=()=>{let o=s$1.store.theme.enabled&&(T()||L()||i.labelInstances.length>0||i.grabbedBoxes.length>0||ge.sessions().size>0);o&&_t===null?_t=window.setInterval(()=>{mt===null&&(mt=requestAnimationFrame(()=>{mt=null,u.incrementViewportVersion(),u.updateSessionBounds();}));},100):!o&&_t!==null&&(window.clearInterval(_t),_t=null,mt!==null&&(cancelAnimationFrame(mt),mt=null));};f(()=>{s$1.store.theme.enabled,T(),L(),i.labelInstances.length,i.grabbedBoxes.length,ge.sessions().size,qa();}),l(()=>{_t!==null&&window.clearInterval(_t),mt!==null&&cancelAnimationFrame(mt);}),Pe.addDocumentListener("copy",o=>{h$1()||xt(o,"data-react-grab-ignore-events")||(ke()||L())&&o.preventDefault();},{capture:true}),l(()=>{Pe.abort(),j$1&&window.clearTimeout(j$1),pe&&window.clearTimeout(pe),Ut.forEach(o=>window.clearTimeout(o)),Ut.clear(),Ve.stop(),document.body.style.userSelect="",document.body.style.touchAction="",Qe(null),Bn.restore();});let Dt=ti(E),Wo=g(()=>!s$1.store.theme.enabled||!s$1.store.theme.selectionBox.enabled||b()?false:Ne().length>0?true:U$1()),Za=g(()=>{let o=Z();if(o)return Ct(o)||void 0});f(j(()=>Pt(),o=>{let c=++Ge;if(!o){cn(void 0);return}rn(o).then(d=>{Ge===c&&cn(d??void 0);}).catch(()=>{Ge===c&&cn(void 0);});}));let Ja=ln,Qa=g(()=>i.contextMenuPosition!==null||!s$1.store.theme.elementLabel.enabled||b()?false:U$1()),Hn=new Map,el=g(()=>{if(!s$1.store.theme.enabled)return [];if(!s$1.store.theme.grabbedBoxes.enabled)return [];i.viewportVersion;let o=new Set(i.labelInstances.map(c=>c.id));for(let c of Hn.keys())o.has(c)||Hn.delete(c);return i.labelInstances.map(c=>{let d=c.elements&&c.elements.length>1,w=c.element,k=!d&&w&&document.body.contains(w)?be(w):c.bounds,X=Hn.get(c.id),ae=X&&X.bounds.x===k.x&&X.bounds.y===k.y&&X.bounds.width===k.width&&X.bounds.height===k.height;if(X&&X.status===c.status&&X.errorMessage===c.errorMessage&&ae)return X;let he=k.x+k.width/2,ne=k.width/2,xe=c.mouseXOffsetRatio!==void 0&&ne>0?he+c.mouseXOffsetRatio*ne:c.mouseXOffsetFromCenter!==void 0?he+c.mouseXOffsetFromCenter:c.mouseX,Te={...c,bounds:k,mouseX:xe};return Hn.set(c.id,Te),Te})}),tl=g(()=>s$1.store.theme.enabled?s$1.store.theme.grabbedBoxes.enabled?(i.viewportVersion,i.grabbedBoxes.map(o=>!o.element||!document.body.contains(o.element)?o:{...o,bounds:be(o.element)})):[]:[]),Xo=g(()=>s$1.store.theme.enabled&&s$1.store.theme.dragBox.enabled&&ke()&&_e()),nl=g(()=>L()?"processing":"hover"),ol=g(()=>{if(!s$1.store.theme.enabled)return false;let o=s$1.store.theme.elementLabel.enabled,c=h$1(),d=L(),w=ke(),E=C(),k=!!q();return !o||c?false:d?true:w&&!E&&k}),ts=g(()=>{i.viewportVersion;let o=i.contextMenuElement;return o?be(o):null}),rl=g(()=>(i.viewportVersion,i.contextMenuPosition)),ns=g(()=>{let o=i.contextMenuElement;if(!o)return;let c=i.frozenElements.length;return c>1?`${c} elements`:Ct(o)||void 0}),[os]=h(()=>({element:i.contextMenuElement,frozenCount:i.frozenElements.length}),async({element:o,frozenCount:c})=>!o||c>1?void 0:await rn(o)??void 0),[rs]=h(()=>i.contextMenuElement,async o=>{if(!o)return null;let c=await vt(o);if(!c||c.length===0)return null;for(let d of c)if(d.fileName&&Et(d.fileName))return {filePath:wt(d.fileName),lineNumber:d.lineNumber};return null}),sl=(o,c,d,w)=>async E=>{let k=i.contextMenuPosition??i.pointer,X=ye(),ae=ts(),he=c.length>1,ne=he?Nn(an(X)):ae,xe=i.wasActivatedByToggle,Te=he?X:ae?[ae]:[];if(u.hideContextMenu(),ne){let We=he?ne.x+ne.width/2:k.x,Ue=Ae(ne,d||"element",w,"copying",o,We,he?c:void 0,Te),pt=false,mn;try{pt=await E(),pt||(mn="Failed to copy");}catch(pn){mn=pn instanceof Error&&pn.message?pn.message:"Action failed";}ut(Ue,pt?"copied":"error",pt?void 0:mn||"Unknown error"),jt(Ue);}else try{await E();}catch{}xe?ue():u.unfreeze();},il=g(()=>{let o=i.contextMenuElement;if(!o)return;let c=rs(),d=i.frozenElements.length>0?i.frozenElements:[o],w=ns(),E=os(),k={element:o,elements:d,filePath:c?.filePath,lineNumber:c?.lineNumber,componentName:E,tagName:w,enterPromptMode:ll,copy:al,hooks:{transformHtmlContent:s$1.hooks.transformHtmlContent,transformScreenshot:s$1.hooks.transformScreenshot,onOpenFile:s$1.hooks.onOpenFile,transformOpenFileUrl:s$1.hooks.transformOpenFileUrl},performWithFeedback:sl(o,d,w,E),hideContextMenu:()=>{setTimeout(()=>{u.hideContextMenu();},0);},hideOverlay:()=>{te=true,Dt.style.visibility="hidden";},showOverlay:()=>{te=false,Dt.style.visibility="";},cleanup:()=>{i.wasActivatedByToggle?ue():u.unfreeze();}};return s$1.hooks.transformActionContext(k)}),al=()=>{let o=i.contextMenuElement;if(!o)return;let c=i.contextMenuPosition??i.pointer,d=[...i.frozenElements];W({element:o,positionX:c.x,positionY:c.y,elements:d.length>1?d:void 0,shouldDeactivateAfter:i.wasActivatedByToggle}),setTimeout(()=>{u.hideContextMenu();},0);},ll=o=>{let c=i.contextMenuElement,d=i.contextMenuPosition;!c||!d||(o&&u.setSelectedAgent(o),P(c),u.enterPromptMode(d,c),setTimeout(()=>{u.hideContextMenu();},0));},cl=()=>{setTimeout(()=>{u.hideContextMenu(),ue();},0);},ul=()=>{setTimeout(()=>{u.hideContextMenu();},0);},dl=o=>{let c=ge.sessions().get(o);if(!c)return;let d=ge.session.getElement(o);d&&document.contains(d)&&setTimeout(()=>{T()||(u.setWasActivatedByToggle(true),rt()),u.setPointer(c.position),u.setFrozenElement(d),u.freeze(),u.showContextMenu(c.position,d);},0);},fl=o=>{let c=i.labelInstances.find(k=>k.id===o);if(!c?.element||!document.contains(c.element))return;let d=be(c.element),w={x:c.mouseX??d.x+d.width/2,y:d.y+d.height/2},E=c.elements&&c.elements.length>0?c.elements.filter(k=>document.contains(k)):[c.element];setTimeout(()=>{T()||(u.setWasActivatedByToggle(true),rt()),u.setPointer(w),u.setFrozenElements(E),E.length>1&&c.bounds&&u.setFrozenDragRect(Gr(c.bounds)),u.freeze(),u.showContextMenu(w,c.element);},0);};f(()=>{let o=s$1.store.theme.hue;o!==0?Dt.style.filter=`hue-rotate(${o}deg)`:Dt.style.filter="";}),s$1.store.theme.enabled&&t(()=>n(ki,{get selectionVisible(){return Wo()},get selectionBounds(){return ie()},get selectionBoundsMultiple(){return Ke()},get selectionShouldSnap(){return i.frozenElements.length>0||Ne().length>0},get selectionElementsCount(){return Se()},get selectionFilePath(){return i.selectionFilePath??void 0},get selectionLineNumber(){return i.selectionLineNumber??void 0},get selectionTagName(){return Za()},get selectionComponentName(){return Ja()},get selectionLabelVisible(){return Qa()},selectionLabelStatus:"idle",get labelInstances(){return el()},get dragVisible(){return Xo()},get dragBounds(){return Le()},get grabbedBoxes(){return tl()},labelZIndex:2147483647,get mouseX(){return s(()=>i.frozenElements.length>1)()?void 0:J().x},get mouseY(){return J().y},get crosshairVisible(){return Kt()},get isFrozen(){return N()||T()||H()},get inputValue(){return i.inputText},get isPromptMode(){return h$1()},get hasAgent(){return m()},get isAgentConnected(){return i.isAgentConnected},get agentSessions(){return ge.sessions()},get supportsUndo(){return i.supportsUndo},get supportsFollowUp(){return i.supportsFollowUp},get dismissButtonText(){return i.dismissButtonText},get onDismissSession(){return ge.session.dismiss},get onUndoSession(){return ge.session.undo},onFollowUpSubmitSession:Na,onAcknowledgeSessionError:Ia,get onRetrySession(){return ge.session.retry},onShowContextMenuSession:dl,onShowContextMenuInstance:fl,onLabelInstanceHoverChange:Ko,onInputChange:Ln,onInputSubmit:()=>void Jr(),onInputCancel:Uo,onToggleExpand:Da,get isPendingDismiss(){return Y()},onConfirmDismiss:Oa,onCancelDismiss:Ra,get pendingAbortSessionId(){return S()},onRequestAbortSession:o=>u.setPendingAbortSessionId(o),onAbortSession:_a,get theme(){return s$1.store.theme},get toolbarVisible(){return s$1.store.theme.toolbar.enabled},get isActive(){return T()},get isCommentMode(){return F()},onToggleActive:ka,onComment:Fa,get enabled(){return re()},onToggleEnabled:La,get shakeCount(){return qe()},onToolbarStateChange:o=>{Ie(o),At.forEach(c=>c(o));},onSubscribeToToolbarStateChanges:o=>(At.add(o),()=>{At.delete(o);}),onToolbarSelectHoverChange:M,get contextMenuPosition(){return rl()},get contextMenuBounds(){return ts()},get contextMenuTagName(){return ns()},get contextMenuComponentName(){return os()},get contextMenuHasFilePath(){return !!rs()?.filePath},get actions(){return s$1.store.actions},get actionContext(){return il()},onContextMenuDismiss:cl,onContextMenuHide:ul}),Dt),m()&&ge.session.tryResume();let ml=async o=>{let c=Array.isArray(o)?o:[o];return c.length===0?false:await x(c)},ss=()=>{let o=Gt();o&&ge._internal.setOptions(o);let c=!!o?.provider;if(u.setHasAgentProvider(c),c&&o?.provider){let d=o.provider;u.setAgentCapabilities({supportsUndo:!!d.undo,supportsFollowUp:!!d.supportsFollowUp,dismissButtonText:d.dismissButtonText,isAgentConnected:false}),d.checkConnection&&d.checkConnection().then(w=>{Gt()?.provider===d&&u.setAgentCapabilities({supportsUndo:!!d.undo,supportsFollowUp:!!d.supportsFollowUp,dismissButtonText:d.dismissButtonText,isAgentConnected:w});}).catch(()=>{}),ge.session.tryResume();}else u.setAgentCapabilities({supportsUndo:false,supportsFollowUp:false,dismissButtonText:void 0,isAgentConnected:false});},Yo={activate:()=>{!T()&&re()&&Rt();},deactivate:()=>{T()&&ue();},toggle:()=>{T()?ue():re()&&Rt();},isActive:()=>T(),isEnabled:()=>re(),setEnabled:o=>{o!==re()&&(Re(o),o||(g$1()&&u.release(),T()&&ue(),pe!==null&&(window.clearTimeout(pe),pe=null),le=false));},getToolbarState:()=>It(),setToolbarState:o=>{let c=It(),d={edge:o.edge??c?.edge??"bottom",ratio:o.ratio??c?.ratio??.5,collapsed:o.collapsed??c?.collapsed??false,enabled:o.enabled??c?.enabled??true};vn(d),Ie(d),o.enabled!==void 0&&o.enabled!==re()&&Re(o.enabled),At.forEach(w=>w(d));},onToolbarStateChange:o=>(At.add(o),()=>{At.delete(o);}),dispose:()=>{Zr=false,At.clear(),l$1();},copyElement:ml,getSource:async o=>{let c=await vt(o);if(!c)return null;for(let d of c)if(d.fileName&&Et(d.fileName))return {filePath:wt(d.fileName),lineNumber:d.lineNumber??null,componentName:d.functionName&&on(d.functionName)?d.functionName:null};return null},getState:()=>({isActive:T(),isDragging:C(),isCopying:L(),isPromptMode:h$1(),isCrosshairVisible:Kt()??false,isSelectionBoxVisible:Wo()??false,isDragBoxVisible:Xo()??false,targetElement:V(),dragBounds:Le()??null,grabbedBoxes:i.grabbedBoxes.map(o=>({id:o.id,bounds:o.bounds,createdAt:o.createdAt})),selectionFilePath:i.selectionFilePath,toolbarState:He()}),setOptions:o=>{s$1.setOptions(o);},registerPlugin:o=>{s$1.register(o,Yo),ss();},unregisterPlugin:o=>{s$1.unregister(o),ss();},getPlugins:()=>s$1.getPluginNames(),getDisplayName:To};for(let o of _u)s$1.register(o,Yo);return Yo})};/*! Bundled license information: