Skip to content
This repository was archived by the owner on Sep 21, 2021. It is now read-only.

Commit 9dcb556

Browse files
committed
Add a new BLOCK node type in the ObjectInspector.
Fixes #940.
1 parent eb547c2 commit 9dcb556

6 files changed

Lines changed: 63 additions & 2 deletions

File tree

packages/devtools-reps/src/object-inspector/component.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const {
3636
getValue,
3737
nodeHasAccessors,
3838
nodeHasProperties,
39+
nodeIsBlock,
3940
nodeIsDefaultProperties,
4041
nodeIsFunction,
4142
nodeIsGetter,
@@ -359,7 +360,8 @@ class ObjectInspector extends Component {
359360
&& nodeIsWindow(item)
360361
&& depth === 0
361362
)
362-
)
363+
),
364+
block: nodeIsBlock(item)
363365
}),
364366
onClick: e => {
365367
e.stopPropagation();

packages/devtools-reps/src/object-inspector/index.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@
2222
color: var(--theme-comment);
2323
}
2424

25+
.tree.object-inspector .block .object-label,
26+
.tree.object-inspector .block .object-label * {
27+
color: var(--grey-90, #0c0c0d);
28+
font-weight: bold;
29+
}
30+
31+
.tree.object-inspector .block .object-label:before {
32+
content: "☲ ";
33+
}
34+
2535
.object-inspector .object-delimiter {
2636
color: var(--theme-comment);
2737
}

packages/devtools-reps/src/object-inspector/tests/component/__snapshots__/basic.js.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ exports[`ObjectInspector - renders renders as expected 4`] = `"▶︎ {…}"`;
1010

1111
exports[`ObjectInspector - renders renders as expected when not provided a name 1`] = `"▶︎ Object { p0: \\"0\\", p1: \\"1\\", p2: \\"2\\", … }"`;
1212

13+
exports[`ObjectInspector - renders renders block nodes as expected 1`] = `
14+
"▼ ☲ Block
15+
| a: 30
16+
| b: 32"
17+
`;
18+
1319
exports[`ObjectInspector - renders renders objects as expected when provided a name 1`] = `"▶︎ myproperty: Object { p0: \\"0\\", p1: \\"1\\", p2: \\"2\\", … }"`;
1420

1521
exports[`ObjectInspector - renders renders primitives as expected when provided a name 1`] = `" myproperty: 42"`;

packages/devtools-reps/src/object-inspector/tests/component/basic.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,36 @@ describe("ObjectInspector - renders", () => {
240240
expect(protoElementNode.hasClass("lessen")).toBe(false);
241241
});
242242

243+
it("renders block nodes as expected", () => {
244+
const blockNode = createNode(
245+
null,
246+
"Block",
247+
"/block-1",
248+
[{
249+
name: "a",
250+
contents: {
251+
value: 30,
252+
}
253+
}, {
254+
name: "b",
255+
contents: {
256+
value: 32,
257+
}
258+
}],
259+
NODE_TYPES.BLOCK
260+
);
261+
262+
let oi = mount(ObjectInspector(generateDefaults({
263+
roots: [blockNode],
264+
autoExpandDepth: 1,
265+
})));
266+
267+
let blockElementNode = oi.find(".node").first();
268+
expect(blockElementNode.hasClass("block")).toBe(true);
269+
270+
expect(formatObjectInspector(oi)).toMatchSnapshot();
271+
});
272+
243273
it("updates when the root changes", () => {
244274
let oi = mount(ObjectInspector(generateDefaults({
245275
roots: [{

packages/devtools-reps/src/object-inspector/tests/test-utils.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ function formatObjectInspector(wrapper: Object) {
3434
} else {
3535
arrowStr = " ";
3636
}
37-
return `${indentStr}${arrowStr}${getSanitizedNodeText(node)}`;
37+
38+
let icon = "";
39+
if (node.find(".node").first().hasClass("block")) {
40+
icon = "☲ ";
41+
}
42+
return `${indentStr}${arrowStr}${icon}${getSanitizedNodeText(node)}`;
3843
})
3944
.join("\n");
4045
}

packages/devtools-reps/src/object-inspector/utils/node.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const NODE_TYPES = {
2727
PROXY_TARGET: Symbol("<target>"),
2828
SET: Symbol("<set>"),
2929
PROTOTYPE: Symbol("__proto__"),
30+
BLOCK: Symbol("☲"),
3031
};
3132

3233
import type {
@@ -201,6 +202,12 @@ function nodeIsSetter(
201202
return getType(item) === NODE_TYPES.SET;
202203
}
203204

205+
function nodeIsBlock(
206+
item: Node
207+
) {
208+
return getType(item) === NODE_TYPES.BLOCK;
209+
}
210+
204211
function nodeHasAccessors(item: Node) : boolean {
205212
return !!getNodeGetter(item) || !!getNodeSetter(item);
206213
}
@@ -800,6 +807,7 @@ module.exports = {
800807
nodeHasChildren,
801808
nodeHasEntries,
802809
nodeHasProperties,
810+
nodeIsBlock,
803811
nodeIsBucket,
804812
nodeIsDefaultProperties,
805813
nodeIsEntries,

0 commit comments

Comments
 (0)