UNPKG

awv3

Version:
1 lines 12.6 kB
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}exports.__esModule=!0;var _toConsumableArray2=require("babel-runtime/helpers/toConsumableArray"),_toConsumableArray3=_interopRequireDefault(_toConsumableArray2),_getIterator2=require("babel-runtime/core-js/get-iterator"),_getIterator3=_interopRequireDefault(_getIterator2),_regenerator=require("babel-runtime/regenerator"),_regenerator2=_interopRequireDefault(_regenerator),_asyncToGenerator2=require("babel-runtime/helpers/asyncToGenerator"),_asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2),_typeof2=require("babel-runtime/helpers/typeof"),_typeof3=_interopRequireDefault(_typeof2),_keys=require("babel-runtime/core-js/object/keys"),_keys2=_interopRequireDefault(_keys),_extends3=require("babel-runtime/helpers/extends"),_extends4=_interopRequireDefault(_extends3),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_three=require("three"),_three2=_interopRequireDefault(_three),_object=require("../three/object3"),_object2=_interopRequireDefault(_object),_plugin=require("../plugin"),Integration=function(){function e(t){var n=this;if((0,_classCallCheck3.default)(this,e),this.options=(0,_extends4.default)({hover:function(e,t){e.__originalColor||(e.__originalColor=e.material.color.clone()),!t&&e.animate({material:{color:new _three2.default.Color(2676639)}}).start(0),e.__marker&&e.__marker.animate({scale:new _three2.default.Euler(1.25,1.25,1.25)}).start(250)},unhover:function(e,t){!t&&e.animate({material:{color:e.__originalColor}}).start(1e3),e.__marker&&e.__marker.animate({scale:new _three2.default.Euler(1.2,1.2,1.2)}).start(250)},select:function(e){var t=new _three2.default.Color(12727145);e.animate({material:{color:t}}).start(1e3);var r=(new _three2.default.Box3).setFromObject(e),a=new _three2.default.LineBasicMaterial({color:t});e.__marker&&e.__marker.destroy(),e.__marker=new _three2.default.BoxHelper(e),e.__marker.material=new _three2.default.LineBasicMaterial({color:0,transparent:!0,opacity:.1}),e.__marker.interactive=!1;var o=function(t,n){var r=arguments.length<=2||void 0===arguments[2]?2:arguments[2],o=new Float32Array([t.x,t.y,t.z,t.x+r,t.y,t.z,t.x,t.y,t.z,t.x,t.y+r,t.z,t.x,t.y,t.z,t.x,t.y,t.z+r]),i=new _three2.default.BufferGeometry;i.addAttribute("position",new _three2.default.BufferAttribute(o,3));var s=new _three2.default.LineSegments(i,a).centerGeometry(t);s.geometry.applyMatrix((new _three2.default.Matrix4).makeRotationFromEuler(n)),e.__marker.add(s)};o(r.min,new _three2.default.Euler(0,0,0)),o(r.max,new _three2.default.Euler(-Math.PI/2,-Math.PI/2,Math.PI/2)),o(new _three2.default.Vector3(r.min.x,r.min.y,r.max.z),new _three2.default.Euler(0,Math.PI/2,0)),o(new _three2.default.Vector3(r.max.x,r.min.y,r.min.z),new _three2.default.Euler(0,-Math.PI/2,0)),o(new _three2.default.Vector3(r.min.x,r.max.y,r.min.z),new _three2.default.Euler(Math.PI/2,0,0)),o(new _three2.default.Vector3(r.max.x,r.min.y,r.max.z),new _three2.default.Euler((-Math.PI),0,Math.PI)),o(new _three2.default.Vector3(r.min.x,r.max.y,r.max.z),new _three2.default.Euler((-Math.PI),0,0)),o(new _three2.default.Vector3(r.max.x,r.max.y,r.min.z),new _three2.default.Euler(0,0,Math.PI)),e.__marker.centerGeometry(),e.__marker.position.copy(e.worldToLocal(e.getCenter())),e.add(e.__marker);var i=n.view.interaction.isHit(e)?1.25:1.2;e.__marker.animate({scale:new _three2.default.Euler(i,i,i)}).from({scale:new _three2.default.Euler(.1,.1,.1)}).start(250)},deselect:function(e){e.__marker&&e.__marker.destroy(),e.__marker=void 0}},t),this.data={plugins:{},active:void 0,enable:function(e){return n.enable(e)},disable:function(e){return n.disable(e)},toggle:function(e){return n.toggle(e)},toggleSelection:function(e,t){return n.toggleSelection(e,t)}},this.plugins={},this.selection=[],this.selectedElement=void 0,!t.view)throw"Integration needs a view passed in: new Integration({ view: ... })!";this.view=t.view,this.canvas=this.view.canvas,t.socket&&(this.socket=t.socket,this.socket.on("connected",function(e){return(0,_keys2.default)(n.plugins).forEach(function(t){return n.plugins[t].emit(_plugin.Plugin.Events.Online,e)})}),this.socket.on("disconnected",function(e){return(0,_keys2.default)(n.plugins).forEach(function(t){return n.plugins[t].emit(_plugin.Plugin.Events.Offline,e)})}))}return e.prototype.resolve=function(e){return e instanceof _plugin.Plugin?e:"string"==typeof e?this.plugins[e]:"object"===("undefined"==typeof e?"undefined":(0,_typeof3.default)(e))?this.plugins[e.name]:void 0},e.prototype.clear=function(){function e(){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){var t;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=_regenerator2.default.keys(this.plugins);case 1:if((e.t1=e.t0()).done){e.next=7;break}return t=e.t1.value,e.next=5,this.destroy(t);case 5:e.next=1;break;case 7:this.plugins={},this.data.plugins={};case 9:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.use=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];var a,o,i,s,l,c;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=n,o=Array.isArray(a),i=0,a=o?a:(0,_getIterator3.default)(a);case 1:if(!o){e.next=7;break}if(!(i>=a.length)){e.next=4;break}return e.abrupt("break",21);case 4:l=a[i++],e.next=11;break;case 7:if(i=a.next(),!i.done){e.next=10;break}return e.abrupt("break",21);case 10:l=i.value;case 11:return c=l,c.integration=this,this.plugins[c.name]=c,this.data.plugins=(0,_extends4.default)({},this.data.plugins,(s={},s[c.name]=c.data,s)),e.next=17,c.emit(_plugin.Plugin.Events.Integrated,this);case 17:return e.next=19,c.onIntegrated(this);case 19:e.next=1;break;case 21:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.enable=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.resolve(t),!t){e.next=12;break}if(!this.data.active||this.data.active===t){e.next=5;break}return e.next=5,this.disable(this.data.active);case 5:return e.next=7,t.emit(_plugin.Plugin.Events.Enabled,this);case 7:return e.next=9,t.onEnabled(this);case 9:this.data.active=t.data,this.show(t),t.data.enabled=!0;case 12:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.disable=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.resolve(t),!t){e.next=8;break}return this.data.active&&this.data.active===t.data&&(this.removeSelection(t),this.handler&&document.removeEventListener("keyup",this.handler),this.handler=void 0,this.data.active=void 0),e.next=5,t.emit(_plugin.Plugin.Events.Disabled,this);case 5:return e.next=7,t.onDisabled(this);case 7:t.data.enabled=!1;case 8:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.toggle=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.resolve(t),!t){e.next=9;break}if(!t.data.enabled){e.next=7;break}return e.next=5,this.disable(t);case 5:e.next=9;break;case 7:return e.next=9,this.enable(t);case 9:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.destroy=function(){function e(e){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.resolve(t),!t){e.next=11;break}return t.removeListeners(),e.next=5,this.disable(t);case 5:return delete this.plugins[t.name],this.data.plugins=this.data.plugins.filter(function(e){return e.name!==t.name}),e.next=9,t.emit(_plugin.Plugin.Events.Destroyed,this);case 9:return e.next=11,t.onDestroyed(this);case 11:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.show=function(e){if(e=this.resolve(e)){for(var t=e.data.elements,n=Array.isArray(t),r=0,t=n?t:(0,_getIterator3.default)(t);;){var a;if(n){if(r>=t.length)break;a=t[r++]}else{if(r=t.next(),r.done)break;a=r.value}var o=a;o.type===_plugin.Element.Type.Selection&&o.active&&this.toggleSelection(o)}e.data.console&&(this.handler&&document.removeEventListener("keyup",this.handler),this.handler=function(t){if(!document.activeElement||!document.activeElement.classList.contains("value"))if(document.activeElement.blur(),1===t.key.length)e.data.console.index=0,e.data.console.value+=t.key,e.data.console.onChange({element:e.data.console,value:e.data.console.value}),document.querySelector("input.console.value").focus();else switch(t.key){case"ArrowDown":e.data.console.index++,e.data.console.index>e.data.console.labels.length-1&&(e.data.console.index=e.data.console.labels.length-1);break;case"ArrowUp":e.data.console.index--,e.data.console.index<0&&(e.data.console.index=0);break;case"Backspace":e.data.console.value=e.data.console.value.slice(0,-1),e.data.console.onChange({element:e.data.console,value:e.data.console.value});break;case"Escape":e.data.console.value="",e.data.console.onChange({element:e.data.console,value:e.data.console.value});break;case"Enter":e.data.console.onExecute({element:e.data.console,value:e.data.console.value,index:e.data.console.index}),e.data.console.index=0,e.data.console.value="",e.data.console.labels=[]}},document.addEventListener("keyup",this.handler))}},e.prototype.removeSelection=function(e){var t=!(arguments.length<=1||void 0===arguments[1])&&arguments[1];if(e=this.resolve(e),this.selectedElement&&this.selectedElement.plugin===e.data){this.selectedElement.active=!1;for(var n=this.selection,r=Array.isArray(n),a=0,n=r?n:(0,_getIterator3.default)(n);;){var o;if(r){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var i=o;i.object.__selected=void 0,this.options.unhover(i.object),this.options.deselect(i.object)}this.selection=[],this.view.scene.removeInteraction(),this.view.interaction.filter=void 0,this.view.setCursor(),t||(this.selectedElement.items=[],this.selectedElement.onChange({element:this.selectedElement,objects:[]})),this.selectedElement=void 0}},e.prototype.toggleSelection=function(e,t){var n=this;if(e&&e===this.selectedElement)this.removeSelection(this.data.active,t);else{var r;this.selectedElement=e,this.selectedElement.plugin=this.data.active,this.selectedElement.active=!0,this.view.interaction.filter=[this.view.scene],this.selection=e.items.map(function(e){var t=n.view.scene.getObjectById(e);return t.__selected=!0,n.options.select(t),{receiver:n.view.scene,object:t}});var a=["Scene"];Array.isArray(e.types)?a=[].concat((0,_toConsumableArray3.default)(a),(0,_toConsumableArray3.default)(e.types)):"function"==typeof e.types&&(a=function(t){return"Scene"===t.type||e.types(t)}),this.view.scene.createInteraction({recursive:!0,first:!0,types:a}).on((r={},r[_object2.default.Events.Interaction.Hovered]=function(e){n.view.setCursor("pointer"),n.options.hover(e.object,e.object.__selected)},r[_object2.default.Events.Interaction.Unhovered]=function(e){n.options.unhover(e.object,e.object.__selected)},r[_object2.default.Events.Interaction.Clicked]=function(t){var r=n.selection.findIndex(function(e){return e.object.id===t.object.id});if(r==-1){if(1===e.limit&&n.selection.length>=1){var a=n.selection[0].object;a.__selected=void 0,n.options.unhover(a,!1),n.options.deselect(a),n.selection=[t],e.items=[t.object.id]}else n.selection.push(t),e.items.push(t.object.id);t.object.__selected=!0,n.options.select(t.object),e.onChange({element:e,objects:n.selection})}else t.object.__selected=void 0,n.options.hover(t.object,!1),n.options.deselect(t.object),n.selection.splice(r,1),e.items.splice(r,1),e.onChange({element:e,objects:n.selection})},r[_object2.default.Events.Interaction.Missed]=function(){for(var t=n.selection,r=Array.isArray(t),a=0,t=r?t:(0,_getIterator3.default)(t);;){var o;if(r){if(a>=t.length)break;o=t[a++]}else{if(a=t.next(),a.done)break;o=a.value}var i=o;i.object.__selected=void 0,n.options.unhover(i.object,!1),n.options.deselect(i.object)}n.selection=[],e.items=[],e.onChange({element:e,objects:n.selection})},r))}},e}();exports.default=Integration;