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

35 lines
885 B
TypeScript
Raw Normal View History

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();