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
@@ -1,538 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ElementInspector = 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 get_dev_server_1 = require("./get-dev-server");
8
- const react_native_screens_1 = require("react-native-screens");
9
- const copy_payload_1 = require("./copy-payload");
10
- const dom_traversal_1 = require("./dom-traversal");
11
- const selection_trigger_1 = require("./selection-trigger");
12
- const settings_1 = require("./settings");
13
- const SETTLE_MS = 80;
14
- const MOVEMENT_EPSILON_PX = 8;
15
- const MAX_STACK_LINES = 3;
16
- const MAX_PREVIEW_TEXT = 120;
17
- const INSPECTOR_COPY_ENDPOINT = "/__react-native-grab/copy";
18
- const FAB_SIZE = 56;
19
- const FAB_SCREEN_PADDING = 8;
20
- const FAB_DEFAULT_RIGHT_OFFSET = 20;
21
- const FAB_DEFAULT_BOTTOM_OFFSET = 32;
22
- const getMetroBaseUrl = () => {
23
- const devServer = (0, get_dev_server_1.getDevServer)();
24
- if (!devServer?.url)
25
- return null;
26
- return devServer.url.replace(/\/$/, "");
27
- };
28
- const getInitialFabPosition = () => {
29
- const { width, height } = react_native_1.Dimensions.get("window");
30
- return {
31
- x: Math.max(FAB_SCREEN_PADDING, width - FAB_DEFAULT_RIGHT_OFFSET - FAB_SIZE),
32
- y: Math.max(FAB_SCREEN_PADDING, height - FAB_DEFAULT_BOTTOM_OFFSET - FAB_SIZE),
33
- };
34
- };
35
- const clampFabPosition = (x, y, windowWidth, windowHeight) => {
36
- const maxX = Math.max(FAB_SCREEN_PADDING, windowWidth - FAB_SIZE - FAB_SCREEN_PADDING);
37
- const maxY = Math.max(FAB_SCREEN_PADDING, windowHeight - FAB_SIZE - FAB_SCREEN_PADDING);
38
- return {
39
- x: Math.min(Math.max(x, FAB_SCREEN_PADDING), maxX),
40
- y: Math.min(Math.max(y, FAB_SCREEN_PADDING), maxY),
41
- };
42
- };
43
- const useLatestRef = (value) => {
44
- const ref = (0, react_1.useRef)(value);
45
- ref.current = value;
46
- return ref;
47
- };
48
- const useTraversalSelectionSession = ({ anchorRef, inspectorRootRef, overlayRef, statusBarOffset, setHighlightRect, }) => {
49
- const traversalSessionRef = (0, react_1.useRef)(null);
50
- const skipRefsRef = (0, react_1.useRef)([inspectorRootRef, overlayRef]);
51
- const stopSession = (0, react_1.useCallback)(() => {
52
- traversalSessionRef.current?.stop();
53
- traversalSessionRef.current = null;
54
- }, []);
55
- const startSession = (0, react_1.useCallback)(() => {
56
- const skipPredicate = react_native_1.Platform.OS === "ios"
57
- ? (node) => {
58
- const inspectorRootNode = inspectorRootRef.current;
59
- if (!inspectorRootNode)
60
- return false;
61
- return node === inspectorRootNode.parentElement;
62
- }
63
- : undefined;
64
- stopSession();
65
- traversalSessionRef.current = (0, dom_traversal_1.startSession)({
66
- anchorRef,
67
- skipRefs: skipRefsRef.current,
68
- offset: statusBarOffset,
69
- skipPredicate,
70
- });
71
- setHighlightRect(null);
72
- }, [anchorRef, inspectorRootRef, setHighlightRect, statusBarOffset, stopSession]);
73
- const queryAtPoint = (0, react_1.useCallback)((x, y) => {
74
- const session = traversalSessionRef.current;
75
- if (!session) {
76
- setHighlightRect(null);
77
- return null;
78
- }
79
- const hitTarget = session.move({
80
- x,
81
- y: y - statusBarOffset,
82
- });
83
- setHighlightRect(hitTarget?.rect ?? null);
84
- return hitTarget;
85
- }, [setHighlightRect, statusBarOffset]);
86
- (0, react_1.useEffect)(() => {
87
- return () => {
88
- stopSession();
89
- };
90
- }, [stopSession]);
91
- return {
92
- startSession,
93
- queryAtPoint,
94
- stopSession,
95
- };
96
- };
97
- const useSelectionGesture = ({ isSelecting, queryAtPoint, onHitTarget, onCancel, }) => {
98
- const isSelectingRef = useLatestRef(isSelecting);
99
- const queryAtPointRef = useLatestRef(queryAtPoint);
100
- const onHitTargetRef = useLatestRef(onHitTarget);
101
- const onCancelRef = useLatestRef(onCancel);
102
- const settleTimeoutRef = (0, react_1.useRef)(null);
103
- const lastQueryPositionRef = (0, react_1.useRef)(null);
104
- const movePositionRef = (0, react_1.useRef)({ x: 0, y: 0 });
105
- const clearSettleTimeout = (0, react_1.useCallback)(() => {
106
- if (settleTimeoutRef.current != null) {
107
- clearTimeout(settleTimeoutRef.current);
108
- settleTimeoutRef.current = null;
109
- }
110
- }, []);
111
- const resetGestureState = (0, react_1.useCallback)(() => {
112
- clearSettleTimeout();
113
- lastQueryPositionRef.current = null;
114
- }, [clearSettleTimeout]);
115
- const panResponder = (0, react_1.useRef)(react_native_1.PanResponder.create({
116
- onStartShouldSetPanResponder: () => true,
117
- onMoveShouldSetPanResponder: () => true,
118
- onPanResponderGrant: (evt) => {
119
- if (!isSelectingRef.current)
120
- return;
121
- const x = evt.nativeEvent.locationX;
122
- const y = evt.nativeEvent.locationY;
123
- queryAtPointRef.current(x, y);
124
- lastQueryPositionRef.current = { x, y };
125
- },
126
- onPanResponderMove: (evt) => {
127
- if (!isSelectingRef.current)
128
- return;
129
- movePositionRef.current = {
130
- x: evt.nativeEvent.locationX,
131
- y: evt.nativeEvent.locationY,
132
- };
133
- clearSettleTimeout();
134
- settleTimeoutRef.current = setTimeout(() => {
135
- settleTimeoutRef.current = null;
136
- if (!isSelectingRef.current)
137
- return;
138
- const pos = movePositionRef.current;
139
- const last = lastQueryPositionRef.current;
140
- const distance = last ? Math.hypot(pos.x - last.x, pos.y - last.y) : Infinity;
141
- if (distance < MOVEMENT_EPSILON_PX)
142
- return;
143
- lastQueryPositionRef.current = pos;
144
- queryAtPointRef.current(pos.x, pos.y);
145
- }, SETTLE_MS);
146
- },
147
- onPanResponderRelease: (evt) => {
148
- if (!isSelectingRef.current)
149
- return;
150
- const hitTarget = queryAtPointRef.current(evt.nativeEvent.locationX, evt.nativeEvent.locationY);
151
- if (!hitTarget) {
152
- onCancelRef.current();
153
- return;
154
- }
155
- onHitTargetRef.current(hitTarget);
156
- },
157
- onPanResponderTerminate: () => {
158
- if (isSelectingRef.current) {
159
- onCancelRef.current();
160
- }
161
- },
162
- })).current;
163
- (0, react_1.useEffect)(() => {
164
- return () => {
165
- clearSettleTimeout();
166
- };
167
- }, [clearSettleTimeout]);
168
- return {
169
- panHandlers: panResponder.panHandlers,
170
- resetGestureState,
171
- };
172
- };
173
- const useFabController = (windowWidth, windowHeight) => {
174
- const initialFabPosition = (0, react_1.useRef)(getInitialFabPosition()).current;
175
- const fabAppearAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(1)).current;
176
- const fabPressAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(1)).current;
177
- const fabPosition = (0, react_1.useRef)(new react_native_1.Animated.ValueXY(initialFabPosition)).current;
178
- const fabPositionRef = (0, react_1.useRef)(initialFabPosition);
179
- const fabDragStartOffsetRef = (0, react_1.useRef)({ x: 0, y: 0 });
180
- const windowSizeRef = (0, react_1.useRef)({ width: windowWidth, height: windowHeight });
181
- windowSizeRef.current = { width: windowWidth, height: windowHeight };
182
- const animateFabPress = (0, react_1.useCallback)((toValue) => {
183
- react_native_1.Animated.spring(fabPressAnim, {
184
- toValue,
185
- useNativeDriver: true,
186
- tension: 220,
187
- friction: 16,
188
- }).start();
189
- }, [fabPressAnim]);
190
- const fabPanResponder = (0, react_1.useRef)(react_native_1.PanResponder.create({
191
- onStartShouldSetPanResponder: () => false,
192
- onMoveShouldSetPanResponder: (_evt, gestureState) => Math.abs(gestureState.dx) > 2 || Math.abs(gestureState.dy) > 2,
193
- onPanResponderGrant: (_evt, gestureState) => {
194
- fabDragStartOffsetRef.current = {
195
- x: fabPositionRef.current.x - gestureState.x0,
196
- y: fabPositionRef.current.y - gestureState.y0,
197
- };
198
- },
199
- onPanResponderMove: (_evt, gestureState) => {
200
- const { width, height } = windowSizeRef.current;
201
- const nextPosition = clampFabPosition(gestureState.moveX + fabDragStartOffsetRef.current.x, gestureState.moveY + fabDragStartOffsetRef.current.y, width, height);
202
- fabPositionRef.current = nextPosition;
203
- fabPosition.setValue(nextPosition);
204
- },
205
- onPanResponderTerminationRequest: () => true,
206
- onPanResponderTerminate: () => {
207
- fabPressAnim.setValue(1);
208
- },
209
- onPanResponderRelease: () => {
210
- fabPressAnim.setValue(1);
211
- },
212
- })).current;
213
- (0, react_1.useEffect)(() => {
214
- const nextPosition = clampFabPosition(fabPositionRef.current.x, fabPositionRef.current.y, windowWidth, windowHeight);
215
- fabPositionRef.current = nextPosition;
216
- fabPosition.setValue(nextPosition);
217
- }, [fabPosition, windowHeight, windowWidth]);
218
- return {
219
- animateFabPress,
220
- fabAppearAnim,
221
- fabPanHandlers: fabPanResponder.panHandlers,
222
- fabPosition,
223
- fabPressAnim,
224
- };
225
- };
226
- const ElementInspector = () => {
227
- const { width: windowWidth, height: windowHeight } = (0, react_native_1.useWindowDimensions)();
228
- const statusBarOffset = react_native_1.Platform.OS === "android" ? (react_native_1.StatusBar.currentHeight ?? 0) : 0;
229
- const [state, setState] = (0, react_1.useState)({ status: "idle" });
230
- const [highlightRect, setHighlightRect] = (0, react_1.useState)(null);
231
- const [toastVisible, setToastVisible] = (0, react_1.useState)(false);
232
- const [selectionPillVisible, setSelectionPillVisible] = (0, react_1.useState)(() => (0, settings_1.getInspectorSettings)().selectionPillVisible);
233
- const isClosingRef = (0, react_1.useRef)(false);
234
- const anchorRef = (0, react_1.useRef)(null);
235
- const inspectorRootRef = (0, react_1.useRef)(null);
236
- const overlayRef = (0, react_1.useRef)(null);
237
- const selectingHintAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
238
- const toastAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
239
- const idle = state.status === "idle";
240
- const selecting = state.status === "selecting";
241
- const overlayVisible = state.status !== "idle";
242
- const activeHighlightRect = state.status === "copying" ? state.selectedRect : highlightRect;
243
- const { animateFabPress, fabAppearAnim, fabPanHandlers, fabPosition, fabPressAnim } = useFabController(windowWidth, windowHeight);
244
- const { queryAtPoint, startSession, stopSession } = useTraversalSelectionSession({
245
- anchorRef,
246
- inspectorRootRef,
247
- overlayRef,
248
- statusBarOffset,
249
- setHighlightRect,
250
- });
251
- const closeOverlayImmediately = (0, react_1.useCallback)(() => {
252
- stopSession();
253
- setState({ status: "idle" });
254
- setHighlightRect(null);
255
- }, [stopSession]);
256
- const closeOverlay = (0, react_1.useCallback)(() => {
257
- if (isClosingRef.current)
258
- return;
259
- isClosingRef.current = true;
260
- closeOverlayImmediately();
261
- isClosingRef.current = false;
262
- }, [closeOverlayImmediately]);
263
- const showCopiedToast = (0, react_1.useCallback)(() => {
264
- setToastVisible(true);
265
- toastAnim.setValue(0);
266
- react_native_1.Animated.sequence([
267
- react_native_1.Animated.timing(toastAnim, {
268
- toValue: 1,
269
- duration: 140,
270
- useNativeDriver: true,
271
- }),
272
- react_native_1.Animated.delay(700),
273
- react_native_1.Animated.timing(toastAnim, {
274
- toValue: 0,
275
- duration: 180,
276
- useNativeDriver: true,
277
- }),
278
- ]).start(() => setToastVisible(false));
279
- }, [toastAnim]);
280
- const copyFeedbackToHostClipboard = (0, react_1.useCallback)(async (text) => {
281
- const baseUrl = getMetroBaseUrl();
282
- if (!baseUrl)
283
- return false;
284
- try {
285
- const response = await fetch(`${baseUrl}${INSPECTOR_COPY_ENDPOINT}`, {
286
- method: "POST",
287
- headers: { "Content-Type": "application/json" },
288
- body: JSON.stringify({ text }),
289
- });
290
- return response.ok;
291
- }
292
- catch {
293
- return false;
294
- }
295
- }, []);
296
- const handleSelectionHit = (0, react_1.useCallback)((hitTarget) => {
297
- setState({ status: "copying", selectedRect: hitTarget.rect });
298
- void (async () => {
299
- const clipboardText = await (0, copy_payload_1.buildInspectorCopyPayload)(hitTarget, {
300
- maxStackLines: MAX_STACK_LINES,
301
- maxPreviewText: MAX_PREVIEW_TEXT,
302
- pathRootHint: null,
303
- });
304
- const copied = await copyFeedbackToHostClipboard(clipboardText);
305
- if (copied) {
306
- showCopiedToast();
307
- }
308
- closeOverlay();
309
- })();
310
- }, [closeOverlay, copyFeedbackToHostClipboard, showCopiedToast]);
311
- const { panHandlers: selectionPanHandlers, resetGestureState } = useSelectionGesture({
312
- isSelecting: selecting,
313
- queryAtPoint,
314
- onHitTarget: handleSelectionHit,
315
- onCancel: closeOverlay,
316
- });
317
- const startSelecting = (0, react_1.useCallback)(() => {
318
- resetGestureState();
319
- startSession();
320
- setState({ status: "selecting" });
321
- }, [resetGestureState, startSession]);
322
- (0, react_1.useEffect)(() => {
323
- return (0, settings_1.subscribeInspectorSettings)(() => {
324
- setSelectionPillVisible((0, settings_1.getInspectorSettings)().selectionPillVisible);
325
- });
326
- }, []);
327
- (0, react_1.useEffect)(() => {
328
- return (0, selection_trigger_1.subscribeInspectorSelectionRequest)(() => {
329
- startSelecting();
330
- });
331
- }, [startSelecting]);
332
- (0, react_1.useEffect)(() => {
333
- void (0, settings_1.initializeInspectorSettings)();
334
- }, []);
335
- (0, react_1.useEffect)(() => {
336
- react_native_1.DevSettings.addMenuItem("Toggle React Native Grab", () => {
337
- void (async () => {
338
- await (0, settings_1.initializeInspectorSettings)();
339
- const current = (0, settings_1.getInspectorSettings)().selectionPillVisible;
340
- console.log(`[InspectorFeedback] Toggle pill visibility: ${current} -> ${!current}`);
341
- await (0, settings_1.updateInspectorSettings)({ selectionPillVisible: !current });
342
- })();
343
- });
344
- react_native_1.DevSettings.addMenuItem("Start React Native Grab Selection", () => {
345
- console.log("[InspectorFeedback] Start selection menu item pressed");
346
- (0, selection_trigger_1.requestInspectorSelection)();
347
- });
348
- }, []);
349
- (0, react_1.useEffect)(() => {
350
- if (!selecting) {
351
- selectingHintAnim.stopAnimation();
352
- selectingHintAnim.setValue(0);
353
- return;
354
- }
355
- const loop = react_native_1.Animated.loop(react_native_1.Animated.sequence([
356
- react_native_1.Animated.timing(selectingHintAnim, {
357
- toValue: 1,
358
- duration: 900,
359
- useNativeDriver: true,
360
- }),
361
- react_native_1.Animated.timing(selectingHintAnim, {
362
- toValue: 0,
363
- duration: 900,
364
- useNativeDriver: true,
365
- }),
366
- ]));
367
- loop.start();
368
- return () => loop.stop();
369
- }, [selecting, selectingHintAnim]);
370
- (0, react_1.useEffect)(() => {
371
- react_native_1.Animated.timing(fabAppearAnim, {
372
- toValue: idle ? 1 : 0,
373
- duration: 140,
374
- useNativeDriver: true,
375
- }).start();
376
- }, [fabAppearAnim, idle]);
377
- (0, react_1.useEffect)(() => {
378
- return () => {
379
- resetGestureState();
380
- stopSession();
381
- };
382
- }, [resetGestureState, stopSession]);
383
- return ((0, jsx_runtime_1.jsx)(InspectorRootContainer, { children: (0, jsx_runtime_1.jsxs)(react_native_1.View, { ref: inspectorRootRef, style: react_native_1.StyleSheet.absoluteFill, pointerEvents: "box-none", children: [(0, jsx_runtime_1.jsx)(react_native_1.View, { ref: anchorRef, style: [react_native_1.StyleSheet.absoluteFill, styles.anchor], pointerEvents: "none" }), (0, jsx_runtime_1.jsx)(SelectionFab, { visible: idle && selectionPillVisible, onPress: startSelecting, onPressIn: () => animateFabPress(0.96), onPressOut: () => animateFabPress(1), panHandlers: fabPanHandlers, fabAppearAnim: fabAppearAnim, fabPosition: fabPosition, fabPressAnim: fabPressAnim }), (0, jsx_runtime_1.jsx)(SelectionOverlay, { visible: overlayVisible, selecting: selecting, overlayRef: overlayRef, panHandlers: selectionPanHandlers, highlightRect: activeHighlightRect, statusBarOffset: statusBarOffset, selectingHintAnim: selectingHintAnim }), (0, jsx_runtime_1.jsx)(CopiedToast, { visible: toastVisible, toastAnim: toastAnim })] }) }));
384
- };
385
- exports.ElementInspector = ElementInspector;
386
- const SelectionFab = ({ visible, onPress, onPressIn, onPressOut, panHandlers, fabAppearAnim, fabPosition, fabPressAnim, }) => {
387
- if (!visible) {
388
- return null;
389
- }
390
- return ((0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { ...panHandlers, style: [
391
- styles.fab,
392
- {
393
- opacity: fabAppearAnim,
394
- transform: [
395
- { translateX: fabPosition.x },
396
- {
397
- translateY: react_native_1.Animated.add(fabPosition.y, fabAppearAnim.interpolate({
398
- inputRange: [0, 1],
399
- outputRange: [8, 0],
400
- })),
401
- },
402
- { scale: fabPressAnim },
403
- ],
404
- },
405
- ], children: (0, jsx_runtime_1.jsx)(react_native_1.Pressable, { style: styles.fabInner, onPress: onPress, onPressIn: onPressIn, onPressOut: onPressOut, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.fabIcon, allowFontScaling: false, children: "\u2316" }) }) }));
406
- };
407
- const SelectionOverlay = ({ visible, selecting, overlayRef, panHandlers, highlightRect, statusBarOffset, selectingHintAnim, }) => {
408
- if (!visible) {
409
- return null;
410
- }
411
- return ((0, jsx_runtime_1.jsxs)(react_native_1.View, { ref: overlayRef, style: styles.overlay, ...(selecting ? panHandlers : {}), children: [highlightRect && ((0, jsx_runtime_1.jsx)(react_native_1.View, { pointerEvents: "none", style: [
412
- styles.highlight,
413
- {
414
- left: highlightRect.x,
415
- top: highlightRect.y + statusBarOffset,
416
- width: highlightRect.width,
417
- height: highlightRect.height,
418
- },
419
- ] })), selecting && ((0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { pointerEvents: "none", style: [
420
- styles.selectionHint,
421
- {
422
- opacity: selectingHintAnim.interpolate({
423
- inputRange: [0, 1],
424
- outputRange: [0.76, 1],
425
- }),
426
- transform: [
427
- {
428
- translateY: selectingHintAnim.interpolate({
429
- inputRange: [0, 1],
430
- outputRange: [0, -2],
431
- }),
432
- },
433
- ],
434
- },
435
- ], children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.selectionHintText, children: "Drag or tap to find a source" }) }))] }));
436
- };
437
- const CopiedToast = ({ visible, toastAnim }) => {
438
- if (!visible) {
439
- return null;
440
- }
441
- return ((0, jsx_runtime_1.jsx)(react_native_1.Animated.View, { pointerEvents: "none", style: [
442
- styles.toast,
443
- {
444
- opacity: toastAnim,
445
- transform: [
446
- {
447
- translateY: toastAnim.interpolate({
448
- inputRange: [0, 1],
449
- outputRange: [-8, 0],
450
- }),
451
- },
452
- ],
453
- },
454
- ], children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.toastText, children: "Source location copied" }) }));
455
- };
456
- const InspectorRootContainer = ({ children }) => {
457
- if (react_native_1.Platform.OS === "ios") {
458
- return (0, jsx_runtime_1.jsx)(react_native_screens_1.FullWindowOverlay, { children: children });
459
- }
460
- return (0, jsx_runtime_1.jsx)(react_1.Fragment, { children: children });
461
- };
462
- const styles = react_native_1.StyleSheet.create({
463
- anchor: {
464
- opacity: 0,
465
- },
466
- fab: {
467
- position: "absolute",
468
- left: 0,
469
- top: 0,
470
- zIndex: 9999,
471
- width: FAB_SIZE,
472
- height: FAB_SIZE,
473
- borderRadius: 9999,
474
- backgroundColor: "rgba(14,20,26,0.98)",
475
- borderWidth: 1,
476
- borderColor: "rgba(255,255,255,0.14)",
477
- elevation: 4,
478
- shadowColor: "#000",
479
- shadowOffset: { width: 0, height: 2 },
480
- shadowOpacity: 0.28,
481
- shadowRadius: 6,
482
- },
483
- fabInner: {
484
- flex: 1,
485
- flexDirection: "row",
486
- justifyContent: "center",
487
- alignItems: "center",
488
- width: "100%",
489
- height: "100%",
490
- },
491
- fabIcon: {
492
- color: "#F5F7FA",
493
- fontSize: 28,
494
- fontWeight: "500",
495
- },
496
- overlay: {
497
- ...react_native_1.StyleSheet.absoluteFillObject,
498
- backgroundColor: "rgba(0,0,0,0.015)",
499
- },
500
- selectionHint: {
501
- position: "absolute",
502
- top: 56,
503
- alignSelf: "center",
504
- backgroundColor: "rgba(14,20,26,0.9)",
505
- borderRadius: 18,
506
- paddingHorizontal: 14,
507
- paddingVertical: 8,
508
- borderWidth: 1,
509
- borderColor: "rgba(255,255,255,0.14)",
510
- },
511
- selectionHintText: {
512
- color: "#F5F7FA",
513
- fontSize: 13,
514
- fontWeight: "600",
515
- },
516
- highlight: {
517
- position: "absolute",
518
- borderWidth: 2,
519
- borderColor: "#1264A3",
520
- backgroundColor: "rgba(18,100,163,0.16)",
521
- },
522
- toast: {
523
- position: "absolute",
524
- top: 52,
525
- left: 16,
526
- right: 16,
527
- alignItems: "center",
528
- paddingVertical: 10,
529
- borderRadius: 10,
530
- backgroundColor: "rgba(18,100,163,0.96)",
531
- },
532
- toastText: {
533
- color: "#fff",
534
- fontSize: 14,
535
- fontWeight: "700",
536
- },
537
- });
3
+ exports.copyViaMetro = exports.ReactNativeGrabScreen = exports.ReactNativeGrabRoot = void 0;
4
+ var grab_root_1 = require("./grab-root");
5
+ Object.defineProperty(exports, "ReactNativeGrabRoot", { enumerable: true, get: function () { return grab_root_1.ReactNativeGrabRoot; } });
6
+ var grab_screen_1 = require("./grab-screen");
7
+ Object.defineProperty(exports, "ReactNativeGrabScreen", { enumerable: true, get: function () { return grab_screen_1.ReactNativeGrabScreen; } });
8
+ var copy_1 = require("./copy");
9
+ Object.defineProperty(exports, "copyViaMetro", { enumerable: true, get: function () { return copy_1.copyViaMetro; } });
538
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-native/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react-native/index.ts"],"names":[],"mappings":";;;AAAA,yCAAiF;AAAxE,gHAAA,mBAAmB,OAAA;AAC5B,6CAAuF;AAA9E,oHAAA,qBAAqB,OAAA;AAC9B,+BAAsC;AAA7B,oGAAA,YAAY,OAAA"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findNodeAtPoint = exports.measureInWindow = void 0;
4
+ const measureInWindow = (node) => {
5
+ let boundingClientRect = null;
6
+ nativeFabricUIManager.measureInWindow(node, (x, y, width, height) => {
7
+ boundingClientRect = [x, y, width, height];
8
+ });
9
+ if (!boundingClientRect) {
10
+ throw new Error("Failed to measure node");
11
+ }
12
+ return boundingClientRect;
13
+ };
14
+ exports.measureInWindow = measureInWindow;
15
+ const findNodeAtPoint = (node, x, y) => {
16
+ let fiberNode = null;
17
+ nativeFabricUIManager.findNodeAtPoint(node, x, y, (internalNode) => {
18
+ fiberNode = internalNode;
19
+ });
20
+ return fiberNode;
21
+ };
22
+ exports.findNodeAtPoint = findNodeAtPoint;
23
+ //# sourceMappingURL=measure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../src/react-native/measure.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,IAA2B,EAAsB,EAAE;IAClF,IAAI,kBAAkB,GAA8B,IAAI,CAAC;IAEzD,qBAAqB,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACnE,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC3B,CAAC,CAAA;AAZY,QAAA,eAAe,mBAY3B;AAEM,MAAM,eAAe,GAAG,CAAC,IAA2B,EAAE,CAAS,EAAE,CAAS,EAA+B,EAAE;IACjH,IAAI,SAAS,GAAgC,IAAI,CAAC;IAElD,qBAAqB,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE;QAClE,SAAS,GAAG,YAAY,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AAClB,CAAC,CAAA;AARY,QAAA,eAAe,mBAQ3B"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLatest = void 0;
4
+ const react_1 = require("react");
5
+ const useLatest = (value) => {
6
+ const ref = (0, react_1.useRef)(value);
7
+ (0, react_1.useEffect)(() => {
8
+ ref.current = value;
9
+ }, [value]);
10
+ return ref;
11
+ };
12
+ exports.useLatest = useLatest;
13
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/react-native/utils.ts"],"names":[],"mappings":";;;AAAA,iCAA0C;AAEnC,MAAM,SAAS,GAAG,CAAI,KAAQ,EAAE,EAAE;IACxC,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAE1B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACrB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB"}