react-native-grab 0.0.0 → 0.0.2

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 (74) hide show
  1. package/README.md +92 -0
  2. package/dist/cjs/metro/index.js +6 -0
  3. package/dist/cjs/metro/index.js.map +1 -0
  4. package/dist/cjs/metro/withReactNativeGrab.js +180 -0
  5. package/dist/cjs/metro/withReactNativeGrab.js.map +1 -0
  6. package/dist/cjs/react-native/copy-payload.js +340 -0
  7. package/dist/cjs/react-native/copy-payload.js.map +1 -0
  8. package/dist/cjs/react-native/dom-traversal.js +210 -0
  9. package/dist/cjs/react-native/dom-traversal.js.map +1 -0
  10. package/dist/cjs/react-native/fiber.js +142 -0
  11. package/dist/cjs/react-native/fiber.js.map +1 -0
  12. package/dist/cjs/react-native/index.js +452 -0
  13. package/dist/cjs/react-native/index.js.map +1 -0
  14. package/dist/cjs/react-native/pointer-events.js +117 -0
  15. package/dist/cjs/react-native/pointer-events.js.map +1 -0
  16. package/dist/cjs/react-native/selection-trigger.js +19 -0
  17. package/dist/cjs/react-native/selection-trigger.js.map +1 -0
  18. package/dist/cjs/react-native/settings.js +101 -0
  19. package/dist/cjs/react-native/settings.js.map +1 -0
  20. package/dist/cjs/react-native/symbolicate.js +15 -0
  21. package/dist/cjs/react-native/symbolicate.js.map +1 -0
  22. package/dist/cjs/react-native/types.js +7 -0
  23. package/dist/cjs/react-native/types.js.map +1 -0
  24. package/dist/cjs/react-native/z-index.js +47 -0
  25. package/dist/cjs/react-native/z-index.js.map +1 -0
  26. package/dist/esm/metro/index.js +2 -0
  27. package/dist/esm/metro/index.js.map +1 -0
  28. package/dist/esm/metro/withReactNativeGrab.js +177 -0
  29. package/dist/esm/metro/withReactNativeGrab.js.map +1 -0
  30. package/dist/esm/react-native/copy-payload.js +333 -0
  31. package/dist/esm/react-native/copy-payload.js.map +1 -0
  32. package/dist/esm/react-native/dom-traversal.js +201 -0
  33. package/dist/esm/react-native/dom-traversal.js.map +1 -0
  34. package/dist/esm/react-native/fiber.js +133 -0
  35. package/dist/esm/react-native/fiber.js.map +1 -0
  36. package/dist/esm/react-native/index.js +445 -0
  37. package/dist/esm/react-native/index.js.map +1 -0
  38. package/dist/esm/react-native/pointer-events.js +109 -0
  39. package/dist/esm/react-native/pointer-events.js.map +1 -0
  40. package/dist/esm/react-native/selection-trigger.js +14 -0
  41. package/dist/esm/react-native/selection-trigger.js.map +1 -0
  42. package/dist/esm/react-native/settings.js +91 -0
  43. package/dist/esm/react-native/settings.js.map +1 -0
  44. package/dist/esm/react-native/symbolicate.js +8 -0
  45. package/dist/esm/react-native/symbolicate.js.map +1 -0
  46. package/dist/esm/react-native/types.js +6 -0
  47. package/dist/esm/react-native/types.js.map +1 -0
  48. package/dist/esm/react-native/z-index.js +43 -0
  49. package/dist/esm/react-native/z-index.js.map +1 -0
  50. package/dist/types/metro/index.d.ts +2 -0
  51. package/dist/types/metro/index.d.ts.map +1 -0
  52. package/dist/types/metro/withReactNativeGrab.d.ts +2 -0
  53. package/dist/types/metro/withReactNativeGrab.d.ts.map +1 -0
  54. package/dist/types/react-native/copy-payload.d.ts +22 -0
  55. package/dist/types/react-native/copy-payload.d.ts.map +1 -0
  56. package/dist/types/react-native/dom-traversal.d.ts +8 -0
  57. package/dist/types/react-native/dom-traversal.d.ts.map +1 -0
  58. package/dist/types/react-native/fiber.d.ts +22 -0
  59. package/dist/types/react-native/fiber.d.ts.map +1 -0
  60. package/dist/types/react-native/index.d.ts +2 -0
  61. package/dist/types/react-native/index.d.ts.map +1 -0
  62. package/dist/types/react-native/pointer-events.d.ts +13 -0
  63. package/dist/types/react-native/pointer-events.d.ts.map +1 -0
  64. package/dist/types/react-native/selection-trigger.d.ts +3 -0
  65. package/dist/types/react-native/selection-trigger.d.ts.map +1 -0
  66. package/dist/types/react-native/settings.d.ts +8 -0
  67. package/dist/types/react-native/settings.d.ts.map +1 -0
  68. package/dist/types/react-native/symbolicate.d.ts +3 -0
  69. package/dist/types/react-native/symbolicate.d.ts.map +1 -0
  70. package/dist/types/react-native/types.d.ts +53 -0
  71. package/dist/types/react-native/types.d.ts.map +1 -0
  72. package/dist/types/react-native/z-index.d.ts +3 -0
  73. package/dist/types/react-native/z-index.d.ts.map +1 -0
  74. package/package.json +62 -8
@@ -0,0 +1,333 @@
1
+ import { getDisplayNameForFiber, getMemoizedProps } from './fiber';
2
+ import { symbolicate } from './symbolicate';
3
+ const MAX_CLIPBOARD_LEN = 1200;
4
+ const MAX_OWNER_DEPTH = 30;
5
+ const MAX_SYMBOLICATION_TASKS = 24;
6
+ const MAX_FIELD_LEN = 60;
7
+ const REACT_NATIVE_PRIMITIVE_NAMES = new Set([
8
+ 'Text',
9
+ 'View',
10
+ 'Image',
11
+ 'TextInput',
12
+ 'ScrollView',
13
+ 'Switch',
14
+ 'Modal',
15
+ 'SafeAreaView',
16
+ 'Pressable',
17
+ 'TouchableOpacity',
18
+ 'TouchableHighlight',
19
+ 'TouchableWithoutFeedback',
20
+ ]);
21
+ const truncate = (value, max) => {
22
+ if (value.length <= max)
23
+ return value;
24
+ return `${value.slice(0, Math.max(0, max - 3))}...`;
25
+ };
26
+ const sanitizeLine = (value, max = MAX_FIELD_LEN) => {
27
+ if (value == null)
28
+ return '';
29
+ const raw = String(value).replace(/\s+/g, ' ').trim();
30
+ if (!raw)
31
+ return '';
32
+ return truncate(raw, max);
33
+ };
34
+ const escapeAttribute = (value) => {
35
+ return String(value)
36
+ .replace(/&/g, '&amp;')
37
+ .replace(/"/g, '&quot;')
38
+ .replace(/</g, '&lt;')
39
+ .replace(/>/g, '&gt;');
40
+ };
41
+ const isRecord = (value) => {
42
+ return typeof value === 'object' && value !== null;
43
+ };
44
+ const asErrorWithStack = (debugStack) => {
45
+ if (debugStack instanceof Error)
46
+ return debugStack;
47
+ const stackString = typeof debugStack === 'string'
48
+ ? debugStack
49
+ : isRecord(debugStack) && typeof debugStack.stack === 'string'
50
+ ? debugStack.stack
51
+ : null;
52
+ if (!stackString)
53
+ return null;
54
+ const error = new Error('Inspector debug stack');
55
+ error.stack = stackString;
56
+ return error;
57
+ };
58
+ const toFiberNode = (node) => {
59
+ if (!node || !node.__internalInstanceHandle)
60
+ return null;
61
+ return node.__internalInstanceHandle;
62
+ };
63
+ const toPathSlashes = (value) => {
64
+ return value.replace(/\\/g, '/');
65
+ };
66
+ const trimProjectRootSlashes = (value) => {
67
+ return toPathSlashes(value).replace(/\/+$/, '');
68
+ };
69
+ const maybeDecodeURIComponent = (value) => {
70
+ try {
71
+ return decodeURIComponent(value);
72
+ }
73
+ catch {
74
+ return value;
75
+ }
76
+ };
77
+ export const normalizeInspectorPath = (filePath, pathRootHint) => {
78
+ const raw = sanitizeLine(filePath, 2000);
79
+ if (!raw)
80
+ return '-';
81
+ let normalized = raw.replace(/[?#].*$/, '');
82
+ if (normalized.startsWith('file://')) {
83
+ normalized = normalized.replace(/^file:\/\//, '');
84
+ }
85
+ else if (/^[a-zA-Z]+:\/\//.test(normalized)) {
86
+ try {
87
+ const url = new URL(normalized);
88
+ normalized = url.pathname;
89
+ }
90
+ catch {
91
+ // keep raw when URL parsing fails
92
+ }
93
+ }
94
+ normalized = maybeDecodeURIComponent(toPathSlashes(normalized));
95
+ if (!normalized)
96
+ return '-';
97
+ if (normalized.startsWith('/[project]/')) {
98
+ return normalized;
99
+ }
100
+ if (normalized.startsWith('/[metro-project]/')) {
101
+ return normalized.replace('/[metro-project]/', '/[project]/');
102
+ }
103
+ if (!normalized.startsWith('/')) {
104
+ return normalized;
105
+ }
106
+ const rootHint = pathRootHint ? trimProjectRootSlashes(pathRootHint) : '';
107
+ if (rootHint && normalized.startsWith(`${rootHint}/`)) {
108
+ return `/[project]/${normalized.slice(rootHint.length + 1)}`;
109
+ }
110
+ return normalized;
111
+ };
112
+ const toInspectorSourceFrame = (frame, pathRootHint) => {
113
+ if (frame.collapse === true)
114
+ return null;
115
+ const file = frame.file?.trim() ?? '';
116
+ if (!file)
117
+ return null;
118
+ const filePath = normalizeInspectorPath(file, pathRootHint);
119
+ if (!filePath || filePath === '-')
120
+ return null;
121
+ const method = sanitizeLine(frame.methodName ?? '', 100);
122
+ const componentName = method || null;
123
+ const line = typeof frame.lineNumber === 'number' && Number.isFinite(frame.lineNumber)
124
+ ? frame.lineNumber
125
+ : null;
126
+ const column = typeof frame.column === 'number' && Number.isFinite(frame.column)
127
+ ? frame.column
128
+ : null;
129
+ return {
130
+ componentName,
131
+ filePath,
132
+ line,
133
+ column,
134
+ };
135
+ };
136
+ const dedupeConsecutiveFrames = (frames) => {
137
+ if (frames.length <= 1)
138
+ return frames;
139
+ const deduped = [];
140
+ let previousKey = '';
141
+ for (const frame of frames) {
142
+ const key = `${frame.componentName ?? ''}|${frame.filePath}|${frame.line ?? ''}|${frame.column ?? ''}`;
143
+ if (key === previousKey)
144
+ continue;
145
+ deduped.push(frame);
146
+ previousKey = key;
147
+ }
148
+ return deduped;
149
+ };
150
+ const extractSourceFramesFromFiberChain = async (fiber, maxStackLines, symbolicateStack, pathRootHint) => {
151
+ const debugStackErrors = [];
152
+ let cursor = fiber?.return ?? null;
153
+ let depth = 0;
154
+ while (cursor &&
155
+ depth < MAX_OWNER_DEPTH &&
156
+ debugStackErrors.length < MAX_SYMBOLICATION_TASKS) {
157
+ const error = asErrorWithStack(cursor._debugStack);
158
+ if (error) {
159
+ debugStackErrors.push(error);
160
+ }
161
+ cursor = cursor.return ?? null;
162
+ depth += 1;
163
+ }
164
+ const perOwnerFrames = await Promise.all(debugStackErrors.map(async (error) => {
165
+ try {
166
+ const symbolicated = await symbolicateStack(error);
167
+ for (const frame of symbolicated.stack) {
168
+ const formatted = toInspectorSourceFrame(frame, pathRootHint);
169
+ if (formatted) {
170
+ return formatted;
171
+ }
172
+ }
173
+ }
174
+ catch {
175
+ // keep walking owner chain on symbolication failures
176
+ }
177
+ return null;
178
+ }));
179
+ const frames = [];
180
+ for (const frame of perOwnerFrames) {
181
+ if (!frame)
182
+ continue;
183
+ frames.push(frame);
184
+ if (frames.length >= maxStackLines) {
185
+ break;
186
+ }
187
+ }
188
+ return dedupeConsecutiveFrames(frames).slice(0, maxStackLines);
189
+ };
190
+ const extractPrimitiveNameFromDisplayName = (displayName) => {
191
+ if (!displayName)
192
+ return null;
193
+ if (REACT_NATIVE_PRIMITIVE_NAMES.has(displayName)) {
194
+ return displayName;
195
+ }
196
+ const wrappedMatch = /^(ForwardRef|Memo)\((.+)\)$/.exec(displayName);
197
+ if (!wrappedMatch)
198
+ return null;
199
+ const inner = sanitizeLine(wrappedMatch[2], 80);
200
+ if (!inner)
201
+ return null;
202
+ return REACT_NATIVE_PRIMITIVE_NAMES.has(inner) ? inner : null;
203
+ };
204
+ const getReactNativePrimitiveFromFiberChain = (fiber) => {
205
+ let cursor = fiber;
206
+ let depth = 0;
207
+ while (cursor && depth < MAX_OWNER_DEPTH) {
208
+ const displayName = getDisplayNameForFiber(cursor);
209
+ const primitiveName = extractPrimitiveNameFromDisplayName(displayName);
210
+ if (primitiveName)
211
+ return primitiveName;
212
+ cursor = cursor.return ?? null;
213
+ depth += 1;
214
+ }
215
+ return null;
216
+ };
217
+ const resolveTagName = (node, overrideTagName) => {
218
+ if (overrideTagName) {
219
+ const normalizedOverride = sanitizeLine(overrideTagName, 50);
220
+ if (normalizedOverride)
221
+ return normalizedOverride;
222
+ }
223
+ const raw = sanitizeLine(node.tagName ?? '', 50);
224
+ if (!raw)
225
+ return 'View';
226
+ return raw;
227
+ };
228
+ const extractTextPreview = (props, maxPreviewText) => {
229
+ if (!props || !('children' in props))
230
+ return '';
231
+ const children = props.children;
232
+ if (typeof children === 'string' || typeof children === 'number') {
233
+ return truncate(String(children).replace(/\s+/g, ' ').trim(), maxPreviewText);
234
+ }
235
+ if (Array.isArray(children)) {
236
+ const joined = children
237
+ .filter((item) => typeof item === 'string' || typeof item === 'number')
238
+ .map((item) => String(item))
239
+ .join(' ')
240
+ .replace(/\s+/g, ' ')
241
+ .trim();
242
+ if (!joined)
243
+ return '';
244
+ return truncate(joined, maxPreviewText);
245
+ }
246
+ return '';
247
+ };
248
+ const buildAttributePreview = (props) => {
249
+ if (!props)
250
+ return '';
251
+ const attributes = [];
252
+ const pairs = [
253
+ ['testID', 'testID'],
254
+ ['accessibilityLabel', 'accessibilityLabel'],
255
+ ['id', 'id'],
256
+ ['className', 'className'],
257
+ ];
258
+ for (const [propKey, attrName] of pairs) {
259
+ const value = props[propKey];
260
+ if (typeof value === 'string' || typeof value === 'number') {
261
+ attributes.push(`${attrName}="${escapeAttribute(value)}"`);
262
+ }
263
+ }
264
+ return attributes.length > 0 ? ` ${attributes.join(' ')}` : '';
265
+ };
266
+ export const buildElementPreview = (node, maxPreviewText, overrideTagName) => {
267
+ const tagName = resolveTagName(node, overrideTagName);
268
+ const props = getMemoizedProps(node);
269
+ const attrs = buildAttributePreview(props);
270
+ const text = extractTextPreview(props, maxPreviewText);
271
+ const hasChildren = (node.children?.length ?? 0) > 0;
272
+ if (text) {
273
+ return `<${tagName}${attrs}>\n ${escapeAttribute(text)}\n</${tagName}>`;
274
+ }
275
+ if (hasChildren) {
276
+ return `<${tagName}${attrs}>\n ...\n</${tagName}>`;
277
+ }
278
+ return `<${tagName}${attrs} />`;
279
+ };
280
+ const formatStackLine = (frame) => {
281
+ let fileRef = frame.filePath;
282
+ if (frame.line != null) {
283
+ fileRef += `:${frame.line}`;
284
+ if (frame.column != null) {
285
+ fileRef += `:${frame.column}`;
286
+ }
287
+ }
288
+ if (frame.componentName) {
289
+ return `in ${frame.componentName} (at ${fileRef})`;
290
+ }
291
+ return `in ${fileRef}`;
292
+ };
293
+ const composePayloadText = (payload) => {
294
+ const lines = [payload.mention, '', payload.preview, ...payload.stackLines];
295
+ return lines.join('\n').trim();
296
+ };
297
+ const getDefaultPathRootHint = () => {
298
+ const processValue = globalThis.process;
299
+ if (!processValue || typeof processValue.cwd !== 'function') {
300
+ return null;
301
+ }
302
+ try {
303
+ return processValue.cwd();
304
+ }
305
+ catch {
306
+ return null;
307
+ }
308
+ };
309
+ export const buildInspectorContextPayload = async (hitTarget, options = {}) => {
310
+ const maxStackLines = Math.max(0, options.maxStackLines ?? 3);
311
+ const maxPreviewText = Math.max(16, options.maxPreviewText ?? 120);
312
+ const pathRootHint = options.pathRootHint ?? getDefaultPathRootHint();
313
+ const symbolicateStack = options.symbolicateStack ?? symbolicate;
314
+ const fiber = toFiberNode(hitTarget.node);
315
+ const sourceFrames = await extractSourceFramesFromFiberChain(fiber, maxStackLines, symbolicateStack, pathRootHint);
316
+ const primitiveName = getReactNativePrimitiveFromFiberChain(fiber);
317
+ const stackLines = sourceFrames.map(formatStackLine);
318
+ const resolvedName = sourceFrames[0]?.componentName || resolveTagName(hitTarget.node);
319
+ const mention = `@<${resolvedName}>`;
320
+ const preview = buildElementPreview(hitTarget.node, maxPreviewText, primitiveName);
321
+ const plainText = truncate(composePayloadText({ mention, preview, stackLines, plainText: '' }), MAX_CLIPBOARD_LEN);
322
+ return {
323
+ mention,
324
+ preview,
325
+ stackLines,
326
+ plainText,
327
+ };
328
+ };
329
+ export const buildInspectorCopyPayload = async (hitTarget, options = {}) => {
330
+ const payload = await buildInspectorContextPayload(hitTarget, options);
331
+ return payload.plainText;
332
+ };
333
+ //# sourceMappingURL=copy-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-payload.js","sourceRoot":"","sources":["../../../src/react-native/copy-payload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ import DebuggingOverlayRegistry from 'react-native/Libraries/Debugging/DebuggingOverlayRegistry';
2
+ import { getMemoizedProps, hasFiberNodeInInternalInstanceHandle, } from './fiber';
3
+ import { getPointerEventsMode, isNodeDisplayed, } from './pointer-events';
4
+ import { getChildrenInHitTestOrder } from './z-index';
5
+ const key = Object.getOwnPropertyNames(DebuggingOverlayRegistry).find(key => key.endsWith('findLowestParentFromRegistryForInstance'));
6
+ const findLowestParentFromRegistryForInstance = DebuggingOverlayRegistry[key].bind(DebuggingOverlayRegistry);
7
+ const getRoot = (anchorRef) => {
8
+ const anchor = anchorRef.current;
9
+ return anchor?.ownerDocument?.documentElement ?? null;
10
+ };
11
+ const buildSkipSet = (skipRefs) => {
12
+ return new Set(skipRefs
13
+ .map((r) => r.current)
14
+ .filter((n) => n != null));
15
+ };
16
+ const MISS_RESULT = { kind: 'miss' };
17
+ const hasPointInBounds = (rect, x, y) => {
18
+ if (rect.width <= 0 || rect.height <= 0) {
19
+ return false;
20
+ }
21
+ return (x >= rect.x &&
22
+ x <= rect.x + rect.width &&
23
+ y >= rect.y &&
24
+ y <= rect.y + rect.height);
25
+ };
26
+ const hitResult = (node, rect) => ({
27
+ kind: 'hit',
28
+ node,
29
+ rect,
30
+ });
31
+ export const getElementHighlightRect = (element, rootViewInstance) => {
32
+ const { x, y, width, height } = element.getBoundingClientRect();
33
+ const { x: parentX, y: parentY } = rootViewInstance.getBoundingClientRect();
34
+ return {
35
+ x: x + parentX,
36
+ y: y + parentY,
37
+ width,
38
+ height,
39
+ };
40
+ };
41
+ const getEffectiveRect = (node) => {
42
+ const lowestParent = findLowestParentFromRegistryForInstance(node);
43
+ if (!lowestParent) {
44
+ return { x: 0, y: 0, width: 0, height: 0 };
45
+ }
46
+ return getElementHighlightRect(node, lowestParent.rootViewRef.current);
47
+ };
48
+ const toFiniteNumber = (value) => {
49
+ if (typeof value === 'number' && Number.isFinite(value)) {
50
+ return value;
51
+ }
52
+ if (typeof value === 'string') {
53
+ const parsed = Number(value);
54
+ if (Number.isFinite(parsed)) {
55
+ return parsed;
56
+ }
57
+ }
58
+ return null;
59
+ };
60
+ const getRNSScreenActivityState = (node) => {
61
+ if (node.tagName !== 'RN:RNSScreen') {
62
+ return null;
63
+ }
64
+ const props = getMemoizedProps(node);
65
+ return toFiniteNumber(props?.activityState);
66
+ };
67
+ const getTraversalPolicy = (node, rect, x, y, skipSet, skipPredicate) => {
68
+ if (skipSet.has(node)) {
69
+ return null;
70
+ }
71
+ if (skipPredicate?.(node)) {
72
+ return null;
73
+ }
74
+ const rnsScreenActivityState = getRNSScreenActivityState(node);
75
+ if (rnsScreenActivityState !== null && rnsScreenActivityState !== 2) {
76
+ return null;
77
+ }
78
+ if (!hasPointInBounds(rect, x, y)) {
79
+ return {
80
+ allowSelfHit: false,
81
+ allowChildTraversal: true,
82
+ };
83
+ }
84
+ if (!isNodeDisplayed(node)) {
85
+ return null;
86
+ }
87
+ const pointerEvents = getPointerEventsMode(node);
88
+ if (pointerEvents === 'none') {
89
+ return null;
90
+ }
91
+ const hasFiberNode = hasFiberNodeInInternalInstanceHandle(node);
92
+ if (!hasFiberNode) {
93
+ return {
94
+ allowSelfHit: false,
95
+ allowChildTraversal: true,
96
+ };
97
+ }
98
+ if (pointerEvents === 'box-only') {
99
+ return {
100
+ allowSelfHit: true,
101
+ allowChildTraversal: false,
102
+ };
103
+ }
104
+ if (pointerEvents === 'box-none') {
105
+ return {
106
+ allowSelfHit: false,
107
+ allowChildTraversal: true,
108
+ };
109
+ }
110
+ return {
111
+ allowSelfHit: true,
112
+ allowChildTraversal: true,
113
+ };
114
+ };
115
+ const findFirstChildHit = (node, context, x, y, skipSet, skipPredicate) => {
116
+ const childContext = {
117
+ ...context,
118
+ ancestorChain: [...context.ancestorChain, node],
119
+ };
120
+ const orderedChildren = getChildrenInHitTestOrder(node);
121
+ for (let i = orderedChildren.length - 1; i >= 0; i--) {
122
+ const child = orderedChildren[i];
123
+ const childResult = findDeepestNode(child, childContext, x, y, skipSet, skipPredicate);
124
+ if (childResult.kind === 'hit') {
125
+ return childResult;
126
+ }
127
+ }
128
+ return MISS_RESULT;
129
+ };
130
+ const findDeepestNode = (node, context, x, y, skipSet, skipPredicate) => {
131
+ const originalRect = getEffectiveRect(node);
132
+ const currentYOffset = Number(context.traversalState.yOffset ?? 0);
133
+ const rect = {
134
+ x: originalRect.x,
135
+ y: originalRect.y + currentYOffset,
136
+ width: originalRect.width,
137
+ height: originalRect.height,
138
+ yOffset: currentYOffset,
139
+ };
140
+ context.effectiveRectCache.set(node, rect);
141
+ const policy = getTraversalPolicy(node, rect, x, y, skipSet, skipPredicate);
142
+ if (!policy) {
143
+ return MISS_RESULT;
144
+ }
145
+ const contextForChildren = { ...context };
146
+ if (node.tagName === 'RN:RNSSafeAreaView') {
147
+ const safeAreaParent = context.ancestorChain[context.ancestorChain.length - 1] ?? node.parentElement ?? null;
148
+ if (safeAreaParent) {
149
+ const safeAreaParentRect = context.effectiveRectCache.get(safeAreaParent) ?? getEffectiveRect(safeAreaParent);
150
+ if (safeAreaParentRect && rect.height >= 0 && safeAreaParentRect.height >= 0) {
151
+ const heightDelta = rect.height - safeAreaParentRect.height;
152
+ contextForChildren.traversalState = {
153
+ ...context.traversalState,
154
+ yOffset: Number(context.traversalState.yOffset ?? 0) + heightDelta,
155
+ };
156
+ }
157
+ }
158
+ }
159
+ if (node.tagName === 'RN:RNSModalScreen') {
160
+ contextForChildren.traversalState = {
161
+ ...context.traversalState,
162
+ // Magic number - not sure why it's 8, but it is :shrug:
163
+ yOffset: Number(context.traversalState.yOffset ?? 0) - 8,
164
+ };
165
+ }
166
+ const childrenResult = policy.allowChildTraversal
167
+ ? findFirstChildHit(node, contextForChildren, x, y, skipSet, skipPredicate)
168
+ : MISS_RESULT;
169
+ if (childrenResult.kind === 'hit') {
170
+ return childrenResult;
171
+ }
172
+ if (!policy.allowSelfHit) {
173
+ return MISS_RESULT;
174
+ }
175
+ return hitResult(node, rect);
176
+ };
177
+ export const findHitTargetAtPoint = (anchorRef, skipRefs, x, y, skipPredicate = () => false, offset) => {
178
+ const root = getRoot(anchorRef);
179
+ if (!root) {
180
+ return null;
181
+ }
182
+ const skipSet = buildSkipSet(skipRefs);
183
+ const result = findDeepestNode(root, {
184
+ ancestorChain: [],
185
+ effectiveRectCache: new WeakMap(),
186
+ traversalState: {
187
+ yOffset: offset,
188
+ },
189
+ }, x, y, skipSet, skipPredicate);
190
+ if (result.kind !== 'hit') {
191
+ return null;
192
+ }
193
+ return {
194
+ rect: result.rect,
195
+ node: result.node,
196
+ };
197
+ };
198
+ export const findElementAtPoint = (anchorRef, skipRefs, x, y, skipPredicate) => {
199
+ return (findHitTargetAtPoint(anchorRef, skipRefs, x, y, skipPredicate, 0)?.rect ?? null);
200
+ };
201
+ //# sourceMappingURL=dom-traversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-traversal.js","sourceRoot":"","sources":["../../../src/react-native/dom-traversal.ts"],"names":[],"mappings":"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"}