react-native-grab 0.0.4 → 0.0.6

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 +23 -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 +180 -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 +176 -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
@@ -2,12 +2,7 @@ import { execFileSync } from "node:child_process";
2
2
  import { createMetroConfigTransformer } from "metro-config-transformers";
3
3
  const MAX_BODY_BYTES = 1024 * 512;
4
4
  const JSON_HEADERS = { "Content-Type": "application/json" };
5
- const SETTINGS_ROUTE = "/__react-native-grab/settings";
6
5
  const COPY_ROUTE = "/__react-native-grab/copy";
7
- const DEFAULT_SETTINGS = Object.freeze({
8
- selectionPillVisible: false,
9
- });
10
- let persistedSettings = { ...DEFAULT_SETTINGS };
11
6
  const tryCopy = (command, args, text) => {
12
7
  try {
13
8
  execFileSync(command, args, { input: text });
@@ -85,23 +80,6 @@ const readJsonBody = (req, res, onSuccess) => {
85
80
  }
86
81
  });
87
82
  };
88
- const hasOwn = (payload, key) => {
89
- return Object.prototype.hasOwnProperty.call(payload, key);
90
- };
91
- const validateSettingsPatch = (payload) => {
92
- const patch = {};
93
- if (hasOwn(payload, "selectionPillVisible")) {
94
- const value = payload.selectionPillVisible;
95
- if (typeof value !== "boolean") {
96
- return {
97
- ok: false,
98
- error: "selectionPillVisible must be a boolean",
99
- };
100
- }
101
- patch.selectionPillVisible = value;
102
- }
103
- return { ok: true, patch };
104
- };
105
83
  const handleCopyRequest = (req, res) => {
106
84
  if (req.method !== "POST") {
107
85
  sendJson(res, 405, { ok: false, error: "Method not allowed" });
@@ -121,38 +99,12 @@ const handleCopyRequest = (req, res) => {
121
99
  sendJson(res, 200, { ok: true });
122
100
  });
123
101
  };
124
- const handleSettingsRequest = (req, res) => {
125
- if (req.method === "GET") {
126
- sendJson(res, 200, { ok: true, settings: persistedSettings });
127
- return;
128
- }
129
- if (req.method !== "POST") {
130
- sendJson(res, 405, { ok: false, error: "Method not allowed" });
131
- return;
132
- }
133
- readJsonBody(req, res, (payload) => {
134
- const validation = validateSettingsPatch(payload);
135
- if (!validation.ok) {
136
- sendJson(res, 400, { ok: false, error: validation.error });
137
- return;
138
- }
139
- persistedSettings = {
140
- ...persistedSettings,
141
- ...validation.patch,
142
- };
143
- sendJson(res, 200, { ok: true, settings: persistedSettings });
144
- });
145
- };
146
102
  const handleReactNativeGrabRequest = (req, res, next) => {
147
103
  const pathname = getPathname(req);
148
104
  if (pathname === COPY_ROUTE) {
149
105
  handleCopyRequest(req, res);
150
106
  return;
151
107
  }
152
- if (pathname === SETTINGS_ROUTE) {
153
- handleSettingsRequest(req, res);
154
- return;
155
- }
156
108
  next();
157
109
  };
158
110
  export const withReactNativeGrab = 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,34 @@
1
+ import { findNodeHandle } from "react-native";
2
+ import { getFabricUIManager } from "./fabric";
3
+ let focusedScreenShadowNode = null;
4
+ let appRootShadowNode = null;
5
+ export const setFocusedScreenRef = (ref) => {
6
+ // @ts-expect-error - findNodeHandle is not typed correctly
7
+ const nativeTag = findNodeHandle(ref);
8
+ if (!nativeTag) {
9
+ throw new Error("Failed to find native tag for focused screen");
10
+ }
11
+ focusedScreenShadowNode = getFabricUIManager().findShadowNodeByTag_DEPRECATED(nativeTag);
12
+ };
13
+ export const setAppRootRef = (ref) => {
14
+ // @ts-expect-error - findNodeHandle is not typed correctly
15
+ const nativeTag = findNodeHandle(ref);
16
+ if (!nativeTag) {
17
+ throw new Error("Failed to find native tag for app root");
18
+ }
19
+ appRootShadowNode = getFabricUIManager().findShadowNodeByTag_DEPRECATED(nativeTag);
20
+ };
21
+ export const getAppRootShadowNode = () => {
22
+ if (!appRootShadowNode) {
23
+ throw new Error("You seem to forgot to wrap your app root with ReactNativeGrabRoot.");
24
+ }
25
+ return appRootShadowNode;
26
+ };
27
+ export const getFocusedScreenShadowNode = () => {
28
+ if (!focusedScreenShadowNode) {
29
+ // No native screens, so there will be only the app root.
30
+ return getAppRootShadowNode();
31
+ }
32
+ return focusedScreenShadowNode;
33
+ };
34
+ //# sourceMappingURL=containers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../src/react-native/containers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,IAAI,uBAAuB,GAAiC,IAAI,CAAC;AACjE,IAAI,iBAAiB,GAAiC,IAAI,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAuB,EAAE,EAAE;IAC9D,2DAA2D;IAC3D,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IAED,uBAAuB,GAAG,kBAAkB,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;AAC1F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAuB,EAAE,EAAE;IACxD,2DAA2D;IAC3D,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB,GAAG,kBAAkB,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC,CAAA;AAED,MAAM,CAAC,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;AACF,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC9C,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9B,yDAAyD;QACzD,OAAO,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,uBAAuB,CAAC;AAChC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ const DEFAULT_COPY_ENDPOINT = "/__react-native-grab/copy";
2
+ export const copyViaMetro = async (text, options = {}) => {
3
+ if (!text.trim()) {
4
+ throw new Error("Text to copy cannot be empty");
5
+ }
6
+ const response = await fetch(options.endpoint ?? DEFAULT_COPY_ENDPOINT, {
7
+ method: "POST",
8
+ headers: { "Content-Type": "application/json" },
9
+ body: JSON.stringify({ text }),
10
+ signal: options.signal,
11
+ });
12
+ let payload;
13
+ try {
14
+ payload = (await response.json());
15
+ }
16
+ catch {
17
+ payload = undefined;
18
+ }
19
+ if (!response.ok || payload?.ok === false) {
20
+ throw new Error(payload?.error ?? `Copy request failed with status ${response.status}`);
21
+ }
22
+ };
23
+ //# 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;AAgB1D,MAAM,CAAC,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"}
@@ -0,0 +1,156 @@
1
+ import { getRenderedBy } from "./get-rendered-by";
2
+ const MAX_STACK_LINES = 3;
3
+ const MAX_TEXT_LENGTH = 120;
4
+ const MAX_ATTR_VALUE_LENGTH = 80;
5
+ const MAX_ATTRS = 6;
6
+ const PRIORITY_ATTRS = [
7
+ "testID",
8
+ "nativeID",
9
+ "accessibilityLabel",
10
+ "accessibilityRole",
11
+ "accessibilityHint",
12
+ "accessibilityState",
13
+ "accessibilityValue",
14
+ ];
15
+ const truncate = (value, maxLength) => {
16
+ if (value.length <= maxLength)
17
+ return value;
18
+ return `${value.slice(0, maxLength - 3)}...`;
19
+ };
20
+ const escapeAttr = (value) => {
21
+ return value
22
+ .replace(/\\/g, "\\\\")
23
+ .replace(/\r?\n|\r/g, " ")
24
+ .replace(/"/g, '\\"');
25
+ };
26
+ const stringifyAttrValue = (value) => {
27
+ if (value == null)
28
+ return null;
29
+ if (typeof value === "string") {
30
+ if (value.trim().length === 0)
31
+ return null;
32
+ return value;
33
+ }
34
+ if (typeof value === "number" || typeof value === "boolean") {
35
+ return String(value);
36
+ }
37
+ if (typeof value === "object") {
38
+ try {
39
+ return JSON.stringify(value);
40
+ }
41
+ catch {
42
+ return String(value);
43
+ }
44
+ }
45
+ return null;
46
+ };
47
+ const collectPrimitiveText = (value, out) => {
48
+ if (typeof value === "string" || typeof value === "number") {
49
+ const text = String(value).trim();
50
+ if (text.length > 0)
51
+ out.push(text);
52
+ return;
53
+ }
54
+ if (Array.isArray(value)) {
55
+ for (const item of value) {
56
+ collectPrimitiveText(item, out);
57
+ }
58
+ }
59
+ };
60
+ const extractTextPreview = (props) => {
61
+ if (!props || !("children" in props))
62
+ return "";
63
+ const parts = [];
64
+ collectPrimitiveText(props.children, parts);
65
+ if (parts.length === 0)
66
+ return "";
67
+ const normalized = parts.join(" ").replace(/\s+/g, " ").trim();
68
+ return truncate(normalized, MAX_TEXT_LENGTH);
69
+ };
70
+ const getHostFiber = (node) => {
71
+ let current = node;
72
+ while (current) {
73
+ if (typeof current.type === "string") {
74
+ return current;
75
+ }
76
+ current = current.return ?? null;
77
+ }
78
+ return node ?? null;
79
+ };
80
+ const getHostComponentName = (fiber) => {
81
+ const componentType = fiber?.type;
82
+ if (typeof componentType === "string" && componentType.length > 0) {
83
+ return componentType;
84
+ }
85
+ return "(unknown)";
86
+ };
87
+ const getMemoizedProps = (fiber) => {
88
+ const props = fiber?.memoizedProps;
89
+ if (!props || typeof props !== "object")
90
+ return null;
91
+ return props;
92
+ };
93
+ const extractPriorityAttrs = (props) => {
94
+ if (!props)
95
+ return "";
96
+ const pairs = [];
97
+ for (const key of PRIORITY_ATTRS) {
98
+ if (pairs.length >= MAX_ATTRS)
99
+ break;
100
+ const rawValue = stringifyAttrValue(props[key]);
101
+ if (!rawValue)
102
+ continue;
103
+ const value = escapeAttr(truncate(rawValue, MAX_ATTR_VALUE_LENGTH));
104
+ pairs.push(`${key}="${value}"`);
105
+ }
106
+ return pairs.length > 0 ? ` ${pairs.join(" ")}` : "";
107
+ };
108
+ const getPreviewComponentName = (node, renderedBy) => {
109
+ const firstRenderedBy = renderedBy[0]?.name?.trim();
110
+ if (firstRenderedBy)
111
+ return firstRenderedBy;
112
+ const hostFiber = getHostFiber(node);
113
+ return getHostComponentName(hostFiber);
114
+ };
115
+ const buildElementPreview = (node, renderedBy) => {
116
+ const componentName = getPreviewComponentName(node, renderedBy);
117
+ const hostFiber = getHostFiber(node);
118
+ const props = getMemoizedProps(hostFiber);
119
+ const attrs = extractPriorityAttrs(props);
120
+ const text = extractTextPreview(props);
121
+ if (!text) {
122
+ return `<${componentName}${attrs} />`;
123
+ }
124
+ return `<${componentName}${attrs}>\n ${text}\n</${componentName}>`;
125
+ };
126
+ const formatFrameLocation = (file, line, column) => {
127
+ if (!file)
128
+ return null;
129
+ if (line == null)
130
+ return file;
131
+ if (column == null)
132
+ return `${file}:${line}`;
133
+ return `${file}:${line}:${column}`;
134
+ };
135
+ const buildStackContext = (renderedBy) => {
136
+ const lines = renderedBy
137
+ .filter((frame) => Boolean(frame.file))
138
+ .slice(0, MAX_STACK_LINES)
139
+ .map((frame) => {
140
+ const location = formatFrameLocation(frame.file, frame.line, frame.column);
141
+ if (!location)
142
+ return "";
143
+ return `\n in ${frame.name} (at ${location})`;
144
+ })
145
+ .filter(Boolean);
146
+ return lines.join("");
147
+ };
148
+ export const getDescription = async (node) => {
149
+ let renderedBy = await getRenderedBy(node);
150
+ const preview = buildElementPreview(node, renderedBy);
151
+ const stackContext = buildStackContext(renderedBy);
152
+ if (!stackContext)
153
+ return preview;
154
+ return `${preview}${stackContext}`;
155
+ };
156
+ //# 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,30 @@
1
+ import { useEffect } from "react";
2
+ import { DevSettings } from "react-native";
3
+ import { useLatest } from "./utils";
4
+ export const useDevMenu = (onToggle) => {
5
+ const onToggleRef = useLatest(onToggle);
6
+ // Add to React Native Dev Menu
7
+ useEffect(() => {
8
+ DevSettings.addMenuItem("React Native Grab: Toggle Button", () => {
9
+ onToggleRef.current();
10
+ });
11
+ }, []);
12
+ // Add to Expo Dev Menu if available
13
+ useEffect(() => {
14
+ try {
15
+ const expoDevMenuModule = require("expo-dev-menu");
16
+ expoDevMenuModule.registerDevMenuItems([
17
+ {
18
+ name: "React Native Grab: Toggle Button",
19
+ callback: () => {
20
+ onToggleRef.current();
21
+ },
22
+ },
23
+ ]);
24
+ }
25
+ catch {
26
+ // Nothing we can do about it, it's not installed in the project.
27
+ }
28
+ }, []);
29
+ };
30
+ //# 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,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAoB,EAAE,EAAE;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExC,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,WAAW,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC/D,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAA6B,CAAC;YAE/E,iBAAiB,CAAC,oBAAoB,CAAC;gBACrC;oBACE,IAAI,EAAE,kCAAkC;oBACxC,QAAQ,EAAE,GAAG,EAAE;wBACb,WAAW,CAAC,OAAO,EAAE,CAAC;oBACxB,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const getFabricUIManager = () => {
2
+ if (typeof nativeFabricUIManager === "undefined") {
3
+ throw new Error("React Native Grab requires New Architecture (Fabric) to be enabled.");
4
+ }
5
+ return nativeFabricUIManager;
6
+ };
7
+ //# sourceMappingURL=fabric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fabric.js","sourceRoot":"","sources":["../../../src/react-native/fabric.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,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"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Fragment } from "react";
3
+ import { Platform } from "react-native";
4
+ const getRoot = () => {
5
+ if (Platform.OS !== "ios") {
6
+ return Fragment;
7
+ }
8
+ try {
9
+ return require("react-native-screens").FullWindowOverlay;
10
+ }
11
+ catch {
12
+ // Nothing we can do about it, it's not installed in the project.
13
+ }
14
+ return Fragment;
15
+ };
16
+ const Root = getRoot();
17
+ export const FullScreenOverlay = ({ children }) => {
18
+ return _jsx(Root, { children: children });
19
+ };
20
+ //# 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,OAAO,EAAa,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,QAAQ,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,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAMvB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE;IACxE,OAAO,KAAC,IAAI,cAAE,QAAQ,GAAQ,CAAC;AACjC,CAAC,CAAC"}
@@ -0,0 +1,162 @@
1
+ import symbolicateStackTrace from "react-native/Libraries/Core/Devtools/symbolicateStackTrace";
2
+ const firstUserFrameFromError = (error) => {
3
+ let callSites = null;
4
+ const prev = Error.prepareStackTrace;
5
+ Error.prepareStackTrace = (_, sites) => {
6
+ callSites = sites;
7
+ return '';
8
+ };
9
+ void error.stack;
10
+ Error.prepareStackTrace = prev;
11
+ if (callSites && callSites.length > 0) {
12
+ const sites = callSites;
13
+ let start = 0;
14
+ for (let i = 0; i < Math.min(sites.length, 3); i++) {
15
+ const fn = sites[i].getFunctionName() ?? '';
16
+ if (fn.includes('react-stack-top-frame') ||
17
+ fn.includes('react_stack_bottom_frame') ||
18
+ fn === '') {
19
+ start = i + 1;
20
+ }
21
+ else {
22
+ break;
23
+ }
24
+ }
25
+ for (let i = start; i < sites.length; i++) {
26
+ const fn = sites[i].getFunctionName() ?? '';
27
+ if (fn.includes('react_stack_bottom_frame') ||
28
+ fn.includes('react-stack-bottom-frame')) {
29
+ break;
30
+ }
31
+ const file = sites[i].getFileName();
32
+ if (!file)
33
+ continue;
34
+ return {
35
+ file,
36
+ line: sites[i].getLineNumber(),
37
+ column: sites[i].getColumnNumber(),
38
+ };
39
+ }
40
+ return null;
41
+ }
42
+ const prevStr = Error.prepareStackTrace;
43
+ Error.prepareStackTrace = undefined;
44
+ let stack = error.stack ?? '';
45
+ Error.prepareStackTrace = prevStr;
46
+ if (stack.startsWith('Error: react-stack-top-frame\n')) {
47
+ stack = stack.slice('Error: react-stack-top-frame\n'.length);
48
+ }
49
+ for (let i = 0; i < 2; i++) {
50
+ const nl = stack.indexOf('\n');
51
+ if (nl !== -1)
52
+ stack = stack.slice(nl + 1);
53
+ }
54
+ const sentinelIdx = stack.search(/react[_-]stack[_-]bottom[_-]frame/);
55
+ if (sentinelIdx !== -1) {
56
+ const cut = stack.lastIndexOf('\n', sentinelIdx);
57
+ if (cut !== -1)
58
+ stack = stack.slice(0, cut);
59
+ }
60
+ const firstLine = stack.split('\n').find(l => l.trim());
61
+ if (!firstLine)
62
+ return null;
63
+ const v8 = firstLine.match(/at\s+(?:.+?\s+\()?(.+):(\d+):(\d+)\)?$/);
64
+ if (v8) {
65
+ return { file: v8[1], line: parseInt(v8[2], 10), column: parseInt(v8[3], 10) };
66
+ }
67
+ const gecko = firstLine.match(/@(.+):(\d+):(\d+)$/);
68
+ if (gecko) {
69
+ return { file: gecko[1], line: parseInt(gecko[2], 10), column: parseInt(gecko[3], 10) };
70
+ }
71
+ return null;
72
+ };
73
+ const getNameFromFiber = (fiber) => {
74
+ const type = fiber?.type;
75
+ if (!type)
76
+ return '(unknown)';
77
+ if (typeof type === 'function') {
78
+ return type.displayName || type.name || '(anonymous)';
79
+ }
80
+ if (typeof type === 'string') {
81
+ return type;
82
+ }
83
+ if (type.render) {
84
+ return (type.displayName ||
85
+ type.render.displayName ||
86
+ type.render.name ||
87
+ 'ForwardRef');
88
+ }
89
+ if (type.type) {
90
+ const inner = type.type;
91
+ return (type.displayName ||
92
+ (typeof inner === 'function'
93
+ ? inner.displayName || inner.name
94
+ : null) ||
95
+ 'Memo');
96
+ }
97
+ return '(unknown)';
98
+ };
99
+ const getRenderedByFrames = (fiber) => {
100
+ const result = [];
101
+ let current = fiber;
102
+ while (current) {
103
+ const owner = current._debugOwner;
104
+ const debugStack = current._debugStack;
105
+ if (!owner)
106
+ break;
107
+ const name = getNameFromFiber(owner);
108
+ if (!debugStack) {
109
+ result.push({ name, file: null, line: null, column: null, collapse: false });
110
+ current = owner;
111
+ continue;
112
+ }
113
+ const loc = typeof debugStack === 'string'
114
+ ? (() => {
115
+ const m = debugStack.match(/at\s+(?:.+?\s+\()?(.+):(\d+):(\d+)\)?/);
116
+ return m
117
+ ? { file: m[1], line: parseInt(m[2], 10), column: parseInt(m[3], 10) }
118
+ : null;
119
+ })()
120
+ : firstUserFrameFromError(debugStack);
121
+ result.push({
122
+ name,
123
+ file: loc?.file ?? null,
124
+ line: loc?.line ?? null,
125
+ column: loc?.column ?? null,
126
+ collapse: false,
127
+ });
128
+ current = owner;
129
+ }
130
+ return result;
131
+ };
132
+ const toMetroStackFrame = (frame) => {
133
+ return {
134
+ methodName: frame.name,
135
+ file: frame.file ?? undefined,
136
+ lineNumber: frame.line ?? undefined,
137
+ column: frame.column ?? undefined,
138
+ collapse: frame.collapse,
139
+ };
140
+ };
141
+ export const getRenderedBy = async (fiber) => {
142
+ const frames = getRenderedByFrames(fiber);
143
+ if (frames.length === 0)
144
+ return frames;
145
+ try {
146
+ const metroFrames = frames.map(toMetroStackFrame);
147
+ const { stack: symbolicated } = await symbolicateStackTrace(metroFrames);
148
+ return symbolicated
149
+ .filter(sf => sf.collapse !== true)
150
+ .map((sf, i) => ({
151
+ name: frames[i]?.name ?? sf.methodName,
152
+ file: sf.file ?? null,
153
+ line: sf.lineNumber ?? null,
154
+ column: sf.column ?? null,
155
+ collapse: sf.collapse === true,
156
+ }));
157
+ }
158
+ catch {
159
+ return frames;
160
+ }
161
+ };
162
+ //# sourceMappingURL=get-rendered-by.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-rendered-by.js","sourceRoot":"","sources":["../../../src/react-native/get-rendered-by.ts"],"names":[],"mappings":"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"}