0
Fork 0
mirror of https://github.com/penpot/penpot-exporter-figma-plugin.git synced 2024-12-22 13:43:03 -05:00
penpot-exporter-figma-plugin/plugin-src/RemoteComponentLibrary.ts
Jordi Sala Morales 1f8f4bf539
Add more loaders so we can track the progress better (#145)
* Add more loaders so we can track the progress better

* fix lint
2024-06-06 17:24:59 +02:00

34 lines
885 B
TypeScript

class RemoteComponentsLibrary {
private components: Record<string, ComponentNode | ComponentSetNode> = {};
private queue: string[] = [];
public register(id: string, component: ComponentNode | ComponentSetNode) {
if (!Object.prototype.hasOwnProperty.call(this.components, id)) {
this.queue.push(id);
}
this.components[id] = component;
}
public get(id: string): ComponentNode | ComponentSetNode | undefined {
return this.components[id];
}
public next(): ComponentNode | ComponentSetNode {
const lastKey = this.queue.pop();
if (!lastKey) throw new Error('No components to pop');
return this.components[lastKey];
}
public remaining(): number {
return this.queue.length;
}
public total(): number {
return Object.keys(this.components).length;
}
}
export const remoteComponentLibrary = new RemoteComponentsLibrary();