Skip to content

Commit 4375880

Browse files
committed
fix
1 parent 10663a9 commit 4375880

File tree

3 files changed

+63
-42
lines changed

3 files changed

+63
-42
lines changed

ember_debug/libs/render-tree.js

+40-38
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,25 @@ class InElementSupportProvider {
3333
const NewElementBuilder = this.NewElementBuilder;
3434
const remoteStack = [];
3535

36+
function createRef(value) {
37+
if (self.reference.createUnboundRef) {
38+
return self.reference.createUnboundRef(value);
39+
} else {
40+
return new self.reference.ConstReference(value);
41+
}
42+
}
43+
3644
const didAppendNode = NewElementBuilder.prototype.didAppendNode;
3745
NewElementBuilder.prototype.didAppendNode = function (...args) {
38-
const debugRenderTree =
39-
this.env?.debugRenderTree || this.env?.extra?.debugRenderTree;
46+
const debugRenderTree = self.debugRenderTree;
4047
const parent = debugRenderTree.stack.current;
4148
args[0].__emberInspectorParentNode = debugRenderTree.nodeFor(parent);
4249
return didAppendNode.call(this, ...args);
4350
};
4451

4552
const pushElement = NewElementBuilder.prototype.pushElement;
4653
NewElementBuilder.prototype.pushElement = function (...args) {
47-
const debugRenderTree =
48-
this.env?.debugRenderTree || this.env?.extra?.debugRenderTree;
49-
// for first push element, .env is not yet set...
54+
const debugRenderTree = self.debugRenderTree;
5055
if (debugRenderTree) {
5156
const parent = debugRenderTree.stack.current;
5257
args[0].__emberInspectorParentNode = debugRenderTree.nodeFor(parent);
@@ -55,54 +60,51 @@ class InElementSupportProvider {
5560
};
5661

5762
const pushRemoteElement = NewElementBuilder.prototype.pushRemoteElement;
58-
NewElementBuilder.prototype.pushRemoteElement = function (...args) {
59-
const element = args[0];
60-
remoteStack.push({});
61-
let capturedArgs, ref;
62-
if (self.reference.createUnboundRef) {
63-
ref = self.reference.createUnboundRef?.(element);
64-
capturedArgs = {
65-
positional: [],
66-
named: {
67-
destination: ref,
68-
},
69-
};
70-
} else {
71-
ref = new self.reference.ConstReference(() => element);
72-
capturedArgs = {
73-
value() {
74-
return {
75-
positional: [],
76-
named: {
77-
destination: ref,
78-
},
79-
};
80-
},
81-
};
63+
NewElementBuilder.prototype.pushRemoteElement = function (
64+
element,
65+
guid,
66+
insertBefore
67+
) {
68+
remoteStack.push({ element });
69+
const ref = createRef(element);
70+
const capturedArgs = {
71+
positional: [ref],
72+
named: {},
73+
};
74+
if (insertBefore) {
75+
capturedArgs.named.insertBefore = insertBefore;
8276
}
83-
const debugRenderTree =
84-
this.env?.debugRenderTree || this.env?.extra?.debugRenderTree;
77+
const inElementArgs = self.reference.createUnboundRef
78+
? capturedArgs
79+
: {
80+
value() {
81+
return capturedArgs;
82+
},
83+
};
84+
const debugRenderTree = self.debugRenderTree;
8585
debugRenderTree?.create(remoteStack.at(-1), {
86-
type: 'remote-element',
86+
type: 'keyword',
8787
name: 'in-element',
88-
args: capturedArgs,
88+
args: inElementArgs,
8989
instance: {
9090
args: {
91-
destination: element,
91+
named: {
92+
insertBefore,
93+
},
94+
positional: [element],
9295
},
9396
constructor: {
9497
name: 'InElement',
9598
},
9699
},
97100
});
98-
return pushRemoteElement.call(this, ...args);
101+
return pushRemoteElement.call(this, element, guid, insertBefore);
99102
};
100103

101104
const popRemoteElement = NewElementBuilder.prototype.popRemoteElement;
102105
NewElementBuilder.prototype.popRemoteElement = function (...args) {
103106
const element = this.element;
104-
const debugRenderTree =
105-
this.env?.debugRenderTree || this.env?.extra?.debugRenderTree;
107+
const debugRenderTree = self.debugRenderTree;
106108
debugRenderTree?.didRender(remoteStack.at(-1), {
107109
parentElement: () => element.parentElement,
108110
firstNode: () => element,
@@ -409,7 +411,7 @@ export default class RenderTree {
409411

410412
if (serialized === undefined) {
411413
this.nodes[node.id] = node;
412-
if (node.type === 'remote-element') {
414+
if (node.type === 'keyword') {
413415
node.type = 'component';
414416
this.inElementSupport?.nodeMap.set(node, node.id);
415417
this.inElementSupport?.remoteRoots.push(node);

tests/ember_debug/view-debug-test.js

+22-3
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ async function digDeeper(objectId, property) {
7373
});
7474
}
7575

76+
async function inspectById(objectId) {
77+
return await captureMessage('objectInspector:updateObject', async () => {
78+
EmberDebug.port.trigger('objectInspector:inspectById', {
79+
objectId,
80+
});
81+
});
82+
}
83+
7684
async function getRenderTree() {
7785
let message = await captureMessage('view:renderTree', async () => {
7886
EmberDebug.port.trigger('view:getTree', {});
@@ -652,7 +660,18 @@ module('Ember Debug - View', function (hooks) {
652660
Component(
653661
{
654662
name: 'in-element',
655-
args: Args({ names: ['destination'], positionals: 0 }),
663+
args: (actual) => {
664+
QUnit.assert.ok(actual.positional[0]);
665+
async function testArgsValue() {
666+
const value = await inspectById(actual.positional[0].id);
667+
QUnit.assert.equal(
668+
value.details[1].name,
669+
'HTMLDivElement',
670+
'in-element args value inspect should be correct'
671+
);
672+
}
673+
argsTestPromise = testArgsValue();
674+
},
656675
template: null,
657676
},
658677
Component({
@@ -712,7 +731,7 @@ module('Ember Debug - View', function (hooks) {
712731
Component(
713732
{
714733
name: 'in-element',
715-
args: Args({ names: ['destination'], positionals: 0 }),
734+
args: Args({ names: [], positionals: 1 }),
716735
template: null,
717736
},
718737
Component({
@@ -951,7 +970,7 @@ module('Ember Debug - View', function (hooks) {
951970

952971
assert
953972
.dom('.ember-inspector-tooltip-header', tooltip)
954-
.hasText('<InElement>');
973+
.hasText('{{in-element}}');
955974

956975
let actual = highlight.getBoundingClientRect();
957976
let expected = inElement.getBoundingClientRect();

tests/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<div id="ember-testing"></div>
4242
</div>
4343
</div>
44-
44+
4545
<script src="/testem.js" integrity="" data-embroider-ignore></script>
4646
<script src="{{rootURL}}assets/vendor.js"></script>
4747
<script src="{{rootURL}}assets/test-support.js"></script>

0 commit comments

Comments
 (0)