@spuermomonga/vue3-bmapgl 0.0.13 → 0.0.15

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.
Files changed (60) hide show
  1. package/dist/index.js +169 -3
  2. package/dist/index.prod.js +1 -1
  3. package/es/_utils/call.d.ts +1 -0
  4. package/es/_utils/call.mjs.map +1 -1
  5. package/es/_utils/index.mjs +1 -1
  6. package/es/_utils/map.d.ts +1 -0
  7. package/es/_utils/map.mjs +16 -1
  8. package/es/_utils/map.mjs.map +1 -1
  9. package/es/components.d.ts +1 -0
  10. package/es/components.mjs +2 -0
  11. package/es/components.mjs.map +1 -1
  12. package/es/control/custom/src/custom.mjs +3 -3
  13. package/es/control/custom/src/custom.mjs.map +1 -1
  14. package/es/index.mjs +2 -0
  15. package/es/index.mjs.map +1 -1
  16. package/es/map/src/map-props.d.ts +4 -1
  17. package/es/map/src/map-props.mjs +4 -1
  18. package/es/map/src/map-props.mjs.map +1 -1
  19. package/es/map/src/map.d.ts +6 -0
  20. package/es/map/src/map.mjs +4 -0
  21. package/es/map/src/map.mjs.map +1 -1
  22. package/es/overlay/info-window/index.d.ts +2 -0
  23. package/es/overlay/info-window/index.mjs +1 -0
  24. package/es/overlay/info-window/index.mjs.map +1 -1
  25. package/es/overlay/info-window/src/info-window-props.d.ts +35 -0
  26. package/es/overlay/info-window/src/info-window-props.mjs +27 -0
  27. package/es/overlay/info-window/src/info-window-props.mjs.map +1 -1
  28. package/es/overlay/info-window/src/info-window.d.ts +73 -1
  29. package/es/overlay/info-window/src/info-window.mjs +124 -3
  30. package/es/overlay/info-window/src/info-window.mjs.map +1 -1
  31. package/lib/_utils/call.d.ts +1 -0
  32. package/lib/_utils/call.js.map +1 -1
  33. package/lib/_utils/index.js +1 -0
  34. package/lib/_utils/index.js.map +1 -1
  35. package/lib/_utils/map.d.ts +1 -0
  36. package/lib/_utils/map.js +16 -0
  37. package/lib/_utils/map.js.map +1 -1
  38. package/lib/components.d.ts +1 -0
  39. package/lib/components.js +4 -0
  40. package/lib/components.js.map +1 -1
  41. package/lib/control/custom/src/custom.js +2 -2
  42. package/lib/control/custom/src/custom.js.map +1 -1
  43. package/lib/index.js +4 -0
  44. package/lib/index.js.map +1 -1
  45. package/lib/map/src/map-props.d.ts +4 -1
  46. package/lib/map/src/map-props.js +4 -1
  47. package/lib/map/src/map-props.js.map +1 -1
  48. package/lib/map/src/map.d.ts +6 -0
  49. package/lib/map/src/map.js +4 -0
  50. package/lib/map/src/map.js.map +1 -1
  51. package/lib/overlay/info-window/index.d.ts +2 -0
  52. package/lib/overlay/info-window/index.js +2 -0
  53. package/lib/overlay/info-window/index.js.map +1 -1
  54. package/lib/overlay/info-window/src/info-window-props.d.ts +35 -0
  55. package/lib/overlay/info-window/src/info-window-props.js +28 -0
  56. package/lib/overlay/info-window/src/info-window-props.js.map +1 -1
  57. package/lib/overlay/info-window/src/info-window.d.ts +73 -1
  58. package/lib/overlay/info-window/src/info-window.js +123 -2
  59. package/lib/overlay/info-window/src/info-window.js.map +1 -1
  60. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -63,6 +63,20 @@
63
63
  }
64
64
  return points;
65
65
  }
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();
69
+ const handler = props[propName];
70
+ const wrapper = (e) => {
71
+ e.preventDefault?.() || e.domEvent?.preventDefault?.();
72
+ e.stopPropagation?.() || e.domEvent?.stopPropagation?.();
73
+ handler(e);
74
+ };
75
+ map.addEventListener(eventName, wrapper);
76
+ return () => map.removeEventListener(eventName, wrapper);
77
+ });
78
+ return () => cleanup.forEach((fn) => fn());
79
+ }
66
80
 
67
81
  function ensureValidVNode(vnodes) {
68
82
  return vnodes.some((child) => {
@@ -182,7 +196,10 @@
182
196
  default: void 0
183
197
  },
184
198
  displayOptions: Object,
185
- onInitd: Function
199
+ onInitd: Function,
200
+ onClick: Function,
201
+ onDblclick: Function,
202
+ onMousemove: Function
186
203
  };
187
204
 
188
205
  function styleInject(css, ref) {
@@ -229,6 +246,7 @@
229
246
  } = useConfig(props);
230
247
  const contentRef = vue.ref();
231
248
  let map = null;
249
+ let cleanup;
232
250
  const initd = vue.ref(false);
233
251
  vue.provide(mapInjectionKey, {
234
252
  mapInstance: () => map
@@ -316,6 +334,7 @@
316
334
  onInitd?.({
317
335
  map
318
336
  });
337
+ cleanup = setupMapEvents(map, props);
319
338
  initd.value = true;
320
339
  };
321
340
  vue.onMounted(() => {
@@ -328,6 +347,7 @@
328
347
  vue.onUnmounted(() => {
329
348
  if (map) {
330
349
  try {
350
+ cleanup?.();
331
351
  map?.destroy();
332
352
  } catch (error) {
333
353
  console.error(`[Vue3 BMapGL]: ${error.message}`);
@@ -401,9 +421,9 @@
401
421
  });
402
422
  return () => vue.createVNode("div", {
403
423
  "style": "display: none"
404
- }, [vue.withDirectives(vue.createVNode("div", {
424
+ }, [vue.createVNode("div", vue.mergeProps({
405
425
  "ref": controlContentRef
406
- }, [slots.default?.()]), [[vue.resolveDirective("bind"), attrs]])]);
426
+ }, attrs), [slots.default?.()])]);
407
427
  }
408
428
  });
409
429
 
@@ -820,6 +840,150 @@
820
840
  }
821
841
  });
822
842
 
843
+ const infoWindowProps = {
844
+ "show": Boolean,
845
+ "offset": {
846
+ type: Object,
847
+ default: { x: 0, y: 0 }
848
+ },
849
+ "width": {
850
+ type: Number,
851
+ default: 0
852
+ },
853
+ "height": {
854
+ type: Number,
855
+ default: 0
856
+ },
857
+ "maxWidth": Number,
858
+ "position": Object,
859
+ "enableAutoPan": {
860
+ type: Boolean,
861
+ default: true
862
+ },
863
+ "enableCloseOnClick": {
864
+ type: Boolean,
865
+ default: true
866
+ },
867
+ "onUpdate:show": Function
868
+ };
869
+
870
+ var infoWindow = /* @__PURE__ */ vue.defineComponent({
871
+ name: "InfoWindow",
872
+ props: infoWindowProps,
873
+ setup(props, {
874
+ slots,
875
+ attrs
876
+ }) {
877
+ const mapInstance = useMapInstance();
878
+ const infoWindowContentRef = vue.ref();
879
+ let infoWindow = null;
880
+ const visible = vue.computed({
881
+ get: () => props.show,
882
+ set: (value) => props["onUpdate:show"]?.(value)
883
+ });
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();
903
+ };
904
+ const redraw = () => {
905
+ infoWindow?.redraw();
906
+ Array.prototype.forEach.call(infoWindowContentRef.value?.querySelectorAll("img") ?? [], (imgEl) => {
907
+ imgEl.onload = () => {
908
+ infoWindow?.redraw();
909
+ };
910
+ });
911
+ };
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(() => {
930
+ const {
931
+ width,
932
+ height,
933
+ maxWidth,
934
+ offset,
935
+ enableAutoPan,
936
+ enableCloseOnClick
937
+ } = props;
938
+ infoWindow = new BMapGL.InfoWindow(infoWindowContentRef.value, {
939
+ width,
940
+ height,
941
+ maxWidth,
942
+ offset: new BMapGL.Size(offset.x, offset.y),
943
+ enableAutoPan,
944
+ enableCloseOnClick
945
+ });
946
+ infoWindow.addEventListener("close", () => {
947
+ if (props.show) visible.value = false;
948
+ });
949
+ infoWindow.addEventListener("open", () => {
950
+ if (!props.show) visible.value = true;
951
+ });
952
+ mapInstance().addOverlay(infoWindow);
953
+ redraw();
954
+ 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
+ });
965
+ }
966
+ startWatchProps();
967
+ });
968
+ vue.onUpdated(() => {
969
+ if (infoWindow && infoWindow.isOpen()) {
970
+ setContent(infoWindowContentRef.value ?? "");
971
+ }
972
+ });
973
+ vue.onUnmounted(() => {
974
+ if (infoWindow) {
975
+ mapInstance().removeOverlay(infoWindow);
976
+ redraw();
977
+ }
978
+ });
979
+ return () => vue.createVNode("div", {
980
+ "style": "display: none"
981
+ }, [vue.createVNode("div", vue.mergeProps({
982
+ "ref": infoWindowContentRef
983
+ }, attrs), [slots.default?.()])]);
984
+ }
985
+ });
986
+
823
987
  const markerProps = {
824
988
  visible: {
825
989
  type: Boolean,
@@ -983,6 +1147,7 @@
983
1147
 
984
1148
  exports.BConfigProvider = configProvider;
985
1149
  exports.BCustomControl = custom;
1150
+ exports.BInfoWindow = infoWindow;
986
1151
  exports.BMap = map;
987
1152
  exports.BMarker = marker;
988
1153
  exports.BPolygon = polygon;
@@ -993,6 +1158,7 @@
993
1158
  exports.configProviderProps = configProviderProps;
994
1159
  exports.create = create;
995
1160
  exports.customControlProps = customControlProps;
1161
+ exports.infoWindowProps = infoWindowProps;
996
1162
  exports.mapInjectionKey = mapInjectionKey;
997
1163
  exports.mapProps = mapProps;
998
1164
  exports.markerProps = markerProps;
@@ -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 a(e){return e.some(e=>!t.isVNode(e)||e.type!==Comment&&!(e.type===t.Fragment&&!a(e.children)))?e:null}function n(e,t){return t(e&&a(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:a}){const n=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}`;n.value="pending",function(e){const{key:t,src:a,addCalToWindow:n=!0,timeout:l=1e4}=e;return o&&window.BMapGL?Promise.resolve():new Promise((e,r)=>{const i=document.createElement("script");i.src=a,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: ${a}`))},l),p=()=>{clearTimeout(d),o=!0,s(),e()};n?window[t]=p:i.onload=p,i.onerror=()=>{clearTimeout(d),s(),r(new Error(`Failed to load script: ${a}`))},document.body.appendChild(i)})}({key:l,src:i}).then(()=>{n.value="loaded"}).catch(()=>{n.value="failed"});const s=t.computed(()=>{const{mapConfig:t}=e;return t??{}});return t.provide(r,{mergedStatusRef:n,mergedMapSetRef:s}),()=>t.renderSlot(a,"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};var p="map-module_b-map__29r3m",u="map-module_b-map-content__sMaJG",m="map-module_b-map-loading__qc4a8",c="map-module_b-map-failed__-w-tX";!function(e,t){void 0===t&&(t={});var o=t.insertAt;if("undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===o&&a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.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:a,mergedStatusRef:l}=function(e={}){const o=t.inject(r,null);return{mergedStatusRef:o?.mergedStatusRef,mergedMapSetRef:t.computed(()=>{const{zoom:t,center:a,heading:n,minZoom:l,maxZoom:r,enableScrollWheelZoom:i,enableDragging:s,tilt:d,enableTilt:p,mapType:u,enableAutoResize:m,enableTiltGestures:c,enableRotate:y,enableRotateGestures:f,displayOptions:g}=e;return{zoom:t??o?.mergedMapSetRef.value?.zoom??14,center:a??o?.mergedMapSetRef.value?.center??[116.403901,39.915185],heading:n??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:m??o?.mergedMapSetRef.value?.enableAutoResize??!0,enableTiltGestures:c??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=null;const y=t.ref(!1);t.provide(s,{mapInstance:()=>d});const f=e=>{"string"==typeof e?d?.centerAndZoom(e,a.value.zoom):Array.isArray(e)?d?.centerAndZoom(new BMapGL.Point(e[0],e[1]),a.value.zoom):d?.centerAndZoom(e,a.value.zoom)},g=e=>{e?d.enableScrollWheelZoom():d.disableScrollWheelZoom()},b=e=>{d?.setDisplayOptions(e||{})},T=e=>{d?.setTilt(e??0)},v=e=>{d?.setHeading(e??0)},h=e=>{e?d.enableDragging():d.disableDragging()},S=e=>{void 0!==window[e]&&d.setMapType(window[e])},B=()=>{const{maxZoom:o,minZoom:n,enableTilt:l,mapType:r,enableAutoResize:s,enableTiltGestures:p,enableRotate:u,enableRotateGestures:m,displayOptions:c}=a.value;d=new BMapGL.Map(i.value,{maxZoom:o,minZoom:n,enableTilt:l,mapType:window[r],enableAutoResize:s,enableTiltGestures:p,enableRotate:u,enableRotateGestures:m,displayOptions:c});const{onInitd:B}=e;(()=>{const{center:e,heading:t,enableScrollWheelZoom:o,tilt:n,enableDragging:l}=a.value;v(t),f(e),g(o),T(n),h(l)})(),t.watch(()=>a.value.center,f,{deep:!0}),t.watch(()=>a.value.enableScrollWheelZoom,g),t.watch(()=>a.value.displayOptions,b),t.watch(()=>a.value.tilt,T),t.watch(()=>a.value.heading,v),t.watch(()=>a.value.enableDragging,h),t.watch(()=>a.value.mapType,S),B?.({map:d}),y.value=!0};return t.onMounted(()=>{t.watchEffect(()=>{"loaded"!==l?.value||y.value||t.nextTick(B)})}),t.onUnmounted(()=>{if(d)try{d?.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&&n(o.loading,()=>t.createVNode("div",{class:[m]},[t.createTextVNode("map loading...")])),"failed"===l?.value&&n(o.failed,()=>t.createVNode("div",{class:[c]},[t.createTextVNode("map failed")]))]),y.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:a}){const n=f(),l=t.ref();let r=null;return t.onMounted(()=>{const{offset:o,anchor:a,visible:i}=e;r=new BMapGL.Control,r.defaultAnchor=window[a],r.defaultOffset=new BMapGL.Size(o.x,o.y),r.initialize=e=>e.getContainer().appendChild(l.value),i&&n().addControl(r),t.watch(()=>e.visible,e=>{r&&n()[e?"addControl":"removeControl"](r)})}),t.onUnmounted(()=>{r&&n().removeControl(r)}),()=>t.createVNode("div",{style:"display: none"},[t.withDirectives(t.createVNode("div",{ref:l},[a.default?.()]),[[t.resolveDirective("bind"),o]])])}});const T={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 v=t.defineComponent({name:"TileLayer",props:T,setup(e){const o=f();let a,n=[],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)},a=()=>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=a,e.src="string"==typeof t?t:t.toDataURL()}else t instanceof HTMLImageElement?o(t):a()},p=t=>{const o=n.find(e=>e.key===t.key);o?(o.cb(null,t.key),o.cb=t.cb):n.push(t),a&&clearTimeout(a),a=setTimeout(()=>(()=>{if(0===n.length)return;const{getTilesUrl:t}=e,o=[...n];n=[];const a=o.map(({key:e,tile:t,boundRange:o})=>({key:e,tile:t,boundRange:o}));t(a,e=>{for(const t of e){const e=o.findIndex(e=>e.key===t.key);if(-1!==e){const a=o[e];d(a,t.img),o.splice(e,1)}}o.forEach(e=>{e.cb(null,e.key)})})})(),50)},u=()=>{const{getTileUrl:t,getTilesUrl:a}=e;l&&(t?(o().addTileLayer(l),l.loadRasterTileData=function(e,o){const a=this.getTileKey(e),n=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},n,t=>{d({cb:o,boundRange:n,key:a,tileInfo:e},t)})}):a?(o().addTileLayer(l),l.loadRasterTileData=function(e,t){const o=this.getTileKey(e),a={x:e.col,y:e.row,z:e.zoom},n=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});p({key:o,tile:a,boundRange:n,cb:t,tileInfo:e})}):o().addTileLayer(l))};return(()=>{const{visible:a,transform:n,png8:d,height:p,retry:m,retryTime:c,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:T,customLayer:v,clipTile:h,isTop:S,opacity:B,isLowText:w,showRegion:R,useThumbData:x,tileUrlTemplate:C}=e;l=new BMapGL.TileLayer({transform:n,png8:d,height:p,retry:m,retryTime:c,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:T,customLayer:v,clipTile:h,isTop:S,opacity:B,isLowText:w,showRegion:R,useThumbData:x,tileUrlTemplate:C}),(()=>{const{zIndex:t,boundary:o}=e;i(o),r(t)})(),a&&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 h={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 S=t.defineComponent({name:"XyzLayer",props:h,setup(e){const o=f();let a=null;const n=e=>{a?.setZIndex(e)},l=e=>{e&&!e.length?a?.addBoundary(e):a?.clearBoundary()},r=()=>{const{zIndex:t,zIndexTop:o}=e;n(t),(e=>{e&&a?.setZIndexTop()})(o)};return(()=>{const{visible:i,getTile:s,xTemplate:d,yTemplate:p,zTemplate:u,bTemplate:m,minZoom:c,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:T,tms:v}=e;a=new BMapGL.XYZLayer({xTemplate:d,yTemplate:p,zTemplate:u,bTemplate:m,minZoom:c,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:T,tms:v}),r(),i&&(s?(o().addTileLayer(a),a.loadRasterTileData=function(e,t){const o=this.getTileKey(e),a=a=>{a.tileInfo=e,t&&t(a,o)},n=()=>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=()=>a(t),t.onerror=n,t.src="string"==typeof e?e:e.toDataURL()}else e instanceof HTMLImageElement?a(e):n()})}):o().addTileLayer(a)),t.watch(()=>e.zIndex,n),t.watch(()=>e.boundary,l)})(),t.onUnmounted(()=>{a&&o().removeTileLayer(a)}),()=>t.createVNode(t.Fragment,null,null)}});const B={visible:{type:Boolean,default:!0}};var w=t.defineComponent({name:"Marker",props:B,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 a=null;const n=e=>{a&&a.setStrokeColor(e)};return(()=>{const{points:l,visible:r,strokeColor:i,fillColor:s,strokeWeight:d,strokeOpacity:p,fillOpacity:u,strokeStyle:m,enableMassClear:c,enableEditing:y,enableClicking:f}=e;l&&l.length&&(a=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:m,enableMassClear:c,enableEditing:y,enableClicking:f}),r&&o().addOverlay(a),t.watch(()=>e.strokeColor,n),t.watch(()=>e.visible,e=>{o()[e?"addOverlay":"removeOverlay"](a)}))})(),t.onUnmounted(()=>{a&&o().removeOverlay(a)}),()=>t.createVNode(t.Fragment,null,null)}}),C=t.defineComponent({name:"Sector",setup:()=>()=>t.createVNode(t.Fragment,null,null)});e.BConfigProvider=i,e.BCustomControl=b,e.BMap=y,e.BMarker=w,e.BPolygon=x,e.BSector=C,e.BTileLayer=v,e.BXyzLayer=S,e.configProviderInjectionKey=r,e.configProviderProps=l,e.create=function({componentPrefix:e="B",components:t=[]}={}){const o=[];function a(t,o,a){t.component(e+o)||t.component(e+o,a)}return{componentPrefix:e,install:function(e){o.includes(e)||(o.push(e),t.forEach(t=>{const{name:o,alias:n}=t;a(e,o,t),n&&n.forEach(o=>{a(e,o,t)})}))}}},e.customControlProps=g,e.mapInjectionKey=s,e.mapProps=d,e.markerProps=B,e.polygonProps=R,e.tileLayerProps=T,e.xyzLayerProps=h});
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")&&"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: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:x,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:x,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};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=()=>{const{position:t}=e;if(!t||!r)return;const o=Array.isArray(t)?new BMapGL.Point(t[0],t[1]):t;a().openInfoWindow(r,o),i.value=!0},d=()=>{r&&(r?.hide?.(),i.value=!1)},p=e=>{s();const t=Array.isArray(e)?new BMapGL.Point(e[0],e[1]):e;r?.setPosition(t),i.value||d()},u=()=>{r?.redraw(),Array.prototype.forEach.call(l.value?.querySelectorAll("img")??[],e=>{e.onload=()=>{r?.redraw()}})},c=e=>{r?.setWidth(e)},m=e=>{r?.setHeight(e)};return t.onMounted(()=>{const{width:o,height:n,maxWidth:y,offset:f,enableAutoPan:g,enableCloseOnClick:b}=e;r=new BMapGL.InfoWindow(l.value,{width:o,height:n,maxWidth:y,offset:new BMapGL.Size(f.x,f.y),enableAutoPan:g,enableCloseOnClick:b}),r.addEventListener("close",()=>{e.show&&(i.value=!1)}),r.addEventListener("open",()=>{e.show||(i.value=!0)}),a().addOverlay(r),u(),e.show&&t.nextTick(()=>{s(),t.nextTick(()=>{r&&"_visible"in r?!r._visible&&(i.value=!1):!r?.isOpen()&&(i.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;r&&r.isOpen()&&(e=l.value??"",r?.setContent(e))}),t.onUnmounted(()=>{r&&(a().removeOverlay(r),u())}),()=>t.createVNode("div",{style:"display: none"},[t.createVNode("div",t.mergeProps({ref:l},n),[o.default?.()])])}});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: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=x,e.BPolygon=M,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});
@@ -1,3 +1,4 @@
1
+ export type AnyFunction = (...args: any[]) => any;
1
2
  declare function call(funcs: MaybeArray<() => void>): void;
2
3
  declare function call<A1>(funcs: MaybeArray<(a1: A1) => void>, a1: A1): void;
3
4
  declare function call<A1, A2>(funcs: MaybeArray<(a1: A1, a2: A2) => void>, a1: A1, a2: A2): void;
@@ -1 +1 @@
1
- {"version":3,"file":"call.mjs","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/_utils/call.ts"],"sourcesContent":["type AnyFunction = (...args: any[]) => any\r\n\r\nfunction call(funcs: MaybeArray<() => void>): void\r\nfunction call<A1>(funcs: MaybeArray<(a1: A1) => void>, a1: A1): void\r\nfunction call<A1, A2>(\r\n funcs: MaybeArray<(a1: A1, a2: A2) => void>,\r\n a1: A1,\r\n a2: A2,\r\n): void\r\nfunction call<A1, A2, A3>(\r\n funcs: MaybeArray<(a1: A1, a2: A2, a3: A3) => void>,\r\n a1: A1,\r\n a2: A2,\r\n a3: A3,\r\n): void\r\nfunction call<A1, A2, A3, A4>(\r\n funcs: MaybeArray<(a1: A1, a2: A2, a3: A3, a4: A4) => void>,\r\n a1: A1,\r\n a2: A2,\r\n a3: A3,\r\n a4: A4,\r\n): void\r\nfunction call<A extends any[]>(\r\n funcs: AnyFunction[] | AnyFunction,\r\n ...args: A\r\n): void {\r\n if (Array.isArray(funcs)) {\r\n funcs.forEach(func => (call as any)(func, ...args))\r\n } else {\r\n return funcs(...args)\r\n }\r\n}\r\n\r\nexport { call }\r\n\r\nexport type MaybeArray<T> = T | T[]\r\n"],"names":[],"mappings":"AAsBA,SAAS,IAAA,CACP,UACG,IAAA,EAAO;AAEV,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAS,IAAA,CAAa,IAAA,EAAM,GAAG,IAAI,CAAC,CAAA;AAAA,EACpD,CAAA,MAAO;AACL,IAAA,OAAO,KAAA,CAAM,GAAG,IAAI,CAAA;AAAA,EACtB;AACF;;;;"}
1
+ {"version":3,"file":"call.mjs","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/_utils/call.ts"],"sourcesContent":["export type AnyFunction = (...args: any[]) => any\r\n\r\nfunction call(funcs: MaybeArray<() => void>): void\r\nfunction call<A1>(funcs: MaybeArray<(a1: A1) => void>, a1: A1): void\r\nfunction call<A1, A2>(\r\n funcs: MaybeArray<(a1: A1, a2: A2) => void>,\r\n a1: A1,\r\n a2: A2,\r\n): void\r\nfunction call<A1, A2, A3>(\r\n funcs: MaybeArray<(a1: A1, a2: A2, a3: A3) => void>,\r\n a1: A1,\r\n a2: A2,\r\n a3: A3,\r\n): void\r\nfunction call<A1, A2, A3, A4>(\r\n funcs: MaybeArray<(a1: A1, a2: A2, a3: A3, a4: A4) => void>,\r\n a1: A1,\r\n a2: A2,\r\n a3: A3,\r\n a4: A4,\r\n): void\r\nfunction call<A extends any[]>(\r\n funcs: AnyFunction[] | AnyFunction,\r\n ...args: A\r\n): void {\r\n if (Array.isArray(funcs)) {\r\n funcs.forEach(func => (call as any)(func, ...args))\r\n } else {\r\n return funcs(...args)\r\n }\r\n}\r\n\r\nexport { call }\r\n\r\nexport type MaybeArray<T> = T | T[]\r\n"],"names":[],"mappings":"AAsBA,SAAS,IAAA,CACP,UACG,IAAA,EAAO;AAEV,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAS,IAAA,CAAa,IAAA,EAAM,GAAG,IAAI,CAAC,CAAA;AAAA,EACpD,CAAA,MAAO;AACL,IAAA,OAAO,KAAA,CAAM,GAAG,IAAI,CAAA;AAAA,EACtB;AACF;;;;"}
@@ -1,4 +1,4 @@
1
1
  export { call } from './call.mjs';
2
- export { listToMapPoints, loader } from './map.mjs';
2
+ export { listToMapPoints, loader, setupMapEvents } from './map.mjs';
3
3
  export { ensureValidVNode, resolveWrappedSlot } from './resolve-slot.mjs';
4
4
  //# sourceMappingURL=index.mjs.map
@@ -6,3 +6,4 @@ export interface LoaderOptions {
6
6
  }
7
7
  export declare function loader(options: LoaderOptions): Promise<void>;
8
8
  export declare function listToMapPoints(points?: BMapGL.Point[] | number[][] | string[]): BMapGL.Point[];
9
+ export declare function setupMapEvents(map: any, props: Record<string, any>): () => void;
package/es/_utils/map.mjs CHANGED
@@ -52,6 +52,21 @@ function listToMapPoints(points) {
52
52
  }
53
53
  return points;
54
54
  }
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();
58
+ const handler = props[propName];
59
+ const wrapper = (e) => {
60
+ var _a, _b, _c, _d, _e, _f;
61
+ ((_a = e.preventDefault) === null || _a === void 0 ? void 0 : _a.call(e)) || ((_c = (_b = e.domEvent) === null || _b === void 0 ? void 0 : _b.preventDefault) === null || _c === void 0 ? void 0 : _c.call(_b));
62
+ ((_d = e.stopPropagation) === null || _d === void 0 ? void 0 : _d.call(e)) || ((_f = (_e = e.domEvent) === null || _e === void 0 ? void 0 : _e.stopPropagation) === null || _f === void 0 ? void 0 : _f.call(_e));
63
+ handler(e);
64
+ };
65
+ map.addEventListener(eventName, wrapper);
66
+ return () => map.removeEventListener(eventName, wrapper);
67
+ });
68
+ return () => cleanup.forEach((fn) => fn());
69
+ }
55
70
 
56
- export { listToMapPoints, loader };
71
+ export { listToMapPoints, loader, setupMapEvents };
57
72
  //# sourceMappingURL=map.mjs.map
@@ -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"],"names":[],"mappings":"AAOA,IAAI,cAAA,GAAiB,KAAA;AAEf,SAAU,OAAO,OAAA,EAAsB;AAC3C,EAAA,MAAM,EACJ,GAAA,EACA,GAAA,EACA,iBAAiB,IAAA,EACjB,OAAA,GAAU,KAAK,GACb,OAAA;AAEJ,EAAA,IAAI,cAAA,IAAkB,OAAO,MAAA,EAAQ;AACnC,IAAA,OAAO,QAAQ,OAAA,EAAO;AAAA,EACxB;AAEA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAU;AACrC,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAA,CAAO,GAAA,GAAM,GAAA;AACb,IAAA,MAAA,CAAO,IAAA,GAAO,iBAAA;AACd,IAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AAEf,IAAA,MAAM,UAAU,MAAK;AACnB,MAAA,MAAA,CAAO,MAAA,GAAS,IAAA;AAChB,MAAA,MAAA,CAAO,OAAA,GAAU,IAAA;AACjB,MAAA,IAAI,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AAClC,QAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,MAClC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,KAAA,GAAQ,WAAW,MAAK;AAC5B,MAAA,OAAA;AACA,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,GAAG,EAAE,CAAC,CAAA;AAAA,IACjD,GAAG,OAAO,CAAA;AAEV,IAAA,MAAM,aAAa,MAAK;AACtB,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,cAAA,GAAiB,IAAA;AACjB,MAAA,OAAA;AACA,MAAA,OAAA;IACF,CAAA;AAEA,IAAA,IAAI,cAAA,EAAgB;AACjB,MAAA,MAAA,CAAe,GAAG,CAAA,GAAI,UAAA;AAAA,IACzB,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,MAAA,GAAS,UAAA;AAAA,IAClB;AAEA,IAAA,MAAA,CAAO,UAAU,MAAK;AACpB,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,OAAA;AACA,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,GAAG,EAAE,CAAC,CAAA;AAAA,IACnD,CAAA;AAEA,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,EAClC,CAAC,CAAA;AACH;AAEM,SAAU,gBAAgB,MAAA,EAA+C;AAC7E,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAClC,IAAA,OAAO;EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AAEtB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAQ,MAAA,CAAsB,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,GAAG,CAAA,KAAM,IAAI,MAAA,CAAO,KAAA,CAAM,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,EAC9E;AAEA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}
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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"}
@@ -3,6 +3,7 @@ export * from './control/custom';
3
3
  export * from './layer/tile';
4
4
  export * from './layer/xyz';
5
5
  export * from './map';
6
+ export * from './overlay/info-window';
6
7
  export * from './overlay/marker';
7
8
  export * from './overlay/polygon';
8
9
  export * from './overlay/sector';
package/es/components.mjs CHANGED
@@ -10,6 +10,8 @@ export { xyzLayerProps } from './layer/xyz/src/xyz-props.mjs';
10
10
  export { mapInjectionKey } from './map/src/constants.mjs';
11
11
  export { default as BMap } from './map/src/map.mjs';
12
12
  export { mapProps } from './map/src/map-props.mjs';
13
+ export { default as BInfoWindow } from './overlay/info-window/src/info-window.mjs';
14
+ export { infoWindowProps } from './overlay/info-window/src/info-window-props.mjs';
13
15
  export { default as BMarker } from './overlay/marker/src/marker.mjs';
14
16
  export { markerProps } from './overlay/marker/src/marker-props.mjs';
15
17
  export { default as BPolygon } from './overlay/polygon/src/polygon.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"components.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -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;;;;"}
package/es/index.mjs CHANGED
@@ -11,6 +11,8 @@ export { xyzLayerProps } from './layer/xyz/src/xyz-props.mjs';
11
11
  export { mapInjectionKey } from './map/src/constants.mjs';
12
12
  export { default as BMap } from './map/src/map.mjs';
13
13
  export { mapProps } from './map/src/map-props.mjs';
14
+ export { default as BInfoWindow } from './overlay/info-window/src/info-window.mjs';
15
+ export { infoWindowProps } from './overlay/info-window/src/info-window-props.mjs';
14
16
  export { default as BMarker } from './overlay/marker/src/marker.mjs';
15
17
  export { markerProps } from './overlay/marker/src/marker-props.mjs';
16
18
  export { default as BPolygon } from './overlay/polygon/src/polygon.mjs';
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import type { PropType } from 'vue';
2
- import type { ExtractPublicPropTypes } from '../../_utils';
2
+ import type { AnyFunction, ExtractPublicPropTypes } from '../../_utils';
3
3
  import type { onInitd } from './interface';
4
4
  export declare const mapProps: {
5
5
  readonly maxZoom: NumberConstructor;
@@ -41,5 +41,8 @@ export declare const mapProps: {
41
41
  };
42
42
  readonly displayOptions: PropType<BMapGL.displayOptions>;
43
43
  readonly onInitd: PropType<onInitd>;
44
+ readonly onClick: PropType<AnyFunction>;
45
+ readonly onDblclick: PropType<AnyFunction>;
46
+ readonly onMousemove: PropType<AnyFunction>;
44
47
  };
45
48
  export type MapProps = ExtractPublicPropTypes<typeof mapProps>;
@@ -37,7 +37,10 @@ const mapProps = {
37
37
  default: void 0
38
38
  },
39
39
  displayOptions: Object,
40
- onInitd: Function
40
+ onInitd: Function,
41
+ onClick: Function,
42
+ onDblclick: Function,
43
+ onMousemove: Function
41
44
  };
42
45
 
43
46
  export { mapProps };
@@ -1 +1 @@
1
- {"version":3,"file":"map-props.mjs","sources":["../../../src/map/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/map/src/map-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../_utils'\r\nimport type { onInitd } from './interface'\r\n\r\nexport const mapProps = {\r\n maxZoom: Number,\r\n minZoom: Number,\r\n heading: Number,\r\n center: Object as PropType<BMapGL.Point | string | [number, number]>,\r\n zoom: Number,\r\n class: String,\r\n contentClass: String,\r\n enableScrollWheelZoom: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableDragging: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n tilt: Number,\r\n enableTilt: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n mapType: String as PropType<BMapGL.MapTypeId>,\r\n enableAutoResize: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableTiltGestures: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableRotate: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableRotateGestures: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n displayOptions: Object as PropType<BMapGL.displayOptions>,\r\n onInitd: Function as PropType<onInitd>,\r\n} as const\r\n\r\nexport type MapProps = ExtractPublicPropTypes<typeof mapProps>\r\n"],"names":[],"mappings":"AAIO,MAAM,QAAA,GAAW;AAAA,EACtB,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,YAAA,EAAc,MAAA;AAAA,EACd,qBAAA,EAAuB;AAAA,IACrB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,OAAA,EAAS,MAAA;AAAA,EACT,gBAAA,EAAkB;AAAA,IAChB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,kBAAA,EAAoB;AAAA,IAClB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,YAAA,EAAc;AAAA,IACZ,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,cAAA,EAAgB,MAAA;AAAA,EAChB,OAAA,EAAS;;;;;"}
1
+ {"version":3,"file":"map-props.mjs","sources":["../../../src/map/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/map/src/map-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { AnyFunction, ExtractPublicPropTypes } from '../../_utils'\r\nimport type { onInitd } from './interface'\r\n\r\nexport const mapProps = {\r\n maxZoom: Number,\r\n minZoom: Number,\r\n heading: Number,\r\n center: Object as PropType<BMapGL.Point | string | [number, number]>,\r\n zoom: Number,\r\n class: String,\r\n contentClass: String,\r\n enableScrollWheelZoom: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableDragging: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n tilt: Number,\r\n enableTilt: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n mapType: String as PropType<BMapGL.MapTypeId>,\r\n enableAutoResize: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableTiltGestures: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableRotate: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n enableRotateGestures: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n displayOptions: Object as PropType<BMapGL.displayOptions>,\r\n onInitd: Function as PropType<onInitd>,\r\n onClick: Function as PropType<AnyFunction>,\r\n onDblclick: Function as PropType<AnyFunction>,\r\n onMousemove: Function as PropType<AnyFunction>,\r\n} as const\r\n\r\nexport type MapProps = ExtractPublicPropTypes<typeof mapProps>\r\n"],"names":[],"mappings":"AAIO,MAAM,QAAA,GAAW;AAAA,EACtB,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,YAAA,EAAc,MAAA;AAAA,EACd,qBAAA,EAAuB;AAAA,IACrB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,OAAA,EAAS,MAAA;AAAA,EACT,gBAAA,EAAkB;AAAA,IAChB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,kBAAA,EAAoB;AAAA,IAClB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,YAAA,EAAc;AAAA,IACZ,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,cAAA,EAAgB,MAAA;AAAA,EAChB,OAAA,EAAS,QAAA;AAAA,EACT,OAAA,EAAS,QAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,WAAA,EAAa;;;;;"}
@@ -44,6 +44,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
44
44
  };
45
45
  readonly displayOptions: import("vue").PropType<BMapGL.displayOptions>;
46
46
  readonly onInitd: import("vue").PropType<import("./interface").onInitd>;
47
+ readonly onClick: import("vue").PropType<import("../../_utils").AnyFunction>;
48
+ readonly onDblclick: import("vue").PropType<import("../../_utils").AnyFunction>;
49
+ readonly onMousemove: import("vue").PropType<import("../../_utils").AnyFunction>;
47
50
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
48
51
  readonly maxZoom: NumberConstructor;
49
52
  readonly minZoom: NumberConstructor;
@@ -84,6 +87,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
84
87
  };
85
88
  readonly displayOptions: import("vue").PropType<BMapGL.displayOptions>;
86
89
  readonly onInitd: import("vue").PropType<import("./interface").onInitd>;
90
+ readonly onClick: import("vue").PropType<import("../../_utils").AnyFunction>;
91
+ readonly onDblclick: import("vue").PropType<import("../../_utils").AnyFunction>;
92
+ readonly onMousemove: import("vue").PropType<import("../../_utils").AnyFunction>;
87
93
  }>> & Readonly<{}>, {
88
94
  readonly enableScrollWheelZoom: boolean;
89
95
  readonly enableDragging: boolean;
@@ -4,6 +4,7 @@ import { mapProps } from './map-props.mjs';
4
4
  import styles from './style/map.module.css.mjs';
5
5
  import useConfig from '../../_mixins/use-config.mjs';
6
6
  import { resolveWrappedSlot } from '../../_utils/resolve-slot.mjs';
7
+ import { setupMapEvents } from '../../_utils/map.mjs';
7
8
 
8
9
  var map = /* @__PURE__ */ defineComponent({
9
10
  name: "Map",
@@ -18,6 +19,7 @@ var map = /* @__PURE__ */ defineComponent({
18
19
  } = useConfig(props);
19
20
  const contentRef = ref();
20
21
  let map = null;
22
+ let cleanup;
21
23
  const initd = ref(false);
22
24
  provide(mapInjectionKey, {
23
25
  mapInstance: () => map
@@ -105,6 +107,7 @@ var map = /* @__PURE__ */ defineComponent({
105
107
  onInitd === null || onInitd === void 0 ? void 0 : onInitd({
106
108
  map
107
109
  });
110
+ cleanup = setupMapEvents(map, props);
108
111
  initd.value = true;
109
112
  };
110
113
  onMounted(() => {
@@ -117,6 +120,7 @@ var map = /* @__PURE__ */ defineComponent({
117
120
  onUnmounted(() => {
118
121
  if (map) {
119
122
  try {
123
+ cleanup === null || cleanup === void 0 ? void 0 : cleanup();
120
124
  map === null || map === void 0 ? void 0 : map.destroy();
121
125
  } catch (error) {
122
126
  console.error(`[Vue3 BMapGL]: ${error.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"map.mjs","sources":["../../../src/map/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/map/src/map.tsx"],"sourcesContent":["import type { SlotsType, VNode } from 'vue'\r\nimport { defineComponent, nextTick, onMounted, onUnmounted, provide, ref, watch, watchEffect } from 'vue'\r\nimport { useConfig } from '../../_mixins'\r\nimport { resolveWrappedSlot } from '../../_utils'\r\nimport { mapInjectionKey } from './constants'\r\nimport { mapProps } from './map-props'\r\nimport styles from './style/map.module.css'\r\n\r\nexport interface MapSlots {\r\n default?: () => VNode[]\r\n loading?: () => VNode[]\r\n failed?: () => VNode[]\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'Map',\r\n props: mapProps,\r\n slots: Object as SlotsType<MapSlots>,\r\n setup(props, { slots }) {\r\n const { mergedMapSetRef, mergedStatusRef } = useConfig(props)\r\n\r\n const contentRef = ref<HTMLDivElement | null>()\r\n let map: BMapGL.Map | null = null\r\n const initd = ref(false)\r\n\r\n provide(mapInjectionKey, { mapInstance: () => map! })\r\n\r\n const setCenterAndZoom = (center: BMapGL.Point | string | [number, number]) => {\r\n if (typeof center === 'string') {\r\n map?.centerAndZoom(center, mergedMapSetRef.value.zoom!)\r\n } else if (Array.isArray(center)) {\r\n map?.centerAndZoom(new BMapGL.Point(center[0], center[1]), mergedMapSetRef.value.zoom!)\r\n } else {\r\n map?.centerAndZoom(center, mergedMapSetRef.value.zoom!)\r\n }\r\n }\r\n\r\n const setScrollWheelZoom = (enableScrollWheelZoom?: boolean) => {\r\n enableScrollWheelZoom ? map!.enableScrollWheelZoom() : map!.disableScrollWheelZoom()\r\n }\r\n\r\n const setDisplayOptions = (displayOptions?: BMapGL.displayOptions) => {\r\n map?.setDisplayOptions(displayOptions || {})\r\n }\r\n\r\n const setTilt = (tilt?: number) => {\r\n map?.setTilt(tilt ?? 0)\r\n }\r\n\r\n const setHeading = (heading?: number) => {\r\n map?.setHeading(heading ?? 0)\r\n }\r\n\r\n const setDragging = (enableDragging?: boolean) => {\r\n enableDragging ? map!.enableDragging() : map!.disableDragging()\r\n }\r\n\r\n const setMapType = (mapType?: BMapGL.MapTypeId) => {\r\n window[mapType as any] !== undefined && map!.setMapType(window[mapType as any] as any)\r\n }\r\n\r\n const initMapOptions = () => {\r\n const { center, heading, enableScrollWheelZoom, tilt, enableDragging } = mergedMapSetRef.value\r\n setHeading(heading)\r\n setCenterAndZoom(center!)\r\n setScrollWheelZoom(enableScrollWheelZoom)\r\n setTilt(tilt)\r\n setDragging(enableDragging)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => mergedMapSetRef.value.center!, setCenterAndZoom, { deep: true })\r\n watch(() => mergedMapSetRef.value.enableScrollWheelZoom, setScrollWheelZoom)\r\n watch(() => mergedMapSetRef.value.displayOptions, setDisplayOptions)\r\n watch(() => mergedMapSetRef.value.tilt, setTilt)\r\n watch(() => mergedMapSetRef.value.heading, setHeading)\r\n watch(() => mergedMapSetRef.value.enableDragging, setDragging)\r\n watch(() => mergedMapSetRef.value.mapType, setMapType)\r\n }\r\n\r\n const init = () => {\r\n const { maxZoom, minZoom, enableTilt, mapType, enableAutoResize, enableTiltGestures, enableRotate, enableRotateGestures, displayOptions } = mergedMapSetRef.value\r\n map = new BMapGL.Map(contentRef.value!, {\r\n maxZoom,\r\n minZoom,\r\n enableTilt,\r\n mapType: window[mapType as any] as any,\r\n enableAutoResize,\r\n enableTiltGestures,\r\n enableRotate,\r\n enableRotateGestures,\r\n displayOptions,\r\n })\r\n const { onInitd } = props\r\n initMapOptions()\r\n startWatchProps()\r\n onInitd?.({ map: map! })\r\n initd.value = true\r\n }\r\n\r\n onMounted(() => {\r\n watchEffect(() => {\r\n if (mergedStatusRef?.value === 'loaded' && !initd.value) {\r\n nextTick(init)\r\n }\r\n })\r\n })\r\n\r\n onUnmounted(() => {\r\n if (map) {\r\n try {\r\n map?.destroy()\r\n } catch (error: any) {\r\n console.error(`[Vue3 BMapGL]: ${error.message}`)\r\n }\r\n }\r\n })\r\n\r\n return () => (\r\n <div class={[[styles['b-map']], props.class]}>\r\n <div ref={contentRef} class={[styles['b-map-content'], props.contentClass]}>\r\n {mergedStatusRef?.value === 'pending'\r\n && resolveWrappedSlot(slots.loading, () =>\r\n (<div class={[styles['b-map-loading']]}>map loading...</div>))}\r\n {mergedStatusRef?.value === 'failed'\r\n && resolveWrappedSlot(slots.failed, () =>\r\n (<div class={[styles['b-map-failed']]}>map failed</div>))}\r\n </div>\r\n {initd.value && slots.default?.()}\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","mapProps","slots","Object","setup","mergedMapSetRef","mergedStatusRef","useConfig","contentRef","ref","map","initd","provide","mapInjectionKey","mapInstance","setCenterAndZoom","center","centerAndZoom","value","zoom","Array","isArray","BMapGL","Point","setScrollWheelZoom","enableScrollWheelZoom","disableScrollWheelZoom","setDisplayOptions","displayOptions","setTilt","tilt","setHeading","heading","setDragging","enableDragging","disableDragging","setMapType","mapType","window","undefined","initMapOptions","startWatchProps","watch","deep","init","maxZoom","minZoom","enableTilt","enableAutoResize","enableTiltGestures","enableRotate","enableRotateGestures","Map","onInitd","onMounted","watchEffect","nextTick","onUnmounted","destroy","error","console","message","_createVNode","styles","class","contentClass","resolveWrappedSlot","loading","_createTextVNode","failed","_a","default","call"],"mappings":"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"}
1
+ {"version":3,"file":"map.mjs","sources":["../../../src/map/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/map/src/map.tsx"],"sourcesContent":["import type { SlotsType, VNode } from 'vue'\r\nimport { defineComponent, nextTick, onMounted, onUnmounted, provide, ref, watch, watchEffect } from 'vue'\r\nimport { useConfig } from '../../_mixins'\r\nimport { resolveWrappedSlot, setupMapEvents } from '../../_utils'\r\nimport { mapInjectionKey } from './constants'\r\nimport { mapProps } from './map-props'\r\nimport styles from './style/map.module.css'\r\n\r\nexport interface MapSlots {\r\n default?: () => VNode[]\r\n loading?: () => VNode[]\r\n failed?: () => VNode[]\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'Map',\r\n props: mapProps,\r\n slots: Object as SlotsType<MapSlots>,\r\n setup(props, { slots }) {\r\n const { mergedMapSetRef, mergedStatusRef } = useConfig(props)\r\n\r\n const contentRef = ref<HTMLDivElement | null>()\r\n let map: BMapGL.Map | null = null\r\n let cleanup: () => void\r\n const initd = ref(false)\r\n\r\n provide(mapInjectionKey, { mapInstance: () => map! })\r\n\r\n const setCenterAndZoom = (center: BMapGL.Point | string | [number, number]) => {\r\n if (typeof center === 'string') {\r\n map?.centerAndZoom(center, mergedMapSetRef.value.zoom!)\r\n } else if (Array.isArray(center)) {\r\n map?.centerAndZoom(new BMapGL.Point(center[0], center[1]), mergedMapSetRef.value.zoom!)\r\n } else {\r\n map?.centerAndZoom(center, mergedMapSetRef.value.zoom!)\r\n }\r\n }\r\n\r\n const setScrollWheelZoom = (enableScrollWheelZoom?: boolean) => {\r\n enableScrollWheelZoom ? map!.enableScrollWheelZoom() : map!.disableScrollWheelZoom()\r\n }\r\n\r\n const setDisplayOptions = (displayOptions?: BMapGL.displayOptions) => {\r\n map?.setDisplayOptions(displayOptions || {})\r\n }\r\n\r\n const setTilt = (tilt?: number) => {\r\n map?.setTilt(tilt ?? 0)\r\n }\r\n\r\n const setHeading = (heading?: number) => {\r\n map?.setHeading(heading ?? 0)\r\n }\r\n\r\n const setDragging = (enableDragging?: boolean) => {\r\n enableDragging ? map!.enableDragging() : map!.disableDragging()\r\n }\r\n\r\n const setMapType = (mapType?: BMapGL.MapTypeId) => {\r\n window[mapType as any] !== undefined && map!.setMapType(window[mapType as any] as any)\r\n }\r\n\r\n const initMapOptions = () => {\r\n const { center, heading, enableScrollWheelZoom, tilt, enableDragging } = mergedMapSetRef.value\r\n setHeading(heading)\r\n setCenterAndZoom(center!)\r\n setScrollWheelZoom(enableScrollWheelZoom)\r\n setTilt(tilt)\r\n setDragging(enableDragging)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => mergedMapSetRef.value.center!, setCenterAndZoom, { deep: true })\r\n watch(() => mergedMapSetRef.value.enableScrollWheelZoom, setScrollWheelZoom)\r\n watch(() => mergedMapSetRef.value.displayOptions, setDisplayOptions)\r\n watch(() => mergedMapSetRef.value.tilt, setTilt)\r\n watch(() => mergedMapSetRef.value.heading, setHeading)\r\n watch(() => mergedMapSetRef.value.enableDragging, setDragging)\r\n watch(() => mergedMapSetRef.value.mapType, setMapType)\r\n }\r\n\r\n const init = () => {\r\n const { maxZoom, minZoom, enableTilt, mapType, enableAutoResize, enableTiltGestures, enableRotate, enableRotateGestures, displayOptions } = mergedMapSetRef.value\r\n map = new BMapGL.Map(contentRef.value!, {\r\n maxZoom,\r\n minZoom,\r\n enableTilt,\r\n mapType: window[mapType as any] as any,\r\n enableAutoResize,\r\n enableTiltGestures,\r\n enableRotate,\r\n enableRotateGestures,\r\n displayOptions,\r\n })\r\n const { onInitd } = props\r\n initMapOptions()\r\n startWatchProps()\r\n onInitd?.({ map: map! })\r\n cleanup = setupMapEvents(map, props)\r\n initd.value = true\r\n }\r\n\r\n onMounted(() => {\r\n watchEffect(() => {\r\n if (mergedStatusRef?.value === 'loaded' && !initd.value) {\r\n nextTick(init)\r\n }\r\n })\r\n })\r\n\r\n onUnmounted(() => {\r\n if (map) {\r\n try {\r\n cleanup?.()\r\n map?.destroy()\r\n } catch (error: any) {\r\n console.error(`[Vue3 BMapGL]: ${error.message}`)\r\n }\r\n }\r\n })\r\n\r\n return () => (\r\n <div class={[[styles['b-map']], props.class]}>\r\n <div ref={contentRef} class={[styles['b-map-content'], props.contentClass]}>\r\n {mergedStatusRef?.value === 'pending'\r\n && resolveWrappedSlot(slots.loading, () =>\r\n (<div class={[styles['b-map-loading']]}>map loading...</div>))}\r\n {mergedStatusRef?.value === 'failed'\r\n && resolveWrappedSlot(slots.failed, () =>\r\n (<div class={[styles['b-map-failed']]}>map failed</div>))}\r\n </div>\r\n {initd.value && slots.default?.()}\r\n </div>\r\n )\r\n },\r\n})\r\n"],"names":["name","props","mapProps","slots","Object","setup","mergedMapSetRef","mergedStatusRef","useConfig","contentRef","ref","map","cleanup","initd","provide","mapInjectionKey","mapInstance","setCenterAndZoom","center","centerAndZoom","value","zoom","Array","isArray","BMapGL","Point","setScrollWheelZoom","enableScrollWheelZoom","disableScrollWheelZoom","setDisplayOptions","displayOptions","setTilt","tilt","setHeading","heading","setDragging","enableDragging","disableDragging","setMapType","mapType","window","undefined","initMapOptions","startWatchProps","watch","deep","init","maxZoom","minZoom","enableTilt","enableAutoResize","enableTiltGestures","enableRotate","enableRotateGestures","Map","onInitd","setupMapEvents","onMounted","watchEffect","nextTick","onUnmounted","destroy","error","console","message","_createVNode","styles","class","contentClass","resolveWrappedSlot","loading","_createTextVNode","failed","_a","default","call"],"mappings":"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"}
@@ -1 +1,3 @@
1
1
  export { default as BInfoWindow } from './src/info-window';
2
+ export { infoWindowProps } from './src/info-window-props';
3
+ export type { InfoWindowProps } from './src/info-window-props';