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.
- package/README.md +1 -1
- package/dist/copy-content-CPdjqgu5.js +10 -0
- package/dist/{copy-content-CqFXlS9J.d.ts → copy-content-Ca2txV90.d.cts} +67 -23
- package/dist/{copy-content-BoeDJ9l0.d.cts → copy-content-D6YIoJK4.d.ts} +67 -23
- package/dist/copy-content-cjYKypHY.cjs +10 -0
- package/dist/core/index.cjs +1 -1
- package/dist/core/index.d.cts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +1 -1
- package/dist/core-CBM7-BmH.js +14 -0
- package/dist/core-CKtUC3h5.cjs +14 -0
- package/dist/create-pointer-move-prompt-handoff-BPmzM4Dd.js +9 -0
- package/dist/create-pointer-move-prompt-handoff-DhxKa56V.cjs +9 -0
- package/dist/freeze-updates-BmKYPOzz.js +52 -0
- package/dist/freeze-updates-CZXNftlx.cjs +52 -0
- package/dist/{index-ssynL7Na.d.ts → index-C_tGQJlm.d.ts} +1 -1
- package/dist/{index-Ci1cIBwN.d.cts → index-CgWlIagV.d.cts} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.global.js +20 -20
- package/dist/index.js +1 -1
- package/dist/primitives.cjs +2 -2
- package/dist/primitives.d.cts +1 -1
- package/dist/primitives.d.ts +1 -1
- package/dist/primitives.js +2 -2
- package/dist/renderer-B-2YncDT.cjs +9 -0
- package/dist/renderer-D9Kx4PlT.js +9 -0
- package/dist/styles.css +1 -1
- package/package.json +13 -4
- package/dist/action-shortcuts-DK7e2eLe.cjs +0 -9
- package/dist/action-shortcuts-DN8Q9O9k.js +0 -9
- package/dist/copy-content-BG5RrXFG.cjs +0 -10
- package/dist/copy-content-Drw2cQ8V.js +0 -10
- package/dist/core-CX-oJjgu.js +0 -15
- package/dist/core-CvEeB6XL.cjs +0 -15
- package/dist/freeze-updates-8grKqOPM.cjs +0 -51
- package/dist/freeze-updates-DiPhJRln.js +0 -51
- package/dist/renderer-B79Ze5ly.js +0 -9
- 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://
|
|
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,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`),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
|
|
252
|
+
interface HierarchyItem {
|
|
246
253
|
tagName: string;
|
|
247
254
|
componentName?: string;
|
|
255
|
+
depth: number;
|
|
256
|
+
isLast: boolean;
|
|
248
257
|
}
|
|
249
|
-
interface
|
|
250
|
-
items:
|
|
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
|
-
|
|
416
|
-
|
|
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.
|
|
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/
|
|
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.
|
|
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 {
|
|
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
|
|
252
|
+
interface HierarchyItem {
|
|
246
253
|
tagName: string;
|
|
247
254
|
componentName?: string;
|
|
255
|
+
depth: number;
|
|
256
|
+
isLast: boolean;
|
|
248
257
|
}
|
|
249
|
-
interface
|
|
250
|
-
items:
|
|
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
|
-
|
|
416
|
-
|
|
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.
|
|
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/
|
|
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.
|
|
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 {
|
|
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,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`),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}});
|
package/dist/core/index.cjs
CHANGED
|
@@ -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-
|
|
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;
|
package/dist/core/index.d.cts
CHANGED
|
@@ -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 {
|
|
10
|
-
import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-
|
|
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 };
|
package/dist/core/index.d.ts
CHANGED
|
@@ -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 {
|
|
10
|
-
import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-
|
|
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 };
|
package/dist/core/index.js
CHANGED
|
@@ -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-
|
|
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};
|