angular-three 4.2.2 → 4.2.4-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three",
3
- "version": "4.2.2",
3
+ "version": "4.2.4-next.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -42,9 +42,8 @@ declare function createPointerEvents(store: SignalState<NgtState>): NgtEventMana
42
42
  * ```
43
43
  */
44
44
  declare class NgtCanvasContent {
45
- private canvas;
46
45
  constructor();
47
- static ngTemplateContextGuard(_: NgtCanvasContent, ctx: unknown): ctx is {
46
+ static ngTemplateContextGuard(_: NgtCanvasContent, _ctx: unknown): _ctx is {
48
47
  $implicit: HTMLCanvasElement;
49
48
  host: HTMLElement;
50
49
  };
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Injector, Signal, WritableSignal, ElementRef, Provider, ProviderToken, Type, AbstractType, InjectionToken, ResourceRef, RendererFactory2, RendererType2, Renderer2, ChangeDetectorRef, InjectOptions, OutputEmitterRef, ValueEqualityFn } from '@angular/core';
2
+ import { Injector, Signal, WritableSignal, ElementRef, Provider, ProviderToken, Type, AbstractType, InjectionToken, ResourceRef, RendererFactory2, RendererType2, Renderer2, RendererStyleFlags2, ChangeDetectorRef, InjectOptions, OutputEmitterRef, ValueEqualityFn } from '@angular/core';
3
3
  import * as THREE from 'three';
4
4
  import { Object3D } from 'three';
5
5
  import { Observable } from 'rxjs';
@@ -22,6 +22,7 @@ import * as angular_three from 'angular-three';
22
22
  declare abstract class NgtCommonDirective<TValue> {
23
23
  private vcr;
24
24
  private template;
25
+ private renderer;
25
26
  protected injector: Injector;
26
27
  protected injected: boolean;
27
28
  protected injectedValue: TValue | null;
@@ -553,7 +554,7 @@ interface NgtInstanceState<TObject extends NgtAnyRecord = NgtAnyRecord> {
553
554
  object: TObject & {
554
555
  __ngt__?: NgtInstanceState<TObject>;
555
556
  };
556
- add: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
557
+ add: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects', before?: NgtInstanceNode | null) => void;
557
558
  remove: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
558
559
  setParent: (parent: NgtInstanceNode | null) => void;
559
560
  updateGeometryStamp: () => void;
@@ -680,7 +681,7 @@ interface NgtState {
680
681
  previousRoot: SignalState<NgtState> | null;
681
682
  /** Internals */
682
683
  internal: NgtInternalState;
683
- /** maxSkipCount from renderer options */
684
+ /** @deprecated Retained for compatibility; ancestor notifications are microtask-batched. */
684
685
  maxNotificationSkipCount?: number;
685
686
  }
686
687
  interface NgtCanvasOptions {
@@ -736,7 +737,6 @@ declare class NgtParent extends NgtCommonDirective<THREE.Object3D | null | undef
736
737
  protected shouldSkipRender: _angular_core.Signal<boolean>;
737
738
  constructor();
738
739
  validate(): boolean;
739
- protected beforeCreateView(): void;
740
740
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtParent, never>;
741
741
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgtParent, "ng-template[parent]", never, { "parent": { "alias": "parent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
742
742
  }
@@ -831,24 +831,12 @@ declare function createEvents(store: SignalState<NgtState>): {
831
831
  */
832
832
  /** Flag indicating a node is managed by the Angular Three renderer */
833
833
  declare const NGT_RENDERER_NODE_FLAG = "__ngt_renderer__";
834
- /** Flag for canvas content template comments */
835
- declare const NGT_CANVAS_CONTENT_FLAG = "__ngt_renderer_canvas_content__";
836
- /** Flag for portal content template comments */
837
- declare const NGT_PORTAL_CONTENT_FLAG = "__ngt_renderer_portal_content__";
838
- /** Flag for args directive comments */
839
- declare const NGT_ARGS_FLAG = "__ngt_renderer_args__";
840
- /** Flag for parent directive comments */
841
- declare const NGT_PARENT_FLAG = "__ngt_renderer_parent__";
842
- /** Internal flag for adding comment nodes */
843
- declare const NGT_INTERNAL_ADD_COMMENT_FLAG = "__ngt_renderer_add_comment__";
844
- /** Internal flag for setting parent on comment nodes */
845
- declare const NGT_INTERNAL_SET_PARENT_COMMENT_FLAG = "__ngt_renderer_set_parent_comment__";
834
+ /** Internal hook for scoping structural directive context to embedded view creation */
835
+ declare const NGT_RENDERER_CONTEXT_FLAG = "__ngt_renderer_context__";
846
836
  /** Flag for getting node attributes */
847
837
  declare const NGT_GET_NODE_ATTRIBUTE_FLAG = "__ngt_get_node_attribute__";
848
838
  /** Flag for DOM parent element reference */
849
839
  declare const NGT_DOM_PARENT_FLAG = "__ngt_dom_parent__";
850
- /** Flag indicating the delegate renderer's destroyNode has been patched */
851
- declare const NGT_DELEGATE_RENDERER_DESTROY_NODE_PATCHED_FLAG = "__ngt_delegate_renderer_destroy_node_patched__";
852
840
  /** Flag for HTML directive classes */
853
841
  declare const NGT_HTML_FLAG = "__ngt_html__";
854
842
  /** Native Three.js EventDispatcher events */
@@ -897,12 +885,14 @@ declare function provideHTMLDomElement<TDeps extends Array<ProviderToken<any>>,
897
885
  */
898
886
  declare abstract class NgtHTML {
899
887
  static [NGT_HTML_FLAG]: boolean;
900
- protected domElement: HTMLElement | "gl" | null;
888
+ protected domElement: "gl" | HTMLElement | null;
901
889
  constructor();
902
890
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtHTML, never>;
903
891
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgtHTML, never, never, {}, {}, never, never, true, never>;
904
892
  }
905
893
 
894
+ /** RFC 4122 v4 UUID — safe in non-secure contexts (e.g. http:// on LAN). */
895
+ declare function uuidv4Fallback(): string;
906
896
  /**
907
897
  * @deprecated Use `getInstanceState` instead. Will be removed in 5.0.0
908
898
  * @param obj - The object to get local state from
@@ -968,6 +958,8 @@ declare function invalidateInstance<TInstance extends NgtAnyRecord>(instance: Ng
968
958
  * ```
969
959
  */
970
960
  declare function prepare<TInstance extends NgtAnyRecord = NgtAnyRecord>(object: TInstance, type: string, instanceState?: Partial<NgtInstanceState>): NgtInstanceNode<TInstance>;
961
+ /** @internal */
962
+ declare function flushAncestorNotifications(): void;
971
963
 
972
964
  /**
973
965
  * Generates a unique identifier.
@@ -1009,7 +1001,7 @@ declare function makeRendererInstance<TCanvas extends NgtCanvasElement>(glOption
1009
1001
  * @param size - The viewport size for calculating aspect ratio
1010
1002
  * @returns Either an OrthographicCamera or PerspectiveCamera
1011
1003
  */
1012
- declare function makeCameraInstance(isOrthographic: boolean, size: NgtSize): THREE.PerspectiveCamera | THREE.OrthographicCamera;
1004
+ declare function makeCameraInstance(isOrthographic: boolean, size: NgtSize): THREE.OrthographicCamera | THREE.PerspectiveCamera;
1013
1005
  /**
1014
1006
  * Type representing a parsed object graph from a loaded 3D model.
1015
1007
  *
@@ -1071,6 +1063,11 @@ type NgtLoaderReturnType<T, L extends NgtLoaderProto<T>> = T extends unknown ? A
1071
1063
  type NgtLoaderExtensions<T extends {
1072
1064
  prototype: NgtLoaderProto<any>;
1073
1065
  }> = (loader: T['prototype']) => void;
1066
+ /**
1067
+ * Semantic components that identify a configured loader. Tuple entries use
1068
+ * value identity for primitives and reference identity for objects/functions.
1069
+ */
1070
+ type NgtLoaderCacheKey = readonly unknown[];
1074
1071
  /**
1075
1072
  * Conditional type utility.
1076
1073
  */
@@ -1092,14 +1089,20 @@ type NgtLoaderResults<TInput extends string | string[] | Record<string, string>,
1092
1089
  * @deprecated Use loaderResource instead. Will be removed in v5.0.0
1093
1090
  * @since v4.0.0~
1094
1091
  */
1095
- declare function _injectLoader<TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>, TReturn = NgtLoaderReturnType<TData, TLoaderConstructor>>(loaderConstructorFactory: (inputs: string[]) => TLoaderConstructor, inputs: () => TUrl, { extensions, onProgress, onLoad, injector, }?: {
1092
+ declare function _injectLoader<TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>, TReturn = NgtLoaderReturnType<TData, TLoaderConstructor>>(loaderConstructorFactory: (inputs: string[]) => TLoaderConstructor, inputs: () => TUrl, { extensions, cacheKey, onProgress, onLoad, injector, }?: {
1096
1093
  extensions?: NgtLoaderExtensions<TLoaderConstructor>;
1094
+ /**
1095
+ * Semantic loader configuration. Supply this when an extension's captured
1096
+ * configuration can change, or when equivalent extension closures should
1097
+ * share preloaded results. Configured requests without a key are isolated.
1098
+ */
1099
+ cacheKey?: () => NgtLoaderCacheKey;
1097
1100
  onProgress?: (event: ProgressEvent) => void;
1098
1101
  onLoad?: (data: NoInfer<TReturn>) => void;
1099
1102
  injector?: Injector;
1100
1103
  }): Signal<NgtLoaderResults<TUrl, NgtBranchingReturn<TReturn, NgtGLTFLike, NgtGLTFLike & NgtObjectMap>> | null>;
1101
1104
  declare namespace _injectLoader {
1102
- var preload: <TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>>(loaderConstructorFactory: (inputs: string[]) => TLoaderConstructor, inputs: () => TUrl, extensions?: NgtLoaderExtensions<TLoaderConstructor>, onLoad?: (data: NoInfer<TData>) => void) => void;
1105
+ var preload: <TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>>(loaderConstructorFactory: (inputs: string[]) => TLoaderConstructor, inputs: () => TUrl, extensions?: NgtLoaderExtensions<TLoaderConstructor>, onLoad?: (data: NoInfer<TData>) => void, cacheKey?: () => NgtLoaderCacheKey) => void;
1103
1106
  var destroy: () => void;
1104
1107
  var clear: (urls: string | string[]) => void;
1105
1108
  }
@@ -1147,14 +1150,21 @@ declare const injectLoader: NgtInjectedLoader;
1147
1150
  * }
1148
1151
  * ```
1149
1152
  */
1150
- declare function loaderResource<TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>, TReturn = NgtLoaderReturnType<TData, TLoaderConstructor>>(loaderConstructorFactory: (url: TUrl) => TLoaderConstructor, input: () => TUrl, { extensions, onLoad, onProgress, injector, }?: {
1153
+ declare function loaderResource<TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>, TReturn = NgtLoaderReturnType<TData, TLoaderConstructor>>(loaderConstructorFactory: (url: TUrl) => TLoaderConstructor, input: () => TUrl, { extensions, cacheKey, onLoad, onProgress, injector, }?: {
1151
1154
  extensions?: NgtLoaderExtensions<TLoaderConstructor>;
1155
+ /**
1156
+ * Semantic loader configuration. Components are compared by primitive value
1157
+ * or object/function identity. Required when captured extension configuration
1158
+ * changes, and useful for sharing equivalent preload/load closures. Configured
1159
+ * requests without a key are isolated.
1160
+ */
1161
+ cacheKey?: () => NgtLoaderCacheKey;
1152
1162
  onLoad?: (data: NoInfer<NgtLoaderResults<TUrl, NgtBranchingReturn<TReturn, NgtGLTFLike, NgtGLTFLike & NgtObjectMap>>>) => void;
1153
1163
  onProgress?: (event: ProgressEvent) => void;
1154
1164
  injector?: Injector;
1155
1165
  }): ResourceRef<NgtLoaderResults<TUrl, NgtBranchingReturn<TReturn, NgtGLTFLike, NgtGLTFLike & NgtObjectMap>> | undefined>;
1156
1166
  declare namespace loaderResource {
1157
- var preload: <TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>>(loaderConstructor: TLoaderConstructor, inputs: TUrl, extensions?: NgtLoaderExtensions<TLoaderConstructor>) => void;
1167
+ var preload: <TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>>(loaderConstructor: TLoaderConstructor, inputs: TUrl, extensions?: NgtLoaderExtensions<TLoaderConstructor>, cacheKey?: NgtLoaderCacheKey) => void;
1158
1168
  var destroy: () => void;
1159
1169
  var clear: (urls: string | string[]) => void;
1160
1170
  }
@@ -1309,7 +1319,7 @@ declare class NgtPortalAutoRender {
1309
1319
  * ```
1310
1320
  */
1311
1321
  declare class NgtPortalContent {
1312
- static ngTemplateContextGuard(_: NgtPortalContent, ctx: unknown): ctx is {
1322
+ static ngTemplateContextGuard(_: NgtPortalContent, _ctx: unknown): _ctx is {
1313
1323
  injector: Injector;
1314
1324
  };
1315
1325
  constructor();
@@ -1362,12 +1372,15 @@ declare class NgtPortalImpl {
1362
1372
  private previousStore;
1363
1373
  private portalStore;
1364
1374
  private injector;
1375
+ private document;
1365
1376
  private size;
1366
1377
  private events;
1367
1378
  private restState;
1368
1379
  private portalContentRendered;
1369
1380
  portalRendered: _angular_core.Signal<boolean>;
1370
1381
  private portalViewRef?;
1382
+ /** @internal Subscribe to invalidations originating in this portal layer. */
1383
+ onInvalidate(listener: () => void): () => void;
1371
1384
  constructor();
1372
1385
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtPortalImpl, never>;
1373
1386
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgtPortalImpl, "ngt-portal", never, { "container": { "alias": "container"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, ["contentRef", "anchorRef"], never, true, never>;
@@ -1427,50 +1440,73 @@ declare const NGT_CATALOGUE: InjectionToken<Record<string, NgtConstructorReprese
1427
1440
  */
1428
1441
  declare function injectCatalogue(): Record<string, NgtConstructorRepresentation>;
1429
1442
 
1443
+ type NgtRendererAnchor = {
1444
+ kind: 'canvas' | 'portal';
1445
+ store: SignalState<NgtState>;
1446
+ domParent?: NgtRendererNode<'portal'>;
1447
+ } | {
1448
+ kind: 'args' | 'parent';
1449
+ injector: Injector;
1450
+ };
1430
1451
  type ThreeRendererState = [
1431
1452
  type: 'three',
1432
1453
  destroyed: boolean,
1433
1454
  rawValue: any | undefined,
1434
1455
  portalContainer: never | undefined,
1435
- injector: never | undefined,
1436
- parent: NgtRendererNode<'platform' | 'portal' | 'three'> | undefined,
1437
- children: Array<NgtRendererNode<'platform' | 'portal' | 'comment'>>
1456
+ parent: NgtRendererNode | undefined,
1457
+ children: NgtRendererNode[],
1458
+ parentOverride: NgtRendererNode<'three'> | undefined,
1459
+ anchor: NgtRendererAnchor | undefined,
1460
+ owner: NgtRendererNode | undefined,
1461
+ ownedNodes: Set<NgtRendererNode> | undefined
1438
1462
  ];
1439
1463
  type PortalRendererState = [
1440
1464
  type: 'portal',
1441
1465
  destroyed: boolean,
1442
1466
  rawValue: never | undefined,
1443
1467
  portalContainer: NgtRendererNode<'three'> | undefined,
1444
- injector: Injector | undefined,
1445
- parent: any | undefined,
1446
- children: any[]
1468
+ parent: NgtRendererNode | undefined,
1469
+ children: NgtRendererNode[],
1470
+ parentOverride: never | undefined,
1471
+ anchor: NgtRendererAnchor | undefined,
1472
+ owner: NgtRendererNode | undefined,
1473
+ ownedNodes: Set<NgtRendererNode> | undefined
1447
1474
  ];
1448
1475
  type PlatformRendererState = [
1449
1476
  type: 'platform',
1450
1477
  destroyed: boolean,
1451
1478
  rawValue: never | undefined,
1452
1479
  portalContainer: never | undefined,
1453
- injector: never | undefined,
1454
- parent: NgtRendererNode<'three' | 'portal'> | undefined,
1455
- children: Array<NgtRendererNode<'three' | 'portal' | 'comment'>>
1480
+ parent: NgtRendererNode | undefined,
1481
+ children: NgtRendererNode[],
1482
+ parentOverride: never | undefined,
1483
+ anchor: NgtRendererAnchor | undefined,
1484
+ owner: NgtRendererNode | undefined,
1485
+ ownedNodes: Set<NgtRendererNode> | undefined
1456
1486
  ];
1457
1487
  type CommentRendererState = [
1458
1488
  type: 'comment',
1459
1489
  destroyed: boolean,
1460
1490
  rawValue: never | undefined,
1461
1491
  portalContainer: never | undefined,
1462
- injector: Injector | undefined,
1463
1492
  parent: NgtRendererNode | undefined,
1464
- children: NgtRendererNode[]
1493
+ children: NgtRendererNode[],
1494
+ parentOverride: never | undefined,
1495
+ anchor: NgtRendererAnchor | undefined,
1496
+ owner: NgtRendererNode | undefined,
1497
+ ownedNodes: Set<NgtRendererNode> | undefined
1465
1498
  ];
1466
1499
  type TextRendererState = [
1467
1500
  type: 'text',
1468
1501
  destroyed: boolean,
1469
1502
  rawValue: never | undefined,
1470
1503
  portalContainer: never | undefined,
1471
- injector: never | undefined,
1472
1504
  parent: NgtRendererNode | undefined,
1473
- children: NgtRendererNode[]
1505
+ children: NgtRendererNode[],
1506
+ parentOverride: never | undefined,
1507
+ anchor: NgtRendererAnchor | undefined,
1508
+ owner: NgtRendererNode | undefined,
1509
+ ownedNodes: Set<NgtRendererNode> | undefined
1474
1510
  ];
1475
1511
  type NgtRendererStateMap = {
1476
1512
  three: ThreeRendererState;
@@ -1479,10 +1515,12 @@ type NgtRendererStateMap = {
1479
1515
  comment: CommentRendererState;
1480
1516
  text: TextRendererState;
1481
1517
  };
1482
- interface NgtRendererNode<TType extends keyof NgtRendererStateMap = keyof NgtRendererStateMap> extends NgtAnyRecord {
1518
+ type NgtRendererNodeType = keyof NgtRendererStateMap;
1519
+ interface NgtRendererNode<TType extends NgtRendererNodeType = NgtRendererNodeType> extends NgtAnyRecord {
1483
1520
  [NGT_RENDERER_NODE_FLAG]: NgtRendererStateMap[TType];
1484
1521
  [NGT_DOM_PARENT_FLAG]?: HTMLElement;
1485
1522
  }
1523
+ declare function setRendererAnchor(node: unknown, anchor: NgtRendererAnchor): boolean;
1486
1524
 
1487
1525
  /**
1488
1526
  * Configuration options for the Angular Three renderer factory.
@@ -1494,13 +1532,8 @@ interface NgtRendererFactory2Options {
1494
1532
  */
1495
1533
  verbose?: boolean;
1496
1534
  /**
1497
- * When a change happens to an object's direct children, Angular Three will notify the object's ancestors
1498
- * of this change so the ancestors are aware of the updated matrices of the object. In order to reduce the
1499
- * number of notifications, Angular Three caches and skips notifications when possible.
1500
- *
1501
- * However, this can cause missed notifications in some cases. Control the number of skips with this option.
1502
- *
1503
- * @default 5
1535
+ * @deprecated Ancestor notifications are now deterministically coalesced once per microtask.
1536
+ * This option is retained for source compatibility and no longer changes runtime behavior.
1504
1537
  */
1505
1538
  maxNotificationSkipCount?: number;
1506
1539
  }
@@ -1532,12 +1565,15 @@ declare class NgtRendererFactory2 implements RendererFactory2 {
1532
1565
  private catalogue;
1533
1566
  private document;
1534
1567
  private options;
1535
- private rendererMap;
1568
+ private rendererByDelegate;
1536
1569
  /**
1537
1570
  * NOTE: We use `useFactory` to instantiate `NgtRendererFactory2`
1538
1571
  */
1539
1572
  constructor(delegateRendererFactory: RendererFactory2);
1540
1573
  createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
1574
+ begin(): void;
1575
+ end(): void;
1576
+ whenRenderingDone(): Promise<any>;
1541
1577
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtRendererFactory2, never>;
1542
1578
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgtRendererFactory2>;
1543
1579
  }
@@ -1558,37 +1594,52 @@ declare class NgtRenderer2 implements Renderer2 {
1558
1594
  private catalogue;
1559
1595
  private document;
1560
1596
  private options;
1561
- count: number;
1562
- private argsInjectors;
1563
- private parentInjectors;
1564
- constructor(delegateRenderer: Renderer2, catalogue: Record<string, NgtConstructorRepresentation>, document: Document, options: NgtRendererFactory2Options, count?: number);
1565
- get data(): {
1597
+ private directiveInjectors;
1598
+ private parameterKeys;
1599
+ private attachedListeners;
1600
+ private updatedListeners;
1601
+ readonly data: {
1566
1602
  [key: string]: any;
1567
1603
  };
1604
+ constructor(delegateRenderer: Renderer2, catalogue: Record<string, NgtConstructorRepresentation>, document: Document, options: NgtRendererFactory2Options);
1568
1605
  destroy(): void;
1569
- createElement(name: string, namespace?: string | null): NgtRendererNode<"three"> | NgtRendererNode<"portal"> | NgtRendererNode<"platform">;
1570
- createComment(value: string): NgtRendererNode<"comment">;
1571
- createText(value: string): NgtRendererNode<"text">;
1572
- destroyNode: (node: NgtRendererNode) => void;
1606
+ createElement(name: string, namespace?: string | null): any;
1607
+ createComment(value: string): any;
1608
+ createText(value: string): any;
1609
+ destroyNode(node: NgtRendererNode): void;
1573
1610
  appendChild(parent: NgtRendererNode, newChild: NgtRendererNode, refChild?: NgtRendererNode, isMove?: boolean): void;
1574
1611
  insertBefore(parent: NgtRendererNode, newChild: NgtRendererNode, refChild: NgtRendererNode, isMove?: boolean): void;
1575
- removeChild(parent: NgtRendererNode, oldChild: NgtRendererNode, isHostElement?: boolean): void;
1612
+ removeChild(parent: NgtRendererNode, oldChild: NgtRendererNode, isHostElement?: boolean, requireSynchronousElementRemoval?: boolean): void;
1576
1613
  parentNode(node: NgtRendererNode): any;
1577
1614
  removeAttribute(el: NgtRendererNode, name: string, namespace?: string | null): void;
1578
1615
  setAttribute(el: NgtRendererNode, name: string, value: string, namespace?: string | null): void;
1579
1616
  setProperty(el: NgtRendererNode, name: string, value: any): void;
1580
- listen(target: 'window' | 'document' | 'body' | NgtRendererNode, eventName: string, callback: (event: any) => boolean | void): () => void;
1617
+ listen(target: 'window' | 'document' | 'body' | NgtRendererNode, eventName: string, callback: (event: any) => boolean | void, options?: Parameters<Renderer2['listen']>[3]): () => void;
1581
1618
  private appendThreeRendererNodes;
1582
1619
  private setNodeRelationship;
1620
+ private findNearestThreeParent;
1621
+ private findTargetThreeParent;
1622
+ private portalStore;
1623
+ private findNearestPortalStore;
1624
+ private findFirstThreeDescendant;
1625
+ private findThreeInsertionReference;
1626
+ private findThreeReferenceAfterLogicalNode;
1627
+ private attachThreeDescendants;
1628
+ private detachThreeDescendants;
1629
+ private destroyOwnedNodes;
1630
+ private listenToInstanceEvent;
1631
+ private registerWithOptions;
1583
1632
  private getNgtDirective;
1633
+ [NGT_RENDERER_CONTEXT_FLAG]: <T>(injector: Injector, callback: () => T) => T;
1584
1634
  private normalizeAttach;
1585
- addClass: (el: any, name: string) => void;
1586
- removeClass: (el: any, name: string) => void;
1587
- setStyle: (el: any, style: string, value: any, flags?: _angular_core.RendererStyleFlags2) => void;
1588
- removeStyle: (el: any, style: string, flags?: _angular_core.RendererStyleFlags2) => void;
1589
- selectRootElement: (selectorOrNode: string | any, preserveContent?: boolean) => any;
1590
- nextSibling: (node: any) => any;
1591
- setValue: (node: any, value: string) => void;
1635
+ private updateAttachment;
1636
+ addClass(el: NgtRendererNode, name: string): void;
1637
+ removeClass(el: NgtRendererNode, name: string): void;
1638
+ setStyle(el: NgtRendererNode, style: string, value: any, flags?: RendererStyleFlags2): void;
1639
+ removeStyle(el: NgtRendererNode, style: string, flags?: RendererStyleFlags2): void;
1640
+ selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any;
1641
+ nextSibling(node: NgtRendererNode): any;
1642
+ setValue(node: NgtRendererNode, value: string): void;
1592
1643
  }
1593
1644
 
1594
1645
  /**
@@ -1609,7 +1660,7 @@ declare class NgtRenderer2 implements Renderer2 {
1609
1660
  * ```
1610
1661
  */
1611
1662
  declare function canvasRootInitializer(injector?: Injector): (canvas: NgtCanvasElement) => {
1612
- isConfigured: boolean;
1663
+ readonly isConfigured: boolean;
1613
1664
  destroy: (timeout?: number) => void;
1614
1665
  configure: (inputs: NgtCanvasOptions) => void;
1615
1666
  };
@@ -1989,7 +2040,7 @@ declare const is: {
1989
2040
  * Generic Three.js type check using the is* pattern.
1990
2041
  * @example is.three<THREE.Mesh>(obj, 'isMesh')
1991
2042
  */
1992
- three: <TThreeEntity extends object, TKey extends keyof TThreeEntity = keyof TThreeEntity>(a: unknown, isKey: TKey extends `is${infer K}` ? TKey : never) => a is TThreeEntity;
2043
+ three: <TThreeEntity extends object, TKey extends keyof TThreeEntity = keyof TThreeEntity>(a: unknown, isKey: TKey extends `is${string}` ? TKey : never) => a is TThreeEntity;
1993
2044
  /** Checks if value is a valid Three.js ColorRepresentation */
1994
2045
  colorRepresentation: (a: unknown) => a is THREE.ColorRepresentation;
1995
2046
  /** Checks if object has colorSpace or outputColorSpace property */
@@ -2263,5 +2314,5 @@ declare function checkUpdate(value: unknown): void;
2263
2314
  */
2264
2315
  declare function updateCamera(camera: NgtCamera, size: NgtSize): void;
2265
2316
 
2266
- export { NGT_APPLY_PROPS, NGT_ARGS_FLAG, NGT_CANVAS_CONTENT_FLAG, NGT_CATALOGUE, NGT_DELEGATE_RENDERER_DESTROY_NODE_PATCHED_FLAG, NGT_DOM_PARENT_FLAG, NGT_GET_NODE_ATTRIBUTE_FLAG, NGT_HTML_FLAG, NGT_INTERNAL_ADD_COMMENT_FLAG, NGT_INTERNAL_SET_PARENT_COMMENT_FLAG, NGT_LOOP, NGT_PARENT_FLAG, NGT_PORTAL_CONTENT_FLAG, NGT_RENDERER_NODE_FLAG, NGT_RENDERER_OPTIONS, NGT_STORE, NgtArgs, NgtElementEvents, NgtHTML, NgtHexify, NgtObjectEvents, NgtParent, NgtPortal, NgtPortalAutoRender, NgtPortalContent, NgtPortalImpl, NgtRenderer2, NgtRendererFactory2, NgtRoutedScene, NgtSelect, NgtSelection, NgtSelectionApi, THREE_NATIVE_EVENTS, addAfterEffect, addEffect, addTail, applyProps, attach, beforeRender, canvasRootInitializer, checkNeedsUpdate, checkUpdate, createAttachFunction, createEvents, detach, dispose, elementEvents, extend, flushGlobalEffects, getEmitter, getInstanceState, getLocalState, hasListener, injectBeforeRender, injectCatalogue, injectLoader, injectLoop, injectObjectEvents, injectStore, invalidateInstance, is, loaderResource, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, objectEvents, omit, pick, prepare, provideHTMLDomElement, remove, removeInteractivity, resolveInstanceKey, resolveRef, roots, signalState, storeFactory, toDeepSignal, updateCamera, vector2, vector3, vector4 };
2267
- export type { DeepSignal, NgtAfterAttach, NgtAllObject3DEventsMap, NgtAnyRecord, NgtArguments, NgtAttachFunction, NgtAttachable, NgtBeforeRenderEvent, NgtBeforeRenderRecord, NgtBranchingReturn, NgtCamera, NgtCameraLike, NgtCameraParameters, NgtCanvasConfigurator, NgtCanvasElement, NgtCanvasOptions, NgtColor, NgtComputeFunction, NgtConditionalType, NgtConstructorRepresentation, NgtDisposable, NgtDomEvent, NgtDpr, NgtElementProperties, NgtEquConfig, NgtEuler, NgtEventHandlers, NgtEventManager, NgtEventPrefix, NgtEvents, NgtFilterFunction, NgtFrameloop, NgtGLDefaultOptions, NgtGLOptions, NgtGLTFLike, NgtGlobalEffectType, NgtGlobalRenderCallback, NgtInjectedLoader, NgtInstanceHierarchyState, NgtInstanceNode, NgtInstanceState, NgtInternalState, NgtIntersection, NgtIntersectionEvent, NgtIsProperties, NgtLayers, NgtLoader, NgtLoaderExtensions, NgtLoaderProto, NgtLoaderResults, NgtLoaderReturnType, NgtMathProperties, NgtMathRepresentation, NgtMathType, NgtMathTypes, NgtMatrix3, NgtMatrix4, NgtMutable, NgtNodeElement, NgtNodeEventListener, NgtNodeEventMap, NgtNonFunctionKeys, NgtNonMutableProperties, NgtNonPartialProperties, NgtNullableRaycast, NgtNullish, NgtObject3DEventsMap, NgtObjectMap, NgtOverwrite, NgtPerformance, NgtPointerCaptureTarget, NgtPortalState, NgtProperties, NgtQuaternion, NgtRaycastableRepresentation, NgtRenderState, NgtRendererFactory2Options, NgtRendererLike, NgtShadows, NgtSize, NgtState, NgtThreeElement, NgtThreeElements, NgtThreeEvent, NgtVector2, NgtVector3, NgtVector4, NgtVectorRepresentation, NgtViewport, NgtXRManager, PartialStateUpdater, SignalState, StateSource, ThreeAddedEvent, ThreeChangeEvent, ThreeChildAddedEvent, ThreeChildRemovedEvent, ThreeDisposeEvent, ThreeRemovedEvent, WritableStateSource };
2317
+ export { NGT_APPLY_PROPS, NGT_CATALOGUE, NGT_DOM_PARENT_FLAG, NGT_GET_NODE_ATTRIBUTE_FLAG, NGT_HTML_FLAG, NGT_LOOP, NGT_RENDERER_CONTEXT_FLAG, NGT_RENDERER_NODE_FLAG, NGT_RENDERER_OPTIONS, NGT_STORE, NgtArgs, NgtElementEvents, NgtHTML, NgtHexify, NgtObjectEvents, NgtParent, NgtPortal, NgtPortalAutoRender, NgtPortalContent, NgtPortalImpl, NgtRenderer2, NgtRendererFactory2, NgtRoutedScene, NgtSelect, NgtSelection, NgtSelectionApi, THREE_NATIVE_EVENTS, addAfterEffect, addEffect, addTail, applyProps, attach, beforeRender, canvasRootInitializer, checkNeedsUpdate, checkUpdate, createAttachFunction, createEvents, detach, dispose, elementEvents, extend, flushAncestorNotifications, flushGlobalEffects, getEmitter, getInstanceState, getLocalState, hasListener, injectBeforeRender, injectCatalogue, injectLoader, injectLoop, injectObjectEvents, injectStore, invalidateInstance, is, loaderResource, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, objectEvents, omit, pick, prepare, provideHTMLDomElement, remove, removeInteractivity, resolveInstanceKey, resolveRef, roots, setRendererAnchor, signalState, storeFactory, toDeepSignal, updateCamera, uuidv4Fallback, vector2, vector3, vector4 };
2318
+ export type { DeepSignal, NgtAfterAttach, NgtAllObject3DEventsMap, NgtAnyRecord, NgtArguments, NgtAttachFunction, NgtAttachable, NgtBeforeRenderEvent, NgtBeforeRenderRecord, NgtBranchingReturn, NgtCamera, NgtCameraLike, NgtCameraParameters, NgtCanvasConfigurator, NgtCanvasElement, NgtCanvasOptions, NgtColor, NgtComputeFunction, NgtConditionalType, NgtConstructorRepresentation, NgtDisposable, NgtDomEvent, NgtDpr, NgtElementProperties, NgtEquConfig, NgtEuler, NgtEventHandlers, NgtEventManager, NgtEventPrefix, NgtEvents, NgtFilterFunction, NgtFrameloop, NgtGLDefaultOptions, NgtGLOptions, NgtGLTFLike, NgtGlobalEffectType, NgtGlobalRenderCallback, NgtInjectedLoader, NgtInstanceHierarchyState, NgtInstanceNode, NgtInstanceState, NgtInternalState, NgtIntersection, NgtIntersectionEvent, NgtIsProperties, NgtLayers, NgtLoader, NgtLoaderCacheKey, NgtLoaderExtensions, NgtLoaderProto, NgtLoaderResults, NgtLoaderReturnType, NgtMathProperties, NgtMathRepresentation, NgtMathType, NgtMathTypes, NgtMatrix3, NgtMatrix4, NgtMutable, NgtNodeElement, NgtNodeEventListener, NgtNodeEventMap, NgtNonFunctionKeys, NgtNonMutableProperties, NgtNonPartialProperties, NgtNullableRaycast, NgtNullish, NgtObject3DEventsMap, NgtObjectMap, NgtOverwrite, NgtPerformance, NgtPointerCaptureTarget, NgtPortalState, NgtProperties, NgtQuaternion, NgtRaycastableRepresentation, NgtRenderState, NgtRendererAnchor, NgtRendererFactory2Options, NgtRendererLike, NgtShadows, NgtSize, NgtState, NgtThreeElement, NgtThreeElements, NgtThreeEvent, NgtVector2, NgtVector3, NgtVector4, NgtVectorRepresentation, NgtViewport, NgtXRManager, PartialStateUpdater, SignalState, StateSource, ThreeAddedEvent, ThreeChangeEvent, ThreeChildAddedEvent, ThreeChildRemovedEvent, ThreeDisposeEvent, ThreeRemovedEvent, WritableStateSource };