Skip to content

Commit 614f698

Browse files
committed
fix: clean up renderer more
1 parent 49d4d2a commit 614f698

File tree

1 file changed

+11
-27
lines changed

1 file changed

+11
-27
lines changed

libs/angular-three/src/lib/renderer/renderer.ts

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,23 @@ export class NgtRendererFactory implements RendererFactory2 {
2929

3030
private rendererMap = new Map<string, Renderer2>();
3131
private portals: NgtRendererNode[] = [];
32+
private rendererStore = new NgtRendererStore({
33+
store: this.store,
34+
cdr: this.cdr,
35+
portals: this.portals,
36+
compoundPrefixes: this.compoundPrefixes,
37+
document: this.document,
38+
});
3239

3340
createRenderer(hostElement: any, type: RendererType2 | null): Renderer2 {
3441
const delegateRenderer = this.delegateRendererFactory.createRenderer(hostElement, type);
3542
if (!type) return delegateRenderer;
3643

3744
let renderer = this.rendererMap.get(type.id);
38-
if (renderer) return renderer;
39-
40-
if (!hostElement) {
41-
const store = new NgtRendererStore({
42-
store: this.store,
43-
cdr: this.cdr,
44-
portals: this.portals,
45-
compoundPrefixes: this.compoundPrefixes,
46-
document: this.document,
47-
});
48-
renderer = new NgtRenderer(delegateRenderer, store, this.catalogue);
49-
this.rendererMap.set(type.id, renderer);
50-
}
51-
5245
if (!renderer) {
53-
const store = new NgtRendererStore({
54-
store: this.store,
55-
cdr: this.cdr,
56-
portals: this.portals,
57-
compoundPrefixes: this.compoundPrefixes,
58-
document: this.document,
59-
});
60-
renderer = new NgtRenderer(delegateRenderer, store, this.catalogue, false);
46+
renderer = new NgtRenderer(delegateRenderer, this.rendererStore, this.catalogue, !hostElement);
6147
this.rendererMap.set(type.id, renderer);
6248
}
63-
6449
return renderer;
6550
}
6651
}
@@ -69,20 +54,19 @@ export class NgtRendererFactory implements RendererFactory2 {
6954
* Anything abbreviated with rS/RS stands for RendererState
7055
*/
7156
export class NgtRenderer implements Renderer2 {
72-
private first = false;
7357
constructor(
7458
private readonly delegate: Renderer2,
7559
private readonly store: NgtRendererStore,
7660
private readonly catalogue: Record<string, new (...args: any[]) => any>,
77-
private readonly root = true
61+
private root = true
7862
) {}
7963

8064
createElement(name: string, namespace?: string | null | undefined) {
8165
const element = this.delegate.createElement(name, namespace);
8266

8367
// on first pass, we return the Root Scene as the root node
84-
if (this.root && !this.first) {
85-
this.first = true;
68+
if (this.root) {
69+
this.root = false;
8670
const node = this.store.createNode('three', this.store.rootScene);
8771
node.__ngt_renderer__[NgtRendererClassId.injectorFactory] = () => getDebugNode(element)!.injector;
8872
return node;

0 commit comments

Comments
 (0)