react-native-grab 0.0.4 → 0.0.5

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 (183) hide show
  1. package/README.md +22 -21
  2. package/dist/cjs/metro/withReactNativeGrab.js +0 -48
  3. package/dist/cjs/metro/withReactNativeGrab.js.map +1 -1
  4. package/dist/cjs/react-native/containers.js +41 -0
  5. package/dist/cjs/react-native/containers.js.map +1 -0
  6. package/dist/cjs/react-native/copy.js +27 -0
  7. package/dist/cjs/react-native/copy.js.map +1 -0
  8. package/dist/cjs/react-native/description.js +160 -0
  9. package/dist/cjs/react-native/description.js.map +1 -0
  10. package/dist/cjs/react-native/dev-menu.js +34 -0
  11. package/dist/cjs/react-native/dev-menu.js.map +1 -0
  12. package/dist/cjs/react-native/fabric.js +11 -0
  13. package/dist/cjs/react-native/fabric.js.map +1 -0
  14. package/dist/cjs/react-native/full-screen-overlay.js +24 -0
  15. package/dist/cjs/react-native/full-screen-overlay.js.map +1 -0
  16. package/dist/cjs/react-native/get-rendered-by.js +169 -0
  17. package/dist/cjs/react-native/get-rendered-by.js.map +1 -0
  18. package/dist/cjs/react-native/grab-overlay.js +150 -0
  19. package/dist/cjs/react-native/grab-overlay.js.map +1 -0
  20. package/dist/cjs/react-native/grab-root.js +21 -0
  21. package/dist/cjs/react-native/grab-root.js.map +1 -0
  22. package/dist/cjs/react-native/grab-root.web.js +9 -0
  23. package/dist/cjs/react-native/grab-root.web.js.map +1 -0
  24. package/dist/cjs/react-native/grab-screen.js +35 -0
  25. package/dist/cjs/react-native/grab-screen.js.map +1 -0
  26. package/dist/cjs/react-native/grab-screen.web.js +9 -0
  27. package/dist/cjs/react-native/grab-screen.web.js.map +1 -0
  28. package/dist/cjs/react-native/index.js +7 -535
  29. package/dist/cjs/react-native/index.js.map +1 -1
  30. package/dist/cjs/react-native/measure.js +23 -0
  31. package/dist/cjs/react-native/measure.js.map +1 -0
  32. package/dist/cjs/react-native/utils.js +13 -0
  33. package/dist/cjs/react-native/utils.js.map +1 -0
  34. package/dist/esm/metro/withReactNativeGrab.js +0 -48
  35. package/dist/esm/metro/withReactNativeGrab.js.map +1 -1
  36. package/dist/esm/react-native/containers.js +34 -0
  37. package/dist/esm/react-native/containers.js.map +1 -0
  38. package/dist/esm/react-native/copy.js +23 -0
  39. package/dist/esm/react-native/copy.js.map +1 -0
  40. package/dist/esm/react-native/description.js +156 -0
  41. package/dist/esm/react-native/description.js.map +1 -0
  42. package/dist/esm/react-native/dev-menu.js +30 -0
  43. package/dist/esm/react-native/dev-menu.js.map +1 -0
  44. package/dist/esm/react-native/fabric.js +7 -0
  45. package/dist/esm/react-native/fabric.js.map +1 -0
  46. package/dist/esm/react-native/full-screen-overlay.js +20 -0
  47. package/dist/esm/react-native/full-screen-overlay.js.map +1 -0
  48. package/dist/esm/react-native/get-rendered-by.js +162 -0
  49. package/dist/esm/react-native/get-rendered-by.js.map +1 -0
  50. package/dist/esm/react-native/grab-overlay.js +146 -0
  51. package/dist/esm/react-native/grab-overlay.js.map +1 -0
  52. package/dist/esm/react-native/grab-root.js +17 -0
  53. package/dist/esm/react-native/grab-root.js.map +1 -0
  54. package/dist/esm/react-native/grab-root.web.js +5 -0
  55. package/dist/esm/react-native/grab-root.web.js.map +1 -0
  56. package/dist/esm/react-native/grab-screen.js +31 -0
  57. package/dist/esm/react-native/grab-screen.js.map +1 -0
  58. package/dist/esm/react-native/grab-screen.web.js +5 -0
  59. package/dist/esm/react-native/grab-screen.web.js.map +1 -0
  60. package/dist/esm/react-native/index.js +3 -533
  61. package/dist/esm/react-native/index.js.map +1 -1
  62. package/dist/esm/react-native/measure.js +18 -0
  63. package/dist/esm/react-native/measure.js.map +1 -0
  64. package/dist/esm/react-native/utils.js +9 -0
  65. package/dist/esm/react-native/utils.js.map +1 -0
  66. package/dist/types/metro/withReactNativeGrab.d.ts.map +1 -1
  67. package/dist/types/react-native/containers.d.ts +7 -0
  68. package/dist/types/react-native/containers.d.ts.map +1 -0
  69. package/dist/types/react-native/copy.d.ts +7 -0
  70. package/dist/types/react-native/copy.d.ts.map +1 -0
  71. package/dist/types/react-native/description.d.ts +3 -0
  72. package/dist/types/react-native/description.d.ts.map +1 -0
  73. package/dist/types/react-native/dev-menu.d.ts +2 -0
  74. package/dist/types/react-native/dev-menu.d.ts.map +1 -0
  75. package/dist/types/react-native/fabric.d.ts +12 -0
  76. package/dist/types/react-native/fabric.d.ts.map +1 -0
  77. package/dist/types/react-native/full-screen-overlay.d.ts +6 -0
  78. package/dist/types/react-native/full-screen-overlay.d.ts.map +1 -0
  79. package/dist/types/react-native/get-rendered-by.d.ts +10 -0
  80. package/dist/types/react-native/get-rendered-by.d.ts.map +1 -0
  81. package/dist/types/react-native/grab-overlay.d.ts +2 -0
  82. package/dist/types/react-native/grab-overlay.d.ts.map +1 -0
  83. package/dist/types/react-native/grab-root.d.ts +4 -0
  84. package/dist/types/react-native/grab-root.d.ts.map +1 -0
  85. package/dist/types/react-native/grab-root.web.d.ts +2 -0
  86. package/dist/types/react-native/grab-root.web.d.ts.map +1 -0
  87. package/dist/types/react-native/grab-screen.d.ts +4 -0
  88. package/dist/types/react-native/grab-screen.d.ts.map +1 -0
  89. package/dist/types/react-native/grab-screen.web.d.ts +2 -0
  90. package/dist/types/react-native/grab-screen.web.d.ts.map +1 -0
  91. package/dist/types/react-native/index.d.ts +3 -1
  92. package/dist/types/react-native/index.d.ts.map +1 -1
  93. package/dist/types/react-native/measure.d.ts +4 -0
  94. package/dist/types/react-native/measure.d.ts.map +1 -0
  95. package/dist/types/react-native/types.d.ts +11 -43
  96. package/dist/types/react-native/types.d.ts.map +1 -1
  97. package/dist/types/react-native/utils.d.ts +2 -0
  98. package/dist/types/react-native/utils.d.ts.map +1 -0
  99. package/package.json +16 -2
  100. package/dist/cjs/react-native/__tests__/dom-traversal.test.js +0 -160
  101. package/dist/cjs/react-native/__tests__/dom-traversal.test.js.map +0 -1
  102. package/dist/cjs/react-native/__tests__/mock-dom.js +0 -65
  103. package/dist/cjs/react-native/__tests__/mock-dom.js.map +0 -1
  104. package/dist/cjs/react-native/__tests__/setup.js +0 -43
  105. package/dist/cjs/react-native/__tests__/setup.js.map +0 -1
  106. package/dist/cjs/react-native/__tests__/z-index.test.js +0 -106
  107. package/dist/cjs/react-native/__tests__/z-index.test.js.map +0 -1
  108. package/dist/cjs/react-native/copy-payload.js +0 -336
  109. package/dist/cjs/react-native/copy-payload.js.map +0 -1
  110. package/dist/cjs/react-native/dom-traversal.js +0 -254
  111. package/dist/cjs/react-native/dom-traversal.js.map +0 -1
  112. package/dist/cjs/react-native/fiber.js +0 -142
  113. package/dist/cjs/react-native/fiber.js.map +0 -1
  114. package/dist/cjs/react-native/get-dev-server.js +0 -9
  115. package/dist/cjs/react-native/get-dev-server.js.map +0 -1
  116. package/dist/cjs/react-native/index.web.js +0 -8
  117. package/dist/cjs/react-native/index.web.js.map +0 -1
  118. package/dist/cjs/react-native/pointer-events.js +0 -114
  119. package/dist/cjs/react-native/pointer-events.js.map +0 -1
  120. package/dist/cjs/react-native/selection-trigger.js +0 -19
  121. package/dist/cjs/react-native/selection-trigger.js.map +0 -1
  122. package/dist/cjs/react-native/settings.js +0 -98
  123. package/dist/cjs/react-native/settings.js.map +0 -1
  124. package/dist/cjs/react-native/symbolicate.js +0 -15
  125. package/dist/cjs/react-native/symbolicate.js.map +0 -1
  126. package/dist/cjs/react-native/z-index.js +0 -65
  127. package/dist/cjs/react-native/z-index.js.map +0 -1
  128. package/dist/esm/react-native/__tests__/dom-traversal.test.js +0 -158
  129. package/dist/esm/react-native/__tests__/dom-traversal.test.js.map +0 -1
  130. package/dist/esm/react-native/__tests__/mock-dom.js +0 -58
  131. package/dist/esm/react-native/__tests__/mock-dom.js.map +0 -1
  132. package/dist/esm/react-native/__tests__/setup.js +0 -41
  133. package/dist/esm/react-native/__tests__/setup.js.map +0 -1
  134. package/dist/esm/react-native/__tests__/z-index.test.js +0 -104
  135. package/dist/esm/react-native/__tests__/z-index.test.js.map +0 -1
  136. package/dist/esm/react-native/copy-payload.js +0 -329
  137. package/dist/esm/react-native/copy-payload.js.map +0 -1
  138. package/dist/esm/react-native/dom-traversal.js +0 -247
  139. package/dist/esm/react-native/dom-traversal.js.map +0 -1
  140. package/dist/esm/react-native/fiber.js +0 -133
  141. package/dist/esm/react-native/fiber.js.map +0 -1
  142. package/dist/esm/react-native/get-dev-server.js +0 -3
  143. package/dist/esm/react-native/get-dev-server.js.map +0 -1
  144. package/dist/esm/react-native/index.web.js +0 -4
  145. package/dist/esm/react-native/index.web.js.map +0 -1
  146. package/dist/esm/react-native/pointer-events.js +0 -106
  147. package/dist/esm/react-native/pointer-events.js.map +0 -1
  148. package/dist/esm/react-native/selection-trigger.js +0 -14
  149. package/dist/esm/react-native/selection-trigger.js.map +0 -1
  150. package/dist/esm/react-native/settings.js +0 -91
  151. package/dist/esm/react-native/settings.js.map +0 -1
  152. package/dist/esm/react-native/symbolicate.js +0 -8
  153. package/dist/esm/react-native/symbolicate.js.map +0 -1
  154. package/dist/esm/react-native/z-index.js +0 -61
  155. package/dist/esm/react-native/z-index.js.map +0 -1
  156. package/dist/types/react-native/__tests__/dom-traversal.test.d.ts +0 -2
  157. package/dist/types/react-native/__tests__/dom-traversal.test.d.ts.map +0 -1
  158. package/dist/types/react-native/__tests__/mock-dom.d.ts +0 -24
  159. package/dist/types/react-native/__tests__/mock-dom.d.ts.map +0 -1
  160. package/dist/types/react-native/__tests__/setup.d.ts +0 -2
  161. package/dist/types/react-native/__tests__/setup.d.ts.map +0 -1
  162. package/dist/types/react-native/__tests__/z-index.test.d.ts +0 -2
  163. package/dist/types/react-native/__tests__/z-index.test.d.ts.map +0 -1
  164. package/dist/types/react-native/copy-payload.d.ts +0 -22
  165. package/dist/types/react-native/copy-payload.d.ts.map +0 -1
  166. package/dist/types/react-native/dom-traversal.d.ts +0 -21
  167. package/dist/types/react-native/dom-traversal.d.ts.map +0 -1
  168. package/dist/types/react-native/fiber.d.ts +0 -22
  169. package/dist/types/react-native/fiber.d.ts.map +0 -1
  170. package/dist/types/react-native/get-dev-server.d.ts +0 -3
  171. package/dist/types/react-native/get-dev-server.d.ts.map +0 -1
  172. package/dist/types/react-native/index.web.d.ts +0 -2
  173. package/dist/types/react-native/index.web.d.ts.map +0 -1
  174. package/dist/types/react-native/pointer-events.d.ts +0 -13
  175. package/dist/types/react-native/pointer-events.d.ts.map +0 -1
  176. package/dist/types/react-native/selection-trigger.d.ts +0 -3
  177. package/dist/types/react-native/selection-trigger.d.ts.map +0 -1
  178. package/dist/types/react-native/settings.d.ts +0 -8
  179. package/dist/types/react-native/settings.d.ts.map +0 -1
  180. package/dist/types/react-native/symbolicate.d.ts +0 -3
  181. package/dist/types/react-native/symbolicate.d.ts.map +0 -1
  182. package/dist/types/react-native/z-index.d.ts +0 -3
  183. package/dist/types/react-native/z-index.d.ts.map +0 -1
package/README.md CHANGED
@@ -6,10 +6,10 @@ React Grab equivalent for React Native.
6
6
 
7
7
  ## Why this is useful
8
8
 
9
- React Grabs main value on web is removing the "search phase" for AI edits.
9
+ React Grab's main value on web is removing the "search phase" for AI edits.
10
10
  This package applies the same workflow in React Native:
11
11
 
12
- - Point, dont describe: select the exact element on screen.
12
+ - Point, don't describe: select the exact element on screen.
13
13
  - Faster UI iteration: less back-and-forth explaining which component to edit.
14
14
  - Better AI prompts: copied context includes component/source signal, not vague screenshots.
15
15
  - Dev-only integration: middleware + inspector are intended for local development.
@@ -22,11 +22,6 @@ If you make frequent low-entropy UI changes (spacing, alignment, copy, visual po
22
22
  npm install react-native-grab
23
23
  ```
24
24
 
25
- Peer dependencies:
26
-
27
- - `react`
28
- - `react-native`
29
-
30
25
  ## Quick start
31
26
 
32
27
  ### 1. Wire Metro middleware
@@ -42,32 +37,38 @@ const config = getDefaultConfig(__dirname);
42
37
  module.exports = withReactNativeGrab(config);
43
38
  ```
44
39
 
45
- ### 2. Mount the inspector in your app
40
+ ### 2. Wrap app root and each screen
46
41
 
47
42
  ```tsx
48
43
  import React from "react";
49
- import { View } from "react-native";
50
- import { ElementInspector } from "react-native-grab";
44
+ import { Stack } from "expo-router";
45
+ import { ElementInspector, ReactNativeGrabRoot, ReactNativeGrabScreen } from "react-native-grab";
46
+
47
+ function HomeScreen() {
48
+ return <ReactNativeGrabScreen>{/* screen content */}</ReactNativeGrabScreen>;
49
+ }
51
50
 
52
- export function App() {
51
+ export default function AppLayout() {
53
52
  return (
54
- <View style={{ flex: 1 }}>
55
- {/* your app content */}
56
- <ElementInspector />
57
- </View>
53
+ <ReactNativeGrabRoot>
54
+ <Stack />
55
+ </ReactNativeGrabRoot>
58
56
  );
59
57
  }
60
58
  ```
61
59
 
60
+ Notes:
61
+
62
+ - `ReactNativeGrabRoot` must wrap your whole app tree once.
63
+ - If you use native navigators, wrap each route/screen in `ReactNativeGrabScreen`.
64
+
62
65
  ## Workflow
63
66
 
64
67
  1. Start your app in development.
65
- 2. Open the React Native Dev Menu and enable `React Native Grab`.
66
- 3. Tap the floating inspector button that appears.
67
- 4. Drag over the UI until the target element is highlighted.
68
- 5. Release to capture context.
69
- 6. Context is sent to Metro and copied to your host clipboard.
70
- 7. Paste into Codex/Cursor/Claude Code/Copilot with your requested change.
68
+ 2. Open the React Native Dev Menu and select `React Native Grab`.
69
+ 3. When enabled, touch the screen to select elements.
70
+ 4. Context is sent to Metro and copied to your host clipboard.
71
+ 5. Paste into Codex/Cursor/Claude Code/Copilot with your requested change.
71
72
 
72
73
  ## Development (this repo)
73
74
 
@@ -5,12 +5,7 @@ const node_child_process_1 = require("node:child_process");
5
5
  const metro_config_transformers_1 = require("metro-config-transformers");
6
6
  const MAX_BODY_BYTES = 1024 * 512;
7
7
  const JSON_HEADERS = { "Content-Type": "application/json" };
8
- const SETTINGS_ROUTE = "/__react-native-grab/settings";
9
8
  const COPY_ROUTE = "/__react-native-grab/copy";
10
- const DEFAULT_SETTINGS = Object.freeze({
11
- selectionPillVisible: false,
12
- });
13
- let persistedSettings = { ...DEFAULT_SETTINGS };
14
9
  const tryCopy = (command, args, text) => {
15
10
  try {
16
11
  (0, node_child_process_1.execFileSync)(command, args, { input: text });
@@ -88,23 +83,6 @@ const readJsonBody = (req, res, onSuccess) => {
88
83
  }
89
84
  });
90
85
  };
91
- const hasOwn = (payload, key) => {
92
- return Object.prototype.hasOwnProperty.call(payload, key);
93
- };
94
- const validateSettingsPatch = (payload) => {
95
- const patch = {};
96
- if (hasOwn(payload, "selectionPillVisible")) {
97
- const value = payload.selectionPillVisible;
98
- if (typeof value !== "boolean") {
99
- return {
100
- ok: false,
101
- error: "selectionPillVisible must be a boolean",
102
- };
103
- }
104
- patch.selectionPillVisible = value;
105
- }
106
- return { ok: true, patch };
107
- };
108
86
  const handleCopyRequest = (req, res) => {
109
87
  if (req.method !== "POST") {
110
88
  sendJson(res, 405, { ok: false, error: "Method not allowed" });
@@ -124,38 +102,12 @@ const handleCopyRequest = (req, res) => {
124
102
  sendJson(res, 200, { ok: true });
125
103
  });
126
104
  };
127
- const handleSettingsRequest = (req, res) => {
128
- if (req.method === "GET") {
129
- sendJson(res, 200, { ok: true, settings: persistedSettings });
130
- return;
131
- }
132
- if (req.method !== "POST") {
133
- sendJson(res, 405, { ok: false, error: "Method not allowed" });
134
- return;
135
- }
136
- readJsonBody(req, res, (payload) => {
137
- const validation = validateSettingsPatch(payload);
138
- if (!validation.ok) {
139
- sendJson(res, 400, { ok: false, error: validation.error });
140
- return;
141
- }
142
- persistedSettings = {
143
- ...persistedSettings,
144
- ...validation.patch,
145
- };
146
- sendJson(res, 200, { ok: true, settings: persistedSettings });
147
- });
148
- };
149
105
  const handleReactNativeGrabRequest = (req, res, next) => {
150
106
  const pathname = getPathname(req);
151
107
  if (pathname === COPY_ROUTE) {
152
108
  handleCopyRequest(req, res);
153
109
  return;
154
110
  }
155
- if (pathname === SETTINGS_ROUTE) {
156
- handleSettingsRequest(req, res);
157
- return;
158
- }
159
111
  next();
160
112
  };
161
113
  exports.withReactNativeGrab = (0, metro_config_transformers_1.createMetroConfigTransformer)((config) => {
@@ -1 +1 @@
1
- {"version":3,"file":"withReactNativeGrab.js","sourceRoot":"","sources":["../../../src/metro/withReactNativeGrab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"withReactNativeGrab.js","sourceRoot":"","sources":["../../../src/metro/withReactNativeGrab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFocusedScreenShadowNode = exports.getAppRootShadowNode = exports.setAppRootRef = exports.setFocusedScreenRef = void 0;
4
+ const react_native_1 = require("react-native");
5
+ const fabric_1 = require("./fabric");
6
+ let focusedScreenShadowNode = null;
7
+ let appRootShadowNode = null;
8
+ const setFocusedScreenRef = (ref) => {
9
+ // @ts-expect-error - findNodeHandle is not typed correctly
10
+ const nativeTag = (0, react_native_1.findNodeHandle)(ref);
11
+ if (!nativeTag) {
12
+ throw new Error("Failed to find native tag for focused screen");
13
+ }
14
+ focusedScreenShadowNode = (0, fabric_1.getFabricUIManager)().findShadowNodeByTag_DEPRECATED(nativeTag);
15
+ };
16
+ exports.setFocusedScreenRef = setFocusedScreenRef;
17
+ const setAppRootRef = (ref) => {
18
+ // @ts-expect-error - findNodeHandle is not typed correctly
19
+ const nativeTag = (0, react_native_1.findNodeHandle)(ref);
20
+ if (!nativeTag) {
21
+ throw new Error("Failed to find native tag for app root");
22
+ }
23
+ appRootShadowNode = (0, fabric_1.getFabricUIManager)().findShadowNodeByTag_DEPRECATED(nativeTag);
24
+ };
25
+ exports.setAppRootRef = setAppRootRef;
26
+ const getAppRootShadowNode = () => {
27
+ if (!appRootShadowNode) {
28
+ throw new Error("You seem to forgot to wrap your app root with ReactNativeGrabRoot.");
29
+ }
30
+ return appRootShadowNode;
31
+ };
32
+ exports.getAppRootShadowNode = getAppRootShadowNode;
33
+ const getFocusedScreenShadowNode = () => {
34
+ if (!focusedScreenShadowNode) {
35
+ // No native screens, so there will be only the app root.
36
+ return (0, exports.getAppRootShadowNode)();
37
+ }
38
+ return focusedScreenShadowNode;
39
+ };
40
+ exports.getFocusedScreenShadowNode = getFocusedScreenShadowNode;
41
+ //# sourceMappingURL=containers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../src/react-native/containers.ts"],"names":[],"mappings":";;;AAAA,+CAAuE;AAEvE,qCAA8C;AAE9C,IAAI,uBAAuB,GAAiC,IAAI,CAAC;AACjE,IAAI,iBAAiB,GAAiC,IAAI,CAAC;AAEpD,MAAM,mBAAmB,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC9D,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IAED,uBAAuB,GAAG,IAAA,2BAAkB,GAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;AAC1F,CAAC,CAAC;AATW,QAAA,mBAAmB,uBAS9B;AAEK,MAAM,aAAa,GAAG,CAAC,GAAuB,EAAE,EAAE;IACxD,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB,GAAG,IAAA,2BAAkB,GAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAEM,MAAM,oBAAoB,GAAG,GAA0B,EAAE;IAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAC;AANW,QAAA,oBAAoB,wBAM/B;AACK,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC9C,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9B,yDAAyD;QACzD,OAAO,IAAA,4BAAoB,GAAE,CAAC;IAC/B,CAAC;IAED,OAAO,uBAAuB,CAAC;AAChC,CAAC,CAAC;AAPW,QAAA,0BAA0B,8BAOrC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyViaMetro = void 0;
4
+ const DEFAULT_COPY_ENDPOINT = "/__react-native-grab/copy";
5
+ const copyViaMetro = async (text, options = {}) => {
6
+ if (!text.trim()) {
7
+ throw new Error("Text to copy cannot be empty");
8
+ }
9
+ const response = await fetch(options.endpoint ?? DEFAULT_COPY_ENDPOINT, {
10
+ method: "POST",
11
+ headers: { "Content-Type": "application/json" },
12
+ body: JSON.stringify({ text }),
13
+ signal: options.signal,
14
+ });
15
+ let payload;
16
+ try {
17
+ payload = (await response.json());
18
+ }
19
+ catch {
20
+ payload = undefined;
21
+ }
22
+ if (!response.ok || payload?.ok === false) {
23
+ throw new Error(payload?.error ?? `Copy request failed with status ${response.status}`);
24
+ }
25
+ };
26
+ exports.copyViaMetro = copyViaMetro;
27
+ //# sourceMappingURL=copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/react-native/copy.ts"],"names":[],"mappings":";;;AAAA,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAgBnD,MAAM,YAAY,GAAG,KAAK,EAC/B,IAAY,EACZ,UAA+B,EAAE,EAClB,EAAE;IACjB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,qBAAqB,EAAE;QACtE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAA+B,CAAC;QAC3D,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,OAAwC,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC,CAAC;AAzBW,QAAA,YAAY,gBAyBvB"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDescription = void 0;
4
+ const get_rendered_by_1 = require("./get-rendered-by");
5
+ const MAX_STACK_LINES = 3;
6
+ const MAX_TEXT_LENGTH = 120;
7
+ const MAX_ATTR_VALUE_LENGTH = 80;
8
+ const MAX_ATTRS = 6;
9
+ const PRIORITY_ATTRS = [
10
+ "testID",
11
+ "nativeID",
12
+ "accessibilityLabel",
13
+ "accessibilityRole",
14
+ "accessibilityHint",
15
+ "accessibilityState",
16
+ "accessibilityValue",
17
+ ];
18
+ const truncate = (value, maxLength) => {
19
+ if (value.length <= maxLength)
20
+ return value;
21
+ return `${value.slice(0, maxLength - 3)}...`;
22
+ };
23
+ const escapeAttr = (value) => {
24
+ return value
25
+ .replace(/\\/g, "\\\\")
26
+ .replace(/\r?\n|\r/g, " ")
27
+ .replace(/"/g, '\\"');
28
+ };
29
+ const stringifyAttrValue = (value) => {
30
+ if (value == null)
31
+ return null;
32
+ if (typeof value === "string") {
33
+ if (value.trim().length === 0)
34
+ return null;
35
+ return value;
36
+ }
37
+ if (typeof value === "number" || typeof value === "boolean") {
38
+ return String(value);
39
+ }
40
+ if (typeof value === "object") {
41
+ try {
42
+ return JSON.stringify(value);
43
+ }
44
+ catch {
45
+ return String(value);
46
+ }
47
+ }
48
+ return null;
49
+ };
50
+ const collectPrimitiveText = (value, out) => {
51
+ if (typeof value === "string" || typeof value === "number") {
52
+ const text = String(value).trim();
53
+ if (text.length > 0)
54
+ out.push(text);
55
+ return;
56
+ }
57
+ if (Array.isArray(value)) {
58
+ for (const item of value) {
59
+ collectPrimitiveText(item, out);
60
+ }
61
+ }
62
+ };
63
+ const extractTextPreview = (props) => {
64
+ if (!props || !("children" in props))
65
+ return "";
66
+ const parts = [];
67
+ collectPrimitiveText(props.children, parts);
68
+ if (parts.length === 0)
69
+ return "";
70
+ const normalized = parts.join(" ").replace(/\s+/g, " ").trim();
71
+ return truncate(normalized, MAX_TEXT_LENGTH);
72
+ };
73
+ const getHostFiber = (node) => {
74
+ let current = node;
75
+ while (current) {
76
+ if (typeof current.type === "string") {
77
+ return current;
78
+ }
79
+ current = current.return ?? null;
80
+ }
81
+ return node ?? null;
82
+ };
83
+ const getHostComponentName = (fiber) => {
84
+ const componentType = fiber?.type;
85
+ if (typeof componentType === "string" && componentType.length > 0) {
86
+ return componentType;
87
+ }
88
+ return "(unknown)";
89
+ };
90
+ const getMemoizedProps = (fiber) => {
91
+ const props = fiber?.memoizedProps;
92
+ if (!props || typeof props !== "object")
93
+ return null;
94
+ return props;
95
+ };
96
+ const extractPriorityAttrs = (props) => {
97
+ if (!props)
98
+ return "";
99
+ const pairs = [];
100
+ for (const key of PRIORITY_ATTRS) {
101
+ if (pairs.length >= MAX_ATTRS)
102
+ break;
103
+ const rawValue = stringifyAttrValue(props[key]);
104
+ if (!rawValue)
105
+ continue;
106
+ const value = escapeAttr(truncate(rawValue, MAX_ATTR_VALUE_LENGTH));
107
+ pairs.push(`${key}="${value}"`);
108
+ }
109
+ return pairs.length > 0 ? ` ${pairs.join(" ")}` : "";
110
+ };
111
+ const getPreviewComponentName = (node, renderedBy) => {
112
+ const firstRenderedBy = renderedBy[0]?.name?.trim();
113
+ if (firstRenderedBy)
114
+ return firstRenderedBy;
115
+ const hostFiber = getHostFiber(node);
116
+ return getHostComponentName(hostFiber);
117
+ };
118
+ const buildElementPreview = (node, renderedBy) => {
119
+ const componentName = getPreviewComponentName(node, renderedBy);
120
+ const hostFiber = getHostFiber(node);
121
+ const props = getMemoizedProps(hostFiber);
122
+ const attrs = extractPriorityAttrs(props);
123
+ const text = extractTextPreview(props);
124
+ if (!text) {
125
+ return `<${componentName}${attrs} />`;
126
+ }
127
+ return `<${componentName}${attrs}>\n ${text}\n</${componentName}>`;
128
+ };
129
+ const formatFrameLocation = (file, line, column) => {
130
+ if (!file)
131
+ return null;
132
+ if (line == null)
133
+ return file;
134
+ if (column == null)
135
+ return `${file}:${line}`;
136
+ return `${file}:${line}:${column}`;
137
+ };
138
+ const buildStackContext = (renderedBy) => {
139
+ const lines = renderedBy
140
+ .filter((frame) => Boolean(frame.file))
141
+ .slice(0, MAX_STACK_LINES)
142
+ .map((frame) => {
143
+ const location = formatFrameLocation(frame.file, frame.line, frame.column);
144
+ if (!location)
145
+ return "";
146
+ return `\n in ${frame.name} (at ${location})`;
147
+ })
148
+ .filter(Boolean);
149
+ return lines.join("");
150
+ };
151
+ const getDescription = async (node) => {
152
+ let renderedBy = await (0, get_rendered_by_1.getRenderedBy)(node);
153
+ const preview = buildElementPreview(node, renderedBy);
154
+ const stackContext = buildStackContext(renderedBy);
155
+ if (!stackContext)
156
+ return preview;
157
+ return `${preview}${stackContext}`;
158
+ };
159
+ exports.getDescription = getDescription;
160
+ //# sourceMappingURL=description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description.js","sourceRoot":"","sources":["../../../src/react-native/description.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDevMenu = void 0;
4
+ const react_1 = require("react");
5
+ const react_native_1 = require("react-native");
6
+ const utils_1 = require("./utils");
7
+ const useDevMenu = (onToggle) => {
8
+ const onToggleRef = (0, utils_1.useLatest)(onToggle);
9
+ // Add to React Native Dev Menu
10
+ (0, react_1.useEffect)(() => {
11
+ react_native_1.DevSettings.addMenuItem('React Native Grab', () => {
12
+ onToggleRef.current();
13
+ });
14
+ }, []);
15
+ // Add to Expo Dev Menu if available
16
+ (0, react_1.useEffect)(() => {
17
+ try {
18
+ const expoDevMenuModule = require('expo-dev-menu');
19
+ expoDevMenuModule.registerDevMenuItems([
20
+ {
21
+ name: 'React Native Grab',
22
+ callback: () => {
23
+ onToggleRef.current();
24
+ },
25
+ }
26
+ ]);
27
+ }
28
+ catch {
29
+ // Nothing we can do about it, it's not installed in the project.
30
+ }
31
+ }, []);
32
+ };
33
+ exports.useDevMenu = useDevMenu;
34
+ //# sourceMappingURL=dev-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-menu.js","sourceRoot":"","sources":["../../../src/react-native/dev-menu.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,+CAA0C;AAC1C,mCAAoC;AAG7B,MAAM,UAAU,GAAG,CAAC,QAAoB,EAAE,EAAE;IAClD,MAAM,WAAW,GAAG,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC;IAExC,+BAA+B;IAC/B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,0BAAW,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACjD,WAAW,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,oCAAoC;IACpC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,IAAI,CAAC;YACJ,MAAM,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAA6B,CAAC;YAE/E,iBAAiB,CAAC,oBAAoB,CAAC;gBACtC;oBACC,IAAI,EAAE,mBAAmB;oBACzB,QAAQ,EAAE,GAAG,EAAE;wBACd,WAAW,CAAC,OAAO,EAAE,CAAC;oBACvB,CAAC;iBACD;aACD,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,iEAAiE;QAClE,CAAC;IACF,CAAC,EAAE,EAAE,CAAC,CAAC;AACR,CAAC,CAAC;AA3BW,QAAA,UAAU,cA2BrB"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFabricUIManager = void 0;
4
+ const getFabricUIManager = () => {
5
+ if (typeof nativeFabricUIManager === "undefined") {
6
+ throw new Error("React Native Grab requires New Architecture (Fabric) to be enabled.");
7
+ }
8
+ return nativeFabricUIManager;
9
+ };
10
+ exports.getFabricUIManager = getFabricUIManager;
11
+ //# sourceMappingURL=fabric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fabric.js","sourceRoot":"","sources":["../../../src/react-native/fabric.ts"],"names":[],"mappings":";;;AAkBO,MAAM,kBAAkB,GAAG,GAAoB,EAAE;IACvD,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC9B,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FullScreenOverlay = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const react_native_1 = require("react-native");
7
+ const getRoot = () => {
8
+ if (react_native_1.Platform.OS !== "ios") {
9
+ return react_1.Fragment;
10
+ }
11
+ try {
12
+ return require("react-native-screens").FullWindowOverlay;
13
+ }
14
+ catch {
15
+ // Nothing we can do about it, it's not installed in the project.
16
+ }
17
+ return react_1.Fragment;
18
+ };
19
+ const Root = getRoot();
20
+ const FullScreenOverlay = ({ children }) => {
21
+ return (0, jsx_runtime_1.jsx)(Root, { children: children });
22
+ };
23
+ exports.FullScreenOverlay = FullScreenOverlay;
24
+ //# sourceMappingURL=full-screen-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full-screen-overlay.js","sourceRoot":"","sources":["../../../src/react-native/full-screen-overlay.tsx"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAC5C,+CAAwC;AAExC,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,gBAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,iBAAiB,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,OAAO,gBAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAMhB,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE;IACxE,OAAO,uBAAC,IAAI,cAAE,QAAQ,GAAQ,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B"}