toHtmlDocument method

String toHtmlDocument()

Renders the complete HTML document.

Implementation

String toHtmlDocument() {
  final language = HtmlRenderer.escapeAttribute(lang);
  final effectiveFeatures = {
    ...domFirstFeatures,
    if (applicationRuntime?.reference is SeoDomFirstTabsApplicationRuntime)
      SeoDomFirstFeature.tabs,
  };
  final head = StringBuffer();
  head.write(
    seoDomFirstFeatureBootstrapScriptHtml(
      domFirstFeatures,
      nonce: interactionNonce,
    ),
  );
  if (stylesheet != null && stylesheet!.trim().isNotEmpty) {
    head.write(seoStyleTagHtml(stylesheet!, nonce: interactionNonce));
  }
  if (enableInteractions) {
    head.write(seoInteractionStyleHtml(nonce: interactionNonce));
  }
  head.write(
    seoDomFirstFeatureStyleHtml(
      effectiveFeatures,
      nonce: interactionNonce,
    ),
  );
  final runtime = StringBuffer();
  if (enableInteractions) {
    runtime.write(seoInteractionScriptHtml(nonce: interactionNonce));
  }
  runtime.write(
    seoDomFirstFeatureScriptHtml(
      domFirstFeatures,
      nonce: interactionNonce,
    ),
  );
  if (applicationRuntime case final artifact?) {
    runtime.write(_applicationRuntimeScriptHtml(
      artifact,
      nonce: interactionNonce,
    ));
  }
  return '<!DOCTYPE html>'
      '<html lang="$language">'
      '<head>'
      '<meta charset="utf-8"/>'
      '<meta name="viewport" content="width=device-width, initial-scale=1"/>'
      '${meta.toHtml()}'
      '$head'
      '</head>'
      '<body>$bodyHtml$runtime</body>'
      '</html>';
}