angular-three-soba 4.0.0-next.9 → 4.0.0-next.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/abstractions/README.md +1 -1
  2. package/abstractions/lib/catmull-rom-line.d.ts +16 -15
  3. package/abstractions/lib/edges.d.ts +17 -15
  4. package/abstractions/lib/text-3d.d.ts +1 -1
  5. package/abstractions/lib/text.d.ts +5 -1
  6. package/cameras/lib/camera-content.d.ts +1 -2
  7. package/cameras/lib/cube-camera.d.ts +2 -2
  8. package/cameras/lib/orthographic-camera.d.ts +6 -5
  9. package/cameras/lib/perspective-camera.d.ts +2 -5
  10. package/controls/README.md +28 -28
  11. package/controls/index.d.ts +1 -0
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +11 -6
  14. package/controls/lib/trackball-controls.d.ts +27 -0
  15. package/fesm2022/angular-three-soba-abstractions.mjs +87 -47
  16. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  17. package/fesm2022/angular-three-soba-cameras.mjs +61 -37
  18. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  19. package/fesm2022/angular-three-soba-controls.mjs +128 -36
  20. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  21. package/fesm2022/angular-three-soba-gizmos.mjs +124 -86
  22. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  23. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  24. package/fesm2022/angular-three-soba-materials.mjs +82 -86
  25. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  26. package/fesm2022/angular-three-soba-misc.mjs +55 -48
  27. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  28. package/fesm2022/angular-three-soba-performances.mjs +152 -35
  29. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  30. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  31. package/fesm2022/angular-three-soba-staging.mjs +183 -144
  32. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  33. package/fesm2022/angular-three-soba-stats.mjs +3 -3
  34. package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +4 -3
  35. package/loaders/README.md +39 -39
  36. package/materials/lib/mesh-transmission-material.d.ts +4 -4
  37. package/misc/README.md +16 -16
  38. package/misc/lib/deprecated.d.ts +0 -6
  39. package/misc/lib/depth-buffer.d.ts +1 -1
  40. package/misc/lib/fbo.d.ts +1 -3
  41. package/misc/lib/html/html-content.d.ts +2 -2
  42. package/misc/lib/html/html.d.ts +4 -4
  43. package/package.json +6 -6
  44. package/performances/index.d.ts +1 -0
  45. package/performances/lib/adaptive-dpr.d.ts +1 -1
  46. package/performances/lib/bvh.d.ts +49 -0
  47. package/shaders/lib/mesh-refraction-material.d.ts +2 -2
  48. package/staging/lib/caustics.d.ts +3 -3
  49. package/staging/lib/environment/inject-environment.d.ts +1 -2
  50. package/staging/lib/render-texture.d.ts +5 -4
  51. package/staging/lib/stage.d.ts +12 -11
@@ -1,13 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, viewChild, computed, effect, inject, DestroyRef, untracked, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, signal, Directive, output, Injector, contentChild, TemplateRef, numberAttribute, ViewContainerRef } from '@angular/core';
3
- import { omit, injectStore, pick, extend, getInstanceState, injectBeforeRender, checkUpdate, NgtArgs, vector3, is, resolveRef, injectLoader, applyProps, NgtPortal, NgtPortalContent } from 'angular-three';
3
+ import * as i1 from 'angular-three';
4
+ import { omit, injectStore, pick, extend, getInstanceState, injectBeforeRender, checkUpdate, NgtArgs, vector3, is, resolveRef, injectLoader, applyProps, NgtPortal } from 'angular-three';
4
5
  import { ProgressiveLightMap, SoftShadowMaterial, CausticsProjectionMaterial, createCausticsUpdate, SpotLightMaterial } from 'angular-three-soba/vanilla-exports';
5
6
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
7
  import * as THREE from 'three';
7
8
  import { Group, Mesh, PlaneGeometry, Scene, LineBasicMaterial, OrthographicCamera, MeshBasicMaterial, CubeCamera, RingGeometry, DirectionalLight, Vector2, RepeatWrapping, SpotLight, AmbientLight, PointLight } from 'three';
8
9
  import { SimplexNoise, HorizontalBlurShader, VerticalBlurShader, RGBELoader, EXRLoader, GroundProjectedEnv, Sky, FullScreenQuad } from 'three-stdlib';
9
10
  import { injectHelper, NgtsEdges, NgtsHelper } from 'angular-three-soba/abstractions';
10
- import { injectFBO, sRGBEncoding, LinearEncoding, getVersion } from 'angular-three-soba/misc';
11
+ import { injectFBO, getVersion } from 'angular-three-soba/misc';
11
12
  import { NgTemplateOutlet } from '@angular/common';
12
13
  import { HDRJPGLoader, GainMapLoader } from '@monogrid/gainmap-js';
13
14
  import { assertInjector } from 'ngxtension/assert-injector';
@@ -71,7 +72,7 @@ class NgtsAccumulativeShadows {
71
72
  effect(() => {
72
73
  this.pLM().configure(this.planeRef().nativeElement);
73
74
  });
74
- effect(() => {
75
+ effect((onCleanup) => {
75
76
  const sceneInstanceState = getInstanceState(this.store.scene());
76
77
  if (!sceneInstanceState)
77
78
  return;
@@ -82,8 +83,17 @@ class NgtsAccumulativeShadows {
82
83
  // Reset internals, buffers, ...
83
84
  this.reset();
84
85
  // Update lightmap
85
- if (!this.temporal() && this.frames() !== Infinity)
86
- this.update(this.blend());
86
+ // TODO: (chau) this is a hack. not sure why a timeout is needed here. if not PLM.update
87
+ // is erroring out on some scenes.
88
+ let timeout;
89
+ if (!this.temporal() && this.frames() !== Infinity) {
90
+ const blend = this.blend();
91
+ timeout = setTimeout(() => this.update(blend));
92
+ }
93
+ onCleanup(() => {
94
+ if (timeout)
95
+ clearTimeout(timeout);
96
+ });
87
97
  });
88
98
  injectBeforeRender(() => {
89
99
  const [frames, temporal, invalidate, limit] = [
@@ -131,21 +141,21 @@ class NgtsAccumulativeShadows {
131
141
  // Update the lightmap and the accumulative lights
132
142
  for (let i = 0; i < frames; i++) {
133
143
  this.lightsMap.forEach((lightUpdate) => lightUpdate());
134
- this.pLM().update(this.store.camera(), this.blend());
144
+ this.pLM().update(this.store.snapshot.camera, this.blend());
135
145
  }
136
146
  // Switch lights off
137
147
  this.lightsRef().nativeElement.visible = false;
138
148
  // Restore lights and meshes
139
149
  this.pLM().finish();
140
150
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsAccumulativeShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lightsRef", first: true, predicate: ["lights"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsAccumulativeShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lightsRef", first: true, predicate: ["lights"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
143
153
  <ngt-group [parameters]="parameters()">
144
154
  <ngt-group #lights [traverse]="nullTraversal">
145
155
  <ng-content />
146
156
  </ngt-group>
147
157
 
148
- <ngt-mesh #plane [scale]="scale()" [rotation]="[-Math.PI / 2, 0, 0]" [receiveShadow]="true">
158
+ <ngt-mesh #plane [scale]="scale()" [rotation]="[-Math.PI / 2, 0, 0]" receiveShadow>
149
159
  <ngt-plane-geometry />
150
160
  <ngt-soft-shadow-material
151
161
  [depthWrite]="false"
@@ -153,13 +163,13 @@ class NgtsAccumulativeShadows {
153
163
  [color]="color()"
154
164
  [blend]="colorBlend()"
155
165
  [map]="map()"
156
- [transparent]="true"
166
+ transparent
157
167
  />
158
168
  </ngt-mesh>
159
169
  </ngt-group>
160
170
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
171
  }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
163
173
  type: Component,
164
174
  args: [{
165
175
  selector: 'ngts-accumulative-shadows',
@@ -169,7 +179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
169
179
  <ng-content />
170
180
  </ngt-group>
171
181
 
172
- <ngt-mesh #plane [scale]="scale()" [rotation]="[-Math.PI / 2, 0, 0]" [receiveShadow]="true">
182
+ <ngt-mesh #plane [scale]="scale()" [rotation]="[-Math.PI / 2, 0, 0]" receiveShadow>
173
183
  <ngt-plane-geometry />
174
184
  <ngt-soft-shadow-material
175
185
  [depthWrite]="false"
@@ -177,7 +187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
177
187
  [color]="color()"
178
188
  [blend]="colorBlend()"
179
189
  [map]="map()"
180
- [transparent]="true"
190
+ transparent
181
191
  />
182
192
  </ngt-mesh>
183
193
  </ngt-group>
@@ -222,8 +232,8 @@ class NgtsBackdrop {
222
232
  plane.computeVertexNormals();
223
233
  });
224
234
  }
225
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsBackdrop, isStandalone: true, selector: "ngts-backdrop", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsBackdrop, isStandalone: true, selector: "ngts-backdrop", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
227
237
  <ngt-group #group [parameters]="parameters()">
228
238
  <ngt-mesh [receiveShadow]="receiveShadow()" [rotation]="[-Math.PI / 2, 0, Math.PI / 2]">
229
239
  <ngt-plane-geometry #plane *args="[1, 1, segments(), segments()]" />
@@ -232,7 +242,7 @@ class NgtsBackdrop {
232
242
  </ngt-group>
233
243
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
234
244
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsBackdrop, decorators: [{
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsBackdrop, decorators: [{
236
246
  type: Component,
237
247
  args: [{
238
248
  selector: 'ngts-backdrop',
@@ -282,14 +292,14 @@ class NgtsBBAnchor {
282
292
  }
283
293
  });
284
294
  }
285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsBBAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
286
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsBBAnchor, isStandalone: true, selector: "ngts-bb-anchor", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "bbAnchorRef", first: true, predicate: ["bbAnchor"], descendants: true, isSignal: true }], ngImport: i0, template: `
295
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsBBAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
296
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsBBAnchor, isStandalone: true, selector: "ngts-bb-anchor", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "bbAnchorRef", first: true, predicate: ["bbAnchor"], descendants: true, isSignal: true }], ngImport: i0, template: `
287
297
  <ngt-group #bbAnchor [parameters]="parameters()">
288
298
  <ng-content />
289
299
  </ngt-group>
290
300
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
291
301
  }
292
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsBBAnchor, decorators: [{
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsBBAnchor, decorators: [{
293
303
  type: Component,
294
304
  args: [{
295
305
  selector: 'ngts-bb-anchor',
@@ -326,10 +336,6 @@ class NgtsBounds {
326
336
  this.options = input(defaultOptions$c, { transform: mergeInputs(defaultOptions$c) });
327
337
  this.groupRef = viewChild.required('group');
328
338
  this.store = injectStore();
329
- // private camera = this.store.select('camera');
330
- // private invalidate = this.store.select('invalidate');
331
- // private size = this.store.select('size');
332
- // private controls = this.store.select('controls') as unknown as Signal<ControlsProto>;
333
339
  this.clipOption = pick(this.options, 'clip');
334
340
  this.fitOption = pick(this.options, 'fit');
335
341
  this.observe = pick(this.options, 'observe');
@@ -376,7 +382,6 @@ class NgtsBounds {
376
382
  this.observe(),
377
383
  this.store.size(),
378
384
  this.store.camera(),
379
- // TODO: (chau) for some reason, if this effect tracks controls changes, the initial bounds doesn't target properly
380
385
  this.store.controls(),
381
386
  ];
382
387
  if (observe || count++ === 0) {
@@ -560,14 +565,14 @@ class NgtsBounds {
560
565
  invalidate();
561
566
  return this;
562
567
  }
563
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsBounds, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
564
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
568
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsBounds, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
569
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
565
570
  <ngt-group #group>
566
571
  <ng-content />
567
572
  </ngt-group>
568
573
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
569
574
  }
570
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsBounds, decorators: [{
575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsBounds, decorators: [{
571
576
  type: Component,
572
577
  args: [{
573
578
  selector: 'ngts-bounds',
@@ -617,10 +622,7 @@ class NgtsCameraShake {
617
622
  onCleanup(() => void defaultControls.removeEventListener('change', callback));
618
623
  });
619
624
  injectBeforeRender(({ delta, clock }) => {
620
- const [{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate }, camera] = [
621
- this.options(),
622
- this.store.snapshot.camera,
623
- ];
625
+ const [{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate }, camera,] = [this.options(), this.store.snapshot.camera];
624
626
  const shake = Math.pow(this.intensity, 2);
625
627
  const yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);
626
628
  const pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);
@@ -631,10 +633,10 @@ class NgtsCameraShake {
631
633
  }
632
634
  });
633
635
  }
634
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
635
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
636
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
637
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
636
638
  }
637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCameraShake, decorators: [{
639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCameraShake, decorators: [{
638
640
  type: Directive,
639
641
  args: [{ selector: 'ngts-camera-shake' }]
640
642
  }], ctorParameters: () => [] });
@@ -707,7 +709,15 @@ class NgtsCaustics {
707
709
  this.causticsTarget = injectFBO(this.causticsTargetParams);
708
710
  this.causticsTargetB = injectFBO(this.causticsTargetParams);
709
711
  this.cameraHelper = injectHelper(() => (this.debug() ? this.cameraRef().nativeElement : null), () => THREE.CameraHelper);
710
- extend({ CausticsProjectionMaterial, Group, Scene, Mesh, PlaneGeometry, LineBasicMaterial, OrthographicCamera });
712
+ extend({
713
+ CausticsProjectionMaterial,
714
+ Group,
715
+ Scene,
716
+ Mesh,
717
+ PlaneGeometry,
718
+ LineBasicMaterial,
719
+ OrthographicCamera,
720
+ });
711
721
  effect(() => {
712
722
  // track all changes
713
723
  const [group, scene, plane] = [
@@ -731,12 +741,14 @@ class NgtsCaustics {
731
741
  const { lightSource, ...rest } = this.options();
732
742
  return {
733
743
  params: Object.assign(rest, {
734
- lightSource: Array.isArray(lightSource) ? new THREE.Vector3(...lightSource) : resolveRef(lightSource),
744
+ lightSource: Array.isArray(lightSource)
745
+ ? new THREE.Vector3(...lightSource)
746
+ : resolveRef(lightSource),
735
747
  }),
736
- normalTarget: this.normalTarget(),
737
- normalTargetB: this.normalTargetB(),
738
- causticsTarget: this.causticsTarget(),
739
- causticsTargetB: this.causticsTargetB(),
748
+ normalTarget: this.normalTarget,
749
+ normalTargetB: this.normalTargetB,
750
+ causticsTarget: this.causticsTarget,
751
+ causticsTargetB: this.causticsTargetB,
740
752
  camera: this.cameraRef().nativeElement,
741
753
  scene: this.sceneRef().nativeElement,
742
754
  group: this.groupRef().nativeElement,
@@ -746,8 +758,8 @@ class NgtsCaustics {
746
758
  });
747
759
  injectBeforeRender(({ gl }) => update(gl));
748
760
  }
749
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCaustics, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
750
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsCaustics, isStandalone: true, selector: "ngts-caustics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "sceneRef", first: true, predicate: ["scene"], descendants: true, isSignal: true }, { propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
761
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCaustics, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
762
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsCaustics, isStandalone: true, selector: "ngts-caustics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "sceneRef", first: true, predicate: ["scene"], descendants: true, isSignal: true }, { propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
751
763
  <ngt-group #group [parameters]="parameters()">
752
764
  <ngt-scene #scene>
753
765
  <ngt-orthographic-camera #camera [up]="[0, 1, 0]" />
@@ -759,8 +771,8 @@ class NgtsCaustics {
759
771
  <ngt-caustics-projection-material
760
772
  transparent
761
773
  [color]="color()"
762
- [causticsTexture]="causticsTarget().texture"
763
- [causticsTextureB]="causticsTargetB().texture"
774
+ [causticsTexture]="causticsTarget.texture"
775
+ [causticsTextureB]="causticsTargetB.texture"
764
776
  [blending]="CustomBlending"
765
777
  [blendSrc]="OneFactor"
766
778
  [blendDst]="SrcAlphaFactor"
@@ -776,7 +788,7 @@ class NgtsCaustics {
776
788
  </ngt-group>
777
789
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsEdges, selector: "ngts-edges", inputs: ["options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
778
790
  }
779
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCaustics, decorators: [{
791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCaustics, decorators: [{
780
792
  type: Component,
781
793
  args: [{
782
794
  selector: 'ngts-caustics',
@@ -792,8 +804,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
792
804
  <ngt-caustics-projection-material
793
805
  transparent
794
806
  [color]="color()"
795
- [causticsTexture]="causticsTarget().texture"
796
- [causticsTextureB]="causticsTargetB().texture"
807
+ [causticsTexture]="causticsTarget.texture"
808
+ [causticsTextureB]="causticsTargetB.texture"
797
809
  [blending]="CustomBlending"
798
810
  [blendSrc]="OneFactor"
799
811
  [blendDst]="SrcAlphaFactor"
@@ -862,7 +874,7 @@ class NgtsCenter {
862
874
  const children = [...innerInstanceState.objects(), ...innerInstanceState.nonObjects()];
863
875
  if (!children?.length)
864
876
  return;
865
- const [{ precise, top, bottom, right, left, front, back, disable, disableZ, disableY, disableX }, group, outer] = [this.centerOptions(), this.groupRef().nativeElement, this.outerRef().nativeElement];
877
+ const [{ precise, top, bottom, right, left, front, back, disable, disableZ, disableY, disableX }, group, outer,] = [this.centerOptions(), this.groupRef().nativeElement, this.outerRef().nativeElement];
866
878
  outer.matrixWorld.identity();
867
879
  const box3 = new THREE.Box3().setFromObject(inner, precise);
868
880
  const center = new THREE.Vector3();
@@ -891,8 +903,8 @@ class NgtsCenter {
891
903
  });
892
904
  });
893
905
  }
894
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCenter, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
895
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsCenter, isStandalone: true, selector: "ngts-center", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { centered: "centered" }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "outerRef", first: true, predicate: ["outer"], descendants: true, isSignal: true }, { propertyName: "innerRef", first: true, predicate: ["inner"], descendants: true, isSignal: true }], ngImport: i0, template: `
906
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCenter, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
907
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsCenter, isStandalone: true, selector: "ngts-center", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { centered: "centered" }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "outerRef", first: true, predicate: ["outer"], descendants: true, isSignal: true }, { propertyName: "innerRef", first: true, predicate: ["inner"], descendants: true, isSignal: true }], ngImport: i0, template: `
896
908
  <ngt-group #group [parameters]="parameters()">
897
909
  <ngt-group #outer>
898
910
  <ngt-group #inner>
@@ -902,7 +914,7 @@ class NgtsCenter {
902
914
  </ngt-group>
903
915
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
904
916
  }
905
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCenter, decorators: [{
917
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCenter, decorators: [{
906
918
  type: Component,
907
919
  args: [{
908
920
  selector: 'ngts-center',
@@ -1080,8 +1092,8 @@ class NgtsContactShadows {
1080
1092
  renderTarget.texture.generateMipmaps = false;
1081
1093
  return renderTarget;
1082
1094
  }
1083
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1084
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contactShadowsRef", first: true, predicate: ["contactShadows"], descendants: true, isSignal: true }, { propertyName: "shadowsCameraRef", first: true, predicate: ["shadowsCamera"], descendants: true, isSignal: true }], ngImport: i0, template: `
1095
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1096
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contactShadowsRef", first: true, predicate: ["contactShadows"], descendants: true, isSignal: true }, { propertyName: "shadowsCameraRef", first: true, predicate: ["shadowsCamera"], descendants: true, isSignal: true }], ngImport: i0, template: `
1085
1097
  <ngt-group #contactShadows [rotation]="[Math.PI / 2, 0, 0]" [parameters]="parameters()">
1086
1098
  <ngt-mesh
1087
1099
  [scale]="[1, -1, 1]"
@@ -1089,13 +1101,18 @@ class NgtsContactShadows {
1089
1101
  [renderOrder]="renderOrder() ?? 0"
1090
1102
  [geometry]="planeGeometry()"
1091
1103
  >
1092
- <ngt-mesh-basic-material transparent [opacity]="opacity()" [depthWrite]="depthWrite()" [map]="texture()" />
1104
+ <ngt-mesh-basic-material
1105
+ transparent
1106
+ [opacity]="opacity()"
1107
+ [depthWrite]="depthWrite()"
1108
+ [map]="texture()"
1109
+ />
1093
1110
  </ngt-mesh>
1094
1111
  <ngt-orthographic-camera *args="cameraArgs()" #shadowsCamera />
1095
1112
  </ngt-group>
1096
1113
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1097
1114
  }
1098
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsContactShadows, decorators: [{
1115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsContactShadows, decorators: [{
1099
1116
  type: Component,
1100
1117
  args: [{
1101
1118
  selector: 'ngts-contact-shadows',
@@ -1107,7 +1124,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
1107
1124
  [renderOrder]="renderOrder() ?? 0"
1108
1125
  [geometry]="planeGeometry()"
1109
1126
  >
1110
- <ngt-mesh-basic-material transparent [opacity]="opacity()" [depthWrite]="depthWrite()" [map]="texture()" />
1127
+ <ngt-mesh-basic-material
1128
+ transparent
1129
+ [opacity]="opacity()"
1130
+ [depthWrite]="depthWrite()"
1131
+ [map]="texture()"
1132
+ />
1111
1133
  </ngt-mesh>
1112
1134
  <ngt-orthographic-camera *args="cameraArgs()" #shadowsCamera />
1113
1135
  </ngt-group>
@@ -1135,7 +1157,7 @@ const defaultFiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/n
1135
1157
  function injectEnvironment(options = () => ({}), { injector } = {}) {
1136
1158
  return assertInjector(injectEnvironment, injector, () => {
1137
1159
  const adjustedOptions = computed(() => {
1138
- const { preset, extensions, encoding, ...rest } = options();
1160
+ const { preset, extensions, colorSpace, ...rest } = options();
1139
1161
  let { files, path } = rest;
1140
1162
  if (files == null) {
1141
1163
  files = defaultFiles;
@@ -1148,7 +1170,7 @@ function injectEnvironment(options = () => ({}), { injector } = {}) {
1148
1170
  files = ENVIRONMENT_PRESETS[preset];
1149
1171
  path = CUBEMAP_ROOT;
1150
1172
  }
1151
- return { files, preset, encoding, path, extensions };
1173
+ return { files, preset, colorSpace, path, extensions };
1152
1174
  });
1153
1175
  const files = pick(adjustedOptions, 'files');
1154
1176
  const multiFile = computed(() => Array.isArray(files()));
@@ -1190,7 +1212,7 @@ function injectEnvironment(options = () => ({}), { injector } = {}) {
1190
1212
  return;
1191
1213
  const { extension, isCubeMap } = untracked(resultOptions);
1192
1214
  const _multiFile = untracked(multiFile);
1193
- const { encoding } = untracked(adjustedOptions);
1215
+ const { colorSpace } = untracked(adjustedOptions);
1194
1216
  // @ts-expect-error - ensure textureResult is a Texture or CubeTexture
1195
1217
  let textureResult = (_multiFile ? loaderResult[0] : loaderResult);
1196
1218
  // NOTE: racing condition, we can skip this
@@ -1205,10 +1227,7 @@ function injectEnvironment(options = () => ({}), { injector } = {}) {
1205
1227
  textureResult = textureResult.renderTarget?.texture;
1206
1228
  }
1207
1229
  textureResult.mapping = isCubeMap ? THREE.CubeReflectionMapping : THREE.EquirectangularReflectionMapping;
1208
- if ('colorSpace' in textureResult)
1209
- textureResult.colorSpace = encoding ?? (isCubeMap ? 'srgb' : 'srgb-linear');
1210
- else
1211
- textureResult.encoding = encoding ?? (isCubeMap ? sRGBEncoding : LinearEncoding);
1230
+ textureResult.colorSpace = colorSpace ?? (isCubeMap ? 'srgb' : 'srgb-linear');
1212
1231
  texture.set(textureResult);
1213
1232
  });
1214
1233
  return texture.asReadonly();
@@ -1358,10 +1377,10 @@ class NgtsEnvironmentMap {
1358
1377
  onCleanup(() => cleanup());
1359
1378
  });
1360
1379
  }
1361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentMap, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1362
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, ngImport: i0 }); }
1380
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentMap, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1381
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, ngImport: i0 }); }
1363
1382
  }
1364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
1383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
1365
1384
  type: Directive,
1366
1385
  args: [{ selector: 'ngts-environment-map' }]
1367
1386
  }], ctorParameters: () => [] });
@@ -1397,10 +1416,10 @@ class NgtsEnvironmentCube {
1397
1416
  _texture()?.dispose();
1398
1417
  });
1399
1418
  }
1400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentCube, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1401
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, ngImport: i0 }); }
1419
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentCube, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1420
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, ngImport: i0 }); }
1402
1421
  }
1403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
1422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
1404
1423
  type: Directive,
1405
1424
  args: [{ selector: 'ngts-environment-cube' }]
1406
1425
  }], ctorParameters: () => [] });
@@ -1494,8 +1513,8 @@ class NgtsEnvironmentPortal {
1494
1513
  this.envSet.emit();
1495
1514
  return cleanup;
1496
1515
  }
1497
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1498
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsEnvironmentPortal, isStandalone: true, selector: "ngts-environment-portal", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { envSet: "envSet" }, viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["cubeCamera"], descendants: true, isSignal: true }], ngImport: i0, template: `
1516
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1517
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsEnvironmentPortal, isStandalone: true, selector: "ngts-environment-portal", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { envSet: "envSet" }, viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["cubeCamera"], descendants: true, isSignal: true }], ngImport: i0, template: `
1499
1518
  <ngt-portal [container]="virtualScene">
1500
1519
  <ng-template portalContent let-injector="injector">
1501
1520
  <ng-container
@@ -1513,9 +1532,9 @@ class NgtsEnvironmentPortal {
1513
1532
  }
1514
1533
  </ng-template>
1515
1534
  </ngt-portal>
1516
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube", inputs: ["options"], outputs: ["envSet"] }, { kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map", inputs: ["options"], outputs: ["envSet"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[portalContent]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1535
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube", inputs: ["options"], outputs: ["envSet"] }, { kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map", inputs: ["options"], outputs: ["envSet"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: i1.NgtPortalImpl, selector: "ngt-portal", inputs: ["container", "state"] }, { kind: "directive", type: i1.NgtPortalContent, selector: "ng-template[portalContent]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1517
1536
  }
1518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
1537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
1519
1538
  type: Component,
1520
1539
  args: [{
1521
1540
  selector: 'ngts-environment-portal',
@@ -1538,7 +1557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
1538
1557
  </ng-template>
1539
1558
  </ngt-portal>
1540
1559
  `,
1541
- imports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtArgs, NgtPortal, NgtPortalContent, NgTemplateOutlet],
1560
+ imports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtArgs, NgtPortal, NgTemplateOutlet],
1542
1561
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1543
1562
  changeDetection: ChangeDetectionStrategy.OnPush,
1544
1563
  }]
@@ -1558,14 +1577,17 @@ class NgtsEnvironmentGround {
1558
1577
  return Object.assign(options, { map });
1559
1578
  });
1560
1579
  extend({ GroundProjectedEnv });
1580
+ inject(DestroyRef).onDestroy(() => {
1581
+ this.defaultTexture()?.dispose();
1582
+ });
1561
1583
  }
1562
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentGround, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1563
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, ngImport: i0, template: `
1584
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentGround, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1585
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.1", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, ngImport: i0, template: `
1564
1586
  <ngts-environment-map [options]="envMapOptions()" (envSet)="envSet.emit()" />
1565
1587
  <ngt-ground-projected-env *args="args()" [scale]="scale()" [height]="height()" [radius]="radius()" />
1566
1588
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map", inputs: ["options"], outputs: ["envSet"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1567
1589
  }
1568
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
1590
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
1569
1591
  type: Component,
1570
1592
  args: [{
1571
1593
  selector: 'ngts-environment-ground',
@@ -1584,8 +1606,8 @@ class NgtsEnvironment {
1584
1606
  this.content = contentChild(TemplateRef);
1585
1607
  this.envSet = output();
1586
1608
  }
1587
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1588
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsEnvironment, isStandalone: true, selector: "ngts-environment", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: `
1609
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1610
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsEnvironment, isStandalone: true, selector: "ngts-environment", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { envSet: "envSet" }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: `
1589
1611
  @let _options = options();
1590
1612
  @let _content = content();
1591
1613
 
@@ -1600,7 +1622,7 @@ class NgtsEnvironment {
1600
1622
  }
1601
1623
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube", inputs: ["options"], outputs: ["envSet"] }, { kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map", inputs: ["options"], outputs: ["envSet"] }, { kind: "component", type: NgtsEnvironmentPortal, selector: "ngts-environment-portal", inputs: ["options", "content"], outputs: ["envSet"] }, { kind: "component", type: NgtsEnvironmentGround, selector: "ngts-environment-ground", inputs: ["options"], outputs: ["envSet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1602
1624
  }
1603
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsEnvironment, decorators: [{
1625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsEnvironment, decorators: [{
1604
1626
  type: Component,
1605
1627
  args: [{
1606
1628
  selector: 'ngts-environment',
@@ -1647,13 +1669,15 @@ class NgtsFloat {
1647
1669
  extend({ Group });
1648
1670
  const offset = Math.random() * 10000;
1649
1671
  injectBeforeRender(({ clock, invalidate }) => {
1650
- const [{ enabled, speed, rotationIntensity, floatingRange, floatIntensity, autoInvalidate }] = [this.options()];
1672
+ const [{ enabled, speed, rotationIntensity, floatingRange, floatIntensity, autoInvalidate }] = [
1673
+ this.options(),
1674
+ ];
1651
1675
  if (!enabled || speed === 0)
1652
1676
  return;
1653
1677
  if (autoInvalidate)
1654
1678
  invalidate();
1655
1679
  const container = this.floatRef().nativeElement;
1656
- const offsetTime = offset + clock.getElapsedTime();
1680
+ const offsetTime = offset + clock.elapsedTime;
1657
1681
  container.rotation.x = (Math.cos((offsetTime / 4) * speed) / 8) * rotationIntensity;
1658
1682
  container.rotation.y = (Math.sin((offsetTime / 4) * speed) / 8) * rotationIntensity;
1659
1683
  container.rotation.z = (Math.sin((offsetTime / 4) * speed) / 20) * rotationIntensity;
@@ -1663,8 +1687,8 @@ class NgtsFloat {
1663
1687
  container.updateMatrix();
1664
1688
  });
1665
1689
  }
1666
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1667
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "floatRef", first: true, predicate: ["float"], descendants: true, isSignal: true }], ngImport: i0, template: `
1690
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1691
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "floatRef", first: true, predicate: ["float"], descendants: true, isSignal: true }], ngImport: i0, template: `
1668
1692
  <ngt-group [parameters]="parameters()">
1669
1693
  <ngt-group #float [matrixAutoUpdate]="false">
1670
1694
  <ng-content />
@@ -1672,7 +1696,7 @@ class NgtsFloat {
1672
1696
  </ngt-group>
1673
1697
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1674
1698
  }
1675
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsFloat, decorators: [{
1699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsFloat, decorators: [{
1676
1700
  type: Component,
1677
1701
  args: [{
1678
1702
  selector: 'ngts-float',
@@ -1729,8 +1753,8 @@ class NgtsLightformer {
1729
1753
  mesh.lookAt(target);
1730
1754
  });
1731
1755
  }
1732
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsLightformer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1733
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsLightformer, isStandalone: true, selector: "ngts-lightformer", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }, { propertyName: "defaultMaterialRef", first: true, predicate: ["defaultMaterial"], descendants: true, isSignal: true }], ngImport: i0, template: `
1756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsLightformer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1757
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsLightformer, isStandalone: true, selector: "ngts-lightformer", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }, { propertyName: "defaultMaterialRef", first: true, predicate: ["defaultMaterial"], descendants: true, isSignal: true }], ngImport: i0, template: `
1734
1758
  <ngt-mesh #mesh [scale]="fixedScale()" [parameters]="parameters()">
1735
1759
  <ng-content select="[data-lightformer-geometry]">
1736
1760
  @switch (form()) {
@@ -1753,7 +1777,7 @@ class NgtsLightformer {
1753
1777
  </ngt-mesh>
1754
1778
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1755
1779
  }
1756
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsLightformer, decorators: [{
1780
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsLightformer, decorators: [{
1757
1781
  type: Component,
1758
1782
  args: [{
1759
1783
  selector: 'ngts-lightformer',
@@ -1816,14 +1840,14 @@ class NgtsMask {
1816
1840
  Object.assign(mesh.material, spread);
1817
1841
  });
1818
1842
  }
1819
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMask, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1820
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsMask, isStandalone: true, selector: "ngts-mask", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
1843
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMask, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1844
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsMask, isStandalone: true, selector: "ngts-mask", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
1821
1845
  <ngt-mesh #mesh [renderOrder]="-id()" [parameters]="parameters()">
1822
1846
  <ng-content />
1823
1847
  </ngt-mesh>
1824
1848
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1825
1849
  }
1826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMask, decorators: [{
1850
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMask, decorators: [{
1827
1851
  type: Component,
1828
1852
  args: [{
1829
1853
  selector: 'ngts-mask',
@@ -1915,10 +1939,10 @@ class NgtsMatcapTexture {
1915
1939
  static ngTemplateContextGuard(_, ctx) {
1916
1940
  return true;
1917
1941
  }
1918
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMatcapTexture, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1919
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsMatcapTexture, isStandalone: true, selector: "ng-template[matcapTexture]", inputs: { matcapTexture: { classPropertyName: "matcapTexture", publicName: "matcapTexture", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { matcapTextureLoaded: "matcapTextureLoaded" }, ngImport: i0 }); }
1942
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMatcapTexture, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1943
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsMatcapTexture, isStandalone: true, selector: "ng-template[matcapTexture]", inputs: { matcapTexture: { classPropertyName: "matcapTexture", publicName: "matcapTexture", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { matcapTextureLoaded: "matcapTextureLoaded" }, ngImport: i0 }); }
1920
1944
  }
1921
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMatcapTexture, decorators: [{
1945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMatcapTexture, decorators: [{
1922
1946
  type: Directive,
1923
1947
  args: [{ selector: 'ng-template[matcapTexture]' }]
1924
1948
  }], ctorParameters: () => [] });
@@ -1987,10 +2011,10 @@ class NgtsNormalTexture {
1987
2011
  static ngTemplateContextGuard(_, ctx) {
1988
2012
  return true;
1989
2013
  }
1990
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsNormalTexture, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1991
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsNormalTexture, isStandalone: true, selector: "ng-template[normalTexture]", inputs: { normalTexture: { classPropertyName: "normalTexture", publicName: "normalTexture", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { normalTextureLoaded: "normalTextureLoaded" }, ngImport: i0 }); }
2014
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsNormalTexture, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2015
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsNormalTexture, isStandalone: true, selector: "ng-template[normalTexture]", inputs: { normalTexture: { classPropertyName: "normalTexture", publicName: "normalTexture", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { normalTextureLoaded: "normalTextureLoaded" }, ngImport: i0 }); }
1992
2016
  }
1993
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsNormalTexture, decorators: [{
2017
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsNormalTexture, decorators: [{
1994
2018
  type: Directive,
1995
2019
  args: [{ selector: 'ng-template[normalTexture]' }]
1996
2020
  }], ctorParameters: () => [] });
@@ -2060,8 +2084,8 @@ class NgtsRandomizedLights {
2060
2084
  }
2061
2085
  }
2062
2086
  }
2063
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRandomizedLights, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2064
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lightsRef", first: true, predicate: ["lights"], descendants: true, isSignal: true }], ngImport: i0, template: `
2087
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRandomizedLights, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2088
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lightsRef", first: true, predicate: ["lights"], descendants: true, isSignal: true }], ngImport: i0, template: `
2065
2089
  <ngt-group #lights [parameters]="parameters()">
2066
2090
  @for (i of count(); track $index) {
2067
2091
  <ngt-directional-light [castShadow]="castShadow()" [intensity]="intensity() / amount()">
@@ -2073,7 +2097,7 @@ class NgtsRandomizedLights {
2073
2097
  </ngt-group>
2074
2098
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2075
2099
  }
2076
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
2100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
2077
2101
  type: Component,
2078
2102
  args: [{
2079
2103
  selector: 'ngts-randomized-lights',
@@ -2133,10 +2157,10 @@ class NgtsRenderTextureContainer {
2133
2157
  });
2134
2158
  });
2135
2159
  }
2136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRenderTextureContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2137
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsRenderTextureContainer, isStandalone: true, selector: "[renderTextureContainer]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: true, transformFunction: null }, renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: true, transformFunction: null }, frames: { classPropertyName: "frames", publicName: "frames", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
2160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRenderTextureContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2161
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsRenderTextureContainer, isStandalone: true, selector: "[renderTextureContainer]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: true, transformFunction: null }, renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: true, transformFunction: null }, frames: { classPropertyName: "frames", publicName: "frames", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
2138
2162
  }
2139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRenderTextureContainer, decorators: [{
2163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRenderTextureContainer, decorators: [{
2140
2164
  type: Directive,
2141
2165
  args: [{ selector: '[renderTextureContainer]' }]
2142
2166
  }], ctorParameters: () => [] });
@@ -2153,15 +2177,15 @@ class NgtsRenderTextureContent {
2153
2177
  static ngTemplateContextGuard(_, ctx) {
2154
2178
  return true;
2155
2179
  }
2156
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRenderTextureContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2157
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: NgtsRenderTextureContent, isStandalone: true, selector: "ng-template[renderTextureContent]", ngImport: i0 }); }
2180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRenderTextureContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2181
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.1", type: NgtsRenderTextureContent, isStandalone: true, selector: "ng-template[renderTextureContent]", ngImport: i0 }); }
2158
2182
  }
2159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRenderTextureContent, decorators: [{
2183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRenderTextureContent, decorators: [{
2160
2184
  type: Directive,
2161
2185
  args: [{ selector: 'ng-template[renderTextureContent]' }]
2162
2186
  }] });
2163
2187
  let incrementId = 0;
2164
- class NgtsRenderTexture {
2188
+ class NgtsRenderTextureImpl {
2165
2189
  constructor() {
2166
2190
  this.attach = input('map');
2167
2191
  this.options = input(defaultOptions$3, { transform: mergeInputs(defaultOptions$3) });
@@ -2207,7 +2231,7 @@ class NgtsRenderTexture {
2207
2231
  this.eventPriority = pick(this.options, 'eventPriority');
2208
2232
  this.compute = computed(() => this.computeFn() || this.uvCompute);
2209
2233
  this.uvCompute = (event, root, previous) => {
2210
- const fbo = this.fbo();
2234
+ const fbo = this.fbo;
2211
2235
  if (!fbo)
2212
2236
  return;
2213
2237
  const state = root.snapshot;
@@ -2237,13 +2261,13 @@ class NgtsRenderTexture {
2237
2261
  };
2238
2262
  extend({ Group });
2239
2263
  }
2240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRenderTexture, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2241
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsRenderTexture, isStandalone: true, selector: "ngts-render-texture", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: NgtsRenderTextureContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
2264
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRenderTextureImpl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2265
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsRenderTextureImpl, isStandalone: true, selector: "ngts-render-texture", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: NgtsRenderTextureContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
2242
2266
  <ngt-portal [container]="virtualScene" [state]="{ events: { compute: compute(), priority: eventPriority() } }">
2243
2267
  <ng-template portalContent let-injector="injector">
2244
2268
  <ng-container
2245
2269
  renderTextureContainer
2246
- [fbo]="fbo()"
2270
+ [fbo]="fbo"
2247
2271
  [renderPriority]="renderPriority()"
2248
2272
  [frames]="frames()"
2249
2273
  [ngTemplateOutlet]="content()"
@@ -2255,10 +2279,10 @@ class NgtsRenderTexture {
2255
2279
  </ng-template>
2256
2280
  </ngt-portal>
2257
2281
 
2258
- <ngt-primitive *args="[fbo().texture]" [attach]="attach()" [parameters]="parameters()" />
2259
- `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state"] }, { kind: "directive", type: NgtsRenderTextureContainer, selector: "[renderTextureContainer]", inputs: ["fbo", "renderPriority", "frames"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[portalContent]" }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2282
+ <ngt-primitive *args="[fbo.texture]" [attach]="attach()" [parameters]="parameters()" />
2283
+ `, isInline: true, dependencies: [{ kind: "component", type: i1.NgtPortalImpl, selector: "ngt-portal", inputs: ["container", "state"] }, { kind: "directive", type: i1.NgtPortalContent, selector: "ng-template[portalContent]" }, { kind: "directive", type: NgtsRenderTextureContainer, selector: "[renderTextureContainer]", inputs: ["fbo", "renderPriority", "frames"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2260
2284
  }
2261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsRenderTexture, decorators: [{
2285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsRenderTextureImpl, decorators: [{
2262
2286
  type: Component,
2263
2287
  args: [{
2264
2288
  selector: 'ngts-render-texture',
@@ -2267,7 +2291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
2267
2291
  <ng-template portalContent let-injector="injector">
2268
2292
  <ng-container
2269
2293
  renderTextureContainer
2270
- [fbo]="fbo()"
2294
+ [fbo]="fbo"
2271
2295
  [renderPriority]="renderPriority()"
2272
2296
  [frames]="frames()"
2273
2297
  [ngTemplateOutlet]="content()"
@@ -2279,13 +2303,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
2279
2303
  </ng-template>
2280
2304
  </ngt-portal>
2281
2305
 
2282
- <ngt-primitive *args="[fbo().texture]" [attach]="attach()" [parameters]="parameters()" />
2306
+ <ngt-primitive *args="[fbo.texture]" [attach]="attach()" [parameters]="parameters()" />
2283
2307
  `,
2284
- imports: [NgtPortal, NgtsRenderTextureContainer, NgtPortalContent, NgtArgs, NgTemplateOutlet],
2308
+ imports: [NgtPortal, NgtsRenderTextureContainer, NgtArgs, NgTemplateOutlet],
2285
2309
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
2286
2310
  changeDetection: ChangeDetectionStrategy.OnPush,
2287
2311
  }]
2288
2312
  }], ctorParameters: () => [] });
2313
+ const NgtsRenderTexture = [NgtsRenderTextureImpl, NgtsRenderTextureContent];
2289
2314
 
2290
2315
  function calcPosFromAngles(inclination, azimuth, vector = new THREE.Vector3()) {
2291
2316
  const theta = Math.PI * (inclination - 0.5);
@@ -2334,8 +2359,8 @@ class NgtsSky {
2334
2359
  });
2335
2360
  this.sky = new Sky();
2336
2361
  }
2337
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSky, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2338
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2362
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSky, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2363
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.1", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2339
2364
  <ngt-primitive *args="[sky]" [parameters]="parameters()" [scale]="scale()">
2340
2365
  <ngt-value attach="material.uniforms.mieCoefficient.value" [rawValue]="mieCoefficient()" />
2341
2366
  <ngt-value attach="material.uniforms.mieDirectionalG.value" [rawValue]="mieDirectionalG()" />
@@ -2346,7 +2371,7 @@ class NgtsSky {
2346
2371
  </ngt-primitive>
2347
2372
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2348
2373
  }
2349
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSky, decorators: [{
2374
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSky, decorators: [{
2350
2375
  type: Component,
2351
2376
  args: [{
2352
2377
  selector: 'ngts-sky',
@@ -2411,8 +2436,8 @@ class NgtsVolumetricMesh {
2411
2436
  }
2412
2437
  });
2413
2438
  }
2414
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2415
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
2439
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsVolumetricMesh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2440
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsVolumetricMesh, isStandalone: true, selector: "ngts-volumetric-mesh", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
2416
2441
  <ngt-mesh #mesh [geometry]="geometry()" [raycast]="null">
2417
2442
  <ngt-primitive *args="[material]" attach="material">
2418
2443
  <ngt-value attach="uniforms.opacity.value" [rawValue]="opacity()" />
@@ -2430,7 +2455,7 @@ class NgtsVolumetricMesh {
2430
2455
  </ngt-mesh>
2431
2456
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2432
2457
  }
2433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
2458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsVolumetricMesh, decorators: [{
2434
2459
  type: Component,
2435
2460
  args: [{
2436
2461
  selector: 'ngts-volumetric-mesh',
@@ -2566,8 +2591,8 @@ class NgtsSpotLightShadowShader {
2566
2591
  gl.setRenderTarget(null);
2567
2592
  });
2568
2593
  }
2569
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLightShadowShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2570
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsSpotLightShadowShader, isStandalone: true, selector: "ngts-spot-light-shadow-shader", inputs: { shader: { classPropertyName: "shader", publicName: "shader", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
2594
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLightShadowShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2595
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsSpotLightShadowShader, isStandalone: true, selector: "ngts-spot-light-shadow-shader", inputs: { shader: { classPropertyName: "shader", publicName: "shader", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
2571
2596
  <ngt-mesh #mesh [scale]="scale()" castShadow>
2572
2597
  <ngt-plane-geometry />
2573
2598
  <ngt-mesh-basic-material
@@ -2582,7 +2607,7 @@ class NgtsSpotLightShadowShader {
2582
2607
  </ngt-mesh>
2583
2608
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2584
2609
  }
2585
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLightShadowShader, decorators: [{
2610
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLightShadowShader, decorators: [{
2586
2611
  type: Component,
2587
2612
  args: [{
2588
2613
  selector: 'ngts-spot-light-shadow-shader',
@@ -2626,8 +2651,8 @@ class NgtsSpotLightShadowNoShader {
2626
2651
  extend({ Mesh, PlaneGeometry, MeshBasicMaterial });
2627
2652
  injectSpotLightCommon(this.spotLight.spotLightRef, this.meshRef, this.width, this.height, this.distance);
2628
2653
  }
2629
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLightShadowNoShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2630
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsSpotLightShadowNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-no-shader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
2654
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLightShadowNoShader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2655
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsSpotLightShadowNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-no-shader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
2631
2656
  <ngt-mesh #mesh [scale]="scale()" castShadow>
2632
2657
  <ngt-plane-geometry />
2633
2658
  <ngt-mesh-basic-material
@@ -2642,7 +2667,7 @@ class NgtsSpotLightShadowNoShader {
2642
2667
  </ngt-mesh>
2643
2668
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2644
2669
  }
2645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLightShadowNoShader, decorators: [{
2670
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLightShadowNoShader, decorators: [{
2646
2671
  type: Component,
2647
2672
  args: [{
2648
2673
  selector: 'ngts-spot-light-shadow-no-shader',
@@ -2669,8 +2694,8 @@ class NgtsSpotLightShadow {
2669
2694
  this.shader = input();
2670
2695
  this.options = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });
2671
2696
  }
2672
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLightShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2673
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", inputs: { shader: { classPropertyName: "shader", publicName: "shader", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2697
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLightShadow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2698
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsSpotLightShadow, isStandalone: true, selector: "ngts-spot-light-shadow", inputs: { shader: { classPropertyName: "shader", publicName: "shader", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2674
2699
  @if (shader(); as shader) {
2675
2700
  <ngts-spot-light-shadow-shader [shader]="shader" [options]="options()" />
2676
2701
  } @else {
@@ -2678,7 +2703,7 @@ class NgtsSpotLightShadow {
2678
2703
  }
2679
2704
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsSpotLightShadowShader, selector: "ngts-spot-light-shadow-shader", inputs: ["shader", "options"] }, { kind: "component", type: NgtsSpotLightShadowNoShader, selector: "ngts-spot-light-shadow-no-shader", inputs: ["options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2680
2705
  }
2681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
2706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLightShadow, decorators: [{
2682
2707
  type: Component,
2683
2708
  args: [{
2684
2709
  selector: 'ngts-spot-light-shadow',
@@ -2740,8 +2765,8 @@ class NgtsSpotLight {
2740
2765
  this.volumetric = pick(this.options, 'volumetric');
2741
2766
  extend({ Group, SpotLight });
2742
2767
  }
2743
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "spotLightRef", first: true, predicate: ["spotLight"], descendants: true, isSignal: true }], ngImport: i0, template: `
2768
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLight, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2769
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsSpotLight, isStandalone: true, selector: "ngts-spot-light", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "spotLightRef", first: true, predicate: ["spotLight"], descendants: true, isSignal: true }], ngImport: i0, template: `
2745
2770
  <ngt-group>
2746
2771
  <ngt-spot-light
2747
2772
  #spotLight
@@ -2763,7 +2788,7 @@ class NgtsSpotLight {
2763
2788
  </ngt-group>
2764
2789
  `, isInline: true, dependencies: [{ kind: "component", type: NgtsVolumetricMesh, selector: "ngts-volumetric-mesh", inputs: ["options"] }, { kind: "component", type: NgtsHelper, selector: "ngts-helper", inputs: ["type", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2765
2790
  }
2766
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsSpotLight, decorators: [{
2791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsSpotLight, decorators: [{
2767
2792
  type: Component,
2768
2793
  args: [{
2769
2794
  selector: 'ngts-spot-light',
@@ -2818,17 +2843,24 @@ class NgtsStageRefit {
2818
2843
  bounds.refresh().clip().fit();
2819
2844
  });
2820
2845
  }
2821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2822
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: true, transformFunction: null }, adjustCamera: { classPropertyName: "adjustCamera", publicName: "adjustCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
2846
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsStageRefit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2847
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: NgtsStageRefit, isStandalone: true, selector: "ngts-stage-refit", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: true, transformFunction: null }, adjustCamera: { classPropertyName: "adjustCamera", publicName: "adjustCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
2823
2848
  }
2824
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsStageRefit, decorators: [{
2849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsStageRefit, decorators: [{
2825
2850
  type: Directive,
2826
2851
  args: [{ selector: 'ngts-stage-refit' }]
2827
2852
  }], ctorParameters: () => [] });
2828
2853
  class NgtsStage {
2829
2854
  constructor() {
2830
2855
  this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
2831
- this.parameters = omit(this.options, ['preset', 'shadows', 'adjustCamera', 'environment', 'intensity', 'center']);
2856
+ this.parameters = omit(this.options, [
2857
+ 'preset',
2858
+ 'shadows',
2859
+ 'adjustCamera',
2860
+ 'environment',
2861
+ 'intensity',
2862
+ 'center',
2863
+ ]);
2832
2864
  this.centered = output();
2833
2865
  this.dims = signal({ radius: 0, width: 0, height: 0, depth: 0 });
2834
2866
  this.radius = pick(this.dims, 'radius');
@@ -2856,7 +2888,14 @@ class NgtsStage {
2856
2888
  return { scale: this.radius() * 4, far: this.radius(), blur: 2, ...shadows };
2857
2889
  }
2858
2890
  if (this.accumulativeShadow()) {
2859
- return { temporal: true, frames: 100, alphaTest: 0.9, toneMapped: true, scale: this.radius() * 4, ...shadows };
2891
+ return {
2892
+ temporal: true,
2893
+ frames: 100,
2894
+ alphaTest: 0.9,
2895
+ toneMapped: true,
2896
+ scale: this.radius() * 4,
2897
+ ...shadows,
2898
+ };
2860
2899
  }
2861
2900
  return typeof shadows === 'object' ? shadows : {};
2862
2901
  });
@@ -2901,8 +2940,8 @@ class NgtsStage {
2901
2940
  this.dims.set({ radius: boundingSphere.radius, width, height, depth });
2902
2941
  this.centered.emit($event);
2903
2942
  }
2904
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsStage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2905
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { centered: "centered" }, ngImport: i0, template: `
2943
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsStage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2944
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsStage, isStandalone: true, selector: "ngts-stage", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { centered: "centered" }, ngImport: i0, template: `
2906
2945
  <ngt-ambient-light [intensity]="intensity() / 3" />
2907
2946
  <ngt-spot-light
2908
2947
  [penumbra]="1"
@@ -2943,7 +2982,7 @@ class NgtsStage {
2943
2982
  }
2944
2983
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtsBounds, selector: "ngts-bounds", inputs: ["options"] }, { kind: "directive", type: NgtsStageRefit, selector: "ngts-stage-refit", inputs: ["radius", "adjustCamera"] }, { kind: "component", type: NgtsCenter, selector: "ngts-center", inputs: ["options"], outputs: ["centered"] }, { kind: "component", type: NgtsContactShadows, selector: "ngts-contact-shadows", inputs: ["options"] }, { kind: "component", type: NgtsAccumulativeShadows, selector: "ngts-accumulative-shadows", inputs: ["options"] }, { kind: "component", type: NgtsEnvironment, selector: "ngts-environment", inputs: ["options"], outputs: ["envSet"] }, { kind: "component", type: NgtsRandomizedLights, selector: "ngts-randomized-lights", inputs: ["options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2945
2984
  }
2946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsStage, decorators: [{
2985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsStage, decorators: [{
2947
2986
  type: Component,
2948
2987
  args: [{
2949
2988
  selector: 'ngts-stage',
@@ -3006,5 +3045,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
3006
3045
  * Generated bundle index. Do not edit.
3007
3046
  */
3008
3047
 
3009
- export { ENVIRONMENT_PRESETS, NgtsAccumulativeShadows, NgtsBBAnchor, NgtsBackdrop, NgtsBounds, NgtsCameraShake, NgtsCaustics, NgtsCenter, NgtsContactShadows, NgtsEnvironment, NgtsEnvironmentCube, NgtsEnvironmentGround, NgtsEnvironmentMap, NgtsEnvironmentPortal, NgtsFloat, NgtsLightformer, NgtsMask, NgtsMatcapTexture, NgtsNormalTexture, NgtsRandomizedLights, NgtsRenderTexture, NgtsRenderTextureContainer, NgtsRenderTextureContent, NgtsSky, NgtsSpotLight, NgtsSpotLightShadow, NgtsStage, NgtsStageRefit, calcPosFromAngles, injectEnvironment, injectMatcapTexture, injectNormalTexture, mask };
3048
+ export { ENVIRONMENT_PRESETS, NgtsAccumulativeShadows, NgtsBBAnchor, NgtsBackdrop, NgtsBounds, NgtsCameraShake, NgtsCaustics, NgtsCenter, NgtsContactShadows, NgtsEnvironment, NgtsEnvironmentCube, NgtsEnvironmentGround, NgtsEnvironmentMap, NgtsEnvironmentPortal, NgtsFloat, NgtsLightformer, NgtsMask, NgtsMatcapTexture, NgtsNormalTexture, NgtsRandomizedLights, NgtsRenderTexture, NgtsRenderTextureContainer, NgtsRenderTextureContent, NgtsRenderTextureImpl, NgtsSky, NgtsSpotLight, NgtsSpotLightShadow, NgtsStage, NgtsStageRefit, calcPosFromAngles, injectEnvironment, injectMatcapTexture, injectNormalTexture, mask };
3010
3049
  //# sourceMappingURL=angular-three-soba-staging.mjs.map