in FigmaSharp.Controls/FigmaSharp.Controls.Cocoa/Converters/Controls/BoxConverter.cs [113:177]
protected override StringBuilder OnConvertToCode(CodeNode currentNode, CodeNode parentNode, ICodeRenderService rendererService)
{
var code = new StringBuilder();
var frame = (FigmaFrame)currentNode.Node;
currentNode.Node.TryGetNativeControlType(out FigmaControlType controlType);
currentNode.Node.TryGetNativeControlVariant(out NativeControlVariant controlVariant);
if (rendererService.NeedsRenderConstructor(currentNode, parentNode))
code.WriteConstructor(currentNode.Name, GetControlType(currentNode.Node), rendererService.NodeRendersVar(currentNode, parentNode));
if (controlType == FigmaControlType.Separator)
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BoxType), NSBoxType.NSBoxSeparator);
if (controlType == FigmaControlType.BoxCustom)
{
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BoxType), NSBoxType.NSBoxCustom);
RectangleVector rectangle = frame.children
.OfType<RectangleVector>()
.FirstOrDefault();
if (rectangle != null )
{
if (rectangle.styles != null)
{
bool borderSet = false;
foreach (var styleMap in rectangle.styles)
{
if ((rendererService.NodeProvider is NodeProvider nodeProvider) && nodeProvider.TryGetStyle(styleMap.Value, out FigmaStyle style))
{
if (styleMap.Key == "fill")
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.FillColor), ColorService.GetNSColorString(style.name));
if (styleMap.Key == "stroke")
{
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BorderColor), ColorService.GetNSColorString(style.name));
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BorderWidth), rectangle.strokeWeight.ToString());
borderSet = true;
}
}
}
if (!borderSet)
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.BorderWidth), "0");
}
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.CornerRadius), rectangle.cornerRadius.ToString());
}
}
FigmaText text = null;
if (frame.children != null)
{
text = frame.children
.OfType<FigmaText>()
.FirstOrDefault(s => (s.name == ComponentString.TITLE && s.visible));
}
if (text != null)
code.WriteTranslatedEquality(currentNode.Name, nameof(NSBox.Title), text.characters, rendererService);
else
code.WritePropertyEquality(currentNode.Name, nameof(NSBox.Title), string.Empty, inQuotes: true);
return code;
}