const { createApp } = Vue;

createApp({
  data() {
    return {
      ready: false,
      openDropdown: false,
      buildOptions: [
        { value: 'js', label: 'JavaScript Build' },
        { value: 'wasm', label: 'WASM Build' }
      ],
      selectedBuild: { value: 'wasm', label: 'WASM Build' },
    };
  },
  methods: {
    selectBuild(option) {
      this.selectedBuild = option;
      this.openDropdown = false;
    },
    launchSelectedBuild() {
      const route = this.selectedBuild.value === 'wasm' ? './wasm/' : './js/';
      window.location.assign(route);
    },
    onMouseMove(event) {
      const w = window.innerWidth || 1;
      const h = window.innerHeight || 1;
      this._targetX = event.clientX / w;
      this._targetY = event.clientY / h;
    }
  },
  mounted() {
    requestAnimationFrame(() => { this.ready = true; });

    // Smooth parallax — lerp current position toward mouse target each frame,
    // matching the lazy inertia of the in-game main menu background.
    let curX = 0.5, curY = 0.5;
    this._targetX = 0.5;
    this._targetY = 0.5;
    const bgEl = document.querySelector('.bg-image');
    const LERP = 0.055; // lower = more lag, higher = snappier
    const MAX_X = 28, MAX_Y = 22;

    const tick = () => {
      curX += (this._targetX - curX) * LERP;
      curY += (this._targetY - curY) * LERP;
      const tx = (curX - 0.5) * MAX_X;
      const ty = (curY - 0.5) * MAX_Y;
      if (bgEl) bgEl.style.transform = `translate(${tx}px, ${ty}px) scale(1.15)`;
      requestAnimationFrame(tick);
    };
    requestAnimationFrame(tick);

    document.addEventListener('click', (e) => {
      const dropdown = document.querySelector('.dropdown');
      if (!dropdown) return;
      if (!dropdown.contains(e.target)) this.openDropdown = false;
    });
  }
}).mount('#app');
