figma-to-code-agent 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/LICENSE +21 -0
- package/QUICKSTART.md +198 -0
- package/README.md +149 -0
- package/dist/FigmaToCodeAgent.d.ts +55 -0
- package/dist/FigmaToCodeAgent.d.ts.map +1 -0
- package/dist/FigmaToCodeAgent.js +251 -0
- package/dist/FigmaToCodeAgent.js.map +1 -0
- package/dist/assets/index.d.ts +6 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +7 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +261 -0
- package/dist/cli.js.map +1 -0
- package/dist/extraction/FigmaAPIClient.d.ts +53 -0
- package/dist/extraction/FigmaAPIClient.d.ts.map +1 -0
- package/dist/extraction/FigmaAPIClient.js +275 -0
- package/dist/extraction/FigmaAPIClient.js.map +1 -0
- package/dist/extraction/FigmaCache.d.ts +28 -0
- package/dist/extraction/FigmaCache.d.ts.map +1 -0
- package/dist/extraction/FigmaCache.js +120 -0
- package/dist/extraction/FigmaCache.js.map +1 -0
- package/dist/extraction/MCPClient.d.ts +75 -0
- package/dist/extraction/MCPClient.d.ts.map +1 -0
- package/dist/extraction/MCPClient.js +254 -0
- package/dist/extraction/MCPClient.js.map +1 -0
- package/dist/extraction/index.d.ts +9 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +27 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/types.d.ts +122 -0
- package/dist/extraction/types.d.ts.map +1 -0
- package/dist/extraction/types.js +6 -0
- package/dist/extraction/types.js.map +1 -0
- package/dist/generation/AICodeOptimizer.d.ts +10 -0
- package/dist/generation/AICodeOptimizer.d.ts.map +1 -0
- package/dist/generation/AICodeOptimizer.js +33 -0
- package/dist/generation/AICodeOptimizer.js.map +1 -0
- package/dist/generation/ReactGenerator.d.ts +27 -0
- package/dist/generation/ReactGenerator.d.ts.map +1 -0
- package/dist/generation/ReactGenerator.js +423 -0
- package/dist/generation/ReactGenerator.js.map +1 -0
- package/dist/generation/VueGenerator.d.ts +23 -0
- package/dist/generation/VueGenerator.d.ts.map +1 -0
- package/dist/generation/VueGenerator.js +337 -0
- package/dist/generation/VueGenerator.js.map +1 -0
- package/dist/generation/index.d.ts +6 -0
- package/dist/generation/index.d.ts.map +1 -0
- package/dist/generation/index.js +7 -0
- package/dist/generation/index.js.map +1 -0
- package/dist/generation/types.d.ts +24 -0
- package/dist/generation/types.d.ts.map +1 -0
- package/dist/generation/types.js +3 -0
- package/dist/generation/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/BedrockProvider.d.ts +8 -0
- package/dist/llm/BedrockProvider.d.ts.map +1 -0
- package/dist/llm/BedrockProvider.js +34 -0
- package/dist/llm/BedrockProvider.js.map +1 -0
- package/dist/llm/LLMFactory.d.ts +5 -0
- package/dist/llm/LLMFactory.d.ts.map +1 -0
- package/dist/llm/LLMFactory.js +21 -0
- package/dist/llm/LLMFactory.js.map +1 -0
- package/dist/llm/OpenAIProvider.d.ts +7 -0
- package/dist/llm/OpenAIProvider.d.ts.map +1 -0
- package/dist/llm/OpenAIProvider.js +34 -0
- package/dist/llm/OpenAIProvider.js.map +1 -0
- package/dist/llm/index.d.ts +5 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +21 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/types.d.ts +23 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +3 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/transformation/ASTFactory.d.ts +92 -0
- package/dist/transformation/ASTFactory.d.ts.map +1 -0
- package/dist/transformation/ASTFactory.js +240 -0
- package/dist/transformation/ASTFactory.js.map +1 -0
- package/dist/transformation/ASTParser.d.ts +13 -0
- package/dist/transformation/ASTParser.d.ts.map +1 -0
- package/dist/transformation/ASTParser.js +177 -0
- package/dist/transformation/ASTParser.js.map +1 -0
- package/dist/transformation/TransformationPipeline.d.ts +31 -0
- package/dist/transformation/TransformationPipeline.d.ts.map +1 -0
- package/dist/transformation/TransformationPipeline.js +42 -0
- package/dist/transformation/TransformationPipeline.js.map +1 -0
- package/dist/transformation/index.d.ts +7 -0
- package/dist/transformation/index.d.ts.map +1 -0
- package/dist/transformation/index.js +25 -0
- package/dist/transformation/index.js.map +1 -0
- package/dist/transformation/transformers/AIComponentSplitter.d.ts +14 -0
- package/dist/transformation/transformers/AIComponentSplitter.d.ts.map +1 -0
- package/dist/transformation/transformers/AIComponentSplitter.js +71 -0
- package/dist/transformation/transformers/AIComponentSplitter.js.map +1 -0
- package/dist/transformation/transformers/AILayoutAnalyzer.d.ts +18 -0
- package/dist/transformation/transformers/AILayoutAnalyzer.d.ts.map +1 -0
- package/dist/transformation/transformers/AILayoutAnalyzer.js +125 -0
- package/dist/transformation/transformers/AILayoutAnalyzer.js.map +1 -0
- package/dist/transformation/transformers/AISemanticNamer.d.ts +12 -0
- package/dist/transformation/transformers/AISemanticNamer.d.ts.map +1 -0
- package/dist/transformation/transformers/AISemanticNamer.js +50 -0
- package/dist/transformation/transformers/AISemanticNamer.js.map +1 -0
- package/dist/transformation/transformers/ComponentExtractor.d.ts +16 -0
- package/dist/transformation/transformers/ComponentExtractor.d.ts.map +1 -0
- package/dist/transformation/transformers/ComponentExtractor.js +91 -0
- package/dist/transformation/transformers/ComponentExtractor.js.map +1 -0
- package/dist/transformation/transformers/FigmaLayerPreserver.d.ts +14 -0
- package/dist/transformation/transformers/FigmaLayerPreserver.d.ts.map +1 -0
- package/dist/transformation/transformers/FigmaLayerPreserver.js +48 -0
- package/dist/transformation/transformers/FigmaLayerPreserver.js.map +1 -0
- package/dist/transformation/transformers/FigmaStructureOptimizer.d.ts +16 -0
- package/dist/transformation/transformers/FigmaStructureOptimizer.d.ts.map +1 -0
- package/dist/transformation/transformers/FigmaStructureOptimizer.js +65 -0
- package/dist/transformation/transformers/FigmaStructureOptimizer.js.map +1 -0
- package/dist/transformation/transformers/FlattenTransformer.d.ts +15 -0
- package/dist/transformation/transformers/FlattenTransformer.d.ts.map +1 -0
- package/dist/transformation/transformers/FlattenTransformer.js +69 -0
- package/dist/transformation/transformers/FlattenTransformer.js.map +1 -0
- package/dist/transformation/transformers/LayoutOptimizer.d.ts +15 -0
- package/dist/transformation/transformers/LayoutOptimizer.d.ts.map +1 -0
- package/dist/transformation/transformers/LayoutOptimizer.js +63 -0
- package/dist/transformation/transformers/LayoutOptimizer.js.map +1 -0
- package/dist/transformation/transformers/SemanticNamer.d.ts +14 -0
- package/dist/transformation/transformers/SemanticNamer.d.ts.map +1 -0
- package/dist/transformation/transformers/SemanticNamer.js +65 -0
- package/dist/transformation/transformers/SemanticNamer.js.map +1 -0
- package/dist/transformation/transformers/SimplifyTransformer.d.ts +23 -0
- package/dist/transformation/transformers/SimplifyTransformer.d.ts.map +1 -0
- package/dist/transformation/transformers/SimplifyTransformer.js +138 -0
- package/dist/transformation/transformers/SimplifyTransformer.js.map +1 -0
- package/dist/transformation/types.d.ts +129 -0
- package/dist/transformation/types.d.ts.map +1 -0
- package/dist/transformation/types.js +7 -0
- package/dist/transformation/types.js.map +1 -0
- package/dist/validation/index.d.ts +6 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +7 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +81 -0
- package/test-app/test-react/index.html +19 -0
- package/test-app/test-react/package.json +16 -0
- package/test-app/test-react/src/Component.jsx +146 -0
- package/test-app/test-react/src/Component.module.css +572 -0
- package/test-app/test-react/src/Homepage.jsx +53 -0
- package/test-app/test-react/src/Homepage.module.css +218 -0
- package/test-app/test-react/src/ProductPage.jsx +74 -0
- package/test-app/test-react/src/ProductPage.module.css +357 -0
- package/test-app/test-react/src/ShoppingCart.jsx +151 -0
- package/test-app/test-react/src/ShoppingCart.module.css +739 -0
- package/test-app/test-react/src/main.jsx +9 -0
- package/test-app/test-react/vite.config.js +6 -0
- package/test-app/test-vue/index.html +19 -0
- package/test-app/test-vue/package.json +15 -0
- package/test-app/test-vue/src/App.vue +16 -0
- package/test-app/test-vue/src/Component.vue +723 -0
- package/test-app/test-vue/src/Homepage.vue +271 -0
- package/test-app/test-vue/src/ProductPage.vue +431 -0
- package/test-app/test-vue/src/ShoppingCart.vue +890 -0
- package/test-app/test-vue/src/main.js +4 -0
- package/test-app/test-vue/vite.config.js +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FigmaStructureOptimizer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/FigmaStructureOptimizer.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,MAAa,uBAAuB;IAApC;QACE,SAAI,GAAG,2BAA2B,CAAC;IAoDrC,CAAC;IAlDC,SAAS,CAAC,IAAa;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,iCAAiC;QACjC,OAAO,SAAS,IAAI,IAAI,CAAC;IAC3B,CAAC;IAEO,YAAY,CAAC,IAAa;QAChC,yBAAyB;QACzB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gCAAgC;QAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ;aACpC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACxC,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAEvD,oDAAoD;QACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,IAAa;QAC/B,iCAAiC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CAAC,IAAa,EAAE,QAAmB;QACzD,+BAA+B;QAC/B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE5E,wCAAwC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAEhE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArDD,0DAqDC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ASTNode } from '../types';
|
|
2
|
+
import type { Transformer } from '../TransformationPipeline';
|
|
3
|
+
/**
|
|
4
|
+
* Flatten unnecessary nesting in the AST
|
|
5
|
+
* Removes single-child containers that don't add semantic value
|
|
6
|
+
*/
|
|
7
|
+
export declare class FlattenTransformer implements Transformer {
|
|
8
|
+
name: string;
|
|
9
|
+
transform(node: ASTNode): ASTNode;
|
|
10
|
+
private flattenNode;
|
|
11
|
+
private canFlatten;
|
|
12
|
+
private hasMeaningfulStyles;
|
|
13
|
+
private hasMeaningfulLayout;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=FlattenTransformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlattenTransformer.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/FlattenTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,IAAI,SAAa;IAEjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;CAS5B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FlattenTransformer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Flatten unnecessary nesting in the AST
|
|
6
|
+
* Removes single-child containers that don't add semantic value
|
|
7
|
+
*/
|
|
8
|
+
class FlattenTransformer {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.name = 'flatten';
|
|
11
|
+
}
|
|
12
|
+
transform(node) {
|
|
13
|
+
return this.flattenNode(node);
|
|
14
|
+
}
|
|
15
|
+
flattenNode(node) {
|
|
16
|
+
// First, recursively flatten children
|
|
17
|
+
const flattenedChildren = node.children.map((child) => this.flattenNode(child));
|
|
18
|
+
// Check if this node can be flattened
|
|
19
|
+
if (this.canFlatten(node, flattenedChildren)) {
|
|
20
|
+
// Return the single child, but preserve parent reference
|
|
21
|
+
const child = flattenedChildren[0];
|
|
22
|
+
return {
|
|
23
|
+
...child,
|
|
24
|
+
parent: node.parent,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Return node with flattened children
|
|
28
|
+
return {
|
|
29
|
+
...node,
|
|
30
|
+
children: flattenedChildren,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
canFlatten(node, children) {
|
|
34
|
+
// Don't flatten if not a container
|
|
35
|
+
if (node.type !== 'Container') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
// Don't flatten if has multiple children
|
|
39
|
+
if (children.length !== 1) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
// Don't flatten if has meaningful styles
|
|
43
|
+
if (this.hasMeaningfulStyles(node)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// Don't flatten if has meaningful layout properties
|
|
47
|
+
if (this.hasMeaningfulLayout(node)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
hasMeaningfulStyles(node) {
|
|
53
|
+
const { styles } = node;
|
|
54
|
+
return !!(styles.backgroundColor ||
|
|
55
|
+
styles.border ||
|
|
56
|
+
styles.borderRadius ||
|
|
57
|
+
(styles.boxShadow && styles.boxShadow.length > 0) ||
|
|
58
|
+
(styles.opacity !== undefined && styles.opacity < 1));
|
|
59
|
+
}
|
|
60
|
+
hasMeaningfulLayout(node) {
|
|
61
|
+
const { layout } = node;
|
|
62
|
+
return !!(layout.padding ||
|
|
63
|
+
layout.margin ||
|
|
64
|
+
(layout.display === 'flex' &&
|
|
65
|
+
(layout.flexDirection || layout.justifyContent || layout.alignItems || layout.gap)));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.FlattenTransformer = FlattenTransformer;
|
|
69
|
+
//# sourceMappingURL=FlattenTransformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlattenTransformer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/FlattenTransformer.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,kBAAkB;IAA/B;QACE,SAAI,GAAG,SAAS,CAAC;IAuEnB,CAAC;IArEC,SAAS,CAAC,IAAa;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,WAAW,CAAC,IAAa;QAC/B,sCAAsC;QACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhF,sCAAsC;QACtC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAC7C,yDAAyD;YACzD,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,OAAO;YACL,GAAG,IAAI;YACP,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,IAAa,EAAE,QAAmB;QACnD,mCAAmC;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yCAAyC;QACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,oDAAoD;QACpD,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,IAAa;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,CAAC,CAAC,CACP,MAAM,CAAC,eAAe;YACtB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,YAAY;YACnB,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACjD,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CACrD,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,IAAa;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,CAAC,CAAC,CACP,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,MAAM;YACb,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM;gBACxB,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CACtF,CAAC;IACJ,CAAC;CACF;AAxED,gDAwEC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ASTNode } from '../types';
|
|
2
|
+
import type { Transformer } from '../TransformationPipeline';
|
|
3
|
+
/**
|
|
4
|
+
* Optimize layout properties for better CSS generation
|
|
5
|
+
*/
|
|
6
|
+
export declare class LayoutOptimizer implements Transformer {
|
|
7
|
+
name: string;
|
|
8
|
+
transform(node: ASTNode): ASTNode;
|
|
9
|
+
private optimizeNode;
|
|
10
|
+
private canConvertToFlex;
|
|
11
|
+
private isAlignedHorizontally;
|
|
12
|
+
private isAlignedVertically;
|
|
13
|
+
private inferFlexDirection;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=LayoutOptimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutOptimizer.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/LayoutOptimizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,IAAI,SAAsB;IAE1B,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,kBAAkB;CAI3B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LayoutOptimizer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Optimize layout properties for better CSS generation
|
|
6
|
+
*/
|
|
7
|
+
class LayoutOptimizer {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.name = 'layout-optimizer';
|
|
10
|
+
}
|
|
11
|
+
transform(node) {
|
|
12
|
+
return this.optimizeNode(node);
|
|
13
|
+
}
|
|
14
|
+
optimizeNode(node) {
|
|
15
|
+
const optimizedLayout = { ...node.layout };
|
|
16
|
+
// Convert absolute positioning to flex when appropriate
|
|
17
|
+
if (optimizedLayout.display === 'absolute' && this.canConvertToFlex(node)) {
|
|
18
|
+
optimizedLayout.display = 'flex';
|
|
19
|
+
optimizedLayout.flexDirection = this.inferFlexDirection(node);
|
|
20
|
+
}
|
|
21
|
+
// Simplify uniform padding
|
|
22
|
+
if (optimizedLayout.padding) {
|
|
23
|
+
const { top, right, bottom, left } = optimizedLayout.padding;
|
|
24
|
+
if (top === right && right === bottom && bottom === left) {
|
|
25
|
+
optimizedLayout.padding = { top, right, bottom, left };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
...node,
|
|
30
|
+
layout: optimizedLayout,
|
|
31
|
+
children: node.children.map((child) => this.optimizeNode(child)),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
canConvertToFlex(node) {
|
|
35
|
+
if (node.children.length < 2)
|
|
36
|
+
return false;
|
|
37
|
+
// Check if children are aligned in a row or column
|
|
38
|
+
const positions = node.children.map((child) => child.layout.position);
|
|
39
|
+
const isRow = this.isAlignedHorizontally(positions);
|
|
40
|
+
const isColumn = this.isAlignedVertically(positions);
|
|
41
|
+
return isRow || isColumn;
|
|
42
|
+
}
|
|
43
|
+
isAlignedHorizontally(positions) {
|
|
44
|
+
if (positions.length < 2)
|
|
45
|
+
return false;
|
|
46
|
+
const yValues = positions.map((p) => p.y);
|
|
47
|
+
const avgY = yValues.reduce((a, b) => a + b, 0) / yValues.length;
|
|
48
|
+
return yValues.every((y) => Math.abs(y - avgY) < 10);
|
|
49
|
+
}
|
|
50
|
+
isAlignedVertically(positions) {
|
|
51
|
+
if (positions.length < 2)
|
|
52
|
+
return false;
|
|
53
|
+
const xValues = positions.map((p) => p.x);
|
|
54
|
+
const avgX = xValues.reduce((a, b) => a + b, 0) / xValues.length;
|
|
55
|
+
return xValues.every((x) => Math.abs(x - avgX) < 10);
|
|
56
|
+
}
|
|
57
|
+
inferFlexDirection(node) {
|
|
58
|
+
const positions = node.children.map((child) => child.layout.position);
|
|
59
|
+
return this.isAlignedHorizontally(positions) ? 'row' : 'column';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.LayoutOptimizer = LayoutOptimizer;
|
|
63
|
+
//# sourceMappingURL=LayoutOptimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutOptimizer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/LayoutOptimizer.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,eAAe;IAA5B;QACE,SAAI,GAAG,kBAAkB,CAAC;IA2D5B,CAAC;IAzDC,SAAS,CAAC,IAAa;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,YAAY,CAAC,IAAa;QAChC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE3C,wDAAwD;QACxD,IAAI,eAAe,CAAC,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1E,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC;YACjC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,2BAA2B;QAC3B,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC;YAC7D,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzD,eAAe,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,eAAe;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,IAAa;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAE3C,mDAAmD;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAErD,OAAO,KAAK,IAAI,QAAQ,CAAC;IAC3B,CAAC;IAEO,qBAAqB,CAAC,SAA0C;QACtE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACjE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,mBAAmB,CAAC,SAA0C;QACpE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACjE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,kBAAkB,CAAC,IAAa;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClE,CAAC;CACF;AA5DD,0CA4DC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ASTNode } from '../types';
|
|
2
|
+
import type { Transformer } from '../TransformationPipeline';
|
|
3
|
+
/**
|
|
4
|
+
* Generate semantic names for components
|
|
5
|
+
*/
|
|
6
|
+
export declare class SemanticNamer implements Transformer {
|
|
7
|
+
name: string;
|
|
8
|
+
transform(node: ASTNode): ASTNode;
|
|
9
|
+
private renameNode;
|
|
10
|
+
private generateSemanticName;
|
|
11
|
+
private isMeaningfulName;
|
|
12
|
+
private toCamelCase;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=SemanticNamer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticNamer.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/SemanticNamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,IAAI,SAAoB;IAExB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,WAAW;CAGpB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SemanticNamer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Generate semantic names for components
|
|
6
|
+
*/
|
|
7
|
+
class SemanticNamer {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.name = 'semantic-namer';
|
|
10
|
+
}
|
|
11
|
+
transform(node) {
|
|
12
|
+
return this.renameNode(node);
|
|
13
|
+
}
|
|
14
|
+
renameNode(node) {
|
|
15
|
+
const semanticName = this.generateSemanticName(node);
|
|
16
|
+
return {
|
|
17
|
+
...node,
|
|
18
|
+
name: semanticName,
|
|
19
|
+
children: node.children.map((child) => this.renameNode(child)),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
generateSemanticName(node) {
|
|
23
|
+
// Text nodes: use a short descriptive name, not the full text content
|
|
24
|
+
if (node.type === 'Text') {
|
|
25
|
+
// Take first few words of the text content or node name for a short label
|
|
26
|
+
const text = node.metadata.textContent || node.name || 'text';
|
|
27
|
+
const words = text
|
|
28
|
+
.replace(/[^a-zA-Z0-9\s]/g, '')
|
|
29
|
+
.trim()
|
|
30
|
+
.split(/\s+/)
|
|
31
|
+
.slice(0, 3)
|
|
32
|
+
.join(' ');
|
|
33
|
+
return words ? this.toCamelCase(words) : 'text';
|
|
34
|
+
}
|
|
35
|
+
if (node.type === 'Image') {
|
|
36
|
+
// Shorten image names
|
|
37
|
+
const name = node.name || 'image';
|
|
38
|
+
const short = name
|
|
39
|
+
.split(/[\s_-]+/)
|
|
40
|
+
.slice(0, 3)
|
|
41
|
+
.join(' ');
|
|
42
|
+
return this.toCamelCase(short) || 'image';
|
|
43
|
+
}
|
|
44
|
+
// Keep existing meaningful names
|
|
45
|
+
if (this.isMeaningfulName(node.name)) {
|
|
46
|
+
return this.toCamelCase(node.name);
|
|
47
|
+
}
|
|
48
|
+
if (node.type === 'Component' && node.metadata.componentName) {
|
|
49
|
+
return this.toCamelCase(node.metadata.componentName);
|
|
50
|
+
}
|
|
51
|
+
if (node.layout.display === 'flex') {
|
|
52
|
+
return node.layout.flexDirection === 'row' ? 'row' : 'column';
|
|
53
|
+
}
|
|
54
|
+
return 'container';
|
|
55
|
+
}
|
|
56
|
+
isMeaningfulName(name) {
|
|
57
|
+
const genericNames = ['frame', 'group', 'container', 'rectangle', 'ellipse', 'vector'];
|
|
58
|
+
return !genericNames.includes(name.toLowerCase());
|
|
59
|
+
}
|
|
60
|
+
toCamelCase(str) {
|
|
61
|
+
return str.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, (_, chr) => chr.toUpperCase());
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SemanticNamer = SemanticNamer;
|
|
65
|
+
//# sourceMappingURL=SemanticNamer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticNamer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/SemanticNamer.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,aAAa;IAA1B;QACE,SAAI,GAAG,gBAAgB,CAAC;IAgE1B,CAAC;IA9DC,SAAS,CAAC,IAAa;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,IAAa;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC/D,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,IAAa;QACxC,sEAAsE;QACtE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,0EAA0E;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;YAC9D,MAAM,KAAK,GAAG,IAAI;iBACf,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;iBAC9B,IAAI,EAAE;iBACN,KAAK,CAAC,KAAK,CAAC;iBACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,sBAAsB;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI;iBACf,KAAK,CAAC,SAAS,CAAC;iBAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;QAC5C,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvF,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAEO,WAAW,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,CAAC;CACF;AAjED,sCAiEC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ASTNode } from '../types';
|
|
2
|
+
import type { Transformer } from '../TransformationPipeline';
|
|
3
|
+
/**
|
|
4
|
+
* Aggressively simplify the AST by:
|
|
5
|
+
* 1. Removing empty/invisible nodes
|
|
6
|
+
* 2. Merging single-child containers
|
|
7
|
+
* 3. Converting decorative shapes to CSS
|
|
8
|
+
* 4. Flattening unnecessary nesting
|
|
9
|
+
*/
|
|
10
|
+
export declare class SimplifyTransformer implements Transformer {
|
|
11
|
+
name: string;
|
|
12
|
+
transform(node: ASTNode): ASTNode;
|
|
13
|
+
private simplifyNode;
|
|
14
|
+
private isInvisible;
|
|
15
|
+
private isEmptyContainer;
|
|
16
|
+
private shouldMergeWithChild;
|
|
17
|
+
private hasImportantStyles;
|
|
18
|
+
private hasImportantLayout;
|
|
19
|
+
private flattenSameTypeChildren;
|
|
20
|
+
private mergeStyles;
|
|
21
|
+
private mergeLayout;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SimplifyTransformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimplifyTransformer.d.ts","sourceRoot":"","sources":["../../../src/transformation/transformers/SimplifyTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,IAAI,SAAc;IAElB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIjC,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SimplifyTransformer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Aggressively simplify the AST by:
|
|
6
|
+
* 1. Removing empty/invisible nodes
|
|
7
|
+
* 2. Merging single-child containers
|
|
8
|
+
* 3. Converting decorative shapes to CSS
|
|
9
|
+
* 4. Flattening unnecessary nesting
|
|
10
|
+
*/
|
|
11
|
+
class SimplifyTransformer {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.name = 'simplify';
|
|
14
|
+
}
|
|
15
|
+
transform(node) {
|
|
16
|
+
return this.simplifyNode(node);
|
|
17
|
+
}
|
|
18
|
+
simplifyNode(node) {
|
|
19
|
+
// Remove invisible nodes
|
|
20
|
+
if (this.isInvisible(node)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
// Recursively simplify children and filter out nulls
|
|
24
|
+
let children = node.children
|
|
25
|
+
.map((child) => this.simplifyNode(child))
|
|
26
|
+
.filter((child) => child !== null);
|
|
27
|
+
// Remove empty containers
|
|
28
|
+
if (this.isEmptyContainer(node, children)) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// Merge single-child containers without meaningful properties
|
|
32
|
+
if (this.shouldMergeWithChild(node, children)) {
|
|
33
|
+
const child = children[0];
|
|
34
|
+
// Merge styles and layout from parent to child
|
|
35
|
+
return {
|
|
36
|
+
...child,
|
|
37
|
+
styles: this.mergeStyles(node.styles, child.styles),
|
|
38
|
+
layout: this.mergeLayout(node.layout, child.layout),
|
|
39
|
+
parent: node.parent,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Flatten children with same type
|
|
43
|
+
children = this.flattenSameTypeChildren(node, children);
|
|
44
|
+
return {
|
|
45
|
+
...node,
|
|
46
|
+
children,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
isInvisible(node) {
|
|
50
|
+
// Check if node is invisible
|
|
51
|
+
if (node.styles.opacity === 0)
|
|
52
|
+
return true;
|
|
53
|
+
// Check if node has zero size
|
|
54
|
+
if (node.layout.size.width === 0 || node.layout.size.height === 0) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
isEmptyContainer(node, children) {
|
|
60
|
+
if (node.type !== 'Container')
|
|
61
|
+
return false;
|
|
62
|
+
if (children.length > 0)
|
|
63
|
+
return false;
|
|
64
|
+
// Keep if has background or border
|
|
65
|
+
if (node.styles.backgroundColor || node.styles.border)
|
|
66
|
+
return false;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
shouldMergeWithChild(node, children) {
|
|
70
|
+
// Only merge containers with single child
|
|
71
|
+
if (node.type !== 'Container' || children.length !== 1) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const child = children[0];
|
|
75
|
+
// Don't merge if parent has important visual styles
|
|
76
|
+
if (this.hasImportantStyles(node)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
// Don't merge if parent has important layout
|
|
80
|
+
if (this.hasImportantLayout(node)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
// Don't merge different semantic types
|
|
84
|
+
if (node.metadata.componentName || child.metadata.componentName) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
hasImportantStyles(node) {
|
|
90
|
+
const { styles } = node;
|
|
91
|
+
return !!(styles.backgroundColor ||
|
|
92
|
+
styles.border ||
|
|
93
|
+
styles.borderRadius ||
|
|
94
|
+
(styles.boxShadow && styles.boxShadow.length > 0));
|
|
95
|
+
}
|
|
96
|
+
hasImportantLayout(node) {
|
|
97
|
+
const { layout } = node;
|
|
98
|
+
return !!(layout.padding || layout.margin || layout.gap || layout.display === 'grid');
|
|
99
|
+
}
|
|
100
|
+
flattenSameTypeChildren(node, children) {
|
|
101
|
+
// If node is a flex container, flatten child flex containers with same direction
|
|
102
|
+
if (node.layout.display === 'flex') {
|
|
103
|
+
const flattened = [];
|
|
104
|
+
for (const child of children) {
|
|
105
|
+
if (child.type === 'Container' &&
|
|
106
|
+
child.layout.display === 'flex' &&
|
|
107
|
+
child.layout.flexDirection === node.layout.flexDirection &&
|
|
108
|
+
!this.hasImportantStyles(child) &&
|
|
109
|
+
!child.layout.padding &&
|
|
110
|
+
!child.layout.margin) {
|
|
111
|
+
// Flatten this child's children into parent
|
|
112
|
+
flattened.push(...child.children);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
flattened.push(child);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return flattened;
|
|
119
|
+
}
|
|
120
|
+
return children;
|
|
121
|
+
}
|
|
122
|
+
mergeStyles(parent, child) {
|
|
123
|
+
return {
|
|
124
|
+
...parent,
|
|
125
|
+
...child,
|
|
126
|
+
// Child styles take precedence
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
mergeLayout(parent, child) {
|
|
130
|
+
return {
|
|
131
|
+
...parent,
|
|
132
|
+
...child,
|
|
133
|
+
// Child layout takes precedence
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.SimplifyTransformer = SimplifyTransformer;
|
|
138
|
+
//# sourceMappingURL=SimplifyTransformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimplifyTransformer.js","sourceRoot":"","sources":["../../../src/transformation/transformers/SimplifyTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core data structures for AST representation
|
|
3
|
+
* These types define the fundamental building blocks for the Abstract Syntax Tree
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 2D position coordinates
|
|
7
|
+
*/
|
|
8
|
+
export interface Position {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Size dimensions
|
|
14
|
+
*/
|
|
15
|
+
export interface Size {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Rectangle combining position and size
|
|
21
|
+
*/
|
|
22
|
+
export interface Rectangle extends Position, Size {
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* RGBA color representation
|
|
26
|
+
*/
|
|
27
|
+
export interface Color {
|
|
28
|
+
r: number;
|
|
29
|
+
g: number;
|
|
30
|
+
b: number;
|
|
31
|
+
a: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Spacing for padding/margin (box model)
|
|
35
|
+
*/
|
|
36
|
+
export interface Spacing {
|
|
37
|
+
top: number;
|
|
38
|
+
right: number;
|
|
39
|
+
bottom: number;
|
|
40
|
+
left: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Border style definition
|
|
44
|
+
*/
|
|
45
|
+
export interface Border {
|
|
46
|
+
width: number;
|
|
47
|
+
style: 'solid' | 'dashed' | 'dotted';
|
|
48
|
+
color: Color;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Shadow effect (drop shadow or inner shadow)
|
|
52
|
+
*/
|
|
53
|
+
export interface Shadow {
|
|
54
|
+
type: 'drop-shadow' | 'inner-shadow';
|
|
55
|
+
offsetX: number;
|
|
56
|
+
offsetY: number;
|
|
57
|
+
blur: number;
|
|
58
|
+
spread: number;
|
|
59
|
+
color: Color;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Typography style definition
|
|
63
|
+
*/
|
|
64
|
+
export interface Typography {
|
|
65
|
+
fontFamily: string;
|
|
66
|
+
fontSize: number;
|
|
67
|
+
fontWeight: number;
|
|
68
|
+
lineHeight: number;
|
|
69
|
+
letterSpacing?: number;
|
|
70
|
+
textAlign?: 'left' | 'center' | 'right' | 'justify';
|
|
71
|
+
textDecoration?: 'none' | 'underline' | 'line-through';
|
|
72
|
+
textTransform?: 'none' | 'uppercase' | 'lowercase' | 'capitalize';
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Layout information for AST nodes
|
|
76
|
+
*/
|
|
77
|
+
export interface LayoutInfo {
|
|
78
|
+
display: 'flex' | 'grid' | 'block' | 'inline' | 'absolute';
|
|
79
|
+
position: Position;
|
|
80
|
+
size: Size;
|
|
81
|
+
flexDirection?: 'row' | 'column';
|
|
82
|
+
justifyContent?: string;
|
|
83
|
+
alignItems?: string;
|
|
84
|
+
gap?: number;
|
|
85
|
+
padding?: Spacing;
|
|
86
|
+
margin?: Spacing;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Style information for AST nodes
|
|
90
|
+
*/
|
|
91
|
+
export interface StyleInfo {
|
|
92
|
+
backgroundColor?: Color;
|
|
93
|
+
borderRadius?: number | number[];
|
|
94
|
+
border?: Border;
|
|
95
|
+
boxShadow?: Shadow[];
|
|
96
|
+
opacity?: number;
|
|
97
|
+
typography?: Typography;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Metadata about the original Figma node
|
|
101
|
+
*/
|
|
102
|
+
export interface NodeMetadata {
|
|
103
|
+
figmaId: string;
|
|
104
|
+
figmaType: string;
|
|
105
|
+
isComponent: boolean;
|
|
106
|
+
componentName?: string;
|
|
107
|
+
exportable: boolean;
|
|
108
|
+
textContent?: string;
|
|
109
|
+
imageRef?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* AST node types
|
|
113
|
+
*/
|
|
114
|
+
export type ASTNodeType = 'Root' | 'Page' | 'Container' | 'Component' | 'Text' | 'Image' | 'Shape';
|
|
115
|
+
/**
|
|
116
|
+
* Core AST node structure
|
|
117
|
+
* Represents a single node in the abstract syntax tree
|
|
118
|
+
*/
|
|
119
|
+
export interface ASTNode {
|
|
120
|
+
id: string;
|
|
121
|
+
type: ASTNodeType;
|
|
122
|
+
name: string;
|
|
123
|
+
children: ASTNode[];
|
|
124
|
+
parent?: ASTNode;
|
|
125
|
+
layout: LayoutInfo;
|
|
126
|
+
styles: StyleInfo;
|
|
127
|
+
metadata: NodeMetadata;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transformation/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transformation/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|