awv3
Version:
AWV client CAD framework
2 lines • 49.6 kB
JavaScript
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function check(e,t){if(!e)throw new Error(t)}function setTestName(e,t){check(void 0===e.testName||e.testName===t,"Overwriting object's name "+e.testName+" with "+t),e.testName=t}function getTestName(e,t){return e.testName}function _convVector(e){return Array.isArray(e)&&e.length>=2&&"number"==typeof e[0]&&"number"==typeof e[1]?new _three2.default.Vector2(e[0],e[1]):"number"==typeof e.x&&"number"==typeof e.y?new _three2.default.Vector2(e.x,e.y):null}function convVector(e){var t=_convVector(e);return check(t,"Expected 2D vector, found: "+e.toString()),t}function convVectorArray(e){if(void 0===e||null===e)return[];var t=_convVector(e);return t?t:(check(Array.isArray(e),"Expected array of vectors"),e=e.map(function(e){return convVector(e)}))}exports.__esModule=!0,exports.SketchMatcher=exports.SketcherAutomation=void 0;var _typeof2=require("babel-runtime/helpers/typeof"),_typeof3=_interopRequireDefault(_typeof2),_keys=require("babel-runtime/core-js/object/keys"),_keys2=_interopRequireDefault(_keys),_regenerator=require("babel-runtime/regenerator"),_regenerator2=_interopRequireDefault(_regenerator),_asyncToGenerator2=require("babel-runtime/helpers/asyncToGenerator"),_asyncToGenerator3=_interopRequireDefault(_asyncToGenerator2),_getIterator2=require("babel-runtime/core-js/get-iterator"),_getIterator3=_interopRequireDefault(_getIterator2),_toConsumableArray2=require("babel-runtime/helpers/toConsumableArray"),_toConsumableArray3=_interopRequireDefault(_toConsumableArray2),_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),runSketchTest=function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.cleanSketch();case 2:return console.log("Started unit test: ",n.name),r=t.getCurrentSketch(),e.next=6,n(t,r);case 6:console.log("Finished unit test: ",n.name);case 7:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),runAllSketchTests=function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t){var n;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=0;case 1:if(!(n<sketchUnitTests.length)){e.next=7;break}return e.next=4,runSketchTest(t,sketchUnitTests[n]);case 4:n++,e.next=1;break;case 7:return e.next=9,t.cleanSketch();case 9:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),someAutomationStuff=function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t){var n,r,a,o,c,s,i=this;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getCurrentSketch(),e.next=3,t.drawLine([50,100],[100,50]);case 3:return r=e.sent,SketchMatcher.run(n,[{type:"line",ends:[[100,50],[50,100]],middle:[75,75],undir:!0}],{ignoreConstraints:!1}),e.next=7,t.drawLine([125,-50],[125,50]);case 7:return a=e.sent,e.next=10,t.dragSketchPoint(t.getStartPoint(r),[[50,100],[60,100],[70,100],[80,100],[90,100],[100,100]],!0,!0);case 10:return e.next=12,t.dragSketchPoint(t.getEndPoint(a),[[125,50],[50,50]],!0);case 12:return SketchMatcher.run(n,[{type:"line",ends:[[100,100],[100,50]]},{type:"line",ends:[[125,-50],[50,50]]},{type:"verticality",args:1}],{ignoreConstraints:!1}),SketchMatcher.run(n,[{type:"point",position:[100,100],optional:!0},{type:"line",ends:[[100,100],[100,50]]},{type:"line",ends:[[125,-50],[50,50]]}]),setTestName(r,"line1"),setTestName(a,"line2"),e.next=18,t.chooseTool("fixation");case 18:return e.next=20,t.clickObject(t.getEndPoint(a));case 20:return e.next=22,t.solveConstraints();case 22:return SketchMatcher.run(n,[{name:"line1",type:"line",ends:[[100,100],[100,50]]},{name:"line2",type:"line",ends:[[50,-75],[50,50]]},{type:"verticality",args:"line2"},{type:"fixation",args:"line2.e"}],{ignoreConstraints:!1}),e.next=25,t.dragSketchPoint(t.getEndPoint(a),[-100,-100],!1);case 25:return e.next=27,t.dragSketchLine(a,[-100,-100]);case 27:return e.next=29,t.chooseTool("polyline");case 29:return e.next=31,t.trackAdded((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.mouseClickAt({x:-100,y:0});case 2:return e.next=4,t.mouseClickAt({x:-100,y:50});case 4:case"end":return e.stop()}},e,i)})));case 31:return e.t0=_geomobjects.Line,o=e.sent.ofType(e.t0).single(),e.next=35,t.chooseTool("arcTangent");case 35:return e.next=37,t.trackAdded((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.mouseClickAt(new _three2.default.Vector3((-50),100,0));case 2:case"end":return e.stop()}},e,i)})));case 37:return e.t1=_geomobjects.Arc,c=e.sent.ofType(e.t1).single(),e.next=41,t.trackAdded((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.mouseClickAt(new _three2.default.Vector3(0,100,"bugoga"));case 2:case"end":return e.stop()}},e,i)})));case 41:return e.t2=_geomobjects.Line,s=e.sent.ofType(e.t2).single(),e.next=45,t.chooseTool("empty");case 45:return e.next=47,t.hoverObject(o);case 47:return e.next=49,t.unhoverObject(o);case 49:return e.next=51,t.hoverObject(s);case 51:return e.next=53,t.unhoverObject(s);case 53:return e.next=55,t.hoverObject(c);case 55:return e.next=57,t.unhoverObject(c);case 57:return e.next=59,t.dragSketchPoint(t.getCenterPoint(c),[10,30],!0);case 59:return e.next=61,t.setIncrementalSolve(!0);case 61:return e.next=63,t.dragSketchPoint(t.getCenterPoint(c),[[10,30],[0,10],[0,20],[0,30],[-10,30],[-10,20],[-20,10],[-50,0]],!0);case 63:return e.next=65,t.chooseTool("fixation");case 65:return e.next=67,t.clickObject(t.getStartPoint(o));case 67:return e.next=69,t.chooseTool("fixation");case 69:return e.next=71,t.clickObject(t.getEndPoint(s));case 71:return e.next=73,t.chooseTool("empty");case 73:return e.next=75,t.dragSketchPoint(t.getCenterPoint(c),[[0,10],[0,20],[0,30],[-10,30],[-10,20],[-20,10],[-50,30]]);case 75:return e.next=77,t.solveConstraints();case 77:return e.next=79,t.deleteObject(a);case 79:return e.next=81,(0,_delay2.default)(1e3);case 81:return e.next=83,t.cleanSketch();case 83:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),_delay=require("delay"),_delay2=_interopRequireDefault(_delay),_three=require("three"),_three2=_interopRequireDefault(_three),_object=require("../three/object3"),_object2=_interopRequireDefault(_object),_sketch=require("../sketcher/sketch"),_sketch2=_interopRequireDefault(_sketch),_sketcher=require("../sketcher/sketcher"),_sketcher2=_interopRequireDefault(_sketcher),_constraint=require("../sketcher/constraint"),_constraint2=_interopRequireDefault(_constraint),_geomobjects=require("../sketcher/geomobjects"),_ccobjects=require("../sketcher/ccobjects"),_constraintgen=require("../sketcher/constraintgen"),AddRemoveTracker=function(){function e(t){(0,_classCallCheck3.default)(this,e),this.sketch=t,this.listeners={},this.changes={}}return e.prototype.markChanged=function(e,t){e.id in this.changes||(this.changes[e.id]={object:e,status:0}),t&&(this.changes[e.id].status+=t)},e.prototype.listen=function(){var e=this,t=function(t){return e.markChanged(t,1)},n=function(t){return e.markChanged(t,-1)};this.sketch.on("SketchAdded",t),this.sketch.on("SketchRemoved",n),this.listeners.SketchAdded=t,this.listeners.SketchRemoved=n},e.prototype.ignore=function(){this.sketch.removeListener("SketchAdded",this.listeners.SketchAdded),this.sketch.removeListener("SketchRemoved",this.listeners.SketchRemoved)},e.prototype.getAllChanges=function(){var e={added:[],removed:[],changed:[]};for(var t in this.changes){var n=this.changes[t],r=e.changed;n.status>0&&(r=e.added),n.status<0&&(r=e.removed),r.push(n.object)}return e},e}(),ChangesArray=function(e){function t(n,r){(0,_classCallCheck3.default)(this,t);var a=(0,_possibleConstructorReturn3.default)(this,e.call.apply(e,[this].concat((0,_toConsumableArray3.default)(n))));return a.label=r,a}return(0,_inherits3.default)(t,e),t.prototype.single=function(){return check(1===this.length,"Expected single "+this.label+" object"),this[0]},t.prototype.ofType=function(e){for(var n=[],r=this,a=Array.isArray(r),o=0,r=a?r:(0,_getIterator3.default)(r);;){var c;if(a){if(o>=r.length)break;c=r[o++]}else{if(o=r.next(),o.done)break;c=o.value}var s=c;s instanceof e&&n.push(s)}return new t(n,this.label)},t.prototype.singleOfType=function(e){check(1===this.length,"Expected single "+this.label+" object, "+this.length+" objects found");var t=this[0];return check(t instanceof e,"Expected "+this.label+" object of type "+e.name),t},t}(Array),SketcherAutomation=exports.SketcherAutomation=function(){function e(t){(0,_classCallCheck3.default)(this,e),this.sketcher=t,this.tickWaitTime=0,this.linearTolerance=.01,this.safePoint=new _three2.default.Vector2((-123.456),(-98.765))}return e.prototype.setRootObject=function(e){this.rootObject=e},e.prototype.execute=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:return this.sketcher.view.input.enabled=!1,e.prev=1,e.next=4,t(this);case 4:return e.prev=4,this.sketcher.view.input.enabled=!0,e.finish(4);case 7:case"end":return e.stop()}},e,this,[[1,,4,7]])}));return e}(),e.prototype.setTickWaitTime=function(e){this.tickWaitTime=e},e.prototype.tick=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.tickWaitTime>0){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,(0,_delay2.default)(this.tickWaitTime);case 4:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.createSketch=function(){function e(e,n,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n,r){var a;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r||(check(this.rootObject,"Neither part nor root object not specified"),this.rootObject.traverse(function(e){e instanceof _ccobjects.Part&&(r=e)}),check(r,"Cannot find any part in ClassCad tree")),t=t||r.getWorldQuaternion(),n=n||r.getWorldPosition(),e.next=5,this.sketcher.newSketch(t,n,r);case 5:return a=e.sent,check(a,"Failed to create new sketch"),e.abrupt("return",a);case 8:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.selectSketch=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:return check(t instanceof _sketch2.default,"Sketch is not specified or not a sketch"),e.next=3,this.sketcher.selectSketch(t);case 3:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.deselectSketch=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(check(!t||t===this.sketcher.currentSketch,"Deselecting wrong sketch"),!n){e.next=6;break}return e.next=4,this.sketcher.sketchAreaRightClicked(this.sketcher.currentSketch);case 4:e.next=8;break;case 6:return e.next=8,this.sketcher.deselectSketch();case 8:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.getCurrentSketch=function(){return this.sketcher.currentSketch},e.prototype.cleanSketch=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:return e.next=2,this.deleteAll();case 2:return e.next=4,this.setIncrementalSolve(!1);case 4:return e.next=6,this.setIncrementalAutoconstraint(!0);case 6:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.chooseTool=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:return e.next=2,this.sketcher.chooseTool(t||"empty");case 2:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.autoconstraintAll=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:return e.next=2,this.sketcher.autoconstraintAll();case 2:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.solveConstraints=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:return e.next=2,this.sketcher.solveConstraints();case 2:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.setIncrementalSolve=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:return e.next=2,this.sketcher.setIncrementalLevel(t);case 2:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.setIncrementalAutoconstraint=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:this.sketcher.data.autoconstraintIncremental=t;case 1:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.trackAny=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,a;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n||(n=this.sketcher.currentSketch),r=new AddRemoveTracker(n),r.listen(),e.next=5,t();case 5:return r.ignore(),a=r.getAllChanges(),e.abrupt("return",a);case 8:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.trackAdded=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.trackAny(t,n);case 2:return r=e.sent,check(0===r.removed.length,"Element removed unexpectedly"),e.abrupt("return",new ChangesArray(r.added));case 5:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.trackRemoved=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.trackAny(t,n);case 2:return r=e.sent,check(0===r.added.length,"Element added unexpectedly"),e.abrupt("return",new ChangesArray(r.removed));case 5:case"end":return e.stop()}},e,this)}));return e}(),e.prototype._mouseMoveTo=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:return t=convVector(t),e.next=3,this.sketcher.data.interactionPoint.set(t.x,t.y);case 3:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.mouseMoveTo=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:return check(this.sketcher.currentSketch,"Moving mouse without selected sketch"),e.next=3,this._mouseMoveTo(t);case 3:return e.next=5,this.tick();case 5:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.mouseClickAt=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return check(this.sketcher.currentSketch,"Clicking mouse without selected sketch"),e.next=3,this._mouseMoveTo(t);case 3:return e.next=5,this.sketcher.sketchAreaClicked(this.sketcher.currentSketch);case 5:return e.next=7,this.tick();case 7:case"end":return e.stop()}},e,this)}));return e}(),e.prototype._interactionEmit=function(){function e(e,n,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){for(var r,a=arguments.length,o=Array(a>2?a-2:0),c=2;c<a;c++)o[c-2]=arguments[c];return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return check(t instanceof _object2.default,"Interacting with something not being a THREE object"),t.interact instanceof _three2.default.Mesh&&(t=t.interact),check(t.interaction&&t.hasListener(n),"Interacting with object without interaction or handler installed"),t.traverseAncestors(function(e){return check(e.visible,"Interacting with invisible object")}),e.next=6,(r=t).emit.apply(r,[n].concat(o));case 6:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.clickObject=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:return e.next=2,this._interactionEmit(t,_object2.default.Events.Interaction.Clicked);case 2:return e.next=4,this.tick();case 4:case"end":return e.stop()}},e,this)}));return e}(),e.prototype._dragPathRelativeToAbsolute=function(e,t){var n=null;e instanceof _geomobjects.Point&&(n=e.position),(e instanceof _geomobjects.Line||e instanceof _geomobjects.Arc)&&(n=e.getMiddlePosition()),check(n,"Cannot detect key point for relative object dragging"),t=[new _three2.default.Vector2(0,0)].concat(t);for(var r=t,a=Array.isArray(r),o=0,r=a?r:(0,_getIterator3.default)(r);;){var c;if(a){if(o>=r.length)break;c=r[o++]}else{if(o=r.next(),o.done)break;c=o.value}var s=c;s.add(n)}return t},e.prototype.dragObject=function(){function e(e,n,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n,r){var a,o,c,s=this;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=convVectorArray(n),r||(n=this._dragPathRelativeToAbsolute(t,n)),check(n.length>=2,"Dragging object along less than two key points"),n=[].concat(n),a=function(){var e=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(n,r){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s._mouseMoveTo(n);case 2:return e.next=4,s._interactionEmit(t,r,{});case 4:return e.next=6,s.tick();case 6:case"end":return e.stop()}},e,s)}));return function(t,n){return e.apply(this,arguments)}}(),o=n.length,e.next=8,a(n[0],_object2.default.Events.Interaction.Picked);case 8:c=0;case 9:if(!(c<o)){e.next=15;break}return e.next=12,a(n[c],_object2.default.Events.Interaction.Dragged);case 12:c++,e.next=9;break;case 15:return e.next=17,a(n[o-1],_object2.default.Events.Interaction.Dropped);case 17:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.dragSketchPoint=function(){function e(e,n,r,a){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n,r,a){var o;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=convVectorArray(n),check(t instanceof _geomobjects.Point,"Dragged object is not a point"),o=new _three2.default.Vector2(t.position.x,t.position.y),r&&(a||(n=[o].concat(n)),check(o.distanceTo(n[0])<=this.linearTolerance,"Dragging point starting from wrong position")),e.next=6,this.dragObject(t,n,r);case 6:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.dragSketchLine=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return check(t instanceof _geomobjects.Line,"Dragged object is not a line"),e.next=3,this.dragObject(t,n,!1);case 3:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.dragSketchArc=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return check(t instanceof _geomobjects.Arc,"Dragged object is not a arc"),e.next=3,this.dragObject(t,n,!1);case 3:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.hoverObject=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._testing_hovered){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this._mouseMoveTo(this.getPointOn(t));case 4:return e.next=6,this._interactionEmit(t,_object2.default.Events.Interaction.Hovered,{});case 6:return t._testing_hovered=!0,e.next=9,this.tick();case 9:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.unhoverObject=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._testing_hovered){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this._mouseMoveTo(this.safePoint);case 4:return e.next=6,this._interactionEmit(t,_object2.default.Events.Interaction.Unhovered,{});case 6:return delete t._testing_hovered,e.next=9,this.tick();case 9:case"end":return e.stop()}},e,this)}));return e}(),e.prototype._drawSimple=function(){function e(e,n,r,a,o){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n,r,a,o){var c,s,i=this;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=convVectorArray(r),e.next=3,this.chooseTool(t);case 3:return e.next=5,this.trackAdded((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){var t;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=0;case 1:if(!(t<r.length)){e.next=7;break}return e.next=4,i.mouseClickAt(r[t]);case 4:t++,e.next=1;break;case 7:case"end":return e.stop()}},e,i)})));case 5:if(c=e.sent,s=c.ofType(n).single(),a&&setTestName(s,a),o){e.next=11;break}return e.next=11,this.chooseTool();case 11:return e.abrupt("return",s);case 12:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.drawPoint=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._drawSimple("point",_geomobjects.Point,[t],n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.drawLine=function(){function e(e,n,r){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n,r){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._drawSimple("line",_geomobjects.Line,[t,n],r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.deleteObject=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,a=this;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.chooseTool("delete");case 2:return e.next=4,this.trackRemoved((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.clickObject(t);case 2:case"end":return e.stop()}},e,a)})));case 4:if(r=e.sent,check(r.indexOf(t)!==-1,"Failed to delete object"),n){e.next=9;break}return e.next=9,this.chooseTool();case 9:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.deleteAll=function(){function e(){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){var t,n,r,a,o;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.getCurrentSketch(),check(t,"Cannot clean all objects: no sketch selected"),n=t.getObjectsOnSketch().filter(function(e){return e instanceof _geomobjects.GeometricObject}),!(n.length>0)){e.next=14;break}return e.next=6,this.chooseTool("delete");case 6:r=0;case 7:if(!(r<n.length)){e.next=14;break}return a=n[r],e.next=11,this.clickObject(a);case 11:r++,e.next=7;break;case 14:return o=t.getObjectsOnSketch(),check(0===o.length,"Failed to remove all objects from sketch"),e.next=18,this.chooseTool();case 18:case"end":return e.stop()}},e,this)}));return e}(),e.prototype.getEndPoint=function(e,t){check(e instanceof _geomobjects.Line||e instanceof _geomobjects.Arc,"Getting endpoint of something not being line or arc"),void 0===t&&(t=1);var n=e.points[t];return check(n instanceof _geomobjects.Point,"Cannot get endpoint of object"),n},e.prototype.getStartPoint=function(e){return this.getEndPoint(e,0)},e.prototype.getCenterPoint=function(e){return check(e instanceof _geomobjects.Arc,"Getting center point of not an arc"),e.centerPoint},e.prototype.getPos=function(e){return check(e instanceof _geomobjects.Point,"Getting position of not a point"),new _three2.default.Vector2(e.position.x,e.position.y)},e.prototype.getMiddlePos=function(e){var t=void 0;return e instanceof _geomobjects.Point?t=e.position:(e instanceof _geomobjects.Line||e instanceof _geomobjects.Arc)&&(t=e.getMiddlePosition()),check(t,"Getting point on object of unknown type"),new _three2.default.Vector2(t.x,t.y)},e.prototype.getPointOn=function(e){return this.getMiddlePos(e)},e}(),SketchMatcher=exports.SketchMatcher=function(){function e(t,n){(0,_classCallCheck3.default)(this,e),n=n||[],check(t instanceof _sketch2.default,"Trying to match sketch of unknown type"),check(Array.isArray(n),"Trying to match with patterns not being an array"),this.sketch=t,this.patterns=n,this.unnamedPatterns=[],this.patternByName={},this.objects=[],this.objectByName={},this.linearTolerance=.1,this.geometryTypes=["point","line","arc"],this.constraintTypes=(0,_keys2.default)(_constraint2.default.Type).map(function(e){return e.toLowerCase()})}return e.prototype.preprocessSketch=function(){this.objects=this.sketch.getObjectsOnSketch();for(var e=0;e<this.objects.length;e++){var t=this.objects[e];delete t._match;var n=getTestName(t);n&&(check(!this.objectByName[n],"Duplicate object found with name "+n),this.objectByName[n]=t)}},e.prototype.preprocessPatterns=function(){for(var e=0;e<this.patterns.length;e++){var t=this.patterns[e];delete t._match;var n=t.name;check("string"==typeof t.type,"Cannot process pattern without type"),t.type=t.type.toLowerCase(),void 0===n?this.unnamedPatterns.push(t):(check(!this.patternByName[n],"Duplicate pattern found with name "+n),this.patternByName[n]=t)}},e.prototype.unmatchedNamedObject=function(e){check(!1,"Sketch object with name = "+getTestName(e)+" is not present in patterns")},e.prototype.unmatchedNamedPattern=function(e){check(!1,"Pattern with name = "+obj.name+" is not present on sketch")},e.prototype.matchNamed=function(){for(var e=0;e<this.objects.length;e++){var t=this.objects[e],n=getTestName(t);if(n){var r=this.patternByName[n];r||this.unmatchedNamedObject(t),r._match=t,t._match=r}}for(var a=0;a<this.patterns.length;a++){var r=this.patterns[a];r.name&&!r._match&&this.unmatchedNamedPattern(r)}},e.prototype.matchUnnamed=function(e){for(var t=0;t<this.patterns.length;t++){var n=this.patterns[t];if(!n._match&&e.indexOf(n.type)!==-1)for(var r=0;r<this.objects.length;r++){var a=this.objects[r];if(!a._match){var o=this.getObjectType(a);if(o===n.type&&this.isCompatible(a,n)){a._match=n,n._match=a;break}}}}},e.prototype.checkMatches=function(){for(var e=0;e<this.patterns.length;e++){var t=this.patterns[e],n=t._match;n&&(this.isCompatible(n,t)||check(!1,"Pattern with index "+e+(t.name?" and name "+t.name:"")+" is not compatible with matched object"))}},e.prototype.compute=function(){this.preprocessSketch(),this.preprocessPatterns(),this.matchNamed(),this.matchUnnamed(this.geometryTypes),this.matchUnnamed(this.constraintTypes),this.checkMatches()},e.prototype.getObjectType=function(e){var t=null;return t=e instanceof _constraint2.default?e.typename:e.type,check("string"==typeof t,"Cannot determine type of object"),t.startsWith("CC_")&&(t=t.substr(3)),t.toLowerCase()},e.prototype.isPositionSame=function(e,t){t=convVector(t),e=convVector(e);var n=e.distanceTo(t);return n<=this.linearTolerance},e.prototype.resolveRef=function(e,t){var n=new SketcherAutomation;check("string"==typeof e||"number"==typeof e,"Trying to resolve reference, which is neither a number nor a string"),e=""+e;var r,a=e.split("."),o=a[0],c=a[1];r=isNaN(o)?this.patternByName[o]:this.patterns[parseInt(o,10)],check("object"===("undefined"==typeof r?"undefined":(0,_typeof3.default)(r)),"Failed to resolve reference "+e+" to any pattern");var s=r._match;if(!s){if(t)return null;check(!1,"Reference "+e+" points to pattern with no matched object")}return"s"===c?s=n.getStartPoint(s):"e"===c?s=n.getEndPoint(s):"c"===c?s=n.getCenterPoint(s):isNaN(c)||(s=n.getEndPoint(s,parseInt(c,10))),s},e.prototype.isCompatible=function(e,t){if(this.getObjectType(e)!==t.type)return!1;var n=new SketcherAutomation;if(void 0!==t.position){check("point"===t.type,"Attribute 'position' is supported only for points");var r=n.getPos(e);if(!this.isPositionSame(r,t.position))return!1}if(void 0!==t.ends){check(Array.isArray(t.ends)&&2===t.ends.length,"Attribute 'ends' must be array with two vectors"),check("line"===t.type||"arc"===t.type,"Attribute 'ends' is supported only for lines and arcs");var a=n.getPos(n.getEndPoint(e,0)),o=n.getPos(n.getEndPoint(e,1)),c=this.isPositionSame(a,t.ends[0])&&this.isPositionSame(o,t.ends[1]);if(t.undir&&(c=c||this.isPositionSame(a,t.ends[1])&&this.isPositionSame(o,t.ends[0])),!c)return!1}if(void 0!==t.middle){check(this.geometryTypes.indexOf(t.type)!==-1,"Attribute 'middle' is supported only geometric objects");var r=n.getMiddlePos(e);if(!this.isPositionSame(r,t.middle))return!1}if(void 0!==t.args){var s=t.args;"number"!=typeof s&&"string"!=typeof s||(s=[s]),check(Array.isArray(s),"Attribute 'args' must be array");for(var i=[],u=0;u<s.length;u++){var p=s[u],h=this.resolveRef(p,!0);i.push(h)}if(e.args.length!==i.length)return!1;for(var f=!0,l=0;l<i.length;l++)i[l]!==e.args[l]&&(f=!1);var d=[_constraint2.default.Type.INCIDENCE,_constraint2.default.Type.DISTANCE,_constraint2.default.Type.ANGLE,_constraint2.default.Type.TANGENCY,_constraint2.default.Type.PERPENDICULARITY,_constraint2.default.Type.PARALLELITY,_constraint2.default.Type.CONCENTRIC,_constraint2.default.Type.COLINEAR,_constraint2.default.Type.EQUAL_RADIUS].map(function(e){
return e[0].toLowerCase()});if(d.indexOf(t.type)!==-1&&(check(2===i.length,"Error: commutative constraint with "+i.length+" arguments"),i[0]===e.args[1]&&i[1]===e.args[0]&&(f=!0)),!f)return!1}return void 0!==t.value&&check(!1,"Attribute 'value' not supported yet"),!0},e.prototype.getUnmatchedObjects=function(){return this.objects.filter(function(e){return!e._match})},e.prototype.getUnmatchedPatterns=function(){return this.patterns.filter(function(e){return!e._match})},e.run=function(t,n,r){r=r||{};var a=new e(t,n);a.compute();var o=a.getUnmatchedObjects(),c=a.getUnmatchedPatterns(),s=void 0===r.ignoreConstraints||r.ignoreConstraints,i=void 0!==r.ignoreGeometry&&r.ignoreGeometry;r.ignoreAll&&(i=s=!0),i&&(o=o.filter(function(e){return!(e instanceof _geomobjects.GeometricObject)})),s&&(o=o.filter(function(e){return!(e instanceof _constraint2.default)})),c=c.filter(function(e){return!e.optional});var u=r.unmatchedObjectsCount||0,p=r.unmatchedPatternsCount||0;if(o.length>u||c.length>p){var h="Found unmatched: "+c.length+" patterns, "+o.length+" objects\n";console.log(h,c,o),check(!1,"Sketch matching returned unacceptable results")}return a},e}(),sketchUnitTests=[function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawPoint([40,60],"p0");case 2:SketchMatcher.run(n,[{type:"point",position:[40,60],name:"p0"}]);case 3:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawPoint([0,0],"p0");case 2:return e.next=4,t.drawPoint([10,0],"p1");case 4:return e.next=6,t.drawPoint([0,10],"p2");case 6:return e.next=8,t.drawPoint([-10,0],"p3");case 8:return e.next=10,t.drawPoint([0,-10],"p4");case 10:SketchMatcher.run(n,[{type:"point",position:[0,0],name:"p0"},{type:"point",position:[10,0],name:"p1"},{type:"point",position:[0,10],name:"p2"},{type:"point",position:[-10,0],name:"p3"},{type:"point",position:[0,-10],name:"p4"}]);case 11:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawPoint([40,60],"p0");case 2:return SketchMatcher.run(n,[{type:"point",position:[40,60],name:"p0"}]),e.next=5,t.chooseTool("point");case 5:return e.next=7,t.mouseClickAt([100,30]);case 7:return SketchMatcher.run(n,[{type:"point",position:[40,60],name:"p0"},{type:"point",position:[100,30]}]),e.next=10,t.mouseClickAt([-70,-40]);case 10:return SketchMatcher.run(n,[{type:"point",position:[40,60],name:"p0"},{type:"point",position:[100,30]},{type:"point",position:[-70,-40]}]),e.next=13,t.mouseClickAt([-40,30]);case 13:return SketchMatcher.run(n,r=[{type:"point",position:[40,60],name:"p0"},{type:"point",position:[100,30]},{type:"point",position:[-70,-40]},{type:"point",position:[-40,30]}]),e.next=16,t.chooseTool("empty");case 16:return e.next=18,t.mouseClickAt([-20,30]);case 18:return e.next=20,t.mouseClickAt([0,30]);case 20:return e.next=22,t.mouseClickAt([20,30]);case 22:SketchMatcher.run(n,r);case 23:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawLine([40,60],[-30,-20]);case 2:SketchMatcher.run(n,[{type:"line",ends:[[40,60],[-30,-20]]}]);case 3:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawLine([40,60],[-30,-20]);case 2:return e.next=4,t.drawLine([30,50],[0,0]);case 4:return e.next=6,t.drawLine([-20,70],[50,10]);case 6:return e.next=8,t.drawLine([10,90],[60,-40]);case 8:SketchMatcher.run(n,[{type:"line",ends:[[40,60],[-30,-20]]},{type:"line",ends:[[30,50],[0,0]]},{type:"line",ends:[[-20,70],[50,10]]},{type:"line",ends:[[10,90],[60,-40]]}]);case 9:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.chooseTool("line");case 2:return e.next=4,t.mouseClickAt([40,60]);case 4:return SketchMatcher.run(n,[]),e.next=7,t.mouseClickAt([-30,-20]);case 7:return SketchMatcher.run(n,[{type:"line",ends:[[40,60],[-30,-20]]}]),e.next=10,t.mouseClickAt([30,50]);case 10:return SketchMatcher.run(n,[{type:"line",ends:[[40,60],[-30,-20]]}]),e.next=13,t.mouseClickAt([0,0]);case 13:return SketchMatcher.run(n,[{type:"line",ends:[[40,60],[-30,-20]]},{type:"line",ends:[[0,0],[30,50]],undir:!0}]),e.next=16,t.mouseClickAt([-20,70]);case 16:return e.next=18,t.mouseClickAt([50,10]);case 18:return SketchMatcher.run(n,r=[{type:"line",ends:[[40,60],[-30,-20]]},{type:"line",ends:[[30,50],[0,0]]},{type:"line",ends:[[-20,70],[50,10]]}]),e.next=21,t.chooseTool("empty");case 21:return e.next=23,t.mouseClickAt([-20,30]);case 23:return e.next=25,t.mouseClickAt([0,30]);case 25:return e.next=27,t.mouseClickAt([20,30]);case 27:SketchMatcher.run(n,r);case 28:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!0);case 2:return e.next=4,t.drawLine([40,60],[30,20],"A");case 4:return e.next=6,t.drawLine([30,20],[0,0],"B");case 6:SketchMatcher.run(n,[{name:"A",type:"line",ends:[[40,60],[30,20]]},{name:"B",type:"line",ends:[[30,20],[0,0]]},{type:"incidence",args:["A.e","B.s"]}]);case 7:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!0);case 2:return e.next=4,t.drawLine([20,0],[0,30],"AD");case 4:return e.next=6,t.drawLine([50,20],[30,50],"BC");case 6:return e.next=8,t.drawLine([0,30],[30,50],"DC");case 8:return e.next=10,t.drawLine([50,20],[20,0],"BA");case 10:SketchMatcher.run(n,[{name:"AD",type:"line",ends:[[20,0],[0,30]]},{name:"BC",type:"line",ends:[[50,20],[30,50]]},{name:"DC",type:"line",ends:[[0,30],[30,50]]},{name:"BA",type:"line",ends:[[50,20],[20,0]]},{type:"incidence",args:["AD.s","BA.e"]},{type:"incidence",args:["BC.s","BA.s"]},{type:"incidence",args:["BC.e","DC.e"]},{type:"incidence",args:["AD.e","DC.s"]}]);case 11:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,a,o,c,s,i,u,p,h;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!0);case 2:return e.next=4,t.drawLine([0,0],[10,-30],"OA");case 4:return e.next=6,t.drawLine([0,0],[10,-10],"OB");case 6:return e.next=8,t.drawLine([10,10],[0,0],"CO");case 8:return e.next=10,t.drawLine([10,30],[0,0],"DO");case 10:r=SketchMatcher.run(n,[{name:"OA",type:"line",ends:[[0,0],[10,-30]]},{name:"OB",type:"line",ends:[[0,0],[10,-10]]},{name:"CO",type:"line",ends:[[10,10],[0,0]]},{name:"DO",type:"line",ends:[[10,30],[0,0]]}]),a=r.getUnmatchedObjects(),check(a.every(function(e){return e instanceof _constraint2.default}),"Expected only constraints unmatched"),o=a.filter(function(e){return"incidence"===r.getObjectType(e)}),c=new _constraintgen.DSU,o.forEach(function(e){return c.merge(e.args[0],e.args[1])}),s=c.getTouched(),i=["OA.s","OB.s","CO.e","DO.e"].map(function(e){return r.resolveRef(e)}),u=function(e){return e.sort(function(e,t){return e.id-t.id}).map(function(e){return e.id}).toString()},p=u(s),h=u(i),check(p===h,"Set of objects referenced in incidence constraints is incorrect"),check(s.every(function(e){return c.getHead(e)===c.getHead(s[0])}),"Not all endpoints are connected by incidence constraints");case 23:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!0);case 2:return e.next=4,t.drawLine([30,40],[-10,40]);case 4:SketchMatcher.run(n,[{type:"line",ends:[[30,40],[-10,40]]},{type:"HORIZONTALITY",args:0}]);case 5:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!0);case 2:return e.next=4,t.drawLine([10,10],[10,40]);case 4:SketchMatcher.run(n,[{type:"line",ends:[[10,10],[10,40]]},{type:"VERTICALITY",args:0}]);case 5:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!0);case 2:return e.next=4,t.drawLine([10,-10],[20,-20],"pm");case 4:return e.next=6,t.drawLine([10,0],[20,0],"pz");case 6:return e.next=8,t.drawLine([10,10],[20,20],"pp");case 8:return e.next=10,t.drawLine([0,-10],[0,-20],"zm");case 10:return e.next=12,t.drawLine([0,10],[0,20],"zp");case 12:return e.next=14,t.drawLine([-10,-10],[-20,-20],"mm");case 14:return e.next=16,t.drawLine([-10,0],[-20,0],"mz");case 16:return e.next=18,t.drawLine([-10,10],[-20,20],"mp");case 18:SketchMatcher.run(n,[{type:"line",name:"pm"},{type:"line",name:"pz"},{type:"line",name:"pp"},{type:"line",name:"zm"},{type:"line",name:"zp"},{type:"line",name:"mm"},{type:"line",name:"mz"},{type:"line",name:"mp"},{type:"verticality",args:"zm"},{type:"verticality",args:"zp"},{type:"horizontality",args:"mz"},{type:"horizontality",args:"pz"}]);case 19:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalAutoconstraint(!1);case 2:return e.next=4,t.drawLine([10,-10],[20,-20],"pm");case 4:return e.next=6,t.drawLine([10,0],[20,0],"pz");case 6:return e.next=8,t.drawLine([10,10],[20,20],"pp");case 8:return e.next=10,t.drawLine([0,-10],[0,-20],"zm");case 10:return e.next=12,t.drawLine([0,10],[0,20],"zp");case 12:return e.next=14,t.drawLine([-10,-10],[-20,-20],"mm");case 14:return e.next=16,t.drawLine([-10,0],[-20,0],"mz");case 16:return e.next=18,t.drawLine([-10,10],[-20,20],"mp");case 18:return r=[{type:"line",name:"pm"},{type:"line",name:"pz"},{type:"line",name:"pp"},{type:"line",name:"zm"},{type:"line",name:"zp"},{type:"line",name:"mm"},{type:"line",name:"mz"},{type:"line",name:"mp"}],SketchMatcher.run(n,r,{ignoreConstraints:!1}),e.next=22,t.autoconstraintAll();case 22:r=r.concat([{type:"verticality",args:"zm"},{type:"verticality",args:"zp"},{type:"horizontality",args:"mz"},{type:"horizontality",args:"pz"}]),SketchMatcher.run(n,r);case 24:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawLine([10,50],[30,70]);case 2:return r=e.sent,SketchMatcher.run(n,[{type:"line"}]),e.next=6,t.deleteObject(r);case 6:SketchMatcher.run(n,[]);case 7:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,a,o;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawLine([10,50],[30,70]);case 2:return r=e.sent,e.next=5,t.drawLine([-30,50],[30,-70]);case 5:return a=e.sent,e.next=8,t.drawLine([70,30],[10,20]);case 8:return o=e.sent,SketchMatcher.run(n,[{type:"line",ends:[[10,50],[30,70]]},{type:"line",ends:[[-30,50],[30,-70]]},{type:"line",ends:[[70,30],[10,20]]}]),e.next=12,t.chooseTool("delete");case 12:return e.next=14,t.clickObject(a);case 14:return SketchMatcher.run(n,[{type:"line",ends:[[10,50],[30,70]]},{type:"line",ends:[[70,30],[10,20]]}]),e.next=17,t.clickObject(r);case 17:return SketchMatcher.run(n,[{type:"line",ends:[[70,30],[10,20]]}]),e.next=20,t.clickObject(o);case 20:return SketchMatcher.run(n,[]),e.next=23,t.chooseTool();case 23:return e.next=25,t.mouseClickAt([0,0]);case 25:SketchMatcher.run(n,[]);case 26:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.drawLine([10,50],[10,70],"AP");case 2:return e.next=4,t.drawLine([-10,70],[10,70],"BP");case 4:return r=SketchMatcher.run(n,[{name:"AP",type:"line"},{name:"BP",type:"line"},{type:"incidence",args:["AP.e","BP.e"]},{type:"horizontality",args:["BP"]},{type:"verticality",args:["AP"]}],{ignoreConstraints:!1}),e.next=7,t.deleteObject(r.resolveRef("AP"));case 7:return SketchMatcher.run(n,[{name:"BP",type:"line"},{type:"horizontality",args:["BP"]}],{ignoreConstraints:!1}),e.next=10,t.deleteObject(r.resolveRef("BP"));case 10:SketchMatcher.run(n,[],{ignoreConstraints:!1});case 11:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,a,o,c=this;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalSolve(!1);case 2:return e.next=4,t.drawLine([10,50],[30,70]);case 4:return r=e.sent,e.next=7,t.drawLine([-10,50],[-30,70]);case 7:return a=e.sent,e.next=10,t.chooseTool("incidence");case 10:return e.next=12,t.trackAdded((0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(){return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.clickObject(t.getStartPoint(r));case 2:return e.next=4,t.clickObject(t.getStartPoint(a));case 4:case"end":return e.stop()}},e,c)})));case 12:return e.t0=_constraint2.default,o=e.sent.singleOfType(e.t0),e.next=16,t.chooseTool();case 16:check(o.type.toLowerCase().includes("inciden"),"Incidence constraint expected, constraint of type "+o.type+" created"),check(o.args.indexOf(t.getStartPoint(r))!==-1,"Incidence involves on wrong object"),check(o.args.indexOf(t.getStartPoint(a))!==-1,"Incidence involves on wrong object");case 19:case"end":return e.stop()}},e,this)}));return e}(),function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r,a,o;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.setIncrementalSolve(!1);case 2:return e.next=4,t.drawLine([10,50],[30,70],"AB");case 4:return e.next=6,t.drawLine([-10,50],[-30,70],"CD");case 6:return r=SketchMatcher.run(n,[{name:"AB",type:"line",ends:[[10,50],[30,70]]},{name:"CD",type:"line",ends:[[-10,50],[-30,70]]}],{ignoreConstraints:!1}),e.next=9,t.chooseTool("incidence");case 9:return e.next=11,t.clickObject(r.resolveRef("AB.s"));case 11:return e.next=13,t.clickObject(r.resolveRef("CD.s"));case 13:return e.next=15,t.chooseTool();case 15:return r=SketchMatcher.run(n,[{name:"AB",type:"line",ends:[[10,50],[30,70]]},{name:"CD",type:"line",ends:[[-10,50],[-30,70]]},{type:"incidence",args:["AB.s","CD.s"]}],{ignoreConstraints:!1}),e.next=18,t.solveConstraints();case 18:r=SketchMatcher.run(n,[{name:"AB",type:"line"},{name:"CD",type:"line"},{type:"incidence",args:["AB.s","CD.s"]}],{ignoreConstraints:!1}),a=t.getPos(r.resolveRef("AB.s")),o=t.getPos(r.resolveRef("CD.s")),check(a.distanceTo(o)<=.001,"Incidence constraint not satisfied after solve");case 22:case"end":return e.stop()}},e,this)}));return e}()];exports.default=function(){function e(e,n){return t.apply(this,arguments)}var t=(0,_asyncToGenerator3.default)(_regenerator2.default.mark(function e(t,n){var r;return _regenerator2.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new SketcherAutomation(t),e.next=3,r.execute(runAllSketchTests);case 3:return r.setTickWaitTime(200),e.next=6,r.execute(someAutomationStuff);case 6:case"end":return e.stop()}},e,this)}));return e}();