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,210 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.findElementAtPoint = exports.findHitTargetAtPoint = exports.getElementHighlightRect = void 0;
7
+ const DebuggingOverlayRegistry_1 = __importDefault(require("react-native/Libraries/Debugging/DebuggingOverlayRegistry"));
8
+ const fiber_1 = require("./fiber");
9
+ const pointer_events_1 = require("./pointer-events");
10
+ const z_index_1 = require("./z-index");
11
+ const key = Object.getOwnPropertyNames(DebuggingOverlayRegistry_1.default).find(key => key.endsWith('findLowestParentFromRegistryForInstance'));
12
+ const findLowestParentFromRegistryForInstance = DebuggingOverlayRegistry_1.default[key].bind(DebuggingOverlayRegistry_1.default);
13
+ const getRoot = (anchorRef) => {
14
+ const anchor = anchorRef.current;
15
+ return anchor?.ownerDocument?.documentElement ?? null;
16
+ };
17
+ const buildSkipSet = (skipRefs) => {
18
+ return new Set(skipRefs
19
+ .map((r) => r.current)
20
+ .filter((n) => n != null));
21
+ };
22
+ const MISS_RESULT = { kind: 'miss' };
23
+ const hasPointInBounds = (rect, x, y) => {
24
+ if (rect.width <= 0 || rect.height <= 0) {
25
+ return false;
26
+ }
27
+ return (x >= rect.x &&
28
+ x <= rect.x + rect.width &&
29
+ y >= rect.y &&
30
+ y <= rect.y + rect.height);
31
+ };
32
+ const hitResult = (node, rect) => ({
33
+ kind: 'hit',
34
+ node,
35
+ rect,
36
+ });
37
+ const getElementHighlightRect = (element, rootViewInstance) => {
38
+ const { x, y, width, height } = element.getBoundingClientRect();
39
+ const { x: parentX, y: parentY } = rootViewInstance.getBoundingClientRect();
40
+ return {
41
+ x: x + parentX,
42
+ y: y + parentY,
43
+ width,
44
+ height,
45
+ };
46
+ };
47
+ exports.getElementHighlightRect = getElementHighlightRect;
48
+ const getEffectiveRect = (node) => {
49
+ const lowestParent = findLowestParentFromRegistryForInstance(node);
50
+ if (!lowestParent) {
51
+ return { x: 0, y: 0, width: 0, height: 0 };
52
+ }
53
+ return (0, exports.getElementHighlightRect)(node, lowestParent.rootViewRef.current);
54
+ };
55
+ const toFiniteNumber = (value) => {
56
+ if (typeof value === 'number' && Number.isFinite(value)) {
57
+ return value;
58
+ }
59
+ if (typeof value === 'string') {
60
+ const parsed = Number(value);
61
+ if (Number.isFinite(parsed)) {
62
+ return parsed;
63
+ }
64
+ }
65
+ return null;
66
+ };
67
+ const getRNSScreenActivityState = (node) => {
68
+ if (node.tagName !== 'RN:RNSScreen') {
69
+ return null;
70
+ }
71
+ const props = (0, fiber_1.getMemoizedProps)(node);
72
+ return toFiniteNumber(props?.activityState);
73
+ };
74
+ const getTraversalPolicy = (node, rect, x, y, skipSet, skipPredicate) => {
75
+ if (skipSet.has(node)) {
76
+ return null;
77
+ }
78
+ if (skipPredicate?.(node)) {
79
+ return null;
80
+ }
81
+ const rnsScreenActivityState = getRNSScreenActivityState(node);
82
+ if (rnsScreenActivityState !== null && rnsScreenActivityState !== 2) {
83
+ return null;
84
+ }
85
+ if (!hasPointInBounds(rect, x, y)) {
86
+ return {
87
+ allowSelfHit: false,
88
+ allowChildTraversal: true,
89
+ };
90
+ }
91
+ if (!(0, pointer_events_1.isNodeDisplayed)(node)) {
92
+ return null;
93
+ }
94
+ const pointerEvents = (0, pointer_events_1.getPointerEventsMode)(node);
95
+ if (pointerEvents === 'none') {
96
+ return null;
97
+ }
98
+ const hasFiberNode = (0, fiber_1.hasFiberNodeInInternalInstanceHandle)(node);
99
+ if (!hasFiberNode) {
100
+ return {
101
+ allowSelfHit: false,
102
+ allowChildTraversal: true,
103
+ };
104
+ }
105
+ if (pointerEvents === 'box-only') {
106
+ return {
107
+ allowSelfHit: true,
108
+ allowChildTraversal: false,
109
+ };
110
+ }
111
+ if (pointerEvents === 'box-none') {
112
+ return {
113
+ allowSelfHit: false,
114
+ allowChildTraversal: true,
115
+ };
116
+ }
117
+ return {
118
+ allowSelfHit: true,
119
+ allowChildTraversal: true,
120
+ };
121
+ };
122
+ const findFirstChildHit = (node, context, x, y, skipSet, skipPredicate) => {
123
+ const childContext = {
124
+ ...context,
125
+ ancestorChain: [...context.ancestorChain, node],
126
+ };
127
+ const orderedChildren = (0, z_index_1.getChildrenInHitTestOrder)(node);
128
+ for (let i = orderedChildren.length - 1; i >= 0; i--) {
129
+ const child = orderedChildren[i];
130
+ const childResult = findDeepestNode(child, childContext, x, y, skipSet, skipPredicate);
131
+ if (childResult.kind === 'hit') {
132
+ return childResult;
133
+ }
134
+ }
135
+ return MISS_RESULT;
136
+ };
137
+ const findDeepestNode = (node, context, x, y, skipSet, skipPredicate) => {
138
+ const originalRect = getEffectiveRect(node);
139
+ const currentYOffset = Number(context.traversalState.yOffset ?? 0);
140
+ const rect = {
141
+ x: originalRect.x,
142
+ y: originalRect.y + currentYOffset,
143
+ width: originalRect.width,
144
+ height: originalRect.height,
145
+ yOffset: currentYOffset,
146
+ };
147
+ context.effectiveRectCache.set(node, rect);
148
+ const policy = getTraversalPolicy(node, rect, x, y, skipSet, skipPredicate);
149
+ if (!policy) {
150
+ return MISS_RESULT;
151
+ }
152
+ const contextForChildren = { ...context };
153
+ if (node.tagName === 'RN:RNSSafeAreaView') {
154
+ const safeAreaParent = context.ancestorChain[context.ancestorChain.length - 1] ?? node.parentElement ?? null;
155
+ if (safeAreaParent) {
156
+ const safeAreaParentRect = context.effectiveRectCache.get(safeAreaParent) ?? getEffectiveRect(safeAreaParent);
157
+ if (safeAreaParentRect && rect.height >= 0 && safeAreaParentRect.height >= 0) {
158
+ const heightDelta = rect.height - safeAreaParentRect.height;
159
+ contextForChildren.traversalState = {
160
+ ...context.traversalState,
161
+ yOffset: Number(context.traversalState.yOffset ?? 0) + heightDelta,
162
+ };
163
+ }
164
+ }
165
+ }
166
+ if (node.tagName === 'RN:RNSModalScreen') {
167
+ contextForChildren.traversalState = {
168
+ ...context.traversalState,
169
+ // Magic number - not sure why it's 8, but it is :shrug:
170
+ yOffset: Number(context.traversalState.yOffset ?? 0) - 8,
171
+ };
172
+ }
173
+ const childrenResult = policy.allowChildTraversal
174
+ ? findFirstChildHit(node, contextForChildren, x, y, skipSet, skipPredicate)
175
+ : MISS_RESULT;
176
+ if (childrenResult.kind === 'hit') {
177
+ return childrenResult;
178
+ }
179
+ if (!policy.allowSelfHit) {
180
+ return MISS_RESULT;
181
+ }
182
+ return hitResult(node, rect);
183
+ };
184
+ const findHitTargetAtPoint = (anchorRef, skipRefs, x, y, skipPredicate = () => false, offset) => {
185
+ const root = getRoot(anchorRef);
186
+ if (!root) {
187
+ return null;
188
+ }
189
+ const skipSet = buildSkipSet(skipRefs);
190
+ const result = findDeepestNode(root, {
191
+ ancestorChain: [],
192
+ effectiveRectCache: new WeakMap(),
193
+ traversalState: {
194
+ yOffset: offset,
195
+ },
196
+ }, x, y, skipSet, skipPredicate);
197
+ if (result.kind !== 'hit') {
198
+ return null;
199
+ }
200
+ return {
201
+ rect: result.rect,
202
+ node: result.node,
203
+ };
204
+ };
205
+ exports.findHitTargetAtPoint = findHitTargetAtPoint;
206
+ const findElementAtPoint = (anchorRef, skipRefs, x, y, skipPredicate) => {
207
+ return ((0, exports.findHitTargetAtPoint)(anchorRef, skipRefs, x, y, skipPredicate, 0)?.rect ?? null);
208
+ };
209
+ exports.findElementAtPoint = findElementAtPoint;
210
+ //# 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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"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNormalizedStyle = exports.getDisplayNameForFiber = exports.getMemoizedProps = exports.hasFiberNodeInInternalInstanceHandle = exports.getFiberNodeFromInternalInstanceHandle = exports.getInternalInstanceHandle = void 0;
4
+ const react_native_1 = require("react-native");
5
+ const FORWARD_REF_SYMBOL = Symbol.for('react.forward_ref');
6
+ const MEMO_SYMBOL = Symbol.for('react.memo');
7
+ const FUNCTION_COMPONENT_TAG = 0;
8
+ const CLASS_COMPONENT_TAG = 1;
9
+ const HOST_ROOT_TAG = 3;
10
+ const HOST_COMPONENT_TAG = 5;
11
+ const HOST_TEXT_TAG = 6;
12
+ const FRAGMENT_TAG = 7;
13
+ const PROFILER_TAG = 12;
14
+ const SUSPENSE_TAG = 13;
15
+ const FORWARD_REF_TAG = 11;
16
+ const MEMO_COMPONENT_TAG = 14;
17
+ const SIMPLE_MEMO_COMPONENT_TAG = 15;
18
+ const SUSPENSE_LIST_TAG = 19;
19
+ const isRecord = (value) => {
20
+ return typeof value === 'object' && value !== null;
21
+ };
22
+ const getInternalInstanceHandle = (node) => {
23
+ const handle = node
24
+ .__internalInstanceHandle;
25
+ if (!isRecord(handle))
26
+ return null;
27
+ return handle;
28
+ };
29
+ exports.getInternalInstanceHandle = getInternalInstanceHandle;
30
+ const isFiberNodeHandle = (handle) => {
31
+ return (typeof handle.tag === 'number' ||
32
+ handle.return != null ||
33
+ handle.type != null ||
34
+ handle.elementType != null ||
35
+ handle.memoizedProps !== undefined);
36
+ };
37
+ const getFiberNodeFromInternalInstanceHandle = (node) => {
38
+ const handle = (0, exports.getInternalInstanceHandle)(node);
39
+ if (!handle)
40
+ return null;
41
+ return isFiberNodeHandle(handle) ? handle : null;
42
+ };
43
+ exports.getFiberNodeFromInternalInstanceHandle = getFiberNodeFromInternalInstanceHandle;
44
+ const hasFiberNodeInInternalInstanceHandle = (node) => {
45
+ return (0, exports.getFiberNodeFromInternalInstanceHandle)(node) != null;
46
+ };
47
+ exports.hasFiberNodeInInternalInstanceHandle = hasFiberNodeInInternalInstanceHandle;
48
+ const getMemoizedProps = (node) => {
49
+ // memoizedProps sometimes includes out-of-date values
50
+ return (0, exports.getFiberNodeFromInternalInstanceHandle)(node)?.stateNode?.canonical?.currentProps;
51
+ };
52
+ exports.getMemoizedProps = getMemoizedProps;
53
+ const getDisplayName = (type) => {
54
+ if (typeof type === 'function') {
55
+ const value = type;
56
+ if (typeof value.displayName === 'string' && value.displayName) {
57
+ return value.displayName;
58
+ }
59
+ if (typeof value.name === 'string' && value.name) {
60
+ return value.name;
61
+ }
62
+ return null;
63
+ }
64
+ if (typeof type === 'string' && type) {
65
+ return type;
66
+ }
67
+ return null;
68
+ };
69
+ const getTypeSymbol = (type) => {
70
+ if (!isRecord(type))
71
+ return null;
72
+ return type.$$typeof;
73
+ };
74
+ const resolveFiberType = (type) => {
75
+ const typeSymbol = getTypeSymbol(type);
76
+ if (typeSymbol === MEMO_SYMBOL && isRecord(type)) {
77
+ return resolveFiberType(type.type);
78
+ }
79
+ if (typeSymbol === FORWARD_REF_SYMBOL && isRecord(type)) {
80
+ return type.render;
81
+ }
82
+ return type;
83
+ };
84
+ const getWrappedDisplayName = (outerType, innerType, wrapperName, fallbackName) => {
85
+ if (isRecord(outerType) && typeof outerType.displayName === 'string') {
86
+ return outerType.displayName || fallbackName;
87
+ }
88
+ const innerName = getDisplayName(innerType);
89
+ if (innerName) {
90
+ return `${wrapperName}(${innerName})`;
91
+ }
92
+ return fallbackName;
93
+ };
94
+ const getDisplayNameForFiber = (fiber) => {
95
+ if (!isRecord(fiber))
96
+ return null;
97
+ const tag = fiber.tag;
98
+ const type = fiber.type;
99
+ const elementType = fiber.elementType;
100
+ let resolvedType = type;
101
+ if (isRecord(type)) {
102
+ resolvedType = resolveFiberType(type);
103
+ }
104
+ switch (tag) {
105
+ case CLASS_COMPONENT_TAG:
106
+ case FUNCTION_COMPONENT_TAG:
107
+ return getDisplayName(resolvedType);
108
+ case FORWARD_REF_TAG:
109
+ return getWrappedDisplayName(elementType, resolvedType, 'ForwardRef', 'Anonymous');
110
+ case HOST_ROOT_TAG:
111
+ return null;
112
+ case HOST_COMPONENT_TAG:
113
+ return typeof type === 'string' ? type : null;
114
+ case HOST_TEXT_TAG:
115
+ return null;
116
+ case FRAGMENT_TAG:
117
+ return 'Fragment';
118
+ case MEMO_COMPONENT_TAG:
119
+ case SIMPLE_MEMO_COMPONENT_TAG:
120
+ return getWrappedDisplayName(elementType, resolvedType, 'Memo', 'Anonymous');
121
+ case SUSPENSE_TAG:
122
+ return 'Suspense';
123
+ case SUSPENSE_LIST_TAG:
124
+ return 'SuspenseList';
125
+ case PROFILER_TAG:
126
+ return 'Profiler';
127
+ default:
128
+ return getDisplayName(resolvedType);
129
+ }
130
+ };
131
+ exports.getDisplayNameForFiber = getDisplayNameForFiber;
132
+ const getNormalizedStyle = (node) => {
133
+ const props = (0, exports.getMemoizedProps)(node);
134
+ if (!props)
135
+ return undefined;
136
+ const flattened = react_native_1.StyleSheet.flatten(props.style);
137
+ if (!isRecord(flattened))
138
+ return undefined;
139
+ return flattened;
140
+ };
141
+ exports.getNormalizedStyle = getNormalizedStyle;
142
+ //# sourceMappingURL=fiber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiber.js","sourceRoot":"","sources":["../../../src/react-native/fiber.ts"],"names":[],"mappings":"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"}