circuit-bricks
Version:
A modular, Lego-style SVG circuit component system for React (ALPHA - Not for production use)
74 lines (72 loc) • 2.7 kB
JavaScript
import { battery_default, capacitor_default, diode_default, ground_default, ic_default, led_default, resistor_default, switch_default, transistor_npn_default, validateComponentSchema, voltage_source_default } from "./ic-CL9tBH6p.mjs";
//#region src/registry/server.ts
const serverComponentRegistry = {};
/**
* Initialize the server-side registry with built-in components
*/
function initializeServerRegistry() {
if (Object.keys(serverComponentRegistry).length > 0) return;
const components = [
resistor_default,
capacitor_default,
ground_default,
switch_default,
battery_default,
voltage_source_default,
diode_default,
transistor_npn_default,
led_default,
ic_default
];
for (const schema of components) try {
const validationResult = validateComponentSchema(schema);
if (validationResult.success) serverComponentRegistry[schema.id] = schema;
else console.warn(`Failed to validate component schema ${schema.id}:`, validationResult.error);
} catch (error) {
console.warn(`Failed to register component ${schema.id}:`, error);
}
}
/**
* Register a component schema in the server-side registry
*/
function registerServerComponent(schema) {
initializeServerRegistry();
const validationResult = validateComponentSchema(schema);
if (!validationResult.success) throw new Error(`Invalid component schema: ${validationResult.error}`);
if (serverComponentRegistry[schema.id]) console.warn(`Component with ID ${schema.id} already exists in server registry. Overwriting.`);
serverComponentRegistry[schema.id] = schema;
}
/**
* Get a component schema from the server-side registry by ID
*/
function getServerComponentSchema(id) {
initializeServerRegistry();
return serverComponentRegistry[id];
}
/**
* Get all component schemas in the server-side registry
*/
function getAllServerComponents() {
initializeServerRegistry();
return Object.values(serverComponentRegistry);
}
/**
* Get component schemas by category from the server-side registry
*/
function getServerComponentsByCategory(category) {
initializeServerRegistry();
return Object.values(serverComponentRegistry).filter((schema) => schema.category === category);
}
/**
* Get all unique categories from the server-side registry
*/
function getServerCategories() {
initializeServerRegistry();
const allComponents = getAllServerComponents();
const categories = [...new Set(allComponents.map((schema) => schema.category))];
return categories.sort();
}
var server_default = serverComponentRegistry;
//#endregion
export { getAllServerComponents, getServerCategories, getServerComponentSchema, getServerComponentsByCategory, registerServerComponent, server_default };
//# sourceMappingURL=server-EhXPvc1P.mjs.map