import{__awaiter as e,__generator as t}from"./_virtual/_tslib.js";import o from"./load-plugins.js";import r from"./mixins/mixins.js";import{path2Array as a,lngLat2Array as i,bounds2Array as n}from"./utils/amap-helpers.js";import{defineProp as s}from"./mixins/props.js";import c from"./mixins/base.js";var u=r(c).extend({amapMeta:{prepare:function(){return o("AMap.MouseTool")},initComponent:function(o){return e(this,void 0,void 0,(function(){return t(this,(function(e){return[2,new o.MouseTool(this.$map)]}))}))},add:function(){},remove:function(){}},props:{mode:s({type:String,default:"none"}),clearWhenClose:{type:Boolean,default:!0},options:{type:Object}},data:function(){return{drawingMode:void 0}},computed:{$mousetool:function(){return this.$target}},methods:{close:function(e){this.$mousetool.close(e)},draw:function(){var e=this.$mousetool,t=this.mode,o=this.drawingMode,r=this.options,a=void 0===r?{}:r;if(t!==o){switch(t){case"none":this.close(this.clearWhenClose);break;case"marker":e.marker(a);break;case"polyline":e.polyline(a);break;case"polygon":e.polygon(a);break;case"rectangle":e.rectangle(a);break;case"circle":e.circle(a);break;case"rule":e.rule(a);break;case"measureArea":e.measureArea(a);break;case"rectZoomIn":e.rectZoomIn(a);break;case"rectZoomOut":e.rectZoomOut(a)}this.drawingMode=t}},_onDraw:function(e){if(this.mode!==this.drawingMode)return this.close(!0),void this.draw();var t=e.obj,o=this.drawingMode,r=t;switch(o){case"marker":r=i(t.getPosition());break;case"polyline":case"polygon":r=a(t.getPath());break;case"rectangle":r=n(t.getBounds());break;case"circle":r={center:i(t.getCenter()),radius:t.getRadius()};break;case"rule":r={path:a(t.getPath()),length:t.getLength()};break;case"measureArea":r={path:a(t.getPath()),area:t.getArea()}}this.$emit("draw",o,r),this.$emit("update:mode","none")}},mounted:function(){return e(this,void 0,void 0,(function(){var e,o=this;return t(this,(function(t){switch(t.label){case 0:return[4,(e=this.$context).ready];case 1:return t.sent(),e.destroyed?[2]:(this.$mousetool.on("draw",this._onDraw),this.$watch("mode",(function(e){"none"!==e&&"none"!==o.drawingMode&&o.close(!0),o.draw()}),{immediate:!0}),[2])}}))}))}});export default u;