Skip to content

Astro

Package: velo-circuit · Adapter: velo-circuit/astro · Overview · Editor Presets

Use client islands (client:load). Same three levels as other adapters:

LevelAPI
DSL onlymountAstroDslCodeMirror
Canvas onlymountAstroCircuitEditor
DSL + canvas syncedmountAstroCircuitWorkbench

DSL only (island)

astro
---
// DslField.astro
---
<div id="dsl-host" class="circuit-dsl-field"></div>

<script>
  import { mountAstroDslCodeMirror } from 'velo-circuit/astro'

  const el = document.getElementById('dsl-host')
  if (el) {
    const field = mountAstroDslCodeMirror(el, {
      id: 'sidebar-dsl',
      initialDsl: 'R0-p(R1,C1)',
      themeMode: 'dark',
      onChange: (dsl) => console.log(dsl),
    })
  }
</script>
astro
<DslField client:load />

Lite canvas

astro
<div id="canvas-host" style="min-height:400px"></div>
<script>
  import { mountAstroCircuitEditor } from 'velo-circuit/astro'
  const el = document.getElementById('canvas-host')
  if (el) {
    mountAstroCircuitEditor(el, {
      preset: 'lite',
      initialDsl: 'R0',
      themeMode: 'dark',
    })
  }
</script>

Workbench (synced)

astro
<div class="workbench">
  <div id="dsl-host"></div>
  <div id="editor-host" style="min-height:420px"></div>
</div>
<script>
  import { mountAstroCircuitWorkbench } from 'velo-circuit/astro'

  const dsl = document.getElementById('dsl-host')
  const editor = document.getElementById('editor-host')
  if (dsl && editor) {
    const wb = mountAstroCircuitWorkbench(dsl, editor, {
      id: 'main-wb',
      initialDsl: 'R0-p(R1,C1)',
      editorPreset: 'lite',
      themeMode: 'dark',
      onChange: (d) => console.log(d),
    })
  }
</script>

Extended editor

astro
<CircuitEditor client:load />
ts
mountAstroCircuitEditor(el, { preset: 'extended', initialDsl: 'R0' })

Storage by id

ts
import {
  mountAstroDslCodeMirror,
  unmountAstroDslCodeMirror,
  mountAstroCircuitWorkbench,
  unmountAstroCircuitWorkbench,
} from 'velo-circuit/astro'

mountAstroDslCodeMirror(el, { id: 'dsl' })
unmountAstroDslCodeMirror('dsl')

mountAstroCircuitWorkbench(dslEl, editorEl, { id: 'wb' })
unmountAstroCircuitWorkbench('wb')

Static SVG (SSR)

astro
---
import { renderDslPreviewSvg } from 'velo-circuit'
const svg = renderDslPreviewSvg('R0-p(R1,C1)', { themeMode: 'dark' })
---
<Fragment set:html={svg} />