MCPcopy Index your code
hub / github.com/bernaferrari/FigmaToCode / composeFrame

Function composeFrame

packages/backend/src/compose/composeMain.ts:228–280  ·  view source on GitHub ↗
(
  node: SceneNode & BaseFrameMixin & MinimalBlendMixin,
)

Source from the content-addressed store, hash-verified

226};
227
228const composeFrame = (
229 node: SceneNode & BaseFrameMixin & MinimalBlendMixin,
230): string => {
231 const hasAbsoluteChildren = node.children.some(
232 (child: any) => (child as any).layoutPositioning === "ABSOLUTE",
233 );
234
235 if (hasAbsoluteChildren && node.layoutMode !== "NONE") {
236 addWarning(
237 `Frame "${node.name}" has absolute positioned children. Using Box instead of ${
238 node.layoutMode === "HORIZONTAL" ? "Row" : "Column"
239 }.`,
240 );
241 }
242
243 const children = composeWidgetGenerator(node.children);
244
245 if (hasAbsoluteChildren) {
246 return composeContainer(
247 node,
248 generateComposeWidget("Box", {
249 content: children !== "" ? [children] : [],
250 }),
251 );
252 }
253
254 if (node.layoutMode !== "NONE") {
255 const rowColumnWrap = makeRowColumnWrap(node, children);
256 return composeContainer(node, rowColumnWrap);
257 } else {
258 if (node.inferredAutoLayout) {
259 const rowColumnWrap = makeRowColumnWrap(
260 node.inferredAutoLayout,
261 children,
262 );
263 return composeContainer(node, rowColumnWrap);
264 }
265
266 if (node.isAsset) {
267 return composeContainer(
268 node,
269 "Icon(Icons.Default.Home, contentDescription = null)",
270 );
271 }
272
273 return composeContainer(
274 node,
275 generateComposeWidget("Box", {
276 content: children !== "" ? [children] : [],
277 }),
278 );
279 }
280};
281
282const makeRowColumnWrap = (
283 autoLayout: InferredAutoLayoutResult,

Callers 1

composeWidgetGeneratorFunction · 0.85

Calls 5

addWarningFunction · 0.90
composeWidgetGeneratorFunction · 0.85
generateComposeWidgetFunction · 0.85
composeContainerFunction · 0.70
makeRowColumnWrapFunction · 0.70

Tested by

no test coverage detected