nuxt-mapbox
Version:
Elegant Mapbox GL JS integration with Nuxt
26 lines (25 loc) • 771 B
JavaScript
import { watchOnce } from "@vueuse/core";
import { _useMapboxInstanceWithLoaded } from "#imports";
export function useMapbox(mapID, callback) {
function tryCallback(instance) {
if (!instance?.value?.map) return false;
if (instance.value.map && instance.value.loaded) {
callback(instance.value.map);
} else {
watchOnce(() => instance.value?.loaded, () => {
if (instance.value?.loaded) {
callback(instance.value.map);
}
});
}
return true;
}
const mapboxInstance = _useMapboxInstanceWithLoaded(mapID);
const callbackDone = tryCallback(mapboxInstance);
if (callbackDone) return;
watchOnce(mapboxInstance, () => {
if (mapboxInstance.value?.map) {
tryCallback(mapboxInstance);
}
});
}