web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

map.svelte (1130B)


      1 <script lang="ts">
      2     import { CFG_MAP } from "$lib/utils/map";
      3     import { type IClOpt, fmt_cl, theme_mode } from "@radroots/apps-lib";
      4     import type { Snippet } from "svelte";
      5     import { MapLibre } from "svelte-maplibre";
      6 
      7     let {
      8         basis = undefined,
      9         map = $bindable(undefined),
     10         children,
     11     }: {
     12         basis?: IClOpt & {
     13             interactive?: boolean;
     14             zoom_click_off?: boolean;
     15         };
     16         map?: maplibregl.Map;
     17         interactive?: boolean;
     18         children: Snippet;
     19     } = $props();
     20 
     21     const interactive = $derived(
     22         typeof basis?.interactive === `boolean` ? basis?.interactive : true,
     23     );
     24 
     25     const double_click_zoom = $derived(
     26         typeof basis?.zoom_click_off === `boolean`
     27             ? basis?.zoom_click_off
     28             : true,
     29     );
     30 </script>
     31 
     32 <MapLibre
     33     bind:map
     34     class="{fmt_cl(basis?.classes)} relative h-full w-full"
     35     zoom={10}
     36     style={CFG_MAP.styles.base[$theme_mode ?? "light"]}
     37     attributionControl={false}
     38     interactive={!!interactive}
     39     zoomOnDoubleClick={double_click_zoom}
     40 >
     41     {@render children()}
     42 </MapLibre>