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.
- package/README.md +92 -0
- package/dist/cjs/metro/index.js +6 -0
- package/dist/cjs/metro/index.js.map +1 -0
- package/dist/cjs/metro/withReactNativeGrab.js +180 -0
- package/dist/cjs/metro/withReactNativeGrab.js.map +1 -0
- package/dist/cjs/react-native/copy-payload.js +340 -0
- package/dist/cjs/react-native/copy-payload.js.map +1 -0
- package/dist/cjs/react-native/dom-traversal.js +210 -0
- package/dist/cjs/react-native/dom-traversal.js.map +1 -0
- package/dist/cjs/react-native/fiber.js +142 -0
- package/dist/cjs/react-native/fiber.js.map +1 -0
- package/dist/cjs/react-native/index.js +452 -0
- package/dist/cjs/react-native/index.js.map +1 -0
- package/dist/cjs/react-native/pointer-events.js +117 -0
- package/dist/cjs/react-native/pointer-events.js.map +1 -0
- package/dist/cjs/react-native/selection-trigger.js +19 -0
- package/dist/cjs/react-native/selection-trigger.js.map +1 -0
- package/dist/cjs/react-native/settings.js +101 -0
- package/dist/cjs/react-native/settings.js.map +1 -0
- package/dist/cjs/react-native/symbolicate.js +15 -0
- package/dist/cjs/react-native/symbolicate.js.map +1 -0
- package/dist/cjs/react-native/types.js +7 -0
- package/dist/cjs/react-native/types.js.map +1 -0
- package/dist/cjs/react-native/z-index.js +47 -0
- package/dist/cjs/react-native/z-index.js.map +1 -0
- package/dist/esm/metro/index.js +2 -0
- package/dist/esm/metro/index.js.map +1 -0
- package/dist/esm/metro/withReactNativeGrab.js +177 -0
- package/dist/esm/metro/withReactNativeGrab.js.map +1 -0
- package/dist/esm/react-native/copy-payload.js +333 -0
- package/dist/esm/react-native/copy-payload.js.map +1 -0
- package/dist/esm/react-native/dom-traversal.js +201 -0
- package/dist/esm/react-native/dom-traversal.js.map +1 -0
- package/dist/esm/react-native/fiber.js +133 -0
- package/dist/esm/react-native/fiber.js.map +1 -0
- package/dist/esm/react-native/index.js +445 -0
- package/dist/esm/react-native/index.js.map +1 -0
- package/dist/esm/react-native/pointer-events.js +109 -0
- package/dist/esm/react-native/pointer-events.js.map +1 -0
- package/dist/esm/react-native/selection-trigger.js +14 -0
- package/dist/esm/react-native/selection-trigger.js.map +1 -0
- package/dist/esm/react-native/settings.js +91 -0
- package/dist/esm/react-native/settings.js.map +1 -0
- package/dist/esm/react-native/symbolicate.js +8 -0
- package/dist/esm/react-native/symbolicate.js.map +1 -0
- package/dist/esm/react-native/types.js +6 -0
- package/dist/esm/react-native/types.js.map +1 -0
- package/dist/esm/react-native/z-index.js +43 -0
- package/dist/esm/react-native/z-index.js.map +1 -0
- package/dist/types/metro/index.d.ts +2 -0
- package/dist/types/metro/index.d.ts.map +1 -0
- package/dist/types/metro/withReactNativeGrab.d.ts +2 -0
- package/dist/types/metro/withReactNativeGrab.d.ts.map +1 -0
- package/dist/types/react-native/copy-payload.d.ts +22 -0
- package/dist/types/react-native/copy-payload.d.ts.map +1 -0
- package/dist/types/react-native/dom-traversal.d.ts +8 -0
- package/dist/types/react-native/dom-traversal.d.ts.map +1 -0
- package/dist/types/react-native/fiber.d.ts +22 -0
- package/dist/types/react-native/fiber.d.ts.map +1 -0
- package/dist/types/react-native/index.d.ts +2 -0
- package/dist/types/react-native/index.d.ts.map +1 -0
- package/dist/types/react-native/pointer-events.d.ts +13 -0
- package/dist/types/react-native/pointer-events.d.ts.map +1 -0
- package/dist/types/react-native/selection-trigger.d.ts +3 -0
- package/dist/types/react-native/selection-trigger.d.ts.map +1 -0
- package/dist/types/react-native/settings.d.ts +8 -0
- package/dist/types/react-native/settings.d.ts.map +1 -0
- package/dist/types/react-native/symbolicate.d.ts +3 -0
- package/dist/types/react-native/symbolicate.d.ts.map +1 -0
- package/dist/types/react-native/types.d.ts +53 -0
- package/dist/types/react-native/types.d.ts.map +1 -0
- package/dist/types/react-native/z-index.d.ts +3 -0
- package/dist/types/react-native/z-index.d.ts.map +1 -0
- package/package.json +62 -8
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { getMemoizedProps, getNormalizedStyle } from './fiber';
|
|
2
|
+
const isPointerEvents = (value) => {
|
|
3
|
+
return (value === 'auto' ||
|
|
4
|
+
value === 'box-none' ||
|
|
5
|
+
value === 'box-only' ||
|
|
6
|
+
value === 'none');
|
|
7
|
+
};
|
|
8
|
+
const isDisplay = (value) => {
|
|
9
|
+
return value === 'none' || value === 'flex';
|
|
10
|
+
};
|
|
11
|
+
const isFunction = (value) => {
|
|
12
|
+
return typeof value === 'function';
|
|
13
|
+
};
|
|
14
|
+
export const getPointerEventsMode = (node) => {
|
|
15
|
+
const props = getMemoizedProps(node);
|
|
16
|
+
const fromProps = props?.pointerEvents;
|
|
17
|
+
if (isPointerEvents(fromProps)) {
|
|
18
|
+
return fromProps;
|
|
19
|
+
}
|
|
20
|
+
const style = getNormalizedStyle(node);
|
|
21
|
+
const fromStyle = style?.pointerEvents;
|
|
22
|
+
if (isPointerEvents(fromStyle)) {
|
|
23
|
+
return fromStyle;
|
|
24
|
+
}
|
|
25
|
+
return 'auto';
|
|
26
|
+
};
|
|
27
|
+
export const isNodeDisplayed = (node) => {
|
|
28
|
+
const style = getNormalizedStyle(node);
|
|
29
|
+
const display = style?.display;
|
|
30
|
+
if (!isDisplay(display)) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return display !== 'none';
|
|
34
|
+
};
|
|
35
|
+
const RESPONDER_HANDLER_NAMES = [
|
|
36
|
+
'onStartShouldSetResponder',
|
|
37
|
+
'onResponderGrant',
|
|
38
|
+
'onResponderMove',
|
|
39
|
+
'onResponderRelease',
|
|
40
|
+
'onResponderTerminate',
|
|
41
|
+
'onResponderTerminationRequest',
|
|
42
|
+
'onPress',
|
|
43
|
+
'onClick',
|
|
44
|
+
];
|
|
45
|
+
const INTERACTIVE_ROLES = new Set([
|
|
46
|
+
'button',
|
|
47
|
+
'link',
|
|
48
|
+
'tab',
|
|
49
|
+
'checkbox',
|
|
50
|
+
'switch',
|
|
51
|
+
'radio',
|
|
52
|
+
'menuitem',
|
|
53
|
+
'option',
|
|
54
|
+
]);
|
|
55
|
+
export const isNodeExplicitlyInteractive = (node) => {
|
|
56
|
+
const props = getMemoizedProps(node);
|
|
57
|
+
if (!props)
|
|
58
|
+
return false;
|
|
59
|
+
if (props.accessible === true || props.focusable === true) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
const role = props.role;
|
|
63
|
+
if (typeof role === 'string' && INTERACTIVE_ROLES.has(role)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
return RESPONDER_HANDLER_NAMES.some((name) => {
|
|
67
|
+
return isFunction(props[name]);
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
export const getNodeInteractivity = (node) => {
|
|
71
|
+
if (!isNodeDisplayed(node)) {
|
|
72
|
+
return {
|
|
73
|
+
isInteractive: false,
|
|
74
|
+
allowSelfHit: false,
|
|
75
|
+
allowChildHit: false,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const pointerEvents = getPointerEventsMode(node);
|
|
79
|
+
if (pointerEvents === 'none') {
|
|
80
|
+
return {
|
|
81
|
+
isInteractive: false,
|
|
82
|
+
allowSelfHit: false,
|
|
83
|
+
allowChildHit: false,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (pointerEvents === 'box-only') {
|
|
87
|
+
return {
|
|
88
|
+
isInteractive: true,
|
|
89
|
+
allowSelfHit: true,
|
|
90
|
+
allowChildHit: false,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (pointerEvents === 'box-none') {
|
|
94
|
+
return {
|
|
95
|
+
isInteractive: true,
|
|
96
|
+
allowSelfHit: false,
|
|
97
|
+
allowChildHit: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
isInteractive: true,
|
|
102
|
+
allowSelfHit: true,
|
|
103
|
+
allowChildHit: true,
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
export const isNodeInteractive = (node) => {
|
|
107
|
+
return getNodeInteractivity(node).isInteractive;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=pointer-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer-events.js","sourceRoot":"","sources":["../../../src/react-native/pointer-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const listeners = new Set();
|
|
2
|
+
export const requestInspectorSelection = () => {
|
|
3
|
+
console.log('[InspectorFeedback] Selection requested from Dev Menu');
|
|
4
|
+
for (const listener of listeners) {
|
|
5
|
+
listener();
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
export const subscribeInspectorSelectionRequest = (listener) => {
|
|
9
|
+
listeners.add(listener);
|
|
10
|
+
return () => {
|
|
11
|
+
listeners.delete(listener);
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=selection-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-trigger.js","sourceRoot":"","sources":["../../../src/react-native/selection-trigger.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;AAExC,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,QAAQ,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,QAAoB,EAAE,EAAE;IACzE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import getDevServer from 'react-native/Libraries/Core/Devtools/getDevServer';
|
|
2
|
+
const INSPECTOR_SETTINGS_ENDPOINT = '/__react-native-grab/settings';
|
|
3
|
+
const DEFAULT_INSPECTOR_SETTINGS = {
|
|
4
|
+
selectionPillVisible: true,
|
|
5
|
+
};
|
|
6
|
+
let settings = { ...DEFAULT_INSPECTOR_SETTINGS };
|
|
7
|
+
let initPromise = null;
|
|
8
|
+
const listeners = new Set();
|
|
9
|
+
const getMetroBaseUrl = () => {
|
|
10
|
+
const devServer = getDevServer();
|
|
11
|
+
if (!devServer?.url)
|
|
12
|
+
return null;
|
|
13
|
+
return devServer.url.replace(/\/$/, '');
|
|
14
|
+
};
|
|
15
|
+
const emitChange = () => {
|
|
16
|
+
for (const listener of listeners) {
|
|
17
|
+
listener();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const mergeSettings = (nextSettings) => {
|
|
21
|
+
if (!nextSettings)
|
|
22
|
+
return;
|
|
23
|
+
const nextSelectionPillVisible = nextSettings.selectionPillVisible;
|
|
24
|
+
if (typeof nextSelectionPillVisible !== 'boolean')
|
|
25
|
+
return;
|
|
26
|
+
if (nextSelectionPillVisible === settings.selectionPillVisible)
|
|
27
|
+
return;
|
|
28
|
+
settings = {
|
|
29
|
+
...settings,
|
|
30
|
+
selectionPillVisible: nextSelectionPillVisible,
|
|
31
|
+
};
|
|
32
|
+
emitChange();
|
|
33
|
+
};
|
|
34
|
+
export const getInspectorSettings = () => settings;
|
|
35
|
+
export const subscribeInspectorSettings = (listener) => {
|
|
36
|
+
listeners.add(listener);
|
|
37
|
+
return () => {
|
|
38
|
+
listeners.delete(listener);
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export const initializeInspectorSettings = async () => {
|
|
42
|
+
if (initPromise) {
|
|
43
|
+
await initPromise;
|
|
44
|
+
return settings;
|
|
45
|
+
}
|
|
46
|
+
initPromise = (async () => {
|
|
47
|
+
const baseUrl = getMetroBaseUrl();
|
|
48
|
+
if (!baseUrl)
|
|
49
|
+
return;
|
|
50
|
+
try {
|
|
51
|
+
const response = await fetch(`${baseUrl}${INSPECTOR_SETTINGS_ENDPOINT}`);
|
|
52
|
+
if (!response.ok)
|
|
53
|
+
return;
|
|
54
|
+
const payload = (await response.json());
|
|
55
|
+
mergeSettings(payload?.settings);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Keep defaults if Metro settings endpoint is unavailable.
|
|
59
|
+
}
|
|
60
|
+
})();
|
|
61
|
+
try {
|
|
62
|
+
await initPromise;
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
initPromise = null;
|
|
66
|
+
}
|
|
67
|
+
return settings;
|
|
68
|
+
};
|
|
69
|
+
export const updateInspectorSettings = async (patch) => {
|
|
70
|
+
const baseUrl = getMetroBaseUrl();
|
|
71
|
+
if (!baseUrl)
|
|
72
|
+
return settings;
|
|
73
|
+
try {
|
|
74
|
+
const response = await fetch(`${baseUrl}${INSPECTOR_SETTINGS_ENDPOINT}`, {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
headers: {
|
|
77
|
+
'Content-Type': 'application/json',
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify(patch),
|
|
80
|
+
});
|
|
81
|
+
if (!response.ok)
|
|
82
|
+
return settings;
|
|
83
|
+
const payload = (await response.json());
|
|
84
|
+
mergeSettings(payload?.settings);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Keep existing state if persistence is unavailable.
|
|
88
|
+
}
|
|
89
|
+
return settings;
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/react-native/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import parseErrorStack from 'react-native/Libraries/Core/Devtools/parseErrorStack';
|
|
2
|
+
import symbolicateStackTrace from 'react-native/Libraries/Core/Devtools/symbolicateStackTrace';
|
|
3
|
+
export const symbolicate = async (error) => {
|
|
4
|
+
const parsedStack = parseErrorStack(error.stack);
|
|
5
|
+
const symbolicatedStack = await symbolicateStackTrace(parsedStack);
|
|
6
|
+
return symbolicatedStack;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=symbolicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolicate.js","sourceRoot":"","sources":["../../../src/react-native/symbolicate.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,sDAAsD,CAAC;AACnF,OAAO,qBAAiD,MAAM,4DAA4D,CAAC;AAG3H,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,KAAY,EAAmC,EAAE;IAClF,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACnE,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/react-native/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getMemoizedProps, getNormalizedStyle } from './fiber';
|
|
2
|
+
const toNumber = (value) => {
|
|
3
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
4
|
+
return value;
|
|
5
|
+
}
|
|
6
|
+
if (typeof value === 'string') {
|
|
7
|
+
const parsed = Number(value);
|
|
8
|
+
if (Number.isFinite(parsed)) {
|
|
9
|
+
return parsed;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return undefined;
|
|
13
|
+
};
|
|
14
|
+
const getNodeZIndex = (node) => {
|
|
15
|
+
const props = getMemoizedProps(node);
|
|
16
|
+
const zIndexFromProps = toNumber(props?.zIndex);
|
|
17
|
+
if (zIndexFromProps != null) {
|
|
18
|
+
return zIndexFromProps;
|
|
19
|
+
}
|
|
20
|
+
const style = getNormalizedStyle(node);
|
|
21
|
+
const zIndexFromStyle = toNumber(style?.zIndex);
|
|
22
|
+
if (zIndexFromStyle != null) {
|
|
23
|
+
return zIndexFromStyle;
|
|
24
|
+
}
|
|
25
|
+
return 0;
|
|
26
|
+
};
|
|
27
|
+
export const getChildrenInHitTestOrder = (node) => {
|
|
28
|
+
const children = Array.from(node.children ?? []);
|
|
29
|
+
return children
|
|
30
|
+
.map((child, index) => ({
|
|
31
|
+
child,
|
|
32
|
+
index,
|
|
33
|
+
zIndex: getNodeZIndex(child),
|
|
34
|
+
}))
|
|
35
|
+
.sort((a, b) => {
|
|
36
|
+
if (a.zIndex !== b.zIndex) {
|
|
37
|
+
return a.zIndex - b.zIndex;
|
|
38
|
+
}
|
|
39
|
+
return a.index - b.index;
|
|
40
|
+
})
|
|
41
|
+
.map(({ child }) => child);
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=z-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"z-index.js","sourceRoot":"","sources":["../../../src/react-native/z-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG/D,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAsB,EAAE;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAgB,EAAU,EAAE;IACjD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAgB,EAAgB,EAAE;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,KAAK;QACL,KAAK;QACL,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;KAC7B,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAC3B,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metro/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withReactNativeGrab.d.ts","sourceRoot":"","sources":["../../../src/metro/withReactNativeGrab.ts"],"names":[],"mappings":"AAuOA,eAAO,MAAM,mBAAmB,4JAsB/B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DOMElement, InspectorContextPayload, InspectorHitTarget } from './types';
|
|
2
|
+
type SymbolicatedFrame = {
|
|
3
|
+
file?: string | null;
|
|
4
|
+
methodName?: string | null;
|
|
5
|
+
lineNumber?: number | null;
|
|
6
|
+
column?: number | null;
|
|
7
|
+
collapse?: boolean | null;
|
|
8
|
+
};
|
|
9
|
+
type BuildInspectorCopyPayloadOptions = {
|
|
10
|
+
maxStackLines?: number;
|
|
11
|
+
maxPreviewText?: number;
|
|
12
|
+
pathRootHint?: string | null;
|
|
13
|
+
symbolicateStack?: (error: Error) => Promise<{
|
|
14
|
+
stack: readonly SymbolicatedFrame[];
|
|
15
|
+
}>;
|
|
16
|
+
};
|
|
17
|
+
export declare const normalizeInspectorPath: (filePath: string, pathRootHint?: string | null) => string;
|
|
18
|
+
export declare const buildElementPreview: (node: DOMElement, maxPreviewText: number, overrideTagName?: string | null) => string;
|
|
19
|
+
export declare const buildInspectorContextPayload: (hitTarget: InspectorHitTarget, options?: BuildInspectorCopyPayloadOptions) => Promise<InspectorContextPayload>;
|
|
20
|
+
export declare const buildInspectorCopyPayload: (hitTarget: InspectorHitTarget, options?: BuildInspectorCopyPayloadOptions) => Promise<string>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=copy-payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-payload.d.ts","sourceRoot":"","sources":["../../../src/react-native/copy-payload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAqBjB,KAAK,iBAAiB,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC;AAUF,KAAK,gCAAgC,GAAG;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,KAAK,KACT,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAAC;CACvD,CAAC;AA+DF,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,eAAe,MAAM,GAAG,IAAI,KAC3B,MAqCF,CAAC;AAmMF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,UAAU,EAChB,gBAAgB,MAAM,EACtB,kBAAkB,MAAM,GAAG,IAAI,KAC9B,MAgBF,CAAC;AAmCF,eAAO,MAAM,4BAA4B,GACvC,WAAW,kBAAkB,EAC7B,UAAS,gCAAqC,KAC7C,OAAO,CAAC,uBAAuB,CAkCjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,WAAW,kBAAkB,EAC7B,UAAS,gCAAqC,KAC7C,OAAO,CAAC,MAAM,CAGhB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
import { type View } from 'react-native';
|
|
3
|
+
import type { DOMElement, DOMRect, InspectorHitTarget } from './types';
|
|
4
|
+
export type SkipPredicate = (node: DOMElement) => boolean;
|
|
5
|
+
export declare const getElementHighlightRect: (element: DOMElement, rootViewInstance: DOMElement) => DOMRect;
|
|
6
|
+
export declare const findHitTargetAtPoint: (anchorRef: RefObject<View | null>, skipRefs: RefObject<View | null>[], x: number, y: number, skipPredicate: SkipPredicate | undefined, offset: number) => InspectorHitTarget | null;
|
|
7
|
+
export declare const findElementAtPoint: (anchorRef: RefObject<View | null>, skipRefs: RefObject<View | null>[], x: number, y: number, skipPredicate?: SkipPredicate) => DOMRect | null;
|
|
8
|
+
//# sourceMappingURL=dom-traversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-traversal.d.ts","sourceRoot":"","sources":["../../../src/react-native/dom-traversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAUzC,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAMvE,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;AA6C1D,eAAO,MAAM,uBAAuB,GAClC,SAAS,UAAU,EACnB,kBAAkB,UAAU,KAC3B,OASF,CAAC;AAyLF,eAAO,MAAM,oBAAoB,GAC/B,WAAW,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,EACjC,UAAU,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAClC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,eAAe,aAAa,YAAc,EAC1C,QAAQ,MAAM,KACb,kBAAkB,GAAG,IA6BvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,EACjC,UAAU,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAClC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,gBAAgB,aAAa,mBAK9B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DOMElement } from './types';
|
|
2
|
+
type FiberProps = Record<string, unknown>;
|
|
3
|
+
export type InternalInstanceHandle = {
|
|
4
|
+
memoizedProps?: FiberProps;
|
|
5
|
+
return?: InternalInstanceHandle | null;
|
|
6
|
+
tag?: number;
|
|
7
|
+
type?: unknown;
|
|
8
|
+
elementType?: unknown;
|
|
9
|
+
stateNode?: {
|
|
10
|
+
canonical?: {
|
|
11
|
+
currentProps?: FiberProps;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export declare const getInternalInstanceHandle: (node: DOMElement) => InternalInstanceHandle | null;
|
|
16
|
+
export declare const getFiberNodeFromInternalInstanceHandle: (node: DOMElement) => InternalInstanceHandle | null;
|
|
17
|
+
export declare const hasFiberNodeInInternalInstanceHandle: (node: DOMElement) => boolean;
|
|
18
|
+
export declare const getMemoizedProps: (node: DOMElement) => FiberProps | undefined;
|
|
19
|
+
export declare const getDisplayNameForFiber: (fiber: unknown) => string | null;
|
|
20
|
+
export declare const getNormalizedStyle: (node: DOMElement) => Record<string, unknown> | undefined;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=fiber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber.d.ts","sourceRoot":"","sources":["../../../src/react-native/fiber.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,MAAM,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,SAAS,CAAC,EAAE;YACV,YAAY,CAAC,EAAE,UAAU,CAAC;SAC3B,CAAC;KACH,CAAC;CACH,CAAC;AAsBF,eAAO,MAAM,yBAAyB,GACpC,MAAM,UAAU,KACf,sBAAsB,GAAG,IAK3B,CAAC;AAcF,eAAO,MAAM,sCAAsC,GACjD,MAAM,UAAU,KACf,sBAAsB,GAAG,IAI3B,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAC/C,MAAM,UAAU,KACf,OAEF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,UAAU,KACf,UAAU,GAAG,SAGf,CAAC;AAuDF,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,IAgDhE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,UAAU,KACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAM5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react-native/index.tsx"],"names":[],"mappings":"AAiDA,eAAO,MAAM,gBAAgB,sDAM5B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DOMElement } from './types';
|
|
2
|
+
export type PointerEvents = 'auto' | 'box-none' | 'box-only' | 'none';
|
|
3
|
+
export declare const getPointerEventsMode: (node: DOMElement) => PointerEvents;
|
|
4
|
+
export declare const isNodeDisplayed: (node: DOMElement) => boolean;
|
|
5
|
+
export declare const isNodeExplicitlyInteractive: (node: DOMElement) => boolean;
|
|
6
|
+
export type NodeInteractivity = {
|
|
7
|
+
isInteractive: boolean;
|
|
8
|
+
allowSelfHit: boolean;
|
|
9
|
+
allowChildHit: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const getNodeInteractivity: (node: DOMElement) => NodeInteractivity;
|
|
12
|
+
export declare const isNodeInteractive: (node: DOMElement) => boolean;
|
|
13
|
+
//# sourceMappingURL=pointer-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer-events.d.ts","sourceRoot":"","sources":["../../../src/react-native/pointer-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAqBtE,eAAO,MAAM,oBAAoB,GAAI,MAAM,UAAU,KAAG,aAcvD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,UAAU,KAAG,OAQlD,CAAC;AAwBF,eAAO,MAAM,2BAA2B,GAAI,MAAM,UAAU,KAAG,OAgB9D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,UAAU,KAAG,iBAuCvD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,UAAU,KAAG,OAEpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-trigger.d.ts","sourceRoot":"","sources":["../../../src/react-native/selection-trigger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,YAKrC,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAAI,UAAU,MAAM,IAAI,eAKtE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type InspectorSettings = {
|
|
2
|
+
selectionPillVisible: boolean;
|
|
3
|
+
};
|
|
4
|
+
export declare const getInspectorSettings: () => InspectorSettings;
|
|
5
|
+
export declare const subscribeInspectorSettings: (listener: () => void) => () => void;
|
|
6
|
+
export declare const initializeInspectorSettings: () => Promise<InspectorSettings>;
|
|
7
|
+
export declare const updateInspectorSettings: (patch: Partial<InspectorSettings>) => Promise<InspectorSettings>;
|
|
8
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/react-native/settings.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAyCF,eAAO,MAAM,oBAAoB,QAAO,iBAA6B,CAAC;AAEtE,eAAO,MAAM,0BAA0B,GAAI,UAAU,MAAM,IAAI,eAK9D,CAAC;AAEF,eAAO,MAAM,2BAA2B,kCA4BvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,OAAO,OAAO,CAAC,iBAAiB,CAAC,+BAsBlC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolicate.d.ts","sourceRoot":"","sources":["../../../src/react-native/symbolicate.ts"],"names":[],"mappings":"AACA,OAA8B,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AAG3H,eAAO,MAAM,WAAW,GAAU,OAAO,KAAK,KAAG,OAAO,CAAC,sBAAsB,CAI9E,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the Touch-to-Find Element Inspector.
|
|
3
|
+
* Uses React Native's public Nodes API (see https://reactnative.dev/docs/nodes).
|
|
4
|
+
*/
|
|
5
|
+
export interface DOMRect {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Minimal interface for the Element node returned by refs.
|
|
13
|
+
* Matches React Native's public ReadOnlyElement / Element node API.
|
|
14
|
+
*/
|
|
15
|
+
export interface DOMElement {
|
|
16
|
+
getBoundingClientRect(): DOMRect;
|
|
17
|
+
children: Iterable<DOMElement> & {
|
|
18
|
+
length: number;
|
|
19
|
+
};
|
|
20
|
+
contains(node: DOMElement | null | undefined): boolean;
|
|
21
|
+
tagName?: string;
|
|
22
|
+
__internalInstanceHandle?: unknown;
|
|
23
|
+
ownerDocument?: {
|
|
24
|
+
documentElement: DOMElement;
|
|
25
|
+
};
|
|
26
|
+
childElementCount: number;
|
|
27
|
+
parentElement: DOMElement | null;
|
|
28
|
+
}
|
|
29
|
+
export interface InspectorHitTarget {
|
|
30
|
+
rect: DOMRect;
|
|
31
|
+
node: DOMElement;
|
|
32
|
+
}
|
|
33
|
+
export interface InspectorSourceFrame {
|
|
34
|
+
componentName: string | null;
|
|
35
|
+
filePath: string;
|
|
36
|
+
line: number | null;
|
|
37
|
+
column: number | null;
|
|
38
|
+
}
|
|
39
|
+
export interface InspectorContextPayload {
|
|
40
|
+
mention: string;
|
|
41
|
+
preview: string;
|
|
42
|
+
stackLines: string[];
|
|
43
|
+
plainText: string;
|
|
44
|
+
}
|
|
45
|
+
export type InspectorState = {
|
|
46
|
+
status: 'idle';
|
|
47
|
+
} | {
|
|
48
|
+
status: 'selecting';
|
|
49
|
+
} | {
|
|
50
|
+
status: 'copying';
|
|
51
|
+
selectedRect: DOMRect;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/react-native/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,qBAAqB,IAAI,OAAO,CAAC;IACjC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,aAAa,CAAC,EAAE;QACd,eAAe,EAAE,UAAU,CAAC;KAC7B,CAAC;IACF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IACA,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"z-index.d.ts","sourceRoot":"","sources":["../../../src/react-native/z-index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiC1C,eAAO,MAAM,yBAAyB,GAAI,MAAM,UAAU,KAAG,UAAU,EAetE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,66 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-grab",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "React Native touch-to-find inspector.",
|
|
5
|
+
"main": "./dist/cjs/react-native/index.js",
|
|
6
|
+
"module": "./dist/esm/react-native/index.js",
|
|
7
|
+
"react-native": "./dist/esm/react-native/index.js",
|
|
8
|
+
"types": "./dist/types/react-native/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/types/react-native/index.d.ts",
|
|
12
|
+
"react-native": "./dist/esm/react-native/index.js",
|
|
13
|
+
"import": "./dist/esm/react-native/index.js",
|
|
14
|
+
"require": "./dist/cjs/react-native/index.js",
|
|
15
|
+
"default": "./dist/esm/react-native/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./metro": {
|
|
18
|
+
"types": "./dist/types/metro/index.d.ts",
|
|
19
|
+
"import": "./dist/esm/metro/index.js",
|
|
20
|
+
"require": "./dist/cjs/metro/index.js",
|
|
21
|
+
"default": "./dist/esm/metro/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./package.json": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist"
|
|
27
|
+
],
|
|
9
28
|
"scripts": {
|
|
10
|
-
"
|
|
29
|
+
"clean": "rm -rf dist",
|
|
30
|
+
"build:esm": "tsc -p tsconfig.build.esm.json",
|
|
31
|
+
"build:cjs": "tsc -p tsconfig.build.cjs.json",
|
|
32
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs",
|
|
33
|
+
"format": "oxfmt .",
|
|
34
|
+
"format:check": "oxfmt --check ."
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"react-native",
|
|
38
|
+
"metro",
|
|
39
|
+
"inspector",
|
|
40
|
+
"devtools"
|
|
41
|
+
],
|
|
42
|
+
"author": "Szymon Chmal",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "https://github.com/callstackincubator/react-native-grab.git"
|
|
46
|
+
},
|
|
47
|
+
"homepage": "https://github.com/callstackincubator/react-native-grab",
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/callstackincubator/react-native-grab/issues"
|
|
50
|
+
},
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"metro-config-transformers": "latest"
|
|
54
|
+
},
|
|
55
|
+
"peerDependencies": {
|
|
56
|
+
"react": ">=19",
|
|
57
|
+
"react-native": ">=0.82",
|
|
58
|
+
"react-native-screens": "*"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "latest",
|
|
62
|
+
"@types/react": "latest",
|
|
63
|
+
"oxfmt": "latest",
|
|
64
|
+
"typescript": "latest"
|
|
11
65
|
}
|
|
12
|
-
}
|
|
66
|
+
}
|