Implementing toolkits - microsoft/FigmaSharp GitHub Wiki
Toolkits
FigmaSharp uses Converter objects to translate Figma layers into views. Converters take in a FigmaNode
, and return a native view object (this can be a control) and code.
NativeControlConverter
is the base object to create new control converters with. Use this to derive a converter that can include logic that applies to all your other converters.
class MyBaseConverter : NativeControlConverter {}
class MyButtonConverter: MyBaseConverter {}
Controls
Create a list of names and native control types.
When FigmaSharps walks through the layers of a Figma document, a check is done on each converter's CanConvert()
method whether the converter be used to convert the current node.
public override Type GetControlType(FigmaNode currentNode) => typeof(NSBox);
public override bool CanConvert(FigmaNode currentNode)
{
currentNode.TryGetNativeControlType(out var value);
return value == NativeControlType.Box ||
value == NativeControlType.BoxCustom ||
value == NativeControlType.Separator;
}
It' possible to use the same converter for different types of a Figma component.
protected override IView OnConvertToView(FigmaNode currentNode, ProcessedNode parentNode, FigmaRendererService rendererService)
{
var box = new NSBox();
return new View(box);
}
protected override StringBuilder OnConvertToCode(FigmaCodeNode currentNode, FigmaCodeNode parentNode, FigmaCodeRendererService rendererService)
{
var code = new StringBuilder();
return code;
}
It's a good idea to keep a list of constant strings for your toolkit's layer names:
static class ComponentString
{
public const string TITLE = "Title";
...
// States
public const string STATE_REGULAR = "State: Regular";
public const string STATE_DISABLED = "State: Disabled";
...
}