@abbox/inspector 0.4.7 → 0.4.8
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 +5 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/runtime/inspector.d.ts +1 -0
- package/dist/runtime/inspector.d.ts.map +1 -1
- package/dist/runtime/inspector.js +34 -10
- package/dist/runtime/overlay.d.ts +1 -1
- package/dist/runtime/overlay.d.ts.map +1 -1
- package/dist/runtime/overlay.js +27 -10
- 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,CAyEjB"}
|
|
@@ -38,6 +38,9 @@ export function createInspectorClient(options) {
|
|
|
38
38
|
onClear: () => {
|
|
39
39
|
send({ ...base(), type: "ELEMENT_CLEARED" });
|
|
40
40
|
},
|
|
41
|
+
onChangeMarkerSelected: (changeId) => {
|
|
42
|
+
send({ ...base(), type: "CHANGE_MARKER_SELECTED", changeId });
|
|
43
|
+
},
|
|
41
44
|
});
|
|
42
45
|
const onMessage = (event) => {
|
|
43
46
|
const msg = validateIncomingMessage(event.data, event.origin, {
|
|
@@ -18,6 +18,7 @@ export type InspectorHostHandlers = {
|
|
|
18
18
|
onHover?: (payload: HoverPayload) => void;
|
|
19
19
|
onSelect?: (payload: SelectPayload) => void;
|
|
20
20
|
onCleared?: () => void;
|
|
21
|
+
onChangeMarkerSelected?: (changeId: string) => void;
|
|
21
22
|
onError?: (code: string, message: string) => void;
|
|
22
23
|
};
|
|
23
24
|
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,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,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,CA+Df"}
|
package/dist/host/host-bridge.js
CHANGED
|
@@ -32,6 +32,9 @@ export function createInspectorHost(options, handlers) {
|
|
|
32
32
|
if (msg.type === "ELEMENT_CLEARED") {
|
|
33
33
|
handlers.onCleared?.();
|
|
34
34
|
}
|
|
35
|
+
if (msg.type === "CHANGE_MARKER_SELECTED") {
|
|
36
|
+
handlers.onChangeMarkerSelected?.(msg.changeId);
|
|
37
|
+
}
|
|
35
38
|
if (msg.type === "INSPECTOR_ERROR") {
|
|
36
39
|
handlers.onError?.(msg.code, msg.message);
|
|
37
40
|
}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -90,12 +90,16 @@ export type ChangeMarker = {
|
|
|
90
90
|
compilerElementId?: string;
|
|
91
91
|
interactionId?: string;
|
|
92
92
|
};
|
|
93
|
+
export type ChangeMarkerSelectedMessage = InspectorMessageBase & {
|
|
94
|
+
type: "CHANGE_MARKER_SELECTED";
|
|
95
|
+
changeId: string;
|
|
96
|
+
};
|
|
93
97
|
export type ApplyChangeMarkersMessage = InspectorMessageBase & {
|
|
94
98
|
type: "APPLY_CHANGE_MARKERS";
|
|
95
99
|
markers: ChangeMarker[];
|
|
96
100
|
};
|
|
97
101
|
export type HostToClientMessage = InspectorEnableMessage | InspectorDisableMessage | InspectorHostHelloMessage | ApplyChangeMarkersMessage;
|
|
98
|
-
export type ClientToHostMessage = InspectorReadyMessage | ElementHoveredMessage | ElementSelectedMessage | ElementClearedMessage | InspectorErrorMessage;
|
|
102
|
+
export type ClientToHostMessage = InspectorReadyMessage | ElementHoveredMessage | ElementSelectedMessage | ElementClearedMessage | ChangeMarkerSelectedMessage | InspectorErrorMessage;
|
|
99
103
|
export type InspectorMessage = HostToClientMessage | ClientToHostMessage;
|
|
100
104
|
export declare function isInspectorMessage(value: unknown): value is InspectorMessage;
|
|
101
105
|
//# 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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"}
|
|
@@ -5,6 +5,7 @@ export type InspectorRuntimeOptions = {
|
|
|
5
5
|
onHover?: (payload: ElementHoverPayload) => void;
|
|
6
6
|
onSelect?: (payload: ElementHoverPayload) => void;
|
|
7
7
|
onClear?: () => void;
|
|
8
|
+
onChangeMarkerSelected?: (changeId: string) => void;
|
|
8
9
|
};
|
|
9
10
|
export type InspectorRuntime = {
|
|
10
11
|
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;AAgBxE,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;
|
|
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;AAgBxE,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;CACrD,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,CA8NlB"}
|
|
@@ -8,13 +8,12 @@ export function createInspectorRuntime(options) {
|
|
|
8
8
|
let hovered = null;
|
|
9
9
|
const refIdToElement = new Map();
|
|
10
10
|
let markers = [];
|
|
11
|
+
let focusedMarkerId = null;
|
|
11
12
|
let raf = 0;
|
|
12
13
|
let pendingTarget = null;
|
|
13
14
|
const teardownListeners = () => {
|
|
14
15
|
win.removeEventListener("mousemove", onMove, true);
|
|
15
16
|
win.removeEventListener("pointerdown", onPointerDownCapture, true);
|
|
16
|
-
win.removeEventListener("scroll", onScrollOrResize, true);
|
|
17
|
-
win.removeEventListener("resize", onScrollOrResize);
|
|
18
17
|
};
|
|
19
18
|
const onMove = (event) => {
|
|
20
19
|
if (!enabled)
|
|
@@ -39,6 +38,9 @@ export function createInspectorRuntime(options) {
|
|
|
39
38
|
return;
|
|
40
39
|
if (event.button !== 0)
|
|
41
40
|
return;
|
|
41
|
+
if (event.target instanceof Element &&
|
|
42
|
+
event.target.closest("[data-abbox-change-marker]"))
|
|
43
|
+
return;
|
|
42
44
|
event.preventDefault();
|
|
43
45
|
event.stopPropagation();
|
|
44
46
|
const target = deepestElementAt(doc, event.clientX, event.clientY, event.target);
|
|
@@ -50,7 +52,7 @@ export function createInspectorRuntime(options) {
|
|
|
50
52
|
if (hovered)
|
|
51
53
|
positionHighlight(overlay.highlight, rectForElement(hovered));
|
|
52
54
|
if (markers.length) {
|
|
53
|
-
renderChangeMarkers(overlay.markerLayer, markers, (id) => refIdToElement.get(id) ?? null);
|
|
55
|
+
renderChangeMarkers(overlay.markerLayer, markers, (id) => refIdToElement.get(id) ?? null, options.onChangeMarkerSelected);
|
|
54
56
|
}
|
|
55
57
|
};
|
|
56
58
|
function payloadFor(el) {
|
|
@@ -79,6 +81,10 @@ export function createInspectorRuntime(options) {
|
|
|
79
81
|
options.onSelect?.(payloadFor(el));
|
|
80
82
|
}
|
|
81
83
|
function resolveMarkerElements(next) {
|
|
84
|
+
const isRendered = (node) => {
|
|
85
|
+
const rect = node.getBoundingClientRect();
|
|
86
|
+
return node.isConnected && rect.width > 0 && rect.height > 0;
|
|
87
|
+
};
|
|
82
88
|
for (const marker of next) {
|
|
83
89
|
if (marker.route &&
|
|
84
90
|
win.location.pathname.replace(/\/$/, "") !==
|
|
@@ -92,18 +98,27 @@ export function createInspectorRuntime(options) {
|
|
|
92
98
|
const sourceCandidates = sourceKey
|
|
93
99
|
? Array.from(doc.querySelectorAll("[data-abbox-src]")).filter((node) => {
|
|
94
100
|
const raw = node.getAttribute("data-abbox-src") ?? "";
|
|
95
|
-
return
|
|
101
|
+
return (isRendered(node) &&
|
|
102
|
+
(raw.startsWith(sourceKey) || raw.endsWith(`/${sourceKey}`)));
|
|
96
103
|
})
|
|
97
104
|
: [];
|
|
98
105
|
const hint = marker.textHint?.trim();
|
|
99
106
|
const textCandidates = hint
|
|
100
107
|
? Array.from(doc.querySelectorAll("body *")).filter((node) => node.children.length === 0 &&
|
|
108
|
+
isRendered(node) &&
|
|
101
109
|
node.textContent?.trim() === hint &&
|
|
102
110
|
!node.closest("[data-abbox-inspector]"))
|
|
103
111
|
: [];
|
|
104
|
-
const
|
|
105
|
-
(
|
|
106
|
-
|
|
112
|
+
const sourceTextCandidates = hint
|
|
113
|
+
? sourceCandidates.filter((node) => node.textContent?.trim() === hint)
|
|
114
|
+
: [];
|
|
115
|
+
const match = sourceTextCandidates.length === 1
|
|
116
|
+
? sourceTextCandidates[0]
|
|
117
|
+
: textCandidates.length === 1
|
|
118
|
+
? textCandidates[0]
|
|
119
|
+
: !hint && sourceCandidates.length === 1
|
|
120
|
+
? sourceCandidates[0]
|
|
121
|
+
: null;
|
|
107
122
|
if (match)
|
|
108
123
|
refIdToElement.set(marker.elementRefId, match);
|
|
109
124
|
}
|
|
@@ -113,6 +128,8 @@ export function createInspectorRuntime(options) {
|
|
|
113
128
|
hideHighlight(overlay.highlight);
|
|
114
129
|
options.onClear?.();
|
|
115
130
|
}
|
|
131
|
+
win.addEventListener("scroll", onScrollOrResize, true);
|
|
132
|
+
win.addEventListener("resize", onScrollOrResize);
|
|
116
133
|
return {
|
|
117
134
|
enable: () => {
|
|
118
135
|
if (enabled)
|
|
@@ -120,8 +137,6 @@ export function createInspectorRuntime(options) {
|
|
|
120
137
|
enabled = true;
|
|
121
138
|
win.addEventListener("mousemove", onMove, true);
|
|
122
139
|
win.addEventListener("pointerdown", onPointerDownCapture, true);
|
|
123
|
-
win.addEventListener("scroll", onScrollOrResize, true);
|
|
124
|
-
win.addEventListener("resize", onScrollOrResize);
|
|
125
140
|
},
|
|
126
141
|
disable: () => {
|
|
127
142
|
if (!enabled)
|
|
@@ -138,6 +153,13 @@ export function createInspectorRuntime(options) {
|
|
|
138
153
|
for (const marker of next)
|
|
139
154
|
refIdToElement.delete(marker.elementRefId);
|
|
140
155
|
resolveMarkerElements(next);
|
|
156
|
+
const focused = next.find((marker) => marker.pulse && refIdToElement.has(marker.elementRefId));
|
|
157
|
+
if (focused && focused.elementRefId !== focusedMarkerId) {
|
|
158
|
+
refIdToElement
|
|
159
|
+
.get(focused.elementRefId)
|
|
160
|
+
?.scrollIntoView?.({ block: "center", inline: "nearest" });
|
|
161
|
+
}
|
|
162
|
+
focusedMarkerId = focused?.elementRefId ?? null;
|
|
141
163
|
const unresolved = next.filter((marker) => (!marker.route ||
|
|
142
164
|
marker.route.replace(/\/$/, "") ===
|
|
143
165
|
win.location.pathname.replace(/\/$/, "")) &&
|
|
@@ -148,7 +170,7 @@ export function createInspectorRuntime(options) {
|
|
|
148
170
|
changeIds: unresolved.map((marker) => marker.elementRefId),
|
|
149
171
|
});
|
|
150
172
|
}
|
|
151
|
-
renderChangeMarkers(overlay.markerLayer, markers, (id) => refIdToElement.get(id) ?? null);
|
|
173
|
+
renderChangeMarkers(overlay.markerLayer, markers, (id) => refIdToElement.get(id) ?? null, options.onChangeMarkerSelected);
|
|
152
174
|
},
|
|
153
175
|
getElementByRefId: (id) => refIdToElement.get(id) ?? null,
|
|
154
176
|
destroy: () => {
|
|
@@ -156,6 +178,8 @@ export function createInspectorRuntime(options) {
|
|
|
156
178
|
enabled = false;
|
|
157
179
|
teardownListeners();
|
|
158
180
|
}
|
|
181
|
+
win.removeEventListener("scroll", onScrollOrResize, true);
|
|
182
|
+
win.removeEventListener("resize", onScrollOrResize);
|
|
159
183
|
hovered = null;
|
|
160
184
|
hideHighlight(overlay.highlight);
|
|
161
185
|
overlay.destroy();
|
|
@@ -8,5 +8,5 @@ export declare function createOverlay(root: Document): OverlayHandles;
|
|
|
8
8
|
export declare function positionHighlight(highlight: HTMLDivElement, rect: ElementRect): void;
|
|
9
9
|
export declare function hideHighlight(highlight: HTMLDivElement): void;
|
|
10
10
|
export declare function rectForElement(el: Element): ElementRect;
|
|
11
|
-
export declare function renderChangeMarkers(layer: HTMLDivElement, markers: ChangeMarker[], resolveElement: (refId: string) => Element | null): void;
|
|
11
|
+
export declare function renderChangeMarkers(layer: HTMLDivElement, markers: ChangeMarker[], resolveElement: (refId: string) => Element | null, onSelect?: (changeId: string) => void): void;
|
|
12
12
|
//# sourceMappingURL=overlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/runtime/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKhE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAiC5D;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,WAAW,GAChB,IAAI,CAQN;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAE7D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,WAAW,CAQvD;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/runtime/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKhE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAiC5D;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,WAAW,GAChB,IAAI,CAQN;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAE7D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,WAAW,CAQvD;AAOD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,YAAY,EAAE,EACvB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,EACjD,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACpC,IAAI,CA+DN"}
|
package/dist/runtime/overlay.js
CHANGED
|
@@ -52,8 +52,13 @@ export function rectForElement(el) {
|
|
|
52
52
|
height: r.height,
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
const
|
|
56
|
-
export function renderChangeMarkers(layer, markers, resolveElement) {
|
|
55
|
+
const markerNodesByLayer = new WeakMap();
|
|
56
|
+
export function renderChangeMarkers(layer, markers, resolveElement, onSelect) {
|
|
57
|
+
let markerNodes = markerNodesByLayer.get(layer);
|
|
58
|
+
if (!markerNodes) {
|
|
59
|
+
markerNodes = new Map();
|
|
60
|
+
markerNodesByLayer.set(layer, markerNodes);
|
|
61
|
+
}
|
|
57
62
|
for (const [id, node] of markerNodes) {
|
|
58
63
|
if (!markers.some((m) => m.elementRefId === id)) {
|
|
59
64
|
node.remove();
|
|
@@ -62,16 +67,18 @@ export function renderChangeMarkers(layer, markers, resolveElement) {
|
|
|
62
67
|
}
|
|
63
68
|
for (const marker of markers) {
|
|
64
69
|
const el = resolveElement(marker.elementRefId);
|
|
65
|
-
|
|
70
|
+
const rect = el?.getBoundingClientRect();
|
|
71
|
+
if (!el?.isConnected || !rect || rect.width <= 0 || rect.height <= 0) {
|
|
66
72
|
markerNodes.get(marker.elementRefId)?.remove();
|
|
67
73
|
markerNodes.delete(marker.elementRefId);
|
|
68
74
|
continue;
|
|
69
75
|
}
|
|
70
|
-
const rect = el.getBoundingClientRect();
|
|
71
76
|
let dot = markerNodes.get(marker.elementRefId);
|
|
72
77
|
if (!dot) {
|
|
73
|
-
dot = layer.ownerDocument.createElement("
|
|
78
|
+
dot = layer.ownerDocument.createElement("button");
|
|
79
|
+
dot.type = "button";
|
|
74
80
|
dot.setAttribute("data-abbox-change-marker", marker.kind);
|
|
81
|
+
dot.setAttribute("aria-label", marker.label);
|
|
75
82
|
dot.title = marker.label;
|
|
76
83
|
Object.assign(dot.style, {
|
|
77
84
|
position: "fixed",
|
|
@@ -87,15 +94,25 @@ export function renderChangeMarkers(layer, markers, resolveElement) {
|
|
|
87
94
|
: "#ef4444",
|
|
88
95
|
border: "2px solid #fff",
|
|
89
96
|
boxShadow: "0 0 0 1px rgba(0,0,0,0.2)",
|
|
90
|
-
|
|
97
|
+
padding: "0",
|
|
98
|
+
cursor: "pointer",
|
|
99
|
+
pointerEvents: "auto",
|
|
91
100
|
});
|
|
92
|
-
if (marker.pulse !== false) {
|
|
93
|
-
dot.style.animation = "abbox-inspector-pulse 1.4s ease-in-out infinite";
|
|
94
|
-
ensurePulseStyle(layer.ownerDocument);
|
|
95
|
-
}
|
|
96
101
|
layer.append(dot);
|
|
97
102
|
markerNodes.set(marker.elementRefId, dot);
|
|
98
103
|
}
|
|
104
|
+
dot.onclick = (event) => {
|
|
105
|
+
event.stopPropagation();
|
|
106
|
+
onSelect?.(marker.elementRefId);
|
|
107
|
+
};
|
|
108
|
+
dot.style.animation = marker.pulse
|
|
109
|
+
? "abbox-inspector-pulse 1.4s ease-in-out infinite"
|
|
110
|
+
: "";
|
|
111
|
+
dot.style.boxShadow = marker.pulse
|
|
112
|
+
? "0 0 0 4px rgba(255,255,255,0.35)"
|
|
113
|
+
: "0 0 0 1px rgba(0,0,0,0.2)";
|
|
114
|
+
if (marker.pulse)
|
|
115
|
+
ensurePulseStyle(layer.ownerDocument);
|
|
99
116
|
dot.style.left = `${rect.x + rect.width - 8}px`;
|
|
100
117
|
dot.style.top = `${rect.top - 4}px`;
|
|
101
118
|
}
|