@abbox/inspector 0.4.12 → 0.4.13
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/dist/host/client-bridge.d.ts.map +1 -1
- package/dist/host/client-bridge.js +3 -0
- package/dist/host/host-bridge.d.ts +1 -0
- package/dist/host/host-bridge.d.ts.map +1 -1
- package/dist/host/host-bridge.js +3 -0
- package/dist/protocol.d.ts +6 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/bootstrap.js +4 -3
- package/dist/runtime/inspector.d.ts +1 -0
- package/dist/runtime/inspector.d.ts.map +1 -1
- package/dist/runtime/inspector.js +142 -56
- package/dist/runtime/metadata.d.ts.map +1 -1
- package/dist/runtime/metadata.js +3 -1
- package/dist/runtime/overlay.js +3 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-bridge.d.ts","sourceRoot":"","sources":["../../src/host/client-bridge.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,
|
|
1
|
+
{"version":3,"file":"client-bridge.d.ts","sourceRoot":"","sources":["../../src/host/client-bridge.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CA4EjB"}
|
|
@@ -41,6 +41,9 @@ export function createInspectorClient(options) {
|
|
|
41
41
|
onChangeMarkerSelected: (changeId) => {
|
|
42
42
|
send({ ...base(), type: "CHANGE_MARKER_SELECTED", changeId });
|
|
43
43
|
},
|
|
44
|
+
onRouteChange: (path) => {
|
|
45
|
+
send({ ...base(), type: "ROUTE_CHANGED", path });
|
|
46
|
+
},
|
|
44
47
|
});
|
|
45
48
|
const onMessage = (event) => {
|
|
46
49
|
const msg = validateIncomingMessage(event.data, event.origin, {
|
|
@@ -19,6 +19,7 @@ export type InspectorHostHandlers = {
|
|
|
19
19
|
onSelect?: (payload: SelectPayload) => void;
|
|
20
20
|
onCleared?: () => void;
|
|
21
21
|
onChangeMarkerSelected?: (changeId: string) => void;
|
|
22
|
+
onRouteChange?: (path: string) => void;
|
|
22
23
|
onError?: (code: string, message: string) => void;
|
|
23
24
|
};
|
|
24
25
|
export type InspectorHost = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../src/host/host-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAGzB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,CACzB,mBAAmB,EACnB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAC5B,CAAC,SAAS,CAAC,CAAC;AACb,KAAK,aAAa,GAAG,OAAO,CAC1B,mBAAmB,EACnB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAC7B,CAAC,SAAS,CAAC,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,kBAAkB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACtD,0EAA0E;IAC1E,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,qBAAqB,GAC9B,aAAa,
|
|
1
|
+
{"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../src/host/host-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAGzB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,CACzB,mBAAmB,EACnB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAC5B,CAAC,SAAS,CAAC,CAAC;AACb,KAAK,aAAa,GAAG,OAAO,CAC1B,mBAAmB,EACnB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAC7B,CAAC,SAAS,CAAC,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,kBAAkB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACtD,0EAA0E;IAC1E,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,qBAAqB,GAC9B,aAAa,CAkEf"}
|
package/dist/host/host-bridge.js
CHANGED
|
@@ -35,6 +35,9 @@ export function createInspectorHost(options, handlers) {
|
|
|
35
35
|
if (msg.type === "CHANGE_MARKER_SELECTED") {
|
|
36
36
|
handlers.onChangeMarkerSelected?.(msg.changeId);
|
|
37
37
|
}
|
|
38
|
+
if (msg.type === "ROUTE_CHANGED") {
|
|
39
|
+
handlers.onRouteChange?.(msg.path);
|
|
40
|
+
}
|
|
38
41
|
if (msg.type === "INSPECTOR_ERROR") {
|
|
39
42
|
handlers.onError?.(msg.code, msg.message);
|
|
40
43
|
}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -109,12 +109,17 @@ export type ChangeMarkerSelectedMessage = InspectorMessageBase & {
|
|
|
109
109
|
type: "CHANGE_MARKER_SELECTED";
|
|
110
110
|
changeId: string;
|
|
111
111
|
};
|
|
112
|
+
/** The preview navigated (client-side or full load) to a new path. */
|
|
113
|
+
export type RouteChangedMessage = InspectorMessageBase & {
|
|
114
|
+
type: "ROUTE_CHANGED";
|
|
115
|
+
path: string;
|
|
116
|
+
};
|
|
112
117
|
export type ApplyChangeMarkersMessage = InspectorMessageBase & {
|
|
113
118
|
type: "APPLY_CHANGE_MARKERS";
|
|
114
119
|
markers: ChangeMarker[];
|
|
115
120
|
};
|
|
116
121
|
export type HostToClientMessage = InspectorEnableMessage | InspectorDisableMessage | InspectorHostHelloMessage | ApplyChangeMarkersMessage;
|
|
117
|
-
export type ClientToHostMessage = InspectorReadyMessage | ElementHoveredMessage | ElementSelectedMessage | ElementClearedMessage | ChangeMarkerSelectedMessage | InspectorErrorMessage;
|
|
122
|
+
export type ClientToHostMessage = InspectorReadyMessage | ElementHoveredMessage | ElementSelectedMessage | ElementClearedMessage | ChangeMarkerSelectedMessage | RouteChangedMessage | InspectorErrorMessage;
|
|
118
123
|
export type InspectorMessage = HostToClientMessage | ClientToHostMessage;
|
|
119
124
|
export declare function isInspectorMessage(value: unknown): value is InspectorMessage;
|
|
120
125
|
//# sourceMappingURL=protocol.d.ts.map
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/runtime/bootstrap.ts"],"names":[],"mappings":"AAuCA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD,CAAC;AA8CF;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gBAAqB,GAC7B,IAAI,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/runtime/bootstrap.ts"],"names":[],"mappings":"AAuCA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD,CAAC;AA8CF;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gBAAqB,GAC7B,IAAI,CAkDN;AAED,4CAA4C;AAC5C,wBAAgB,+BAA+B,IAAI,IAAI,CAMtD"}
|
|
@@ -75,9 +75,10 @@ export function bootstrapInspectorPreview(options = {}) {
|
|
|
75
75
|
// In Next.js 13+ RSC, window.location.search may be empty. Fallback to passed searchParams.
|
|
76
76
|
let params;
|
|
77
77
|
if (options.searchParams) {
|
|
78
|
-
params =
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
params =
|
|
79
|
+
options.searchParams instanceof URLSearchParams
|
|
80
|
+
? options.searchParams
|
|
81
|
+
: new URLSearchParams(options.searchParams);
|
|
81
82
|
}
|
|
82
83
|
else {
|
|
83
84
|
params = new URLSearchParams(win.location.search);
|
|
@@ -6,6 +6,7 @@ export type InspectorRuntimeOptions = {
|
|
|
6
6
|
onSelect?: (payload: ElementHoverPayload) => void;
|
|
7
7
|
onClear?: () => void;
|
|
8
8
|
onChangeMarkerSelected?: (changeId: string) => void;
|
|
9
|
+
onRouteChange?: (path: string) => void;
|
|
9
10
|
};
|
|
10
11
|
export type InspectorRuntime = {
|
|
11
12
|
enable: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/runtime/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/runtime/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAyCxE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACpD,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IACrD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAkTlB"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { runtimeElementRefFor } from "./element-ref.js";
|
|
2
2
|
import { extractMetadata, findSourceLocation, sourceKeyFor, sourceMappingStatus, } from "./metadata.js";
|
|
3
3
|
import { createOverlay, hideHighlight, hideSelectedHighlight, positionHighlight, positionSelectedHighlight, rectForElement, renderChangeMarkers, } from "./overlay.js";
|
|
4
|
+
const SOURCE_LINE_TOLERANCE = 2;
|
|
5
|
+
function parseSourceKey(raw) {
|
|
6
|
+
const m = raw ? /^(.*?):(\d+)(?::\d+)?$/.exec(raw) : null;
|
|
7
|
+
return m?.[1] ? { file: m[1], line: Number(m[2]) } : null;
|
|
8
|
+
}
|
|
9
|
+
function sameFile(a, b) {
|
|
10
|
+
return a === b || a.endsWith(`/${b}`) || b.endsWith(`/${a}`);
|
|
11
|
+
}
|
|
12
|
+
const SWALLOWED_EVENTS = [
|
|
13
|
+
"pointerup",
|
|
14
|
+
"mousedown",
|
|
15
|
+
"mouseup",
|
|
16
|
+
"click",
|
|
17
|
+
"dblclick",
|
|
18
|
+
"auxclick",
|
|
19
|
+
"contextmenu",
|
|
20
|
+
];
|
|
4
21
|
export function createInspectorRuntime(options) {
|
|
5
22
|
const { document: doc, window: win } = options;
|
|
6
23
|
const overlay = createOverlay(doc);
|
|
@@ -16,6 +33,22 @@ export function createInspectorRuntime(options) {
|
|
|
16
33
|
win.removeEventListener("mousemove", onMove, true);
|
|
17
34
|
win.removeEventListener("pointerdown", onPointerDownCapture, true);
|
|
18
35
|
doc.removeEventListener("mouseout", onLeave, true);
|
|
36
|
+
for (const type of SWALLOWED_EVENTS) {
|
|
37
|
+
win.removeEventListener(type, swallowAppInteraction, true);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const isChangeMarker = (target) => target instanceof Element &&
|
|
41
|
+
target.closest("[data-abbox-change-marker]") !== null;
|
|
42
|
+
/**
|
|
43
|
+
* While inspecting, a click only selects. Cancelling pointerdown alone does
|
|
44
|
+
* not stop the mousedown/mouseup/click that follow, so the app would still
|
|
45
|
+
* react (navigate, submit, open modals).
|
|
46
|
+
*/
|
|
47
|
+
const swallowAppInteraction = (event) => {
|
|
48
|
+
if (!enabled || isChangeMarker(event.target))
|
|
49
|
+
return;
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
event.stopImmediatePropagation();
|
|
19
52
|
};
|
|
20
53
|
/** No mousemove fires once the pointer leaves the iframe, so clear hover here. */
|
|
21
54
|
const onLeave = (event) => {
|
|
@@ -50,13 +83,12 @@ export function createInspectorRuntime(options) {
|
|
|
50
83
|
const onPointerDownCapture = (event) => {
|
|
51
84
|
if (!enabled)
|
|
52
85
|
return;
|
|
53
|
-
if (event.
|
|
54
|
-
return;
|
|
55
|
-
if (event.target instanceof Element &&
|
|
56
|
-
event.target.closest("[data-abbox-change-marker]"))
|
|
86
|
+
if (isChangeMarker(event.target))
|
|
57
87
|
return;
|
|
58
88
|
event.preventDefault();
|
|
59
|
-
event.
|
|
89
|
+
event.stopImmediatePropagation();
|
|
90
|
+
if (event.button !== 0)
|
|
91
|
+
return;
|
|
60
92
|
const target = deepestElementAt(doc, event.clientX, event.clientY, event.target);
|
|
61
93
|
if (!target || !doc.body.contains(target))
|
|
62
94
|
return;
|
|
@@ -100,49 +132,114 @@ export function createInspectorRuntime(options) {
|
|
|
100
132
|
positionHighlight(overlay.highlight, rectForElement(el));
|
|
101
133
|
options.onSelect?.(payloadFor(el));
|
|
102
134
|
}
|
|
103
|
-
|
|
135
|
+
const onCurrentRoute = (marker) => !marker.route ||
|
|
136
|
+
win.location.pathname.replace(/\/$/, "") ===
|
|
137
|
+
marker.route.replace(/\/$/, "");
|
|
138
|
+
function resolveMarkerElement(marker) {
|
|
104
139
|
const isRendered = (node) => {
|
|
105
140
|
const rect = node.getBoundingClientRect();
|
|
106
141
|
return node.isConnected && rect.width > 0 && rect.height > 0;
|
|
107
142
|
};
|
|
143
|
+
const target = parseSourceKey(marker.sourceKeyPrefix);
|
|
144
|
+
const byLine = new Map();
|
|
145
|
+
if (target) {
|
|
146
|
+
for (const node of Array.from(doc.querySelectorAll("[data-abbox-src]"))) {
|
|
147
|
+
const src = parseSourceKey(node.getAttribute("data-abbox-src"));
|
|
148
|
+
if (!src || !sameFile(src.file, target.file))
|
|
149
|
+
continue;
|
|
150
|
+
const distance = Math.abs(src.line - target.line);
|
|
151
|
+
if (distance > SOURCE_LINE_TOLERANCE || !isRendered(node))
|
|
152
|
+
continue;
|
|
153
|
+
byLine.set(distance, [...(byLine.get(distance) ?? []), node]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const nearestDistance = Math.min(...byLine.keys());
|
|
157
|
+
const sourceCandidates = byLine.get(nearestDistance) ?? [];
|
|
158
|
+
const hint = marker.textHint?.trim();
|
|
159
|
+
const hasHint = (node) => node.textContent?.trim() === hint;
|
|
160
|
+
const sourceTextCandidates = hint ? sourceCandidates.filter(hasHint) : [];
|
|
161
|
+
const textCandidates = hint
|
|
162
|
+
? Array.from(doc.querySelectorAll("body *")).filter((node) => node.children.length === 0 &&
|
|
163
|
+
isRendered(node) &&
|
|
164
|
+
hasHint(node) &&
|
|
165
|
+
!node.closest("[data-abbox-inspector]"))
|
|
166
|
+
: [];
|
|
167
|
+
if (sourceTextCandidates.length === 1)
|
|
168
|
+
return sourceTextCandidates[0] ?? null;
|
|
169
|
+
if (sourceCandidates.length === 1)
|
|
170
|
+
return sourceCandidates[0] ?? null;
|
|
171
|
+
if (textCandidates.length === 1)
|
|
172
|
+
return textCandidates[0] ?? null;
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
function resolveMarkerElements(next) {
|
|
108
176
|
for (const marker of next) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
marker.route.replace(/\/$/, ""))
|
|
177
|
+
const cached = refIdToElement.get(marker.elementRefId);
|
|
178
|
+
if (cached?.isConnected && onCurrentRoute(marker))
|
|
112
179
|
continue;
|
|
113
|
-
|
|
180
|
+
refIdToElement.delete(marker.elementRefId);
|
|
181
|
+
if (!onCurrentRoute(marker))
|
|
114
182
|
continue;
|
|
115
|
-
const
|
|
116
|
-
? `${marker.sourceKeyPrefix}:`
|
|
117
|
-
: null;
|
|
118
|
-
const sourceCandidates = sourceKey
|
|
119
|
-
? Array.from(doc.querySelectorAll("[data-abbox-src]")).filter((node) => {
|
|
120
|
-
const raw = node.getAttribute("data-abbox-src") ?? "";
|
|
121
|
-
return (isRendered(node) &&
|
|
122
|
-
(raw.startsWith(sourceKey) || raw.endsWith(`/${sourceKey}`)));
|
|
123
|
-
})
|
|
124
|
-
: [];
|
|
125
|
-
const hint = marker.textHint?.trim();
|
|
126
|
-
const textCandidates = hint
|
|
127
|
-
? Array.from(doc.querySelectorAll("body *")).filter((node) => node.children.length === 0 &&
|
|
128
|
-
isRendered(node) &&
|
|
129
|
-
node.textContent?.trim() === hint &&
|
|
130
|
-
!node.closest("[data-abbox-inspector]"))
|
|
131
|
-
: [];
|
|
132
|
-
const sourceTextCandidates = hint
|
|
133
|
-
? sourceCandidates.filter((node) => node.textContent?.trim() === hint)
|
|
134
|
-
: [];
|
|
135
|
-
const match = sourceTextCandidates.length === 1
|
|
136
|
-
? sourceTextCandidates[0]
|
|
137
|
-
: textCandidates.length === 1
|
|
138
|
-
? textCandidates[0]
|
|
139
|
-
: !hint && sourceCandidates.length === 1
|
|
140
|
-
? sourceCandidates[0]
|
|
141
|
-
: null;
|
|
183
|
+
const match = resolveMarkerElement(marker);
|
|
142
184
|
if (match)
|
|
143
185
|
refIdToElement.set(marker.elementRefId, match);
|
|
144
186
|
}
|
|
145
187
|
}
|
|
188
|
+
/** Selects the element of the change the host focused, once it renders. */
|
|
189
|
+
function focusPulsedMarker() {
|
|
190
|
+
const focused = markers.find((marker) => marker.pulse && refIdToElement.has(marker.elementRefId));
|
|
191
|
+
if (!focused) {
|
|
192
|
+
if (!markers.some((marker) => marker.pulse))
|
|
193
|
+
focusedMarkerId = null;
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (focused.elementRefId === focusedMarkerId)
|
|
197
|
+
return;
|
|
198
|
+
focusedMarkerId = focused.elementRefId;
|
|
199
|
+
const el = refIdToElement.get(focused.elementRefId);
|
|
200
|
+
if (!el)
|
|
201
|
+
return;
|
|
202
|
+
el.scrollIntoView?.({ block: "center", inline: "nearest" });
|
|
203
|
+
select(el);
|
|
204
|
+
}
|
|
205
|
+
function refreshMarkers() {
|
|
206
|
+
resolveMarkerElements(markers);
|
|
207
|
+
focusPulsedMarker();
|
|
208
|
+
renderChangeMarkers(overlay.markerLayer, markers, (id) => refIdToElement.get(id) ?? null, options.onChangeMarkerSelected);
|
|
209
|
+
if (selected?.isConnected) {
|
|
210
|
+
positionSelectedHighlight(overlay.selectedHighlight, rectForElement(selected));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
let lastPath = win.location.pathname;
|
|
214
|
+
let refreshFrame = 0;
|
|
215
|
+
/** SPA navigation and async data swap the DOM after markers arrive. */
|
|
216
|
+
const scheduleRefresh = () => {
|
|
217
|
+
if (refreshFrame)
|
|
218
|
+
return;
|
|
219
|
+
refreshFrame = win.requestAnimationFrame(() => {
|
|
220
|
+
refreshFrame = 0;
|
|
221
|
+
if (win.location.pathname !== lastPath) {
|
|
222
|
+
lastPath = win.location.pathname;
|
|
223
|
+
options.onRouteChange?.(lastPath);
|
|
224
|
+
}
|
|
225
|
+
if (markers.length)
|
|
226
|
+
refreshMarkers();
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
const observer = typeof MutationObserver === "undefined"
|
|
230
|
+
? null
|
|
231
|
+
: new MutationObserver((records) => {
|
|
232
|
+
const ownChange = records.every((record) => record.target instanceof Element &&
|
|
233
|
+
record.target.closest("[data-abbox-inspector]") !== null);
|
|
234
|
+
if (!ownChange)
|
|
235
|
+
scheduleRefresh();
|
|
236
|
+
});
|
|
237
|
+
observer?.observe(doc.body, {
|
|
238
|
+
childList: true,
|
|
239
|
+
subtree: true,
|
|
240
|
+
characterData: true,
|
|
241
|
+
});
|
|
242
|
+
win.addEventListener("popstate", scheduleRefresh);
|
|
146
243
|
function clearSelection() {
|
|
147
244
|
hovered = null;
|
|
148
245
|
selected = null;
|
|
@@ -160,6 +257,9 @@ export function createInspectorRuntime(options) {
|
|
|
160
257
|
win.addEventListener("mousemove", onMove, true);
|
|
161
258
|
win.addEventListener("pointerdown", onPointerDownCapture, true);
|
|
162
259
|
doc.addEventListener("mouseout", onLeave, true);
|
|
260
|
+
for (const type of SWALLOWED_EVENTS) {
|
|
261
|
+
win.addEventListener(type, swallowAppInteraction, true);
|
|
262
|
+
}
|
|
163
263
|
},
|
|
164
264
|
disable: () => {
|
|
165
265
|
if (!enabled)
|
|
@@ -176,25 +276,7 @@ export function createInspectorRuntime(options) {
|
|
|
176
276
|
markers = next;
|
|
177
277
|
for (const marker of next)
|
|
178
278
|
refIdToElement.delete(marker.elementRefId);
|
|
179
|
-
|
|
180
|
-
const focused = next.find((marker) => marker.pulse && refIdToElement.has(marker.elementRefId));
|
|
181
|
-
if (focused && focused.elementRefId !== focusedMarkerId) {
|
|
182
|
-
refIdToElement
|
|
183
|
-
.get(focused.elementRefId)
|
|
184
|
-
?.scrollIntoView?.({ block: "center", inline: "nearest" });
|
|
185
|
-
}
|
|
186
|
-
focusedMarkerId = focused?.elementRefId ?? null;
|
|
187
|
-
const unresolved = next.filter((marker) => (!marker.route ||
|
|
188
|
-
marker.route.replace(/\/$/, "") ===
|
|
189
|
-
win.location.pathname.replace(/\/$/, "")) &&
|
|
190
|
-
!refIdToElement.has(marker.elementRefId));
|
|
191
|
-
if (unresolved.length) {
|
|
192
|
-
console.warn("[abbox-inspector] change markers could not be matched to rendered elements", {
|
|
193
|
-
route: win.location.pathname,
|
|
194
|
-
changeIds: unresolved.map((marker) => marker.elementRefId),
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
renderChangeMarkers(overlay.markerLayer, markers, (id) => refIdToElement.get(id) ?? null, options.onChangeMarkerSelected);
|
|
279
|
+
refreshMarkers();
|
|
198
280
|
},
|
|
199
281
|
getElementByRefId: (id) => refIdToElement.get(id) ?? null,
|
|
200
282
|
destroy: () => {
|
|
@@ -204,6 +286,10 @@ export function createInspectorRuntime(options) {
|
|
|
204
286
|
}
|
|
205
287
|
win.removeEventListener("scroll", onScrollOrResize, true);
|
|
206
288
|
win.removeEventListener("resize", onScrollOrResize);
|
|
289
|
+
win.removeEventListener("popstate", scheduleRefresh);
|
|
290
|
+
observer?.disconnect();
|
|
291
|
+
if (refreshFrame)
|
|
292
|
+
win.cancelAnimationFrame(refreshFrame);
|
|
207
293
|
hovered = null;
|
|
208
294
|
hideHighlight(overlay.highlight);
|
|
209
295
|
overlay.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/runtime/metadata.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACd,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAYxB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAarE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,GAAG,IAAI,GAC5B,mBAAmB,CAGrB;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,eAAe,CAkC5D;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/runtime/metadata.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACd,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAYxB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAarE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,GAAG,IAAI,GAC5B,mBAAmB,CAGrB;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,eAAe,CAkC5D;AA2FD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGzE"}
|
package/dist/runtime/metadata.js
CHANGED
|
@@ -93,7 +93,9 @@ function nearbyFieldStates(el) {
|
|
|
93
93
|
if (controls.length === 0)
|
|
94
94
|
return undefined;
|
|
95
95
|
return controls.map((control) => {
|
|
96
|
-
const type = control instanceof HTMLInputElement
|
|
96
|
+
const type = control instanceof HTMLInputElement
|
|
97
|
+
? control.type
|
|
98
|
+
: control.getAttribute("type");
|
|
97
99
|
const checkable = control instanceof HTMLInputElement &&
|
|
98
100
|
(control.type === "checkbox" || control.type === "radio");
|
|
99
101
|
return {
|
package/dist/runtime/overlay.js
CHANGED
|
@@ -115,7 +115,7 @@ export function renderChangeMarkers(layer, markers, resolveElement, onSelect) {
|
|
|
115
115
|
background: marker.kind === "change-added"
|
|
116
116
|
? "#22c55e"
|
|
117
117
|
: marker.kind === "change-modified"
|
|
118
|
-
? "#
|
|
118
|
+
? "#f97316"
|
|
119
119
|
: marker.kind === "mock"
|
|
120
120
|
? "#f59e0b"
|
|
121
121
|
: "#ef4444",
|
|
@@ -140,8 +140,8 @@ export function renderChangeMarkers(layer, markers, resolveElement, onSelect) {
|
|
|
140
140
|
: "0 0 0 1px rgba(0,0,0,0.2)";
|
|
141
141
|
if (marker.pulse)
|
|
142
142
|
ensurePulseStyle(layer.ownerDocument);
|
|
143
|
-
dot.style.left = `${rect.x
|
|
144
|
-
dot.style.top = `${rect.top -
|
|
143
|
+
dot.style.left = `${rect.x - 6}px`;
|
|
144
|
+
dot.style.top = `${rect.top - 6}px`;
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
function ensurePulseStyle(doc) {
|