{"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/lib/backdrop/backdrop.ts","../../../../libs/soba/staging/src/lib/bounds/bounds.ts","../../../../libs/soba/staging/src/lib/camera-shake/camera-shake.ts","../../../../libs/soba/staging/src/lib/center/center.ts","../../../../libs/soba/staging/src/lib/contact-shadows/contact-shadows.ts","../../../../libs/soba/staging/src/lib/environment/presets.ts","../../../../libs/soba/staging/src/lib/environment/environment.ts","../../../../libs/soba/staging/src/lib/float/float.ts","../../../../libs/soba/staging/src/lib/sky/sky.ts","../../../../libs/soba/staging/src/lib/spot-light/spot-light.ts","../../../../libs/soba/staging/src/lib/stage/stage.ts","../../../../libs/soba/staging/src/lib/stars/stars.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import {\n  checkNeedsUpdate,\n  coerceNumberProperty,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NgtRadianPipe,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtPlaneGeometry } from '@angular-three/core/geometries';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  NgModule,\n  TemplateRef,\n} from '@angular/core';\nimport { filter, tap } from 'rxjs';\nimport * as THREE from 'three';\n\nconst easeInExpo = (x: number) => (x === 0 ? 0 : Math.pow(2, 10 * x - 10));\n\nexport interface NgtSobaBackdropState extends NgtObjectPropsState<THREE.Group> {\n  backdrop: Ref<THREE.Mesh>;\n  planeGeometry: Ref<THREE.PlaneGeometry>;\n  floor: number;\n  segments: number;\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-backdrop-content]',\n  standalone: true,\n})\nexport class NgtSobaBackdropContent {\n  constructor(public templateRef: TemplateRef<{ backdrop: Ref<THREE.Mesh> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaBackdropContent, ctx: any): ctx is { backdrop: Ref<THREE.Mesh> } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-backdrop',\n  standalone: true,\n  template: `\n    <ngt-group [ngtObjectPassThrough]=\"this\" receiveShadow=\"false\" skipParent>\n      <ngt-mesh [ref]=\"backdropMesh\" [receiveShadow]=\"receiveShadow\" [rotation]=\"[-90 | radian, 0, 90 | radian]\">\n        <ngt-plane-geometry [ref]=\"planeGeometry\" [args]=\"[1, 1, $any(segments), $any(segments)]\"></ngt-plane-geometry>\n        <ng-container\n          *ngIf=\"content\"\n          [ngTemplateOutlet]=\"content.templateRef\"\n          [ngTemplateOutletContext]=\"{ backdrop: backdropMesh }\"\n        ></ng-container>\n      </ngt-mesh>\n    </ngt-group>\n  `,\n  imports: [NgtGroup, NgtObjectPassThrough, NgtMesh, NgtPlaneGeometry, NgtRadianPipe, NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaBackdrop),\n    provideObjectRef(NgtSobaBackdrop, (backdrop) => backdrop.backdropMesh),\n    provideObjectHostRef(NgtSobaBackdrop),\n  ],\n})\nexport class NgtSobaBackdrop extends NgtObjectProps<THREE.Group, NgtSobaBackdropState> {\n  @Input() set floor(floor: NumberInput) {\n    this.set({ floor: coerceNumberProperty(floor) });\n  }\n\n  @Input() set segments(segments: NumberInput) {\n    this.set({ segments: coerceNumberProperty(segments) });\n  }\n  get segments() {\n    return this.get((s) => s.segments);\n  }\n\n  @ContentChild(NgtSobaBackdropContent) content?: NgtSobaBackdropContent;\n\n  get backdropMesh() {\n    return this.get((s) => s.backdrop);\n  }\n\n  get planeGeometry() {\n    return this.get((s) => s.planeGeometry);\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      backdrop: new Ref(),\n      planeGeometry: new Ref(),\n      floor: state.floor ?? 0.25,\n      segments: state.segments ?? 20,\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.setup(\n          this.select(\n            this.select((s) => s.segments),\n            this.select((s) => s.floor),\n            this.get((s) => s.planeGeometry).pipe(filter((geometry) => !!geometry))\n          )\n        );\n      });\n    });\n  }\n\n  private readonly setup = this.effect(\n    tap(() => {\n      const { segments, floor, planeGeometry } = this.get();\n      let i = 0;\n      const offset = segments / segments / 2;\n      const position = planeGeometry.value.attributes['position'];\n      for (let x = 0; x < segments + 1; x++) {\n        for (let y = 0; y < segments + 1; y++) {\n          position.setXYZ(\n            i++,\n            x / segments - offset + (x === 0 ? -floor : 0),\n            y / segments - offset,\n            easeInExpo(x / segments)\n          );\n        }\n      }\n      checkNeedsUpdate(position);\n      planeGeometry.value.computeVertexNormals();\n    })\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaBackdrop, NgtSobaBackdropContent],\n  exports: [NgtSobaBackdrop, NgtSobaBackdropContent],\n})\nexport class NgtSobaBackdropModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  is,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  EventEmitter,\n  Input,\n  NgModule,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport * as THREE from 'three';\n\nexport interface NgtSobaBoundsSize {\n  box: THREE.Box3;\n  size: THREE.Vector3;\n  center: THREE.Vector3;\n  distance: number;\n}\n\nexport interface NgtSobaBoundsApi {\n  getSize: () => NgtSobaBoundsSize;\n  refresh(object?: THREE.Object3D | THREE.Box3): NgtSobaBoundsApi;\n  clip(): NgtSobaBoundsApi;\n  fit(): NgtSobaBoundsApi;\n}\n\nexport interface NgtSobaBoundsState extends NgtObjectPropsState<THREE.Group> {\n  damping: number;\n  fit: boolean;\n  clip: boolean;\n  observe: boolean;\n  margin: number;\n  eps: number;\n}\n\ntype ControlsProto = {\n  update(): void;\n  target: THREE.Vector3;\n  maxDistance: number;\n  addEventListener: (event: string, callback: (event: any) => void) => void;\n  removeEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: unknown): def is THREE.Box3 => !!def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n  return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n  v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n  v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n  v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-bounds-content]',\n  standalone: true,\n})\nexport class NgtSobaBoundsContent {\n  constructor(\n    public templateRef: TemplateRef<{\n      bounds: Ref<THREE.Group>;\n      api: NgtSobaBoundsApi;\n    }>\n  ) {}\n\n  static ngTemplateContextGuard(\n    dir: NgtSobaBoundsContent,\n    ctx: any\n  ): ctx is {\n    bounds: Ref<THREE.Group>;\n    api: NgtSobaBoundsApi;\n  } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-bounds',\n  standalone: true,\n  template: `\n    <ngt-group [ngtObjectPassThrough]=\"this\">\n      <ng-container\n        *ngIf=\"content\"\n        [ngTemplateOutlet]=\"content.templateRef\"\n        [ngTemplateOutletContext]=\"{ bounds: instance, api: api }\"\n      ></ng-container>\n    </ngt-group>\n    <ng-content></ng-content>\n  `,\n  imports: [NgtGroup, NgtObjectPassThrough, NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideNgtObject(NgtSobaBounds), provideObjectRef(NgtSobaBounds), provideObjectHostRef(NgtSobaBounds)],\n})\nexport class NgtSobaBounds extends NgtObjectProps<THREE.Group, NgtSobaBoundsState> {\n  @Input() set damping(damping: NumberInput) {\n    this.set({ damping: coerceNumberProperty(damping) });\n  }\n\n  @Input() set fit(fit: BooleanInput) {\n    this.set({ fit: coerceBooleanProperty(fit) });\n  }\n\n  @Input() set clip(clip: BooleanInput) {\n    this.set({ clip: coerceBooleanProperty(clip) });\n  }\n\n  @Input() set observe(observe: BooleanInput) {\n    this.set({ observe: coerceBooleanProperty(observe) });\n  }\n\n  @Input() set margin(margin: NumberInput) {\n    this.set({ margin: coerceNumberProperty(margin) });\n  }\n\n  @Input() set eps(eps: NumberInput) {\n    this.set({ eps: coerceNumberProperty(eps) });\n  }\n\n  @Output() fitChange = new EventEmitter<NgtSobaBoundsSize>();\n\n  @ContentChild(NgtSobaBoundsContent) content?: NgtSobaBoundsContent;\n\n  private readonly current = {\n    animating: false,\n    focus: new THREE.Vector3(),\n    camera: new THREE.Vector3(),\n    zoom: 1,\n  };\n\n  private readonly goal = {\n    focus: new THREE.Vector3(),\n    camera: new THREE.Vector3(),\n    zoom: 1,\n  };\n\n  private readonly box = new THREE.Box3();\n\n  private count = 0;\n\n  protected override preInit(): void {\n    super.preInit();\n    this.set((state) => ({\n      damping: state.damping ?? 6,\n      fit: state.fit ?? false,\n      clip: state.clip ?? false,\n      observe: state.observe ?? false,\n      margin: state.margin ?? 1.2,\n      eps: state.eps ?? 0.01,\n    }));\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.preventDragHijacking(this.store.select((s) => s.controls));\n        this.observeSizeChange(\n          this.select(\n            this.store.select((s) => s.size),\n            this.store.select((s) => s.camera),\n            this.store.select((s) => s.controls),\n            this.select((s) => s.clip),\n            this.select((s) => s.fit),\n            this.select((s) => s.observe),\n            this.instance$\n          )\n        );\n        this.setBeforeRender();\n      });\n    });\n  }\n\n  private readonly preventDragHijacking = this.effect(\n    tapEffect(() => {\n      const controls = this.store.get((s) => s.controls) as unknown as ControlsProto;\n\n      if (controls) {\n        // Try to prevent drag hijacking\n        const callback = () => (this.current.animating = false);\n        controls.addEventListener('start', callback);\n        return () => controls.removeEventListener('start', callback);\n      }\n      return;\n    })\n  );\n\n  private readonly observeSizeChange = this.effect(\n    tap(() => {\n      const { clip, fit, observe } = this.get();\n      if (observe || this.count++ === 0) {\n        this.api.refresh();\n        if (fit) this.api.fit();\n        if (clip) this.api.clip();\n      }\n    })\n  );\n\n  private readonly setBeforeRender = this.effect<void>(\n    tapEffect(() =>\n      this.store.registerBeforeRender({\n        callback: ({ delta }) => {\n          if (this.current.animating) {\n            const { damping, eps } = this.get();\n            const controls = this.store.get((s) => s.controls) as unknown as ControlsProto;\n            const camera = this.store.get((s) => s.camera);\n            const invalidate = this.store.get((s) => s.invalidate);\n\n            damp(this.current.focus, this.goal.focus, damping, delta);\n            damp(this.current.camera, this.goal.camera, damping, delta);\n            this.current.zoom = THREE.MathUtils.damp(this.current.zoom, this.goal.zoom, damping, delta);\n            camera.position.copy(this.current.camera);\n\n            if (is.orthographic(camera)) {\n              camera.zoom = this.current.zoom;\n              camera.updateProjectionMatrix();\n            }\n\n            if (!controls) {\n              camera.lookAt(this.current.focus);\n            } else {\n              controls.target.copy(this.current.focus);\n              controls.update();\n            }\n\n            invalidate();\n            if (is.orthographic(camera) && !(Math.abs(this.current.zoom - this.goal.zoom) < eps)) return;\n            if (!is.orthographic(camera) && !equals(this.current.camera, this.goal.camera, eps)) return;\n            if (controls && !equals(this.current.focus, this.goal.focus, eps)) return;\n            this.current.animating = false;\n          }\n        },\n      })\n    )\n  );\n\n  get api(): NgtSobaBoundsApi {\n    return {\n      getSize: () => {\n        const camera = this.store.get((s) => s.camera);\n        const margin = this.get((s) => s.margin);\n\n        const size = this.box.getSize(new THREE.Vector3());\n        const center = this.box.getCenter(new THREE.Vector3());\n        const maxSize = Math.max(size.x, size.y, size.z);\n        const fitHeightDistance = is.orthographic(camera)\n          ? maxSize * 4\n          : maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n        const fitWidthDistance = is.orthographic(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n        const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n        return { box: this.box, size, center, distance };\n      },\n      clip: () => {\n        const { distance } = this.api.getSize();\n        const controls = this.store.get((s) => s.controls) as unknown as ControlsProto;\n        const camera = this.store.get((s) => s.camera);\n        const invalidate = this.store.get((s) => s.invalidate);\n\n        if (controls) controls.maxDistance = distance * 10;\n        camera.near = distance / 100;\n        camera.far = distance * 100;\n        camera.updateProjectionMatrix();\n        if (controls) controls.update();\n        invalidate();\n        return this.api;\n      },\n      fit: () => {\n        const controls = this.store.get((s) => s.controls) as unknown as ControlsProto;\n        const camera = this.store.get((s) => s.camera);\n        const invalidate = this.store.get((s) => s.invalidate);\n\n        const { damping, margin } = this.get();\n\n        this.current.camera.copy(camera.position);\n        if (controls) this.current.focus.copy(controls.target);\n\n        const { center, distance } = this.api.getSize();\n        const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n        this.goal.camera.copy(center).sub(direction);\n        this.goal.focus.copy(center);\n\n        if (is.orthographic(camera)) {\n          this.current.zoom = camera.zoom;\n\n          let maxHeight = 0,\n            maxWidth = 0;\n          const vertices = [\n            new THREE.Vector3(this.box.min.x, this.box.min.y, this.box.min.z),\n            new THREE.Vector3(this.box.min.x, this.box.max.y, this.box.min.z),\n            new THREE.Vector3(this.box.min.x, this.box.min.y, this.box.max.z),\n            new THREE.Vector3(this.box.min.x, this.box.max.y, this.box.max.z),\n            new THREE.Vector3(this.box.max.x, this.box.max.y, this.box.max.z),\n            new THREE.Vector3(this.box.max.x, this.box.max.y, this.box.min.z),\n            new THREE.Vector3(this.box.max.x, this.box.min.y, this.box.max.z),\n            new THREE.Vector3(this.box.max.x, this.box.min.y, this.box.min.z),\n          ];\n          // Transform the center and each corner to camera space\n          center.applyMatrix4(camera.matrixWorldInverse);\n          for (const v of vertices) {\n            v.applyMatrix4(camera.matrixWorldInverse);\n            maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n            maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n          }\n          maxHeight *= 2;\n          maxWidth *= 2;\n          const zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n          const zoomForWidth = (camera.right - camera.left) / maxWidth;\n          this.goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n          if (!damping) {\n            camera.zoom = this.goal.zoom;\n            camera.updateProjectionMatrix();\n          }\n        }\n\n        if (damping) {\n          this.current.animating = true;\n        } else {\n          camera.position.copy(this.goal.camera);\n          camera.lookAt(this.goal.focus);\n          if (controls) {\n            controls.target.copy(this.goal.focus);\n            controls.update();\n          }\n        }\n        if (this.fitChange.observed) {\n          this.fitChange.emit(this.api.getSize());\n        }\n        invalidate();\n        return this.api;\n      },\n      refresh: (object?: THREE.Object3D | THREE.Box3) => {\n        const { camera, controls } = this.store.get();\n\n        if (isBox3(object)) this.box.copy(object);\n        else {\n          const target = object || this.instance.value;\n          target.updateWorldMatrix(true, true);\n          this.box.setFromObject(target);\n        }\n        if (this.box.isEmpty()) {\n          const max = camera.position.length() || 10;\n          this.box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n        }\n\n        if (controls?.constructor.name === 'OrthographicTrackballControls') {\n          // Put camera on a sphere along which it should moves\n          const { distance } = this.api.getSize();\n          const direction = camera.position\n            .clone()\n            .sub((controls as unknown as ControlsProto).target)\n            .normalize()\n            .multiplyScalar(distance);\n          const newPos = (controls as unknown as ControlsProto).target.clone().add(direction);\n          camera.position.copy(newPos);\n        }\n\n        return this.api;\n      },\n    };\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaBounds, NgtSobaBoundsContent],\n  exports: [NgtSobaBounds, NgtSobaBoundsContent],\n})\nexport class NgtSobaBoundsModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NgtInstance,\n  NgtInstanceState,\n  NumberInput,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\nimport { SimplexNoise } from 'three-stdlib';\n\nexport interface NgtSobaCameraShakeState extends NgtInstanceState<{}> {\n  intensityRef: Ref<number>;\n  initialRotation: Ref<THREE.Euler>;\n\n  intensity: number;\n  decayRate: number;\n  maxYaw: number;\n  maxPitch: number;\n  maxRoll: number;\n  yawFrequency: number;\n  pitchFrequency: number;\n  rollFrequency: number;\n  decay: boolean;\n}\n\n@Component({\n  selector: 'ngt-soba-camera-shake',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtSobaCameraShake extends NgtInstance<{}, NgtSobaCameraShakeState> {\n  @Input() set intensity(intensity: NumberInput) {\n    this.set({ intensity: coerceNumberProperty(intensity) });\n  }\n\n  @Input() set decayRate(decayRate: NumberInput) {\n    this.set({ decayRate: coerceNumberProperty(decayRate) });\n  }\n\n  @Input() set maxYaw(maxYaw: NumberInput) {\n    this.set({ maxYaw: coerceNumberProperty(maxYaw) });\n  }\n\n  @Input() set maxPitch(maxPitch: NumberInput) {\n    this.set({ maxPitch: coerceNumberProperty(maxPitch) });\n  }\n\n  @Input() set maxRoll(maxRoll: NumberInput) {\n    this.set({ maxRoll: coerceNumberProperty(maxRoll) });\n  }\n\n  @Input() set yawFrequency(yawFrequency: NumberInput) {\n    this.set({ yawFrequency: coerceNumberProperty(yawFrequency) });\n  }\n\n  @Input() set pitchFrequency(pitchFrequency: NumberInput) {\n    this.set({ pitchFrequency: coerceNumberProperty(pitchFrequency) });\n  }\n\n  @Input() set rollFrequency(rollFrequency: NumberInput) {\n    this.set({ rollFrequency: coerceNumberProperty(rollFrequency) });\n  }\n\n  @Input() set decay(decay: BooleanInput) {\n    this.set({ decay: coerceBooleanProperty(decay) });\n  }\n\n  private readonly yawNoise = new SimplexNoise();\n  private readonly pitchNoise = new SimplexNoise();\n  private readonly rollNoise = new SimplexNoise();\n\n  protected override preInit(): void {\n    super.preInit();\n    this.set((state) => {\n      const intensity = state.intensity ?? 1;\n      return {\n        intensity,\n        intensityRef: new Ref(intensity),\n        initialRotation: new Ref(),\n        decayRate: state.decayRate ?? 0.65,\n        maxYaw: state.maxYaw ?? 0.1,\n        maxPitch: state.maxPitch ?? 0.1,\n        maxRoll: state.maxRoll ?? 0.1,\n        yawFrequency: state.yawFrequency ?? 0.1,\n        pitchFrequency: state.pitchFrequency ?? 0.1,\n        rollFrequency: state.rollFrequency ?? 0.1,\n        decay: state.decay ?? false,\n      };\n    });\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        const camera = this.store.get((s) => s.camera);\n        this.get((s) => s.initialRotation).set(camera.rotation.clone());\n\n        this.configureChangeEvent(\n          this.select(\n            this.store.select((s) => s.camera),\n            this.store.select((s) => s.controls)\n          )\n        );\n\n        this.setBeforeRender();\n      });\n    });\n  }\n\n  private readonly configureChangeEvent = this.effect(\n    tapEffect(() => {\n      const { controls, camera } = this.store.get();\n      if (controls) {\n        const initialRotation = this.get((s) => s.initialRotation);\n\n        const callback = () => void initialRotation.set(camera.rotation.clone());\n        controls.addEventListener('change', callback);\n        callback();\n        return () => void controls.removeEventListener('change', callback);\n      }\n      return;\n    })\n  );\n\n  private readonly setBeforeRender = this.effect<void>(\n    tapEffect(() =>\n      this.store.registerBeforeRender({\n        callback: ({ clock, delta }) => {\n          const {\n            intensityRef,\n            maxYaw,\n            maxPitch,\n            maxRoll,\n            yawFrequency,\n            pitchFrequency,\n            rollFrequency,\n            initialRotation,\n            decay,\n            decayRate,\n          } = this.get();\n          const camera = this.store.get((s) => s.camera);\n\n          const shake = Math.pow(intensityRef.value, 2);\n          const yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n          const pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n          const roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n          camera.rotation.set(\n            initialRotation.value.x + pitch,\n            initialRotation.value.y + yaw,\n            initialRotation.value.z + roll\n          );\n\n          if (decay && intensityRef.value > 0) {\n            intensityRef.set(decayRate * delta);\n            this.constrainIntensity();\n          }\n        },\n      })\n    )\n  );\n\n  getIntensity() {\n    return this.get((s) => s.intensityRef).value;\n  }\n\n  setIntensity(intensity: number) {\n    const intensityRef = this.get((s) => s.intensityRef);\n    intensityRef.set(intensity);\n    this.constrainIntensity();\n  }\n\n  private constrainIntensity() {\n    const intensityRef = this.get((s) => s.intensityRef);\n    if (intensityRef.value < 0 || intensityRef.value > 1) {\n      intensityRef.set(intensityRef.value < 0 ? 0 : 1);\n    }\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaCameraShake],\n  exports: [NgtSobaCameraShake],\n})\nexport class NgtSobaCameraShakeModule {}\n","import {\n  AnyFunction,\n  BooleanInput,\n  coerceBooleanProperty,\n  NGT_OBJECT_REF,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  Input,\n  NgModule,\n  QueryList,\n  TemplateRef,\n} from '@angular/core';\nimport { asyncScheduler, combineLatest, filter, observeOn, pipe, switchMap, tap } from 'rxjs';\nimport * as THREE from 'three';\n\n@Directive({\n  selector: 'ng-template[ngt-soba-center-content]',\n  standalone: true,\n})\nexport class NgtSobaCenterContent {\n  constructor(public templateRef: TemplateRef<{ group: Ref<THREE.Group> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaCenterContent, ctx: any): ctx is { group: Ref<THREE.Group> } {\n    return true;\n  }\n}\n\nexport interface NgtSobaCenterState extends NgtObjectPropsState<THREE.Group> {\n  innerGroup: Ref<THREE.Group>;\n  outerGroup: Ref<THREE.Group>;\n\n  alignTop: boolean;\n}\n\n@Component({\n  selector: 'ngt-soba-center',\n  standalone: true,\n  template: `\n    <ngt-group [ngtObjectPassThrough]=\"this\" skipParent>\n      <ngt-group [ref]=\"outerGroup\">\n        <ngt-group [ref]=\"innerGroup\">\n          <ng-container\n            *ngIf=\"content\"\n            [ngTemplateOutlet]=\"content.templateRef\"\n            [ngTemplateOutletContext]=\"{ group: innerGroup }\"\n          ></ng-container>\n        </ngt-group>\n      </ngt-group>\n    </ngt-group>\n    <ng-content></ng-content>\n  `,\n  imports: [NgtGroup, NgtObjectPassThrough, NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaCenter),\n    provideObjectRef(NgtSobaCenter, (center) => center.innerGroup),\n    provideObjectHostRef(NgtSobaCenter),\n  ],\n})\nexport class NgtSobaCenter extends NgtObjectProps<THREE.Group, NgtSobaCenterState> implements AfterContentInit {\n  @Input() set alignTop(alignTop: BooleanInput) {\n    this.set({ alignTop: coerceBooleanProperty(alignTop) });\n  }\n\n  @ContentChild(NgtSobaCenterContent) content?: NgtSobaCenterContent;\n  @ContentChildren(NGT_OBJECT_REF) children!: QueryList<AnyFunction>;\n\n  get innerGroup() {\n    return this.get((s) => s.innerGroup);\n  }\n\n  get outerGroup() {\n    return this.get((s) => s.outerGroup);\n  }\n\n  protected override preInit(): void {\n    super.preInit();\n    this.set((state) => ({\n      innerGroup: new Ref(),\n      outerGroup: new Ref(),\n      alignTop: state.alignTop ?? false,\n    }));\n  }\n\n  ngAfterContentInit() {\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.setPosition(\n          this.select(\n            this.innerGroup.pipe(filter((group) => !!group)),\n            this.outerGroup.pipe(filter((group) => !!group)),\n            this.select((s) => s.alignTop),\n            this.children.changes.pipe(switchMap(() => combineLatest(this.children.map((child) => child()))))\n          )\n        );\n      });\n    });\n  }\n\n  private readonly setPosition = this.effect(\n    pipe(\n      observeOn(asyncScheduler),\n      tap(() => {\n        const { outerGroup, innerGroup, alignTop } = this.get();\n        outerGroup.value.position.set(0, 0, 0);\n        outerGroup.value.updateWorldMatrix(true, true);\n        const box3 = new THREE.Box3().setFromObject(innerGroup.value);\n        const center = new THREE.Vector3();\n        const sphere = new THREE.Sphere();\n        const height = box3.max.y - box3.min.y;\n        box3.getCenter(center);\n        box3.getBoundingSphere(sphere);\n        outerGroup.value.position.set(-center.x, -center.y + (alignTop ? height / 2 : 0), -center.z);\n      })\n    )\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaCenter, NgtSobaCenterContent],\n  exports: [NgtSobaCenter, NgtSobaCenterContent],\n})\nexport class NgtSobaCenterModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  is,\n  make,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NgtRadianPipe,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtOrthographicCamera } from '@angular-three/core/cameras';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgtMeshBasicMaterial } from '@angular-three/core/materials';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport { tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nexport interface NgtSobaContactShadowsState extends NgtObjectPropsState<THREE.Group> {\n  opacity: number;\n  width: number;\n  height: number;\n  blur: number;\n  far: number;\n  smooth: boolean;\n  resolution: number;\n  frames: number;\n  depthWrite: boolean;\n}\n\n@Component({\n  selector: 'ngt-soba-contact-shadows',\n  standalone: true,\n  template: `\n    <ngt-group\n      (beforeRender)=\"onBeforeRender($event.object)\"\n      [ngtObjectPassThrough]=\"this\"\n      [rotation]=\"[90 | radian, 0, 0]\"\n      name=\"soba-contact-shadows\"\n    >\n      <ng-container *ngIf=\"shadowViewModel$ | async as viewModel\">\n        <ngt-mesh [geometry]=\"viewModel.planeGeometry\" [scale]=\"[1, -1, 1]\" [rotation]=\"[-90 | radian, 0, 0]\">\n          <ngt-mesh-basic-material\n            [map]=\"viewModel.renderTarget.texture\"\n            transparent\n            [opacity]=\"viewModel.opacity\"\n            [depthWrite]=\"viewModel.depthWrite\"\n          ></ngt-mesh-basic-material>\n        </ngt-mesh>\n\n        <ngt-orthographic-camera\n          [ref]=\"shadowCameraRef\"\n          [args]=\"[\n            -viewModel.width / 2,\n            viewModel.width / 2,\n            viewModel.height / 2,\n            -viewModel.height / 2,\n            0,\n            viewModel.far\n          ]\"\n        ></ngt-orthographic-camera>\n      </ng-container>\n    </ngt-group>\n  `,\n  imports: [\n    NgtGroup,\n    NgtObjectPassThrough,\n    NgtRadianPipe,\n    NgIf,\n    AsyncPipe,\n    NgtMesh,\n    NgtMeshBasicMaterial,\n    NgtOrthographicCamera,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaContactShadows),\n    provideObjectRef(NgtSobaContactShadows),\n    provideObjectHostRef(NgtSobaContactShadows),\n  ],\n})\nexport class NgtSobaContactShadows extends NgtObjectProps<THREE.Group, NgtSobaContactShadowsState> {\n  @Input() set opacity(opacity: NumberInput) {\n    this.set({ opacity: coerceNumberProperty(opacity) });\n  }\n  get opacity() {\n    return this.get((s) => s.opacity);\n  }\n\n  @Input() set width(width: NumberInput) {\n    this.set({ width: coerceNumberProperty(width) });\n  }\n\n  get width() {\n    return this.get((s) => s['scaledWidth']);\n  }\n  @Input() set height(height: NumberInput) {\n    this.set({ height: coerceNumberProperty(height) });\n  }\n\n  get height() {\n    return this.get((s) => s['scaledHeight']);\n  }\n  @Input() set blur(blur: NumberInput) {\n    this.set({ blur: coerceNumberProperty(blur) });\n  }\n\n  @Input() set far(far: NumberInput) {\n    this.set({ far: coerceNumberProperty(far) });\n  }\n\n  get far() {\n    return this.get((s) => s.far);\n  }\n\n  @Input() set smooth(smooth: BooleanInput) {\n    this.set({ smooth: coerceBooleanProperty(smooth) });\n  }\n\n  @Input() set resolution(resolution: NumberInput) {\n    this.set({ resolution: coerceNumberProperty(resolution) });\n  }\n\n  @Input() set frames(frames: NumberInput) {\n    this.set({ frames: coerceNumberProperty(frames) });\n  }\n\n  @Input() set depthWrite(depthWrite: BooleanInput) {\n    this.set({ depthWrite: coerceBooleanProperty(depthWrite) });\n  }\n  get depthWrite() {\n    return this.get((s) => s.depthWrite);\n  }\n\n  private count = 1;\n  readonly shadowViewModel$ = this.select(\n    this.select((s) => s.priority),\n    this.select((s) => s['planeGeometry']),\n    this.select((s) => s['renderTarget']),\n    this.select((s) => s.opacity),\n    this.select((s) => s.depthWrite),\n    this.select((s) => s['scaledWidth']),\n    this.select((s) => s['scaledHeight']),\n    this.select((s) => s.far),\n    (priority, planeGeometry, renderTarget, opacity, depthWrite, width, height, far) => ({\n      priority,\n      planeGeometry,\n      renderTarget,\n      opacity,\n      depthWrite,\n      width,\n      height,\n      far,\n    })\n  );\n  get planeGeometry() {\n    return this.get((s) => s['planeGeometry']);\n  }\n  get renderTarget() {\n    return this.get((s) => s['renderTarget']);\n  }\n\n  get shadowCameraRef() {\n    return this.get((s) => s['shadowCameraRef']);\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => {\n      return {\n        shadowCameraRef: new Ref(),\n        scale: is.equ(state.scale.toArray(), make(THREE.Vector3, 1).toArray()) ? make(THREE.Vector3, 10) : state.scale,\n        frames: state.frames ?? Infinity,\n        opacity: state.opacity ?? 1,\n        width: state.width ?? 1,\n        height: state.height ?? 1,\n        blur: state.blur ?? 1,\n        far: state.far ?? 10,\n        resolution: state.resolution ?? 512,\n        smooth: state.smooth ?? true,\n        color: is.equ(state.color.toArray(), make(THREE.Color).toArray()) ? make(THREE.Color, '#000000') : state.color,\n        depthWrite: state.depthWrite ?? false,\n      };\n    });\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        // reset width and height\n        this.set(\n          this.select(\n            this.select((s) => s.width),\n            this.select((s) => s.height),\n            this.select((s) => s.scale),\n            (width, height, scale) => {\n              return {\n                scaledWidth: width * scale.x,\n                scaledHeight: height * scale.y,\n              };\n            }\n          )\n        );\n\n        this.setShadows(\n          this.select(\n            this.select((s) => s.resolution),\n            this.select((s) => s['scaledWidth']),\n            this.select((s) => s['scaledHeight']),\n            this.select((s) => s.scale),\n            this.select((s) => s.color)\n          )\n        );\n      });\n    });\n  }\n\n  private readonly setShadows = this.effect(\n    tap(() => {\n      const { resolution, scaledWidth: width, scaledHeight: height, color } = this.get();\n      const gl = this.store.get((s) => s.gl);\n\n      const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n      renderTarget.texture.encoding = gl.outputEncoding;\n\n      const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n      renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n\n      const planeGeometry = new THREE.PlaneBufferGeometry(width, height).rotateX(Math.PI / 2);\n      const blurPlane = new THREE.Mesh(planeGeometry);\n      const depthMaterial = new THREE.MeshDepthMaterial();\n      depthMaterial.depthTest = depthMaterial.depthWrite = false;\n      depthMaterial.onBeforeCompile = (shader) => {\n        shader.uniforms = {\n          ...shader.uniforms,\n          ucolor: {\n            value: new THREE.Color(color).convertSRGBToLinear(),\n          },\n        };\n        shader.fragmentShader = shader.fragmentShader.replace(\n          `void main() {`, //\n          `uniform vec3 ucolor;\n           void main() {\n          `\n        );\n        shader.fragmentShader = shader.fragmentShader.replace(\n          'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n          'vec4( ucolor, ( 1.0 - fragCoordZ ) * 1.0 );'\n        );\n      };\n\n      const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n      const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n      verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n      this.zone.run(() => {\n        this.set({\n          renderTarget,\n          planeGeometry,\n          depthMaterial,\n          blurPlane,\n          horizontalBlurMaterial,\n          verticalBlurMaterial,\n          renderTargetBlur,\n        });\n      });\n    })\n  );\n\n  onBeforeRender(group: THREE.Group) {\n    group.scale.setScalar(1);\n    const { shadowCameraRef, frames, depthMaterial, renderTarget, smooth, blur } = this.get();\n    const gl = this.store.get((s) => s.gl);\n    const scene = this.store.get((s) => s.scene);\n\n    if (shadowCameraRef.value && renderTarget && (frames === Infinity || this.count < frames)) {\n      const initialBackground = scene.background;\n      scene.background = null;\n      const initialOverrideMaterial = scene.overrideMaterial;\n      scene.overrideMaterial = depthMaterial;\n      gl.setRenderTarget(renderTarget);\n      gl.render(scene, shadowCameraRef.value);\n      scene.overrideMaterial = initialOverrideMaterial;\n\n      this.blurShadows(blur);\n      if (smooth) this.blurShadows(blur * 0.4);\n\n      gl.setRenderTarget(null);\n      scene.background = initialBackground;\n      this.count++;\n    }\n  }\n\n  private blurShadows(blur: number) {\n    const { renderTarget, blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, shadowCameraRef } =\n      this.get();\n    const gl = this.store.get((s) => s.gl);\n\n    blurPlane.visible = true;\n\n    blurPlane.material = horizontalBlurMaterial;\n    horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture;\n    horizontalBlurMaterial.uniforms.h.value = blur / 256;\n\n    gl.setRenderTarget(renderTargetBlur);\n    gl.render(blurPlane, shadowCameraRef.value);\n\n    blurPlane.material = verticalBlurMaterial;\n    verticalBlurMaterial.uniforms.tDiffuse.value = renderTargetBlur.texture;\n    verticalBlurMaterial.uniforms.v.value = blur / 256;\n\n    gl.setRenderTarget(renderTarget);\n    gl.render(blurPlane, shadowCameraRef.value);\n\n    blurPlane.visible = false;\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaContactShadows],\n  exports: [NgtSobaContactShadows],\n})\nexport class NgtSobaContactShadowsModule {}\n","export const presetsObj = {\n  sunset: 'venice/venice_sunset_1k.hdr',\n  dawn: 'kiara/kiara_1_dawn_1k.hdr',\n  night: 'dikhololo/dikhololo_night_1k.hdr',\n  warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',\n  forest: 'forrest-slope/forest_slope_1k.hdr',\n  apartment: 'lebombo/lebombo_1k.hdr',\n  studio: 'studio-small-3/studio_small_03_1k.hdr',\n  city: 'potsdamer-platz/potsdamer_platz_1k.hdr',\n  park: 'rooitou/rooitou_park_1k.hdr',\n  lobby: 'st-fagans/st_fagans_interior_1k.hdr',\n};\n\nexport type PresetsType = keyof typeof presetsObj;\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  is,\n  NgtComponentStore,\n  NgtInstance,\n  NgtInstanceState,\n  NgtLoader,\n  NgtPortal,\n  NgtSidePipe,\n  NgtStore,\n  NumberInput,\n  prepare,\n  Ref,\n  startWithUndefined,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtCubeCamera } from '@angular-three/core/cameras';\nimport { NgtIcosahedronGeometry } from '@angular-three/core/geometries';\nimport { NgtShaderMaterial } from '@angular-three/core/materials';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  inject,\n  Injectable,\n  Input,\n  NgModule,\n  Optional,\n  Self,\n  TemplateRef,\n} from '@angular/core';\nimport {\n  animationFrameScheduler,\n  filter,\n  isObservable,\n  Observable,\n  observeOn,\n  of,\n  pipe,\n  startWith,\n  Subscription,\n  take,\n  takeUntil,\n  tap,\n} from 'rxjs';\nimport * as THREE from 'three';\nimport { RGBELoader } from 'three-stdlib';\nimport { presetsObj, PresetsType } from './presets';\n\nconst fragmentShader =\n  // language=glsl\n  `\n#define ENVMAP_TYPE_CUBE_UV\n\nvarying vec3 vWorldPosition;\n\nuniform float radius;\nuniform float height;\n\n#ifdef ENVMAP_TYPE_CUBE\n  uniform samplerCube cubemap;\n#else\n  uniform sampler2D cubemap;\n#endif\n\n// From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm\nfloat diskIntersect( in vec3 ro, in vec3 rd, vec3 c, vec3 n, float r ) {\n    vec3  o = ro - c;\n    float t = -dot(n, o)/dot(rd,n);\n    vec3  q = o + rd * t;\n    return (dot(q, q) < r * r) ? t : 1e6;\n}\n\n// From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm\nfloat sphereIntersect( in vec3 ro, in vec3 rd, in vec3 ce, float ra ) {\n    vec3 oc = ro - ce;\n    float b = dot( oc, rd );\n    float c = dot( oc, oc ) - ra*ra;\n    float h = b * b - c;\n    if(h < 0.0) -1.0;\n    h = sqrt( h );\n    return -b + h;\n}\n\nvec3 project() {\n  vec3 p = normalize(vWorldPosition);\n  vec3 camPos = cameraPosition;\n  camPos.y -= height;\n\n  float intersection = sphereIntersect(camPos, p, vec3(0.), radius);\n  if(intersection > 0.) {\n    vec3 h = vec3(0.0,-height,0.0);\n    float intersection2 = diskIntersect(camPos, p, h, vec3(0.0,-1.0,0.0), radius);\n    p = (camPos + min(intersection, intersection2) * p) / radius;\n  }\n  else {\n    p = vec3(0.0,1.0,0.0);\n  }\n  return p;\n}\n\n#include <common>\n#include <cube_uv_reflection_fragment>\n\nvoid main(){\n  vec3 projectedWorldPosition = project();\n\n  #ifdef ENVMAP_TYPE_CUBE\n    vec3 outcolor = textureCube(cubemap, projectedWorldPosition).rgb;\n  #else\n    vec3 direction = normalize(projectedWorldPosition);\n    vec2 uv = equirectUv(direction);\n    vec3 outcolor = texture2D(cubemap, uv).rgb;\n  #endif\n\n  gl_FragColor = vec4(outcolor, 1.0);\n\n  #include <tonemapping_fragment>\n  #include <encodings_fragment>\n}`;\n\nconst vertexShader =\n  // language=glsl\n  `\nvarying vec3 vWorldPosition;\n\nvoid main() {\n  vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n  vWorldPosition = worldPosition.xyz;\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}`;\n\nconst CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';\n\nconst isCubeTexture = (def: unknown): def is THREE.CubeTexture => !!def && (def as THREE.CubeTexture).isCubeTexture;\nfunction resolveScene(scene: THREE.Scene | Ref<THREE.Scene>): THREE.Scene {\n  return is.ref(scene) ? scene.value : scene;\n}\n\nexport interface NgtSobaEnvironmentGenericState<T extends object = {}> extends NgtInstanceState<T> {\n  frames?: number;\n  near?: number;\n  far?: number;\n  resolution?: number;\n  background?: boolean | 'only';\n  map?: THREE.Texture;\n  files?: string | string[];\n  path?: string;\n  preset?: PresetsType;\n  scene?: THREE.Scene | Ref<THREE.Scene>;\n  extensions?: (loader: THREE.Loader) => void;\n  ground?:\n    | boolean\n    | {\n        radius?: number;\n        height?: number;\n        scale?: number;\n      };\n}\n\n@Directive()\nexport abstract class NgtSobaEnvironmentGeneric<T extends object = {}> extends NgtInstance<\n  T,\n  NgtSobaEnvironmentGenericState<T>\n> {\n  get frames() {\n    return this.get((s) => s.frames);\n  }\n  @Input() set frames(frames: NumberInput) {\n    this.set({ frames: coerceNumberProperty(frames) });\n  }\n\n  get near() {\n    return this.get((s) => s.near);\n  }\n  @Input() set near(near: NumberInput) {\n    this.set({ near: coerceNumberProperty(near) });\n  }\n\n  get far() {\n    return this.get((s) => s.far);\n  }\n  @Input() set far(far: NumberInput) {\n    this.set({ far: coerceNumberProperty(far) });\n  }\n\n  get resolution() {\n    return this.get((s) => s.resolution);\n  }\n  @Input() set resolution(resolution: NumberInput) {\n    this.set({ resolution: coerceNumberProperty(resolution) });\n  }\n\n  get background() {\n    return this.get((s) => s.background);\n  }\n  @Input() set background(background: BooleanInput | 'only') {\n    this.set({\n      background: background === 'only' ? background : coerceBooleanProperty(background),\n    });\n  }\n\n  get map() {\n    return this.get((s) => s.map) as THREE.Texture;\n  }\n  @Input() set map(map: THREE.Texture) {\n    this.set({ map });\n  }\n\n  get files() {\n    return this.get((s) => s.files) as string | string[];\n  }\n  @Input() set files(files: string | string[]) {\n    this.set({ files });\n  }\n\n  get path() {\n    return this.get((s) => s.path) as string;\n  }\n  @Input() set path(path: string) {\n    this.set({ path });\n  }\n\n  get preset() {\n    return this.get((s) => s.preset) as PresetsType;\n  }\n  @Input() set preset(preset: PresetsType) {\n    this.set({ preset });\n  }\n\n  get scene() {\n    return this.get((s) => s.scene) as THREE.Scene | Ref<THREE.Scene>;\n  }\n  @Input() set scene(scene: THREE.Scene | Ref<THREE.Scene>) {\n    this.set({ scene });\n  }\n\n  get extensions() {\n    return this.get((s) => s.extensions) as (loader: THREE.Loader) => void;\n  }\n  @Input() set extensions(extensions: (loader: THREE.Loader) => void) {\n    this.set({ extensions });\n  }\n\n  get ground() {\n    return this.get((s) => s.ground);\n  }\n  @Input() set ground(\n    ground:\n      | BooleanInput\n      | {\n          radius?: number;\n          height?: number;\n          scale?: number;\n        }\n  ) {\n    this.set({\n      ground: is.obj(ground) ? ground : coerceBooleanProperty(ground),\n    });\n  }\n}\n\n@Directive({\n  selector: '[ngtSobaEnvironmentPassThrough]',\n  standalone: true,\n})\nexport class NgtSobaEnvironmentPassThrough {\n  @Input() set ngtSobaEnvironmentPassThrough(wrapper: unknown) {\n    this.assertWrapper(wrapper);\n\n    wrapper\n      .select(\n        wrapper.select((s) => s.frames).pipe(startWithUndefined()),\n        wrapper.select((s) => s.near).pipe(startWithUndefined()),\n        wrapper.select((s) => s.far).pipe(startWithUndefined()),\n        wrapper.select((s) => s.resolution).pipe(startWithUndefined()),\n        wrapper.select((s) => s.background).pipe(startWithUndefined()),\n        wrapper.select((s) => s.map).pipe(startWithUndefined()),\n        wrapper.select((s) => s.files).pipe(startWithUndefined()),\n        wrapper.select((s) => s.path).pipe(startWithUndefined()),\n        wrapper.select((s) => s.preset).pipe(startWithUndefined()),\n        wrapper.select((s) => s.scene).pipe(startWithUndefined()),\n        wrapper.select((s) => s.extensions).pipe(startWithUndefined()),\n        wrapper.select((s) => s.ground).pipe(startWithUndefined())\n      )\n      .pipe(takeUntil(wrapper.destroy$))\n      .subscribe(() => {\n        this.host.frames = wrapper.frames;\n        this.host.near = wrapper.near;\n        this.host.far = wrapper.far;\n        this.host.resolution = wrapper.resolution;\n        this.host.background = wrapper.background;\n        this.host.map = wrapper.map;\n        this.host.files = wrapper.files;\n        this.host.path = wrapper.path;\n        this.host.preset = wrapper.preset;\n        this.host.scene = wrapper.scene;\n        this.host.extensions = wrapper.extensions;\n        this.host.ground = wrapper.ground;\n      });\n  }\n\n  constructor(@Self() @Optional() private host: NgtSobaEnvironmentGeneric) {\n    if (!host) return;\n  }\n\n  private assertWrapper(wrapper: unknown): asserts wrapper is NgtSobaEnvironmentGeneric {\n    if (!(wrapper instanceof NgtSobaEnvironmentGeneric)) {\n      throw new Error(`[ngtSobaEnvironmentPassThrough] wrapper is not an NgtSobaEnvironmentGeneric`);\n    }\n  }\n}\n\nexport type NgtSobaEnvironmentResolverParams = Partial<\n  Pick<NgtSobaEnvironmentGenericState, 'files' | 'path' | 'preset' | 'extensions'>\n>;\n\nexport interface NgtSobaEnvironmentResolverState\n  extends Pick<NgtSobaEnvironmentGenericState, 'files' | 'path' | 'preset' | 'extensions'> {\n  textureRef: Ref<THREE.Texture | THREE.CubeTexture>;\n}\n\n@Injectable()\nexport class NgtSobaEnvironmentResolver extends NgtComponentStore<NgtSobaEnvironmentResolverState> {\n  constructor(private loader: NgtLoader, private store: NgtStore) {\n    super();\n    this.set({ textureRef: new Ref() });\n  }\n\n  private useSubscription?: Subscription;\n\n  use(\n    paramsFactory: (\n      defaultParams: NgtSobaEnvironmentResolverParams\n    ) => NgtSobaEnvironmentResolverParams | Observable<NgtSobaEnvironmentResolverParams>\n  ): Ref<THREE.Texture | THREE.CubeTexture> {\n    if (this.useSubscription) {\n      this.useSubscription.unsubscribe();\n    }\n\n    const params = paramsFactory({\n      files: ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],\n      path: '',\n    });\n\n    const params$ = isObservable(params) ? params : of(params);\n\n    this.set(params$);\n\n    this.useSubscription = this.store.onReady(() => {\n      this.setTexture(\n        this.select(\n          this.select((s) => s.path),\n          this.select((s) => s.files),\n          this.select((s) => s.preset).pipe(startWithUndefined()),\n          this.select((s) => s.extensions).pipe(startWithUndefined())\n        )\n      );\n\n      return () => {\n        if (this.useSubscription) {\n          this.useSubscription.unsubscribe();\n        }\n      };\n    });\n\n    return this.get((s) => s.textureRef);\n  }\n\n  private readonly setTexture = this.effect(\n    tapEffect(() => {\n      const { textureRef, extensions, preset } = this.get();\n      let { files, path } = this.get();\n\n      if (preset) {\n        if (!(preset in presetsObj)) throw new Error('Preset must be one of: ' + Object.keys(presetsObj).join(', '));\n        files = presetsObj[preset];\n        path = CUBEMAP_ROOT;\n      }\n\n      const isCubeMap = Array.isArray(files);\n      const loader = isCubeMap ? THREE.CubeTextureLoader : RGBELoader;\n\n      const sub = this.loader\n        .use(\n          // @ts-expect-error\n          loader,\n          isCubeMap ? [files] : files,\n          (loader) => {\n            loader.setPath(path!);\n            if (extensions) extensions(loader);\n          }\n        ) // @ts-ignore\n        .subscribe((data) => {\n          const texture: THREE.Texture | THREE.CubeTexture = isCubeMap\n            ? // @ts-ignore\n              data[0]\n            : data;\n\n          texture.mapping = isCubeMap ? THREE.CubeReflectionMapping : THREE.EquirectangularReflectionMapping;\n\n          textureRef.set(texture);\n        });\n\n      return () => {\n        sub.unsubscribe();\n      };\n    })\n  );\n}\n\n@Component({\n  selector: 'ngt-soba-environment-map[map]',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaEnvironmentGeneric,\n      useExisting: NgtSobaEnvironmentMap,\n    },\n  ],\n})\nexport class NgtSobaEnvironmentMap extends NgtSobaEnvironmentGeneric {\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      background: state.background ?? false,\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.setEnvironment(\n          this.select(\n            this.store.select((s) => s.scene),\n            this.select((s) => s.background),\n            this.select((s) => s.map),\n            this.select((s) => s.scene).pipe(startWithUndefined())\n          )\n        );\n      });\n    });\n  }\n\n  private readonly setEnvironment = this.effect(\n    tapEffect(() => {\n      const { map, background, scene } = this.get();\n      const defaultScene = this.store.get((s) => s.scene);\n\n      if (map) {\n        const target = resolveScene(scene || defaultScene);\n        const oldBg = target.background;\n        const oldEnv = target.environment;\n\n        if (background !== 'only') {\n          target.environment = map;\n        }\n\n        if (background) {\n          target.background = map;\n        }\n\n        return () => {\n          if (background !== 'only') {\n            target.environment = oldEnv;\n          }\n\n          if (background) {\n            target.background = oldBg;\n          }\n        };\n      }\n      return;\n    })\n  );\n}\n\n@Component({\n  selector: 'ngt-soba-environment-cube',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaEnvironmentGeneric,\n      useExisting: NgtSobaEnvironmentCube,\n    },\n    NgtSobaEnvironmentResolver,\n  ],\n})\nexport class NgtSobaEnvironmentCube extends NgtSobaEnvironmentGeneric {\n  private environmentResolver = inject(NgtSobaEnvironmentResolver);\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      background: state.background ?? false,\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        const textureRef = this.environmentResolver.use((defaultParams) => {\n          return this.select(\n            this.select((s) => s.files).pipe(startWith(defaultParams.files)),\n            this.select((s) => s.path).pipe(startWith(defaultParams.path)),\n            this.select((s) => s.preset).pipe(startWithUndefined()),\n            this.select((s) => s.extensions).pipe(startWithUndefined()),\n            (files, path, preset, extensions) => ({\n              files,\n              path,\n              preset,\n              extensions,\n            })\n          );\n        });\n\n        this.setEnvironment(\n          this.select(\n            textureRef.pipe(filter((texture) => !!texture)),\n            this.select((s) => s.background),\n            this.select((s) => s.scene).pipe(startWithUndefined()),\n            this.store.select((s) => s.scene),\n            (texture) => ({ texture })\n          )\n        );\n      });\n    });\n  }\n\n  private readonly setEnvironment = this.effect<{\n    texture: THREE.Texture | THREE.CubeTexture;\n  }>(\n    tapEffect(({ texture }) => {\n      const defaultScene = this.store.get((s) => s.scene);\n      const { background, scene } = this.get();\n\n      const target = resolveScene(scene || defaultScene);\n      const oldBg = target.background;\n      const oldEnv = target.environment;\n      if (background !== 'only') {\n        target.environment = texture;\n      }\n\n      if (background) {\n        target.background = texture;\n      }\n\n      return () => {\n        if (background !== 'only') {\n          target.environment = oldEnv;\n        }\n\n        if (background) {\n          target.background = oldBg;\n        }\n      };\n    })\n  );\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-environment-content]',\n  standalone: true,\n})\nexport class NgtSobaEnvironmentContent {\n  constructor(public templateRef: TemplateRef<unknown>) {}\n}\n\n@Component({\n  selector: 'ngt-soba-environment-portal',\n  standalone: true,\n  template: `\n    <ngt-portal [ref]=\"virtualScene\">\n      <ng-container *ngTemplateOutlet=\"content.templateRef\"></ng-container>\n\n      <ngt-cube-camera\n        *ngIf=\"fbo$ | async as fbo\"\n        [ref]=\"cubeCamera\"\n        (beforeRender)=\"onBeforeRender()\"\n        [args]=\"[$any(near), $any(far), fbo]\"\n      ></ngt-cube-camera>\n\n      <ngt-soba-environment-cube\n        *ngIf=\"files || preset; else environmentMap\"\n        [ngtSobaEnvironmentPassThrough]=\"this\"\n      ></ngt-soba-environment-cube>\n\n      <ng-template #environmentMap>\n        <ngt-soba-environment-map [ngtSobaEnvironmentPassThrough]=\"this\" [map]=\"map\"></ngt-soba-environment-map>\n      </ng-template>\n    </ngt-portal>\n  `,\n  imports: [\n    NgtPortal,\n    NgtCubeCamera,\n    NgtSobaEnvironmentPassThrough,\n    NgtSobaEnvironmentCube,\n    NgtSobaEnvironmentMap,\n    NgIf,\n    AsyncPipe,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaEnvironmentGeneric,\n      useExisting: NgtSobaEnvironmentPortal,\n    },\n  ],\n})\nexport class NgtSobaEnvironmentPortal extends NgtSobaEnvironmentGeneric {\n  readonly virtualScene = new Ref(prepare(new THREE.Scene(), () => this.store.get()));\n  readonly cubeCamera = new Ref<THREE.CubeCamera>();\n\n  @ContentChild(NgtSobaEnvironmentContent, { static: true })\n  content!: NgtSobaEnvironmentContent;\n\n  private count = 1;\n\n  readonly fbo$ = this.select((s) => s['fbo']);\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      near: state.near ?? 1,\n      far: state.far ?? 1000,\n      resolution: state.resolution ?? 256,\n      frames: state.frames ?? 1,\n      background: state.background ?? false,\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.set(\n          this.select(\n            this.select((s) => s.resolution),\n            (resolution) => {\n              const fbo = new THREE.WebGLCubeRenderTarget(resolution!);\n              fbo.texture.type = THREE.HalfFloatType;\n              return { fbo };\n            }\n          )\n        );\n\n        this.setEnvironment(this.select(this.select(), this.cubeCamera.pipe(filter((camera) => !!camera))));\n      });\n    });\n  }\n\n  private readonly setEnvironment = this.effect(\n    tapEffect(() => {\n      const { gl, scene: defaultScene } = this.store.get();\n      const { frames, scene, background, fbo } = this.get();\n\n      if (frames === 1) {\n        (this.cubeCamera.value as THREE.CubeCamera).update(gl, this.virtualScene.value);\n      }\n      const target = resolveScene(scene || defaultScene);\n      const oldBg = target.background;\n      const oldEnv = target.environment;\n      if (background !== 'only') {\n        target.environment = fbo.texture;\n      }\n\n      if (background) {\n        target.background = fbo.texture;\n      }\n\n      return () => {\n        if (background !== 'only') {\n          target.environment = oldEnv;\n        }\n\n        if (background) {\n          target.background = oldBg;\n        }\n      };\n    })\n  );\n\n  onBeforeRender() {\n    const { camera, frames } = this.get();\n    const gl = this.store.get((s) => s.gl);\n    if (camera && (frames === Infinity || this.count < frames!)) {\n      camera.update(gl, this.virtualScene.value);\n      this.count++;\n    }\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-environment-ground',\n  standalone: true,\n  template: `\n    <ng-container *ngIf=\"environmentGroundViewModel$ | async as viewModel\">\n      <ngt-soba-environment-map\n        [ngtSobaEnvironmentPassThrough]=\"this\"\n        [map]=\"viewModel.texture\"\n      ></ngt-soba-environment-map>\n\n      <ngt-mesh [scale]=\"viewModel.scale\">\n        <ngt-icosahedron-geometry [args]=\"[1, 16]\"></ngt-icosahedron-geometry>\n        <ngt-shader-material\n          [ref]=\"materialRef\"\n          [side]=\"'back' | side\"\n          [vertexShader]=\"vertexShader\"\n          [fragmentShader]=\"viewModel.fragment\"\n          [uniforms]=\"uniforms\"\n        ></ngt-shader-material>\n      </ngt-mesh>\n    </ng-container>\n  `,\n  imports: [\n    NgtSobaEnvironmentMap,\n    NgtMesh,\n    NgtIcosahedronGeometry,\n    NgtShaderMaterial,\n    NgtSidePipe,\n    NgtSobaEnvironmentPassThrough,\n    NgIf,\n    AsyncPipe,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaEnvironmentGeneric,\n      useExisting: NgtSobaEnvironmentGround,\n    },\n    NgtSobaEnvironmentResolver,\n  ],\n})\nexport class NgtSobaEnvironmentGround extends NgtSobaEnvironmentGeneric {\n  readonly materialRef = new Ref<THREE.ShaderMaterial>();\n  readonly vertexShader = vertexShader;\n\n  private environmentResolver = inject(NgtSobaEnvironmentResolver);\n\n  readonly uniforms = {\n    cubemap: { value: null },\n    height: { value: 15 },\n    radius: { value: 60 },\n  };\n\n  readonly environmentGroundViewModel$ = this.select(\n    this.select((s) => s['texture']),\n    this.select((s) => s['scale']),\n    this.select((s) => s['fragment']),\n    (texture, scale, fragment) => ({ texture, scale, fragment })\n  );\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.store.onReady(() => {\n      const textureRef = this.environmentResolver.use((defaultParams) =>\n        this.select(\n          this.select((s) => s.files).pipe(startWith(defaultParams.files)),\n          this.select((s) => s.path).pipe(startWith(defaultParams.path)),\n          this.select((s) => s.preset).pipe(startWithUndefined()),\n          this.select((s) => s.extensions).pipe(startWithUndefined()),\n          (files, path, preset, extensions) => ({\n            files,\n            path,\n            preset,\n            extensions,\n          })\n        )\n      );\n\n      this.set(\n        this.select(\n          this.select((s) => s.map).pipe(startWithUndefined()),\n          textureRef.pipe(filter((texture) => !!texture)),\n          (map, texture) => {\n            if (map) {\n              texture = map;\n            }\n            return {\n              texture,\n              isCubeMap: isCubeTexture(texture),\n            };\n          }\n        )\n      );\n\n      this.setDefines(this.select((s) => s['texture']).pipe(take(1)));\n      this.setFragment(this.select((s) => s['defines']));\n      this.setMaterialOptions(this.select((s) => s.ground));\n\n      this.setHeightUniform(\n        this.select(\n          this.materialRef.pipe(filter((material) => !!material)),\n          this.select((s) => s['height']).pipe(startWithUndefined())\n        )\n      );\n      this.setRadiusUniform(\n        this.select(\n          this.materialRef.pipe(filter((material) => !!material)),\n          this.select((s) => s['radius']).pipe(startWithUndefined())\n        )\n      );\n      this.setCubeMapUniform(\n        this.select(\n          this.materialRef.pipe(filter((material) => !!material)),\n          this.select((s) => s['texture'])\n        )\n      );\n    });\n  }\n\n  private readonly setDefines = this.effect(\n    tap(() => {\n      const { isCubeMap, texture } = this.get();\n      const w = (isCubeMap ? texture.image[0]?.width : texture.image.width) ?? 1024;\n      const cubeSize = w / 4;\n      const _lodMax = Math.floor(Math.log2(cubeSize));\n      const _cubeSize = Math.pow(2, _lodMax);\n      const width = 3 * Math.max(_cubeSize, 16 * 7);\n      const height = 4 * _cubeSize;\n\n      this.set({\n        defines: [\n          isCubeMap ? `#define ENVMAP_TYPE_CUBE` : '',\n          `#define CUBEUV_TEXEL_WIDTH ${1.0 / width}`,\n          `#define CUBEUV_TEXEL_HEIGHT ${1.0 / height}`,\n          `#define CUBEUV_MAX_MIP ${_lodMax}.0`,\n          ``,\n        ],\n      });\n    })\n  );\n\n  private readonly setFragment = this.effect(\n    tap(() => {\n      const defines = this.get((s) => s['defines']);\n      this.set({ fragment: defines.join('\\n') + fragmentShader });\n    })\n  );\n\n  private readonly setMaterialOptions = this.effect(\n    tap(() => {\n      const ground = this.get((s) => s.ground) as {\n        radius?: number;\n        height?: number;\n        scale?: number;\n      };\n\n      this.set({\n        height: ground?.height,\n        radius: ground?.radius,\n        scale: ground?.scale ?? 1000,\n      });\n    })\n  );\n\n  private readonly setHeightUniform = this.effect(\n    pipe(\n      observeOn(animationFrameScheduler),\n      tap(() => {\n        const { height } = this.get();\n\n        if (this.materialRef.value) {\n          if (height) {\n            this.materialRef.value.uniforms['height'].value = height;\n          }\n        }\n      })\n    )\n  );\n\n  private readonly setRadiusUniform = this.effect(\n    pipe(\n      observeOn(animationFrameScheduler),\n      tap(() => {\n        const { radius } = this.get();\n\n        if (this.materialRef.value) {\n          if (radius) {\n            this.materialRef.value.uniforms['radius'].value = radius;\n          }\n        }\n      })\n    )\n  );\n\n  private readonly setCubeMapUniform = this.effect(\n    pipe(\n      observeOn(animationFrameScheduler),\n      tap(() => {\n        const { texture } = this.get();\n\n        if (this.materialRef.value) {\n          this.materialRef.value.uniforms['cubemap'].value = texture;\n        }\n      })\n    )\n  );\n}\n\n@Component({\n  selector: 'ngt-soba-environment',\n  standalone: true,\n  template: `\n    <ngt-soba-environment-ground\n      *ngIf=\"!!ground; else mapOrPortalOrCube\"\n      [ngtSobaEnvironmentPassThrough]=\"this\"\n    ></ngt-soba-environment-ground>\n    <ng-template #mapOrPortalOrCube>\n      <ngt-soba-environment-map\n        *ngIf=\"!!map; else portalOrCube\"\n        [ngtSobaEnvironmentPassThrough]=\"this\"\n        [map]=\"map\"\n      ></ngt-soba-environment-map>\n\n      <ng-template #portalOrCube>\n        <ngt-soba-environment-portal *ngIf=\"!!content; else cube\" [ngtSobaEnvironmentPassThrough]=\"this\">\n          <ng-template ngt-soba-environment-content>\n            <ng-container *ngTemplateOutlet=\"content.templateRef\"></ng-container>\n          </ng-template>\n        </ngt-soba-environment-portal>\n\n        <ng-template #cube>\n          <ngt-soba-environment-cube [ngtSobaEnvironmentPassThrough]=\"this\"></ngt-soba-environment-cube>\n        </ng-template>\n      </ng-template>\n    </ng-template>\n\n    <ng-content></ng-content>\n  `,\n  imports: [\n    NgtSobaEnvironmentGround,\n    NgtSobaEnvironmentMap,\n    NgtSobaEnvironmentPortal,\n    NgtSobaEnvironmentCube,\n    NgtSobaEnvironmentPassThrough,\n    NgtSobaEnvironmentContent,\n    NgIf,\n    NgTemplateOutlet,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [{ provide: NgtSobaEnvironmentGeneric, useExisting: NgtSobaEnvironment }],\n})\nexport class NgtSobaEnvironment extends NgtSobaEnvironmentGeneric {\n  @ContentChild(NgtSobaEnvironmentContent)\n  content?: NgtSobaEnvironmentContent;\n}\n\n@NgModule({\n  imports: [NgtSobaEnvironment, NgtSobaEnvironmentContent],\n  exports: [NgtSobaEnvironment, NgtSobaEnvironmentContent],\n})\nexport class NgtSobaEnvironmentModule {}\n","import {\n  AnyFunction,\n  coerceNumberProperty,\n  NGT_OBJECT_REF,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  Input,\n  NgModule,\n  QueryList,\n  TemplateRef,\n} from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({\n  selector: 'ng-template[ngt-soba-float-content]',\n  standalone: true,\n})\nexport class NgtSobaFloatContent {\n  constructor(public templateRef: TemplateRef<{ group: Ref<THREE.Group> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaFloatContent, ctx: any): ctx is { group: Ref<THREE.Group> } {\n    return true;\n  }\n}\n\nexport interface NgtSobaFloatState extends NgtObjectPropsState<THREE.Group> {\n  innerGroup: Ref<THREE.Group>;\n\n  speed: number;\n  rotationIntensity: number;\n  floatIntensity: number;\n}\n\n@Component({\n  selector: 'ngt-soba-float',\n  standalone: true,\n  template: `\n    <ngt-group skipParent [ngtObjectPassThrough]=\"this\">\n      <ngt-group [ref]=\"innerGroup\">\n        <ng-container\n          *ngIf=\"content\"\n          [ngTemplateOutlet]=\"content.templateRef\"\n          [ngTemplateOutletContext]=\"{ group: innerGroup }\"\n        ></ng-container>\n      </ngt-group>\n    </ngt-group>\n    <ng-content></ng-content>\n  `,\n  imports: [NgtGroup, NgtObjectPassThrough, NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaFloat),\n    provideObjectRef(NgtSobaFloat, (float) => float.innerGroup),\n    provideObjectHostRef(NgtSobaFloat),\n  ],\n})\nexport class NgtSobaFloat extends NgtObjectProps<THREE.Group, NgtSobaFloatState> {\n  @Input() set speed(speed: NumberInput) {\n    this.set({ speed: coerceNumberProperty(speed) });\n  }\n\n  @Input() set rotationIntensity(rotationIntensity: NumberInput) {\n    this.set({\n      rotationIntensity: coerceNumberProperty(rotationIntensity),\n    });\n  }\n\n  @Input() set floatIntensity(floatIntensity: NumberInput) {\n    this.set({ floatIntensity: coerceNumberProperty(floatIntensity) });\n  }\n\n  @ContentChild(NgtSobaFloatContent) content?: NgtSobaFloatContent;\n  @ContentChildren(NGT_OBJECT_REF) children!: QueryList<AnyFunction>;\n\n  private readonly offset = Math.random() * 10000;\n\n  get innerGroup() {\n    return this.get((s) => s.innerGroup);\n  }\n\n  protected override preInit(): void {\n    super.preInit();\n    this.set((state) => ({\n      innerGroup: new Ref(),\n      speed: state.speed ?? 1,\n      rotationIntensity: state.rotationIntensity ?? 1,\n      floatIntensity: state.floatIntensity ?? 1,\n    }));\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() =>\n        this.store.registerBeforeRender({\n          callback: ({ clock }) => {\n            const { speed, rotationIntensity, floatIntensity } = this.get();\n            const t = this.offset + clock.getElapsedTime();\n\n            if (this.instance.value) {\n              this.instance.value.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n              this.instance.value.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n              this.instance.value.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n              this.instance.value.position.y = (Math.sin((t / 4) * speed) / 10) * floatIntensity;\n            }\n          },\n        })\n      );\n    });\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaFloat, NgtSobaFloatContent],\n  exports: [NgtSobaFloat, NgtSobaFloatContent],\n})\nexport class NgtSobaFloatModule {}\n","import {\n  AnyConstructor,\n  checkNeedsUpdate,\n  coerceNumberProperty,\n  NgtCommonMesh,\n  NgtVector3,\n  NumberInput,\n  Ref,\n} from '@angular-three/core';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  NgModule,\n  TemplateRef,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nexport function calcPosFromAngles(inclination: number, azimuth: number, vector: THREE.Vector3 = new THREE.Vector3()) {\n  const theta = Math.PI * (inclination - 0.5);\n  const phi = 2 * Math.PI * (azimuth - 0.5);\n\n  vector.x = Math.cos(phi);\n  vector.y = Math.sin(theta);\n  vector.z = Math.sin(phi);\n\n  return vector;\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-sky-content]',\n  standalone: true,\n})\nexport class NgtSobaSkyContent {\n  constructor(public templateRef: TemplateRef<{ sky: Ref<Sky> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaSkyContent, ctx: any): ctx is { sky: Ref<Sky> } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-sky',\n  standalone: true,\n  template: `\n    <ng-container\n      *ngIf=\"content\"\n      [ngTemplateOutlet]=\"content.templateRef\"\n      [ngTemplateOutletContext]=\"{ sky: instance }\"\n    ></ng-container>\n    <ng-content></ng-content>\n  `,\n  imports: [NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtSobaSky extends NgtCommonMesh<Sky> {\n  @Input() set distance(distance: NumberInput) {\n    this.set({ distance: coerceNumberProperty(distance) });\n  }\n\n  @Input() set sunPosition(sunPosition: NgtVector3) {\n    this.set({ sunPosition });\n  }\n\n  @Input() set inclination(inclination: NumberInput) {\n    this.set({ inclination: coerceNumberProperty(inclination) });\n  }\n\n  @Input() set azimuth(azimuth: NumberInput) {\n    this.set({ azimuth: coerceNumberProperty(azimuth) });\n  }\n\n  @Input() set mieCoefficient(mieCoefficient: NumberInput) {\n    this.set({ mieCoefficient: coerceNumberProperty(mieCoefficient) });\n  }\n\n  @Input() set mieDirectionalG(mieDirectionalG: NumberInput) {\n    this.set({ mieDirectionalG: coerceNumberProperty(mieDirectionalG) });\n  }\n\n  @Input() set rayleigh(rayleigh: NumberInput) {\n    this.set({ rayleigh: coerceNumberProperty(rayleigh) });\n  }\n\n  @Input() set turbidity(turbidity: NumberInput) {\n    this.set({ turbidity: coerceNumberProperty(turbidity) });\n  }\n\n  @ContentChild(NgtSobaSkyContent) content?: NgtSobaSkyContent;\n\n  protected override preInit(): void {\n    super.preInit();\n    this.set((state) => {\n      const inclination = state['inclination'] ?? 0.6;\n      const azimuth = state['azimuth'] ?? 0.1;\n      return {\n        inclination,\n        azimuth,\n        distance: state['distance'] ?? 1000,\n        mieCoefficient: state['mieCoefficient'] ?? 0.005,\n        mieDirectionalG: state['mieDirectionalG'] ?? 0.8,\n        rayleigh: state['rayleigh'] ?? 0.5,\n        turbidity: state['turbidity'] ?? 10,\n        sunPosition: state['sunPosition'] ?? calcPosFromAngles(inclination, azimuth),\n      };\n    });\n  }\n\n  protected override postInit(): void {\n    super.postInit();\n    this.setScale(this.select((s) => s['distance']));\n    this.updateMaterialUniforms(\n      this.select(\n        this.select((s) => s['mieCoefficient']),\n        this.select((s) => s['mieDirectionalG']),\n        this.select((s) => s['rayleigh']),\n        this.select((s) => s['sunPosition']),\n        this.select((s) => s['turbidity'])\n      )\n    );\n  }\n\n  private readonly setScale = this.effect(\n    tap(() => {\n      const distance = this.get((s) => s['distance']);\n      this.instance.value.scale.copy(new THREE.Vector3().setScalar(distance));\n    })\n  );\n\n  private readonly updateMaterialUniforms = this.effect(\n    tap(() => {\n      const { mieCoefficient, mieDirectionalG, rayleigh, sunPosition, turbidity } = this.get();\n\n      const material = this.instance.value.material as THREE.ShaderMaterial;\n      material.uniforms['mieCoefficient'].value = mieCoefficient;\n      material.uniforms['mieDirectionalG'].value = mieDirectionalG;\n      material.uniforms['rayleigh'].value = rayleigh;\n      material.uniforms['sunPosition'].value = sunPosition;\n      material.uniforms['turbidity'].value = turbidity;\n\n      checkNeedsUpdate(material);\n    })\n  );\n\n  get meshType(): AnyConstructor<Sky> {\n    return Sky;\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaSky, NgtSobaSkyContent],\n  exports: [NgtSobaSky, NgtSobaSkyContent],\n})\nexport class NgtSobaSkyModule {}\n","import {\n  coerceNumberProperty,\n  make,\n  NgtObjectPassThrough,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtSpotLight, NgtSpotLightPassThrough } from '@angular-three/core/lights';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { SpotLightMaterial } from '@angular-three/soba/materials';\nimport { NgtSobaSpotLightMaterial } from '@angular-three/soba/shaders';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\n\nconst vec = new THREE.Vector3();\n\n@Component({\n  selector: 'ngt-soba-spot-light',\n  standalone: true,\n  template: `\n    <ngt-spot-light\n      [ngtObjectPassThrough]=\"this\"\n      [ngtSpotLightPassThrough]=\"this\"\n      [angle]=\"lightAngle\"\n      [color]=\"color\"\n      [distance]=\"lightDistance\"\n    >\n      <ngt-mesh [ref]=\"meshRef\" [raycast]=\"meshRaycast\" [geometry]=\"(geometry$ | async)!\">\n        <ngt-soba-spot-light-material\n          [ref]=\"materialRef\"\n          [uniforms]=\"{\n            opacity: { value: opacity },\n            lightColor: { value: color },\n            attenuation: { value: attenuation },\n            anglePower: { value: anglePower },\n            depth: { value: depthBuffer },\n            cameraNear: { value: cameraNear },\n            cameraFar: { value: cameraFar },\n            resolution: {\n              value: depthBuffer ? [size.width * dpr, size.height * dpr] : [0, 0]\n            }\n          }\"\n        ></ngt-soba-spot-light-material>\n      </ngt-mesh>\n    </ngt-spot-light>\n  `,\n  imports: [NgtSpotLight, NgtObjectPassThrough, NgtSpotLightPassThrough, NgtMesh, NgtSobaSpotLightMaterial, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaSpotLight),\n    provideObjectRef(NgtSobaSpotLight),\n    provideObjectHostRef(NgtSobaSpotLight),\n  ],\n})\nexport class NgtSobaSpotLight extends NgtSpotLight {\n  readonly meshRef = new Ref<THREE.Mesh>();\n  readonly materialRef = new Ref<SpotLightMaterial>();\n\n  @Input() set depthBuffer(depthBuffer: THREE.DepthTexture) {\n    this.set({ depthBuffer });\n  }\n\n  get depthBuffer() {\n    return this.get((s) => s['depthBuffer']) ?? null;\n  }\n\n  @Input() set attenuation(attenuation: NumberInput) {\n    this.set({ attenuation: coerceNumberProperty(attenuation) });\n  }\n\n  get attenuation() {\n    return this.get((s) => s['attenuation']);\n  }\n\n  @Input() set anglePower(anglePower: NumberInput) {\n    this.set({ anglePower: coerceNumberProperty(anglePower) });\n  }\n\n  get anglePower() {\n    return this.get((s) => s['anglePower']);\n  }\n\n  @Input() set radiusTop(radiusTop: NumberInput) {\n    this.set({ radiusTop: coerceNumberProperty(radiusTop) });\n  }\n\n  @Input() set radiusBottom(radiusBottom: NumberInput) {\n    this.set({ radiusBottom: coerceNumberProperty(radiusBottom) });\n  }\n\n  @Input() set opacity(opacity: NumberInput) {\n    this.set({ opacity: coerceNumberProperty(opacity) });\n  }\n\n  get opacity() {\n    return this.get((s) => s['opacity']);\n  }\n\n  get lightAngle() {\n    return this.get((s) => s['angle']);\n  }\n\n  get lightDistance() {\n    return this.get((s) => s['distance']);\n  }\n\n  get cameraNear() {\n    return this.store.get((s) => s.camera.near);\n  }\n\n  get cameraFar() {\n    return this.store.get((s) => s.camera.far);\n  }\n\n  get size() {\n    return this.store.get((s) => s.size);\n  }\n\n  get dpr() {\n    return this.store.get((s) => s.viewport.dpr);\n  }\n\n  readonly meshRaycast = () => null;\n\n  override shouldPassThroughRef = false;\n\n  readonly geometry$ = this.select(\n    this.select((s) => s['angle']),\n    this.select((s) => s['distance']),\n    this.select((s) => s['radiusTop']),\n    this.select((s) => s['radiusBottom']),\n    (angle, distance, radiusTop, radiusBottom) => {\n      const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);\n      geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));\n      geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n      return geometry;\n    }\n  );\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => {\n      const angle = state['angle'] ?? 0.15;\n      const radiusBottomExplicit = !!state['radiusBottom'];\n      return {\n        opacity: state['opacity'] ?? 1,\n        color: state['color'] ?? make(THREE.Color, 'white'),\n        distance: state['distance'] ?? 5,\n        angle,\n        attenuation: state['attenuation'] ?? 5,\n        anglePower: state['anglePower'] ?? 5,\n        radiusTop: state['radiusTop'] ?? 0.1,\n        radiusBottom: state['radiusBottom'] ?? angle * 7,\n        radiusBottomExplicit,\n      };\n    });\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.set(\n          this.select(\n            this.select((s) => s['angle']),\n            (angle) => {\n              const radiusBottomExplicit = this.get((s) => s['radiusBottomExplicit']);\n              const radiusBottom = this.get((s) => s['radiusBottom']);\n              return {\n                radiusBottom: radiusBottomExplicit ? radiusBottom : angle * 7,\n              };\n            }\n          )\n        );\n\n        this.setBeforeRender();\n      });\n    });\n  }\n\n  private readonly setBeforeRender = this.effect<void>(\n    tapEffect(() =>\n      this.store.registerBeforeRender({\n        callback: () => {\n          if (this.materialRef.value && this.meshRef.value) {\n            this.materialRef.value.uniforms['spotPosition'].value.copy(this.meshRef.value.getWorldPosition(vec));\n            if (this.meshRef.value.parent) {\n              this.meshRef.value.lookAt((this.meshRef.value.parent as THREE.SpotLight).target.getWorldPosition(vec));\n            }\n          }\n        },\n      })\n    )\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaSpotLight],\n  exports: [NgtSobaSpotLight],\n})\nexport class NgtSobaSpotLightModule {}\n","import {\n  AnyFunction,\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NGT_OBJECT_REF,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtValueAttribute } from '@angular-three/core/attributes';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgtAmbientLight, NgtPointLight, NgtSpotLight } from '@angular-three/core/lights';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  Input,\n  NgModule,\n  OnInit,\n  QueryList,\n  TemplateRef,\n} from '@angular/core';\nimport { asyncScheduler, combineLatest, filter, observeOn, pipe, skip, switchMap, tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { NgtSobaContactShadows } from '../contact-shadows/contact-shadows';\nimport { NgtSobaEnvironment } from '../environment/environment';\nimport { PresetsType } from '../environment/presets';\n\nconst presets = {\n  rembrandt: {\n    main: [1, 2, 1],\n    fill: [-2, -0.5, -2],\n  },\n  portrait: {\n    main: [-1, 2, 0.5],\n    fill: [-1, 0.5, -1.5],\n  },\n  upfront: {\n    main: [0, 2, 1],\n    fill: [-1, 0.5, -1.5],\n  },\n  soft: {\n    main: [-2, 4, 4],\n    fill: [-1, 0.5, -1.5],\n  },\n};\n\ntype ControlsProto = { update(): void; target: THREE.Vector3 };\n\nexport interface NgtSobaStageState extends NgtObjectPropsState<THREE.Group> {\n  outerGroup: Ref<THREE.Group>;\n  innerGroup: Ref<THREE.Group>;\n  radius: number;\n  width: number;\n  height: number;\n\n  shadows: boolean;\n  adjustCamera: boolean;\n  environment: PresetsType | null;\n  intensity: number;\n  preset: keyof typeof presets;\n  shadowBias: number;\n  contactShadow:\n    | {\n        blur: number;\n        opacity?: number;\n        position?: [x: number, y: number, z: number];\n      }\n    | false;\n  ambience?: number;\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-stage-content]',\n  standalone: true,\n})\nexport class NgtSobaStageContent {\n  constructor(public templateRef: TemplateRef<{ group: Ref<THREE.Group> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaStageContent, ctx: any): ctx is { group: Ref<THREE.Group> } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-stage',\n  standalone: true,\n  template: `\n    <ngt-group [ngtObjectPassThrough]=\"this\" skipParent>\n      <ngt-group [ref]=\"outerGroup\">\n        <ngt-group [ref]=\"innerGroup\">\n          <ng-container\n            *ngIf=\"content\"\n            [ngTemplateOutlet]=\"content.templateRef\"\n            [ngTemplateOutletContext]=\"{ group: innerGroup }\"\n          ></ng-container>\n        </ngt-group>\n      </ngt-group>\n\n      <ngt-soba-contact-shadows\n        *ngIf=\"contactShadow\"\n        [scale]=\"radius * 2\"\n        [far]=\"radius / 2\"\n        [blur]=\"contactShadow.blur\"\n        [opacity]=\"contactShadow.opacity\"\n        [position]=\"contactShadow.position\"\n      ></ngt-soba-contact-shadows>\n\n      <ngt-soba-environment *ngIf=\"environment\" [preset]=\"environment\"></ngt-soba-environment>\n\n      <ngt-ambient-light [intensity]=\"intensity / 3\"></ngt-ambient-light>\n      <ngt-spot-light\n        penumbra=\"1\"\n        [position]=\"[config.main[0] * radius, config.main[1] * radius, config.main[2] * radius]\"\n        [intensity]=\"intensity * 2\"\n        [castShadow]=\"shadows\"\n      >\n        <ngt-value [attach]=\"['shadow', 'bias']\" [value]=\"shadowBias\"></ngt-value>\n      </ngt-spot-light>\n      <ngt-point-light\n        [position]=\"[config.fill[0] * radius, config.fill[1] * radius, config.fill[2] * radius]\"\n        [intensity]=\"intensity\"\n      ></ngt-point-light>\n    </ngt-group>\n  `,\n  imports: [\n    NgtGroup,\n    NgtObjectPassThrough,\n    NgtSobaContactShadows,\n    NgtSobaEnvironment,\n    NgtAmbientLight,\n    NgtSpotLight,\n    NgtPointLight,\n    NgtValueAttribute,\n    NgIf,\n    NgTemplateOutlet,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaStage),\n    provideObjectRef(NgtSobaStage, (stage) => stage.innerGroup),\n    provideObjectHostRef(NgtSobaStage),\n  ],\n})\nexport class NgtSobaStage extends NgtObjectProps<THREE.Group, NgtSobaStageState> implements OnInit, AfterContentInit {\n  get shadows() {\n    return this.get((s) => s.shadows);\n  }\n  @Input() set shadows(shadows: BooleanInput) {\n    this.set({ shadows: coerceBooleanProperty(shadows) });\n  }\n\n  get adjustCamera() {\n    return this.get((s) => s.adjustCamera);\n  }\n  @Input() set adjustCamera(adjustCamera: BooleanInput) {\n    this.set({ adjustCamera: coerceBooleanProperty(adjustCamera) });\n  }\n\n  get environment() {\n    return this.get((s) => s.environment);\n  }\n  @Input() set environment(environment: PresetsType | null) {\n    this.set({ environment });\n  }\n\n  get intensity(): number {\n    return this.get((s) => s.intensity);\n  }\n  @Input() set intensity(intensity: NumberInput) {\n    this.set({ intensity: coerceNumberProperty(intensity) });\n  }\n\n  get ambience() {\n    return this.get((s) => s.ambience);\n  }\n  @Input() set ambience(ambience: NumberInput) {\n    this.set({ ambience: coerceNumberProperty(ambience) });\n  }\n\n  get preset() {\n    return this.get((s) => s.preset);\n  }\n  @Input() set preset(preset: keyof typeof presets) {\n    this.set({ preset });\n  }\n\n  get shadowBias() {\n    return this.get((s) => s.shadowBias);\n  }\n  @Input() set shadowBias(shadowBias: NumberInput) {\n    this.set({ shadowBias: coerceNumberProperty(shadowBias) });\n  }\n\n  get contactShadow() {\n    return this.get((s) => s.contactShadow);\n  }\n  @Input() set contactShadow(\n    contactShadow:\n      | {\n          blur: number;\n          opacity?: number;\n          position?: [x: number, y: number, z: number];\n        }\n      | false\n  ) {\n    this.set({ contactShadow });\n  }\n\n  @ContentChild(NgtSobaStageContent) content?: NgtSobaStageContent;\n  @ContentChildren(NGT_OBJECT_REF) children!: QueryList<AnyFunction>;\n\n  get innerGroup() {\n    return this.get((s) => s.innerGroup);\n  }\n\n  get outerGroup() {\n    return this.get((s) => s.outerGroup);\n  }\n\n  get radius() {\n    return this.get((s) => s.radius);\n  }\n\n  get width() {\n    return this.get((s) => s.width);\n  }\n\n  get height() {\n    return this.get((s) => s.height);\n  }\n\n  get config() {\n    return presets[this.get((s) => s.preset)];\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      innerGroup: new Ref(),\n      outerGroup: new Ref(),\n      radius: 0,\n      width: 0,\n      height: 0,\n      shadows: state.shadows ?? true,\n      adjustCamera: state.adjustCamera ?? true,\n      environment: state.environment ?? 'city',\n      intensity: state.intensity ?? 1,\n      preset: state.preset ?? 'rembrandt',\n      shadowBias: state.shadowBias ?? 0,\n      contactShadow: state.contactShadow ?? {\n        blur: 2,\n        opacity: 0.5,\n        position: [0, 0, 0],\n      },\n    }));\n  }\n\n  ngAfterContentInit() {\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.setDimensions(\n          this.select(\n            this.innerGroup.pipe(filter((group) => !!group)),\n            this.outerGroup.pipe(filter((group) => !!group)),\n            this.children.changes.pipe(switchMap(() => combineLatest(this.children.map((child) => child()))))\n          )\n        );\n\n        this.updateControls(\n          this.select(\n            this.store.select((s) => s.controls),\n            this.select((s) => s.radius).pipe(skip(1)),\n            this.select((s) => s.height).pipe(skip(1)),\n            this.select((s) => s.width).pipe(skip(1)),\n            this.select((s) => s.adjustCamera)\n          )\n        );\n      });\n    });\n  }\n\n  private readonly setDimensions = this.effect(\n    pipe(\n      observeOn(asyncScheduler),\n      tap(() => {\n        const { innerGroup, outerGroup } = this.get();\n        if (innerGroup.value && outerGroup.value) {\n          outerGroup.value.position.set(0, 0, 0);\n          outerGroup.value.updateWorldMatrix(true, true);\n          const box3 = new THREE.Box3().setFromObject(innerGroup.value);\n          const center = new THREE.Vector3();\n          const sphere = new THREE.Sphere();\n          const height = box3.max.y - box3.min.y;\n          const width = box3.max.x - box3.min.x;\n          box3.getCenter(center);\n          box3.getBoundingSphere(sphere);\n\n          this.zone.run(() => {\n            this.set({ radius: sphere.radius, width, height });\n          });\n\n          outerGroup.value.position.set(-center.x, -center.y + height / 2, -center.z);\n        }\n      })\n    )\n  );\n\n  private readonly updateControls = this.effect(\n    tap(() => {\n      const { adjustCamera, width, height, radius } = this.get();\n      const { camera, controls } = this.store.get();\n      if (adjustCamera) {\n        const y = radius / (height > width ? 1.5 : 2.5);\n        camera.position.set(0, radius * 0.5, radius * 2.5);\n        camera.near = 0.1;\n        camera.far = Math.max(5000, radius * 4);\n        camera.lookAt(0, y, 0);\n        if (controls) {\n          (controls as unknown as ControlsProto).target.set(0, y, 0);\n          (controls as unknown as ControlsProto).update();\n        }\n      }\n    })\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaStage, NgtSobaStageContent],\n  exports: [NgtSobaStage, NgtSobaStageContent],\n})\nexport class NgtSobaStageModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NgtRenderState,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtBufferAttribute } from '@angular-three/core/attributes';\nimport { NgtBufferGeometry } from '@angular-three/core/geometries';\nimport { NgtPoints } from '@angular-three/core/points';\nimport { StarFieldMaterial } from '@angular-three/soba/materials';\nimport { NgtSobaStarFieldMaterial } from '@angular-three/soba/shaders';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\n\nconst genStar = (r: number) => {\n  return new THREE.Vector3().setFromSpherical(\n    new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI)\n  );\n};\n\nexport interface NgtSobaStarsState extends NgtObjectPropsState<THREE.Points> {\n  radius: number;\n  depth: number;\n  count: number;\n  factor: number;\n  saturation: number;\n  fade: boolean;\n  speed: number;\n}\n\n@Component({\n  selector: 'ngt-soba-stars',\n  standalone: true,\n  template: `\n    <ngt-points [ngtObjectPassThrough]=\"this\" (beforeRender)=\"onBeforeRender($event.state)\">\n      <ngt-buffer-geometry>\n        <ng-container *ngIf=\"bufferAttributes$ | async as bufferAttributes\">\n          <ngt-buffer-attribute\n            [attach]=\"['attributes', 'position']\"\n            [args]=\"[bufferAttributes.positions, 3]\"\n          ></ngt-buffer-attribute>\n          <ngt-buffer-attribute\n            [attach]=\"['attributes', 'color']\"\n            [args]=\"[bufferAttributes.colors, 3]\"\n          ></ngt-buffer-attribute>\n          <ngt-buffer-attribute\n            [attach]=\"['attributes', 'size']\"\n            [args]=\"[bufferAttributes.sizes, 1]\"\n          ></ngt-buffer-attribute>\n        </ng-container>\n      </ngt-buffer-geometry>\n      <ngt-soba-star-field-material\n        [ref]=\"materialRef\"\n        [blending]=\"blending\"\n        [uniforms]=\"{ fade: { value: fade } }\"\n        transparent\n        vertexColors\n      ></ngt-soba-star-field-material>\n    </ngt-points>\n  `,\n  imports: [\n    NgtPoints,\n    NgtObjectPassThrough,\n    NgtBufferGeometry,\n    NgtBufferAttribute,\n    NgtSobaStarFieldMaterial,\n    NgIf,\n    AsyncPipe,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideNgtObject(NgtSobaStars), provideObjectRef(NgtSobaStars), provideObjectHostRef(NgtSobaStars)],\n})\nexport class NgtSobaStars extends NgtObjectProps<THREE.Points, NgtSobaStarsState> {\n  @Input() set radius(radius: NumberInput) {\n    this.set({ radius: coerceNumberProperty(radius) });\n  }\n\n  @Input() set depth(depth: NumberInput) {\n    this.set({ depth: coerceNumberProperty(depth) });\n  }\n\n  @Input() set count(count: NumberInput) {\n    this.set({ count: coerceNumberProperty(count) });\n  }\n\n  @Input() set factor(factor: NumberInput) {\n    this.set({ factor: coerceNumberProperty(factor) });\n  }\n\n  @Input() set saturation(saturation: NumberInput) {\n    this.set({ saturation: coerceNumberProperty(saturation) });\n  }\n\n  @Input() set fade(fade: BooleanInput) {\n    this.set({ fade: coerceBooleanProperty(fade) });\n  }\n  get fade() {\n    return this.get((s) => s.fade);\n  }\n\n  @Input() set speed(speed: NumberInput) {\n    this.set({ speed: coerceNumberProperty(speed) });\n  }\n\n  readonly materialRef = new Ref<StarFieldMaterial>();\n  readonly blending = THREE.AdditiveBlending;\n\n  readonly bufferAttributes$ = this.select(\n    this.select((s) => s.count),\n    this.select((s) => s.depth),\n    this.select((s) => s.factor),\n    this.select((s) => s.radius),\n    this.select((s) => s.saturation),\n    (count, depth, factor, radius, saturation) => {\n      const positions: number[] = [];\n      const colors: number[] = [];\n      const sizes = Array.from({ length: count }, () => (0.5 + 0.5 * Math.random()) * factor);\n      const color = new THREE.Color();\n      let r = radius + depth;\n      const increment = depth / count;\n      for (let i = 0; i < count; i++) {\n        r -= increment * Math.random();\n        positions.push(...genStar(r).toArray());\n        color.setHSL(i / count, saturation, 0.9);\n        colors.push(color.r, color.g, color.b);\n      }\n\n      return {\n        positions: new Float32Array(positions),\n        colors: new Float32Array(colors),\n        sizes: new Float32Array(sizes),\n      };\n    }\n  );\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      radius: state.radius ?? 100,\n      depth: state.depth ?? 50,\n      count: state.count ?? 5000,\n      saturation: state.saturation ?? 0,\n      factor: state.factor ?? 4,\n      fade: state.fade ?? false,\n      speed: state.speed ?? 1,\n    }));\n  }\n\n  onBeforeRender(state: NgtRenderState) {\n    if (this.materialRef.value) {\n      this.materialRef.value.uniforms['time'].value = state.clock.getElapsedTime() * this.get((s) => s.speed);\n    }\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaStars],\n  exports: [NgtSobaStars],\n})\nexport class NgtSobaStarsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}