angular-stl-model-viewer
Advanced tools
Comparing version 2.0.0 to 3.0.0
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"MeshOptions":{"__symbolic":"interface"},"StlModelViewerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":46,"character":1},"arguments":[{"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":47,"character":19},"member":"OnPush"},"selector":"stl-model-viewer","styles":["\n:host {\n width: 100%;\n height: 100%;\n display: block;\n}\n "],"template":""}]}],"members":{"stlModels":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"hasControls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"camera":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"cameraTarget":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"light":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"material":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"scene":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"renderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"controls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"meshOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"rendered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":70,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":79,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":80,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":81,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"createMesh":[{"__symbolic":"method"}],"setSizes":[{"__symbolic":"method"}]}},"StlModelViewerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"StlModelViewerComponent"}],"exports":[{"__symbolic":"reference","name":"StlModelViewerComponent"}],"imports":[]}]}],"members":{}}},"origins":{"MeshOptions":"./lib/angular-stl-model-viewer.component","StlModelViewerComponent":"./lib/angular-stl-model-viewer.component","StlModelViewerModule":"./lib/angular-stl-model-viewer.module"},"importAs":"angular-stl-model-viewer"} | ||
{"__symbolic":"module","version":4,"metadata":{"MeshOptions":{"__symbolic":"interface"},"StlModelViewerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":46,"character":1},"arguments":[{"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":47,"character":19},"member":"OnPush"},"selector":"stl-model-viewer","styles":["\n:host {\n width: 100%\n height: 100%\n display: block\n}\n "],"template":""}]}],"members":{"stlModels":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"hasControls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"camera":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"cameraTarget":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"light":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"material":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"scene":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"renderer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"controls":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"meshOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3}}]}],"rendered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":70,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":79,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":80,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":81,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"createMesh":[{"__symbolic":"method"}],"setSizes":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}]}},"StlModelViewerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"StlModelViewerComponent"}],"exports":[{"__symbolic":"reference","name":"StlModelViewerComponent"}],"imports":[]}]}],"members":{}}},"origins":{"MeshOptions":"./lib/angular-stl-model-viewer.component","StlModelViewerComponent":"./lib/angular-stl-model-viewer.component","StlModelViewerModule":"./lib/angular-stl-model-viewer.module"},"importAs":"angular-stl-model-viewer"} |
@@ -314,3 +314,3 @@ (function (global, factory) { | ||
}; | ||
function isWebGLAvailable() { | ||
var isWebGLAvailable = function () { | ||
try { | ||
@@ -323,3 +323,4 @@ var canvas = document.createElement('canvas'); | ||
} | ||
} | ||
}; | ||
var ɵ0 = isWebGLAvailable; | ||
var StlModelViewerComponent = /** @class */ (function () { | ||
@@ -400,5 +401,38 @@ function StlModelViewerComponent(cdr, eleRef, ngZone) { | ||
}); | ||
this.scene.dispose(); | ||
} | ||
}; | ||
StlModelViewerComponent.prototype.createMesh = function (path, meshOptions) { | ||
if (meshOptions === void 0) { meshOptions = {}; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var geometry, mesh, vectorOptions, options; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, this.stlLoader.loadAsync(path)]; | ||
case 1: | ||
geometry = _a.sent(); | ||
mesh = new THREE.Mesh(geometry, this.material); | ||
vectorOptions = ['position', 'scale', 'up']; | ||
options = Object.assign({}, defaultMeshOptions, meshOptions); | ||
Object.getOwnPropertyNames(options).forEach(function (option) { | ||
if (vectorOptions.indexOf(option) > -1) { | ||
var vector = options[option]; | ||
var meshVectorOption = mesh[option]; | ||
meshVectorOption.set(vector.x, vector.y, vector.z); | ||
} | ||
else { | ||
mesh[option] = options[option]; | ||
} | ||
}); | ||
return [2 /*return*/, mesh]; | ||
} | ||
}); | ||
}); | ||
}; | ||
StlModelViewerComponent.prototype.setSizes = function () { | ||
var width = this.eleRef.nativeElement.offsetWidth; | ||
var height = this.eleRef.nativeElement.offsetHeight; | ||
this.camera.aspect = width / height; | ||
this.camera.updateProjectionMatrix(); | ||
this.renderer.setSize(width, height); | ||
}; | ||
StlModelViewerComponent.prototype.init = function () { | ||
@@ -441,36 +475,2 @@ return __awaiter(this, void 0, void 0, function () { | ||
}; | ||
StlModelViewerComponent.prototype.createMesh = function (path, meshOptions) { | ||
if (meshOptions === void 0) { meshOptions = {}; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var geometry, mesh, vectorOptions, options; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4 /*yield*/, this.stlLoader.loadAsync(path)]; | ||
case 1: | ||
geometry = _a.sent(); | ||
mesh = new THREE.Mesh(geometry, this.material); | ||
vectorOptions = ['position', 'scale', 'up']; | ||
options = Object.assign({}, defaultMeshOptions, meshOptions); | ||
Object.getOwnPropertyNames(options).forEach(function (option) { | ||
if (vectorOptions.indexOf(option) > -1) { | ||
var vector = options[option]; | ||
var meshVectorOption = mesh[option]; | ||
meshVectorOption.set(vector.x, vector.y, vector.z); | ||
} | ||
else { | ||
mesh[option] = options[option]; | ||
} | ||
}); | ||
return [2 /*return*/, mesh]; | ||
} | ||
}); | ||
}); | ||
}; | ||
StlModelViewerComponent.prototype.setSizes = function () { | ||
var width = this.eleRef.nativeElement.offsetWidth; | ||
var height = this.eleRef.nativeElement.offsetHeight; | ||
this.camera.aspect = width / height; | ||
this.camera.updateProjectionMatrix(); | ||
this.renderer.setSize(width, height); | ||
}; | ||
return StlModelViewerComponent; | ||
@@ -483,3 +483,3 @@ }()); | ||
template: '', | ||
styles: ["\n:host {\n width: 100%;\n height: 100%;\n display: block;\n}\n "] | ||
styles: ["\n:host {\n width: 100%\n height: 100%\n display: block\n}\n "] | ||
},] } | ||
@@ -529,2 +529,3 @@ ]; | ||
exports.StlModelViewerModule = StlModelViewerModule; | ||
exports.ɵ0 = ɵ0; | ||
@@ -531,0 +532,0 @@ Object.defineProperty(exports, '__esModule', { value: true }); |
@@ -15,3 +15,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("three"),require("three/examples/jsm/loaders/STLLoader"),require("three/examples/jsm/controls/OrbitControls")):"function"==typeof define&&define.amd?define("angular-stl-model-viewer",["exports","@angular/core","three","three/examples/jsm/loaders/STLLoader","three/examples/jsm/controls/OrbitControls"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["angular-stl-model-viewer"]={},e.ng.core,e.THREE,e.STLLoader,e.OrbitControls)}(this,(function(e,t,n,r,i){"use strict"; | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */function s(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(e){s=[6,e],r=0}finally{n=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}Object.create;Object.create;var a={castShadow:!0,position:new n.Vector3(0,0,0),receiveShadow:!0,scale:new n.Vector3(.03,.03,.03)};var c=function(){function e(e,i,s){var o=this;this.cdr=e,this.eleRef=i,this.ngZone=s,this.stlModels=[],this.hasControls=!0,this.camera=new n.PerspectiveCamera(35,window.innerWidth/window.innerHeight,1,15),this.cameraTarget=new n.Vector3(0,0,0),this.light=new n.PointLight(16777215),this.material=new n.MeshPhongMaterial({color:12895428,shininess:100,specular:1118481}),this.scene=new n.Scene,this.renderer=new n.WebGLRenderer({antialias:!0}),this.controls=null,this.meshOptions=[],this.rendered=new t.EventEmitter,this.hasWebGL=function(){try{var e=document.createElement("canvas");return!(!window.WebGLRenderingContext||!e.getContext("webgl")&&!e.getContext("experimental-webgl"))}catch(e){return!1}}(),this.meshGroup=new n.Object3D,this.isRendered=!1,this.showStlModel=!0,this.stlLoader=new r.STLLoader,this.render=function(){o.renderer.render(o.scene,o.camera)},this.onWindowResize=function(){o.setSizes(),o.render()},this.cdr.detach(),this.light.position.set(1,1,2),this.camera.position.set(3,3,3),this.scene.background=new n.Color(16777215),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.shadowMap.enabled=!0}return e.prototype.ngOnInit=function(){var e=this;this.hasWebGL?this.ngZone.runOutsideAngular((function(){e.init()})):console.error("stl-model-viewer: Seems like your system does not support webgl.")},e.prototype.ngOnDestroy=function(){var e=this;window.removeEventListener("resize",this.onWindowResize,!1),this.meshGroup.remove(),this.renderer&&(this.renderer.renderLists.dispose(),this.renderer.dispose()),this.camera&&this.camera.remove(),this.light&&this.light.remove(),this.material&&this.material.dispose(),this.controls&&(this.controls.removeEventListener("change",this.render),this.controls.dispose()),this.scene&&(this.scene.children.forEach((function(t){e.scene.remove(t)})),this.scene.dispose())},e.prototype.init=function(){return s(this,void 0,void 0,(function(){var e,t=this;return o(this,(function(n){switch(n.label){case 0:return this.camera.add(this.light),this.scene.add(this.camera),this.hasControls&&!this.controls&&(this.controls=new i.OrbitControls(this.camera,this.renderer.domElement),this.controls.enableZoom=!0,this.controls.minDistance=1,this.controls.maxDistance=7,this.controls.addEventListener("change",this.render)),window.addEventListener("resize",this.onWindowResize,!1),e=this.stlModels.map((function(e,n){return t.createMesh(e,t.meshOptions[n])})),[4,Promise.all(e)];case 1:return n.sent().map((function(e){return t.meshGroup.add(e)})),this.scene.add(this.meshGroup),this.eleRef.nativeElement.appendChild(this.renderer.domElement),this.setSizes(),this.render(),this.ngZone.run((function(){t.isRendered=!0,t.rendered.emit(),t.cdr.detectChanges()})),[2]}}))}))},e.prototype.createMesh=function(e,t){return void 0===t&&(t={}),s(this,void 0,void 0,(function(){var r,i,s,c;return o(this,(function(o){switch(o.label){case 0:return[4,this.stlLoader.loadAsync(e)];case 1:return r=o.sent(),i=new n.Mesh(r,this.material),s=["position","scale","up"],c=Object.assign({},a,t),Object.getOwnPropertyNames(c).forEach((function(e){if(s.indexOf(e)>-1){var t=c[e];i[e].set(t.x,t.y,t.z)}else i[e]=c[e]})),[2,i]}}))}))},e.prototype.setSizes=function(){var e=this.eleRef.nativeElement.offsetWidth,t=this.eleRef.nativeElement.offsetHeight;this.camera.aspect=e/t,this.camera.updateProjectionMatrix(),this.renderer.setSize(e,t)},e}();c.decorators=[{type:t.Component,args:[{changeDetection:t.ChangeDetectionStrategy.OnPush,selector:"stl-model-viewer",template:"",styles:["\n:host {\n width: 100%;\n height: 100%;\n display: block;\n}\n "]}]}],c.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:t.ElementRef},{type:t.NgZone}]},c.propDecorators={stlModels:[{type:t.Input}],hasControls:[{type:t.Input}],camera:[{type:t.Input}],cameraTarget:[{type:t.Input}],light:[{type:t.Input}],material:[{type:t.Input}],scene:[{type:t.Input}],renderer:[{type:t.Input}],controls:[{type:t.Input}],meshOptions:[{type:t.Input}],rendered:[{type:t.Output}]};var h=function(){};h.decorators=[{type:t.NgModule,args:[{declarations:[c],exports:[c],imports:[]}]}],e.StlModelViewerComponent=c,e.StlModelViewerModule=h,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
***************************************************************************** */function s(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(e){s=[6,e],r=0}finally{n=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}Object.create;Object.create;var a={castShadow:!0,position:new n.Vector3(0,0,0),receiveShadow:!0,scale:new n.Vector3(.03,.03,.03)},c=function(){try{var e=document.createElement("canvas");return!(!window.WebGLRenderingContext||!e.getContext("webgl")&&!e.getContext("experimental-webgl"))}catch(e){return!1}},h=c,l=function(){function e(e,i,s){var o=this;this.cdr=e,this.eleRef=i,this.ngZone=s,this.stlModels=[],this.hasControls=!0,this.camera=new n.PerspectiveCamera(35,window.innerWidth/window.innerHeight,1,15),this.cameraTarget=new n.Vector3(0,0,0),this.light=new n.PointLight(16777215),this.material=new n.MeshPhongMaterial({color:12895428,shininess:100,specular:1118481}),this.scene=new n.Scene,this.renderer=new n.WebGLRenderer({antialias:!0}),this.controls=null,this.meshOptions=[],this.rendered=new t.EventEmitter,this.hasWebGL=c(),this.meshGroup=new n.Object3D,this.isRendered=!1,this.showStlModel=!0,this.stlLoader=new r.STLLoader,this.render=function(){o.renderer.render(o.scene,o.camera)},this.onWindowResize=function(){o.setSizes(),o.render()},this.cdr.detach(),this.light.position.set(1,1,2),this.camera.position.set(3,3,3),this.scene.background=new n.Color(16777215),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.shadowMap.enabled=!0}return e.prototype.ngOnInit=function(){var e=this;this.hasWebGL?this.ngZone.runOutsideAngular((function(){e.init()})):console.error("stl-model-viewer: Seems like your system does not support webgl.")},e.prototype.ngOnDestroy=function(){var e=this;window.removeEventListener("resize",this.onWindowResize,!1),this.meshGroup.remove(),this.renderer&&(this.renderer.renderLists.dispose(),this.renderer.dispose()),this.camera&&this.camera.remove(),this.light&&this.light.remove(),this.material&&this.material.dispose(),this.controls&&(this.controls.removeEventListener("change",this.render),this.controls.dispose()),this.scene&&this.scene.children.forEach((function(t){e.scene.remove(t)}))},e.prototype.createMesh=function(e,t){return void 0===t&&(t={}),s(this,void 0,void 0,(function(){var r,i,s,c;return o(this,(function(o){switch(o.label){case 0:return[4,this.stlLoader.loadAsync(e)];case 1:return r=o.sent(),i=new n.Mesh(r,this.material),s=["position","scale","up"],c=Object.assign({},a,t),Object.getOwnPropertyNames(c).forEach((function(e){if(s.indexOf(e)>-1){var t=c[e];i[e].set(t.x,t.y,t.z)}else i[e]=c[e]})),[2,i]}}))}))},e.prototype.setSizes=function(){var e=this.eleRef.nativeElement.offsetWidth,t=this.eleRef.nativeElement.offsetHeight;this.camera.aspect=e/t,this.camera.updateProjectionMatrix(),this.renderer.setSize(e,t)},e.prototype.init=function(){return s(this,void 0,void 0,(function(){var e,t=this;return o(this,(function(n){switch(n.label){case 0:return this.camera.add(this.light),this.scene.add(this.camera),this.hasControls&&!this.controls&&(this.controls=new i.OrbitControls(this.camera,this.renderer.domElement),this.controls.enableZoom=!0,this.controls.minDistance=1,this.controls.maxDistance=7,this.controls.addEventListener("change",this.render)),window.addEventListener("resize",this.onWindowResize,!1),e=this.stlModels.map((function(e,n){return t.createMesh(e,t.meshOptions[n])})),[4,Promise.all(e)];case 1:return n.sent().map((function(e){return t.meshGroup.add(e)})),this.scene.add(this.meshGroup),this.eleRef.nativeElement.appendChild(this.renderer.domElement),this.setSizes(),this.render(),this.ngZone.run((function(){t.isRendered=!0,t.rendered.emit(),t.cdr.detectChanges()})),[2]}}))}))},e}();l.decorators=[{type:t.Component,args:[{changeDetection:t.ChangeDetectionStrategy.OnPush,selector:"stl-model-viewer",template:"",styles:["\n:host {\n width: 100%\n height: 100%\n display: block\n}\n "]}]}],l.ctorParameters=function(){return[{type:t.ChangeDetectorRef},{type:t.ElementRef},{type:t.NgZone}]},l.propDecorators={stlModels:[{type:t.Input}],hasControls:[{type:t.Input}],camera:[{type:t.Input}],cameraTarget:[{type:t.Input}],light:[{type:t.Input}],material:[{type:t.Input}],scene:[{type:t.Input}],renderer:[{type:t.Input}],controls:[{type:t.Input}],meshOptions:[{type:t.Input}],rendered:[{type:t.Output}]};var d=function(){};d.decorators=[{type:t.NgModule,args:[{declarations:[l],exports:[l],imports:[]}]}],e.StlModelViewerComponent=l,e.StlModelViewerModule=d,e.ɵ0=h,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=angular-stl-model-viewer.umd.min.js.map |
@@ -5,2 +5,2 @@ /** | ||
export * from './public-api'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyL3NyYy9hbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci9zcmMvIiwic291cmNlcyI6WyJhbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ== |
@@ -12,3 +12,3 @@ import { __awaiter } from "tslib"; | ||
}; | ||
function isWebGLAvailable() { | ||
const isWebGLAvailable = () => { | ||
try { | ||
@@ -21,3 +21,4 @@ const canvas = document.createElement('canvas'); | ||
} | ||
} | ||
}; | ||
const ɵ0 = isWebGLAvailable; | ||
export class StlModelViewerComponent { | ||
@@ -95,5 +96,30 @@ constructor(cdr, eleRef, ngZone) { | ||
}); | ||
this.scene.dispose(); | ||
} | ||
} | ||
createMesh(path, meshOptions = {}) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const geometry = yield this.stlLoader.loadAsync(path); | ||
const mesh = new THREE.Mesh(geometry, this.material); | ||
const vectorOptions = ['position', 'scale', 'up']; | ||
const options = Object.assign({}, defaultMeshOptions, meshOptions); | ||
Object.getOwnPropertyNames(options).forEach((option) => { | ||
if (vectorOptions.indexOf(option) > -1) { | ||
const vector = options[option]; | ||
const meshVectorOption = mesh[option]; | ||
meshVectorOption.set(vector.x, vector.y, vector.z); | ||
} | ||
else { | ||
mesh[option] = options[option]; | ||
} | ||
}); | ||
return mesh; | ||
}); | ||
} | ||
setSizes() { | ||
const width = this.eleRef.nativeElement.offsetWidth; | ||
const height = this.eleRef.nativeElement.offsetHeight; | ||
this.camera.aspect = width / height; | ||
this.camera.updateProjectionMatrix(); | ||
this.renderer.setSize(width, height); | ||
} | ||
init() { | ||
@@ -126,28 +152,2 @@ return __awaiter(this, void 0, void 0, function* () { | ||
} | ||
createMesh(path, meshOptions = {}) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const geometry = yield this.stlLoader.loadAsync(path); | ||
const mesh = new THREE.Mesh(geometry, this.material); | ||
const vectorOptions = ['position', 'scale', 'up']; | ||
const options = Object.assign({}, defaultMeshOptions, meshOptions); | ||
Object.getOwnPropertyNames(options).forEach((option) => { | ||
if (vectorOptions.indexOf(option) > -1) { | ||
const vector = options[option]; | ||
const meshVectorOption = mesh[option]; | ||
meshVectorOption.set(vector.x, vector.y, vector.z); | ||
} | ||
else { | ||
mesh[option] = options[option]; | ||
} | ||
}); | ||
return mesh; | ||
}); | ||
} | ||
setSizes() { | ||
const width = this.eleRef.nativeElement.offsetWidth; | ||
const height = this.eleRef.nativeElement.offsetHeight; | ||
this.camera.aspect = width / height; | ||
this.camera.updateProjectionMatrix(); | ||
this.renderer.setSize(width, height); | ||
} | ||
} | ||
@@ -161,5 +161,5 @@ StlModelViewerComponent.decorators = [ | ||
:host { | ||
width: 100%; | ||
height: 100%; | ||
display: block; | ||
width: 100% | ||
height: 100% | ||
display: block | ||
} | ||
@@ -187,2 +187,3 @@ `] | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci9zcmMvbGliL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFDTix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFjekUsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixVQUFVLEVBQUUsSUFBSTtJQUNoQixRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7Q0FDM0MsQ0FBQTtBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ3JIO0lBQUMsT0FBTyxDQUFD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TCxLQUFLOzBCQUNMLEtBQUs7dUJBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnXG5cbmltcG9ydCB7IFNUTExvYWRlciB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9sb2FkZXJzL1NUTExvYWRlcidcbmltcG9ydCB7IE9yYml0Q29udHJvbHMgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY29udHJvbHMvT3JiaXRDb250cm9scydcblxuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ3RocmVlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lc2hPcHRpb25zIHtcbiAgY2FzdFNoYWRvdz86IGJvb2xlYW5cbiAgcG9zaXRpb24/OiBUSFJFRS5WZWN0b3IzXG4gIHJlY2VpdmVTaGFkb3c/OiBib29sZWFuXG4gIHNjYWxlPzogVEhSRUUuVmVjdG9yM1xuICB1cD86IFRIUkVFLlZlY3RvcjNcbiAgdXNlckRhdGE/OiB7W2tleTogc3RyaW5nXTogYW55fVxuICB2aXNpYmxlPzogYm9vbGVhblxufVxuXG5jb25zdCBkZWZhdWx0TWVzaE9wdGlvbnMgPSB7XG4gIGNhc3RTaGFkb3c6IHRydWUsXG4gIHBvc2l0aW9uOiBuZXcgVEhSRUUuVmVjdG9yMygwLCAwLCAwKSxcbiAgcmVjZWl2ZVNoYWRvdzogdHJ1ZSxcbiAgc2NhbGU6IG5ldyBUSFJFRS5WZWN0b3IzKDAuMDMsIDAuMDMsIDAuMDMpXG59XG5cbmZ1bmN0aW9uIGlzV2ViR0xBdmFpbGFibGUoKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJylcbiAgICByZXR1cm4gISEgKHdpbmRvdy5XZWJHTFJlbmRlcmluZ0NvbnRleHQgJiYgKGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbCcpIHx8IGNhbnZhcy5nZXRDb250ZXh0KCAnZXhwZXJpbWVudGFsLXdlYmdsJykpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzZWxlY3RvcjogJ3N0bC1tb2RlbC12aWV3ZXInLFxuICBzdHlsZXM6IFtgXG46aG9zdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuICBgXSxcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIFN0bE1vZGVsVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzdGxNb2RlbHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgaGFzQ29udHJvbHMgPSB0cnVlXG4gIEBJbnB1dCgpIGNhbWVyYTogVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoMzUsIHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAxLCAxNSlcbiAgQElucHV0KCkgY2FtZXJhVGFyZ2V0OiBUSFJFRS5WZWN0b3IzID0gbmV3IFRIUkVFLlZlY3RvcjMoIDAsIDAsIDAgKVxuICBASW5wdXQoKSBsaWdodDogVEhSRUUuTGlnaHQgPSBuZXcgVEhSRUUuUG9pbnRMaWdodCggMHhmZmZmZmYgKVxuICBASW5wdXQoKSBtYXRlcmlhbDogVEhSRUUuTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaFBob25nTWF0ZXJpYWwoeyBjb2xvcjogMHhjNGM0YzQsIHNoaW5pbmVzczogMTAwLCBzcGVjdWxhcjogMHgxMTExMTEgfSlcbiAgQElucHV0KCkgc2NlbmU6IFRIUkVFLlNjZW5lID0gbmV3IFRIUkVFLlNjZW5lKClcbiAgQElucHV0KCkgcmVuZGVyZXI6IFRIUkVFLldlYkdMUmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7IGFudGlhbGlhczogdHJ1ZSB9KVxuICBASW5wdXQoKSBjb250cm9sczogYW55IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgbWVzaE9wdGlvbnM6IE1lc2hPcHRpb25zW10gPSBbXVxuXG4gIEBPdXRwdXQoKSByZW5kZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIGhhc1dlYkdMID0gaXNXZWJHTEF2YWlsYWJsZSgpXG4gIG1lc2hHcm91cCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpXG4gIGlzUmVuZGVyZWQgPSBmYWxzZVxuICBzaG93U3RsTW9kZWwgPSB0cnVlXG4gIHN0bExvYWRlciA9IG5ldyBTVExMb2FkZXIoKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZVJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY2RyLmRldGFjaCgpXG4gICAgLy8gZGVmYXVsdCBsaWdodCBwb3NpdGlvblxuICAgIHRoaXMubGlnaHQucG9zaXRpb24uc2V0KDEsIDEsIDIpXG5cbiAgICAvLyBkZWZhdWx0IGNhbWVyYSBwb3NpdGlvblxuICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnNldCgzLCAzLCAzKVxuXG4gICAgLy8gZGVmYXVsdCBzY2VuZSBiYWNrZ3JvdW5kXG4gICAgdGhpcy5zY2VuZS5iYWNrZ3JvdW5kID0gbmV3IFRIUkVFLkNvbG9yKDB4ZmZmZmZmKVxuXG4gICAgLy8gZGVmYXVsdCByZW5kZXJlciBvcHRpb25zXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKVxuICAgIHRoaXMucmVuZGVyZXIuc2hhZG93TWFwLmVuYWJsZWQgPSB0cnVlXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaGFzV2ViR0wpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3N0bC1tb2RlbC12aWV3ZXI6IFNlZW1zIGxpa2UgeW91ciBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCB3ZWJnbC4nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5pbml0KClcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25XaW5kb3dSZXNpemUsIGZhbHNlKVxuXG4gICAgdGhpcy5tZXNoR3JvdXAucmVtb3ZlKClcblxuICAgIGlmICh0aGlzLnJlbmRlcmVyKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlckxpc3RzLmRpc3Bvc2UoKVxuICAgICAgdGhpcy5yZW5kZXJlci5kaXNwb3NlKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYW1lcmEpIHtcbiAgICAgIHRoaXMuY2FtZXJhLnJlbW92ZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGlnaHQpIHtcbiAgICAgIHRoaXMubGlnaHQucmVtb3ZlKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXRlcmlhbCkge1xuICAgICAgdGhpcy5tYXRlcmlhbC5kaXNwb3NlKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9scykge1xuICAgICAgdGhpcy5jb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLnJlbmRlcilcbiAgICAgIHRoaXMuY29udHJvbHMuZGlzcG9zZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2NlbmUpIHtcbiAgICAgIHRoaXMuc2NlbmUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgdGhpcy5zY2VuZS5yZW1vdmUoY2hpbGQpXG4gICAgICB9KVxuICAgICAgdGhpcy5zY2VuZS5kaXNwb3NlKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKSB7XG4gICAgdGhpcy5jYW1lcmEuYWRkKHRoaXMubGlnaHQpXG4gICAgdGhpcy5zY2VuZS5hZGQodGhpcy5jYW1lcmEpXG5cbiAgICAvLyB1c2UgZGVmYXVsdCBjb250cm9sc1xuICAgIGlmICh0aGlzLmhhc0NvbnRyb2xzICYmICF0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzID0gbmV3IE9yYml0Q29udHJvbHModGhpcy5jYW1lcmEsIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudClcbiAgICAgIHRoaXMuY29udHJvbHMuZW5hYmxlWm9vbSA9IHRydWVcbiAgICAgIHRoaXMuY29udHJvbHMubWluRGlzdGFuY2UgPSAxXG4gICAgICB0aGlzLmNvbnRyb2xzLm1heERpc3RhbmNlID0gN1xuXG4gICAgICB0aGlzLmNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMucmVuZGVyKVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uV2luZG93UmVzaXplLCBmYWxzZSlcblxuICAgIGNvbnN0IG1lc2hDcmVhdGlvbnMgPSB0aGlzLnN0bE1vZGVscy5tYXAoKG1vZGVsUGF0aCwgaW5kZXgpID0+IHRoaXMuY3JlYXRlTWVzaChtb2RlbFBhdGgsIHRoaXMubWVzaE9wdGlvbnNbaW5kZXhdKSlcbiAgICBjb25zdCBtZXNoZXM6IFRIUkVFLk9iamVjdDNEW10gPSBhd2FpdCBQcm9taXNlLmFsbChtZXNoQ3JlYXRpb25zKVxuXG4gICAgbWVzaGVzLm1hcCgobWVzaCkgPT4gdGhpcy5tZXNoR3JvdXAuYWRkKG1lc2gpKVxuICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMubWVzaEdyb3VwKVxuICAgIHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5yZW5kZXJlci5kb21FbGVtZW50KVxuICAgIHRoaXMuc2V0U2l6ZXMoKVxuICAgIHRoaXMucmVuZGVyKClcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5pc1JlbmRlcmVkID0gdHJ1ZVxuICAgICAgdGhpcy5yZW5kZXJlZC5lbWl0KClcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH0pXG4gIH1cblxuICBhc3luYyBjcmVhdGVNZXNoKHBhdGg6IHN0cmluZywgbWVzaE9wdGlvbnM6IE1lc2hPcHRpb25zID0ge30pOiBQcm9taXNlPFRIUkVFLk1lc2g+IHtcbiAgICBjb25zdCBnZW9tZXRyeTogVEhSRUUuQnVmZmVyR2VvbWV0cnkgPSBhd2FpdCB0aGlzLnN0bExvYWRlci5sb2FkQXN5bmMocGF0aClcbiAgICBjb25zdCBtZXNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIHRoaXMubWF0ZXJpYWwpXG5cbiAgICBjb25zdCB2ZWN0b3JPcHRpb25zID0gWydwb3NpdGlvbicsICdzY2FsZScsICd1cCddXG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRNZXNoT3B0aW9ucywgbWVzaE9wdGlvbnMpXG5cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvcHRpb25zKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGlmICh2ZWN0b3JPcHRpb25zLmluZGV4T2Yob3B0aW9uKSA+IC0xKSB7XG4gICAgICAgIGNvbnN0IHZlY3RvciA9IG9wdGlvbnNbb3B0aW9uXSBhcyBWZWN0b3IzXG4gICAgICAgIGNvbnN0IG1lc2hWZWN0b3JPcHRpb24gPSBtZXNoW29wdGlvbl0gYXMgVmVjdG9yM1xuICAgICAgICBtZXNoVmVjdG9yT3B0aW9uLnNldCh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci56KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzaFtvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtZXNoXG4gIH1cblxuICByZW5kZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5jYW1lcmEpXG4gIH1cblxuICBzZXRTaXplcygpIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuXG4gICAgdGhpcy5jYW1lcmEuYXNwZWN0ID0gd2lkdGggLyBoZWlnaHRcbiAgICB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KClcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KVxuICB9XG5cbiAgb25XaW5kb3dSZXNpemUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTaXplcygpXG4gICAgdGhpcy5yZW5kZXIoKVxuICB9XG59XG4iXX0= | ||
export { ɵ0 }; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLE1BQU0sRUFDTix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFjekUsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixVQUFVLEVBQUUsSUFBSTtJQUNoQixRQUFRLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLGFBQWEsRUFBRSxJQUFJO0lBQ25CLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7Q0FDM0MsQ0FBQTtBQUVELE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxFQUFFO0lBQzVCLElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDLHFCQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ3JIO0lB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LE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJ1xuXG5pbXBvcnQgeyBTVExMb2FkZXIgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vbG9hZGVycy9TVExMb2FkZXInXG5pbXBvcnQgeyBPcmJpdENvbnRyb2xzIH0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2NvbnRyb2xzL09yYml0Q29udHJvbHMnXG5cbmltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICd0aHJlZSdcblxuZXhwb3J0IGludGVyZmFjZSBNZXNoT3B0aW9ucyB7XG4gIGNhc3RTaGFkb3c/OiBib29sZWFuXG4gIHBvc2l0aW9uPzogVEhSRUUuVmVjdG9yM1xuICByZWNlaXZlU2hhZG93PzogYm9vbGVhblxuICBzY2FsZT86IFRIUkVFLlZlY3RvcjNcbiAgdXA/OiBUSFJFRS5WZWN0b3IzXG4gIHVzZXJEYXRhPzoge1trZXk6IHN0cmluZ106IGFueX1cbiAgdmlzaWJsZT86IGJvb2xlYW5cbn1cblxuY29uc3QgZGVmYXVsdE1lc2hPcHRpb25zID0ge1xuICBjYXN0U2hhZG93OiB0cnVlLFxuICBwb3NpdGlvbjogbmV3IFRIUkVFLlZlY3RvcjMoMCwgMCwgMCksXG4gIHJlY2VpdmVTaGFkb3c6IHRydWUsXG4gIHNjYWxlOiBuZXcgVEhSRUUuVmVjdG9yMygwLjAzLCAwLjAzLCAwLjAzKVxufVxuXG5jb25zdCBpc1dlYkdMQXZhaWxhYmxlID0gKCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpXG4gICAgcmV0dXJuICEhICh3aW5kb3cuV2ViR0xSZW5kZXJpbmdDb250ZXh0ICYmIChjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnKSB8fCBjYW52YXMuZ2V0Q29udGV4dCggJ2V4cGVyaW1lbnRhbC13ZWJnbCcpKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc2VsZWN0b3I6ICdzdGwtbW9kZWwtdmlld2VyJyxcbiAgc3R5bGVzOiBbYFxuOmhvc3Qge1xuICB3aWR0aDogMTAwJVxuICBoZWlnaHQ6IDEwMCVcbiAgZGlzcGxheTogYmxvY2tcbn1cbiAgYF0sXG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBTdGxNb2RlbFZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc3RsTW9kZWxzOiBzdHJpbmdbXSA9IFtdXG4gIEBJbnB1dCgpIGhhc0NvbnRyb2xzID0gdHJ1ZVxuICBASW5wdXQoKSBjYW1lcmE6IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDM1LCB3aW5kb3cuaW5uZXJXaWR0aCAvIHdpbmRvdy5pbm5lckhlaWdodCwgMSwgMTUpXG4gIEBJbnB1dCgpIGNhbWVyYVRhcmdldDogVEhSRUUuVmVjdG9yMyA9IG5ldyBUSFJFRS5WZWN0b3IzKCAwLCAwLCAwIClcbiAgQElucHV0KCkgbGlnaHQ6IFRIUkVFLkxpZ2h0ID0gbmV3IFRIUkVFLlBvaW50TGlnaHQoIDB4ZmZmZmZmIClcbiAgQElucHV0KCkgbWF0ZXJpYWw6IFRIUkVFLk1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsKHsgY29sb3I6IDB4YzRjNGM0LCBzaGluaW5lc3M6IDEwMCwgc3BlY3VsYXI6IDB4MTExMTExIH0pXG4gIEBJbnB1dCgpIHNjZW5lOiBUSFJFRS5TY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpXG4gIEBJbnB1dCgpIHJlbmRlcmVyOiBUSFJFRS5XZWJHTFJlbmRlcmVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoeyBhbnRpYWxpYXM6IHRydWUgfSlcbiAgQElucHV0KCkgY29udHJvbHM6IGFueSB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIG1lc2hPcHRpb25zOiBNZXNoT3B0aW9uc1tdID0gW11cblxuICBAT3V0cHV0KCkgcmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICBoYXNXZWJHTCA9IGlzV2ViR0xBdmFpbGFibGUoKVxuICBtZXNoR3JvdXAgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKVxuICBpc1JlbmRlcmVkID0gZmFsc2VcbiAgc2hvd1N0bE1vZGVsID0gdHJ1ZVxuICBzdGxMb2FkZXIgPSBuZXcgU1RMTG9hZGVyKClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLmNkci5kZXRhY2goKVxuICAgIC8vIGRlZmF1bHQgbGlnaHQgcG9zaXRpb25cbiAgICB0aGlzLmxpZ2h0LnBvc2l0aW9uLnNldCgxLCAxLCAyKVxuXG4gICAgLy8gZGVmYXVsdCBjYW1lcmEgcG9zaXRpb25cbiAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQoMywgMywgMylcblxuICAgIC8vIGRlZmF1bHQgc2NlbmUgYmFja2dyb3VuZFxuICAgIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBUSFJFRS5Db2xvcigweGZmZmZmZilcblxuICAgIC8vIGRlZmF1bHQgcmVuZGVyZXIgb3B0aW9uc1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbylcbiAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd01hcC5lbmFibGVkID0gdHJ1ZVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmhhc1dlYkdMKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdzdGwtbW9kZWwtdmlld2VyOiBTZWVtcyBsaWtlIHlvdXIgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgd2ViZ2wuJylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdCgpXG4gICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uV2luZG93UmVzaXplLCBmYWxzZSlcblxuICAgIHRoaXMubWVzaEdyb3VwLnJlbW92ZSgpXG5cbiAgICBpZiAodGhpcy5yZW5kZXJlcikge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW5kZXJMaXN0cy5kaXNwb3NlKClcbiAgICAgIHRoaXMucmVuZGVyZXIuZGlzcG9zZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FtZXJhKSB7XG4gICAgICB0aGlzLmNhbWVyYS5yZW1vdmUoKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmxpZ2h0KSB7XG4gICAgICB0aGlzLmxpZ2h0LnJlbW92ZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWF0ZXJpYWwpIHtcbiAgICAgIHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbHMpIHtcbiAgICAgIHRoaXMuY29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5yZW5kZXIpXG4gICAgICB0aGlzLmNvbnRyb2xzLmRpc3Bvc2UoKVxuICAgIH1cblxuICAgIGlmICh0aGlzLnNjZW5lKSB7XG4gICAgICB0aGlzLnNjZW5lLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgIHRoaXMuc2NlbmUucmVtb3ZlKGNoaWxkKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVNZXNoKHBhdGg6IHN0cmluZywgbWVzaE9wdGlvbnM6IE1lc2hPcHRpb25zID0ge30pOiBQcm9taXNlPFRIUkVFLk1lc2g+IHtcbiAgICBjb25zdCBnZW9tZXRyeTogVEhSRUUuQnVmZmVyR2VvbWV0cnkgPSBhd2FpdCB0aGlzLnN0bExvYWRlci5sb2FkQXN5bmMocGF0aClcbiAgICBjb25zdCBtZXNoID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIHRoaXMubWF0ZXJpYWwpXG5cbiAgICBjb25zdCB2ZWN0b3JPcHRpb25zID0gWydwb3NpdGlvbicsICdzY2FsZScsICd1cCddXG4gICAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRNZXNoT3B0aW9ucywgbWVzaE9wdGlvbnMpXG5cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvcHRpb25zKS5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGlmICh2ZWN0b3JPcHRpb25zLmluZGV4T2Yob3B0aW9uKSA+IC0xKSB7XG4gICAgICAgIGNvbnN0IHZlY3RvciA9IG9wdGlvbnNbb3B0aW9uXSBhcyBWZWN0b3IzXG4gICAgICAgIGNvbnN0IG1lc2hWZWN0b3JPcHRpb24gPSBtZXNoW29wdGlvbl0gYXMgVmVjdG9yM1xuICAgICAgICBtZXNoVmVjdG9yT3B0aW9uLnNldCh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci56KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzaFtvcHRpb25dID0gb3B0aW9uc1tvcHRpb25dXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBtZXNoXG4gIH1cblxuICByZW5kZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5jYW1lcmEpXG4gIH1cblxuICBzZXRTaXplcygpIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuXG4gICAgdGhpcy5jYW1lcmEuYXNwZWN0ID0gd2lkdGggLyBoZWlnaHRcbiAgICB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KClcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KVxuICB9XG5cbiAgb25XaW5kb3dSZXNpemUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTaXplcygpXG4gICAgdGhpcy5yZW5kZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgIHRoaXMuY2FtZXJhLmFkZCh0aGlzLmxpZ2h0KVxuICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuY2FtZXJhKVxuXG4gICAgLy8gdXNlIGRlZmF1bHQgY29udHJvbHNcbiAgICBpZiAodGhpcy5oYXNDb250cm9scyAmJiAhdGhpcy5jb250cm9scykge1xuICAgICAgdGhpcy5jb250cm9scyA9IG5ldyBPcmJpdENvbnRyb2xzKHRoaXMuY2FtZXJhLCB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpXG4gICAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZVpvb20gPSB0cnVlXG4gICAgICB0aGlzLmNvbnRyb2xzLm1pbkRpc3RhbmNlID0gMVxuICAgICAgdGhpcy5jb250cm9scy5tYXhEaXN0YW5jZSA9IDdcblxuICAgICAgdGhpcy5jb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLnJlbmRlcilcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZSwgZmFsc2UpXG5cbiAgICBjb25zdCBtZXNoQ3JlYXRpb25zID0gdGhpcy5zdGxNb2RlbHMubWFwKChtb2RlbFBhdGgsIGluZGV4KSA9PiB0aGlzLmNyZWF0ZU1lc2gobW9kZWxQYXRoLCB0aGlzLm1lc2hPcHRpb25zW2luZGV4XSkpXG4gICAgY29uc3QgbWVzaGVzOiBUSFJFRS5PYmplY3QzRFtdID0gYXdhaXQgUHJvbWlzZS5hbGwobWVzaENyZWF0aW9ucylcblxuICAgIG1lc2hlcy5tYXAoKG1lc2gpID0+IHRoaXMubWVzaEdyb3VwLmFkZChtZXNoKSlcbiAgICB0aGlzLnNjZW5lLmFkZCh0aGlzLm1lc2hHcm91cClcbiAgICB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudClcbiAgICB0aGlzLnNldFNpemVzKClcbiAgICB0aGlzLnJlbmRlcigpXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuaXNSZW5kZXJlZCA9IHRydWVcbiAgICAgIHRoaXMucmVuZGVyZWQuZW1pdCgpXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICB9KVxuICB9XG59XG4iXX0= |
@@ -12,2 +12,2 @@ import { NgModule } from '@angular/core'; | ||
]; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci9zcmMvbGliL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQVE5RSxNQUFNLE9BQU8sb0JBQW9COzs7WUFOaEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN2QyxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLEVBQ1I7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFN0bE1vZGVsVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTdGxNb2RlbFZpZXdlckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtTdGxNb2RlbFZpZXdlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdGxNb2RlbFZpZXdlck1vZHVsZSB7IH1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQVE5RSxNQUFNLE9BQU8sb0JBQW9COzs7WUFOaEMsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN2QyxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLEVBQ1I7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFN0bE1vZGVsVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTdGxNb2RlbFZpZXdlckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtTdGxNb2RlbFZpZXdlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdGxNb2RlbFZpZXdlck1vZHVsZSB7IH1cbiJdfQ== |
@@ -6,2 +6,2 @@ /* | ||
export * from './lib/angular-stl-model-viewer.module'; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci5tb2R1bGUnXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXN0bC1tb2RlbC12aWV3ZXIvc3JjLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyx1Q0FBdUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5ndWxhci1zdGwtbW9kZWwtdmlld2VyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItc3RsLW1vZGVsLXZpZXdlci5tb2R1bGUnXG4iXX0= |
@@ -13,3 +13,3 @@ import { __awaiter } from 'tslib'; | ||
}; | ||
function isWebGLAvailable() { | ||
const isWebGLAvailable = () => { | ||
try { | ||
@@ -22,3 +22,4 @@ const canvas = document.createElement('canvas'); | ||
} | ||
} | ||
}; | ||
const ɵ0 = isWebGLAvailable; | ||
class StlModelViewerComponent { | ||
@@ -96,5 +97,30 @@ constructor(cdr, eleRef, ngZone) { | ||
}); | ||
this.scene.dispose(); | ||
} | ||
} | ||
createMesh(path, meshOptions = {}) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const geometry = yield this.stlLoader.loadAsync(path); | ||
const mesh = new Mesh(geometry, this.material); | ||
const vectorOptions = ['position', 'scale', 'up']; | ||
const options = Object.assign({}, defaultMeshOptions, meshOptions); | ||
Object.getOwnPropertyNames(options).forEach((option) => { | ||
if (vectorOptions.indexOf(option) > -1) { | ||
const vector = options[option]; | ||
const meshVectorOption = mesh[option]; | ||
meshVectorOption.set(vector.x, vector.y, vector.z); | ||
} | ||
else { | ||
mesh[option] = options[option]; | ||
} | ||
}); | ||
return mesh; | ||
}); | ||
} | ||
setSizes() { | ||
const width = this.eleRef.nativeElement.offsetWidth; | ||
const height = this.eleRef.nativeElement.offsetHeight; | ||
this.camera.aspect = width / height; | ||
this.camera.updateProjectionMatrix(); | ||
this.renderer.setSize(width, height); | ||
} | ||
init() { | ||
@@ -127,28 +153,2 @@ return __awaiter(this, void 0, void 0, function* () { | ||
} | ||
createMesh(path, meshOptions = {}) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const geometry = yield this.stlLoader.loadAsync(path); | ||
const mesh = new Mesh(geometry, this.material); | ||
const vectorOptions = ['position', 'scale', 'up']; | ||
const options = Object.assign({}, defaultMeshOptions, meshOptions); | ||
Object.getOwnPropertyNames(options).forEach((option) => { | ||
if (vectorOptions.indexOf(option) > -1) { | ||
const vector = options[option]; | ||
const meshVectorOption = mesh[option]; | ||
meshVectorOption.set(vector.x, vector.y, vector.z); | ||
} | ||
else { | ||
mesh[option] = options[option]; | ||
} | ||
}); | ||
return mesh; | ||
}); | ||
} | ||
setSizes() { | ||
const width = this.eleRef.nativeElement.offsetWidth; | ||
const height = this.eleRef.nativeElement.offsetHeight; | ||
this.camera.aspect = width / height; | ||
this.camera.updateProjectionMatrix(); | ||
this.renderer.setSize(width, height); | ||
} | ||
} | ||
@@ -162,5 +162,5 @@ StlModelViewerComponent.decorators = [ | ||
:host { | ||
width: 100%; | ||
height: 100%; | ||
display: block; | ||
width: 100% | ||
height: 100% | ||
display: block | ||
} | ||
@@ -207,3 +207,3 @@ `] | ||
export { StlModelViewerComponent, StlModelViewerModule }; | ||
export { StlModelViewerComponent, StlModelViewerModule, ɵ0 }; | ||
//# sourceMappingURL=angular-stl-model-viewer.js.map |
@@ -38,3 +38,2 @@ import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core'; | ||
ngOnDestroy(): void; | ||
private init; | ||
createMesh(path: string, meshOptions?: MeshOptions): Promise<THREE.Mesh>; | ||
@@ -44,2 +43,3 @@ render: () => void; | ||
onWindowResize: () => void; | ||
private init; | ||
} |
{ | ||
"name": "angular-stl-model-viewer", | ||
"license": "MIT", | ||
"version": "2.0.0", | ||
"version": "3.0.0", | ||
"author": "Marcus Kirsch & Bengt Weiße", | ||
@@ -6,0 +6,0 @@ "description": "Angular component for rendering a STL model", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1007
147779