Skip to content

Commit 97ace60

Browse files
Merge pull request #423 from preactjs/render-version
2 parents 5aceb1a + 3a9a381 commit 97ace60

10 files changed

Lines changed: 60 additions & 25 deletions

File tree

src/adapter/adapter/adapter.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ export interface InspectData {
3838
canSuspend: boolean;
3939
/** Only Suspense components have this */
4040
suspended: boolean;
41+
/** Preact version that rendered this VNode */
42+
version: string;
4143
}
4244

4345
export function createAdapter(

src/adapter/hook.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ export function createHook(port: PortPageHook): DevtoolsHook {
237237
idMapper,
238238
bindingsV10,
239239
roots,
240+
version,
240241
);
241242
setupOptionsV10(options, renderer, roots, config as any);
242243
return attachRenderer(renderer, supports);
@@ -256,6 +257,7 @@ export function createHook(port: PortPageHook): DevtoolsHook {
256257
idMapper,
257258
bindingsV11,
258259
roots,
260+
version,
259261
);
260262
setupOptionsV11(options as any, renderer, roots, config, profiler);
261263
return attachRenderer(renderer, {

src/adapter/protocol/events.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ describe("applyEvent", () => {
232232
type: "asd",
233233
canSuspend: false,
234234
suspended: false,
235+
version: "",
235236
};
236237

237238
const data = fromSnapshot([
@@ -259,6 +260,7 @@ describe("applyEvent", () => {
259260
type: "asd",
260261
canSuspend: false,
261262
suspended: false,
263+
version: "",
262264
};
263265

264266
store.sidebar.props.uncollapsed.value = ["a", "b", "c"];

src/adapter/shared/inspectVNode.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export function inspectVNode<T extends SharedVNode>(
2020
options: Options,
2121
id: ID,
2222
supportsHooks: boolean,
23+
version: string,
2324
): InspectData | null {
2425
const vnode = getVNodeById(ids, id);
2526
if (!vnode) return null;
@@ -74,5 +75,6 @@ export function inspectVNode<T extends SharedVNode>(
7475
// TODO: We're not using this information anywhere yet
7576
type: getDevtoolsType(vnode, bindings),
7677
suspended,
78+
version,
7779
};
7880
}

src/adapter/shared/renderer.test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export function setupMockHook(options: Options) {
3333
createIdMappingState(1, bindingsV10.getInstance),
3434
bindingsV10,
3535
roots,
36+
"",
3637
);
3738
const destroy = setupOptionsV10(options, renderer, roots, {
3839
Fragment: Fragment as any,

src/adapter/shared/renderer.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export function createRenderer<T extends SharedVNode>(
6767
ids: IdMappingState<T>,
6868
bindings: PreactBindings<T>,
6969
roots: Map<T, Node>,
70+
version: string,
7071
): Renderer<T> {
7172
let currentUnmounts: number[] = [];
7273
let prevOwners = new Map<T, T>();
@@ -108,7 +109,15 @@ export function createRenderer<T extends SharedVNode>(
108109
}
109110

110111
const inspect = (id: ID) => {
111-
return inspectVNode(ids, config, bindings, options, id, supports.hooks);
112+
return inspectVNode(
113+
ids,
114+
config,
115+
bindings,
116+
options,
117+
id,
118+
supports.hooks,
119+
version,
120+
);
112121
};
113122

114123
return {

src/adapter/store.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ describe("Store", () => {
8585
state: null,
8686
suspended: false,
8787
type: 1,
88+
version: "",
8889
};
8990
store.clear();
9091
expect(store.inspectData.value).to.equal(null);

src/view/components/Devtools.module.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ input {
2424
padding: 0;
2525
}
2626

27-
.root p {
28-
margin-top: 0;
27+
p {
28+
margin: 0;
2929
}
3030

3131
.theme {

src/view/components/devtools.css

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,10 @@
423423
/**
424424
* RenderedAt panel
425425
*/
426+
.rendered-by-wrapper {
427+
margin-left: 0.3rem;
428+
}
429+
426430
.rendered-at-item {
427431
background: none;
428432
border: none;
@@ -432,7 +436,7 @@
432436
display: flex;
433437
align-items: center;
434438
font-size: var(--font-small);
435-
padding: 0.25rem 0.5rem;
439+
padding: 0.25rem 1rem;
436440
cursor: pointer;
437441
border-radius: 0.1875rem;
438442
}
@@ -448,6 +452,14 @@
448452
display: block;
449453
}
450454

455+
.sidebar-preact-version {
456+
color: var(--color-text);
457+
font-size: var(--font-small);
458+
margin-top: 0.5rem;
459+
margin-left: 1rem;
460+
display: block;
461+
}
462+
451463
/**
452464
* HOC panel
453465
*/
@@ -619,10 +631,6 @@
619631
padding: 0.25rem 0 0 0.25rem;
620632
}
621633

622-
.sidebar-panel-empty {
623-
padding-left: 1.4rem;
624-
}
625-
626634
.sidebar-nav-panel-content {
627635
padding-left: 0.4rem;
628636
}
@@ -1096,6 +1104,10 @@
10961104
font-weight: lighter;
10971105
}
10981106

1107+
.settings-tab p {
1108+
margin-top: 0;
1109+
}
1110+
10991111
.settings-tab-message {
11001112
margin-left: 1.25rem;
11011113
margin-top: 0.5rem;

src/view/components/elements/OwnerInfo.tsx

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,27 @@ export function OwnerInfo() {
3333

3434
return (
3535
<SidebarPanel title="Rendered by">
36-
<nav data-testid="owners">
37-
{data.length === 0 && <p class="sidebar-panel-empty">-</p>}
38-
{data.map(node => {
39-
return (
40-
<button
41-
key={node.id}
42-
class="rendered-at-item"
43-
data-active={selectedId === node.id}
44-
onClick={() => {
45-
store.selection.selectById(node.id);
46-
}}
47-
>
48-
{node.name}
49-
</button>
50-
);
51-
})}
52-
</nav>
36+
<div class="rendered-by-wrapper">
37+
<nav data-testid="owners">
38+
{data.map(node => {
39+
return (
40+
<button
41+
key={node.id}
42+
class="rendered-at-item"
43+
data-active={selectedId === node.id}
44+
onClick={() => {
45+
store.selection.selectById(node.id);
46+
}}
47+
>
48+
{node.name}
49+
</button>
50+
);
51+
})}
52+
</nav>
53+
<p class="sidebar-preact-version">
54+
Preact@{store.inspectData.value?.version || ""}
55+
</p>
56+
</div>
5357
</SidebarPanel>
5458
);
5559
}

0 commit comments

Comments
 (0)