Conectar herramientas

Mantenga el compilador en un límite de confianza del servidor

Renderice una única cadena SVG determinista en Svelte, React, Vue, Angular o un proceso de compilación.

Compile fuera del estado reactivo del componente

El contrato cabe en una frase: tome el código fuente y una cabecera de bloque validada, llame a compileSchematic e inserte el resultado de confianza. El entorno que lo integra nunca debe importar una implementación del DOM ni volver a compilar porque cambie un estado de la interfaz que no guarda relación con el diagrama. El compilador es una función pura del código fuente y de la cabecera del bloque. Tratarlo como tal mantiene bajo el coste del componente.

export function renderDiagram(source: string) {
	return compileSchematic(source, {
		bounds: { width: 760, height: 340 },
		title: 'Framework-neutral source',
		mode: 'embedded-css'
	}).svg;
}
source:CELL4 "3 V" at (80, 130) #blue [type=battery]
resistor:RIND "100 \Omega" at (330, 130) #amber
diode:PWR "power" at (580, 130) #emerald [type=led]
ground:G4 at (580, 260) #slate

CELL4.positive -> RIND.in #blue [ortho]
RIND.out -> PWR.anode #amber [ortho]
PWR.cathode -> G4.in #slate [ortho]
compiled by @schemd/core → shown in the rail

En Svelte, el SVG se deriva únicamente del código fuente y de la cabecera del bloque; React memoriza el resultado con esos mismos dos valores, de modo que un nuevo renderizado con entradas idénticas no añade coste. Vue y Angular pasan la cadena por su mecanismo de inserción de HTML de confianza. Ese mecanismo está destinado solo a la salida del compilador. Nunca debe recibir HTML arbitrario del usuario.