11import { DOCUMENT } from '@angular/common' ;
22import {
33 DebugNode ,
4- ElementRef ,
54 Injectable ,
65 Renderer2 ,
76 RendererFactory2 ,
@@ -11,7 +10,6 @@ import {
1110 makeEnvironmentProviders ,
1211 untracked ,
1312} from '@angular/core' ;
14- import { Object3D } from 'three' ;
1513import { NgtArgs } from '../directives/args' ;
1614import { NgtParent } from '../directives/parent' ;
1715import { getLocalState , prepare } from '../instance' ;
@@ -154,10 +152,7 @@ export class NgtRenderer implements Renderer2 {
154152 const primitiveNode = createNode ( 'three' , object , this . document ) ;
155153
156154 if ( injectedParent ) {
157- const resolvedParent = this . getParentFromNgtParent ( injectedParent , this . rootStore ) ;
158- if ( resolvedParent ) {
159- primitiveNode . __ngt_renderer__ [ NgtRendererClassId . parent ] = resolvedParent as unknown as NgtRendererNode ;
160- }
155+ primitiveNode . __ngt_renderer__ [ NgtRendererClassId . parent ] = injectedParent as unknown as NgtRendererNode ;
161156 }
162157
163158 return primitiveNode ;
@@ -180,10 +175,7 @@ export class NgtRenderer implements Renderer2 {
180175 }
181176
182177 if ( injectedParent ) {
183- const resolvedParent = this . getParentFromNgtParent ( injectedParent , this . rootStore ) ;
184- if ( resolvedParent ) {
185- node . __ngt_renderer__ [ NgtRendererClassId . parent ] = resolvedParent as unknown as NgtRendererNode ;
186- }
178+ node . __ngt_renderer__ [ NgtRendererClassId . parent ] = injectedParent as unknown as NgtRendererNode ;
187179 }
188180
189181 return node ;
@@ -204,11 +196,8 @@ export class NgtRenderer implements Renderer2 {
204196 this . argsCommentNodes . push ( comment ) ;
205197 } else if ( node === 'parent' ) {
206198 this . parentCommentNodes . push ( comment ) ;
207- comment [ SPECIAL_INTERNAL_SET_PARENT_COMMENT ] = ( ngtParent : Object3D | ElementRef < Object3D > | string ) => {
208- commentNode . __ngt_renderer__ [ NgtRendererClassId . parent ] = this . getParentFromNgtParent (
209- ngtParent ,
210- this . rootStore ,
211- ) as unknown as NgtRendererNode ;
199+ comment [ SPECIAL_INTERNAL_SET_PARENT_COMMENT ] = ( ngtParent : NgtRendererNode ) => {
200+ commentNode . __ngt_renderer__ [ NgtRendererClassId . parent ] = ngtParent ;
212201 } ;
213202 } else if ( typeof node === 'object' ) {
214203 this . portalCommentsNodes . push ( node ) ;
@@ -700,94 +689,6 @@ export class NgtRenderer implements Renderer2 {
700689 return directiveInstance ;
701690 }
702691
703- private getParentFromNgtParent ( ngtParent : Object3D | ElementRef < Object3D > | string , store : NgtSignalStore < NgtState > ) {
704- let topMostStore = store ;
705-
706- while ( topMostStore . snapshot . previousRoot ) {
707- topMostStore = topMostStore . snapshot . previousRoot ;
708- }
709-
710- const scene = topMostStore . snapshot . scene ;
711-
712- if ( typeof ngtParent === 'string' ) {
713- return scene . getObjectByName ( ngtParent ) ;
714- }
715-
716- if ( 'nativeElement' in ngtParent ) {
717- return ngtParent . nativeElement ;
718- }
719-
720- return ngtParent ;
721- }
722-
723- private getNgtParent ( ) {
724- let directive : NgtParent | undefined ;
725-
726- const destroyed = [ ] ;
727-
728- let i = this . parentCommentNodes . length - 1 ;
729- while ( i >= 0 ) {
730- const comment = this . parentCommentNodes [ i ] ;
731- if ( comment . __ngt_renderer__ [ NgtRendererClassId . destroyed ] ) {
732- destroyed . push ( i ) ;
733- i -- ;
734- continue ;
735- }
736- const injector = comment . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] ?.( ) ?. injector ;
737- if ( ! injector ) {
738- i -- ;
739- continue ;
740- }
741- const instance = injector . get ( NgtParent , null ) ;
742- if ( instance && instance . validate ( ) ) {
743- directive = instance ;
744- break ;
745- }
746-
747- i -- ;
748- }
749-
750- destroyed . forEach ( ( index ) => {
751- this . parentCommentNodes . splice ( index , 1 ) ;
752- } ) ;
753-
754- return directive ;
755- }
756-
757- private getNgtArgs ( ) {
758- let directive : NgtArgs | undefined ;
759-
760- const destroyed = [ ] ;
761-
762- let i = this . argsCommentNodes . length - 1 ;
763- while ( i >= 0 ) {
764- const comment = this . argsCommentNodes [ i ] ;
765- if ( comment . __ngt_renderer__ [ NgtRendererClassId . destroyed ] ) {
766- destroyed . push ( i ) ;
767- i -- ;
768- continue ;
769- }
770- const injector = comment . __ngt_renderer__ [ NgtRendererClassId . debugNodeFactory ] ?.( ) ?. injector ;
771- if ( ! injector ) {
772- i -- ;
773- continue ;
774- }
775- const instance = injector . get ( NgtArgs , null ) ;
776- if ( instance && instance . validate ( ) ) {
777- directive = instance ;
778- break ;
779- }
780-
781- i -- ;
782- }
783-
784- destroyed . forEach ( ( index ) => {
785- this . argsCommentNodes . splice ( index , 1 ) ;
786- } ) ;
787-
788- return directive ;
789- }
790-
791692 createText = this . delegate . createText . bind ( this . delegate ) ;
792693 destroy = this . delegate . destroy . bind ( this . delegate ) ;
793694 destroyNode : ( ( node : any ) => void ) | null = null ;
0 commit comments