Guide

Bindings

How binding expressions behave for fenced blocks, ::vega directives, and inline-SVG directives.
ContextBehaviour
````vega` fenced blockContent 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.

Copyright © 2026