createSvgNode method
Generates SVG representation of the element.
Implementation
@override
XmlElement createSvgNode(ChantContext ctxt, [ChantLayoutElement? source]) {
final options = getSvgProps();
final extraStyleProperties = getExtraStyleProperties(ctxt);
if (extraStyleProperties['class'] != null) {
options['class'] = '${extraStyleProperties['class']} ${options['class']}';
}
if (ctxt.stylingMode == .attributes) {
final ts = ctxt.textStyles;
options.addAll({
for (final c in (options['class'] as String).split(" "))
if (ts.containsKey(c)) ...{
'fill': (ts[c]['color'] as Color? ?? ctxt.theme.textColor)
.toSvgString(),
'font-family': ts[c]['font'] ?? 'serif',
'font-size': ts[c]['size'] ?? 16,
},
for (final e in extraStyleProperties.entries)
e.key: e.value is Color ? (e.value as Color).toSvgString() : e.value,
});
} else {
options['style'] = getCssForProperties(extraStyleProperties);
}
return QuickSvg.createNode('text', options, [
for (final span in spans)
QuickSvg.createNode('tspan', getSpanOptions(span, ctxt), span.text),
]);
}