angular-three 3.7.0 → 4.0.0-next.2

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.
Files changed (52) hide show
  1. package/dom/README.md +3 -0
  2. package/dom/index.d.ts +2 -0
  3. package/dom/lib/canvas.d.ts +49 -0
  4. package/{lib/dom → dom/lib}/events.d.ts +2 -3
  5. package/dom/lib/renderer.d.ts +1 -0
  6. package/fesm2022/angular-three-dom.mjs +278 -0
  7. package/fesm2022/angular-three-dom.mjs.map +1 -0
  8. package/fesm2022/angular-three-testing.mjs +45 -28
  9. package/fesm2022/angular-three-testing.mjs.map +1 -1
  10. package/fesm2022/angular-three.mjs +2671 -3006
  11. package/fesm2022/angular-three.mjs.map +1 -1
  12. package/index.d.ts +5 -3
  13. package/lib/directives/args.d.ts +4 -8
  14. package/lib/directives/common.d.ts +20 -0
  15. package/lib/directives/parent.d.ts +7 -11
  16. package/lib/events.d.ts +5 -5
  17. package/lib/html.d.ts +3 -6
  18. package/lib/instance.d.ts +8 -4
  19. package/lib/loop.d.ts +13 -25
  20. package/lib/portal.d.ts +26 -45
  21. package/lib/renderer/catalogue.d.ts +4 -12
  22. package/lib/renderer/constants.d.ts +11 -22
  23. package/lib/renderer/renderer.d.ts +53 -0
  24. package/lib/renderer/state.d.ts +62 -22
  25. package/lib/renderer/utils.d.ts +10 -10
  26. package/lib/roots.d.ts +2 -6
  27. package/lib/routed-scene.d.ts +2 -10
  28. package/lib/store.d.ts +7 -12
  29. package/lib/three-types.d.ts +225 -404
  30. package/lib/types.d.ts +168 -162
  31. package/lib/utils/apply-props.d.ts +4 -2
  32. package/lib/utils/attach.d.ts +5 -5
  33. package/lib/utils/before-render.d.ts +1 -1
  34. package/lib/utils/is.d.ts +12 -11
  35. package/lib/utils/make.d.ts +7 -7
  36. package/lib/utils/object-events.d.ts +4 -4
  37. package/lib/utils/parameters.d.ts +11 -11
  38. package/lib/utils/signal-state.d.ts +27 -0
  39. package/lib/utils/update.d.ts +2 -2
  40. package/package.json +5 -23
  41. package/testing/lib/test-bed.d.ts +12 -9
  42. package/testing/lib/test-canvas.d.ts +8 -5
  43. package/fesm2022/angular-three-nativescript.mjs +0 -134
  44. package/fesm2022/angular-three-nativescript.mjs.map +0 -1
  45. package/lib/canvas.d.ts +0 -368
  46. package/lib/renderer/index.d.ts +0 -65
  47. package/lib/utils/signal-store.d.ts +0 -26
  48. package/metadata.json +0 -1
  49. package/nativescript/README.md +0 -5
  50. package/nativescript/index.d.ts +0 -1
  51. package/nativescript/lib/canvas.d.ts +0 -359
  52. package/web-types.json +0 -1
package/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './lib/canvas';
2
1
  export * from './lib/directives/args';
3
2
  export * from './lib/directives/parent';
4
3
  export * from './lib/directives/selection';
@@ -8,7 +7,10 @@ export * from './lib/loader';
8
7
  export * from './lib/loop';
9
8
  export * from './lib/pipes/hexify';
10
9
  export * from './lib/portal';
11
- export * from './lib/renderer';
10
+ export * from './lib/events';
11
+ export * from './lib/renderer/catalogue';
12
+ export * from './lib/renderer/constants';
13
+ export * from './lib/renderer/renderer';
12
14
  export * from './lib/roots';
13
15
  export * from './lib/routed-scene';
14
16
  export * from './lib/store';
@@ -21,7 +23,7 @@ export * from './lib/utils/object-events';
21
23
  export * from './lib/utils/output-ref';
22
24
  export * from './lib/utils/parameters';
23
25
  export * from './lib/utils/resolve-ref';
24
- export * from './lib/utils/signal-store';
26
+ export * from './lib/utils/signal-state';
25
27
  export * from './lib/utils/update';
26
28
  export type * from './lib/three-types';
27
29
  export type * from './lib/types';
@@ -1,15 +1,11 @@
1
+ import { NgtCommonDirective } from './common';
1
2
  import * as i0 from "@angular/core";
2
- export declare class NgtArgs {
3
+ export declare class NgtArgs extends NgtCommonDirective<any[]> {
3
4
  args: import("@angular/core").InputSignal<any[] | null>;
4
- private vcr;
5
- private template;
6
- protected injected: boolean;
7
- protected injectedArgs: any[] | null;
8
- private view?;
5
+ protected linkedValue: import("@angular/core").WritableSignal<any[] | null>;
6
+ protected shouldSkipRender: import("@angular/core").Signal<boolean>;
9
7
  constructor();
10
- get value(): any[] | null;
11
8
  validate(): boolean;
12
- private createView;
13
9
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtArgs, never>;
14
10
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgtArgs, "ng-template[args]", never, { "args": { "alias": "args"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
15
11
  }
@@ -0,0 +1,20 @@
1
+ import { Injector, Signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare abstract class NgtCommonDirective<TValue> {
4
+ private vcr;
5
+ private template;
6
+ protected injector: Injector;
7
+ protected injected: boolean;
8
+ protected injectedValue: TValue | null;
9
+ private view?;
10
+ protected get commentNode(): any;
11
+ abstract validate(): boolean;
12
+ protected abstract linkedValue: Signal<TValue | null>;
13
+ protected abstract shouldSkipRender: Signal<boolean>;
14
+ constructor();
15
+ get value(): TValue | null;
16
+ protected beforeCreateView(): void;
17
+ private createView;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtCommonDirective<any>, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgtCommonDirective<any>, never, never, {}, {}, never, never, true, never>;
20
+ }
@@ -1,21 +1,17 @@
1
1
  import { ElementRef } from '@angular/core';
2
- import { Object3D } from 'three';
2
+ import type * as THREE from 'three';
3
3
  import { NgtNullish } from '../types';
4
+ import { NgtCommonDirective } from './common';
4
5
  import * as i0 from "@angular/core";
5
- export declare class NgtParent {
6
- parent: import("@angular/core").InputSignal<string | Object3D<import("three").Object3DEventMap> | ElementRef<Object3D<import("three").Object3DEventMap>> | (() => NgtNullish<ElementRef<Object3D> | Object3D | string>)>;
7
- private vcr;
8
- private template;
6
+ export declare class NgtParent extends NgtCommonDirective<THREE.Object3D | null | undefined> {
7
+ parent: import("@angular/core").InputSignal<string | THREE.Object3D<THREE.Object3DEventMap> | ElementRef<THREE.Object3D<THREE.Object3DEventMap>> | (() => NgtNullish<ElementRef<THREE.Object3D> | THREE.Object3D | string>)>;
9
8
  private store;
10
- private scene;
11
- protected injected: boolean;
12
- protected injectedParent: NgtNullish<Object3D>;
13
- private view?;
14
9
  private _parent;
10
+ protected linkedValue: import("@angular/core").WritableSignal<THREE.Object3D<THREE.Object3DEventMap> | null | undefined>;
11
+ protected shouldSkipRender: import("@angular/core").Signal<boolean>;
15
12
  constructor();
16
- get value(): NgtNullish<Object3D<import("three").Object3DEventMap>>;
17
13
  validate(): boolean;
18
- private createView;
14
+ protected beforeCreateView(): void;
19
15
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtParent, never>;
20
16
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgtParent, "ng-template[parent]", never, { "parent": { "alias": "parent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
21
17
  }
package/lib/events.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Object3D } from 'three';
2
- import { NgtDomEvent, NgtState } from './types';
3
- import { NgtSignalStore } from './utils/signal-store';
4
- export declare function removeInteractivity(store: NgtSignalStore<NgtState>, object: Object3D): void;
5
- export declare function createEvents(store: NgtSignalStore<NgtState>): {
1
+ import * as THREE from 'three';
2
+ import type { NgtDomEvent, NgtState } from './types';
3
+ import { SignalState } from './utils/signal-state';
4
+ export declare function removeInteractivity(store: SignalState<NgtState>, object: THREE.Object3D): void;
5
+ export declare function createEvents(store: SignalState<NgtState>): {
6
6
  handlePointer: (name: string) => (event: NgtDomEvent) => void;
7
7
  };
package/lib/html.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { AbstractType, DestroyRef, ElementRef, InjectionToken, Provider, ProviderToken, Type } from '@angular/core';
2
- import { HTML } from './renderer';
1
+ import { AbstractType, InjectionToken, Provider, ProviderToken, Type } from '@angular/core';
2
+ import { NGT_HTML_FLAG } from './renderer/constants';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare function provideHTMLDomElement(): Provider;
5
5
  export declare function provideHTMLDomElement(factory: () => HTMLElement): Provider;
@@ -7,10 +7,7 @@ export declare function provideHTMLDomElement<TDeps extends Array<ProviderToken<
7
7
  [K in keyof TDeps]: TDeps[K] extends Type<infer T> | AbstractType<infer T> | InjectionToken<infer T> ? T : never;
8
8
  }>(deps: TDeps, factory: (...args: TValues) => HTMLElement): Provider;
9
9
  export declare abstract class NgtHTML {
10
- static [HTML]: boolean;
11
- protected store: import("angular-three").NgtSignalStore<import("angular-three").NgtState>;
12
- protected destroyRef: DestroyRef;
13
- protected host: ElementRef<HTMLElement>;
10
+ static [NGT_HTML_FLAG]: boolean;
14
11
  protected domElement: HTMLElement | "gl" | null;
15
12
  constructor();
16
13
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtHTML, never>;
package/lib/instance.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- import { NgtAnyRecord, NgtInstanceNode, NgtLocalState } from './types';
2
- export declare function getLocalState<TInstance extends object>(obj: TInstance | undefined): NgtLocalState | undefined;
3
- export declare function invalidateInstance<TInstance extends object>(instance: TInstance): void;
4
- export declare function prepare<TInstance extends object = NgtAnyRecord>(object: TInstance, localState?: Partial<NgtLocalState>): NgtInstanceNode<TInstance>;
1
+ import type { NgtAnyRecord, NgtInstanceNode, NgtInstanceState } from './types';
2
+ /**
3
+ * @deprecated: use `getInstanceState` instead. Will be removed in 5.0.0
4
+ */
5
+ export declare function getLocalState<TInstance extends object>(obj: TInstance | undefined): NgtInstanceState | undefined;
6
+ export declare function getInstanceState<TInstance extends NgtAnyRecord>(obj: TInstance | undefined): NgtInstanceState<TInstance> | undefined;
7
+ export declare function invalidateInstance<TInstance extends NgtAnyRecord>(instance: NgtInstanceNode<TInstance>): void;
8
+ export declare function prepare<TInstance extends NgtAnyRecord = NgtAnyRecord>(object: TInstance, type: string, instanceState?: Partial<NgtInstanceState>): NgtInstanceNode<TInstance>;
package/lib/loop.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { NgtCanvasElement, NgtGlobalRenderCallback, NgtState } from './types';
2
- import { NgtSignalStore } from './utils/signal-store';
3
- export declare const roots: Map<NgtCanvasElement, NgtSignalStore<NgtState>>;
1
+ import { InjectionToken } from '@angular/core';
2
+ import type { NgtCanvasElement, NgtGlobalRenderCallback, NgtState } from './types';
3
+ import type { SignalState } from './utils/signal-state';
4
+ export declare const roots: Map<NgtCanvasElement, SignalState<NgtState>>;
4
5
  /**
5
6
  * Adds a global render callback which is called each frame.
6
7
  * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#addEffect
@@ -18,26 +19,13 @@ export declare const addAfterEffect: (callback: NgtGlobalRenderCallback) => () =
18
19
  export declare const addTail: (callback: NgtGlobalRenderCallback) => () => void;
19
20
  export type NgtGlobalEffectType = 'before' | 'after' | 'tail';
20
21
  export declare function flushGlobalEffects(type: NgtGlobalEffectType, timestamp: number): void;
21
- export declare const injectLoop: {
22
- (): {
23
- loop: (timestamp: number) => void;
24
- invalidate: (store?: NgtSignalStore<NgtState>, frames?: number) => void;
25
- advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
26
- };
27
- (injectOptions: import("@angular/core").InjectOptions & {
28
- optional?: false;
29
- } & {
30
- injector?: import("@angular/core").Injector;
31
- }): {
32
- loop: (timestamp: number) => void;
33
- invalidate: (store?: NgtSignalStore<NgtState>, frames?: number) => void;
34
- advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
35
- };
36
- (injectOptions: import("@angular/core").InjectOptions & {
37
- injector?: import("@angular/core").Injector;
38
- }): {
39
- loop: (timestamp: number) => void;
40
- invalidate: (store?: NgtSignalStore<NgtState>, frames?: number) => void;
41
- advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
42
- } | null;
22
+ export declare const NGT_LOOP: InjectionToken<{
23
+ loop: (timestamp: number) => void;
24
+ invalidate: (store?: SignalState<NgtState>, frames?: number) => void;
25
+ advance: (timestamp: number, runGlobalEffects?: boolean, store?: SignalState<NgtState>, frame?: XRFrame) => void;
26
+ }>;
27
+ export declare function injectLoop(): {
28
+ loop: (timestamp: number) => void;
29
+ invalidate: (store?: SignalState<NgtState>, frames?: number) => void;
30
+ advance: (timestamp: number, runGlobalEffects?: boolean, store?: SignalState<NgtState>, frame?: XRFrame) => void;
43
31
  };
package/lib/portal.d.ts CHANGED
@@ -1,67 +1,48 @@
1
1
  import { Injector } from '@angular/core';
2
- import { Camera, Object3D, Scene } from 'three';
3
- import { NgtComputeFunction, NgtSize, NgtState } from './types';
2
+ import * as THREE from 'three';
3
+ import type { NgtComputeFunction, NgtState } from './types';
4
4
  import * as i0 from "@angular/core";
5
- export declare class NgtPortalBeforeRender {
5
+ export declare class NgtPortalAutoRender {
6
6
  private portalStore;
7
- renderPriority: import("@angular/core").InputSignal<number>;
8
- parentScene: import("@angular/core").InputSignal<Scene>;
9
- parentCamera: import("@angular/core").InputSignal<Camera>;
7
+ private parentStore;
8
+ private portal;
9
+ renderPriority: import("@angular/core").InputSignalWithTransform<number, unknown>;
10
10
  constructor();
11
- onPointerOver(): void;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortalBeforeRender, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortalBeforeRender, "ngt-portal-before-render", never, { "renderPriority": { "alias": "renderPriority"; "required": false; "isSignal": true; }; "parentScene": { "alias": "parentScene"; "required": true; "isSignal": true; }; "parentCamera": { "alias": "parentCamera"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortalAutoRender, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgtPortalAutoRender, "ngt-portal[autoRender]", never, { "renderPriority": { "alias": "autoRender"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
14
13
  }
15
14
  export declare class NgtPortalContent {
16
- constructor();
17
15
  static ngTemplateContextGuard(_: NgtPortalContent, ctx: unknown): ctx is {
18
- container: Object3D;
19
16
  injector: Injector;
20
17
  };
18
+ constructor();
21
19
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortalContent, never>;
22
20
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgtPortalContent, "ng-template[portalContent]", never, {}, {}, never, never, true, never>;
23
21
  }
24
- export declare const privateKeys: readonly ["setSize", "setFrameloop", "setDpr", "events", "setEvents", "invalidate", "advance", "size", "viewport"];
25
- export type NgtPortalPrivateKeys = (typeof privateKeys)[number];
26
- export type NgtPortalInjectableState = Partial<Omit<NgtState, NgtPortalPrivateKeys> & {
27
- events?: {
22
+ export interface NgtPortalState extends Omit<NgtState, 'events'> {
23
+ events: {
28
24
  enabled?: boolean;
29
25
  priority?: number;
30
26
  compute?: NgtComputeFunction;
31
27
  connected?: any;
32
28
  };
33
- size?: NgtSize;
34
- }>;
29
+ }
35
30
  export declare class NgtPortal {
36
- container: import("@angular/core").InputSignal<Object3D<import("three").Object3DEventMap>>;
37
- state: import("@angular/core").InputSignal<Partial<Omit<NgtState, "viewport" | "events" | "size" | "invalidate" | "advance" | "setEvents" | "setSize" | "setDpr" | "setFrameloop"> & {
38
- events?: {
39
- enabled?: boolean;
40
- priority?: number;
41
- compute?: NgtComputeFunction;
42
- connected?: any;
43
- };
44
- size?: NgtSize;
45
- }>>;
46
- /**
47
- * @decsription turn this on to enable "HUD" like rendering
48
- */
49
- autoRender: import("@angular/core").InputSignal<boolean>;
50
- autoRenderPriority: import("@angular/core").InputSignal<number>;
51
- private portalContent;
52
- private portalAnchor;
53
- private injector;
31
+ container: import("@angular/core").InputSignal<THREE.Object3D<THREE.Object3DEventMap>>;
32
+ state: import("@angular/core").InputSignal<Partial<NgtPortalState>>;
33
+ private contentRef;
34
+ private anchorRef;
35
+ private previousStore;
54
36
  private portalStore;
55
- private parentStore;
56
- protected parentScene: import("@angular/core").Signal<Scene>;
57
- protected parentCamera: import("@angular/core").Signal<import("angular-three").NgtCameraManual>;
58
- private raycaster;
59
- private pointer;
60
- private portalRendered;
61
- protected shouldAutoRender: import("@angular/core").Signal<boolean>;
62
- private portalView?;
37
+ private injector;
38
+ private size;
39
+ private events;
40
+ private restState;
41
+ private portalContentRendered;
42
+ portalRendered: import("@angular/core").Signal<boolean>;
43
+ private portalViewRef?;
63
44
  constructor();
64
- private inject;
65
45
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortal, never>;
66
- static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortal, "ngt-portal", never, { "container": { "alias": "container"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "autoRender": { "alias": "autoRender"; "required": false; "isSignal": true; }; "autoRenderPriority": { "alias": "autoRenderPriority"; "required": false; "isSignal": true; }; }, {}, ["portalContent"], never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortal, "ngt-portal", never, { "container": { "alias": "container"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, ["contentRef", "anchorRef"], never, true, never>;
67
47
  }
48
+ export declare const NgtPortalDeclarations: readonly [typeof NgtPortal, typeof NgtPortalContent];
@@ -1,13 +1,5 @@
1
- export type NgtAnyConstructor = new (...args: any[]) => any;
1
+ import { InjectionToken } from '@angular/core';
2
+ import type { NgtConstructorRepresentation } from '../types';
2
3
  export declare function extend(objects: object): void;
3
- export declare const injectCatalogue: {
4
- (): Record<string, NgtAnyConstructor>;
5
- (injectOptions: import("@angular/core").InjectOptions & {
6
- optional?: false;
7
- } & {
8
- injector?: import("@angular/core").Injector;
9
- }): Record<string, NgtAnyConstructor>;
10
- (injectOptions: import("@angular/core").InjectOptions & {
11
- injector?: import("@angular/core").Injector;
12
- }): Record<string, NgtAnyConstructor> | null;
13
- };
4
+ export declare const NGT_CATALOGUE: InjectionToken<Record<string, NgtConstructorRepresentation>>;
5
+ export declare function injectCatalogue(): Record<string, NgtConstructorRepresentation>;
@@ -1,23 +1,12 @@
1
- export declare const ROUTED_SCENE = "__ngt_renderer_is_routed_scene__";
2
- export declare const HTML = "__ngt_renderer_is_html";
3
- export declare const NON_ROOT = "__ngt_renderer_is_non_root__";
4
- export declare const SPECIAL_INTERNAL_ADD_COMMENT = "__ngt_renderer_add_comment__";
5
- export declare const SPECIAL_INTERNAL_SET_PARENT_COMMENT = "__ngt_renderer_set_parent_comment__";
6
- export declare const DOM_PARENT = "__ngt_dom_parent__";
7
- export declare const SPECIAL_DOM_TAG: {
8
- readonly NGT_PORTAL: "ngt-portal";
9
- readonly NGT_PRIMITIVE: "ngt-primitive";
10
- readonly NGT_VALUE: "ngt-value";
11
- };
12
- export declare const SPECIAL_PROPERTIES: {
13
- readonly RENDER_PRIORITY: "priority";
14
- readonly ATTACH: "attach";
15
- readonly RAW_VALUE: "rawValue";
16
- readonly PARAMETERS: "parameters";
17
- };
18
- export declare const SPECIAL_EVENTS: {
19
- readonly BEFORE_RENDER: "beforeRender";
20
- readonly UPDATED: "updated";
21
- readonly ATTACHED: "attached";
22
- };
1
+ export declare const NGT_RENDERER_NODE_FLAG = "__ngt_renderer__";
2
+ export declare const NGT_CANVAS_CONTENT_FLAG = "__ngt_renderer_canvas_content__";
3
+ export declare const NGT_PORTAL_CONTENT_FLAG = "__ngt_renderer_portal_content__";
4
+ export declare const NGT_ARGS_FLAG = "__ngt_renderer_args__";
5
+ export declare const NGT_PARENT_FLAG = "__ngt_renderer_parent__";
6
+ export declare const NGT_INTERNAL_ADD_COMMENT_FLAG = "__ngt_renderer_add_comment__";
7
+ export declare const NGT_INTERNAL_SET_PARENT_COMMENT_FLAG = "__ngt_renderer_set_parent_comment__";
8
+ export declare const NGT_GET_NODE_ATTRIBUTE_FLAG = "__ngt_get_node_attribute__";
9
+ export declare const NGT_DOM_PARENT_FLAG = "__ngt_dom_parent__";
10
+ export declare const NGT_DELEGATE_RENDERER_DESTROY_NODE_PATCHED_FLAG = "__ngt_delegate_renderer_destroy_node_patched__";
11
+ export declare const NGT_HTML_FLAG = "__ngt_html__";
23
12
  export declare const THREE_NATIVE_EVENTS: string[];
@@ -0,0 +1,53 @@
1
+ import { Renderer2, RendererFactory2, RendererType2 } from '@angular/core';
2
+ import { NgtConstructorRepresentation } from '../types';
3
+ import { NgtRendererNode } from './state';
4
+ import * as i0 from "@angular/core";
5
+ export declare class NgtRendererFactory2 implements RendererFactory2 {
6
+ private delegateRendererFactory;
7
+ private catalogue;
8
+ private document;
9
+ private rendererMap;
10
+ /**
11
+ * NOTE: We use `useFactory` to instantiate `NgtRendererFactory2`
12
+ */
13
+ constructor(delegateRendererFactory: RendererFactory2);
14
+ createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgtRendererFactory2, never>;
16
+ static ɵprov: i0.ɵɵInjectableDeclaration<NgtRendererFactory2>;
17
+ }
18
+ export declare class NgtRenderer2 implements Renderer2 {
19
+ delegateRenderer: Renderer2;
20
+ private catalogue;
21
+ private document;
22
+ count: number;
23
+ private argsInjectors;
24
+ private parentInjectors;
25
+ private portalInjectors;
26
+ constructor(delegateRenderer: Renderer2, catalogue: Record<string, NgtConstructorRepresentation>, document: Document, count?: number);
27
+ get data(): {
28
+ [key: string]: any;
29
+ };
30
+ destroy(): void;
31
+ createElement(name: string, namespace?: string | null): NgtRendererNode<"three"> | NgtRendererNode<"platform"> | NgtRendererNode<"portal">;
32
+ createComment(value: string): NgtRendererNode<"comment">;
33
+ createText(value: string): NgtRendererNode<"text">;
34
+ destroyNode: (node: NgtRendererNode) => void;
35
+ appendChild(parent: NgtRendererNode, newChild: NgtRendererNode, refChild?: NgtRendererNode, isMove?: boolean): void;
36
+ insertBefore(parent: NgtRendererNode, newChild: NgtRendererNode, refChild: NgtRendererNode, isMove?: boolean): void;
37
+ removeChild(parent: NgtRendererNode, oldChild: NgtRendererNode, isHostElement?: boolean): void;
38
+ parentNode(node: NgtRendererNode): any;
39
+ removeAttribute(el: NgtRendererNode, name: string, namespace?: string | null): void;
40
+ setAttribute(el: NgtRendererNode, name: string, value: string, namespace?: string | null): void;
41
+ setProperty(el: NgtRendererNode, name: string, value: any): void;
42
+ listen(target: 'window' | 'document' | 'body' | NgtRendererNode, eventName: string, callback: (event: any) => boolean | void): () => void;
43
+ private appendThreeRendererNodes;
44
+ private setNodeRelationship;
45
+ private getNgtDirective;
46
+ addClass: (el: any, name: string) => void;
47
+ removeClass: (el: any, name: string) => void;
48
+ setStyle: (el: any, style: string, value: any, flags?: import("@angular/core").RendererStyleFlags2) => void;
49
+ removeStyle: (el: any, style: string, flags?: import("@angular/core").RendererStyleFlags2) => void;
50
+ selectRootElement: (selectorOrNode: string | any, preserveContent?: boolean) => any;
51
+ nextSibling: (node: any) => any;
52
+ setValue: (node: any, value: string) => void;
53
+ }
@@ -1,25 +1,65 @@
1
- import { DebugNode } from '@angular/core';
2
- import { NgtAnyRecord } from '../types';
3
- import { NgtRendererClassId } from './utils';
4
- export type NgtRendererState = [
5
- type: 'three' | 'portal' | 'comment' | 'dom',
6
- parent: NgtRendererNode | null,
7
- children: NgtRendererNode[],
1
+ import { Injector } from '@angular/core';
2
+ import type { NgtAnyRecord } from '../types';
3
+ import { NGT_DOM_PARENT_FLAG, NGT_RENDERER_NODE_FLAG } from './constants';
4
+ type ThreeRendererState = [
5
+ type: 'three',
8
6
  destroyed: boolean,
9
- rawValue: any,
10
- portalContainer: NgtRendererNode,
11
- debugNode: DebugNode | undefined,
12
- debugNodeFactory: () => DebugNode | undefined
7
+ rawValue: any | undefined,
8
+ portalContainer: never | undefined,
9
+ injector: never | undefined,
10
+ parent: NgtRendererNode<'platform' | 'portal' | 'three'> | undefined,
11
+ children: Array<NgtRendererNode<'platform' | 'portal' | 'comment'>>
13
12
  ];
14
- export interface NgtRendererNode {
15
- __ngt_renderer__: NgtRendererState;
16
- __ngt_dom_parent__?: HTMLElement;
17
- }
18
- export declare function createNode(type: NgtRendererState[NgtRendererClassId.type], node: NgtAnyRecord, document: Document): NgtAnyRecord & {
19
- __ngt_renderer__: NgtRendererState;
13
+ type PortalRendererState = [
14
+ type: 'portal',
15
+ destroyed: boolean,
16
+ rawValue: never | undefined,
17
+ portalContainer: NgtRendererNode<'three'> | undefined,
18
+ injector: Injector | undefined,
19
+ parent: any | undefined,
20
+ children: any[]
21
+ ];
22
+ type PlatformRendererState = [
23
+ type: 'platform',
24
+ destroyed: boolean,
25
+ rawValue: never | undefined,
26
+ portalContainer: never | undefined,
27
+ injector: never | undefined,
28
+ parent: NgtRendererNode<'three' | 'portal'> | undefined,
29
+ children: Array<NgtRendererNode<'three' | 'portal' | 'comment'>>
30
+ ];
31
+ type CommentRendererState = [
32
+ type: 'comment',
33
+ destroyed: boolean,
34
+ rawValue: never | undefined,
35
+ portalContainer: never | undefined,
36
+ injector: Injector | undefined,
37
+ parent: NgtRendererNode | undefined,
38
+ children: NgtRendererNode[]
39
+ ];
40
+ type TextRendererState = [
41
+ type: 'text',
42
+ destroyed: boolean,
43
+ rawValue: never | undefined,
44
+ portalContainer: never | undefined,
45
+ injector: never | undefined,
46
+ parent: NgtRendererNode | undefined,
47
+ children: NgtRendererNode[]
48
+ ];
49
+ type NgtRendererStateMap = {
50
+ three: ThreeRendererState;
51
+ portal: PortalRendererState;
52
+ platform: PlatformRendererState;
53
+ comment: CommentRendererState;
54
+ text: TextRendererState;
20
55
  };
21
- export declare function isDOM(node: NgtAnyRecord): boolean;
22
- export declare function getClosestParentWithInstance(node: NgtRendererNode): NgtRendererNode | null;
23
- export declare function setParent(node: NgtRendererNode, parent: NgtRendererNode): void;
24
- export declare function addChild(node: NgtRendererNode, child: NgtRendererNode): void;
25
- export declare function removeChild(node: NgtRendererNode, child: NgtRendererNode): void;
56
+ export type NgtRendererState = ThreeRendererState | PortalRendererState | PlatformRendererState | CommentRendererState | TextRendererState;
57
+ export interface NgtRendererNode<TType extends keyof NgtRendererStateMap = keyof NgtRendererStateMap> extends NgtAnyRecord {
58
+ [NGT_RENDERER_NODE_FLAG]: NgtRendererStateMap[TType];
59
+ [NGT_DOM_PARENT_FLAG]?: HTMLElement;
60
+ }
61
+ export declare function isRendererNode(node: unknown): node is NgtRendererNode;
62
+ export declare function createRendererNode<TType extends keyof NgtRendererStateMap>(type: TType, node: NgtAnyRecord, document: Document): NgtRendererNode<TType>;
63
+ export declare function setRendererParentNode(node: NgtRendererNode, parent: NgtRendererNode): void;
64
+ export declare function addRendererChildNode(node: NgtRendererNode, child: NgtRendererNode): void;
65
+ export {};
@@ -1,15 +1,15 @@
1
1
  import { NgtInstanceNode } from '../types';
2
+ import { NgtRendererNode } from './state';
2
3
  export declare const enum NgtRendererClassId {
3
4
  type = 0,
4
- parent = 1,
5
- children = 2,
6
- destroyed = 3,
7
- rawValue = 4,
8
- portalContainer = 5,
9
- debugNode = 6,
10
- debugNodeFactory = 7
5
+ destroyed = 1,
6
+ rawValue = 2,
7
+ portalContainer = 3,
8
+ injector = 4,
9
+ parent = 5,
10
+ children = 6
11
11
  }
12
12
  export declare function kebabToPascal(str: string): string;
13
- export declare function attachThreeChild(parent: NgtInstanceNode, child: NgtInstanceNode): void;
14
- export declare function removeThreeChild(child: NgtInstanceNode, parent?: NgtInstanceNode, dispose?: boolean): void;
15
- export declare function processThreeEvent(instance: NgtInstanceNode, priority: number, eventName: string, callback: (event: any) => void): () => void;
13
+ export declare function attachThreeNodes(parent: NgtInstanceNode, child: NgtInstanceNode): void;
14
+ export declare function removeThreeChild(child: NgtInstanceNode, parent: NgtInstanceNode, dispose?: boolean): void;
15
+ export declare function internalDestroyNode(node: NgtRendererNode, removeChild: null | ((node: NgtRendererNode, child: NgtRendererNode) => void)): void;
package/lib/roots.d.ts CHANGED
@@ -1,13 +1,9 @@
1
1
  import { Injector } from '@angular/core';
2
- import { NgtCanvasElement, NgtCanvasOptions } from './types';
2
+ import type { NgtCanvasElement, NgtCanvasOptions, NgtDisposable } from './types';
3
3
  export declare function injectCanvasRootInitializer(injector?: Injector): (canvas: NgtCanvasElement) => {
4
4
  isConfigured: boolean;
5
5
  destroy: (timeout?: number) => void;
6
6
  configure: (inputs: NgtCanvasOptions) => void;
7
7
  };
8
8
  export type NgtCanvasConfigurator = ReturnType<ReturnType<typeof injectCanvasRootInitializer>>;
9
- export declare function dispose<TObj extends {
10
- dispose?: () => void;
11
- type?: string;
12
- [key: string]: any;
13
- }>(obj: TObj): void;
9
+ export declare function dispose<T extends NgtDisposable>(obj: T): void;
@@ -1,15 +1,7 @@
1
- import { ChangeDetectorRef, EnvironmentInjector } from '@angular/core';
2
- import { ActivatedRoute, Router, RouterOutlet } from '@angular/router';
3
- import { ROUTED_SCENE } from './renderer/constants';
1
+ import { ChangeDetectorRef } from '@angular/core';
2
+ import { Router } from '@angular/router';
4
3
  import * as i0 from "@angular/core";
5
- export declare class NgtRouterOutlet extends RouterOutlet {
6
- private environmentInjector;
7
- activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector): void;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<NgtRouterOutlet, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgtRouterOutlet, "ngt-router-outlet", never, {}, {}, never, never, true, never>;
10
- }
11
4
  export declare class NgtRoutedScene {
12
- static [ROUTED_SCENE]: boolean;
13
5
  constructor(router: Router, cdr: ChangeDetectorRef);
14
6
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtRoutedScene, never>;
15
7
  static ɵcmp: i0.ɵɵComponentDeclaration<NgtRoutedScene, "ngt-routed-scene", never, {}, {}, never, never, true, never>;
package/lib/store.d.ts CHANGED
@@ -1,15 +1,10 @@
1
1
  import { InjectOptions, InjectionToken } from '@angular/core';
2
- import { NgtState } from './types';
3
- import { NgtSignalStore } from './utils/signal-store';
4
- declare function storeFactory(previousStore: NgtSignalStore<NgtState> | null): NgtSignalStore<NgtState>;
5
- export declare const NGT_STORE: InjectionToken<NgtSignalStore<NgtState>>;
6
- export declare function provideStore(store?: () => NgtSignalStore<NgtState>): {
7
- provide: InjectionToken<NgtSignalStore<NgtState>>;
8
- useFactory: typeof storeFactory;
9
- };
2
+ import type { NgtState } from './types';
3
+ import { SignalState } from './utils/signal-state';
4
+ export declare function storeFactory(): SignalState<NgtState>;
5
+ export declare const NGT_STORE: InjectionToken<SignalState<NgtState>>;
10
6
  export declare function injectStore(options: InjectOptions & {
11
7
  optional?: false;
12
- }): NgtSignalStore<NgtState>;
13
- export declare function injectStore(options: InjectOptions): NgtSignalStore<NgtState> | null;
14
- export declare function injectStore(): NgtSignalStore<NgtState>;
15
- export {};
8
+ }): SignalState<NgtState>;
9
+ export declare function injectStore(options: InjectOptions): SignalState<NgtState> | null;
10
+ export declare function injectStore(): SignalState<NgtState>;