/* tweaks-mapa.jsx — panel de Tweaks del mapa estelar (estrellas · audio · delay
   del join). Maneja el panel con tweaks-panel.jsx y empuja los valores a
   window.MapaControls (estrellas/audio) y a window.__maniJoinDelay (el delay
   antes de que el punto del manifiesto empiece a unirse con la estrella). */
(function () {
  const { useTweaks, TweaksPanel, TweakSection, TweakSlider, TweakToggle } = window;
  if (!useTweaks) return;

  const DEFAULTS = /*EDITMODE-BEGIN*/ {
    "stars": 1,
    "audio": true,
    "joinDelay": 0.7
  } /*EDITMODE-END*/;

  function TweaksApp() {
    const [t, setTweak] = useTweaks(DEFAULTS);

    // delay del join: se aplica de inmediato (lo lee el handoff cada frame)
    React.useEffect(() => {
      window.__maniJoinDelay = Number(t.joinDelay);
    }, [t.joinDelay]);

    React.useEffect(() => {
      const apply = () => {
        if (!window.MapaControls) return false;
        window.MapaControls.setStars(Number(t.stars));
        window.MapaControls.setAudio(!!t.audio);
        return true;
      };
      if (!apply()) {
        const id = setInterval(() => { if (apply()) clearInterval(id); }, 200);
        setTimeout(() => clearInterval(id), 5000);
        return () => clearInterval(id);
      }
    }, [t.stars, t.audio]);

    return (
      <TweaksPanel title="Tweaks">
        <TweakSection label="Transición" />
        <TweakSlider
          label="Delay del join"
          value={t.joinDelay} min={0.2} max={0.92} step={0.01}
          onChange={(v) => setTweak('joinDelay', v)}
        />
        <TweakSection label="Mapa estelar" />
        <TweakSlider label="Estrellas" value={t.stars} min={0} max={2} step={0.25} onChange={(v) => setTweak('stars', v)} />
        <TweakToggle label="Audio · ping" value={t.audio} onChange={(v) => setTweak('audio', v)} />
      </TweaksPanel>
    );
  }

  // semilla temprana: el valor guardado vive en DEFAULTS (el host reescribe ese
  // bloque en disco), así que el handoff usa tu delay desde el primer scroll.
  if (typeof DEFAULTS.joinDelay === 'number') window.__maniJoinDelay = DEFAULTS.joinDelay;

  const el = document.getElementById('tweaks-root');
  if (el) ReactDOM.createRoot(el).render(<TweaksApp />);
})();
