Skip to content

Commit c4fced4

Browse files
committed
fix: lift portals up to rendererFactory. all renderers share the same portals collection
1 parent 0840949 commit c4fced4

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export class NgtRendererFactory implements RendererFactory2 {
1919
private readonly document = inject(DOCUMENT);
2020

2121
private rendererMap = new Map<string, Renderer2>();
22+
private portals: NgtRendererNode[] = [];
2223

2324
createRenderer(hostElement: any, type: RendererType2 | null): Renderer2 {
2425
const delegateRenderer = this.delegateRendererFactory.createRenderer(hostElement, type);
@@ -31,6 +32,7 @@ export class NgtRendererFactory implements RendererFactory2 {
3132
const store = new NgtRendererStore({
3233
store: this.store,
3334
cdr: this.cdr,
35+
portals: this.portals,
3436
compoundPrefixes: this.compoundPrefixes,
3537
document: this.document,
3638
});
@@ -42,6 +44,7 @@ export class NgtRendererFactory implements RendererFactory2 {
4244
const store = new NgtRendererStore({
4345
store: this.store,
4446
cdr: this.cdr,
47+
portals: this.portals,
4548
compoundPrefixes: this.compoundPrefixes,
4649
document: this.document,
4750
});

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export type NgtRendererRootState = {
1313
cdr: ChangeDetectorRef;
1414
compoundPrefixes: string[];
1515
document: Document;
16+
portals: Array<NgtRendererNode>;
1617
};
1718

1819
export type NgtQueueOp = [type: 'op' | 'cleanUp', op: () => void, done?: true];
@@ -40,7 +41,6 @@ export type NgtRendererNode = {
4041

4142
export class NgtRendererStore {
4243
private readonly comments = [] as Array<NgtRendererNode>;
43-
private readonly portals = [] as Array<NgtRendererNode>;
4444

4545
constructor(private readonly root: NgtRendererRootState) {}
4646

@@ -262,6 +262,10 @@ export class NgtRendererStore {
262262
return this.root.cdr;
263263
}
264264

265+
get portals() {
266+
return this.root.portals;
267+
}
268+
265269
getClosestParentWithInstance(node: NgtRendererNode): NgtRendererNode | null {
266270
let parent = node.__ngt_renderer__[NgtRendererClassId.parent];
267271
while (parent && parent.__ngt_renderer__[NgtRendererClassId.type] !== 'three') {

0 commit comments

Comments
 (0)