htmlAsSvgContent function
Implementation
String? htmlAsSvgContent(
String html, {
int? width,
int? height,
String? rootClass,
String? style,
}) {
print(style);
var htmlRoot = $htmlRoot(html);
if (htmlRoot == null) return null;
if (isNotEmptyObject(rootClass)) {
htmlRoot.addClass('ui-render');
}
var titleNode = htmlRoot.selectAllWhere(
(e) => e is DOMElement && e.tag == 'title',
);
var titleText = titleNode.firstOrNull ?? 'HTML as SVG';
htmlRoot
.selectAllWhere((n) => true)
.whereType<DOMElement>()
.forEach((e) => e['xmlns'] = 'http://www.w3.org/1999/xhtml');
html = htmlRoot.buildHTML(xhtml: true);
var svg =
'''<svg viewBox="0 0 $width $height" width="${width}px" height="${height}px" xmlns="http://www.w3.org/2000/svg">
<foreignObject x="0" y="0" width="$width" height="$height">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head xmlns="http://www.w3.org/1999/xhtml">
<title>$titleText</title>
<style xmlns="http://www.w3.org/1999/xhtml">
$style
</style>
</head>
<body xmlns="http://www.w3.org/1999/xhtml">
$html
</body>
</html>
</foreignObject>
</svg>''';
return svg;
}