angular-three-soba 4.2.0 → 4.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/fesm2022/angular-three-soba-abstractions.mjs +98 -98
  2. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  3. package/fesm2022/angular-three-soba-cameras.mjs +26 -26
  4. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  5. package/fesm2022/angular-three-soba-controls.mjs +32 -32
  6. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  7. package/fesm2022/angular-three-soba-gizmos.mjs +119 -119
  8. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  9. package/fesm2022/angular-three-soba-loaders.mjs +6 -6
  10. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  11. package/fesm2022/angular-three-soba-materials.mjs +75 -75
  12. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  13. package/fesm2022/angular-three-soba-misc.mjs +85 -76
  14. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  15. package/fesm2022/angular-three-soba-performances.mjs +164 -60
  16. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  17. package/fesm2022/angular-three-soba-staging.mjs +257 -257
  18. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  19. package/fesm2022/angular-three-soba-stats.mjs +5 -5
  20. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  21. package/package.json +141 -140
  22. package/performances/README.md +47 -0
  23. package/types/angular-three-soba-abstractions.d.ts +57 -57
  24. package/types/angular-three-soba-cameras.d.ts +3 -3
  25. package/types/angular-three-soba-controls.d.ts +4 -4
  26. package/types/angular-three-soba-gizmos.d.ts +4 -4
  27. package/types/angular-three-soba-materials.d.ts +4 -4
  28. package/types/angular-three-soba-misc.d.ts +16 -5
  29. package/types/angular-three-soba-performances.d.ts +55 -9
  30. package/types/angular-three-soba-staging.d.ts +13 -13
@@ -48,7 +48,7 @@ function animations(animationsFactory, object, { injector } = {}) {
48
48
  const actions = {};
49
49
  const clips = [];
50
50
  const names = [];
51
- const actualObject = computed(() => isSignal(object) || typeof object === 'function' ? resolveRef(object()) : resolveRef(object), ...(ngDevMode ? [{ debugName: "actualObject" }] : []));
51
+ const actualObject = computed(() => isSignal(object) || typeof object === 'function' ? resolveRef(object()) : resolveRef(object), ...(ngDevMode ? [{ debugName: "actualObject" }] : /* istanbul ignore next */ []));
52
52
  const isReady = computed(() => {
53
53
  const obj = actualObject();
54
54
  if (!obj)
@@ -77,7 +77,7 @@ function animations(animationsFactory, object, { injector } = {}) {
77
77
  }
78
78
  }
79
79
  return true;
80
- }, ...(ngDevMode ? [{ debugName: "isReady" }] : []));
80
+ }, ...(ngDevMode ? [{ debugName: "isReady" }] : /* istanbul ignore next */ []));
81
81
  inject(DestroyRef).onDestroy(() => {
82
82
  const obj = actualObject();
83
83
  // clear cached
@@ -136,10 +136,10 @@ class NgtsBakeShadows {
136
136
  });
137
137
  });
138
138
  }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsBakeShadows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", ngImport: i0 }); }
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsBakeShadows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", ngImport: i0 }); }
141
141
  }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsBakeShadows, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsBakeShadows, decorators: [{
143
143
  type: Directive,
144
144
  args: [{ selector: 'ngts-bake-shadows' }]
145
145
  }], ctorParameters: () => [] });
@@ -179,17 +179,17 @@ class NgtsComputedAttribute {
179
179
  * Function that computes the BufferAttribute from the parent geometry.
180
180
  * Called whenever the geometry or compute function changes.
181
181
  */
182
- this.compute = input.required(...(ngDevMode ? [{ debugName: "compute" }] : []));
182
+ this.compute = input.required(...(ngDevMode ? [{ debugName: "compute" }] : /* istanbul ignore next */ []));
183
183
  /**
184
184
  * The attribute name to attach to the geometry (e.g., 'uv2', 'customData').
185
185
  */
186
- this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
186
+ this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
187
187
  /**
188
188
  * Additional options to pass to the underlying buffer attribute.
189
189
  */
190
- this.options = input({}, ...(ngDevMode ? [{ debugName: "options" }] : []));
190
+ this.options = input({}, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
191
191
  this.bufferAttribute = new THREE.BufferAttribute(new Float32Array(0), 1);
192
- this.attributeRef = viewChild('attribute', ...(ngDevMode ? [{ debugName: "attributeRef" }] : []));
192
+ this.attributeRef = viewChild('attribute', ...(ngDevMode ? [{ debugName: "attributeRef" }] : /* istanbul ignore next */ []));
193
193
  effect(() => {
194
194
  const bufferAttribute = this.attributeRef()?.nativeElement;
195
195
  if (!bufferAttribute)
@@ -202,14 +202,14 @@ class NgtsComputedAttribute {
202
202
  bufferAttribute.copy(attribute);
203
203
  });
204
204
  }
205
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsComputedAttribute, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
206
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: NgtsComputedAttribute, isStandalone: true, selector: "ngts-computed-attribute", inputs: { compute: { classPropertyName: "compute", publicName: "compute", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "attributeRef", first: true, predicate: ["attribute"], descendants: true, isSignal: true }], ngImport: i0, template: `
205
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsComputedAttribute, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
206
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: NgtsComputedAttribute, isStandalone: true, selector: "ngts-computed-attribute", inputs: { compute: { classPropertyName: "compute", publicName: "compute", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "attributeRef", first: true, predicate: ["attribute"], descendants: true, isSignal: true }], ngImport: i0, template: `
207
207
  <ngt-primitive #attribute *args="[bufferAttribute]" [attach]="['attributes', name()]" [parameters]="options()">
208
208
  <ng-content />
209
209
  </ngt-primitive>
210
210
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
211
  }
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsComputedAttribute, decorators: [{
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsComputedAttribute, decorators: [{
213
213
  type: Component,
214
214
  args: [{
215
215
  selector: 'ngts-computed-attribute',
@@ -281,11 +281,11 @@ class NgtsDecal {
281
281
  * Optional external mesh to project the decal onto.
282
282
  * If not provided, uses the parent mesh in the scene graph.
283
283
  */
284
- this.mesh = input(...(ngDevMode ? [undefined, { debugName: "mesh" }] : []));
284
+ this.mesh = input(...(ngDevMode ? [undefined, { debugName: "mesh" }] : /* istanbul ignore next */ []));
285
285
  /**
286
286
  * Decal configuration options including position, scale, rotation, and material properties.
287
287
  */
288
- this.options = input(defaultOptions$2, { ...(ngDevMode ? { debugName: "options" } : {}), transform: mergeInputs(defaultOptions$2) });
288
+ this.options = input(defaultOptions$2, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), transform: mergeInputs(defaultOptions$2) });
289
289
  this.parameters = omit(this.options, [
290
290
  'debug',
291
291
  'map',
@@ -296,7 +296,7 @@ class NgtsDecal {
296
296
  'rotation',
297
297
  ]);
298
298
  this.meshRef = viewChild.required('mesh');
299
- this.helperRef = viewChild('helper', ...(ngDevMode ? [{ debugName: "helperRef" }] : []));
299
+ this.helperRef = viewChild('helper', ...(ngDevMode ? [{ debugName: "helperRef" }] : /* istanbul ignore next */ []));
300
300
  this.map = pick(this.options, 'map');
301
301
  this.depthTest = pick(this.options, 'depthTest');
302
302
  this.polygonOffsetFactor = pick(this.options, 'polygonOffsetFactor');
@@ -393,8 +393,8 @@ class NgtsDecal {
393
393
  });
394
394
  });
395
395
  }
396
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsDecal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
397
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgtsDecal, isStandalone: true, selector: "ngts-decal", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", 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 }, { propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
396
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsDecal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
397
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: NgtsDecal, isStandalone: true, selector: "ngts-decal", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", 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 }, { propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
398
398
  <ngt-mesh #mesh [parameters]="parameters()">
399
399
  <ngt-value [rawValue]="true" attach="material.transparent" />
400
400
  <ngt-value [rawValue]="true" attach="material.polygonOffset" />
@@ -416,7 +416,7 @@ class NgtsDecal {
416
416
  </ngt-mesh>
417
417
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
418
418
  }
419
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsDecal, decorators: [{
419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsDecal, decorators: [{
420
420
  type: Component,
421
421
  args: [{
422
422
  selector: 'ngts-decal',
@@ -515,11 +515,11 @@ function fbo(params = () => ({}), { injector } = {}) {
515
515
  const width = computed(() => {
516
516
  const { width } = params();
517
517
  return typeof width === 'number' ? width : store.size.width() * store.viewport.dpr();
518
- }, ...(ngDevMode ? [{ debugName: "width" }] : []));
518
+ }, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
519
519
  const height = computed(() => {
520
520
  const { height } = params();
521
521
  return typeof height === 'number' ? height : store.size.height() * store.viewport.dpr();
522
- }, ...(ngDevMode ? [{ debugName: "height" }] : []));
522
+ }, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
523
523
  const settings = computed(() => {
524
524
  const { width, settings } = params();
525
525
  const _settings = (typeof width === 'number' ? settings : width) || {};
@@ -527,7 +527,7 @@ function fbo(params = () => ({}), { injector } = {}) {
527
527
  _settings.samples = 0;
528
528
  }
529
529
  return _settings;
530
- }, ...(ngDevMode ? [{ debugName: "settings" }] : []));
530
+ }, ...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
531
531
  const target = (() => {
532
532
  const [{ samples = 0, depth, ...targetSettings }, _width, _height] = [
533
533
  untracked(settings),
@@ -583,7 +583,7 @@ class NgtsFBO {
583
583
  /**
584
584
  * FBO configuration including width, height, and RenderTargetOptions.
585
585
  */
586
- this.fbo = input({}, ...(ngDevMode ? [{ debugName: "fbo" }] : []));
586
+ this.fbo = input({}, ...(ngDevMode ? [{ debugName: "fbo" }] : /* istanbul ignore next */ []));
587
587
  this.template = inject(TemplateRef);
588
588
  this.viewContainerRef = inject(ViewContainerRef);
589
589
  const fboTarget = fbo(() => {
@@ -603,10 +603,10 @@ class NgtsFBO {
603
603
  static ngTemplateContextGuard(_, ctx) {
604
604
  return true;
605
605
  }
606
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsFBO, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
607
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: NgtsFBO, isStandalone: true, selector: "ng-template[fbo]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
606
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsFBO, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
607
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: NgtsFBO, isStandalone: true, selector: "ng-template[fbo]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
608
608
  }
609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsFBO, decorators: [{
609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsFBO, decorators: [{
610
610
  type: Directive,
611
611
  args: [{ selector: 'ng-template[fbo]' }]
612
612
  }], ctorParameters: () => [], propDecorators: { fbo: [{ type: i0.Input, args: [{ isSignal: true, alias: "fbo", required: false }] }] } });
@@ -637,17 +637,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
637
637
  */
638
638
  function depthBuffer(params = () => ({}), { injector } = {}) {
639
639
  return assertInjector(depthBuffer, injector, () => {
640
- const size = computed(() => params().size || 256, ...(ngDevMode ? [{ debugName: "size" }] : []));
641
- const frames = computed(() => params().frames || Infinity, ...(ngDevMode ? [{ debugName: "frames" }] : []));
640
+ const size = computed(() => params().size || 256, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
641
+ const frames = computed(() => params().frames || Infinity, ...(ngDevMode ? [{ debugName: "frames" }] : /* istanbul ignore next */ []));
642
642
  const store = injectStore();
643
- const w = computed(() => size() || store.size.width() * store.viewport.dpr(), ...(ngDevMode ? [{ debugName: "w" }] : []));
644
- const h = computed(() => size() || store.size.height() * store.viewport.dpr(), ...(ngDevMode ? [{ debugName: "h" }] : []));
643
+ const w = computed(() => size() || store.size.width() * store.viewport.dpr(), ...(ngDevMode ? [{ debugName: "w" }] : /* istanbul ignore next */ []));
644
+ const h = computed(() => size() || store.size.height() * store.viewport.dpr(), ...(ngDevMode ? [{ debugName: "h" }] : /* istanbul ignore next */ []));
645
645
  const depthConfig = computed(() => {
646
646
  const depthTexture = new THREE.DepthTexture(w(), h());
647
647
  depthTexture.format = THREE.DepthFormat;
648
648
  depthTexture.type = THREE.UnsignedShortType;
649
649
  return { depthTexture };
650
- }, ...(ngDevMode ? [{ debugName: "depthConfig" }] : []));
650
+ }, ...(ngDevMode ? [{ debugName: "depthConfig" }] : /* istanbul ignore next */ []));
651
651
  const depthFBO = fbo(() => ({ width: w(), height: h(), settings: depthConfig() }));
652
652
  let count = 0;
653
653
  beforeRender(({ gl, scene, camera }) => {
@@ -767,17 +767,26 @@ function objectScale(el, camera) {
767
767
  * @param el - The object to calculate z-index for
768
768
  * @param camera - The camera reference (must be Perspective or Orthographic)
769
769
  * @param zIndexRange - `[max, min]` range to map distance to
770
+ * @param logarithmicDepth - Computes the z-index logarithmicly to enable a wider camera range
770
771
  * @returns Calculated z-index, or `undefined` for unsupported camera types
771
772
  */
772
- function objectZIndex(el, camera, zIndexRange) {
773
+ function objectZIndex(el, camera, zIndexRange, logarithmicDepth = false) {
773
774
  if (is.three(camera, 'isPerspectiveCamera') ||
774
775
  is.three(camera, 'isOrthographicCamera')) {
775
776
  const objectPos = v1.setFromMatrixPosition(el.matrixWorld);
776
777
  const cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);
777
778
  const dist = objectPos.distanceTo(cameraPos);
778
- const A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);
779
- const B = zIndexRange[1] - A * camera.far;
780
- return Math.round(A * dist + B);
779
+ if (logarithmicDepth) {
780
+ const safeNear = Math.max(camera.near, 1e-6);
781
+ const safeDist = Math.max(dist, 1e-6);
782
+ const depth = Math.log(safeDist / safeNear) / Math.log(camera.far / safeNear);
783
+ return Math.round(zIndexRange[0] + depth * (zIndexRange[1] - zIndexRange[0]));
784
+ }
785
+ else {
786
+ const A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);
787
+ const B = zIndexRange[1] - A * camera.far;
788
+ return Math.round(A * dist + B);
789
+ }
781
790
  }
782
791
  return undefined;
783
792
  }
@@ -886,7 +895,7 @@ class NgtsHTMLContent extends NgtHTML {
886
895
  * Content positioning and behavior options.
887
896
  * Aliased as `htmlContent` for use with the `[htmlContent]` attribute selector.
888
897
  */
889
- this.options = input(defaultHtmlContentOptions, { ...(ngDevMode ? { debugName: "options" } : {}), transform: mergeInputs(defaultHtmlContentOptions),
898
+ this.options = input(defaultHtmlContentOptions, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), transform: mergeInputs(defaultHtmlContentOptions),
890
899
  alias: 'htmlContent' });
891
900
  /**
892
901
  * Emits when occlusion state changes.
@@ -898,11 +907,11 @@ class NgtsHTMLContent extends NgtHTML {
898
907
  */
899
908
  this.occluded = output();
900
909
  /** Reference to outer transform container (transform mode only) */
901
- this.transformOuterRef = viewChild('transformOuter', ...(ngDevMode ? [{ debugName: "transformOuterRef" }] : []));
910
+ this.transformOuterRef = viewChild('transformOuter', ...(ngDevMode ? [{ debugName: "transformOuterRef" }] : /* istanbul ignore next */ []));
902
911
  /** Reference to inner transform container (transform mode only) */
903
- this.transformInnerRef = viewChild('transformInner', ...(ngDevMode ? [{ debugName: "transformInnerRef" }] : []));
912
+ this.transformInnerRef = viewChild('transformInner', ...(ngDevMode ? [{ debugName: "transformInnerRef" }] : /* istanbul ignore next */ []));
904
913
  /** Reference to the content container div */
905
- this.containerRef = viewChild('container', ...(ngDevMode ? [{ debugName: "containerRef" }] : []));
914
+ this.containerRef = viewChild('container', ...(ngDevMode ? [{ debugName: "containerRef" }] : /* istanbul ignore next */ []));
906
915
  this.html = inject(NgtsHTMLImpl);
907
916
  this.host = inject(ElementRef);
908
917
  this.store = injectStore();
@@ -921,7 +930,7 @@ class NgtsHTMLContent extends NgtHTML {
921
930
  if (parent)
922
931
  return parent;
923
932
  return (this.store.events.connected?.() || this.store.gl.domElement.parentNode());
924
- }, ...(ngDevMode ? [{ debugName: "target" }] : []));
933
+ }, ...(ngDevMode ? [{ debugName: "target" }] : /* istanbul ignore next */ []));
925
934
  const renderer = inject(Renderer2);
926
935
  let isMeshSizeSet = false;
927
936
  effect(() => {
@@ -987,7 +996,7 @@ class NgtsHTMLContent extends NgtHTML {
987
996
  let oldZoom = 0;
988
997
  let oldPosition = [0, 0];
989
998
  beforeRender(({ camera: rootCamera }) => {
990
- const [hostEl, transformOuterEl, transformInnerEl, group, occlusionMesh, occlusionGeometry, isRaycastOcclusion, { camera, size, viewport, raycaster, scene }, { calculatePosition, eps, zIndexRange, sprite, distanceFactor }, { transform, occlude, scale },] = [
999
+ const [hostEl, transformOuterEl, transformInnerEl, group, occlusionMesh, occlusionGeometry, isRaycastOcclusion, { camera, size, viewport, raycaster, scene }, { calculatePosition, eps, zIndexRange, logarithmicDepth, sprite, distanceFactor }, { transform, occlude, scale },] = [
991
1000
  this.host.nativeElement,
992
1001
  this.transformOuterRef()?.nativeElement,
993
1002
  this.transformInnerRef()?.nativeElement,
@@ -1058,7 +1067,7 @@ class NgtsHTMLContent extends NgtHTML {
1058
1067
  ? [zIndexRange[0], halfRange]
1059
1068
  : [halfRange - 1, 0]
1060
1069
  : zIndexRange;
1061
- renderer.setStyle(hostEl, 'z-index', `${objectZIndex(group, camera, zRange)}`);
1070
+ renderer.setStyle(hostEl, 'z-index', `${objectZIndex(group, camera, zRange, logarithmicDepth)}`);
1062
1071
  if (transform) {
1063
1072
  const [widthHalf, heightHalf] = [size.width / 2, size.height / 2];
1064
1073
  const fov = camera.projectionMatrix.elements[5] * heightHalf;
@@ -1136,8 +1145,8 @@ class NgtsHTMLContent extends NgtHTML {
1136
1145
  }
1137
1146
  });
1138
1147
  }
1139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsHTMLContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgtsHTMLContent, isStandalone: true, selector: "div[htmlContent]", inputs: { options: { classPropertyName: "options", publicName: "htmlContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { occluded: "occluded" }, host: { attributes: { "data-ngts-html-content": "" } }, viewQueries: [{ propertyName: "transformOuterRef", first: true, predicate: ["transformOuter"], descendants: true, isSignal: true }, { propertyName: "transformInnerRef", first: true, predicate: ["transformInner"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsHTMLContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: NgtsHTMLContent, isStandalone: true, selector: "div[htmlContent]", inputs: { options: { classPropertyName: "options", publicName: "htmlContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { occluded: "occluded" }, host: { attributes: { "data-ngts-html-content": "" } }, viewQueries: [{ propertyName: "transformOuterRef", first: true, predicate: ["transformOuter"], descendants: true, isSignal: true }, { propertyName: "transformInnerRef", first: true, predicate: ["transformInner"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1141
1150
  @if (html.transform()) {
1142
1151
  <div
1143
1152
  #transformOuter
@@ -1172,7 +1181,7 @@ class NgtsHTMLContent extends NgtHTML {
1172
1181
  </ng-template>
1173
1182
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1174
1183
  }
1175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsHTMLContent, decorators: [{
1184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsHTMLContent, decorators: [{
1176
1185
  type: Component,
1177
1186
  args: [{
1178
1187
  selector: 'div[htmlContent]',
@@ -1252,14 +1261,14 @@ class NgtsHTMLImpl {
1252
1261
  /**
1253
1262
  * HTML anchor configuration including position, occlusion, and transform settings.
1254
1263
  */
1255
- this.options = input(defaultHtmlOptions, { ...(ngDevMode ? { debugName: "options" } : {}), transform: mergeInputs(defaultHtmlOptions) });
1264
+ this.options = input(defaultHtmlOptions, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), transform: mergeInputs(defaultHtmlOptions) });
1256
1265
  this.parameters = omit(this.options, ['occlude', 'castShadow', 'receiveShadow', 'transform']);
1257
1266
  /** Reference to the THREE.Group that serves as the 3D anchor point */
1258
1267
  this.groupRef = viewChild.required('group');
1259
1268
  /** Reference to the occlusion mesh (when using blending occlusion mode) */
1260
- this.occlusionMeshRef = viewChild('occlusionMesh', ...(ngDevMode ? [{ debugName: "occlusionMeshRef" }] : []));
1269
+ this.occlusionMeshRef = viewChild('occlusionMesh', ...(ngDevMode ? [{ debugName: "occlusionMeshRef" }] : /* istanbul ignore next */ []));
1261
1270
  /** Reference to the occlusion geometry */
1262
- this.occlusionGeometryRef = viewChild('occlusionGeometry', ...(ngDevMode ? [{ debugName: "occlusionGeometryRef" }] : []));
1271
+ this.occlusionGeometryRef = viewChild('occlusionGeometry', ...(ngDevMode ? [{ debugName: "occlusionGeometryRef" }] : /* istanbul ignore next */ []));
1263
1272
  this.castShadow = pick(this.options, 'castShadow');
1264
1273
  this.receiveShadow = pick(this.options, 'receiveShadow');
1265
1274
  /** Current occlusion mode setting */
@@ -1269,7 +1278,7 @@ class NgtsHTMLImpl {
1269
1278
  this.isRaycastOcclusion = computed(() => {
1270
1279
  const occlude = this.occlude();
1271
1280
  return (occlude && occlude !== 'blending') || (Array.isArray(occlude) && occlude.length && is.ref(occlude[0]));
1272
- }, ...(ngDevMode ? [{ debugName: "isRaycastOcclusion" }] : []));
1281
+ }, ...(ngDevMode ? [{ debugName: "isRaycastOcclusion" }] : /* istanbul ignore next */ []));
1273
1282
  this.shaders = computed(() => {
1274
1283
  const transform = this.transform();
1275
1284
  const vertexShader = !transform
@@ -1314,14 +1323,14 @@ class NgtsHTMLImpl {
1314
1323
  }
1315
1324
  `;
1316
1325
  return { vertexShader, fragmentShader };
1317
- }, ...(ngDevMode ? [{ debugName: "shaders" }] : []));
1326
+ }, ...(ngDevMode ? [{ debugName: "shaders" }] : /* istanbul ignore next */ []));
1318
1327
  this.vertexShader = pick(this.shaders, 'vertexShader');
1319
1328
  this.fragmentShader = pick(this.shaders, 'fragmentShader');
1320
1329
  this.DoubleSide = THREE.DoubleSide;
1321
1330
  extend({ Group, Mesh, PlaneGeometry, ShaderMaterial });
1322
1331
  }
1323
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsHTMLImpl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1324
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgtsHTMLImpl, isStandalone: true, selector: "ngts-html", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "occlusionMeshRef", first: true, predicate: ["occlusionMesh"], descendants: true, isSignal: true }, { propertyName: "occlusionGeometryRef", first: true, predicate: ["occlusionGeometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
1332
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsHTMLImpl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1333
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: NgtsHTMLImpl, isStandalone: true, selector: "ngts-html", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "occlusionMeshRef", first: true, predicate: ["occlusionMesh"], descendants: true, isSignal: true }, { propertyName: "occlusionGeometryRef", first: true, predicate: ["occlusionGeometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
1325
1334
  <ngt-group #group [parameters]="parameters()">
1326
1335
  @if (occlude() && !isRaycastOcclusion()) {
1327
1336
  <ngt-mesh #occlusionMesh [castShadow]="castShadow()" [receiveShadow]="receiveShadow()">
@@ -1342,7 +1351,7 @@ class NgtsHTMLImpl {
1342
1351
  <ng-content />
1343
1352
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1344
1353
  }
1345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsHTMLImpl, decorators: [{
1354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsHTMLImpl, decorators: [{
1346
1355
  type: Component,
1347
1356
  args: [{
1348
1357
  selector: 'ngts-html',
@@ -1475,14 +1484,14 @@ class NgtsIntersect {
1475
1484
  * Two-way bound signal indicating frustum intersection state.
1476
1485
  * `true` when object is visible, `false` when outside frustum.
1477
1486
  */
1478
- this.intersect = model(false, ...(ngDevMode ? [{ debugName: "intersect" }] : []));
1487
+ this.intersect = model(false, ...(ngDevMode ? [{ debugName: "intersect" }] : /* istanbul ignore next */ []));
1479
1488
  const host = inject(ElementRef);
1480
1489
  intersect(() => host, { source: this.intersect });
1481
1490
  }
1482
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsIntersect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1483
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: NgtsIntersect, isStandalone: true, selector: "[intersect]", inputs: { intersect: { classPropertyName: "intersect", publicName: "intersect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersect: "intersectChange" }, ngImport: i0 }); }
1491
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsIntersect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1492
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: NgtsIntersect, isStandalone: true, selector: "[intersect]", inputs: { intersect: { classPropertyName: "intersect", publicName: "intersect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersect: "intersectChange" }, ngImport: i0 }); }
1484
1493
  }
1485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsIntersect, decorators: [{
1494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsIntersect, decorators: [{
1486
1495
  type: Directive,
1487
1496
  args: [{ selector: '[intersect]' }]
1488
1497
  }], ctorParameters: () => [], propDecorators: { intersect: [{ type: i0.Input, args: [{ isSignal: true, alias: "intersect", required: false }] }, { type: i0.Output, args: ["intersectChange"] }] } });
@@ -1509,28 +1518,28 @@ class NgtsPreload {
1509
1518
  * When `true`, temporarily makes all invisible objects visible
1510
1519
  * during compilation to ensure everything is preloaded.
1511
1520
  */
1512
- this.all = model(...(ngDevMode ? [undefined, { debugName: "all" }] : []));
1521
+ this.all = model(...(ngDevMode ? [undefined, { debugName: "all" }] : /* istanbul ignore next */ []));
1513
1522
  /**
1514
1523
  * Custom scene to preload. Defaults to the store's scene.
1515
1524
  */
1516
- this.scene = model(...(ngDevMode ? [undefined, { debugName: "scene" }] : []));
1525
+ this.scene = model(...(ngDevMode ? [undefined, { debugName: "scene" }] : /* istanbul ignore next */ []));
1517
1526
  /**
1518
1527
  * Custom camera to use for compilation. Defaults to the store's camera.
1519
1528
  */
1520
- this.camera = model(...(ngDevMode ? [undefined, { debugName: "camera" }] : []));
1529
+ this.camera = model(...(ngDevMode ? [undefined, { debugName: "camera" }] : /* istanbul ignore next */ []));
1521
1530
  this.store = injectStore();
1522
1531
  this.trueScene = computed(() => {
1523
1532
  const scene = this.scene();
1524
1533
  if (scene)
1525
1534
  return resolveRef(scene);
1526
1535
  return this.store.scene();
1527
- }, ...(ngDevMode ? [{ debugName: "trueScene" }] : []));
1536
+ }, ...(ngDevMode ? [{ debugName: "trueScene" }] : /* istanbul ignore next */ []));
1528
1537
  this.trueCamera = computed(() => {
1529
1538
  const camera = this.camera();
1530
1539
  if (camera)
1531
1540
  return resolveRef(camera);
1532
1541
  return this.store.camera();
1533
- }, ...(ngDevMode ? [{ debugName: "trueCamera" }] : []));
1542
+ }, ...(ngDevMode ? [{ debugName: "trueCamera" }] : /* istanbul ignore next */ []));
1534
1543
  effect(() => {
1535
1544
  const invisible = [];
1536
1545
  const [all, scene, camera, gl] = [this.all(), this.trueScene(), this.trueCamera(), this.store.gl()];
@@ -1556,10 +1565,10 @@ class NgtsPreload {
1556
1565
  invisible.forEach((object) => (object.visible = false));
1557
1566
  });
1558
1567
  }
1559
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsPreload, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1560
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: NgtsPreload, isStandalone: true, selector: "ngts-preload", inputs: { all: { classPropertyName: "all", publicName: "all", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { all: "allChange", scene: "sceneChange", camera: "cameraChange" }, ngImport: i0 }); }
1568
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsPreload, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1569
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: NgtsPreload, isStandalone: true, selector: "ngts-preload", inputs: { all: { classPropertyName: "all", publicName: "all", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { all: "allChange", scene: "sceneChange", camera: "cameraChange" }, ngImport: i0 }); }
1561
1570
  }
1562
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsPreload, decorators: [{
1571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsPreload, decorators: [{
1563
1572
  type: Directive,
1564
1573
  args: [{ selector: 'ngts-preload' }]
1565
1574
  }], ctorParameters: () => [], propDecorators: { all: [{ type: i0.Input, args: [{ isSignal: true, alias: "all", required: false }] }, { type: i0.Output, args: ["allChange"] }], scene: [{ type: i0.Input, args: [{ isSignal: true, alias: "scene", required: false }] }, { type: i0.Output, args: ["sceneChange"] }], camera: [{ type: i0.Input, args: [{ isSignal: true, alias: "camera", required: false }] }, { type: i0.Output, args: ["cameraChange"] }] } });
@@ -1689,16 +1698,16 @@ class NgtsSampler {
1689
1698
  * The mesh to sample points from.
1690
1699
  * If not provided, uses the first Mesh child of this component.
1691
1700
  */
1692
- this.mesh = input(null, ...(ngDevMode ? [{ debugName: "mesh" }] : []));
1701
+ this.mesh = input(null, ...(ngDevMode ? [{ debugName: "mesh" }] : /* istanbul ignore next */ []));
1693
1702
  /**
1694
1703
  * The InstancedMesh to update with sampled transforms.
1695
1704
  * If not provided, uses the first InstancedMesh child of this component.
1696
1705
  */
1697
- this.instances = input(null, ...(ngDevMode ? [{ debugName: "instances" }] : []));
1706
+ this.instances = input(null, ...(ngDevMode ? [{ debugName: "instances" }] : /* istanbul ignore next */ []));
1698
1707
  /**
1699
1708
  * Sampler configuration including count, weight attribute, and transform function.
1700
1709
  */
1701
- this.options = input(defaultOptions$1, { ...(ngDevMode ? { debugName: "options" } : {}), transform: mergeInputs(defaultOptions$1) });
1710
+ this.options = input(defaultOptions$1, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), transform: mergeInputs(defaultOptions$1) });
1702
1711
  this.parameters = omit(this.options, ['weight', 'transform', 'count']);
1703
1712
  this.groupRef = viewChild.required('group');
1704
1713
  this.count = pick(this.options, 'count');
@@ -1715,7 +1724,7 @@ class NgtsSampler {
1715
1724
  return mesh;
1716
1725
  const objects = instanceState.objects();
1717
1726
  return objects.find((c) => is.three(c, 'isMesh'));
1718
- }, ...(ngDevMode ? [{ debugName: "meshToSample" }] : []));
1727
+ }, ...(ngDevMode ? [{ debugName: "meshToSample" }] : /* istanbul ignore next */ []));
1719
1728
  const instancedMeshToSample = computed(() => {
1720
1729
  const group = this.groupRef().nativeElement;
1721
1730
  const instanceState = getInstanceState(group);
@@ -1726,7 +1735,7 @@ class NgtsSampler {
1726
1735
  return instances;
1727
1736
  const objects = instanceState.objects();
1728
1737
  return objects.find((c) => !!Object.getOwnPropertyDescriptor(c, 'instanceMatrix'));
1729
- }, ...(ngDevMode ? [{ debugName: "instancedMeshToSample" }] : []));
1738
+ }, ...(ngDevMode ? [{ debugName: "instancedMeshToSample" }] : /* istanbul ignore next */ []));
1730
1739
  // NOTE: because surfaceSampler returns a computed, we need to consume
1731
1740
  // this computed in a Reactive Context (an effect) to ensure the inner logic of
1732
1741
  // surfaceSampler is run properly.
@@ -1738,14 +1747,14 @@ class NgtsSampler {
1738
1747
  });
1739
1748
  effect(sampler);
1740
1749
  }
1741
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1742
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "instances", isSignal: true, isRequired: false, transformFunction: null }, 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: `
1750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsSampler, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1751
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: NgtsSampler, isStandalone: true, selector: "ngts-sampler", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "instances", isSignal: true, isRequired: false, transformFunction: null }, 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: `
1743
1752
  <ngt-group #group [parameters]="parameters()">
1744
1753
  <ng-content />
1745
1754
  </ngt-group>
1746
1755
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1747
1756
  }
1748
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsSampler, decorators: [{
1757
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsSampler, decorators: [{
1749
1758
  type: Component,
1750
1759
  args: [{
1751
1760
  selector: 'ngts-sampler',
@@ -2071,7 +2080,7 @@ function reset(gl, scene, camera) {
2071
2080
  */
2072
2081
  class NgtsSoftShadows {
2073
2082
  constructor() {
2074
- this.options = input(defaultOptions, { ...(ngDevMode ? { debugName: "options" } : {}), transform: mergeInputs(defaultOptions) });
2083
+ this.options = input(defaultOptions, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), transform: mergeInputs(defaultOptions) });
2075
2084
  const store = injectStore();
2076
2085
  effect((onCleanup) => {
2077
2086
  const { gl, scene, camera } = store.snapshot;
@@ -2122,10 +2131,10 @@ class NgtsSoftShadows {
2122
2131
  });
2123
2132
  });
2124
2133
  }
2125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsSoftShadows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2126
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: NgtsSoftShadows, isStandalone: true, selector: "ngts-soft-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
2134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsSoftShadows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2135
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: NgtsSoftShadows, isStandalone: true, selector: "ngts-soft-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
2127
2136
  }
2128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgtsSoftShadows, decorators: [{
2137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NgtsSoftShadows, decorators: [{
2129
2138
  type: Directive,
2130
2139
  args: [{ selector: 'ngts-soft-shadows' }]
2131
2140
  }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });