@spuermomonga/vue3-bmapgl 0.0.1
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/README.md +22 -0
- package/dist/index.js +257 -0
- package/dist/index.prod.js +1 -0
- package/es/_mixins/index.d.ts +1 -0
- package/es/_mixins/index.mjs +2 -0
- package/es/_mixins/index.mjs.map +1 -0
- package/es/_mixins/use-config.d.ts +11 -0
- package/es/_mixins/use-config.mjs +22 -0
- package/es/_mixins/use-config.mjs.map +1 -0
- package/es/_utils/extract-public-props.d.ts +7 -0
- package/es/_utils/extract-public-props.mjs +2 -0
- package/es/_utils/extract-public-props.mjs.map +1 -0
- package/es/_utils/index.d.ts +3 -0
- package/es/_utils/index.mjs +3 -0
- package/es/_utils/index.mjs.map +1 -0
- package/es/_utils/map.d.ts +7 -0
- package/es/_utils/map.mjs +44 -0
- package/es/_utils/map.mjs.map +1 -0
- package/es/_utils/resolve-slot.d.ts +3 -0
- package/es/_utils/resolve-slot.mjs +23 -0
- package/es/_utils/resolve-slot.mjs.map +1 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs +10 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
- package/es/components.d.ts +2 -0
- package/es/components.mjs +6 -0
- package/es/components.mjs.map +1 -0
- package/es/config-provider/index.d.ts +4 -0
- package/es/config-provider/index.mjs +4 -0
- package/es/config-provider/index.mjs.map +1 -0
- package/es/config-provider/src/config-provider-props.d.ts +13 -0
- package/es/config-provider/src/config-provider-props.mjs +14 -0
- package/es/config-provider/src/config-provider-props.mjs.map +1 -0
- package/es/config-provider/src/config-provider.d.ts +27 -0
- package/es/config-provider/src/config-provider.mjs +30 -0
- package/es/config-provider/src/config-provider.mjs.map +1 -0
- package/es/config-provider/src/constants.d.ts +3 -0
- package/es/config-provider/src/constants.mjs +4 -0
- package/es/config-provider/src/constants.mjs.map +1 -0
- package/es/config-provider/src/internal-interface.d.ts +14 -0
- package/es/config-provider/src/internal-interface.mjs +2 -0
- package/es/config-provider/src/internal-interface.mjs.map +1 -0
- package/es/control/location/index.d.ts +1 -0
- package/es/control/location/index.mjs +2 -0
- package/es/control/location/index.mjs.map +1 -0
- package/es/control/location/src/location-props.mjs +2 -0
- package/es/control/location/src/location-props.mjs.map +1 -0
- package/es/control/location/src/location.d.ts +2 -0
- package/es/control/location/src/location.mjs +11 -0
- package/es/control/location/src/location.mjs.map +1 -0
- package/es/control/scale/index.mjs +2 -0
- package/es/control/scale/index.mjs.map +1 -0
- package/es/control/scale/src/scale.d.ts +2 -0
- package/es/control/scale/src/scale.mjs +11 -0
- package/es/control/scale/src/scale.mjs.map +1 -0
- package/es/control/zoom/index.mjs +2 -0
- package/es/control/zoom/index.mjs.map +1 -0
- package/es/control/zoom/src/zoom.d.ts +2 -0
- package/es/control/zoom/src/zoom.mjs +11 -0
- package/es/control/zoom/src/zoom.mjs.map +1 -0
- package/es/index.d.ts +1 -0
- package/es/index.mjs +6 -0
- package/es/index.mjs.map +1 -0
- package/es/layer/tile/index.mjs +2 -0
- package/es/layer/tile/index.mjs.map +1 -0
- package/es/layer/tile/src/tile.d.ts +2 -0
- package/es/layer/tile/src/tile.mjs +11 -0
- package/es/layer/tile/src/tile.mjs.map +1 -0
- package/es/layer/xyz/index.mjs +2 -0
- package/es/layer/xyz/index.mjs.map +1 -0
- package/es/layer/xyz/src/xyz.d.ts +2 -0
- package/es/layer/xyz/src/xyz.mjs +11 -0
- package/es/layer/xyz/src/xyz.mjs.map +1 -0
- package/es/map/index.d.ts +3 -0
- package/es/map/index.mjs +3 -0
- package/es/map/index.mjs.map +1 -0
- package/es/map/src/map-props.d.ts +26 -0
- package/es/map/src/map-props.mjs +26 -0
- package/es/map/src/map-props.mjs.map +1 -0
- package/es/map/src/map.d.ts +58 -0
- package/es/map/src/map.mjs +82 -0
- package/es/map/src/map.mjs.map +1 -0
- package/es/map/src/style/map.module.css.mjs +8 -0
- package/es/map/src/style/map.module.css.mjs.map +1 -0
- package/es/node_modules/.pnpm/@rollup_plugin-typescript@1_b93953ac7ab797e62adf5212a782f0d9/node_modules/tslib/tslib.es6.mjs +36 -0
- package/es/node_modules/.pnpm/@rollup_plugin-typescript@1_b93953ac7ab797e62adf5212a782f0d9/node_modules/tslib/tslib.es6.mjs.map +1 -0
- package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +29 -0
- package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs.map +1 -0
- package/es/overlay/info-window/index.mjs +2 -0
- package/es/overlay/info-window/index.mjs.map +1 -0
- package/es/overlay/info-window/src/InfoWindow.vue.mjs +11 -0
- package/es/overlay/info-window/src/InfoWindow.vue.mjs.map +1 -0
- package/es/overlay/label/index.mjs +2 -0
- package/es/overlay/label/index.mjs.map +1 -0
- package/es/overlay/label/src/Label.vue.mjs +11 -0
- package/es/overlay/label/src/Label.vue.mjs.map +1 -0
- package/es/overlay/marker/index.mjs +2 -0
- package/es/overlay/marker/index.mjs.map +1 -0
- package/es/overlay/marker/src/Marker.vue.mjs +11 -0
- package/es/overlay/marker/src/Marker.vue.mjs.map +1 -0
- package/es/overlay/polygon/index.mjs +2 -0
- package/es/overlay/polygon/index.mjs.map +1 -0
- package/es/overlay/polygon/src/Polygon.vue.mjs +11 -0
- package/es/overlay/polygon/src/Polygon.vue.mjs.map +1 -0
- package/es/shim.d.mjs +2 -0
- package/es/shim.d.mjs.map +1 -0
- package/lib/_mixins/index.d.ts +1 -0
- package/lib/_mixins/index.js +8 -0
- package/lib/_mixins/index.js.map +1 -0
- package/lib/_mixins/use-config.d.ts +11 -0
- package/lib/_mixins/use-config.js +24 -0
- package/lib/_mixins/use-config.js.map +1 -0
- package/lib/_utils/extract-public-props.d.ts +7 -0
- package/lib/_utils/extract-public-props.js +3 -0
- package/lib/_utils/extract-public-props.js.map +1 -0
- package/lib/_utils/index.d.ts +3 -0
- package/lib/_utils/index.js +11 -0
- package/lib/_utils/index.js.map +1 -0
- package/lib/_utils/map.d.ts +7 -0
- package/lib/_utils/map.js +46 -0
- package/lib/_utils/map.js.map +1 -0
- package/lib/_utils/resolve-slot.d.ts +3 -0
- package/lib/_utils/resolve-slot.js +26 -0
- package/lib/_utils/resolve-slot.js.map +1 -0
- package/lib/_virtual/_plugin-vue_export-helper.js +12 -0
- package/lib/_virtual/_plugin-vue_export-helper.js.map +1 -0
- package/lib/components.d.ts +2 -0
- package/lib/components.js +16 -0
- package/lib/components.js.map +1 -0
- package/lib/config-provider/index.d.ts +4 -0
- package/lib/config-provider/index.js +12 -0
- package/lib/config-provider/index.js.map +1 -0
- package/lib/config-provider/src/config-provider-props.d.ts +13 -0
- package/lib/config-provider/src/config-provider-props.js +16 -0
- package/lib/config-provider/src/config-provider-props.js.map +1 -0
- package/lib/config-provider/src/config-provider.d.ts +27 -0
- package/lib/config-provider/src/config-provider.js +32 -0
- package/lib/config-provider/src/config-provider.js.map +1 -0
- package/lib/config-provider/src/constants.d.ts +3 -0
- package/lib/config-provider/src/constants.js +6 -0
- package/lib/config-provider/src/constants.js.map +1 -0
- package/lib/config-provider/src/internal-interface.d.ts +14 -0
- package/lib/config-provider/src/internal-interface.js +3 -0
- package/lib/config-provider/src/internal-interface.js.map +1 -0
- package/lib/control/location/index.d.ts +1 -0
- package/lib/control/location/index.js +8 -0
- package/lib/control/location/index.js.map +1 -0
- package/lib/control/location/src/location-props.js +3 -0
- package/lib/control/location/src/location-props.js.map +1 -0
- package/lib/control/location/src/location.d.ts +2 -0
- package/lib/control/location/src/location.js +13 -0
- package/lib/control/location/src/location.js.map +1 -0
- package/lib/control/scale/index.js +3 -0
- package/lib/control/scale/index.js.map +1 -0
- package/lib/control/scale/src/scale.d.ts +2 -0
- package/lib/control/scale/src/scale.js +13 -0
- package/lib/control/scale/src/scale.js.map +1 -0
- package/lib/control/zoom/index.js +3 -0
- package/lib/control/zoom/index.js.map +1 -0
- package/lib/control/zoom/src/zoom.d.ts +2 -0
- package/lib/control/zoom/src/zoom.js +13 -0
- package/lib/control/zoom/src/zoom.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/layer/tile/index.js +3 -0
- package/lib/layer/tile/index.js.map +1 -0
- package/lib/layer/tile/src/tile.d.ts +2 -0
- package/lib/layer/tile/src/tile.js +13 -0
- package/lib/layer/tile/src/tile.js.map +1 -0
- package/lib/layer/xyz/index.js +3 -0
- package/lib/layer/xyz/index.js.map +1 -0
- package/lib/layer/xyz/src/xyz.d.ts +2 -0
- package/lib/layer/xyz/src/xyz.js +13 -0
- package/lib/layer/xyz/src/xyz.js.map +1 -0
- package/lib/map/index.d.ts +3 -0
- package/lib/map/index.js +10 -0
- package/lib/map/index.js.map +1 -0
- package/lib/map/src/map-props.d.ts +26 -0
- package/lib/map/src/map-props.js +28 -0
- package/lib/map/src/map-props.js.map +1 -0
- package/lib/map/src/map.d.ts +58 -0
- package/lib/map/src/map.js +84 -0
- package/lib/map/src/map.js.map +1 -0
- package/lib/map/src/style/map.module.css.js +10 -0
- package/lib/map/src/style/map.module.css.js.map +1 -0
- package/lib/node_modules/.pnpm/@rollup_plugin-typescript@1_b93953ac7ab797e62adf5212a782f0d9/node_modules/tslib/tslib.es6.js +38 -0
- package/lib/node_modules/.pnpm/@rollup_plugin-typescript@1_b93953ac7ab797e62adf5212a782f0d9/node_modules/tslib/tslib.es6.js.map +1 -0
- package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js +31 -0
- package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/lib/overlay/info-window/index.js +3 -0
- package/lib/overlay/info-window/index.js.map +1 -0
- package/lib/overlay/info-window/src/InfoWindow.vue.js +13 -0
- package/lib/overlay/info-window/src/InfoWindow.vue.js.map +1 -0
- package/lib/overlay/label/index.js +3 -0
- package/lib/overlay/label/index.js.map +1 -0
- package/lib/overlay/label/src/Label.vue.js +13 -0
- package/lib/overlay/label/src/Label.vue.js.map +1 -0
- package/lib/overlay/marker/index.js +3 -0
- package/lib/overlay/marker/index.js.map +1 -0
- package/lib/overlay/marker/src/Marker.vue.js +13 -0
- package/lib/overlay/marker/src/Marker.vue.js.map +1 -0
- package/lib/overlay/polygon/index.js +3 -0
- package/lib/overlay/polygon/index.js.map +1 -0
- package/lib/overlay/polygon/src/Polygon.vue.js +13 -0
- package/lib/overlay/polygon/src/Polygon.vue.js.map +1 -0
- package/lib/shim.d.js +3 -0
- package/lib/shim.d.js.map +1 -0
- package/package.json +48 -0
package/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Vue3 BMapGL
|
|
2
|
+
|
|
3
|
+
能不用百度地图就别用百度地图,百度地图API太烂了 (╬ ̄皿 ̄)
|
|
4
|
+
|
|
5
|
+
本库还在开发阶段,api变动可能会比较大,介意勿用
|
|
6
|
+
|
|
7
|
+
灵感来源:
|
|
8
|
+
|
|
9
|
+
- [vue3-baidu-map-gl](https://github.com/yue1123/vue3-baidu-map-gl)
|
|
10
|
+
- [naive-ui](https://github.com/tusen-ai/naive-ui)
|
|
11
|
+
|
|
12
|
+
## 安装
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
|
|
16
|
+
# npm
|
|
17
|
+
npm install vue3-bmapgl
|
|
18
|
+
|
|
19
|
+
# pnpm
|
|
20
|
+
pnpm add vue3-bmapgl
|
|
21
|
+
|
|
22
|
+
```
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Vue3Bmapgl = {}, global.vue));
|
|
5
|
+
})(this, (function (exports, vue) { 'use strict';
|
|
6
|
+
|
|
7
|
+
let isScriptLoaded = false;
|
|
8
|
+
function loader(options) {
|
|
9
|
+
const {
|
|
10
|
+
key,
|
|
11
|
+
src,
|
|
12
|
+
addCalToWindow = true,
|
|
13
|
+
timeout = 1e4
|
|
14
|
+
} = options;
|
|
15
|
+
if (isScriptLoaded || window.BMapGL) {
|
|
16
|
+
return Promise.resolve();
|
|
17
|
+
}
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const script = document.createElement("script");
|
|
20
|
+
script.src = src;
|
|
21
|
+
script.type = "text/javascript";
|
|
22
|
+
script.defer = true;
|
|
23
|
+
const cleanup = () => {
|
|
24
|
+
script.onload = null;
|
|
25
|
+
script.onerror = null;
|
|
26
|
+
if (document.body.contains(script)) {
|
|
27
|
+
document.body.removeChild(script);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const timer = setTimeout(() => {
|
|
31
|
+
cleanup();
|
|
32
|
+
reject(new Error(`Script load timeout: ${src}`));
|
|
33
|
+
}, timeout);
|
|
34
|
+
const handleLoad = () => {
|
|
35
|
+
clearTimeout(timer);
|
|
36
|
+
isScriptLoaded = true;
|
|
37
|
+
cleanup();
|
|
38
|
+
resolve();
|
|
39
|
+
};
|
|
40
|
+
if (addCalToWindow) {
|
|
41
|
+
window[key] = handleLoad;
|
|
42
|
+
} else {
|
|
43
|
+
script.onload = handleLoad;
|
|
44
|
+
}
|
|
45
|
+
script.onerror = () => {
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
cleanup();
|
|
48
|
+
reject(new Error(`Failed to load script: ${src}`));
|
|
49
|
+
};
|
|
50
|
+
document.body.appendChild(script);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function ensureValidVNode(vnodes) {
|
|
55
|
+
return vnodes.some((child) => {
|
|
56
|
+
if (!vue.isVNode(child)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (child.type === Comment) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (child.type === vue.Fragment && !ensureValidVNode(child.children)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}) ? vnodes : null;
|
|
67
|
+
}
|
|
68
|
+
function resolveWrappedSlot(slot, wrapper) {
|
|
69
|
+
const children = slot && ensureValidVNode(slot());
|
|
70
|
+
return wrapper(children || null);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const configProviderProps = {
|
|
74
|
+
ak: String,
|
|
75
|
+
apiUrl: String,
|
|
76
|
+
plugins: Array,
|
|
77
|
+
zoom: Number,
|
|
78
|
+
minZoom: Number,
|
|
79
|
+
maxZoom: Number,
|
|
80
|
+
showControls: Boolean,
|
|
81
|
+
center: Object,
|
|
82
|
+
enableScrollWheelZoom: Boolean
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const configProviderInjectionKey = /* @__PURE__ */ Symbol("b-config-provider");
|
|
86
|
+
|
|
87
|
+
var configProvider = vue.defineComponent({
|
|
88
|
+
name: "ConfigProvider",
|
|
89
|
+
props: configProviderProps,
|
|
90
|
+
setup(props, { slots }) {
|
|
91
|
+
const mergedStatusRef = vue.ref("notload");
|
|
92
|
+
const scriptKey = props.apiUrl ? `_initBMap_` : `_initBMap_${props.ak}`;
|
|
93
|
+
const src = props.apiUrl ? `${props.apiUrl.replace(/&$/, "")}&callback=${scriptKey}` : `//api.map.baidu.com/api?type=webgl&v=1.0&ak=${props.ak}&callback=${scriptKey}`;
|
|
94
|
+
mergedStatusRef.value = "pending";
|
|
95
|
+
loader({ key: scriptKey, src }).then(() => {
|
|
96
|
+
mergedStatusRef.value = "loaded";
|
|
97
|
+
}).catch(() => {
|
|
98
|
+
mergedStatusRef.value = "failed";
|
|
99
|
+
});
|
|
100
|
+
const mergedMapSetRef = vue.computed(() => {
|
|
101
|
+
const { ak, apiUrl, plugins, ...retProps } = props;
|
|
102
|
+
return retProps;
|
|
103
|
+
});
|
|
104
|
+
vue.provide(configProviderInjectionKey, { mergedStatusRef, mergedMapSetRef });
|
|
105
|
+
return () => vue.renderSlot(slots, "default");
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
function useConfig(props = {}) {
|
|
110
|
+
const NConfigProvider = vue.inject(configProviderInjectionKey, null);
|
|
111
|
+
return {
|
|
112
|
+
mergedStatusRef: NConfigProvider?.mergedStatusRef,
|
|
113
|
+
mergedMapSetRef: vue.computed(() => {
|
|
114
|
+
const { zoom, center, minZoom, maxZoom } = props;
|
|
115
|
+
return {
|
|
116
|
+
zoom: zoom ?? NConfigProvider?.mergedMapSetRef.value?.zoom,
|
|
117
|
+
center: center ?? NConfigProvider?.mergedMapSetRef.value?.center,
|
|
118
|
+
minZoom: minZoom ?? NConfigProvider?.mergedMapSetRef.value?.minZoom,
|
|
119
|
+
maxZoom: maxZoom ?? NConfigProvider?.mergedMapSetRef.value?.maxZoom
|
|
120
|
+
};
|
|
121
|
+
})
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const mapProps = {
|
|
126
|
+
maxZoom: {
|
|
127
|
+
type: Number,
|
|
128
|
+
default: 21
|
|
129
|
+
},
|
|
130
|
+
minZoom: {
|
|
131
|
+
type: Number,
|
|
132
|
+
default: 0
|
|
133
|
+
},
|
|
134
|
+
center: {
|
|
135
|
+
type: Object,
|
|
136
|
+
default: [116.403901, 39.915185]
|
|
137
|
+
},
|
|
138
|
+
zoom: {
|
|
139
|
+
type: Number,
|
|
140
|
+
default: 14
|
|
141
|
+
},
|
|
142
|
+
class: String,
|
|
143
|
+
enableScrollWheelZoom: {
|
|
144
|
+
type: Boolean,
|
|
145
|
+
default: false
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
function styleInject(css, ref) {
|
|
150
|
+
if ( ref === void 0 ) ref = {};
|
|
151
|
+
var insertAt = ref.insertAt;
|
|
152
|
+
|
|
153
|
+
if (typeof document === 'undefined') { return; }
|
|
154
|
+
|
|
155
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
156
|
+
var style = document.createElement('style');
|
|
157
|
+
style.type = 'text/css';
|
|
158
|
+
|
|
159
|
+
if (insertAt === 'top') {
|
|
160
|
+
if (head.firstChild) {
|
|
161
|
+
head.insertBefore(style, head.firstChild);
|
|
162
|
+
} else {
|
|
163
|
+
head.appendChild(style);
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
head.appendChild(style);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (style.styleSheet) {
|
|
170
|
+
style.styleSheet.cssText = css;
|
|
171
|
+
} else {
|
|
172
|
+
style.appendChild(document.createTextNode(css));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
var css_248z = ".map-module_b-map-content__sMaJG{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%)}";
|
|
177
|
+
var styles = {"b-map-content":"map-module_b-map-content__sMaJG","b-map-loading":"map-module_b-map-loading__qc4a8","b-map-failed":"map-module_b-map-failed__-w-tX"};
|
|
178
|
+
styleInject(css_248z);
|
|
179
|
+
|
|
180
|
+
var map = /* @__PURE__ */ vue.defineComponent({
|
|
181
|
+
name: "Map",
|
|
182
|
+
props: mapProps,
|
|
183
|
+
slots: Object,
|
|
184
|
+
setup(props, {
|
|
185
|
+
slots
|
|
186
|
+
}) {
|
|
187
|
+
const {
|
|
188
|
+
mergedMapSetRef,
|
|
189
|
+
mergedStatusRef
|
|
190
|
+
} = useConfig(props);
|
|
191
|
+
const contentRef = vue.ref();
|
|
192
|
+
let map = null;
|
|
193
|
+
const setCenterAndZoom = (center) => {
|
|
194
|
+
if (typeof center === "string") {
|
|
195
|
+
map.centerAndZoom(center, mergedMapSetRef.value.zoom);
|
|
196
|
+
} else if (Array.isArray(center)) {
|
|
197
|
+
map.centerAndZoom(new BMapGL.Point(center[0], center[1]), mergedMapSetRef.value.zoom);
|
|
198
|
+
} else {
|
|
199
|
+
map.centerAndZoom(new BMapGL.Point(center.lng, center.lat), mergedMapSetRef.value.zoom);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
const setScrollWheelZoom = (enableScrollWheelZoom) => {
|
|
203
|
+
enableScrollWheelZoom ? map.enableScrollWheelZoom() : map.disableScrollWheelZoom();
|
|
204
|
+
};
|
|
205
|
+
const init = () => {
|
|
206
|
+
const {
|
|
207
|
+
center,
|
|
208
|
+
maxZoom,
|
|
209
|
+
minZoom,
|
|
210
|
+
enableScrollWheelZoom
|
|
211
|
+
} = mergedMapSetRef.value;
|
|
212
|
+
map = new BMapGL.Map(contentRef.value, {
|
|
213
|
+
maxZoom,
|
|
214
|
+
minZoom
|
|
215
|
+
});
|
|
216
|
+
setCenterAndZoom(center);
|
|
217
|
+
setScrollWheelZoom(enableScrollWheelZoom);
|
|
218
|
+
};
|
|
219
|
+
const startWatchProps = () => {
|
|
220
|
+
vue.watch(() => mergedMapSetRef.value.center, setCenterAndZoom, {
|
|
221
|
+
deep: true
|
|
222
|
+
});
|
|
223
|
+
vue.watch(() => mergedMapSetRef.value.enableScrollWheelZoom, setScrollWheelZoom);
|
|
224
|
+
};
|
|
225
|
+
vue.watchEffect(() => {
|
|
226
|
+
if (mergedStatusRef?.value === "loaded") {
|
|
227
|
+
vue.nextTick(init);
|
|
228
|
+
startWatchProps();
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
vue.onUnmounted(() => {
|
|
232
|
+
if (map) {
|
|
233
|
+
try {
|
|
234
|
+
map.destroy();
|
|
235
|
+
} catch (error) {
|
|
236
|
+
console.error(`[Vue3 BMapGL]: ${error.message}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
return () => vue.createVNode("div", {
|
|
241
|
+
"ref": contentRef,
|
|
242
|
+
"class": [styles["b-map-content"], props.class]
|
|
243
|
+
}, [mergedStatusRef?.value === "pending" && resolveWrappedSlot(slots.loading, () => vue.createVNode("div", {
|
|
244
|
+
"class": [styles["b-map-loading"]]
|
|
245
|
+
}, [vue.createTextVNode("map loading...")])), mergedStatusRef?.value === "failed" && resolveWrappedSlot(slots.failed, () => vue.createVNode("div", {
|
|
246
|
+
"class": [styles["b-map-failed"]]
|
|
247
|
+
}, [vue.createTextVNode("map failed")])), slots.default?.()]);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
exports.BConfigProvider = configProvider;
|
|
252
|
+
exports.BMap = map;
|
|
253
|
+
exports.configProviderInjectionKey = configProviderInjectionKey;
|
|
254
|
+
exports.configProviderProps = configProviderProps;
|
|
255
|
+
exports.mapProps = mapProps;
|
|
256
|
+
|
|
257
|
+
}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).Vue3Bmapgl={},e.vue)}(this,function(e,o){"use strict";let t=!1;function a(e){return e.some(e=>!o.isVNode(e)||e.type!==Comment&&!(e.type===o.Fragment&&!a(e.children)))?e:null}function n(e,o){return o(e&&a(e())||null)}const r={ak:String,apiUrl:String,plugins:Array,zoom:Number,minZoom:Number,maxZoom:Number,showControls:Boolean,center:Object,enableScrollWheelZoom:Boolean},l=Symbol("b-config-provider");var m=o.defineComponent({name:"ConfigProvider",props:r,setup(e,{slots:a}){const n=o.ref("notload"),r=e.apiUrl?"_initBMap_":`_initBMap_${e.ak}`,m=e.apiUrl?`${e.apiUrl.replace(/&$/,"")}&callback=${r}`:`//api.map.baidu.com/api?type=webgl&v=1.0&ak=${e.ak}&callback=${r}`;n.value="pending",function(e){const{key:o,src:a,addCalToWindow:n=!0,timeout:r=1e4}=e;return t||window.BMapGL?Promise.resolve():new Promise((e,l)=>{const m=document.createElement("script");m.src=a,m.type="text/javascript",m.defer=!0;const d=()=>{m.onload=null,m.onerror=null,document.body.contains(m)&&document.body.removeChild(m)},i=setTimeout(()=>{d(),l(new Error(`Script load timeout: ${a}`))},r),c=()=>{clearTimeout(i),t=!0,d(),e()};n?window[o]=c:m.onload=c,m.onerror=()=>{clearTimeout(i),d(),l(new Error(`Failed to load script: ${a}`))},document.body.appendChild(m)})}({key:r,src:m}).then(()=>{n.value="loaded"}).catch(()=>{n.value="failed"});const d=o.computed(()=>{const{ak:o,apiUrl:t,plugins:a,...n}=e;return n});return o.provide(l,{mergedStatusRef:n,mergedMapSetRef:d}),()=>o.renderSlot(a,"default")}});const d={maxZoom:{type:Number,default:21},minZoom:{type:Number,default:0},center:{type:Object,default:[116.403901,39.915185]},zoom:{type:Number,default:14},class:String,enableScrollWheelZoom:{type:Boolean,default:!1}};var i="map-module_b-map-content__sMaJG",c="map-module_b-map-loading__qc4a8",u="map-module_b-map-failed__-w-tX";!function(e,o){void 0===o&&(o={});var t=o.insertAt;if("undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===t&&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{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 p=o.defineComponent({name:"Map",props:d,slots:Object,setup(e,{slots:t}){const{mergedMapSetRef:a,mergedStatusRef:r}=function(e={}){const t=o.inject(l,null);return{mergedStatusRef:t?.mergedStatusRef,mergedMapSetRef:o.computed(()=>{const{zoom:o,center:a,minZoom:n,maxZoom:r}=e;return{zoom:o??t?.mergedMapSetRef.value?.zoom,center:a??t?.mergedMapSetRef.value?.center,minZoom:n??t?.mergedMapSetRef.value?.minZoom,maxZoom:r??t?.mergedMapSetRef.value?.maxZoom}})}}(e),m=o.ref();let d=null;const p=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(new BMapGL.Point(e.lng,e.lat),a.value.zoom)},s=e=>{e?d.enableScrollWheelZoom():d.disableScrollWheelZoom()},f=()=>{const{center:e,maxZoom:o,minZoom:t,enableScrollWheelZoom:n}=a.value;d=new BMapGL.Map(m.value,{maxZoom:o,minZoom:t}),p(e),s(n)};return o.watchEffect(()=>{"loaded"===r?.value&&(o.nextTick(f),o.watch(()=>a.value.center,p,{deep:!0}),o.watch(()=>a.value.enableScrollWheelZoom,s))}),o.onUnmounted(()=>{if(d)try{d.destroy()}catch(e){console.error(`[Vue3 BMapGL]: ${e.message}`)}}),()=>o.createVNode("div",{ref:m,class:[i,e.class]},["pending"===r?.value&&n(t.loading,()=>o.createVNode("div",{class:[c]},[o.createTextVNode("map loading...")])),"failed"===r?.value&&n(t.failed,()=>o.createVNode("div",{class:[u]},[o.createTextVNode("map failed")])),t.default?.()])}});e.BConfigProvider=m,e.BMap=p,e.configProviderInjectionKey=l,e.configProviderProps=r,e.mapProps=d});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as useConfig } from './use-config';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import type { GlobalMapConfig, LoadStatus } from '../config-provider/src/internal-interface';
|
|
3
|
+
type UseConfigProps = Readonly<{
|
|
4
|
+
bordered?: boolean;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}>;
|
|
7
|
+
export default function useConfig(props?: UseConfigProps): {
|
|
8
|
+
mergedStatusRef: Ref<LoadStatus> | undefined;
|
|
9
|
+
mergedMapSetRef: Ref<GlobalMapConfig>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { inject, computed } from 'vue';
|
|
2
|
+
import { configProviderInjectionKey } from '../config-provider/src/constants.mjs';
|
|
3
|
+
|
|
4
|
+
function useConfig(props = {}) {
|
|
5
|
+
const NConfigProvider = inject(configProviderInjectionKey, null);
|
|
6
|
+
return {
|
|
7
|
+
mergedStatusRef: NConfigProvider === null || NConfigProvider === void 0 ? void 0 : NConfigProvider.mergedStatusRef,
|
|
8
|
+
mergedMapSetRef: computed(() => {
|
|
9
|
+
var _a, _b, _c, _d;
|
|
10
|
+
const { zoom, center, minZoom, maxZoom } = props;
|
|
11
|
+
return {
|
|
12
|
+
zoom: zoom !== null && zoom !== void 0 ? zoom : (_a = NConfigProvider === null || NConfigProvider === void 0 ? void 0 : NConfigProvider.mergedMapSetRef.value) === null || _a === void 0 ? void 0 : _a.zoom,
|
|
13
|
+
center: center !== null && center !== void 0 ? center : (_b = NConfigProvider === null || NConfigProvider === void 0 ? void 0 : NConfigProvider.mergedMapSetRef.value) === null || _b === void 0 ? void 0 : _b.center,
|
|
14
|
+
minZoom: minZoom !== null && minZoom !== void 0 ? minZoom : (_c = NConfigProvider === null || NConfigProvider === void 0 ? void 0 : NConfigProvider.mergedMapSetRef.value) === null || _c === void 0 ? void 0 : _c.minZoom,
|
|
15
|
+
maxZoom: maxZoom !== null && maxZoom !== void 0 ? maxZoom : (_d = NConfigProvider === null || NConfigProvider === void 0 ? void 0 : NConfigProvider.mergedMapSetRef.value) === null || _d === void 0 ? void 0 : _d.maxZoom
|
|
16
|
+
};
|
|
17
|
+
})
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { useConfig as default };
|
|
22
|
+
//# sourceMappingURL=use-config.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-config.mjs","sources":["../../src/_mixins/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmagl/src/_mixins/use-config.ts"],"sourcesContent":["import type { Ref } from 'vue'\r\nimport type { GlobalMapConfig, LoadStatus } from '../config-provider/src/internal-interface'\r\nimport { computed, inject } from 'vue'\r\nimport { configProviderInjectionKey } from '../config-provider'\r\n\r\ntype UseConfigProps = Readonly<{\r\n bordered?: boolean\r\n [key: string]: unknown\r\n}>\r\n\r\nexport default function useConfig(props: UseConfigProps = {}): {\r\n mergedStatusRef: Ref<LoadStatus> | undefined\r\n mergedMapSetRef: Ref<GlobalMapConfig>\r\n} {\r\n const NConfigProvider = inject(configProviderInjectionKey, null)\r\n return {\r\n mergedStatusRef: NConfigProvider?.mergedStatusRef,\r\n mergedMapSetRef: computed(() => {\r\n const { zoom, center, minZoom, maxZoom } = props\r\n return {\r\n zoom: zoom ?? NConfigProvider?.mergedMapSetRef.value?.zoom,\r\n center: center ?? NConfigProvider?.mergedMapSetRef.value?.center,\r\n minZoom: minZoom ?? NConfigProvider?.mergedMapSetRef.value?.minZoom,\r\n maxZoom: maxZoom ?? NConfigProvider?.mergedMapSetRef.value?.maxZoom,\r\n } as GlobalMapConfig\r\n }),\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAUA,SAAwB,SAAA,CAAU,KAAA,GAAwB,EAAA,EAAE;AAI1D,EAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,0BAAA,EAA4B,IAAI,CAAA;AAC/D,EAAA,OAAO;AAAA,IACL,iBAAiB,eAAA,KAAe,IAAA,IAAf,eAAA,KAAe,MAAA,GAAA,SAAf,eAAA,CAAiB,eAAA;AAAA,IAClC,eAAA,EAAiB,SAAS,MAAK;;AAC7B,MAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,SAAO,GAAK,KAAA;AAC3C,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,KAAI,IAAA,IAAJ,SAAI,MAAA,GAAJ,IAAA,GAAA,CAAQ,KAAA,eAAA,KAAe,IAAA,IAAf,sCAAA,gBAAiB,eAAA,CAAgB,KAAA,0CAAO,IAAA;AAAA,QACtD,QAAQ,MAAA,KAAM,IAAA,IAAN,WAAM,MAAA,GAAN,MAAA,GAAA,CAAU,KAAA,eAAA,KAAe,IAAA,IAAf,sCAAA,gBAAiB,eAAA,CAAgB,KAAA,0CAAO,MAAA;AAAA,QAC1D,SAAS,OAAA,KAAO,IAAA,IAAP,YAAO,MAAA,GAAP,OAAA,GAAA,CAAW,KAAA,eAAA,KAAe,IAAA,IAAf,sCAAA,gBAAiB,eAAA,CAAgB,KAAA,0CAAO,OAAA;AAAA,QAC5D,SAAS,OAAA,KAAO,IAAA,IAAP,YAAO,MAAA,GAAP,OAAA,GAAA,CAAW,KAAA,eAAA,KAAe,IAAA,IAAf,sCAAA,gBAAiB,eAAA,CAAgB,KAAA,0CAAO;AAAA;IAEhE,CAAC;AAAA;AAEL;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ExtractPropTypes } from 'vue';
|
|
2
|
+
type RemoveReadonly<T> = {
|
|
3
|
+
-readonly [key in keyof T]: T[key];
|
|
4
|
+
};
|
|
5
|
+
export type ExtractPublicPropTypes<T> = Omit<Partial<RemoveReadonly<ExtractPropTypes<T>>>, Extract<keyof T, `internal${string}`>>;
|
|
6
|
+
export type ExtractInternalPropTypes<T> = Partial<ExtractPropTypes<T>>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-public-props.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
let isScriptLoaded = false;
|
|
2
|
+
function loader(options) {
|
|
3
|
+
const { key, src, addCalToWindow = true, timeout = 1e4 } = options;
|
|
4
|
+
if (isScriptLoaded || window.BMapGL) {
|
|
5
|
+
return Promise.resolve();
|
|
6
|
+
}
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
const script = document.createElement("script");
|
|
9
|
+
script.src = src;
|
|
10
|
+
script.type = "text/javascript";
|
|
11
|
+
script.defer = true;
|
|
12
|
+
const cleanup = () => {
|
|
13
|
+
script.onload = null;
|
|
14
|
+
script.onerror = null;
|
|
15
|
+
if (document.body.contains(script)) {
|
|
16
|
+
document.body.removeChild(script);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const timer = setTimeout(() => {
|
|
20
|
+
cleanup();
|
|
21
|
+
reject(new Error(`Script load timeout: ${src}`));
|
|
22
|
+
}, timeout);
|
|
23
|
+
const handleLoad = () => {
|
|
24
|
+
clearTimeout(timer);
|
|
25
|
+
isScriptLoaded = true;
|
|
26
|
+
cleanup();
|
|
27
|
+
resolve();
|
|
28
|
+
};
|
|
29
|
+
if (addCalToWindow) {
|
|
30
|
+
window[key] = handleLoad;
|
|
31
|
+
} else {
|
|
32
|
+
script.onload = handleLoad;
|
|
33
|
+
}
|
|
34
|
+
script.onerror = () => {
|
|
35
|
+
clearTimeout(timer);
|
|
36
|
+
cleanup();
|
|
37
|
+
reject(new Error(`Failed to load script: ${src}`));
|
|
38
|
+
};
|
|
39
|
+
document.body.appendChild(script);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { loader };
|
|
44
|
+
//# sourceMappingURL=map.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.mjs","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmagl/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"],"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;;;;"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Slot, VNodeArrayChildren, VNodeChild } from 'vue';
|
|
2
|
+
export declare function ensureValidVNode(vnodes: VNodeArrayChildren): VNodeArrayChildren | null;
|
|
3
|
+
export declare function resolveWrappedSlot(slot: Slot | undefined, wrapper: (children: VNodeArrayChildren | null) => VNodeChild): VNodeChild;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { isVNode, Fragment } from 'vue';
|
|
2
|
+
|
|
3
|
+
function ensureValidVNode(vnodes) {
|
|
4
|
+
return vnodes.some((child) => {
|
|
5
|
+
if (!isVNode(child)) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (child.type === Comment) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (child.type === Fragment && !ensureValidVNode(child.children)) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
}) ? vnodes : null;
|
|
16
|
+
}
|
|
17
|
+
function resolveWrappedSlot(slot, wrapper) {
|
|
18
|
+
const children = slot && ensureValidVNode(slot());
|
|
19
|
+
return wrapper(children || null);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { ensureValidVNode, resolveWrappedSlot };
|
|
23
|
+
//# sourceMappingURL=resolve-slot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-slot.mjs","sources":["../../src/_utils/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmagl/src/_utils/resolve-slot.ts"],"sourcesContent":["import type { Slot, VNodeArrayChildren, VNodeChild } from 'vue'\r\nimport { Fragment, isVNode } from 'vue'\r\n\r\nexport function ensureValidVNode(\r\n vnodes: VNodeArrayChildren,\r\n): VNodeArrayChildren | null {\r\n return vnodes.some((child) => {\r\n if (!isVNode(child)) {\r\n return true\r\n }\r\n if (child.type === Comment) {\r\n return false\r\n }\r\n if (\r\n child.type === Fragment\r\n && !ensureValidVNode(child.children as VNodeArrayChildren)\r\n ) {\r\n return false\r\n }\r\n return true\r\n })\r\n ? vnodes\r\n : null\r\n}\r\n\r\nexport function resolveWrappedSlot(\r\n slot: Slot | undefined,\r\n wrapper: (children: VNodeArrayChildren | null) => VNodeChild,\r\n): VNodeChild {\r\n const children = slot && ensureValidVNode(slot())\r\n return wrapper(children || null)\r\n}\r\n"],"names":[],"mappings":";;AAGM,SAAU,iBACd,MAAA,EAA0B;AAE1B,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,KAAS;AAC3B,IAAA,IAAI,CAAC,OAAA,CAAQ,KAAK,CAAA,EAAG;AACnB,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS;AAC1B,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IACE,MAAM,IAAA,KAAS,QAAA,IACZ,CAAC,gBAAA,CAAiB,KAAA,CAAM,QAA8B,CAAA,EACzD;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,IACG,MAAA,GACA,IAAA;AACN;AAEM,SAAU,kBAAA,CACd,MACA,OAAA,EAA4D;AAE5D,EAAA,MAAM,QAAA,GAAW,IAAA,IAAQ,gBAAA,CAAiB,IAAA,EAAM,CAAA;AAChD,EAAA,OAAO,OAAA,CAAQ,YAAY,IAAI,CAAA;AACjC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_plugin-vue_export-helper.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { default as BConfigProvider } from './config-provider/src/config-provider.mjs';
|
|
2
|
+
export { configProviderProps } from './config-provider/src/config-provider-props.mjs';
|
|
3
|
+
export { configProviderInjectionKey } from './config-provider/src/constants.mjs';
|
|
4
|
+
export { default as BMap } from './map/src/map.mjs';
|
|
5
|
+
export { mapProps } from './map/src/map-props.mjs';
|
|
6
|
+
//# sourceMappingURL=components.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { default as BConfigProvider } from './src/config-provider';
|
|
2
|
+
export type { ConfigProviderProps } from './src/config-provider-props';
|
|
3
|
+
export { configProviderProps } from './src/config-provider-props';
|
|
4
|
+
export { configProviderInjectionKey } from './src/constants';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ExtractPropTypes, PropType } from 'vue';
|
|
2
|
+
export declare const configProviderProps: {
|
|
3
|
+
readonly ak: StringConstructor;
|
|
4
|
+
readonly apiUrl: StringConstructor;
|
|
5
|
+
readonly plugins: PropType<string[]>;
|
|
6
|
+
readonly zoom: NumberConstructor;
|
|
7
|
+
readonly minZoom: NumberConstructor;
|
|
8
|
+
readonly maxZoom: NumberConstructor;
|
|
9
|
+
readonly showControls: BooleanConstructor;
|
|
10
|
+
readonly center: PropType<BMapGL.Point | string | [number, number]>;
|
|
11
|
+
readonly enableScrollWheelZoom: BooleanConstructor;
|
|
12
|
+
};
|
|
13
|
+
export type ConfigProviderProps = Partial<ExtractPropTypes<typeof configProviderProps>>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const configProviderProps = {
|
|
2
|
+
ak: String,
|
|
3
|
+
apiUrl: String,
|
|
4
|
+
plugins: Array,
|
|
5
|
+
zoom: Number,
|
|
6
|
+
minZoom: Number,
|
|
7
|
+
maxZoom: Number,
|
|
8
|
+
showControls: Boolean,
|
|
9
|
+
center: Object,
|
|
10
|
+
enableScrollWheelZoom: Boolean
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { configProviderProps };
|
|
14
|
+
//# sourceMappingURL=config-provider-props.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-provider-props.mjs","sources":["../../../src/config-provider/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmagl/src/config-provider/src/config-provider-props.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\r\n\r\nexport const configProviderProps = {\r\n ak: String,\r\n apiUrl: String,\r\n plugins: Array as PropType<string[]>,\r\n zoom: Number,\r\n minZoom: Number,\r\n maxZoom: Number,\r\n showControls: Boolean,\r\n center: Object as PropType<BMapGL.Point | string | [number, number]>,\r\n enableScrollWheelZoom: Boolean,\r\n} as const\r\n\r\nexport type ConfigProviderProps = Partial<ExtractPropTypes<typeof configProviderProps>>\r\n"],"names":[],"mappings":"AAEO,MAAM,mBAAA,GAAsB;AAAA,EACjC,EAAA,EAAI,MAAA;AAAA,EACJ,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,KAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,MAAA;AAAA,EACT,OAAA,EAAS,MAAA;AAAA,EACT,YAAA,EAAc,OAAA;AAAA,EACd,MAAA,EAAQ,MAAA;AAAA,EACR,qBAAA,EAAuB;;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
readonly ak: StringConstructor;
|
|
3
|
+
readonly apiUrl: StringConstructor;
|
|
4
|
+
readonly plugins: import("vue").PropType<string[]>;
|
|
5
|
+
readonly zoom: NumberConstructor;
|
|
6
|
+
readonly minZoom: NumberConstructor;
|
|
7
|
+
readonly maxZoom: NumberConstructor;
|
|
8
|
+
readonly showControls: BooleanConstructor;
|
|
9
|
+
readonly center: import("vue").PropType<BMapGL.Point | string | [number, number]>;
|
|
10
|
+
readonly enableScrollWheelZoom: BooleanConstructor;
|
|
11
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
14
|
+
readonly ak: StringConstructor;
|
|
15
|
+
readonly apiUrl: StringConstructor;
|
|
16
|
+
readonly plugins: import("vue").PropType<string[]>;
|
|
17
|
+
readonly zoom: NumberConstructor;
|
|
18
|
+
readonly minZoom: NumberConstructor;
|
|
19
|
+
readonly maxZoom: NumberConstructor;
|
|
20
|
+
readonly showControls: BooleanConstructor;
|
|
21
|
+
readonly center: import("vue").PropType<BMapGL.Point | string | [number, number]>;
|
|
22
|
+
readonly enableScrollWheelZoom: BooleanConstructor;
|
|
23
|
+
}>> & Readonly<{}>, {
|
|
24
|
+
readonly showControls: boolean;
|
|
25
|
+
readonly enableScrollWheelZoom: boolean;
|
|
26
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { __rest } from '../../node_modules/.pnpm/@rollup_plugin-typescript@1_b93953ac7ab797e62adf5212a782f0d9/node_modules/tslib/tslib.es6.mjs';
|
|
2
|
+
import { defineComponent, ref, computed, provide, renderSlot } from 'vue';
|
|
3
|
+
import { configProviderProps } from './config-provider-props.mjs';
|
|
4
|
+
import { configProviderInjectionKey } from './constants.mjs';
|
|
5
|
+
import { loader } from '../../_utils/map.mjs';
|
|
6
|
+
|
|
7
|
+
var configProvider = defineComponent({
|
|
8
|
+
name: "ConfigProvider",
|
|
9
|
+
props: configProviderProps,
|
|
10
|
+
setup(props, { slots }) {
|
|
11
|
+
const mergedStatusRef = ref("notload");
|
|
12
|
+
const scriptKey = props.apiUrl ? `_initBMap_` : `_initBMap_${props.ak}`;
|
|
13
|
+
const src = props.apiUrl ? `${props.apiUrl.replace(/&$/, "")}&callback=${scriptKey}` : `//api.map.baidu.com/api?type=webgl&v=1.0&ak=${props.ak}&callback=${scriptKey}`;
|
|
14
|
+
mergedStatusRef.value = "pending";
|
|
15
|
+
loader({ key: scriptKey, src }).then(() => {
|
|
16
|
+
mergedStatusRef.value = "loaded";
|
|
17
|
+
}).catch(() => {
|
|
18
|
+
mergedStatusRef.value = "failed";
|
|
19
|
+
});
|
|
20
|
+
const mergedMapSetRef = computed(() => {
|
|
21
|
+
const { ak, apiUrl, plugins } = props, retProps = __rest(props, ["ak", "apiUrl", "plugins"]);
|
|
22
|
+
return retProps;
|
|
23
|
+
});
|
|
24
|
+
provide(configProviderInjectionKey, { mergedStatusRef, mergedMapSetRef });
|
|
25
|
+
return () => renderSlot(slots, "default");
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export { configProvider as default };
|
|
30
|
+
//# sourceMappingURL=config-provider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-provider.mjs","sources":["../../../src/config-provider/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmagl/src/config-provider/src/config-provider.ts"],"sourcesContent":["import type { LoadStatus } from './internal-interface'\r\nimport { computed, defineComponent, provide, ref, renderSlot } from 'vue'\r\nimport { loader } from '../../_utils'\r\nimport { configProviderProps } from './config-provider-props'\r\nimport { configProviderInjectionKey } from './constants'\r\n\r\nexport default defineComponent({\r\n name: 'ConfigProvider',\r\n props: configProviderProps,\r\n setup(props, { slots }) {\r\n const mergedStatusRef = ref<LoadStatus>('notload')\r\n\r\n const scriptKey = props.apiUrl ? `_initBMap_` : `_initBMap_${props.ak}`\r\n const src = props.apiUrl\r\n ? `${props.apiUrl.replace(/&$/, '')}&callback=${scriptKey}`\r\n : `//api.map.baidu.com/api?type=webgl&v=1.0&ak=${props.ak}&callback=${scriptKey}`\r\n\r\n mergedStatusRef.value = 'pending'\r\n loader({ key: scriptKey, src }).then(() => {\r\n mergedStatusRef.value = 'loaded'\r\n }).catch(() => {\r\n mergedStatusRef.value = 'failed'\r\n })\r\n\r\n const mergedMapSetRef = computed(() => {\r\n const { ak, apiUrl, plugins, ...retProps } = props\r\n return retProps\r\n })\r\n\r\n provide(configProviderInjectionKey, { mergedStatusRef, mergedMapSetRef })\r\n\r\n return () => renderSlot(slots, 'default')\r\n },\r\n})\r\n"],"names":[],"mappings":";;;;;;AAMA,qBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,gBAAA;AAAA,EACN,KAAA,EAAO,mBAAA;AAAA,EACP,KAAA,CAAM,KAAA,EAAO,EAAE,KAAA,EAAK,EAAE;AACpB,IAAA,MAAM,eAAA,GAAkB,IAAgB,SAAS,CAAA;AAEjD,IAAA,MAAM,YAAY,KAAA,CAAM,MAAA,GAAS,CAAA,UAAA,CAAA,GAAe,CAAA,UAAA,EAAa,MAAM,EAAE,CAAA,CAAA;AACrE,IAAA,MAAM,MAAM,KAAA,CAAM,MAAA,GACd,CAAA,EAAG,KAAA,CAAM,OAAO,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,aAAa,SAAS,CAAA,CAAA,GACvD,+CAA+C,KAAA,CAAM,EAAE,aAAa,SAAS,CAAA,CAAA;AAEjF,IAAA,eAAA,CAAgB,KAAA,GAAQ,SAAA;AACxB,IAAA,MAAA,CAAO,EAAE,GAAA,EAAK,SAAA,EAAW,KAAK,CAAA,CAAE,KAAK,MAAK;AACxC,MAAA,eAAA,CAAgB,KAAA,GAAQ,QAAA;AAAA,IAC1B,CAAC,CAAA,CAAE,KAAA,CAAM,MAAK;AACZ,MAAA,eAAA,CAAgB,KAAA,GAAQ,QAAA;AAAA,IAC1B,CAAC,CAAA;AAED,IAAA,MAAM,eAAA,GAAkB,SAAS,MAAK;AACpC,MAAA,MAAM,EAAE,EAAA,EAAI,MAAA,EAAQ,OAAA,EAAO,GAAkB,KAAA,EAAb,QAAA,GAAQ,MAAA,CAAK,KAAA,EAAvC,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,CAAoC,CAAA;AAC1C,MAAA,OAAO,QAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAA,CAAQ,0BAAA,EAA4B,EAAE,eAAA,EAAiB,eAAA,EAAiB,CAAA;AAExE,IAAA,OAAO,MAAM,UAAA,CAAW,KAAA,EAAO,SAAS,CAAA;AAAA,EAC1C;AACD,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../src/config-provider/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmagl/src/config-provider/src/constants.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\r\nimport type { ConfigProviderInjection } from './internal-interface'\r\n\r\nexport const configProviderInjectionKey: InjectionKey<ConfigProviderInjection> = Symbol('b-config-provider')\r\n"],"names":[],"mappings":"AAGO,MAAM,0BAAA,0BAA2E,mBAAmB;;;;"}
|