{"version":3,"file":"angular-three-soba-abstractions.mjs","sources":["../../../../libs/soba/abstractions/src/lib/billboard/billboard.ts","../../../../libs/soba/abstractions/src/lib/line/line-geometry.ts","../../../../libs/soba/abstractions/src/lib/line/line-material.ts","../../../../libs/soba/abstractions/src/lib/line/line.ts","../../../../libs/soba/abstractions/src/lib/cubic-bezier-line/cubic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/gizmo-helper/gizmo-helper.ts","../../../../libs/soba/abstractions/src/lib/gizmo-helper/gizmo-viewcube.ts","../../../../libs/soba/abstractions/src/lib/gizmo-helper/gizmo-viewport.ts","../../../../libs/soba/abstractions/src/lib/gradient-texture/gradient-texture.ts","../../../../libs/soba/abstractions/src/lib/image/image.ts","../../../../libs/soba/abstractions/src/lib/quadratic-bezier-line/quadratic-bezier-line.ts","../../../../libs/soba/abstractions/src/lib/text/text.ts","../../../../libs/soba/abstractions/src/lib/text3d/text3d.ts","../../../../libs/soba/abstractions/src/angular-three-soba-abstractions.ts"],"sourcesContent":["import {\n  BooleanInput,\n  coerceBooleanProperty,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtRenderState,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n} from '@angular-three/core';\nimport { NgtGroupModule } 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 * as THREE from 'three';\n\n@Directive({\n  selector: 'ng-template[ngt-soba-billboard-content]',\n  standalone: true,\n})\nexport class NgtSobaBillboardContent {\n  constructor(public templateRef: TemplateRef<{ billboard: Ref<THREE.Group> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaBillboardContent, ctx: any): ctx is { billboard: Ref<THREE.Group> } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-billboard',\n  standalone: true,\n  template: `\n    <ngt-group (beforeRender)=\"onBeforeRender($event); beforeRender.emit($event)\" [ngtObjectPassThrough]=\"this\">\n      <ng-container\n        *ngIf=\"content\"\n        [ngTemplateOutlet]=\"content.templateRef\"\n        [ngTemplateOutletContext]=\"{ billboard: instance }\"\n      ></ng-container>\n    </ngt-group>\n  `,\n  imports: [NgtGroupModule, NgtObjectPassThrough, NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaBillboard),\n    provideObjectRef(NgtSobaBillboard),\n    provideObjectHostRef(NgtSobaBillboard),\n  ],\n})\nexport class NgtSobaBillboard extends NgtObjectProps<THREE.Group> {\n  @Input() set follow(value: BooleanInput) {\n    this.set({ follow: coerceBooleanProperty(value) });\n  }\n\n  @Input() set lockX(value: BooleanInput) {\n    this.set({ lockX: coerceBooleanProperty(value) });\n  }\n\n  @Input() set lockY(value: BooleanInput) {\n    this.set({ lockY: coerceBooleanProperty(value) });\n  }\n\n  @Input() set lockZ(value: BooleanInput) {\n    this.set({ lockZ: coerceBooleanProperty(value) });\n  }\n\n  @ContentChild(NgtSobaBillboardContent) content?: NgtSobaBillboardContent;\n\n  @Output() beforeRender = new EventEmitter<{\n    state: NgtRenderState;\n    object: THREE.Group;\n  }>();\n\n  override isWrapper = true;\n\n  protected override preInit() {\n    this.set((state) => ({\n      follow: state['follow'] || true,\n      lockX: state['lockX'] || false,\n      lockY: state['lockY'] || false,\n      lockZ: state['lockZ'] || false,\n    }));\n  }\n\n  onBeforeRender({ state: { camera }, object }: { state: NgtRenderState; object: THREE.Group }) {\n    const { follow, lockX, lockY, lockZ } = this.get();\n\n    if (!follow) return;\n\n    // save previous rotation in case we're locking an axis\n    const prevRotation = object.rotation.clone();\n\n    // always face the camera\n    object.quaternion.copy(camera.quaternion);\n\n    // readjust any axis that is locked\n    if (lockX) object.rotation.x = prevRotation.x;\n    if (lockY) object.rotation.y = prevRotation.y;\n    if (lockZ) object.rotation.z = prevRotation.z;\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaBillboard, NgtSobaBillboardContent],\n  exports: [NgtSobaBillboard, NgtSobaBillboardContent],\n})\nexport class NgtSobaBillboardModule {}\n","import {\n  AnyConstructor,\n  is,\n  NgtCommonGeometry,\n  NgtTriple,\n  provideCommonGeometryRef,\n  provideNgtCommonGeometry,\n} from '@angular-three/core';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport * as THREE from 'three';\nimport { LineGeometry } from 'three-stdlib';\n\n@Component({\n  selector: 'ngt-soba-line-geometry',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideNgtCommonGeometry(NgtSobaLineGeometry), provideCommonGeometryRef(NgtSobaLineGeometry)],\n})\nexport class NgtSobaLineGeometry extends NgtCommonGeometry<LineGeometry> {\n  static ngAcceptInputType_args: ConstructorParameters<typeof LineGeometry> | undefined;\n\n  @Input() set points(points: Array<THREE.Vector3 | NgtTriple>) {\n    this.set({ points });\n  }\n\n  @Input() set vertexColors(vertexColors: Array<THREE.Color | NgtTriple>) {\n    this.set({ vertexColors });\n  }\n\n  override get geometryType(): AnyConstructor<LineGeometry> {\n    return LineGeometry;\n  }\n\n  protected override get ctorParams$(): Observable<{}> {\n    return this.select(\n      this.select((s) => s['points']),\n      this.select((s) => s['vertexColors'])\n    );\n  }\n\n  protected override postInit() {\n    const { instance: geometry, points, vertexColors } = this.get();\n\n    const pointValues = (points as Array<THREE.Vector3 | NgtTriple>).map((p) => (is.vector3(p) ? p.toArray() : p));\n\n    geometry.value.setPositions(pointValues.flat());\n\n    if (vertexColors.length) {\n      const colorValues = (vertexColors as Array<THREE.Color | NgtTriple>).map((c) => (is.color(c) ? c.toArray() : c));\n      geometry.value.setColors(colorValues.flat());\n    }\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaLineGeometry],\n  exports: [NgtSobaLineGeometry],\n})\nexport class NgtSobaLineGeometryModule {}\n","import {\n  AnyConstructor,\n  BooleanInput,\n  checkNeedsUpdate,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  make,\n  NgtVector2,\n  NumberInput,\n  provideCommonMaterialRef,\n  provideNgtCommonMaterial,\n} from '@angular-three/core';\nimport { NgtShaderMaterial } from '@angular-three/core/materials';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport { tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { LineMaterial } from 'three-stdlib';\n\n@Component({\n  selector: 'ngt-soba-line-material',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideNgtCommonMaterial(NgtSobaLineMaterial), provideCommonMaterialRef(NgtSobaLineMaterial)],\n})\nexport class NgtSobaLineMaterial extends NgtShaderMaterial {\n  @Input() set dashed(dashed: BooleanInput) {\n    this.set({ dashed: coerceBooleanProperty(dashed) });\n  }\n\n  @Input() set dashOffset(dashOffset: NumberInput) {\n    this.set({ dashOffset: coerceNumberProperty(dashOffset) });\n  }\n\n  @Input() set dashScale(dashScale: NumberInput) {\n    this.set({ dashScale: coerceNumberProperty(dashScale) });\n  }\n\n  @Input() set dashSize(dashSize: NumberInput) {\n    this.set({ dashSize: coerceNumberProperty(dashSize) });\n  }\n\n  @Input() set gapSize(gapSize: NumberInput) {\n    this.set({ gapSize: coerceNumberProperty(gapSize) });\n  }\n\n  @Input() set resolution(resolution: NgtVector2) {\n    this.set({ resolution: make(THREE.Vector2, resolution) });\n  }\n\n  @Input() set color(color: THREE.ColorRepresentation) {\n    this.set({ color });\n  }\n\n  override get materialType(): AnyConstructor<LineMaterial> {\n    return LineMaterial;\n  }\n\n  protected override postInit() {\n    this.setDashed(this.setDashedParams$);\n  }\n\n  private readonly setDashedParams$ = this.select(\n    this.instance,\n    this.select((s) => s['dashed'])\n  );\n\n  private readonly setDashed = this.effect(\n    tap(() => {\n      const { instance: material, dashed } = this.get();\n      if (dashed) {\n        material.value.defines['USE_DASH'] = '';\n      } else {\n        // Setting lineMaterial.defines.USE_DASH to undefined is apparently not sufficient.\n        delete material.value.defines['USE_DASH'];\n      }\n      checkNeedsUpdate(material.value);\n    })\n  );\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      dashed: true,\n      dashOffset: true,\n      dashScale: true,\n      dashSize: true,\n      gapSize: true,\n      resolution: true,\n      color: true,\n    };\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaLineMaterial],\n  exports: [NgtSobaLineMaterial],\n})\nexport class NgtSobaLineMaterialModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  make,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NgtRenderState,\n  NgtTriple,\n  NgtVector2,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtPrimitive } from '@angular-three/core/primitive';\nimport { AsyncPipe, 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 { animationFrameScheduler, observeOn, pipe, tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { Line2 } from 'three-stdlib';\nimport { NgtSobaLineGeometry } from './line-geometry';\nimport { NgtSobaLineMaterial } from './line-material';\n\nexport interface NgtSobaCommonLineState extends NgtObjectPropsState<Line2> {\n  points: Array<THREE.Vector3 | NgtTriple>;\n  vertexColors: Array<THREE.Color | NgtTriple>;\n  dashed: boolean;\n  resolution: NgtVector2;\n  lineWidth?: number;\n}\n\n@Directive()\nexport abstract class NgtSobaCommonLine extends NgtObjectProps<Line2, NgtSobaCommonLineState> {\n  @Input() set points(points: Array<THREE.Vector3 | NgtTriple>) {\n    this.set({ points });\n  }\n\n  @Input() set vertexColors(vertexColors: Array<THREE.Color | NgtTriple>) {\n    this.set({ vertexColors });\n  }\n\n  @Input() set dashed(dashed: BooleanInput) {\n    this.set({ dashed: coerceBooleanProperty(dashed) });\n  }\n\n  @Input() set lineWidth(lineWidth: NumberInput) {\n    this.set({ lineWidth: coerceNumberProperty(lineWidth) });\n  }\n\n  @Input() set resolution(resolution: NgtVector2) {\n    this.set({ resolution });\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      points: state.points ?? [],\n      vertexColors: state.vertexColors ?? [],\n      dashed: state.dashed ?? false,\n      color: state.color ?? make(THREE.Color, 'black'),\n      resolution: state.resolution ?? make(THREE.Vector2, [512, 512]),\n    }));\n  }\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-line-content]',\n  standalone: true,\n})\nexport class NgtSobaLineContent {\n  constructor(public templateRef: TemplateRef<{ line: Ref<Line2> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaLineContent, ctx: any): ctx is { line: Ref<Line2> } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-line',\n  standalone: true,\n  template: `\n    <ngt-primitive\n      *ngIf=\"lineViewModel$ | async as lineViewModel\"\n      (beforeRender)=\"beforeRender.emit($any($event))\"\n      [object]=\"lineViewModel.line\"\n      [ngtObjectPassThrough]=\"this\"\n    >\n      <ngt-soba-line-geometry\n        [points]=\"lineViewModel.points\"\n        [vertexColors]=\"lineViewModel.vertexColors\"\n      ></ngt-soba-line-geometry>\n      <ngt-soba-line-material\n        [color]=\"lineViewModel.color\"\n        [resolution]=\"lineViewModel.resolution\"\n        [vertexColors]=\"lineViewModel.hasVertexColors\"\n        [linewidth]=\"lineViewModel.lineWidth\"\n        [dashed]=\"lineViewModel.dashed\"\n      ></ngt-soba-line-material>\n      <ng-container\n        *ngIf=\"content\"\n        [ngTemplateOutlet]=\"content.templateRef\"\n        [ngTemplateOutletContext]=\"{ line: instance }\"\n      ></ng-container>\n    </ngt-primitive>\n  `,\n  imports: [\n    NgtPrimitive,\n    NgtObjectPassThrough,\n    NgtSobaLineGeometry,\n    NgtSobaLineMaterial,\n    NgIf,\n    AsyncPipe,\n    NgTemplateOutlet,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideNgtObject(NgtSobaLine), provideObjectRef(NgtSobaLine), provideObjectHostRef(NgtSobaLine)],\n})\nexport class NgtSobaLine extends NgtSobaCommonLine {\n  @Output() beforeRender = new EventEmitter<{\n    state: NgtRenderState;\n    object: Line2;\n  }>();\n\n  @ContentChild(NgtSobaLineContent) content?: NgtSobaLineContent;\n\n  readonly lineViewModel$ = this.select(\n    this.instance,\n    this.select((s) => s.points),\n    this.select((s) => s.vertexColors),\n    this.select((s) => s.resolution),\n    this.select((s) => s.dashed),\n    this.select((s) => s.color),\n    this.select((s) => s.lineWidth),\n    (line, points, vertexColors, resolution, dashed, color, lineWidth) => ({\n      line,\n      points,\n      vertexColors,\n      hasVertexColors: vertexColors.length > 0,\n      resolution,\n      dashed,\n      color,\n      lineWidth,\n    })\n  );\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        if (this.shouldPassThroughRef) {\n          this.init();\n          this.computeLineDistances(this.computeLineDistancesParams$);\n        }\n      });\n    });\n  }\n\n  private readonly init = this.effect<void>(\n    tapEffect(() => {\n      const line = this.prepareInstance(new Line2());\n      return () => {\n        line.clear();\n      };\n    })\n  );\n\n  private readonly computeLineDistancesParams$ = this.select(\n    this.instance,\n    this.select((s) => s.points)\n  );\n  private readonly computeLineDistances = this.effect(\n    pipe(\n      observeOn(animationFrameScheduler),\n      tap(() => {\n        const line = this.get((s) => s.instance);\n        line.value.computeLineDistances();\n      })\n    )\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaLine, NgtSobaLineContent],\n  exports: [NgtSobaLine, NgtSobaLineContent],\n})\nexport class NgtSobaLineModule {}\n","import {\n  coerceNumberProperty,\n  is,\n  make,\n  NgtObjectPassThrough,\n  NgtTriple,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n} from '@angular-three/core';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtSobaLine, NgtSobaLineContent } from '../line/line';\n\n@Component({\n  selector: 'ngt-soba-cubic-bezier-line[start][end][midA][midB]',\n  standalone: true,\n  template: `\n    <ngt-soba-line\n      *ngIf=\"cubicLineViewModel$ | async as cubicLineViewModel\"\n      (beforeRender)=\"beforeRender.emit($event)\"\n      [points]=\"cubicLineViewModel.points\"\n      [vertexColors]=\"cubicLineViewModel.vertexColors\"\n      [resolution]=\"cubicLineViewModel.resolution\"\n      [dashed]=\"cubicLineViewModel.dashed\"\n      [color]=\"cubicLineViewModel.color\"\n      [lineWidth]=\"cubicLineViewModel.lineWidth\"\n      [ngtObjectPassThrough]=\"this\"\n    >\n      <ng-container *ngIf=\"content\">\n        <ng-template ngt-soba-line-content let-line=\"line\">\n          <ng-container [ngTemplateOutlet]=\"content.templateRef\" [ngTemplateOutletContext]=\"{line}\"></ng-container>\n        </ng-template>\n      </ng-container>\n    </ngt-soba-line>\n  `,\n  imports: [NgtSobaLine, NgtObjectPassThrough, NgtSobaLineContent, NgTemplateOutlet, NgIf, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaCubicBezierLine),\n    provideObjectRef(NgtSobaCubicBezierLine),\n    provideObjectHostRef(NgtSobaCubicBezierLine),\n  ],\n})\nexport class NgtSobaCubicBezierLine extends NgtSobaLine {\n  static ngAcceptInputType_points: never;\n\n  @Input() set start(start: THREE.Vector3 | NgtTriple) {\n    this.set({ start });\n  }\n\n  @Input() set end(end: THREE.Vector3 | NgtTriple) {\n    this.set({ end });\n  }\n\n  @Input() set midA(midA: THREE.Vector3 | NgtTriple) {\n    this.set({ midA });\n  }\n\n  @Input() set midB(midB: THREE.Vector3 | NgtTriple) {\n    this.set({ midB });\n  }\n\n  @Input() set segments(segments: NumberInput) {\n    this.set({ segments: coerceNumberProperty(segments) });\n  }\n\n  override shouldPassThroughRef = false;\n\n  readonly cubicBezierPoints$ = this.select(\n    this.select((s) => s['start']),\n    this.select((s) => s['end']),\n    this.select((s) => s['midA']),\n    this.select((s) => s['midB']),\n    this.select((s) => s['segments']),\n    (start, end, midA, midB, segments) => {\n      const startV = is.vector3(start) ? start : make(THREE.Vector3, start);\n      const endV = is.vector3(end) ? end : make(THREE.Vector3, end);\n      const midAV = is.vector3(midA) ? midA : make(THREE.Vector3, midA);\n      const midBV = is.vector3(midB) ? midB : make(THREE.Vector3, midB);\n\n      return new THREE.CubicBezierCurve3(startV, midAV, midBV, endV).getPoints(segments);\n    }\n  );\n\n  readonly cubicLineViewModel$ = this.select(\n    this.cubicBezierPoints$,\n    this.select((s) => s.vertexColors),\n    this.select((s) => s.resolution),\n    this.select((s) => s.dashed),\n    this.select((s) => s.color),\n    this.select((s) => s.lineWidth),\n    (points, vertexColors, resolution, dashed, color, lineWidth) => ({\n      points,\n      vertexColors,\n      resolution,\n      dashed,\n      color,\n      lineWidth,\n    })\n  );\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      segments: state['segments'] ?? 20,\n    }));\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaCubicBezierLine],\n  exports: [NgtSobaCubicBezierLine],\n})\nexport class NgtSobaCubicBezierLineModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  make,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtObjectPropsState,\n  NgtPortal,\n  NgtPortalContent,\n  NgtRenderState,\n  prepare,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgtSobaOrthographicCamera } from '@angular-three/soba/cameras';\nimport { AsyncPipe, 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 { filter, map, tap, timer } from 'rxjs';\nimport * as THREE from 'three';\n\nexport interface NgtSobaGizmoHelperState extends NgtObjectPropsState<THREE.Group> {\n  virtualCamera: Ref<THREE.OrthographicCamera>;\n  virtualScene: Ref<THREE.Scene>;\n  raycast: THREE.Object3D['raycast'];\n\n  alignment: 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left';\n  margin: [number, number];\n  renderPriority: number;\n  autoClear: boolean;\n}\n\n@Directive({\n  selector: 'ng-template[ngt-soba-gizmo-helper-content]',\n  standalone: true,\n})\nexport class NgtSobaGizmoHelperContent {\n  constructor(public templateRef: TemplateRef<{ gizmo: THREE.Group }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaGizmoHelperContent, ctx: any): ctx is { gizmo: THREE.Group } {\n    return true;\n  }\n}\n\ntype ControlsProto = { update(): void; target: THREE.Vector3 };\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new THREE.Object3D();\nconst matrix = make(THREE.Matrix4);\nconst [q1, q2] = [make(THREE.Quaternion), make(THREE.Quaternion)];\nconst target = make(THREE.Vector3);\nconst targetPosition = make(THREE.Vector3);\n\n@Component({\n  selector: 'ngt-soba-gizmo-helper',\n  standalone: true,\n  template: `\n    <ngt-portal *ngIf=\"ready$ | async\" [ref]=\"virtualScene\">\n      <ng-template ngt-portal-content>\n        <ngt-group\n          (beforeRender)=\"beforeRender.emit($event)\"\n          [ngtObjectPassThrough]=\"this\"\n          [position]=\"(position$ | async)!\"\n        >\n          <ng-container\n            *ngIf=\"content\"\n            [ngTemplateOutlet]=\"content.templateRef\"\n            [ngTemplateOutletContext]=\"{ gizmo: instance }\"\n          ></ng-container>\n        </ngt-group>\n\n        <ngt-soba-orthographic-camera [ref]=\"virtualCamera\" [position]=\"[0, 0, 200]\"></ngt-soba-orthographic-camera>\n      </ng-template>\n    </ngt-portal>\n  `,\n  imports: [\n    NgtPortal,\n    NgtPortalContent,\n    NgtGroup,\n    NgtObjectPassThrough,\n    NgtSobaOrthographicCamera,\n    NgIf,\n    NgTemplateOutlet,\n    AsyncPipe,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaGizmoHelper),\n    provideObjectRef(NgtSobaGizmoHelper),\n    provideObjectHostRef(NgtSobaGizmoHelper),\n  ],\n})\nexport class NgtSobaGizmoHelper extends NgtObjectProps<THREE.Group, NgtSobaGizmoHelperState> {\n  ready$ = timer(250).pipe(map(() => true));\n\n  @Input() set alignment(alignment: 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left') {\n    this.set({ alignment });\n  }\n\n  @Input() set margin(margin: [number, number]) {\n    this.set({ margin });\n  }\n\n  @Input() set renderPriority(renderPriority: number) {\n    this.set({ renderPriority });\n  }\n\n  @Input() set autoClear(autoClear: BooleanInput) {\n    this.set({ autoClear: coerceBooleanProperty(autoClear) });\n  }\n\n  @Output() beforeRender = new EventEmitter<{\n    state: NgtRenderState;\n    object: THREE.Group;\n  }>();\n\n  @Output() override update = new EventEmitter();\n\n  @ContentChild(NgtSobaGizmoHelperContent)\n  content?: NgtSobaGizmoHelperContent;\n\n  get virtualScene() {\n    return this.get((s) => s.virtualScene);\n  }\n\n  get virtualCamera() {\n    return this.get((s) => s.virtualCamera);\n  }\n\n  readonly position$ = this.select(\n    this.select((s) => s.margin),\n    this.select((s) => s.alignment),\n    this.store.select((s) => s.size),\n    ([marginX, marginY], alignment, size) => {\n      const x = alignment.endsWith('-left') ? -size.width / 2 + marginX : size.width / 2 - marginX;\n      const y = alignment.startsWith('top-') ? size.height / 2 - marginY : -size.height / 2 + marginY;\n\n      return make(THREE.Vector3, [x, y, 0]);\n    }\n  );\n\n  private animating = false;\n  private focusPoint = make(THREE.Vector3, [0, 0, 0]);\n  private radius = 0;\n\n  protected override preInit() {\n    super.preInit();\n\n    this.set((state) => ({\n      virtualCamera: new Ref(),\n      virtualScene: new Ref(prepare(new THREE.Scene(), () => this.store.get())),\n      alignment: state.alignment ?? 'bottom-right',\n      margin: state.margin ?? [80, 80],\n      renderPriority: state.renderPriority ?? 0,\n      autoClear: state.autoClear ?? true,\n    }));\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.switchSceneBackground();\n        this.setBeforeRender();\n        this.setRaycast(this.get((s) => s.virtualCamera).pipe(filter((camera) => !!camera)));\n      });\n    });\n  }\n\n  private readonly switchSceneBackground = this.effect<void>(\n    tapEffect(() => {\n      let mainSceneBackground: THREE.Scene['background'];\n      const scene = this.store.get((s) => s.scene);\n      const virtualScene = this.get((s) => s.virtualScene);\n\n      if (scene.background) {\n        mainSceneBackground = scene.background;\n        scene.background = null;\n        virtualScene.value.background = mainSceneBackground;\n      }\n\n      return () => {\n        if (mainSceneBackground) {\n          scene.background = mainSceneBackground;\n        }\n      };\n    })\n  );\n\n  private readonly setBeforeRender = this.effect<void>(\n    tapEffect(() => {\n      const renderPriority = this.get((s) => s.renderPriority);\n      const gl = this.store.get((s) => s.gl);\n\n      return this.store.registerBeforeRender({\n        callback: ({ delta }) => {\n          const gizmo = this.instance;\n          const { camera: mainCamera, controls: defaultControls, invalidate } = this.store.get();\n          const { virtualScene, virtualCamera, autoClear } = this.get();\n\n          if (gizmo.value && virtualScene.value && virtualCamera.value) {\n            if (this.animating) {\n              if (q1.angleTo(q2) < 0.01) {\n                this.animating = false;\n              } else {\n                const step = delta * turnRate;\n                // animate position by doing a slerp and then scaling the position on the unit sphere\n                q1.rotateTowards(q2, step);\n                // animate orientation\n                mainCamera.position.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(this.radius).add(this.focusPoint);\n                mainCamera.up.set(0, 1, 0).applyQuaternion(q1).normalize();\n                mainCamera.quaternion.copy(q1);\n                if (this.update.observed) {\n                  this.update.emit();\n                } else if (defaultControls) {\n                  (defaultControls as unknown as ControlsProto).update();\n                }\n\n                invalidate();\n              }\n            }\n\n            // Sync Gizmo with main camera orientation\n            matrix.copy(mainCamera.matrix).invert();\n            gizmo.value?.quaternion.setFromRotationMatrix(matrix);\n\n            // Render virtual camera\n            if (autoClear) {\n              gl.autoClear = false;\n            }\n            gl.clearDepth();\n            gl.render(virtualScene.value, virtualCamera.value);\n          }\n        },\n        priority: renderPriority,\n      });\n    })\n  );\n\n  private readonly setRaycast = this.effect<THREE.Camera>(\n    tap((virtualCamera) => {\n      const pointer = this.store.get((s) => s.pointer);\n      const raycaster = new THREE.Raycaster();\n\n      this.set({\n        raycast: function (this: THREE.Object3D, _, intersects) {\n          raycaster.setFromCamera(pointer, virtualCamera);\n          const rc = this.constructor.prototype.raycast.bind(this);\n          if (rc) {\n            rc(raycaster, intersects);\n          }\n        },\n      });\n    })\n  );\n\n  readonly tweenCamera = this.effect<THREE.Vector3>(\n    tap((direction) => {\n      this.animating = true;\n\n      const { controls: defaultControls, camera: mainCamera, invalidate } = this.store.get();\n\n      if (defaultControls) {\n        this.focusPoint = (defaultControls as unknown as ControlsProto).target;\n      }\n\n      this.radius = mainCamera.position.distanceTo(target);\n\n      // Rotate from current camera orientation\n      q1.copy(mainCamera.quaternion);\n\n      // To new current camera orientation\n      targetPosition.copy(direction).multiplyScalar(this.radius).add(target);\n      dummy.lookAt(targetPosition);\n      q2.copy(dummy.quaternion);\n\n      invalidate();\n    })\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaGizmoHelper, NgtSobaGizmoHelperContent],\n  exports: [NgtSobaGizmoHelper, NgtSobaGizmoHelperContent],\n})\nexport class NgtSobaGizmoHelperModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  make,\n  NgtEvent,\n  NgtInstance,\n  NgtInstanceState,\n  NgtRepeat,\n  NgtTriple,\n  NgtVector3,\n  NumberInput,\n  startWithUndefined,\n} from '@angular-three/core';\nimport { NgtBoxGeometry } from '@angular-three/core/geometries';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgtAmbientLight, NgtPointLight } from '@angular-three/core/lights';\nimport { NgtMeshBasicMaterial, NgtMeshLambertMaterial } from '@angular-three/core/materials';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { AsyncPipe, NgForOf } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Directive,\n  EventEmitter,\n  inject,\n  Input,\n  NgModule,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport * as THREE from 'three';\nimport { NgtSobaGizmoHelper } from './gizmo-helper';\n\nconst makePositionVector = (xyz: number[]) => make(THREE.Vector3, xyz as NgtVector3).multiplyScalar(0.38);\n\nconst colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nconst defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\n\nconst corners: THREE.Vector3[] = [\n  [1, 1, 1],\n  [1, 1, -1],\n  [1, -1, 1],\n  [1, -1, -1],\n  [-1, 1, 1],\n  [-1, 1, -1],\n  [-1, -1, 1],\n  [-1, -1, -1],\n].map(makePositionVector);\n\nconst cornerDimensions: NgtTriple = [0.25, 0.25, 0.25];\n\nconst edges: THREE.Vector3[] = [\n  [1, 1, 0],\n  [1, 0, 1],\n  [1, 0, -1],\n  [1, -1, 0],\n  [0, 1, 1],\n  [0, 1, -1],\n  [0, -1, 1],\n  [0, -1, -1],\n  [-1, 1, 0],\n  [-1, 0, 1],\n  [-1, 0, -1],\n  [-1, -1, 0],\n].map(makePositionVector);\n\nconst edgeDimensions = edges.map(\n  (edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as NgtTriple\n);\n\nexport interface NgtSobaGizmoViewCubeGenerticState<TPart extends object> extends NgtInstanceState<TPart> {\n  font: string;\n  opacity: number;\n  color: string;\n  hoverColor: string;\n  textColor: string;\n  strokeColor: string;\n  faces: string[];\n}\n\n@Directive()\nexport abstract class NgtSobaGizmoViewCubeGeneric<TPart extends object> extends NgtInstance<\n  TPart,\n  NgtSobaGizmoViewCubeGenerticState<TPart>\n> {\n  @Input() set font(font: string) {\n    this.set({ font });\n  }\n  get font() {\n    return this.get((s) => s.font);\n  }\n\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 color(color: string) {\n    this.set({ color });\n  }\n  get color() {\n    return this.get((s) => s.color);\n  }\n\n  @Input() set hoverColor(hoverColor: string) {\n    this.set({ hoverColor });\n  }\n  get hoverColor() {\n    return this.get((s) => s.hoverColor);\n  }\n\n  @Input() set textColor(textColor: string) {\n    this.set({ textColor });\n  }\n  get textColor() {\n    return this.get((s) => s.textColor);\n  }\n\n  @Input() set strokeColor(strokeColor: string) {\n    this.set({ strokeColor });\n  }\n  get strokeColor() {\n    return this.get((s) => s.strokeColor);\n  }\n\n  @Input() set faces(faces: string[]) {\n    this.set({ faces });\n  }\n  get faces() {\n    return this.get((s) => s.faces);\n  }\n\n  @Output() click = new EventEmitter<NgtEvent<MouseEvent>>();\n\n  get raycast() {\n    return this.gizmoHelper!.get((s) => s.raycast);\n  }\n\n  protected gizmoHelper = inject(NgtSobaGizmoHelper, { optional: true });\n\n  constructor() {\n    super();\n    if (!this.gizmoHelper) {\n      throw new Error(`<ngt-soba-gizmo-viewcube> can only be used in <ngt-soba-gizmo-helper>`);\n    }\n  }\n\n  protected override preInit(): void {\n    super.preInit();\n    this.set((state) => ({\n      font: state.font ?? '20px Inter var, Arial, sans-serif',\n      faces: state.faces ?? defaultFaces,\n      color: state.color ?? colors.bg,\n      hoverColor: state.hoverColor ?? colors.hover,\n      textColor: state.textColor ?? colors.text,\n      strokeColor: state.strokeColor ?? colors.stroke,\n      opacity: state.opacity ?? 1,\n    }));\n  }\n}\n\n@Directive({\n  selector: '[ngtSobaGizmoViewCubeGenericPassThrough]',\n  standalone: true,\n})\nexport class NgtSobaGizmoViewCubePassThrough {\n  @Input() set ngtSobaGizmoViewCubeGenericPassThrough(wrapper: unknown) {\n    this.assertWrapper(wrapper);\n\n    wrapper\n      .select(\n        wrapper.select((s) => s.font).pipe(startWithUndefined()),\n        wrapper.select((s) => s.opacity).pipe(startWithUndefined()),\n        wrapper.select((s) => s.color).pipe(startWithUndefined()),\n        wrapper.select((s) => s.hoverColor).pipe(startWithUndefined()),\n        wrapper.select((s) => s.textColor).pipe(startWithUndefined()),\n        wrapper.select((s) => s.strokeColor).pipe(startWithUndefined()),\n        wrapper.select((s) => s.faces).pipe(startWithUndefined())\n      )\n      .pipe(takeUntil(wrapper.destroy$))\n      .subscribe(() => {\n        this.host.font = wrapper.font;\n        this.host.opacity = wrapper.opacity;\n        this.host.color = wrapper.color;\n        this.host.hoverColor = wrapper.hoverColor;\n        this.host.textColor = wrapper.textColor;\n        this.host.strokeColor = wrapper.strokeColor;\n        this.host.faces = wrapper.faces;\n      });\n\n    if (wrapper.click.observed) {\n      this.host.click.pipe(takeUntil(wrapper.destroy$)).subscribe(wrapper.click.emit.bind(wrapper.click));\n    }\n  }\n\n  constructor(@Self() @Optional() private host: NgtSobaGizmoViewCubeGeneric<any>) {\n    if (!host) return;\n  }\n\n  private assertWrapper(wrapper: unknown): asserts wrapper is NgtSobaGizmoViewCubeGeneric<any> {\n    if (!(wrapper instanceof NgtSobaGizmoViewCubeGeneric)) {\n      throw new Error(`[NgtSobaGizmoViewCubePassThrough] wrapper is not an NgtSobaGizmoViewCubeGeneric`);\n    }\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-gizmo-face-material[hover][index]',\n  standalone: true,\n  template: `\n    <ngt-mesh-lambert-material\n      [ref]=\"instance\"\n      [map]=\"texture$ | async\"\n      [attach]=\"['material', '' + index]\"\n      [color]=\"hover ? hoverColor : 'white'\"\n      transparent\n      [opacity]=\"opacity\"\n    ></ngt-mesh-lambert-material>\n  `,\n  imports: [NgtMeshLambertMaterial, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaGizmoViewCubeGeneric,\n      useExisting: NgtSobaGizmoFaceMaterial,\n    },\n  ],\n})\nexport class NgtSobaGizmoFaceMaterial extends NgtSobaGizmoViewCubeGeneric<THREE.MeshLambertMaterial> {\n  @Input() set hover(hover: BooleanInput) {\n    this.set({ hover: coerceBooleanProperty(hover) });\n  }\n  get hover() {\n    return this.get((s) => s['hover']);\n  }\n\n  @Input() set index(index: NumberInput) {\n    this.set({ index: coerceNumberProperty(index) });\n  }\n  get index() {\n    return this.get((s) => s['index']);\n  }\n\n  readonly texture$ = this.select(\n    this.select((s) => s['index']),\n    this.select((s) => s.faces),\n    this.select((s) => s.font),\n    this.select((s) => s.color),\n    this.select((s) => s.textColor),\n    this.select((s) => s.strokeColor),\n    () => {\n      const gl = this.store.get((s) => s.gl);\n      const { color, strokeColor, textColor, font, faces, index } = this.get();\n      const canvas = document.createElement('canvas');\n      canvas.width = 128;\n      canvas.height = 128;\n      const context = canvas.getContext('2d')!;\n      context.fillStyle = color;\n      context.fillRect(0, 0, canvas.width, canvas.height);\n      context.strokeStyle = strokeColor;\n      context.strokeRect(0, 0, canvas.width, canvas.height);\n      context.font = font;\n      context.textAlign = 'center';\n      context.fillStyle = textColor;\n      context.fillText(faces[index].toUpperCase(), 64, 76);\n      const texture = new THREE.CanvasTexture(canvas);\n\n      texture.encoding = gl.outputEncoding;\n      texture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\n      return texture;\n    }\n  );\n}\n\n@Component({\n  selector: 'ngt-soba-gizmo-face-cube',\n  standalone: true,\n  template: `\n    <ngt-mesh\n      [raycast]=\"raycast\"\n      (click)=\"onClick($event)\"\n      (pointerout)=\"onPointerOut($event)\"\n      (pointermove)=\"onPointerMove($event)\"\n    >\n      <ngt-box-geometry></ngt-box-geometry>\n      <ngt-soba-gizmo-face-material\n        *ngFor=\"let index; repeat: 6\"\n        [hover]=\"hover === index\"\n        [index]=\"index\"\n        [ngtSobaGizmoViewCubeGenericPassThrough]=\"this\"\n      ></ngt-soba-gizmo-face-material>\n    </ngt-mesh>\n  `,\n  imports: [NgtMesh, NgtBoxGeometry, NgtSobaGizmoFaceMaterial, NgtSobaGizmoViewCubePassThrough, NgtRepeat, NgForOf],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaGizmoViewCubeGeneric,\n      useExisting: NgtSobaGizmoFaceCube,\n    },\n  ],\n})\nexport class NgtSobaGizmoFaceCube extends NgtSobaGizmoViewCubeGeneric<THREE.Mesh> {\n  hover = -1;\n\n  onClick($event: NgtEvent<MouseEvent>) {\n    if (this.click.observed) {\n      this.click.emit($event);\n    } else {\n      $event.stopPropagation();\n      this.gizmoHelper!.tweenCamera($event.face!.normal);\n    }\n  }\n\n  onPointerOut($event: NgtEvent<PointerEvent>) {\n    $event.stopPropagation();\n    this.hover = -1;\n  }\n\n  onPointerMove($event: NgtEvent<PointerEvent>) {\n    $event.stopPropagation();\n    this.hover = Math.floor($event.faceIndex! / 2);\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-gizmo-edge-cube[dimensions][position]',\n  standalone: true,\n  template: `\n    <ngt-mesh\n      [scale]=\"1.01\"\n      [position]=\"position\"\n      [raycast]=\"raycast\"\n      (click)=\"onClick($event)\"\n      (pointerout)=\"onPointerOut($event)\"\n      (pointerover)=\"onPointerOver($event)\"\n    >\n      <ngt-box-geometry [args]=\"dimensions\"></ngt-box-geometry>\n      <ngt-mesh-basic-material\n        [color]=\"hover ? hoverColor : 'white'\"\n        transparent\n        opacity=\"0.6\"\n        [visible]=\"hover\"\n      ></ngt-mesh-basic-material>\n    </ngt-mesh>\n  `,\n  imports: [NgtMesh, NgtBoxGeometry, NgtMeshBasicMaterial],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaGizmoViewCubeGeneric,\n      useExisting: NgtSobaGizmoEdgeCube,\n    },\n  ],\n})\nexport class NgtSobaGizmoEdgeCube extends NgtSobaGizmoViewCubeGeneric<THREE.Mesh> {\n  @Input() set dimensions(dimensions: NgtTriple) {\n    this.set({ dimensions });\n  }\n  get dimensions() {\n    return this.get((s) => s['dimensions']);\n  }\n\n  @Input() set position(position: NgtVector3) {\n    this.set({ position });\n  }\n  get position() {\n    return this.get((s) => s['position']);\n  }\n\n  hover = false;\n\n  onClick($event: NgtEvent<MouseEvent>) {\n    if (this.click.observed) {\n      this.click.emit($event);\n    } else {\n      $event.stopPropagation();\n      this.gizmoHelper!.tweenCamera(make(THREE.Vector3, this.position));\n    }\n  }\n\n  onPointerOut($event: NgtEvent<PointerEvent>) {\n    $event.stopPropagation();\n    this.hover = false;\n  }\n\n  onPointerOver($event: NgtEvent<PointerEvent>) {\n    $event.stopPropagation();\n    this.hover = true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-gizmo-viewcube',\n  standalone: true,\n  template: `\n    <ngt-group [scale]=\"60\">\n      <ngt-soba-gizmo-face-cube [ngtSobaGizmoViewCubeGenericPassThrough]=\"this\"></ngt-soba-gizmo-face-cube>\n\n      <ngt-soba-gizmo-edge-cube\n        *ngFor=\"let edge of edges; index as i\"\n        [position]=\"edge\"\n        [dimensions]=\"edgeDimensions[i]\"\n        [ngtSobaGizmoViewCubeGenericPassThrough]=\"this\"\n      ></ngt-soba-gizmo-edge-cube>\n\n      <ngt-soba-gizmo-edge-cube\n        *ngFor=\"let corner of corners\"\n        [position]=\"corner\"\n        [dimensions]=\"cornerDimensions\"\n        [ngtSobaGizmoViewCubeGenericPassThrough]=\"this\"\n      ></ngt-soba-gizmo-edge-cube>\n\n      <ngt-ambient-light intensity=\"0.5\"></ngt-ambient-light>\n      <ngt-point-light [position]=\"10\" intensity=\"0.5\"></ngt-point-light>\n    </ngt-group>\n  `,\n  imports: [\n    NgtGroup,\n    NgtSobaGizmoFaceCube,\n    NgtSobaGizmoEdgeCube,\n    NgtAmbientLight,\n    NgtPointLight,\n    NgtSobaGizmoViewCubePassThrough,\n    NgForOf,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NgtSobaGizmoViewCubeGeneric,\n      useExisting: NgtSobaGizmoViewcube,\n    },\n  ],\n})\nexport class NgtSobaGizmoViewcube extends NgtSobaGizmoViewCubeGeneric<THREE.Group> {\n  readonly edges = edges;\n  readonly edgeDimensions = edgeDimensions;\n\n  readonly corners = corners;\n  readonly cornerDimensions = cornerDimensions;\n}\n\n@NgModule({\n  imports: [NgtSobaGizmoViewcube],\n  exports: [NgtSobaGizmoViewcube],\n})\nexport class NgtSobaGizmoViewcubeModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  NgtEvent,\n  NgtInstance,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtRadianPipe,\n  NgtTriple,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  startWithUndefined,\n} from '@angular-three/core';\nimport { NgtBoxGeometry } from '@angular-three/core/geometries';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { NgtAmbientLight, NgtPointLight } from '@angular-three/core/lights';\nimport { NgtMeshBasicMaterial, NgtSpriteMaterial } from '@angular-three/core/materials';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { NgtSprite } from '@angular-three/core/sprites';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, inject, Input, NgModule, Self } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport * as THREE from 'three';\nimport { NgtSobaGizmoHelper } from './gizmo-helper';\n\n@Component({\n  selector: 'ngt-soba-gizmo-viewport-axis[color][rotation]',\n  standalone: true,\n  template: `\n    <ngt-group [rotation]=\"rotation\">\n      <ngt-mesh [position]=\"[0.4, 0, 0]\">\n        <ngt-box-geometry [args]=\"scale\"></ngt-box-geometry>\n        <ngt-mesh-basic-material [color]=\"color\" toneMapped=\"false\"></ngt-mesh-basic-material>\n      </ngt-mesh>\n    </ngt-group>\n  `,\n  imports: [NgtGroup, NgtMesh, NgtBoxGeometry, NgtMeshBasicMaterial],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtSobaGizmoViewportAxis extends NgtInstance<THREE.Group> {\n  @Input() set color(color: THREE.ColorRepresentation) {\n    this.set({ color });\n  }\n  get color() {\n    return this.get((s) => s['color']);\n  }\n\n  @Input() set rotation(rotation: NgtTriple) {\n    this.set({ rotation });\n  }\n  get rotation() {\n    return this.get((s) => s['rotation']);\n  }\n\n  @Input() set scale(scale: NgtTriple) {\n    this.set({ scale });\n  }\n  get scale() {\n    return this.get((s) => s['scale']);\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      scale: state['scale'] ?? [0.8, 0.05, 0.05],\n    }));\n  }\n}\n\n@Component({\n  selector:\n    'ngt-soba-gizmo-viewport-axis-head[arcStyle][labelColor][font], ngt-soba-gizmo-viewport-axis-head[ngtSobaGizmoViewportAxisHead]',\n  standalone: true,\n  template: `\n    <ngt-sprite\n      [ngtObjectPassThrough]=\"this\"\n      [scale]=\"(scale$ | async)!\"\n      [raycast]=\"raycast\"\n      (pointerout)=\"onPointerOut($event)\"\n      (pointerover)=\"onPointerOver($event)\"\n      (pointerdown)=\"onPointerDown($event)\"\n    >\n      <ngt-sprite-material\n        [map]=\"texture$ | async\"\n        [opacity]=\"opacity$ | async\"\n        alphaTest=\"0.3\"\n        toneMapped=\"false\"\n      ></ngt-sprite-material>\n    </ngt-sprite>\n  `,\n  imports: [NgtSprite, NgtObjectPassThrough, NgtSpriteMaterial, AsyncPipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaGizmoViewportAxisHead),\n    provideObjectRef(NgtSobaGizmoViewportAxisHead),\n    provideObjectHostRef(NgtSobaGizmoViewportAxisHead),\n  ],\n})\nexport class NgtSobaGizmoViewportAxisHead extends NgtObjectProps<THREE.Sprite> {\n  @Input() set arcStyle(arcStyle: string) {\n    this.set({ arcStyle });\n  }\n\n  @Input() set label(label: string) {\n    this.set({ label });\n  }\n\n  @Input() set labelColor(labelColor: string) {\n    this.set({ labelColor });\n  }\n\n  @Input() set axisHeadScale(axisHeadScale: NumberInput) {\n    this.set({ axisHeadScale: coerceNumberProperty(axisHeadScale) });\n  }\n\n  @Input() set disabled(disabled: BooleanInput) {\n    this.set({ disabled: coerceBooleanProperty(disabled) });\n  }\n\n  @Input() set font(font: string) {\n    this.set({ font });\n  }\n\n  private gizmoHelper = inject(NgtSobaGizmoHelper, { optional: true });\n\n  constructor() {\n    super();\n    if (!this.gizmoHelper) {\n      throw new Error(`<ngt-soba-gizmo-viewport> can only be used in <ngt-soba-gizmo-helper>`);\n    }\n  }\n\n  override get raycast() {\n    return this.gizmoHelper!.get((s) => s.raycast);\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      axisHeadScale: state['axisHeadScale'] ?? 1,\n      active: false,\n    }));\n  }\n\n  readonly texture$ = this.select(\n    this.select((s) => s['arcStyle']),\n    this.select((s) => s['label']).pipe(startWithUndefined()),\n    this.select((s) => s['labelColor']),\n    this.select((s) => s['font']),\n    (arcStyle, label, labelColor, font) => {\n      const gl = this.store.get((s) => s.gl);\n\n      const canvas = this.document.createElement('canvas');\n      canvas.width = 64;\n      canvas.height = 64;\n\n      const context = canvas.getContext('2d')!;\n      context.beginPath();\n      context.arc(32, 32, 16, 0, 2 * Math.PI);\n      context.closePath();\n      context.fillStyle = arcStyle;\n      context.fill();\n\n      if (label) {\n        context.font = font;\n        context.textAlign = 'center';\n        context.fillStyle = labelColor;\n        context.fillText(label, 32, 41);\n      }\n      const texture = new THREE.CanvasTexture(canvas);\n\n      texture.encoding = gl.outputEncoding;\n      texture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\n      return texture;\n    }\n  );\n\n  readonly opacity$ = this.select(this.select((s) => s['label']).pipe(startWithUndefined()), (label) =>\n    label ? 1 : 0.75\n  );\n\n  readonly scale$ = this.select(\n    this.select((s) => s['active']),\n    this.select((s) => s['label']).pipe(startWithUndefined()),\n    this.select((s) => s['axisHeadScale']),\n    (active, label, axisHeadScale) => (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale\n  );\n\n  onPointerOut($event: NgtEvent<PointerEvent>) {\n    if (!this.disabled) {\n      if (this.click.observed) {\n        this.click.emit($event);\n      } else {\n        $event.stopPropagation();\n        this.set({ active: false });\n      }\n    }\n  }\n\n  onPointerOver($event: NgtEvent<PointerEvent>) {\n    if (!this.disabled) {\n      $event.stopPropagation();\n      this.set({ active: true });\n    }\n  }\n\n  onPointerDown($event: NgtEvent<PointerEvent>) {\n    if (!this.disabled) {\n      this.gizmoHelper!.tweenCamera($event.object.position);\n      $event.stopPropagation();\n    }\n  }\n}\n\n@Directive({\n  selector: '[ngtSobaGizmoViewportAxisHead]',\n  standalone: true,\n})\nexport class NgtSobaGizmoViewportAxisHeadPassThrough {\n  @Input() set ngtSobaGizmoViewportAxisHead(wrapper: unknown) {\n    this.assertWrapper(wrapper);\n\n    wrapper\n      .select(\n        wrapper.select((s) => s['labelColor']).pipe(startWithUndefined()),\n        wrapper.select((s) => s['font']).pipe(startWithUndefined()),\n        wrapper.select((s) => s['disabled']).pipe(startWithUndefined()),\n        wrapper.select((s) => s['axisHeadScale']).pipe(startWithUndefined())\n      )\n      .pipe(takeUntil(wrapper.destroy$))\n      .subscribe(() => {\n        this.axisHead.labelColor = wrapper.labelColor;\n        this.axisHead.font = wrapper.font;\n        this.axisHead.disabled = wrapper.disabled;\n        this.axisHead.axisHeadScale = wrapper.axisHeadScale;\n      });\n\n    if (wrapper.click.observed) {\n      this.axisHead.click.pipe(takeUntil(wrapper.destroy$)).subscribe(wrapper.click.emit.bind(wrapper.click));\n    }\n  }\n\n  constructor(@Self() private axisHead: NgtSobaGizmoViewportAxisHead) {}\n\n  private assertWrapper(wrapper: unknown): asserts wrapper is NgtSobaGizmoViewport {\n    if (!(wrapper instanceof NgtSobaGizmoViewport)) {\n      throw new Error('wrapper must be NgtSobaGizmoViewport');\n    }\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-gizmo-viewport',\n  standalone: true,\n  template: `\n    <ngt-group [ngtObjectPassThrough]=\"this\" [scale]=\"40\">\n      <ngt-soba-gizmo-viewport-axis\n        [color]=\"axisColors[0]\"\n        [rotation]=\"[0, 0, 0]\"\n        [scale]=\"axisScale\"\n      ></ngt-soba-gizmo-viewport-axis>\n      <ngt-soba-gizmo-viewport-axis\n        [color]=\"axisColors[1]\"\n        [rotation]=\"[0, 0, 90 | radian]\"\n        [scale]=\"axisScale\"\n      ></ngt-soba-gizmo-viewport-axis>\n      <ngt-soba-gizmo-viewport-axis\n        [color]=\"axisColors[2]\"\n        [rotation]=\"[0, -90 | radian, 0]\"\n        [scale]=\"axisScale\"\n      ></ngt-soba-gizmo-viewport-axis>\n\n      <ng-container *ngIf=\"!hideAxisHeads\">\n        <ngt-soba-gizmo-viewport-axis-head\n          [arcStyle]=\"axisColors[0]\"\n          [position]=\"[1, 0, 0]\"\n          [label]=\"labels[0]\"\n          [ngtSobaGizmoViewportAxisHead]=\"this\"\n        ></ngt-soba-gizmo-viewport-axis-head>\n        <ngt-soba-gizmo-viewport-axis-head\n          [arcStyle]=\"axisColors[1]\"\n          [position]=\"[0, 1, 0]\"\n          [label]=\"labels[1]\"\n          [ngtSobaGizmoViewportAxisHead]=\"this\"\n        ></ngt-soba-gizmo-viewport-axis-head>\n        <ngt-soba-gizmo-viewport-axis-head\n          [arcStyle]=\"axisColors[2]\"\n          [position]=\"[0, 0, 1]\"\n          [label]=\"labels[2]\"\n          [ngtSobaGizmoViewportAxisHead]=\"this\"\n        ></ngt-soba-gizmo-viewport-axis-head>\n        <ng-container *ngIf=\"!hideNegativeAxes\">\n          <ngt-soba-gizmo-viewport-axis-head\n            [arcStyle]=\"axisColors[0]\"\n            [position]=\"[-1, 0, 0]\"\n            [ngtSobaGizmoViewportAxisHead]=\"this\"\n          ></ngt-soba-gizmo-viewport-axis-head>\n          <ngt-soba-gizmo-viewport-axis-head\n            [arcStyle]=\"axisColors[1]\"\n            [position]=\"[0, -1, 0]\"\n            [ngtSobaGizmoViewportAxisHead]=\"this\"\n          ></ngt-soba-gizmo-viewport-axis-head>\n          <ngt-soba-gizmo-viewport-axis-head\n            [arcStyle]=\"axisColors[2]\"\n            [position]=\"[0, 0, -1]\"\n            [ngtSobaGizmoViewportAxisHead]=\"this\"\n          ></ngt-soba-gizmo-viewport-axis-head>\n        </ng-container>\n      </ng-container>\n\n      <ngt-ambient-light intensity=\"0.5\"></ngt-ambient-light>\n      <ngt-point-light [position]=\"10\" intensity=\"0.5\"></ngt-point-light>\n    </ngt-group>\n  `,\n  imports: [\n    NgtGroup,\n    NgtObjectPassThrough,\n    NgtAmbientLight,\n    NgtPointLight,\n    NgtSobaGizmoViewportAxis,\n    NgtSobaGizmoViewportAxisHead,\n    NgtSobaGizmoViewportAxisHeadPassThrough,\n    NgtRadianPipe,\n    NgIf,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaGizmoViewport),\n    provideObjectRef(NgtSobaGizmoViewport),\n    provideObjectHostRef(NgtSobaGizmoViewport),\n  ],\n})\nexport class NgtSobaGizmoViewport extends NgtObjectProps<THREE.Group> {\n  @Input() set axisColors(axisColors: [string, string, string]) {\n    this.set({ axisColors });\n  }\n  get axisColors() {\n    return this.get((s) => s['axisColors']);\n  }\n\n  @Input() set axisScale(axisScale: NgtTriple) {\n    this.set({ axisScale });\n  }\n  get axisScale() {\n    return this.get((s) => s['axisScale']);\n  }\n\n  @Input() set labels(labels: [string, string, string]) {\n    this.set({ labels });\n  }\n  get labels() {\n    return this.get((s) => s['labels']);\n  }\n\n  @Input() set axisHeadScale(axisHeadScale: NumberInput) {\n    this.set({ axisHeadScale: coerceNumberProperty(axisHeadScale) });\n  }\n  get axisHeadScale() {\n    return this.get((s) => s['axisHeadScale']);\n  }\n\n  @Input() set labelColor(labelColor: string) {\n    this.set({ labelColor });\n  }\n  get labelColor() {\n    return this.get((s) => s['labelColor']);\n  }\n\n  @Input() set hideNegativeAxes(hideNegativeAxes: BooleanInput) {\n    this.set({ hideNegativeAxes: coerceBooleanProperty(hideNegativeAxes) });\n  }\n  get hideNegativeAxes() {\n    return this.get((s) => s['hideNegativeAxes']);\n  }\n\n  @Input() set hideAxisHeads(hideAxisHeads: BooleanInput) {\n    this.set({ hideAxisHeads: coerceBooleanProperty(hideAxisHeads) });\n  }\n  get hideAxisHeads() {\n    return this.get((s) => s['hideAxisHeads']);\n  }\n\n  @Input() set disabled(disabled: BooleanInput) {\n    this.set({ disabled: coerceBooleanProperty(disabled) });\n  }\n  get disabled() {\n    return this.get((s) => s['disabled']);\n  }\n\n  @Input() set font(font: string) {\n    this.set({ font });\n  }\n  get font() {\n    return this.get((s) => s['font']);\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      font: state['font'] ?? '18px Inter var, Arial, sans-serif',\n      axisColors: state['axisColors'] ?? ['#ff3653', '#0adb50', '#2c8fdf'],\n      axisHeadScale: state['axisHeadScale'] ?? 1,\n      labels: state['labels'] ?? ['X', 'Y', 'Z'],\n      labelColor: state['labelColor'] ?? '#000',\n    }));\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaGizmoViewport],\n  exports: [NgtSobaGizmoViewport],\n})\nexport class NgtSobaGizmoViewportModule {}\n","import {\n  AnyConstructor,\n  coerceNumberProperty,\n  NgtCommonTexture,\n  NumberInput,\n  provideCommonTextureRef,\n  provideNgtCommonTexture,\n} from '@angular-three/core';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\n\n@Component({\n  selector: 'ngt-soba-gradient-texture[stops][colors]',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideNgtCommonTexture(NgtSobaGradientTexture), provideCommonTextureRef(NgtSobaGradientTexture)],\n})\nexport class NgtSobaGradientTexture extends NgtCommonTexture {\n  @Input() set stops(stops: Array<number>) {\n    this.set({ stops });\n  }\n\n  @Input() set colors(colors: Array<string>) {\n    this.set({ colors });\n  }\n\n  @Input() set size(size: NumberInput) {\n    this.set({ size: coerceNumberProperty(size) });\n  }\n\n  override get textureType(): AnyConstructor<THREE.Texture> {\n    return THREE.Texture;\n  }\n\n  protected override adjustCtorParams(instanceArgs: unknown[]): unknown[] {\n    const { stops, colors, size } = this.get();\n    const canvas = this.document.createElement('canvas');\n    const context = canvas.getContext('2d')!;\n    canvas.width = 16;\n    canvas.height = size;\n    const gradient = context.createLinearGradient(0, 0, 0, size);\n    let i = Math.min(stops.length, colors.length);\n    while (i--) {\n      gradient.addColorStop(stops[i], colors[i]);\n    }\n    context.fillStyle = gradient;\n    context.fillRect(0, 0, 16, size);\n\n    return [canvas, ...instanceArgs];\n  }\n\n  protected override get ctorParams$() {\n    return this.select(\n      this.select((s) => s['stops']),\n      this.select((s) => s['colors']),\n      this.instanceArgs$\n    );\n  }\n\n  protected override preInit() {\n    this.set((state) => ({\n      size: state['size'] || 1024,\n      attach: state.attach.length ? state.attach : ['map'],\n    }));\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaGradientTexture],\n  exports: [NgtSobaGradientTexture],\n})\nexport class NgtSobaGradientTextureModule {}\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  startWithUndefined,\n} from '@angular-three/core';\nimport { NgtPlaneGeometry } from '@angular-three/core/geometries';\nimport { NgtMesh } from '@angular-three/core/meshes';\nimport { NgtTextureLoader } from '@angular-three/soba/loaders';\nimport { NgtSobaImageShaderMaterial } from '@angular-three/soba/shaders';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  EventEmitter,\n  inject,\n  Input,\n  NgModule,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport { catchError, EMPTY, Observable, switchMap, tap } from 'rxjs';\nimport * as THREE from 'three';\n\n@Directive({\n  selector: 'ng-template[ngt-soba-image-content]',\n  standalone: true,\n})\nexport class NgtSobaImageContent {\n  constructor(public templateRef: TemplateRef<{ image: Ref<THREE.Mesh> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaImageContent, ctx: any): ctx is { image: Ref<THREE.Mesh> } {\n    return true;\n  }\n}\n\nexport interface NgtSobaImageState extends NgtObjectPropsState<THREE.Mesh> {\n  url: string;\n  segments?: number;\n  zoom?: number;\n  grayscale?: number;\n  toneMapped?: boolean;\n  texture: THREE.Texture;\n}\n\n@Component({\n  selector: 'ngt-soba-image[url]',\n  standalone: true,\n  template: `\n    <ng-container *ngIf=\"imageViewModel$ | async as imageViewModel\">\n      <ngt-plane-geometry\n        noAttach\n        #ngtPlane\n        [args]=\"[1, 1, imageViewModel.segments, imageViewModel.segments]\"\n      ></ngt-plane-geometry>\n\n      <ngt-soba-image-shader-material\n        #ngtMaterial\n        [color]=\"color!\"\n        [map]=\"imageViewModel.texture\"\n        [zoom]=\"imageViewModel.zoom!\"\n        [grayscale]=\"imageViewModel.grayscale!\"\n        [scale]=\"imageViewModel.planeBounds\"\n        [imageBounds]=\"imageViewModel.imageBounds\"\n        [toneMapped]=\"imageViewModel.toneMapped!\"\n      ></ngt-soba-image-shader-material>\n\n      <ngt-mesh\n        (beforeRender)=\"beforeRender.emit($event)\"\n        [material]=\"$any(ngtMaterial.instance)\"\n        [geometry]=\"$any(ngtPlane.instance)\"\n        [ngtObjectPassThrough]=\"this\"\n      >\n        <ng-container\n          *ngIf=\"content\"\n          [ngTemplateOutlet]=\"content.templateRef\"\n          [ngTemplateOutletContext]=\"{ image: instance }\"\n        ></ng-container>\n      </ngt-mesh>\n    </ng-container>\n  `,\n  imports: [\n    NgtMesh,\n    NgtObjectPassThrough,\n    NgtPlaneGeometry,\n    NgtSobaImageShaderMaterial,\n    NgIf,\n    NgTemplateOutlet,\n    AsyncPipe,\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    NgtTextureLoader,\n    provideNgtObject(NgtSobaImage),\n    provideObjectRef(NgtSobaImage),\n    provideObjectHostRef(NgtSobaImage),\n  ],\n})\nexport class NgtSobaImage extends NgtObjectProps<THREE.Mesh, NgtSobaImageState> {\n  @Output() beforeRender = new EventEmitter<{\n    state: NgtRenderState;\n    object: THREE.Mesh;\n  }>();\n\n  @Input() set url(url: string) {\n    this.set({ url });\n  }\n\n  @Input() set segments(segments: NumberInput) {\n    this.set({ segments: coerceNumberProperty(segments) });\n  }\n\n  @Input() set zoom(zoom: NumberInput) {\n    this.set({ zoom: coerceNumberProperty(zoom) });\n  }\n\n  @Input() set grayscale(grayscale: NumberInput) {\n    this.set({ grayscale: coerceNumberProperty(grayscale) });\n  }\n\n  @Input() set toneMapped(toneMapped: BooleanInput) {\n    this.set({ toneMapped: coerceBooleanProperty(toneMapped) });\n  }\n\n  @ContentChild(NgtSobaImageContent) content?: NgtSobaImageContent;\n\n  texture$!: Observable<THREE.Texture>;\n  imageBounds!: [number, number];\n  planeBounds: [number, number] = [1, 1];\n\n  private textureLoader = inject(NgtTextureLoader);\n\n  readonly imageViewModel$ = this.select(\n    this.select((s) => s.texture),\n    this.select((s) => s.zoom),\n    this.select((s) => s.color),\n    this.select((s) => s.segments),\n    this.select((s) => s.scale),\n    this.select((s) => s.grayscale),\n    this.select((s) => s.toneMapped).pipe(startWithUndefined()),\n    (texture, zoom, color, segments, scale, grayscale, toneMapped) => ({\n      texture,\n      zoom,\n      color,\n      segments,\n      grayscale,\n      toneMapped,\n      planeBounds: [scale.x, scale.y],\n      imageBounds: [texture.image.width, texture.image.height],\n    })\n  );\n\n  protected override preInit() {\n    this.set((state) => ({\n      segments: state.segments ?? 1,\n      zoom: state.zoom ?? 1,\n      grayscale: state.grayscale ?? 0,\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.setTexture(this.select((s) => s.url));\n      });\n    });\n  }\n\n  private readonly setTexture = this.effect<string>(\n    switchMap((url) =>\n      this.textureLoader.load(url).pipe(\n        tap((texture) => {\n          const gl = this.store.get((s) => s.gl);\n          texture.encoding = gl.outputEncoding;\n          this.set({ texture });\n        }),\n        catchError(() => EMPTY)\n      )\n    )\n  );\n}\n\n@NgModule({\n  imports: [NgtSobaImage, NgtSobaImageContent],\n  exports: [NgtSobaImage, NgtSobaImageContent],\n})\nexport class NgtSobaImageModule {}\n","import {\n  coerceNumberProperty,\n  is,\n  NgtObjectPassThrough,\n  NgtTriple,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  startWithUndefined,\n} from '@angular-three/core';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport { tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { NgtSobaLine, NgtSobaLineContent } from '../line/line';\n\nconst v = new THREE.Vector3();\n\n@Component({\n  selector: 'ngt-soba-quadratic-bezier-line',\n  standalone: true,\n  template: `\n    <ngt-soba-line\n      *ngIf=\"quadraticLineViewModel$ | async as quadraticLineViewModel\"\n      (beforeRender)=\"beforeRender.emit($event)\"\n      [points]=\"quadraticLineViewModel.points\"\n      [vertexColors]=\"quadraticLineViewModel.vertexColors\"\n      [resolution]=\"quadraticLineViewModel.resolution\"\n      [dashed]=\"quadraticLineViewModel.dashed\"\n      [color]=\"quadraticLineViewModel.color\"\n      [lineWidth]=\"quadraticLineViewModel.lineWidth\"\n      [ngtObjectPassThrough]=\"this\"\n    >\n      <ng-container *ngIf=\"content\">\n        <ng-template ngt-soba-line-content let-line=\"line\">\n          <ng-container [ngTemplateOutlet]=\"content.templateRef\" [ngTemplateOutletContext]=\"{line}\"></ng-container>\n        </ng-template>\n      </ng-container>\n    </ngt-soba-line>\n  `,\n  imports: [NgtSobaLine, NgtObjectPassThrough, NgtSobaLineContent, NgIf, AsyncPipe, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaQuadraticBezierLine),\n    provideObjectRef(NgtSobaQuadraticBezierLine),\n    provideObjectHostRef(NgtSobaQuadraticBezierLine),\n  ],\n})\nexport class NgtSobaQuadraticBezierLine extends NgtSobaLine {\n  @Input() set start(start: THREE.Vector3 | NgtTriple) {\n    this.set({ start });\n  }\n\n  @Input() set end(end: THREE.Vector3 | NgtTriple) {\n    this.set({ end });\n  }\n\n  @Input() set mid(mid: THREE.Vector3 | NgtTriple) {\n    this.set({ mid });\n  }\n\n  @Input() set segments(segments: NumberInput) {\n    this.set({ segments: coerceNumberProperty(segments) });\n  }\n\n  override shouldPassThroughRef = false;\n\n  readonly quadraticBezierPoints$ = this.select(\n    this.select((s) => s['start']),\n    this.select((s) => s['end']),\n    this.select((s) => s['mid']).pipe(startWithUndefined()),\n    this.select((s) => s['segments']),\n    (start, end, mid, segments) => {\n      return this.getPoints(start, end, mid, segments);\n    }\n  );\n\n  readonly quadraticLineViewModel$ = this.select(\n    this.quadraticBezierPoints$,\n    this.select((s) => s.vertexColors),\n    this.select((s) => s.resolution),\n    this.select((s) => s.dashed),\n    this.select((s) => s.color),\n    this.select((s) => s.lineWidth),\n    (points, vertexColors, resolution, dashed, color, lineWidth) => ({\n      points,\n      vertexColors,\n      resolution,\n      dashed,\n      color,\n      lineWidth,\n    })\n  );\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      start: state['start'] ?? [0, 0, 0],\n      end: state['end'] ?? [0, 0, 0],\n      segments: state['segments'] ?? 20,\n    }));\n  }\n\n  protected override postInit() {\n    super.postInit();\n    this.setLineSetPoints(this.instance);\n  }\n\n  private readonly setLineSetPoints = this.effect(\n    tap(() => {\n      const lineRef = this.get((s) => s.instance);\n      if (lineRef.value) {\n        (\n          lineRef.value as unknown as {\n            setPoints: (\n              start: THREE.Vector3 | NgtTriple,\n              end: THREE.Vector3 | NgtTriple,\n              mid: THREE.Vector3 | NgtTriple\n            ) => void;\n          }\n        ).setPoints = (start, end, mid) => {\n          const points = this.getPoints(start, end, mid);\n          if (lineRef.value.geometry) {\n            lineRef.value.geometry.setPositions(points.map((p) => p.toArray()).flat());\n          }\n        };\n      }\n    })\n  );\n\n  private curve = new THREE.QuadraticBezierCurve3(new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3());\n\n  private getPoints(\n    start: THREE.Vector3 | NgtTriple,\n    end: THREE.Vector3 | NgtTriple,\n    mid?: THREE.Vector3 | NgtTriple,\n    segments = 20\n  ): THREE.Vector3[] {\n    if (is.vector3(start)) this.curve.v0.copy(start);\n    else this.curve.v0.set(...start);\n    if (is.vector3(end)) this.curve.v2.copy(end);\n    else this.curve.v2.set(...end);\n    if (is.vector3(mid)) {\n      this.curve.v1.copy(mid);\n    } else {\n      this.curve.v1.copy(\n        this.curve.v0\n          .clone()\n          .add(this.curve.v2.clone().sub(this.curve.v0))\n          .add(v.set(0, this.curve.v0.y - this.curve.v2.y, 0))\n      );\n    }\n    return this.curve.getPoints(segments);\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaQuadraticBezierLine],\n  exports: [NgtSobaQuadraticBezierLine],\n})\nexport class NgtSobaQuadraticBezierLineModule {}\n","import {\n  BooleanInput,\n  coerceBooleanProperty,\n  coerceNumberProperty,\n  is,\n  NgtColor,\n  NgtCommonMaterial,\n  NgtObjectPassThrough,\n  NgtObjectProps,\n  NgtRenderState,\n  NumberInput,\n  provideNgtObject,\n  provideObjectHostRef,\n  provideObjectRef,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtPrimitive } from '@angular-three/core/primitive';\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 { animationFrameScheduler, observeOn, pipe, tap } from 'rxjs';\n// @ts-ignore\nimport { preloadFont, Text as TextMeshImpl } from 'troika-three-text';\n\n@Directive({\n  selector: 'ng-template[ngt-soba-text-content]',\n  standalone: true,\n})\nexport class NgtSobaTextContent {\n  constructor(public templateRef: TemplateRef<{ text: Ref<TextMeshImpl> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtSobaTextContent, ctx: any): ctx is { text: Ref<TextMeshImpl> } {\n    return true;\n  }\n}\n\n@Component({\n  selector: 'ngt-soba-text[text]',\n  standalone: true,\n  template: `\n    <ngt-primitive [object]=\"textMesh\" (beforeRender)=\"beforeRender.emit($event)\" [ngtObjectPassThrough]=\"this\">\n      <ng-container\n        *ngIf=\"content\"\n        [ngTemplateOutlet]=\"content.templateRef\"\n        [ngTemplateOutletContext]=\"{ textMesh: instance }\"\n      ></ng-container>\n    </ngt-primitive>\n  `,\n  imports: [NgtPrimitive, NgtObjectPassThrough, NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtObject(NgtSobaText),\n    provideObjectRef(NgtSobaText, (text) => text.textMesh),\n    provideObjectHostRef(NgtSobaText),\n  ],\n})\nexport class NgtSobaText extends NgtObjectProps<TextMeshImpl> {\n  @Input() set text(text: string) {\n    this.set({ text });\n  }\n\n  @Input() set characters(characters: string) {\n    this.set({ characters });\n  }\n\n  @Input() set fontSize(fontSize: NumberInput) {\n    this.set({ fontSize: coerceNumberProperty(fontSize) });\n  }\n\n  @Input() set maxWidth(maxWidth: NumberInput) {\n    this.set({ maxWidth: coerceNumberProperty(maxWidth) });\n  }\n\n  @Input() set lineHeight(lineHeight: NumberInput) {\n    this.set({ lineHeight: coerceNumberProperty(lineHeight) });\n  }\n\n  @Input() set letterSpacing(letterSpacing: NumberInput) {\n    this.set({ letterSpacing: coerceNumberProperty(letterSpacing) });\n  }\n\n  @Input() set textAlign(textAlign: 'left' | 'right' | 'center' | 'justify') {\n    this.set({ textAlign });\n  }\n\n  @Input() set font(font: string) {\n    this.set({ font });\n  }\n\n  @Input() set anchorX(anchorX: number | 'left' | 'center' | 'right') {\n    this.set({ anchorX });\n  }\n\n  @Input() set anchorY(anchorY: number | 'top' | 'top-baseline' | 'middle' | 'bottom-baseline' | 'bottom') {\n    this.set({ anchorY });\n  }\n\n  @Input() set clipRect(clipRect: [number, number, number, number]) {\n    this.set({ clipRect });\n  }\n\n  @Input() set depthOffset(depthOffset: NumberInput) {\n    this.set({ depthOffset: coerceNumberProperty(depthOffset) });\n  }\n\n  @Input() set direction(direction: 'auto' | 'ltr' | 'rtl') {\n    this.set({ direction });\n  }\n\n  @Input() set overflowWrap(overflowWrap: 'normal' | 'break-word') {\n    this.set({ overflowWrap });\n  }\n\n  @Input() set whiteSpace(whiteSpace: 'normal' | 'overflowWrap' | 'overflowWrap') {\n    this.set({ whiteSpace });\n  }\n\n  @Input() set outlineWidth(outlineWidth: number | string) {\n    this.set({\n      outlineWidth: coerceNumberProperty(outlineWidth, outlineWidth),\n    });\n  }\n\n  @Input() set outlineOffsetX(outlineOffsetX: number | string) {\n    this.set({\n      outlineOffsetX: coerceNumberProperty(outlineOffsetX, outlineOffsetX),\n    });\n  }\n\n  @Input() set outlineOffsetY(outlineOffsetY: number | string) {\n    this.set({\n      outlineOffsetY: coerceNumberProperty(outlineOffsetY, outlineOffsetY),\n    });\n  }\n\n  @Input() set outlineBlur(outlineBlur: number | string) {\n    this.set({\n      outlineBlur: coerceNumberProperty(outlineBlur, outlineBlur),\n    });\n  }\n\n  @Input() set outlineColor(outlineColor: NgtColor) {\n    this.set({ outlineColor });\n  }\n\n  @Input() set outlineOpacity(outlineOpacity: NumberInput) {\n    this.set({ outlineOpacity: coerceNumberProperty(outlineOpacity) });\n  }\n\n  @Input() set strokeWidth(strokeWidth: number | string) {\n    this.set({\n      strokeWidth: coerceNumberProperty(strokeWidth, strokeWidth),\n    });\n  }\n\n  @Input() set strokeColor(strokeColor: NgtColor) {\n    this.set({ strokeColor });\n  }\n\n  @Input() set strokeOpacity(strokeOpacity: NumberInput) {\n    this.set({ strokeOpacity: coerceNumberProperty(strokeOpacity) });\n  }\n\n  @Input() set fillOpacity(fillOpacity: NumberInput) {\n    this.set({ fillOpacity: coerceNumberProperty(fillOpacity) });\n  }\n\n  @Input() set debugSDF(debugSDF: BooleanInput) {\n    this.set({ debugSDF: coerceBooleanProperty(debugSDF) });\n  }\n\n  @Input() set material(material: THREE.Material | Ref<THREE.Material>) {\n    this.set({ material });\n  }\n\n  @Output() beforeRender = new EventEmitter<{\n    state: NgtRenderState;\n    object: TextMeshImpl;\n  }>();\n  @Output() sync = new EventEmitter<TextMeshImpl>();\n\n  @ContentChild(NgtSobaTextContent) content?: NgtSobaTextContent;\n  @ContentChild(NgtCommonMaterial) commonMaterial?: NgtCommonMaterial;\n\n  get textMesh() {\n    return this.get((s) => s['textMesh']);\n  }\n\n  protected override preInit() {\n    this.set((state) => ({\n      textMesh: new Ref(new TextMeshImpl()),\n      anchorX: state['anchorX'] || 'center',\n      anchorY: state['anchorY'] || 'middle',\n      text: state['text'] || '',\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.preloadFont(\n        this.select(\n          this.select((s) => s['fonts']),\n          this.select((s) => s['characters'])\n        )\n      );\n    });\n    this.store.onReady(() => {\n      this.init();\n    });\n  }\n\n  private readonly init = this.effect<void>(\n    pipe(\n      observeOn(animationFrameScheduler),\n      tapEffect(() => {\n        const material = this.get((s) => s['material']);\n\n        if (material) {\n          this.textMesh.value.material = is.ref(material) ? material.value : material;\n          this.textMesh.value.sync();\n        }\n\n        if (material || this.commonMaterial) {\n          // if there's a custom material, we delete the color on the textMesh which is the default\n          delete this.textMesh.value.color;\n        }\n\n        return () => {\n          this.textMesh.value.dispose();\n        };\n      })\n    )\n  );\n\n  private readonly preloadFont = this.effect(\n    tap(() => {\n      const { font, characters } = this.get();\n      if (font && characters) {\n        preloadFont({ font, characters });\n      }\n    })\n  );\n\n  protected override postSetOptions(textMesh: TextMeshImpl) {\n    const invalidate = this.store.get((s) => s.invalidate);\n    textMesh.sync(() => {\n      invalidate();\n      if (this.sync.observed) {\n        this.sync.emit(textMesh);\n      }\n    });\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      text: false,\n      characters: true,\n      fontSize: true,\n      maxWidth: true,\n      lineHeight: true,\n      letterSpacing: true,\n      textAlign: true,\n      font: true,\n      anchorX: false,\n      anchorY: false,\n      clipRect: true,\n      depthOffset: true,\n      direction: true,\n      overflowWrap: true,\n      whiteSpace: true,\n      outlineWidth: true,\n      outlineOffsetX: true,\n      outlineOffsetY: true,\n      outlineBlur: true,\n      outlineColor: true,\n      outlineOpacity: true,\n      strokeWidth: true,\n      strokeColor: true,\n      strokeOpacity: true,\n      fillOpacity: true,\n      debugSDF: true,\n    };\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaText, NgtSobaTextContent],\n  exports: [NgtSobaText, NgtSobaTextContent],\n})\nexport class NgtSobaTextModule {}\n","import { make, NgtEuler, NgtTriple, NgtVector3 } from '@angular-three/core';\nimport { NgtGroup } from '@angular-three/core/group';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\nimport { Font, FontLoader, TextGeometry } from 'three-stdlib';\n\n/**\n * adapted from three.js example https://threejs.org/examples/?q=text#webgl_geometry_text\n */\n@Component({\n  selector: 'ngt-soba-text3d[fontUrl]',\n  standalone: true,\n  template: `\n    <ngt-group (ready)=\"ready($event)\" [position]=\"position\" [scale]=\"scale\" [rotation]=\"rotation\"></ngt-group>\n  `,\n  imports: [NgtGroup],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtSobaText3d {\n  private _text = '';\n  @Input()\n  get text(): string {\n    return this._text;\n  }\n  set text(newvalue: string) {\n    if (newvalue != this._text) {\n      this._text = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  /**\n   * see https://threejs.org/docs/index.html?q=mesh#examples/en/loaders/FontLoader for more details\n   */\n  private _fontUrl = '';\n  @Input()\n  get fontUrl(): string {\n    return this._fontUrl;\n  }\n  set fontUrl(newvalue: string) {\n    if (newvalue && newvalue != this._fontUrl) {\n      this._fontUrl = newvalue;\n      const loader = new FontLoader();\n\n      loader.load(\n        newvalue,\n        (font) => {\n          this.font = font;\n          this.refreshtext();\n        },\n        (_) => {}, // progress\n        (err) => {\n          console.error(err);\n        }\n      );\n    }\n  }\n\n  private _size = 2;\n  @Input()\n  get size(): number {\n    return this._size;\n  }\n  set size(newvalue: number) {\n    if (newvalue != this._size) {\n      this._size = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  private _height = 0.5;\n  @Input()\n  get height(): number {\n    return this._height;\n  }\n  set height(newvalue: number) {\n    if (newvalue != this._height) {\n      this._height = newvalue;\n      this.refreshtext();\n    }\n  }\n  private _curveSegments = 2;\n  @Input()\n  get curveSegments(): number {\n    return this._curveSegments;\n  }\n  set curveSegments(newvalue: number) {\n    if (newvalue != this._curveSegments) {\n      this._curveSegments = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  private _bevelEnabled = false;\n  @Input()\n  get bevelEnabled(): boolean {\n    return this._bevelEnabled;\n  }\n  set bevelEnabled(newvalue: boolean) {\n    if (newvalue != this._bevelEnabled) {\n      this._bevelEnabled = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  private _bevelThickness = 0.1;\n  @Input()\n  get bevelThickness(): number {\n    return this._bevelThickness;\n  }\n  set bevelThickness(newvalue: number) {\n    if (newvalue != this._bevelThickness) {\n      this._bevelThickness = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  private _bevelSize = 0.1;\n  @Input()\n  get bevelSize(): number {\n    return this._bevelSize;\n  }\n  set bevelSize(newvalue: number) {\n    if (newvalue != this._bevelSize) {\n      this._bevelSize = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  private _bevelOffset = 0;\n  @Input()\n  get bevelOffset(): number {\n    return this._bevelOffset;\n  }\n  set bevelOffset(newvalue: number) {\n    if (newvalue != this._bevelOffset) {\n      this._bevelOffset = newvalue;\n      this.refreshtext();\n    }\n  }\n  private _center = true;\n  @Input()\n  get center(): boolean {\n    return this._center;\n  }\n  set center(newvalue: boolean) {\n    if (newvalue != this._center) {\n      this._center = newvalue;\n      this.refreshtext();\n    }\n  }\n\n  private _position = new THREE.Vector3();\n  @Input() set position(position: NgtVector3 | undefined) {\n    this._position = make(THREE.Vector3, position);\n  }\n  get position(): THREE.Vector3 {\n    return this._position;\n  }\n\n  private _rotation = new THREE.Euler();\n  @Input() set rotation(rotation: NgtEuler | NgtTriple | undefined) {\n    this._rotation = make(THREE.Euler, rotation);\n  }\n  get rotation(): THREE.Euler {\n    return this._rotation;\n  }\n\n  private _scale = new THREE.Vector3(1, 1, 1);\n  @Input() set scale(scale: NgtVector3 | undefined) {\n    this._scale = make(THREE.Vector3, scale);\n  }\n  get scale(): THREE.Vector3 {\n    return this._scale;\n  }\n\n  @Input() material: THREE.Material | THREE.Material[] = new THREE.MeshBasicMaterial();\n\n  private font!: Font;\n  private group!: THREE.Group;\n  private lastMesh!: THREE.Mesh;\n\n  ready(group: THREE.Group) {\n    this.group = group;\n  }\n\n  private refreshtext() {\n    if (!this.font) return;\n\n    if (this.lastMesh) {\n      this.group.remove(this.lastMesh);\n    }\n    const textGeo = new TextGeometry(this.text, {\n      font: this.font,\n      size: this.size,\n      height: this.height,\n      curveSegments: this.curveSegments,\n      bevelEnabled: this.bevelEnabled,\n      bevelThickness: this.bevelThickness,\n      bevelSize: this.bevelSize,\n      bevelOffset: this.bevelOffset,\n    });\n\n    let centerOffset = 0;\n    if (this.center) {\n      textGeo.computeBoundingBox();\n      const boundingBox = textGeo.boundingBox ?? new THREE.Box3();\n      centerOffset = -0.5 * (boundingBox.max.x - boundingBox.min.x);\n    }\n    const mesh = new THREE.Mesh(textGeo, this.material);\n    mesh.position.set(this.position.x + centerOffset, this.position.y, this.position.z);\n    mesh.rotation.copy(this.rotation);\n    mesh.scale.copy(this.scale);\n\n    this.group.add(mesh);\n    this.lastMesh = mesh;\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaText3d],\n  exports: [NgtSobaText3d],\n})\nexport class NgtSobaText3dModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TextMeshImpl"],"mappings":"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"}