react-grab 0.1.47 → 0.1.48-dev.20fb4f1

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.
Files changed (40) hide show
  1. package/README.md +1 -1
  2. package/dist/copy-content-CPdjqgu5.js +10 -0
  3. package/dist/{copy-content-CqFXlS9J.d.ts → copy-content-Ca2txV90.d.cts} +67 -23
  4. package/dist/{copy-content-BoeDJ9l0.d.cts → copy-content-D6YIoJK4.d.ts} +67 -23
  5. package/dist/copy-content-cjYKypHY.cjs +10 -0
  6. package/dist/core/index.cjs +1 -1
  7. package/dist/core/index.d.cts +2 -2
  8. package/dist/core/index.d.ts +2 -2
  9. package/dist/core/index.js +1 -1
  10. package/dist/core-CBM7-BmH.js +14 -0
  11. package/dist/core-CKtUC3h5.cjs +14 -0
  12. package/dist/create-pointer-move-prompt-handoff-BPmzM4Dd.js +9 -0
  13. package/dist/create-pointer-move-prompt-handoff-DhxKa56V.cjs +9 -0
  14. package/dist/freeze-updates-BmKYPOzz.js +52 -0
  15. package/dist/freeze-updates-CZXNftlx.cjs +52 -0
  16. package/dist/{index-ssynL7Na.d.ts → index-C_tGQJlm.d.ts} +1 -1
  17. package/dist/{index-Ci1cIBwN.d.cts → index-CgWlIagV.d.cts} +1 -1
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.d.cts +3 -3
  20. package/dist/index.d.ts +3 -3
  21. package/dist/index.global.js +20 -20
  22. package/dist/index.js +1 -1
  23. package/dist/primitives.cjs +2 -2
  24. package/dist/primitives.d.cts +1 -1
  25. package/dist/primitives.d.ts +1 -1
  26. package/dist/primitives.js +2 -2
  27. package/dist/renderer-B-2YncDT.cjs +9 -0
  28. package/dist/renderer-D9Kx4PlT.js +9 -0
  29. package/dist/styles.css +1 -1
  30. package/package.json +13 -4
  31. package/dist/action-shortcuts-DK7e2eLe.cjs +0 -9
  32. package/dist/action-shortcuts-DN8Q9O9k.js +0 -9
  33. package/dist/copy-content-BG5RrXFG.cjs +0 -10
  34. package/dist/copy-content-Drw2cQ8V.js +0 -10
  35. package/dist/core-CX-oJjgu.js +0 -15
  36. package/dist/core-CvEeB6XL.cjs +0 -15
  37. package/dist/freeze-updates-8grKqOPM.cjs +0 -51
  38. package/dist/freeze-updates-DiPhJRln.js +0 -51
  39. package/dist/renderer-B79Ze5ly.js +0 -9
  40. package/dist/renderer-CjUwZ1og.cjs +0 -9
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Copy any UI element for your agent.
7
7
 
8
- React Grab points agents to the actual source behind each selection. Agents are [**2× faster**](https://benchmark.react-grab.com/) and more accurate when using React Grab.
8
+ React Grab points agents to the actual source behind each selection. Agents are [**2× faster**](https://react-grab.com/benchmarks) and more accurate when using React Grab.
9
9
 
10
10
  [**Website →**](https://react-grab.com)
11
11
 
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright (c) 2025 Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import{At as e,Bt as t,C as n,D as r,E as i,It as a,L as o,Lt as s,M as c,N as l,O as u,Ot as d,P as f,R as p,Rt as m,S as h,T as ee,U as te,b as g,j as _,jt as ne,kt as re,mt as ie,w as ae,x as v,y as oe}from"./freeze-updates-BmKYPOzz.js";var y=class extends Error{constructor(e){super(e),this.name=`ReactGrabError`}},se=class extends y{constructor(){super(`Can't generate CSS selector for non-element node type.`),this.name=`NonElementNodeError`}},ce=class extends y{constructor(e){super(`Timeout: Can't find a unique selector after ${e}ms`),this.name=`SelectorTimeoutError`,this.timeoutMs=e}},le=class extends y{constructor(){super(`Selector was not found.`),this.name=`SelectorNotFoundError`}},ue=class extends y{constructor(){super(`Failed to copy`),this.name=`CopyFailedError`}};const de=e=>e===void 0||!Number.isFinite(e)?3:Math.max(0,Math.floor(e)),b=e=>{try{return decodeURIComponent(e)}catch{return e}},fe=/(?:^|[/\\])node_modules[/\\]/,pe=/[/\\]\.vite[/\\]deps[^/\\]*[/\\]/,me=/\.[mc]?[jt]sx?$/i,he=/^chunk-[A-Za-z0-9_-]+$/,ge=/[/\\]/,_e=/^(.+?)@v?\d/,x=e=>e.split(ge).filter(Boolean),ve=e=>{let[t,n]=x(e);return!t||t.startsWith(`.`)?null:t.startsWith(`@`)?n?`${t}/${n}`:null:t},ye=e=>{let t=x(e)[0];if(!t)return null;let n=t.replace(me,``);if(he.test(n))return null;if(!n.startsWith(`@`))return n;let r=n.indexOf(`_`);return r===-1?null:`${n.slice(0,r)}/${n.slice(r+1)}`},S=(e,t,n)=>{let r=e.split(t);return r.length>1?n(r[r.length-1]):null},C=e=>e?.match(_e)?.[1]??null,be=e=>{let t;try{t=new URL(e)}catch{return null}if(!t.hostname)return null;let n=x(t.pathname).map(b);for(let[e,t]of n.entries()){if(t.startsWith(`@`)){let r=C(n[e+1]);if(r)return`${t}/${r}`;continue}let r=C(t);if(r)return r}return null},xe=e=>S(e,pe,ye)??S(e,fe,ve),Se=e=>{if(!e)return null;let t=h(e);return t&&(xe(b(t))||be(e))||null},Ce=/^@[A-Za-z0-9][A-Za-z0-9._-]*$/,we=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,Te=new Set([`app`,`web`,`website`,`frontend`,`client`,`src`]),Ee=new Set([`app`,`src`,`components`,`pages`,`features`,`modules`,`hooks`,`lib`,`utils`,`ui`,`shared`,`common`,`core`,`styles`,`assets`]),De=e=>{let t=e;for(;t.startsWith(`../`)||t.startsWith(`./`);)t=t.slice(t.startsWith(`../`)?3:2);return t},Oe=e=>{let t=De(b(h(e)));if(t.startsWith(`/`))return null;let[n,r,...i]=x(t);return!n||!r||i.length===0||!Ce.test(n)||Ee.has(n.slice(1))||!we.test(r)||me.test(r)||Te.has(r)?null:`${n}/${r}`},ke=e=>e?Se(e)??Oe(e):null,w=e=>{if(!e)return{origin:`unknown`,packageName:null};let t=ke(e);return t?{origin:`package`,packageName:t}:i(e)?{origin:`app`,packageName:null}:{origin:`unknown`,packageName:null}},Ae=new Set([`role`,`name`,`aria-label`,`rel`,`href`]),T=e=>{if(!/^[a-z-]{3,}$/i.test(e))return!1;let t=e.split(/-|[A-Z]/);for(let e of t)if(e.length<=2||/[^aeiou]{4,}/i.test(e))return!1;return!0},je=(e,t)=>{let n=Ae.has(e)||e.startsWith(`data-`)&&T(e),r=T(t)&&t.length<100||t.startsWith(`#`)&&T(t.slice(1));return n&&r},E=e=>{let t=e[0].name;for(let n=1;n<e.length;n++)t=`${e[n].name} > ${t}`;return t},D=e=>{let t=0;for(let n of e)t+=n.penalty;return t},O=(e,t)=>D(e)-D(t),k=(e,t)=>{let n=e.parentNode;if(!n)return;let r=n.firstChild;if(!r)return;let i=0;for(;r&&(r instanceof Element&&(t===void 0||r.tagName.toLowerCase()===t)&&i++,r!==e);)r=r.nextSibling;return i},Me=(e,t)=>e===`html`?`html`:`${e}:nth-child(${t})`,A=(e,t)=>e===`html`?`html`:`${e}:nth-of-type(${t})`,Ne=(e,t)=>{let n=[],r=e.getAttribute(`id`),i=e.tagName.toLowerCase();r&&T(r)&&n.push({name:`#${CSS.escape(r)}`,penalty:0});for(let t of e.classList)T(t)&&n.push({name:`.${CSS.escape(t)}`,penalty:1});for(let r of e.attributes)t(r.name,r.value)&&n.push({name:`[${CSS.escape(r.name)}="${CSS.escape(r.value)}"]`,penalty:2});n.push({name:i,penalty:5});let a=k(e,i);a!==void 0&&n.push({name:A(i,a),penalty:10});let o=k(e);return o!==void 0&&n.push({name:Me(i,o),penalty:50}),n},j=(e,t=ie,n=[])=>{if(t<=0)return[];if(e.length===0)return[n];let r=[];for(let i of e[0]){let a=t-r.length;if(a<=0)break;r.push(...j(e.slice(1),a,[...n,i]))}return r},Pe=(e,t)=>{let n=t.getRootNode?.();return n instanceof ShadowRoot?n:e instanceof Document?e:e.ownerDocument},M=(e,t)=>t.querySelectorAll(E(e)).length===1,Fe=(e,t)=>{let n=e,r=[];for(;n&&n!==t;){let e=n.tagName.toLowerCase(),t=k(n,e);if(t===void 0)return;r.push({name:A(e,t),penalty:10}),n=n.parentElement}return M(r,t)?r:void 0},Ie=(e,t,n,r)=>{if(e.nodeType!==Node.ELEMENT_NODE)throw new se;if(e.tagName.toLowerCase()===`html`)return`html`;let i=Pe(t,e),a=Date.now(),o=[],s=e,c=0,l;for(;s&&s!==i&&!l;)if(o.push(Ne(s,r)),s=s.parentElement,c++,c>=3){let t=j(o);t.sort(O);for(let r of t){if(Date.now()-a>n){let t=Fe(e,i);if(!t)throw new ce(n);return E(t)}if(M(r,i)){l=r;break}}}if(!l&&c<3){let e=j(o);e.sort(O);for(let t of e){if(Date.now()-a>n)break;if(M(t,i)){l=t;break}}}if(!l)throw new le;return E(l)},N=e=>e.ownerDocument.body??e.ownerDocument.documentElement,P=new Set([`data-testid`,`data-test-id`,`data-test`,`data-cy`,`data-qa`,`aria-label`,`href`,`src`,`role`,`name`,`title`,`alt`]),F=e=>e.length>0&&e.length<=120,I=(e,t)=>{try{let n=e.ownerDocument.querySelectorAll(t);return n.length===1&&n[0]===e}catch{return!1}},Le=e=>{if(e instanceof HTMLElement&&e.id){let t=`#${CSS.escape(e.id)}`;if(I(e,t))return t}for(let t of P){let n=e.getAttribute(t);if(!n||!F(n))continue;let r=`[${t}=${JSON.stringify(n)}]`;if(I(e,r))return r;let i=`${e.tagName.toLowerCase()}${r}`;if(I(e,i))return i}return null},Re=e=>{let t=[],n=N(e),r=e;for(;r;){if(r instanceof HTMLElement&&r.id){t.unshift(`#${CSS.escape(r.id)}`);break}let e=r.parentElement;if(!e){t.unshift(r.tagName.toLowerCase());break}let i=Array.from(e.children).indexOf(r)+1;if(t.unshift(`${r.tagName.toLowerCase()}:nth-child(${i})`),e===n){t.unshift(n.tagName.toLowerCase());break}r=e}return t.join(` > `)},L=e=>{let t=Le(e);if(t)return t;try{let t=Ie(e,N(e),200,(e,t)=>je(e,t)||P.has(e)&&F(t));if(t)return t}catch{}return Re(e)},ze=[`[id]`,`[data-testid]`,`[data-test-id]`,`[data-test]`,`[data-cy]`,`[data-qa]`,`[aria-label]`,`a[href]`,`button`,`input`,`select`,`textarea`,`[role="button"]`,`[role="link"]`,`[role="checkbox"]`,`[role="radio"]`,`[role="switch"]`,`[role="tab"]`,`[role="menuitem"]`,`[role="option"]`,`[role="textbox"]`,`[role="combobox"]`,`[role="slider"]`,`[role="spinbutton"]`].join(`,`),Be=e=>{let{body:t,documentElement:n}=e.ownerDocument;if(e===t||e===n)return!0;if(!t)return!1;let r=t.getElementsByTagName(`*`).length;return r===0?!1:e.getElementsByTagName(`*`).length/r>=te},R=e=>{let t=e.closest(ze);return!t||Be(t)?e:t},Ve=[/\/assets\/[^/?#]+-[a-z0-9_-]{6,}\.(?:c|m)?js(?:[?#]|$)/,/\/_next\/static\/.*\.(?:c|m)?js(?:[?#]|$)/,/\/static\/chunks\/.*\.(?:c|m)?js(?:[?#]|$)/],z=e=>{if(!e)return!1;let t=`/${v(e)}`.toLowerCase();return Ve.some(e=>e.test(t))},He=e=>{if(!e)return!1;let t=`/${v(e)}/`.toLowerCase();return a.some(e=>t.includes(e))},B=e=>e.map(e=>`\n in ${e}`).join(``),Ue=[`about://React/`,`rsc://React/`],We=e=>Ue.some(t=>e.startsWith(t)),Ge=e=>{for(let t of Ue){if(!e.startsWith(t))continue;let n=e.indexOf(`/`,t.length);if(n===-1)continue;let r=n+1,i=e.lastIndexOf(`?`);return b(i>r?e.slice(r,i):e.slice(r))}return e},Ke=e=>{if(typeof e!=`object`||!e||!(`status`in e)||e.status!==`fulfilled`||!(`value`in e)||typeof e.value!=`object`||e.value===null||!(`originalStackFrame`in e.value))return null;let t=e.value.originalStackFrame;return typeof t!=`object`||!t||!(`file`in t)||typeof t.file!=`string`||!t.file||`ignored`in t&&t.ignored?null:{file:t.file,line1:`line1`in t&&typeof t.line1==`number`?t.line1:null,column1:`column1`in t&&typeof t.column1==`number`?t.column1:null}},qe=async(e,t)=>{let n=[],r=[];for(let t=0;t<e.length;t++){let i=e[t];!i.isServer||!i.fileName||(n.push(t),r.push({file:Ge(i.fileName),methodName:i.functionName??`<unknown>`,line1:i.lineNumber??null,column1:i.columnNumber??null,arguments:[]}))}if(r.length===0)return e;let i=new AbortController,a=setTimeout(()=>i.abort(),m),o=()=>i.abort();t?.aborted&&i.abort(),t?.addEventListener(`abort`,o);try{let t=await fetch(`${oe()}/__nextjs_original-stack-frames`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({frames:r,isServer:!0,isEdgeServer:!1,isAppDirectory:!0}),priority:`high`,signal:i.signal});if(!t.ok)return e;let a=await t.json();if(!Array.isArray(a))return e;let o=[...e];for(let t=0;t<n.length;t++){let r=Ke(a[t]);if(!r)continue;let i=n[t];o[i]={...e[i],fileName:r.file,lineNumber:r.line1??void 0,columnNumber:r.column1??void 0,isSymbolicated:!0}}return o}catch{return e}finally{clearTimeout(a),t?.removeEventListener(`abort`,o)}},Je=e=>{let t=new Map;return o(e,e=>{if(!ae(e))return!1;let n=u(e._debugStack.stack);if(!n)return!1;for(let e of r(n))!e.functionName||!e.fileName||We(e.fileName)&&(t.has(e.functionName)||t.set(e.functionName,{...e,isServer:!0}));return!1},!0),t},Ye=(e,t)=>{if(!t.some(e=>e.isServer&&!e.fileName&&e.functionName))return t;let n=Je(e);return n.size===0?t:t.map(e=>{if(!e.isServer||e.fileName||!e.functionName)return e;let t=n.get(e.functionName);return t?{...e,fileName:t.fileName,lineNumber:t.lineNumber,columnNumber:t.columnNumber}:e})};let V=0;const Xe=[],Ze=()=>V<3?(V+=1,Promise.resolve()):new Promise(e=>{Xe.push(e)}),Qe=()=>{let e=Xe.shift();if(e){e();return}--V},$e=async(e,t,n=s)=>{await Ze();let r=new AbortController,i,a=new Promise(e=>{i=setTimeout(()=>{r.abort(),e(t)},n)}),o=e(r.signal);o.catch(()=>{});try{return await Promise.race([o,a])}finally{clearTimeout(i),Qe()}},H=(e,t)=>e.length>t?`${e.slice(0,t)}...`:e,et=e=>e.startsWith(`data-react-grab-`),tt=e=>e.replace(/\s+/g,` `).trim(),nt=e=>{let t=[];for(let n of e.childNodes){if(n.nodeType!==Node.TEXT_NODE)continue;let e=tt(n.textContent??``);e&&t.push(e)}return t.join(` `)},rt=e=>e.getAttribute(`aria-hidden`)===`true`||e.hasAttribute(`hidden`)?!0:ne.has(e.tagName.toLowerCase()),it=(e,t,n)=>{if(e.nodeType===Node.TEXT_NODE){let r=tt(e.textContent??``);return r?(t.push(r),n-r.length):n}if(!(e instanceof Element)||rt(e))return n;for(let r of e.childNodes)if(n=it(r,t,n),n<=0)break;return n},at=(e,t)=>{if(rt(e))return``;let n=nt(e);if(!d.has(t)||n&&e.children.length===0)return n;let r=[];return it(e,r,100),r.join(` `)},ot=e=>H(e,15),st=t=>{let n=[];for(let r of e){let e=t.getAttribute(r);e&&n.push(`${r}="${e}"`)}return n.length>0?` ${n.join(` `)}`:``},ct=e=>e===`class`||e===`className`||e===`style`,lt=e=>{let t=[],n=[],r=``;for(let{name:i,value:a}of e.attributes)if(!et(i)){if(ct(i)){i!==`style`&&a&&(r=` class="${ot(a)}"`);continue}re.has(i)?t.push(a?` ${i}="${a}"`:` ${i}`):a&&n.push(` ${i}="${ot(a)}"`)}return t.join(``)+n.join(``)+r},ut=e=>e.length===0?``:e.length<=2?e.map(e=>`<${_(e)} ...>`).join(`
10
+ `):`(${e.length} elements)`,dt=e=>{let t=_(e);if(!(e instanceof HTMLElement))return`<${t}${st(e)} />`;let n=lt(e),r=H(at(e,t),100);return r?`<${t}${n}>${r}</${t}>`:`<${t}${n} />`},ft=e=>{let t=_(e),n=lt(e),r=at(e,t),i=[],a=[],o=!1;for(let t of e.childNodes)t.nodeType!==Node.COMMENT_NODE&&(t.nodeType===Node.TEXT_NODE?t.textContent&&t.textContent.trim().length>0&&(o=!0):t instanceof Element&&(o?a.push(t):i.push(t)));let s=r.length>0&&d.has(t),c=``,l=ut(i);l&&!s&&(c+=`\n ${l}`),r&&(c+=`\n ${H(r,100)}`);let u=ut(a);return u&&!s&&(c+=`\n ${u}`),c.length>0?`<${t}${n}>${c}\n</${t}>`:`<${t}${n} />`},pt=new Set([`_`,`$`,`motion.`,`styled.`,`chakra.`,`ark.`,`Primitive.`,`Slot.`]),mt=new Set(`AppRouter.AppRouterAnnouncer.AppDevOverlay.AppDevOverlayErrorBoundary.ClientPageRoot.ClientSegmentRoot.DevRootHTTPAccessFallbackBoundary.ErrorBoundary.ErrorBoundaryHandler.GracefulDegradeBoundary.HTTPAccessErrorFallback.HTTPAccessFallbackBoundary.HTTPAccessFallbackErrorBoundary.HandleRedirect.Head.HistoryUpdater.HotReload.InnerLayoutRouter.InnerScrollAndFocusHandler.InnerScrollAndFocusHandlerOld.InnerScrollAndMaybeFocusHandler.InnerScrollHandlerNew.LoadableComponent.LoadingBoundary.LoadingBoundaryProvider.NotAllowedRootHTTPFallbackError.OfflineProvider.OuterLayoutRouter.RedirectBoundary.RedirectErrorBoundary.RenderFromTemplateContext.RenderValidationBoundaryAtThisLevel.ReplaySsrOnlyErrors.RootErrorBoundary.RootLevelDevOverlayElement.Router.ScrollAndFocusHandler.ScrollAndMaybeFocusHandler.SegmentBoundaryTrigger.SegmentBoundaryTriggerNode.SegmentStateProvider.SegmentTrieNode.SegmentViewNode.SegmentViewStateNode.ServerRoot.body.html`.split(`.`)),ht=new Set([`<anonymous>`,`<unknown>`,`Anonymous`,`Unknown`]),gt=new Set([`Suspense`,`Fragment`,`StrictMode`,`Profiler`,`SuspenseList`]),_t=new Set([`MotionDOMComponent`,`Slot`,`SlotClone`]),vt=[`.Consumer`,`.Context`,`.Provider`,`.Slot`,`.SlotClone`,`.Slottable`,`ProviderProvider`],yt=e=>{if(ht.has(e)||mt.has(e)||gt.has(e)||_t.has(e))return!0;for(let t of vt)if(e.endsWith(t))return!0;for(let t of pt)if(e.startsWith(t))return!0;return!1},bt=e=>!(!e||yt(e)),xt=e=>!(e.length<=1||yt(e)||e[0]!==e[0].toUpperCase()),U=e=>e&&xt(e)?e:null,W=e=>!He(e)&&!z(e),G=e=>{if(!f())return e;let t=e;for(;t;){if(p(t))return t;t=t.parentElement}return e},St=e=>{let t=e.return?.child??null;for(;t;){if(t!==e&&t.key!==null)return!0;t=t.sibling}return!1},Ct=e=>{let t=e,n=0;for(;t;){if(t.key!==null&&St(t))return String(t.key);if(c(t)&&(n+=1,n===2))break;t=t.return}return null},wt=e=>f()?Ct(p(G(e))):null,K=new WeakMap,q=new WeakMap,Tt=e=>t=>fetch(t,{signal:e,priority:`high`}),Et=e=>$e(async t=>{try{let n=p(e);if(!n)return null;let r=await ee(n,!0,Tt(t));return g()?await qe(Ye(n,r),t):r}catch{return null}},null),J=e=>{if(!f())return Promise.resolve([]);let t=G(e),n=K.get(t);if(n)return n;let r=Et(t).then(e=>(e===null&&K.delete(t),e));return K.set(t,r),r},Dt=async e=>{if(!f())return null;let t=await J(e);if(!t)return null;for(let e of t){let t=U(e.functionName);if(t)return t}return null},Ot=e=>e.find(e=>!!U(e.functionName))??e[0]??null,kt=e=>!e||!c(e)?null:U(l(e.type)),At=e=>$e(async t=>{let r=p(G(e));if(!r)return null;try{let e=await n(r,!0,Tt(t));return e?.fileName?{filePath:v(e.fileName),lineNumber:e.lineNumber??null,columnNumber:e.columnNumber??null,componentName:U(e.functionName)??kt(r._debugOwner),origin:w(e.fileName).origin}:null}catch{return null}},null),jt=e=>{let t=G(e),n=q.get(t);if(n)return n;let r=At(t).then(e=>(e||q.delete(t),e));return q.set(t,r),r},Mt=(e,t)=>{let n=(e,t)=>{let n=Ot(e);return n?.fileName?{filePath:v(n.fileName),lineNumber:n.lineNumber??null,columnNumber:n.columnNumber??null,componentName:U(n.functionName),origin:t}:null},r=t.filter(e=>w(e.fileName).origin===`app`),i=r.filter(e=>W(e.fileName));return e?.origin===`app`&&W(e.filePath)?e:n(i,`app`)||(e?.origin===`app`&&!z(e.filePath)?e:n(r,`app`)||(e?.origin===`app`||e?.origin===`package`?e:n(t.filter(e=>w(e.fileName).origin===`package`),`package`)))},Nt=async e=>{let t=await jt(e);return t?.origin===`app`&&W(t.filePath)?t:Mt(t,await J(e)??[])},Pt=e=>Y(G(e),1)[0]??null,Y=(e,t,n=()=>!0)=>{if(!f())return[];let r=p(e);if(!r)return[];let i=[];return o(r,e=>{if(i.length>=t)return!0;if(c(e)){let t=l(e.type);t&&bt(t)&&n(t)&&i.push(t)}return!1},!0),i},Ft=[`/src/app/`,`/src/pages/`,`/app/`,`/pages/`],It=(e,t)=>{let n=v(e);if(!t||!n.startsWith(`/`))return n;for(let e of Ft){let t=n.indexOf(e);if(t!==-1)return`/./${n.slice(t+1)}`}return n},X=(e,t)=>{let n=It(e.filePath,t),r=t&&e.lineNumber?`${n}:${e.lineNumber}${e.columnNumber?`:${e.columnNumber}`:``}`:n;return e.componentName?`\n in ${e.componentName} (at ${r})`:`\n in ${r}`},Z={isAppSource:!1,consumesBudget:!1},Lt=(e,t,n,r)=>{let i=t.packageName,a=t.origin===`app`?e.fileName:null;if(e.isServer&&!a&&(n||!e.functionName)){let e=i?`${i} at Server`:`at Server`;return{text:`\n in ${n??`<anonymous>`} (${e})`,...Z}}return!a&&n?{text:i?`\n in ${n} (${i})`:`\n in ${n}`,...Z}:i?{text:`\n in ${i}`,...Z}:a?{text:X({componentName:n,filePath:a,lineNumber:e.lineNumber??null,columnNumber:e.columnNumber??null},r),isAppSource:!0,consumesBudget:W(a)}:null},Rt=(e,t={},n=null)=>{let r=de(t.maxLines),i=Math.max(r,20),a=g(),o=[],s=new Set,c=null,l=!1,u=!1,d=!1,f=0,p=e=>{e&&s.add(e)};if(n){let e=n.origin===`app`&&W(n.filePath);u=e,e&&(f+=1),p(n.componentName),o.push(X(n,a))}for(let t of e){if(f>=r||o.length>=i)break;let e=w(t.fileName),s=U(t.functionName),m=e.packageName?`${e.packageName}:${s??``}:${t.isServer?`server`:`client`}`:null;if(m&&m===c)continue;if(!l&&s&&s===n?.componentName){l=!0;continue}let h=Lt(t,e,s,a);h!==null&&h.text!==o[o.length-1]&&(h.isAppSource&&h.consumesBudget&&(u=!0),h.consumesBudget&&(f+=1,d=!0),p(s),o.push(h.text),c=m)}return{text:o.join(``),shouldAppendSelectorHint:!u,hasBudgetedStackFrame:d,renderedComponentNames:s}},zt=(e,t)=>{let n=Mt(e,t);return n?.origin===`app`?n:null},Bt=(e,t,n)=>{let r=Y(G(e),n,e=>xt(e)&&!t.renderedComponentNames.has(e));return r.length===0?t:{...t,text:`${t.text}${B(r)}`}},Q=async(e,t={})=>{let n=await jt(e),r=await J(e)??[],i=zt(n,r),a=de(t.maxLines),o=Rt(r,t,i);if(o.text)return o.hasBudgetedStackFrame?o:Bt(e,o,a);let s=Y(G(e),a);return{text:B(s),shouldAppendSelectorHint:!0,hasBudgetedStackFrame:!1,renderedComponentNames:new Set(s)}},Vt=async(e,t={})=>(await Q(e,t)).text,$=(e,t)=>{let n=wt(e),r=n===null?``:`\n key: "${n}"`,i=t.shouldAppendSelectorHint?`\n selector: ${L(R(e))}`:``;return`${t.text}${r}${i}`},Ht=async(e,t={})=>{let n=await Q(e,t);return`${dt(e)}${$(e,n).replace(/\n\s+/g,` `)}`},Ut=async(e,t={})=>{let n=G(e);return`${ft(n)}${$(n,await Q(n,t))}`},Wt=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),Gt=(e,n)=>{let r=n?.componentName??`div`,i={version:t,content:e,entries:n?.entries??[{tagName:n?.tagName,componentName:r,content:e,commentText:n?.commentText}],timestamp:Date.now()},a=t=>{t.preventDefault(),t.clipboardData?.setData(`text/plain`,e),t.clipboardData?.setData(`text/html`,`<meta charset='utf-8'><pre><code>${Wt(e)}</code></pre>`),t.clipboardData?.setData(`application/x-react-grab`,JSON.stringify(i))};document.addEventListener(`copy`,a);let o=document.createElement(`textarea`);o.value=e,o.style.position=`fixed`,o.style.left=`-9999px`,o.ariaHidden=`true`,document.body.appendChild(o),o.select();try{return typeof document.execCommand==`function`?document.execCommand(`copy`):!1}finally{document.removeEventListener(`copy`,a),o.remove()}};export{Dt as a,Nt as c,L as d,ue as f,Ht as i,ft as l,Ut as n,J as o,Pt as r,Vt as s,Gt as t,R as u};
@@ -6,6 +6,8 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
+ import { ReactNode } from "react";
10
+
9
11
  //#region ../../node_modules/.pnpm/solid-js@1.9.12/node_modules/solid-js/types/reactive/observable.d.ts
10
12
  declare global {
11
13
  interface SymbolConstructor {
@@ -214,6 +216,12 @@ interface EnumPendingEdit {
214
216
  }
215
217
  type PendingEdit = NumericPendingEdit | ColorPendingEdit | EnumPendingEdit;
216
218
  type PendingEdits = PendingEdit[];
219
+ interface DesignTokenResolver {
220
+ readonly hasTokens: boolean;
221
+ matchColor: (hex: string) => string | null;
222
+ matchLength: (px: number, cssProperty: string) => string | null;
223
+ stepLength: (px: number, direction: 1 | -1, cssProperty: string) => number | null;
224
+ }
217
225
  interface PreviewStyles {
218
226
  apply: (cssProperties: readonly string[], cssValue: string) => void;
219
227
  restore: () => void;
@@ -222,16 +230,15 @@ interface PreviewStyles {
222
230
  interface EditPanelState {
223
231
  element: Element;
224
232
  position: Position;
225
- selectionBounds: OverlayBounds;
226
233
  properties: EditableProperty[];
227
234
  preview: PreviewStyles;
228
235
  filePath?: string;
229
236
  lineNumber?: number;
230
237
  componentName?: string;
231
238
  tagName?: string;
232
- htmlPreview?: string;
233
239
  initialSearchQuery?: string;
234
240
  hasSessionEdits?: boolean;
241
+ designTokens?: DesignTokenResolver;
235
242
  }
236
243
  interface ContextMenuAction {
237
244
  id: string;
@@ -242,14 +249,15 @@ interface ContextMenuAction {
242
249
  enabled?: boolean | ((context: ActionContext) => boolean);
243
250
  onAction: (context: ContextMenuActionContext) => void | Promise<void>;
244
251
  }
245
- interface ArrowNavigationItem {
252
+ interface HierarchyItem {
246
253
  tagName: string;
247
254
  componentName?: string;
255
+ depth: number;
256
+ isLast: boolean;
248
257
  }
249
- interface ArrowNavigationState {
250
- items: ArrowNavigationItem[];
258
+ interface HierarchyState {
259
+ items: HierarchyItem[];
251
260
  activeIndex: number;
252
- isVisible: boolean;
253
261
  }
254
262
  interface PluginHooks {
255
263
  onActivate?: () => void;
@@ -293,6 +301,12 @@ interface Plugin {
293
301
  }
294
302
  interface Options {
295
303
  enabled?: boolean;
304
+ /**
305
+ * Confine React Grab to a single container element instead of the whole page.
306
+ * Hit-testing, the toolbar viewport, and scroll re-anchoring are scoped to it.
307
+ * Used by the demo build to scope the showcase to its card.
308
+ */
309
+ container?: HTMLElement;
296
310
  activationMode?: ActivationMode;
297
311
  keyHoldDuration?: number;
298
312
  allowActivationInsideInput?: boolean;
@@ -324,12 +338,31 @@ interface Options {
324
338
  interface SettableOptions extends Options {
325
339
  enabled?: never;
326
340
  telemetry?: never;
341
+ container?: never;
327
342
  }
328
343
  interface SourceInfo {
329
344
  filePath: string;
330
345
  lineNumber: number | null;
331
346
  componentName: string | null;
332
347
  }
348
+ interface SelectedElementPayload {
349
+ tagName: string;
350
+ id?: string;
351
+ className?: string;
352
+ textContent?: string;
353
+ componentName?: string;
354
+ filePath?: string;
355
+ lineNumber?: number;
356
+ columnNumber?: number;
357
+ }
358
+ interface ElementSelectedEventDetail {
359
+ elements: SelectedElementPayload[];
360
+ }
361
+ declare global {
362
+ interface WindowEventMap {
363
+ "react-grab:element-selected": CustomEvent<ElementSelectedEventDetail>;
364
+ }
365
+ }
333
366
  interface ToolbarState {
334
367
  edge: "top" | "bottom" | "left" | "right";
335
368
  ratio: number;
@@ -353,6 +386,7 @@ interface ReactGrabAPI {
353
386
  getToolbarState: () => ToolbarState | null;
354
387
  setToolbarState: (state: Partial<ToolbarState>) => void;
355
388
  onToolbarStateChange: (callback: (state: ToolbarState) => void) => () => void;
389
+ reset: () => void;
356
390
  dispose: () => void;
357
391
  copyElement: (elements: Element | Element[]) => Promise<boolean>;
358
392
  getSource: (element: Element) => Promise<SourceInfo | null>;
@@ -412,8 +446,8 @@ interface ReactGrabRendererProps {
412
446
  selectionComponentName?: string;
413
447
  selectionLabelVisible?: boolean;
414
448
  selectionLabelStatus?: SelectionLabelStatus;
415
- selectionArrowNavigationState?: ArrowNavigationState;
416
- onArrowNavigationSelect?: (index: number) => void;
449
+ hierarchyState?: HierarchyState;
450
+ hierarchyMenuPosition?: DropdownAnchor | null;
417
451
  labelInstances?: SelectionLabelInstance[];
418
452
  dragVisible?: boolean;
419
453
  dragBounds?: OverlayBounds;
@@ -427,6 +461,8 @@ interface ReactGrabRendererProps {
427
461
  inputValue?: string;
428
462
  isPromptMode?: boolean;
429
463
  onShowContextMenuInstance?: (instanceId: string) => void;
464
+ onRetryInstance?: (instanceId: string) => void;
465
+ onAcknowledgeErrorInstance?: (instanceId: string) => void;
430
466
  onLabelInstanceHoverChange?: (instanceId: string, isHovered: boolean) => void;
431
467
  onInputChange?: (value: string) => void;
432
468
  onInputSubmit?: () => void;
@@ -514,7 +550,7 @@ interface ReactGrabEntry {
514
550
  frames?: ReactGrabStackFrame[];
515
551
  }
516
552
  //#endregion
517
- //#region ../../node_modules/.pnpm/bippy@0.5.41_react@19.2.6/node_modules/bippy/dist/core.d.ts
553
+ //#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/unsubscribe.d.ts
518
554
  type Flags = number;
519
555
  type Lanes = number;
520
556
  type TypeOfMode = number;
@@ -604,6 +640,14 @@ interface Effect {
604
640
  interface Family {
605
641
  current: unknown;
606
642
  }
643
+ /**
644
+ * React 19 flight metadata for a server component owner (ReactComponentInfo).
645
+ * Unlike client owners it has no `tag`; the owner chain continues via `owner`.
646
+ */
647
+ interface RendererRefreshUpdate {
648
+ staleFamilies: Set<Family>;
649
+ updatedFamilies: Set<Family>;
650
+ }
607
651
  /**
608
652
  * Represents a react-internal Fiber node.
609
653
  */
@@ -654,6 +698,7 @@ interface ReactDevToolsGlobalHook {
654
698
  onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: number | void) => void;
655
699
  onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
656
700
  onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
701
+ onScheduleFiberRoot?: (rendererID: number, root: FiberRoot, children: ReactNode) => void;
657
702
  renderers: Map<number, ReactRenderer>;
658
703
  supportsFiber: boolean;
659
704
  supportsFlight: boolean;
@@ -672,10 +717,7 @@ interface ReactRenderer {
672
717
  overridePropsRenamePath?: (fiber: Fiber, oldPath: Array<number | string>, newPath: Array<number | string>) => void;
673
718
  reconcilerVersion: string;
674
719
  rendererPackageName: string;
675
- scheduleRefresh?: (root: FiberRoot, update: {
676
- staleFamilies: Set<Family>;
677
- updatedFamilies: Set<Family>;
678
- }) => void;
720
+ scheduleRefresh?: (root: FiberRoot, update: RendererRefreshUpdate) => void;
679
721
  scheduleRoot?: (root: FiberRoot, element: React.ReactNode) => void;
680
722
  scheduleUpdate?: (fiber: Fiber) => void;
681
723
  setErrorHandler?: (newShouldErrorImpl: (fiber: Fiber) => boolean) => void;
@@ -686,28 +728,30 @@ interface ReactRenderer {
686
728
  declare global {
687
729
  var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
688
730
  } //#endregion
689
- //#region src/rdt-hook.d.ts
690
- /**
691
- * Returns `true` if bippy's instrumentation is active.
692
- */
693
- declare const isInstrumentationActive: () => boolean;
694
- /**
695
- * Returns the latest fiber (since it may be double-buffered).
696
- */
731
+ //#region src/unsubscribe.d.ts
697
732
  //#endregion
698
- //#region ../../node_modules/.pnpm/bippy@0.5.41_react@19.2.6/node_modules/bippy/dist/source.d.ts
733
+ //#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/source.d.ts
699
734
  //#region src/source/parse-stack.d.ts
700
735
  interface StackFrame {
701
736
  args?: unknown[];
702
737
  columnNumber?: number;
703
738
  lineNumber?: number;
739
+ enclosingLineNumber?: number;
740
+ enclosingColumnNumber?: number;
704
741
  fileName?: string;
705
742
  functionName?: string;
706
743
  source?: string;
707
744
  isServer?: boolean;
708
745
  isSymbolicated?: boolean;
746
+ isIgnoreListed?: boolean;
709
747
  }
710
748
  //#endregion
749
+ //#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/core.d.ts
750
+ /**
751
+ * Returns `true` if bippy's instrumentation is active.
752
+ */
753
+ declare const isInstrumentationActive: () => boolean;
754
+ //#endregion
711
755
  //#region src/utils/copy-content.d.ts
712
756
  interface CopyContentOptions {
713
757
  componentName?: string;
@@ -717,4 +761,4 @@ interface CopyContentOptions {
717
761
  }
718
762
  declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
719
763
  //#endregion
720
- export { ToolbarState as A, ReactGrabAPI as C, SettableOptions as D, Rect as E, SourceInfo as O, PromptModeContext as S, ReactGrabState as T, OverlayBounds as _, ActionContext as a, PluginHooks as b, AgentContext as c, DeepPartial as d, DragRect as f, Options as g, GrabbedBox as h, isInstrumentationActive as i, Theme as k, ContextMenuAction as l, ElementLabelVariant as m, StackFrame as n, ActionContextHooks as o, ElementLabelContext as p, Fiber as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, Plugin as v, ReactGrabRendererProps as w, Position as x, PluginConfig as y };
764
+ export { SourceInfo as A, PromptModeContext as C, Rect as D, ReactGrabState as E, ToolbarState as M, SelectedElementPayload as O, Position as S, ReactGrabRendererProps as T, Options as _, ActionContext as a, PluginConfig as b, AgentContext as c, DeepPartial as d, DragRect as f, GrabbedBox as g, ElementSelectedEventDetail as h, Fiber as i, Theme as j, SettableOptions as k, ContextMenuAction as l, ElementLabelVariant as m, isInstrumentationActive as n, ActionContextHooks as o, ElementLabelContext as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, OverlayBounds as v, ReactGrabAPI as w, PluginHooks as x, Plugin as y };
@@ -6,6 +6,8 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
+ import { ReactNode } from "react";
10
+
9
11
  //#region ../../node_modules/.pnpm/solid-js@1.9.12/node_modules/solid-js/types/reactive/observable.d.ts
10
12
  declare global {
11
13
  interface SymbolConstructor {
@@ -214,6 +216,12 @@ interface EnumPendingEdit {
214
216
  }
215
217
  type PendingEdit = NumericPendingEdit | ColorPendingEdit | EnumPendingEdit;
216
218
  type PendingEdits = PendingEdit[];
219
+ interface DesignTokenResolver {
220
+ readonly hasTokens: boolean;
221
+ matchColor: (hex: string) => string | null;
222
+ matchLength: (px: number, cssProperty: string) => string | null;
223
+ stepLength: (px: number, direction: 1 | -1, cssProperty: string) => number | null;
224
+ }
217
225
  interface PreviewStyles {
218
226
  apply: (cssProperties: readonly string[], cssValue: string) => void;
219
227
  restore: () => void;
@@ -222,16 +230,15 @@ interface PreviewStyles {
222
230
  interface EditPanelState {
223
231
  element: Element;
224
232
  position: Position;
225
- selectionBounds: OverlayBounds;
226
233
  properties: EditableProperty[];
227
234
  preview: PreviewStyles;
228
235
  filePath?: string;
229
236
  lineNumber?: number;
230
237
  componentName?: string;
231
238
  tagName?: string;
232
- htmlPreview?: string;
233
239
  initialSearchQuery?: string;
234
240
  hasSessionEdits?: boolean;
241
+ designTokens?: DesignTokenResolver;
235
242
  }
236
243
  interface ContextMenuAction {
237
244
  id: string;
@@ -242,14 +249,15 @@ interface ContextMenuAction {
242
249
  enabled?: boolean | ((context: ActionContext) => boolean);
243
250
  onAction: (context: ContextMenuActionContext) => void | Promise<void>;
244
251
  }
245
- interface ArrowNavigationItem {
252
+ interface HierarchyItem {
246
253
  tagName: string;
247
254
  componentName?: string;
255
+ depth: number;
256
+ isLast: boolean;
248
257
  }
249
- interface ArrowNavigationState {
250
- items: ArrowNavigationItem[];
258
+ interface HierarchyState {
259
+ items: HierarchyItem[];
251
260
  activeIndex: number;
252
- isVisible: boolean;
253
261
  }
254
262
  interface PluginHooks {
255
263
  onActivate?: () => void;
@@ -293,6 +301,12 @@ interface Plugin {
293
301
  }
294
302
  interface Options {
295
303
  enabled?: boolean;
304
+ /**
305
+ * Confine React Grab to a single container element instead of the whole page.
306
+ * Hit-testing, the toolbar viewport, and scroll re-anchoring are scoped to it.
307
+ * Used by the demo build to scope the showcase to its card.
308
+ */
309
+ container?: HTMLElement;
296
310
  activationMode?: ActivationMode;
297
311
  keyHoldDuration?: number;
298
312
  allowActivationInsideInput?: boolean;
@@ -324,12 +338,31 @@ interface Options {
324
338
  interface SettableOptions extends Options {
325
339
  enabled?: never;
326
340
  telemetry?: never;
341
+ container?: never;
327
342
  }
328
343
  interface SourceInfo {
329
344
  filePath: string;
330
345
  lineNumber: number | null;
331
346
  componentName: string | null;
332
347
  }
348
+ interface SelectedElementPayload {
349
+ tagName: string;
350
+ id?: string;
351
+ className?: string;
352
+ textContent?: string;
353
+ componentName?: string;
354
+ filePath?: string;
355
+ lineNumber?: number;
356
+ columnNumber?: number;
357
+ }
358
+ interface ElementSelectedEventDetail {
359
+ elements: SelectedElementPayload[];
360
+ }
361
+ declare global {
362
+ interface WindowEventMap {
363
+ "react-grab:element-selected": CustomEvent<ElementSelectedEventDetail>;
364
+ }
365
+ }
333
366
  interface ToolbarState {
334
367
  edge: "top" | "bottom" | "left" | "right";
335
368
  ratio: number;
@@ -353,6 +386,7 @@ interface ReactGrabAPI {
353
386
  getToolbarState: () => ToolbarState | null;
354
387
  setToolbarState: (state: Partial<ToolbarState>) => void;
355
388
  onToolbarStateChange: (callback: (state: ToolbarState) => void) => () => void;
389
+ reset: () => void;
356
390
  dispose: () => void;
357
391
  copyElement: (elements: Element | Element[]) => Promise<boolean>;
358
392
  getSource: (element: Element) => Promise<SourceInfo | null>;
@@ -412,8 +446,8 @@ interface ReactGrabRendererProps {
412
446
  selectionComponentName?: string;
413
447
  selectionLabelVisible?: boolean;
414
448
  selectionLabelStatus?: SelectionLabelStatus;
415
- selectionArrowNavigationState?: ArrowNavigationState;
416
- onArrowNavigationSelect?: (index: number) => void;
449
+ hierarchyState?: HierarchyState;
450
+ hierarchyMenuPosition?: DropdownAnchor | null;
417
451
  labelInstances?: SelectionLabelInstance[];
418
452
  dragVisible?: boolean;
419
453
  dragBounds?: OverlayBounds;
@@ -427,6 +461,8 @@ interface ReactGrabRendererProps {
427
461
  inputValue?: string;
428
462
  isPromptMode?: boolean;
429
463
  onShowContextMenuInstance?: (instanceId: string) => void;
464
+ onRetryInstance?: (instanceId: string) => void;
465
+ onAcknowledgeErrorInstance?: (instanceId: string) => void;
430
466
  onLabelInstanceHoverChange?: (instanceId: string, isHovered: boolean) => void;
431
467
  onInputChange?: (value: string) => void;
432
468
  onInputSubmit?: () => void;
@@ -514,7 +550,7 @@ interface ReactGrabEntry {
514
550
  frames?: ReactGrabStackFrame[];
515
551
  }
516
552
  //#endregion
517
- //#region ../../node_modules/.pnpm/bippy@0.5.41_react@19.2.6/node_modules/bippy/dist/core.d.ts
553
+ //#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/unsubscribe.d.ts
518
554
  type Flags = number;
519
555
  type Lanes = number;
520
556
  type TypeOfMode = number;
@@ -604,6 +640,14 @@ interface Effect {
604
640
  interface Family {
605
641
  current: unknown;
606
642
  }
643
+ /**
644
+ * React 19 flight metadata for a server component owner (ReactComponentInfo).
645
+ * Unlike client owners it has no `tag`; the owner chain continues via `owner`.
646
+ */
647
+ interface RendererRefreshUpdate {
648
+ staleFamilies: Set<Family>;
649
+ updatedFamilies: Set<Family>;
650
+ }
607
651
  /**
608
652
  * Represents a react-internal Fiber node.
609
653
  */
@@ -654,6 +698,7 @@ interface ReactDevToolsGlobalHook {
654
698
  onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: number | void) => void;
655
699
  onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
656
700
  onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
701
+ onScheduleFiberRoot?: (rendererID: number, root: FiberRoot, children: ReactNode) => void;
657
702
  renderers: Map<number, ReactRenderer>;
658
703
  supportsFiber: boolean;
659
704
  supportsFlight: boolean;
@@ -672,10 +717,7 @@ interface ReactRenderer {
672
717
  overridePropsRenamePath?: (fiber: Fiber, oldPath: Array<number | string>, newPath: Array<number | string>) => void;
673
718
  reconcilerVersion: string;
674
719
  rendererPackageName: string;
675
- scheduleRefresh?: (root: FiberRoot, update: {
676
- staleFamilies: Set<Family>;
677
- updatedFamilies: Set<Family>;
678
- }) => void;
720
+ scheduleRefresh?: (root: FiberRoot, update: RendererRefreshUpdate) => void;
679
721
  scheduleRoot?: (root: FiberRoot, element: React.ReactNode) => void;
680
722
  scheduleUpdate?: (fiber: Fiber) => void;
681
723
  setErrorHandler?: (newShouldErrorImpl: (fiber: Fiber) => boolean) => void;
@@ -686,28 +728,30 @@ interface ReactRenderer {
686
728
  declare global {
687
729
  var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
688
730
  } //#endregion
689
- //#region src/rdt-hook.d.ts
690
- /**
691
- * Returns `true` if bippy's instrumentation is active.
692
- */
693
- declare const isInstrumentationActive: () => boolean;
694
- /**
695
- * Returns the latest fiber (since it may be double-buffered).
696
- */
731
+ //#region src/unsubscribe.d.ts
697
732
  //#endregion
698
- //#region ../../node_modules/.pnpm/bippy@0.5.41_react@19.2.6/node_modules/bippy/dist/source.d.ts
733
+ //#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/source.d.ts
699
734
  //#region src/source/parse-stack.d.ts
700
735
  interface StackFrame {
701
736
  args?: unknown[];
702
737
  columnNumber?: number;
703
738
  lineNumber?: number;
739
+ enclosingLineNumber?: number;
740
+ enclosingColumnNumber?: number;
704
741
  fileName?: string;
705
742
  functionName?: string;
706
743
  source?: string;
707
744
  isServer?: boolean;
708
745
  isSymbolicated?: boolean;
746
+ isIgnoreListed?: boolean;
709
747
  }
710
748
  //#endregion
749
+ //#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/core.d.ts
750
+ /**
751
+ * Returns `true` if bippy's instrumentation is active.
752
+ */
753
+ declare const isInstrumentationActive: () => boolean;
754
+ //#endregion
711
755
  //#region src/utils/copy-content.d.ts
712
756
  interface CopyContentOptions {
713
757
  componentName?: string;
@@ -717,4 +761,4 @@ interface CopyContentOptions {
717
761
  }
718
762
  declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
719
763
  //#endregion
720
- export { ToolbarState as A, ReactGrabAPI as C, SettableOptions as D, Rect as E, SourceInfo as O, PromptModeContext as S, ReactGrabState as T, OverlayBounds as _, ActionContext as a, PluginHooks as b, AgentContext as c, DeepPartial as d, DragRect as f, Options as g, GrabbedBox as h, isInstrumentationActive as i, Theme as k, ContextMenuAction as l, ElementLabelVariant as m, StackFrame as n, ActionContextHooks as o, ElementLabelContext as p, Fiber as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, Plugin as v, ReactGrabRendererProps as w, Position as x, PluginConfig as y };
764
+ export { SourceInfo as A, PromptModeContext as C, Rect as D, ReactGrabState as E, ToolbarState as M, SelectedElementPayload as O, Position as S, ReactGrabRendererProps as T, Options as _, ActionContext as a, PluginConfig as b, AgentContext as c, DeepPartial as d, DragRect as f, GrabbedBox as g, ElementSelectedEventDetail as h, Fiber as i, Theme as j, SettableOptions as k, ContextMenuAction as l, ElementLabelVariant as m, isInstrumentationActive as n, ActionContextHooks as o, ElementLabelContext as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, OverlayBounds as v, ReactGrabAPI as w, PluginHooks as x, Plugin as y };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright (c) 2025 Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ const e=require(`./freeze-updates-CZXNftlx.cjs`);var t=class extends Error{constructor(e){super(e),this.name=`ReactGrabError`}},n=class extends t{constructor(){super(`Can't generate CSS selector for non-element node type.`),this.name=`NonElementNodeError`}},r=class extends t{constructor(e){super(`Timeout: Can't find a unique selector after ${e}ms`),this.name=`SelectorTimeoutError`,this.timeoutMs=e}},i=class extends t{constructor(){super(`Selector was not found.`),this.name=`SelectorNotFoundError`}},a=class extends t{constructor(){super(`Failed to copy`),this.name=`CopyFailedError`}};const o=e=>e===void 0||!Number.isFinite(e)?3:Math.max(0,Math.floor(e)),s=e=>{try{return decodeURIComponent(e)}catch{return e}},c=/(?:^|[/\\])node_modules[/\\]/,l=/[/\\]\.vite[/\\]deps[^/\\]*[/\\]/,u=/\.[mc]?[jt]sx?$/i,d=/^chunk-[A-Za-z0-9_-]+$/,f=/[/\\]/,p=/^(.+?)@v?\d/,m=e=>e.split(f).filter(Boolean),h=e=>{let[t,n]=m(e);return!t||t.startsWith(`.`)?null:t.startsWith(`@`)?n?`${t}/${n}`:null:t},ee=e=>{let t=m(e)[0];if(!t)return null;let n=t.replace(u,``);if(d.test(n))return null;if(!n.startsWith(`@`))return n;let r=n.indexOf(`_`);return r===-1?null:`${n.slice(0,r)}/${n.slice(r+1)}`},g=(e,t,n)=>{let r=e.split(t);return r.length>1?n(r[r.length-1]):null},_=e=>e?.match(p)?.[1]??null,te=e=>{let t;try{t=new URL(e)}catch{return null}if(!t.hostname)return null;let n=m(t.pathname).map(s);for(let[e,t]of n.entries()){if(t.startsWith(`@`)){let r=_(n[e+1]);if(r)return`${t}/${r}`;continue}let r=_(t);if(r)return r}return null},ne=e=>g(e,l,ee)??g(e,c,h),re=t=>{if(!t)return null;let n=e.S(t);return n&&(ne(s(n))||te(t))||null},ie=/^@[A-Za-z0-9][A-Za-z0-9._-]*$/,ae=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,oe=new Set([`app`,`web`,`website`,`frontend`,`client`,`src`]),se=new Set([`app`,`src`,`components`,`pages`,`features`,`modules`,`hooks`,`lib`,`utils`,`ui`,`shared`,`common`,`core`,`styles`,`assets`]),ce=e=>{let t=e;for(;t.startsWith(`../`)||t.startsWith(`./`);)t=t.slice(t.startsWith(`../`)?3:2);return t},le=t=>{let n=ce(s(e.S(t)));if(n.startsWith(`/`))return null;let[r,i,...a]=m(n);return!r||!i||a.length===0||!ie.test(r)||se.has(r.slice(1))||!ae.test(i)||u.test(i)||oe.has(i)?null:`${r}/${i}`},ue=e=>e?re(e)??le(e):null,v=t=>{if(!t)return{origin:`unknown`,packageName:null};let n=ue(t);return n?{origin:`package`,packageName:n}:e.E(t)?{origin:`app`,packageName:null}:{origin:`unknown`,packageName:null}},de=new Set([`role`,`name`,`aria-label`,`rel`,`href`]),y=e=>{if(!/^[a-z-]{3,}$/i.test(e))return!1;let t=e.split(/-|[A-Z]/);for(let e of t)if(e.length<=2||/[^aeiou]{4,}/i.test(e))return!1;return!0},fe=(e,t)=>{let n=de.has(e)||e.startsWith(`data-`)&&y(e),r=y(t)&&t.length<100||t.startsWith(`#`)&&y(t.slice(1));return n&&r},b=e=>{let t=e[0].name;for(let n=1;n<e.length;n++)t=`${e[n].name} > ${t}`;return t},x=e=>{let t=0;for(let n of e)t+=n.penalty;return t},pe=(e,t)=>x(e)-x(t),S=(e,t)=>{let n=e.parentNode;if(!n)return;let r=n.firstChild;if(!r)return;let i=0;for(;r&&(r instanceof Element&&(t===void 0||r.tagName.toLowerCase()===t)&&i++,r!==e);)r=r.nextSibling;return i},me=(e,t)=>e===`html`?`html`:`${e}:nth-child(${t})`,C=(e,t)=>e===`html`?`html`:`${e}:nth-of-type(${t})`,he=(e,t)=>{let n=[],r=e.getAttribute(`id`),i=e.tagName.toLowerCase();r&&y(r)&&n.push({name:`#${CSS.escape(r)}`,penalty:0});for(let t of e.classList)y(t)&&n.push({name:`.${CSS.escape(t)}`,penalty:1});for(let r of e.attributes)t(r.name,r.value)&&n.push({name:`[${CSS.escape(r.name)}="${CSS.escape(r.value)}"]`,penalty:2});n.push({name:i,penalty:5});let a=S(e,i);a!==void 0&&n.push({name:C(i,a),penalty:10});let o=S(e);return o!==void 0&&n.push({name:me(i,o),penalty:50}),n},w=(t,n=e.mt,r=[])=>{if(n<=0)return[];if(t.length===0)return[r];let i=[];for(let e of t[0]){let a=n-i.length;if(a<=0)break;i.push(...w(t.slice(1),a,[...r,e]))}return i},ge=(e,t)=>{let n=t.getRootNode?.();return n instanceof ShadowRoot?n:e instanceof Document?e:e.ownerDocument},T=(e,t)=>t.querySelectorAll(b(e)).length===1,_e=(e,t)=>{let n=e,r=[];for(;n&&n!==t;){let e=n.tagName.toLowerCase(),t=S(n,e);if(t===void 0)return;r.push({name:C(e,t),penalty:10}),n=n.parentElement}return T(r,t)?r:void 0},ve=(e,t,a,o)=>{if(e.nodeType!==Node.ELEMENT_NODE)throw new n;if(e.tagName.toLowerCase()===`html`)return`html`;let s=ge(t,e),c=Date.now(),l=[],u=e,d=0,f;for(;u&&u!==s&&!f;)if(l.push(he(u,o)),u=u.parentElement,d++,d>=3){let t=w(l);t.sort(pe);for(let n of t){if(Date.now()-c>a){let t=_e(e,s);if(!t)throw new r(a);return b(t)}if(T(n,s)){f=n;break}}}if(!f&&d<3){let e=w(l);e.sort(pe);for(let t of e){if(Date.now()-c>a)break;if(T(t,s)){f=t;break}}}if(!f)throw new i;return b(f)},E=e=>e.ownerDocument.body??e.ownerDocument.documentElement,D=new Set([`data-testid`,`data-test-id`,`data-test`,`data-cy`,`data-qa`,`aria-label`,`href`,`src`,`role`,`name`,`title`,`alt`]),O=e=>e.length>0&&e.length<=120,k=(e,t)=>{try{let n=e.ownerDocument.querySelectorAll(t);return n.length===1&&n[0]===e}catch{return!1}},ye=e=>{if(e instanceof HTMLElement&&e.id){let t=`#${CSS.escape(e.id)}`;if(k(e,t))return t}for(let t of D){let n=e.getAttribute(t);if(!n||!O(n))continue;let r=`[${t}=${JSON.stringify(n)}]`;if(k(e,r))return r;let i=`${e.tagName.toLowerCase()}${r}`;if(k(e,i))return i}return null},be=e=>{let t=[],n=E(e),r=e;for(;r;){if(r instanceof HTMLElement&&r.id){t.unshift(`#${CSS.escape(r.id)}`);break}let e=r.parentElement;if(!e){t.unshift(r.tagName.toLowerCase());break}let i=Array.from(e.children).indexOf(r)+1;if(t.unshift(`${r.tagName.toLowerCase()}:nth-child(${i})`),e===n){t.unshift(n.tagName.toLowerCase());break}r=e}return t.join(` > `)},xe=e=>{let t=ye(e);if(t)return t;try{let t=ve(e,E(e),200,(e,t)=>fe(e,t)||D.has(e)&&O(t));if(t)return t}catch{}return be(e)},Se=[`[id]`,`[data-testid]`,`[data-test-id]`,`[data-test]`,`[data-cy]`,`[data-qa]`,`[aria-label]`,`a[href]`,`button`,`input`,`select`,`textarea`,`[role="button"]`,`[role="link"]`,`[role="checkbox"]`,`[role="radio"]`,`[role="switch"]`,`[role="tab"]`,`[role="menuitem"]`,`[role="option"]`,`[role="textbox"]`,`[role="combobox"]`,`[role="slider"]`,`[role="spinbutton"]`].join(`,`),Ce=t=>{let{body:n,documentElement:r}=t.ownerDocument;if(t===n||t===r)return!0;if(!n)return!1;let i=n.getElementsByTagName(`*`).length;return i===0?!1:t.getElementsByTagName(`*`).length/i>=e.U},we=e=>{let t=e.closest(Se);return!t||Ce(t)?e:t},Te=[/\/assets\/[^/?#]+-[a-z0-9_-]{6,}\.(?:c|m)?js(?:[?#]|$)/,/\/_next\/static\/.*\.(?:c|m)?js(?:[?#]|$)/,/\/static\/chunks\/.*\.(?:c|m)?js(?:[?#]|$)/],Ee=t=>{if(!t)return!1;let n=`/${e.x(t)}`.toLowerCase();return Te.some(e=>e.test(n))},De=t=>{if(!t)return!1;let n=`/${e.x(t)}/`.toLowerCase();return e.It.some(e=>n.includes(e))},Oe=e=>e.map(e=>`\n in ${e}`).join(``),ke=[`about://React/`,`rsc://React/`],Ae=e=>ke.some(t=>e.startsWith(t)),je=e=>{for(let t of ke){if(!e.startsWith(t))continue;let n=e.indexOf(`/`,t.length);if(n===-1)continue;let r=n+1,i=e.lastIndexOf(`?`);return s(i>r?e.slice(r,i):e.slice(r))}return e},Me=e=>{if(typeof e!=`object`||!e||!(`status`in e)||e.status!==`fulfilled`||!(`value`in e)||typeof e.value!=`object`||e.value===null||!(`originalStackFrame`in e.value))return null;let t=e.value.originalStackFrame;return typeof t!=`object`||!t||!(`file`in t)||typeof t.file!=`string`||!t.file||`ignored`in t&&t.ignored?null:{file:t.file,line1:`line1`in t&&typeof t.line1==`number`?t.line1:null,column1:`column1`in t&&typeof t.column1==`number`?t.column1:null}},Ne=async(t,n)=>{let r=[],i=[];for(let e=0;e<t.length;e++){let n=t[e];!n.isServer||!n.fileName||(r.push(e),i.push({file:je(n.fileName),methodName:n.functionName??`<unknown>`,line1:n.lineNumber??null,column1:n.columnNumber??null,arguments:[]}))}if(i.length===0)return t;let a=new AbortController,o=setTimeout(()=>a.abort(),e.Rt),s=()=>a.abort();n?.aborted&&a.abort(),n?.addEventListener(`abort`,s);try{let n=await fetch(`${e.y()}/__nextjs_original-stack-frames`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({frames:i,isServer:!0,isEdgeServer:!1,isAppDirectory:!0}),priority:`high`,signal:a.signal});if(!n.ok)return t;let o=await n.json();if(!Array.isArray(o))return t;let s=[...t];for(let e=0;e<r.length;e++){let n=Me(o[e]);if(!n)continue;let i=r[e];s[i]={...t[i],fileName:n.file,lineNumber:n.line1??void 0,columnNumber:n.column1??void 0,isSymbolicated:!0}}return s}catch{return t}finally{clearTimeout(o),n?.removeEventListener(`abort`,s)}},Pe=t=>{let n=new Map;return e.L(t,t=>{if(!e.w(t))return!1;let r=e.O(t._debugStack.stack);if(!r)return!1;for(let t of e.D(r))!t.functionName||!t.fileName||Ae(t.fileName)&&(n.has(t.functionName)||n.set(t.functionName,{...t,isServer:!0}));return!1},!0),n},Fe=(e,t)=>{if(!t.some(e=>e.isServer&&!e.fileName&&e.functionName))return t;let n=Pe(e);return n.size===0?t:t.map(e=>{if(!e.isServer||e.fileName||!e.functionName)return e;let t=n.get(e.functionName);return t?{...e,fileName:t.fileName,lineNumber:t.lineNumber,columnNumber:t.columnNumber}:e})};let A=0;const j=[],Ie=()=>A<3?(A+=1,Promise.resolve()):new Promise(e=>{j.push(e)}),Le=()=>{let e=j.shift();if(e){e();return}--A},M=async(t,n,r=e.Lt)=>{await Ie();let i=new AbortController,a,o=new Promise(e=>{a=setTimeout(()=>{i.abort(),e(n)},r)}),s=t(i.signal);s.catch(()=>{});try{return await Promise.race([s,o])}finally{clearTimeout(a),Le()}},N=(e,t)=>e.length>t?`${e.slice(0,t)}...`:e,Re=e=>e.startsWith(`data-react-grab-`),P=e=>e.replace(/\s+/g,` `).trim(),ze=e=>{let t=[];for(let n of e.childNodes){if(n.nodeType!==Node.TEXT_NODE)continue;let e=P(n.textContent??``);e&&t.push(e)}return t.join(` `)},F=t=>t.getAttribute(`aria-hidden`)===`true`||t.hasAttribute(`hidden`)?!0:e.jt.has(t.tagName.toLowerCase()),I=(e,t,n)=>{if(e.nodeType===Node.TEXT_NODE){let r=P(e.textContent??``);return r?(t.push(r),n-r.length):n}if(!(e instanceof Element)||F(e))return n;for(let r of e.childNodes)if(n=I(r,t,n),n<=0)break;return n},L=(t,n)=>{if(F(t))return``;let r=ze(t);if(!e.Ot.has(n)||r&&t.children.length===0)return r;let i=[];return I(t,i,100),i.join(` `)},R=e=>N(e,15),Be=t=>{let n=[];for(let r of e.At){let e=t.getAttribute(r);e&&n.push(`${r}="${e}"`)}return n.length>0?` ${n.join(` `)}`:``},Ve=e=>e===`class`||e===`className`||e===`style`,z=t=>{let n=[],r=[],i=``;for(let{name:a,value:o}of t.attributes)if(!Re(a)){if(Ve(a)){a!==`style`&&o&&(i=` class="${R(o)}"`);continue}e.kt.has(a)?n.push(o?` ${a}="${o}"`:` ${a}`):o&&r.push(` ${a}="${R(o)}"`)}return n.join(``)+r.join(``)+i},B=t=>t.length===0?``:t.length<=2?t.map(t=>`<${e.j(t)} ...>`).join(`
10
+ `):`(${t.length} elements)`,He=t=>{let n=e.j(t);if(!(t instanceof HTMLElement))return`<${n}${Be(t)} />`;let r=z(t),i=N(L(t,n),100);return i?`<${n}${r}>${i}</${n}>`:`<${n}${r} />`},V=t=>{let n=e.j(t),r=z(t),i=L(t,n),a=[],o=[],s=!1;for(let e of t.childNodes)e.nodeType!==Node.COMMENT_NODE&&(e.nodeType===Node.TEXT_NODE?e.textContent&&e.textContent.trim().length>0&&(s=!0):e instanceof Element&&(s?o.push(e):a.push(e)));let c=i.length>0&&e.Ot.has(n),l=``,u=B(a);u&&!c&&(l+=`\n ${u}`),i&&(l+=`\n ${N(i,100)}`);let d=B(o);return d&&!c&&(l+=`\n ${d}`),l.length>0?`<${n}${r}>${l}\n</${n}>`:`<${n}${r} />`},Ue=new Set([`_`,`$`,`motion.`,`styled.`,`chakra.`,`ark.`,`Primitive.`,`Slot.`]),We=new Set(`AppRouter.AppRouterAnnouncer.AppDevOverlay.AppDevOverlayErrorBoundary.ClientPageRoot.ClientSegmentRoot.DevRootHTTPAccessFallbackBoundary.ErrorBoundary.ErrorBoundaryHandler.GracefulDegradeBoundary.HTTPAccessErrorFallback.HTTPAccessFallbackBoundary.HTTPAccessFallbackErrorBoundary.HandleRedirect.Head.HistoryUpdater.HotReload.InnerLayoutRouter.InnerScrollAndFocusHandler.InnerScrollAndFocusHandlerOld.InnerScrollAndMaybeFocusHandler.InnerScrollHandlerNew.LoadableComponent.LoadingBoundary.LoadingBoundaryProvider.NotAllowedRootHTTPFallbackError.OfflineProvider.OuterLayoutRouter.RedirectBoundary.RedirectErrorBoundary.RenderFromTemplateContext.RenderValidationBoundaryAtThisLevel.ReplaySsrOnlyErrors.RootErrorBoundary.RootLevelDevOverlayElement.Router.ScrollAndFocusHandler.ScrollAndMaybeFocusHandler.SegmentBoundaryTrigger.SegmentBoundaryTriggerNode.SegmentStateProvider.SegmentTrieNode.SegmentViewNode.SegmentViewStateNode.ServerRoot.body.html`.split(`.`)),Ge=new Set([`<anonymous>`,`<unknown>`,`Anonymous`,`Unknown`]),Ke=new Set([`Suspense`,`Fragment`,`StrictMode`,`Profiler`,`SuspenseList`]),qe=new Set([`MotionDOMComponent`,`Slot`,`SlotClone`]),Je=[`.Consumer`,`.Context`,`.Provider`,`.Slot`,`.SlotClone`,`.Slottable`,`ProviderProvider`],H=e=>{if(Ge.has(e)||We.has(e)||Ke.has(e)||qe.has(e))return!0;for(let t of Je)if(e.endsWith(t))return!0;for(let t of Ue)if(e.startsWith(t))return!0;return!1},Ye=e=>!(!e||H(e)),U=e=>!(e.length<=1||H(e)||e[0]!==e[0].toUpperCase()),W=e=>e&&U(e)?e:null,G=e=>!De(e)&&!Ee(e),K=t=>{if(!e.P())return t;let n=t;for(;n;){if(e.R(n))return n;n=n.parentElement}return t},Xe=e=>{let t=e.return?.child??null;for(;t;){if(t!==e&&t.key!==null)return!0;t=t.sibling}return!1},Ze=t=>{let n=t,r=0;for(;n;){if(n.key!==null&&Xe(n))return String(n.key);if(e.M(n)&&(r+=1,r===2))break;n=n.return}return null},Qe=t=>e.P()?Ze(e.R(K(t))):null,q=new WeakMap,J=new WeakMap,$e=e=>t=>fetch(t,{signal:e,priority:`high`}),et=t=>M(async n=>{try{let r=e.R(t);if(!r)return null;let i=await e.T(r,!0,$e(n));return e.b()?await Ne(Fe(r,i),n):i}catch{return null}},null),Y=t=>{if(!e.P())return Promise.resolve([]);let n=K(t),r=q.get(n);if(r)return r;let i=et(n).then(e=>(e===null&&q.delete(n),e));return q.set(n,i),i},tt=async t=>{if(!e.P())return null;let n=await Y(t);if(!n)return null;for(let e of n){let t=W(e.functionName);if(t)return t}return null},nt=e=>e.find(e=>!!W(e.functionName))??e[0]??null,rt=t=>!t||!e.M(t)?null:W(e.N(t.type)),it=t=>M(async n=>{let r=e.R(K(t));if(!r)return null;try{let t=await e.C(r,!0,$e(n));return t?.fileName?{filePath:e.x(t.fileName),lineNumber:t.lineNumber??null,columnNumber:t.columnNumber??null,componentName:W(t.functionName)??rt(r._debugOwner),origin:v(t.fileName).origin}:null}catch{return null}},null),at=e=>{let t=K(e),n=J.get(t);if(n)return n;let r=it(t).then(e=>(e||J.delete(t),e));return J.set(t,r),r},ot=(t,n)=>{let r=(t,n)=>{let r=nt(t);return r?.fileName?{filePath:e.x(r.fileName),lineNumber:r.lineNumber??null,columnNumber:r.columnNumber??null,componentName:W(r.functionName),origin:n}:null},i=n.filter(e=>v(e.fileName).origin===`app`),a=i.filter(e=>G(e.fileName));return t?.origin===`app`&&G(t.filePath)?t:r(a,`app`)||(t?.origin===`app`&&!Ee(t.filePath)?t:r(i,`app`)||(t?.origin===`app`||t?.origin===`package`?t:r(n.filter(e=>v(e.fileName).origin===`package`),`package`)))},st=async e=>{let t=await at(e);return t?.origin===`app`&&G(t.filePath)?t:ot(t,await Y(e)??[])},ct=e=>X(K(e),1)[0]??null,X=(t,n,r=()=>!0)=>{if(!e.P())return[];let i=e.R(t);if(!i)return[];let a=[];return e.L(i,t=>{if(a.length>=n)return!0;if(e.M(t)){let n=e.N(t.type);n&&Ye(n)&&r(n)&&a.push(n)}return!1},!0),a},lt=[`/src/app/`,`/src/pages/`,`/app/`,`/pages/`],ut=(t,n)=>{let r=e.x(t);if(!n||!r.startsWith(`/`))return r;for(let e of lt){let t=r.indexOf(e);if(t!==-1)return`/./${r.slice(t+1)}`}return r},dt=(e,t)=>{let n=ut(e.filePath,t),r=t&&e.lineNumber?`${n}:${e.lineNumber}${e.columnNumber?`:${e.columnNumber}`:``}`:n;return e.componentName?`\n in ${e.componentName} (at ${r})`:`\n in ${r}`},Z={isAppSource:!1,consumesBudget:!1},ft=(e,t,n,r)=>{let i=t.packageName,a=t.origin===`app`?e.fileName:null;if(e.isServer&&!a&&(n||!e.functionName)){let e=i?`${i} at Server`:`at Server`;return{text:`\n in ${n??`<anonymous>`} (${e})`,...Z}}return!a&&n?{text:i?`\n in ${n} (${i})`:`\n in ${n}`,...Z}:i?{text:`\n in ${i}`,...Z}:a?{text:dt({componentName:n,filePath:a,lineNumber:e.lineNumber??null,columnNumber:e.columnNumber??null},r),isAppSource:!0,consumesBudget:G(a)}:null},pt=(t,n={},r=null)=>{let i=o(n.maxLines),a=Math.max(i,20),s=e.b(),c=[],l=new Set,u=null,d=!1,f=!1,p=!1,m=0,h=e=>{e&&l.add(e)};if(r){let e=r.origin===`app`&&G(r.filePath);f=e,e&&(m+=1),h(r.componentName),c.push(dt(r,s))}for(let e of t){if(m>=i||c.length>=a)break;let t=v(e.fileName),n=W(e.functionName),o=t.packageName?`${t.packageName}:${n??``}:${e.isServer?`server`:`client`}`:null;if(o&&o===u)continue;if(!d&&n&&n===r?.componentName){d=!0;continue}let l=ft(e,t,n,s);l!==null&&l.text!==c[c.length-1]&&(l.isAppSource&&l.consumesBudget&&(f=!0),l.consumesBudget&&(m+=1,p=!0),h(n),c.push(l.text),u=o)}return{text:c.join(``),shouldAppendSelectorHint:!f,hasBudgetedStackFrame:p,renderedComponentNames:l}},mt=(e,t)=>{let n=ot(e,t);return n?.origin===`app`?n:null},ht=(e,t,n)=>{let r=X(K(e),n,e=>U(e)&&!t.renderedComponentNames.has(e));return r.length===0?t:{...t,text:`${t.text}${Oe(r)}`}},Q=async(e,t={})=>{let n=await at(e),r=await Y(e)??[],i=mt(n,r),a=o(t.maxLines),s=pt(r,t,i);if(s.text)return s.hasBudgetedStackFrame?s:ht(e,s,a);let c=X(K(e),a);return{text:Oe(c),shouldAppendSelectorHint:!0,hasBudgetedStackFrame:!1,renderedComponentNames:new Set(c)}},gt=async(e,t={})=>(await Q(e,t)).text,$=(e,t)=>{let n=Qe(e),r=n===null?``:`\n key: "${n}"`,i=t.shouldAppendSelectorHint?`\n selector: ${xe(we(e))}`:``;return`${t.text}${r}${i}`},_t=async(e,t={})=>{let n=await Q(e,t);return`${He(e)}${$(e,n).replace(/\n\s+/g,` `)}`},vt=async(e,t={})=>{let n=K(e);return`${V(n)}${$(n,await Q(n,t))}`},yt=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),bt=(t,n)=>{let r=n?.componentName??`div`,i={version:e.Bt,content:t,entries:n?.entries??[{tagName:n?.tagName,componentName:r,content:t,commentText:n?.commentText}],timestamp:Date.now()},a=e=>{e.preventDefault(),e.clipboardData?.setData(`text/plain`,t),e.clipboardData?.setData(`text/html`,`<meta charset='utf-8'><pre><code>${yt(t)}</code></pre>`),e.clipboardData?.setData(`application/x-react-grab`,JSON.stringify(i))};document.addEventListener(`copy`,a);let o=document.createElement(`textarea`);o.value=t,o.style.position=`fixed`,o.style.left=`-9999px`,o.ariaHidden=`true`,document.body.appendChild(o),o.select();try{return typeof document.execCommand==`function`?document.execCommand(`copy`):!1}finally{document.removeEventListener(`copy`,a),o.remove()}};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return we}});
@@ -6,4 +6,4 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../core-CvEeB6XL.cjs`),t=require(`../freeze-updates-8grKqOPM.cjs`),n=require(`../copy-content-BG5RrXFG.cjs`);exports.DEFAULT_THEME=e.a,exports.copyContent=n.t,exports.formatElementInfo=n.n,exports.generateSnippet=e.n,exports.getStack=n.o,exports.init=e.t,exports.isInstrumentationActive=t.M;
9
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../core-CKtUC3h5.cjs`),t=require(`../freeze-updates-CZXNftlx.cjs`),n=require(`../copy-content-cjYKypHY.cjs`);exports.DEFAULT_THEME=e.a,exports.copyContent=n.t,exports.formatElementInfo=n.n,exports.generateSnippet=e.n,exports.getStack=n.o,exports.init=e.t,exports.isInstrumentationActive=t.P;
@@ -6,6 +6,6 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- import { C as ReactGrabAPI, D as SettableOptions, O as SourceInfo, _ as OverlayBounds, a as ActionContext, b as PluginHooks, c as AgentContext, g as Options, i as isInstrumentationActive, l as ContextMenuAction, t as copyContent, v as Plugin, w as ReactGrabRendererProps, y as PluginConfig } from "../copy-content-BoeDJ9l0.cjs";
10
- import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-Ci1cIBwN.cjs";
9
+ import { A as SourceInfo, T as ReactGrabRendererProps, _ as Options, a as ActionContext, b as PluginConfig, c as AgentContext, k as SettableOptions, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, v as OverlayBounds, w as ReactGrabAPI, x as PluginHooks, y as Plugin } from "../copy-content-Ca2txV90.cjs";
10
+ import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-CgWlIagV.cjs";
11
11
  export { ActionContext, AgentContext, ContextMenuAction, DEFAULT_THEME, Options, OverlayBounds, Plugin, PluginConfig, PluginHooks, ReactGrabAPI, ReactGrabRendererProps, SettableOptions, SourceInfo, copyContent, formatElementInfo, generateSnippet, getStack, init, isInstrumentationActive };
@@ -6,6 +6,6 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- import { C as ReactGrabAPI, D as SettableOptions, O as SourceInfo, _ as OverlayBounds, a as ActionContext, b as PluginHooks, c as AgentContext, g as Options, i as isInstrumentationActive, l as ContextMenuAction, t as copyContent, v as Plugin, w as ReactGrabRendererProps, y as PluginConfig } from "../copy-content-CqFXlS9J.js";
10
- import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-ssynL7Na.js";
9
+ import { A as SourceInfo, T as ReactGrabRendererProps, _ as Options, a as ActionContext, b as PluginConfig, c as AgentContext, k as SettableOptions, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, v as OverlayBounds, w as ReactGrabAPI, x as PluginHooks, y as Plugin } from "../copy-content-D6YIoJK4.js";
10
+ import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-C_tGQJlm.js";
11
11
  export { ActionContext, AgentContext, ContextMenuAction, DEFAULT_THEME, Options, OverlayBounds, Plugin, PluginConfig, PluginHooks, ReactGrabAPI, ReactGrabRendererProps, SettableOptions, SourceInfo, copyContent, formatElementInfo, generateSnippet, getStack, init, isInstrumentationActive };
@@ -6,4 +6,4 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
- import{a as e,n as t,t as n}from"../core-CX-oJjgu.js";import{M as r}from"../freeze-updates-DiPhJRln.js";import{n as i,o as a,t as o}from"../copy-content-Drw2cQ8V.js";export{e as DEFAULT_THEME,o as copyContent,i as formatElementInfo,t as generateSnippet,a as getStack,n as init,r as isInstrumentationActive};
9
+ import{a as e,n as t,t as n}from"../core-CBM7-BmH.js";import{P as r}from"../freeze-updates-BmKYPOzz.js";import{n as i,o as a,t as o}from"../copy-content-CPdjqgu5.js";export{e as DEFAULT_THEME,o as copyContent,i as formatElementInfo,t as generateSnippet,a as getStack,n as init,r as isInstrumentationActive};