import{__awaiter as t,__generator as i}from"../_virtual/_tslib.js";import{panic as e}from"../utils/common.js";import n from"./mixins.js";import{defineProp as o}from"./props.js";import r from"./component.js";var a=n(r).extend({data:function(){return{$editor:null}},props:{editable:o({type:Boolean,default:!1,initialize:!1}),editorOpts:o({type:Object,default:function(){},initialize:!1})},computed:{$editable:function(){return this.$meta.editable}},mounted:function(){return t(this,void 0,void 0,(function(){var t;return i(this,(function(i){switch(i.label){case 0:return[4,this.$context.ready];case 1:return i.sent(),t=this.$options.amapMeta.editable,this.editable&&t.startEditing.call(this),[2]}}))}))},beforeDestroy:function(){var t=this,i=this.$editor,e=this.$context;i&&(this.$options.amapMeta.editable.events.forEach((function(e){i.off(e,t.$onAmapEdit)})),i.close(),e&&e.target&&e.target.setMap(null))},watch:{"$props.editable":function(t){var i=this.$editable,e=this.$context;t?e.destroyed||i.startEditing.call(this):i.endEditing.call(this)}}}),s=n(a).extend({amapMeta:{editable:{events:[],loadEditor:e,initEditor:e,onEdit:e,initEditing:function(){return t(this,void 0,void 0,(function(){var t,e,n,o,r,a,s,d,l,c,u=this;return i(this,(function(i){switch(i.label){case 0:return this.$editor?[2,this.$editor]:(t=this.$options.amapMeta.editable,n=(e=this).$container,o=e.$context,r=e.$editable,a=e.$map,s=e.editorOpts,[4,n.ready]);case 1:return i.sent(),[4,r.loadEditor()];case 2:return i.sent(),d=o.AMap,l=this,[4,t.initEditor.call(this,d,a,o.target,s)];case 3:return l.$editor=i.sent(),c=this.$onAmapEdit=t.onEdit.bind(this),t.events.forEach((function(t){u.$editor.on(t,c)})),[2,this.$editor]}}))}))},startEditing:function(){return t(this,void 0,void 0,(function(){var t,e;return i(this,(function(i){switch(i.label){case 0:return[4,this.$editable.initEditing.call(this)];case 1:return t=i.sent(),"function"==typeof(e=this.$context.target).setDraggable&&e.setDraggable(!1),t.open(),[2]}}))}))},endEditing:function(){if(this.$editor){this.$editor.close();var t=this.$context.target;"function"==typeof t.setDraggable&&"boolean"==typeof this.$props.draggable&&t.setDraggable(this.$props.draggable)}}}}});export default s;