mirror of
https://github.com/penpot/penpot-exporter-figma-plugin.git
synced 2025-01-05 06:10:52 -05:00
45 lines
1 KiB
TypeScript
45 lines
1 KiB
TypeScript
|
import { PenpotFile } from '@ui/lib/types/penpotFile';
|
||
|
import { parseFigmaId } from '@ui/parser';
|
||
|
import { uiComponents } from '@ui/parser/libraries';
|
||
|
import { ComponentInstance } from '@ui/types';
|
||
|
|
||
|
import { createArtboard } from '.';
|
||
|
|
||
|
export const createComponentInstance = (
|
||
|
file: PenpotFile,
|
||
|
{
|
||
|
type,
|
||
|
mainComponentFigmaId,
|
||
|
figmaId,
|
||
|
figmaRelatedId,
|
||
|
isComponentRoot,
|
||
|
...rest
|
||
|
}: ComponentInstance
|
||
|
) => {
|
||
|
let uiComponent = uiComponents.get(mainComponentFigmaId);
|
||
|
|
||
|
if (!uiComponent) {
|
||
|
const mainInstanceId = parseFigmaId(file, mainComponentFigmaId);
|
||
|
if (!mainInstanceId) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
uiComponent = {
|
||
|
componentId: file.newId(),
|
||
|
componentFigmaId: mainComponentFigmaId,
|
||
|
mainInstanceId
|
||
|
};
|
||
|
uiComponents.register(mainComponentFigmaId, uiComponent);
|
||
|
}
|
||
|
|
||
|
createArtboard(file, {
|
||
|
...rest,
|
||
|
showContent: true,
|
||
|
shapeRef: uiComponent.mainInstanceId,
|
||
|
componentFile: file.getId(),
|
||
|
componentRoot: isComponentRoot,
|
||
|
componentId: uiComponent.componentId,
|
||
|
type: 'frame'
|
||
|
});
|
||
|
};
|