<template>
  <div class="source">
    <div
      :class="getCssClass"
      @click="clicked"
    >
      <div class="source__source">
        {{ source.name }}
      </div>
    </div>
    <div v-if="badgeCount" class="source__badge">
      <div class="source__badge-count">
        {{ badgeCount }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  props: ['source', 'selectable'],
  computed: {
    getCssClass() {
      return {
        'source__container': true,
        'source__container-selectable': this.selectable,
        'source__container__selected': this.isSelected(),
      }
    },
    badgeCount() {
      const revelation = this.$store.state.round.revelation || {}
      const votes = revelation.votes || {}
      const list = votes[this.source.id] || []
      return list.length
    },
  },
  methods: {
    isSelected() {
      return this.$store.state.selection.selection[this.source.id]
    },
    clicked() {
      if (!this.selectable) return

      if (this.isSelected()) {
        this.$store.commit('selection/unselect', this.source.id)
      } else {
        this.$store.commit('selection/clearSelection')
        this.$store.commit('selection/select', this.source.id)
      }
    },
  },
}
</script>

<style lang="scss">
.source {
  position: absolute;
  width: 180px;
  height: 30px;
  margin: -15px 0 0 -90px;

  &__container {
    display: flex;
    align-items: center;
    max-width: 180px;
    height: 1.4em;
    padding: 4px;
    border: 1px solid #e0e0e0;
    border-radius: 10px;
    background-color: #6040c0;
    color: #ffffff;

    &-selectable {
      &:hover {
        background-color: #c0a0f0;
        color: #402080;
        cursor: pointer;
      }
      &.source__container__selected {
        background-color: #ffffff;
        box-shadow: 0 0 10px #ffffff;
      }
    }

    &__selected {
      background-color: #d0d0d0;
      color: #402080;
      box-shadow: 0 0 10px #d0d0d0;
    }
  }

  &__source {
    width: 100%;
    font-family: "Wendy One";
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    user-select: none;
  }

  &__badge {
    display: flex;
    align-items: center;
    position: absolute;
    right: -12px;
    top: -16px;
    width: 24px;
    height: 24px;
    background-color: #6040c0;
    border: 2px solid #ffffff;
    border-radius: 14px;
    color: #c0c060;
    font-family: "Wendy One";
    font-size: 16px;

    &-count {
      width: 100%;
      text-align: center;
      user-select: none;
    }
  }
}
</style>
