<script lang="ts">
import MapboxDraw from '@mapbox/mapbox-gl-draw';
import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
import 'svelte-maplibre/draw-plugin.css';
import type maplibregl from 'maplibre-gl';
import MapLibre from 'svelte-maplibre/MapLibre.svelte';
import CodeSample from '$site/CodeSample.svelte';
import code from './+page.svelte?raw';
let map: maplibregl.Map | undefined = $state();
function createMapboxDraw() {
let draw = new MapboxDraw();
const origOnAdd = draw.onAdd.bind(draw);
draw.onAdd = (map: maplibregl.Map) => {
let el = origOnAdd(map);
el.classList.add('maplibregl-ctrl-group');
el.classList.add('maplibregl-ctrl');
return el;
};
return draw;
}
let draw = createMapboxDraw();
$effect(() => {
map.addControl(draw);
});
</script>
<MapLibre
bind:map
style="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json"
class="relative aspect-[9/16] max-h-[70vh] w-full sm:aspect-video sm:max-h-full"
standardControls
/>