Cross-Document State Lab
Multiple slex code blocks in the same Markdown document can share g state when they use the same namespace.
Below are three independent `
## Control Panel
## Observer Panel A (Same namespace, different fence block)
<div class="slex-prerender-placeholder" data-slex-source="c2xleDogIjAuMSIsCiAgbmFtZXNwYWNlOiAiZXhhbXBsZV9jcm9zc19kb2NfbGFiIiwKICBsYXlvdXQ6IHsKICAgICJjYXJkOmEiOiB7CiAgICAgIHRpdGxlOiAiT2JzZXJ2ZXIgUGFuZWwgQSDigJQgVGV4dCBTdHlsaW5nIiwKICAgICAgImNvbHVtbjpzdHlsZVByZXZpZXciOiB7CiAgICAgICAgInRleHQ6c3R5bGVNZXRhIjogeyAiJHRleHQiOiAiJ0ZvbnQgc2l6ZTogJyArIGcuc2l6ZSArICdweCciIH0sCiAgICAgICAgInRleHQ6c3R5bGVkVmFsdWUiOiB7ICIkdGV4dCI6ICJnLmNvbG9yIiwgIiRjb2xvciI6ICJnLmNvbG9yIiwgIiRzaXplIjogImcuc2l6ZSIgfQogICAgICB9LAogICAgICAiY2FsbG91dDpwcmV2aWV3IjogewogICAgICAgICIkdG9uZSI6ICJnLnRoZW1lID09PSAnZGFyaycgPyAnZGFuZ2VyJyA6IGcudGhlbWUgPT09ICdpbmZvJyA/ICdpbmZvJyA6ICdzdWNjZXNzJyIsCiAgICAgICAgIiR0ZXh0IjogImcudGhlbWUgPT09ICdkYXJrJyA/ICdEYXJrIG1vZGU6IGNvbG9yIHNjaGVtZSBmb3IgbmlnaHQgcmVhZGluZy4nIDogZy50aGVtZSA9PT0gJ2luZm8nID8gJ0luZm8gbW9kZTogZW1waGFzaXplcyB0ZWNobmljYWwgZGV0YWlscy4nIDogJ0xpZ2h0IG1vZGU6IGRlZmF1bHQgZG9jdW1lbnQgcmVhZGluZyBjb2xvcnMuJyIKICAgICAgfQogICAgfQogIH0KfQ=="><pre><code class="language-slex">slex: "0.1",
namespace: "example_cross_doc_lab",
layout: {
"card:a": {
title: "Observer Panel A — Text Styling",
"column:stylePreview": {
"text:styleMeta": { "$text": "'Font size: ' + g.size + 'px'" },
"text:styledValue": { "$text": "g.color", "$color": "g.color", "$size": "g.size" }
},
"callout:preview": {
"$tone": "g.theme === 'dark' ? 'danger' : g.theme === 'info' ? 'info' : 'success'",
"$text": "g.theme === 'dark' ? 'Dark mode: color scheme for night reading.' : g.theme === 'info' ? 'Info mode: emphasizes technical details.' : 'Light mode: default document reading colors.'"
}
}
}
}</code></pre></div>
## Observer Panel B
<div class="slex-prerender-placeholder" data-slex-source="c2xleDogIjAuMSIsCiAgbmFtZXNwYWNlOiAiZXhhbXBsZV9jcm9zc19kb2NfbGFiIiwKICBsYXlvdXQ6IHsKICAgICJjYXJkOmIiOiB7CiAgICAgIHRpdGxlOiAiT2JzZXJ2ZXIgUGFuZWwgQiDigJQgUGFyYW1ldGVyIERldGFpbHMiLAogICAgICAiZ3JpZDpwYXJhbXMiOiB7CiAgICAgICAgY29sdW1uczogMSwgbWRDb2x1bW5zOiAzLAogICAgICAgICJzdGF0OmNvbCI6IHsgbGFiZWw6ICJDb2xvciIsICIkdmFsdWUiOiAiZy5jb2xvciIgfSwKICAgICAgICAic3RhdDpzeiI6IHsgbGFiZWw6ICJTaXplIiwgIiR2YWx1ZSI6ICJnLnNpemUiLCB1bml0OiAicHgiIH0sCiAgICAgICAgInN0YXQ6dGgiOiB7IGxhYmVsOiAiVGhlbWUiLCAiJHZhbHVlIjogImcudGhlbWUiIH0KICAgICAgfSwKICAgICAgImJhZGdlOnN5bmMiOiB7ICIkbGFiZWwiOiAiJ1N5bmNlZDogJyArIGcuY29sb3IiLCAiJHRvbmUiOiAiZy5jb2xvciA9PT0gJ2JsdWUnID8gJ2luZm8nIDogZy5jb2xvciA9PT0gJ2dyZWVuJyA/ICdzdWNjZXNzJyA6IGcuY29sb3IgPT09ICdvcmFuZ2UnID8gJ3dhcm5pbmcnIDogJ2luZm8nIiB9CiAgICB9CiAgfQp9"><pre><code class="language-slex">slex: "0.1",
namespace: "example_cross_doc_lab",
layout: {
"card:b": {
title: "Observer Panel B — Parameter Details",
"grid:params": {
columns: 1, mdColumns: 3,
"stat:col": { label: "Color", "$value": "g.color" },
"stat:sz": { label: "Size", "$value": "g.size", unit: "px" },
"stat:th": { label: "Theme", "$value": "g.theme" }
},
"badge:sync": { "$label": "'Synced: ' + g.color", "$tone": "g.color === 'blue' ? 'info' : g.color === 'green' ? 'success' : g.color === 'orange' ? 'warning' : 'info'" }
}
}
}</code></pre></div>
**Three fence blocks**, one `namespace: "example_cross_doc_lab"`, all components share the `g` object. Change color and size in the control panel above, and the two observer panels update instantly.
---
### What does this mean?
Imagine a long Markdown document:
[Control panel — select industry/metrics/time range] ... 30 paragraphs of Markdown narrative ... [Chart A — automatically reflects control panel options] ... more analysis text ... [Chart B — different visualization of the same state]
Each ` ```slex ` block renders independently. When the namespace is the same, they share state. Common uses include:
- **Technical white papers**: top selects parameters, middle analysis, bottom conclusions — all coordinated
- **Project collaboration docs**: status tracking table at top, team task cards scattered through the body
- **AI output enhancement**: multiple visualization nodes generated by a model sharing the same reasoning results
These scenarios use the same mechanism: multiple fences share one state object instead of treating every UI block as isolated.