/**
 * Copie un texte dans le presse-papiers.
 *
 * `navigator.clipboard` n'existe que dans un contexte sécurisé (HTTPS ou
 * localhost) — cas fréquemment absent d'une instance auto-hébergée servie en
 * HTTP sur son IP. On retombe alors sur `document.execCommand('copy')`.
 *
 * @returns {Promise<boolean>} true si la copie a réussi.
 */
export async function copyText(text) {
  if (navigator.clipboard && window.isSecureContext) {
    try {
      await navigator.clipboard.writeText(text)
      return true
    } catch { /* on tente la méthode historique ci-dessous */ }
  }

  try {
    const textarea = document.createElement('textarea')
    textarea.value = text
    textarea.setAttribute('readonly', '')
    textarea.style.position = 'fixed'
    textarea.style.top      = '-9999px'
    textarea.style.opacity  = '0'
    document.body.appendChild(textarea)
    textarea.select()
    const ok = document.execCommand('copy')
    document.body.removeChild(textarea)
    return ok
  } catch {
    return false
  }
}

/** Déclenche le téléchargement d'un contenu texte — repli quand la copie échoue. */
export function downloadText(filename, content, mime = 'text/plain') {
  const blob = new Blob([content], { type: mime })
  const url  = URL.createObjectURL(blob)
  const a    = document.createElement('a')
  a.href     = url
  a.download = filename
  a.click()
  URL.revokeObjectURL(url)
}
