writeHtmlViewerFromJson function
Escribe el visor HTML desde un JSON ya serializado. Evita re-parsear + re-serializar cuando el JSON ya existe en disco. Devuelve la ruta absoluta del archivo escrito. Lanza StateError si el placeholder no está en el template (template corrupto).
Implementation
String writeHtmlViewerFromJson({
required String jsonString,
required String outputDir,
String fileName = 'graph.html',
}) {
if (!kGraphHtmlTemplate.contains(_placeholder)) {
throw StateError(
'Template corrupto: el placeholder "$_placeholder" no se encontró.',
);
}
// El template menciona el placeholder también en comentarios HTML de documentación,
// además de la ocurrencia real dentro del <script id="graph-payload">.
// replaceAll garantiza que ninguna ocurrencia del marcador quede en el output,
// lo que es seguro porque el JSON no puede contener el string del placeholder.
final html = kGraphHtmlTemplate.replaceAll(_placeholder, jsonString);
final dir = Directory(outputDir);
if (!dir.existsSync()) dir.createSync(recursive: true);
final outFile = File(p.join(outputDir, fileName));
outFile.writeAsStringSync(html);
return outFile.absolute.path;
}