UNPKG

awv3

Version:
1 lines 14.1 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 e(){var r,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(e){for(;;)switch(e.prev=e.next){case 0:return r=new _promise2.default(function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(r){var n,s,i,u,l,c,d,f,p,m,b,y,h,_;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.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)){e.next=8;break}return e.next=6,_promise2.default.all(o.map(function(e){return handleResult(a,e)}));case 6:e.next=65;break;case 8:if("Endpoint"!==o.command){e.next=12;break}a.results.push({command:"Result",from:"ip",result:o}),e.next=65;break;case 12:if("Assembly"!==o.command){e.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){e.next=24;break}if(!(l>=i.length)){e.next=21;break}return e.abrupt("break",33);case 21:c=i[l++],e.next=28;break;case 24:if(l=i.next(),!l.done){e.next=27;break}return e.abrupt("break",33);case 27:c=l.value;case 28:return d=c,e.next=31,handleResult(a,d);case 31:e.next=18;break;case 33:e.next=65;break;case 35:if("Link"!==o.command){e.next=46;break}if(!o.url&&!o.key){e.next=43;break}return f=o.url||a.hub.baseUrl+"/link/"+o.key,e.next=40,fetch(f).then(function(e){return e.json()});case 40:return p=e.sent,e.next=43,handleResult(a,p);case 43:a.options.callback({context:a,type:Parser.Factory.Link,model:a.options.groupInto,data:o}),e.next=65;break;case 46:if("Blob"!==o.command&&("Geometry"!==o.command||o.attributes.optimized)){e.next=55;break}return m=_factory2.default.getFreeCore(),e.next=50,m.post(o,function(e){return parseGeometry(e,a)});case 50:b=e.sent,a.bytesUncompressed+=b.size,a.time+=b.time,e.next=65;break;case 55:if(!a.resolve||"Result"!==o.command||"EndFrame"!==o.from||o.transactionID!==a.id){e.next=64;break}return y=a.resolve,e.next=59,_promise2.default.all(a.promises);case 59:h=e.sent,a=mergeContext(a),y(a),e.next=65;break;case 64:if("Result"===o.command&&"BeginFrame"!==o.from&&"EndFrame"!==o.from){try{_=JSON.parse(o.result),o.result=_}catch(e){}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:r(a);case 66:case"end":return e.stop()}},e,t)}));return function(r){return e.apply(this,arguments)}}()),a.promises.push(r),e.next=4,r;case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e,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 r(){var t,a,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(r){for(;;)switch(r.prev=r.next){case 0:return t=Array.isArray(s)?s:[s],r.next=3,_promise2.default.all(t.map(function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(r){var t,a;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=createContext(i),e.next=3,fetch(r).then(function(e){return e.json()});case 3:return a=e.sent,e.next=6,handleResult(t,a);case 6:return e.next=8,_promise2.default.all(t.promises);case 8:return t.mapitem=r,e.abrupt("return",t);case 10:case"end":return e.stop()}},e,n)}));return function(r){return e.apply(this,arguments)}}()));case 3:if(a=r.sent,o=mergeContext(a),!o.options.groupInto){r.next=8;break}return r.next=8,o.options.groupInto.emit(_object2.default.Lifecycle.Loaded);case 8:return o.options.callback({type:e.Factory.Finished,context:o}),r.abrupt("return",o);case 10:case"end":return r.stop()}},r,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 r(){var t,a,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(r){for(;;)switch(r.prev=r.next){case 0:return t=Array.isArray(s)?s:[s],r.next=3,_promise2.default.all(t.map(function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(r){var t;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=createContext(i),e.next=3,handleResult(t,r);case 3:return e.next=5,_promise2.default.all(t.promises);case 5:return e.abrupt("return",t);case 6:case"end":return e.stop()}},e,n)}));return function(r){return e.apply(this,arguments)}}()));case 3:if(a=r.sent,o=mergeContext(a),!o.options.groupInto){r.next=8;break}return r.next=8,o.options.groupInto.emit(_object2.default.Lifecycle.Loaded);case 8:return o.options.callback({type:e.Factory.Finished,context:o}),r.abrupt("return",o);case 10:case"end":return r.stop()}},r,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"};