<template>
  <div class="dialog__inner">
    <header class="flex">
      <div class="options-selector">
        <button
          v-for="(track, index) in tracks"
          class="btn btn--image"
          :aria-pressed="activeTrack === track ? true : false"
          :aria-controls="track.slug"
          :style="`--btn-image: url(${track.files[7].url});`"
          @click="
            activeTrack = track;
            currentX = 0;
            currentY = 0;
          "
        >
          <span>{{ track.title }}</span>
        </button>
      </div>
      <button class="btn | ml-auto" disabled>
        <span>Comparer les pistes</span>
      </button>
    </header>

    <div class="track">
      <figure>
        <img :src="currentFile.url" alt="" width="500" height="500">
      </figure>
      <fieldset>
        <button
          class="y-up | btn btn--icon"
          @click="currentY++"
          :disabled="currentY === yMax.length"
          data-icon="chevron-single-left"
          title="Pivoter vers le haut"
        >
          <span class="sr-only">Top</span>
        </button>
        <button
          class="x-down | btn btn--icon"
          @click="rotateX('left')"
          data-icon="chevron-single-left"
          title="Pivoter vers la gauche"
        >
          <span class="sr-only">Left</span>
        </button>
        <button
          class="x-up | btn btn--icon"
          @click="rotateX('right')"
          data-icon="chevron-single-left"
          title="Pivoter vers la droite"
        >
          <span class="sr-only">Right</span>
        </button>
        <button
          class="y-down | btn btn--icon"
          @click="currentX === xMax ? xMax : currentX--"
          :disabled="currentY === 0"
          data-icon="chevron-single-left"
          title="Pivoter vers le bas"
        >
          <span class="sr-only">Bottom</span>
        </button>
      </fieldset>
    </div>
  </div>
</template>
<script setup>
import { ref, computed, watch } from "vue";
import { storeToRefs } from "pinia";
import { usePageStore } from "../../../stores/page";
import { useVirtualSampleStore } from "../../../stores/virtualSample";

const { page } = storeToRefs(usePageStore());
const virtualSampleStore = useVirtualSampleStore();

const tracks = computed(
  () => page.value.steps[page.value.steps.length - 1].files.dynamic
);

const activeTrack = ref(tracks.value[0]);

const yMax = computed(() => {
  return parseInt(
    activeTrack.value.files[activeTrack.value.files.length - 1].name.charAt(0)
  );
});
const xMax = computed(() => {
  return parseInt(
    activeTrack.value.files[activeTrack.value.files.length - 1].name
      .split("_")[1]
      .split(".")[0]
  );
});

const currentX = ref(0);
const currentY = ref(0);
const currentFileIndex = computed(() => currentY.value + "_" + currentX.value);
const currentFile = computed(() =>
  activeTrack.value.files.find((file) =>
    file.name.includes(currentFileIndex.value)
  )
);
watch(currentFile, () => (virtualSampleStore.currentFile = currentFile.value), {
  immediate: true,
});

function rotateX(direction) {
  if (direction == "left") {
    currentX.value = currentX.value === 0 ? xMax.value : currentX.value - 1;
  }
  if (direction == "right") {
    currentX.value = currentX.value === xMax.value ? 0 : currentX.value + 1;
  }
}
</script>
