// Sanitisation du HTML entrant (courriels clients, contenu osTicket/ERPNext) AVANT tout v-html.
// Bloque les vecteurs XSS (<script>, gestionnaires on*, href javascript:) tout en gardant l'affichage riche.
// DOMPurify v3 : config par défaut = sûre ET permissive (conserve img data:/cid réinlinés, liens, tableaux, styles inline).
import DOMPurify from 'dompurify'

export function sanitizeHtml (html) {
  if (html == null || html === '') return ''
  // ADD_ATTR target → garde target="_blank" sur les liens ; le reste (scripts, on*, javascript:) est retiré par défaut.
  return DOMPurify.sanitize(String(html), { ADD_ATTR: ['target'] })
}

// Décode les entités HTML (légataire osTicket : &eacute; &#039; … parfois DOUBLE-échappées &amp;#039;)
// AVANT sanitisation, pour qu'elles s'affichent en caractères et non en « codes ». Sûr : DOMPurify passe en dernier.
function _decodeOnce (s) {
  const t = document.createElement('textarea')
  t.innerHTML = s
  return t.value
}
export function richHtml (raw) {
  if (raw == null || raw === '') return ''
  let dec = _decodeOnce(String(raw))
  // 2e passe si des entités subsistent (contenu double-échappé : &amp;#039; → &#039; → ')
  if (dec !== String(raw) && /&(#\d+|[a-zA-Z]+);/.test(dec)) dec = _decodeOnce(dec)
  return sanitizeHtml(dec)
}
