angular-three 2.0.0-beta.21 → 2.0.0-beta.223
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/esm2022/index.mjs +4 -11
- package/esm2022/lib/canvas.mjs +81 -156
- package/esm2022/lib/directives/args.mjs +6 -6
- package/esm2022/lib/directives/common.mjs +15 -14
- package/esm2022/lib/directives/parent.mjs +6 -6
- package/esm2022/lib/dom/events.mjs +2 -2
- package/esm2022/lib/events.mjs +28 -25
- package/esm2022/lib/instance.mjs +39 -34
- package/esm2022/lib/loader.mjs +12 -14
- package/esm2022/lib/loop.mjs +9 -10
- package/esm2022/lib/portal.mjs +122 -135
- package/esm2022/lib/ref.mjs +18 -20
- package/esm2022/lib/renderer/catalogue.mjs +2 -2
- package/esm2022/lib/renderer/constants.mjs +2 -2
- package/esm2022/lib/renderer/index.mjs +58 -62
- package/esm2022/lib/renderer/store.mjs +129 -120
- package/esm2022/lib/renderer/utils.mjs +35 -42
- package/esm2022/lib/roots.mjs +41 -38
- package/esm2022/lib/routed-scene.mjs +6 -7
- package/esm2022/lib/store.mjs +163 -189
- package/esm2022/lib/utils/apply-props.mjs +12 -17
- package/esm2022/lib/utils/attach.mjs +6 -6
- package/esm2022/lib/utils/before-render.mjs +12 -0
- package/esm2022/lib/utils/cd-aware-signal.mjs +24 -0
- package/esm2022/lib/utils/create-api-token.mjs +13 -0
- package/esm2022/lib/utils/is.mjs +6 -5
- package/esm2022/lib/utils/make.mjs +15 -12
- package/esm2022/lib/utils/signal-store.mjs +67 -57
- package/esm2022/lib/utils/update.mjs +3 -2
- package/fesm2022/angular-three.mjs +1621 -1795
- package/fesm2022/angular-three.mjs.map +1 -1
- package/index.d.ts +6 -10
- package/lib/canvas.d.ts +24 -37
- package/lib/directives/common.d.ts +12 -1
- package/lib/events.d.ts +2 -2
- package/lib/instance.d.ts +19 -10
- package/lib/loader.d.ts +13 -4
- package/lib/loop.d.ts +6 -29
- package/lib/portal.d.ts +18 -26
- package/lib/ref.d.ts +0 -1
- package/lib/renderer/catalogue.d.ts +5 -1
- package/lib/renderer/constants.d.ts +1 -1
- package/lib/renderer/index.d.ts +55 -4
- package/lib/renderer/store.d.ts +18 -21
- package/lib/renderer/utils.d.ts +2 -3
- package/lib/roots.d.ts +4 -3
- package/lib/store.d.ts +9 -11
- package/lib/utils/apply-props.d.ts +0 -1
- package/lib/{before-render.d.ts → utils/before-render.d.ts} +1 -1
- package/lib/utils/cd-aware-signal.d.ts +4 -0
- package/lib/utils/create-api-token.d.ts +23 -0
- package/lib/utils/is.d.ts +11 -12
- package/lib/utils/make.d.ts +3 -2
- package/lib/utils/signal-store.d.ts +16 -3
- package/metadata.json +1 -1
- package/package.json +30 -11
- package/plugin/generators.json +0 -32
- package/plugin/src/generators/init/compat.d.ts +1 -3
- package/plugin/src/generators/init/files/experience/{experience.component.ts.__tmpl__ → experience.component.ts__tmpl__} +1 -0
- package/plugin/src/generators/init/generator.d.ts +2 -5
- package/plugin/src/generators/init/generator.js +94 -95
- package/plugin/src/generators/init/generator.js.map +1 -1
- package/plugin/src/generators/init/schema.json +1 -12
- package/plugin/src/generators/utils.js.map +1 -1
- package/plugin/src/generators/{versions.d.ts → version.d.ts} +5 -3
- package/plugin/src/generators/version.js +18 -0
- package/plugin/src/generators/version.js.map +1 -0
- package/plugin/src/index.d.ts +0 -3
- package/plugin/src/index.js +0 -9
- package/plugin/src/index.js.map +1 -1
- package/web-types.json +1 -1
- package/esm2022/lib/before-render.mjs +0 -13
- package/esm2022/lib/directives/key.mjs +0 -29
- package/esm2022/lib/directives/repeat.mjs +0 -17
- package/esm2022/lib/three-types.mjs +0 -2
- package/esm2022/lib/utils/assert-injection-context.mjs +0 -14
- package/esm2022/lib/utils/create-injection-token.mjs +0 -47
- package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
- package/lib/directives/key.d.ts +0 -10
- package/lib/directives/repeat.d.ts +0 -7
- package/lib/three-types.d.ts +0 -306
- package/lib/utils/assert-injection-context.d.ts +0 -2
- package/lib/utils/create-injection-token.d.ts +0 -27
- package/lib/utils/safe-detect-changes.d.ts +0 -2
- package/plugin/package.json +0 -6
- package/plugin/src/generators/init-cannon/compat.d.ts +0 -2
- package/plugin/src/generators/init-cannon/compat.js +0 -6
- package/plugin/src/generators/init-cannon/compat.js.map +0 -1
- package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
- package/plugin/src/generators/init-cannon/generator.js +0 -22
- package/plugin/src/generators/init-cannon/generator.js.map +0 -1
- package/plugin/src/generators/init-cannon/schema.json +0 -6
- package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
- package/plugin/src/generators/init-postprocessing/compat.js +0 -6
- package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
- package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
- package/plugin/src/generators/init-postprocessing/generator.js +0 -20
- package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
- package/plugin/src/generators/init-postprocessing/schema.json +0 -6
- package/plugin/src/generators/init-soba/compat.d.ts +0 -2
- package/plugin/src/generators/init-soba/compat.js +0 -6
- package/plugin/src/generators/init-soba/compat.js.map +0 -1
- package/plugin/src/generators/init-soba/generator.d.ts +0 -2
- package/plugin/src/generators/init-soba/generator.js +0 -26
- package/plugin/src/generators/init-soba/generator.js.map +0 -1
- package/plugin/src/generators/init-soba/schema.json +0 -6
- package/plugin/src/generators/versions.js +0 -16
- package/plugin/src/generators/versions.js.map +0 -1
- /package/plugin/src/generators/init/files/experience/{experience.component.html.__tmpl__ → experience.component.html__tmpl__} +0 -0
package/index.d.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
export * from './lib/before-render';
|
|
2
1
|
export * from './lib/canvas';
|
|
3
2
|
export * from './lib/directives/args';
|
|
4
|
-
export * from './lib/directives/key';
|
|
5
|
-
export * from './lib/directives/parent';
|
|
6
|
-
export * from './lib/directives/repeat';
|
|
7
|
-
export { type NgtCamera, type NgtThreeEvent } from './lib/events';
|
|
8
3
|
export * from './lib/instance';
|
|
9
4
|
export * from './lib/loader';
|
|
10
5
|
export { addAfterEffect, addEffect, addTail } from './lib/loop';
|
|
@@ -13,14 +8,15 @@ export * from './lib/ref';
|
|
|
13
8
|
export * from './lib/renderer';
|
|
14
9
|
export * from './lib/routed-scene';
|
|
15
10
|
export * from './lib/store';
|
|
16
|
-
export * from './lib/three-types';
|
|
17
|
-
export * from './lib/types';
|
|
18
11
|
export * from './lib/utils/apply-props';
|
|
19
|
-
export * from './lib/utils/assert-injection-context';
|
|
20
12
|
export { createAttachFunction } from './lib/utils/attach';
|
|
21
|
-
export * from './lib/utils/
|
|
13
|
+
export * from './lib/utils/before-render';
|
|
14
|
+
export * from './lib/utils/cd-aware-signal';
|
|
15
|
+
export * from './lib/utils/create-api-token';
|
|
22
16
|
export * from './lib/utils/is';
|
|
23
17
|
export * from './lib/utils/make';
|
|
24
|
-
export * from './lib/utils/safe-detect-changes';
|
|
25
18
|
export * from './lib/utils/signal-store';
|
|
26
19
|
export * from './lib/utils/update';
|
|
20
|
+
export type { NgtCamera, NgtThreeEvent } from './lib/events';
|
|
21
|
+
export type * from './lib/three-types';
|
|
22
|
+
export type * from './lib/types';
|
package/lib/canvas.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { ElementRef, EventEmitter, type
|
|
2
|
-
import { type
|
|
1
|
+
import { ElementRef, EventEmitter, type Type } from '@angular/core';
|
|
2
|
+
import { type ResizeResult } from 'ngxtension/resize';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import type { NgtCamera, NgtEventManager } from './events';
|
|
5
|
-
import { type
|
|
5
|
+
import { type NgtCanvasElement } from './roots';
|
|
6
|
+
import { type NgtDpr, type NgtPerformance, type NgtRendererLike, type NgtSize, type NgtState } from './store';
|
|
6
7
|
import type { NgtObject3DNode } from './three-types';
|
|
7
8
|
import type { NgtAnyRecord, NgtProperties } from './types';
|
|
8
9
|
import { type NgtSignalStore } from './utils/signal-store';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
|
-
export type NgtGLOptions =
|
|
11
|
+
export type NgtGLOptions = NgtRendererLike | ((canvas: NgtCanvasElement) => NgtRendererLike) | Partial<NgtProperties<THREE.WebGLRenderer> | THREE.WebGLRendererParameters> | undefined;
|
|
11
12
|
export type NgtCanvasInputs = {
|
|
12
13
|
/** A threejs renderer instance or props that go into the default renderer */
|
|
13
14
|
gl?: NgtGLOptions;
|
|
15
|
+
/** Dimensions to fit the renderer to. Will measure canvas dimensions if omitted */
|
|
14
16
|
size?: NgtSize;
|
|
15
17
|
/**
|
|
16
18
|
* Enables shadows (by default PCFsoft). Can accept `gl.shadowMap` options for fine-tuning,
|
|
@@ -23,7 +25,7 @@ export type NgtCanvasInputs = {
|
|
|
23
25
|
* @see https://threejs.org/docs/#manual/en/introduction/Color-management
|
|
24
26
|
*/
|
|
25
27
|
legacy?: boolean;
|
|
26
|
-
/** Switch off automatic sRGB
|
|
28
|
+
/** Switch off automatic sRGB color space and gamma correction */
|
|
27
29
|
linear?: boolean;
|
|
28
30
|
/** Use `THREE.NoToneMapping` instead of `THREE.ACESFilmicToneMapping` */
|
|
29
31
|
flat?: boolean;
|
|
@@ -59,49 +61,34 @@ export type NgtCanvasInputs = {
|
|
|
59
61
|
/** Default coordinate for the camera to look at */
|
|
60
62
|
lookAt?: THREE.Vector3 | Parameters<THREE.Vector3['set']>;
|
|
61
63
|
};
|
|
62
|
-
export declare class NgtCanvas
|
|
64
|
+
export declare class NgtCanvas {
|
|
63
65
|
private store;
|
|
64
66
|
private initRoot;
|
|
67
|
+
private autoEffect;
|
|
65
68
|
private host;
|
|
66
69
|
private viewContainerRef;
|
|
67
|
-
private injector;
|
|
68
|
-
private environmentInjector;
|
|
69
70
|
private zone;
|
|
70
|
-
private
|
|
71
|
-
private
|
|
72
|
-
|
|
73
|
-
sceneGraph: Type<unknown>;
|
|
74
|
-
sceneGraphInputs: NgtAnyRecord;
|
|
71
|
+
private environmentInjector;
|
|
72
|
+
private injector;
|
|
73
|
+
sceneGraph: Type<any>;
|
|
75
74
|
compoundPrefixes: string[];
|
|
76
|
-
|
|
77
|
-
set
|
|
78
|
-
|
|
79
|
-
set
|
|
80
|
-
set frameloop(frameloop: NgtCanvasInputs['frameloop']);
|
|
81
|
-
set dpr(dpr: NgtDpr);
|
|
82
|
-
set raycaster(raycaster: Partial<THREE.Raycaster>);
|
|
83
|
-
set shadows(shadows: boolean | Partial<THREE.WebGLShadowMap>);
|
|
84
|
-
set camera(camera: NgtCanvasInputs['camera']);
|
|
85
|
-
set scene(scene: NgtCanvasInputs['scene']);
|
|
86
|
-
set gl(gl: NgtCanvasInputs['gl']);
|
|
87
|
-
set eventSource(eventSource: NgtCanvasInputs['eventSource']);
|
|
88
|
-
set eventPrefix(eventPrefix: NgtCanvasInputs['eventPrefix']);
|
|
89
|
-
set lookAt(lookAt: NgtCanvasInputs['lookAt']);
|
|
90
|
-
set performance(performance: NgtCanvasInputs['performance']);
|
|
75
|
+
private sceneGraphInputs;
|
|
76
|
+
set _sceneGraphInputs(value: NgtAnyRecord);
|
|
77
|
+
private canvasInputs;
|
|
78
|
+
set _canvasInputs(value: Partial<NgtCanvasInputs>);
|
|
91
79
|
created: EventEmitter<NgtState>;
|
|
92
|
-
private inputsEventSource;
|
|
93
|
-
protected hbPointerEvents: import("@angular/core").Signal<"none" | "auto">;
|
|
94
80
|
glCanvas: ElementRef<HTMLCanvasElement>;
|
|
95
|
-
|
|
81
|
+
protected resizeResult: import("@angular/core").WritableSignal<ResizeResult>;
|
|
82
|
+
private eventSource;
|
|
83
|
+
protected hbPointerEvents: import("@angular/core").Signal<"none" | "auto">;
|
|
96
84
|
private configurator?;
|
|
97
85
|
private glEnvironmentInjector?;
|
|
98
86
|
private glRef?;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
private
|
|
103
|
-
private overrideChangeDetectorRef;
|
|
87
|
+
constructor();
|
|
88
|
+
private noZoneResizeEffect;
|
|
89
|
+
private noZoneRender;
|
|
90
|
+
private noZoneSceneGraphInputsEffect;
|
|
104
91
|
private setSceneGraphInputs;
|
|
105
92
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtCanvas, never>;
|
|
106
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtCanvas, "ngt-canvas", never, { "sceneGraph": { "alias": "sceneGraph"; "required": true; }; "
|
|
93
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtCanvas, "ngt-canvas", never, { "sceneGraph": { "alias": "sceneGraph"; "required": true; }; "compoundPrefixes": { "alias": "compoundPrefixes"; "required": false; }; "_sceneGraphInputs": { "alias": "sceneGraphInputs"; "required": false; }; "_canvasInputs": { "alias": "options"; "required": false; }; }, { "created": "created"; }, never, never, true, never>;
|
|
107
94
|
}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
export declare const injectNodeType: {
|
|
3
|
+
(): "" | "parent" | "args";
|
|
4
|
+
(injectOptions: import("@angular/core").InjectOptions & {
|
|
5
|
+
optional?: false | undefined;
|
|
6
|
+
} & {
|
|
7
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
8
|
+
}): "" | "parent" | "args";
|
|
9
|
+
(injectOptions: import("@angular/core").InjectOptions & {
|
|
10
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
11
|
+
}): "" | "parent" | "args" | null;
|
|
12
|
+
}, provideNodeType: (() => import("@angular/core").Provider) & (((value: "" | (() => "")) => import("@angular/core").Provider) | ((value: "parent" | (() => "parent")) => import("@angular/core").Provider) | ((value: "args" | (() => "args")) => import("@angular/core").Provider));
|
|
2
13
|
export declare abstract class NgtCommonDirective {
|
|
3
|
-
protected static processComment: boolean;
|
|
4
14
|
private vcr;
|
|
5
15
|
private zone;
|
|
6
16
|
private template;
|
|
17
|
+
private nodeType;
|
|
7
18
|
protected injected: boolean;
|
|
8
19
|
protected shouldCreateView: boolean;
|
|
9
20
|
private view?;
|
package/lib/events.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export type NgtEvents = {
|
|
|
51
51
|
};
|
|
52
52
|
export type NgtFilterFunction = (items: THREE.Intersection[], store: NgtSignalStore<NgtState>) => THREE.Intersection[];
|
|
53
53
|
export type NgtComputeFunction = (event: NgtDomEvent, root: NgtSignalStore<NgtState>, previous: NgtSignalStore<NgtState> | null) => void;
|
|
54
|
-
export
|
|
54
|
+
export type NgtEventManager<TTarget> = {
|
|
55
55
|
/** Determines if the event layer is active */
|
|
56
56
|
enabled: boolean;
|
|
57
57
|
/** Event layer priority, higher prioritized layers come first and may stop(-propagate) lower layer */
|
|
@@ -72,7 +72,7 @@ export interface NgtEventManager<TTarget> {
|
|
|
72
72
|
* explicit user interaction, for instance when the camera moves a hoverable object underneath the cursor.
|
|
73
73
|
*/
|
|
74
74
|
update?: () => void;
|
|
75
|
-
}
|
|
75
|
+
};
|
|
76
76
|
export interface NgtPointerCaptureTarget {
|
|
77
77
|
intersection: NgtIntersection;
|
|
78
78
|
target: Element;
|
package/lib/instance.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter,
|
|
1
|
+
import type { EventEmitter, Signal } from '@angular/core';
|
|
2
2
|
import type { NgtEventHandlers } from './events';
|
|
3
3
|
import type { NgtState } from './store';
|
|
4
4
|
import type { NgtAnyRecord } from './types';
|
|
@@ -8,15 +8,24 @@ export type NgtAfterAttach<TChild extends NgtInstanceNode = NgtInstanceNode, TPa
|
|
|
8
8
|
parent: TParent;
|
|
9
9
|
node: TChild;
|
|
10
10
|
};
|
|
11
|
-
export type
|
|
12
|
-
|
|
11
|
+
export type NgtLocalInstanceState = {
|
|
12
|
+
objects: NgtInstanceNode[];
|
|
13
|
+
nonObjects: NgtInstanceNode[];
|
|
14
|
+
parent: NgtInstanceNode | null;
|
|
15
|
+
nativeProps: NgtAnyRecord;
|
|
16
|
+
};
|
|
17
|
+
export type NgtLocalState = {
|
|
18
|
+
/** the store of the canvas that the instance is being rendered to */
|
|
13
19
|
store: NgtSignalStore<NgtState>;
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
instanceStore: NgtSignalStore<NgtLocalInstanceState>;
|
|
21
|
+
parent: Signal<NgtLocalInstanceState['parent']>;
|
|
22
|
+
objects: Signal<NgtLocalInstanceState['objects']>;
|
|
23
|
+
nonObjects: Signal<NgtLocalInstanceState['nonObjects']>;
|
|
24
|
+
nativeProps: Signal<NgtLocalInstanceState['nativeProps']>;
|
|
16
25
|
add: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
|
|
17
26
|
remove: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
|
|
18
|
-
|
|
19
|
-
parent:
|
|
27
|
+
setNativeProps: (key: string, value: any) => void;
|
|
28
|
+
setParent: (parent: NgtInstanceNode | null) => void;
|
|
20
29
|
primitive?: boolean;
|
|
21
30
|
eventCount: number;
|
|
22
31
|
handlers: Partial<NgtEventHandlers>;
|
|
@@ -29,8 +38,8 @@ export type NgtInstanceLocalState = {
|
|
|
29
38
|
afterAttach?: EventEmitter<NgtAfterAttach>;
|
|
30
39
|
};
|
|
31
40
|
export type NgtInstanceNode<TNode = any> = {
|
|
32
|
-
__ngt__:
|
|
41
|
+
__ngt__: NgtLocalState;
|
|
33
42
|
} & NgtAnyRecord & TNode;
|
|
34
|
-
export declare function getLocalState<TInstance extends object
|
|
43
|
+
export declare function getLocalState<TInstance extends object>(obj: TInstance | undefined): NgtLocalState | undefined;
|
|
35
44
|
export declare function invalidateInstance<TInstance extends object>(instance: TInstance): void;
|
|
36
|
-
export declare function prepare<TInstance extends object = NgtAnyRecord>(object: TInstance, localState?: Partial<
|
|
45
|
+
export declare function prepare<TInstance extends object = NgtAnyRecord>(object: TInstance, localState?: Partial<NgtLocalState>): NgtInstanceNode<TInstance>;
|
package/lib/loader.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Injector, type Signal } from '@angular/core';
|
|
2
|
-
import type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';
|
|
3
2
|
import { type NgtObjectMap } from './utils/make';
|
|
3
|
+
export type NgtGLTFLike = {
|
|
4
|
+
scene: THREE.Object3D;
|
|
5
|
+
};
|
|
4
6
|
export interface NgtLoader<T> extends THREE.Loader {
|
|
5
|
-
load(url: string, onLoad?: (result: T) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event:
|
|
7
|
+
load(url: string, onLoad?: (result: T) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: unknown) => void): unknown;
|
|
6
8
|
loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<T>;
|
|
7
9
|
}
|
|
8
10
|
export type NgtLoaderProto<T> = new (...args: any) => NgtLoader<T extends unknown ? any : T>;
|
|
@@ -15,8 +17,15 @@ export type NgtBranchingReturn<T, Parent, Coerced> = NgtConditionalType<T, Paren
|
|
|
15
17
|
export type NgtLoaderResults<TInput extends string | string[] | Record<string, string>, TReturn> = TInput extends string[] ? TReturn[] : TInput extends object ? {
|
|
16
18
|
[key in keyof TInput]: TReturn;
|
|
17
19
|
} : TReturn;
|
|
18
|
-
|
|
20
|
+
declare function _injectNgtLoader<TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>, TReturn = NgtLoaderReturnType<TData, TLoaderConstructor>>(loaderConstructorFactory: (inputs: string[]) => TLoaderConstructor, inputs: () => TUrl, { extensions, onProgress, injector, }?: {
|
|
19
21
|
extensions?: NgtLoaderExtensions<TLoaderConstructor>;
|
|
20
22
|
onProgress?: (event: ProgressEvent) => void;
|
|
21
23
|
injector?: Injector;
|
|
22
|
-
}): Signal<NgtLoaderResults<TUrl, NgtBranchingReturn<TReturn,
|
|
24
|
+
}): Signal<NgtLoaderResults<TUrl, NgtBranchingReturn<TReturn, NgtGLTFLike, NgtGLTFLike & NgtObjectMap>> | null>;
|
|
25
|
+
declare namespace _injectNgtLoader {
|
|
26
|
+
var preload: <TData, TUrl extends string | string[] | Record<string, string>, TLoaderConstructor extends NgtLoaderProto<TData>>(loaderConstructorFactory: (inputs: string[]) => TLoaderConstructor, inputs: () => TUrl, extensions?: NgtLoaderExtensions<TLoaderConstructor> | undefined) => void;
|
|
27
|
+
var destroy: () => void;
|
|
28
|
+
}
|
|
29
|
+
export type NgtInjectedLoader = typeof _injectNgtLoader;
|
|
30
|
+
export declare const injectNgtLoader: NgtInjectedLoader;
|
|
31
|
+
export {};
|
package/lib/loop.d.ts
CHANGED
|
@@ -19,19 +19,6 @@ export declare const addAfterEffect: (callback: NgtGlobalRenderCallback) => () =
|
|
|
19
19
|
export declare const addTail: (callback: NgtGlobalRenderCallback) => () => void;
|
|
20
20
|
export type NgtGlobalEffectType = 'before' | 'after' | 'tail';
|
|
21
21
|
export declare function flushGlobalEffects(type: NgtGlobalEffectType, timestamp: number): void;
|
|
22
|
-
declare function createLoop<TCanvas>(roots: Map<TCanvas, NgtSignalStore<NgtState>>): {
|
|
23
|
-
loop: (timestamp: number) => void;
|
|
24
|
-
/**
|
|
25
|
-
* Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.
|
|
26
|
-
* @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate
|
|
27
|
-
*/
|
|
28
|
-
invalidate: (store?: NgtSignalStore<NgtState>, frames?: number) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop="never"`.
|
|
31
|
-
* @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance
|
|
32
|
-
*/
|
|
33
|
-
advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
|
|
34
|
-
};
|
|
35
22
|
export declare const injectNgtLoop: {
|
|
36
23
|
(): {
|
|
37
24
|
loop: (timestamp: number) => void;
|
|
@@ -48,6 +35,8 @@ export declare const injectNgtLoop: {
|
|
|
48
35
|
};
|
|
49
36
|
(injectOptions: import("@angular/core").InjectOptions & {
|
|
50
37
|
optional?: false | undefined;
|
|
38
|
+
} & {
|
|
39
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
51
40
|
}): {
|
|
52
41
|
loop: (timestamp: number) => void;
|
|
53
42
|
/**
|
|
@@ -61,7 +50,9 @@ export declare const injectNgtLoop: {
|
|
|
61
50
|
*/
|
|
62
51
|
advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
|
|
63
52
|
};
|
|
64
|
-
(injectOptions: import("@angular/core").InjectOptions
|
|
53
|
+
(injectOptions: import("@angular/core").InjectOptions & {
|
|
54
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
55
|
+
}): {
|
|
65
56
|
loop: (timestamp: number) => void;
|
|
66
57
|
/**
|
|
67
58
|
* Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.
|
|
@@ -74,18 +65,4 @@ export declare const injectNgtLoop: {
|
|
|
74
65
|
*/
|
|
75
66
|
advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
|
|
76
67
|
} | null;
|
|
77
|
-
}
|
|
78
|
-
loop: (timestamp: number) => void;
|
|
79
|
-
/**
|
|
80
|
-
* Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.
|
|
81
|
-
* @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate
|
|
82
|
-
*/
|
|
83
|
-
invalidate: (store?: NgtSignalStore<NgtState>, frames?: number) => void;
|
|
84
|
-
/**
|
|
85
|
-
* Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop="never"`.
|
|
86
|
-
* @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance
|
|
87
|
-
*/
|
|
88
|
-
advance: (timestamp: number, runGlobalEffects?: boolean, store?: NgtSignalStore<NgtState>, frame?: XRFrame) => void;
|
|
89
|
-
}>;
|
|
90
|
-
export type NgtLoop = ReturnType<typeof createLoop>;
|
|
91
|
-
export {};
|
|
68
|
+
};
|
package/lib/portal.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ElementRef, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import type { NgtEventManager } from './events';
|
|
4
|
-
import { type
|
|
4
|
+
import { type NgtSize, type NgtState } from './store';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
declare const privateKeys: readonly ["get", "set", "select", "setSize", "setDpr", "setFrameloop", "events", "invalidate", "advance", "size", "viewport"];
|
|
7
7
|
type PrivateKeys = (typeof privateKeys)[number];
|
|
@@ -13,49 +13,41 @@ export interface NgtPortalInputs {
|
|
|
13
13
|
size: NgtSize;
|
|
14
14
|
}>;
|
|
15
15
|
}
|
|
16
|
-
export declare class NgtPortalBeforeRender
|
|
16
|
+
export declare class NgtPortalBeforeRender {
|
|
17
17
|
private portalStore;
|
|
18
18
|
private injector;
|
|
19
19
|
renderPriority: number;
|
|
20
20
|
parentScene: THREE.Scene;
|
|
21
21
|
parentCamera: THREE.Camera;
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
constructor();
|
|
23
|
+
onPointerOver(): void;
|
|
24
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortalBeforeRender, never>;
|
|
25
|
-
static
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortalBeforeRender, "ngt-portal-before-render", never, { "renderPriority": { "alias": "renderPriority"; "required": false; }; "parentScene": { "alias": "parentScene"; "required": true; }; "parentCamera": { "alias": "parentCamera"; "required": true; }; }, {}, never, never, true, never>;
|
|
26
26
|
}
|
|
27
27
|
export declare class NgtPortalContent {
|
|
28
28
|
constructor(vcr: ViewContainerRef, parentVcr: ViewContainerRef);
|
|
29
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortalContent, [null, { skipSelf: true; }]>;
|
|
30
30
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtPortalContent, "ng-template[ngtPortalContent]", never, {}, {}, never, never, true, never>;
|
|
31
31
|
}
|
|
32
|
-
export declare class NgtPortal
|
|
33
|
-
private
|
|
34
|
-
set
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
export declare class NgtPortal {
|
|
33
|
+
private portalInputs;
|
|
34
|
+
set _portalInputs(value: Partial<NgtPortalInputs>);
|
|
35
|
+
private autoRender;
|
|
36
|
+
set _autoRender(value: boolean);
|
|
37
37
|
autoRenderPriority: number;
|
|
38
|
-
beforeRender: EventEmitter<{
|
|
39
|
-
root: NgtRenderState;
|
|
40
|
-
portal: NgtRenderState;
|
|
41
|
-
}>;
|
|
42
38
|
portalContentTemplate: TemplateRef<unknown>;
|
|
43
39
|
portalContentAnchor: ViewContainerRef;
|
|
40
|
+
private destroyRef;
|
|
41
|
+
private autoEffect;
|
|
44
42
|
private parentStore;
|
|
45
|
-
parentScene: THREE.Scene;
|
|
46
|
-
parentCamera: import("./store").NgtCameraManual;
|
|
47
43
|
private portalStore;
|
|
48
|
-
private
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
portalContentRendered: boolean;
|
|
53
|
-
private portalContentView?;
|
|
44
|
+
private portalRendered;
|
|
45
|
+
protected renderAutoBeforeRender: import("@angular/core").Signal<boolean>;
|
|
46
|
+
protected parentScene: THREE.Scene;
|
|
47
|
+
protected parentCamera: import("./store").NgtCameraManual;
|
|
54
48
|
constructor();
|
|
55
|
-
ngOnInit(): void;
|
|
56
|
-
onBeforeRender(portal: NgtRenderState): void;
|
|
57
49
|
private inject;
|
|
58
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortal, never>;
|
|
59
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortal, "ngt-portal", never, { "
|
|
51
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortal, "ngt-portal", never, { "_portalInputs": { "alias": "options"; "required": false; }; "_autoRender": { "alias": "autoRender"; "required": false; }; "autoRenderPriority": { "alias": "autoRenderPriority"; "required": false; }; }, {}, ["portalContentTemplate"], never, true, never>;
|
|
60
52
|
}
|
|
61
53
|
export {};
|
package/lib/ref.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { ElementRef, type Injector, type Signal } from '@angular/core';
|
|
|
2
2
|
import { type NgtInstanceNode } from './instance';
|
|
3
3
|
export type NgtInjectedRef<TElement> = ElementRef<TElement> & {
|
|
4
4
|
children: (type?: 'objects' | 'nonObjects' | 'both') => Signal<NgtInstanceNode[]>;
|
|
5
|
-
untracked: TElement;
|
|
6
5
|
};
|
|
7
6
|
export type NgtRef<TElement> = TElement | NgtInjectedRef<TElement>;
|
|
8
7
|
export declare function injectNgtRef<TElement>(initial?: ElementRef<TElement> | TElement, injector?: Injector): NgtInjectedRef<TElement>;
|
|
@@ -4,6 +4,10 @@ export declare const injectNgtCatalogue: {
|
|
|
4
4
|
(): Record<string, NgtAnyConstructor>;
|
|
5
5
|
(injectOptions: import("@angular/core").InjectOptions & {
|
|
6
6
|
optional?: false | undefined;
|
|
7
|
+
} & {
|
|
8
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
7
9
|
}): Record<string, NgtAnyConstructor>;
|
|
8
|
-
(injectOptions: import("@angular/core").InjectOptions
|
|
10
|
+
(injectOptions: import("@angular/core").InjectOptions & {
|
|
11
|
+
injector?: import("@angular/core").Injector | undefined;
|
|
12
|
+
}): Record<string, NgtAnyConstructor> | null;
|
|
9
13
|
};
|
|
@@ -10,7 +10,7 @@ export declare const SPECIAL_PROPERTIES: {
|
|
|
10
10
|
readonly COMPOUND: "ngtCompound";
|
|
11
11
|
readonly RENDER_PRIORITY: "priority";
|
|
12
12
|
readonly ATTACH: "attach";
|
|
13
|
-
readonly
|
|
13
|
+
readonly RAW_VALUE: "rawValue";
|
|
14
14
|
readonly REF: "ref";
|
|
15
15
|
};
|
|
16
16
|
export declare const SPECIAL_EVENTS: {
|
package/lib/renderer/index.d.ts
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type
|
|
3
|
-
|
|
1
|
+
import { RendererFactory2, type Renderer2, type RendererType2 } from '@angular/core';
|
|
2
|
+
import { type NgtState } from '../store';
|
|
3
|
+
import type { NgtAnyRecord } from '../types';
|
|
4
|
+
import type { NgtSignalStore } from '../utils/signal-store';
|
|
5
|
+
import { type NgtAnyConstructor } from './catalogue';
|
|
6
|
+
import { NgtRendererStore, type NgtRendererNode, type NgtRendererState } from './store';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class NgtRendererFactory implements RendererFactory2 {
|
|
9
|
+
private delegateRendererFactory;
|
|
10
|
+
private catalogue;
|
|
11
|
+
private rendererMap;
|
|
12
|
+
private routedSet;
|
|
13
|
+
private rendererStore;
|
|
14
|
+
createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtRendererFactory, never>;
|
|
16
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NgtRendererFactory>;
|
|
17
|
+
}
|
|
18
|
+
export declare class NgtRenderer implements Renderer2 {
|
|
19
|
+
private delegate;
|
|
20
|
+
private store;
|
|
21
|
+
private catalogue;
|
|
22
|
+
private isRoot;
|
|
23
|
+
constructor(delegate: Renderer2, store: NgtRendererStore, catalogue: Record<string, NgtAnyConstructor>, isRoot?: boolean);
|
|
24
|
+
createElement(name: string, namespace?: string | null | undefined): NgtAnyRecord & {
|
|
25
|
+
__ngt_renderer__: NgtRendererState;
|
|
26
|
+
};
|
|
27
|
+
createComment(value: string): NgtAnyRecord & {
|
|
28
|
+
__ngt_renderer__: NgtRendererState;
|
|
29
|
+
};
|
|
30
|
+
appendChild(parent: NgtRendererNode, newChild: NgtRendererNode): void;
|
|
31
|
+
insertBefore(parent: NgtRendererNode, newChild: NgtRendererNode): void;
|
|
32
|
+
removeChild(parent: NgtRendererNode, oldChild: NgtRendererNode, isHostElement?: boolean | undefined): void;
|
|
33
|
+
parentNode(node: NgtRendererNode): any;
|
|
34
|
+
private setAttributeInternal;
|
|
35
|
+
setAttribute(el: NgtRendererNode, name: string, value: string, namespace?: string | null | undefined): void;
|
|
36
|
+
removeAttribute(el: NgtRendererNode, name: string, namespace?: string | null | undefined): void;
|
|
37
|
+
setProperty(el: NgtRendererNode, name: string, value: any): void;
|
|
38
|
+
listen(target: NgtRendererNode, eventName: string, callback: (event: any) => boolean | void): () => void;
|
|
39
|
+
private shouldFindGrandparentInstance;
|
|
40
|
+
createText: (value: string) => any;
|
|
41
|
+
destroy: () => void;
|
|
42
|
+
destroyNode: ((node: any) => void) | null;
|
|
43
|
+
selectRootElement: (selectorOrNode: any, preserveContent?: boolean | undefined) => any;
|
|
44
|
+
nextSibling: (node: any) => any;
|
|
45
|
+
addClass: (el: any, name: string) => void;
|
|
46
|
+
removeClass: (el: any, name: string) => void;
|
|
47
|
+
setStyle: (el: any, style: string, value: any, flags?: import("@angular/core").RendererStyleFlags2 | undefined) => void;
|
|
48
|
+
removeStyle: (el: any, style: string, flags?: import("@angular/core").RendererStyleFlags2 | undefined) => void;
|
|
49
|
+
setValue: (node: any, value: string) => void;
|
|
50
|
+
get data(): {
|
|
51
|
+
[key: string]: any;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export declare function provideNgtRenderer(store: NgtSignalStore<NgtState>, compoundPrefixes: string[]): import("@angular/core").EnvironmentProviders;
|
|
4
55
|
export { extend } from './catalogue';
|
|
5
|
-
export { HTML } from './constants';
|
|
56
|
+
export { HTML, ROUTED_SCENE } from './constants';
|
package/lib/renderer/store.d.ts
CHANGED
|
@@ -5,12 +5,6 @@ import type { NgtAnyRecord } from '../types';
|
|
|
5
5
|
import type { NgtSignalStore } from '../utils/signal-store';
|
|
6
6
|
import { NgtRendererClassId } from './utils';
|
|
7
7
|
export declare const NGT_COMPOUND_PREFIXES: InjectionToken<string[]>;
|
|
8
|
-
type NgtRendererRootState = {
|
|
9
|
-
store: NgtSignalStore<NgtState>;
|
|
10
|
-
compoundPrefixes: string[];
|
|
11
|
-
document: Document;
|
|
12
|
-
portals: Array<NgtRendererNode>;
|
|
13
|
-
};
|
|
14
8
|
type NgtQueueOp = [type: 'op' | 'cleanUp', op: () => void, done?: true];
|
|
15
9
|
export type NgtRendererState = [
|
|
16
10
|
type: 'three' | 'compound' | 'portal' | 'comment' | 'dom',
|
|
@@ -27,39 +21,42 @@ export type NgtRendererState = [
|
|
|
27
21
|
rawValue: any,
|
|
28
22
|
ref: any,
|
|
29
23
|
portalContainer: NgtRendererNode,
|
|
30
|
-
injectorFactory: () => Injector
|
|
24
|
+
injectorFactory: () => Injector | undefined
|
|
31
25
|
];
|
|
32
26
|
export type NgtRendererNode = {
|
|
33
27
|
__ngt_renderer__: NgtRendererState;
|
|
34
28
|
};
|
|
29
|
+
type NgtRendererRootState = {
|
|
30
|
+
store: NgtSignalStore<NgtState>;
|
|
31
|
+
compoundPrefixes: string[];
|
|
32
|
+
document: Document;
|
|
33
|
+
};
|
|
35
34
|
export declare class NgtRendererStore {
|
|
36
|
-
private
|
|
37
|
-
private
|
|
38
|
-
|
|
35
|
+
private rootState;
|
|
36
|
+
private argsCommentNodes;
|
|
37
|
+
private parentCommentNodes;
|
|
38
|
+
private portalCommentsNodes;
|
|
39
|
+
constructor(rootState: NgtRendererRootState);
|
|
39
40
|
createNode(type: NgtRendererState[NgtRendererClassId.type], node: NgtAnyRecord): NgtAnyRecord & {
|
|
40
41
|
__ngt_renderer__: NgtRendererState;
|
|
41
42
|
};
|
|
43
|
+
isCompound(name: string): boolean;
|
|
44
|
+
isDOM(node: NgtAnyRecord): boolean;
|
|
45
|
+
getClosestParentWithInstance(node: NgtRendererNode): NgtRendererNode | null;
|
|
46
|
+
getClosestParentWithCompound(node: NgtRendererNode): NgtRendererNode | null;
|
|
47
|
+
processPortalContainer(portal: NgtRendererNode): void;
|
|
48
|
+
getCreationState(): readonly [any[], string | NgtRef<import("three").Object3D<import("three").Object3DEventMap>> | null, NgtSignalStore<NgtState>];
|
|
42
49
|
setParent(node: NgtRendererNode, parent: NgtRendererNode): void;
|
|
43
50
|
addChild(node: NgtRendererNode, child: NgtRendererNode): void;
|
|
44
51
|
removeChild(node: NgtRendererNode, child: NgtRendererNode): void;
|
|
45
52
|
setCompound(compound: NgtRendererNode, instance: NgtRendererNode): void;
|
|
46
53
|
queueOperation(node: NgtRendererNode, op: NgtQueueOp): void;
|
|
47
54
|
private executeOperation;
|
|
48
|
-
processPortalContainer(portal: NgtRendererNode): void;
|
|
49
55
|
applyAttribute(node: NgtRendererNode, name: string, value: string): void;
|
|
50
56
|
applyProperty(node: NgtRendererNode, name: string, value: any): void;
|
|
51
|
-
isCompound(name: string): boolean;
|
|
52
|
-
isDOM(node: NgtAnyRecord): boolean;
|
|
53
57
|
get rootScene(): import("three").Scene;
|
|
54
|
-
get portals(): NgtRendererNode[];
|
|
55
|
-
getClosestParentWithInstance(node: NgtRendererNode): NgtRendererNode | null;
|
|
56
|
-
getClosestParentWithCompound(node: NgtRendererNode): NgtRendererNode | null | undefined;
|
|
57
|
-
getCreationState(): {
|
|
58
|
-
injectedArgs: any[];
|
|
59
|
-
injectedParent: string | NgtRef<import("three").Object3D<import("three").Event>> | null;
|
|
60
|
-
store: NgtSignalStore<NgtState>;
|
|
61
|
-
};
|
|
62
58
|
destroy(node: NgtRendererNode, parent?: NgtRendererNode): void;
|
|
59
|
+
private removeCommentNode;
|
|
63
60
|
private updateNativeProps;
|
|
64
61
|
private firstNonInjectedDirective;
|
|
65
62
|
private tryGetPortalStore;
|
package/lib/renderer/utils.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ChangeDetectorRef, NgZone } from '@angular/core';
|
|
2
1
|
import { type NgtInstanceNode } from '../instance';
|
|
3
2
|
export declare const enum NgtRendererClassId {
|
|
4
3
|
type = 0,
|
|
@@ -26,7 +25,7 @@ export declare const enum NgtQueueOpClassId {
|
|
|
26
25
|
op = 1,
|
|
27
26
|
done = 2
|
|
28
27
|
}
|
|
28
|
+
export declare function kebabToPascal(str: string): string;
|
|
29
29
|
export declare function attachThreeChild(parent: NgtInstanceNode, child: NgtInstanceNode): void;
|
|
30
30
|
export declare function removeThreeChild(parent: NgtInstanceNode, child: NgtInstanceNode, dispose?: boolean): void;
|
|
31
|
-
export declare function
|
|
32
|
-
export declare function processThreeEvent(instance: NgtInstanceNode, priority: number, eventName: string, callback: (event: any) => void, zone: NgZone, rootCdr: ChangeDetectorRef, targetCdr?: ChangeDetectorRef | null): () => void;
|
|
31
|
+
export declare function processThreeEvent(instance: NgtInstanceNode, priority: number, eventName: string, callback: (event: any) => void): () => void;
|
package/lib/roots.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
2
2
|
import type { NgtCanvasInputs } from './canvas';
|
|
3
3
|
import { type NgtState } from './store';
|
|
4
4
|
import type { NgtSignalStore } from './utils/signal-store';
|
|
5
|
-
export
|
|
6
|
-
export declare
|
|
5
|
+
export type NgtCanvasElement = HTMLCanvasElement | OffscreenCanvas;
|
|
6
|
+
export declare const roots: Map<NgtCanvasElement, NgtSignalStore<NgtState>>;
|
|
7
|
+
export declare function injectCanvasRootInitializer(injector?: Injector): (canvas: NgtCanvasElement) => {
|
|
7
8
|
isConfigured: boolean;
|
|
8
9
|
destroy: (timeout?: number) => void;
|
|
9
10
|
configure: (inputs: NgtCanvasInputs) => void;
|