/**
 * CSV-Ausgabe. Portiert aus dem alten Panel: Semikolon als Trennzeichen,
 * deutsches Zahlenformat und ein BOM am Anfang — nur damit öffnet Excel die
 * Datei ohne Rückfragen richtig.
 */

function feld(wert: unknown): string {
  if (wert === null || wert === undefined) return ""
  if (typeof wert === "number") return String(wert).replace(".", ",")
  const text = String(wert)
  return /[";\n]/.test(text) ? `"${text.replace(/"/g, '""')}"` : text
}

export function alsCsv(kopf: readonly string[], zeilen: readonly unknown[][]): string {
  const inhalt = [kopf.join(";"), ...zeilen.map((z) => z.map(feld).join(";"))].join("\r\n")
  return `﻿${inhalt}`
}

export function csvHerunterladen(
  name: string,
  kopf: readonly string[],
  zeilen: readonly unknown[][],
): void {
  const blob = new Blob([alsCsv(kopf, zeilen)], { type: "text/csv;charset=utf-8" })
  const url = URL.createObjectURL(blob)
  const verweis = document.createElement("a")
  verweis.href = url
  verweis.download = `${name}.csv`
  document.body.appendChild(verweis)
  verweis.click()
  verweis.remove()
  URL.revokeObjectURL(url)
}
