@spuermomonga/vue3-bmapgl 0.0.14 → 0.0.16

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/dist/index.js CHANGED
@@ -64,8 +64,8 @@
64
64
  return points;
65
65
  }
66
66
  function setupMapEvents(map, props) {
67
- const cleanup = Object.keys(props).filter((key) => key.startsWith("on") && typeof props[key] === "function").map((propName) => {
68
- const eventName = propName.slice(2).toLowerCase();
67
+ const cleanup = Object.keys(props).filter((key) => key.startsWith("on") && !key.startsWith("onUpdate") && typeof props[key] === "function").map((propName) => {
68
+ const eventName = propName.slice(2).toLocaleLowerCase();
69
69
  const handler = props[propName];
70
70
  const wrapper = (e) => {
71
71
  e.preventDefault?.() || e.domEvent?.preventDefault?.();
@@ -421,9 +421,9 @@
421
421
  });
422
422
  return () => vue.createVNode("div", {
423
423
  "style": "display: none"
424
- }, [vue.withDirectives(vue.createVNode("div", {
424
+ }, [vue.createVNode("div", vue.mergeProps({
425
425
  "ref": controlContentRef
426
- }, [slots.default?.()]), [[vue.resolveDirective("bind"), attrs]])]);
426
+ }, attrs), [slots.default?.()])]);
427
427
  }
428
428
  });
429
429
 
@@ -864,7 +864,8 @@
864
864
  type: Boolean,
865
865
  default: true
866
866
  },
867
- "onUpdate:show": Function
867
+ "onUpdate:show": Function,
868
+ "title": String
868
869
  };
869
870
 
870
871
  var infoWindow = /* @__PURE__ */ vue.defineComponent({
@@ -881,25 +882,12 @@
881
882
  get: () => props.show,
882
883
  set: (value) => props["onUpdate:show"]?.(value)
883
884
  });
884
- const openInfoWindow = () => {
885
- const {
886
- position
887
- } = props;
888
- if (!position || !infoWindow) return;
889
- const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
890
- mapInstance().openInfoWindow(infoWindow, point);
891
- visible.value = true;
892
- };
893
- const closeInfoWindow = () => {
894
- if (!infoWindow) return;
895
- infoWindow?.hide?.();
896
- visible.value = false;
897
- };
898
- const setPosition = (position) => {
899
- openInfoWindow();
900
- const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
901
- infoWindow?.setPosition(point);
902
- if (!visible.value) closeInfoWindow();
885
+ const removeInfoWindow = () => {
886
+ if (infoWindow) {
887
+ infoWindow.hide?.();
888
+ mapInstance().removeOverlay(infoWindow);
889
+ infoWindow = null;
890
+ }
903
891
  };
904
892
  const redraw = () => {
905
893
  infoWindow?.redraw();
@@ -909,35 +897,21 @@
909
897
  };
910
898
  });
911
899
  };
912
- const setContent = (content) => {
913
- infoWindow?.setContent(content);
914
- };
915
- const setWidth = (width) => {
916
- infoWindow?.setWidth(width);
917
- };
918
- const setHeight = (height) => {
919
- infoWindow?.setHeight(height);
920
- };
921
- const startWatchProps = () => {
922
- vue.watch(() => props.position, setPosition, {
923
- deep: true
924
- });
925
- vue.watch(() => props.width, setWidth);
926
- vue.watch(() => props.height, setHeight);
927
- vue.watch(() => props.show, () => props.show ? openInfoWindow() : closeInfoWindow());
928
- };
929
- vue.onMounted(() => {
900
+ const createInfoWindow = () => {
930
901
  const {
931
902
  width,
932
903
  height,
904
+ title,
933
905
  maxWidth,
934
906
  offset,
935
907
  enableAutoPan,
908
+ position,
936
909
  enableCloseOnClick
937
910
  } = props;
938
911
  infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value, {
939
912
  width,
940
913
  height,
914
+ title,
941
915
  maxWidth,
942
916
  offset: new BMapGL.Size(offset.x, offset.y),
943
917
  enableAutoPan,
@@ -950,37 +924,79 @@
950
924
  if (!props.show) visible.value = true;
951
925
  });
952
926
  mapInstance().addOverlay(infoWindow);
927
+ const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
928
+ mapInstance()?.openInfoWindow(infoWindow, point);
953
929
  redraw();
930
+ };
931
+ const setPosition = (position) => {
932
+ const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
933
+ infoWindow?.setPosition(point);
934
+ };
935
+ const setContent = (content) => {
936
+ infoWindow?.setContent(content);
937
+ };
938
+ const setWidth = (width) => {
939
+ infoWindow?.setWidth(width);
940
+ };
941
+ const setHeight = (height) => {
942
+ infoWindow?.setHeight(height);
943
+ };
944
+ const setTitle = (title) => {
945
+ infoWindow?.setTitle(title);
946
+ };
947
+ const bindObserver = () => {
948
+ const MutationObserver = window.MutationObserver;
949
+ if (!MutationObserver) {
950
+ return;
951
+ }
952
+ new MutationObserver(() => {
953
+ infoWindow?.redraw();
954
+ }).observe(infoWindowContentRef.value, {
955
+ attributes: true,
956
+ childList: true,
957
+ characterData: true,
958
+ subtree: true
959
+ });
960
+ };
961
+ const startWatchProps = () => {
962
+ vue.watch(() => props.position, setPosition, {
963
+ deep: true
964
+ });
965
+ vue.watch(() => props.width, setWidth);
966
+ vue.watch(() => props.height, setHeight);
967
+ vue.watch(() => props.title, setTitle);
968
+ vue.watch(() => props.show, () => props.show ? createInfoWindow() : removeInfoWindow());
969
+ };
970
+ const init = () => {
954
971
  if (props.show) {
955
- vue.nextTick(() => {
956
- openInfoWindow();
957
- vue.nextTick(() => {
958
- if (infoWindow && "_visible" in infoWindow) {
959
- !infoWindow._visible && (visible.value = false);
960
- } else {
961
- !infoWindow?.isOpen() && (visible.value = false);
962
- }
963
- });
964
- });
972
+ createInfoWindow();
965
973
  }
974
+ bindObserver();
966
975
  startWatchProps();
976
+ };
977
+ vue.onMounted(() => {
978
+ if (!infoWindowContentRef.value) {
979
+ vue.nextTick(() => init());
980
+ } else {
981
+ init();
982
+ }
967
983
  });
968
984
  vue.onUpdated(() => {
969
985
  if (infoWindow && infoWindow.isOpen()) {
970
986
  setContent(infoWindowContentRef.value ?? "");
987
+ redraw();
971
988
  }
972
989
  });
973
990
  vue.onUnmounted(() => {
974
991
  if (infoWindow) {
975
- mapInstance().removeOverlay(infoWindow);
976
- redraw();
992
+ removeInfoWindow();
977
993
  }
978
994
  });
979
995
  return () => vue.createVNode("div", {
980
996
  "style": "display: none"
981
- }, [vue.withDirectives(vue.createVNode("div", {
997
+ }, [vue.createVNode("div", vue.mergeProps({
982
998
  "ref": infoWindowContentRef
983
- }, [slots.default?.()]), [[vue.resolveDirective("bind"), attrs]])]);
999
+ }, attrs), [slots.default?.()])]);
984
1000
  }
985
1001
  });
986
1002
 
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Vue3Bmapgl={},e.vue)}(this,function(e,t){"use strict";let o=!1;function n(e){return e.some(e=>!t.isVNode(e)||e.type!==Comment&&!(e.type===t.Fragment&&!n(e.children)))?e:null}function a(e,t){return t(e&&n(e())||null)}const l={ak:String,apiUrl:String,plugins:Array,mapConfig:Object},i=Symbol("b-config-provider");var r=t.defineComponent({name:"ConfigProvider",props:l,setup(e,{slots:n}){const a=t.ref("notload"),l=e.apiUrl?"_initBMap_":`_initBMap_${e.ak}`,r=e.apiUrl?`${e.apiUrl.replace(/&$/,"")}&callback=${l}`:`//api.map.baidu.com/api?type=webgl&v=1.0&ak=${e.ak}&callback=${l}`;a.value="pending",function(e){const{key:t,src:n,addCalToWindow:a=!0,timeout:l=1e4}=e;return o&&window.BMapGL?Promise.resolve():new Promise((e,i)=>{const r=document.createElement("script");r.src=n,r.type="text/javascript",r.defer=!0;const s=()=>{r.onload=null,r.onerror=null,document.body.contains(r)&&document.body.removeChild(r)},d=setTimeout(()=>{s(),i(new Error(`Script load timeout: ${n}`))},l),p=()=>{clearTimeout(d),o=!0,s(),e()};a?window[t]=p:r.onload=p,r.onerror=()=>{clearTimeout(d),s(),i(new Error(`Failed to load script: ${n}`))},document.body.appendChild(r)})}({key:l,src:r}).then(()=>{a.value="loaded"}).catch(()=>{a.value="failed"});const s=t.computed(()=>{const{mapConfig:t}=e;return t??{}});return t.provide(i,{mergedStatusRef:a,mergedMapSetRef:s}),()=>t.renderSlot(n,"default")}});const s=Symbol("b-map"),d={maxZoom:Number,minZoom:Number,heading:Number,center:Object,zoom:Number,class:String,contentClass:String,enableScrollWheelZoom:{type:Boolean,default:void 0},enableDragging:{type:Boolean,default:void 0},tilt:Number,enableTilt:{type:Boolean,default:void 0},mapType:String,enableAutoResize:{type:Boolean,default:void 0},enableTiltGestures:{type:Boolean,default:void 0},enableRotate:{type:Boolean,default:void 0},enableRotateGestures:{type:Boolean,default:void 0},displayOptions:Object,onInitd:Function,onClick:Function,onDblclick:Function,onMousemove:Function};var p="map-module_b-map__29r3m",u="map-module_b-map-content__sMaJG",c="map-module_b-map-loading__qc4a8",m="map-module_b-map-failed__-w-tX";!function(e,t){void 0===t&&(t={});var o=t.insertAt;if("undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===o&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".map-module_b-map-content__sMaJG,.map-module_b-map__29r3m{height:100%;overflow:hidden;position:relative;width:100%}.map-module_b-map-failed__-w-tX,.map-module_b-map-loading__qc4a8{color:#999;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}");var y=t.defineComponent({name:"Map",props:d,slots:Object,setup(e,{slots:o}){const{mergedMapSetRef:n,mergedStatusRef:l}=function(e={}){const o=t.inject(i,null);return{mergedStatusRef:o?.mergedStatusRef,mergedMapSetRef:t.computed(()=>{const{zoom:t,center:n,heading:a,minZoom:l,maxZoom:i,enableScrollWheelZoom:r,enableDragging:s,tilt:d,enableTilt:p,mapType:u,enableAutoResize:c,enableTiltGestures:m,enableRotate:y,enableRotateGestures:f,displayOptions:b}=e;return{zoom:t??o?.mergedMapSetRef.value?.zoom??14,center:n??o?.mergedMapSetRef.value?.center??[116.403901,39.915185],heading:a??o?.mergedMapSetRef.value?.heading??0,minZoom:l??o?.mergedMapSetRef.value?.minZoom??0,maxZoom:i??o?.mergedMapSetRef.value?.maxZoom??21,enableScrollWheelZoom:r??o?.mergedMapSetRef.value?.enableScrollWheelZoom??!1,enableDragging:s??o?.mergedMapSetRef.value?.enableDragging??!0,tilt:d??o?.mergedMapSetRef.value?.tilt??0,enableTilt:p??o?.mergedMapSetRef.value?.enableTilt??!1,mapType:u??o?.mergedMapSetRef.value?.mapType??"BMAP_NORMAL_MAP",enableAutoResize:c??o?.mergedMapSetRef.value?.enableAutoResize??!0,enableTiltGestures:m??o?.mergedMapSetRef.value?.enableTiltGestures??!1,enableRotate:y??o?.mergedMapSetRef.value?.enableRotate??!1,enableRotateGestures:f??o?.mergedMapSetRef.value?.enableRotateGestures??!1,displayOptions:b??o?.mergedMapSetRef.value?.displayOptions}})}}(e),r=t.ref();let d,y=null;const f=t.ref(!1);t.provide(s,{mapInstance:()=>y});const b=e=>{"string"==typeof e?y?.centerAndZoom(e,n.value.zoom):Array.isArray(e)?y?.centerAndZoom(new BMapGL.Point(e[0],e[1]),n.value.zoom):y?.centerAndZoom(e,n.value.zoom)},g=e=>{e?y.enableScrollWheelZoom():y.disableScrollWheelZoom()},v=e=>{y?.setDisplayOptions(e||{})},h=e=>{y?.setTilt(e??0)},T=e=>{y?.setHeading(e??0)},w=e=>{e?y.enableDragging():y.disableDragging()},B=e=>{void 0!==window[e]&&y.setMapType(window[e])},S=()=>{const{maxZoom:o,minZoom:a,enableTilt:l,mapType:i,enableAutoResize:s,enableTiltGestures:p,enableRotate:u,enableRotateGestures:c,displayOptions:m}=n.value;y=new BMapGL.Map(r.value,{maxZoom:o,minZoom:a,enableTilt:l,mapType:window[i],enableAutoResize:s,enableTiltGestures:p,enableRotate:u,enableRotateGestures:c,displayOptions:m});const{onInitd:S}=e;(()=>{const{center:e,heading:t,enableScrollWheelZoom:o,tilt:a,enableDragging:l}=n.value;T(t),b(e),g(o),h(a),w(l)})(),t.watch(()=>n.value.center,b,{deep:!0}),t.watch(()=>n.value.enableScrollWheelZoom,g),t.watch(()=>n.value.displayOptions,v),t.watch(()=>n.value.tilt,h),t.watch(()=>n.value.heading,T),t.watch(()=>n.value.enableDragging,w),t.watch(()=>n.value.mapType,B),S?.({map:y}),d=function(e,t){const o=Object.keys(t).filter(e=>e.startsWith("on")&&"function"==typeof t[e]).map(o=>{const n=o.slice(2).toLowerCase(),a=t[o],l=e=>{e.preventDefault?.()||e.domEvent?.preventDefault?.(),e.stopPropagation?.()||e.domEvent?.stopPropagation?.(),a(e)};return e.addEventListener(n,l),()=>e.removeEventListener(n,l)});return()=>o.forEach(e=>e())}(y,e),f.value=!0};return t.onMounted(()=>{t.watchEffect(()=>{"loaded"!==l?.value||f.value||t.nextTick(S)})}),t.onUnmounted(()=>{if(y)try{d?.(),y?.destroy()}catch(e){console.error(`[Vue3 BMapGL]: ${e.message}`)}}),()=>t.createVNode("div",{class:[[p],e.class]},[t.createVNode("div",{ref:r,class:[u,e.contentClass]},["pending"===l?.value&&a(o.loading,()=>t.createVNode("div",{class:[c]},[t.createTextVNode("map loading...")])),"failed"===l?.value&&a(o.failed,()=>t.createVNode("div",{class:[m]},[t.createTextVNode("map failed")]))]),f.value&&o.default?.()])}});function f(){return t.inject(s,null).mapInstance}const b={anchor:{type:String,default:"BMAP_ANCHOR_TOP_RIGHT"},offset:{type:Object,default:{x:0,y:0}},visible:{type:Boolean,default:!0}};var g=t.defineComponent({name:"CustomControl",props:b,setup(e,{attrs:o,slots:n}){const a=f(),l=t.ref();let i=null;return t.onMounted(()=>{const{offset:o,anchor:n,visible:r}=e;i=new BMapGL.Control,i.defaultAnchor=window[n],i.defaultOffset=new BMapGL.Size(o.x,o.y),i.initialize=e=>e.getContainer().appendChild(l.value),r&&a().addControl(i),t.watch(()=>e.visible,e=>{i&&a()[e?"addControl":"removeControl"](i)})}),t.onUnmounted(()=>{i&&a().removeControl(i)}),()=>t.createVNode("div",{style:"display: none"},[t.withDirectives(t.createVNode("div",{ref:l},[n.default?.()]),[[t.resolveDirective("bind"),o]])])}});const v={visible:{type:Boolean,default:!0},transform:Object,png8:Boolean,height:Number,retry:{type:Boolean,default:void 0},retryTime:Number,transparentPng:{type:Boolean,default:!0},dataType:Number,spanLevel:{type:Number,default:0},tileTypeName:String,cacheSize:{type:Number,default:256},customLayer:{type:Boolean,default:void 0},clipTile:{type:Boolean,default:void 0},isTop:Boolean,opacity:{type:Number,default:1},isLowText:Boolean,boundary:Array,showRegion:String,useThumbData:Boolean,zIndex:Number,zIndexTop:Boolean,tileUrlTemplate:String,getTileUrl:Function,getTilesUrl:Function};var h=t.defineComponent({name:"TileLayer",props:v,setup(e){const o=f();let n,a=[],l=null;const i=e=>{l?.setZIndex(e)},r=e=>{e?l?.addBoundary(e):l?.clearBoundary()},s=e=>{l?.setTop(e)},d=(e,t)=>{const o=t=>{t.tileInfo=e.tileInfo,e.cb(t,e.key)},n=()=>e.cb(null,e.key);if("string"==typeof t||t instanceof HTMLCanvasElement){const e=new Image;e.crossOrigin="anonymous",e.onload=()=>o(e),e.onerror=n,e.src="string"==typeof t?t:t.toDataURL()}else t instanceof HTMLImageElement?o(t):n()},p=t=>{const o=a.find(e=>e.key===t.key);o?(o.cb(null,t.key),o.cb=t.cb):a.push(t),n&&clearTimeout(n),n=setTimeout(()=>(()=>{if(0===a.length)return;const{getTilesUrl:t}=e,o=[...a];a=[];const n=o.map(({key:e,tile:t,boundRange:o})=>({key:e,tile:t,boundRange:o}));t(n,e=>{for(const t of e){const e=o.findIndex(e=>e.key===t.key);if(-1!==e){const n=o[e];d(n,t.img),o.splice(e,1)}}o.forEach(e=>{e.cb(null,e.key)})})})(),50)},u=()=>{const{getTileUrl:t,getTilesUrl:n}=e;l&&(t?(o().addTileLayer(l),l.loadRasterTileData=function(e,o){const n=this.getTileKey(e),a=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});t({x:e.col,y:e.row,z:e.zoom},a,t=>{d({cb:o,boundRange:a,key:n,tileInfo:e},t)})}):n?(o().addTileLayer(l),l.loadRasterTileData=function(e,t){const o=this.getTileKey(e),n={x:e.col,y:e.row,z:e.zoom},a=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});p({key:o,tile:n,boundRange:a,cb:t,tileInfo:e})}):o().addTileLayer(l))};return(()=>{const{visible:n,transform:a,png8:d,height:p,retry:c,retryTime:m,transparentPng:y,dataType:f,spanLevel:b,tileTypeName:g,cacheSize:v,customLayer:h,clipTile:T,isTop:w,opacity:B,isLowText:S,showRegion:C,useThumbData:x,tileUrlTemplate:R}=e;l=new BMapGL.TileLayer({transform:a,png8:d,height:p,retry:c,retryTime:m,transparentPng:y,dataType:f,spanLevel:b,tileTypeName:g,cacheSize:v,customLayer:h,clipTile:T,isTop:w,opacity:B,isLowText:S,showRegion:C,useThumbData:x,tileUrlTemplate:R}),(()=>{const{zIndex:t,boundary:o}=e;r(o),i(t)})(),n&&u(),t.watch(()=>e.zIndex,i),t.watch(()=>e.boundary,r),t.watch(()=>e.zIndexTop,s),t.watch(()=>e.visible,e=>e?u():o().removeTileLayer(l))})(),t.onUnmounted(()=>{l&&o().removeTileLayer(l)}),()=>t.createVNode(t.Fragment,null,null)}});const T={visible:{type:Boolean,default:!0},getTile:{type:Function},useThumbData:{type:Boolean,default:!1},xTemplate:{type:Function},yTemplate:{type:Function},zTemplate:{type:Function},bTemplate:{type:Function},minZoom:{type:Number,default:3},maxZoom:{type:Number,default:23},extent:{type:Array},extentCRSIsWGS84:{type:Boolean,default:!1},boundary:{type:Array},zIndex:{type:Number,default:1},zIndexTop:{type:Boolean,default:!1},tms:{type:Boolean,default:!1}};var w=t.defineComponent({name:"XyzLayer",props:T,setup(e){const o=f();let n=null;const a=e=>{n?.setZIndex(e)},l=e=>{e&&!e.length?n?.addBoundary(e):n?.clearBoundary()},i=()=>{const{zIndex:t,zIndexTop:o}=e;a(t),(e=>{e&&n?.setZIndexTop()})(o)};return(()=>{const{visible:r,getTile:s,xTemplate:d,yTemplate:p,zTemplate:u,bTemplate:c,minZoom:m,maxZoom:y,extent:f,extentCRSIsWGS84:b,boundary:g,useThumbData:v,tms:h}=e;n=new BMapGL.XYZLayer({xTemplate:d,yTemplate:p,zTemplate:u,bTemplate:c,minZoom:m,maxZoom:y,extent:f,extentCRSIsWGS84:b,boundary:g,useThumbData:v,tms:h}),i(),r&&(s?(o().addTileLayer(n),n.loadRasterTileData=function(e,t){const o=this.getTileKey(e),n=n=>{n.tileInfo=e,t&&t(n,o)},a=()=>t&&t(null,o),l=BMapGL.XYZProjection.getTileRangeExtent([e.zoom,e.col,e.row]);s({x:e.col,y:e.row,z:e.zoom},l,e=>{if("string"==typeof e||e instanceof HTMLCanvasElement){const t=new Image;t.crossOrigin="anonymous",t.onload=()=>n(t),t.onerror=a,t.src="string"==typeof e?e:e.toDataURL()}else e instanceof HTMLImageElement?n(e):a()})}):o().addTileLayer(n)),t.watch(()=>e.zIndex,a),t.watch(()=>e.boundary,l)})(),t.onUnmounted(()=>{n&&o().removeTileLayer(n)}),()=>t.createVNode(t.Fragment,null,null)}});const B={show:Boolean,offset:{type:Object,default:{x:0,y:0}},width:{type:Number,default:0},height:{type:Number,default:0},maxWidth:Number,position:Object,enableAutoPan:{type:Boolean,default:!0},enableCloseOnClick:{type:Boolean,default:!0},"onUpdate:show":Function};var S=t.defineComponent({name:"InfoWindow",props:B,setup(e,{slots:o,attrs:n}){const a=f(),l=t.ref();let i=null;const r=t.computed({get:()=>e.show,set:t=>e["onUpdate:show"]?.(t)}),s=()=>{const{position:t}=e;if(!t||!i)return;const o=Array.isArray(t)?new BMapGL.Point(t[0],t[1]):t;a().openInfoWindow(i,o),r.value=!0},d=()=>{i&&(i?.hide?.(),r.value=!1)},p=e=>{s();const t=Array.isArray(e)?new BMapGL.Point(e[0],e[1]):e;i?.setPosition(t),r.value||d()},u=()=>{i?.redraw(),Array.prototype.forEach.call(l.value?.querySelectorAll("img")??[],e=>{e.onload=()=>{i?.redraw()}})},c=e=>{i?.setWidth(e)},m=e=>{i?.setHeight(e)};return t.onMounted(()=>{const{width:o,height:n,maxWidth:y,offset:f,enableAutoPan:b,enableCloseOnClick:g}=e;i=new BMapGL.InfoWindow(l.value,{width:o,height:n,maxWidth:y,offset:new BMapGL.Size(f.x,f.y),enableAutoPan:b,enableCloseOnClick:g}),i.addEventListener("close",()=>{e.show&&(r.value=!1)}),i.addEventListener("open",()=>{e.show||(r.value=!0)}),a().addOverlay(i),u(),e.show&&t.nextTick(()=>{s(),t.nextTick(()=>{i&&"_visible"in i?!i._visible&&(r.value=!1):!i?.isOpen()&&(r.value=!1)})}),t.watch(()=>e.position,p,{deep:!0}),t.watch(()=>e.width,c),t.watch(()=>e.height,m),t.watch(()=>e.show,()=>e.show?s():d())}),t.onUpdated(()=>{var e;i&&i.isOpen()&&(e=l.value??"",i?.setContent(e))}),t.onUnmounted(()=>{i&&(a().removeOverlay(i),u())}),()=>t.createVNode("div",{style:"display: none"},[t.withDirectives(t.createVNode("div",{ref:l},[o.default?.()]),[[t.resolveDirective("bind"),n]])])}});const C={visible:{type:Boolean,default:!0}};var x=t.defineComponent({name:"Marker",props:C,setup:()=>()=>t.createVNode(t.Fragment,null,null)});const R={visible:{type:Boolean,default:!0},points:{type:Array},strokeColor:{type:String,default:"#000"},fillColor:{type:String,default:"#fff"},strokeWeight:{type:Number,default:2},strokeOpacity:{type:Number,default:1},fillOpacity:{type:Number,default:.3},strokeStyle:{type:String,default:"solid"},enableMassClear:{type:Boolean,default:!0},enableEditing:{type:Boolean,default:!1},isBoundary:{type:Boolean},enableClicking:{type:Boolean,default:!0}};var M=t.defineComponent({name:"Polygon",props:R,setup:e=>{const o=f();let n=null;const a=e=>{n&&n.setStrokeColor(e)};return(()=>{const{points:l,visible:i,strokeColor:r,fillColor:s,strokeWeight:d,strokeOpacity:p,fillOpacity:u,strokeStyle:c,enableMassClear:m,enableEditing:y,enableClicking:f}=e;l&&l.length&&(n=new BMapGL.Polygon(function(e){if(!e||0===e.length)return[];const t=e[0];return Array.isArray(t)?e.map(([e,t])=>new BMapGL.Point(e,t)):e}(l),{strokeColor:r,fillColor:s,strokeWeight:d,strokeOpacity:p,fillOpacity:u,strokeStyle:c,enableMassClear:m,enableEditing:y,enableClicking:f}),i&&o().addOverlay(n),t.watch(()=>e.strokeColor,a),t.watch(()=>e.visible,e=>{o()[e?"addOverlay":"removeOverlay"](n)}))})(),t.onUnmounted(()=>{n&&o().removeOverlay(n)}),()=>t.createVNode(t.Fragment,null,null)}}),L=t.defineComponent({name:"Sector",setup:()=>()=>t.createVNode(t.Fragment,null,null)});e.BConfigProvider=r,e.BCustomControl=g,e.BInfoWindow=S,e.BMap=y,e.BMarker=x,e.BPolygon=M,e.BSector=L,e.BTileLayer=h,e.BXyzLayer=w,e.configProviderInjectionKey=i,e.configProviderProps=l,e.create=function({componentPrefix:e="B",components:t=[]}={}){const o=[];function n(t,o,n){t.component(e+o)||t.component(e+o,n)}return{componentPrefix:e,install:function(e){o.includes(e)||(o.push(e),t.forEach(t=>{const{name:o,alias:a}=t;n(e,o,t),a&&a.forEach(o=>{n(e,o,t)})}))}}},e.customControlProps=b,e.infoWindowProps=B,e.mapInjectionKey=s,e.mapProps=d,e.markerProps=C,e.polygonProps=R,e.tileLayerProps=v,e.xyzLayerProps=T});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Vue3Bmapgl={},e.vue)}(this,function(e,t){"use strict";let o=!1;function n(e){return e.some(e=>!t.isVNode(e)||e.type!==Comment&&!(e.type===t.Fragment&&!n(e.children)))?e:null}function a(e,t){return t(e&&n(e())||null)}const l={ak:String,apiUrl:String,plugins:Array,mapConfig:Object},r=Symbol("b-config-provider");var i=t.defineComponent({name:"ConfigProvider",props:l,setup(e,{slots:n}){const a=t.ref("notload"),l=e.apiUrl?"_initBMap_":`_initBMap_${e.ak}`,i=e.apiUrl?`${e.apiUrl.replace(/&$/,"")}&callback=${l}`:`//api.map.baidu.com/api?type=webgl&v=1.0&ak=${e.ak}&callback=${l}`;a.value="pending",function(e){const{key:t,src:n,addCalToWindow:a=!0,timeout:l=1e4}=e;return o&&window.BMapGL?Promise.resolve():new Promise((e,r)=>{const i=document.createElement("script");i.src=n,i.type="text/javascript",i.defer=!0;const s=()=>{i.onload=null,i.onerror=null,document.body.contains(i)&&document.body.removeChild(i)},d=setTimeout(()=>{s(),r(new Error(`Script load timeout: ${n}`))},l),p=()=>{clearTimeout(d),o=!0,s(),e()};a?window[t]=p:i.onload=p,i.onerror=()=>{clearTimeout(d),s(),r(new Error(`Failed to load script: ${n}`))},document.body.appendChild(i)})}({key:l,src:i}).then(()=>{a.value="loaded"}).catch(()=>{a.value="failed"});const s=t.computed(()=>{const{mapConfig:t}=e;return t??{}});return t.provide(r,{mergedStatusRef:a,mergedMapSetRef:s}),()=>t.renderSlot(n,"default")}});const s=Symbol("b-map"),d={maxZoom:Number,minZoom:Number,heading:Number,center:Object,zoom:Number,class:String,contentClass:String,enableScrollWheelZoom:{type:Boolean,default:void 0},enableDragging:{type:Boolean,default:void 0},tilt:Number,enableTilt:{type:Boolean,default:void 0},mapType:String,enableAutoResize:{type:Boolean,default:void 0},enableTiltGestures:{type:Boolean,default:void 0},enableRotate:{type:Boolean,default:void 0},enableRotateGestures:{type:Boolean,default:void 0},displayOptions:Object,onInitd:Function,onClick:Function,onDblclick:Function,onMousemove:Function};var p="map-module_b-map__29r3m",u="map-module_b-map-content__sMaJG",c="map-module_b-map-loading__qc4a8",m="map-module_b-map-failed__-w-tX";!function(e,t){void 0===t&&(t={});var o=t.insertAt;if("undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===o&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".map-module_b-map-content__sMaJG,.map-module_b-map__29r3m{height:100%;overflow:hidden;position:relative;width:100%}.map-module_b-map-failed__-w-tX,.map-module_b-map-loading__qc4a8{color:#999;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}");var y=t.defineComponent({name:"Map",props:d,slots:Object,setup(e,{slots:o}){const{mergedMapSetRef:n,mergedStatusRef:l}=function(e={}){const o=t.inject(r,null);return{mergedStatusRef:o?.mergedStatusRef,mergedMapSetRef:t.computed(()=>{const{zoom:t,center:n,heading:a,minZoom:l,maxZoom:r,enableScrollWheelZoom:i,enableDragging:s,tilt:d,enableTilt:p,mapType:u,enableAutoResize:c,enableTiltGestures:m,enableRotate:y,enableRotateGestures:f,displayOptions:g}=e;return{zoom:t??o?.mergedMapSetRef.value?.zoom??14,center:n??o?.mergedMapSetRef.value?.center??[116.403901,39.915185],heading:a??o?.mergedMapSetRef.value?.heading??0,minZoom:l??o?.mergedMapSetRef.value?.minZoom??0,maxZoom:r??o?.mergedMapSetRef.value?.maxZoom??21,enableScrollWheelZoom:i??o?.mergedMapSetRef.value?.enableScrollWheelZoom??!1,enableDragging:s??o?.mergedMapSetRef.value?.enableDragging??!0,tilt:d??o?.mergedMapSetRef.value?.tilt??0,enableTilt:p??o?.mergedMapSetRef.value?.enableTilt??!1,mapType:u??o?.mergedMapSetRef.value?.mapType??"BMAP_NORMAL_MAP",enableAutoResize:c??o?.mergedMapSetRef.value?.enableAutoResize??!0,enableTiltGestures:m??o?.mergedMapSetRef.value?.enableTiltGestures??!1,enableRotate:y??o?.mergedMapSetRef.value?.enableRotate??!1,enableRotateGestures:f??o?.mergedMapSetRef.value?.enableRotateGestures??!1,displayOptions:g??o?.mergedMapSetRef.value?.displayOptions}})}}(e),i=t.ref();let d,y=null;const f=t.ref(!1);t.provide(s,{mapInstance:()=>y});const g=e=>{"string"==typeof e?y?.centerAndZoom(e,n.value.zoom):Array.isArray(e)?y?.centerAndZoom(new BMapGL.Point(e[0],e[1]),n.value.zoom):y?.centerAndZoom(e,n.value.zoom)},b=e=>{e?y.enableScrollWheelZoom():y.disableScrollWheelZoom()},v=e=>{y?.setDisplayOptions(e||{})},h=e=>{y?.setTilt(e??0)},T=e=>{y?.setHeading(e??0)},w=e=>{e?y.enableDragging():y.disableDragging()},B=e=>{void 0!==window[e]&&y.setMapType(window[e])},S=()=>{const{maxZoom:o,minZoom:a,enableTilt:l,mapType:r,enableAutoResize:s,enableTiltGestures:p,enableRotate:u,enableRotateGestures:c,displayOptions:m}=n.value;y=new BMapGL.Map(i.value,{maxZoom:o,minZoom:a,enableTilt:l,mapType:window[r],enableAutoResize:s,enableTiltGestures:p,enableRotate:u,enableRotateGestures:c,displayOptions:m});const{onInitd:S}=e;(()=>{const{center:e,heading:t,enableScrollWheelZoom:o,tilt:a,enableDragging:l}=n.value;T(t),g(e),b(o),h(a),w(l)})(),t.watch(()=>n.value.center,g,{deep:!0}),t.watch(()=>n.value.enableScrollWheelZoom,b),t.watch(()=>n.value.displayOptions,v),t.watch(()=>n.value.tilt,h),t.watch(()=>n.value.heading,T),t.watch(()=>n.value.enableDragging,w),t.watch(()=>n.value.mapType,B),S?.({map:y}),d=function(e,t){const o=Object.keys(t).filter(e=>e.startsWith("on")&&!e.startsWith("onUpdate")&&"function"==typeof t[e]).map(o=>{const n=o.slice(2).toLocaleLowerCase(),a=t[o],l=e=>{e.preventDefault?.()||e.domEvent?.preventDefault?.(),e.stopPropagation?.()||e.domEvent?.stopPropagation?.(),a(e)};return e.addEventListener(n,l),()=>e.removeEventListener(n,l)});return()=>o.forEach(e=>e())}(y,e),f.value=!0};return t.onMounted(()=>{t.watchEffect(()=>{"loaded"!==l?.value||f.value||t.nextTick(S)})}),t.onUnmounted(()=>{if(y)try{d?.(),y?.destroy()}catch(e){console.error(`[Vue3 BMapGL]: ${e.message}`)}}),()=>t.createVNode("div",{class:[[p],e.class]},[t.createVNode("div",{ref:i,class:[u,e.contentClass]},["pending"===l?.value&&a(o.loading,()=>t.createVNode("div",{class:[c]},[t.createTextVNode("map loading...")])),"failed"===l?.value&&a(o.failed,()=>t.createVNode("div",{class:[m]},[t.createTextVNode("map failed")]))]),f.value&&o.default?.()])}});function f(){return t.inject(s,null).mapInstance}const g={anchor:{type:String,default:"BMAP_ANCHOR_TOP_RIGHT"},offset:{type:Object,default:{x:0,y:0}},visible:{type:Boolean,default:!0}};var b=t.defineComponent({name:"CustomControl",props:g,setup(e,{attrs:o,slots:n}){const a=f(),l=t.ref();let r=null;return t.onMounted(()=>{const{offset:o,anchor:n,visible:i}=e;r=new BMapGL.Control,r.defaultAnchor=window[n],r.defaultOffset=new BMapGL.Size(o.x,o.y),r.initialize=e=>e.getContainer().appendChild(l.value),i&&a().addControl(r),t.watch(()=>e.visible,e=>{r&&a()[e?"addControl":"removeControl"](r)})}),t.onUnmounted(()=>{r&&a().removeControl(r)}),()=>t.createVNode("div",{style:"display: none"},[t.createVNode("div",t.mergeProps({ref:l},o),[n.default?.()])])}});const v={visible:{type:Boolean,default:!0},transform:Object,png8:Boolean,height:Number,retry:{type:Boolean,default:void 0},retryTime:Number,transparentPng:{type:Boolean,default:!0},dataType:Number,spanLevel:{type:Number,default:0},tileTypeName:String,cacheSize:{type:Number,default:256},customLayer:{type:Boolean,default:void 0},clipTile:{type:Boolean,default:void 0},isTop:Boolean,opacity:{type:Number,default:1},isLowText:Boolean,boundary:Array,showRegion:String,useThumbData:Boolean,zIndex:Number,zIndexTop:Boolean,tileUrlTemplate:String,getTileUrl:Function,getTilesUrl:Function};var h=t.defineComponent({name:"TileLayer",props:v,setup(e){const o=f();let n,a=[],l=null;const r=e=>{l?.setZIndex(e)},i=e=>{e?l?.addBoundary(e):l?.clearBoundary()},s=e=>{l?.setTop(e)},d=(e,t)=>{const o=t=>{t.tileInfo=e.tileInfo,e.cb(t,e.key)},n=()=>e.cb(null,e.key);if("string"==typeof t||t instanceof HTMLCanvasElement){const e=new Image;e.crossOrigin="anonymous",e.onload=()=>o(e),e.onerror=n,e.src="string"==typeof t?t:t.toDataURL()}else t instanceof HTMLImageElement?o(t):n()},p=t=>{const o=a.find(e=>e.key===t.key);o?(o.cb(null,t.key),o.cb=t.cb):a.push(t),n&&clearTimeout(n),n=setTimeout(()=>(()=>{if(0===a.length)return;const{getTilesUrl:t}=e,o=[...a];a=[];const n=o.map(({key:e,tile:t,boundRange:o})=>({key:e,tile:t,boundRange:o}));t(n,e=>{for(const t of e){const e=o.findIndex(e=>e.key===t.key);if(-1!==e){const n=o[e];d(n,t.img),o.splice(e,1)}}o.forEach(e=>{e.cb(null,e.key)})})})(),50)},u=()=>{const{getTileUrl:t,getTilesUrl:n}=e;l&&(t?(o().addTileLayer(l),l.loadRasterTileData=function(e,o){const n=this.getTileKey(e),a=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});t({x:e.col,y:e.row,z:e.zoom},a,t=>{d({cb:o,boundRange:a,key:n,tileInfo:e},t)})}):n?(o().addTileLayer(l),l.loadRasterTileData=function(e,t){const o=this.getTileKey(e),n={x:e.col,y:e.row,z:e.zoom},a=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});p({key:o,tile:n,boundRange:a,cb:t,tileInfo:e})}):o().addTileLayer(l))};return(()=>{const{visible:n,transform:a,png8:d,height:p,retry:c,retryTime:m,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:v,customLayer:h,clipTile:T,isTop:w,opacity:B,isLowText:S,showRegion:C,useThumbData:M,tileUrlTemplate:R}=e;l=new BMapGL.TileLayer({transform:a,png8:d,height:p,retry:c,retryTime:m,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:v,customLayer:h,clipTile:T,isTop:w,opacity:B,isLowText:S,showRegion:C,useThumbData:M,tileUrlTemplate:R}),(()=>{const{zIndex:t,boundary:o}=e;i(o),r(t)})(),n&&u(),t.watch(()=>e.zIndex,r),t.watch(()=>e.boundary,i),t.watch(()=>e.zIndexTop,s),t.watch(()=>e.visible,e=>e?u():o().removeTileLayer(l))})(),t.onUnmounted(()=>{l&&o().removeTileLayer(l)}),()=>t.createVNode(t.Fragment,null,null)}});const T={visible:{type:Boolean,default:!0},getTile:{type:Function},useThumbData:{type:Boolean,default:!1},xTemplate:{type:Function},yTemplate:{type:Function},zTemplate:{type:Function},bTemplate:{type:Function},minZoom:{type:Number,default:3},maxZoom:{type:Number,default:23},extent:{type:Array},extentCRSIsWGS84:{type:Boolean,default:!1},boundary:{type:Array},zIndex:{type:Number,default:1},zIndexTop:{type:Boolean,default:!1},tms:{type:Boolean,default:!1}};var w=t.defineComponent({name:"XyzLayer",props:T,setup(e){const o=f();let n=null;const a=e=>{n?.setZIndex(e)},l=e=>{e&&!e.length?n?.addBoundary(e):n?.clearBoundary()},r=()=>{const{zIndex:t,zIndexTop:o}=e;a(t),(e=>{e&&n?.setZIndexTop()})(o)};return(()=>{const{visible:i,getTile:s,xTemplate:d,yTemplate:p,zTemplate:u,bTemplate:c,minZoom:m,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:v,tms:h}=e;n=new BMapGL.XYZLayer({xTemplate:d,yTemplate:p,zTemplate:u,bTemplate:c,minZoom:m,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:v,tms:h}),r(),i&&(s?(o().addTileLayer(n),n.loadRasterTileData=function(e,t){const o=this.getTileKey(e),n=n=>{n.tileInfo=e,t&&t(n,o)},a=()=>t&&t(null,o),l=BMapGL.XYZProjection.getTileRangeExtent([e.zoom,e.col,e.row]);s({x:e.col,y:e.row,z:e.zoom},l,e=>{if("string"==typeof e||e instanceof HTMLCanvasElement){const t=new Image;t.crossOrigin="anonymous",t.onload=()=>n(t),t.onerror=a,t.src="string"==typeof e?e:e.toDataURL()}else e instanceof HTMLImageElement?n(e):a()})}):o().addTileLayer(n)),t.watch(()=>e.zIndex,a),t.watch(()=>e.boundary,l)})(),t.onUnmounted(()=>{n&&o().removeTileLayer(n)}),()=>t.createVNode(t.Fragment,null,null)}});const B={show:Boolean,offset:{type:Object,default:{x:0,y:0}},width:{type:Number,default:0},height:{type:Number,default:0},maxWidth:Number,position:Object,enableAutoPan:{type:Boolean,default:!0},enableCloseOnClick:{type:Boolean,default:!0},"onUpdate:show":Function,title:String};var S=t.defineComponent({name:"InfoWindow",props:B,setup(e,{slots:o,attrs:n}){const a=f(),l=t.ref();let r=null;const i=t.computed({get:()=>e.show,set:t=>e["onUpdate:show"]?.(t)}),s=()=>{r&&(r.hide?.(),a().removeOverlay(r),r=null)},d=()=>{r?.redraw(),Array.prototype.forEach.call(l.value?.querySelectorAll("img")??[],e=>{e.onload=()=>{r?.redraw()}})},p=()=>{const{width:t,height:o,title:n,maxWidth:s,offset:p,enableAutoPan:u,position:c,enableCloseOnClick:m}=e;r=new BMapGL.InfoWindow(l.value,{width:t,height:o,title:n,maxWidth:s,offset:new BMapGL.Size(p.x,p.y),enableAutoPan:u,enableCloseOnClick:m}),r.addEventListener("close",()=>{e.show&&(i.value=!1)}),r.addEventListener("open",()=>{e.show||(i.value=!0)}),a().addOverlay(r);const y=Array.isArray(c)?new BMapGL.Point(c[0],c[1]):c;a()?.openInfoWindow(r,y),d()},u=e=>{const t=Array.isArray(e)?new BMapGL.Point(e[0],e[1]):e;r?.setPosition(t)},c=e=>{r?.setWidth(e)},m=e=>{r?.setHeight(e)},y=e=>{r?.setTitle(e)},g=()=>{e.show&&p(),(()=>{const e=window.MutationObserver;e&&new e(()=>{r?.redraw()}).observe(l.value,{attributes:!0,childList:!0,characterData:!0,subtree:!0})})(),t.watch(()=>e.position,u,{deep:!0}),t.watch(()=>e.width,c),t.watch(()=>e.height,m),t.watch(()=>e.title,y),t.watch(()=>e.show,()=>e.show?p():s())};return t.onMounted(()=>{l.value?g():t.nextTick(()=>g())}),t.onUpdated(()=>{var e;r&&r.isOpen()&&(e=l.value??"",r?.setContent(e),d())}),t.onUnmounted(()=>{r&&s()}),()=>t.createVNode("div",{style:"display: none"},[t.createVNode("div",t.mergeProps({ref:l},n),[o.default?.()])])}});const C={visible:{type:Boolean,default:!0}};var M=t.defineComponent({name:"Marker",props:C,setup:()=>()=>t.createVNode(t.Fragment,null,null)});const R={visible:{type:Boolean,default:!0},points:{type:Array},strokeColor:{type:String,default:"#000"},fillColor:{type:String,default:"#fff"},strokeWeight:{type:Number,default:2},strokeOpacity:{type:Number,default:1},fillOpacity:{type:Number,default:.3},strokeStyle:{type:String,default:"solid"},enableMassClear:{type:Boolean,default:!0},enableEditing:{type:Boolean,default:!1},isBoundary:{type:Boolean},enableClicking:{type:Boolean,default:!0}};var x=t.defineComponent({name:"Polygon",props:R,setup:e=>{const o=f();let n=null;const a=e=>{n&&n.setStrokeColor(e)};return(()=>{const{points:l,visible:r,strokeColor:i,fillColor:s,strokeWeight:d,strokeOpacity:p,fillOpacity:u,strokeStyle:c,enableMassClear:m,enableEditing:y,enableClicking:f}=e;l&&l.length&&(n=new BMapGL.Polygon(function(e){if(!e||0===e.length)return[];const t=e[0];return Array.isArray(t)?e.map(([e,t])=>new BMapGL.Point(e,t)):e}(l),{strokeColor:i,fillColor:s,strokeWeight:d,strokeOpacity:p,fillOpacity:u,strokeStyle:c,enableMassClear:m,enableEditing:y,enableClicking:f}),r&&o().addOverlay(n),t.watch(()=>e.strokeColor,a),t.watch(()=>e.visible,e=>{o()[e?"addOverlay":"removeOverlay"](n)}))})(),t.onUnmounted(()=>{n&&o().removeOverlay(n)}),()=>t.createVNode(t.Fragment,null,null)}}),L=t.defineComponent({name:"Sector",setup:()=>()=>t.createVNode(t.Fragment,null,null)});e.BConfigProvider=i,e.BCustomControl=b,e.BInfoWindow=S,e.BMap=y,e.BMarker=M,e.BPolygon=x,e.BSector=L,e.BTileLayer=h,e.BXyzLayer=w,e.configProviderInjectionKey=r,e.configProviderProps=l,e.create=function({componentPrefix:e="B",components:t=[]}={}){const o=[];function n(t,o,n){t.component(e+o)||t.component(e+o,n)}return{componentPrefix:e,install:function(e){o.includes(e)||(o.push(e),t.forEach(t=>{const{name:o,alias:a}=t;n(e,o,t),a&&a.forEach(o=>{n(e,o,t)})}))}}},e.customControlProps=g,e.infoWindowProps=B,e.mapInjectionKey=s,e.mapProps=d,e.markerProps=C,e.polygonProps=R,e.tileLayerProps=v,e.xyzLayerProps=T});
package/es/_utils/map.mjs CHANGED
@@ -53,8 +53,8 @@ function listToMapPoints(points) {
53
53
  return points;
54
54
  }
55
55
  function setupMapEvents(map, props) {
56
- const cleanup = Object.keys(props).filter((key) => key.startsWith("on") && typeof props[key] === "function").map((propName) => {
57
- const eventName = propName.slice(2).toLowerCase();
56
+ const cleanup = Object.keys(props).filter((key) => key.startsWith("on") && !key.startsWith("onUpdate") && typeof props[key] === "function").map((propName) => {
57
+ const eventName = propName.slice(2).toLocaleLowerCase();
58
58
  const handler = props[propName];
59
59
  const wrapper = (e) => {
60
60
  var _a, _b, _c, _d, _e, _f;
@@ -1 +1 @@
1
- {"version":3,"file":"map.mjs","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/_utils/map.ts"],"sourcesContent":["export interface LoaderOptions {\r\n key: string\r\n src: string\r\n addCalToWindow?: boolean\r\n timeout?: number\r\n}\r\n\r\nlet isScriptLoaded = false\r\n\r\nexport function loader(options: LoaderOptions): Promise<void> {\r\n const {\r\n key,\r\n src,\r\n addCalToWindow = true,\r\n timeout = 10000,\r\n } = options\r\n\r\n if (isScriptLoaded && window.BMapGL) {\r\n return Promise.resolve()\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.src = src\r\n script.type = 'text/javascript'\r\n script.defer = true\r\n\r\n const cleanup = () => {\r\n script.onload = null\r\n script.onerror = null\r\n if (document.body.contains(script)) {\r\n document.body.removeChild(script)\r\n }\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n cleanup()\r\n reject(new Error(`Script load timeout: ${src}`))\r\n }, timeout)\r\n\r\n const handleLoad = () => {\r\n clearTimeout(timer)\r\n isScriptLoaded = true\r\n cleanup()\r\n resolve()\r\n }\r\n\r\n if (addCalToWindow) {\r\n (window as any)[key] = handleLoad\r\n } else {\r\n script.onload = handleLoad\r\n }\r\n\r\n script.onerror = () => {\r\n clearTimeout(timer)\r\n cleanup()\r\n reject(new Error(`Failed to load script: ${src}`))\r\n }\r\n\r\n document.body.appendChild(script)\r\n })\r\n}\r\n\r\nexport function listToMapPoints(points?: BMapGL.Point[] | number[][] | string[]): BMapGL.Point[] {\r\n if (!points || points.length === 0) {\r\n return []\r\n }\r\n\r\n const first = points[0]\r\n\r\n if (Array.isArray(first)) {\r\n return (points as number[][]).map(([lng, lat]) => new BMapGL.Point(lng, lat))\r\n }\r\n\r\n if (typeof first === 'string') {\r\n return points as BMapGL.Point[]\r\n }\r\n\r\n return points as BMapGL.Point[]\r\n}\r\n\r\nexport function setupMapEvents(map: any, props: Record<string, any>) {\r\n const cleanup = Object.keys(props)\r\n .filter(key => key.startsWith('on') && typeof props[key] === 'function')\r\n .map((propName) => {\r\n const eventName = propName.slice(2).toLowerCase()\r\n const handler = props[propName]\r\n\r\n const wrapper = (e: any) => {\r\n e.preventDefault?.() || e.domEvent?.preventDefault?.()\r\n e.stopPropagation?.() || e.domEvent?.stopPropagation?.()\r\n handler(e)\r\n }\r\n\r\n map.addEventListener(eventName, wrapper)\r\n return () => map.removeEventListener(eventName, wrapper)\r\n })\r\n\r\n return () => cleanup.forEach(fn => fn())\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map.mjs","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/_utils/map.ts"],"sourcesContent":["export interface LoaderOptions {\r\n key: string\r\n src: string\r\n addCalToWindow?: boolean\r\n timeout?: number\r\n}\r\n\r\nlet isScriptLoaded = false\r\n\r\nexport function loader(options: LoaderOptions): Promise<void> {\r\n const {\r\n key,\r\n src,\r\n addCalToWindow = true,\r\n timeout = 10000,\r\n } = options\r\n\r\n if (isScriptLoaded && window.BMapGL) {\r\n return Promise.resolve()\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.src = src\r\n script.type = 'text/javascript'\r\n script.defer = true\r\n\r\n const cleanup = () => {\r\n script.onload = null\r\n script.onerror = null\r\n if (document.body.contains(script)) {\r\n document.body.removeChild(script)\r\n }\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n cleanup()\r\n reject(new Error(`Script load timeout: ${src}`))\r\n }, timeout)\r\n\r\n const handleLoad = () => {\r\n clearTimeout(timer)\r\n isScriptLoaded = true\r\n cleanup()\r\n resolve()\r\n }\r\n\r\n if (addCalToWindow) {\r\n (window as any)[key] = handleLoad\r\n } else {\r\n script.onload = handleLoad\r\n }\r\n\r\n script.onerror = () => {\r\n clearTimeout(timer)\r\n cleanup()\r\n reject(new Error(`Failed to load script: ${src}`))\r\n }\r\n\r\n document.body.appendChild(script)\r\n })\r\n}\r\n\r\nexport function listToMapPoints(points?: BMapGL.Point[] | number[][] | string[]): BMapGL.Point[] {\r\n if (!points || points.length === 0) {\r\n return []\r\n }\r\n\r\n const first = points[0]\r\n\r\n if (Array.isArray(first)) {\r\n return (points as number[][]).map(([lng, lat]) => new BMapGL.Point(lng, lat))\r\n }\r\n\r\n if (typeof first === 'string') {\r\n return points as BMapGL.Point[]\r\n }\r\n\r\n return points as BMapGL.Point[]\r\n}\r\n\r\nexport function setupMapEvents(map: any, props: Record<string, any>) {\r\n const cleanup = Object.keys(props)\r\n .filter(key => key.startsWith('on') && !key.startsWith('onUpdate') && typeof props[key] === 'function')\r\n .map((propName) => {\r\n const eventName = propName.slice(2).toLocaleLowerCase()\r\n const handler = props[propName]\r\n\r\n const wrapper = (e: any) => {\r\n e.preventDefault?.() || e.domEvent?.preventDefault?.()\r\n e.stopPropagation?.() || e.domEvent?.stopPropagation?.()\r\n handler(e)\r\n }\r\n\r\n map.addEventListener(eventName, wrapper)\r\n return () => map.removeEventListener(eventName, wrapper)\r\n })\r\n\r\n return () => cleanup.forEach(fn => fn())\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, onMounted, watch, onUnmounted, createVNode, withDirectives, resolveDirective } from 'vue';
1
+ import { defineComponent, ref, onMounted, watch, onUnmounted, createVNode, mergeProps } from 'vue';
2
2
  import { customControlProps } from './custom-props.mjs';
3
3
  import useMapInstance from '../../../_mixins/use-map-instance.mjs';
4
4
 
@@ -38,9 +38,9 @@ var custom = /* @__PURE__ */ defineComponent({
38
38
  var _a;
39
39
  return createVNode("div", {
40
40
  "style": "display: none"
41
- }, [withDirectives(createVNode("div", {
41
+ }, [createVNode("div", mergeProps({
42
42
  "ref": controlContentRef
43
- }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]), [[resolveDirective("bind"), attrs]])]);
43
+ }, attrs), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);
44
44
  };
45
45
  }
46
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"custom.mjs","sources":["../../../../src/control/custom/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/control/custom/src/custom.tsx"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { customControlProps } from './custom-props'\r\n\r\nexport default defineComponent({\r\n name: 'CustomControl',\r\n props: customControlProps,\r\n setup(props, { attrs, slots }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const controlContentRef = ref<HTMLDivElement>()\r\n\r\n let control: BMapGL.Control | null = null\r\n\r\n onMounted(() => {\r\n const { offset, anchor, visible } = props\r\n control = new BMapGL.Control()\r\n control.defaultAnchor = (window as any)[anchor]\r\n control.defaultOffset = new BMapGL.Size(offset.x, offset.y)\r\n control.initialize = (_map: BMapGL.Map) => {\r\n return _map.getContainer().appendChild(controlContentRef.value as Node) as HTMLElement\r\n }\r\n visible && mapInstance().addControl(control)\r\n watch(\r\n () => props.visible,\r\n (n) => {\r\n if (control)\r\n mapInstance()[n ? 'addControl' : 'removeControl'](control)\r\n },\r\n )\r\n })\r\n\r\n onUnmounted(() => {\r\n if (control) {\r\n mapInstance().removeControl(control)\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={controlContentRef} v-bind={attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","customControlProps","setup","attrs","slots","mapInstance","useMapInstance","controlContentRef","ref","control","onMounted","offset","anchor","visible","BMapGL","Control","defaultAnchor","window","defaultOffset","Size","x","y","initialize","_map","getContainer","appendChild","value","addControl","watch","n","onUnmounted","removeControl","_createVNode","_withDirectives","_a","default","call","_resolveDirective"],"mappings":";;;;AAIA,6CAA+B;AAAA,EAC7BA,IAAAA,EAAM,eAAA;AAAA,EACNC,KAAAA,EAAOC,kBAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAK,EAAE;AAC3B,IAAA,MAAMC,cAAcC,cAAAA,EAAc;AAElC,IAAA,MAAMC,oBAAoBC,GAAAA,EAAG;AAE7B,IAAA,IAAIC,OAAAA,GAAiC,IAAA;AAErCC,IAAAA,SAAAA,CAAU,MAAK;AACb,MAAA,MAAM;AAAA,QAAEC,MAAAA;AAAAA,QAAQC,MAAAA;AAAAA,QAAQC;AAAAA,OAAO,GAAKb,KAAAA;AACpCS,MAAAA,OAAAA,GAAU,IAAIK,OAAOC,OAAAA;AACrBN,MAAAA,OAAAA,CAAQO,aAAAA,GAAiBC,OAAeL,MAAM,CAAA;AAC9CH,MAAAA,OAAAA,CAAQS,gBAAgB,IAAIJ,MAAAA,CAAOK,KAAKR,MAAAA,CAAOS,CAAAA,EAAGT,OAAOU,CAAC,CAAA;AAC1DZ,MAAAA,OAAAA,CAAQa,aAAcC,CAAAA,IAAAA,KAAoB;AACxC,QAAA,OAAOA,IAAAA,CAAKC,YAAAA,EAAY,CAAGC,WAAAA,CAAYlB,kBAAkBmB,KAAa,CAAA;AAAA,MACxE,CAAA;AACAb,MAAAA,OAAAA,IAAWR,WAAAA,EAAW,CAAGsB,UAAAA,CAAWlB,OAAO,CAAA;AAC3CmB,MAAAA,KAAAA,CACE,MAAM5B,KAAAA,CAAMa,OAAAA,EACXgB,CAAAA,CAAAA,KAAK;AACJ,QAAA,IAAIpB,SACFJ,WAAAA,EAAW,CAAGwB,IAAI,YAAA,GAAe,eAAe,EAAEpB,OAAO,CAAA;AAAA,MAC7D,CAAC,CAAA;AAAA,IAEL,CAAC,CAAA;AAEDqB,IAAAA,WAAAA,CAAY,MAAK;AACf,MAAA,IAAIrB,OAAAA,EAAS;AACXJ,QAAAA,WAAAA,GAAc0B,cAActB,OAAO,CAAA;AAAA,MACrC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAK;;AAAC,MAAA,OAAAuB,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA;AAAA,OAAA,EAAA,CAAAC,cAAAA,CAAAD,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,KAAA,EAECzB;AAAAA,OAAiB,EAAA,CAAA,CAAkB2B,EAAAA,GAAA9B,KAAAA,CAAM+B,OAAAA,MAAO,QAAAD,EAAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAAA,CAAAE,IAAAA,CAAAhC,KAAA,CAAI,CAAA,CAAA,EAAA,CAAA,CAAAiC,gBAAAA,CAAA,MAAA,GAAzBlC,KAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;EAGhD;AACD,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"custom.mjs","sources":["../../../../src/control/custom/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/control/custom/src/custom.tsx"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { customControlProps } from './custom-props'\r\n\r\nexport default defineComponent({\r\n name: 'CustomControl',\r\n props: customControlProps,\r\n setup(props, { attrs, slots }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const controlContentRef = ref<HTMLDivElement>()\r\n\r\n let control: BMapGL.Control | null = null\r\n\r\n onMounted(() => {\r\n const { offset, anchor, visible } = props\r\n control = new BMapGL.Control()\r\n control.defaultAnchor = (window as any)[anchor]\r\n control.defaultOffset = new BMapGL.Size(offset.x, offset.y)\r\n control.initialize = (_map: BMapGL.Map) => {\r\n return _map.getContainer().appendChild(controlContentRef.value as Node) as HTMLElement\r\n }\r\n visible && mapInstance().addControl(control)\r\n watch(\r\n () => props.visible,\r\n (n) => {\r\n if (control)\r\n mapInstance()[n ? 'addControl' : 'removeControl'](control)\r\n },\r\n )\r\n })\r\n\r\n onUnmounted(() => {\r\n if (control) {\r\n mapInstance().removeControl(control)\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={controlContentRef} {...attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","customControlProps","setup","attrs","slots","mapInstance","useMapInstance","controlContentRef","ref","control","onMounted","offset","anchor","visible","BMapGL","Control","defaultAnchor","window","defaultOffset","Size","x","y","initialize","_map","getContainer","appendChild","value","addControl","watch","n","onUnmounted","removeControl","_createVNode","_mergeProps","default","_a","call"],"mappings":";;;;AAIA,6CAA+B;AAAA,EAC7BA,IAAAA,EAAM,eAAA;AAAA,EACNC,KAAAA,EAAOC,kBAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAK,EAAE;AAC3B,IAAA,MAAMC,cAAcC,cAAAA,EAAc;AAElC,IAAA,MAAMC,oBAAoBC,GAAAA,EAAG;AAE7B,IAAA,IAAIC,OAAAA,GAAiC,IAAA;AAErCC,IAAAA,SAAAA,CAAU,MAAK;AACb,MAAA,MAAM;AAAA,QAAEC,MAAAA;AAAAA,QAAQC,MAAAA;AAAAA,QAAQC;AAAAA,OAAO,GAAKb,KAAAA;AACpCS,MAAAA,OAAAA,GAAU,IAAIK,OAAOC,OAAAA;AACrBN,MAAAA,OAAAA,CAAQO,aAAAA,GAAiBC,OAAeL,MAAM,CAAA;AAC9CH,MAAAA,OAAAA,CAAQS,gBAAgB,IAAIJ,MAAAA,CAAOK,KAAKR,MAAAA,CAAOS,CAAAA,EAAGT,OAAOU,CAAC,CAAA;AAC1DZ,MAAAA,OAAAA,CAAQa,aAAcC,CAAAA,IAAAA,KAAoB;AACxC,QAAA,OAAOA,IAAAA,CAAKC,YAAAA,EAAY,CAAGC,WAAAA,CAAYlB,kBAAkBmB,KAAa,CAAA;AAAA,MACxE,CAAA;AACAb,MAAAA,OAAAA,IAAWR,WAAAA,EAAW,CAAGsB,UAAAA,CAAWlB,OAAO,CAAA;AAC3CmB,MAAAA,KAAAA,CACE,MAAM5B,KAAAA,CAAMa,OAAAA,EACXgB,CAAAA,CAAAA,KAAK;AACJ,QAAA,IAAIpB,SACFJ,WAAAA,EAAW,CAAGwB,IAAI,YAAA,GAAe,eAAe,EAAEpB,OAAO,CAAA;AAAA,MAC7D,CAAC,CAAA;AAAA,IAEL,CAAC,CAAA;AAEDqB,IAAAA,WAAAA,CAAY,MAAK;AACf,MAAA,IAAIrB,OAAAA,EAAS;AACXJ,QAAAA,WAAAA,GAAc0B,cAActB,OAAO,CAAA;AAAA,MACrC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAK;;AAAC,MAAA,OAAAuB,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA;AAAA,OAAA,EAAA,CAAAA,WAAAA,QAAAC,UAAAA,CAAA;AAAA,QAAA,KAAA,EAEC1B;AAAAA,SAAuBJ,KAAK,CAAA,EAAA,CAAA,MAAGC,MAAM8B,OAAAA,MAAO,IAAA,IAAAC,EAAAA,KAAA,MAAA,GAAA,SAAAA,EAAAA,CAAAC,IAAAA,CAAAhC,KAAA,CAAI,CAAA,CAAA,CAAA,CAAA;AAAA;EAGhE;AACD,CAAA,CAAA;;;;"}
@@ -31,5 +31,6 @@ export declare const infoWindowProps: {
31
31
  readonly default: true;
32
32
  };
33
33
  readonly 'onUpdate:show': FunctionConstructor;
34
+ readonly title: StringConstructor;
34
35
  };
35
36
  export type InfoWindowProps = ExtractPublicPropTypes<typeof infoWindowProps>;
@@ -22,7 +22,8 @@ const infoWindowProps = {
22
22
  type: Boolean,
23
23
  default: true
24
24
  },
25
- "onUpdate:show": Function
25
+ "onUpdate:show": Function,
26
+ "title": String
26
27
  };
27
28
 
28
29
  export { infoWindowProps };
@@ -1 +1 @@
1
- {"version":3,"file":"info-window-props.mjs","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport const infoWindowProps = {\r\n 'show': Boolean,\r\n 'offset': {\r\n type: Object as PropType<{ x: number, y: number }>,\r\n default: { x: 0, y: 0 },\r\n },\r\n 'width': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'height': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'maxWidth': Number,\r\n 'position': Object as PropType<BMapGL.Point | [number, number]>,\r\n 'enableAutoPan': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'enableCloseOnClick': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'onUpdate:show': Function,\r\n} as const\r\n\r\nexport type InfoWindowProps = ExtractPublicPropTypes<typeof infoWindowProps>\r\n"],"names":[],"mappings":"AAGO,MAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAC,GACtB;AAAA,EACD,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,MAAA;AAAA,EACZ,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,oBAAA,EAAsB;AAAA,IACpB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,eAAA,EAAiB;;;;;"}
1
+ {"version":3,"file":"info-window-props.mjs","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport const infoWindowProps = {\r\n 'show': Boolean,\r\n 'offset': {\r\n type: Object as PropType<{ x: number, y: number }>,\r\n default: { x: 0, y: 0 },\r\n },\r\n 'width': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'height': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'maxWidth': Number,\r\n 'position': Object as PropType<BMapGL.Point | [number, number]>,\r\n 'enableAutoPan': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'enableCloseOnClick': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'onUpdate:show': Function,\r\n 'title': String,\r\n} as const\r\n\r\nexport type InfoWindowProps = ExtractPublicPropTypes<typeof infoWindowProps>\r\n"],"names":[],"mappings":"AAGO,MAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAC,GACtB;AAAA,EACD,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,MAAA;AAAA,EACZ,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,oBAAA,EAAsB;AAAA,IACpB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,eAAA,EAAiB,QAAA;AAAA,EACjB,OAAA,EAAS;;;;;"}
@@ -29,6 +29,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
29
29
  readonly default: true;
30
30
  };
31
31
  readonly 'onUpdate:show': FunctionConstructor;
32
+ readonly title: StringConstructor;
32
33
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
33
34
  readonly show: BooleanConstructor;
34
35
  readonly offset: {
@@ -60,6 +61,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
60
61
  readonly default: true;
61
62
  };
62
63
  readonly 'onUpdate:show': FunctionConstructor;
64
+ readonly title: StringConstructor;
63
65
  }>> & Readonly<{}>, {
64
66
  readonly offset: {
65
67
  x: number;
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, onMounted, nextTick, onUpdated, onUnmounted, createVNode, withDirectives, resolveDirective, watch } from 'vue';
1
+ import { defineComponent, ref, computed, onMounted, nextTick, onUpdated, onUnmounted, createVNode, mergeProps, watch } from 'vue';
2
2
  import { infoWindowProps } from './info-window-props.mjs';
3
3
  import useMapInstance from '../../../_mixins/use-map-instance.mjs';
4
4
 
@@ -19,26 +19,13 @@ var infoWindow = /* @__PURE__ */ defineComponent({
19
19
  return (_a = props["onUpdate:show"]) === null || _a === void 0 ? void 0 : _a.call(props, value);
20
20
  }
21
21
  });
22
- const openInfoWindow = () => {
23
- const {
24
- position
25
- } = props;
26
- if (!position || !infoWindow) return;
27
- const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
28
- mapInstance().openInfoWindow(infoWindow, point);
29
- visible.value = true;
30
- };
31
- const closeInfoWindow = () => {
22
+ const removeInfoWindow = () => {
32
23
  var _a;
33
- if (!infoWindow) return;
34
- (_a = infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.hide) === null || _a === void 0 ? void 0 : _a.call(infoWindow);
35
- visible.value = false;
36
- };
37
- const setPosition = (position) => {
38
- openInfoWindow();
39
- const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
40
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setPosition(point);
41
- if (!visible.value) closeInfoWindow();
24
+ if (infoWindow) {
25
+ (_a = infoWindow.hide) === null || _a === void 0 ? void 0 : _a.call(infoWindow);
26
+ mapInstance().removeOverlay(infoWindow);
27
+ infoWindow = null;
28
+ }
42
29
  };
43
30
  const redraw = () => {
44
31
  var _a, _b;
@@ -49,35 +36,22 @@ var infoWindow = /* @__PURE__ */ defineComponent({
49
36
  };
50
37
  });
51
38
  };
52
- const setContent = (content) => {
53
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setContent(content);
54
- };
55
- const setWidth = (width) => {
56
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setWidth(width);
57
- };
58
- const setHeight = (height) => {
59
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setHeight(height);
60
- };
61
- const startWatchProps = () => {
62
- watch(() => props.position, setPosition, {
63
- deep: true
64
- });
65
- watch(() => props.width, setWidth);
66
- watch(() => props.height, setHeight);
67
- watch(() => props.show, () => props.show ? openInfoWindow() : closeInfoWindow());
68
- };
69
- onMounted(() => {
39
+ const createInfoWindow = () => {
40
+ var _a;
70
41
  const {
71
42
  width,
72
43
  height,
44
+ title,
73
45
  maxWidth,
74
46
  offset,
75
47
  enableAutoPan,
48
+ position,
76
49
  enableCloseOnClick
77
50
  } = props;
78
51
  infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value, {
79
52
  width,
80
53
  height,
54
+ title,
81
55
  maxWidth,
82
56
  offset: new BMapGL.Size(offset.x, offset.y),
83
57
  enableAutoPan,
@@ -90,40 +64,82 @@ var infoWindow = /* @__PURE__ */ defineComponent({
90
64
  if (!props.show) visible.value = true;
91
65
  });
92
66
  mapInstance().addOverlay(infoWindow);
67
+ const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
68
+ (_a = mapInstance()) === null || _a === void 0 ? void 0 : _a.openInfoWindow(infoWindow, point);
93
69
  redraw();
70
+ };
71
+ const setPosition = (position) => {
72
+ const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
73
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setPosition(point);
74
+ };
75
+ const setContent = (content) => {
76
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setContent(content);
77
+ };
78
+ const setWidth = (width) => {
79
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setWidth(width);
80
+ };
81
+ const setHeight = (height) => {
82
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setHeight(height);
83
+ };
84
+ const setTitle = (title) => {
85
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setTitle(title);
86
+ };
87
+ const bindObserver = () => {
88
+ const MutationObserver = window.MutationObserver;
89
+ if (!MutationObserver) {
90
+ return;
91
+ }
92
+ new MutationObserver(() => {
93
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.redraw();
94
+ }).observe(infoWindowContentRef.value, {
95
+ attributes: true,
96
+ childList: true,
97
+ characterData: true,
98
+ subtree: true
99
+ });
100
+ };
101
+ const startWatchProps = () => {
102
+ watch(() => props.position, setPosition, {
103
+ deep: true
104
+ });
105
+ watch(() => props.width, setWidth);
106
+ watch(() => props.height, setHeight);
107
+ watch(() => props.title, setTitle);
108
+ watch(() => props.show, () => props.show ? createInfoWindow() : removeInfoWindow());
109
+ };
110
+ const init = () => {
94
111
  if (props.show) {
95
- nextTick(() => {
96
- openInfoWindow();
97
- nextTick(() => {
98
- if (infoWindow && "_visible" in infoWindow) {
99
- !infoWindow._visible && (visible.value = false);
100
- } else {
101
- !(infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.isOpen()) && (visible.value = false);
102
- }
103
- });
104
- });
112
+ createInfoWindow();
105
113
  }
114
+ bindObserver();
106
115
  startWatchProps();
116
+ };
117
+ onMounted(() => {
118
+ if (!infoWindowContentRef.value) {
119
+ nextTick(() => init());
120
+ } else {
121
+ init();
122
+ }
107
123
  });
108
124
  onUpdated(() => {
109
125
  var _a;
110
126
  if (infoWindow && infoWindow.isOpen()) {
111
127
  setContent((_a = infoWindowContentRef.value) !== null && _a !== void 0 ? _a : "");
128
+ redraw();
112
129
  }
113
130
  });
114
131
  onUnmounted(() => {
115
132
  if (infoWindow) {
116
- mapInstance().removeOverlay(infoWindow);
117
- redraw();
133
+ removeInfoWindow();
118
134
  }
119
135
  });
120
136
  return () => {
121
137
  var _a;
122
138
  return createVNode("div", {
123
139
  "style": "display: none"
124
- }, [withDirectives(createVNode("div", {
140
+ }, [createVNode("div", mergeProps({
125
141
  "ref": infoWindowContentRef
126
- }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]), [[resolveDirective("bind"), attrs]])]);
142
+ }, attrs), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);
127
143
  };
128
144
  }
129
145
  });
@@ -1 +1 @@
1
- {"version":3,"file":"info-window.mjs","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, onUnmounted, onUpdated, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { infoWindowProps } from './info-window-props'\r\n\r\nexport default defineComponent({\r\n name: 'InfoWindow',\r\n props: infoWindowProps,\r\n setup(props, { slots, attrs }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const infoWindowContentRef = ref<HTMLDivElement>()\r\n\r\n let infoWindow: BMapGL.InfoWindow | null = null\r\n\r\n const visible = computed({\r\n get: () => props.show,\r\n set: value => props['onUpdate:show']?.(value),\r\n })\r\n\r\n const openInfoWindow = () => {\r\n const { position } = props\r\n if (!position || !infoWindow)\r\n return\r\n const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position\r\n ;(mapInstance() as any).openInfoWindow(infoWindow, point)\r\n visible.value = true\r\n }\r\n\r\n const closeInfoWindow = () => {\r\n if (!infoWindow)\r\n return\r\n infoWindow?.hide?.()\r\n visible.value = false\r\n }\r\n\r\n const setPosition = (position?: BMapGL.Point | [number, number]) => {\r\n openInfoWindow()\r\n const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position\r\n ;(infoWindow as any)?.setPosition(point)\r\n if (!visible.value)\r\n closeInfoWindow()\r\n }\r\n\r\n const redraw = () => {\r\n infoWindow?.redraw()\r\n Array.prototype.forEach.call(infoWindowContentRef.value?.querySelectorAll('img') ?? [], (imgEl) => {\r\n imgEl.onload = () => {\r\n infoWindow?.redraw()\r\n }\r\n })\r\n }\r\n\r\n const setContent = (content: string | HTMLElement) => {\r\n infoWindow?.setContent(content)\r\n }\r\n\r\n const setWidth = (width: number) => {\r\n infoWindow?.setWidth(width)\r\n }\r\n\r\n const setHeight = (height: number) => {\r\n infoWindow?.setHeight(height)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.position, setPosition, { deep: true })\r\n watch(() => props.width, setWidth)\r\n watch(() => props.height, setHeight)\r\n watch(() => props.show, () => props.show ? openInfoWindow() : closeInfoWindow())\r\n }\r\n\r\n onMounted(() => {\r\n const { width, height, maxWidth, offset, enableAutoPan, enableCloseOnClick } = props\r\n infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value!, {\r\n width,\r\n height,\r\n maxWidth,\r\n offset: new BMapGL.Size(offset.x, offset.y),\r\n enableAutoPan,\r\n enableCloseOnClick,\r\n })\r\n infoWindow.addEventListener('close', () => {\r\n if (props.show)\r\n visible.value = false\r\n })\r\n infoWindow.addEventListener('open', () => {\r\n if (!props.show)\r\n visible.value = true\r\n })\r\n mapInstance().addOverlay(infoWindow)\r\n redraw()\r\n\r\n if (props.show) {\r\n nextTick(() => {\r\n openInfoWindow()\r\n nextTick(() => {\r\n if (infoWindow && '_visible' in infoWindow) {\r\n !infoWindow._visible && (visible.value = false)\r\n } else {\r\n !infoWindow?.isOpen() && (visible.value = false)\r\n }\r\n })\r\n })\r\n }\r\n\r\n startWatchProps()\r\n })\r\n\r\n onUpdated(() => {\r\n if (infoWindow && infoWindow.isOpen()) {\r\n setContent(infoWindowContentRef.value ?? '')\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n if (infoWindow) {\r\n mapInstance().removeOverlay(infoWindow)\r\n redraw()\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={infoWindowContentRef} v-bind={attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","infoWindowProps","setup","slots","attrs","mapInstance","useMapInstance","infoWindowContentRef","ref","infoWindow","visible","computed","get","show","set","value","_a","call","openInfoWindow","position","point","Array","isArray","BMapGL","Point","closeInfoWindow","hide","setPosition","redraw","prototype","forEach","_b","querySelectorAll","imgEl","onload","setContent","content","setWidth","width","setHeight","height","startWatchProps","watch","deep","onMounted","maxWidth","offset","enableAutoPan","enableCloseOnClick","InfoWindow","Size","x","y","addEventListener","addOverlay","nextTick","_visible","isOpen","onUpdated","onUnmounted","removeOverlay","_createVNode","_withDirectives","default","_resolveDirective"],"mappings":"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"}
1
+ {"version":3,"file":"info-window.mjs","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, onUnmounted, onUpdated, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { infoWindowProps } from './info-window-props'\r\n\r\nexport default defineComponent({\r\n name: 'InfoWindow',\r\n props: infoWindowProps,\r\n setup(props, { slots, attrs }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const infoWindowContentRef = ref<HTMLDivElement>()\r\n\r\n let infoWindow: BMapGL.InfoWindow | null = null\r\n\r\n const visible = computed({\r\n get: () => props.show,\r\n set: value => props['onUpdate:show']?.(value),\r\n })\r\n\r\n const removeInfoWindow = () => {\r\n if (infoWindow) {\r\n infoWindow.hide?.()\r\n mapInstance().removeOverlay(infoWindow)\r\n infoWindow = null\r\n }\r\n }\r\n\r\n const redraw = () => {\r\n infoWindow?.redraw()\r\n Array.prototype.forEach.call(infoWindowContentRef.value?.querySelectorAll('img') ?? [], (imgEl) => {\r\n imgEl.onload = () => {\r\n infoWindow?.redraw()\r\n }\r\n })\r\n }\r\n\r\n const createInfoWindow = () => {\r\n const { width, height, title, maxWidth, offset, enableAutoPan, position, enableCloseOnClick } = props\r\n infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value!, {\r\n width,\r\n height,\r\n title,\r\n maxWidth,\r\n offset: new BMapGL.Size(offset.x, offset.y),\r\n enableAutoPan,\r\n enableCloseOnClick,\r\n })\r\n infoWindow.addEventListener('close', () => {\r\n if (props.show)\r\n visible.value = false\r\n })\r\n infoWindow.addEventListener('open', () => {\r\n if (!props.show)\r\n visible.value = true\r\n })\r\n mapInstance().addOverlay(infoWindow)\r\n const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position\r\n ;(mapInstance() as any)?.openInfoWindow(infoWindow, point)\r\n redraw()\r\n }\r\n\r\n const setPosition = (position: any) => {\r\n const point = Array.isArray(position)\r\n ? new BMapGL.Point(position[0], position[1])\r\n : position\r\n ;(infoWindow as any)?.setPosition(point)\r\n }\r\n\r\n const setContent = (content: string | HTMLElement) => {\r\n infoWindow?.setContent(content)\r\n }\r\n\r\n const setWidth = (width: number) => {\r\n infoWindow?.setWidth(width)\r\n }\r\n\r\n const setHeight = (height: number) => {\r\n infoWindow?.setHeight(height)\r\n }\r\n\r\n const setTitle = (title?: string) => {\r\n infoWindow?.setTitle(title!)\r\n }\r\n\r\n const bindObserver = () => {\r\n const MutationObserver = window.MutationObserver\r\n if (!MutationObserver) {\r\n return\r\n }\r\n new MutationObserver(() => {\r\n infoWindow?.redraw()\r\n }).observe(infoWindowContentRef.value!, { attributes: true, childList: true, characterData: true, subtree: true })\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.position, setPosition, { deep: true })\r\n watch(() => props.width, setWidth)\r\n watch(() => props.height, setHeight)\r\n watch(() => props.title, setTitle)\r\n watch(() => props.show, () => props.show ? createInfoWindow() : removeInfoWindow())\r\n }\r\n\r\n const init = () => {\r\n if (props.show) {\r\n createInfoWindow()\r\n }\r\n\r\n bindObserver()\r\n\r\n startWatchProps()\r\n }\r\n\r\n onMounted(() => {\r\n if (!infoWindowContentRef.value) {\r\n nextTick(() => init())\r\n } else {\r\n init()\r\n }\r\n })\r\n\r\n onUpdated(() => {\r\n if (infoWindow && infoWindow.isOpen()) {\r\n setContent(infoWindowContentRef.value ?? '')\r\n redraw()\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n if (infoWindow) {\r\n removeInfoWindow()\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={infoWindowContentRef} {...attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","infoWindowProps","setup","slots","attrs","mapInstance","useMapInstance","infoWindowContentRef","ref","infoWindow","visible","computed","get","show","set","value","_a","call","removeInfoWindow","hide","removeOverlay","redraw","Array","prototype","forEach","_b","querySelectorAll","imgEl","onload","createInfoWindow","width","height","title","maxWidth","offset","enableAutoPan","position","enableCloseOnClick","BMapGL","InfoWindow","Size","x","y","addEventListener","addOverlay","point","isArray","Point","openInfoWindow","setPosition","setContent","content","setWidth","setHeight","setTitle","bindObserver","MutationObserver","window","observe","attributes","childList","characterData","subtree","startWatchProps","watch","deep","init","onMounted","nextTick","onUpdated","isOpen","onUnmounted","_createVNode","_mergeProps","default"],"mappings":"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"}
package/lib/_utils/map.js CHANGED
@@ -55,8 +55,8 @@ function listToMapPoints(points) {
55
55
  return points;
56
56
  }
57
57
  function setupMapEvents(map, props) {
58
- const cleanup = Object.keys(props).filter((key) => key.startsWith("on") && typeof props[key] === "function").map((propName) => {
59
- const eventName = propName.slice(2).toLowerCase();
58
+ const cleanup = Object.keys(props).filter((key) => key.startsWith("on") && !key.startsWith("onUpdate") && typeof props[key] === "function").map((propName) => {
59
+ const eventName = propName.slice(2).toLocaleLowerCase();
60
60
  const handler = props[propName];
61
61
  const wrapper = (e) => {
62
62
  var _a, _b, _c, _d, _e, _f;
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/_utils/map.ts"],"sourcesContent":["export interface LoaderOptions {\r\n key: string\r\n src: string\r\n addCalToWindow?: boolean\r\n timeout?: number\r\n}\r\n\r\nlet isScriptLoaded = false\r\n\r\nexport function loader(options: LoaderOptions): Promise<void> {\r\n const {\r\n key,\r\n src,\r\n addCalToWindow = true,\r\n timeout = 10000,\r\n } = options\r\n\r\n if (isScriptLoaded && window.BMapGL) {\r\n return Promise.resolve()\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.src = src\r\n script.type = 'text/javascript'\r\n script.defer = true\r\n\r\n const cleanup = () => {\r\n script.onload = null\r\n script.onerror = null\r\n if (document.body.contains(script)) {\r\n document.body.removeChild(script)\r\n }\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n cleanup()\r\n reject(new Error(`Script load timeout: ${src}`))\r\n }, timeout)\r\n\r\n const handleLoad = () => {\r\n clearTimeout(timer)\r\n isScriptLoaded = true\r\n cleanup()\r\n resolve()\r\n }\r\n\r\n if (addCalToWindow) {\r\n (window as any)[key] = handleLoad\r\n } else {\r\n script.onload = handleLoad\r\n }\r\n\r\n script.onerror = () => {\r\n clearTimeout(timer)\r\n cleanup()\r\n reject(new Error(`Failed to load script: ${src}`))\r\n }\r\n\r\n document.body.appendChild(script)\r\n })\r\n}\r\n\r\nexport function listToMapPoints(points?: BMapGL.Point[] | number[][] | string[]): BMapGL.Point[] {\r\n if (!points || points.length === 0) {\r\n return []\r\n }\r\n\r\n const first = points[0]\r\n\r\n if (Array.isArray(first)) {\r\n return (points as number[][]).map(([lng, lat]) => new BMapGL.Point(lng, lat))\r\n }\r\n\r\n if (typeof first === 'string') {\r\n return points as BMapGL.Point[]\r\n }\r\n\r\n return points as BMapGL.Point[]\r\n}\r\n\r\nexport function setupMapEvents(map: any, props: Record<string, any>) {\r\n const cleanup = Object.keys(props)\r\n .filter(key => key.startsWith('on') && typeof props[key] === 'function')\r\n .map((propName) => {\r\n const eventName = propName.slice(2).toLowerCase()\r\n const handler = props[propName]\r\n\r\n const wrapper = (e: any) => {\r\n e.preventDefault?.() || e.domEvent?.preventDefault?.()\r\n e.stopPropagation?.() || e.domEvent?.stopPropagation?.()\r\n handler(e)\r\n }\r\n\r\n map.addEventListener(eventName, wrapper)\r\n return () => map.removeEventListener(eventName, wrapper)\r\n })\r\n\r\n return () => cleanup.forEach(fn => fn())\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map.js","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/_utils/map.ts"],"sourcesContent":["export interface LoaderOptions {\r\n key: string\r\n src: string\r\n addCalToWindow?: boolean\r\n timeout?: number\r\n}\r\n\r\nlet isScriptLoaded = false\r\n\r\nexport function loader(options: LoaderOptions): Promise<void> {\r\n const {\r\n key,\r\n src,\r\n addCalToWindow = true,\r\n timeout = 10000,\r\n } = options\r\n\r\n if (isScriptLoaded && window.BMapGL) {\r\n return Promise.resolve()\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.src = src\r\n script.type = 'text/javascript'\r\n script.defer = true\r\n\r\n const cleanup = () => {\r\n script.onload = null\r\n script.onerror = null\r\n if (document.body.contains(script)) {\r\n document.body.removeChild(script)\r\n }\r\n }\r\n\r\n const timer = setTimeout(() => {\r\n cleanup()\r\n reject(new Error(`Script load timeout: ${src}`))\r\n }, timeout)\r\n\r\n const handleLoad = () => {\r\n clearTimeout(timer)\r\n isScriptLoaded = true\r\n cleanup()\r\n resolve()\r\n }\r\n\r\n if (addCalToWindow) {\r\n (window as any)[key] = handleLoad\r\n } else {\r\n script.onload = handleLoad\r\n }\r\n\r\n script.onerror = () => {\r\n clearTimeout(timer)\r\n cleanup()\r\n reject(new Error(`Failed to load script: ${src}`))\r\n }\r\n\r\n document.body.appendChild(script)\r\n })\r\n}\r\n\r\nexport function listToMapPoints(points?: BMapGL.Point[] | number[][] | string[]): BMapGL.Point[] {\r\n if (!points || points.length === 0) {\r\n return []\r\n }\r\n\r\n const first = points[0]\r\n\r\n if (Array.isArray(first)) {\r\n return (points as number[][]).map(([lng, lat]) => new BMapGL.Point(lng, lat))\r\n }\r\n\r\n if (typeof first === 'string') {\r\n return points as BMapGL.Point[]\r\n }\r\n\r\n return points as BMapGL.Point[]\r\n}\r\n\r\nexport function setupMapEvents(map: any, props: Record<string, any>) {\r\n const cleanup = Object.keys(props)\r\n .filter(key => key.startsWith('on') && !key.startsWith('onUpdate') && typeof props[key] === 'function')\r\n .map((propName) => {\r\n const eventName = propName.slice(2).toLocaleLowerCase()\r\n const handler = props[propName]\r\n\r\n const wrapper = (e: any) => {\r\n e.preventDefault?.() || e.domEvent?.preventDefault?.()\r\n e.stopPropagation?.() || e.domEvent?.stopPropagation?.()\r\n handler(e)\r\n }\r\n\r\n map.addEventListener(eventName, wrapper)\r\n return () => map.removeEventListener(eventName, wrapper)\r\n })\r\n\r\n return () => cleanup.forEach(fn => fn())\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -40,9 +40,9 @@ var custom = /* @__PURE__ */ vue.defineComponent({
40
40
  var _a;
41
41
  return vue.createVNode("div", {
42
42
  "style": "display: none"
43
- }, [vue.withDirectives(vue.createVNode("div", {
43
+ }, [vue.createVNode("div", vue.mergeProps({
44
44
  "ref": controlContentRef
45
- }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]), [[vue.resolveDirective("bind"), attrs]])]);
45
+ }, attrs), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);
46
46
  };
47
47
  }
48
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"custom.js","sources":["../../../../src/control/custom/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/control/custom/src/custom.tsx"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { customControlProps } from './custom-props'\r\n\r\nexport default defineComponent({\r\n name: 'CustomControl',\r\n props: customControlProps,\r\n setup(props, { attrs, slots }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const controlContentRef = ref<HTMLDivElement>()\r\n\r\n let control: BMapGL.Control | null = null\r\n\r\n onMounted(() => {\r\n const { offset, anchor, visible } = props\r\n control = new BMapGL.Control()\r\n control.defaultAnchor = (window as any)[anchor]\r\n control.defaultOffset = new BMapGL.Size(offset.x, offset.y)\r\n control.initialize = (_map: BMapGL.Map) => {\r\n return _map.getContainer().appendChild(controlContentRef.value as Node) as HTMLElement\r\n }\r\n visible && mapInstance().addControl(control)\r\n watch(\r\n () => props.visible,\r\n (n) => {\r\n if (control)\r\n mapInstance()[n ? 'addControl' : 'removeControl'](control)\r\n },\r\n )\r\n })\r\n\r\n onUnmounted(() => {\r\n if (control) {\r\n mapInstance().removeControl(control)\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={controlContentRef} v-bind={attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","customControlProps","setup","attrs","slots","mapInstance","useMapInstance","controlContentRef","ref","control","onMounted","offset","anchor","visible","BMapGL","Control","defaultAnchor","window","defaultOffset","Size","x","y","initialize","_map","getContainer","appendChild","value","addControl","watch","n","onUnmounted","removeControl","_createVNode","_withDirectives","_a","default","call","_resolveDirective"],"mappings":";;;;;;AAIA,iDAA+B;AAAA,EAC7BA,IAAAA,EAAM,eAAA;AAAA,EACNC,KAAAA,EAAOC,8BAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAK,EAAE;AAC3B,IAAA,MAAMC,cAAcC,cAAAA,EAAc;AAElC,IAAA,MAAMC,oBAAoBC,OAAAA,EAAG;AAE7B,IAAA,IAAIC,OAAAA,GAAiC,IAAA;AAErCC,IAAAA,aAAAA,CAAU,MAAK;AACb,MAAA,MAAM;AAAA,QAAEC,MAAAA;AAAAA,QAAQC,MAAAA;AAAAA,QAAQC;AAAAA,OAAO,GAAKb,KAAAA;AACpCS,MAAAA,OAAAA,GAAU,IAAIK,OAAOC,OAAAA;AACrBN,MAAAA,OAAAA,CAAQO,aAAAA,GAAiBC,OAAeL,MAAM,CAAA;AAC9CH,MAAAA,OAAAA,CAAQS,gBAAgB,IAAIJ,MAAAA,CAAOK,KAAKR,MAAAA,CAAOS,CAAAA,EAAGT,OAAOU,CAAC,CAAA;AAC1DZ,MAAAA,OAAAA,CAAQa,aAAcC,CAAAA,IAAAA,KAAoB;AACxC,QAAA,OAAOA,IAAAA,CAAKC,YAAAA,EAAY,CAAGC,WAAAA,CAAYlB,kBAAkBmB,KAAa,CAAA;AAAA,MACxE,CAAA;AACAb,MAAAA,OAAAA,IAAWR,WAAAA,EAAW,CAAGsB,UAAAA,CAAWlB,OAAO,CAAA;AAC3CmB,MAAAA,SAAAA,CACE,MAAM5B,KAAAA,CAAMa,OAAAA,EACXgB,CAAAA,CAAAA,KAAK;AACJ,QAAA,IAAIpB,SACFJ,WAAAA,EAAW,CAAGwB,IAAI,YAAA,GAAe,eAAe,EAAEpB,OAAO,CAAA;AAAA,MAC7D,CAAC,CAAA;AAAA,IAEL,CAAC,CAAA;AAEDqB,IAAAA,eAAAA,CAAY,MAAK;AACf,MAAA,IAAIrB,OAAAA,EAAS;AACXJ,QAAAA,WAAAA,GAAc0B,cAActB,OAAO,CAAA;AAAA,MACrC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAK;;AAAC,MAAA,OAAAuB,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA;AAAA,OAAA,EAAA,CAAAC,kBAAAA,CAAAD,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,KAAA,EAECzB;AAAAA,OAAiB,EAAA,CAAA,CAAkB2B,EAAAA,GAAA9B,KAAAA,CAAM+B,OAAAA,MAAO,QAAAD,EAAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAAA,CAAAE,IAAAA,CAAAhC,KAAA,CAAI,CAAA,CAAA,EAAA,CAAA,CAAAiC,oBAAAA,CAAA,MAAA,GAAzBlC,KAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;EAGhD;AACD,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"custom.js","sources":["../../../../src/control/custom/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/control/custom/src/custom.tsx"],"sourcesContent":["import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { customControlProps } from './custom-props'\r\n\r\nexport default defineComponent({\r\n name: 'CustomControl',\r\n props: customControlProps,\r\n setup(props, { attrs, slots }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const controlContentRef = ref<HTMLDivElement>()\r\n\r\n let control: BMapGL.Control | null = null\r\n\r\n onMounted(() => {\r\n const { offset, anchor, visible } = props\r\n control = new BMapGL.Control()\r\n control.defaultAnchor = (window as any)[anchor]\r\n control.defaultOffset = new BMapGL.Size(offset.x, offset.y)\r\n control.initialize = (_map: BMapGL.Map) => {\r\n return _map.getContainer().appendChild(controlContentRef.value as Node) as HTMLElement\r\n }\r\n visible && mapInstance().addControl(control)\r\n watch(\r\n () => props.visible,\r\n (n) => {\r\n if (control)\r\n mapInstance()[n ? 'addControl' : 'removeControl'](control)\r\n },\r\n )\r\n })\r\n\r\n onUnmounted(() => {\r\n if (control) {\r\n mapInstance().removeControl(control)\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={controlContentRef} {...attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","customControlProps","setup","attrs","slots","mapInstance","useMapInstance","controlContentRef","ref","control","onMounted","offset","anchor","visible","BMapGL","Control","defaultAnchor","window","defaultOffset","Size","x","y","initialize","_map","getContainer","appendChild","value","addControl","watch","n","onUnmounted","removeControl","_createVNode","_mergeProps","default","_a","call"],"mappings":";;;;;;AAIA,iDAA+B;AAAA,EAC7BA,IAAAA,EAAM,eAAA;AAAA,EACNC,KAAAA,EAAOC,8BAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAK,EAAE;AAC3B,IAAA,MAAMC,cAAcC,cAAAA,EAAc;AAElC,IAAA,MAAMC,oBAAoBC,OAAAA,EAAG;AAE7B,IAAA,IAAIC,OAAAA,GAAiC,IAAA;AAErCC,IAAAA,aAAAA,CAAU,MAAK;AACb,MAAA,MAAM;AAAA,QAAEC,MAAAA;AAAAA,QAAQC,MAAAA;AAAAA,QAAQC;AAAAA,OAAO,GAAKb,KAAAA;AACpCS,MAAAA,OAAAA,GAAU,IAAIK,OAAOC,OAAAA;AACrBN,MAAAA,OAAAA,CAAQO,aAAAA,GAAiBC,OAAeL,MAAM,CAAA;AAC9CH,MAAAA,OAAAA,CAAQS,gBAAgB,IAAIJ,MAAAA,CAAOK,KAAKR,MAAAA,CAAOS,CAAAA,EAAGT,OAAOU,CAAC,CAAA;AAC1DZ,MAAAA,OAAAA,CAAQa,aAAcC,CAAAA,IAAAA,KAAoB;AACxC,QAAA,OAAOA,IAAAA,CAAKC,YAAAA,EAAY,CAAGC,WAAAA,CAAYlB,kBAAkBmB,KAAa,CAAA;AAAA,MACxE,CAAA;AACAb,MAAAA,OAAAA,IAAWR,WAAAA,EAAW,CAAGsB,UAAAA,CAAWlB,OAAO,CAAA;AAC3CmB,MAAAA,SAAAA,CACE,MAAM5B,KAAAA,CAAMa,OAAAA,EACXgB,CAAAA,CAAAA,KAAK;AACJ,QAAA,IAAIpB,SACFJ,WAAAA,EAAW,CAAGwB,IAAI,YAAA,GAAe,eAAe,EAAEpB,OAAO,CAAA;AAAA,MAC7D,CAAC,CAAA;AAAA,IAEL,CAAC,CAAA;AAEDqB,IAAAA,eAAAA,CAAY,MAAK;AACf,MAAA,IAAIrB,OAAAA,EAAS;AACXJ,QAAAA,WAAAA,GAAc0B,cAActB,OAAO,CAAA;AAAA,MACrC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAK;;AAAC,MAAA,OAAAuB,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA;AAAA,OAAA,EAAA,CAAAA,eAAAA,QAAAC,cAAAA,CAAA;AAAA,QAAA,KAAA,EAEC1B;AAAAA,SAAuBJ,KAAK,CAAA,EAAA,CAAA,MAAGC,MAAM8B,OAAAA,MAAO,IAAA,IAAAC,EAAAA,KAAA,MAAA,GAAA,SAAAA,EAAAA,CAAAC,IAAAA,CAAAhC,KAAA,CAAI,CAAA,CAAA,CAAA,CAAA;AAAA;EAGhE;AACD,CAAA,CAAA;;;;"}
@@ -31,5 +31,6 @@ export declare const infoWindowProps: {
31
31
  readonly default: true;
32
32
  };
33
33
  readonly 'onUpdate:show': FunctionConstructor;
34
+ readonly title: StringConstructor;
34
35
  };
35
36
  export type InfoWindowProps = ExtractPublicPropTypes<typeof infoWindowProps>;
@@ -24,7 +24,8 @@ const infoWindowProps = {
24
24
  type: Boolean,
25
25
  default: true
26
26
  },
27
- "onUpdate:show": Function
27
+ "onUpdate:show": Function,
28
+ "title": String
28
29
  };
29
30
 
30
31
  exports.infoWindowProps = infoWindowProps;
@@ -1 +1 @@
1
- {"version":3,"file":"info-window-props.js","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport const infoWindowProps = {\r\n 'show': Boolean,\r\n 'offset': {\r\n type: Object as PropType<{ x: number, y: number }>,\r\n default: { x: 0, y: 0 },\r\n },\r\n 'width': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'height': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'maxWidth': Number,\r\n 'position': Object as PropType<BMapGL.Point | [number, number]>,\r\n 'enableAutoPan': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'enableCloseOnClick': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'onUpdate:show': Function,\r\n} as const\r\n\r\nexport type InfoWindowProps = ExtractPublicPropTypes<typeof infoWindowProps>\r\n"],"names":[],"mappings":";;AAGO,MAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAC,GACtB;AAAA,EACD,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,MAAA;AAAA,EACZ,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,oBAAA,EAAsB;AAAA,IACpB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,eAAA,EAAiB;;;;;"}
1
+ {"version":3,"file":"info-window-props.js","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport const infoWindowProps = {\r\n 'show': Boolean,\r\n 'offset': {\r\n type: Object as PropType<{ x: number, y: number }>,\r\n default: { x: 0, y: 0 },\r\n },\r\n 'width': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'height': {\r\n type: Number,\r\n default: 0,\r\n },\r\n 'maxWidth': Number,\r\n 'position': Object as PropType<BMapGL.Point | [number, number]>,\r\n 'enableAutoPan': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'enableCloseOnClick': {\r\n type: Boolean,\r\n default: true,\r\n },\r\n 'onUpdate:show': Function,\r\n 'title': String,\r\n} as const\r\n\r\nexport type InfoWindowProps = ExtractPublicPropTypes<typeof infoWindowProps>\r\n"],"names":[],"mappings":";;AAGO,MAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAC,GACtB;AAAA,EACD,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,UAAA,EAAY,MAAA;AAAA,EACZ,UAAA,EAAY,MAAA;AAAA,EACZ,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,oBAAA,EAAsB;AAAA,IACpB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,eAAA,EAAiB,QAAA;AAAA,EACjB,OAAA,EAAS;;;;;"}
@@ -29,6 +29,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
29
29
  readonly default: true;
30
30
  };
31
31
  readonly 'onUpdate:show': FunctionConstructor;
32
+ readonly title: StringConstructor;
32
33
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
33
34
  readonly show: BooleanConstructor;
34
35
  readonly offset: {
@@ -60,6 +61,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
60
61
  readonly default: true;
61
62
  };
62
63
  readonly 'onUpdate:show': FunctionConstructor;
64
+ readonly title: StringConstructor;
63
65
  }>> & Readonly<{}>, {
64
66
  readonly offset: {
65
67
  x: number;
@@ -21,26 +21,13 @@ var infoWindow = /* @__PURE__ */ vue.defineComponent({
21
21
  return (_a = props["onUpdate:show"]) === null || _a === void 0 ? void 0 : _a.call(props, value);
22
22
  }
23
23
  });
24
- const openInfoWindow = () => {
25
- const {
26
- position
27
- } = props;
28
- if (!position || !infoWindow) return;
29
- const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
30
- mapInstance().openInfoWindow(infoWindow, point);
31
- visible.value = true;
32
- };
33
- const closeInfoWindow = () => {
24
+ const removeInfoWindow = () => {
34
25
  var _a;
35
- if (!infoWindow) return;
36
- (_a = infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.hide) === null || _a === void 0 ? void 0 : _a.call(infoWindow);
37
- visible.value = false;
38
- };
39
- const setPosition = (position) => {
40
- openInfoWindow();
41
- const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
42
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setPosition(point);
43
- if (!visible.value) closeInfoWindow();
26
+ if (infoWindow) {
27
+ (_a = infoWindow.hide) === null || _a === void 0 ? void 0 : _a.call(infoWindow);
28
+ mapInstance().removeOverlay(infoWindow);
29
+ infoWindow = null;
30
+ }
44
31
  };
45
32
  const redraw = () => {
46
33
  var _a, _b;
@@ -51,35 +38,22 @@ var infoWindow = /* @__PURE__ */ vue.defineComponent({
51
38
  };
52
39
  });
53
40
  };
54
- const setContent = (content) => {
55
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setContent(content);
56
- };
57
- const setWidth = (width) => {
58
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setWidth(width);
59
- };
60
- const setHeight = (height) => {
61
- infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setHeight(height);
62
- };
63
- const startWatchProps = () => {
64
- vue.watch(() => props.position, setPosition, {
65
- deep: true
66
- });
67
- vue.watch(() => props.width, setWidth);
68
- vue.watch(() => props.height, setHeight);
69
- vue.watch(() => props.show, () => props.show ? openInfoWindow() : closeInfoWindow());
70
- };
71
- vue.onMounted(() => {
41
+ const createInfoWindow = () => {
42
+ var _a;
72
43
  const {
73
44
  width,
74
45
  height,
46
+ title,
75
47
  maxWidth,
76
48
  offset,
77
49
  enableAutoPan,
50
+ position,
78
51
  enableCloseOnClick
79
52
  } = props;
80
53
  infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value, {
81
54
  width,
82
55
  height,
56
+ title,
83
57
  maxWidth,
84
58
  offset: new BMapGL.Size(offset.x, offset.y),
85
59
  enableAutoPan,
@@ -92,40 +66,82 @@ var infoWindow = /* @__PURE__ */ vue.defineComponent({
92
66
  if (!props.show) visible.value = true;
93
67
  });
94
68
  mapInstance().addOverlay(infoWindow);
69
+ const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
70
+ (_a = mapInstance()) === null || _a === void 0 ? void 0 : _a.openInfoWindow(infoWindow, point);
95
71
  redraw();
72
+ };
73
+ const setPosition = (position) => {
74
+ const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position;
75
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setPosition(point);
76
+ };
77
+ const setContent = (content) => {
78
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setContent(content);
79
+ };
80
+ const setWidth = (width) => {
81
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setWidth(width);
82
+ };
83
+ const setHeight = (height) => {
84
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setHeight(height);
85
+ };
86
+ const setTitle = (title) => {
87
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.setTitle(title);
88
+ };
89
+ const bindObserver = () => {
90
+ const MutationObserver = window.MutationObserver;
91
+ if (!MutationObserver) {
92
+ return;
93
+ }
94
+ new MutationObserver(() => {
95
+ infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.redraw();
96
+ }).observe(infoWindowContentRef.value, {
97
+ attributes: true,
98
+ childList: true,
99
+ characterData: true,
100
+ subtree: true
101
+ });
102
+ };
103
+ const startWatchProps = () => {
104
+ vue.watch(() => props.position, setPosition, {
105
+ deep: true
106
+ });
107
+ vue.watch(() => props.width, setWidth);
108
+ vue.watch(() => props.height, setHeight);
109
+ vue.watch(() => props.title, setTitle);
110
+ vue.watch(() => props.show, () => props.show ? createInfoWindow() : removeInfoWindow());
111
+ };
112
+ const init = () => {
96
113
  if (props.show) {
97
- vue.nextTick(() => {
98
- openInfoWindow();
99
- vue.nextTick(() => {
100
- if (infoWindow && "_visible" in infoWindow) {
101
- !infoWindow._visible && (visible.value = false);
102
- } else {
103
- !(infoWindow === null || infoWindow === void 0 ? void 0 : infoWindow.isOpen()) && (visible.value = false);
104
- }
105
- });
106
- });
114
+ createInfoWindow();
107
115
  }
116
+ bindObserver();
108
117
  startWatchProps();
118
+ };
119
+ vue.onMounted(() => {
120
+ if (!infoWindowContentRef.value) {
121
+ vue.nextTick(() => init());
122
+ } else {
123
+ init();
124
+ }
109
125
  });
110
126
  vue.onUpdated(() => {
111
127
  var _a;
112
128
  if (infoWindow && infoWindow.isOpen()) {
113
129
  setContent((_a = infoWindowContentRef.value) !== null && _a !== void 0 ? _a : "");
130
+ redraw();
114
131
  }
115
132
  });
116
133
  vue.onUnmounted(() => {
117
134
  if (infoWindow) {
118
- mapInstance().removeOverlay(infoWindow);
119
- redraw();
135
+ removeInfoWindow();
120
136
  }
121
137
  });
122
138
  return () => {
123
139
  var _a;
124
140
  return vue.createVNode("div", {
125
141
  "style": "display: none"
126
- }, [vue.withDirectives(vue.createVNode("div", {
142
+ }, [vue.createVNode("div", vue.mergeProps({
127
143
  "ref": infoWindowContentRef
128
- }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]), [[vue.resolveDirective("bind"), attrs]])]);
144
+ }, attrs), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);
129
145
  };
130
146
  }
131
147
  });
@@ -1 +1 @@
1
- {"version":3,"file":"info-window.js","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, onUnmounted, onUpdated, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { infoWindowProps } from './info-window-props'\r\n\r\nexport default defineComponent({\r\n name: 'InfoWindow',\r\n props: infoWindowProps,\r\n setup(props, { slots, attrs }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const infoWindowContentRef = ref<HTMLDivElement>()\r\n\r\n let infoWindow: BMapGL.InfoWindow | null = null\r\n\r\n const visible = computed({\r\n get: () => props.show,\r\n set: value => props['onUpdate:show']?.(value),\r\n })\r\n\r\n const openInfoWindow = () => {\r\n const { position } = props\r\n if (!position || !infoWindow)\r\n return\r\n const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position\r\n ;(mapInstance() as any).openInfoWindow(infoWindow, point)\r\n visible.value = true\r\n }\r\n\r\n const closeInfoWindow = () => {\r\n if (!infoWindow)\r\n return\r\n infoWindow?.hide?.()\r\n visible.value = false\r\n }\r\n\r\n const setPosition = (position?: BMapGL.Point | [number, number]) => {\r\n openInfoWindow()\r\n const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position\r\n ;(infoWindow as any)?.setPosition(point)\r\n if (!visible.value)\r\n closeInfoWindow()\r\n }\r\n\r\n const redraw = () => {\r\n infoWindow?.redraw()\r\n Array.prototype.forEach.call(infoWindowContentRef.value?.querySelectorAll('img') ?? [], (imgEl) => {\r\n imgEl.onload = () => {\r\n infoWindow?.redraw()\r\n }\r\n })\r\n }\r\n\r\n const setContent = (content: string | HTMLElement) => {\r\n infoWindow?.setContent(content)\r\n }\r\n\r\n const setWidth = (width: number) => {\r\n infoWindow?.setWidth(width)\r\n }\r\n\r\n const setHeight = (height: number) => {\r\n infoWindow?.setHeight(height)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.position, setPosition, { deep: true })\r\n watch(() => props.width, setWidth)\r\n watch(() => props.height, setHeight)\r\n watch(() => props.show, () => props.show ? openInfoWindow() : closeInfoWindow())\r\n }\r\n\r\n onMounted(() => {\r\n const { width, height, maxWidth, offset, enableAutoPan, enableCloseOnClick } = props\r\n infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value!, {\r\n width,\r\n height,\r\n maxWidth,\r\n offset: new BMapGL.Size(offset.x, offset.y),\r\n enableAutoPan,\r\n enableCloseOnClick,\r\n })\r\n infoWindow.addEventListener('close', () => {\r\n if (props.show)\r\n visible.value = false\r\n })\r\n infoWindow.addEventListener('open', () => {\r\n if (!props.show)\r\n visible.value = true\r\n })\r\n mapInstance().addOverlay(infoWindow)\r\n redraw()\r\n\r\n if (props.show) {\r\n nextTick(() => {\r\n openInfoWindow()\r\n nextTick(() => {\r\n if (infoWindow && '_visible' in infoWindow) {\r\n !infoWindow._visible && (visible.value = false)\r\n } else {\r\n !infoWindow?.isOpen() && (visible.value = false)\r\n }\r\n })\r\n })\r\n }\r\n\r\n startWatchProps()\r\n })\r\n\r\n onUpdated(() => {\r\n if (infoWindow && infoWindow.isOpen()) {\r\n setContent(infoWindowContentRef.value ?? '')\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n if (infoWindow) {\r\n mapInstance().removeOverlay(infoWindow)\r\n redraw()\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={infoWindowContentRef} v-bind={attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","infoWindowProps","setup","slots","attrs","mapInstance","useMapInstance","infoWindowContentRef","ref","infoWindow","visible","computed","get","show","set","value","_a","call","openInfoWindow","position","point","Array","isArray","BMapGL","Point","closeInfoWindow","hide","setPosition","redraw","prototype","forEach","_b","querySelectorAll","imgEl","onload","setContent","content","setWidth","width","setHeight","height","startWatchProps","watch","deep","onMounted","maxWidth","offset","enableAutoPan","enableCloseOnClick","InfoWindow","Size","x","y","addEventListener","addOverlay","nextTick","_visible","isOpen","onUpdated","onUnmounted","removeOverlay","_createVNode","_withDirectives","default","_resolveDirective"],"mappings":"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"}
1
+ {"version":3,"file":"info-window.js","sources":["../../../../src/overlay/info-window/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/overlay/info-window/src/info-window.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, onUnmounted, onUpdated, ref, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { infoWindowProps } from './info-window-props'\r\n\r\nexport default defineComponent({\r\n name: 'InfoWindow',\r\n props: infoWindowProps,\r\n setup(props, { slots, attrs }) {\r\n const mapInstance = useMapInstance()\r\n\r\n const infoWindowContentRef = ref<HTMLDivElement>()\r\n\r\n let infoWindow: BMapGL.InfoWindow | null = null\r\n\r\n const visible = computed({\r\n get: () => props.show,\r\n set: value => props['onUpdate:show']?.(value),\r\n })\r\n\r\n const removeInfoWindow = () => {\r\n if (infoWindow) {\r\n infoWindow.hide?.()\r\n mapInstance().removeOverlay(infoWindow)\r\n infoWindow = null\r\n }\r\n }\r\n\r\n const redraw = () => {\r\n infoWindow?.redraw()\r\n Array.prototype.forEach.call(infoWindowContentRef.value?.querySelectorAll('img') ?? [], (imgEl) => {\r\n imgEl.onload = () => {\r\n infoWindow?.redraw()\r\n }\r\n })\r\n }\r\n\r\n const createInfoWindow = () => {\r\n const { width, height, title, maxWidth, offset, enableAutoPan, position, enableCloseOnClick } = props\r\n infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value!, {\r\n width,\r\n height,\r\n title,\r\n maxWidth,\r\n offset: new BMapGL.Size(offset.x, offset.y),\r\n enableAutoPan,\r\n enableCloseOnClick,\r\n })\r\n infoWindow.addEventListener('close', () => {\r\n if (props.show)\r\n visible.value = false\r\n })\r\n infoWindow.addEventListener('open', () => {\r\n if (!props.show)\r\n visible.value = true\r\n })\r\n mapInstance().addOverlay(infoWindow)\r\n const point = Array.isArray(position) ? new BMapGL.Point(position[0], position[1]) : position\r\n ;(mapInstance() as any)?.openInfoWindow(infoWindow, point)\r\n redraw()\r\n }\r\n\r\n const setPosition = (position: any) => {\r\n const point = Array.isArray(position)\r\n ? new BMapGL.Point(position[0], position[1])\r\n : position\r\n ;(infoWindow as any)?.setPosition(point)\r\n }\r\n\r\n const setContent = (content: string | HTMLElement) => {\r\n infoWindow?.setContent(content)\r\n }\r\n\r\n const setWidth = (width: number) => {\r\n infoWindow?.setWidth(width)\r\n }\r\n\r\n const setHeight = (height: number) => {\r\n infoWindow?.setHeight(height)\r\n }\r\n\r\n const setTitle = (title?: string) => {\r\n infoWindow?.setTitle(title!)\r\n }\r\n\r\n const bindObserver = () => {\r\n const MutationObserver = window.MutationObserver\r\n if (!MutationObserver) {\r\n return\r\n }\r\n new MutationObserver(() => {\r\n infoWindow?.redraw()\r\n }).observe(infoWindowContentRef.value!, { attributes: true, childList: true, characterData: true, subtree: true })\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.position, setPosition, { deep: true })\r\n watch(() => props.width, setWidth)\r\n watch(() => props.height, setHeight)\r\n watch(() => props.title, setTitle)\r\n watch(() => props.show, () => props.show ? createInfoWindow() : removeInfoWindow())\r\n }\r\n\r\n const init = () => {\r\n if (props.show) {\r\n createInfoWindow()\r\n }\r\n\r\n bindObserver()\r\n\r\n startWatchProps()\r\n }\r\n\r\n onMounted(() => {\r\n if (!infoWindowContentRef.value) {\r\n nextTick(() => init())\r\n } else {\r\n init()\r\n }\r\n })\r\n\r\n onUpdated(() => {\r\n if (infoWindow && infoWindow.isOpen()) {\r\n setContent(infoWindowContentRef.value ?? '')\r\n redraw()\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n if (infoWindow) {\r\n removeInfoWindow()\r\n }\r\n })\r\n\r\n return () => (\r\n <div style=\"display: none\">\r\n <div ref={infoWindowContentRef} {...attrs}>{slots.default?.()}</div>\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","infoWindowProps","setup","slots","attrs","mapInstance","useMapInstance","infoWindowContentRef","ref","infoWindow","visible","computed","get","show","set","value","_a","call","removeInfoWindow","hide","removeOverlay","redraw","Array","prototype","forEach","_b","querySelectorAll","imgEl","onload","createInfoWindow","width","height","title","maxWidth","offset","enableAutoPan","position","enableCloseOnClick","BMapGL","InfoWindow","Size","x","y","addEventListener","addOverlay","point","isArray","Point","openInfoWindow","setPosition","setContent","content","setWidth","setHeight","setTitle","bindObserver","MutationObserver","window","observe","attributes","childList","characterData","subtree","startWatchProps","watch","deep","init","onMounted","nextTick","onUpdated","isOpen","onUnmounted","_createVNode","_mergeProps","default"],"mappings":";;;;;;AAIA,qDAA+B;AAAA,EAC7BA,IAAAA,EAAM,YAAA;AAAA,EACNC,KAAAA,EAAOC,+BAAAA;AAAAA,EACPC,MAAMF,KAAAA,EAAO;AAAA,IAAEG,KAAAA;AAAAA,IAAOC;AAAAA,GAAK,EAAE;AAC3B,IAAA,MAAMC,cAAcC,cAAAA,EAAc;AAElC,IAAA,MAAMC,uBAAuBC,OAAAA,EAAG;AAEhC,IAAA,IAAIC,UAAAA,GAAuC,IAAA;AAE3C,IAAA,MAAMC,UAAUC,YAAAA,CAAS;AAAA,MACvBC,GAAAA,EAAKA,MAAMZ,KAAAA,CAAMa,IAAAA;AAAAA,MACjBC,KAAKC,CAAAA,KAAAA;;AAAS,QAAA,OAAA,CAAAC,EAAAA,GAAAhB,KAAAA,CAAM,eAAe,CAAA,MAAC,IAAA,IAAAgB,EAAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAAA,CAAAC,IAAAA,CAAAjB,KAAAA,EAAGe,KAAK,CAAA;AAAA,MAAC;AAAA,KAC9C,CAAA;AAED,IAAA,MAAMG,mBAAmBA,MAAK;;AAC5B,MAAA,IAAIT,UAAAA,EAAY;AACd,QAAA,CAAAO,EAAAA,GAAAP,WAAWU,IAAAA,MAAI,IAAA,IAAAH,OAAA,MAAA,GAAA,MAAA,GAAAA,EAAAA,CAAAC,IAAAA,CAAAR,UAAA,CAAA;AACfJ,QAAAA,WAAAA,GAAce,cAAcX,UAAU,CAAA;AACtCA,QAAAA,UAAAA,GAAa,IAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAMY,SAASA,MAAK;;AAClBZ,MAAAA,UAAAA,aAAAA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,WAAYY,MAAAA;AACZC,MAAAA,KAAAA,CAAMC,SAAAA,CAAUC,QAAQP,IAAAA,CAAAA,CAAKQ,EAAAA,GAAAA,CAAAT,KAAAT,oBAAAA,CAAqBQ,KAAAA,MAAK,QAAAC,EAAAA,KAAA,MAAA,GAAA,SAAAA,EAAAA,CAAEU,gBAAAA,CAAiB,KAAK,CAAA,MAAC,IAAA,IAAAD,OAAA,MAAA,GAAAA,EAAAA,GAAI,EAAA,EAAKE,CAAAA,KAAAA,KAAS;AAChGA,QAAAA,KAAAA,CAAMC,SAAS,MAAK;AAClBnB,UAAAA,UAAAA,aAAAA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,WAAYY,MAAAA;QACd,CAAA;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAMQ,mBAAmBA,MAAK;;AAC5B,MAAA,MAAM;AAAA,QAAEC,KAAAA;AAAAA,QAAOC,MAAAA;AAAAA,QAAQC,KAAAA;AAAAA,QAAOC,QAAAA;AAAAA,QAAUC,MAAAA;AAAAA,QAAQC,aAAAA;AAAAA,QAAeC,QAAAA;AAAAA,QAAUC;AAAAA,OAAkB,GAAKrC,KAAAA;AAChGS,MAAAA,UAAAA,GAAa,IAAI6B,MAAAA,CAAOC,UAAAA,CAAWhC,oBAAAA,CAAqBQ,KAAAA,EAAQ;AAAA,QAC9De,KAAAA;AAAAA,QACAC,MAAAA;AAAAA,QACAC,KAAAA;AAAAA,QACAC,QAAAA;AAAAA,QACAC,QAAQ,IAAII,MAAAA,CAAOE,KAAKN,MAAAA,CAAOO,CAAAA,EAAGP,OAAOQ,CAAC,CAAA;AAAA,QAC1CP,aAAAA;AAAAA,QACAE;AAAAA,OACD,CAAA;AACD5B,MAAAA,UAAAA,CAAWkC,gBAAAA,CAAiB,SAAS,MAAK;AACxC,QAAA,IAAI3C,KAAAA,CAAMa,IAAAA,EACRH,OAAAA,CAAQK,KAAAA,GAAQ,KAAA;AAAA,MACpB,CAAC,CAAA;AACDN,MAAAA,UAAAA,CAAWkC,gBAAAA,CAAiB,QAAQ,MAAK;AACvC,QAAA,IAAI,CAAC3C,KAAAA,CAAMa,IAAAA,EACTH,OAAAA,CAAQK,KAAAA,GAAQ,IAAA;AAAA,MACpB,CAAC,CAAA;AACDV,MAAAA,WAAAA,GAAcuC,WAAWnC,UAAU,CAAA;AACnC,MAAA,MAAMoC,KAAAA,GAAQvB,KAAAA,CAAMwB,OAAAA,CAAQV,QAAQ,IAAI,IAAIE,MAAAA,CAAOS,KAAAA,CAAMX,QAAAA,CAAS,CAAC,CAAA,EAAGA,QAAAA,CAAS,CAAC,CAAC,CAAA,GAAIA,QAAAA;AACpF,MAAA,CAAApB,EAAAA,GAACX,WAAAA,QAAqB,IAAA,IAAAW,EAAAA,KAAA,SAAA,MAAA,GAAAA,EAAAA,CAAEgC,cAAAA,CAAevC,UAAAA,EAAYoC,KAAK,CAAA;AACzDxB,MAAAA,MAAAA;IACF,CAAA;AAEA,IAAA,MAAM4B,cAAeb,CAAAA,QAAAA,KAAiB;AACpC,MAAA,MAAMS,KAAAA,GAAQvB,KAAAA,CAAMwB,OAAAA,CAAQV,QAAQ,IAChC,IAAIE,MAAAA,CAAOS,KAAAA,CAAMX,QAAAA,CAAS,CAAC,CAAA,EAAGA,QAAAA,CAAS,CAAC,CAAC,CAAA,GACzCA,QAAAA;AACF3B,MAAAA,UAAAA,KAAkB,QAAlBA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,UAAAA,CAAoBwC,YAAYJ,KAAK,CAAA;AAAA,IACzC,CAAA;AAEA,IAAA,MAAMK,aAAcC,CAAAA,OAAAA,KAAiC;AACnD1C,MAAAA,UAAAA,KAAU,QAAVA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,UAAAA,CAAYyC,WAAWC,OAAO,CAAA;AAAA,IAChC,CAAA;AAEA,IAAA,MAAMC,WAAYtB,CAAAA,KAAAA,KAAiB;AACjCrB,MAAAA,UAAAA,KAAU,QAAVA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,UAAAA,CAAY2C,SAAStB,KAAK,CAAA;AAAA,IAC5B,CAAA;AAEA,IAAA,MAAMuB,YAAatB,CAAAA,MAAAA,KAAkB;AACnCtB,MAAAA,UAAAA,KAAU,QAAVA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,UAAAA,CAAY4C,UAAUtB,MAAM,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAMuB,WAAYtB,CAAAA,KAAAA,KAAkB;AAClCvB,MAAAA,UAAAA,KAAU,QAAVA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,UAAAA,CAAY6C,SAAStB,KAAM,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,MAAMuB,eAAeA,MAAK;AACxB,MAAA,MAAMC,mBAAmBC,MAAAA,CAAOD,gBAAAA;AAChC,MAAA,IAAI,CAACA,gBAAAA,EAAkB;AACrB,QAAA;AAAA,MACF;AACA,MAAA,IAAIA,iBAAiB,MAAK;AACxB/C,QAAAA,UAAAA,aAAAA,UAAAA,KAAU,MAAA,GAAA,MAAA,GAAVA,WAAYY,MAAAA;MACd,CAAC,CAAA,CAAEqC,OAAAA,CAAQnD,oBAAAA,CAAqBQ,KAAAA,EAAQ;AAAA,QAAE4C,UAAAA,EAAY,IAAA;AAAA,QAAMC,SAAAA,EAAW,IAAA;AAAA,QAAMC,aAAAA,EAAe,IAAA;AAAA,QAAMC,OAAAA,EAAS;AAAA,OAAM,CAAA;AAAA,IACnH,CAAA;AAEA,IAAA,MAAMC,kBAAkBA,MAAK;AAC3BC,MAAAA,SAAAA,CAAM,MAAMhE,KAAAA,CAAMoC,QAAAA,EAAUa,WAAAA,EAAa;AAAA,QAAEgB,IAAAA,EAAM;AAAA,OAAM,CAAA;AACvDD,MAAAA,SAAAA,CAAM,MAAMhE,KAAAA,CAAM8B,KAAAA,EAAOsB,QAAQ,CAAA;AACjCY,MAAAA,SAAAA,CAAM,MAAMhE,KAAAA,CAAM+B,MAAAA,EAAQsB,SAAS,CAAA;AACnCW,MAAAA,SAAAA,CAAM,MAAMhE,KAAAA,CAAMgC,KAAAA,EAAOsB,QAAQ,CAAA;AACjCU,MAAAA,SAAAA,CAAM,MAAMhE,MAAMa,IAAAA,EAAM,MAAMb,MAAMa,IAAAA,GAAOgB,gBAAAA,EAAgB,GAAKX,gBAAAA,EAAkB,CAAA;AAAA,IACpF,CAAA;AAEA,IAAA,MAAMgD,OAAOA,MAAK;AAChB,MAAA,IAAIlE,MAAMa,IAAAA,EAAM;AACdgB,QAAAA,gBAAAA;MACF;AAEA0B,MAAAA,YAAAA;AAEAQ,MAAAA,eAAAA;IACF,CAAA;AAEAI,IAAAA,aAAAA,CAAU,MAAK;AACb,MAAA,IAAI,CAAC5D,qBAAqBQ,KAAAA,EAAO;AAC/BqD,QAAAA,YAAAA,CAAS,MAAMF,MAAM,CAAA;AAAA,MACvB,CAAA,MAAO;AACLA,QAAAA,IAAAA;MACF;AAAA,IACF,CAAC,CAAA;AAEDG,IAAAA,aAAAA,CAAU,MAAK;;AACb,MAAA,IAAI5D,UAAAA,IAAcA,UAAAA,CAAW6D,MAAAA,EAAM,EAAI;AACrCpB,QAAAA,UAAAA,CAAAA,MAAW3C,oBAAAA,CAAqBQ,KAAAA,MAAK,QAAAC,EAAAA,KAAA,MAAA,GAAAA,KAAI,EAAE,CAAA;AAC3CK,QAAAA,MAAAA;MACF;AAAA,IACF,CAAC,CAAA;AAEDkD,IAAAA,eAAAA,CAAY,MAAK;AACf,MAAA,IAAI9D,UAAAA,EAAY;AACdS,QAAAA,gBAAAA;MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAK;;AAAC,MAAA,OAAAsD,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA;AAAA,OAAA,EAAA,CAAAA,eAAAA,QAAAC,cAAAA,CAAA;AAAA,QAAA,KAAA,EAEClE;AAAAA,SAA0BH,KAAK,CAAA,EAAA,CAAA,MAAGD,MAAMuE,OAAAA,MAAO,IAAA,IAAA1D,EAAAA,KAAA,MAAA,GAAA,SAAAA,EAAAA,CAAAC,IAAAA,CAAAd,KAAA,CAAI,CAAA,CAAA,CAAA,CAAA;AAAA;EAGnE;AACD,CAAA,CAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spuermomonga/vue3-bmapgl",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "Baidu Map GL encapsulation for Vue 3",
5
5
  "author": "SpuerMomonga <spuermomonga@qq.com>",
6
6
  "license": "MIT",