{"version":3,"file":"angular-stl-model-viewer.mjs","sources":["../../../projects/angular-stl-model-viewer/src/lib/angular-stl-model-viewer.component.ts","../../../projects/angular-stl-model-viewer/src/lib/angular-stl-model-viewer.module.ts","../../../projects/angular-stl-model-viewer/src/public-api.ts","../../../projects/angular-stl-model-viewer/src/angular-stl-model-viewer.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output\n} from '@angular/core'\n\nimport * as THREE from 'three'\n\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js'\n\nimport { Vector3 } from 'three'\n\nexport interface MeshOptions {\n  castShadow?: boolean\n  position?: THREE.Vector3\n  receiveShadow?: boolean\n  scale?: THREE.Vector3\n  up?: THREE.Vector3\n  userData?: Record<string, any>\n  visible?: boolean\n}\n\nconst defaultMeshOptions = {\n  castShadow: true,\n  position: new THREE.Vector3(0, 0, 0),\n  receiveShadow: true,\n  scale: new THREE.Vector3(0.03, 0.03, 0.03)\n}\n\nconst isWebGLAvailable = () => {\n  try {\n    const canvas = document.createElement('canvas')\n    return !!(\n      window.WebGLRenderingContext\n      && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'))\n    )\n  }\n  catch {\n    return false\n  }\n}\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  selector: 'stl-model-viewer',\n  styles: [\n    `\n:host {\n  width: 100%;\n  height: 100%;\n  display: block;\n}\n  `\n  ],\n  template: ''\n})\nexport class StlModelViewerComponent implements OnInit, OnDestroy {\n  @Input() stlModels: string[] = []\n  @Input() stlModelFiles: string[] = []\n  @Input() hasControls = true\n  @Input() camera: THREE.PerspectiveCamera = new THREE.PerspectiveCamera(\n    35,\n    window.innerWidth / window.innerHeight,\n    1,\n    15\n  )\n\n  @Input() cameraTarget: THREE.Vector3 = new THREE.Vector3(0, 0, 0)\n  @Input() light: THREE.Light = new THREE.PointLight(0xffffff, 80)\n  @Input() material: THREE.Material = new THREE.MeshPhongMaterial({\n    color: 0x999999,\n    shininess: 400,\n    specular: 0x222222\n  })\n\n  @Input() scene: THREE.Scene = new THREE.Scene()\n  @Input() renderer: THREE.WebGLRenderer = new THREE.WebGLRenderer({\n    antialias: true\n  })\n\n  @Input() controls: any | null = null\n  @Input() meshOptions: MeshOptions[] = []\n  @Input() centered = true\n\n  @Output() rendered = new EventEmitter<void>()\n\n  hasWebGL = isWebGLAvailable()\n  meshGroup = new THREE.Object3D()\n  isRendered = false\n  showStlModel = true\n  stlLoader = new STLLoader()\n  middle = new THREE.Vector3()\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private eleRef: ElementRef,\n    private ngZone: NgZone\n  ) {\n    this.cdr.detach()\n    // default light position\n    this.light.position.set(1, 1, 2)\n\n    // default camera position\n    this.camera.position.set(3, 3, 3)\n\n    // default scene background\n    this.scene.background = new THREE.Color(0xffffff)\n\n    // default renderer options\n    this.renderer.setPixelRatio(window.devicePixelRatio)\n    this.renderer.shadowMap.enabled = true\n  }\n\n  ngOnInit() {\n    if (!this.hasWebGL) {\n      console.error(\n        'stl-model-viewer: Seems like your system does not support webgl.'\n      )\n      return\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.init()\n    })\n  }\n\n  ngOnDestroy() {\n    window.removeEventListener('resize', this.onWindowResize, false)\n\n    this.meshGroup.children.forEach(child => this.meshGroup.remove(child))\n    this.scene.children.forEach(child => this.scene.remove(child))\n    this.camera.remove(this.light)\n\n    if (this.material) {\n      this.material.dispose()\n    }\n\n    if (this.controls) {\n      this.controls.removeEventListener('change', this.render)\n      this.controls.dispose()\n    }\n\n    if (this.eleRef && this.eleRef.nativeElement.children.length > 1) {\n      this.eleRef.nativeElement.removeChild(this.renderer.domElement)\n    }\n    this.renderer.renderLists.dispose()\n    this.renderer.domElement.remove()\n\n    this.renderer.dispose()\n  }\n\n  async createMesh(\n    path: string,\n    meshOptions: MeshOptions = {},\n    parse = false\n  ): Promise<THREE.Mesh> {\n    let geometry: THREE.BufferGeometry = null\n    if (parse) {\n      geometry = this.stlLoader.parse(path)\n    }\n    else {\n      geometry = await this.stlLoader.loadAsync(path)\n    }\n    this.material.shininess = 100\n    const mesh = new THREE.Mesh(geometry, this.material)\n\n    if (this.centered) {\n      geometry.computeBoundingBox()\n      geometry.boundingBox.getCenter(this.middle)\n      mesh.geometry.applyMatrix4(\n        new THREE.Matrix4().makeTranslation(\n          -this.middle.x,\n          -this.middle.y,\n          -this.middle.z\n        )\n      )\n    }\n\n    const vectorOptions = ['position', 'scale', 'up']\n    const options = Object.assign({}, defaultMeshOptions, meshOptions)\n\n    Object.getOwnPropertyNames(options).forEach((option) => {\n      if (vectorOptions.indexOf(option) > -1) {\n        const vector = options[option] as Vector3\n        const meshVectorOption = mesh[option] as Vector3\n        meshVectorOption.set(vector.x, vector.y, vector.z)\n      }\n      else {\n        mesh[option] = options[option]\n      }\n    })\n\n    return mesh\n  }\n\n  render = () => {\n    this.renderer.render(this.scene, this.camera)\n  }\n\n  setSizes() {\n    const width = this.eleRef.nativeElement.offsetWidth\n    const height = this.eleRef.nativeElement.offsetHeight\n\n    this.camera.aspect = width / height\n    this.camera.updateProjectionMatrix()\n\n    this.renderer.setSize(width, height)\n  }\n\n  onWindowResize = () => {\n    this.setSizes()\n    this.render()\n  }\n\n  private async init() {\n    this.camera.add(this.light)\n    this.scene.add(this.camera)\n\n    // use default controls\n    if (this.hasControls) {\n      if (!this.controls) {\n        this.controls = new OrbitControls(\n          this.camera,\n          this.renderer.domElement\n        )\n        this.controls.enableZoom = true\n        this.controls.minDistance = 1\n        this.controls.maxDistance = 7\n      }\n      this.controls.addEventListener('change', this.render)\n    }\n\n    window.addEventListener('resize', this.onWindowResize, false)\n    let meshCreations: Promise<THREE.Mesh>[] = []\n    if (this.stlModels.length > 0) {\n      meshCreations = this.stlModels.map((modelPath, index) =>\n        this.createMesh(modelPath, this.meshOptions[index])\n      )\n    }\n    else {\n      meshCreations = this.stlModelFiles.map((modelFile, index) =>\n        this.createMesh(modelFile, this.meshOptions[index], true)\n      )\n    }\n    const meshes: THREE.Object3D[] = await Promise.all(meshCreations)\n\n    meshes.map(mesh => this.meshGroup.add(mesh))\n\n    this.scene.add(this.meshGroup)\n    this.eleRef.nativeElement.appendChild(this.renderer.domElement)\n    this.setSizes()\n    this.render()\n    this.ngZone.run(() => {\n      this.isRendered = true\n      this.rendered.emit()\n      this.cdr.detectChanges()\n    })\n  }\n}\n","import { NgModule } from '@angular/core'\nimport { StlModelViewerComponent } from './angular-stl-model-viewer.component'\n\n@NgModule({\n  exports: [StlModelViewerComponent],\n  imports: [\n    StlModelViewerComponent\n  ]\n})\nexport class StlModelViewerModule { }\n","/*\n * Public API Surface of angular-stl-model-viewer\n */\n\nexport * from './lib/angular-stl-model-viewer.component'\nexport * from './lib/angular-stl-model-viewer.module'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}