UNPKG

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
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