<template>
  <div class="h-1 rounded-full w-full bg-blue-500 relative my-4 flex-grow">
    <div
      v-for="(lang, index) of Object.keys(languages).sort((a, b) => languages[b] - languages[a])"
      :key="lang"
      class="absolute h-1"
      :class="[index === 0 && 'rounded-tl-full rounded-bl-full', index === Object.keys(languages).length - 1 && 'rounded-tr-full rounded-br-full']"
      :style="{
        width: `${(languages[lang] / totalBytes) * 100}%`,
        backgroundColor: `${langColors[lang]}`,
        left: howFarLeft(index)
      }"
    ></div>
  </div>
</template>

<script setup lang="ts">
import { langColors } from '../statics'
const { languages } = defineProps<{ languages: { [key: string]: any }}>()
const totalBytes = Object.keys(languages).reduce((sum, key) => sum + parseFloat(languages[key] || 0), 0)

const howFarLeft = (index: number) => {
  if (index === 0) return '0%'
  const prevBytes = Object.keys(languages).splice(0, index).reduce((sum, key) => sum + parseFloat(languages[key] || 0), 0)
  return `${(prevBytes / totalBytes) * 100}%`
}
</script>