execbro 2.7.0 → 2.7.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.
- package/build/__tests__/unit/deviceResolver.test.js +2 -0
- package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -1
- package/build/__tests__/unit/measureComponentResolution.test.d.ts +2 -0
- package/build/__tests__/unit/measureComponentResolution.test.d.ts.map +1 -0
- package/build/__tests__/unit/measureComponentResolution.test.js +111 -0
- package/build/__tests__/unit/measureComponentResolution.test.js.map +1 -0
- package/build/__tests__/unit/metroIdentity.test.d.ts +2 -0
- package/build/__tests__/unit/metroIdentity.test.d.ts.map +1 -0
- package/build/__tests__/unit/metroIdentity.test.js +41 -0
- package/build/__tests__/unit/metroIdentity.test.js.map +1 -0
- package/build/__tests__/unit/screenState.test.js +63 -2
- package/build/__tests__/unit/screenState.test.js.map +1 -1
- package/build/__tests__/unit/swipeDiagnosis.test.d.ts +2 -0
- package/build/__tests__/unit/swipeDiagnosis.test.d.ts.map +1 -0
- package/build/__tests__/unit/swipeDiagnosis.test.js +47 -0
- package/build/__tests__/unit/swipeDiagnosis.test.js.map +1 -0
- package/build/__tests__/unit/swipeDirection.test.js +30 -0
- package/build/__tests__/unit/swipeDirection.test.js.map +1 -1
- package/build/core/androidForeground.d.ts +4 -0
- package/build/core/androidForeground.d.ts.map +1 -0
- package/build/core/androidForeground.js +34 -0
- package/build/core/androidForeground.js.map +1 -0
- package/build/core/androidSystemBars.d.ts +1 -1
- package/build/core/androidSystemBars.d.ts.map +1 -1
- package/build/core/androidSystemBars.js +2 -2
- package/build/core/androidSystemBars.js.map +1 -1
- package/build/core/connection.d.ts +6 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +45 -0
- package/build/core/connection.js.map +1 -1
- package/build/core/deviceResolver.d.ts.map +1 -1
- package/build/core/deviceResolver.js +7 -1
- package/build/core/deviceResolver.js.map +1 -1
- package/build/core/measureComponent.d.ts.map +1 -1
- package/build/core/measureComponent.js +45 -11
- package/build/core/measureComponent.js.map +1 -1
- package/build/core/metroIdentity.d.ts +8 -0
- package/build/core/metroIdentity.d.ts.map +1 -0
- package/build/core/metroIdentity.js +65 -0
- package/build/core/metroIdentity.js.map +1 -0
- package/build/core/screenSpaceDevice.d.ts +5 -0
- package/build/core/screenSpaceDevice.d.ts.map +1 -1
- package/build/core/screenSpaceDevice.js +18 -0
- package/build/core/screenSpaceDevice.js.map +1 -1
- package/build/core/screenState.d.ts +8 -0
- package/build/core/screenState.d.ts.map +1 -1
- package/build/core/screenState.js +245 -32
- package/build/core/screenState.js.map +1 -1
- package/build/core/swipeDiagnosis.d.ts +17 -0
- package/build/core/swipeDiagnosis.d.ts.map +1 -0
- package/build/core/swipeDiagnosis.js +179 -0
- package/build/core/swipeDiagnosis.js.map +1 -0
- package/build/index.js +15 -0
- package/build/index.js.map +1 -1
- package/build/pro/tap.d.ts +6 -1
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +12 -3
- package/build/pro/tap.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +12 -4
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.d.ts.map +1 -1
- package/build/tools/connectionTools.js +18 -0
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +50 -11
- package/build/tools/interactionTools.js.map +1 -1
- package/package.json +1 -1
- package/tools.json +1 -0
|
@@ -45,21 +45,50 @@ export function buildMeasureComponentExpression(componentName, index) {
|
|
|
45
45
|
const pub = sn.canonical.publicInstance;
|
|
46
46
|
return { instance: pub, nativeTag: pub.__nativeTag };
|
|
47
47
|
}
|
|
48
|
+
// Fabric shadow-node handle: no public instance on the fiber, but the UIManager can
|
|
49
|
+
// measure the node directly. Without this branch a plain RCTView is invisible to the
|
|
50
|
+
// search, so it walked past every one of them and picked whatever deep descendant
|
|
51
|
+
// happened to expose a public instance — on RN 0.83 that was an RNGestureHandlerButton
|
|
52
|
+
// inside the first tab, which made measure("ShopHeader") and measure("SubTabBar")
|
|
53
|
+
// return byte-identical frames and the same nativeTag. Same branch screenState and
|
|
54
|
+
// componentSource already carry; measure was the one that never got it.
|
|
55
|
+
const node = sn.node || (sn.canonical && sn.canonical.node);
|
|
56
|
+
if (node && globalThis.nativeFabricUIManager && typeof globalThis.nativeFabricUIManager.measureInWindow === "function") {
|
|
57
|
+
// The tag lives on the canonical record here, not on a public instance.
|
|
58
|
+
const canonicalTag = sn.canonical && typeof sn.canonical.nativeTag === "number"
|
|
59
|
+
? sn.canonical.nativeTag
|
|
60
|
+
: undefined;
|
|
61
|
+
return {
|
|
62
|
+
instance: {
|
|
63
|
+
measureInWindow: (cb) => {
|
|
64
|
+
try { globalThis.nativeFabricUIManager.measureInWindow(node, cb); } catch (e) {}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
nativeTag: canonicalTag
|
|
68
|
+
};
|
|
69
|
+
}
|
|
48
70
|
return null;
|
|
49
71
|
};
|
|
50
72
|
|
|
51
73
|
let target = getMeasurable(matched);
|
|
52
74
|
if (!target) {
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
75
|
+
// Breadth-first, so the SHALLOWEST measurable host wins.
|
|
76
|
+
//
|
|
77
|
+
// The previous descent was pre-order depth-first, which follows one spine to the leaf
|
|
78
|
+
// before trying the next branch. With a getMeasurable that can miss, that turns a near
|
|
79
|
+
// miss into a wildly wrong answer: the component's own container is skipped and some
|
|
80
|
+
// small leaf several levels down is measured and reported under the component's name.
|
|
81
|
+
// Breadth-first cannot do that — it exhausts a whole depth before descending.
|
|
82
|
+
const enqueueChain = (start, q) => { let n = start; while (n) { q.push(n); n = n.sibling; } };
|
|
83
|
+
const queue = [];
|
|
84
|
+
enqueueChain(matched.child, queue);
|
|
85
|
+
let guard = 0;
|
|
86
|
+
while (queue.length > 0 && !target && guard++ < 20000) {
|
|
87
|
+
const f = queue.shift();
|
|
88
|
+
const m = getMeasurable(f);
|
|
89
|
+
if (m) { target = m; break; }
|
|
90
|
+
enqueueChain(f.child, queue);
|
|
91
|
+
}
|
|
63
92
|
}
|
|
64
93
|
|
|
65
94
|
if (!target) {
|
|
@@ -68,9 +97,14 @@ export function buildMeasureComponentExpression(componentName, index) {
|
|
|
68
97
|
}
|
|
69
98
|
|
|
70
99
|
let done = false;
|
|
100
|
+
// Held so the loser can be cancelled. Without this the 1.5s timer stays armed in the
|
|
101
|
+
// app's runtime after every successful measure — harmless, but it is a timer per call
|
|
102
|
+
// that exists only to be ignored.
|
|
103
|
+
let timeoutId = null;
|
|
71
104
|
target.instance.measureInWindow((x, y, width, height) => {
|
|
72
105
|
if (done) return;
|
|
73
106
|
done = true;
|
|
107
|
+
if (timeoutId !== null) { try { clearTimeout(timeoutId); } catch (e) {} }
|
|
74
108
|
resolve({
|
|
75
109
|
outcome: "measured",
|
|
76
110
|
x: x,
|
|
@@ -81,7 +115,7 @@ export function buildMeasureComponentExpression(componentName, index) {
|
|
|
81
115
|
nativeTag: typeof target.nativeTag === "number" ? target.nativeTag : undefined,
|
|
82
116
|
});
|
|
83
117
|
});
|
|
84
|
-
setTimeout(() => {
|
|
118
|
+
timeoutId = setTimeout(() => {
|
|
85
119
|
if (done) return;
|
|
86
120
|
done = true;
|
|
87
121
|
resolve({ outcome: "timeout", error: "measureInWindow timed out (1500ms)" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measureComponent.js","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,+BAA+B,CAAC,aAAqB,EAAE,KAAa;IAChF,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO;;;;;;;;;;;;0BAYe,WAAW;0BACX,SAAS
|
|
1
|
+
{"version":3,"file":"measureComponent.js","sourceRoot":"","sources":["../../src/core/measureComponent.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,+BAA+B,CAAC,aAAqB,EAAE,KAAa;IAChF,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO;;;;;;;;;;;;0BAYe,WAAW;0BACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6GhC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function readListenerPid(port: number): Promise<string | null>;
|
|
2
|
+
export declare function metroProcessChanged(port: number): Promise<boolean>;
|
|
3
|
+
export declare function markBundlePossiblyStale(deviceName: string, reason: string): void;
|
|
4
|
+
export declare function clearBundleStale(deviceName?: string): void;
|
|
5
|
+
export declare function bundleStaleWarning(deviceName?: string): string | null;
|
|
6
|
+
export declare function staleBundleMessage(deviceName: string): string;
|
|
7
|
+
export declare function resetMetroIdentity(): void;
|
|
8
|
+
//# sourceMappingURL=metroIdentity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metroIdentity.d.ts","sourceRoot":"","sources":["../../src/core/metroIdentity.ts"],"names":[],"mappings":"AAiCA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAY1E;AAQD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMxE;AAGD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGhF;AAMD,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAc1D;AASD,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYrE;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7D;AAGD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { execFileAsync } from "./exec.js";
|
|
2
|
+
const metroPidByPort = new Map();
|
|
3
|
+
const staleBundleDevices = new Map();
|
|
4
|
+
export async function readListenerPid(port) {
|
|
5
|
+
try {
|
|
6
|
+
const { stdout } = await execFileAsync("lsof", ["-nP", `-iTCP:${port}`, "-sTCP:LISTEN", "-t"], { timeout: 3000 });
|
|
7
|
+
const pid = stdout.split("\n").map((l) => l.trim()).filter(Boolean)[0];
|
|
8
|
+
return pid || null;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export async function metroProcessChanged(port) {
|
|
15
|
+
const pid = await readListenerPid(port);
|
|
16
|
+
if (!pid)
|
|
17
|
+
return false;
|
|
18
|
+
const previous = metroPidByPort.get(port);
|
|
19
|
+
metroPidByPort.set(port, pid);
|
|
20
|
+
return previous !== undefined && previous !== pid;
|
|
21
|
+
}
|
|
22
|
+
export function markBundlePossiblyStale(deviceName, reason) {
|
|
23
|
+
const key = (deviceName || "").trim();
|
|
24
|
+
if (key)
|
|
25
|
+
staleBundleDevices.set(key, reason);
|
|
26
|
+
}
|
|
27
|
+
export function clearBundleStale(deviceName) {
|
|
28
|
+
if (!deviceName) {
|
|
29
|
+
staleBundleDevices.clear();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const key = deviceName.trim();
|
|
33
|
+
staleBundleDevices.delete(key);
|
|
34
|
+
for (const known of [...staleBundleDevices.keys()]) {
|
|
35
|
+
if (known.toLowerCase().includes(key.toLowerCase()) || key.toLowerCase().includes(known.toLowerCase())) {
|
|
36
|
+
staleBundleDevices.delete(known);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function bundleStaleWarning(deviceName) {
|
|
41
|
+
if (staleBundleDevices.size === 0)
|
|
42
|
+
return null;
|
|
43
|
+
if (!deviceName) {
|
|
44
|
+
const [first] = staleBundleDevices.values();
|
|
45
|
+
return first ?? null;
|
|
46
|
+
}
|
|
47
|
+
const needle = deviceName.trim().toLowerCase();
|
|
48
|
+
for (const [known, reason] of staleBundleDevices.entries()) {
|
|
49
|
+
const k = known.toLowerCase();
|
|
50
|
+
if (k.includes(needle) || needle.includes(k))
|
|
51
|
+
return reason;
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
export function staleBundleMessage(deviceName) {
|
|
56
|
+
return (`⚠️ STALE BUNDLE RISK on "${deviceName}": Metro was restarted (different process) since this device last attached. ` +
|
|
57
|
+
`Fast Refresh history is discontinuous — any edit made while Metro was down was never sent to the app, and reconnecting ` +
|
|
58
|
+
`does not reconcile it. The app may still be running the OLD code, so behaviour that contradicts your edit is not evidence ` +
|
|
59
|
+
`the edit is wrong. Run reload_app to be certain, or get_refresh_status to see when the app last accepted an update.`);
|
|
60
|
+
}
|
|
61
|
+
export function resetMetroIdentity() {
|
|
62
|
+
metroPidByPort.clear();
|
|
63
|
+
staleBundleDevices.clear();
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=metroIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metroIdentity.js","sourceRoot":"","sources":["../../src/core/metroIdentity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { ScreenSpaceMetrics } from "./screenSpace.js";
|
|
2
|
+
export declare function resolveDeliveredScaleFactor(opts: {
|
|
3
|
+
platform: "ios" | "android";
|
|
4
|
+
udid?: string;
|
|
5
|
+
deviceId?: string;
|
|
6
|
+
}): Promise<number | undefined>;
|
|
2
7
|
export declare function resolveScreenSpaceMetrics(opts: {
|
|
3
8
|
platform: "ios" | "android";
|
|
4
9
|
udid?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenSpaceDevice.d.ts","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"screenSpaceDevice.d.ts","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AA6C3D,wBAAsB,2BAA2B,CAAC,IAAI,EAAE;IACpD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB9B;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAE5B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiC9B"}
|
|
@@ -8,6 +8,24 @@ function pixelScaleFrom(deviceScale, pixelSize) {
|
|
|
8
8
|
return undefined;
|
|
9
9
|
return deviceScale / computeDeliveredDownscale(pixelSize.width, pixelSize.height);
|
|
10
10
|
}
|
|
11
|
+
export async function resolveDeliveredScaleFactor(opts) {
|
|
12
|
+
try {
|
|
13
|
+
const pixelSize = opts.platform === "ios"
|
|
14
|
+
? await getIOSScreenPixelSize(opts.udid).catch(() => null)
|
|
15
|
+
: await androidGetScreenSize(opts.deviceId)
|
|
16
|
+
.then((s) => (s && s.success && s.width && s.height ? { width: s.width, height: s.height } : null))
|
|
17
|
+
.catch(() => null);
|
|
18
|
+
if (!pixelSize)
|
|
19
|
+
return undefined;
|
|
20
|
+
const downscale = computeDeliveredDownscale(pixelSize.width, pixelSize.height);
|
|
21
|
+
if (!downscale || downscale <= 0)
|
|
22
|
+
return undefined;
|
|
23
|
+
return downscale;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
11
29
|
export async function resolveScreenSpaceMetrics(opts) {
|
|
12
30
|
if (opts.platform === "ios") {
|
|
13
31
|
const [inset, dpr, pixelSize] = await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenSpaceDevice.js","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EACH,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACvB,MAAM,cAAc,CAAC;AAGtB,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAazC,SAAS,cAAc,CACnB,WAA0B,EAC1B,SAAmD;IAEnD,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAM/C;IACG,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAG1B,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YAChD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SACrD,CAAC,CAAC;QACH,OAAO;YACH,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK,IAAI,yBAAyB;YAC5C,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC;SAC7C,CAAC;IACN,CAAC;IACD,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAClD,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACxD,CAAC,CAAC;IAGH,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC9D,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG;QACvB,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;QAC/D,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QAC5C,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACH,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,6BAA6B;QAC5E,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;KACtD,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"screenSpaceDevice.js","sourceRoot":"","sources":["../../src/core/screenSpaceDevice.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export interface ScreenStatePressable {
|
|
|
21
21
|
nearbyText?: string | null;
|
|
22
22
|
blockedByOverlay?: boolean;
|
|
23
23
|
onPressHint?: string | null;
|
|
24
|
+
transformNote?: string | null;
|
|
24
25
|
}
|
|
25
26
|
export interface ScreenStateText {
|
|
26
27
|
text: string;
|
|
@@ -35,6 +36,7 @@ export interface ScreenStateText {
|
|
|
35
36
|
height: number;
|
|
36
37
|
};
|
|
37
38
|
blockedByOverlay?: boolean;
|
|
39
|
+
transformNote?: string | null;
|
|
38
40
|
}
|
|
39
41
|
export interface ScreenStateImage {
|
|
40
42
|
src?: string | null;
|
|
@@ -50,6 +52,7 @@ export interface ScreenStateImage {
|
|
|
50
52
|
height: number;
|
|
51
53
|
};
|
|
52
54
|
blockedByOverlay?: boolean;
|
|
55
|
+
transformNote?: string | null;
|
|
53
56
|
}
|
|
54
57
|
export interface ScreenStateOverlay {
|
|
55
58
|
type: "BottomSheet" | "Modal" | "Alert" | "ActionSheet" | "Unknown";
|
|
@@ -123,9 +126,14 @@ export declare function partitionByKeyboard<T extends {
|
|
|
123
126
|
blocked: T[];
|
|
124
127
|
};
|
|
125
128
|
export declare function formatInputState(p: ScreenStatePressable): string;
|
|
129
|
+
export declare function formatRouteParams(params: Record<string, unknown> | null | undefined, fullParams: boolean): string | null;
|
|
130
|
+
export declare function formatTransformTag(el: {
|
|
131
|
+
transformNote?: string | null;
|
|
132
|
+
}): string;
|
|
126
133
|
export declare function formatScreenStateSummary(ss: ScreenState, convert?: ItemCoordConverter, opts?: {
|
|
127
134
|
pressablesOnly?: boolean;
|
|
128
135
|
fullText?: boolean;
|
|
136
|
+
fullParams?: boolean;
|
|
129
137
|
keyboard?: KeyboardState;
|
|
130
138
|
pixelScale?: number;
|
|
131
139
|
}): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenState.d.ts","sourceRoot":"","sources":["../../src/core/screenState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAM1D,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,OAAO,CAAC,EAAE,OAAO,CAAC;IAMlB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"screenState.d.ts","sourceRoot":"","sources":["../../src/core/screenState.ts"],"names":[],"mappings":"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"}
|