MCPcopy Create free account
hub / github.com/bernaferrari/FigmaToCode / composeMain

Function composeMain

packages/backend/src/compose/composeMain.ts:71–112  ·  view source on GitHub ↗
(
  sceneNode: ReadonlyArray<SceneNode>,
  settings: PluginSettings,
)

Source from the content-addressed store, hash-verified

69}`;
70
71export const composeMain = (
72 sceneNode: ReadonlyArray<SceneNode>,
73 settings: PluginSettings,
74): string => {
75 localSettings = settings;
76 previousExecutionCache = [];
77
78 // Handle empty input
79 if (!sceneNode || sceneNode.length === 0) {
80 return "// No nodes to convert";
81 }
82
83 let result = composeWidgetGenerator(sceneNode);
84
85 // Handle empty result
86 if (!result || result.trim() === "") {
87 result = "// No visible content generated";
88 }
89
90 switch (localSettings.composeGenerationMode) {
91 case "snippet":
92 return result;
93 case "composable":
94 if (!result.startsWith("Column") && !result.startsWith("//")) {
95 result = generateComposeWidget("Column", { content: [result] });
96 }
97 return getComposableTemplate(
98 stringToClassName(sceneNode[0]?.name || "Component"),
99 result,
100 );
101 case "screen":
102 if (!result.startsWith("Column") && !result.startsWith("//")) {
103 result = generateComposeWidget("Column", { content: [result] });
104 }
105 return getFullScreenTemplate(
106 stringToClassName(sceneNode[0]?.name || "Component"),
107 result,
108 );
109 default:
110 return result;
111 }
112};
113
114const generateComposeWidget = (
115 widget: string,

Callers 1

convertToCodeFunction · 0.90

Calls 5

stringToClassNameFunction · 0.90
composeWidgetGeneratorFunction · 0.85
generateComposeWidgetFunction · 0.85
getComposableTemplateFunction · 0.85
getFullScreenTemplateFunction · 0.85

Tested by

no test coverage detected