mirror of
https://github.com/penpot/penpot-exporter-figma-plugin.git
synced 2024-12-23 06:04:01 -05:00
3094f05e98
* Optimize images before generating zip file * add changelog * refactor * fix lint
34 lines
1 KiB
TypeScript
34 lines
1 KiB
TypeScript
import { PenpotFile } from '@ui/lib/types/penpotFile';
|
|
import { TextContent, TextShape } from '@ui/lib/types/shapes/textShape';
|
|
import { parseFigmaId } from '@ui/parser';
|
|
import { symbolBlendMode, symbolFills, symbolStrokes } from '@ui/parser/creators/symbols';
|
|
|
|
export const createText = (
|
|
file: PenpotFile,
|
|
{ type, blendMode, strokes, figmaId, content, figmaRelatedId, ...rest }: TextShape
|
|
) => {
|
|
file.createText({
|
|
id: parseFigmaId(file, figmaId),
|
|
shapeRef: parseFigmaId(file, figmaRelatedId, true),
|
|
content: parseContent(content),
|
|
blendMode: symbolBlendMode(blendMode),
|
|
strokes: symbolStrokes(strokes),
|
|
...rest
|
|
});
|
|
};
|
|
|
|
const parseContent = (content: TextContent | undefined): TextContent | undefined => {
|
|
if (!content) return;
|
|
|
|
content.children?.forEach(paragraphSet => {
|
|
paragraphSet.children.forEach(paragraph => {
|
|
paragraph.children.forEach(textNode => {
|
|
textNode.fills = symbolFills(textNode.fills);
|
|
});
|
|
|
|
paragraph.fills = symbolFills(paragraph.fills);
|
|
});
|
|
});
|
|
|
|
return content;
|
|
};
|