react-native-grab 1.1.0 → 1.1.1

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 (66) hide show
  1. package/dist/cjs/react-native/__tests__/grab-context-description.test.js +81 -0
  2. package/dist/cjs/react-native/__tests__/grab-context-description.test.js.map +1 -1
  3. package/dist/cjs/react-native/containers.js +107 -25
  4. package/dist/cjs/react-native/containers.js.map +1 -1
  5. package/dist/cjs/react-native/context-menu.js +15 -23
  6. package/dist/cjs/react-native/context-menu.js.map +1 -1
  7. package/dist/cjs/react-native/description.js +31 -4
  8. package/dist/cjs/react-native/description.js.map +1 -1
  9. package/dist/cjs/react-native/grab-colors.js +7 -0
  10. package/dist/cjs/react-native/grab-colors.js.map +1 -0
  11. package/dist/cjs/react-native/grab-control-bar.js +9 -5
  12. package/dist/cjs/react-native/grab-control-bar.js.map +1 -1
  13. package/dist/cjs/react-native/grab-controller.js +105 -16
  14. package/dist/cjs/react-native/grab-controller.js.map +1 -1
  15. package/dist/cjs/react-native/grab-overlay.js +139 -170
  16. package/dist/cjs/react-native/grab-overlay.js.map +1 -1
  17. package/dist/cjs/react-native/grab-root-controls.js +89 -0
  18. package/dist/cjs/react-native/grab-root-controls.js.map +1 -0
  19. package/dist/cjs/react-native/grab-root.js +8 -2
  20. package/dist/cjs/react-native/grab-root.js.map +1 -1
  21. package/dist/cjs/react-native/grab-screen.js +18 -3
  22. package/dist/cjs/react-native/grab-screen.js.map +1 -1
  23. package/dist/cjs/react-native/index.js.map +1 -1
  24. package/dist/esm/react-native/__tests__/grab-context-description.test.js +83 -2
  25. package/dist/esm/react-native/__tests__/grab-context-description.test.js.map +1 -1
  26. package/dist/esm/react-native/containers.js +95 -20
  27. package/dist/esm/react-native/containers.js.map +1 -1
  28. package/dist/esm/react-native/context-menu.js +15 -23
  29. package/dist/esm/react-native/context-menu.js.map +1 -1
  30. package/dist/esm/react-native/description.js +28 -3
  31. package/dist/esm/react-native/description.js.map +1 -1
  32. package/dist/esm/react-native/grab-colors.js +4 -0
  33. package/dist/esm/react-native/grab-colors.js.map +1 -0
  34. package/dist/esm/react-native/grab-control-bar.js +9 -5
  35. package/dist/esm/react-native/grab-control-bar.js.map +1 -1
  36. package/dist/esm/react-native/grab-controller.js +97 -13
  37. package/dist/esm/react-native/grab-controller.js.map +1 -1
  38. package/dist/esm/react-native/grab-overlay.js +141 -172
  39. package/dist/esm/react-native/grab-overlay.js.map +1 -1
  40. package/dist/esm/react-native/grab-root-controls.js +85 -0
  41. package/dist/esm/react-native/grab-root-controls.js.map +1 -0
  42. package/dist/esm/react-native/grab-root.js +11 -5
  43. package/dist/esm/react-native/grab-root.js.map +1 -1
  44. package/dist/esm/react-native/grab-screen.js +21 -6
  45. package/dist/esm/react-native/grab-screen.js.map +1 -1
  46. package/dist/esm/react-native/index.js.map +1 -1
  47. package/dist/types/react-native/containers.d.ts +23 -4
  48. package/dist/types/react-native/containers.d.ts.map +1 -1
  49. package/dist/types/react-native/context-menu.d.ts +6 -1
  50. package/dist/types/react-native/context-menu.d.ts.map +1 -1
  51. package/dist/types/react-native/description.d.ts +5 -0
  52. package/dist/types/react-native/description.d.ts.map +1 -1
  53. package/dist/types/react-native/grab-colors.d.ts +4 -0
  54. package/dist/types/react-native/grab-colors.d.ts.map +1 -0
  55. package/dist/types/react-native/grab-control-bar.d.ts.map +1 -1
  56. package/dist/types/react-native/grab-controller.d.ts +17 -4
  57. package/dist/types/react-native/grab-controller.d.ts.map +1 -1
  58. package/dist/types/react-native/grab-overlay.d.ts +6 -1
  59. package/dist/types/react-native/grab-overlay.d.ts.map +1 -1
  60. package/dist/types/react-native/grab-root-controls.d.ts +2 -0
  61. package/dist/types/react-native/grab-root-controls.d.ts.map +1 -0
  62. package/dist/types/react-native/grab-root.d.ts.map +1 -1
  63. package/dist/types/react-native/grab-screen.d.ts +4 -2
  64. package/dist/types/react-native/grab-screen.d.ts.map +1 -1
  65. package/dist/types/react-native/index.d.ts.map +1 -1
  66. package/package.json +1 -1
@@ -1,36 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
- import { Animated, Dimensions, PanResponder, Pressable, StyleSheet, Text, View, } from "react-native";
4
- import { getAppRootShadowNode, getFocusedScreenShadowNode } from "./containers";
5
- import { findNodeAtPoint, measureInWindow } from "./measure";
6
- import { useDevMenu } from "./dev-menu";
7
- import { getDescription } from "./description";
3
+ import { PanResponder, Pressable, StyleSheet, Text, View, } from "react-native";
4
+ import { getGrabSelectionOwner, useIsResolvedGrabSelectionOwner } from "./containers";
8
5
  import { copyViaMetro } from "./copy";
9
- import { FullScreenOverlay } from "./full-screen-overlay";
10
- import { setEnableGrabbingHandler, setToggleGrabMenuHandler } from "./grab-controller";
11
- import { GrabControlBar } from "./grab-control-bar";
12
6
  import { ContextMenu } from "./context-menu";
7
+ import { GRAB_BADGE_BACKGROUND, GRAB_HIGHLIGHT_FILL, GRAB_PRIMARY } from "./grab-colors";
8
+ import { clearGrabOwnerPresentation, hideGrabSelectionMenu, registerLocalGrabSelectionController, setGrabSelectionSessionOwner, showGrabSelectionMenu, unregisterLocalGrabSelectionController, } from "./grab-controller";
9
+ import { getDescription, getGrabSelectionTitle } from "./description";
13
10
  import { getRenderedBy } from "./get-rendered-by";
11
+ import { findNodeAtPoint, measureInWindow } from "./measure";
14
12
  import { openStackFrameInEditor } from "./open";
15
13
  const COPY_BADGE_DURATION_MS = 1600;
16
- const CALLSTACK_PRIMARY = "#8232FF";
17
- const HIGHLIGHT_FILL = "rgba(130, 50, 255, 0.2)";
18
- const BADGE_BACKGROUND = "rgba(130, 50, 255, 0.92)";
19
- const BAR_HEIGHT = 36;
20
- const BAR_WIDTH = 108;
21
- const INITIAL_BAR_POSITION = {
22
- x: (Dimensions.get("window").width - BAR_WIDTH) / 2,
23
- y: 72,
24
- };
25
- const clamp = (value, min, max) => {
26
- return Math.min(Math.max(value, min), max);
27
- };
28
- export const ReactNativeGrabOverlay = () => {
14
+ export const ReactNativeGrabOverlay = ({ ownerId, onPanHandlersChange, }) => {
15
+ const isResolvedSelectionOwner = useIsResolvedGrabSelectionOwner(ownerId);
29
16
  const copyBadgeTimeoutRef = useRef(null);
30
- const controlBarPosition = useRef(new Animated.ValueXY(INITIAL_BAR_POSITION)).current;
31
- const shouldResetControlBarPositionRef = useRef(false);
17
+ const [bounds, setBounds] = useState({ width: 0, height: 0 });
32
18
  const [state, setState] = useState({
33
- isMenuVisible: false,
34
19
  isSessionEnabled: false,
35
20
  grabbedElement: null,
36
21
  isCopyBadgeVisible: false,
@@ -48,20 +33,19 @@ export const ReactNativeGrabOverlay = () => {
48
33
  setState((prev) => ({
49
34
  ...prev,
50
35
  isSessionEnabled: false,
36
+ grabbedElement: null,
51
37
  }));
52
38
  }, []);
53
- const toggleMenuVisibility = useCallback(() => {
39
+ const closeSelectedElementMenu = useCallback(() => {
40
+ hideGrabSelectionMenu(ownerId);
54
41
  setState((prev) => {
55
- shouldResetControlBarPositionRef.current = prev.isMenuVisible;
56
42
  return {
57
43
  ...prev,
58
- isMenuVisible: !prev.isMenuVisible,
59
- isSessionEnabled: !prev.isMenuVisible ? prev.isSessionEnabled : false,
60
- grabbedElement: !prev.isMenuVisible ? prev.grabbedElement : null,
61
- selectedElement: !prev.isMenuVisible ? prev.selectedElement : null,
44
+ selectedElement: null,
45
+ grabbedElement: null,
62
46
  };
63
47
  });
64
- }, []);
48
+ }, [ownerId]);
65
49
  useEffect(() => {
66
50
  return () => {
67
51
  if (copyBadgeTimeoutRef.current) {
@@ -75,13 +59,6 @@ export const ReactNativeGrabOverlay = () => {
75
59
  grabbedElement,
76
60
  }));
77
61
  }, []);
78
- const closeSelectedElementMenu = useCallback(() => {
79
- setState((prev) => ({
80
- ...prev,
81
- selectedElement: null,
82
- grabbedElement: null,
83
- }));
84
- }, []);
85
62
  const showCopiedBadge = useCallback(() => {
86
63
  if (copyBadgeTimeoutRef.current) {
87
64
  clearTimeout(copyBadgeTimeoutRef.current);
@@ -92,40 +69,39 @@ export const ReactNativeGrabOverlay = () => {
92
69
  copyBadgeTimeoutRef.current = null;
93
70
  }, COPY_BADGE_DURATION_MS);
94
71
  }, []);
95
- const resetControlBarPosition = useCallback(() => {
96
- if (!shouldResetControlBarPositionRef.current) {
72
+ useEffect(() => {
73
+ if (isResolvedSelectionOwner) {
97
74
  return;
98
75
  }
99
- shouldResetControlBarPositionRef.current = false;
100
- controlBarPosition.setValue(INITIAL_BAR_POSITION);
101
- }, [controlBarPosition]);
102
- useEffect(() => {
103
- setEnableGrabbingHandler(startSession);
104
- setToggleGrabMenuHandler(toggleMenuVisibility);
105
- return () => {
106
- setEnableGrabbingHandler(null);
107
- setToggleGrabMenuHandler(null);
108
- };
109
- }, [startSession, toggleMenuVisibility]);
110
- useDevMenu(toggleMenuVisibility);
111
- const getElementAtPoint = (nativePageX, nativePageY) => {
112
- const appRootShadowNode = getAppRootShadowNode();
113
- const focusedScreenShadowNode = getFocusedScreenShadowNode();
114
- const appRootBoundingClientRect = measureInWindow(appRootShadowNode);
115
- const focusedScreenBoundingClientRect = measureInWindow(focusedScreenShadowNode);
116
- let focusedScreenOffsetY = focusedScreenBoundingClientRect[1];
117
- let focusedScreenHeight = focusedScreenBoundingClientRect[3];
118
- let appRootHeight = appRootBoundingClientRect[3];
119
- const offset = appRootHeight - focusedScreenHeight - focusedScreenOffsetY;
120
- const pageX = nativePageX;
121
- const pageY = nativePageY - (appRootHeight - focusedScreenHeight);
122
- const internalNode = findNodeAtPoint(focusedScreenShadowNode, pageX, pageY);
76
+ clearGrabOwnerPresentation(ownerId);
77
+ setState((prev) => {
78
+ if (!prev.isSessionEnabled && !prev.grabbedElement && !prev.selectedElement) {
79
+ return prev;
80
+ }
81
+ return {
82
+ ...prev,
83
+ isSessionEnabled: false,
84
+ grabbedElement: null,
85
+ selectedElement: null,
86
+ };
87
+ });
88
+ }, [isResolvedSelectionOwner, ownerId]);
89
+ const getElementAtPoint = (pageX, pageY) => {
90
+ const owner = getGrabSelectionOwner(ownerId);
91
+ if (!owner) {
92
+ return null;
93
+ }
94
+ const internalNode = findNodeAtPoint(owner.shadowNode, pageX, pageY);
123
95
  const shadowNode = internalNode?.stateNode?.node;
124
96
  if (!shadowNode) {
125
97
  return null;
126
98
  }
99
+ const ownerRect = measureInWindow(owner.shadowNode);
127
100
  const rect = nativeFabricUIManager.getBoundingClientRect(shadowNode, true);
128
- return { fiberNode: internalNode, rect: [rect[0], rect[1] + offset, rect[2], rect[3]] };
101
+ return {
102
+ fiberNode: internalNode,
103
+ rect: [rect[0] - ownerRect[0], rect[1] - ownerRect[1], rect[2], rect[3]],
104
+ };
129
105
  };
130
106
  const handleTouch = (nativeEvent) => {
131
107
  const result = getElementAtPoint(nativeEvent.pageX, nativeEvent.pageY);
@@ -135,14 +111,13 @@ export const ReactNativeGrabOverlay = () => {
135
111
  }
136
112
  updateGrabbedElement(result);
137
113
  };
138
- const handleGrabbing = async (result) => {
114
+ const handleGrabbing = useCallback(async (result) => {
139
115
  const [description, renderedBy] = await Promise.all([
140
116
  getDescription(result.fiberNode),
141
117
  getRenderedBy(result.fiberNode),
142
118
  ]);
143
119
  const firstFrame = renderedBy.find((frame) => Boolean(frame.file)) ?? null;
144
- const elementNameMatch = description.match(/<([A-Za-z0-9_$.:-]+)/);
145
- const elementName = elementNameMatch?.[1] ?? firstFrame?.name ?? "Selected element";
120
+ const elementName = getGrabSelectionTitle(result.fiberNode, renderedBy);
146
121
  setState((prev) => ({
147
122
  ...prev,
148
123
  grabbedElement: result,
@@ -153,7 +128,53 @@ export const ReactNativeGrabOverlay = () => {
153
128
  result,
154
129
  },
155
130
  }));
156
- };
131
+ showGrabSelectionMenu(ownerId);
132
+ }, [ownerId]);
133
+ useEffect(() => {
134
+ registerLocalGrabSelectionController(ownerId, {
135
+ closeSelectionMenu: () => {
136
+ closeSelectedElementMenu();
137
+ },
138
+ startSelection: startSession,
139
+ stopSelection: () => {
140
+ closeSelectedElementMenu();
141
+ stopSession();
142
+ },
143
+ });
144
+ return () => {
145
+ unregisterLocalGrabSelectionController(ownerId);
146
+ };
147
+ }, [closeSelectedElementMenu, ownerId, startSession, stopSession]);
148
+ const panResponder = useRef(PanResponder.create({
149
+ onStartShouldSetPanResponderCapture: () => true,
150
+ onMoveShouldSetPanResponderCapture: () => true,
151
+ onPanResponderGrant: (evt) => handleTouch(evt.nativeEvent),
152
+ onPanResponderMove: (evt) => handleTouch(evt.nativeEvent),
153
+ onPanResponderRelease: (evt) => {
154
+ void (async () => {
155
+ try {
156
+ const result = getElementAtPoint(evt.nativeEvent.pageX, evt.nativeEvent.pageY);
157
+ if (!result) {
158
+ return;
159
+ }
160
+ await handleGrabbing(result);
161
+ }
162
+ catch {
163
+ console.error("[react-native-grab] Grabbing failed.");
164
+ }
165
+ finally {
166
+ setGrabSelectionSessionOwner(null);
167
+ stopSession();
168
+ }
169
+ })();
170
+ },
171
+ })).current;
172
+ useEffect(() => {
173
+ onPanHandlersChange?.(state.isSessionEnabled ? panResponder.panHandlers : null);
174
+ return () => {
175
+ onPanHandlersChange?.(null);
176
+ };
177
+ }, [onPanHandlersChange, panResponder.panHandlers, state.isSessionEnabled]);
157
178
  const handleCopySelectedElement = useCallback(async () => {
158
179
  const selectedElement = state.selectedElement;
159
180
  if (!selectedElement) {
@@ -184,60 +205,6 @@ export const ReactNativeGrabOverlay = () => {
184
205
  console.error("[react-native-grab] Opening editor failed.");
185
206
  }
186
207
  }, [closeSelectedElementMenu, state.selectedElement]);
187
- const panResponder = useRef(PanResponder.create({
188
- onStartShouldSetPanResponderCapture: () => true,
189
- onMoveShouldSetPanResponderCapture: () => true,
190
- onPanResponderGrant: (evt) => handleTouch(evt.nativeEvent),
191
- onPanResponderMove: (evt) => handleTouch(evt.nativeEvent),
192
- onPanResponderRelease: (evt) => {
193
- void (async () => {
194
- try {
195
- const result = getElementAtPoint(evt.nativeEvent.pageX, evt.nativeEvent.pageY);
196
- if (!result) {
197
- return;
198
- }
199
- await handleGrabbing(result);
200
- }
201
- catch {
202
- console.error("[react-native-grab] Grabbing failed.");
203
- }
204
- finally {
205
- stopSession();
206
- }
207
- })();
208
- },
209
- })).current;
210
- const dragHandlePanResponder = useRef(PanResponder.create({
211
- onStartShouldSetPanResponder: () => true,
212
- onMoveShouldSetPanResponder: (_, gestureState) => Math.abs(gestureState.dx) > 2 || Math.abs(gestureState.dy) > 2,
213
- onPanResponderGrant: () => {
214
- controlBarPosition.stopAnimation((value) => {
215
- controlBarPosition.setOffset(value);
216
- controlBarPosition.setValue({ x: 0, y: 0 });
217
- });
218
- },
219
- onPanResponderMove: Animated.event([null, { dx: controlBarPosition.x, dy: controlBarPosition.y }], { useNativeDriver: false }),
220
- onPanResponderRelease: () => {
221
- controlBarPosition.flattenOffset();
222
- controlBarPosition.stopAnimation((value) => {
223
- const { width, height } = Dimensions.get("window");
224
- controlBarPosition.setValue({
225
- x: clamp(value.x, 0, Math.max(0, width - BAR_WIDTH)),
226
- y: clamp(value.y, 0, Math.max(0, height - BAR_HEIGHT)),
227
- });
228
- });
229
- },
230
- onPanResponderTerminate: () => {
231
- controlBarPosition.flattenOffset();
232
- controlBarPosition.stopAnimation((value) => {
233
- const { width, height } = Dimensions.get("window");
234
- controlBarPosition.setValue({
235
- x: clamp(value.x, 0, Math.max(0, width - BAR_WIDTH)),
236
- y: clamp(value.y, 0, Math.max(0, height - BAR_HEIGHT)),
237
- });
238
- });
239
- },
240
- })).current;
241
208
  const selectedElementMenuAnchor = useMemo(() => {
242
209
  if (!state.selectedElement) {
243
210
  return null;
@@ -248,60 +215,54 @@ export const ReactNativeGrabOverlay = () => {
248
215
  y: rect[1] + rect[3],
249
216
  };
250
217
  }, [state.selectedElement]);
251
- const isControlBarVisible = state.isMenuVisible && !state.isSessionEnabled && state.selectedElement === null;
252
- return (_jsx(FullScreenOverlay, { children: _jsxs(View, { pointerEvents: "box-none", style: styles.overlayRoot, children: [state.isSessionEnabled && (_jsx(View, { style: [StyleSheet.absoluteFill, styles.sessionCapture], ...panResponder.panHandlers })), state.isSessionEnabled && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Touch and move around to grab" }) })), state.isCopyBadgeVisible && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Element copied" }) })), !!state.grabbedElement && (_jsx(View, { style: [
253
- {
254
- position: "absolute",
255
- left: state.grabbedElement.rect[0],
256
- top: state.grabbedElement.rect[1],
257
- width: state.grabbedElement.rect[2],
258
- height: state.grabbedElement.rect[3],
259
- pointerEvents: "none",
260
- },
261
- {
262
- backgroundColor: HIGHLIGHT_FILL,
263
- borderWidth: 1,
264
- borderColor: CALLSTACK_PRIMARY,
265
- },
266
- ] })), _jsx(GrabControlBar, { containerStyle: [
267
- styles.controlBar,
268
- {
269
- transform: controlBarPosition.getTranslateTransform(),
270
- },
271
- ], dragHandlePanHandlers: dragHandlePanResponder.panHandlers, isSessionEnabled: state.isSessionEnabled, isVisible: isControlBarVisible, onHidden: resetControlBarPosition, onPressHide: toggleMenuVisibility, onPressSelect: startSession }), _jsxs(ContextMenu, { anchor: selectedElementMenuAnchor, cutout: state.selectedElement
272
- ? {
273
- x: state.selectedElement.result.rect[0],
274
- y: state.selectedElement.result.rect[1],
275
- width: state.selectedElement.result.rect[2],
276
- height: state.selectedElement.result.rect[3],
277
- }
278
- : null, horizontalAlignment: "center", offset: { x: 0, y: 8 }, onClose: closeSelectedElementMenu, visible: state.selectedElement !== null, children: [_jsx(View, { style: styles.selectionMenuHeader, children: _jsx(Text, { numberOfLines: 1, style: styles.selectionMenuTitle, children: state.selectedElement?.elementName }) }), _jsxs(View, { style: styles.selectionMenuActions, children: [_jsx(Pressable, { accessibilityRole: "button", onPress: () => void handleCopySelectedElement(), style: ({ pressed }) => [
279
- styles.selectionMenuActionButton,
280
- pressed && styles.selectionMenuActionButtonPressed,
281
- ], children: _jsx(Text, { style: styles.selectionMenuActionText, children: "Copy" }) }), _jsx(View, { style: styles.selectionMenuActionDivider }), _jsx(Pressable, { accessibilityRole: "button", disabled: !state.selectedElement?.frame?.file, onPress: () => void handleOpenSelectedElement(), style: ({ pressed }) => [
282
- styles.selectionMenuActionButton,
283
- pressed &&
284
- state.selectedElement?.frame?.file &&
285
- styles.selectionMenuActionButtonPressed,
286
- ], children: _jsx(Text, { style: [
287
- styles.selectionMenuActionText,
288
- !state.selectedElement?.frame?.file && styles.selectionMenuActionTextDisabled,
289
- ], children: "Open" }) })] })] })] }) }));
218
+ const highlightedElement = state.grabbedElement ?? state.selectedElement?.result ?? null;
219
+ if (!state.isSessionEnabled &&
220
+ !state.isCopyBadgeVisible &&
221
+ !state.grabbedElement &&
222
+ !state.selectedElement) {
223
+ return null;
224
+ }
225
+ return (_jsxs(View, { pointerEvents: "box-none", style: styles.overlayRoot, onLayout: (event) => {
226
+ const { width, height } = event.nativeEvent.layout;
227
+ setBounds((prev) => {
228
+ if (prev.width === width && prev.height === height) {
229
+ return prev;
230
+ }
231
+ return { width, height };
232
+ });
233
+ }, children: [state.isSessionEnabled && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Touch and move around to grab" }) })), state.isCopyBadgeVisible && (_jsx(View, { pointerEvents: "none", style: styles.topBadge, children: _jsx(Text, { style: styles.topBadgeText, children: "Element copied" }) })), !!highlightedElement && (_jsx(View, { pointerEvents: "none", style: [
234
+ styles.highlight,
235
+ {
236
+ left: highlightedElement.rect[0],
237
+ top: highlightedElement.rect[1],
238
+ width: highlightedElement.rect[2],
239
+ height: highlightedElement.rect[3],
240
+ },
241
+ ] })), _jsxs(ContextMenu, { anchor: selectedElementMenuAnchor, bounds: bounds, cutout: state.selectedElement
242
+ ? {
243
+ x: state.selectedElement.result.rect[0],
244
+ y: state.selectedElement.result.rect[1],
245
+ width: state.selectedElement.result.rect[2],
246
+ height: state.selectedElement.result.rect[3],
247
+ }
248
+ : null, horizontalAlignment: "center", offset: { x: 0, y: 8 }, onClose: closeSelectedElementMenu, visible: state.selectedElement !== null, children: [_jsx(View, { style: styles.selectionMenuHeader, children: _jsx(Text, { adjustsFontSizeToFit: true, minimumFontScale: 0.65, numberOfLines: 1, style: styles.selectionMenuTitle, children: state.selectedElement?.elementName }) }), _jsxs(View, { style: styles.selectionMenuActions, children: [_jsx(Pressable, { accessibilityRole: "button", onPress: () => void handleCopySelectedElement(), style: ({ pressed }) => [
249
+ styles.selectionMenuActionButton,
250
+ pressed && styles.selectionMenuActionButtonPressed,
251
+ ], children: _jsx(Text, { style: styles.selectionMenuActionText, children: "Copy" }) }), _jsx(View, { style: styles.selectionMenuActionDivider }), _jsx(Pressable, { accessibilityRole: "button", disabled: !state.selectedElement?.frame?.file, onPress: () => void handleOpenSelectedElement(), style: ({ pressed }) => [
252
+ styles.selectionMenuActionButton,
253
+ pressed &&
254
+ state.selectedElement?.frame?.file &&
255
+ styles.selectionMenuActionButtonPressed,
256
+ ], children: _jsx(Text, { style: [
257
+ styles.selectionMenuActionText,
258
+ !state.selectedElement?.frame?.file && styles.selectionMenuActionTextDisabled,
259
+ ], children: "Open" }) })] })] })] }));
290
260
  };
291
261
  const styles = StyleSheet.create({
292
262
  overlayRoot: {
293
263
  ...StyleSheet.absoluteFillObject,
294
264
  zIndex: 9999,
295
265
  },
296
- sessionCapture: {
297
- zIndex: 1,
298
- },
299
- controlBar: {
300
- position: "absolute",
301
- top: 0,
302
- left: 0,
303
- zIndex: 2,
304
- },
305
266
  topBadge: {
306
267
  position: "absolute",
307
268
  top: 52,
@@ -309,18 +270,26 @@ const styles = StyleSheet.create({
309
270
  borderRadius: 999,
310
271
  paddingHorizontal: 14,
311
272
  paddingVertical: 8,
312
- backgroundColor: BADGE_BACKGROUND,
273
+ backgroundColor: GRAB_BADGE_BACKGROUND,
313
274
  },
314
275
  topBadgeText: {
315
276
  color: "#FFFFFF",
316
277
  fontSize: 13,
317
278
  fontWeight: "600",
318
279
  },
280
+ highlight: {
281
+ position: "absolute",
282
+ backgroundColor: GRAB_HIGHLIGHT_FILL,
283
+ borderWidth: 1,
284
+ borderColor: GRAB_PRIMARY,
285
+ },
319
286
  selectionMenuHeader: {
287
+ alignSelf: "stretch",
320
288
  paddingHorizontal: 14,
321
289
  paddingVertical: 12,
322
290
  },
323
291
  selectionMenuTitle: {
292
+ width: "100%",
324
293
  color: "#111111",
325
294
  fontSize: 14,
326
295
  fontWeight: "600",
@@ -1 +1 @@
1
- {"version":3,"file":"grab-overlay.js","sourceRoot":"","sources":["../../../src/react-native/grab-overlay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grab-overlay.js","sourceRoot":"","sources":["../../../src/react-native/grab-overlay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,IAAI,EACJ,IAAI,GAEL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,oCAAoC,EACpC,4BAA4B,EAC5B,qBAAqB,EACrB,sCAAsC,GACvC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAehD,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAOpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,OAAO,EACP,mBAAmB,GACS,EAAE,EAAE;IAChC,MAAM,wBAAwB,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,mBAAmB,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;QACjC,gBAAgB,EAAE,KAAK;QACvB,cAAc,EAAE,IAAyB;QACzC,kBAAkB,EAAE,KAAK;QACzB,eAAe,EAAE,IAAiC;KACnD,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,GAAG,IAAI;YACP,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,GAAG,IAAI;YACP,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,wBAAwB,GAAG,WAAW,CAAC,GAAG,EAAE;QAChD,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC/B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO;gBACL,GAAG,IAAI;gBACP,eAAe,EAAE,IAAI;gBACrB,cAAc,EAAE,IAAI;aACrB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,cAAiC,EAAE,EAAE;QAC7E,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,GAAG,IAAI;YACP,cAAc;SACf,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAChC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5D,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5C,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7D,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;QACrC,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,wBAAwB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,GAAG,IAAI;gBACP,gBAAgB,EAAE,KAAK;gBACvB,cAAc,EAAE,IAAI;gBACpB,eAAe,EAAE,IAAI;aACtB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC,CAAC;IAExC,MAAM,iBAAiB,GAAG,CACxB,KAAa,EACb,KAAa,EACyD,EAAE;QACxE,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC;QAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3E,OAAO;YACL,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SACzE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,WAA6B,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,KAAK,EAAE,MAAkB,EAAiB,EAAE;QAC1C,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClD,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;YAChC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QAC3E,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAExE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,GAAG,IAAI;YACP,cAAc,EAAE,MAAM;YACtB,eAAe,EAAE;gBACf,WAAW;gBACX,WAAW;gBACX,KAAK,EAAE,UAAU;gBACjB,MAAM;aACP;SACF,CAAC,CAAC,CAAC;QACJ,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,oCAAoC,CAAC,OAAO,EAAE;YAC5C,kBAAkB,EAAE,GAAG,EAAE;gBACvB,wBAAwB,EAAE,CAAC;YAC7B,CAAC;YACD,cAAc,EAAE,YAAY;YAC5B,aAAa,EAAE,GAAG,EAAE;gBAClB,wBAAwB,EAAE,CAAC;gBAC3B,WAAW,EAAE,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,sCAAsC,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,wBAAwB,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAEnE,MAAM,YAAY,GAAG,MAAM,CACzB,YAAY,CAAC,MAAM,CAAC;QAClB,mCAAmC,EAAE,GAAG,EAAE,CAAC,IAAI;QAC/C,kCAAkC,EAAE,GAAG,EAAE,CAAC,IAAI;QAE9C,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1D,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;QACzD,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAC/E,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO;oBACT,CAAC;oBAED,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACxD,CAAC;wBAAS,CAAC;oBACT,4BAA4B,CAAC,IAAI,CAAC,CAAC;oBACnC,WAAW,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;KACF,CAAC,CACH,CAAC,OAAO,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,GAAG,EAAE;YACV,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE5E,MAAM,yBAAyB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAE9C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,wBAAwB,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAChD,eAAe,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,qIAAqI,CACtI,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,wBAAwB,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAEvE,MAAM,yBAAyB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;QAE3C,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,wBAAwB,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,UAAU,EAAE,KAAK,CAAC,IAAI;aACvB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,EAAE,CAAC,wBAAwB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtD,MAAM,yBAAyB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/C,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACxB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;SACrB,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAE5B,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,CAAC;IAEzF,IACE,CAAC,KAAK,CAAC,gBAAgB;QACvB,CAAC,KAAK,CAAC,kBAAkB;QACzB,CAAC,KAAK,CAAC,cAAc;QACrB,CAAC,KAAK,CAAC,eAAe,EACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IACH,aAAa,EAAC,UAAU,EACxB,KAAK,EAAE,MAAM,CAAC,WAAW,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YACnD,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACnD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,aAEA,KAAK,CAAC,gBAAgB,IAAI,CACzB,KAAC,IAAI,IAAC,aAAa,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YAC/C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,8CAAsC,GACjE,CACR,EAEA,KAAK,CAAC,kBAAkB,IAAI,CAC3B,KAAC,IAAI,IAAC,aAAa,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YAC/C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,+BAAuB,GAClD,CACR,EAEA,CAAC,CAAC,kBAAkB,IAAI,CACvB,KAAC,IAAI,IACH,aAAa,EAAC,MAAM,EACpB,KAAK,EAAE;oBACL,MAAM,CAAC,SAAS;oBAChB;wBACE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;wBAChC,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC/B,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;qBACnC;iBACF,GACD,CACH,EAED,MAAC,WAAW,IACV,MAAM,EAAE,yBAAyB,EACjC,MAAM,EAAE,MAAM,EACd,MAAM,EACJ,KAAK,CAAC,eAAe;oBACnB,CAAC,CAAC;wBACE,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;wBACvC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;wBACvC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC3C,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC7C;oBACH,CAAC,CAAC,IAAI,EAEV,mBAAmB,EAAC,QAAQ,EAC5B,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EACtB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,KAAK,CAAC,eAAe,KAAK,IAAI,aAEvC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,YACrC,KAAC,IAAI,IACH,oBAAoB,QACpB,gBAAgB,EAAE,IAAI,EACtB,aAAa,EAAE,CAAC,EAChB,KAAK,EAAE,MAAM,CAAC,kBAAkB,YAE/B,KAAK,CAAC,eAAe,EAAE,WAAW,GAC9B,GACF,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,oBAAoB,aACtC,KAAC,SAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,yBAAyB,EAAE,EAC/C,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oCACtB,MAAM,CAAC,yBAAyB;oCAChC,OAAO,IAAI,MAAM,CAAC,gCAAgC;iCACnD,YAED,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,uBAAuB,qBAAa,GAC9C,EACZ,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,0BAA0B,GAAI,EAClD,KAAC,SAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,QAAQ,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,yBAAyB,EAAE,EAC/C,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oCACtB,MAAM,CAAC,yBAAyB;oCAChC,OAAO;wCACL,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI;wCAClC,MAAM,CAAC,gCAAgC;iCAC1C,YAED,KAAC,IAAI,IACH,KAAK,EAAE;wCACL,MAAM,CAAC,uBAAuB;wCAC9B,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC,+BAA+B;qCAC9E,qBAGI,GACG,IACP,IACK,IACT,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,WAAW,EAAE;QACX,GAAG,UAAU,CAAC,kBAAkB;QAChC,MAAM,EAAE,IAAI;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,EAAE;QACP,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG;QACjB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,qBAAqB;KACvC;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;KAClB;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,mBAAmB;QACpC,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,YAAY;KAC1B;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,SAAS;QACpB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;KACpB;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;KAClB;IACD,oBAAoB,EAAE;QACpB,aAAa,EAAE,KAAK;KACrB;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,CAAC;KACR;IACD,gCAAgC,EAAE;QAChC,eAAe,EAAE,wBAAwB;KAC1C;IACD,0BAA0B,EAAE;QAC1B,KAAK,EAAE,UAAU,CAAC,aAAa;QAC/B,eAAe,EAAE,wBAAwB;KAC1C;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,CAAC;QACP,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,QAAQ;KACpB;IACD,+BAA+B,EAAE;QAC/B,OAAO,EAAE,GAAG;KACb;CACF,CAAC,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useMemo, useRef } from "react";
3
+ import { Animated, Dimensions, PanResponder, StyleSheet, View } from "react-native";
4
+ import { useDevMenu } from "./dev-menu";
5
+ import { FullScreenOverlay } from "./full-screen-overlay";
6
+ import { enableGrabbing, toggleGrabMenu, useGrabControllerState } from "./grab-controller";
7
+ import { GrabControlBar } from "./grab-control-bar";
8
+ const BAR_HEIGHT = 36;
9
+ const BAR_WIDTH = 108;
10
+ const INITIAL_BAR_POSITION = {
11
+ x: (Dimensions.get("window").width - BAR_WIDTH) / 2,
12
+ y: 72,
13
+ };
14
+ const clamp = (value, min, max) => {
15
+ return Math.min(Math.max(value, min), max);
16
+ };
17
+ export const ReactNativeGrabRootControls = () => {
18
+ const state = useGrabControllerState();
19
+ const controlBarPosition = useRef(new Animated.ValueXY(INITIAL_BAR_POSITION)).current;
20
+ const shouldResetControlBarPositionRef = useRef(false);
21
+ const isControlBarVisible = state.isMenuVisible && state.selectionSessionOwnerId === null && state.selectedOwnerId === null;
22
+ const toggleMenuVisibility = useCallback(() => {
23
+ shouldResetControlBarPositionRef.current = state.isMenuVisible;
24
+ toggleGrabMenu();
25
+ }, [state.isMenuVisible]);
26
+ const resetControlBarPosition = useCallback(() => {
27
+ if (!shouldResetControlBarPositionRef.current) {
28
+ return;
29
+ }
30
+ shouldResetControlBarPositionRef.current = false;
31
+ controlBarPosition.setValue(INITIAL_BAR_POSITION);
32
+ }, [controlBarPosition]);
33
+ useDevMenu(toggleMenuVisibility);
34
+ const dragHandlePanResponder = useRef(PanResponder.create({
35
+ onStartShouldSetPanResponder: () => true,
36
+ onMoveShouldSetPanResponder: (_, gestureState) => Math.abs(gestureState.dx) > 2 || Math.abs(gestureState.dy) > 2,
37
+ onPanResponderGrant: () => {
38
+ controlBarPosition.stopAnimation((value) => {
39
+ controlBarPosition.setOffset(value);
40
+ controlBarPosition.setValue({ x: 0, y: 0 });
41
+ });
42
+ },
43
+ onPanResponderMove: Animated.event([null, { dx: controlBarPosition.x, dy: controlBarPosition.y }], { useNativeDriver: false }),
44
+ onPanResponderRelease: () => {
45
+ controlBarPosition.flattenOffset();
46
+ controlBarPosition.stopAnimation((value) => {
47
+ const { width, height } = Dimensions.get("window");
48
+ controlBarPosition.setValue({
49
+ x: clamp(value.x, 0, Math.max(0, width - BAR_WIDTH)),
50
+ y: clamp(value.y, 0, Math.max(0, height - BAR_HEIGHT)),
51
+ });
52
+ });
53
+ },
54
+ onPanResponderTerminate: () => {
55
+ controlBarPosition.flattenOffset();
56
+ controlBarPosition.stopAnimation((value) => {
57
+ const { width, height } = Dimensions.get("window");
58
+ controlBarPosition.setValue({
59
+ x: clamp(value.x, 0, Math.max(0, width - BAR_WIDTH)),
60
+ y: clamp(value.y, 0, Math.max(0, height - BAR_HEIGHT)),
61
+ });
62
+ });
63
+ },
64
+ })).current;
65
+ const containerStyle = useMemo(() => [
66
+ styles.controlBar,
67
+ {
68
+ transform: controlBarPosition.getTranslateTransform(),
69
+ },
70
+ ], [controlBarPosition]);
71
+ return (_jsx(FullScreenOverlay, { children: _jsx(View, { pointerEvents: "box-none", style: styles.overlayRoot, children: _jsx(GrabControlBar, { containerStyle: containerStyle, dragHandlePanHandlers: dragHandlePanResponder.panHandlers, isSessionEnabled: state.selectionSessionOwnerId !== null, isVisible: isControlBarVisible, onHidden: resetControlBarPosition, onPressHide: toggleMenuVisibility, onPressSelect: enableGrabbing }) }) }));
72
+ };
73
+ const styles = StyleSheet.create({
74
+ overlayRoot: {
75
+ ...StyleSheet.absoluteFillObject,
76
+ zIndex: 9999,
77
+ },
78
+ controlBar: {
79
+ position: "absolute",
80
+ top: 0,
81
+ left: 0,
82
+ zIndex: 2,
83
+ },
84
+ });
85
+ //# sourceMappingURL=grab-root-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grab-root-controls.js","sourceRoot":"","sources":["../../../src/react-native/grab-root-controls.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,22 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
3
  import { View } from "react-native";
4
- import { setAppRootRef } from "./containers";
4
+ import { createGrabSelectionOwnerId, registerGrabSelectionOwner, unregisterGrabSelectionOwner, } from "./containers";
5
5
  import { ReactNativeGrabOverlay } from "./grab-overlay";
6
+ import { ReactNativeGrabRootControls } from "./grab-root-controls";
6
7
  export const ReactNativeGrabRoot = ({ children, style, ...props }) => {
7
8
  const rootRef = useRef(null);
9
+ const ownerIdRef = useRef(createGrabSelectionOwnerId("root"));
10
+ const [panHandlers, setPanHandlers] = useState(null);
8
11
  useEffect(() => {
9
12
  if (!rootRef.current) {
10
13
  return;
11
14
  }
12
- setAppRootRef(rootRef.current);
15
+ registerGrabSelectionOwner(ownerIdRef.current, "root", rootRef.current);
16
+ return () => {
17
+ unregisterGrabSelectionOwner(ownerIdRef.current);
18
+ };
13
19
  }, []);
14
- return (_jsxs(_Fragment, { children: [_jsx(View, { ...props, ref: rootRef, style: [{ flex: 1 }, style], children: children }), _jsx(ReactNativeGrabOverlay, {})] }));
20
+ return (_jsxs(_Fragment, { children: [_jsxs(View, { ...props, ...(panHandlers ?? {}), collapsable: false, ref: rootRef, style: [{ flex: 1 }, style], children: [children, _jsx(ReactNativeGrabOverlay, { ownerId: ownerIdRef.current, onPanHandlersChange: setPanHandlers })] }), _jsx(ReactNativeGrabRootControls, {})] }));
15
21
  };
16
22
  //# sourceMappingURL=grab-root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grab-root.js","sourceRoot":"","sources":["../../../src/react-native/grab-root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAA4B,EAAE,EAAE;IAC7F,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,8BACE,KAAC,IAAI,OAAK,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,YACvD,QAAQ,GACJ,EAEP,KAAC,sBAAsB,KAAG,IACzB,CACJ,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"grab-root.js","sourceRoot":"","sources":["../../../src/react-native/grab-root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,IAAI,EAA4C,MAAM,cAAc,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAInE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAA4B,EAAE,EAAE;IAC7F,MAAM,OAAO,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkC,IAAI,CAAC,CAAC;IAEtF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,OAAO,GAAG,EAAE;YACV,4BAA4B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,8BACE,MAAC,IAAI,OACC,KAAK,KACL,CAAC,WAAW,IAAI,EAAE,CAAC,EACvB,WAAW,EAAE,KAAK,EAClB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,aAE1B,QAAQ,EACT,KAAC,sBAAsB,IAAC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,mBAAmB,EAAE,cAAc,GAAI,IACvF,EAEP,KAAC,2BAA2B,KAAG,IAC9B,CACJ,CAAC;AACJ,CAAC,CAAC"}