Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@bind for Observables #2895

Open
aplavin opened this issue Apr 16, 2024 · 0 comments
Open

@bind for Observables #2895

aplavin opened this issue Apr 16, 2024 · 0 comments

Comments

@aplavin
Copy link
Contributor

aplavin commented Apr 16, 2024

Observables.jl is a widely used package defining, well Observable(). It would be useful to bind Pluto UI elements to Observables, so that supporting libraries (such as Makie) update values efficiently.

I tried to make a macro @bindobs that works similar to @bind but defines an observable. I didn't manage to implement it properly, so would be happy to know if I missed something, or is such a thing not supported yet.
What I achieved is a "two-part" macro:

macro bindobs(def::Symbol, element)
	defraw = Symbol(def, :____raw)
	quote
		elt = $element
		$(esc(def)) = Observable(get(elt))
		@bind $defraw elt
	end
end

macro bindobs_(def::Symbol)
	defraw = Symbol(def, :____raw)
	:($(esc(def))[] = $(esc(defraw)))
end

then, in one cell do @bindobs myval Slider(...) and in another cell @bindobs_ myval.

Can this be done in a single cell?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant