⚠️ One cell works, one doesn't — on purpose.
This notebook has two
@bindwidgets:
a plain slider that compiles fine — drag it below and it recomputes live;
a
combine()‑shaped widget (two<input>s → one value) that WasmTarget can't compile to WebAssembly yet, so that cell is published as a static snapshot with a clear "not interactive in this export" note.Interactivity is judged per cell, so a single unsupported widget doesn't sink the rest. Because something fell back, the sidebar labels the whole notebook
limited.
✅ A working slider (compiles to WebAssembly)
@bind k TinySlider(12)k = 1, and k² = 1 — this updates as you drag.
⚠️ A combine()-shaped widget (not supported yet)
begin
# combine()-shaped widget: multiple <input> children, the client sends a
# Vector of child values, transform_value reshapes it server-side. No
# usable initial_value → the pipeline must introspect the rendered html
# (and the defining cell below SUPPRESSES its output with `;`, so the html
# can only come from the workspace's bond registry).
struct DuoWidget end
function Base.show(io::IO, ::MIME"text/html", ::DuoWidget)
write(io, "<span><input type=color value=\"#aabbcc\"><input type=range min=1 max=3 value=2></span>")
end
Bonds.initial_value(::DuoWidget) = missing
Bonds.transform_value(::DuoWidget, raw) = raw === missing ? missing : (color=string(raw[1]), n=Int(raw[2]))
endduo_widget = @bind duo DuoWidget();duo === missing ? "color #aabbcc n 2" : "color $(duo.color) n $(duo.n)"