Guide
Bindings
How binding expressions behave for fenced blocks, ::vega directives, and inline-SVG directives.
| Context | Behaviour |
|---|---|
| ````vega` fenced block | Content is never processed by the binding pipeline. Always a literal static spec. |
::vega{:prop="expr"} | :prop bindings are preserved verbatim in the <Vega> node for @comark/binding to resolve. |
::vega{prop="value"} | Plain (non-:) attrs are coerced to their JS types and stored as literal props. |
::vl, ::vg, ::chart (inline-SVG) | :prop bindings that contain valid JSON are parsed and applied. Pure expression strings are skipped at parse time. |
Fenced blocks stay literal
````vega-lite` fence content is opaque. Use it when the spec is static and must not pass through the binding pipeline.
Component directives defer resolution
::vega{:spec="report.chart" :width="panel.w" engine="vega-lite"}
:spec and :width stay as binding expressions until @comark/binding resolves them at render time against data, frontmatter, or props.
Inline-SVG at parse time
For ::vl, ::vg, and ::chart, bindings that contain valid JSON are parsed and applied immediately. Pure expression strings (for example :spec="report.chart") are skipped at parse time — use ::vega when you need runtime binding resolution.
Plain attrs like
engine="vega-lite" are always literal strings coerced to JS types.See Entry points for syntax examples.