Skip to content

@bind for Observables #2895

@aplavin

Description

@aplavin

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions