@buoy-gg/highlight-updates 7.0.17 → 7.0.19
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/lib/commonjs/highlight-updates/components/HighlightUpdatesModal.js +24 -0
- package/lib/commonjs/highlight-updates/utils/RenderTracker.js +31 -3
- package/lib/commonjs/sync/highlightUpdatesSyncAdapter.js +81 -2
- package/lib/module/highlight-updates/components/HighlightUpdatesModal.js +24 -0
- package/lib/module/highlight-updates/utils/RenderTracker.js +31 -3
- package/lib/module/sync/highlightUpdatesSyncAdapter.js +81 -2
- package/lib/typescript/highlight-updates/components/HighlightUpdatesModal.d.ts +8 -1
- package/lib/typescript/highlight-updates/components/HighlightUpdatesModal.d.ts.map +1 -1
- package/lib/typescript/highlight-updates/utils/RenderTracker.d.ts +10 -0
- package/lib/typescript/highlight-updates/utils/RenderTracker.d.ts.map +1 -1
- package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts +25 -6
- package/lib/typescript/sync/highlightUpdatesSyncAdapter.d.ts.map +1 -1
- package/package.json +13 -8
|
@@ -57,6 +57,7 @@ function HighlightUpdatesModal({
|
|
|
57
57
|
enableSharedModalDimensions = false,
|
|
58
58
|
initialNativeTag,
|
|
59
59
|
onInitialNativeTagHandled,
|
|
60
|
+
onRenderSelect,
|
|
60
61
|
inline = false
|
|
61
62
|
}) {
|
|
62
63
|
const isPro = (0, _license.useIsPro)();
|
|
@@ -329,6 +330,29 @@ function HighlightUpdatesModal({
|
|
|
329
330
|
// Set spotlight to show which component is being viewed
|
|
330
331
|
_HighlightUpdatesController.default.setSpotlight(render.nativeTag);
|
|
331
332
|
}, []);
|
|
333
|
+
|
|
334
|
+
// Keep the open detail in sync with the tracker (live counts + hydrated
|
|
335
|
+
// history fetched on demand by a remote host).
|
|
336
|
+
(0, _react.useEffect)(() => {
|
|
337
|
+
if (!selectedRender) return;
|
|
338
|
+
const id = String(selectedRender.nativeTag);
|
|
339
|
+
return _RenderTracker.RenderTracker.subscribe(() => {
|
|
340
|
+
const next = _RenderTracker.RenderTracker.getRender(id);
|
|
341
|
+
if (next) setSelectedRender({
|
|
342
|
+
...next
|
|
343
|
+
});
|
|
344
|
+
});
|
|
345
|
+
}, [selectedRender?.nativeTag]);
|
|
346
|
+
|
|
347
|
+
// Notify the host on selection (keyed by nativeTag so re-renders with the
|
|
348
|
+
// same selection don't re-fire; remote mirrors fetch history here).
|
|
349
|
+
const lastNotifiedSelectionRef = (0, _react.useRef)(null);
|
|
350
|
+
(0, _react.useEffect)(() => {
|
|
351
|
+
if (!onRenderSelect || !selectedRender) return;
|
|
352
|
+
if (lastNotifiedSelectionRef.current === selectedRender.nativeTag) return;
|
|
353
|
+
lastNotifiedSelectionRef.current = selectedRender.nativeTag;
|
|
354
|
+
onRenderSelect(selectedRender);
|
|
355
|
+
}, [selectedRender, onRenderSelect]);
|
|
332
356
|
const handleRendersChange = (0, _react.useCallback)(renders => {
|
|
333
357
|
rendersListRef.current = renders;
|
|
334
358
|
}, []);
|
|
@@ -64,8 +64,8 @@ class RenderTrackerSingleton {
|
|
|
64
64
|
showRenderCount: true,
|
|
65
65
|
performanceLogging: false,
|
|
66
66
|
trackRenderCauses: false,
|
|
67
|
-
// History
|
|
68
|
-
enableRenderHistory:
|
|
67
|
+
// History is opt-in (memory + perf overhead). JSDoc default: false.
|
|
68
|
+
enableRenderHistory: false,
|
|
69
69
|
maxRenderHistoryPerComponent: 20,
|
|
70
70
|
capturePropsOnRender: false,
|
|
71
71
|
captureStateOnRender: false,
|
|
@@ -544,7 +544,22 @@ class RenderTrackerSingleton {
|
|
|
544
544
|
* and search stay local: they apply at read time via getFilteredRenders.
|
|
545
545
|
*/
|
|
546
546
|
replaceRenders(renders, state) {
|
|
547
|
-
|
|
547
|
+
// Preserve history a remote mirror already hydrated — wire-form snapshots
|
|
548
|
+
// omit renderHistory, and a later snapshot must not blank the detail pane.
|
|
549
|
+
const hydratedHistory = new Map();
|
|
550
|
+
for (const [id, existing] of this.renders) {
|
|
551
|
+
if (existing.renderHistory && existing.renderHistory.length > 0) {
|
|
552
|
+
hydratedHistory.set(id, existing.renderHistory);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
this.renders = new Map(renders.map(render => {
|
|
556
|
+
const kept = hydratedHistory.get(render.id);
|
|
557
|
+
const next = kept && !(render.renderHistory && render.renderHistory.length > 0) ? {
|
|
558
|
+
...render,
|
|
559
|
+
renderHistory: kept
|
|
560
|
+
} : render;
|
|
561
|
+
return [next.id, next];
|
|
562
|
+
}));
|
|
548
563
|
if (state && (this.isTracking !== state.isTracking || this.isPaused !== state.isPaused)) {
|
|
549
564
|
this.isTracking = state.isTracking;
|
|
550
565
|
this.isPaused = state.isPaused;
|
|
@@ -553,6 +568,19 @@ class RenderTrackerSingleton {
|
|
|
553
568
|
this.notifyListeners();
|
|
554
569
|
}
|
|
555
570
|
|
|
571
|
+
/**
|
|
572
|
+
* Hydrate one mirrored render with on-demand detail (history / cause
|
|
573
|
+
* values) fetched via the adapter's `getRenderDetail`. Remote-mirror only.
|
|
574
|
+
*/
|
|
575
|
+
hydrateRender(render) {
|
|
576
|
+
const existing = this.renders.get(render.id);
|
|
577
|
+
this.renders.set(render.id, existing ? {
|
|
578
|
+
...existing,
|
|
579
|
+
...render
|
|
580
|
+
} : render);
|
|
581
|
+
this.notifyListeners();
|
|
582
|
+
}
|
|
583
|
+
|
|
556
584
|
/**
|
|
557
585
|
* Get filter config
|
|
558
586
|
*/
|
|
@@ -13,6 +13,57 @@ function ensureInitialized() {
|
|
|
13
13
|
_HighlightUpdatesController.default.initialize();
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
+
function toWireCause(cause) {
|
|
17
|
+
if (!cause) return undefined;
|
|
18
|
+
const {
|
|
19
|
+
hookChanges: _hookChanges,
|
|
20
|
+
...rest
|
|
21
|
+
} = cause;
|
|
22
|
+
return rest;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Wire-form render: keep identity + counts + last cause type, drop the
|
|
27
|
+
* per-component history buffer (up to 20 events, and hook/prop snapshots
|
|
28
|
+
* when those settings are on). Dashboards fetch history via getRenderDetail.
|
|
29
|
+
*/
|
|
30
|
+
function toWireRender(render) {
|
|
31
|
+
const {
|
|
32
|
+
renderHistory,
|
|
33
|
+
lastRenderCause,
|
|
34
|
+
...rest
|
|
35
|
+
} = render;
|
|
36
|
+
return {
|
|
37
|
+
...rest,
|
|
38
|
+
lastRenderCause: toWireCause(lastRenderCause),
|
|
39
|
+
historyCount: renderHistory?.length ?? 0
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Deliberately serializes to test serializability, unlike the snapshot guards
|
|
45
|
+
* elsewhere. This runs once per `getRenderDetail` — a user clicking one row —
|
|
46
|
+
* not on the ~5x/sec snapshot, so there is no unbounded per-tick cost to
|
|
47
|
+
* avoid. Probing with a size walk first would just traverse the whole render
|
|
48
|
+
* before doing this anyway.
|
|
49
|
+
*/
|
|
50
|
+
function jsonSafeRender(render) {
|
|
51
|
+
try {
|
|
52
|
+
JSON.stringify(render);
|
|
53
|
+
return render;
|
|
54
|
+
} catch {
|
|
55
|
+
return {
|
|
56
|
+
...render,
|
|
57
|
+
lastRenderCause: toWireCause(render.lastRenderCause),
|
|
58
|
+
renderHistory: render.renderHistory?.map(event => ({
|
|
59
|
+
...event,
|
|
60
|
+
capturedProps: undefined,
|
|
61
|
+
capturedState: undefined,
|
|
62
|
+
cause: toWireCause(event.cause) ?? event.cause
|
|
63
|
+
}))
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
16
67
|
|
|
17
68
|
/**
|
|
18
69
|
* Sync adapter for the highlight-updates tool, consumed by
|
|
@@ -25,15 +76,18 @@ function ensureInitialized() {
|
|
|
25
76
|
* as a mirror. Mutations (toggle, freeze, clear, spotlight) come back as
|
|
26
77
|
* actions and run on the device; spotlight even highlights the component on
|
|
27
78
|
* the phone screen while browsing details from the desktop.
|
|
79
|
+
*
|
|
80
|
+
* v2: per-component `renderHistory` (and hook-change values on lastRenderCause)
|
|
81
|
+
* stay on the device. Dashboards fetch them via `getRenderDetail`.
|
|
28
82
|
*/
|
|
29
83
|
const highlightUpdatesSyncAdapter = exports.highlightUpdatesSyncAdapter = {
|
|
30
|
-
version:
|
|
84
|
+
version: 2,
|
|
31
85
|
getSnapshot: () => ({
|
|
32
86
|
enabled: _HighlightUpdatesController.default.isEnabled(),
|
|
33
87
|
frozen: _HighlightUpdatesController.default.getFrozen(),
|
|
34
88
|
// True while tracking but the visual boxes are hidden (screenshot tool).
|
|
35
89
|
highlightsSuppressed: _HighlightUpdatesController.default.getHighlightsSuppressed(),
|
|
36
|
-
renders: _RenderTracker.RenderTracker.getRenders(),
|
|
90
|
+
renders: _RenderTracker.RenderTracker.getRenders().map(toWireRender),
|
|
37
91
|
trackerState: _RenderTracker.RenderTracker.getState()
|
|
38
92
|
}),
|
|
39
93
|
subscribe: onChange => {
|
|
@@ -49,6 +103,31 @@ const highlightUpdatesSyncAdapter = exports.highlightUpdatesSyncAdapter = {
|
|
|
49
103
|
};
|
|
50
104
|
},
|
|
51
105
|
actions: {
|
|
106
|
+
/**
|
|
107
|
+
* On-demand detail: one component's real renderHistory + lastRenderCause
|
|
108
|
+
* (including hookChanges). Wire-form snapshots omit those.
|
|
109
|
+
*/
|
|
110
|
+
getRenderDetail: params => {
|
|
111
|
+
const {
|
|
112
|
+
nativeTag
|
|
113
|
+
} = params ?? {};
|
|
114
|
+
if (nativeTag == null) {
|
|
115
|
+
return {
|
|
116
|
+
found: false,
|
|
117
|
+
reason: "missing nativeTag"
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const render = _RenderTracker.RenderTracker.getRender(String(nativeTag));
|
|
121
|
+
if (!render) return {
|
|
122
|
+
found: false,
|
|
123
|
+
reason: "unknown nativeTag"
|
|
124
|
+
};
|
|
125
|
+
return {
|
|
126
|
+
found: true,
|
|
127
|
+
nativeTag,
|
|
128
|
+
render: jsonSafeRender(render)
|
|
129
|
+
};
|
|
130
|
+
},
|
|
52
131
|
toggle: () => {
|
|
53
132
|
ensureInitialized();
|
|
54
133
|
_HighlightUpdatesController.default.toggle();
|
|
@@ -50,6 +50,7 @@ export function HighlightUpdatesModal({
|
|
|
50
50
|
enableSharedModalDimensions = false,
|
|
51
51
|
initialNativeTag,
|
|
52
52
|
onInitialNativeTagHandled,
|
|
53
|
+
onRenderSelect,
|
|
53
54
|
inline = false
|
|
54
55
|
}) {
|
|
55
56
|
const isPro = useIsPro();
|
|
@@ -322,6 +323,29 @@ export function HighlightUpdatesModal({
|
|
|
322
323
|
// Set spotlight to show which component is being viewed
|
|
323
324
|
HighlightUpdatesController.setSpotlight(render.nativeTag);
|
|
324
325
|
}, []);
|
|
326
|
+
|
|
327
|
+
// Keep the open detail in sync with the tracker (live counts + hydrated
|
|
328
|
+
// history fetched on demand by a remote host).
|
|
329
|
+
useEffect(() => {
|
|
330
|
+
if (!selectedRender) return;
|
|
331
|
+
const id = String(selectedRender.nativeTag);
|
|
332
|
+
return RenderTracker.subscribe(() => {
|
|
333
|
+
const next = RenderTracker.getRender(id);
|
|
334
|
+
if (next) setSelectedRender({
|
|
335
|
+
...next
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
}, [selectedRender?.nativeTag]);
|
|
339
|
+
|
|
340
|
+
// Notify the host on selection (keyed by nativeTag so re-renders with the
|
|
341
|
+
// same selection don't re-fire; remote mirrors fetch history here).
|
|
342
|
+
const lastNotifiedSelectionRef = useRef(null);
|
|
343
|
+
useEffect(() => {
|
|
344
|
+
if (!onRenderSelect || !selectedRender) return;
|
|
345
|
+
if (lastNotifiedSelectionRef.current === selectedRender.nativeTag) return;
|
|
346
|
+
lastNotifiedSelectionRef.current = selectedRender.nativeTag;
|
|
347
|
+
onRenderSelect(selectedRender);
|
|
348
|
+
}, [selectedRender, onRenderSelect]);
|
|
325
349
|
const handleRendersChange = useCallback(renders => {
|
|
326
350
|
rendersListRef.current = renders;
|
|
327
351
|
}, []);
|
|
@@ -61,8 +61,8 @@ class RenderTrackerSingleton {
|
|
|
61
61
|
showRenderCount: true,
|
|
62
62
|
performanceLogging: false,
|
|
63
63
|
trackRenderCauses: false,
|
|
64
|
-
// History
|
|
65
|
-
enableRenderHistory:
|
|
64
|
+
// History is opt-in (memory + perf overhead). JSDoc default: false.
|
|
65
|
+
enableRenderHistory: false,
|
|
66
66
|
maxRenderHistoryPerComponent: 20,
|
|
67
67
|
capturePropsOnRender: false,
|
|
68
68
|
captureStateOnRender: false,
|
|
@@ -541,7 +541,22 @@ class RenderTrackerSingleton {
|
|
|
541
541
|
* and search stay local: they apply at read time via getFilteredRenders.
|
|
542
542
|
*/
|
|
543
543
|
replaceRenders(renders, state) {
|
|
544
|
-
|
|
544
|
+
// Preserve history a remote mirror already hydrated — wire-form snapshots
|
|
545
|
+
// omit renderHistory, and a later snapshot must not blank the detail pane.
|
|
546
|
+
const hydratedHistory = new Map();
|
|
547
|
+
for (const [id, existing] of this.renders) {
|
|
548
|
+
if (existing.renderHistory && existing.renderHistory.length > 0) {
|
|
549
|
+
hydratedHistory.set(id, existing.renderHistory);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
this.renders = new Map(renders.map(render => {
|
|
553
|
+
const kept = hydratedHistory.get(render.id);
|
|
554
|
+
const next = kept && !(render.renderHistory && render.renderHistory.length > 0) ? {
|
|
555
|
+
...render,
|
|
556
|
+
renderHistory: kept
|
|
557
|
+
} : render;
|
|
558
|
+
return [next.id, next];
|
|
559
|
+
}));
|
|
545
560
|
if (state && (this.isTracking !== state.isTracking || this.isPaused !== state.isPaused)) {
|
|
546
561
|
this.isTracking = state.isTracking;
|
|
547
562
|
this.isPaused = state.isPaused;
|
|
@@ -550,6 +565,19 @@ class RenderTrackerSingleton {
|
|
|
550
565
|
this.notifyListeners();
|
|
551
566
|
}
|
|
552
567
|
|
|
568
|
+
/**
|
|
569
|
+
* Hydrate one mirrored render with on-demand detail (history / cause
|
|
570
|
+
* values) fetched via the adapter's `getRenderDetail`. Remote-mirror only.
|
|
571
|
+
*/
|
|
572
|
+
hydrateRender(render) {
|
|
573
|
+
const existing = this.renders.get(render.id);
|
|
574
|
+
this.renders.set(render.id, existing ? {
|
|
575
|
+
...existing,
|
|
576
|
+
...render
|
|
577
|
+
} : render);
|
|
578
|
+
this.notifyListeners();
|
|
579
|
+
}
|
|
580
|
+
|
|
553
581
|
/**
|
|
554
582
|
* Get filter config
|
|
555
583
|
*/
|
|
@@ -8,6 +8,57 @@ function ensureInitialized() {
|
|
|
8
8
|
HighlightUpdatesController.initialize();
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
function toWireCause(cause) {
|
|
12
|
+
if (!cause) return undefined;
|
|
13
|
+
const {
|
|
14
|
+
hookChanges: _hookChanges,
|
|
15
|
+
...rest
|
|
16
|
+
} = cause;
|
|
17
|
+
return rest;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Wire-form render: keep identity + counts + last cause type, drop the
|
|
22
|
+
* per-component history buffer (up to 20 events, and hook/prop snapshots
|
|
23
|
+
* when those settings are on). Dashboards fetch history via getRenderDetail.
|
|
24
|
+
*/
|
|
25
|
+
function toWireRender(render) {
|
|
26
|
+
const {
|
|
27
|
+
renderHistory,
|
|
28
|
+
lastRenderCause,
|
|
29
|
+
...rest
|
|
30
|
+
} = render;
|
|
31
|
+
return {
|
|
32
|
+
...rest,
|
|
33
|
+
lastRenderCause: toWireCause(lastRenderCause),
|
|
34
|
+
historyCount: renderHistory?.length ?? 0
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Deliberately serializes to test serializability, unlike the snapshot guards
|
|
40
|
+
* elsewhere. This runs once per `getRenderDetail` — a user clicking one row —
|
|
41
|
+
* not on the ~5x/sec snapshot, so there is no unbounded per-tick cost to
|
|
42
|
+
* avoid. Probing with a size walk first would just traverse the whole render
|
|
43
|
+
* before doing this anyway.
|
|
44
|
+
*/
|
|
45
|
+
function jsonSafeRender(render) {
|
|
46
|
+
try {
|
|
47
|
+
JSON.stringify(render);
|
|
48
|
+
return render;
|
|
49
|
+
} catch {
|
|
50
|
+
return {
|
|
51
|
+
...render,
|
|
52
|
+
lastRenderCause: toWireCause(render.lastRenderCause),
|
|
53
|
+
renderHistory: render.renderHistory?.map(event => ({
|
|
54
|
+
...event,
|
|
55
|
+
capturedProps: undefined,
|
|
56
|
+
capturedState: undefined,
|
|
57
|
+
cause: toWireCause(event.cause) ?? event.cause
|
|
58
|
+
}))
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
11
62
|
|
|
12
63
|
/**
|
|
13
64
|
* Sync adapter for the highlight-updates tool, consumed by
|
|
@@ -20,15 +71,18 @@ function ensureInitialized() {
|
|
|
20
71
|
* as a mirror. Mutations (toggle, freeze, clear, spotlight) come back as
|
|
21
72
|
* actions and run on the device; spotlight even highlights the component on
|
|
22
73
|
* the phone screen while browsing details from the desktop.
|
|
74
|
+
*
|
|
75
|
+
* v2: per-component `renderHistory` (and hook-change values on lastRenderCause)
|
|
76
|
+
* stay on the device. Dashboards fetch them via `getRenderDetail`.
|
|
23
77
|
*/
|
|
24
78
|
export const highlightUpdatesSyncAdapter = {
|
|
25
|
-
version:
|
|
79
|
+
version: 2,
|
|
26
80
|
getSnapshot: () => ({
|
|
27
81
|
enabled: HighlightUpdatesController.isEnabled(),
|
|
28
82
|
frozen: HighlightUpdatesController.getFrozen(),
|
|
29
83
|
// True while tracking but the visual boxes are hidden (screenshot tool).
|
|
30
84
|
highlightsSuppressed: HighlightUpdatesController.getHighlightsSuppressed(),
|
|
31
|
-
renders: RenderTracker.getRenders(),
|
|
85
|
+
renders: RenderTracker.getRenders().map(toWireRender),
|
|
32
86
|
trackerState: RenderTracker.getState()
|
|
33
87
|
}),
|
|
34
88
|
subscribe: onChange => {
|
|
@@ -44,6 +98,31 @@ export const highlightUpdatesSyncAdapter = {
|
|
|
44
98
|
};
|
|
45
99
|
},
|
|
46
100
|
actions: {
|
|
101
|
+
/**
|
|
102
|
+
* On-demand detail: one component's real renderHistory + lastRenderCause
|
|
103
|
+
* (including hookChanges). Wire-form snapshots omit those.
|
|
104
|
+
*/
|
|
105
|
+
getRenderDetail: params => {
|
|
106
|
+
const {
|
|
107
|
+
nativeTag
|
|
108
|
+
} = params ?? {};
|
|
109
|
+
if (nativeTag == null) {
|
|
110
|
+
return {
|
|
111
|
+
found: false,
|
|
112
|
+
reason: "missing nativeTag"
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const render = RenderTracker.getRender(String(nativeTag));
|
|
116
|
+
if (!render) return {
|
|
117
|
+
found: false,
|
|
118
|
+
reason: "unknown nativeTag"
|
|
119
|
+
};
|
|
120
|
+
return {
|
|
121
|
+
found: true,
|
|
122
|
+
nativeTag,
|
|
123
|
+
render: jsonSafeRender(render)
|
|
124
|
+
};
|
|
125
|
+
},
|
|
47
126
|
toggle: () => {
|
|
48
127
|
ensureInitialized();
|
|
49
128
|
HighlightUpdatesController.toggle();
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* - Uses refs for values not displayed in UI
|
|
14
14
|
*/
|
|
15
15
|
import React from "react";
|
|
16
|
+
import { type TrackedRender } from "../utils/RenderTracker";
|
|
16
17
|
interface HighlightUpdatesModalProps {
|
|
17
18
|
visible: boolean;
|
|
18
19
|
onClose: () => void;
|
|
@@ -37,8 +38,14 @@ interface HighlightUpdatesModalProps {
|
|
|
37
38
|
* This allows the parent to clear the navigation state.
|
|
38
39
|
*/
|
|
39
40
|
onInitialNativeTagHandled?: () => void;
|
|
41
|
+
/**
|
|
42
|
+
* Fired when the user opens a component's detail view. Remote mirrors
|
|
43
|
+
* (Buoy Desktop) use this to fetch `renderHistory` on demand — wire-form
|
|
44
|
+
* snapshots omit the per-component history buffer.
|
|
45
|
+
*/
|
|
46
|
+
onRenderSelect?: (render: TrackedRender) => void;
|
|
40
47
|
}
|
|
41
|
-
export declare function HighlightUpdatesModal({ visible, onClose, onBack, onMinimize, enableSharedModalDimensions, initialNativeTag, onInitialNativeTagHandled, inline, }: HighlightUpdatesModalProps): React.JSX.Element | null;
|
|
48
|
+
export declare function HighlightUpdatesModal({ visible, onClose, onBack, onMinimize, enableSharedModalDimensions, initialNativeTag, onInitialNativeTagHandled, onRenderSelect, inline, }: HighlightUpdatesModalProps): React.JSX.Element | null;
|
|
42
49
|
/**
|
|
43
50
|
* The same renders tool as `HighlightUpdatesModal`, rendered INLINE for hosts
|
|
44
51
|
* that place tools in a panel rather than a modal. Exists so there is exactly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HighlightUpdatesModal.d.ts","sourceRoot":"","sources":["../../../../src/highlight-updates/components/HighlightUpdatesModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HighlightUpdatesModal.d.ts","sourceRoot":"","sources":["../../../../src/highlight-updates/components/HighlightUpdatesModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAiBxE,OAAO,EAAiB,KAAK,aAAa,EAAqE,MAAM,wBAAwB,CAAC;AAe9I,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAClD;AAcD,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,2BAAmC,EACnC,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,MAAc,GACf,EAAE,0BAA0B,4BAkmB5B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,GAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAM,qBAK/E;AAsCD,eAAe,qBAAqB,CAAC"}
|
|
@@ -78,6 +78,11 @@ export interface TrackedRender {
|
|
|
78
78
|
color: string;
|
|
79
79
|
lastRenderCause?: RenderCause;
|
|
80
80
|
renderHistory?: RenderEvent[];
|
|
81
|
+
/**
|
|
82
|
+
* Count of on-device history events. Set on WIRE-FORM snapshots when
|
|
83
|
+
* `renderHistory` itself is omitted (fetched via `getRenderDetail`).
|
|
84
|
+
*/
|
|
85
|
+
historyCount?: number;
|
|
81
86
|
}
|
|
82
87
|
export type FilterType = "any" | "viewType" | "testID" | "nativeID" | "component" | "accessibilityLabel";
|
|
83
88
|
export interface FilterPattern {
|
|
@@ -346,6 +351,11 @@ declare class RenderTrackerSingleton {
|
|
|
346
351
|
isTracking: boolean;
|
|
347
352
|
isPaused: boolean;
|
|
348
353
|
}): void;
|
|
354
|
+
/**
|
|
355
|
+
* Hydrate one mirrored render with on-demand detail (history / cause
|
|
356
|
+
* values) fetched via the adapter's `getRenderDetail`. Remote-mirror only.
|
|
357
|
+
*/
|
|
358
|
+
hydrateRender(render: TrackedRender): void;
|
|
349
359
|
/**
|
|
350
360
|
* Get filter config
|
|
351
361
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderTracker.d.ts","sourceRoot":"","sources":["../../../../src/highlight-updates/utils/RenderTracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC;AAGlE,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAGd,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AAEd;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IACjG,oCAAoC;IACpC,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IAInB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,GAAG,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE;QACb,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IAEd,eAAe,CAAC,EAAE,WAAW,CAAC;IAI9B,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RenderTracker.d.ts","sourceRoot":"","sources":["../../../../src/highlight-updates/utils/RenderTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TrackedRender } from "../highlight-updates/utils/RenderTracker";
|
|
1
2
|
/**
|
|
2
3
|
* Sync adapter for the highlight-updates tool, consumed by
|
|
3
4
|
* @buoy-gg/external-sync's `useExternalSync` (structurally matches its
|
|
@@ -9,6 +10,9 @@
|
|
|
9
10
|
* as a mirror. Mutations (toggle, freeze, clear, spotlight) come back as
|
|
10
11
|
* actions and run on the device; spotlight even highlights the component on
|
|
11
12
|
* the phone screen while browsing details from the desktop.
|
|
13
|
+
*
|
|
14
|
+
* v2: per-component `renderHistory` (and hook-change values on lastRenderCause)
|
|
15
|
+
* stay on the device. Dashboards fetch them via `getRenderDetail`.
|
|
12
16
|
*/
|
|
13
17
|
export declare const highlightUpdatesSyncAdapter: {
|
|
14
18
|
version: number;
|
|
@@ -16,7 +20,7 @@ export declare const highlightUpdatesSyncAdapter: {
|
|
|
16
20
|
enabled: boolean;
|
|
17
21
|
frozen: boolean;
|
|
18
22
|
highlightsSuppressed: boolean;
|
|
19
|
-
renders:
|
|
23
|
+
renders: TrackedRender[];
|
|
20
24
|
trackerState: {
|
|
21
25
|
isTracking: boolean;
|
|
22
26
|
isPaused: boolean;
|
|
@@ -24,15 +28,30 @@ export declare const highlightUpdatesSyncAdapter: {
|
|
|
24
28
|
};
|
|
25
29
|
subscribe: (onChange: () => void) => () => void;
|
|
26
30
|
actions: {
|
|
31
|
+
/**
|
|
32
|
+
* On-demand detail: one component's real renderHistory + lastRenderCause
|
|
33
|
+
* (including hookChanges). Wire-form snapshots omit those.
|
|
34
|
+
*/
|
|
35
|
+
getRenderDetail: (params?: unknown) => {
|
|
36
|
+
found: false;
|
|
37
|
+
reason: string;
|
|
38
|
+
nativeTag?: undefined;
|
|
39
|
+
render?: undefined;
|
|
40
|
+
} | {
|
|
41
|
+
found: true;
|
|
42
|
+
nativeTag: number;
|
|
43
|
+
render: TrackedRender;
|
|
44
|
+
reason?: undefined;
|
|
45
|
+
};
|
|
27
46
|
toggle: () => void;
|
|
28
|
-
setEnabled: (params
|
|
47
|
+
setEnabled: (params?: unknown) => void;
|
|
29
48
|
toggleFreeze: () => void;
|
|
30
49
|
clearRenderCounts: () => void;
|
|
31
|
-
setSpotlight: (params
|
|
32
|
-
locateComponent: (params
|
|
33
|
-
setSilentTracking: (params
|
|
50
|
+
setSpotlight: (params?: unknown) => void;
|
|
51
|
+
locateComponent: (params?: unknown) => Promise<import("../highlight-updates/utils/HighlightUpdatesController").LocateComponentResult>;
|
|
52
|
+
setSilentTracking: (params?: unknown) => void;
|
|
34
53
|
describeScreen: () => Promise<import("../highlight-updates/utils/screenElements").DescribeScreenResult>;
|
|
35
|
-
tapElement: (params
|
|
54
|
+
tapElement: (params?: unknown) => Promise<import("../highlight-updates/utils/screenElements").TapElementResult>;
|
|
36
55
|
};
|
|
37
56
|
};
|
|
38
57
|
//# sourceMappingURL=highlightUpdatesSyncAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlightUpdatesSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/highlightUpdatesSyncAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"highlightUpdatesSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/highlightUpdatesSyncAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,aAAa,EACd,MAAM,0CAA0C,CAAC;AAkElD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;0BAUhB,MAAM,IAAI;;QAc9B;;;WAGG;mCACwB,OAAO;;;;;;;;;;;;8BAcZ,OAAO;;;gCAYL,OAAO;mCASJ,OAAO;qCAQL,OAAO;;8BAad,OAAO;;CAEhC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/highlight-updates",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.19",
|
|
4
4
|
"description": "Render highlighter for React Native — see every render with its cause: mount, state, props, or parent. Part of Buoy devtools.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@buoy-gg/shared-ui": "^7.0.
|
|
30
|
-
"@buoy-gg/floating-tools-core": "^7.0.
|
|
29
|
+
"@buoy-gg/shared-ui": "^7.0.19",
|
|
30
|
+
"@buoy-gg/floating-tools-core": "^7.0.19"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@buoy-gg/license": "7.0.
|
|
33
|
+
"@buoy-gg/license": "7.0.19",
|
|
34
34
|
"react": "*",
|
|
35
35
|
"react-native": "*",
|
|
36
|
-
"@buoy-gg/core": "^7.0.
|
|
36
|
+
"@buoy-gg/core": "^7.0.19"
|
|
37
37
|
},
|
|
38
38
|
"peerDependenciesMeta": {
|
|
39
39
|
"@buoy-gg/core": {
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"@types/react": "^19.1.0",
|
|
45
45
|
"@types/react-native": "^0.73.0",
|
|
46
46
|
"typescript": "~5.8.3",
|
|
47
|
-
"@buoy-gg/license": "^7.0.
|
|
48
|
-
"@buoy-gg/core": "^7.0.
|
|
47
|
+
"@buoy-gg/license": "^7.0.19",
|
|
48
|
+
"@buoy-gg/core": "^7.0.19"
|
|
49
49
|
},
|
|
50
50
|
"react-native-builder-bob": {
|
|
51
51
|
"source": "src",
|
|
@@ -63,7 +63,12 @@
|
|
|
63
63
|
"sourceMaps": false
|
|
64
64
|
}
|
|
65
65
|
],
|
|
66
|
-
|
|
66
|
+
[
|
|
67
|
+
"typescript",
|
|
68
|
+
{
|
|
69
|
+
"project": "tsconfig.build.json"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
67
72
|
]
|
|
68
73
|
},
|
|
69
74
|
"repository": {
|