angular-three 2.0.0-beta.242 → 2.0.0-beta.244
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 +2 -2
- package/esm2022/lib/canvas.mjs +19 -27
- package/esm2022/lib/directives/args.mjs +52 -14
- package/esm2022/lib/instance.mjs +10 -9
- package/esm2022/lib/loop.mjs +2 -2
- package/esm2022/lib/portal.mjs +119 -111
- package/esm2022/lib/renderer/catalogue.mjs +2 -2
- package/esm2022/lib/renderer/constants.mjs +3 -5
- package/esm2022/lib/renderer/index.mjs +276 -194
- package/esm2022/lib/renderer/state.mjs +49 -0
- package/esm2022/lib/renderer/utils.mjs +40 -24
- package/esm2022/lib/roots.mjs +25 -25
- package/esm2022/lib/routed-scene.mjs +3 -3
- package/esm2022/lib/store.mjs +14 -12
- package/esm2022/lib/three-types.mjs +1 -1
- package/esm2022/lib/utils/apply-props.mjs +3 -3
- package/esm2022/lib/utils/before-render.mjs +4 -3
- package/esm2022/lib/utils/parameters.mjs +33 -28
- package/esm2022/lib/utils/resolve-ref.mjs +8 -0
- package/esm2022/lib/utils/signal-store.mjs +3 -14
- package/fesm2022/angular-three.mjs +720 -1089
- package/fesm2022/angular-three.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/lib/canvas.d.ts +278 -1001
- package/lib/directives/args.d.ts +11 -4
- package/lib/instance.d.ts +8 -13
- package/lib/loop.d.ts +1 -1
- package/lib/portal.d.ts +41 -31
- package/lib/renderer/catalogue.d.ts +1 -1
- package/lib/renderer/constants.d.ts +2 -4
- package/lib/renderer/index.d.ts +15 -5
- package/lib/renderer/state.d.ts +23 -0
- package/lib/renderer/utils.d.ts +5 -22
- package/lib/roots.d.ts +5 -0
- package/lib/store.d.ts +12 -12
- package/lib/three-types.d.ts +8 -5
- package/lib/utils/parameters.d.ts +6 -9
- package/lib/utils/resolve-ref.d.ts +2 -0
- package/lib/utils/signal-store.d.ts +1 -5
- package/metadata.json +1 -1
- package/package.json +71 -72
- package/web-types.json +1 -1
- package/esm2022/lib/directives/common.mjs +0 -67
- package/esm2022/lib/directives/parent.mjs +0 -20
- package/esm2022/lib/ref.mjs +0 -50
- package/esm2022/lib/renderer/store.mjs +0 -439
- package/lib/directives/common.d.ts +0 -31
- package/lib/directives/parent.d.ts +0 -11
- package/lib/ref.d.ts +0 -7
- package/lib/renderer/store.d.ts +0 -65
package/lib/directives/args.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { NgtCommonDirective } from './common';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class NgtArgs<TArgs extends any[] = any[]>
|
|
2
|
+
export declare class NgtArgs<TArgs extends any[] = any[]> {
|
|
4
3
|
args: import("@angular/core").InputSignal<TArgs | null>;
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
private vcr;
|
|
5
|
+
private zone;
|
|
6
|
+
private template;
|
|
7
|
+
private autoEffect;
|
|
8
|
+
protected injected: boolean;
|
|
9
|
+
protected injectedArgs: TArgs | null;
|
|
10
|
+
private view?;
|
|
11
|
+
constructor();
|
|
12
|
+
get value(): TArgs | null;
|
|
7
13
|
validate(): boolean;
|
|
14
|
+
private createView;
|
|
8
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtArgs<any>, never>;
|
|
9
16
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtArgs<any>, "ng-template[args]", never, { "args": { "alias": "args"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
10
17
|
}
|
package/lib/instance.d.ts
CHANGED
|
@@ -1,43 +1,38 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
|
-
import { ReplaySubject } from 'rxjs';
|
|
3
2
|
import { NgtEventHandlers } from './events';
|
|
4
3
|
import { NgtState } from './store';
|
|
5
4
|
import { NgtAnyRecord } from './types';
|
|
6
5
|
import { NgtSignalStore } from './utils/signal-store';
|
|
7
6
|
export type NgtAttachFunction<TChild = any, TParent = any> = (parent: TParent, child: TChild, store: NgtSignalStore<NgtState>) => void | (() => void);
|
|
8
|
-
export
|
|
7
|
+
export interface NgtAfterAttach<TChild extends NgtInstanceNode = NgtInstanceNode, TParent extends NgtInstanceNode = NgtInstanceNode> {
|
|
9
8
|
parent: TParent;
|
|
10
9
|
node: TChild;
|
|
11
|
-
}
|
|
12
|
-
export
|
|
10
|
+
}
|
|
11
|
+
export interface NgtLocalInstanceState {
|
|
13
12
|
objects: NgtInstanceNode[];
|
|
14
13
|
nonObjects: NgtInstanceNode[];
|
|
15
14
|
parent: NgtInstanceNode | null;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export type NgtLocalState = {
|
|
15
|
+
}
|
|
16
|
+
export interface NgtLocalState {
|
|
19
17
|
/** the store of the canvas that the instance is being rendered to */
|
|
20
18
|
store: NgtSignalStore<NgtState>;
|
|
21
19
|
instanceStore: NgtSignalStore<NgtLocalInstanceState>;
|
|
22
20
|
parent: Signal<NgtLocalInstanceState['parent']>;
|
|
23
21
|
objects: Signal<NgtLocalInstanceState['objects']>;
|
|
24
22
|
nonObjects: Signal<NgtLocalInstanceState['nonObjects']>;
|
|
25
|
-
nativeProps: Signal<NgtLocalInstanceState['nativeProps']>;
|
|
26
23
|
add: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
|
|
27
24
|
remove: (instance: NgtInstanceNode, type: 'objects' | 'nonObjects') => void;
|
|
28
|
-
setNativeProps: (key: string, value: any) => void;
|
|
29
25
|
setParent: (parent: NgtInstanceNode | null) => void;
|
|
30
26
|
primitive?: boolean;
|
|
31
27
|
eventCount: number;
|
|
32
28
|
handlers: Partial<NgtEventHandlers>;
|
|
33
|
-
args?: unknown[];
|
|
34
29
|
attach?: string[] | NgtAttachFunction;
|
|
35
30
|
previousAttach?: unknown | (() => void);
|
|
36
31
|
isRaw?: boolean;
|
|
37
32
|
priority?: number;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
33
|
+
onUpdate?: (node: NgtInstanceNode) => void;
|
|
34
|
+
onAttach?: (afterAttach: NgtAfterAttach) => void;
|
|
35
|
+
}
|
|
41
36
|
export type NgtInstanceNode<TNode = any> = {
|
|
42
37
|
__ngt__: NgtLocalState;
|
|
43
38
|
} & NgtAnyRecord & TNode;
|
package/lib/loop.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ 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
|
-
export declare const
|
|
22
|
+
export declare const injectLoop: {
|
|
23
23
|
(): {
|
|
24
24
|
loop: (timestamp: number) => void;
|
|
25
25
|
invalidate: (store?: NgtSignalStore<NgtState>, frames?: number) => void;
|
package/lib/portal.d.ts
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Injector, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { Camera, Object3D, Scene } from 'three';
|
|
3
|
-
import {
|
|
3
|
+
import { NgtComputeFunction } from './events';
|
|
4
4
|
import { NgtSize, NgtState } from './store';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
declare const privateKeys: readonly ["get", "set", "select", "setSize", "setDpr", "setFrameloop", "events", "invalidate", "advance", "size", "viewport"];
|
|
7
|
-
type PrivateKeys = (typeof privateKeys)[number];
|
|
8
|
-
export interface NgtPortalInputs {
|
|
9
|
-
container: ElementRef<Object3D> | Object3D;
|
|
10
|
-
camera: ElementRef<Camera> | Camera;
|
|
11
|
-
state: Partial<Omit<NgtState, PrivateKeys> & {
|
|
12
|
-
events: Partial<Pick<NgtEventManager<any>, 'enabled' | 'priority' | 'compute' | 'connected'>>;
|
|
13
|
-
size: NgtSize;
|
|
14
|
-
}>;
|
|
15
|
-
}
|
|
16
6
|
export declare class NgtPortalBeforeRender {
|
|
17
7
|
private portalStore;
|
|
18
|
-
private injector;
|
|
19
8
|
renderPriority: import("@angular/core").InputSignal<number>;
|
|
20
9
|
parentScene: import("@angular/core").InputSignal<Scene>;
|
|
21
10
|
parentCamera: import("@angular/core").InputSignal<Camera>;
|
|
@@ -25,34 +14,55 @@ export declare class NgtPortalBeforeRender {
|
|
|
25
14
|
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>;
|
|
26
15
|
}
|
|
27
16
|
export declare class NgtPortalContent {
|
|
28
|
-
constructor(
|
|
29
|
-
static
|
|
17
|
+
constructor();
|
|
18
|
+
static ngTemplateContextGuard(_: NgtPortalContent, ctx: unknown): ctx is {
|
|
19
|
+
container: Object3D;
|
|
20
|
+
injector: Injector;
|
|
21
|
+
};
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortalContent, never>;
|
|
30
23
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtPortalContent, "ng-template[portalContent]", never, {}, {}, never, never, true, never>;
|
|
31
24
|
}
|
|
25
|
+
export declare const privateKeys: readonly ["setSize", "setFrameloop", "setDpr", "events", "setEvents", "invalidate", "advance", "size", "viewport"];
|
|
26
|
+
export type NgtPortalPrivateKeys = (typeof privateKeys)[number];
|
|
27
|
+
export type NgtPortalInjectableState = Partial<Omit<NgtState, NgtPortalPrivateKeys> & {
|
|
28
|
+
events?: {
|
|
29
|
+
enabled?: boolean;
|
|
30
|
+
priority?: number;
|
|
31
|
+
compute?: NgtComputeFunction;
|
|
32
|
+
connected?: any;
|
|
33
|
+
};
|
|
34
|
+
size?: NgtSize;
|
|
35
|
+
}>;
|
|
32
36
|
export declare class NgtPortal {
|
|
33
37
|
container: import("@angular/core").InputSignal<Object3D<import("three").Object3DEventMap>>;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
state: import("@angular/core").InputSignal<Partial<Omit<NgtState, "setSize" | "viewport" | "events" | "size" | "invalidate" | "advance" | "setEvents" | "setDpr" | "setFrameloop"> & {
|
|
39
|
+
events?: {
|
|
40
|
+
enabled?: boolean | undefined;
|
|
41
|
+
priority?: number | undefined;
|
|
42
|
+
compute?: NgtComputeFunction | undefined;
|
|
43
|
+
connected?: any;
|
|
44
|
+
} | undefined;
|
|
45
|
+
size?: NgtSize | undefined;
|
|
46
|
+
}>>;
|
|
47
|
+
/**
|
|
48
|
+
* @decsription turn this on to enable "HUD" like rendering
|
|
49
|
+
*/
|
|
39
50
|
autoRender: import("@angular/core").InputSignal<boolean>;
|
|
40
51
|
autoRenderPriority: import("@angular/core").InputSignal<number>;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
private
|
|
44
|
-
private autoEffect;
|
|
45
|
-
private parentStore;
|
|
52
|
+
portalContent: import("@angular/core").Signal<TemplateRef<any>>;
|
|
53
|
+
portalAnchor: import("@angular/core").Signal<ViewContainerRef>;
|
|
54
|
+
private injector;
|
|
46
55
|
private portalStore;
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
protected parentCamera: import("./store").NgtCameraManual;
|
|
56
|
+
private parentStore;
|
|
57
|
+
parentScene: import("@angular/core").Signal<Scene>;
|
|
58
|
+
parentCamera: import("@angular/core").Signal<import("./store").NgtCameraManual>;
|
|
51
59
|
private raycaster;
|
|
52
60
|
private pointer;
|
|
61
|
+
private portalRendered;
|
|
62
|
+
renderAutoBeforeRender: import("@angular/core").Signal<boolean>;
|
|
63
|
+
private portalView?;
|
|
53
64
|
constructor();
|
|
54
65
|
private inject;
|
|
55
66
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtPortal, never>;
|
|
56
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgtPortal, "ngt-portal", never, { "container": { "alias": "container"; "required":
|
|
67
|
+
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>;
|
|
57
68
|
}
|
|
58
|
-
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type NgtAnyConstructor = new (...args: any[]) => any;
|
|
2
2
|
export declare function extend(objects: object): void;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const injectCatalogue: {
|
|
4
4
|
(): Record<string, NgtAnyConstructor>;
|
|
5
5
|
(injectOptions: import("@angular/core").InjectOptions & {
|
|
6
6
|
optional?: false | undefined;
|
|
@@ -7,15 +7,13 @@ export declare const SPECIAL_DOM_TAG: {
|
|
|
7
7
|
readonly NGT_VALUE: "ngt-value";
|
|
8
8
|
};
|
|
9
9
|
export declare const SPECIAL_PROPERTIES: {
|
|
10
|
-
readonly COMPOUND: "ngtCompound";
|
|
11
10
|
readonly RENDER_PRIORITY: "priority";
|
|
12
11
|
readonly ATTACH: "attach";
|
|
13
12
|
readonly RAW_VALUE: "rawValue";
|
|
14
13
|
readonly PARAMETERS: "parameters";
|
|
15
|
-
readonly REF: "ref";
|
|
16
14
|
};
|
|
17
15
|
export declare const SPECIAL_EVENTS: {
|
|
18
16
|
readonly BEFORE_RENDER: "beforeRender";
|
|
19
|
-
readonly
|
|
20
|
-
readonly
|
|
17
|
+
readonly UPDATED: "updated";
|
|
18
|
+
readonly ATTACHED: "attached";
|
|
21
19
|
};
|
package/lib/renderer/index.d.ts
CHANGED
|
@@ -3,24 +3,29 @@ import { NgtState } from '../store';
|
|
|
3
3
|
import { NgtAnyRecord } from '../types';
|
|
4
4
|
import { NgtSignalStore } from '../utils/signal-store';
|
|
5
5
|
import { NgtAnyConstructor } from './catalogue';
|
|
6
|
-
import { NgtRendererNode, NgtRendererState
|
|
6
|
+
import { NgtRendererNode, NgtRendererState } from './state';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class NgtRendererFactory implements RendererFactory2 {
|
|
9
9
|
private delegateRendererFactory;
|
|
10
|
+
private document;
|
|
10
11
|
private catalogue;
|
|
12
|
+
private rootStore;
|
|
13
|
+
private portalCommentsNodes;
|
|
11
14
|
private rendererMap;
|
|
12
15
|
private routedSet;
|
|
13
|
-
private rendererStore;
|
|
14
16
|
createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
|
|
15
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtRendererFactory, never>;
|
|
16
18
|
static ɵprov: i0.ɵɵInjectableDeclaration<NgtRendererFactory>;
|
|
17
19
|
}
|
|
18
20
|
export declare class NgtRenderer implements Renderer2 {
|
|
19
21
|
private delegate;
|
|
20
|
-
private
|
|
22
|
+
private rootStore;
|
|
23
|
+
private document;
|
|
24
|
+
private portalCommentsNodes;
|
|
21
25
|
private catalogue;
|
|
22
26
|
private isRoot;
|
|
23
|
-
|
|
27
|
+
private argsCommentNodes;
|
|
28
|
+
constructor(delegate: Renderer2, rootStore: NgtSignalStore<NgtState>, document: Document, portalCommentsNodes: Array<NgtRendererNode>, catalogue: Record<string, NgtAnyConstructor>, isRoot?: boolean);
|
|
24
29
|
createElement(name: string, namespace?: string | null | undefined): NgtAnyRecord & {
|
|
25
30
|
__ngt_renderer__: NgtRendererState;
|
|
26
31
|
};
|
|
@@ -36,7 +41,12 @@ export declare class NgtRenderer implements Renderer2 {
|
|
|
36
41
|
removeAttribute(el: NgtRendererNode, name: string, namespace?: string | null | undefined): void;
|
|
37
42
|
setProperty(el: NgtRendererNode, name: string, value: any): void;
|
|
38
43
|
listen(target: NgtRendererNode, eventName: string, callback: (event: any) => boolean | void): () => void;
|
|
44
|
+
private destroyInternal;
|
|
45
|
+
private removeCommentNode;
|
|
46
|
+
private processPortalContainer;
|
|
39
47
|
private shouldFindGrandparentInstance;
|
|
48
|
+
private getNgtArgs;
|
|
49
|
+
private tryGetPortalStore;
|
|
40
50
|
createText: (value: string) => any;
|
|
41
51
|
destroy: () => void;
|
|
42
52
|
destroyNode: ((node: any) => void) | null;
|
|
@@ -51,6 +61,6 @@ export declare class NgtRenderer implements Renderer2 {
|
|
|
51
61
|
[key: string]: any;
|
|
52
62
|
};
|
|
53
63
|
}
|
|
54
|
-
export declare function provideNgtRenderer(store: NgtSignalStore<NgtState
|
|
64
|
+
export declare function provideNgtRenderer(store: NgtSignalStore<NgtState>): import("@angular/core").EnvironmentProviders;
|
|
55
65
|
export { extend } from './catalogue';
|
|
56
66
|
export { HTML, ROUTED_SCENE } from './constants';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injector } 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[],
|
|
8
|
+
destroyed: boolean,
|
|
9
|
+
rawValue: any,
|
|
10
|
+
portalContainer: NgtRendererNode,
|
|
11
|
+
injectorFactory: () => Injector | undefined
|
|
12
|
+
];
|
|
13
|
+
export interface NgtRendererNode {
|
|
14
|
+
__ngt_renderer__: NgtRendererState;
|
|
15
|
+
}
|
|
16
|
+
export declare function createNode(type: NgtRendererState[NgtRendererClassId.type], node: NgtAnyRecord, document: Document): NgtAnyRecord & {
|
|
17
|
+
__ngt_renderer__: NgtRendererState;
|
|
18
|
+
};
|
|
19
|
+
export declare function isDOM(node: NgtAnyRecord): boolean;
|
|
20
|
+
export declare function getClosestParentWithInstance(node: NgtRendererNode): NgtRendererNode | null;
|
|
21
|
+
export declare function setParent(node: NgtRendererNode, parent: NgtRendererNode): void;
|
|
22
|
+
export declare function addChild(node: NgtRendererNode, child: NgtRendererNode): void;
|
|
23
|
+
export declare function removeChild(node: NgtRendererNode, child: NgtRendererNode): void;
|
package/lib/renderer/utils.d.ts
CHANGED
|
@@ -2,28 +2,11 @@ import { NgtInstanceNode } from '../instance';
|
|
|
2
2
|
export declare const enum NgtRendererClassId {
|
|
3
3
|
type = 0,
|
|
4
4
|
parent = 1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
compounded = 7,
|
|
11
|
-
queueOps = 8,
|
|
12
|
-
attributes = 9,
|
|
13
|
-
properties = 10,
|
|
14
|
-
rawValue = 11,
|
|
15
|
-
ref = 12,
|
|
16
|
-
portalContainer = 13,
|
|
17
|
-
injectorFactory = 14
|
|
18
|
-
}
|
|
19
|
-
export declare const enum NgtCompoundClassId {
|
|
20
|
-
applyFirst = 0,
|
|
21
|
-
props = 1
|
|
22
|
-
}
|
|
23
|
-
export declare const enum NgtQueueOpClassId {
|
|
24
|
-
type = 0,
|
|
25
|
-
op = 1,
|
|
26
|
-
done = 2
|
|
5
|
+
children = 2,
|
|
6
|
+
destroyed = 3,
|
|
7
|
+
rawValue = 4,
|
|
8
|
+
portalContainer = 5,
|
|
9
|
+
injectorFactory = 6
|
|
27
10
|
}
|
|
28
11
|
export declare function kebabToPascal(str: string): string;
|
|
29
12
|
export declare function attachThreeChild(parent: NgtInstanceNode, child: NgtInstanceNode): void;
|
package/lib/roots.d.ts
CHANGED
|
@@ -10,3 +10,8 @@ export declare function injectCanvasRootInitializer(injector?: Injector): (canva
|
|
|
10
10
|
configure: (inputs: NgtCanvasInputs) => void;
|
|
11
11
|
};
|
|
12
12
|
export type NgtCanvasConfigurator = ReturnType<ReturnType<typeof injectCanvasRootInitializer>>;
|
|
13
|
+
export declare function dispose<TObj extends {
|
|
14
|
+
dispose?: () => void;
|
|
15
|
+
type?: string;
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
}>(obj: TObj): void;
|
package/lib/store.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="webxr" />
|
|
2
|
-
import { ElementRef, InjectionToken } from '@angular/core';
|
|
2
|
+
import { ElementRef, InjectOptions, InjectionToken } from '@angular/core';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { Camera, Clock, EventDispatcher, Object3D, Raycaster, Scene, Vector2, Vector3, WebGLRenderer } from 'three';
|
|
5
5
|
import { NgtCamera, NgtDomEvent, NgtEventManager, NgtPointerCaptureTarget, NgtThreeEvent } from './events';
|
|
@@ -127,15 +127,15 @@ export type NgtState = {
|
|
|
127
127
|
/** Internals */
|
|
128
128
|
internal: NgtInternalState;
|
|
129
129
|
};
|
|
130
|
+
declare function storeFactory(previousStore: NgtSignalStore<NgtState> | null): NgtSignalStore<NgtState>;
|
|
130
131
|
export declare const NGT_STORE: InjectionToken<NgtSignalStore<NgtState>>;
|
|
131
|
-
export declare
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}, provideNgtStore: (() => import("@angular/core").Provider) & ((value: NgtSignalStore<NgtState> | (() => NgtSignalStore<NgtState>)) => import("@angular/core").Provider);
|
|
132
|
+
export declare function provideStore(store?: () => NgtSignalStore<NgtState>): {
|
|
133
|
+
provide: InjectionToken<NgtSignalStore<NgtState>>;
|
|
134
|
+
useFactory: typeof storeFactory;
|
|
135
|
+
};
|
|
136
|
+
export declare function injectStore(options: InjectOptions & {
|
|
137
|
+
optional?: false;
|
|
138
|
+
}): NgtSignalStore<NgtState>;
|
|
139
|
+
export declare function injectStore(options: InjectOptions): NgtSignalStore<NgtState> | null;
|
|
140
|
+
export declare function injectStore(): NgtSignalStore<NgtState>;
|
|
141
|
+
export {};
|
package/lib/three-types.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { AmbientLight, ArrayCamera, ArrowHelper, Audio, AxesHelper, Bone, Box3He
|
|
|
2
2
|
import { NgtEventHandlers } from './events';
|
|
3
3
|
import { NgtAfterAttach, NgtAttachFunction, NgtInstanceNode } from './instance';
|
|
4
4
|
import { NgtBeforeRenderEvent } from './store';
|
|
5
|
+
type Expand<T> = T extends infer O ? {
|
|
6
|
+
[K in keyof O]: O[K];
|
|
7
|
+
} : never;
|
|
5
8
|
type NoEvent<T> = Omit<T, 'addEventListener' | 'removeEventListener'>;
|
|
6
9
|
export type NgtNonFunctionKeys<T> = {
|
|
7
10
|
[K in keyof T]-?: T[K] extends Function ? never : K;
|
|
@@ -26,8 +29,8 @@ export type NgtVector4 = NgtVectorLike<Vector4>;
|
|
|
26
29
|
export type NgtLayers = Layers | Parameters<Layers['set']>[0];
|
|
27
30
|
export type NgtQuaternion = Quaternion | Parameters<Quaternion['set']>;
|
|
28
31
|
export interface NgtNodeEventMap<TOriginal> {
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
attached: NgtAfterAttach<NgtInstanceNode, TOriginal>;
|
|
33
|
+
updated: TOriginal;
|
|
31
34
|
beforeRender: NgtBeforeRenderEvent<TOriginal>;
|
|
32
35
|
}
|
|
33
36
|
export type NgtNodeElement<TOriginal, TConstructor> = {
|
|
@@ -36,11 +39,11 @@ export type NgtNodeElement<TOriginal, TConstructor> = {
|
|
|
36
39
|
removeEventListener<TEventKey extends keyof NgtNodeEventMap<TOriginal>>(type: TEventKey, listener: (this: NgtNodeElement<TOriginal, TConstructor>, ev: NgtNodeEventMap<TOriginal>[TEventKey]) => any): void;
|
|
37
40
|
__ngt_args__: NgtArguments<TConstructor>;
|
|
38
41
|
};
|
|
39
|
-
export type NgtNode<TOriginal, TConstructor, TNoEvent = NoEvent<TOriginal>> = NgtExtendedColors<NgtOverwrite<Partial<TNoEvent>, NgtNodeElement<TOriginal, TConstructor
|
|
42
|
+
export type NgtNode<TOriginal, TConstructor, TNoEvent = NoEvent<TOriginal>> = Expand<NgtExtendedColors<NgtOverwrite<Partial<TNoEvent>, NgtNodeElement<TOriginal, TConstructor>>>>;
|
|
40
43
|
export type NgtObject3DEventsMap = {
|
|
41
44
|
[TEvent in keyof NgtEventHandlers]-?: Parameters<NonNullable<NgtEventHandlers[TEvent]>>[0];
|
|
42
45
|
};
|
|
43
|
-
export type NgtObject3DNode<TOriginal, TConstructor, TNoEvent = NoEvent<TOriginal>> = NgtOverwrite<NgtNode<TOriginal, TConstructor, TNoEvent>, {
|
|
46
|
+
export type NgtObject3DNode<TOriginal, TConstructor, TNoEvent = NoEvent<TOriginal>> = Expand<NgtOverwrite<NgtNode<TOriginal, TConstructor, TNoEvent>, {
|
|
44
47
|
position: NgtVector3;
|
|
45
48
|
up: NgtVector3;
|
|
46
49
|
scale: NgtVector3;
|
|
@@ -51,7 +54,7 @@ export type NgtObject3DNode<TOriginal, TConstructor, TNoEvent = NoEvent<TOrigina
|
|
|
51
54
|
dispose: (() => void) | null;
|
|
52
55
|
addEventListener<TEventKey extends keyof NgtObject3DEventsMap>(type: TEventKey, listener: (this: NgtObject3DNode<TOriginal, TConstructor>, ev: NgtObject3DEventsMap[TEventKey]) => any): void;
|
|
53
56
|
removeEventListener<TEventKey extends keyof NgtObject3DEventsMap>(type: TEventKey, listener: (this: NgtObject3DNode<TOriginal, TConstructor>, ev: NgtObject3DEventsMap[TEventKey]) => any): void;
|
|
54
|
-
}
|
|
57
|
+
}>>;
|
|
55
58
|
export type NgtGeometry<TGeometry extends BufferGeometry, TConstructor> = NgtNode<TGeometry, TConstructor>;
|
|
56
59
|
export type NgtMaterial<TMaterial extends Material, TConstructor> = NgtNode<TMaterial, TConstructor>;
|
|
57
60
|
export type NgtLight<T extends Light, P> = NgtObject3DNode<T, P>;
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
2
|
import { Vector2, Vector3 } from 'three';
|
|
3
3
|
import { NgtVector2, NgtVector3 } from '../three-types';
|
|
4
|
-
export type Excluded<TOptions extends object, TKeys extends (keyof TOptions)[]> = {
|
|
5
|
-
[K in Exclude<keyof TOptions, TKeys[number]>]: TOptions[K];
|
|
6
|
-
};
|
|
7
|
-
export declare function exclude<TOptions extends object, TKeys extends (keyof TOptions)[]>(options: () => TOptions, keysToExclude: TKeys): Signal<Excluded<TOptions, TKeys>>;
|
|
8
|
-
export type Picked<TOptions extends object, TKeyOption extends (keyof TOptions)[]> = {
|
|
9
|
-
[K in TKeyOption[number]]: TOptions[K];
|
|
10
|
-
};
|
|
11
|
-
export declare function pick<TOptions extends object, TKeyOption extends keyof TOptions | (keyof TOptions)[]>(options: () => TOptions, keys: TKeyOption): TKeyOption extends keyof TOptions ? Signal<TOptions[TKeyOption]> : TKeyOption extends (keyof TOptions)[] ? Signal<Picked<TOptions, TKeyOption>> : never;
|
|
12
|
-
export declare function merge<TOptions extends object>(options: () => TOptions, toMerge: Partial<TOptions>, mode?: 'override' | 'backfill'): Signal<TOptions & Partial<TOptions>>;
|
|
13
4
|
type KeysOfType<TObject extends object, TType> = Exclude<{
|
|
14
5
|
[K in keyof TObject]: TObject[K] extends TType | undefined | null ? K : never;
|
|
15
6
|
}[keyof TObject], undefined>;
|
|
7
|
+
export declare function omit<TObject extends object, TKeys extends (keyof TObject)[]>(objFn: () => TObject, keysToOmit: TKeys): Signal<Omit<TObject, TKeys[number]>>;
|
|
8
|
+
export declare function pick<TObject extends object, TKey extends keyof TObject>(objFn: () => TObject, key: TKey): Signal<TObject[TKey]>;
|
|
9
|
+
export declare function pick<TObject extends object, TKeys extends (keyof TObject)[]>(objFn: () => TObject, keys: TKeys): Signal<Pick<TObject, TKeys[number]>>;
|
|
10
|
+
export declare function merge<TObject extends object>(objFn: () => TObject, toMerge: Partial<TObject>, mode?: 'override' | 'backfill'): Signal<TObject & Partial<TObject>>;
|
|
16
11
|
export declare function vector2<TObject extends object>(options: Signal<TObject>, key: KeysOfType<TObject, NgtVector2>): Signal<Vector2>;
|
|
12
|
+
export declare function vector2<TObject extends object>(options: Signal<TObject>, key: KeysOfType<TObject, NgtVector2>, keepUndefined: true): Signal<Vector2 | undefined>;
|
|
17
13
|
export declare function vector3<TObject extends object>(options: Signal<TObject>, key: KeysOfType<TObject, NgtVector3>): Signal<Vector3>;
|
|
14
|
+
export declare function vector3<TObject extends object>(options: Signal<TObject>, key: KeysOfType<TObject, NgtVector3>, keepUndefined: true): Signal<Vector3 | undefined>;
|
|
18
15
|
export {};
|
|
@@ -14,10 +14,6 @@ export type NgtSignalStore<State extends object> = {
|
|
|
14
14
|
* New state takes precedence
|
|
15
15
|
*/
|
|
16
16
|
update(state: Partial<State> | ((previous: State) => Partial<State>)): void;
|
|
17
|
-
/**
|
|
18
|
-
* Non-undefined old state takes precedence
|
|
19
|
-
*/
|
|
20
|
-
patch(state: Partial<State> | ((previous: State) => Partial<State>)): void;
|
|
21
17
|
/**
|
|
22
18
|
* Equivalence to select()
|
|
23
19
|
*/
|
|
@@ -27,4 +23,4 @@ export type NgtSignalStore<State extends object> = {
|
|
|
27
23
|
*/
|
|
28
24
|
get snapshot(): State;
|
|
29
25
|
};
|
|
30
|
-
export declare function signalStore<State extends object>(initialState?: Partial<State> | ((storeApi: Pick<NgtSignalStore<State>, 'get' | 'update' | '
|
|
26
|
+
export declare function signalStore<State extends object>(initialState?: Partial<State> | ((storeApi: Pick<NgtSignalStore<State>, 'get' | 'update' | 'select'>) => Partial<State>), options?: CreateSignalOptions<State>): NgtSignalStore<State>;
|