react-grab 0.1.47 → 0.1.48-dev.06cda9a
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 +18 -59
- package/dist/{copy-content-CqFXlS9J.d.ts → copy-content-CNRKFr6F.d.ts} +107 -42
- package/dist/{copy-content-BoeDJ9l0.d.cts → copy-content-CtYUWe5l.d.cts} +107 -42
- 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-BRRAx8TD.js +14 -0
- package/dist/core-C_KU3ZuP.cjs +14 -0
- package/dist/errors-BEgowzRA.d.ts +29 -0
- package/dist/errors-CTlIFDQs.d.cts +29 -0
- package/dist/execute-context-menu-action-BD4Nv4s0.js +9 -0
- package/dist/execute-context-menu-action-CcaVL0mJ.cjs +9 -0
- package/dist/freeze-updates-CCSp2kR9.js +52 -0
- package/dist/freeze-updates-CeUaPRYb.cjs +52 -0
- package/dist/{index-Ci1cIBwN.d.cts → index-BgTe-uWs.d.cts} +1 -1
- package/dist/{index-ssynL7Na.d.ts → index-CdWMNcJF.d.ts} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +10 -7
- package/dist/index.d.ts +10 -7
- package/dist/index.global.js +21 -20
- package/dist/index.js +1 -1
- package/dist/open-file-BhNjSVzK.js +29 -0
- package/dist/open-file-NhyWAHag.cjs +20 -0
- package/dist/primitives.cjs +2 -2
- package/dist/primitives.d.cts +41 -2
- package/dist/primitives.d.ts +41 -2
- package/dist/primitives.js +2 -2
- package/dist/renderer-9otVqSB-.cjs +9 -0
- package/dist/renderer-B8kwrqGU.js +9 -0
- package/dist/styles.css +1 -1
- package/package.json +19 -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
|
|
|
@@ -114,72 +114,31 @@ if (process.env.NODE_ENV === "development") {
|
|
|
114
114
|
}
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
##
|
|
117
|
+
## Build your own React Grab
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
Build a custom interface with the selection engine from `react-grab/primitives`. Use its APIs for hit testing, source context, page freezing, clipboard access, and editor navigation.
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
### Customize hit testing
|
|
122
122
|
|
|
123
|
-
|
|
124
|
-
import { registerPlugin } from "react-grab";
|
|
123
|
+
Scope hit testing to a container or replace the default element filter with your own rules.
|
|
125
124
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
hooks: {
|
|
129
|
-
onElementSelect: (element) => {
|
|
130
|
-
console.log("Selected:", element.tagName);
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
If writing in React, register inside a `useEffect`:
|
|
125
|
+
```typescript
|
|
126
|
+
import { getElementAtPoint, isElementGrabbable } from "react-grab/primitives";
|
|
137
127
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
shortcut: "M",
|
|
149
|
-
onAction: (context) => {
|
|
150
|
-
console.log("Action on:", context.element);
|
|
151
|
-
context.hideContextMenu();
|
|
152
|
-
},
|
|
153
|
-
},
|
|
154
|
-
],
|
|
128
|
+
export const getPickerTarget = (
|
|
129
|
+
event: PointerEvent,
|
|
130
|
+
appElement: Element,
|
|
131
|
+
toolbarElement: Element,
|
|
132
|
+
): Element | null =>
|
|
133
|
+
getElementAtPoint(event.clientX, event.clientY, {
|
|
134
|
+
container: appElement,
|
|
135
|
+
filter: (candidate) =>
|
|
136
|
+
isElementGrabbable(candidate) &&
|
|
137
|
+
!toolbarElement.contains(candidate),
|
|
155
138
|
});
|
|
156
|
-
|
|
157
|
-
return () => unregisterPlugin("my-plugin");
|
|
158
|
-
}, []);
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Actions use a `target` field to control where they appear. Omit `target` (or set `"context-menu"`) for the right-click menu, or set `"toolbar"` for the toolbar dropdown:
|
|
162
|
-
|
|
163
|
-
```js
|
|
164
|
-
actions: [
|
|
165
|
-
{
|
|
166
|
-
id: "inspect",
|
|
167
|
-
label: "Inspect",
|
|
168
|
-
shortcut: "I",
|
|
169
|
-
onAction: (ctx) => console.dir(ctx.element),
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
id: "toggle-freeze",
|
|
173
|
-
label: "Freeze",
|
|
174
|
-
// Only show in the toolbar
|
|
175
|
-
target: "toolbar",
|
|
176
|
-
isActive: () => isFrozen,
|
|
177
|
-
onAction: () => toggleFreeze(),
|
|
178
|
-
},
|
|
179
|
-
];
|
|
180
139
|
```
|
|
181
140
|
|
|
182
|
-
|
|
141
|
+
Add `data-react-grab-ignore` to your picker interface so hit testing skips its subtree.
|
|
183
142
|
|
|
184
143
|
## Resources & Contributing Back
|
|
185
144
|
|
|
@@ -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 {
|
|
@@ -23,6 +25,17 @@ interface Position {
|
|
|
23
25
|
x: number;
|
|
24
26
|
y: number;
|
|
25
27
|
}
|
|
28
|
+
interface ElementAtPointOptions {
|
|
29
|
+
container?: Element;
|
|
30
|
+
filter?: (element: Element) => boolean;
|
|
31
|
+
}
|
|
32
|
+
interface ElementBounds {
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
borderRadius: string;
|
|
38
|
+
}
|
|
26
39
|
type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? T[P] extends ((...args: unknown[]) => unknown) ? T[P] : DeepPartial<T[P]> : T[P] };
|
|
27
40
|
interface Theme {
|
|
28
41
|
/**
|
|
@@ -138,11 +151,13 @@ interface AgentContext<T = unknown> {
|
|
|
138
151
|
sessionId?: string;
|
|
139
152
|
}
|
|
140
153
|
type ActivationMode = "toggle" | "hold";
|
|
141
|
-
interface
|
|
142
|
-
transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
|
|
154
|
+
interface OpenFileActionHooks {
|
|
143
155
|
onOpenFile: (filePath: string, lineNumber?: number) => boolean | void;
|
|
144
156
|
transformOpenFileUrl: (url: string, filePath: string, lineNumber?: number) => string;
|
|
145
157
|
}
|
|
158
|
+
interface ActionContextHooks extends OpenFileActionHooks {
|
|
159
|
+
transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
|
|
160
|
+
}
|
|
146
161
|
interface ActionContext {
|
|
147
162
|
element: Element;
|
|
148
163
|
elements: Element[];
|
|
@@ -214,6 +229,12 @@ interface EnumPendingEdit {
|
|
|
214
229
|
}
|
|
215
230
|
type PendingEdit = NumericPendingEdit | ColorPendingEdit | EnumPendingEdit;
|
|
216
231
|
type PendingEdits = PendingEdit[];
|
|
232
|
+
interface DesignTokenResolver {
|
|
233
|
+
readonly hasTokens: boolean;
|
|
234
|
+
matchColor: (hex: string) => string | null;
|
|
235
|
+
matchLength: (px: number, cssProperty: string) => string | null;
|
|
236
|
+
stepLength: (px: number, direction: 1 | -1, cssProperty: string) => number | null;
|
|
237
|
+
}
|
|
217
238
|
interface PreviewStyles {
|
|
218
239
|
apply: (cssProperties: readonly string[], cssValue: string) => void;
|
|
219
240
|
restore: () => void;
|
|
@@ -222,16 +243,15 @@ interface PreviewStyles {
|
|
|
222
243
|
interface EditPanelState {
|
|
223
244
|
element: Element;
|
|
224
245
|
position: Position;
|
|
225
|
-
selectionBounds: OverlayBounds;
|
|
226
246
|
properties: EditableProperty[];
|
|
227
247
|
preview: PreviewStyles;
|
|
228
248
|
filePath?: string;
|
|
229
249
|
lineNumber?: number;
|
|
230
250
|
componentName?: string;
|
|
231
251
|
tagName?: string;
|
|
232
|
-
htmlPreview?: string;
|
|
233
252
|
initialSearchQuery?: string;
|
|
234
253
|
hasSessionEdits?: boolean;
|
|
254
|
+
designTokens?: DesignTokenResolver;
|
|
235
255
|
}
|
|
236
256
|
interface ContextMenuAction {
|
|
237
257
|
id: string;
|
|
@@ -242,34 +262,35 @@ interface ContextMenuAction {
|
|
|
242
262
|
enabled?: boolean | ((context: ActionContext) => boolean);
|
|
243
263
|
onAction: (context: ContextMenuActionContext) => void | Promise<void>;
|
|
244
264
|
}
|
|
245
|
-
interface
|
|
265
|
+
interface HierarchyItem {
|
|
246
266
|
tagName: string;
|
|
247
267
|
componentName?: string;
|
|
268
|
+
depth: number;
|
|
269
|
+
isLast: boolean;
|
|
248
270
|
}
|
|
249
|
-
interface
|
|
250
|
-
items:
|
|
271
|
+
interface HierarchyState {
|
|
272
|
+
items: HierarchyItem[];
|
|
251
273
|
activeIndex: number;
|
|
252
|
-
isVisible: boolean;
|
|
253
274
|
}
|
|
254
275
|
interface PluginHooks {
|
|
255
|
-
onActivate?: () => void
|
|
256
|
-
onDeactivate?: () => void
|
|
257
|
-
onElementHover?: (element: Element) => void
|
|
276
|
+
onActivate?: () => void | Promise<void>;
|
|
277
|
+
onDeactivate?: () => void | Promise<void>;
|
|
278
|
+
onElementHover?: (element: Element) => void | Promise<void>;
|
|
258
279
|
onElementSelect?: (element: Element) => boolean | void | Promise<boolean>;
|
|
259
|
-
onDragStart?: (startX: number, startY: number) => void
|
|
260
|
-
onDragEnd?: (elements: Element[], bounds: DragRect) => void
|
|
280
|
+
onDragStart?: (startX: number, startY: number) => void | Promise<void>;
|
|
281
|
+
onDragEnd?: (elements: Element[], bounds: DragRect) => void | Promise<void>;
|
|
261
282
|
onBeforeCopy?: (elements: Element[]) => void | Promise<void>;
|
|
262
283
|
transformCopyContent?: (content: string, elements: Element[]) => string | Promise<string>;
|
|
263
|
-
onAfterCopy?: (elements: Element[], success: boolean) => void
|
|
264
|
-
onCopySuccess?: (elements: Element[], content: string) => void
|
|
265
|
-
onCopyError?: (error: Error) => void
|
|
266
|
-
onStateChange?: (state: ReactGrabState) => void
|
|
267
|
-
onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void
|
|
268
|
-
onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void
|
|
269
|
-
onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void
|
|
270
|
-
onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void
|
|
271
|
-
onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void
|
|
272
|
-
onContextMenu?: (element: Element, position: Position) => void
|
|
284
|
+
onAfterCopy?: (elements: Element[], success: boolean) => void | Promise<void>;
|
|
285
|
+
onCopySuccess?: (elements: Element[], content: string) => void | Promise<void>;
|
|
286
|
+
onCopyError?: (error: Error) => void | Promise<void>;
|
|
287
|
+
onStateChange?: (state: ReactGrabState) => void | Promise<void>;
|
|
288
|
+
onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void | Promise<void>;
|
|
289
|
+
onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void | Promise<void>;
|
|
290
|
+
onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void | Promise<void>;
|
|
291
|
+
onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void | Promise<void>;
|
|
292
|
+
onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void | Promise<void>;
|
|
293
|
+
onContextMenu?: (element: Element, position: Position) => void | Promise<void>;
|
|
273
294
|
onOpenFile?: (filePath: string, lineNumber?: number) => boolean | void;
|
|
274
295
|
transformHtmlContent?: (html: string, elements: Element[]) => string | Promise<string>;
|
|
275
296
|
transformAgentContext?: (context: AgentContext, elements: Element[]) => AgentContext | Promise<AgentContext>;
|
|
@@ -281,7 +302,7 @@ interface PluginConfig {
|
|
|
281
302
|
options?: SettableOptions;
|
|
282
303
|
actions?: ContextMenuAction[];
|
|
283
304
|
hooks?: PluginHooks;
|
|
284
|
-
cleanup?: () =>
|
|
305
|
+
cleanup?: () => undefined;
|
|
285
306
|
}
|
|
286
307
|
interface Plugin {
|
|
287
308
|
name: string;
|
|
@@ -293,6 +314,12 @@ interface Plugin {
|
|
|
293
314
|
}
|
|
294
315
|
interface Options {
|
|
295
316
|
enabled?: boolean;
|
|
317
|
+
/**
|
|
318
|
+
* Confine React Grab to a single container element instead of the whole page.
|
|
319
|
+
* Hit-testing, the toolbar viewport, and scroll re-anchoring are scoped to it.
|
|
320
|
+
* Used by the demo build to scope the showcase to its card.
|
|
321
|
+
*/
|
|
322
|
+
container?: HTMLElement;
|
|
296
323
|
activationMode?: ActivationMode;
|
|
297
324
|
keyHoldDuration?: number;
|
|
298
325
|
allowActivationInsideInput?: boolean;
|
|
@@ -324,12 +351,31 @@ interface Options {
|
|
|
324
351
|
interface SettableOptions extends Options {
|
|
325
352
|
enabled?: never;
|
|
326
353
|
telemetry?: never;
|
|
354
|
+
container?: never;
|
|
327
355
|
}
|
|
328
356
|
interface SourceInfo {
|
|
329
357
|
filePath: string;
|
|
330
358
|
lineNumber: number | null;
|
|
331
359
|
componentName: string | null;
|
|
332
360
|
}
|
|
361
|
+
interface SelectedElementPayload {
|
|
362
|
+
tagName: string;
|
|
363
|
+
id?: string;
|
|
364
|
+
className?: string;
|
|
365
|
+
textContent?: string;
|
|
366
|
+
componentName?: string;
|
|
367
|
+
filePath?: string;
|
|
368
|
+
lineNumber?: number;
|
|
369
|
+
columnNumber?: number;
|
|
370
|
+
}
|
|
371
|
+
interface ElementSelectedEventDetail {
|
|
372
|
+
elements: SelectedElementPayload[];
|
|
373
|
+
}
|
|
374
|
+
declare global {
|
|
375
|
+
interface WindowEventMap {
|
|
376
|
+
"react-grab:element-selected": CustomEvent<ElementSelectedEventDetail>;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
333
379
|
interface ToolbarState {
|
|
334
380
|
edge: "top" | "bottom" | "left" | "right";
|
|
335
381
|
ratio: number;
|
|
@@ -353,6 +399,7 @@ interface ReactGrabAPI {
|
|
|
353
399
|
getToolbarState: () => ToolbarState | null;
|
|
354
400
|
setToolbarState: (state: Partial<ToolbarState>) => void;
|
|
355
401
|
onToolbarStateChange: (callback: (state: ToolbarState) => void) => () => void;
|
|
402
|
+
reset: () => void;
|
|
356
403
|
dispose: () => void;
|
|
357
404
|
copyElement: (elements: Element | Element[]) => Promise<boolean>;
|
|
358
405
|
getSource: (element: Element) => Promise<SourceInfo | null>;
|
|
@@ -398,13 +445,19 @@ interface FrozenLabelEntry {
|
|
|
398
445
|
bounds: OverlayBounds;
|
|
399
446
|
mouseX?: number;
|
|
400
447
|
}
|
|
448
|
+
interface FrozenLabelEntryAccessor {
|
|
449
|
+
read: () => FrozenLabelEntry | null;
|
|
450
|
+
}
|
|
451
|
+
interface SelectionLabelInstanceAccessor {
|
|
452
|
+
read: () => SelectionLabelInstance | null;
|
|
453
|
+
}
|
|
401
454
|
interface ReactGrabRendererProps {
|
|
402
455
|
selectionVisible?: boolean;
|
|
403
456
|
selectionBounds?: OverlayBounds;
|
|
404
457
|
selectionBoundsMultiple?: OverlayBounds[];
|
|
405
458
|
selectionShouldSnap?: boolean;
|
|
406
459
|
selectionElementsCount?: number;
|
|
407
|
-
|
|
460
|
+
frozenLabelEntryAccessors?: FrozenLabelEntryAccessor[];
|
|
408
461
|
pendingShiftPreviewEntry?: FrozenLabelEntry;
|
|
409
462
|
selectionFilePath?: string;
|
|
410
463
|
selectionLineNumber?: number;
|
|
@@ -412,9 +465,10 @@ interface ReactGrabRendererProps {
|
|
|
412
465
|
selectionComponentName?: string;
|
|
413
466
|
selectionLabelVisible?: boolean;
|
|
414
467
|
selectionLabelStatus?: SelectionLabelStatus;
|
|
415
|
-
|
|
416
|
-
|
|
468
|
+
hierarchyState?: HierarchyState;
|
|
469
|
+
hierarchyMenuPosition?: DropdownAnchor | null;
|
|
417
470
|
labelInstances?: SelectionLabelInstance[];
|
|
471
|
+
labelInstanceAccessors?: SelectionLabelInstanceAccessor[];
|
|
418
472
|
dragVisible?: boolean;
|
|
419
473
|
dragBounds?: OverlayBounds;
|
|
420
474
|
grabbedBoxes?: Array<{
|
|
@@ -427,12 +481,15 @@ interface ReactGrabRendererProps {
|
|
|
427
481
|
inputValue?: string;
|
|
428
482
|
isPromptMode?: boolean;
|
|
429
483
|
onShowContextMenuInstance?: (instanceId: string) => void;
|
|
484
|
+
onRetryInstance?: (instanceId: string) => void;
|
|
485
|
+
onAcknowledgeErrorInstance?: (instanceId: string) => void;
|
|
430
486
|
onLabelInstanceHoverChange?: (instanceId: string, isHovered: boolean) => void;
|
|
431
487
|
onInputChange?: (value: string) => void;
|
|
432
488
|
onInputSubmit?: () => void;
|
|
433
489
|
onToggleExpand?: () => void;
|
|
434
490
|
selectionLabelShakeCount?: number;
|
|
435
491
|
onConfirmDismiss?: () => void;
|
|
492
|
+
onOpenSelectionFile?: () => void;
|
|
436
493
|
discardPrompt?: SelectionDiscardPrompt;
|
|
437
494
|
toolbarVisible?: boolean;
|
|
438
495
|
isActive?: boolean;
|
|
@@ -514,7 +571,7 @@ interface ReactGrabEntry {
|
|
|
514
571
|
frames?: ReactGrabStackFrame[];
|
|
515
572
|
}
|
|
516
573
|
//#endregion
|
|
517
|
-
//#region ../../node_modules/.pnpm/bippy@0.
|
|
574
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/unsubscribe.d.ts
|
|
518
575
|
type Flags = number;
|
|
519
576
|
type Lanes = number;
|
|
520
577
|
type TypeOfMode = number;
|
|
@@ -604,6 +661,14 @@ interface Effect {
|
|
|
604
661
|
interface Family {
|
|
605
662
|
current: unknown;
|
|
606
663
|
}
|
|
664
|
+
/**
|
|
665
|
+
* React 19 flight metadata for a server component owner (ReactComponentInfo).
|
|
666
|
+
* Unlike client owners it has no `tag`; the owner chain continues via `owner`.
|
|
667
|
+
*/
|
|
668
|
+
interface RendererRefreshUpdate {
|
|
669
|
+
staleFamilies: Set<Family>;
|
|
670
|
+
updatedFamilies: Set<Family>;
|
|
671
|
+
}
|
|
607
672
|
/**
|
|
608
673
|
* Represents a react-internal Fiber node.
|
|
609
674
|
*/
|
|
@@ -654,6 +719,7 @@ interface ReactDevToolsGlobalHook {
|
|
|
654
719
|
onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: number | void) => void;
|
|
655
720
|
onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
|
|
656
721
|
onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
|
|
722
|
+
onScheduleFiberRoot?: (rendererID: number, root: FiberRoot, children: ReactNode) => void;
|
|
657
723
|
renderers: Map<number, ReactRenderer>;
|
|
658
724
|
supportsFiber: boolean;
|
|
659
725
|
supportsFlight: boolean;
|
|
@@ -672,10 +738,7 @@ interface ReactRenderer {
|
|
|
672
738
|
overridePropsRenamePath?: (fiber: Fiber, oldPath: Array<number | string>, newPath: Array<number | string>) => void;
|
|
673
739
|
reconcilerVersion: string;
|
|
674
740
|
rendererPackageName: string;
|
|
675
|
-
scheduleRefresh?: (root: FiberRoot, update:
|
|
676
|
-
staleFamilies: Set<Family>;
|
|
677
|
-
updatedFamilies: Set<Family>;
|
|
678
|
-
}) => void;
|
|
741
|
+
scheduleRefresh?: (root: FiberRoot, update: RendererRefreshUpdate) => void;
|
|
679
742
|
scheduleRoot?: (root: FiberRoot, element: React.ReactNode) => void;
|
|
680
743
|
scheduleUpdate?: (fiber: Fiber) => void;
|
|
681
744
|
setErrorHandler?: (newShouldErrorImpl: (fiber: Fiber) => boolean) => void;
|
|
@@ -686,28 +749,30 @@ interface ReactRenderer {
|
|
|
686
749
|
declare global {
|
|
687
750
|
var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
|
|
688
751
|
} //#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
|
-
*/
|
|
752
|
+
//#region src/unsubscribe.d.ts
|
|
697
753
|
//#endregion
|
|
698
|
-
//#region ../../node_modules/.pnpm/bippy@0.
|
|
754
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/source.d.ts
|
|
699
755
|
//#region src/source/parse-stack.d.ts
|
|
700
756
|
interface StackFrame {
|
|
701
757
|
args?: unknown[];
|
|
702
758
|
columnNumber?: number;
|
|
703
759
|
lineNumber?: number;
|
|
760
|
+
enclosingLineNumber?: number;
|
|
761
|
+
enclosingColumnNumber?: number;
|
|
704
762
|
fileName?: string;
|
|
705
763
|
functionName?: string;
|
|
706
764
|
source?: string;
|
|
707
765
|
isServer?: boolean;
|
|
708
766
|
isSymbolicated?: boolean;
|
|
767
|
+
isIgnoreListed?: boolean;
|
|
709
768
|
}
|
|
710
769
|
//#endregion
|
|
770
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.0_react@19.2.6/node_modules/bippy/dist/core.d.ts
|
|
771
|
+
/**
|
|
772
|
+
* Returns `true` if bippy's instrumentation is active.
|
|
773
|
+
*/
|
|
774
|
+
declare const isInstrumentationActive: () => boolean;
|
|
775
|
+
//#endregion
|
|
711
776
|
//#region src/utils/copy-content.d.ts
|
|
712
777
|
interface CopyContentOptions {
|
|
713
778
|
componentName?: string;
|
|
@@ -717,4 +782,4 @@ interface CopyContentOptions {
|
|
|
717
782
|
}
|
|
718
783
|
declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
|
|
719
784
|
//#endregion
|
|
720
|
-
export {
|
|
785
|
+
export { Rect as A, PluginConfig as C, ReactGrabAPI as D, PromptModeContext as E, ToolbarState as F, SettableOptions as M, SourceInfo as N, ReactGrabRendererProps as O, Theme as P, Plugin as S, Position as T, ElementSelectedEventDetail as _, ActionContext as a, Options as b, AgentContext as c, DeepPartial as d, DragRect as f, ElementLabelVariant as g, ElementLabelContext as h, Fiber as i, SelectedElementPayload as j, ReactGrabState as k, ContextMenuAction as l, ElementBounds as m, isInstrumentationActive as n, ActionContextHooks as o, ElementAtPointOptions as p, StackFrame as r, ActivationMode as s, copyContent as t, ContextMenuActionContext as u, GrabbedBox as v, PluginHooks as w, OverlayBounds as x, OpenFileActionHooks as y };
|