<script lang="ts">/**
 * The OverlayToggle shows a single toggle to enable or disable an overlay
 */
import Checkbox from "../Base/Checkbox.svelte";
import { onDestroy } from "svelte";
import { UIEventSource } from "../../Logic/UIEventSource";
import Tr from "../Base/Tr.svelte";
import Translations from "../i18n/Translations";
import { Translation } from "../i18n/Translation";
import type { RasterLayerProperties } from "../../Models/RasterLayerProperties";

export let layerproperties : RasterLayerProperties
export let state: {isDisplayed: UIEventSource<boolean>};
export let zoomlevel: UIEventSource<number>;
export let highlightedLayer: UIEventSource<string> | undefined;

let isDisplayed: boolean = state.isDisplayed.data;
onDestroy(state.isDisplayed.addCallbackAndRunD(d => {
  isDisplayed = d;
  return false;
}));


let mainElem: HTMLElement;
$:  onDestroy(
  highlightedLayer.addCallbackAndRun(highlightedLayer => {
    if (highlightedLayer === layerproperties.id) {
      mainElem?.classList?.add("glowing-shadow");
    } else {
      mainElem?.classList?.remove("glowing-shadow");
    }
  })
);
</script>
{#if layerproperties.name}
  <div bind:this={mainElem}>
    <label class="flex gap-1">
      <Checkbox selected={state.isDisplayed} />
      <Tr t={new Translation(layerproperties.name)}/>
      {#if $zoomlevel < layerproperties.min_zoom}
        <span class="alert">
          <Tr t={Translations.t.general.layerSelection.zoomInToSeeThisLayer} />
        </span>
      {/if}
    </label>
  </div>
{/if}
