angular-three-soba 4.0.0-next.81 → 4.0.0-next.83
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/abstractions/lib/catmull-rom-line.d.ts +56 -56
- package/abstractions/lib/edges.d.ts +55 -55
- package/abstractions/lib/line.d.ts +1 -1
- package/abstractions/lib/text-3d.d.ts +3 -3
- package/abstractions/lib/text.d.ts +3 -1
- package/fesm2022/angular-three-soba-abstractions.mjs +8 -4
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/package.json +13 -13
|
@@ -21,7 +21,7 @@ export declare class NgtsCatmullRomLine {
|
|
|
21
21
|
protected segmentedPoints: import("@angular/core").Signal<THREE.Vector3[]>;
|
|
22
22
|
private interpolatedVertexColors;
|
|
23
23
|
protected lineOptions: import("@angular/core").Signal<{
|
|
24
|
-
vertexColors: (THREE.ColorRepresentation | [number, number, number
|
|
24
|
+
vertexColors: (THREE.ColorRepresentation | [number, number, number] | [number, number, number, number])[] | undefined;
|
|
25
25
|
raycast?: ((raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) => void) | Readonly<((raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) => void) | null | undefined>;
|
|
26
26
|
id?: number | undefined;
|
|
27
27
|
uuid?: string | undefined;
|
|
@@ -29,18 +29,6 @@ export declare class NgtsCatmullRomLine {
|
|
|
29
29
|
type?: string | undefined;
|
|
30
30
|
parent?: THREE.Object3D<THREE.Object3DEventMap> | Readonly<THREE.Object3D<THREE.Object3DEventMap> | null> | undefined;
|
|
31
31
|
children?: THREE.Object3D<THREE.Object3DEventMap>[] | undefined;
|
|
32
|
-
isMesh?: true | undefined;
|
|
33
|
-
geometry?: import("three-stdlib").LineGeometry | Readonly<import("three-stdlib").LineGeometry | undefined>;
|
|
34
|
-
material?: import("three-stdlib").LineMaterial | Readonly<import("three-stdlib").LineMaterial | undefined>;
|
|
35
|
-
morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
|
|
36
|
-
morphTargetDictionary?: {
|
|
37
|
-
[key: string]: number;
|
|
38
|
-
} | Readonly<{
|
|
39
|
-
[key: string]: number;
|
|
40
|
-
} | undefined>;
|
|
41
|
-
updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
|
|
42
|
-
getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
|
|
43
|
-
toJSON?: ((((meta?: THREE.JSONMeta) => THREE.MeshJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.MeshJSON>) & (((meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON>)) | undefined;
|
|
44
32
|
isObject3D?: true | undefined;
|
|
45
33
|
up?: THREE.Vector3 | [x: number, y: number, z: number] | Readonly<number | THREE.Vector3 | [x: number, y: number, z: number] | undefined>;
|
|
46
34
|
position?: THREE.Vector3 | [x: number, y: number, z: number] | Readonly<number | THREE.Vector3 | [x: number, y: number, z: number] | undefined>;
|
|
@@ -111,6 +99,7 @@ export declare class NgtsCatmullRomLine {
|
|
|
111
99
|
updateMatrix?: (() => void) | Readonly<(() => void) | undefined>;
|
|
112
100
|
updateMatrixWorld?: ((force?: boolean) => void) | Readonly<((force?: boolean) => void) | undefined>;
|
|
113
101
|
updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | Readonly<((updateParents: boolean, updateChildren: boolean) => void) | undefined>;
|
|
102
|
+
toJSON?: ((((meta?: THREE.JSONMeta) => THREE.MeshJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.MeshJSON>) & (((meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON>)) | undefined;
|
|
114
103
|
clone?: ((((recursive?: boolean) => import("three-stdlib").Line2) | Readonly<(recursive?: boolean) => import("three-stdlib").Line2>) & ((() => import("three-stdlib").LineMaterial) | Readonly<() => import("three-stdlib").LineMaterial>)) | undefined;
|
|
115
104
|
copy?: ((((object: THREE.Object3D, recursive?: boolean) => import("three-stdlib").Line2) | Readonly<(object: THREE.Object3D, recursive?: boolean) => import("three-stdlib").Line2>) & (((material: THREE.Material) => import("three-stdlib").LineMaterial) | Readonly<(material: THREE.Material) => import("three-stdlib").LineMaterial>)) | undefined;
|
|
116
105
|
addEventListener?: ((((<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, import("three-stdlib").Line2>) => void) | Readonly<(<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, import("three-stdlib").Line2>) => void) | undefined>) & (<TEventKey extends keyof import("angular-three").NgtEventHandlers | "added" | "removed" | "childadded" | "childremoved" | "change" | keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<typeof import("three-stdlib").Line2, import("three-stdlib").Line2>, ev: import("angular-three").NgtAllObject3DEventsMap<import("three-stdlib").Line2>[TEventKey]) => any) => void)) & (((<T extends "dispose">(type: T, listener: THREE.EventListener<{
|
|
@@ -134,9 +123,62 @@ export declare class NgtsCatmullRomLine {
|
|
|
134
123
|
dispose: {};
|
|
135
124
|
}[T]) => void)>)) | undefined;
|
|
136
125
|
dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
|
|
126
|
+
parameters?: ((Partial<import("three-stdlib").Line2> | Readonly<Partial<import("three-stdlib").Line2>>) & (Partial<import("three-stdlib").LineMaterial> | Readonly<Partial<import("three-stdlib").LineMaterial>>)) | undefined;
|
|
127
|
+
geometry?: import("three-stdlib").LineGeometry | Readonly<import("three-stdlib").LineGeometry | undefined>;
|
|
128
|
+
material?: import("three-stdlib").LineMaterial | Readonly<import("three-stdlib").LineMaterial | undefined>;
|
|
129
|
+
isLine2?: true | undefined;
|
|
130
|
+
isLineSegments2?: true | undefined;
|
|
131
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | Readonly<(() => import("three-stdlib").Line2) | undefined>;
|
|
132
|
+
isMesh?: true | undefined;
|
|
133
|
+
morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
|
|
134
|
+
morphTargetDictionary?: {
|
|
135
|
+
[key: string]: number;
|
|
136
|
+
} | Readonly<{
|
|
137
|
+
[key: string]: number;
|
|
138
|
+
} | undefined>;
|
|
139
|
+
updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
|
|
140
|
+
getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
|
|
141
|
+
color?: THREE.ColorRepresentation | undefined;
|
|
142
|
+
dashed?: boolean | undefined | undefined;
|
|
143
|
+
dashScale?: number | undefined | undefined;
|
|
144
|
+
dashSize?: number | undefined | undefined;
|
|
145
|
+
dashOffset?: number | undefined | undefined;
|
|
146
|
+
gapSize?: number | undefined | undefined;
|
|
147
|
+
opacity?: number | undefined | undefined;
|
|
148
|
+
isLineMaterial?: true | undefined;
|
|
149
|
+
linewidth?: number | undefined | undefined;
|
|
150
|
+
resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
|
|
151
|
+
alphaToCoverage?: boolean | undefined | undefined;
|
|
152
|
+
worldUnits?: boolean | undefined | undefined;
|
|
153
|
+
isShaderMaterial?: true | undefined;
|
|
154
|
+
defines?: any;
|
|
155
|
+
uniforms?: {
|
|
156
|
+
[uniform: string]: THREE.IUniform<any>;
|
|
157
|
+
} | Readonly<{
|
|
158
|
+
[uniform: string]: THREE.IUniform<any>;
|
|
159
|
+
} | undefined>;
|
|
160
|
+
uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
|
|
161
|
+
vertexShader?: Readonly<string | undefined>;
|
|
162
|
+
fragmentShader?: Readonly<string | undefined>;
|
|
163
|
+
wireframe?: boolean | undefined | undefined;
|
|
164
|
+
wireframeLinewidth?: Readonly<number | undefined>;
|
|
165
|
+
fog?: Readonly<boolean | undefined>;
|
|
166
|
+
lights?: Readonly<boolean | undefined>;
|
|
167
|
+
clipping?: Readonly<boolean | undefined>;
|
|
168
|
+
extensions?: {
|
|
169
|
+
clipCullDistance: boolean;
|
|
170
|
+
multiDraw: boolean;
|
|
171
|
+
} | Readonly<{
|
|
172
|
+
clipCullDistance: boolean;
|
|
173
|
+
multiDraw: boolean;
|
|
174
|
+
} | undefined>;
|
|
175
|
+
defaultAttributeValues?: any;
|
|
176
|
+
index0AttributeName?: Readonly<string | undefined>;
|
|
177
|
+
uniformsNeedUpdate?: Readonly<boolean | undefined>;
|
|
178
|
+
glslVersion?: "100" | "300 es" | null | undefined;
|
|
179
|
+
setValues?: ((parameters: THREE.ShaderMaterialParameters) => void) | Readonly<((parameters: THREE.ShaderMaterialParameters) => void) | undefined>;
|
|
137
180
|
isMaterial?: true | undefined;
|
|
138
181
|
alphaHash?: boolean | undefined | undefined;
|
|
139
|
-
alphaToCoverage?: boolean | undefined | undefined;
|
|
140
182
|
blendAlpha?: number | undefined | undefined;
|
|
141
183
|
blendColor?: (THREE.ColorRepresentation & (string | number | THREE.Color | [r: number, g: number, b: number] | [color: THREE.ColorRepresentation] | Readonly<THREE.Color> | readonly [r: number, g: number, b: number] | readonly [color: THREE.ColorRepresentation])) | undefined;
|
|
142
184
|
blendDst?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 | 213 | 214 | undefined;
|
|
@@ -150,7 +192,6 @@ export declare class NgtsCatmullRomLine {
|
|
|
150
192
|
clippingPlanes?: THREE.Plane[] | (THREE.Plane[] & readonly THREE.Plane[]) | undefined;
|
|
151
193
|
clipShadows?: boolean | undefined | undefined;
|
|
152
194
|
colorWrite?: boolean | undefined | undefined;
|
|
153
|
-
defines?: any;
|
|
154
195
|
depthFunc?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | undefined;
|
|
155
196
|
depthTest?: boolean | undefined | undefined;
|
|
156
197
|
depthWrite?: boolean | undefined | undefined;
|
|
@@ -162,7 +203,6 @@ export declare class NgtsCatmullRomLine {
|
|
|
162
203
|
stencilFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
|
|
163
204
|
stencilZFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
|
|
164
205
|
stencilZPass?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
|
|
165
|
-
opacity?: number | undefined | undefined;
|
|
166
206
|
polygonOffset?: boolean | undefined | undefined;
|
|
167
207
|
polygonOffsetFactor?: number | undefined | undefined;
|
|
168
208
|
polygonOffsetUnits?: number | undefined | undefined;
|
|
@@ -178,48 +218,8 @@ export declare class NgtsCatmullRomLine {
|
|
|
178
218
|
alphaTest?: number | undefined | undefined;
|
|
179
219
|
onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
|
|
180
220
|
customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
|
|
181
|
-
setValues?: ((parameters: THREE.ShaderMaterialParameters) => void) | Readonly<((parameters: THREE.ShaderMaterialParameters) => void) | undefined>;
|
|
182
221
|
needsUpdate?: Readonly<boolean | undefined>;
|
|
183
222
|
onBuild?: ((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
|
|
184
|
-
parameters?: ((Partial<import("three-stdlib").Line2> | Readonly<Partial<import("three-stdlib").Line2>>) & (Partial<import("three-stdlib").LineMaterial> | Readonly<Partial<import("three-stdlib").LineMaterial>>)) | undefined;
|
|
185
|
-
color?: THREE.ColorRepresentation | undefined;
|
|
186
|
-
isLine2?: true | undefined;
|
|
187
|
-
isLineSegments2?: true | undefined;
|
|
188
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | Readonly<(() => import("three-stdlib").Line2) | undefined>;
|
|
189
|
-
dashed?: boolean | undefined | undefined;
|
|
190
|
-
dashScale?: number | undefined | undefined;
|
|
191
|
-
dashSize?: number | undefined | undefined;
|
|
192
|
-
dashOffset?: number | undefined | undefined;
|
|
193
|
-
gapSize?: number | undefined | undefined;
|
|
194
|
-
isLineMaterial?: true | undefined;
|
|
195
|
-
linewidth?: number | undefined | undefined;
|
|
196
|
-
resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
|
|
197
|
-
worldUnits?: boolean | undefined | undefined;
|
|
198
|
-
isShaderMaterial?: true | undefined;
|
|
199
|
-
uniforms?: {
|
|
200
|
-
[uniform: string]: THREE.IUniform<any>;
|
|
201
|
-
} | Readonly<{
|
|
202
|
-
[uniform: string]: THREE.IUniform<any>;
|
|
203
|
-
} | undefined>;
|
|
204
|
-
uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
|
|
205
|
-
vertexShader?: Readonly<string | undefined>;
|
|
206
|
-
fragmentShader?: Readonly<string | undefined>;
|
|
207
|
-
wireframe?: boolean | undefined | undefined;
|
|
208
|
-
wireframeLinewidth?: Readonly<number | undefined>;
|
|
209
|
-
fog?: Readonly<boolean | undefined>;
|
|
210
|
-
lights?: Readonly<boolean | undefined>;
|
|
211
|
-
clipping?: Readonly<boolean | undefined>;
|
|
212
|
-
extensions?: {
|
|
213
|
-
clipCullDistance: boolean;
|
|
214
|
-
multiDraw: boolean;
|
|
215
|
-
} | Readonly<{
|
|
216
|
-
clipCullDistance: boolean;
|
|
217
|
-
multiDraw: boolean;
|
|
218
|
-
} | undefined>;
|
|
219
|
-
defaultAttributeValues?: any;
|
|
220
|
-
index0AttributeName?: Readonly<string | undefined>;
|
|
221
|
-
uniformsNeedUpdate?: Readonly<boolean | undefined>;
|
|
222
|
-
glslVersion?: "100" | "300 es" | null | undefined;
|
|
223
223
|
format?: THREE.PixelFormat | undefined;
|
|
224
224
|
lineWidth: number;
|
|
225
225
|
}>;
|
|
@@ -22,17 +22,6 @@ export declare class NgtsEdges {
|
|
|
22
22
|
type?: string | undefined;
|
|
23
23
|
parent?: THREE.Object3D<THREE.Object3DEventMap> | Readonly<THREE.Object3D<THREE.Object3DEventMap> | null> | undefined;
|
|
24
24
|
children?: THREE.Object3D<THREE.Object3DEventMap>[] | undefined;
|
|
25
|
-
isMesh?: true | undefined;
|
|
26
|
-
material?: ((THREE.Material | THREE.Material[] | Readonly<THREE.Material> | readonly THREE.Material[]) & (import("three-stdlib").LineMaterial | Readonly<import("three-stdlib").LineMaterial>)) | undefined;
|
|
27
|
-
morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
|
|
28
|
-
morphTargetDictionary?: {
|
|
29
|
-
[key: string]: number;
|
|
30
|
-
} | Readonly<{
|
|
31
|
-
[key: string]: number;
|
|
32
|
-
} | undefined>;
|
|
33
|
-
updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
|
|
34
|
-
getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
|
|
35
|
-
toJSON?: ((((meta?: THREE.JSONMeta) => THREE.MeshJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.MeshJSON>) & (((meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON>)) | undefined;
|
|
36
25
|
isObject3D?: true | undefined;
|
|
37
26
|
up?: THREE.Vector3 | [x: number, y: number, z: number] | Readonly<number | THREE.Vector3 | [x: number, y: number, z: number] | undefined>;
|
|
38
27
|
position?: THREE.Vector3 | [x: number, y: number, z: number] | Readonly<number | THREE.Vector3 | [x: number, y: number, z: number] | undefined>;
|
|
@@ -103,6 +92,7 @@ export declare class NgtsEdges {
|
|
|
103
92
|
updateMatrix?: (() => void) | Readonly<(() => void) | undefined>;
|
|
104
93
|
updateMatrixWorld?: ((force?: boolean) => void) | Readonly<((force?: boolean) => void) | undefined>;
|
|
105
94
|
updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | Readonly<((updateParents: boolean, updateChildren: boolean) => void) | undefined>;
|
|
95
|
+
toJSON?: ((((meta?: THREE.JSONMeta) => THREE.MeshJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.MeshJSON>) & (((meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON) | Readonly<(meta?: THREE.JSONMeta) => THREE.ShaderMaterialJSON>)) | undefined;
|
|
106
96
|
clone?: ((((recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & ((((recursive?: boolean) => import("three-stdlib").Line2) | Readonly<(recursive?: boolean) => import("three-stdlib").Line2>) & ((() => import("three-stdlib").LineMaterial) | Readonly<() => import("three-stdlib").LineMaterial>))) | undefined;
|
|
107
97
|
copy?: ((((object: THREE.Object3D, recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>) | Readonly<(object: THREE.Object3D, recursive?: boolean) => THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) & ((((object: THREE.Object3D, recursive?: boolean) => import("three-stdlib").Line2) | Readonly<(object: THREE.Object3D, recursive?: boolean) => import("three-stdlib").Line2>) & (((material: THREE.Material) => import("three-stdlib").LineMaterial) | Readonly<(material: THREE.Material) => import("three-stdlib").LineMaterial>))) | undefined;
|
|
108
98
|
addEventListener?: ((((<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) => void) | Readonly<(<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>) => void) | undefined>) & (<TEventKey extends keyof import("angular-three").NgtEventHandlers | "added" | "removed" | "childadded" | "childremoved" | "change" | keyof import("angular-three").NgtNodeEventMap<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<typeof THREE.Mesh, THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>, ev: import("angular-three").NgtAllObject3DEventsMap<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>[TEventKey]) => any) => void)) & ((((<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, import("three-stdlib").Line2>) => void) | Readonly<(<T extends keyof THREE.Object3DEventMap>(type: T, listener: THREE.EventListener<THREE.Object3DEventMap[T], T, import("three-stdlib").Line2>) => void) | undefined>) & (<TEventKey extends keyof import("angular-three").NgtEventHandlers | "added" | "removed" | "childadded" | "childremoved" | "change" | keyof import("angular-three").NgtNodeEventMap<import("three-stdlib").Line2>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<typeof import("three-stdlib").Line2, import("three-stdlib").Line2>, ev: import("angular-three").NgtAllObject3DEventsMap<import("three-stdlib").Line2>[TEventKey]) => any) => void)) & (((<T extends "dispose">(type: T, listener: THREE.EventListener<{
|
|
@@ -126,9 +116,62 @@ export declare class NgtsEdges {
|
|
|
126
116
|
dispose: {};
|
|
127
117
|
}[T]) => void)>)) | undefined;
|
|
128
118
|
dispose?: (((() => void) | Readonly<() => void> | null) & (((() => void) & (() => void)) | Readonly<(() => void) & (() => void)>)) | undefined;
|
|
119
|
+
parameters?: ((Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>> | Readonly<Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>) & ((Partial<import("three-stdlib").Line2> | Readonly<Partial<import("three-stdlib").Line2>>) & (Partial<import("three-stdlib").LineMaterial> | Readonly<Partial<import("three-stdlib").LineMaterial>>))) | undefined;
|
|
120
|
+
__ngt_args__?: (([geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined, material?: THREE.Material | THREE.Material[] | undefined] | readonly [geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined, material?: THREE.Material | THREE.Material[] | undefined]) & (([geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined] | readonly [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined]) & ([parameters?: LineMaterialParameters | undefined] | readonly [parameters?: LineMaterialParameters | undefined]))) | undefined;
|
|
121
|
+
material?: ((THREE.Material | THREE.Material[] | Readonly<THREE.Material> | readonly THREE.Material[]) & (import("three-stdlib").LineMaterial | Readonly<import("three-stdlib").LineMaterial>)) | undefined;
|
|
122
|
+
isLine2?: true | undefined;
|
|
123
|
+
isLineSegments2?: true | undefined;
|
|
124
|
+
computeLineDistances?: (() => import("three-stdlib").Line2) | Readonly<(() => import("three-stdlib").Line2) | undefined>;
|
|
125
|
+
isMesh?: true | undefined;
|
|
126
|
+
morphTargetInfluences?: number[] | Readonly<number[] | undefined>;
|
|
127
|
+
morphTargetDictionary?: {
|
|
128
|
+
[key: string]: number;
|
|
129
|
+
} | Readonly<{
|
|
130
|
+
[key: string]: number;
|
|
131
|
+
} | undefined>;
|
|
132
|
+
updateMorphTargets?: (() => void) | Readonly<(() => void) | undefined>;
|
|
133
|
+
getVertexPosition?: ((index: number, target: THREE.Vector3) => THREE.Vector3) | Readonly<((index: number, target: THREE.Vector3) => THREE.Vector3) | undefined>;
|
|
134
|
+
color?: THREE.ColorRepresentation | undefined;
|
|
135
|
+
dashed?: boolean | undefined | undefined;
|
|
136
|
+
dashScale?: number | undefined | undefined;
|
|
137
|
+
dashSize?: number | undefined | undefined;
|
|
138
|
+
dashOffset?: number | undefined | undefined;
|
|
139
|
+
gapSize?: number | undefined | undefined;
|
|
140
|
+
opacity?: number | undefined | undefined;
|
|
141
|
+
isLineMaterial?: true | undefined;
|
|
142
|
+
linewidth?: number | undefined | undefined;
|
|
143
|
+
resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
|
|
144
|
+
alphaToCoverage?: boolean | undefined | undefined;
|
|
145
|
+
worldUnits?: boolean | undefined | undefined;
|
|
146
|
+
isShaderMaterial?: true | undefined;
|
|
147
|
+
defines?: any;
|
|
148
|
+
uniforms?: {
|
|
149
|
+
[uniform: string]: THREE.IUniform<any>;
|
|
150
|
+
} | Readonly<{
|
|
151
|
+
[uniform: string]: THREE.IUniform<any>;
|
|
152
|
+
} | undefined>;
|
|
153
|
+
uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
|
|
154
|
+
vertexShader?: Readonly<string | undefined>;
|
|
155
|
+
fragmentShader?: Readonly<string | undefined>;
|
|
156
|
+
wireframe?: boolean | undefined | undefined;
|
|
157
|
+
wireframeLinewidth?: Readonly<number | undefined>;
|
|
158
|
+
fog?: Readonly<boolean | undefined>;
|
|
159
|
+
lights?: Readonly<boolean | undefined>;
|
|
160
|
+
clipping?: Readonly<boolean | undefined>;
|
|
161
|
+
extensions?: {
|
|
162
|
+
clipCullDistance: boolean;
|
|
163
|
+
multiDraw: boolean;
|
|
164
|
+
} | Readonly<{
|
|
165
|
+
clipCullDistance: boolean;
|
|
166
|
+
multiDraw: boolean;
|
|
167
|
+
} | undefined>;
|
|
168
|
+
defaultAttributeValues?: any;
|
|
169
|
+
index0AttributeName?: Readonly<string | undefined>;
|
|
170
|
+
uniformsNeedUpdate?: Readonly<boolean | undefined>;
|
|
171
|
+
glslVersion?: "100" | "300 es" | null | undefined;
|
|
172
|
+
setValues?: ((parameters: THREE.ShaderMaterialParameters) => void) | Readonly<((parameters: THREE.ShaderMaterialParameters) => void) | undefined>;
|
|
129
173
|
isMaterial?: true | undefined;
|
|
130
174
|
alphaHash?: boolean | undefined | undefined;
|
|
131
|
-
alphaToCoverage?: boolean | undefined | undefined;
|
|
132
175
|
blendAlpha?: number | undefined | undefined;
|
|
133
176
|
blendColor?: (THREE.ColorRepresentation & (string | number | THREE.Color | [r: number, g: number, b: number] | [color: THREE.ColorRepresentation] | Readonly<THREE.Color> | readonly [r: number, g: number, b: number] | readonly [color: THREE.ColorRepresentation])) | undefined;
|
|
134
177
|
blendDst?: 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 211 | 212 | 213 | 214 | undefined;
|
|
@@ -142,7 +185,6 @@ export declare class NgtsEdges {
|
|
|
142
185
|
clippingPlanes?: THREE.Plane[] | (THREE.Plane[] & readonly THREE.Plane[]) | undefined;
|
|
143
186
|
clipShadows?: boolean | undefined | undefined;
|
|
144
187
|
colorWrite?: boolean | undefined | undefined;
|
|
145
|
-
defines?: any;
|
|
146
188
|
depthFunc?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | undefined;
|
|
147
189
|
depthTest?: boolean | undefined | undefined;
|
|
148
190
|
depthWrite?: boolean | undefined | undefined;
|
|
@@ -154,7 +196,6 @@ export declare class NgtsEdges {
|
|
|
154
196
|
stencilFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
|
|
155
197
|
stencilZFail?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
|
|
156
198
|
stencilZPass?: 0 | 7680 | 7681 | 7682 | 7283 | 34055 | 34056 | 5386 | undefined;
|
|
157
|
-
opacity?: number | undefined | undefined;
|
|
158
199
|
polygonOffset?: boolean | undefined | undefined;
|
|
159
200
|
polygonOffsetFactor?: number | undefined | undefined;
|
|
160
201
|
polygonOffsetUnits?: number | undefined | undefined;
|
|
@@ -170,49 +211,8 @@ export declare class NgtsEdges {
|
|
|
170
211
|
alphaTest?: number | undefined | undefined;
|
|
171
212
|
onBeforeCompile?: ((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
|
|
172
213
|
customProgramCacheKey?: (() => string) | Readonly<(() => string) | undefined>;
|
|
173
|
-
setValues?: ((parameters: THREE.ShaderMaterialParameters) => void) | Readonly<((parameters: THREE.ShaderMaterialParameters) => void) | undefined>;
|
|
174
214
|
needsUpdate?: Readonly<boolean | undefined>;
|
|
175
215
|
onBuild?: ((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | Readonly<((object: THREE.Object3D, parameters: THREE.WebGLProgramParametersWithUniforms, renderer: THREE.WebGLRenderer) => void) | undefined>;
|
|
176
|
-
parameters?: ((Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>> | Readonly<Partial<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>) & ((Partial<import("three-stdlib").Line2> | Readonly<Partial<import("three-stdlib").Line2>>) & (Partial<import("three-stdlib").LineMaterial> | Readonly<Partial<import("three-stdlib").LineMaterial>>))) | undefined;
|
|
177
|
-
__ngt_args__?: (([geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined, material?: THREE.Material | THREE.Material[] | undefined] | readonly [geometry?: THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined, material?: THREE.Material | THREE.Material[] | undefined]) & (([geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined] | readonly [geometry?: import("three-stdlib").LineGeometry | undefined, material?: import("three-stdlib").LineMaterial | undefined]) & ([parameters?: LineMaterialParameters | undefined] | readonly [parameters?: LineMaterialParameters | undefined]))) | undefined;
|
|
178
|
-
color?: THREE.ColorRepresentation | undefined;
|
|
179
|
-
isLine2?: true | undefined;
|
|
180
|
-
isLineSegments2?: true | undefined;
|
|
181
|
-
computeLineDistances?: (() => import("three-stdlib").Line2) | Readonly<(() => import("three-stdlib").Line2) | undefined>;
|
|
182
|
-
dashed?: boolean | undefined | undefined;
|
|
183
|
-
dashScale?: number | undefined | undefined;
|
|
184
|
-
dashSize?: number | undefined | undefined;
|
|
185
|
-
dashOffset?: number | undefined | undefined;
|
|
186
|
-
gapSize?: number | undefined | undefined;
|
|
187
|
-
isLineMaterial?: true | undefined;
|
|
188
|
-
linewidth?: number | undefined | undefined;
|
|
189
|
-
resolution?: (THREE.Vector2 & (number | THREE.Vector2 | [x: number, y: number] | Readonly<THREE.Vector2> | readonly [x: number, y: number])) | undefined;
|
|
190
|
-
worldUnits?: boolean | undefined | undefined;
|
|
191
|
-
isShaderMaterial?: true | undefined;
|
|
192
|
-
uniforms?: {
|
|
193
|
-
[uniform: string]: THREE.IUniform<any>;
|
|
194
|
-
} | Readonly<{
|
|
195
|
-
[uniform: string]: THREE.IUniform<any>;
|
|
196
|
-
} | undefined>;
|
|
197
|
-
uniformsGroups?: THREE.UniformsGroup[] | Readonly<THREE.UniformsGroup[] | undefined>;
|
|
198
|
-
vertexShader?: Readonly<string | undefined>;
|
|
199
|
-
fragmentShader?: Readonly<string | undefined>;
|
|
200
|
-
wireframe?: boolean | undefined | undefined;
|
|
201
|
-
wireframeLinewidth?: Readonly<number | undefined>;
|
|
202
|
-
fog?: Readonly<boolean | undefined>;
|
|
203
|
-
lights?: Readonly<boolean | undefined>;
|
|
204
|
-
clipping?: Readonly<boolean | undefined>;
|
|
205
|
-
extensions?: {
|
|
206
|
-
clipCullDistance: boolean;
|
|
207
|
-
multiDraw: boolean;
|
|
208
|
-
} | Readonly<{
|
|
209
|
-
clipCullDistance: boolean;
|
|
210
|
-
multiDraw: boolean;
|
|
211
|
-
} | undefined>;
|
|
212
|
-
defaultAttributeValues?: any;
|
|
213
|
-
index0AttributeName?: Readonly<string | undefined>;
|
|
214
|
-
uniformsNeedUpdate?: Readonly<boolean | undefined>;
|
|
215
|
-
glslVersion?: "100" | "300 es" | null | undefined;
|
|
216
216
|
format?: THREE.PixelFormat | undefined;
|
|
217
217
|
lineWidth?: number | undefined;
|
|
218
218
|
}>;
|
|
@@ -18,7 +18,7 @@ export type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'col
|
|
|
18
18
|
export declare class NgtsLine {
|
|
19
19
|
points: import("@angular/core").InputSignal<(number | THREE.Vector2 | THREE.Vector3 | [number, number, number] | [number, number])[]>;
|
|
20
20
|
options: import("@angular/core").InputSignalWithTransform<NgtsLineOptions, "" | Partial<NgtsLineOptions>>;
|
|
21
|
-
protected parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "
|
|
21
|
+
protected parameters: import("@angular/core").Signal<Omit<NgtsLineOptions, "color" | "dashed" | "linewidth" | "vertexColors" | "lineWidth" | "segments">>;
|
|
22
22
|
lineRef: import("@angular/core").Signal<ElementRef<Line2 | LineSegments2> | undefined>;
|
|
23
23
|
private store;
|
|
24
24
|
private segments;
|
|
@@ -12,15 +12,13 @@ export declare class NgtsText3D {
|
|
|
12
12
|
font: import("@angular/core").InputSignal<NgtsFontInput>;
|
|
13
13
|
text: import("@angular/core").InputSignal<string>;
|
|
14
14
|
options: import("@angular/core").InputSignalWithTransform<Partial<NgtThreeElement<typeof THREE.Mesh>> & NgtsText3DOptions, "" | Partial<Partial<NgtThreeElement<typeof THREE.Mesh>> & NgtsText3DOptions>>;
|
|
15
|
-
protected parameters: import("@angular/core").Signal<Omit<Partial<NgtThreeElement<typeof THREE.Mesh>> & NgtsText3DOptions, "
|
|
15
|
+
protected parameters: import("@angular/core").Signal<Omit<Partial<NgtThreeElement<typeof THREE.Mesh>> & NgtsText3DOptions, "size" | "height" | "curveSegments" | "bevelEnabled" | "bevelThickness" | "bevelSize" | "bevelOffset" | "bevelSegments" | "lineHeight" | "letterSpacing" | "smooth">>;
|
|
16
16
|
meshRef: import("@angular/core").Signal<ElementRef<THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>>>;
|
|
17
17
|
private textGeometryRef;
|
|
18
18
|
private loadedFont;
|
|
19
19
|
private smooth;
|
|
20
20
|
private textOptions;
|
|
21
21
|
protected textArgs: import("@angular/core").Signal<(string | {
|
|
22
|
-
lineHeight?: number | undefined;
|
|
23
|
-
letterSpacing?: number | undefined;
|
|
24
22
|
size?: number | undefined;
|
|
25
23
|
height?: number | undefined;
|
|
26
24
|
curveSegments?: number | undefined;
|
|
@@ -29,6 +27,8 @@ export declare class NgtsText3D {
|
|
|
29
27
|
bevelSize?: number | undefined;
|
|
30
28
|
bevelOffset?: number | undefined;
|
|
31
29
|
bevelSegments: number;
|
|
30
|
+
lineHeight?: number | undefined;
|
|
31
|
+
letterSpacing?: number | undefined;
|
|
32
32
|
font: import("three-stdlib").Font;
|
|
33
33
|
})[] | null>;
|
|
34
34
|
constructor();
|
|
@@ -38,7 +38,7 @@ export interface NgtsTextOptions extends Partial<NgtThreeElements['ngt-mesh']> {
|
|
|
38
38
|
export declare class NgtsText {
|
|
39
39
|
text: import("@angular/core").InputSignal<string>;
|
|
40
40
|
options: import("@angular/core").InputSignalWithTransform<NgtsTextOptions, "" | Partial<NgtsTextOptions>>;
|
|
41
|
-
protected parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "
|
|
41
|
+
protected parameters: import("@angular/core").Signal<Omit<NgtsTextOptions, "characters" | "fontSize" | "font" | "anchorX" | "anchorY" | "sdfGlyphSize">>;
|
|
42
42
|
synced: import("@angular/core").OutputEmitterRef<Text>;
|
|
43
43
|
private objectEvents;
|
|
44
44
|
private store;
|
|
@@ -49,6 +49,8 @@ export declare class NgtsText {
|
|
|
49
49
|
protected sdfGlyphSize: import("@angular/core").Signal<number>;
|
|
50
50
|
protected fontSize: import("@angular/core").Signal<number>;
|
|
51
51
|
troikaMesh: any;
|
|
52
|
+
private textPrimitiveRef;
|
|
53
|
+
private textPrimitive;
|
|
52
54
|
constructor();
|
|
53
55
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsText, never>;
|
|
54
56
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsText, "ngts-text", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "synced": "synced"; }, never, ["*"], true, [{ directive: typeof i1.NgtObjectEvents; inputs: {}; outputs: { "click": "click"; "dblclick": "dblclick"; "contextmenu": "contextmenu"; "pointerup": "pointerup"; "pointerdown": "pointerdown"; "pointerover": "pointerover"; "pointerout": "pointerout"; "pointerenter": "pointerenter"; "pointerleave": "pointerleave"; "pointermove": "pointermove"; "pointermissed": "pointermissed"; "pointercancel": "pointercancel"; "wheel": "wheel"; }; }]>;
|
|
@@ -895,12 +895,14 @@ class NgtsText {
|
|
|
895
895
|
this.sdfGlyphSize = pick(this.options, 'sdfGlyphSize');
|
|
896
896
|
this.fontSize = pick(this.options, 'fontSize');
|
|
897
897
|
this.troikaMesh = new Text();
|
|
898
|
+
// TODO: (chau) we currently need to use this with NgtObjectEvents
|
|
899
|
+
// to make sure `ngt-primitive` is instantitated before `injectObjectEvents`
|
|
900
|
+
this.textPrimitiveRef = viewChild('textPrimitive');
|
|
901
|
+
this.textPrimitive = computed(() => this.textPrimitiveRef()?.nativeElement);
|
|
902
|
+
this.objectEvents.ngtObjectEvents.set(this.textPrimitive);
|
|
898
903
|
inject(DestroyRef).onDestroy(() => {
|
|
899
904
|
this.troikaMesh.dispose();
|
|
900
905
|
});
|
|
901
|
-
effect(() => {
|
|
902
|
-
this.objectEvents.ngtObjectEvents.set(this.troikaMesh);
|
|
903
|
-
});
|
|
904
906
|
effect(() => {
|
|
905
907
|
const [font, characters, invalidate] = [this.font(), this.characters(), this.store.invalidate()];
|
|
906
908
|
if (font) {
|
|
@@ -916,8 +918,9 @@ class NgtsText {
|
|
|
916
918
|
});
|
|
917
919
|
}
|
|
918
920
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.6", ngImport: i0, type: NgtsText, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
919
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
921
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.6", type: NgtsText, isStandalone: true, selector: "ngts-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { synced: "synced" }, viewQueries: [{ propertyName: "textPrimitiveRef", first: true, predicate: ["textPrimitive"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.NgtObjectEvents, outputs: ["click", "click", "dblclick", "dblclick", "contextmenu", "contextmenu", "pointerup", "pointerup", "pointerdown", "pointerdown", "pointerover", "pointerover", "pointerout", "pointerout", "pointerenter", "pointerenter", "pointerleave", "pointerleave", "pointermove", "pointermove", "pointermissed", "pointermissed", "pointercancel", "pointercancel", "wheel", "wheel"] }], ngImport: i0, template: `
|
|
920
922
|
<ngt-primitive
|
|
923
|
+
#textPrimitive
|
|
921
924
|
*args="[troikaMesh]"
|
|
922
925
|
[text]="text()"
|
|
923
926
|
[font]="font()"
|
|
@@ -937,6 +940,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
937
940
|
selector: 'ngts-text',
|
|
938
941
|
template: `
|
|
939
942
|
<ngt-primitive
|
|
943
|
+
#textPrimitive
|
|
940
944
|
*args="[troikaMesh]"
|
|
941
945
|
[text]="text()"
|
|
942
946
|
[font]="font()"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard.ts","../../../../libs/soba/abstractions/src/lib/line.ts","../../../../libs/soba/abstractions/src/lib/catmull-rom-line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/edges.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/grid.ts","../../../../libs/soba/abstractions/src/lib/helper.ts","../../../../libs/soba/abstractions/src/lib/prism-geometry.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/rounded-box.ts","../../../../libs/soba/abstractions/src/lib/text.ts","../../../../libs/soba/abstractions/src/lib/text-3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsBillboardOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tfollow?: boolean;\n\tlockX?: boolean;\n\tlockY?: boolean;\n\tlockZ?: boolean;\n}\n\nconst defaultOptions: NgtsBillboardOptions = {\n\tfollow: true,\n\tlockX: false,\n\tlockY: false,\n\tlockZ: false,\n};\n\n@Component({\n\tselector: 'ngts-billboard',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #inner>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBillboard {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['follow', 'lockX', 'lockY', 'lockZ']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tinnerRef = viewChild.required<ElementRef<Group>>('inner');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst q = new THREE.Quaternion();\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst [{ follow, lockX, lockY, lockZ }, group, inner] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.innerRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (!follow || !group || !inner) return;\n\n\t\t\t// save previous rotation in case we're locking an axis\n\t\t\tconst prevRotation = inner.rotation.clone();\n\n\t\t\t// always face the camera\n\t\t\tgroup.updateMatrix();\n\t\t\tgroup.updateWorldMatrix(false, false);\n\t\t\tgroup.getWorldQuaternion(q);\n\t\t\tcamera.getWorldQuaternion(inner.quaternion).premultiply(q.invert());\n\n\t\t\t// readjust any axis that is locked\n\t\t\tif (lockX) inner.rotation.x = prevRotation.x;\n\t\t\tif (lockY) inner.rotation.y = prevRotation.y;\n\t\t\tif (lockZ) inner.rotation.z = prevRotation.z;\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkNeedsUpdate, injectStore, is, NgtAfterAttach, NgtArgs, NgtThreeElement, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport {\n\tLine2,\n\tLineGeometry,\n\tLineMaterial,\n\tLineMaterialParameters,\n\tLineSegments2,\n\tLineSegmentsGeometry,\n} from 'three-stdlib';\n\nexport type NgtLine2 = NgtThreeElement<typeof Line2>;\nexport type NgtLineMaterial = NgtThreeElement<typeof LineMaterial>;\n\nexport type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, '__ngt_args__'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors' | '__ngt_args__'> & {\n\t\t/** Array of colors, [0, 0, 0] */\n\t\tvertexColors?: Array<THREE.ColorRepresentation | [number, number, number] | [number, number, number, number]>;\n\t\t/** Line width, 1 */\n\t\tlineWidth: number;\n\t\t/** Segments, false */\n\t\tsegments: boolean;\n\t\t/** Color */\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsLineOptions = {\n\tlineWidth: 1,\n\tsegments: false,\n\tcolor: 0xffffff,\n};\n\n@Component({\n\tselector: 'ngts-line',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line2()]\" #line [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[lineGeometry()]\" attach=\"geometry\" (attached)=\"onGeometryAttached($any($event))\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[lineMaterial]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[vertexColors]=\"vertex()\"\n\t\t\t\t[resolution]=\"resolution()\"\n\t\t\t\t[linewidth]=\"actualLineWidth()\"\n\t\t\t\t[dashed]=\"dashed()\"\n\t\t\t\t[transparent]=\"itemSize() === 4\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLine {\n\tpoints =\n\t\tinput.required<Array<THREE.Vector3 | THREE.Vector2 | [number, number, number] | [number, number] | number>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'color',\n\t\t'vertexColors',\n\t\t'lineWidth',\n\t\t'segments',\n\t\t'linewidth',\n\t\t'dashed',\n\t]);\n\n\tlineRef = viewChild<ElementRef<Line2 | LineSegments2>>('line');\n\n\tprivate store = injectStore();\n\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprotected dashed = pick(this.options, 'dashed');\n\tprotected color = pick(this.options, 'color');\n\tprotected vertex = computed(() => Boolean(this.vertexColors()));\n\tprotected resolution = computed(() => [this.store.size.width(), this.store.size.height()]);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate linewidth = pick(this.options, 'linewidth');\n\n\tprotected line2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));\n\tprotected lineMaterial = new LineMaterial();\n\n\tprotected actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);\n\tprotected itemSize = computed(() => ((this.vertexColors()?.[0] as number[] | undefined)?.length === 4 ? 4 : 3));\n\n\t// other Line components access this\n\tlineGeometry = computed(() => {\n\t\tconst geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();\n\t\tconst pValues = this.points().map((p) => {\n\t\t\tconst isArray = Array.isArray(p);\n\n\t\t\tif (is.three<THREE.Vector3>(p, 'isVector3')) {\n\t\t\t\treturn [p.x, p.y, p.z];\n\t\t\t}\n\n\t\t\treturn is.three<THREE.Vector3>(p, 'isVector3') || is.three<THREE.Vector4>(p, 'isVector4')\n\t\t\t\t? [p.x, p.y, p.z]\n\t\t\t\t: is.three<THREE.Vector2>(p, 'isVector2')\n\t\t\t\t\t? [p.x, p.y, 0]\n\t\t\t\t\t: isArray && p.length === 3\n\t\t\t\t\t\t? [p[0], p[1], p[2]]\n\t\t\t\t\t\t: isArray && p.length === 2\n\t\t\t\t\t\t\t? [p[0], p[1], 0]\n\t\t\t\t\t\t\t: p;\n\t\t});\n\n\t\tgeom.setPositions(pValues.flat());\n\n\t\tconst vertexColors = this.vertexColors();\n\n\t\tif (vertexColors) {\n\t\t\tconst cValues = vertexColors.map((c) => (is.three<THREE.Color>(c, 'isColor') ? c.toArray() : c));\n\t\t\t// @ts-expect-error - flat() isn't defined\n\t\t\tgeom.setColors(cValues.flat(), this.itemSize());\n\t\t}\n\n\t\treturn geom;\n\t});\n\n\t// NOTE: use attached event to call computeLineDistances to ensure the geometry has been attached\n\tonGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>) {\n\t\tparent.computeLineDistances();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];\n\t\t\tif (dashed) {\n\t\t\t\tlineMaterial.defines['USE_DASH'] = '';\n\t\t\t} else {\n\t\t\t\tdelete lineMaterial.defines['USE_DASH'];\n\t\t\t}\n\t\t\tcheckNeedsUpdate(lineMaterial);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];\n\t\t\tonCleanup(() => {\n\t\t\t\tlineGeometry.dispose();\n\t\t\t\tlineMaterial.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCatmullRomLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tcurveType: 'centripetal' | 'chordal' | 'catmullrom';\n\ttension: number;\n\tsegments: number;\n\tclosed: boolean;\n}\n\nconst defaultOptions: NgtsCatmullRomLineOptions = {\n\tcurveType: 'centripetal',\n\ttension: 0.5,\n\tsegments: 20,\n\tclosed: false,\n\tlineWidth: 1,\n};\n\n@Component({\n\tselector: 'ngts-catmull-rom-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"segmentedPoints()\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCatmullRomLine {\n\tpoints = input.required<Array<THREE.Vector3 | [number, number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate closed = pick(this.options, 'closed');\n\tprivate curveType = pick(this.options, 'curveType');\n\tprivate tension = pick(this.options, 'tension');\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprivate curve = computed(() => {\n\t\tconst [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];\n\n\t\tconst mappedPoints = points.map((pt) =>\n\t\t\tis.three<THREE.Vector3>(pt, 'isVector3') ? pt : new THREE.Vector3(...(pt as [number, number, number])),\n\t\t);\n\n\t\treturn new THREE.CatmullRomCurve3(mappedPoints, closed, curveType, tension);\n\t});\n\n\tprotected segmentedPoints = computed(() => {\n\t\tconst [curve, segments] = [this.curve(), this.segments()];\n\t\treturn curve.getPoints(segments);\n\t});\n\n\tprivate interpolatedVertexColors = computed(() => {\n\t\tconst [vertexColors, segments] = [this.vertexColors(), this.segments()];\n\t\tif (!vertexColors || vertexColors.length < 2) return undefined;\n\n\t\tif (vertexColors.length === segments + 1) return vertexColors;\n\n\t\tconst mappedColors = vertexColors.map((color) =>\n\t\t\tis.three<THREE.Color>(color, 'isColor') ? color : new THREE.Color(...(color as [number, number, number])),\n\t\t);\n\t\tif (untracked(this.closed)) mappedColors.push(mappedColors[0].clone());\n\n\t\tconst iColors: THREE.Color[] = [mappedColors[0]];\n\t\tconst divisions = segments / (mappedColors.length - 1);\n\t\tfor (let i = 1; i < segments; i++) {\n\t\t\tconst alpha = (i % divisions) / divisions;\n\t\t\tconst colorIndex = Math.floor(i / divisions);\n\t\t\tiColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));\n\t\t}\n\t\tiColors.push(mappedColors[mappedColors.length - 1]);\n\n\t\treturn iColors;\n\t});\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCubicBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsCubicBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-cubic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCubicBezierLine {\n\tstart = input.required<THREE.Vector3 | [number, number, number]>();\n\tend = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidA = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidB = input.required<THREE.Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tprotected points = computed(() => {\n\t\tconst [start, end, midA, midB, segments] = [\n\t\t\tthis.start(),\n\t\t\tthis.end(),\n\t\t\tthis.midA(),\n\t\t\tthis.midB(),\n\t\t\tthis.segments(),\n\t\t];\n\t\tconst startV = is.three<THREE.Vector3>(start, 'isVector3') ? start : new THREE.Vector3(...start);\n\t\tconst endV = is.three<THREE.Vector3>(end, 'isVector3') ? end : new THREE.Vector3(...end);\n\t\tconst midAV = is.three<THREE.Vector3>(midA, 'isVector3') ? midA : new THREE.Vector3(...midA);\n\t\tconst midBV = is.three<THREE.Vector3>(midB, 'isVector3') ? midB : new THREE.Vector3(...midB);\n\t\treturn new THREE.CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';\nimport { checkNeedsUpdate, getInstanceState, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { LineMaterialParameters } from 'three-stdlib';\nimport { NgtLine2, NgtLineMaterial, NgtsLine } from './line';\n\nexport type NgtsEdgesOptions = Partial<NgtThreeElements['ngt-mesh']> & {\n\tthreshold?: number;\n\tlineWidth?: number;\n} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, 'geometry'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors'> & {\n\t\tgeometry?: THREE.BufferGeometry;\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsEdgesOptions = {\n\tlineWidth: 1,\n\tthreshold: 15,\n};\n\n@Component({\n\tselector: 'ngts-edges',\n\ttemplate: `\n\t\t<ngts-line [points]=\"tmpPoints\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\timports: [NgtsLine],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEdges {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['threshold', 'geometry']);\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), segments: true, raycast: () => null }));\n\tprotected tmpPoints = [0, 0, 0, 1, 0, 0];\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate memoizedGeometry?: THREE.BufferGeometry;\n\tprivate memoizedThreshold?: number;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst line = this.line().lineRef()?.nativeElement;\n\t\t\tif (!line) return;\n\n\t\t\tconst lS = getInstanceState(line);\n\t\t\tif (!lS) return;\n\n\t\t\tconst parent = lS.parent() as unknown as THREE.Mesh;\n\t\t\tif (!parent) return;\n\n\t\t\tconst { geometry: explicitGeometry, threshold } = this.options();\n\t\t\tconst geometry = explicitGeometry ?? parent.geometry;\n\t\t\tif (!geometry) return;\n\n\t\t\tconst cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;\n\t\t\tif (cached) return;\n\n\t\t\tthis.memoizedGeometry = geometry;\n\t\t\tthis.memoizedThreshold = threshold;\n\n\t\t\tconst points = (\n\t\t\t\tnew THREE.EdgesGeometry(geometry, threshold).attributes['position'] as THREE.BufferAttribute\n\t\t\t).array as Float32Array;\n\t\t\tline.geometry.setPositions(points);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceStart']);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceEnd']);\n\t\t\tline.computeLineDistances();\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtAttachable, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { CanvasTexture } from 'three';\n\nexport interface NgtsGradientTextureOptions extends Partial<Omit<NgtThreeElements['ngt-texture'], 'type'>> {\n\tsize: number;\n\twidth: number;\n\ttype: 'linear' | 'radial';\n\tinnerCircleRadius: number;\n\touterCircleRadius: string | number;\n}\n\nconst defaultOptions: NgtsGradientTextureOptions = {\n\tsize: 1024,\n\twidth: 16,\n\ttype: 'linear',\n\tinnerCircleRadius: 0,\n\touterCircleRadius: 'auto',\n};\n\n@Component({\n\tselector: 'ngts-gradient-texture',\n\ttemplate: `\n\t\t<ngt-canvas-texture\n\t\t\t*args=\"[canvas()]\"\n\t\t\t[attach]=\"attach()\"\n\t\t\t[colorSpace]=\"outputColorSpace()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-canvas-texture>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGradientTexture {\n\tattach = input<NgtAttachable>('map');\n\tstops = input.required<Array<number>>();\n\tcolors = input.required<Array<THREE.ColorRepresentation>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprotected outputColorSpace = this.store.gl.outputColorSpace;\n\n\tprotected canvas = computed(() => {\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tconst context = canvas.getContext('2d')!;\n\t\tconst [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis.stops(),\n\t\t\tthis.colors(),\n\t\t];\n\t\tcanvas.width = width;\n\t\tcanvas.height = size;\n\n\t\tlet gradient: CanvasGradient;\n\n\t\tif (type === 'linear') {\n\t\t\tgradient = context.createLinearGradient(0, 0, 0, size);\n\t\t} else {\n\t\t\tconst canvasCenterX = canvas.width / 2;\n\t\t\tconst canvasCenterY = canvas.height / 2;\n\t\t\tconst radius =\n\t\t\t\touterCircleRadius !== 'auto'\n\t\t\t\t\t? Math.abs(Number(outerCircleRadius))\n\t\t\t\t\t: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);\n\t\t\tgradient = context.createRadialGradient(\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tMath.abs(innerCircleRadius),\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tradius,\n\t\t\t);\n\t\t}\n\n\t\tconst tempColor = new THREE.Color(); // reuse instance for performance\n\n\t\tlet i = stops.length;\n\t\twhile (i--) {\n\t\t\tgradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());\n\t\t}\n\n\t\tcontext.save();\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, width, size);\n\t\tcontext.restore();\n\n\t\treturn canvas;\n\t});\n\n\tconstructor() {\n\t\textend({ CanvasTexture });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { GridMaterial, GridMaterialOptions } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh, PlaneGeometry } from 'three';\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-mesh']> &\n\tGridMaterialOptions & { planeArgs: ConstructorParameters<typeof THREE.PlaneGeometry> } = {\n\tplaneArgs: [],\n\tcellSize: 0.5,\n\tcellThickness: 0.5,\n\tcellColor: 'black',\n\tsectionSize: 1,\n\tsectionThickness: 1,\n\tsectionColor: '#2080ff',\n\tinfiniteGrid: false,\n\tfollowCamera: false,\n\tfadeDistance: 100,\n\tfadeStrength: 1,\n\tfadeFrom: 1,\n\tside: THREE.BackSide,\n};\n\n@Component({\n\tselector: 'ngts-grid',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [frustumCulled]=\"false\" [parameters]=\"parameters()\">\n\t\t\t<ngt-plane-geometry *args=\"planeArgs()\" />\n\t\t\t<ngt-grid-material transparent [side]=\"side()\" [parameters]=\"uniforms()\">\n\t\t\t\t<ngt-value attach=\"extensions.derivatives\" [rawValue]=\"true\" />\n\t\t\t</ngt-grid-material>\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGrid {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'planeArgs',\n\t\t'cellSize',\n\t\t'cellThickness',\n\t\t'cellColor',\n\t\t'sectionSize',\n\t\t'sectionThickness',\n\t\t'sectionColor',\n\t\t'infiniteGrid',\n\t\t'followCamera',\n\t\t'fadeDistance',\n\t\t'fadeStrength',\n\t\t'fadeFrom',\n\t\t'side',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate plane = new THREE.Plane();\n\tprivate upVector = new THREE.Vector3(0, 1, 0);\n\tprivate zeroVector = new THREE.Vector3(0, 0, 0);\n\n\tprotected planeArgs = pick(this.options, 'planeArgs');\n\tprotected side = pick(this.options, 'side');\n\n\tprivate cellSize = pick(this.options, 'cellSize');\n\tprivate sectionSize = pick(this.options, 'sectionSize');\n\tprivate cellColor = pick(this.options, 'cellColor');\n\tprivate sectionColor = pick(this.options, 'sectionColor');\n\tprivate cellThickness = pick(this.options, 'cellThickness');\n\tprivate sectionThickness = pick(this.options, 'sectionThickness');\n\tprivate fadeDistance = pick(this.options, 'fadeDistance');\n\tprivate fadeStrength = pick(this.options, 'fadeStrength');\n\tprivate fadeFrom = pick(this.options, 'fadeFrom');\n\tprivate infiniteGrid = pick(this.options, 'infiniteGrid');\n\tprivate followCamera = pick(this.options, 'followCamera');\n\n\tprotected uniforms = computed(() => {\n\t\tconst [\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t] = [\n\t\t\tthis.cellSize(),\n\t\t\tthis.sectionSize(),\n\t\t\tthis.cellColor(),\n\t\t\tthis.sectionColor(),\n\t\t\tthis.cellThickness(),\n\t\t\tthis.sectionThickness(),\n\t\t\tthis.fadeDistance(),\n\t\t\tthis.fadeStrength(),\n\t\t\tthis.fadeFrom(),\n\t\t\tthis.infiniteGrid(),\n\t\t\tthis.followCamera(),\n\t\t];\n\n\t\treturn {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, GridMaterial });\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\n\t\t\tthis.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);\n\n\t\t\tconst gridMaterial = mesh.material as THREE.ShaderMaterial;\n\t\t\tconst worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'] as THREE.Uniform<THREE.Vector3>;\n\t\t\tconst worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'] as THREE.Uniform<THREE.Vector3>;\n\n\t\t\tthis.plane.projectPoint(camera.position, worldCamProjPosition.value);\n\t\t\tworldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { Object3D } from 'three';\n\ntype HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;\n\nexport function injectHelper<\n\tTConstructor extends new (...args: any[]) => THREE.Object3D,\n\tTHelperInstance extends InstanceType<TConstructor> & { update: () => void; dispose: () => void },\n>(\n\tobject: () => ElementRef<THREE.Object3D> | THREE.Object3D | undefined | null,\n\thelperConstructor: () => TConstructor,\n\t{\n\t\tinjector,\n\t\targs = () => [] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t}: { injector?: Injector; args?: () => HelperArgs<ConstructorParameters<TConstructor>> } = {},\n) {\n\treturn assertInjector(injectHelper, injector, () => {\n\t\tconst store = injectStore();\n\n\t\tconst helper = computed(() => {\n\t\t\tconst maybeObject3D = object();\n\t\t\tif (!maybeObject3D) return null;\n\n\t\t\tconst object3D = resolveRef(maybeObject3D);\n\t\t\tif (!object3D) return null;\n\n\t\t\tconst currentHelper: THelperInstance = new (helperConstructor() as any)(object3D, ...args());\n\t\t\tcurrentHelper.traverse((child) => (child.raycast = () => null));\n\t\t\treturn currentHelper;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (!currentHelper) return;\n\n\t\t\tconst scene = store.scene();\n\n\t\t\tscene.add(currentHelper);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tscene.remove(currentHelper);\n\t\t\t\tcurrentHelper.dispose?.();\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (currentHelper) currentHelper.update();\n\t\t});\n\n\t\treturn helper;\n\t});\n}\n\n@Component({\n\tselector: 'ngts-helper',\n\ttemplate: `\n\t\t<ngt-object3D #helper />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHelper<TConstructor extends new (...args: any[]) => THREE.Object3D> {\n\ttype = input.required<TConstructor>();\n\toptions = input<HelperArgs<ConstructorParameters<TConstructor>>>(\n\t\t[] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t);\n\n\thelperRef = viewChild.required<ElementRef<THREE.Object3D>>('helper');\n\n\tprivate parent = computed(() => {\n\t\tconst helper = this.helperRef().nativeElement;\n\t\tif (!helper) return;\n\t\tconst instanceState = getInstanceState(helper);\n\t\tif (!instanceState) return;\n\t\treturn instanceState.parent() as unknown as THREE.Object3D;\n\t});\n\n\thelper = injectHelper(this.parent, this.type, { args: this.options });\n\n\tconstructor() {\n\t\textend({ Object3D });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtArgs, NgtAttachable } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry } from 'three';\n\nexport interface NgtsPrismGeometryOptions extends Omit<THREE.ExtrudeGeometryOptions, 'depth'> {\n\t/** Height */\n\theight: number;\n}\n\nconst defaultOptions: NgtsPrismGeometryOptions = {\n\theight: 1,\n\tbevelEnabled: false,\n};\n\n@Component({\n\tselector: 'ngts-prism-geometry',\n\ttemplate: `\n\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), parameters()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-extrude-geometry>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPrismGeometry {\n\tattach = input<NgtAttachable>('geometry');\n\tvertices = input.required<Array<THREE.Vector2 | [number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = computed(() => ({ ...this.options(), depth: this.options().height }));\n\tprotected shape = computed(() => {\n\t\tconst vertices = this.vertices();\n\t\tconst interpolatedVertices = vertices.map((v) =>\n\t\t\tis.three<THREE.Vector2>(v, 'isVector2') ? v : new THREE.Vector2(...v),\n\t\t);\n\t\treturn new THREE.Shape(interpolatedVertices);\n\t});\n\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsQuadraticBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsQuadraticBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-quadratic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsQuadraticBezierLine {\n\tstart = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\tend = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\tmid = input<THREE.Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tline = viewChild.required(NgtsLine);\n\n\tprotected points = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));\n\n\tprivate curve = new THREE.QuadraticBezierCurve3();\n\n\tsetPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t) {\n\t\tconst points = this.getPoints(start, end, mid);\n\t\tconst geometry = this.line().lineGeometry();\n\t\tif (geometry) geometry.setPositions(points.map((p) => p.toArray()).flat());\n\t}\n\n\tprivate getPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t\tsegments = 20,\n\t) {\n\t\tif (is.three<THREE.Vector3>(start, 'isVector3')) this.curve.v0.copy(start);\n\t\telse this.curve.v0.set(...(start as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(end, 'isVector3')) this.curve.v2.copy(end);\n\t\telse this.curve.v2.set(...(end as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(mid, 'isVector3')) {\n\t\t\tthis.curve.v1.copy(mid);\n\t\t} else if (Array.isArray(mid)) {\n\t\t\tthis.curve.v1.set(...(mid as [number, number, number]));\n\t\t} else {\n\t\t\tthis.curve.v1.copy(\n\t\t\t\tthis.curve.v0\n\t\t\t\t\t.clone()\n\t\t\t\t\t.add(this.curve.v2.clone().sub(this.curve.v0))\n\t\t\t\t\t.add(new THREE.Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)),\n\t\t\t);\n\t\t}\n\t\treturn this.curve.getPoints(segments);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtObjectEvents, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry, Mesh } from 'three';\nimport { toCreasedNormals } from 'three-stdlib';\n\nconst eps = 0.00001;\n\nfunction createShape(width: number, height: number, radius0: number) {\n\tconst shape = new THREE.Shape();\n\tconst radius = radius0 - eps;\n\tshape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);\n\tshape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);\n\tshape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);\n\tshape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);\n\treturn shape;\n}\n\nexport interface NgtsRoundedBoxOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tradius: number;\n\tsmoothness: number;\n\tbevelSegments: number;\n\tsteps: number;\n\tcreaseAngle: number;\n}\n\nconst defaultOptions: NgtsRoundedBoxOptions = {\n\twidth: 1,\n\theight: 1,\n\tdepth: 1,\n\tradius: 0.05,\n\tsmoothness: 4,\n\tbevelSegments: 4,\n\tcreaseAngle: 0.4,\n\tsteps: 1,\n};\n\n@Component({\n\tselector: 'ngts-rounded-box',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), geometryParameters()]\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsRoundedBox {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'width',\n\t\t'height',\n\t\t'depth',\n\t\t'radius',\n\t\t'smoothness',\n\t\t'bevelSegments',\n\t\t'steps',\n\t\t'creaseAngle',\n\t]);\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate depth = pick(this.options, 'depth');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate smoothness = pick(this.options, 'smoothness');\n\tprivate bevelSegments = pick(this.options, 'bevelSegments');\n\tprivate steps = pick(this.options, 'steps');\n\tprivate creaseAngle = pick(this.options, 'creaseAngle');\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tprotected shape = computed(() => {\n\t\tconst [width, height, radius] = [this.width(), this.height(), this.radius()];\n\t\treturn createShape(width, height, radius);\n\t});\n\tprotected geometryParameters = computed(() => {\n\t\tconst [depth, radius, smoothness, bevelSegments, steps] = [\n\t\t\tthis.depth(),\n\t\t\tthis.radius(),\n\t\t\tthis.smoothness(),\n\t\t\tuntracked(this.bevelSegments),\n\t\t\tuntracked(this.steps),\n\t\t];\n\n\t\treturn {\n\t\t\tdepth: depth - radius * 2,\n\t\t\tbevelEnabled: true,\n\t\t\tbevelSegments: bevelSegments * 2,\n\t\t\tsteps,\n\t\t\tbevelSize: radius - eps,\n\t\t\tbevelThickness: radius,\n\t\t\tcurveSegments: smoothness,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry, Mesh });\n\n\t\tconst objectEvents = inject(NgtObjectEvents, { host: true });\n\t\tobjectEvents.ngtObjectEvents.set(this.meshRef);\n\n\t\teffect(() => {\n\t\t\tconst geometry = this.geometryRef()?.nativeElement;\n\t\t\tif (!geometry) return;\n\n\t\t\tgeometry.center();\n\t\t\ttoCreasedNormals(geometry, untracked(this.creaseAngle));\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { NgtArgs, NgtObjectEvents, NgtThreeElements, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n// @ts-expect-error - no type def\nimport { Text, preloadFont } from 'troika-three-text';\n\nexport interface NgtsTextOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\tcharacters?: string;\n\tcolor?: THREE.ColorRepresentation;\n\t/** Font size, default: 1 */\n\tfontSize: number;\n\tfontWeight?: number | string;\n\tfontStyle?: 'italic' | 'normal';\n\tmaxWidth?: number;\n\tlineHeight?: number;\n\tletterSpacing?: number;\n\ttextAlign?: 'left' | 'right' | 'center' | 'justify';\n\tfont?: string;\n\tanchorX: number | 'left' | 'center' | 'right';\n\tanchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom';\n\tclipRect?: [number, number, number, number];\n\tdepthOffset?: number;\n\tdirection?: 'auto' | 'ltr' | 'rtl';\n\toverflowWrap?: 'normal' | 'break-word';\n\twhiteSpace?: 'normal' | 'overflowWrap' | 'nowrap';\n\toutlineWidth?: number | string;\n\toutlineOffsetX?: number | string;\n\toutlineOffsetY?: number | string;\n\toutlineBlur?: number | string;\n\toutlineColor?: THREE.ColorRepresentation;\n\toutlineOpacity?: number;\n\tstrokeWidth?: number | string;\n\tstrokeColor?: THREE.ColorRepresentation;\n\tstrokeOpacity?: number;\n\tfillOpacity?: number;\n\tsdfGlyphSize: number;\n\tdebugSDF?: boolean;\n\tglyphGeometryDetail?: number;\n}\n\nconst defaultOptions: NgtsTextOptions = {\n\tsdfGlyphSize: 64,\n\tanchorX: 'center',\n\tanchorY: 'middle',\n\tfontSize: 1,\n};\n\n@Component({\n\tselector: 'ngts-text',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[troikaMesh]\"\n\t\t\t[text]=\"text()\"\n\t\t\t[font]=\"font()\"\n\t\t\t[anchorX]=\"anchorX()\"\n\t\t\t[anchorY]=\"anchorY()\"\n\t\t\t[sdfGlyphSize]=\"sdfGlyphSize()\"\n\t\t\t[fontSize]=\"fontSize()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsText {\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);\n\n\tsynced = output<Text>();\n\n\tprivate objectEvents = inject(NgtObjectEvents, { host: true });\n\tprivate store = injectStore();\n\n\tprivate characters = pick(this.options, 'characters');\n\n\tprotected font = pick(this.options, 'font');\n\tprotected anchorX = pick(this.options, 'anchorX');\n\tprotected anchorY = pick(this.options, 'anchorY');\n\tprotected sdfGlyphSize = pick(this.options, 'sdfGlyphSize');\n\tprotected fontSize = pick(this.options, 'fontSize');\n\n\ttroikaMesh = new Text();\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.troikaMesh.dispose();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.objectEvents.ngtObjectEvents.set(this.troikaMesh);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [font, characters, invalidate] = [this.font(), this.characters(), this.store.invalidate()];\n\t\t\tif (font) {\n\t\t\t\tpreloadFont({ font, characters }, () => invalidate());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [invalidate] = [this.store.invalidate(), this.text(), this.options()];\n\t\t\tthis.troikaMesh.sync(() => {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.synced.emit(this.troikaMesh);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtThreeElement, NgtThreeElements, omit, pick } from 'angular-three';\nimport { injectFont, NgtsFontInput } from 'angular-three-soba/loaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { mergeVertices, TextGeometry, TextGeometryParameters } from 'three-stdlib';\n\nexport interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {\n\tbevelSegments: number;\n\tsmooth?: number;\n}\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-mesh']> & NgtsText3DOptions = {\n\tletterSpacing: 0,\n\tlineHeight: 1,\n\tsize: 1,\n\theight: 0.2,\n\tbevelThickness: 0.1,\n\tbevelSize: 0.01,\n\tbevelEnabled: false,\n\tbevelOffset: 0,\n\tbevelSegments: 4,\n\tcurveSegments: 8,\n};\n\n@Component({\n\tselector: 'ngts-text-3d,ngts-text-3D',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-text-geometry #textGeometry *args=\"textArgs()\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText3D {\n\tfont = input.required<NgtsFontInput>();\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t\t'smooth',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tprivate textGeometryRef = viewChild<ElementRef<TextGeometry>>('textGeometry');\n\n\tprivate loadedFont = injectFont(this.font);\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate textOptions = pick(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t]);\n\n\tprotected textArgs = computed(() => {\n\t\tconst font = this.loadedFont();\n\t\tif (!font) return null;\n\n\t\tconst [text, textOptions] = [this.text(), this.textOptions()];\n\t\treturn [text, { font, ...textOptions }];\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, TextGeometry });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, textGeometry, textArgs] = [\n\t\t\t\tthis.meshRef()?.nativeElement,\n\t\t\t\tthis.textGeometryRef()?.nativeElement,\n\t\t\t\tthis.textArgs(),\n\t\t\t];\n\t\t\tif (!textArgs || !textGeometry || !mesh) return;\n\n\t\t\tconst smooth = this.smooth();\n\t\t\tif (smooth) {\n\t\t\t\tmesh.geometry = mergeVertices(textGeometry, smooth);\n\t\t\t\tmesh.geometry.computeVertexNormals();\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport type NgtTextGeometry = NgtThreeElement<typeof TextGeometry>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-extrude-geometry\n\t\t * @rawOptions bevelEnabled|bevelOffset|bevelSize|bevelThickness|curveSegments|font|height|size|lineHeight|letterSpacing\n\t\t */\n\t\t'ngt-text-geometry': NgtTextGeometry;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard.ts","../../../../libs/soba/abstractions/src/lib/line.ts","../../../../libs/soba/abstractions/src/lib/catmull-rom-line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/edges.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/grid.ts","../../../../libs/soba/abstractions/src/lib/helper.ts","../../../../libs/soba/abstractions/src/lib/prism-geometry.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/rounded-box.ts","../../../../libs/soba/abstractions/src/lib/text.ts","../../../../libs/soba/abstractions/src/lib/text-3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsBillboardOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tfollow?: boolean;\n\tlockX?: boolean;\n\tlockY?: boolean;\n\tlockZ?: boolean;\n}\n\nconst defaultOptions: NgtsBillboardOptions = {\n\tfollow: true,\n\tlockX: false,\n\tlockY: false,\n\tlockZ: false,\n};\n\n@Component({\n\tselector: 'ngts-billboard',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #inner>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBillboard {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['follow', 'lockX', 'lockY', 'lockZ']);\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tinnerRef = viewChild.required<ElementRef<Group>>('inner');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst q = new THREE.Quaternion();\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst [{ follow, lockX, lockY, lockZ }, group, inner] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.innerRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (!follow || !group || !inner) return;\n\n\t\t\t// save previous rotation in case we're locking an axis\n\t\t\tconst prevRotation = inner.rotation.clone();\n\n\t\t\t// always face the camera\n\t\t\tgroup.updateMatrix();\n\t\t\tgroup.updateWorldMatrix(false, false);\n\t\t\tgroup.getWorldQuaternion(q);\n\t\t\tcamera.getWorldQuaternion(inner.quaternion).premultiply(q.invert());\n\n\t\t\t// readjust any axis that is locked\n\t\t\tif (lockX) inner.rotation.x = prevRotation.x;\n\t\t\tif (lockY) inner.rotation.y = prevRotation.y;\n\t\t\tif (lockZ) inner.rotation.z = prevRotation.z;\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkNeedsUpdate, injectStore, is, NgtAfterAttach, NgtArgs, NgtThreeElement, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport {\n\tLine2,\n\tLineGeometry,\n\tLineMaterial,\n\tLineMaterialParameters,\n\tLineSegments2,\n\tLineSegmentsGeometry,\n} from 'three-stdlib';\n\nexport type NgtLine2 = NgtThreeElement<typeof Line2>;\nexport type NgtLineMaterial = NgtThreeElement<typeof LineMaterial>;\n\nexport type NgtsLineOptions = Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, '__ngt_args__'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors' | '__ngt_args__'> & {\n\t\t/** Array of colors, [0, 0, 0] */\n\t\tvertexColors?: Array<THREE.ColorRepresentation | [number, number, number] | [number, number, number, number]>;\n\t\t/** Line width, 1 */\n\t\tlineWidth: number;\n\t\t/** Segments, false */\n\t\tsegments: boolean;\n\t\t/** Color */\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsLineOptions = {\n\tlineWidth: 1,\n\tsegments: false,\n\tcolor: 0xffffff,\n};\n\n@Component({\n\tselector: 'ngts-line',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line2()]\" #line [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[lineGeometry()]\" attach=\"geometry\" (attached)=\"onGeometryAttached($any($event))\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[lineMaterial]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[vertexColors]=\"vertex()\"\n\t\t\t\t[resolution]=\"resolution()\"\n\t\t\t\t[linewidth]=\"actualLineWidth()\"\n\t\t\t\t[dashed]=\"dashed()\"\n\t\t\t\t[transparent]=\"itemSize() === 4\"\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLine {\n\tpoints =\n\t\tinput.required<Array<THREE.Vector3 | THREE.Vector2 | [number, number, number] | [number, number] | number>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'color',\n\t\t'vertexColors',\n\t\t'lineWidth',\n\t\t'segments',\n\t\t'linewidth',\n\t\t'dashed',\n\t]);\n\n\tlineRef = viewChild<ElementRef<Line2 | LineSegments2>>('line');\n\n\tprivate store = injectStore();\n\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprotected dashed = pick(this.options, 'dashed');\n\tprotected color = pick(this.options, 'color');\n\tprotected vertex = computed(() => Boolean(this.vertexColors()));\n\tprotected resolution = computed(() => [this.store.size.width(), this.store.size.height()]);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate linewidth = pick(this.options, 'linewidth');\n\n\tprotected line2 = computed(() => (this.segments() ? new LineSegments2() : new Line2()));\n\tprotected lineMaterial = new LineMaterial();\n\n\tprotected actualLineWidth = computed(() => this.linewidth() ?? this.lineWidth() ?? 1);\n\tprotected itemSize = computed(() => ((this.vertexColors()?.[0] as number[] | undefined)?.length === 4 ? 4 : 3));\n\n\t// other Line components access this\n\tlineGeometry = computed(() => {\n\t\tconst geom = this.segments() ? new LineSegmentsGeometry() : new LineGeometry();\n\t\tconst pValues = this.points().map((p) => {\n\t\t\tconst isArray = Array.isArray(p);\n\n\t\t\tif (is.three<THREE.Vector3>(p, 'isVector3')) {\n\t\t\t\treturn [p.x, p.y, p.z];\n\t\t\t}\n\n\t\t\treturn is.three<THREE.Vector3>(p, 'isVector3') || is.three<THREE.Vector4>(p, 'isVector4')\n\t\t\t\t? [p.x, p.y, p.z]\n\t\t\t\t: is.three<THREE.Vector2>(p, 'isVector2')\n\t\t\t\t\t? [p.x, p.y, 0]\n\t\t\t\t\t: isArray && p.length === 3\n\t\t\t\t\t\t? [p[0], p[1], p[2]]\n\t\t\t\t\t\t: isArray && p.length === 2\n\t\t\t\t\t\t\t? [p[0], p[1], 0]\n\t\t\t\t\t\t\t: p;\n\t\t});\n\n\t\tgeom.setPositions(pValues.flat());\n\n\t\tconst vertexColors = this.vertexColors();\n\n\t\tif (vertexColors) {\n\t\t\tconst cValues = vertexColors.map((c) => (is.three<THREE.Color>(c, 'isColor') ? c.toArray() : c));\n\t\t\t// @ts-expect-error - flat() isn't defined\n\t\t\tgeom.setColors(cValues.flat(), this.itemSize());\n\t\t}\n\n\t\treturn geom;\n\t});\n\n\t// NOTE: use attached event to call computeLineDistances to ensure the geometry has been attached\n\tonGeometryAttached({ parent }: NgtAfterAttach<LineGeometry, Line2 | LineSegments2>) {\n\t\tparent.computeLineDistances();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst [lineMaterial, dashed] = [this.lineMaterial, this.dashed()];\n\t\t\tif (dashed) {\n\t\t\t\tlineMaterial.defines['USE_DASH'] = '';\n\t\t\t} else {\n\t\t\t\tdelete lineMaterial.defines['USE_DASH'];\n\t\t\t}\n\t\t\tcheckNeedsUpdate(lineMaterial);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [lineGeometry, lineMaterial] = [this.lineGeometry(), this.lineMaterial];\n\t\t\tonCleanup(() => {\n\t\t\t\tlineGeometry.dispose();\n\t\t\t\tlineMaterial.dispose();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, untracked, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCatmullRomLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tcurveType: 'centripetal' | 'chordal' | 'catmullrom';\n\ttension: number;\n\tsegments: number;\n\tclosed: boolean;\n}\n\nconst defaultOptions: NgtsCatmullRomLineOptions = {\n\tcurveType: 'centripetal',\n\ttension: 0.5,\n\tsegments: 20,\n\tclosed: false,\n\tlineWidth: 1,\n};\n\n@Component({\n\tselector: 'ngts-catmull-rom-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"segmentedPoints()\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCatmullRomLine {\n\tpoints = input.required<Array<THREE.Vector3 | [number, number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['curveType', 'tension', 'segments', 'closed', 'vertexColors']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate closed = pick(this.options, 'closed');\n\tprivate curveType = pick(this.options, 'curveType');\n\tprivate tension = pick(this.options, 'tension');\n\tprivate segments = pick(this.options, 'segments');\n\tprivate vertexColors = pick(this.options, 'vertexColors');\n\n\tprivate curve = computed(() => {\n\t\tconst [points, closed, curveType, tension] = [this.points(), this.closed(), this.curveType(), this.tension()];\n\n\t\tconst mappedPoints = points.map((pt) =>\n\t\t\tis.three<THREE.Vector3>(pt, 'isVector3') ? pt : new THREE.Vector3(...(pt as [number, number, number])),\n\t\t);\n\n\t\treturn new THREE.CatmullRomCurve3(mappedPoints, closed, curveType, tension);\n\t});\n\n\tprotected segmentedPoints = computed(() => {\n\t\tconst [curve, segments] = [this.curve(), this.segments()];\n\t\treturn curve.getPoints(segments);\n\t});\n\n\tprivate interpolatedVertexColors = computed(() => {\n\t\tconst [vertexColors, segments] = [this.vertexColors(), this.segments()];\n\t\tif (!vertexColors || vertexColors.length < 2) return undefined;\n\n\t\tif (vertexColors.length === segments + 1) return vertexColors;\n\n\t\tconst mappedColors = vertexColors.map((color) =>\n\t\t\tis.three<THREE.Color>(color, 'isColor') ? color : new THREE.Color(...(color as [number, number, number])),\n\t\t);\n\t\tif (untracked(this.closed)) mappedColors.push(mappedColors[0].clone());\n\n\t\tconst iColors: THREE.Color[] = [mappedColors[0]];\n\t\tconst divisions = segments / (mappedColors.length - 1);\n\t\tfor (let i = 1; i < segments; i++) {\n\t\t\tconst alpha = (i % divisions) / divisions;\n\t\t\tconst colorIndex = Math.floor(i / divisions);\n\t\t\tiColors.push(mappedColors[colorIndex].clone().lerp(mappedColors[colorIndex + 1], alpha));\n\t\t}\n\t\tiColors.push(mappedColors[mappedColors.length - 1]);\n\n\t\treturn iColors;\n\t});\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), vertexColors: this.interpolatedVertexColors() }));\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsCubicBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsCubicBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-cubic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsCubicBezierLine {\n\tstart = input.required<THREE.Vector3 | [number, number, number]>();\n\tend = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidA = input.required<THREE.Vector3 | [number, number, number]>();\n\tmidB = input.required<THREE.Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tprotected points = computed(() => {\n\t\tconst [start, end, midA, midB, segments] = [\n\t\t\tthis.start(),\n\t\t\tthis.end(),\n\t\t\tthis.midA(),\n\t\t\tthis.midB(),\n\t\t\tthis.segments(),\n\t\t];\n\t\tconst startV = is.three<THREE.Vector3>(start, 'isVector3') ? start : new THREE.Vector3(...start);\n\t\tconst endV = is.three<THREE.Vector3>(end, 'isVector3') ? end : new THREE.Vector3(...end);\n\t\tconst midAV = is.three<THREE.Vector3>(midA, 'isVector3') ? midA : new THREE.Vector3(...midA);\n\t\tconst midBV = is.three<THREE.Vector3>(midB, 'isVector3') ? midB : new THREE.Vector3(...midB);\n\t\treturn new THREE.CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n\t});\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, viewChild } from '@angular/core';\nimport { checkNeedsUpdate, getInstanceState, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { LineMaterialParameters } from 'three-stdlib';\nimport { NgtLine2, NgtLineMaterial, NgtsLine } from './line';\n\nexport type NgtsEdgesOptions = Partial<NgtThreeElements['ngt-mesh']> & {\n\tthreshold?: number;\n\tlineWidth?: number;\n} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> &\n\tOmit<Partial<NgtLine2>, 'geometry'> &\n\tOmit<Partial<NgtLineMaterial>, 'color' | 'vertexColors'> & {\n\t\tgeometry?: THREE.BufferGeometry;\n\t\tcolor?: THREE.ColorRepresentation;\n\t};\n\nconst defaultOptions: NgtsEdgesOptions = {\n\tlineWidth: 1,\n\tthreshold: 15,\n};\n\n@Component({\n\tselector: 'ngts-edges',\n\ttemplate: `\n\t\t<ngts-line [points]=\"tmpPoints\" [options]=\"lineOptions()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\timports: [NgtsLine],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEdges {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['threshold', 'geometry']);\n\n\tprotected lineOptions = computed(() => ({ ...this.parameters(), segments: true, raycast: () => null }));\n\tprotected tmpPoints = [0, 0, 0, 1, 0, 0];\n\n\tline = viewChild.required(NgtsLine);\n\n\tprivate memoizedGeometry?: THREE.BufferGeometry;\n\tprivate memoizedThreshold?: number;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst line = this.line().lineRef()?.nativeElement;\n\t\t\tif (!line) return;\n\n\t\t\tconst lS = getInstanceState(line);\n\t\t\tif (!lS) return;\n\n\t\t\tconst parent = lS.parent() as unknown as THREE.Mesh;\n\t\t\tif (!parent) return;\n\n\t\t\tconst { geometry: explicitGeometry, threshold } = this.options();\n\t\t\tconst geometry = explicitGeometry ?? parent.geometry;\n\t\t\tif (!geometry) return;\n\n\t\t\tconst cached = this.memoizedGeometry === geometry && this.memoizedThreshold === threshold;\n\t\t\tif (cached) return;\n\n\t\t\tthis.memoizedGeometry = geometry;\n\t\t\tthis.memoizedThreshold = threshold;\n\n\t\t\tconst points = (\n\t\t\t\tnew THREE.EdgesGeometry(geometry, threshold).attributes['position'] as THREE.BufferAttribute\n\t\t\t).array as Float32Array;\n\t\t\tline.geometry.setPositions(points);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceStart']);\n\t\t\tcheckNeedsUpdate(line.geometry.attributes['instanceEnd']);\n\t\t\tline.computeLineDistances();\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\tuntracked,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtAttachable, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { CanvasTexture } from 'three';\n\nexport interface NgtsGradientTextureOptions extends Partial<Omit<NgtThreeElements['ngt-texture'], 'type'>> {\n\tsize: number;\n\twidth: number;\n\ttype: 'linear' | 'radial';\n\tinnerCircleRadius: number;\n\touterCircleRadius: string | number;\n}\n\nconst defaultOptions: NgtsGradientTextureOptions = {\n\tsize: 1024,\n\twidth: 16,\n\ttype: 'linear',\n\tinnerCircleRadius: 0,\n\touterCircleRadius: 'auto',\n};\n\n@Component({\n\tselector: 'ngts-gradient-texture',\n\ttemplate: `\n\t\t<ngt-canvas-texture\n\t\t\t*args=\"[canvas()]\"\n\t\t\t[attach]=\"attach()\"\n\t\t\t[colorSpace]=\"outputColorSpace()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-canvas-texture>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGradientTexture {\n\tattach = input<NgtAttachable>('map');\n\tstops = input.required<Array<number>>();\n\tcolors = input.required<Array<THREE.ColorRepresentation>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['size', 'width', 'type', 'innerCircleRadius', 'outerCircleRadius']);\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprotected outputColorSpace = this.store.gl.outputColorSpace;\n\n\tprotected canvas = computed(() => {\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tconst context = canvas.getContext('2d')!;\n\t\tconst [{ width, size, type, outerCircleRadius, innerCircleRadius }, stops, colors] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis.stops(),\n\t\t\tthis.colors(),\n\t\t];\n\t\tcanvas.width = width;\n\t\tcanvas.height = size;\n\n\t\tlet gradient: CanvasGradient;\n\n\t\tif (type === 'linear') {\n\t\t\tgradient = context.createLinearGradient(0, 0, 0, size);\n\t\t} else {\n\t\t\tconst canvasCenterX = canvas.width / 2;\n\t\t\tconst canvasCenterY = canvas.height / 2;\n\t\t\tconst radius =\n\t\t\t\touterCircleRadius !== 'auto'\n\t\t\t\t\t? Math.abs(Number(outerCircleRadius))\n\t\t\t\t\t: Math.sqrt(canvasCenterX ** 2 + canvasCenterY ** 2);\n\t\t\tgradient = context.createRadialGradient(\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tMath.abs(innerCircleRadius),\n\t\t\t\tcanvasCenterX,\n\t\t\t\tcanvasCenterY,\n\t\t\t\tradius,\n\t\t\t);\n\t\t}\n\n\t\tconst tempColor = new THREE.Color(); // reuse instance for performance\n\n\t\tlet i = stops.length;\n\t\twhile (i--) {\n\t\t\tgradient.addColorStop(stops[i], tempColor.set(colors[i]).getStyle());\n\t\t}\n\n\t\tcontext.save();\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, width, size);\n\t\tcontext.restore();\n\n\t\treturn canvas;\n\t});\n\n\tconstructor() {\n\t\textend({ CanvasTexture });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { GridMaterial, GridMaterialOptions } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh, PlaneGeometry } from 'three';\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-mesh']> &\n\tGridMaterialOptions & { planeArgs: ConstructorParameters<typeof THREE.PlaneGeometry> } = {\n\tplaneArgs: [],\n\tcellSize: 0.5,\n\tcellThickness: 0.5,\n\tcellColor: 'black',\n\tsectionSize: 1,\n\tsectionThickness: 1,\n\tsectionColor: '#2080ff',\n\tinfiniteGrid: false,\n\tfollowCamera: false,\n\tfadeDistance: 100,\n\tfadeStrength: 1,\n\tfadeFrom: 1,\n\tside: THREE.BackSide,\n};\n\n@Component({\n\tselector: 'ngts-grid',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [frustumCulled]=\"false\" [parameters]=\"parameters()\">\n\t\t\t<ngt-plane-geometry *args=\"planeArgs()\" />\n\t\t\t<ngt-grid-material transparent [side]=\"side()\" [parameters]=\"uniforms()\">\n\t\t\t\t<ngt-value attach=\"extensions.derivatives\" [rawValue]=\"true\" />\n\t\t\t</ngt-grid-material>\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsGrid {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'planeArgs',\n\t\t'cellSize',\n\t\t'cellThickness',\n\t\t'cellColor',\n\t\t'sectionSize',\n\t\t'sectionThickness',\n\t\t'sectionColor',\n\t\t'infiniteGrid',\n\t\t'followCamera',\n\t\t'fadeDistance',\n\t\t'fadeStrength',\n\t\t'fadeFrom',\n\t\t'side',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate plane = new THREE.Plane();\n\tprivate upVector = new THREE.Vector3(0, 1, 0);\n\tprivate zeroVector = new THREE.Vector3(0, 0, 0);\n\n\tprotected planeArgs = pick(this.options, 'planeArgs');\n\tprotected side = pick(this.options, 'side');\n\n\tprivate cellSize = pick(this.options, 'cellSize');\n\tprivate sectionSize = pick(this.options, 'sectionSize');\n\tprivate cellColor = pick(this.options, 'cellColor');\n\tprivate sectionColor = pick(this.options, 'sectionColor');\n\tprivate cellThickness = pick(this.options, 'cellThickness');\n\tprivate sectionThickness = pick(this.options, 'sectionThickness');\n\tprivate fadeDistance = pick(this.options, 'fadeDistance');\n\tprivate fadeStrength = pick(this.options, 'fadeStrength');\n\tprivate fadeFrom = pick(this.options, 'fadeFrom');\n\tprivate infiniteGrid = pick(this.options, 'infiniteGrid');\n\tprivate followCamera = pick(this.options, 'followCamera');\n\n\tprotected uniforms = computed(() => {\n\t\tconst [\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t] = [\n\t\t\tthis.cellSize(),\n\t\t\tthis.sectionSize(),\n\t\t\tthis.cellColor(),\n\t\t\tthis.sectionColor(),\n\t\t\tthis.cellThickness(),\n\t\t\tthis.sectionThickness(),\n\t\t\tthis.fadeDistance(),\n\t\t\tthis.fadeStrength(),\n\t\t\tthis.fadeFrom(),\n\t\t\tthis.infiniteGrid(),\n\t\t\tthis.followCamera(),\n\t\t];\n\n\t\treturn {\n\t\t\tcellSize,\n\t\t\tsectionSize,\n\t\t\tcellColor,\n\t\t\tsectionColor,\n\t\t\tcellThickness,\n\t\t\tsectionThickness,\n\t\t\tfadeDistance,\n\t\t\tfadeStrength,\n\t\t\tfadeFrom,\n\t\t\tinfiniteGrid,\n\t\t\tfollowCamera,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, GridMaterial });\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\n\t\t\tthis.plane.setFromNormalAndCoplanarPoint(this.upVector, this.zeroVector).applyMatrix4(mesh.matrixWorld);\n\n\t\t\tconst gridMaterial = mesh.material as THREE.ShaderMaterial;\n\t\t\tconst worldCamProjPosition = gridMaterial.uniforms['worldCamProjPosition'] as THREE.Uniform<THREE.Vector3>;\n\t\t\tconst worldPlanePosition = gridMaterial.uniforms['worldPlanePosition'] as THREE.Uniform<THREE.Vector3>;\n\n\t\t\tthis.plane.projectPoint(camera.position, worldCamProjPosition.value);\n\t\t\tworldPlanePosition.value.set(0, 0, 0).applyMatrix4(mesh.matrixWorld);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, injectStore, resolveRef } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { Object3D } from 'three';\n\ntype HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;\n\nexport function injectHelper<\n\tTConstructor extends new (...args: any[]) => THREE.Object3D,\n\tTHelperInstance extends InstanceType<TConstructor> & { update: () => void; dispose: () => void },\n>(\n\tobject: () => ElementRef<THREE.Object3D> | THREE.Object3D | undefined | null,\n\thelperConstructor: () => TConstructor,\n\t{\n\t\tinjector,\n\t\targs = () => [] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t}: { injector?: Injector; args?: () => HelperArgs<ConstructorParameters<TConstructor>> } = {},\n) {\n\treturn assertInjector(injectHelper, injector, () => {\n\t\tconst store = injectStore();\n\n\t\tconst helper = computed(() => {\n\t\t\tconst maybeObject3D = object();\n\t\t\tif (!maybeObject3D) return null;\n\n\t\t\tconst object3D = resolveRef(maybeObject3D);\n\t\t\tif (!object3D) return null;\n\n\t\t\tconst currentHelper: THelperInstance = new (helperConstructor() as any)(object3D, ...args());\n\t\t\tcurrentHelper.traverse((child) => (child.raycast = () => null));\n\t\t\treturn currentHelper;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (!currentHelper) return;\n\n\t\t\tconst scene = store.scene();\n\n\t\t\tscene.add(currentHelper);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tscene.remove(currentHelper);\n\t\t\t\tcurrentHelper.dispose?.();\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst currentHelper = helper();\n\t\t\tif (currentHelper) currentHelper.update();\n\t\t});\n\n\t\treturn helper;\n\t});\n}\n\n@Component({\n\tselector: 'ngts-helper',\n\ttemplate: `\n\t\t<ngt-object3D #helper />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsHelper<TConstructor extends new (...args: any[]) => THREE.Object3D> {\n\ttype = input.required<TConstructor>();\n\toptions = input<HelperArgs<ConstructorParameters<TConstructor>>>(\n\t\t[] as unknown as HelperArgs<ConstructorParameters<TConstructor>>,\n\t);\n\n\thelperRef = viewChild.required<ElementRef<THREE.Object3D>>('helper');\n\n\tprivate parent = computed(() => {\n\t\tconst helper = this.helperRef().nativeElement;\n\t\tif (!helper) return;\n\t\tconst instanceState = getInstanceState(helper);\n\t\tif (!instanceState) return;\n\t\treturn instanceState.parent() as unknown as THREE.Object3D;\n\t});\n\n\thelper = injectHelper(this.parent, this.type, { args: this.options });\n\n\tconstructor() {\n\t\textend({ Object3D });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, is, NgtArgs, NgtAttachable } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry } from 'three';\n\nexport interface NgtsPrismGeometryOptions extends Omit<THREE.ExtrudeGeometryOptions, 'depth'> {\n\t/** Height */\n\theight: number;\n}\n\nconst defaultOptions: NgtsPrismGeometryOptions = {\n\theight: 1,\n\tbevelEnabled: false,\n};\n\n@Component({\n\tselector: 'ngts-prism-geometry',\n\ttemplate: `\n\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), parameters()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-extrude-geometry>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPrismGeometry {\n\tattach = input<NgtAttachable>('geometry');\n\tvertices = input.required<Array<THREE.Vector2 | [number, number]>>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = computed(() => ({ ...this.options(), depth: this.options().height }));\n\tprotected shape = computed(() => {\n\t\tconst vertices = this.vertices();\n\t\tconst interpolatedVertices = vertices.map((v) =>\n\t\t\tis.three<THREE.Vector2>(v, 'isVector2') ? v : new THREE.Vector2(...v),\n\t\t);\n\t\treturn new THREE.Shape(interpolatedVertices);\n\t});\n\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, input, viewChild } from '@angular/core';\nimport { is, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { NgtsLine, NgtsLineOptions } from './line';\n\nexport interface NgtsQuadraticBezierLineOptions extends Omit<NgtsLineOptions, 'segments'> {\n\tsegments?: number;\n}\n\nconst defaultOptions: NgtsQuadraticBezierLineOptions = {\n\tlineWidth: 1,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-quadratic-bezier-line',\n\ttemplate: `\n\t\t<ngts-line [points]=\"points()\" [options]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngts-line>\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine],\n})\nexport class NgtsQuadraticBezierLine {\n\tstart = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\tend = input<THREE.Vector3 | [number, number, number]>([0, 0, 0]);\n\tmid = input<THREE.Vector3 | [number, number, number]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['segments']);\n\n\tprivate segments = pick(this.options, 'segments');\n\n\tline = viewChild.required(NgtsLine);\n\n\tprotected points = computed(() => this.getPoints(this.start(), this.end(), this.mid(), this.segments()));\n\n\tprivate curve = new THREE.QuadraticBezierCurve3();\n\n\tsetPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t) {\n\t\tconst points = this.getPoints(start, end, mid);\n\t\tconst geometry = this.line().lineGeometry();\n\t\tif (geometry) geometry.setPositions(points.map((p) => p.toArray()).flat());\n\t}\n\n\tprivate getPoints(\n\t\tstart: THREE.Vector3 | [number, number, number],\n\t\tend: THREE.Vector3 | [number, number, number],\n\t\tmid?: THREE.Vector3 | [number, number, number],\n\t\tsegments = 20,\n\t) {\n\t\tif (is.three<THREE.Vector3>(start, 'isVector3')) this.curve.v0.copy(start);\n\t\telse this.curve.v0.set(...(start as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(end, 'isVector3')) this.curve.v2.copy(end);\n\t\telse this.curve.v2.set(...(end as [number, number, number]));\n\t\tif (is.three<THREE.Vector3>(mid, 'isVector3')) {\n\t\t\tthis.curve.v1.copy(mid);\n\t\t} else if (Array.isArray(mid)) {\n\t\t\tthis.curve.v1.set(...(mid as [number, number, number]));\n\t\t} else {\n\t\t\tthis.curve.v1.copy(\n\t\t\t\tthis.curve.v0\n\t\t\t\t\t.clone()\n\t\t\t\t\t.add(this.curve.v2.clone().sub(this.curve.v0))\n\t\t\t\t\t.add(new THREE.Vector3(0, this.curve.v0.y - this.curve.v2.y, 0)),\n\t\t\t);\n\t\t}\n\t\treturn this.curve.getPoints(segments);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtObjectEvents, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { ExtrudeGeometry, Mesh } from 'three';\nimport { toCreasedNormals } from 'three-stdlib';\n\nconst eps = 0.00001;\n\nfunction createShape(width: number, height: number, radius0: number) {\n\tconst shape = new THREE.Shape();\n\tconst radius = radius0 - eps;\n\tshape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);\n\tshape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);\n\tshape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);\n\tshape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);\n\treturn shape;\n}\n\nexport interface NgtsRoundedBoxOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tradius: number;\n\tsmoothness: number;\n\tbevelSegments: number;\n\tsteps: number;\n\tcreaseAngle: number;\n}\n\nconst defaultOptions: NgtsRoundedBoxOptions = {\n\twidth: 1,\n\theight: 1,\n\tdepth: 1,\n\tradius: 0.05,\n\tsmoothness: 4,\n\tbevelSegments: 4,\n\tcreaseAngle: 0.4,\n\tsteps: 1,\n};\n\n@Component({\n\tselector: 'ngts-rounded-box',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-extrude-geometry #geometry *args=\"[shape(), geometryParameters()]\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsRoundedBox {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'width',\n\t\t'height',\n\t\t'depth',\n\t\t'radius',\n\t\t'smoothness',\n\t\t'bevelSegments',\n\t\t'steps',\n\t\t'creaseAngle',\n\t]);\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate depth = pick(this.options, 'depth');\n\tprivate radius = pick(this.options, 'radius');\n\tprivate smoothness = pick(this.options, 'smoothness');\n\tprivate bevelSegments = pick(this.options, 'bevelSegments');\n\tprivate steps = pick(this.options, 'steps');\n\tprivate creaseAngle = pick(this.options, 'creaseAngle');\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tgeometryRef = viewChild<ElementRef<THREE.ExtrudeGeometry>>('geometry');\n\n\tprotected shape = computed(() => {\n\t\tconst [width, height, radius] = [this.width(), this.height(), this.radius()];\n\t\treturn createShape(width, height, radius);\n\t});\n\tprotected geometryParameters = computed(() => {\n\t\tconst [depth, radius, smoothness, bevelSegments, steps] = [\n\t\t\tthis.depth(),\n\t\t\tthis.radius(),\n\t\t\tthis.smoothness(),\n\t\t\tuntracked(this.bevelSegments),\n\t\t\tuntracked(this.steps),\n\t\t];\n\n\t\treturn {\n\t\t\tdepth: depth - radius * 2,\n\t\t\tbevelEnabled: true,\n\t\t\tbevelSegments: bevelSegments * 2,\n\t\t\tsteps,\n\t\t\tbevelSize: radius - eps,\n\t\t\tbevelThickness: radius,\n\t\t\tcurveSegments: smoothness,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ ExtrudeGeometry, Mesh });\n\n\t\tconst objectEvents = inject(NgtObjectEvents, { host: true });\n\t\tobjectEvents.ngtObjectEvents.set(this.meshRef);\n\n\t\teffect(() => {\n\t\t\tconst geometry = this.geometryRef()?.nativeElement;\n\t\t\tif (!geometry) return;\n\n\t\t\tgeometry.center();\n\t\t\ttoCreasedNormals(geometry, untracked(this.creaseAngle));\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtObjectEvents, NgtThreeElements, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n// @ts-expect-error - no type def\nimport { Text, preloadFont } from 'troika-three-text';\n\nexport interface NgtsTextOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\tcharacters?: string;\n\tcolor?: THREE.ColorRepresentation;\n\t/** Font size, default: 1 */\n\tfontSize: number;\n\tfontWeight?: number | string;\n\tfontStyle?: 'italic' | 'normal';\n\tmaxWidth?: number;\n\tlineHeight?: number;\n\tletterSpacing?: number;\n\ttextAlign?: 'left' | 'right' | 'center' | 'justify';\n\tfont?: string;\n\tanchorX: number | 'left' | 'center' | 'right';\n\tanchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom';\n\tclipRect?: [number, number, number, number];\n\tdepthOffset?: number;\n\tdirection?: 'auto' | 'ltr' | 'rtl';\n\toverflowWrap?: 'normal' | 'break-word';\n\twhiteSpace?: 'normal' | 'overflowWrap' | 'nowrap';\n\toutlineWidth?: number | string;\n\toutlineOffsetX?: number | string;\n\toutlineOffsetY?: number | string;\n\toutlineBlur?: number | string;\n\toutlineColor?: THREE.ColorRepresentation;\n\toutlineOpacity?: number;\n\tstrokeWidth?: number | string;\n\tstrokeColor?: THREE.ColorRepresentation;\n\tstrokeOpacity?: number;\n\tfillOpacity?: number;\n\tsdfGlyphSize: number;\n\tdebugSDF?: boolean;\n\tglyphGeometryDetail?: number;\n}\n\nconst defaultOptions: NgtsTextOptions = {\n\tsdfGlyphSize: 64,\n\tanchorX: 'center',\n\tanchorY: 'middle',\n\tfontSize: 1,\n};\n\n@Component({\n\tselector: 'ngts-text',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t#textPrimitive\n\t\t\t*args=\"[troikaMesh]\"\n\t\t\t[text]=\"text()\"\n\t\t\t[font]=\"font()\"\n\t\t\t[anchorX]=\"anchorX()\"\n\t\t\t[anchorY]=\"anchorY()\"\n\t\t\t[sdfGlyphSize]=\"sdfGlyphSize()\"\n\t\t\t[fontSize]=\"fontSize()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: NgtObjectEvents,\n\t\t\toutputs: [\n\t\t\t\t'click',\n\t\t\t\t'dblclick',\n\t\t\t\t'contextmenu',\n\t\t\t\t'pointerup',\n\t\t\t\t'pointerdown',\n\t\t\t\t'pointerover',\n\t\t\t\t'pointerout',\n\t\t\t\t'pointerenter',\n\t\t\t\t'pointerleave',\n\t\t\t\t'pointermove',\n\t\t\t\t'pointermissed',\n\t\t\t\t'pointercancel',\n\t\t\t\t'wheel',\n\t\t\t],\n\t\t},\n\t],\n})\nexport class NgtsText {\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['font', 'fontSize', 'sdfGlyphSize', 'anchorX', 'anchorY', 'characters']);\n\n\tsynced = output<Text>();\n\n\tprivate objectEvents = inject(NgtObjectEvents, { host: true });\n\tprivate store = injectStore();\n\n\tprivate characters = pick(this.options, 'characters');\n\n\tprotected font = pick(this.options, 'font');\n\tprotected anchorX = pick(this.options, 'anchorX');\n\tprotected anchorY = pick(this.options, 'anchorY');\n\tprotected sdfGlyphSize = pick(this.options, 'sdfGlyphSize');\n\tprotected fontSize = pick(this.options, 'fontSize');\n\n\ttroikaMesh = new Text();\n\n\t// TODO: (chau) we currently need to use this with NgtObjectEvents\n\t// to make sure `ngt-primitive` is instantitated before `injectObjectEvents`\n\tprivate textPrimitiveRef = viewChild<ElementRef<Text>>('textPrimitive');\n\tprivate textPrimitive = computed(() => this.textPrimitiveRef()?.nativeElement);\n\n\tconstructor() {\n\t\tthis.objectEvents.ngtObjectEvents.set(this.textPrimitive);\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.troikaMesh.dispose();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [font, characters, invalidate] = [this.font(), this.characters(), this.store.invalidate()];\n\t\t\tif (font) {\n\t\t\t\tpreloadFont({ font, characters }, () => invalidate());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [invalidate] = [this.store.invalidate(), this.text(), this.options()];\n\t\t\tthis.troikaMesh.sync(() => {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.synced.emit(this.troikaMesh);\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtThreeElement, NgtThreeElements, omit, pick } from 'angular-three';\nimport { injectFont, NgtsFontInput } from 'angular-three-soba/loaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { mergeVertices, TextGeometry, TextGeometryParameters } from 'three-stdlib';\n\nexport interface NgtsText3DOptions extends Omit<TextGeometryParameters, 'font'> {\n\tbevelSegments: number;\n\tsmooth?: number;\n}\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-mesh']> & NgtsText3DOptions = {\n\tletterSpacing: 0,\n\tlineHeight: 1,\n\tsize: 1,\n\theight: 0.2,\n\tbevelThickness: 0.1,\n\tbevelSize: 0.01,\n\tbevelEnabled: false,\n\tbevelOffset: 0,\n\tbevelSegments: 4,\n\tcurveSegments: 8,\n};\n\n@Component({\n\tselector: 'ngts-text-3d,ngts-text-3D',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [parameters]=\"parameters()\">\n\t\t\t<ngt-text-geometry #textGeometry *args=\"textArgs()\" />\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsText3D {\n\tfont = input.required<NgtsFontInput>();\n\ttext = input.required<string>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t\t'smooth',\n\t]);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tprivate textGeometryRef = viewChild<ElementRef<TextGeometry>>('textGeometry');\n\n\tprivate loadedFont = injectFont(this.font);\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate textOptions = pick(this.options, [\n\t\t'letterSpacing',\n\t\t'lineHeight',\n\t\t'size',\n\t\t'height',\n\t\t'bevelThickness',\n\t\t'bevelSize',\n\t\t'bevelEnabled',\n\t\t'bevelOffset',\n\t\t'bevelSegments',\n\t\t'curveSegments',\n\t]);\n\n\tprotected textArgs = computed(() => {\n\t\tconst font = this.loadedFont();\n\t\tif (!font) return null;\n\n\t\tconst [text, textOptions] = [this.text(), this.textOptions()];\n\t\treturn [text, { font, ...textOptions }];\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh, TextGeometry });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, textGeometry, textArgs] = [\n\t\t\t\tthis.meshRef()?.nativeElement,\n\t\t\t\tthis.textGeometryRef()?.nativeElement,\n\t\t\t\tthis.textArgs(),\n\t\t\t];\n\t\t\tif (!textArgs || !textGeometry || !mesh) return;\n\n\t\t\tconst smooth = this.smooth();\n\t\t\tif (smooth) {\n\t\t\t\tmesh.geometry = mergeVertices(textGeometry, smooth);\n\t\t\t\tmesh.geometry.computeVertexNormals();\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport type NgtTextGeometry = NgtThreeElement<typeof TextGeometry>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-extrude-geometry\n\t\t * @rawOptions bevelEnabled|bevelOffset|bevelSize|bevelThickness|curveSegments|font|height|size|lineHeight|letterSpacing\n\t\t */\n\t\t'ngt-text-geometry': NgtTextGeometry;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-soba",
|
|
3
|
-
"version": "4.0.0-next.
|
|
3
|
+
"version": "4.0.0-next.83",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -31,34 +31,34 @@
|
|
|
31
31
|
"types": "./index.d.ts",
|
|
32
32
|
"default": "./fesm2022/angular-three-soba.mjs"
|
|
33
33
|
},
|
|
34
|
-
"./abstractions": {
|
|
35
|
-
"types": "./abstractions/index.d.ts",
|
|
36
|
-
"default": "./fesm2022/angular-three-soba-abstractions.mjs"
|
|
37
|
-
},
|
|
38
|
-
"./cameras": {
|
|
39
|
-
"types": "./cameras/index.d.ts",
|
|
40
|
-
"default": "./fesm2022/angular-three-soba-cameras.mjs"
|
|
41
|
-
},
|
|
42
34
|
"./gizmos": {
|
|
43
35
|
"types": "./gizmos/index.d.ts",
|
|
44
36
|
"default": "./fesm2022/angular-three-soba-gizmos.mjs"
|
|
45
37
|
},
|
|
38
|
+
"./abstractions": {
|
|
39
|
+
"types": "./abstractions/index.d.ts",
|
|
40
|
+
"default": "./fesm2022/angular-three-soba-abstractions.mjs"
|
|
41
|
+
},
|
|
46
42
|
"./controls": {
|
|
47
43
|
"types": "./controls/index.d.ts",
|
|
48
44
|
"default": "./fesm2022/angular-three-soba-controls.mjs"
|
|
49
45
|
},
|
|
50
|
-
"./misc": {
|
|
51
|
-
"types": "./misc/index.d.ts",
|
|
52
|
-
"default": "./fesm2022/angular-three-soba-misc.mjs"
|
|
53
|
-
},
|
|
54
46
|
"./loaders": {
|
|
55
47
|
"types": "./loaders/index.d.ts",
|
|
56
48
|
"default": "./fesm2022/angular-three-soba-loaders.mjs"
|
|
57
49
|
},
|
|
50
|
+
"./cameras": {
|
|
51
|
+
"types": "./cameras/index.d.ts",
|
|
52
|
+
"default": "./fesm2022/angular-three-soba-cameras.mjs"
|
|
53
|
+
},
|
|
58
54
|
"./materials": {
|
|
59
55
|
"types": "./materials/index.d.ts",
|
|
60
56
|
"default": "./fesm2022/angular-three-soba-materials.mjs"
|
|
61
57
|
},
|
|
58
|
+
"./misc": {
|
|
59
|
+
"types": "./misc/index.d.ts",
|
|
60
|
+
"default": "./fesm2022/angular-three-soba-misc.mjs"
|
|
61
|
+
},
|
|
62
62
|
"./performances": {
|
|
63
63
|
"types": "./performances/index.d.ts",
|
|
64
64
|
"default": "./fesm2022/angular-three-soba-performances.mjs"
|