import e from"./config.js";import t from"./utils/defer.js";import o from"./load-amap.js";import{__awaiter as r,__generator as a}from"./_virtual/_tslib.js";import n from"vue";import"./mixins/mixins.js";import{createLogger as i}from"./utils/log.js";import{theSamePair as s,lngLat2Array as l,nearPair as d,near as p,getOptionsFromProps as u}from"./utils/amap-helpers.js";import{unbindEvents as m,bindEvents as c}from"./mixins/events.js";import{defineProp as h,setPropValue as v,bindProps as f}from"./mixins/props.js";function y(e){return function(t,o){var r;t.setStatus(((r={})[e]=o,r))}}var g=n.extend({name:"Amap",amapMeta:{events:["click","dblclick","rightclick","mapmove","movestart","moveend","hotspotclick","hotspotover","hotspotout","mousemove","mousewheel","mouseover","mouseup","mousedown","zoomchange","zoomstart","zoomend","dragstart","dragging","dragend","resize","touchstart","touchmove","touchend"]},props:{cacheKey:h({type:String,initialize:!1}),center:h({type:Array,deep:!0,equals:s,setter:function(e,t){if(t){var o=l(e.getCenter());d(t,o)||e.setCenter([t[0],t[1]])}},getter:function(e){return l(e.getCenter())},events:["mapmove","moveend"]}),zoom:h({type:Number,equals:p,setter:function(e,t){if(void 0!==t){var o=e.getZoom();p(o,t)||e.setZoom(t)}},getter:"getZoom",events:["zoomchange","zoomend"]}),rotation:h({type:Number,equals:p,setter:"setRotation",getter:"getRotation",events:["dragging","dragend","moveend","rotateend"]}),pitch:h({type:Number,equals:p,setter:"setPitch",getter:"getPitch",events:["dragging","dragend","moveend","pitchend"]}),viewMode:{type:String},features:h("setFeatures",Array),zooms:{type:Array},dragEnable:h({type:Boolean,default:void 0,setter:y("dragEnable")}),zoomEnable:h({type:Boolean,default:void 0,setter:y("zoomEnable")}),jogEnable:h({type:Boolean,default:void 0,setter:y("jogEnable")}),pitchEnable:h({type:Boolean,default:void 0,setter:y("pitchEnable")}),rotateEnable:h({type:Boolean,default:void 0,setter:y("rotateEnable")}),animateEnable:h({type:Boolean,default:void 0,setter:y("animateEnable")}),keyboardEnable:h({type:Boolean,default:void 0,setter:y("keyboardEnable")}),doubleClickZoom:h({type:Boolean,default:void 0,setter:y("doubleClickZoom")}),scrollWheel:h({type:Boolean,default:void 0,setter:y("scrollWheel")}),touchZoom:{type:Boolean,default:void 0},touchZoomCenter:{type:Boolean,default:void 0},showLabel:{type:Boolean,default:void 0},defaultCursor:h("setDefaultCursor",String),isHotspot:h({type:Boolean,default:void 0,setter:y("isHotspot")}),mapStyle:h("setMapStyle",String),wallColor:{type:String},roofColor:{type:String},skyColor:{type:String},showBuildingBlock:{type:Boolean,default:void 0},showIndoorMap:h({type:Boolean,default:void 0,setter:y("showIndoorMap")}),mask:{type:Array},extraOptions:{type:Object,required:!1,default:void 0}},data:function(){return{ready:!1}},computed:{$context:function(){return this.$amap.context},$map:function(){return this.$context.target}},methods:{_clear:function(){var e=this.$map;e&&(m(this),e.clearMap(),e.clearInfoWindow())},_getContainer:function(t){var o=this.cacheKey;if(!e._disableMapCache&&o){var r="amap-vue-container-inner-"+o,a=document.getElementById(r)||this.$el.querySelector("#"+r);return a||((a=document.createElement("div")).className="amap-vue-container-inner",a.setAttribute("id",r),a.setAttribute("style","position:relative; width:100%; height:100%;")),t?(this.$el.insertAdjacentElement("afterbegin",a),a.style.display="block",a.style.pointerEvents="initial"):(a.style.display="none",a.style.pointerEvents="none"),a}return this.$el}},beforeCreate:function(){o();var e=t(),r={AMap:null,wrapper:null,ready:e.promise,target:null,vm:this,destroyed:!1};this.$amap={events:{},ready:e,context:r,logger:i(this)}},mounted:function(){return r(this,void 0,void 0,(function(){var e,t,n,i,s,l,d,p,m,h,y=this;return a(this,(function(g){switch(g.label){case 0:return e=this.$context,[4,o()];case 1:if(t=g.sent(),e.AMap=t,e.destroyed)return[2];if(n=u(this),i=this._getContainer(!0),s=!!i.$amap)for(l in n)d=this.$options.props[l],p=n[l],v(this,i.$amap,d,p);else i.$amap=new t.Map(i,n);return m=i.$amap,e.wrapper=i,e.target=m,f(this),c(this),h=function(){return r(y,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return this.ready=!0,this.$amap.ready.resolve(m),[4,this.$nextTick()];case 1:return e.sent(),this.$emit("complete",m),[2]}}))}))},s?h():m.on("complete",h),[2]}}))}))},destroyed:function(){var t=this.$context;if(!e._disableMapCache&&this.cacheKey){var o=this._getContainer(!1);document.body.appendChild(o),this._clear()}else t.target&&t.target.destroy();t.destroyed=!0},provide:function(){return{$amapMap:this.$context}},render:function(e){var t=this.$slots.default;return this.ready||(t=void 0),e("div",{class:"amap-vue-container",style:"position:relative; width:100%; height:100%;"},t)}});export default g;