tg-map-vue3 4.0.0 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,8 @@
3
3
  ## 4.0.x
4
4
 
5
5
  - ***BREAKING CHANGE***: [AbstractMap]改成接口, 只保留`getCenter`/`panTo`等外部使用的方法
6
+ - ***BREAKING CHANGE***: 样式改回独立的css文件, 需要手动导入`import 'tg-map-vue3/dist/tg-map.css'`
7
+ - refactor: 独立出单独的[tg-map-core]包
6
8
 
7
9
  ## 3.9.x
8
10
 
@@ -95,3 +97,4 @@
95
97
  [PolyUtil]: src/utils/maps-utils/poly-util.ts
96
98
  [SphericalUtil]: src/utils/maps-utils/spherical-util.ts
97
99
  [AbstractMap]: src/map/map/map.ts#L91
100
+ [tg-map-core]: packages/tg-map-core/README.md
package/README.md CHANGED
@@ -4,10 +4,25 @@
4
4
 
5
5
  ## 使用
6
6
 
7
+ 安装:
8
+
7
9
  ```sh
8
10
  pnpm install tg-map-vue3
9
11
  ```
10
12
 
13
+ 使用:
14
+
15
+ ```vue
16
+ <template>
17
+ <TgMap> </TgMap>
18
+ </template>
19
+ <script lang="ts" setup>
20
+ import { TgMap } from 'tg-map-vue3'
21
+ // 需要手动导入样式文件
22
+ import 'tg-map-vue3/dist/tg-map.css'
23
+ </script>
24
+ ```
25
+
11
26
  ## 发布
12
27
 
13
28
  在npm上, 登录[transcode-group](https://www.npmjs.com/~transcode-group)帐号后, 可以发布该库
@@ -1,4 +1,5 @@
1
1
  import { type PartialTgMapConfig } from 'tg-map-core';
2
+ import 'tg-map-core/dist/tg-map-core.css';
2
3
  import type { App } from 'vue';
3
4
  import MapMixin, { MIXIN_HOOK_CREATE, MIXIN_HOOK_DESTROY, MIXIN_MAP_NAME } from './map-mixin';
4
5
  declare const TgMapPlugin: {
package/dist/tg-map.cjs CHANGED
@@ -1,3 +1,2 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode(".tg-map{height:100%;position:relative}.tg-map__map{width:100%;height:100%}.tg-map__map--hide-logo-google .gm-style a[target=_blank]:has(>div>img){display:none!important}.tg-map__map--hide-logo-google .gm-style>div:last-child>div:last-child>div{display:none}.tg-map__map--hide-logo-baidu div.anchorBL>a[target=_blank]>img{display:none}.tg-map__map--hide-logo-baidu div.BMap_cpyCtrl{display:none}.tg-map-widget{position:absolute}.tg-map>.tg-custom-control{display:none}.tg-map .tg-element-overlay{display:none}.tg-map__map .tg-element-overlay{display:block}.tg-map .tg-info-box{display:none}.tg-map__map .tg-info-box{display:block}.tg-map .tg-label{display:none}.tg-map__map .tg-label{display:block}")),document.head.appendChild(a)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("tg-commons"),s=require("tg-map-core"),r=require("vue");function c(e,t){return{type:String,default:t,validator:i=>Object.values(e).includes(i)}}function I(e,t){return{type:String,default:t,validator:i=>e.includes(i)}}function m(e){return{type:e,required:!0}}function o(e,t){return{type:e,default:t}}function N(e){const t={};return Object.entries(e).forEach(([i,n])=>{const a=`__${i}`;t[i]={get(){const l=this[a];return l===void 0?n:l},set(l){this[a]=l}}}),t}const b={enumerable:!0,configurable:!0,get:h.noop,set:h.noop};function E(e){return Object.keys(e).forEach(t=>{const i=e[t];let n=!1;typeof i=="function"?(b.get=i,b.set=h.noop,n=!0):typeof i=="object"&&typeof i.get=="function"&&(b.get=i.get,b.set=i.set,n=!0),n&&(e[t]=Object.defineProperty(e,t,b))}),e}function x(e){return E(e)}function $(){return r.createCommentVNode()}function C(e,t){const i=e.$options[t];if(i)for(const n of i)n.call(e)}function z(e,t){for(const i of e)if(i.$options.name===t.name)return i}function D(e,t){if(!e.default)return;const i=e.default();for(const n of i)if((n==null?void 0:n.type).name===t.name)return n}function M(e,t){const i={},n={},a={};return Object.keys(e).forEach(l=>{l.startsWith("on")?i[s.Strings.pascal2kebab(l.substring(2))]=e[l]:n[l]=e[l]}),t&&Object.keys(t).forEach(l=>{l.startsWith("on")&&(a[s.Strings.pascal2kebab(l.substring(2))]=t[l])}),{binds:n,listeners:i,listenerProps:a}}function u(e,t){return r.computed(()=>M(e,t))}function p(){return Function}const V=()=>{let e,t;function i(a){console.log(a),e=a&&a.type,t=Date.now()}function n(a){((a&&a.type)!==e||Date.now()-(t??0)>1e3)&&i(a)}return{eventLog:i,eventLogLess:n}};function k(e,t){return(e==null?void 0:e.$options.name)===t.name}function w(e,t){return k(e,t)?e:void 0}function T(e,t,i){let n=t;for(;n;){if(k(n,e))return n;if(i&&k(n,i))return;n=n.$parent}}const P="$map",v="onCreate",g="onDestroy",d=r.defineComponent({inject:[P],mounted(){C(this,v)},beforeUnmount(){C(this,g)},methods:{recreate(){C(this,g),C(this,v)}},render(){return $()}}),W={type:c(s.TgMapType,s.TgMapType.google),center:m(s.LatLng),centerSyncDelay:o(Number,300),currentCenter:o(s.LatLng),lastCenter:o(s.LatLng),zoom:m(Number),infoWindowMode:I(s.InfoWindowModeValues),gestureHandling:c(s.GestureHandlingOptions),minZoom:o(Number),maxZoom:o(Number),mapStyle:o(Object),mapTypeId:c(s.BuildInMapTypeId),mapType:o(Object),hideLogo:o(Boolean),onLoad:p(),"onUpdate:center":p(),"onUpdate:current-center":p(),"onUpdate:last-center":p(),"onUpdate:map-type":p(),"onUpdate:map-type-id":p(),"onUpdate:zoom":p(),onError:p()},R=r.defineComponent({name:"tg-map",provide(){return{[P]:r.computed(()=>this.map)}},inheritAttrs:!1,props:W,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),centerSyncTimeoutId:void 0}},data(){return{map:h.typed(),isDestroyed:!1}},computed:{propsJson(){return s.Objects.toJsonSafely(this.$props)}},watch:{gestureHandling(e){var t;e&&((t=this.map)==null||t.setGestureHandling(s.unwrapStringEnumValue(e,s.GestureHandlingOptions)))},minZoom(e){var t;(t=this.map)==null||t.setMinZoom(e)},maxZoom(e){var t;(t=this.map)==null||t.setMaxZoom(e)},mapStyle(e){var t;(t=this.map)==null||t.setMapStyle(e)},mapTypeId(e){var t;e&&((t=this.map)==null||t.setBuildInMapTypeId(s.unwrapStringEnumValue(e,s.BuildInMapTypeId)))},mapType(e){var t;(t=this.map)==null||t.setMapType(e??s.MapType.NORMAL)}},async mounted(){const e=s.unwrapStringEnumValue(this.type,s.TgMapType);try{await s.loadCachedMap(e)}catch(a){this.$emit("error",a);return}if(this.isDestroyed){console.warn(`tg-map(type=${e})已销毁, 不需要继续执行`);return}const t=s.TgMapFactory.createMap(e,this.$refs.map,{center:this.center,zoom:this.zoom,infoWindowMode:this.infoWindowMode,gestureHandling:s.unwrapStringEnumValue(this.gestureHandling,s.GestureHandlingOptions),minZoom:this.minZoom,maxZoom:this.maxZoom,mapStyle:this.mapStyle,buildInMapTypeId:s.unwrapStringEnumValue(this.mapTypeId,s.BuildInMapTypeId)});if(this.map=r.markRaw(t),this.mapType&&t.setMapType(this.mapType),"ready"in this.attrs.listeners&&console.error("地图载入完成的事件已经从ready改为了load, 请手动修改"),s.bindEvents(this.attrs.listeners,t,["load"]),this.$emit("load",t),r.watch([()=>this.zoom,()=>this.center],([a,l],[f,A])=>{a!==f&&t.setZoom(a),l!==A&&(t.getCenter().equals(l)||t.setCenter(l))}),this.attrs.listenerProps["update:center"]){const a=()=>this.$emit("update:center",t.getCenter());t.addEventListener("center-changed",()=>{this.centerSyncDelay>0?(clearTimeout(this.centerSyncTimeoutId),this.centerSyncTimeoutId=setTimeout(a,this.centerSyncDelay)):a()})}this.attrs.listenerProps["update:current-center"]&&(this.$emit("update:current-center",this.center),t.addEventListener("center-changed",()=>{this.$emit("update:current-center",t.getCenter())})),this.attrs.listenerProps["update:zoom"]&&t.addEventListener("zoom-changed",()=>{this.$emit("update:zoom",t.getZoom())});const i=this.attrs.listenerProps["update:map-type"],n=this.attrs.listenerProps["update:map-type-id"];(i||n)&&t.addEventListener("map-type-changed",()=>{const a=t.getMapType();i&&this.$emit("update:map-type",a),n&&this.$emit("update:map-type-id",a.id)})},unmounted(){this.isDestroyed=!0,this.map&&(this.attrs.listenerProps["update:last-center"]&&this.$emit("update:last-center",this.map.getCenter()),this.attrs.listenerProps["update:center"]&&(clearTimeout(this.centerSyncTimeoutId),this.$emit("update:center",this.map.getCenter())))},methods:{}}),y=(e,t)=>{const i=e.__vccOpts||e;for(const[n,a]of t)i[n]=a;return i};function U(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:"tg-map"},e.attrs.binds),[r.createElementVNode("div",{ref:"map",class:r.normalizeClass({"tg-map__map":!0,[`tg-map__map--hide-logo-${e.type}`]:e.hideLogo})},null,2),r.createCommentVNode("",!0),e.map?r.renderSlot(e.$slots,"default",{key:1}):r.createCommentVNode("",!0),r.renderSlot(e.$slots,"overlay")],16)}const _=y(R,[["render",U]]),Z=r.defineComponent({name:"tg-map-widget",props:{left:{type:[Number,String],default:null},top:{type:[Number,String],default:null},right:{type:[Number,String],default:null},bottom:{type:[Number,String],default:null}},computed:{topValue(){return this.top==null&&this.bottom==null?0:this.top}},methods:{dimen:s.dimen}});function j(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name),style:r.normalizeStyle({left:e.dimen(e.left),top:e.dimen(e.topValue),right:e.dimen(e.right),bottom:e.dimen(e.bottom)})},[r.renderSlot(e.$slots,"default")],6)}const H=y(Z,[["render",j]]),F=r.defineComponent({name:"tg-custom-control",mixins:[d],props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(){return{control:h.lateinit()}},watch:{position(){this.recreate()}},onCreate(){w(this.$parent,_)||console.warn("请将tg-custom-control放到tg-map中");const{$el:e}=this,t=class extends s.CustomControl{onCreateElement(){return e}};this.control=new t(s.unwrapStringEnumValue(this.position,s.ControlPosition)),this.$map.addCustomControl(this.control)},onDestroy(){this.$map.removeCustomControl(this.control)}});function q(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const G=y(F,[["render",q]]),X=r.defineComponent({name:"tg-map-type-control",mixins:[d],props:{position:c(s.ControlPosition,s.ControlPosition.TOP_LEFT),type:c(s.MapTypeControlType),mapTypes:o(Array)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)},type(){this.recreate()},mapTypes:{handler(){this.recreate()},deep:!0}},onCreate(){this.control=this.$map.createMapTypeControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}}),K=r.defineComponent({name:"tg-scale-control",mixins:[d],props:{position:c(s.ControlPosition,s.ControlPosition.BOTTOM_RIGHT)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)}},onCreate(){this.control=this.$map.createScaleControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}});function B(){var i;const e=(i=r.getCurrentInstance())==null?void 0:i.type;let t=(e==null?void 0:e.name)??(e==null?void 0:e.__name);if(!t){const n=e==null?void 0:e.__file;n&&(t=h.path.basename(n,".vue"))}return t}function O(){const e=r.inject(P);let t,i;return e==null&&h.throwError(`<${B()||"unknown"}>必须作为<tg-map>的子代组件`),{mapRef:e,get map(){return e.value??h.throwError("map尚未初始化")},[v](n){r.onMounted(n),t&&h.throwError(`${v}只能调用一次`),t=n},[g](n){r.onBeforeUnmount(n),i&&h.throwError(`${g}只能调用一次`),i=n},recreate(){i==null||i(),t==null||t()}}}const J=r.defineComponent({name:"tg-street-view-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createStreetViewControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Y=r.defineComponent({name:"tg-zoom-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createZoomControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Q=r.defineComponent({name:"tg-heatmap",props:{maxIntensity:o(Number),gradient:o(Object),opacity:o(Number),radius:o(Number),data:m(Array)},setup(e){const{map:t,onCreate:i,onDestroy:n}=O();let a=h.lateinit();return i(()=>{a=t.createHeatmap(e)}),n(()=>{a.remove()}),r.watch(()=>e.data,l=>a.setData(l)),r.watch([()=>e.maxIntensity,()=>e.gradient,()=>e.opacity,()=>e.radius],()=>a.setOptions(e)),$}}),ee=r.defineComponent({name:"tg-marker-clusterer",mixins:[d],props:{gridSize:o(Number),maxZoom:o(Number),minClusterSize:o(Number),averageCenter:o(Boolean),styles:o(Array),stylesIndexCalculator:o(Function),zIndex:o(Number)},setup(){return{clusterer:h.lateinit(),markers:h.typed([])}},watch:{gridSize(){this.recreate()},maxZoom(){this.recreate()},minClusterSize(){this.recreate()},averageCenter(){this.recreate()},styles:{handler(){this.recreate()},deep:!0},stylesIndexCalculator(){this.recreate()},zIndex(){this.recreate()}},onCreate(){this.clusterer=this.$map.createMarkerClusterer(this)},onDestroy(){this.clusterer.clearMarkers()},methods:{isInitiated(){return this.clusterer!=null},onAddMarker(e){this.markers.push(e),this.isInitiated()&&this.clusterer.addMarker(e)},onRemoveMarker(e){this.isInitiated()&&this.clusterer.removeMarker(e),h.Arrays.remove(this.markers,e)}}});function te(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const L=y(ee,[["render",te]]),oe=r.defineComponent({name:"tg-traffic-layer",mixins:[d],setup(){return{layer:h.lateinit()}},watch:{},onCreate(){this.layer=new s.TrafficLayer,this.$map.addLayer(this.layer)},onDestroy(){this.$map.removeLayer(this.layer)}}),re=r.defineComponent({name:"tg-circle",mixins:[d],inheritAttrs:!1,props:{center:m(s.LatLng),radius:m(Number),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:center":p(),"onUpdate:radius":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedRadius:void 0,emittedCenter:void 0}},watch:{center(e){if(this.emittedCenter!=null){const t=this.emittedCenter;if(this.emittedCenter=void 0,t===r.toRaw(e))return}this.overlay.setCenter(e)},radius(e){if(this.emittedRadius!=null){const t=this.emittedRadius;if(this.emittedRadius=void 0,t===e)return}this.overlay.setRadius(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createCircle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:center"]&&this.overlay.addEventListener("center-changed",()=>{this.$emit("update:center",this.emittedCenter=this.overlay.getCenter())}),this.attrs.listenerProps["update:radius"]&&this.overlay.addEventListener("radius-changed",()=>{this.$emit("update:radius",this.emittedRadius=this.overlay.getRadius())})},onDestroy(){this.$map.removeOverlay(this.overlay)}});class ie extends s.ElementOverlay{constructor(t,i,n,a){super(t,i),this.content=n,this.position=a}onCreate(){return this.content}onDraw(t){const i=t.fromLatLngToOverlayPoint(this.position);this.content.style.left=i.x+"px",this.content.style.top=i.y+"px"}setPosition(t){this.position=t,this.draw()}}const se=r.defineComponent({name:"tg-element-overlay",mixins:[d],props:{mapPane:c(s.MapPane,s.MapPane.overlayMouseTarget),position:m(s.LatLng)},setup(){return{overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el}},onCreate(){this.overlay=new ie(this.$map,s.unwrapStringEnumValue(this),this.content(),this.position),this.$map.addElementOverlay(this.overlay)},onDestroy(){this.$map.removeElementOverlay(this.overlay)}});function ne(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.$attrs),[r.renderSlot(e.$slots,"default")],16)}const ae=y(se,[["render",ne]]),le={position:m(s.LatLng),title:o(String),label:o(Object),icon:o(Object),clickable:o(Boolean),draggable:o(Boolean),crossOnDrag:o(Boolean),cursor:o(String),zIndex:o(Number),visible:o(Boolean),normalizePositionForBaidu:o(Boolean),autoAddToClusterer:o(Boolean,!0),"onUpdate:position":p()},he=r.defineComponent({name:"tg-marker",mixins:[d],inheritAttrs:!1,props:le,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),marker:h.lateinit(),labelOverlay:h.typed(),info:h.typed(),emittedPosition:void 0,autoAddToClustererWhenCreate:e.autoAddToClusterer}},watch:{position(e){if(this.emittedPosition!=null){const t=this.emittedPosition;if(this.emittedPosition=void 0,t===r.toRaw(e))return}this.marker.setPosition(e)},title(e){this.marker.setTitle(e)},label(e,t){h.deepEqual(e,t)||(e?this.marker.setLabel(e):this.recreate())},icon(e){e?this.marker.setIcon(e):this.recreate()},clickable(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setClickable(e)},draggable(e){this.marker.setDraggable(e)},crossOnDrag(){this.recreate()},cursor(){this.recreate()},zIndex(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setZIndex(e)},visible(e){this.marker.setVisible(e)},normalizePositionForBaidu(){this.recreate()},autoAddToClusterer(){this.recreate()}},onCreate(){this.marker=this.$map.createMarker(this),this.labelOverlay&&this.marker.attachLabelOverlay(this.labelOverlay.overlay),this.$clusterer()&&this.autoAddToClusterer?this.$clusterer().onAddMarker(this.marker):this.$map.addOverlay(this.marker),this.autoAddToClustererWhenCreate=this.autoAddToClusterer,this.info&&this.info.show&&this.info.overlay.open(this.marker),s.bindEvents(this.attrs.listeners,this.marker),this.attrs.listenerProps["update:position"]&&this.marker.addEventListener("dragend",e=>{this.$emit("update:position",this.emittedPosition=e.position)})},onDestroy(){this.$clusterer()&&this.autoAddToClustererWhenCreate?this.$clusterer().onRemoveMarker(this.marker):this.$map.removeOverlay(this.marker)},methods:{$clusterer(){return w(this.$parent,L)},onAddLabel(e){this.labelOverlay=e,this.marker&&this.marker.attachLabelOverlay(e.overlay)},onRemoveLabel(e){this.marker.attachLabelOverlay(void 0),this.labelOverlay=void 0},onAddInfo(e){this.info=e,this.marker&&e.show&&e.overlay.open(this.marker)},onRemoveInfo(e){e.overlay.close(),this.info=void 0},onInfoShowChanged(e,t){t?e.overlay.open(this.marker):e.overlay.close()}}});function pe(e,t,i,n,a,l){return r.renderSlot(e.$slots,"default")}const S=y(he,[["render",pe]]),de=r.defineComponent({name:"tg-info-box",mixins:[d],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),offset:o(Object),maxWidth:o(Number),borderClass:o(String),zIndex:o(Number),"onUpdate:show":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},offset(){this.recreate()},maxWidth(e){this.overlay.setMaxWidth(e)},borderClass(){this.recreate()},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createInfoBox(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.attrs.listenerProps["update:show"]&&this.overlay.addEventListener("closeclick",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()},methods:{getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,maxWidth:this.maxWidth,borderClass:this.borderClass}},content(){return this.$el},$marker(){return T(S,this.$parent,_)},open(e){this.overlay.open(e)},close(){this.overlay.close()}}});function me(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const ce=y(de,[["render",me]]),ue=r.defineComponent({name:"tg-info-window",mixins:[d],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),maxWidth:o(Number),offset:o(Object),disableAutoPan:o(Boolean),"onUpdate:show":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},maxWidth(){this.recreate()},offset(){this.recreate()},disableAutoPan(){this.recreate()}},methods:{content(){return this.$el},$marker(){return T(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,maxWidth:this.maxWidth,offset:this.offset,disableAutoPan:this.disableAutoPan}}},onCreate(){this.overlay=this.$map.createInfoWindow(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.overlay.addEventListener("open",()=>{this.$emit("update:show",!0)}),this.overlay.addEventListener("close",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()}});function ye(e,t,i,n,a,l){return r.withDirectives((r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)),[[r.vShow,e.show]])}const fe=y(ue,[["render",ye]]),ve=r.defineComponent({name:"tg-label",mixins:[d],inheritAttrs:!1,props:{position:o(s.LatLng),offset:o(Object),zIndex:o(Number),mapPane:c(s.MapPane)},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t),overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},offset(e){this.overlay.setOffset(e)},zIndex(e){this.overlay.setZIndex(e)},visible(e){this.overlay.setVisible(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el},marker(){var e;return(e=this.$marker())==null?void 0:e.marker},$marker(){return T(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,mapPane:s.unwrapStringEnumValue(this.mapPane,s.MapPane)}}},onCreate(){this.overlay=this.$map.createLabel(this.getOptions()),this.$marker()?this.$marker().onAddLabel(this):this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveLabel(this):this.$map.removeOverlay(this.overlay)}});function ge(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const be=y(ve,[["render",ge]]),Ce={paths:m(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:paths":p()},$e=r.defineComponent({name:"tg-polygon",mixins:[d],inheritAttrs:!1,props:Ce,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPaths:void 0}},watch:{paths:{handler(e){if(this.emittedPaths!=null){const t=this.emittedPaths;if(this.emittedPaths=void 0,t.length===e.length&&t.every((i,n)=>i===r.toRaw(e[n])))return}this.overlay.setPaths(e)},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolygon(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:paths"]&&this.overlay.addEventListener("paths-edited",()=>{this.$emit("update:paths",this.emittedPaths=this.overlay.getPaths())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),_e=r.defineComponent({name:"tg-polyline",mixins:[d],inheritAttrs:!1,props:{path:m(Array),icons:o(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),"onUpdate:path":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPath:void 0}},watch:{path:{handler(e){if(this.emittedPath!=null){const t=this.emittedPath;if(this.emittedPath=void 0,t===r.toRaw(e))return}this.overlay.setPath(e)},deep:!0},icons:{handler(){this.recreate()},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolyline(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:path"]&&this.overlay.addEventListener("path-edited",()=>{this.$emit("update:path",this.emittedPath=this.overlay.getPath())})},onDestroy(){this.overlay.remove()}}),ke=r.defineComponent({name:"tg-rectangle",mixins:[d],inheritAttrs:!1,props:{bounds:m(Object),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:bounds":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedBounds:void 0}},watch:{bounds(e){if(this.emittedBounds!=null){const t=this.emittedBounds;if(this.emittedBounds=void 0,t.equals(e))return}this.overlay.setBounds(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createRectangle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:bounds"]&&this.overlay.addEventListener("bounds-changed",()=>{this.$emit("update:bounds",this.emittedBounds=this.overlay.getBounds())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),Te=["beforeUpdate","updated"],Pe={install(e,t={}){if(t.enable!==!1){const i=r.defineComponent({beforeCreate(){const n=B()??"",l=(t.nameRegex||/^[A-Z]/).test(n)?f=>{t.hookNames?t.hookNames.includes(f)&&console.debug("[lifecycle]",n,f):Te.includes(f)||console.debug("[lifecycle]",n,f)}:h.noop;l("beforeCreate"),this.__life_impl=l},created(){this.__life("created")},beforeMount(){this.__life("beforeMount")},mounted(){this.__life("mounted")},beforeUpdate(){this.__life("beforeUpdate")},updated(){this.__life("updated")},beforeUnmount(){this.__life("beforeUnmount")},unmounted(){this.__life("unmounted")},methods:{__life(n){this.__life_impl(n)}},onCreate(){this.__life("onCreate")},onDestroy(){this.__life("onDestroy")}});e.mixin(i)}}},Oe={install(e,t){s.setTgMapConfig(t);const i=e.config.optionMergeStrategies;i[v]=i[g]=(n,a)=>n?[...new Set([].concat(n,a))]:Array.isArray(a)?a:[a]}};exports.LifecycleLogPlugin=Pe;exports.MIXIN_HOOK_CREATE=v;exports.MIXIN_HOOK_DESTROY=g;exports.MIXIN_MAP_NAME=P;exports.MapMixin=d;exports.TgCircle=re;exports.TgCustomControl=G;exports.TgElementOverlay=ae;exports.TgHeatmap=Q;exports.TgInfoBox=ce;exports.TgInfoWindow=fe;exports.TgLabel=be;exports.TgMap=_;exports.TgMapTypeControl=X;exports.TgMapWidget=H;exports.TgMarker=S;exports.TgMarkerClusterer=L;exports.TgPolygon=$e;exports.TgPolyline=_e;exports.TgRectangle=ke;exports.TgScaleControl=K;exports.TgStreetViewControl=J;exports.TgTrafficLayer=oe;exports.TgZoomControl=Y;exports.callHook=C;exports.computedSaveOnThis=N;exports.createEmptyVNode=$;exports.createPropertyObject=E;exports.createPropertyObjectTyped=x;exports.default=Oe;exports.eventProp=p;exports.extractVNodeFromSlotsByComponent=D;exports.findAncestorComponentByType=T;exports.findByComponentType=z;exports.isComponentByType=k;exports.optionalProp=o;exports.requiredProp=m;exports.safeAsComponent=w;exports.splitAttrs=M;exports.stringEnumProp=c;exports.stringUnionPropFromValues=I;exports.useEventLogMethods=V;exports.useSplittedAttrs=u;exports.useTgMapInner=O;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("tg-commons"),s=require("tg-map-core"),r=require("vue");require("tg-map-core/dist/tg-map-core.css");function c(e,t){return{type:String,default:t,validator:i=>Object.values(e).includes(i)}}function I(e,t){return{type:String,default:t,validator:i=>e.includes(i)}}function m(e){return{type:e,required:!0}}function o(e,t){return{type:e,default:t}}function N(e){const t={};return Object.entries(e).forEach(([i,n])=>{const a=`__${i}`;t[i]={get(){const l=this[a];return l===void 0?n:l},set(l){this[a]=l}}}),t}const b={enumerable:!0,configurable:!0,get:h.noop,set:h.noop};function E(e){return Object.keys(e).forEach(t=>{const i=e[t];let n=!1;typeof i=="function"?(b.get=i,b.set=h.noop,n=!0):typeof i=="object"&&typeof i.get=="function"&&(b.get=i.get,b.set=i.set,n=!0),n&&(e[t]=Object.defineProperty(e,t,b))}),e}function x(e){return E(e)}function $(){return r.createCommentVNode()}function C(e,t){const i=e.$options[t];if(i)for(const n of i)n.call(e)}function z(e,t){for(const i of e)if(i.$options.name===t.name)return i}function D(e,t){if(!e.default)return;const i=e.default();for(const n of i)if((n==null?void 0:n.type).name===t.name)return n}function M(e,t){const i={},n={},a={};return Object.keys(e).forEach(l=>{l.startsWith("on")?i[s.Strings.pascal2kebab(l.substring(2))]=e[l]:n[l]=e[l]}),t&&Object.keys(t).forEach(l=>{l.startsWith("on")&&(a[s.Strings.pascal2kebab(l.substring(2))]=t[l])}),{binds:n,listeners:i,listenerProps:a}}function u(e,t){return r.computed(()=>M(e,t))}function p(){return Function}const V=()=>{let e,t;function i(a){console.log(a),e=a&&a.type,t=Date.now()}function n(a){((a&&a.type)!==e||Date.now()-(t??0)>1e3)&&i(a)}return{eventLog:i,eventLogLess:n}};function k(e,t){return(e==null?void 0:e.$options.name)===t.name}function w(e,t){return k(e,t)?e:void 0}function T(e,t,i){let n=t;for(;n;){if(k(n,e))return n;if(i&&k(n,i))return;n=n.$parent}}const P="$map",v="onCreate",g="onDestroy",d=r.defineComponent({inject:[P],mounted(){C(this,v)},beforeUnmount(){C(this,g)},methods:{recreate(){C(this,g),C(this,v)}},render(){return $()}}),W={type:c(s.TgMapType,s.TgMapType.google),center:m(s.LatLng),centerSyncDelay:o(Number,300),currentCenter:o(s.LatLng),lastCenter:o(s.LatLng),zoom:m(Number),infoWindowMode:I(s.InfoWindowModeValues),gestureHandling:c(s.GestureHandlingOptions),minZoom:o(Number),maxZoom:o(Number),mapStyle:o(Object),mapTypeId:c(s.BuildInMapTypeId),mapType:o(Object),hideLogo:o(Boolean),onLoad:p(),"onUpdate:center":p(),"onUpdate:current-center":p(),"onUpdate:last-center":p(),"onUpdate:map-type":p(),"onUpdate:map-type-id":p(),"onUpdate:zoom":p(),onError:p()},R=r.defineComponent({name:"tg-map",provide(){return{[P]:r.computed(()=>this.map)}},inheritAttrs:!1,props:W,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),centerSyncTimeoutId:void 0}},data(){return{map:h.typed(),isDestroyed:!1}},computed:{propsJson(){return s.Objects.toJsonSafely(this.$props)}},watch:{gestureHandling(e){var t;e&&((t=this.map)==null||t.setGestureHandling(s.unwrapStringEnumValue(e,s.GestureHandlingOptions)))},minZoom(e){var t;(t=this.map)==null||t.setMinZoom(e)},maxZoom(e){var t;(t=this.map)==null||t.setMaxZoom(e)},mapStyle(e){var t;(t=this.map)==null||t.setMapStyle(e)},mapTypeId(e){var t;e&&((t=this.map)==null||t.setBuildInMapTypeId(s.unwrapStringEnumValue(e,s.BuildInMapTypeId)))},mapType(e){var t;(t=this.map)==null||t.setMapType(e??s.MapType.NORMAL)}},async mounted(){const e=s.unwrapStringEnumValue(this.type,s.TgMapType);try{await s.loadCachedMap(e)}catch(a){this.$emit("error",a);return}if(this.isDestroyed){console.warn(`tg-map(type=${e})已销毁, 不需要继续执行`);return}const t=s.TgMapFactory.createMap(e,this.$refs.map,{center:this.center,zoom:this.zoom,infoWindowMode:this.infoWindowMode,gestureHandling:s.unwrapStringEnumValue(this.gestureHandling,s.GestureHandlingOptions),minZoom:this.minZoom,maxZoom:this.maxZoom,mapStyle:this.mapStyle,buildInMapTypeId:s.unwrapStringEnumValue(this.mapTypeId,s.BuildInMapTypeId)});if(this.map=r.markRaw(t),this.mapType&&t.setMapType(this.mapType),"ready"in this.attrs.listeners&&console.error("地图载入完成的事件已经从ready改为了load, 请手动修改"),s.bindEvents(this.attrs.listeners,t,["load"]),this.$emit("load",t),r.watch([()=>this.zoom,()=>this.center],([a,l],[f,A])=>{a!==f&&t.setZoom(a),l!==A&&(t.getCenter().equals(l)||t.setCenter(l))}),this.attrs.listenerProps["update:center"]){const a=()=>this.$emit("update:center",t.getCenter());t.addEventListener("center-changed",()=>{this.centerSyncDelay>0?(clearTimeout(this.centerSyncTimeoutId),this.centerSyncTimeoutId=setTimeout(a,this.centerSyncDelay)):a()})}this.attrs.listenerProps["update:current-center"]&&(this.$emit("update:current-center",this.center),t.addEventListener("center-changed",()=>{this.$emit("update:current-center",t.getCenter())})),this.attrs.listenerProps["update:zoom"]&&t.addEventListener("zoom-changed",()=>{this.$emit("update:zoom",t.getZoom())});const i=this.attrs.listenerProps["update:map-type"],n=this.attrs.listenerProps["update:map-type-id"];(i||n)&&t.addEventListener("map-type-changed",()=>{const a=t.getMapType();i&&this.$emit("update:map-type",a),n&&this.$emit("update:map-type-id",a.id)})},unmounted(){this.isDestroyed=!0,this.map&&(this.attrs.listenerProps["update:last-center"]&&this.$emit("update:last-center",this.map.getCenter()),this.attrs.listenerProps["update:center"]&&(clearTimeout(this.centerSyncTimeoutId),this.$emit("update:center",this.map.getCenter())))},methods:{}}),y=(e,t)=>{const i=e.__vccOpts||e;for(const[n,a]of t)i[n]=a;return i};function U(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:"tg-map"},e.attrs.binds),[r.createElementVNode("div",{ref:"map",class:r.normalizeClass({"tg-map__map":!0,[`tg-map__map--hide-logo-${e.type}`]:e.hideLogo})},null,2),r.createCommentVNode("",!0),e.map?r.renderSlot(e.$slots,"default",{key:1}):r.createCommentVNode("",!0),r.renderSlot(e.$slots,"overlay")],16)}const _=y(R,[["render",U]]),Z=r.defineComponent({name:"tg-map-widget",props:{left:{type:[Number,String],default:null},top:{type:[Number,String],default:null},right:{type:[Number,String],default:null},bottom:{type:[Number,String],default:null}},computed:{topValue(){return this.top==null&&this.bottom==null?0:this.top}},methods:{dimen:s.dimen}});function j(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name),style:r.normalizeStyle({left:e.dimen(e.left),top:e.dimen(e.topValue),right:e.dimen(e.right),bottom:e.dimen(e.bottom)})},[r.renderSlot(e.$slots,"default")],6)}const H=y(Z,[["render",j]]),F=r.defineComponent({name:"tg-custom-control",mixins:[d],props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(){return{control:h.lateinit()}},watch:{position(){this.recreate()}},onCreate(){w(this.$parent,_)||console.warn("请将tg-custom-control放到tg-map中");const{$el:e}=this,t=class extends s.CustomControl{onCreateElement(){return e}};this.control=new t(s.unwrapStringEnumValue(this.position,s.ControlPosition)),this.$map.addCustomControl(this.control)},onDestroy(){this.$map.removeCustomControl(this.control)}});function q(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const G=y(F,[["render",q]]),X=r.defineComponent({name:"tg-map-type-control",mixins:[d],props:{position:c(s.ControlPosition,s.ControlPosition.TOP_LEFT),type:c(s.MapTypeControlType),mapTypes:o(Array)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)},type(){this.recreate()},mapTypes:{handler(){this.recreate()},deep:!0}},onCreate(){this.control=this.$map.createMapTypeControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}}),K=r.defineComponent({name:"tg-scale-control",mixins:[d],props:{position:c(s.ControlPosition,s.ControlPosition.BOTTOM_RIGHT)},setup(){return{control:h.lateinit()}},watch:{position(e){this.control.setPosition(e)}},onCreate(){this.control=this.$map.createScaleControl(s.unwrapStringEnumValue(this)),this.$map.addControl(this.control)},onDestroy(){this.$map.removeControl(this.control)}});function B(){var i;const e=(i=r.getCurrentInstance())==null?void 0:i.type;let t=(e==null?void 0:e.name)??(e==null?void 0:e.__name);if(!t){const n=e==null?void 0:e.__file;n&&(t=h.path.basename(n,".vue"))}return t}function O(){const e=r.inject(P);let t,i;return e==null&&h.throwError(`<${B()||"unknown"}>必须作为<tg-map>的子代组件`),{mapRef:e,get map(){return e.value??h.throwError("map尚未初始化")},[v](n){r.onMounted(n),t&&h.throwError(`${v}只能调用一次`),t=n},[g](n){r.onBeforeUnmount(n),i&&h.throwError(`${g}只能调用一次`),i=n},recreate(){i==null||i(),t==null||t()}}}const J=r.defineComponent({name:"tg-street-view-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createStreetViewControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Y=r.defineComponent({name:"tg-zoom-control",props:{position:c(s.ControlPosition,s.ControlPosition.RIGHT_BOTTOM)},setup(e){let t=h.lateinit();const{map:i,onCreate:n,onDestroy:a}=O();return n(()=>{t=i.createZoomControl(s.unwrapStringEnumValue(e)),i.addControl(t)}),a(()=>{i.removeControl(t)}),r.watch(()=>e.position,l=>{t.setPosition(s.unwrapStringEnumValue(l,s.ControlPosition))}),$}}),Q=r.defineComponent({name:"tg-heatmap",props:{maxIntensity:o(Number),gradient:o(Object),opacity:o(Number),radius:o(Number),data:m(Array)},setup(e){const{map:t,onCreate:i,onDestroy:n}=O();let a=h.lateinit();return i(()=>{a=t.createHeatmap(e)}),n(()=>{a.remove()}),r.watch(()=>e.data,l=>a.setData(l)),r.watch([()=>e.maxIntensity,()=>e.gradient,()=>e.opacity,()=>e.radius],()=>a.setOptions(e)),$}}),ee=r.defineComponent({name:"tg-marker-clusterer",mixins:[d],props:{gridSize:o(Number),maxZoom:o(Number),minClusterSize:o(Number),averageCenter:o(Boolean),styles:o(Array),stylesIndexCalculator:o(Function),zIndex:o(Number)},setup(){return{clusterer:h.lateinit(),markers:h.typed([])}},watch:{gridSize(){this.recreate()},maxZoom(){this.recreate()},minClusterSize(){this.recreate()},averageCenter(){this.recreate()},styles:{handler(){this.recreate()},deep:!0},stylesIndexCalculator(){this.recreate()},zIndex(){this.recreate()}},onCreate(){this.clusterer=this.$map.createMarkerClusterer(this)},onDestroy(){this.clusterer.clearMarkers()},methods:{isInitiated(){return this.clusterer!=null},onAddMarker(e){this.markers.push(e),this.isInitiated()&&this.clusterer.addMarker(e)},onRemoveMarker(e){this.isInitiated()&&this.clusterer.removeMarker(e),h.Arrays.remove(this.markers,e)}}});function te(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",{class:r.normalizeClass(e.$options.name)},[r.renderSlot(e.$slots,"default")],2)}const L=y(ee,[["render",te]]),oe=r.defineComponent({name:"tg-traffic-layer",mixins:[d],setup(){return{layer:h.lateinit()}},watch:{},onCreate(){this.layer=new s.TrafficLayer,this.$map.addLayer(this.layer)},onDestroy(){this.$map.removeLayer(this.layer)}}),re=r.defineComponent({name:"tg-circle",mixins:[d],inheritAttrs:!1,props:{center:m(s.LatLng),radius:m(Number),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:center":p(),"onUpdate:radius":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedRadius:void 0,emittedCenter:void 0}},watch:{center(e){if(this.emittedCenter!=null){const t=this.emittedCenter;if(this.emittedCenter=void 0,t===r.toRaw(e))return}this.overlay.setCenter(e)},radius(e){if(this.emittedRadius!=null){const t=this.emittedRadius;if(this.emittedRadius=void 0,t===e)return}this.overlay.setRadius(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createCircle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:center"]&&this.overlay.addEventListener("center-changed",()=>{this.$emit("update:center",this.emittedCenter=this.overlay.getCenter())}),this.attrs.listenerProps["update:radius"]&&this.overlay.addEventListener("radius-changed",()=>{this.$emit("update:radius",this.emittedRadius=this.overlay.getRadius())})},onDestroy(){this.$map.removeOverlay(this.overlay)}});class ie extends s.ElementOverlay{constructor(t,i,n,a){super(t,i),this.content=n,this.position=a}onCreate(){return this.content}onDraw(t){const i=t.fromLatLngToOverlayPoint(this.position);this.content.style.left=i.x+"px",this.content.style.top=i.y+"px"}setPosition(t){this.position=t,this.draw()}}const se=r.defineComponent({name:"tg-element-overlay",mixins:[d],props:{mapPane:c(s.MapPane,s.MapPane.overlayMouseTarget),position:m(s.LatLng)},setup(){return{overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el}},onCreate(){this.overlay=new ie(this.$map,s.unwrapStringEnumValue(this),this.content(),this.position),this.$map.addElementOverlay(this.overlay)},onDestroy(){this.$map.removeElementOverlay(this.overlay)}});function ne(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.$attrs),[r.renderSlot(e.$slots,"default")],16)}const ae=y(se,[["render",ne]]),le={position:m(s.LatLng),title:o(String),label:o(Object),icon:o(Object),clickable:o(Boolean),draggable:o(Boolean),crossOnDrag:o(Boolean),cursor:o(String),zIndex:o(Number),visible:o(Boolean),normalizePositionForBaidu:o(Boolean),autoAddToClusterer:o(Boolean,!0),"onUpdate:position":p()},he=r.defineComponent({name:"tg-marker",mixins:[d],inheritAttrs:!1,props:le,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),marker:h.lateinit(),labelOverlay:h.typed(),info:h.typed(),emittedPosition:void 0,autoAddToClustererWhenCreate:e.autoAddToClusterer}},watch:{position(e){if(this.emittedPosition!=null){const t=this.emittedPosition;if(this.emittedPosition=void 0,t===r.toRaw(e))return}this.marker.setPosition(e)},title(e){this.marker.setTitle(e)},label(e,t){h.deepEqual(e,t)||(e?this.marker.setLabel(e):this.recreate())},icon(e){e?this.marker.setIcon(e):this.recreate()},clickable(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setClickable(e)},draggable(e){this.marker.setDraggable(e)},crossOnDrag(){this.recreate()},cursor(){this.recreate()},zIndex(e){this.marker instanceof s.BaiduMarker?this.recreate():this.marker.setZIndex(e)},visible(e){this.marker.setVisible(e)},normalizePositionForBaidu(){this.recreate()},autoAddToClusterer(){this.recreate()}},onCreate(){this.marker=this.$map.createMarker(this),this.labelOverlay&&this.marker.attachLabelOverlay(this.labelOverlay.overlay),this.$clusterer()&&this.autoAddToClusterer?this.$clusterer().onAddMarker(this.marker):this.$map.addOverlay(this.marker),this.autoAddToClustererWhenCreate=this.autoAddToClusterer,this.info&&this.info.show&&this.info.overlay.open(this.marker),s.bindEvents(this.attrs.listeners,this.marker),this.attrs.listenerProps["update:position"]&&this.marker.addEventListener("dragend",e=>{this.$emit("update:position",this.emittedPosition=e.position)})},onDestroy(){this.$clusterer()&&this.autoAddToClustererWhenCreate?this.$clusterer().onRemoveMarker(this.marker):this.$map.removeOverlay(this.marker)},methods:{$clusterer(){return w(this.$parent,L)},onAddLabel(e){this.labelOverlay=e,this.marker&&this.marker.attachLabelOverlay(e.overlay)},onRemoveLabel(e){this.marker.attachLabelOverlay(void 0),this.labelOverlay=void 0},onAddInfo(e){this.info=e,this.marker&&e.show&&e.overlay.open(this.marker)},onRemoveInfo(e){e.overlay.close(),this.info=void 0},onInfoShowChanged(e,t){t?e.overlay.open(this.marker):e.overlay.close()}}});function pe(e,t,i,n,a,l){return r.renderSlot(e.$slots,"default")}const S=y(he,[["render",pe]]),de=r.defineComponent({name:"tg-info-box",mixins:[d],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),offset:o(Object),maxWidth:o(Number),borderClass:o(String),zIndex:o(Number),"onUpdate:show":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},offset(){this.recreate()},maxWidth(e){this.overlay.setMaxWidth(e)},borderClass(){this.recreate()},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createInfoBox(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.attrs.listenerProps["update:show"]&&this.overlay.addEventListener("closeclick",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()},methods:{getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,maxWidth:this.maxWidth,borderClass:this.borderClass}},content(){return this.$el},$marker(){return T(S,this.$parent,_)},open(e){this.overlay.open(e)},close(){this.overlay.close()}}});function me(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const ce=y(de,[["render",me]]),ue=r.defineComponent({name:"tg-info-window",mixins:[d],inheritAttrs:!1,props:{show:m(Boolean),position:o(s.LatLng),maxWidth:o(Number),offset:o(Object),disableAutoPan:o(Boolean),"onUpdate:show":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit()}},watch:{show(e){this.$marker()?this.$marker().onInfoShowChanged(this,e):e?this.overlay.open():this.overlay.close()},position(e){this.overlay.setPosition(e)},maxWidth(){this.recreate()},offset(){this.recreate()},disableAutoPan(){this.recreate()}},methods:{content(){return this.$el},$marker(){return T(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,maxWidth:this.maxWidth,offset:this.offset,disableAutoPan:this.disableAutoPan}}},onCreate(){this.overlay=this.$map.createInfoWindow(this.getOptions()),this.$marker()?this.$marker().onAddInfo(this):this.show&&this.overlay.open(),this.overlay.addEventListener("open",()=>{this.$emit("update:show",!0)}),this.overlay.addEventListener("close",()=>{this.$emit("update:show",!1)}),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveInfo(this):this.overlay.close()}});function ye(e,t,i,n,a,l){return r.withDirectives((r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)),[[r.vShow,e.show]])}const fe=y(ue,[["render",ye]]),ve=r.defineComponent({name:"tg-label",mixins:[d],inheritAttrs:!1,props:{position:o(s.LatLng),offset:o(Object),zIndex:o(Number),mapPane:c(s.MapPane)},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t),overlay:h.lateinit()}},watch:{position(e){this.overlay.setPosition(e)},offset(e){this.overlay.setOffset(e)},zIndex(e){this.overlay.setZIndex(e)},visible(e){this.overlay.setVisible(e)},mapPane(){this.recreate()}},methods:{content(){return this.$el},marker(){var e;return(e=this.$marker())==null?void 0:e.marker},$marker(){return T(S,this.$parent,_)},getOptions(){return{content:this.content(),position:this.position,offset:this.offset,zIndex:this.zIndex,mapPane:s.unwrapStringEnumValue(this.mapPane,s.MapPane)}}},onCreate(){this.overlay=this.$map.createLabel(this.getOptions()),this.$marker()?this.$marker().onAddLabel(this):this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay)},onDestroy(){this.$marker()?this.$marker().onRemoveLabel(this):this.$map.removeOverlay(this.overlay)}});function ge(e,t,i,n,a,l){return r.openBlock(),r.createElementBlock("div",r.mergeProps({class:e.$options.name},e.attrs.binds),[r.renderSlot(e.$slots,"default")],16)}const be=y(ve,[["render",ge]]),Ce={paths:m(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:paths":p()},$e=r.defineComponent({name:"tg-polygon",mixins:[d],inheritAttrs:!1,props:Ce,emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPaths:void 0}},watch:{paths:{handler(e){if(this.emittedPaths!=null){const t=this.emittedPaths;if(this.emittedPaths=void 0,t.length===e.length&&t.every((i,n)=>i===r.toRaw(e[n])))return}this.overlay.setPaths(e)},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolygon(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:paths"]&&this.overlay.addEventListener("paths-edited",()=>{this.$emit("update:paths",this.emittedPaths=this.overlay.getPaths())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),_e=r.defineComponent({name:"tg-polyline",mixins:[d],inheritAttrs:!1,props:{path:m(Array),icons:o(Array),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),"onUpdate:path":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedPath:void 0}},watch:{path:{handler(e){if(this.emittedPath!=null){const t=this.emittedPath;if(this.emittedPath=void 0,t===r.toRaw(e))return}this.overlay.setPath(e)},deep:!0},icons:{handler(){this.recreate()},deep:!0},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createPolyline(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:path"]&&this.overlay.addEventListener("path-edited",()=>{this.$emit("update:path",this.emittedPath=this.overlay.getPath())})},onDestroy(){this.overlay.remove()}}),ke=r.defineComponent({name:"tg-rectangle",mixins:[d],inheritAttrs:!1,props:{bounds:m(Object),clickable:o(Boolean),editable:o(Boolean),strokeColor:o(String),strokeOpacity:o(Number),strokeWeight:o(Number),visible:o(Boolean),zIndex:o(Number),fillColor:o(String),fillOpacity:o(Number),"onUpdate:bounds":p()},emits:void 0,setup(e,{attrs:t}){return{attrs:u(t,e),overlay:h.lateinit(),emittedBounds:void 0}},watch:{bounds(e){if(this.emittedBounds!=null){const t=this.emittedBounds;if(this.emittedBounds=void 0,t.equals(e))return}this.overlay.setBounds(e)},clickable(){this.recreate()},editable(e){this.overlay.setEditable(e)},strokeColor(e){this.overlay.setStrokeColor(e)},strokeOpacity(e){this.overlay.setStrokeOpacity(e)},strokeWeight(e){this.overlay.setStrokeWeight(e)},fillColor(e){this.overlay.setFillColor(e)},fillOpacity(e){this.overlay.setFillOpacity(e)},visible(e){this.overlay.setVisible(e)},zIndex(e){this.overlay.setZIndex(e)}},onCreate(){this.overlay=this.$map.createRectangle(this),this.$map.addOverlay(this.overlay),s.bindEvents(this.attrs.listeners,this.overlay),this.attrs.listenerProps["update:bounds"]&&this.overlay.addEventListener("bounds-changed",()=>{this.$emit("update:bounds",this.emittedBounds=this.overlay.getBounds())})},onDestroy(){this.$map.removeOverlay(this.overlay)}}),Te=["beforeUpdate","updated"],Pe={install(e,t={}){if(t.enable!==!1){const i=r.defineComponent({beforeCreate(){const n=B()??"",l=(t.nameRegex||/^[A-Z]/).test(n)?f=>{t.hookNames?t.hookNames.includes(f)&&console.debug("[lifecycle]",n,f):Te.includes(f)||console.debug("[lifecycle]",n,f)}:h.noop;l("beforeCreate"),this.__life_impl=l},created(){this.__life("created")},beforeMount(){this.__life("beforeMount")},mounted(){this.__life("mounted")},beforeUpdate(){this.__life("beforeUpdate")},updated(){this.__life("updated")},beforeUnmount(){this.__life("beforeUnmount")},unmounted(){this.__life("unmounted")},methods:{__life(n){this.__life_impl(n)}},onCreate(){this.__life("onCreate")},onDestroy(){this.__life("onDestroy")}});e.mixin(i)}}},Oe={install(e,t){s.setTgMapConfig(t);const i=e.config.optionMergeStrategies;i[v]=i[g]=(n,a)=>n?[...new Set([].concat(n,a))]:Array.isArray(a)?a:[a]}};exports.LifecycleLogPlugin=Pe;exports.MIXIN_HOOK_CREATE=v;exports.MIXIN_HOOK_DESTROY=g;exports.MIXIN_MAP_NAME=P;exports.MapMixin=d;exports.TgCircle=re;exports.TgCustomControl=G;exports.TgElementOverlay=ae;exports.TgHeatmap=Q;exports.TgInfoBox=ce;exports.TgInfoWindow=fe;exports.TgLabel=be;exports.TgMap=_;exports.TgMapTypeControl=X;exports.TgMapWidget=H;exports.TgMarker=S;exports.TgMarkerClusterer=L;exports.TgPolygon=$e;exports.TgPolyline=_e;exports.TgRectangle=ke;exports.TgScaleControl=K;exports.TgStreetViewControl=J;exports.TgTrafficLayer=oe;exports.TgZoomControl=Y;exports.callHook=C;exports.computedSaveOnThis=N;exports.createEmptyVNode=$;exports.createPropertyObject=E;exports.createPropertyObjectTyped=x;exports.default=Oe;exports.eventProp=p;exports.extractVNodeFromSlotsByComponent=D;exports.findAncestorComponentByType=T;exports.findByComponentType=z;exports.isComponentByType=k;exports.optionalProp=o;exports.requiredProp=m;exports.safeAsComponent=w;exports.splitAttrs=M;exports.stringEnumProp=c;exports.stringUnionPropFromValues=I;exports.useEventLogMethods=V;exports.useSplittedAttrs=u;exports.useTgMapInner=O;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
3
2
  //# sourceMappingURL=tg-map.cjs.map