<template>
  <span>{{ formatted }}</span>
</template>

<script lang="ts">
import { DateTime } from "luxon";
import { Component, Prop, Vue } from "vue-property-decorator";

@Component
export default class Clock extends Vue {
  public formatted = "";
  private interval?: number;

  @Prop({ required: true })
  private readonly format!: string;

  private update(): void {
    this.formatted = DateTime.now()
      .setLocale(navigator.language)
      .toFormat(this.format);
  }

  public created(): void {
    this.update();
    this.interval = setInterval(this.update, 10000);
  }

  public beforeDestroy(): void {
    clearInterval(this.interval);
  }
}
</script>