<script lang="ts">
  import type { Feature } from "geojson"
  import { Store, UIEventSource } from "../../Logic/UIEventSource"
  import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
  import type { SpecialVisualizationState } from "../SpecialVisualization"
  import TagRenderingAnswer from "../Popup/TagRendering/TagRenderingAnswer.svelte"
  import Translations from "../i18n/Translations"
  import Tr from "../Base/Tr.svelte"
  import { XCircleIcon } from "@rgossiaux/svelte-heroicons/solid"
  import { ariaLabel } from "../../Utils/ariaLabel"

  export let state: SpecialVisualizationState
  export let layer: LayerConfig
  export let selectedElement: Feature
  let tags: UIEventSource<Record<string, string>> = state.featureProperties.getStore(
    selectedElement.properties.id
  )
  $: {
    tags = state.featureProperties.getStore(selectedElement.properties.id)
  }

  let metatags: Store<Record<string, string>> = state.userRelatedState.preferencesAsTags
</script>

{#if $tags._deleted === "yes"}
  <Tr t={Translations.t.delete.isDeleted} />
{:else}
  <div
    class="low-interaction flex items-center justify-between border-b-2 border-black px-3 drop-shadow-md"
  >
    <div class="flex flex-col">
      <!-- Title element-->
      <h3>
        <a href={`#${$tags.id}`}>
        <TagRenderingAnswer config={layer.title} {selectedElement} {state} {tags} {layer} />
        </a>
      </h3>
      
      <div
        class="no-weblate title-icons links-as-button mr-2 flex flex-row flex-wrap items-center gap-x-0.5 p-1 pt-0.5 sm:pt-1"
      >
        {#each layer.titleIcons as titleIconConfig}
          {#if (titleIconConfig.condition?.matchesProperties($tags) ?? true) && (titleIconConfig.metacondition?.matchesProperties( { ...$metatags, ...$tags } ) ?? true) && titleIconConfig.IsKnown($tags)}
            <div class={titleIconConfig.renderIconClass ?? "flex h-8 w-8 items-center"}>
              <TagRenderingAnswer
                config={titleIconConfig}
                {tags}
                {selectedElement}
                {state}
                {layer}
                extraClasses="h-full justify-center"
              />
            </div>
          {/if}
        {/each}
      </div>
    </div>

    <button
      on:click={() => state.selectedElement.setData(undefined)}
      use:ariaLabel={Translations.t.general.backToMap}
      class="rounded-full border-none p-0"
    >
      <XCircleIcon aria-hidden={true} class="h-8 w-8" />
    </button>
  </div>
{/if}

<style>
  :global(.title-icons a) {
    display: block !important;
  }
</style>