@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.
@@ -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,CAyEjB"}
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,CA+Df"}
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"}
@@ -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
  }
@@ -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
@@ -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,CAiDN;AAED,4CAA4C;AAC5C,wBAAgB,+BAA+B,IAAI,IAAI,CAMtD"}
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 = options.searchParams instanceof URLSearchParams
79
- ? options.searchParams
80
- : new URLSearchParams(options.searchParams);
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;AAkBxE,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,CAuPlB"}
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.button !== 0)
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.stopPropagation();
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
- function resolveMarkerElements(next) {
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
- if (marker.route &&
110
- win.location.pathname.replace(/\/$/, "") !==
111
- marker.route.replace(/\/$/, ""))
177
+ const cached = refIdToElement.get(marker.elementRefId);
178
+ if (cached?.isConnected && onCurrentRoute(marker))
112
179
  continue;
113
- if (refIdToElement.has(marker.elementRefId))
180
+ refIdToElement.delete(marker.elementRefId);
181
+ if (!onCurrentRoute(marker))
114
182
  continue;
115
- const sourceKey = marker.sourceKeyPrefix
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
- resolveMarkerElements(next);
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;AAyFD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGzE"}
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"}
@@ -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 ? control.type : control.getAttribute("type");
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 {
@@ -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
- ? "#eab308"
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 + rect.width - 8}px`;
144
- dot.style.top = `${rect.top - 4}px`;
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abbox/inspector",
3
- "version": "0.4.12",
3
+ "version": "0.4.13",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },