/* Webinaire — import et affichage de slides (PDF via PDF.js + images PNG/JPG) */

// Importe une liste de fichiers (PDF ou images) -> tableau de slides { src, name }
async function importSlideFiles(fileList) {
  const out = [];
  for (const f of Array.from(fileList)) {
    const isPdf = f.type === 'application/pdf' || /\.pdf$/i.test(f.name);
    if (isPdf) {
      if (!window.pdfjsLib) throw new Error('PDF.js non chargé (connexion internet requise au 1er usage).');
      const buf = await f.arrayBuffer();
      const pdf = await window.pdfjsLib.getDocument({ data: buf }).promise;
      for (let i = 1; i <= pdf.numPages; i++) {
        const page = await pdf.getPage(i);
        const vp = page.getViewport({ scale: 2 });
        const c = document.createElement('canvas');
        c.width = vp.width; c.height = vp.height;
        await page.render({ canvasContext: c.getContext('2d'), viewport: vp }).promise;
        out.push({ src: c.toDataURL('image/jpeg', 0.92), name: `${f.name} · p.${i}` });
      }
    } else if (f.type.startsWith('image/') || /\.(png|jpe?g|gif|webp)$/i.test(f.name)) {
      const src = await new Promise((res, rej) => {
        const r = new FileReader();
        r.onload = () => res(r.result);
        r.onerror = () => rej(new Error('Lecture image impossible'));
        r.readAsDataURL(f);
      });
      out.push({ src, name: f.name });
    }
  }
  return out;
}

// Affiche le slide courant, contenu dans la zone disponible
function SlidesView({ slides, idx }) {
  if (!slides || slides.length === 0) {
    return (
      <div style={{
        position: 'absolute', inset: 0, display: 'flex', flexDirection: 'column',
        alignItems: 'center', justifyContent: 'center', gap: 16, textAlign: 'center',
        color: 'rgba(255,255,255,0.85)', padding: 40,
      }}>
        <img src="assets/icone-yehi-or.png" style={{ height: 90, opacity: 0.85 }} />
        <div style={{ fontFamily: '"Lobster", serif', fontSize: 30, color: '#fff' }}>
          Aucun slide importé
        </div>
        <div style={{ fontSize: 15, lineHeight: 1.6, maxWidth: 620, color: 'rgba(255,255,255,0.7)' }}>
          Ouvre le panneau de droite puis <strong style={{ color: '#fbb03b' }}>« Importer des slides »</strong>
          {' '}(PDF ou images PNG/JPG). Astuce : dans PowerPoint, <em>Enregistrer sous → PDF</em>
          {' '}conserve la mise en page à l'identique.
        </div>
      </div>
    );
  }
  const s = slides[Math.max(0, Math.min(idx, slides.length - 1))];
  return (
    <div style={{ position: 'absolute', inset: 0, display: 'flex',
      alignItems: 'center', justifyContent: 'center', background: '#0c1f1d' }}>
      <img src={s.src} alt={s.name || ''} style={{
        maxWidth: '100%', maxHeight: '100%', objectFit: 'contain',
        display: 'block',
      }} />
    </div>
  );
}

Object.assign(window, { importSlideFiles, SlidesView });
