react-grab 0.1.48-dev.78b2097 → 0.1.48-dev.8c97d19
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 +15 -58
- package/dist/{copy-content-Ca2txV90.d.cts → copy-content-CcSwO8vJ.d.ts} +45 -23
- package/dist/{copy-content-D6YIoJK4.d.ts → copy-content-Dxdqj7pl.d.cts} +45 -23
- 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-CbdpG62z.cjs +14 -0
- package/dist/core-GkjiUIdu.js +14 -0
- package/dist/errors-BEgowzRA.d.ts +29 -0
- package/dist/errors-CTlIFDQs.d.cts +29 -0
- package/dist/execute-context-menu-action-BxmKGOGd.js +9 -0
- package/dist/execute-context-menu-action-XBkA2DZj.cjs +9 -0
- package/dist/freeze-updates--I26mH3x.js +43 -0
- package/dist/freeze-updates-DG-dauYq.cjs +43 -0
- package/dist/{index-C_tGQJlm.d.ts → index-Cd-ADR9Q.d.ts} +1 -1
- package/dist/{index-CgWlIagV.d.cts → index-DdYffA2X.d.cts} +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 +20 -19
- package/dist/index.js +1 -1
- package/dist/open-file-B1MswJj_.js +29 -0
- package/dist/open-file-C24ZKam-.cjs +20 -0
- package/dist/primitives.cjs +2 -2
- package/dist/primitives.d.cts +51 -2
- package/dist/primitives.d.ts +51 -2
- package/dist/primitives.js +2 -2
- package/dist/renderer-BPmMYLfH.cjs +9 -0
- package/dist/renderer-BloXgzGv.js +9 -0
- package/dist/styles.css +1 -1
- package/package.json +11 -5
- package/dist/copy-content-Cn2UzunP.js +0 -10
- package/dist/copy-content-DwEXbw5L.cjs +0 -10
- package/dist/core-CqqlbJiH.js +0 -14
- package/dist/core-CrEwKRvH.cjs +0 -14
- package/dist/create-pointer-move-prompt-handoff-C9VrFCPT.cjs +0 -9
- package/dist/create-pointer-move-prompt-handoff-CUavHtQs.js +0 -9
- package/dist/freeze-updates-BonQZ4R3.cjs +0 -52
- package/dist/freeze-updates-DZwkfxs_.js +0 -52
- package/dist/renderer-DjuNVwzA.js +0 -9
- package/dist/renderer-Dmyb1Psy.cjs +0 -9
package/README.md
CHANGED
|
@@ -114,72 +114,29 @@ 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
|
-
id: "my-action",
|
|
147
|
-
label: "My Action",
|
|
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) => isElementGrabbable(candidate) && !toolbarElement.contains(candidate),
|
|
155
136
|
});
|
|
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
137
|
```
|
|
181
138
|
|
|
182
|
-
|
|
139
|
+
Add `data-react-grab-ignore` to your picker interface so hit testing skips its subtree.
|
|
183
140
|
|
|
184
141
|
## Resources & Contributing Back
|
|
185
142
|
|
|
@@ -25,6 +25,17 @@ interface Position {
|
|
|
25
25
|
x: number;
|
|
26
26
|
y: number;
|
|
27
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
|
+
}
|
|
28
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] };
|
|
29
40
|
interface Theme {
|
|
30
41
|
/**
|
|
@@ -140,11 +151,13 @@ interface AgentContext<T = unknown> {
|
|
|
140
151
|
sessionId?: string;
|
|
141
152
|
}
|
|
142
153
|
type ActivationMode = "toggle" | "hold";
|
|
143
|
-
interface
|
|
144
|
-
transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
|
|
154
|
+
interface OpenFileActionHooks {
|
|
145
155
|
onOpenFile: (filePath: string, lineNumber?: number) => boolean | void;
|
|
146
156
|
transformOpenFileUrl: (url: string, filePath: string, lineNumber?: number) => string;
|
|
147
157
|
}
|
|
158
|
+
interface ActionContextHooks extends OpenFileActionHooks {
|
|
159
|
+
transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
|
|
160
|
+
}
|
|
148
161
|
interface ActionContext {
|
|
149
162
|
element: Element;
|
|
150
163
|
elements: Element[];
|
|
@@ -260,24 +273,24 @@ interface HierarchyState {
|
|
|
260
273
|
activeIndex: number;
|
|
261
274
|
}
|
|
262
275
|
interface PluginHooks {
|
|
263
|
-
onActivate?: () => void
|
|
264
|
-
onDeactivate?: () => void
|
|
265
|
-
onElementHover?: (element: Element) => void
|
|
276
|
+
onActivate?: () => void | Promise<void>;
|
|
277
|
+
onDeactivate?: () => void | Promise<void>;
|
|
278
|
+
onElementHover?: (element: Element) => void | Promise<void>;
|
|
266
279
|
onElementSelect?: (element: Element) => boolean | void | Promise<boolean>;
|
|
267
|
-
onDragStart?: (startX: number, startY: number) => void
|
|
268
|
-
onDragEnd?: (elements: Element[], bounds: DragRect) => void
|
|
280
|
+
onDragStart?: (startX: number, startY: number) => void | Promise<void>;
|
|
281
|
+
onDragEnd?: (elements: Element[], bounds: DragRect) => void | Promise<void>;
|
|
269
282
|
onBeforeCopy?: (elements: Element[]) => void | Promise<void>;
|
|
270
283
|
transformCopyContent?: (content: string, elements: Element[]) => string | Promise<string>;
|
|
271
|
-
onAfterCopy?: (elements: Element[], success: boolean) => void
|
|
272
|
-
onCopySuccess?: (elements: Element[], content: string) => void
|
|
273
|
-
onCopyError?: (error: Error) => void
|
|
274
|
-
onStateChange?: (state: ReactGrabState) => void
|
|
275
|
-
onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void
|
|
276
|
-
onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void
|
|
277
|
-
onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void
|
|
278
|
-
onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void
|
|
279
|
-
onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void
|
|
280
|
-
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>;
|
|
281
294
|
onOpenFile?: (filePath: string, lineNumber?: number) => boolean | void;
|
|
282
295
|
transformHtmlContent?: (html: string, elements: Element[]) => string | Promise<string>;
|
|
283
296
|
transformAgentContext?: (context: AgentContext, elements: Element[]) => AgentContext | Promise<AgentContext>;
|
|
@@ -289,7 +302,7 @@ interface PluginConfig {
|
|
|
289
302
|
options?: SettableOptions;
|
|
290
303
|
actions?: ContextMenuAction[];
|
|
291
304
|
hooks?: PluginHooks;
|
|
292
|
-
cleanup?: () =>
|
|
305
|
+
cleanup?: () => undefined;
|
|
293
306
|
}
|
|
294
307
|
interface Plugin {
|
|
295
308
|
name: string;
|
|
@@ -343,6 +356,7 @@ interface SettableOptions extends Options {
|
|
|
343
356
|
interface SourceInfo {
|
|
344
357
|
filePath: string;
|
|
345
358
|
lineNumber: number | null;
|
|
359
|
+
columnNumber: number | null;
|
|
346
360
|
componentName: string | null;
|
|
347
361
|
}
|
|
348
362
|
interface SelectedElementPayload {
|
|
@@ -432,13 +446,19 @@ interface FrozenLabelEntry {
|
|
|
432
446
|
bounds: OverlayBounds;
|
|
433
447
|
mouseX?: number;
|
|
434
448
|
}
|
|
449
|
+
interface FrozenLabelEntryAccessor {
|
|
450
|
+
read: () => FrozenLabelEntry | null;
|
|
451
|
+
}
|
|
452
|
+
interface SelectionLabelInstanceAccessor {
|
|
453
|
+
read: () => SelectionLabelInstance | null;
|
|
454
|
+
}
|
|
435
455
|
interface ReactGrabRendererProps {
|
|
436
456
|
selectionVisible?: boolean;
|
|
437
457
|
selectionBounds?: OverlayBounds;
|
|
438
458
|
selectionBoundsMultiple?: OverlayBounds[];
|
|
439
459
|
selectionShouldSnap?: boolean;
|
|
440
460
|
selectionElementsCount?: number;
|
|
441
|
-
|
|
461
|
+
frozenLabelEntryAccessors?: FrozenLabelEntryAccessor[];
|
|
442
462
|
pendingShiftPreviewEntry?: FrozenLabelEntry;
|
|
443
463
|
selectionFilePath?: string;
|
|
444
464
|
selectionLineNumber?: number;
|
|
@@ -449,6 +469,7 @@ interface ReactGrabRendererProps {
|
|
|
449
469
|
hierarchyState?: HierarchyState;
|
|
450
470
|
hierarchyMenuPosition?: DropdownAnchor | null;
|
|
451
471
|
labelInstances?: SelectionLabelInstance[];
|
|
472
|
+
labelInstanceAccessors?: SelectionLabelInstanceAccessor[];
|
|
452
473
|
dragVisible?: boolean;
|
|
453
474
|
dragBounds?: OverlayBounds;
|
|
454
475
|
grabbedBoxes?: Array<{
|
|
@@ -469,6 +490,7 @@ interface ReactGrabRendererProps {
|
|
|
469
490
|
onToggleExpand?: () => void;
|
|
470
491
|
selectionLabelShakeCount?: number;
|
|
471
492
|
onConfirmDismiss?: () => void;
|
|
493
|
+
onOpenSelectionFile?: () => void;
|
|
472
494
|
discardPrompt?: SelectionDiscardPrompt;
|
|
473
495
|
toolbarVisible?: boolean;
|
|
474
496
|
isActive?: boolean;
|
|
@@ -550,7 +572,7 @@ interface ReactGrabEntry {
|
|
|
550
572
|
frames?: ReactGrabStackFrame[];
|
|
551
573
|
}
|
|
552
574
|
//#endregion
|
|
553
|
-
//#region ../../node_modules/.pnpm/bippy@0.6.
|
|
575
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.1_react@19.2.6/node_modules/bippy/dist/unsubscribe.d.ts
|
|
554
576
|
type Flags = number;
|
|
555
577
|
type Lanes = number;
|
|
556
578
|
type TypeOfMode = number;
|
|
@@ -730,7 +752,7 @@ declare global {
|
|
|
730
752
|
} //#endregion
|
|
731
753
|
//#region src/unsubscribe.d.ts
|
|
732
754
|
//#endregion
|
|
733
|
-
//#region ../../node_modules/.pnpm/bippy@0.6.
|
|
755
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.1_react@19.2.6/node_modules/bippy/dist/source.d.ts
|
|
734
756
|
//#region src/source/parse-stack.d.ts
|
|
735
757
|
interface StackFrame {
|
|
736
758
|
args?: unknown[];
|
|
@@ -746,7 +768,7 @@ interface StackFrame {
|
|
|
746
768
|
isIgnoreListed?: boolean;
|
|
747
769
|
}
|
|
748
770
|
//#endregion
|
|
749
|
-
//#region ../../node_modules/.pnpm/bippy@0.6.
|
|
771
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.1_react@19.2.6/node_modules/bippy/dist/core.d.ts
|
|
750
772
|
/**
|
|
751
773
|
* Returns `true` if bippy's instrumentation is active.
|
|
752
774
|
*/
|
|
@@ -761,4 +783,4 @@ interface CopyContentOptions {
|
|
|
761
783
|
}
|
|
762
784
|
declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
|
|
763
785
|
//#endregion
|
|
764
|
-
export {
|
|
786
|
+
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 };
|
|
@@ -25,6 +25,17 @@ interface Position {
|
|
|
25
25
|
x: number;
|
|
26
26
|
y: number;
|
|
27
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
|
+
}
|
|
28
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] };
|
|
29
40
|
interface Theme {
|
|
30
41
|
/**
|
|
@@ -140,11 +151,13 @@ interface AgentContext<T = unknown> {
|
|
|
140
151
|
sessionId?: string;
|
|
141
152
|
}
|
|
142
153
|
type ActivationMode = "toggle" | "hold";
|
|
143
|
-
interface
|
|
144
|
-
transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
|
|
154
|
+
interface OpenFileActionHooks {
|
|
145
155
|
onOpenFile: (filePath: string, lineNumber?: number) => boolean | void;
|
|
146
156
|
transformOpenFileUrl: (url: string, filePath: string, lineNumber?: number) => string;
|
|
147
157
|
}
|
|
158
|
+
interface ActionContextHooks extends OpenFileActionHooks {
|
|
159
|
+
transformHtmlContent: (html: string, elements: Element[]) => Promise<string>;
|
|
160
|
+
}
|
|
148
161
|
interface ActionContext {
|
|
149
162
|
element: Element;
|
|
150
163
|
elements: Element[];
|
|
@@ -260,24 +273,24 @@ interface HierarchyState {
|
|
|
260
273
|
activeIndex: number;
|
|
261
274
|
}
|
|
262
275
|
interface PluginHooks {
|
|
263
|
-
onActivate?: () => void
|
|
264
|
-
onDeactivate?: () => void
|
|
265
|
-
onElementHover?: (element: Element) => void
|
|
276
|
+
onActivate?: () => void | Promise<void>;
|
|
277
|
+
onDeactivate?: () => void | Promise<void>;
|
|
278
|
+
onElementHover?: (element: Element) => void | Promise<void>;
|
|
266
279
|
onElementSelect?: (element: Element) => boolean | void | Promise<boolean>;
|
|
267
|
-
onDragStart?: (startX: number, startY: number) => void
|
|
268
|
-
onDragEnd?: (elements: Element[], bounds: DragRect) => void
|
|
280
|
+
onDragStart?: (startX: number, startY: number) => void | Promise<void>;
|
|
281
|
+
onDragEnd?: (elements: Element[], bounds: DragRect) => void | Promise<void>;
|
|
269
282
|
onBeforeCopy?: (elements: Element[]) => void | Promise<void>;
|
|
270
283
|
transformCopyContent?: (content: string, elements: Element[]) => string | Promise<string>;
|
|
271
|
-
onAfterCopy?: (elements: Element[], success: boolean) => void
|
|
272
|
-
onCopySuccess?: (elements: Element[], content: string) => void
|
|
273
|
-
onCopyError?: (error: Error) => void
|
|
274
|
-
onStateChange?: (state: ReactGrabState) => void
|
|
275
|
-
onPromptModeChange?: (isPromptMode: boolean, context: PromptModeContext) => void
|
|
276
|
-
onSelectionBox?: (visible: boolean, bounds: OverlayBounds | null, element: Element | null) => void
|
|
277
|
-
onDragBox?: (visible: boolean, bounds: OverlayBounds | null) => void
|
|
278
|
-
onGrabbedBox?: (bounds: OverlayBounds, element: Element) => void
|
|
279
|
-
onElementLabel?: (visible: boolean, variant: ElementLabelVariant, context: ElementLabelContext) => void
|
|
280
|
-
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>;
|
|
281
294
|
onOpenFile?: (filePath: string, lineNumber?: number) => boolean | void;
|
|
282
295
|
transformHtmlContent?: (html: string, elements: Element[]) => string | Promise<string>;
|
|
283
296
|
transformAgentContext?: (context: AgentContext, elements: Element[]) => AgentContext | Promise<AgentContext>;
|
|
@@ -289,7 +302,7 @@ interface PluginConfig {
|
|
|
289
302
|
options?: SettableOptions;
|
|
290
303
|
actions?: ContextMenuAction[];
|
|
291
304
|
hooks?: PluginHooks;
|
|
292
|
-
cleanup?: () =>
|
|
305
|
+
cleanup?: () => undefined;
|
|
293
306
|
}
|
|
294
307
|
interface Plugin {
|
|
295
308
|
name: string;
|
|
@@ -343,6 +356,7 @@ interface SettableOptions extends Options {
|
|
|
343
356
|
interface SourceInfo {
|
|
344
357
|
filePath: string;
|
|
345
358
|
lineNumber: number | null;
|
|
359
|
+
columnNumber: number | null;
|
|
346
360
|
componentName: string | null;
|
|
347
361
|
}
|
|
348
362
|
interface SelectedElementPayload {
|
|
@@ -432,13 +446,19 @@ interface FrozenLabelEntry {
|
|
|
432
446
|
bounds: OverlayBounds;
|
|
433
447
|
mouseX?: number;
|
|
434
448
|
}
|
|
449
|
+
interface FrozenLabelEntryAccessor {
|
|
450
|
+
read: () => FrozenLabelEntry | null;
|
|
451
|
+
}
|
|
452
|
+
interface SelectionLabelInstanceAccessor {
|
|
453
|
+
read: () => SelectionLabelInstance | null;
|
|
454
|
+
}
|
|
435
455
|
interface ReactGrabRendererProps {
|
|
436
456
|
selectionVisible?: boolean;
|
|
437
457
|
selectionBounds?: OverlayBounds;
|
|
438
458
|
selectionBoundsMultiple?: OverlayBounds[];
|
|
439
459
|
selectionShouldSnap?: boolean;
|
|
440
460
|
selectionElementsCount?: number;
|
|
441
|
-
|
|
461
|
+
frozenLabelEntryAccessors?: FrozenLabelEntryAccessor[];
|
|
442
462
|
pendingShiftPreviewEntry?: FrozenLabelEntry;
|
|
443
463
|
selectionFilePath?: string;
|
|
444
464
|
selectionLineNumber?: number;
|
|
@@ -449,6 +469,7 @@ interface ReactGrabRendererProps {
|
|
|
449
469
|
hierarchyState?: HierarchyState;
|
|
450
470
|
hierarchyMenuPosition?: DropdownAnchor | null;
|
|
451
471
|
labelInstances?: SelectionLabelInstance[];
|
|
472
|
+
labelInstanceAccessors?: SelectionLabelInstanceAccessor[];
|
|
452
473
|
dragVisible?: boolean;
|
|
453
474
|
dragBounds?: OverlayBounds;
|
|
454
475
|
grabbedBoxes?: Array<{
|
|
@@ -469,6 +490,7 @@ interface ReactGrabRendererProps {
|
|
|
469
490
|
onToggleExpand?: () => void;
|
|
470
491
|
selectionLabelShakeCount?: number;
|
|
471
492
|
onConfirmDismiss?: () => void;
|
|
493
|
+
onOpenSelectionFile?: () => void;
|
|
472
494
|
discardPrompt?: SelectionDiscardPrompt;
|
|
473
495
|
toolbarVisible?: boolean;
|
|
474
496
|
isActive?: boolean;
|
|
@@ -550,7 +572,7 @@ interface ReactGrabEntry {
|
|
|
550
572
|
frames?: ReactGrabStackFrame[];
|
|
551
573
|
}
|
|
552
574
|
//#endregion
|
|
553
|
-
//#region ../../node_modules/.pnpm/bippy@0.6.
|
|
575
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.1_react@19.2.6/node_modules/bippy/dist/unsubscribe.d.ts
|
|
554
576
|
type Flags = number;
|
|
555
577
|
type Lanes = number;
|
|
556
578
|
type TypeOfMode = number;
|
|
@@ -730,7 +752,7 @@ declare global {
|
|
|
730
752
|
} //#endregion
|
|
731
753
|
//#region src/unsubscribe.d.ts
|
|
732
754
|
//#endregion
|
|
733
|
-
//#region ../../node_modules/.pnpm/bippy@0.6.
|
|
755
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.1_react@19.2.6/node_modules/bippy/dist/source.d.ts
|
|
734
756
|
//#region src/source/parse-stack.d.ts
|
|
735
757
|
interface StackFrame {
|
|
736
758
|
args?: unknown[];
|
|
@@ -746,7 +768,7 @@ interface StackFrame {
|
|
|
746
768
|
isIgnoreListed?: boolean;
|
|
747
769
|
}
|
|
748
770
|
//#endregion
|
|
749
|
-
//#region ../../node_modules/.pnpm/bippy@0.6.
|
|
771
|
+
//#region ../../node_modules/.pnpm/bippy@0.6.1_react@19.2.6/node_modules/bippy/dist/core.d.ts
|
|
750
772
|
/**
|
|
751
773
|
* Returns `true` if bippy's instrumentation is active.
|
|
752
774
|
*/
|
|
@@ -761,4 +783,4 @@ interface CopyContentOptions {
|
|
|
761
783
|
}
|
|
762
784
|
declare const copyContent: (content: string, options?: CopyContentOptions) => boolean;
|
|
763
785
|
//#endregion
|
|
764
|
-
export {
|
|
786
|
+
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 };
|
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-CbdpG62z.cjs`),t=require(`../freeze-updates-DG-dauYq.cjs`),n=require(`../open-file-C24ZKam-.cjs`);exports.DEFAULT_THEME=e.l,exports.copyContent=n.n,exports.formatElementInfo=n.r,exports.generateSnippet=e.n,exports.getStack=n.s,exports.init=e.t,exports.isInstrumentationActive=t.it;
|
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 { C as PluginConfig, D as ReactGrabAPI, M as SettableOptions, N as SourceInfo, O as ReactGrabRendererProps, S as Plugin, a as ActionContext, b as Options, c as AgentContext, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, w as PluginHooks, x as OverlayBounds } from "../copy-content-Dxdqj7pl.cjs";
|
|
10
|
+
import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-DdYffA2X.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 { C as PluginConfig, D as ReactGrabAPI, M as SettableOptions, N as SourceInfo, O as ReactGrabRendererProps, S as Plugin, a as ActionContext, b as Options, c as AgentContext, l as ContextMenuAction, n as isInstrumentationActive, t as copyContent, w as PluginHooks, x as OverlayBounds } from "../copy-content-CcSwO8vJ.js";
|
|
10
|
+
import { a as getStack, i as formatElementInfo, n as generateSnippet, r as DEFAULT_THEME, t as init } from "../index-Cd-ADR9Q.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{
|
|
9
|
+
import{l as e,n as t,t as n}from"../core-GkjiUIdu.js";import{it as r}from"../freeze-updates--I26mH3x.js";import{n as i,r as a,s as o}from"../open-file-B1MswJj_.js";export{e as DEFAULT_THEME,i as copyContent,a as formatElementInfo,t as generateSnippet,o as getStack,n as init,r as isInstrumentationActive};
|