UNPKG

awv3

Version:
1 lines 12.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 e=(0,_extends3.default)({lean:!0,callback:function(e){return null},groupInto:void 0,compressMaterials:!1,lazy:!1,colorMap:{}},e),{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),n=0,t=a?t:(0,_getIterator3.default)(t);;){var o;if(a){if(n>=t.length)break;o=t[n++]}else{if(n=t.next(),n.done)break;o=n.value}var s=o;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,n=e.attributes,o=new _object2.default;if(o.name=n.name,o.visible=1===n.visible,o.userData={id:n.id,meta:n.meta},n.color=new _three2.default.Color(n.color[0]/255,n.color[1]/255,n.color[2]/255),n.min&&n.max&&(n.box=new _three2.default.Box3(new(Function.prototype.bind.apply(_three2.default.Vector3,[null].concat((0,_toConsumableArray3.default)(n.min)))),new(Function.prototype.bind.apply(_three2.default.Vector3,[null].concat((0,_toConsumableArray3.default)(n.max))))),n.sphere=n.box.getBoundingSphere(),a.groupInto||(o.bounds=o.bounds||{box:new _three2.default.Box3,sphere:new _three2.default.Sphere},o.bounds.box=n.box,o.bounds.sphere=n.sphere)),void 0!==n.mesh){var s=(0,_geometry.parseMesh)(n,r);s&&(o.add(s),a.callback({type:Parser.Factory.Mesh,model:o,data:s,meta:s.meta}))}if(void 0!==n.line){var u=(0,_geometry.parseLine)(n,r);u&&(o.add(u),a.callback({type:Parser.Factory.Line,model:o,data:u,meta:u.meta}))}if(n.cones)for(var l=n.cones,i=Array.isArray(l),c=0,l=i?l:(0,_getIterator3.default)(l);;){var d;if(i){if(c>=l.length)break;d=l[c++]}else{if(c=l.next(),c.done)break;d=c.value}var f=d;a.callback({type:Parser.Factory.Cone,model:o,data:f,meta:f.meta})}if(n.vertices)for(var p=n.vertices,m=Array.isArray(p),b=0,p=m?p:(0,_getIterator3.default)(p);;){var y;if(m){if(b>=p.length)break;y=p[b++]}else{if(b=p.next(),b.done)break;y=b.value}var _=y;a.callback({type:Parser.Factory.Vertex,model:o,data:_,meta:_.meta})}if(n.coordinateSystems)for(var h=n.coordinateSystems,x=Array.isArray(h),g=0,h=x?h:(0,_getIterator3.default)(h);;){var v;if(x){if(g>=h.length)break;v=h[g++]}else{if(g=h.next(),g.done)break;v=g.value}var k=v;a.callback({type:Parser.Factory.Csys,model:o,data:k,meta:k.meta})}if(n.text)for(var C=n.text,A=Array.isArray(C),q=0,C=A?C:(0,_getIterator3.default)(C);;){var R;if(A){if(q>=C.length)break;R=C[q++]}else{if(q=C.next(),q.done)break;R=q.value}var w=R;a.callback({type:Parser.Factory.Text,model:o,data:w,meta:w.meta})}a.groupInto&&a.groupInto.add(o),t.push(o),a.callback({type:Parser.Factory.Model,model:o,data:n,meta:n.meta})}function parseGeometry(e,r){var t=r.models,a=r.options,n=e.attributes;switch(n.action){case"Add":var o=n.type;if("Part"==o){if(n.removes)for(var s=n.removes,u=Array.isArray(s),l=0,s=u?s:(0,_getIterator3.default)(s);;){var i;if(u){if(l>=s.length)break;i=s[l++]}else{if(l=s.next(),l.done)break;i=l.value}var c=i;a.callback({type:Parser.Factory.Remove,data:c})}if(n.transforms)for(var d=n.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})}n.min&&n.max&&(n.box=new _three2.default.Box3(new(Function.prototype.bind.apply(_three2.default.Vector3,[null].concat((0,_toConsumableArray3.default)(n.min)))),new(Function.prototype.bind.apply(_three2.default.Vector3,[null].concat((0,_toConsumableArray3.default)(n.max))))),n.sphere=n.box.getBoundingSphere(),a.groupInto&&a.groupInto.updateBounds(n.box)),a.callback({type:Parser.Factory.Part,data:n,meta:n.meta});break}"Model"==o&&(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),_extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_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],n=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 o,s,u,l,i,c,d,f,p,m,b,y,_,h;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("Buffer"===n.type&&n.data&&(n=Uint8Array.from(n.data)),n instanceof Uint8Array&&(n={command:"Blob",type:"Binary",data:n}),("string"==typeof n||n instanceof String)&&(o=n.length,n=JSON.parse(n),a.bytes+=o,"Blob"!==n.command&&(a.bytesUncompressed+=o)),!Array.isArray(n)){e.next=8;break}return e.next=6,_promise2.default.all(n.map(function(e){return handleResult(a,e)}));case 6:e.next=66;break;case 8:if("Endpoint"!==n.command){e.next=12;break}a.results.push({command:"Result",from:"ip",result:n}),e.next=66;break;case 12:if("Assembly"!==n.command){e.next=35;break}s=new _object2.default,s.userData.id=n.id,a.options.groupInto.add(s),a.options.groupInto=s,u=n.parts,l=Array.isArray(u),i=0,u=l?u:(0,_getIterator3.default)(u);case 18:if(!l){e.next=24;break}if(!(i>=u.length)){e.next=21;break}return e.abrupt("break",33);case 21:c=u[i++],e.next=28;break;case 24:if(i=u.next(),!i.done){e.next=27;break}return e.abrupt("break",33);case 27:c=i.value;case 28:return d=c,e.next=31,handleResult(a,d);case 31:e.next=18;break;case 33:e.next=66;break;case 35:if("Link"!==n.command){e.next=46;break}if(!n.url&&!n.key){e.next=43;break}return f=n.url||a.hub.baseUrl+"/link/"+n.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:n}),e.next=66;break;case 46:if("Blob"!==n.command&&("Geometry"!==n.command||n.attributes.optimized)){e.next=56;break}return n.options=(0,_extends3.default)({},a.options,{callback:void 0}),m=_factory2.default.getFreeCore(),e.next=51,m.post(n,function(e){return parseGeometry(e,a)});case 51:b=e.sent,a.bytesUncompressed+=b.size,a.time+=b.time,e.next=66;break;case 56:if(!a.resolve||"Result"!==n.command||"EndFrame"!==n.from||n.transactionID!==a.id){e.next=65;break}return y=a.resolve,e.next=60,_promise2.default.all(a.promises);case 60:_=e.sent,a=mergeContext(a),y(a),e.next=66;break;case 65:if("Result"===n.command&&"BeginFrame"!==n.from&&"EndFrame"!==n.from){try{h=JSON.parse(n.result),n.result=h}catch(e){}a.results.push(n)}else"ErrorMessage"===n.command&&(a.errors.push(n.attributes),console.warn("ClassCAD > State: "+n.attributes.errorState+", Code: "+n.attributes.errorCode+", Message: "+n.attributes.errorMessage));case 66:r(a);case 67: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),_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),_defaults=require("../core/defaults"),_defaults2=_interopRequireDefault(_defaults),_geometry=require("../core/geometry"),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,n,o=this,s=arguments.length<=0||void 0===arguments[0]?Error.log("Url undefined"):arguments[0],u=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(u),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,o)}));return function(r){return e.apply(this,arguments)}}()));case 3:if(a=r.sent,n=mergeContext(a),!n.options.groupInto){r.next=8;break}return r.next=8,n.options.groupInto.emit(_object2.default.Lifecycle.Loaded);case 8:return n.options.callback({type:e.Factory.Finished,context:n}),r.abrupt("return",n);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,n,o=this,s=arguments.length<=0||void 0===arguments[0]?Error.log("Blob undefined"):arguments[0],u=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(u),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,o)}));return function(r){return e.apply(this,arguments)}}()));case 3:if(a=r.sent,n=mergeContext(a),!n.options.groupInto){r.next=8;break}return r.next=8,n.options.groupInto.emit(_object2.default.Lifecycle.Loaded);case 8:return n.options.callback({type:e.Factory.Finished,context:n}),r.abrupt("return",n);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"};