0
Fork 0
mirror of https://github.com/penpot/penpot-exporter-figma-plugin.git synced 2024-12-22 21:53:27 -05:00
penpot-exporter-figma-plugin/ui-src/parser/creators/createComponentInstance.ts
Alex Sánchez be5ff3be8e
Remote components (External design systems) (#140)
* remote components processing

* changeset

* fixes

* fixes

* fixes

* fixes

* fix everything

* revert for now

* fixes

* change delete nodes flag

---------

Co-authored-by: Jordi Sala Morales <jordism91@gmail.com>
2024-06-06 09:37:35 +02:00

43 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,
shapeRef: uiComponent.mainInstanceId,
componentFile: file.getId(),
componentRoot: isComponentRoot,
componentId: uiComponent.componentId,
type: 'frame'
});
};