react-native-grab 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/react-native/context-menu.js +237 -0
  3. package/dist/cjs/react-native/context-menu.js.map +1 -0
  4. package/dist/cjs/react-native/focus-effect.js +38 -0
  5. package/dist/cjs/react-native/focus-effect.js.map +1 -0
  6. package/dist/cjs/react-native/grab-control-bar.js +101 -0
  7. package/dist/cjs/react-native/grab-control-bar.js.map +1 -0
  8. package/dist/cjs/react-native/grab-controller.js +14 -1
  9. package/dist/cjs/react-native/grab-controller.js.map +1 -1
  10. package/dist/cjs/react-native/grab-overlay.js +206 -10
  11. package/dist/cjs/react-native/grab-overlay.js.map +1 -1
  12. package/dist/cjs/react-native/grab-screen.js +2 -16
  13. package/dist/cjs/react-native/grab-screen.js.map +1 -1
  14. package/dist/cjs/react-native/index.js +4 -1
  15. package/dist/cjs/react-native/index.js.map +1 -1
  16. package/dist/cjs/react-native/open.js +21 -0
  17. package/dist/cjs/react-native/open.js.map +1 -0
  18. package/dist/esm/react-native/context-menu.js +233 -0
  19. package/dist/esm/react-native/context-menu.js.map +1 -0
  20. package/dist/esm/react-native/focus-effect.js +33 -0
  21. package/dist/esm/react-native/focus-effect.js.map +1 -0
  22. package/dist/esm/react-native/grab-control-bar.js +97 -0
  23. package/dist/esm/react-native/grab-control-bar.js.map +1 -0
  24. package/dist/esm/react-native/grab-controller.js +11 -0
  25. package/dist/esm/react-native/grab-controller.js.map +1 -1
  26. package/dist/esm/react-native/grab-overlay.js +209 -13
  27. package/dist/esm/react-native/grab-overlay.js.map +1 -1
  28. package/dist/esm/react-native/grab-screen.js +2 -16
  29. package/dist/esm/react-native/grab-screen.js.map +1 -1
  30. package/dist/esm/react-native/index.js +3 -0
  31. package/dist/esm/react-native/index.js.map +1 -1
  32. package/dist/esm/react-native/open.js +14 -0
  33. package/dist/esm/react-native/open.js.map +1 -0
  34. package/dist/types/react-native/context-menu.d.ts +38 -0
  35. package/dist/types/react-native/context-menu.d.ts.map +1 -0
  36. package/dist/types/react-native/focus-effect.d.ts +3 -0
  37. package/dist/types/react-native/focus-effect.d.ts.map +1 -0
  38. package/dist/types/react-native/grab-control-bar.d.ts +13 -0
  39. package/dist/types/react-native/grab-control-bar.d.ts.map +1 -0
  40. package/dist/types/react-native/grab-controller.d.ts +3 -0
  41. package/dist/types/react-native/grab-controller.d.ts.map +1 -1
  42. package/dist/types/react-native/grab-overlay.d.ts.map +1 -1
  43. package/dist/types/react-native/grab-screen.d.ts.map +1 -1
  44. package/dist/types/react-native/index.d.ts +1 -0
  45. package/dist/types/react-native/index.d.ts.map +1 -1
  46. package/dist/types/react-native/open.d.ts +7 -0
  47. package/dist/types/react-native/open.d.ts.map +1 -0
  48. package/package.json +1 -1
@@ -1,38 +1,67 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useRef, useState } from "react";
3
- import { PanResponder, StyleSheet, Text, View } from "react-native";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { Animated, Dimensions, PanResponder, Pressable, StyleSheet, Text, View, } from "react-native";
4
4
  import { getAppRootShadowNode, getFocusedScreenShadowNode } from "./containers";
5
5
  import { findNodeAtPoint, measureInWindow } from "./measure";
6
6
  import { useDevMenu } from "./dev-menu";
7
7
  import { getDescription } from "./description";
8
8
  import { copyViaMetro } from "./copy";
9
9
  import { FullScreenOverlay } from "./full-screen-overlay";
10
- import { setEnableGrabbingHandler } from "./grab-controller";
10
+ import { setEnableGrabbingHandler, setToggleGrabMenuHandler } from "./grab-controller";
11
+ import { GrabControlBar } from "./grab-control-bar";
12
+ import { ContextMenu } from "./context-menu";
13
+ import { getRenderedBy } from "./get-rendered-by";
14
+ import { openStackFrameInEditor } from "./open";
11
15
  const COPY_BADGE_DURATION_MS = 1600;
12
16
  const CALLSTACK_PRIMARY = "#8232FF";
13
17
  const HIGHLIGHT_FILL = "rgba(130, 50, 255, 0.2)";
14
18
  const BADGE_BACKGROUND = "rgba(130, 50, 255, 0.92)";
19
+ const BAR_HEIGHT = 36;
20
+ const BAR_WIDTH = 108;
21
+ const INITIAL_BAR_POSITION = {
22
+ x: (Dimensions.get("window").width - BAR_WIDTH) / 2,
23
+ y: 72,
24
+ };
25
+ const clamp = (value, min, max) => {
26
+ return Math.min(Math.max(value, min), max);
27
+ };
15
28
  export const ReactNativeGrabOverlay = () => {
16
29
  const copyBadgeTimeoutRef = useRef(null);
30
+ const controlBarPosition = useRef(new Animated.ValueXY(INITIAL_BAR_POSITION)).current;
31
+ const shouldResetControlBarPositionRef = useRef(false);
17
32
  const [state, setState] = useState({
33
+ isMenuVisible: false,
18
34
  isSessionEnabled: false,
19
35
  grabbedElement: null,
20
36
  isCopyBadgeVisible: false,
37
+ selectedElement: null,
21
38
  });
22
39
  const startSession = useCallback(() => {
23
40
  setState((prev) => ({
24
41
  ...prev,
25
42
  grabbedElement: null,
26
43
  isSessionEnabled: true,
44
+ selectedElement: null,
27
45
  }));
28
46
  }, []);
29
47
  const stopSession = useCallback(() => {
30
48
  setState((prev) => ({
31
49
  ...prev,
32
- grabbedElement: null,
33
50
  isSessionEnabled: false,
34
51
  }));
35
52
  }, []);
53
+ const toggleMenuVisibility = useCallback(() => {
54
+ setState((prev) => {
55
+ shouldResetControlBarPositionRef.current = prev.isMenuVisible;
56
+ return {
57
+ ...prev,
58
+ isMenuVisible: !prev.isMenuVisible,
59
+ isSessionEnabled: !prev.isMenuVisible ? prev.isSessionEnabled : false,
60
+ grabbedElement: !prev.isMenuVisible ? prev.grabbedElement : null,
61
+ selectedElement: !prev.isMenuVisible ? prev.selectedElement : null,
62
+ };
63
+ });
64
+ }, []);
36
65
  useEffect(() => {
37
66
  return () => {
38
67
  if (copyBadgeTimeoutRef.current) {
@@ -46,6 +75,13 @@ export const ReactNativeGrabOverlay = () => {
46
75
  grabbedElement,
47
76
  }));
48
77
  }, []);
78
+ const closeSelectedElementMenu = useCallback(() => {
79
+ setState((prev) => ({
80
+ ...prev,
81
+ selectedElement: null,
82
+ grabbedElement: null,
83
+ }));
84
+ }, []);
49
85
  const showCopiedBadge = useCallback(() => {
50
86
  if (copyBadgeTimeoutRef.current) {
51
87
  clearTimeout(copyBadgeTimeoutRef.current);
@@ -56,13 +92,22 @@ export const ReactNativeGrabOverlay = () => {
56
92
  copyBadgeTimeoutRef.current = null;
57
93
  }, COPY_BADGE_DURATION_MS);
58
94
  }, []);
95
+ const resetControlBarPosition = useCallback(() => {
96
+ if (!shouldResetControlBarPositionRef.current) {
97
+ return;
98
+ }
99
+ shouldResetControlBarPositionRef.current = false;
100
+ controlBarPosition.setValue(INITIAL_BAR_POSITION);
101
+ }, [controlBarPosition]);
59
102
  useEffect(() => {
60
103
  setEnableGrabbingHandler(startSession);
104
+ setToggleGrabMenuHandler(toggleMenuVisibility);
61
105
  return () => {
62
106
  setEnableGrabbingHandler(null);
107
+ setToggleGrabMenuHandler(null);
63
108
  };
64
- }, [startSession]);
65
- useDevMenu(startSession);
109
+ }, [startSession, toggleMenuVisibility]);
110
+ useDevMenu(toggleMenuVisibility);
66
111
  const getElementAtPoint = (nativePageX, nativePageY) => {
67
112
  const appRootShadowNode = getAppRootShadowNode();
68
113
  const focusedScreenShadowNode = getFocusedScreenShadowNode();
@@ -91,10 +136,54 @@ export const ReactNativeGrabOverlay = () => {
91
136
  updateGrabbedElement(result);
92
137
  };
93
138
  const handleGrabbing = async (result) => {
94
- const description = await getDescription(result.fiberNode);
95
- console.log("[react-native-grab] Description:", description);
96
- await copyViaMetro(description);
139
+ const [description, renderedBy] = await Promise.all([
140
+ getDescription(result.fiberNode),
141
+ getRenderedBy(result.fiberNode),
142
+ ]);
143
+ const firstFrame = renderedBy.find((frame) => Boolean(frame.file)) ?? null;
144
+ const elementNameMatch = description.match(/<([A-Za-z0-9_$.:-]+)/);
145
+ const elementName = elementNameMatch?.[1] ?? firstFrame?.name ?? "Selected element";
146
+ setState((prev) => ({
147
+ ...prev,
148
+ grabbedElement: result,
149
+ selectedElement: {
150
+ description,
151
+ elementName,
152
+ frame: firstFrame,
153
+ result,
154
+ },
155
+ }));
97
156
  };
157
+ const handleCopySelectedElement = useCallback(async () => {
158
+ const selectedElement = state.selectedElement;
159
+ if (!selectedElement) {
160
+ return;
161
+ }
162
+ closeSelectedElementMenu();
163
+ try {
164
+ await copyViaMetro(selectedElement.description);
165
+ showCopiedBadge();
166
+ }
167
+ catch {
168
+ console.error("[react-native-grab] Copying failed. Ensure your Metro config is wrapped with withReactNativeGrab(...) and Metro has been restarted.");
169
+ }
170
+ }, [closeSelectedElementMenu, showCopiedBadge, state.selectedElement]);
171
+ const handleOpenSelectedElement = useCallback(async () => {
172
+ const frame = state.selectedElement?.frame;
173
+ if (!frame?.file || frame.line == null) {
174
+ return;
175
+ }
176
+ closeSelectedElementMenu();
177
+ try {
178
+ await openStackFrameInEditor({
179
+ file: frame.file,
180
+ lineNumber: frame.line,
181
+ });
182
+ }
183
+ catch {
184
+ console.error("[react-native-grab] Opening editor failed.");
185
+ }
186
+ }, [closeSelectedElementMenu, state.selectedElement]);
98
187
  const panResponder = useRef(PanResponder.create({
99
188
  onStartShouldSetPanResponderCapture: () => true,
100
189
  onMoveShouldSetPanResponderCapture: () => true,
@@ -108,10 +197,9 @@ export const ReactNativeGrabOverlay = () => {
108
197
  return;
109
198
  }
110
199
  await handleGrabbing(result);
111
- showCopiedBadge();
112
200
  }
113
201
  catch {
114
- console.error("[react-native-grab] Copying failed. Ensure your Metro config is wrapped with withReactNativeGrab(...) and Metro has been restarted.");
202
+ console.error("[react-native-grab] Grabbing failed.");
115
203
  }
116
204
  finally {
117
205
  stopSession();
@@ -119,7 +207,49 @@ export const ReactNativeGrabOverlay = () => {
119
207
  })();
120
208
  },
121
209
  })).current;
122
- return (_jsx(FullScreenOverlay, { children: _jsxs(View, { pointerEvents: "box-none", style: styles.overlayRoot, children: [state.isSessionEnabled && (_jsx(View, { style: [StyleSheet.absoluteFill], ...panResponder.panHandlers })), state.isSessionEnabled && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Touch and move around to grab" }) })), state.isCopyBadgeVisible && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Element copied" }) })), !!state.grabbedElement && (_jsx(View, { style: [
210
+ const dragHandlePanResponder = useRef(PanResponder.create({
211
+ onStartShouldSetPanResponder: () => true,
212
+ onMoveShouldSetPanResponder: (_, gestureState) => Math.abs(gestureState.dx) > 2 || Math.abs(gestureState.dy) > 2,
213
+ onPanResponderGrant: () => {
214
+ controlBarPosition.stopAnimation((value) => {
215
+ controlBarPosition.setOffset(value);
216
+ controlBarPosition.setValue({ x: 0, y: 0 });
217
+ });
218
+ },
219
+ onPanResponderMove: Animated.event([null, { dx: controlBarPosition.x, dy: controlBarPosition.y }], { useNativeDriver: false }),
220
+ onPanResponderRelease: () => {
221
+ controlBarPosition.flattenOffset();
222
+ controlBarPosition.stopAnimation((value) => {
223
+ const { width, height } = Dimensions.get("window");
224
+ controlBarPosition.setValue({
225
+ x: clamp(value.x, 0, Math.max(0, width - BAR_WIDTH)),
226
+ y: clamp(value.y, 0, Math.max(0, height - BAR_HEIGHT)),
227
+ });
228
+ });
229
+ },
230
+ onPanResponderTerminate: () => {
231
+ controlBarPosition.flattenOffset();
232
+ controlBarPosition.stopAnimation((value) => {
233
+ const { width, height } = Dimensions.get("window");
234
+ controlBarPosition.setValue({
235
+ x: clamp(value.x, 0, Math.max(0, width - BAR_WIDTH)),
236
+ y: clamp(value.y, 0, Math.max(0, height - BAR_HEIGHT)),
237
+ });
238
+ });
239
+ },
240
+ })).current;
241
+ const selectedElementMenuAnchor = useMemo(() => {
242
+ if (!state.selectedElement) {
243
+ return null;
244
+ }
245
+ const rect = state.selectedElement.result.rect;
246
+ return {
247
+ x: rect[0] + rect[2] / 2,
248
+ y: rect[1] + rect[3],
249
+ };
250
+ }, [state.selectedElement]);
251
+ const isControlBarVisible = state.isMenuVisible && !state.isSessionEnabled && state.selectedElement === null;
252
+ return (_jsx(FullScreenOverlay, { children: _jsxs(View, { pointerEvents: "box-none", style: styles.overlayRoot, children: [state.isSessionEnabled && (_jsx(View, { style: [StyleSheet.absoluteFill, styles.sessionCapture], ...panResponder.panHandlers })), state.isSessionEnabled && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Touch and move around to grab" }) })), state.isCopyBadgeVisible && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Element copied" }) })), !!state.grabbedElement && (_jsx(View, { style: [
123
253
  {
124
254
  position: "absolute",
125
255
  left: state.grabbedElement.rect[0],
@@ -133,13 +263,45 @@ export const ReactNativeGrabOverlay = () => {
133
263
  borderWidth: 1,
134
264
  borderColor: CALLSTACK_PRIMARY,
135
265
  },
136
- ] }))] }) }));
266
+ ] })), _jsx(GrabControlBar, { containerStyle: [
267
+ styles.controlBar,
268
+ {
269
+ transform: controlBarPosition.getTranslateTransform(),
270
+ },
271
+ ], dragHandlePanHandlers: dragHandlePanResponder.panHandlers, isSessionEnabled: state.isSessionEnabled, isVisible: isControlBarVisible, onHidden: resetControlBarPosition, onPressHide: toggleMenuVisibility, onPressSelect: startSession }), _jsxs(ContextMenu, { anchor: selectedElementMenuAnchor, cutout: state.selectedElement
272
+ ? {
273
+ x: state.selectedElement.result.rect[0],
274
+ y: state.selectedElement.result.rect[1],
275
+ width: state.selectedElement.result.rect[2],
276
+ height: state.selectedElement.result.rect[3],
277
+ }
278
+ : null, horizontalAlignment: "center", offset: { x: 0, y: 8 }, onClose: closeSelectedElementMenu, visible: state.selectedElement !== null, children: [_jsx(View, { style: styles.selectionMenuHeader, children: _jsx(Text, { numberOfLines: 1, style: styles.selectionMenuTitle, children: state.selectedElement?.elementName }) }), _jsxs(View, { style: styles.selectionMenuActions, children: [_jsx(Pressable, { accessibilityRole: "button", onPress: () => void handleCopySelectedElement(), style: ({ pressed }) => [
279
+ styles.selectionMenuActionButton,
280
+ pressed && styles.selectionMenuActionButtonPressed,
281
+ ], children: _jsx(Text, { style: styles.selectionMenuActionText, children: "Copy" }) }), _jsx(View, { style: styles.selectionMenuActionDivider }), _jsx(Pressable, { accessibilityRole: "button", disabled: !state.selectedElement?.frame?.file, onPress: () => void handleOpenSelectedElement(), style: ({ pressed }) => [
282
+ styles.selectionMenuActionButton,
283
+ pressed &&
284
+ state.selectedElement?.frame?.file &&
285
+ styles.selectionMenuActionButtonPressed,
286
+ ], children: _jsx(Text, { style: [
287
+ styles.selectionMenuActionText,
288
+ !state.selectedElement?.frame?.file && styles.selectionMenuActionTextDisabled,
289
+ ], children: "Open" }) })] })] })] }) }));
137
290
  };
138
291
  const styles = StyleSheet.create({
139
292
  overlayRoot: {
140
293
  ...StyleSheet.absoluteFillObject,
141
294
  zIndex: 9999,
142
295
  },
296
+ sessionCapture: {
297
+ zIndex: 1,
298
+ },
299
+ controlBar: {
300
+ position: "absolute",
301
+ top: 0,
302
+ left: 0,
303
+ zIndex: 2,
304
+ },
143
305
  topBadge: {
144
306
  position: "absolute",
145
307
  top: 52,
@@ -154,5 +316,39 @@ const styles = StyleSheet.create({
154
316
  fontSize: 13,
155
317
  fontWeight: "600",
156
318
  },
319
+ selectionMenuHeader: {
320
+ paddingHorizontal: 14,
321
+ paddingVertical: 12,
322
+ },
323
+ selectionMenuTitle: {
324
+ color: "#111111",
325
+ fontSize: 14,
326
+ fontWeight: "600",
327
+ },
328
+ selectionMenuActions: {
329
+ flexDirection: "row",
330
+ },
331
+ selectionMenuActionButton: {
332
+ flex: 1,
333
+ },
334
+ selectionMenuActionButtonPressed: {
335
+ backgroundColor: "rgba(17, 17, 17, 0.06)",
336
+ },
337
+ selectionMenuActionDivider: {
338
+ width: StyleSheet.hairlineWidth,
339
+ backgroundColor: "rgba(17, 17, 17, 0.12)",
340
+ },
341
+ selectionMenuActionText: {
342
+ flex: 1,
343
+ paddingHorizontal: 14,
344
+ paddingVertical: 12,
345
+ color: "#111111",
346
+ fontSize: 14,
347
+ fontWeight: "500",
348
+ textAlign: "center",
349
+ },
350
+ selectionMenuActionTextDisabled: {
351
+ opacity: 0.4,
352
+ },
157
353
  });
158
354
  //# sourceMappingURL=grab-overlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grab-overlay.js","sourceRoot":"","sources":["../../../src/react-native/grab-overlay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grab-overlay.js","sourceRoot":"","sources":["../../../src/react-native/grab-overlay.tsx"],"names":[],"mappings":"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"}
@@ -2,22 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useCallback, useRef } from "react";
3
3
  import { View } from "react-native";
4
4
  import { setFocusedScreenRef } from "./containers";
5
- const getFocusEffectImpl = () => {
6
- try {
7
- return require("expo-router").useFocusEffect;
8
- }
9
- catch {
10
- // Nothing we can do about it, it's not installed in the project.
11
- }
12
- try {
13
- return require("@react-navigation/native").useFocusEffect;
14
- }
15
- catch {
16
- // Nothing we can do about it, it's not installed in the project.
17
- }
18
- throw new Error("No useFocusEffect implementation found");
19
- };
20
- const useFocusEffect = getFocusEffectImpl();
5
+ import { getFocusEffect } from "./focus-effect";
6
+ const useFocusEffect = getFocusEffect();
21
7
  export const ReactNativeGrabScreen = ({ children, style, ...props }) => {
22
8
  const screenRef = useRef(null);
23
9
  useFocusEffect(useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"grab-screen.js","sourceRoot":"","sources":["../../../src/react-native/grab-screen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,kBAAkB,GAAG,GAA+B,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,0BAA0B,CAAC,CAAC,cAAc,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,kBAAkB,EAAE,CAAC;AAI5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACmB,EAAE,EAAE;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE5C,cAAc,CACZ,WAAW,CAAC,GAAG,EAAE;QACf,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CACP,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,OAAK,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,YACzD,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"grab-screen.js","sourceRoot":"","sources":["../../../src/react-native/grab-screen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC;AAIxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACmB,EAAE,EAAE;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE5C,cAAc,CACZ,WAAW,CAAC,GAAG,EAAE;QACf,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CACP,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,OAAK,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,YACzD,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -10,4 +10,7 @@ export const ReactNativeGrabContextProvider = __DEV__ ? require("./grab-context"
10
10
  export const enableGrabbing = __DEV__
11
11
  ? require("./grab-controller").enableGrabbing
12
12
  : noop;
13
+ export const setFocusEffect = __DEV__
14
+ ? require("./focus-effect").setFocusEffect
15
+ : noop;
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-native/index.ts"],"names":[],"mappings":"AAeA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAA4B,EAAE,EAAE,CAAC,QAAQ,CAAC;AAEzE,MAAM,CAAC,MAAM,mBAAmB,GAAkD,OAAO;IACvF,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,mBAAmB;IAC5C,CAAC,CAAC,WAAW,CAAC;AAEhB,MAAM,CAAC,MAAM,qBAAqB,GAAoD,OAAO;IAC3F,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB;IAChD,CAAC,CAAC,WAAW,CAAC;AAEhB,MAAM,CAAC,MAAM,8BAA8B,GACzC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAe,OAAO;IAC/C,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,cAAc;IAC7C,CAAC,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-native/index.ts"],"names":[],"mappings":"AAeA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACtB,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAA4B,EAAE,EAAE,CAAC,QAAQ,CAAC;AAEzE,MAAM,CAAC,MAAM,mBAAmB,GAAkD,OAAO;IACvF,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,mBAAmB;IAC5C,CAAC,CAAC,WAAW,CAAC;AAEhB,MAAM,CAAC,MAAM,qBAAqB,GAAoD,OAAO;IAC3F,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,qBAAqB;IAChD,CAAC,CAAC,WAAW,CAAC;AAEhB,MAAM,CAAC,MAAM,8BAA8B,GACzC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAe,OAAO;IAC/C,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,cAAc;IAC7C,CAAC,CAAC,IAAI,CAAC;AAET,MAAM,CAAC,MAAM,cAAc,GAA6C,OAAO;IAC7E,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,cAAc;IAC1C,CAAC,CAAC,IAAI,CAAC"}
@@ -0,0 +1,14 @@
1
+ import getDevServer from "react-native/Libraries/Core/Devtools/getDevServer";
2
+ export const openStackFrameInEditor = async (payload) => {
3
+ const response = await fetch(`${getDevServer().url}open-stack-frame`, {
4
+ method: "POST",
5
+ headers: {
6
+ "Content-Type": "application/json",
7
+ },
8
+ body: JSON.stringify(payload),
9
+ });
10
+ if (!response.ok) {
11
+ throw new Error(`Open stack frame request failed with status ${response.status}`);
12
+ }
13
+ };
14
+ //# sourceMappingURL=open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/react-native/open.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mDAAmD,CAAC;AAO7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAyB,EAAiB,EAAE;IACvF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,kBAAkB,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type ReactNode } from "react";
2
+ export type ContextMenuAnchor = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ export type ContextMenuCutout = {
7
+ x: number;
8
+ y: number;
9
+ width: number;
10
+ height: number;
11
+ };
12
+ export type ContextMenuHorizontalAlignment = "left" | "center" | "right";
13
+ export type ContextMenuVerticalAlignment = "top" | "center" | "bottom";
14
+ export type ContextMenuOffset = {
15
+ x: number;
16
+ y: number;
17
+ };
18
+ export type ContextMenuProps = {
19
+ anchor: ContextMenuAnchor | null;
20
+ children?: ReactNode;
21
+ cutout?: ContextMenuCutout | null;
22
+ horizontalAlignment?: ContextMenuHorizontalAlignment;
23
+ offset?: ContextMenuOffset;
24
+ onClose: () => void;
25
+ verticalAlignment?: ContextMenuVerticalAlignment;
26
+ visible: boolean;
27
+ };
28
+ export type ContextMenuItemProps = {
29
+ children: ReactNode;
30
+ destructive?: boolean;
31
+ disabled?: boolean;
32
+ onPress: () => void;
33
+ };
34
+ export declare const ContextMenu: {
35
+ ({ anchor, children, cutout, horizontalAlignment, offset, onClose, verticalAlignment, visible, }: ContextMenuProps): import("react/jsx-runtime").JSX.Element | null;
36
+ Item: ({ children, destructive, disabled, onPress, }: ContextMenuItemProps) => import("react/jsx-runtime").JSX.Element;
37
+ };
38
+ //# sourceMappingURL=context-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../../src/react-native/context-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAcf,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACzE,MAAM,MAAM,4BAA4B,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAQF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,8BAA8B,CAAC;IACrD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,CAAC,EAAE,4BAA4B,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAyFF,eAAO,MAAM,WAAW;sGASrB,gBAAgB;0DAnChB,oBAAoB;CAkOtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const getFocusEffect: () => ((cb: () => void) => void);
2
+ export declare const setFocusEffect: (impl: (cb: () => void) => void) => void;
3
+ //# sourceMappingURL=focus-effect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-effect.d.ts","sourceRoot":"","sources":["../../../src/react-native/focus-effect.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,cAAc,QAAO,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAM1D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,SAE5D,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { GestureResponderHandlers, type StyleProp, type ViewStyle } from "react-native";
2
+ export type GrabControlBarProps = {
3
+ dragHandlePanHandlers?: GestureResponderHandlers;
4
+ isSessionEnabled: boolean;
5
+ isVisible: boolean;
6
+ onHidden?: () => void;
7
+ onPressHide: () => void;
8
+ onPressSelect: () => void;
9
+ containerStyle?: StyleProp<ViewStyle>;
10
+ style?: StyleProp<ViewStyle>;
11
+ };
12
+ export declare const GrabControlBar: ({ dragHandlePanHandlers, isSessionEnabled, isVisible, onHidden, onPressHide, onPressSelect, containerStyle, style, }: GrabControlBarProps) => import("react/jsx-runtime").JSX.Element | null;
13
+ //# sourceMappingURL=grab-control-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grab-control-bar.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-control-bar.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,wBAAwB,EAKxB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AActB,MAAM,MAAM,mBAAmB,GAAG;IAChC,qBAAqB,CAAC,EAAE,wBAAwB,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,sHAS5B,mBAAmB,mDA6FrB,CAAC"}
@@ -1,5 +1,8 @@
1
1
  type EnableGrabbingHandler = () => void;
2
+ type ToggleGrabMenuHandler = () => void;
2
3
  export declare const setEnableGrabbingHandler: (handler: EnableGrabbingHandler | null) => void;
4
+ export declare const setToggleGrabMenuHandler: (handler: ToggleGrabMenuHandler | null) => void;
3
5
  export declare const enableGrabbing: () => void;
6
+ export declare const toggleGrabMenu: () => void;
4
7
  export {};
5
8
  //# sourceMappingURL=grab-controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grab-controller.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-controller.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAIxC,eAAO,MAAM,wBAAwB,GAAI,SAAS,qBAAqB,GAAG,IAAI,SAE7E,CAAC;AAEF,eAAO,MAAM,cAAc,YAS1B,CAAC"}
1
+ {"version":3,"file":"grab-controller.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-controller.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG,MAAM,IAAI,CAAC;AACxC,KAAK,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAKxC,eAAO,MAAM,wBAAwB,GAAI,SAAS,qBAAqB,GAAG,IAAI,SAE7E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,SAAS,qBAAqB,GAAG,IAAI,SAE7E,CAAC;AAEF,eAAO,MAAM,cAAc,YAS1B,CAAC;AAEF,eAAO,MAAM,cAAc,YAO1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grab-overlay.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-overlay.tsx"],"names":[],"mappings":"AAqBA,eAAO,MAAM,sBAAsB,+CAiLlC,CAAC"}
1
+ {"version":3,"file":"grab-overlay.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-overlay.tsx"],"names":[],"mappings":"AAmDA,eAAO,MAAM,sBAAsB,+CA2YlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grab-screen.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAqBpD,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEnD,eAAO,MAAM,qBAAqB,GAAI,+BAInC,0BAA0B,4CAkB5B,CAAC"}
1
+ {"version":3,"file":"grab-screen.d.ts","sourceRoot":"","sources":["../../../src/react-native/grab-screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpD,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEnD,eAAO,MAAM,qBAAqB,GAAI,+BAInC,0BAA0B,4CAkB5B,CAAC"}
@@ -8,4 +8,5 @@ export declare const ReactNativeGrabRoot: React.ComponentType<ReactNativeGrabRoo
8
8
  export declare const ReactNativeGrabScreen: React.ComponentType<ReactNativeGrabScreenProps>;
9
9
  export declare const ReactNativeGrabContextProvider: React.ComponentType<ReactNativeGrabContextProviderProps>;
10
10
  export declare const enableGrabbing: () => void;
11
+ export declare const setFocusEffect: (impl: (cb: () => void) => void) => void;
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-native/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACV,mCAAmC,EAEpC,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EACV,mCAAmC,EACnC,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAE/D,CAAC;AAEhB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAEnE,CAAC;AAEhB,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,aAAa,CAAC,mCAAmC,CAClB,CAAC;AAEnF,eAAO,MAAM,cAAc,EAAE,MAAM,IAE3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-native/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACV,mCAAmC,EAEpC,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EACV,mCAAmC,EACnC,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAE/D,CAAC;AAEhB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,aAAa,CAAC,0BAA0B,CAEnE,CAAC;AAEhB,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,aAAa,CAAC,mCAAmC,CAClB,CAAC;AAEnF,eAAO,MAAM,cAAc,EAAE,MAAM,IAE3B,CAAC;AAET,eAAO,MAAM,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAEzD,CAAC"}
@@ -0,0 +1,7 @@
1
+ type OpenFramePayload = {
2
+ file: string;
3
+ lineNumber: number;
4
+ };
5
+ export declare const openStackFrameInEditor: (payload: OpenFramePayload) => Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/react-native/open.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,SAAS,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAYpF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-grab",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Touch-to-grab context for React Native agents.",
5
5
  "keywords": [
6
6
  "devtools",