awv3
Version:
AWV client CAD framework
2 lines • 37.3 kB
JavaScript
"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function hoverFunction(e,t){if(e instanceof _constraint2.default||e.interact.hover){if(clearTimeout(t.__sketchControlsHandler.timeoutID),e instanceof _constraint2.default)return e.hover(),void t.refresh();t.currentSketch.hideConstraints(),t.currentSketch.getObjectsOnSketch().forEach(function(e){return e.interact.unhover&&e.interact.unhover()}),e.interact.hover(),t.currentSketch.showConstraints(e),t.refresh()}}function unhoverFunction(e,t){if(e instanceof _constraint2.default||e.interact.hover){if(e instanceof _constraint2.default)return e.unhover(),t.refresh(),void(t.__sketchControlsHandler.timeoutID=setTimeout(function(){t.currentSketch&&t.currentSketch.hideConstraints()},1e3));e.interact.unhover(),t.refresh(),t.__sketchControlsHandler.timeoutID=setTimeout(function(){t.currentSketch&&t.currentSketch.hideConstraints()},1e3)}}function dragstartFunction(e,t,n,r){e instanceof _geomobjects.Point&&(t.__sketchControlsHandler.lastDragPoint=e.position.clone()),t.data.incrementalLevel&&(t.stateDiff=null,t.mouseStates=[null,null],t.sketchStates=[null,null],t.mouseStates[0]=t.__sketchControlsHandler.lastDragPoint,t.sketchStates[0]=t.currentSketch.getState(),t.movedObject=e,t.__sketchControlsHandler.linearIntervalID=setInterval(function(){},n),t.__sketchControlsHandler.MUCIntervalID=setInterval(function(){if(_cchelpers.logLevel>=5&&console.log(_helpers.Timestamp.get(),"MUC tick"),t.mouseStates[0]){var n=t.data.interactionPoint.clone();n=t.currentSketch.getSnappedPointWrap(n.clone(),e,t.mouseStates[0].clone()),t.moveUnderConstraints(e,n),t.refresh()}},r))}function hoverSubstrateFunction(e,t){e.interact.hover&&(clearTimeout(t.__sketchControlsHandler.timeoutID),t.currentSketch.hideConstraints(),e.interact.hover(),t.currentSketch.showConstraints(e),t.refresh())}function unhoverSubstrateFunction(e,t){e.interact.unhover&&(e.interact.unhover(),t.refresh(),t.__sketchControlsHandler.timeoutID=setTimeout(function(){t.currentSketch&&(t.currentSketch.hideConstraints(),e.hovered=!1)},1e3))}exports.__esModule=!0,exports.filletHandler=exports.vertical_distanceHandler=exports.horizontal_distanceHandler=exports.equal_radiusHandler=exports.radiusHandler=exports.equal_distanceHandler=exports.colinearHandler=exports.symmetricHandler=exports.midpointHandler=exports.concentricHandler=exports.parallelityHandler=exports.perpendicularityHandler=exports.verticalityHandler=exports.horizontalityHandler=exports.tangencyHandler=exports.angleoxHandler=exports.angleHandler=exports.distanceHandler=exports.incidenceHandler=exports.fixationHandler=exports.constraintsHandler=exports.polylineHandler=exports.arcTangentHandler=exports.arcMiddleHandler=exports.arcControlHandler=exports.arcCenterHandler=exports.arcHandler=exports.lineHandler=exports.pointHandler=exports.simpleDrawHandler=exports.deleteHandler=exports.emptyHandler=exports.baseHandler=void 0;var _promise=require("babel-runtime/core-js/promise"),_promise2=_interopRequireDefault(_promise),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_regenerator=require("babel-runtime/regenerator"),_regenerator2=_interopRequireDefault(_regenerator),_asyncToGenerator2=require("babel-runtime/helpers/asyncToGenerator"),_asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2),dragendFunction=function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n,r,i){var o,s,a;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.data.incrementalLevel){e.next=9;break}return clearInterval(n.__sketchControlsHandler.linearIntervalID),clearInterval(n.__sketchControlsHandler.MUCIntervalID),n.mouseStates=[null,null],n.sketchStates=[null,null],n.stateDiff=null,n.movedObject=null,e.next=9,n.currentSketch.updateFromServer().execute(n.socket);case 9:if(!t.endDrag){e.next=12;break}return e.next=12,t.endDrag(n.currentSketch,n.socket);case 12:if(!n.data.incrementalLevel){e.next=15;break}return e.next=15,n.currentSketch.solveConstraints();case 15:if(!n.data.autoconstraintIncremental){e.next=21;break}return o=n.currentSketch,s=new _constraintgen.ConstraintGenerator(o),a=s.generateImpliedConstraints(_sketch2.default.ForObjectsWithChildren(t)),e.next=21,o.addToSketch(a,{updateSketch:!0});case 21:case"end":return e.stop()}},e,this)}));return function(t,n,r,i){return e.apply(this,arguments)}}(),dragFunction=function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,i;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n.data.incrementalLevel){e.next=16;break}if(r=n.data.interactionPoint.clone(),r=n.currentSketch.getSnappedPointWrap(r.clone(),t,n.__sketchControlsHandler.lastDragPoint.clone()),i=n.__sketchControlsHandler.lastDragPoint.sub(r).negate(),!(t instanceof _geomobjects.Point)){e.next=9;break}return e.next=7,t.move(r);case 7:e.next=14;break;case 9:return e.next=11,t.moveRelative;case 11:if(e.t0=e.sent,!e.t0){e.next=14;break}t.moveRelative(i);case 14:n.refresh(),n.__sketchControlsHandler.lastDragPoint=r;case 16:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),_cchelpers=require("../sketcher/cchelpers"),_constraint=require("../sketcher/constraint"),_constraint2=_interopRequireDefault(_constraint),_sketch=require("../sketcher/sketch"),_sketch2=_interopRequireDefault(_sketch),_geomutils=require("../sketcher/geomutils"),_geomobjects=require("../sketcher/geomobjects"),_constraintgen=require("../sketcher/constraintgen"),_fillet=require("../sketcher/fillet"),_fillet2=_interopRequireDefault(_fillet),_controls=require("../sketcher/controls"),Controls=_interopRequireWildcard(_controls),_three=require("three"),_three2=_interopRequireDefault(_three),_object=require("../three/object3"),_object2=_interopRequireDefault(_object),_helpers=require("../core/helpers"),consoleCommands={point:"p",line:"l",arcCenter:"acn",arcControl:"act",arcTangent:"at",arcMiddle:"am",polyline:"pl",fillet:"f"},baseHandler=exports.baseHandler=function(){function e(t){(0,_classCallCheck3.default)(this,e),this.sketcher=t,this.sketch=t.currentSketch}return e.prototype.click=function(e){},e.prototype.mouseMove=function(e){},e.prototype.consoleExecute=function(e){},e.prototype.finish=function(){},e}();baseHandler.prototype.shiftDirections=8;var emptyHandler=exports.emptyHandler=function(e){function t(n){function r(e){var t,r,i=this;e.interact.createInteraction({priority:10}).on((t={},t[_object2.default.Events.Interaction.Hovered]=function(t){if(!a.hasItemDragged)return hoverFunction(e,n)},t[_object2.default.Events.Interaction.Unhovered]=function(t){if(!a.hasItemDragged)return unhoverFunction(e,n)},t[_object2.default.Events.Interaction.Picked]=function(){var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(r){return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e instanceof _constraint2.default)){t.next=2;break}return t.abrupt("return");case 2:n.view.controls.enabled=!1,n.__sketchControlsHandler.lastDragPoint=n.data.interactionPoint.clone(),a.hasItemDragged=!1;case 5:case"end":return t.stop()}},t,i)}));return function(e){return t.apply(this,arguments)}}(),t[_object2.default.Events.Interaction.Dropped]=function(){var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(r){return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e instanceof _constraint2.default)){t.next=2;break}return t.abrupt("return");case 2:if(n.view.controls.enabled=!0,!a.hasItemDragged){t.next=6;break}return t.next=6,dragendFunction(e,n);case 6:a.hasItemDragged=!1;case 7:case"end":return t.stop()}},t,i)}));return function(e){return t.apply(this,arguments)}}(),t[_object2.default.Events.Interaction.Dragged]=function(){var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(r){return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e instanceof _constraint2.default)){t.next=2;break}return t.abrupt("return");case 2:if(a.hasItemDragged){t.next=6;break}return a.hasItemDragged=!0,t.next=6,dragstartFunction(e,n,o,s);case 6:return t.next=8,dragFunction(e,n);case 8:case"end":return t.stop()}},t,i)}));return function(e){return t.apply(this,arguments)}}(),t)),e.constraintsSubstrate&&e.constraintsSubstrate.createInteraction({priority:10}).on((r={},r[_object2.default.Events.Interaction.Hovered]=function(t){return hoverSubstrateFunction(e,n)},r[_object2.default.Events.Interaction.Unhovered]=function(t){return unhoverSubstrateFunction(e,n)},r))}(0,_classCallCheck3.default)(this,t);var i=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));i.timeoutID=void 0,i.linearIntervalID=void 0,i.MUCIntervalID=void 0;var o=10,s=100;i.lastDragPoint=new _three2.default.Vector3(0,0,0),i.hasItemDragged=!1;var a=i,c=n.currentSketch.getObjectsOnSketch();return _sketch2.default.ForObjectsWithChildren(c,r),i}return(0,_inherits3.default)(t,e),t.prototype.consoleExecute=function(e){var t=e.trim().split(/\s+/);if(1===t.length)for(var n in consoleCommands)if(consoleCommands[n]===t[0])return this.sketcher.chooseTool(n)},t.prototype.finish=function(){var e=this.sketcher.currentSketch.getObjectsOnSketch();_sketch2.default.ForObjectsWithChildren(e,function(e){e.interact.removeInteraction(),e.constraintsSubstrate&&e.constraintsSubstrate.removeInteraction()})},t}(baseHandler),deleteHandler=exports.deleteHandler=function(e){function t(n){function r(e){var t,r,i=this;e.interact.createInteraction({priority:10}).on((t={},t[_object2.default.Events.Interaction.Hovered]=function(t){if(o.deletingItem!==e)return hoverFunction(e,n)},t[_object2.default.Events.Interaction.Unhovered]=function(t){return unhoverFunction(e,n)},t[_object2.default.Events.Interaction.Clicked]=function(){var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(r){var s;return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e.parent instanceof _geomobjects.GeometricObject||o.hasItemDeleted)){t.next=2;break}return t.abrupt("return");case 2:return o.deletingItem=e,e instanceof _constraint2.default&&(s=e.args.filter(function(e){return e.constraintsSubstrate.visible})[0],0!==n.currentSketch.updateConstraints(s)&&clearTimeout(n.__sketchControlsHandler.timeoutID)),unhoverFunction(e,n),t.next=7,n.currentSketch.removeFromSketch(e);case 7:if(o.deletingItem=null,!n.data.incrementalLevel){t.next=11;break}return t.next=11,n.currentSketch.solveConstraints();case 11:n.refresh();case 12:case"end":return t.stop()}},t,i)}));return function(e){return t.apply(this,arguments)}}(),t)),e.constraintsSubstrate&&e.constraintsSubstrate.createInteraction({priority:-1}).on((r={},r[_object2.default.Events.Interaction.Hovered]=function(t){return hoverSubstrateFunction(e,n)},r[_object2.default.Events.Interaction.Unhovered]=function(t){return unhoverSubstrateFunction(e,n)},r))}(0,_classCallCheck3.default)(this,t);var i=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));i.deletingItem=null;var o=i,s=n.currentSketch.getObjectsOnSketch();return _sketch2.default.ForObjectsWithChildren(s,r),i}return(0,_inherits3.default)(t,e),t.prototype.finish=function(){var e=this.sketcher.currentSketch.getObjectsOnSketch();_sketch2.default.ForObjectsWithChildren(e,function(e){e.interact.removeInteraction(),e.constraintsSubstrate&&e.constraintsSubstrate.removeInteraction()})},t}(baseHandler),PromiseQueue=function(){function e(){(0,_classCallCheck3.default)(this,e),this.pendingActions=0,this.pendingPromise=_promise2.default.resolve()}return e.prototype.run=function(e){var t=this;return this.pendingActions++,this.pendingPromise=this.pendingPromise.then(e).then(function(){t.pendingActions--}),this.pendingPromise},e.prototype.busy=function(){return this.pendingActions>0},e}(),simpleDrawHandler=exports.simpleDrawHandler=function(e){function t(n){(0,_classCallCheck3.default)(this,t);var r=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));return n.view.interaction.changeCursor=!1,r.sketcher.refresh(),r.clear(),r.queue=new PromiseQueue,r}return(0,_inherits3.default)(t,e),t.prototype.clear=function(){this.preview=null,this.state=0,this.clicksPos=[]},t.prototype.mouseMove=function(e,t){var n=arguments.length<=2||void 0===arguments[2]||arguments[2];if(t||!this.queue.busy()){n&&e.copy(this.doSnapping(e));var r=this.preview;this.updatePreview(e);var i=this.preview;i!=r&&(r&&this.sketch.removeAuxObject(r),i&&this.sketch.addAuxObject(i)),this.sketcher.refresh()}},t.prototype.click=function(e){var t=this,n=arguments.length<=1||void 0===arguments[1]||arguments[1];return this.queue.run((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function r(){return _regenerator2.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(t.mouseMove(e,!0,n),t.handleClick(e)){r.next=3;break}return r.abrupt("return");case 3:if(t.clicksPos[t.state]=e,t.state+=1,t.state!=t.statesCount){r.next=13;break}return r.next=8,t.sketch.addToSketch(t.preview,{autoconstraint:!0});case 8:if(!t.sketcher.data.incrementalLevel){r.next=11;break}return r.next=11,t.sketcher.currentSketch.solveConstraints();case 11:t.clear(),t.sketcher.refresh();case 13:case"end":return r.stop()}},r,t)})))},t.prototype.isClickDuplicate=function(e){return this.clicksPos.some(function(t){return t.equals(e)})},t.prototype.consoleExecute=function(e){emptyHandler.prototype.consoleExecute.call(this,e);var t=e.trim().split(/\s+/),n=t.map(parseFloat);if(2===n.length&&n.every(isFinite))return this.click(new _three2.default.Vector3(n[0],n[1],0),!1);var r=this.clicksPos||this.edgeHandler&&this.edgeHandler.clicksPos;if(r&&0!==r.length){var i=r[r.length-1].x,o=r[r.length-1].y,s=e.match(/[xyl]\s(-?[0-9]*(\.[0-9]*)?(e-?[0-9]*)?)/i);if(s){var a=s[0].split(/\s+/)[0].toLowerCase(),c=parseFloat(s[1]);if(!isNaN(c)&&isFinite(c)){var l=e.match(/a\s(-?[0-9]*(\.[0-9]*)?(e-?[0-9]*)?)/i);if(l){if(l=parseFloat(l[1]),isNaN(l)||!isFinite(l))return;l=l/180*Math.PI;var u=i,d=o;switch(a){case"x":if(Math.cos(l)*c<0)return;u+=c,d+=l%Math.PI===0?0:c*Math.tan(l);break;case"y":if(Math.sin(l)*c<0)return;d+=c,u+=(l+Math.PI/2)%Math.PI===0?0:c*(1/Math.tan(l));break;case"l":u+=c*Math.cos(l),d+=c*Math.sin(l)}return this.click(new _three2.default.Vector3(u,d,0),!1)}if("l"!==a){var h=i,f=o;switch(a){case"x":h+=c;break;case"y":f+=c}return this.click(new _three2.default.Vector3(h,f,0),!1)}}}}},t.prototype.finish=function(){var e=this;return this.queue.run((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(){return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e.preview&&e.sketch.removeAuxObject(e.preview),e.sketcher.refresh();case 2:case"end":return t.stop()}},t,e)})))},t.prototype.doSnapping=function(e){return this.preview instanceof _geomobjects.Point?this.sketch.getSnappedPointWrap(e,this.preview,this.preview.position):this.preview instanceof _geomobjects.Arc||this.preview instanceof _geomobjects.Line?this.sketch.getSnappedPointWrap(e,this.preview.points[1],this.preview.points[1].position):e},t.prototype.handleClick=function(e){return!this.isClickDuplicate(e)},t}(baseHandler),pointHandler=exports.pointHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n))}return(0,_inherits3.default)(t,e),t.prototype.updatePreview=function(e){this.preview instanceof _geomobjects.Point||(this.preview=new _geomobjects.Point),this.preview.position.copy(e)},t}(simpleDrawHandler);pointHandler.prototype.statesCount=1;var lineHandler=exports.lineHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n))}return(0,_inherits3.default)(t,e),t.prototype.updatePreview=function(e){if(1!==this.state)return pointHandler.prototype.updatePreview.call(this,e);var t={start:this.clicksPos[0],end:e};this.preview=(0,_geomutils.createGeomObject)(t,this.preview)},t.prototype.doSnapping=function(e){return this.preview instanceof _geomobjects.Point?this.sketch.getSnappedPointWrap(e,this.preview.points[0],this.preview.points[0].position):this.preview instanceof _geomobjects.Line?this.sketch.getSnappedPointWrap(e,this.preview.points[1],this.preview.points[1].position):e},t}(simpleDrawHandler);lineHandler.prototype.statesCount=2;var arcHandler=exports.arcHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n))}return(0,_inherits3.default)(t,e),t.prototype.updatePreview=function(e){if(2!==this.state)return lineHandler.prototype.updatePreview.call(this,e);var t;if("control"===this.lastPointMode)t=(0,_geomutils.drawArcBy_S_E_CPh)(this.clicksPos[0],this.clicksPos[1],e);else if("middle"===this.lastPointMode)t=(0,_geomutils.drawArcBy_S_E_M)(this.clicksPos[0],this.clicksPos[1],e);else{var n=this.sketcher.view.interaction.shiftKey;t=(0,_geomutils.drawArcBy_S_E_Ch)(this.clicksPos[0],this.clicksPos[1],e,n)}this.preview=(0,_geomutils.createGeomObject)(t,this.preview)},t.prototype.doSnapping=function(e){return this.preview instanceof _geomobjects.Point?this.sketch.getSnappedPointWrap(e.clone(),this.preview,this.preview.position):this.preview instanceof _geomobjects.Line?this.sketch.getSnappedPointWrap(e.clone(),this.preview.points[1],this.preview.points[1].position):this.preview instanceof _geomobjects.Arc?this.sketch.getSnappedPointWrap(e.clone(),this.preview.centerPoint,this.preview.centerPoint.position):e},t}(simpleDrawHandler);arcHandler.prototype.statesCount=3;var arcCenterHandler=exports.arcCenterHandler=function(e){function t(n){(0,_classCallCheck3.default)(this,t);var r=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));return r.lastPointMode="center",r}return(0,_inherits3.default)(t,e),t}(arcHandler),arcControlHandler=exports.arcControlHandler=function(e){function t(n){(0,_classCallCheck3.default)(this,t);var r=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));return r.lastPointMode="control",r}return(0,_inherits3.default)(t,e),t}(arcHandler),arcMiddleHandler=exports.arcMiddleHandler=function(e){function t(n){(0,_classCallCheck3.default)(this,t);var r=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));return r.lastPointMode="middle",r}return(0,_inherits3.default)(t,e),t}(arcHandler),arcTangentHandler=exports.arcTangentHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n))}return(0,_inherits3.default)(t,e),t.prototype.updatePreview=function(e){if(1!==this.state)return pointHandler.prototype.updatePreview.call(this,e);var t=(0,_geomutils.drawArcBy_S_T_E)(this.clicksPos[0],this.from.tangent,e);this.preview=(0,_geomutils.createGeomObject)(t,this.preview)},t.prototype.handleClick=function(e){if(0!==this.state)return simpleDrawHandler.prototype.handleClick.call(this,e);var t=this.sketch.getObjectsOnSketch();t=t.filter(function(e){return e instanceof _geomobjects.Line||e instanceof _geomobjects.Arc});var n=[];return t.forEach(function(t){for(var r=0;r<2;r++){var i=t.points[r];if(i.position.equals(e)){var o=t.getTangent(e);o.length()<.9||(0==r&&o.negate(),n.push({object:t,pointIdx:r,tangent:o}))}}}),1==n.length&&(this.from=n[0],!0)},t}(simpleDrawHandler);arcTangentHandler.prototype.statesCount=2;var polylineHandler=exports.polylineHandler=function(e){function t(n){(0,_classCallCheck3.default)(this,t);var r=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));return r.edgeHandler=null,r.lastPoint=null,r.edgeHandler=new lineHandler(r.sketcher),r.sketcher.refresh(),r.queue=new PromiseQueue,r}return(0,_inherits3.default)(t,e),t.prototype.clearHandler=function(){function e(){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.edgeHandler){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.edgeHandler.finish();case 4:this.edgeHandler=null;case 5:case"end":return e.stop()}},e,this)}));return e}(),t.prototype.changeEdgeType=function(e){var t=this;return this.queue.run((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function n(){var r;return _regenerator2.default.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,t.clearHandler();case 2:if(r=Controls[e+"Handler"],t.edgeHandler=new r(t.sketcher),!t.lastPoint){n.next=7;break}return n.next=7,t.edgeHandler.click(t.lastPoint.position);case 7:case"end":return n.stop()}},n,t)})))},t.prototype.click=function(e){var t=this;return this.queue.run((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function n(){var r,i,o;return _regenerator2.default.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t.edgeHandler.mouseMove(e,!0),r=t.edgeHandler.preview,n.next=4,t.edgeHandler.click(e);case 4:if(0!==t.edgeHandler.state){n.next=18;break}if(!t.lastPoint){n.next=15;break}if(i=new _constraintgen.ConstraintsAdder(t.sketcher.currentSketch),i.add(_constraint2.default.Type.INCIDENCE,[t.lastPoint,r.points[0]]),o=i.commit(),!(o.length>0)){n.next=15;break}return n.next=12,t.sketcher.currentSketch.addToSketch(o);case 12:if(!t.sketcher.data.incrementalLevel){n.next=15;break}return n.next=15,t.sketcher.currentSketch.solveConstraints();case 15:return t.lastPoint=r.points[1],n.next=18,t.edgeHandler.click(t.lastPoint.position);case 18:case"end":return n.stop()}},n,t)})))},t.prototype.mouseMove=function(e){this.queue.busy()||this.edgeHandler.mouseMove(e)},t.prototype.finish=function(){var e=this;return this.queue.run((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(){return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.clearHandler();case 2:case"end":return t.stop()}},t,e)})))},t}(baseHandler);polylineHandler.prototype.consoleExecute=simpleDrawHandler.prototype.consoleExecute;var constraintsHandler=exports.constraintsHandler=function(e){function t(n,r,i,o,s,a){var c=this;(0,_classCallCheck3.default)(this,t);var l=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));if(!s){s=[];for(var u=0;u<i;u++)s[u]=[_geomobjects.Point,_geomobjects.Line,_geomobjects.Arc]}for(var u=0;u<i;u++)0===s[u].length&&(s[u]=[_geomobjects.Point,_geomobjects.Line,_geomobjects.Arc]);if(!a){a=[];for(var u=0;u<i;++u)a[u]="Select object "+(u+1)+" (",a[u]+=s[u].map(function(e){return e.prototype.type}).join("/"),a[u]+=")"}n.setPrompt(a[0]);var d=[];l.candidateObjects=[];for(var u=0;u<i;u++)l.candidateObjects[u]=[],_sketch2.default.ForObjectsWithChildren(n.currentSketch.getObjectsOnSketch(),function(e){s[u].indexOf(e.constructor)!==-1&&l.candidateObjects[u].push(e)}),l.candidateObjects[u].forEach(function(e){var t;return e.interact.createInteraction({priority:10}).on((t={},t[_object2.default.Events.Interaction.Hovered]=function(t){e.interact.hover(),n.refresh()},t[_object2.default.Events.Interaction.Unhovered]=function(t){e.interact.unhover(),n.refresh()},t[_object2.default.Events.Interaction.Clicked]=function(){var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function t(s){var l,u;return _regenerator2.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(d.indexOf(e)===-1){t.next=3;break}return n.setPrompt("Select different object"),t.abrupt("return");case 3:if(d.push(e)===i){t.next=6;break}return n.setPrompt(a[d.length]),t.abrupt("return");case 6:if(!o){t.next=10;break}return t.next=9,n.askConstraintParams({expression:"",value:0,fixed:!0});case 9:l=t.sent;case 10:return u=new _constraint2.default(r,d,l),t.next=13,n.currentSketch.addToSketch(u,{updateSketch:!0});case 13:if(!n.data.incrementalLevel){t.next=16;break}return t.next=16,n.currentSketch.solveConstraints();case 16:return e.interact.unhover(),t.next=19,n.chooseTool("empty");case 19:n.refresh();case 20:case"end":return t.stop()}},t,c)}));return function(e){return t.apply(this,arguments)}}(),t))});return l}return(0,_inherits3.default)(t,e),t.prototype.finish=function(){this.sketcher.setPrompt(""),this.candidateObjects.forEach(function(e){return e.forEach(function(e){return e.interact.removeInteraction()})})},t}(baseHandler),fixationHandler=exports.fixationHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.FIXATION,1,!1))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),incidenceHandler=exports.incidenceHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.INCIDENCE,2,!1,[[_geomobjects.Point],[]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),distanceHandler=exports.distanceHandler=function(e){function t(n,r){return(0,_classCallCheck3.default)(this,t),r=r||_constraint2.default.Type.DISTANCE,(0,_possibleConstructorReturn3.default)(this,e.call(this,n,r,2,!0))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),angleHandler=exports.angleHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.ANGLE,2,!0,[[_geomobjects.Line],[_geomobjects.Line]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),angleoxHandler=exports.angleoxHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.ANGLEOX,1,!0,[[_geomobjects.Line]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),tangencyHandler=exports.tangencyHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.TANGENCY,2))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),horizontalityHandler=exports.horizontalityHandler=function(e){function t(n,r){return(0,_classCallCheck3.default)(this,t),r=r||_constraint2.default.Type.HORIZONTALITY,(0,_possibleConstructorReturn3.default)(this,e.call(this,n,r,1,!1,[[_geomobjects.Line]],["Select Line"]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),verticalityHandler=exports.verticalityHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.VERTICALITY))}return(0,_inherits3.default)(t,e),t}(horizontalityHandler),perpendicularityHandler=exports.perpendicularityHandler=function(e){function t(n,r){return(0,_classCallCheck3.default)(this,t),r=r||_constraint2.default.Type.PERPENDICULARITY,(0,_possibleConstructorReturn3.default)(this,e.call(this,n,r,2,!1,[[_geomobjects.Line],[_geomobjects.Line]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),parallelityHandler=exports.parallelityHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.PARALLELITY))}return(0,_inherits3.default)(t,e),t}(perpendicularityHandler),concentricHandler=exports.concentricHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.CONCENTRIC,2,!1,[[_geomobjects.Arc],[_geomobjects.Arc]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),midpointHandler=exports.midpointHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.MIDPOINT,3,!1,[[],[_geomobjects.Point],[]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),symmetricHandler=exports.symmetricHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.SYMMETRIC,3,!1,[[_geomobjects.Line],[],[]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),colinearHandler=exports.colinearHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.COLINEAR,2,!1,[[_geomobjects.Line],[_geomobjects.Line]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),equal_distanceHandler=exports.equal_distanceHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.EQUAL_DISTANCE,4))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),radiusHandler=exports.radiusHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.RADIUS,1,!0,[[_geomobjects.Arc]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),equal_radiusHandler=exports.equal_radiusHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.EQUAL_RADIUS,2,!1,[[_geomobjects.Arc],[_geomobjects.Arc]]))}return(0,_inherits3.default)(t,e),t}(constraintsHandler),horizontal_distanceHandler=exports.horizontal_distanceHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.HORIZONTAL_DISTANCE))}return(0,_inherits3.default)(t,e),t}(distanceHandler),vertical_distanceHandler=exports.vertical_distanceHandler=function(e){function t(n){return(0,_classCallCheck3.default)(this,t),(0,_possibleConstructorReturn3.default)(this,e.call(this,n,_constraint2.default.Type.VERTICAL_DISTANCE))}return(0,_inherits3.default)(t,e),t}(distanceHandler),filletHandler=exports.filletHandler=function(e){function t(n){(0,_classCallCheck3.default)(this,t);var r=(0,_possibleConstructorReturn3.default)(this,e.call(this,n));return r.processor=new _fillet2.default(n,n.currentSketch),r.busy=!1,r.filletablePoints=[],r.filletArcs=[],r.filletLines=[],r.preview=null,r.updateInteractiveObjects(),r}return(0,_inherits3.default)(t,e),t.prototype.clear=function(){this.filletablePoints.forEach(function(e){return e.interact.removeInteraction()}),this.filletArcs.forEach(function(e){return e.interact.removeInteraction()}),this.filletLines.forEach(function(e){return e.interact.removeInteraction()}),this.filletablePoints=[],this.filletArcs=[],this.filletLines=[]},t.prototype.updateInteractiveObjects=function(){function e(e){a.preview={obj:null,lineStart:null,lineEnd:null},e.obj instanceof _geomobjects.Arc?a.preview.objectIndex=(0,_geomutils.createGeomObject)({start:e.obj.points[0].position.clone(),end:e.obj.points[1].position.clone(),center:e.obj.centerPoint.position.clone(),clockwise:e.obj.clockwise},a.preview.obj):e.obj instanceof _geomobjects.Line&&(a.preview.objectIndex=(0,_geomutils.createGeomObject)({start:e.obj.points[0].position.clone(),end:e.obj.points[1].position.clone()},a.preview.obj)),a.preview.lineStart=(0,_geomutils.createGeomObject)({start:e.lines[0].points[0].position.clone(),end:e.lines[0].points[1].position.clone()},a.preview.lineStart),a.preview.lineEnd=(0,_geomutils.createGeomObject)({start:e.lines[1].points[0].position.clone(),end:e.lines[1].points[1].position.clone()},a.preview.lineEnd),a.sketcher.currentSketch.addAuxObject(a.preview.obj),a.sketcher.currentSketch.addAuxObject(a.preview.lineStart),
a.sketcher.currentSketch.addAuxObject(a.preview.lineEnd)}function t(){a.preview.obj&&a.sketcher.currentSketch.removeAuxObject(a.preview.obj),a.preview.lineStart&&a.sketcher.currentSketch.removeAuxObject(a.preview.lineStart),a.preview.lineEnd&&a.sketcher.currentSketch.removeAuxObject(a.preview.lineEnd),a.preview=null}function n(e){var t,n=a.sketcher.data.interactionPoint.clone();e.obj instanceof _geomobjects.Arc?(t=(0,_geomutils.drawArcBy_Angle_M)(e.vertex.position.clone(),e.objEnds[0].position.clone().sub(e.vertex.position).normalize(),e.objEnds[1].position.clone().sub(e.vertex.position).normalize(),n),t&&(t.clockwise=e.obj.clockwise)):t=(0,_geomutils.drawLineBy_Angle_M)(e.vertex.position.clone(),e.objEnds[0].position.clone().sub(e.vertex.position).normalize(),e.objEnds[1].position.clone().sub(e.vertex.position).normalize(),n);var r=e.lineEnds[0]===e.lines[0].points[0]?1:0,i=e.lineEnds[1]===e.lines[1].points[0]?1:0;if(t){var o=t.start.clone().sub(e.vertex.position).length(),s=Math.min(e.lines[0].points[r].position.clone().sub(e.vertex.position).length(),e.lines[1].points[i].position.clone().sub(e.vertex.position).length(),o);if(o>s&&(t.start=t.start.clone().sub(e.vertex.position).normalize().multiplyScalar(s).add(e.vertex.position),t.end=t.end.clone().sub(e.vertex.position).normalize().multiplyScalar(s).add(e.vertex.position),e.obj instanceof _geomobjects.Arc)){var c=t.center.clone().sub(e.vertex.position).normalize(),l=t.start.clone().sub(e.vertex.position).angleTo(t.end.clone().sub(e.vertex.position));t.center=c.multiplyScalar(s/Math.cos(l/2)).add(e.vertex.position)}}else t={start:e.vertex.position.clone(),end:e.vertex.position.clone()};var u=a.preview.obj,d=(0,_geomutils.createGeomObject)(t,a.preview.obj);d!=u&&(u&&a.sketch.removeAuxObject(u),d&&(a.sketch.addAuxObject(d),a.preview.obj=d)),u=a.preview.lineStart,d=(0,_geomutils.createGeomObject)({start:e.lines[0].points[r].position.clone(),end:t.start.clone()},a.preview.lineStart),d!=u&&(u&&this.sketch.removeAuxObject(u),d&&(a.sketch.addAuxObject(d),a.preview.lineStart=d)),u=a.preview.lineEnd,d=(0,_geomutils.createGeomObject)({start:e.lines[1].points[i].position.clone(),end:t.end.clone()},a.preview.lineEnd),d!=u&&(u&&a.sketch.removeAuxObject(u),d&&(a.sketch.addAuxObject(d),a.preview.lineEnd=d))}function r(e){var t;e.interact.createInteraction({priority:10}).on((t={},t[_object2.default.Events.Interaction.Hovered]=function(t){e.interact.hover(),c.refresh()},t[_object2.default.Events.Interaction.Unhovered]=function(t){e.interact.unhover(),c.refresh()},t[_object2.default.Events.Interaction.Clicked]=function(t){if(!a.busy){var n=a.processor.RecognizeFilletableAngle(e.position);if(n){var r=a.sketcher.view.interaction.shiftKey;if(r)var i=a.processor.CalculateFilletParamsByRadius(n,10);else var i=a.processor.CalculateChamferParamsByOffset(n,10);if(i)return a.busy=!0,a.processor.CreateNewFillet(n,i).then(function(){a.updateInteractiveObjects(),a.busy=!1})}}},t))}function i(r){var i;r.interact.createInteraction({priority:10}).on((i={},i[_object2.default.Events.Interaction.Hovered]=function(e){r.interact.hover(),c.refresh()},i[_object2.default.Events.Interaction.Unhovered]=function(e){r.interact.unhover(),c.refresh()},i[_object2.default.Events.Interaction.Picked]=function(t){if(!a.busy){var n=a.processor.RecognizeFilletByArcOrEdge(r);if(n){var i=a.sketcher.view.interaction.shiftKey;if(!i){var o=a.processor.DeleteFillet(n);return o.then(function(){n.obj.interact.unhover(),a.updateInteractiveObjects(),a.busy=!1})}a.busy=!0,c.view.controls.enabled=!1,n.obj.interact.unhover(),n.obj.setVisible(!1),n.lines.forEach(function(e){return e.setVisible(!1)}),e(n),c.refresh(),a.busy=!1}}},i[_object2.default.Events.Interaction.Dropped]=function(e){if(!a.busy&&a.preview){var n=a.processor.RecognizeFilletByArcOrEdge(r);if(n){if(a.busy=!0,n.obj instanceof _geomobjects.Arc)var i=a.preview.obj?a.preview.obj.radius:n.obj.radius,o=a.processor.CalculateFilletParamsByRadius(n,i);else{if(a.preview.obj)var s=a.preview.obj.points[0].position.distanceTo(n.vertex.position);else var s=n.obj.points[0].position.distanceTo(n.vertex);var o=a.processor.CalculateChamferParamsByOffset(n,s)}var l;return l=!a.preview.obj||a.preview.obj.points[0].position.distanceTo(a.preview.obj.points[1].position)<.001?a.processor.DeleteFillet(n):a.processor.ChangeFillet(n,o),t(),c.view.controls.enabled=!0,n.lines.forEach(function(e){return e.setVisible(!0)}),l.then(function(){n.obj.setVisible(!0),n.obj.interact.unhover(),a.sketcher.refresh(),a.busy=!1,a.updateInteractiveObjects()})}}},i[_object2.default.Events.Interaction.Dragged]=function(e){if(!a.busy&&a.preview){var t=a.processor.RecognizeFilletByArcOrEdge(r);t&&n(t)}},i))}var o=this;this.clear();var s=this.sketcher.currentSketch.getObjectsOnSketch();_sketch2.default.ForObjectsWithChildren(s,function(e){e instanceof _geomobjects.Point&&o.processor.RecognizeFilletableAngle(e.position)&&o.filletablePoints.push(e)}),s.forEach(function(e){e instanceof _geomobjects.Arc&&o.processor.RecognizeFilletByArcOrEdge(e)&&o.filletArcs.push(e),e instanceof _geomobjects.Line&&o.processor.RecognizeFilletByArcOrEdge(e)&&o.filletLines.push(e)});var a=this,c=a.sketcher;this.filletablePoints.forEach(r),this.filletArcs.forEach(i),this.filletLines.forEach(i)},t.prototype.finish=function(){this.clear()},t}(baseHandler);