UNPKG

awv3

Version:
1 lines 14.4 kB
"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r["default"]=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function createContext(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=arguments.length<=1||void 0===arguments[1]?void 0:arguments[1],t=arguments.length<=2||void 0===arguments[2]?void 0:arguments[2],a=arguments.length<=3||void 0===arguments[3]?"":arguments[3];return"object"!==("undefined"==typeof e?"undefined":(0,_typeof3["default"])(e))&&(e={callback:e||function(e){return null}}),e.callback=e.callback||function(e){return null},e.groupInto=e.groupInto||void 0,e.compressMaterials=e.compressMaterials||!1,e.lazy=e.lazy||!1,e.colorMap={},{session:"",id:(0,_helpers.guid)(),resolve:r,reject:t,promises:[],command:a||"",options:e,array:[],map:{},models:[],results:[],errors:[],bytes:0,bytesUncompressed:0,socketTime:null,time:0}}function mergeContext(){var e=arguments.length<=0||void 0===arguments[0]?Error.log("Context undefined"):arguments[0];if(Array.isArray(e)){if(1===e.length)return mergeContext(e[0]);var r=createContext();return r.array=e,mergeContext(r)}if(delete e.resolve,delete e.reject,delete e.promises,delete e.mapitem,e.array.length>0&&0===e.models.length)for(var t=e.array,a=Array.isArray(t),o=0,t=a?t:(0,_getIterator3["default"])(t);;){var n;if(a){if(o>=t.length)break;n=t[o++]}else{if(o=t.next(),o.done)break;n=o.value}var s=n;s.mapitem&&(e.map[s.mapitem]=s),mergeContext(s).models.forEach(function(r){return e.models.push(r)})}return e.firstModel=void 0,e.models.length>0&&(e.firstModel=e.models[0]),e.firstResult=void 0,e.results.length>0&&(e.firstResult=e.results[0].result),e}function parseModel(e,r){var t=r.models,a=r.options,o=e.attributes,n=new _object2["default"];if(n.name=o.name,n.visible=1===o.visible,n.userData={id:o.id,meta:o.meta},o.color=new _three2["default"].Color(o.color[0]/255,o.color[1]/255,o.color[2]/255),o.min&&o.max&&(o.box=new _three2["default"].Box3(new(Function.prototype.bind.apply(_three2["default"].Vector3,[null].concat((0,_toConsumableArray3["default"])(o.min)))),new(Function.prototype.bind.apply(_three2["default"].Vector3,[null].concat((0,_toConsumableArray3["default"])(o.max))))),o.sphere=o.box.getBoundingSphere(),a.groupInto||(n.bounds=n.bounds||{box:new _three2["default"].Box3,sphere:new _three2["default"].Sphere},n.bounds.box=o.box,n.bounds.sphere=o.sphere)),void 0!==o.meshes&&o.meshes.length>0)for(var s=o.meshes,i=Array.isArray(s),u=0,s=i?s:(0,_getIterator3["default"])(s);;){var l;if(i){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l;c.color&&(c.color=new _three2["default"].Color(c.color[0]/255,c.color[1]/255,c.color[2]/255));var d=new _three2["default"].BufferGeometry;d.addAttribute("position",new _three2["default"].BufferAttribute(c.vertices,3)),d.setIndex(new _three2["default"].BufferAttribute(c.indices,1)),c.normals?d.addAttribute("normal",new _three2["default"].BufferAttribute(c.normals,3)):d.computeVertexNormals(),!!c.uvs&&d.addAttribute("uv",new _three2["default"].BufferAttribute(c.uvs,2)),o.box?(d.boundingBox=o.box,d.boundingSphere=o.sphere):(d.computeBoundingBox(),d.computeBoundingSphere());var f=c.color||o.color,p=c.opacity||o.opacity,m=void 0,b=void 0;a.groupInto&&a.compressMaterials&&(b="#"+f.getHexString()+"_"+p.toFixed(2),m=a.colorMap[b]),m||(m=new _phong2["default"]({color:f,opacity:p,specular:f,emissive:new _three2["default"].Color(0),shininess:100}),b&&(a.colorMap[b]=m));var y=new _three2["default"].Mesh(d,m);y.visible=n.visible,y.renderOrder=100,y.userData={id:0,parentId:o.id,meta:c.meta},n.add(y),a.callback({type:Parser.Factory.Mesh,model:n,data:y,meta:c.meta})}if(void 0!==o.lines&&o.lines.length>0){var h=new _three2["default"].BufferGeometry;h.addAttribute("position",new _three2["default"].BufferAttribute(o.lines,3)),o.box?(h.boundingBox=o.box,h.boundingSphere=o.sphere):(h.computeBoundingBox(),h.computeBoundingSphere());var _=new _three2["default"].Color(0),g=o.opacity,x=void 0,v=void 0;a.groupInto&&a.compressMaterials&&(v="#"+_.getHexString()+"_"+g.toFixed(2),x=a.colorMap[v]),x||(x=new _three2["default"].LineBasicMaterial({color:_,opacity:g,transparent:!0,fog:!1}),v&&(a.colorMap[v]=x));var k=new _three2["default"].LineSegments(h,x);k.visible=n.visible,k.renderOrder=0,k.userData={id:0,parentId:o.id,meta:o.meta},n.add(k),a.callback({type:Parser.Factory.Line,model:n,data:k,meta:o.meta})}if(o.cones)for(var C=o.cones,A=Array.isArray(C),w=0,C=A?C:(0,_getIterator3["default"])(C);;){var I;if(A){if(w>=C.length)break;I=C[w++]}else{if(w=C.next(),w.done)break;I=w.value}var q=I;a.callback({type:Parser.Factory.Cone,model:n,data:q,meta:q.meta})}if(o.vertices)for(var B=o.vertices,R=Array.isArray(B),M=0,B=R?B:(0,_getIterator3["default"])(B);;){var F;if(R){if(M>=B.length)break;F=B[M++]}else{if(M=B.next(),M.done)break;F=M.value}var P=F;a.callback({type:Parser.Factory.Vertex,model:n,data:P,meta:P.meta})}if(o.coordinateSystems)for(var S=o.coordinateSystems,D=Array.isArray(S),j=0,S=D?S:(0,_getIterator3["default"])(S);;){var G;if(D){if(j>=S.length)break;G=S[j++]}else{if(j=S.next(),j.done)break;G=j.value}var T=G;a.callback({type:Parser.Factory.Csys,model:n,data:T,meta:T.meta})}if(o.text)for(var L=o.text,E=Array.isArray(L),V=0,L=E?L:(0,_getIterator3["default"])(L);;){var O;if(E){if(V>=L.length)break;O=L[V++]}else{if(V=L.next(),V.done)break;O=V.value}var U=O;a.callback({type:Parser.Factory.Text,model:n,data:U,meta:U.meta})}a.groupInto&&a.groupInto.add(n),t.push(n),a.callback({type:Parser.Factory.Model,model:n,data:o,meta:o.meta})}function parseGeometry(e,r){var t=r.models,a=r.options,o=e.attributes;switch(o.action){case"Add":var n=o.type;if("Part"==n){if(o.removes)for(var s=o.removes,i=Array.isArray(s),u=0,s=i?s:(0,_getIterator3["default"])(s);;){var l;if(i){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l;a.callback({type:Parser.Factory.Remove,data:c})}if(o.transforms)for(var d=o.transforms,f=Array.isArray(d),p=0,d=f?d:(0,_getIterator3["default"])(d);;){var m;if(f){if(p>=d.length)break;m=d[p++]}else{if(p=d.next(),p.done)break;m=p.value}var b=m;a.callback({type:Parser.Factory.Transform,data:b})}o.min&&o.max&&(o.box=new _three2["default"].Box3(new(Function.prototype.bind.apply(_three2["default"].Vector3,[null].concat((0,_toConsumableArray3["default"])(o.min)))),new(Function.prototype.bind.apply(_three2["default"].Vector3,[null].concat((0,_toConsumableArray3["default"])(o.max))))),o.sphere=o.box.getBoundingSphere(),a.groupInto&&a.groupInto.updateBounds(o.box)),a.callback({type:Parser.Factory.Part,data:o,meta:o.meta});break}"Model"==n&&(a.groupInto&&a.lazy?r.promises.push(new _promise2["default"](function(t){return requestIdleCallback(function(a){return t(parseModel(e,r))})})):parseModel(e,r))}return t}exports.__esModule=!0,exports.handleResult=void 0;var _toConsumableArray2=require("babel-runtime/helpers/toConsumableArray"),_toConsumableArray3=_interopRequireDefault(_toConsumableArray2),_getIterator2=require("babel-runtime/core-js/get-iterator"),_getIterator3=_interopRequireDefault(_getIterator2),_typeof2=require("babel-runtime/helpers/typeof"),_typeof3=_interopRequireDefault(_typeof2),_regenerator=require("babel-runtime/regenerator"),_regenerator2=_interopRequireDefault(_regenerator),_promise=require("babel-runtime/core-js/promise"),_promise2=_interopRequireDefault(_promise),_asyncToGenerator2=require("babel-runtime/helpers/asyncToGenerator"),_asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),handleResult=exports.handleResult=function(){var e=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(){var e,t=this,a=arguments.length<=0||void 0===arguments[0]?Error.log("Context undefined"):arguments[0],o=arguments.length<=1||void 0===arguments[1]?Error.log("Object undefined"):arguments[1];return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return e=new _promise2["default"](function(){var e=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){var n,s,i,u,l,c,d,f,p,m,b,y,h,_;return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if("Buffer"===o.type&&o.data&&(o=Uint8Array.from(o.data)),o instanceof Uint8Array&&(o={command:"Blob",type:"Binary",data:o}),("string"==typeof o||o instanceof String)&&(n=o.length,o=JSON.parse(o),a.bytes+=n,"Blob"!==o.command&&(a.bytesUncompressed+=n)),!Array.isArray(o)){r.next=8;break}return r.next=6,_promise2["default"].all(o.map(function(e){return handleResult(a,e)}));case 6:r.next=65;break;case 8:if("Endpoint"!==o.command){r.next=12;break}a.results.push({command:"Result",from:"ip",result:o}),r.next=65;break;case 12:if("Assembly"!==o.command){r.next=35;break}s=new _object2["default"],s.userData.id=o.id,a.options.groupInto.add(s),a.options.groupInto=s,i=o.parts,u=Array.isArray(i),l=0,i=u?i:(0,_getIterator3["default"])(i);case 18:if(!u){r.next=24;break}if(!(l>=i.length)){r.next=21;break}return r.abrupt("break",33);case 21:c=i[l++],r.next=28;break;case 24:if(l=i.next(),!l.done){r.next=27;break}return r.abrupt("break",33);case 27:c=l.value;case 28:return d=c,r.next=31,handleResult(a,d);case 31:r.next=18;break;case 33:r.next=65;break;case 35:if("Link"!==o.command){r.next=46;break}if(!o.url&&!o.key){r.next=43;break}return f=o.url||a.hub.baseUrl+"/link/"+o.key,r.next=40,fetch(f).then(function(e){return e.json()});case 40:return p=r.sent,r.next=43,handleResult(a,p);case 43:a.options.callback({context:a,type:Parser.Factory.Link,model:a.options.groupInto,data:o}),r.next=65;break;case 46:if("Blob"!==o.command&&("Geometry"!==o.command||o.attributes.optimized)){r.next=55;break}return m=_factory2["default"].getFreeCore(),r.next=50,m.post(o,function(e){return parseGeometry(e,a)});case 50:b=r.sent,a.bytesUncompressed+=b.size,a.time+=b.time,r.next=65;break;case 55:if(!a.resolve||"Result"!==o.command||"EndFrame"!==o.from||o.transactionID!==a.id){r.next=64;break}return y=a.resolve,r.next=59,_promise2["default"].all(a.promises);case 59:h=r.sent,a=mergeContext(a),y(a),r.next=65;break;case 64:if("Result"===o.command&&"BeginFrame"!==o.from&&"EndFrame"!==o.from){try{_=JSON.parse(o.result),o.result=_}catch(t){}a.results.push(o)}else"ErrorMessage"===o.command&&(a.errors.push(o.attributes),console.warn("ClassCAD > State: "+o.attributes.errorState+", Code: "+o.attributes.errorCode+", Message: "+o.attributes.errorMessage));case 65:e(a);case 66:case"end":return r.stop()}},r,t)}));return function(r){return e.apply(this,arguments)}}()),a.promises.push(e),r.next=4,e;case 4:return r.abrupt("return",r.sent);case 5:case"end":return r.stop()}},r,this)}));return function(r,t){return e.apply(this,arguments)}}();exports.createContext=createContext,exports.mergeContext=mergeContext,exports.parseGeometry=parseGeometry;var _three=require("three"),_three2=_interopRequireDefault(_three);require("isomorphic-fetch"),require("requestidlecallback");var _error=require("../core/error"),Error=_interopRequireWildcard(_error),_helpers=require("../core/helpers"),_factory=require("../worker/factory"),_factory2=_interopRequireDefault(_factory),_object=require("../three/object3"),_object2=_interopRequireDefault(_object),_phong=require("../materials/phong"),_phong2=_interopRequireDefault(_phong),Parser=function(){function e(){(0,_classCallCheck3["default"])(this,e)}return e.prototype.stream=function(){function r(e,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function a(){var r,t,o,n=this,s=arguments.length<=0||void 0===arguments[0]?Error.log("Url undefined"):arguments[0],i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return _regenerator2["default"].wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return r=Array.isArray(s)?s:[s],a.next=3,_promise2["default"].all(r.map(function(){var e=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){var t,a;return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=createContext(i),r.next=3,fetch(e).then(function(e){return e.json()});case 3:return a=r.sent,r.next=6,handleResult(t,a);case 6:return r.next=8,_promise2["default"].all(t.promises);case 8:return t.mapitem=e,r.abrupt("return",t);case 10:case"end":return r.stop()}},r,n)}));return function(r){return e.apply(this,arguments)}}()));case 3:if(t=a.sent,o=mergeContext(t),!o.options.groupInto){a.next=8;break}return a.next=8,o.options.groupInto.emit(_object2["default"].Lifecycle.Loaded);case 8:return o.options.callback({type:e.Factory.Finished,context:o}),a.abrupt("return",o);case 10:case"end":return a.stop()}},a,this)}));return r}(),e.prototype.parse=function(){function r(e,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function a(){var r,t,o,n=this,s=arguments.length<=0||void 0===arguments[0]?Error.log("Blob undefined"):arguments[0],i=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return _regenerator2["default"].wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return r=Array.isArray(s)?s:[s],a.next=3,_promise2["default"].all(r.map(function(){var e=(0,_asyncToGenerator3["default"])(_regenerator2["default"].mark(function r(e){var t;return _regenerator2["default"].wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=createContext(i),r.next=3,handleResult(t,e);case 3:return r.next=5,_promise2["default"].all(t.promises);case 5:return r.abrupt("return",t);case 6:case"end":return r.stop()}},r,n)}));return function(r){return e.apply(this,arguments)}}()));case 3:if(t=a.sent,o=mergeContext(t),!o.options.groupInto){a.next=8;break}return a.next=8,o.options.groupInto.emit(_object2["default"].Lifecycle.Loaded);case 8:return o.options.callback({type:e.Factory.Finished,context:o}),a.abrupt("return",o);case 10:case"end":return a.stop()}},a,this)}));return r}(),e}();exports["default"]=Parser,Parser.Factory={Blob:"Blob",Link:"Link",Assembly:"Assembly",Part:"Part",Model:"Model",Mesh:"Mesh",Line:"Line",Cone:"Cone",Vertex:"Vertex",Csys:"Csys",Text:"Text",Transform:"Transform",Remove:"Remove",Started:"Started",Finished:"Finished"};