Skip to content

Instantly share code, notes, and snippets.

@dralletje
Created October 19, 2020 15:02
Show Gist options
  • Save dralletje/8d91b4faef661b6fae83263cb499a0d2 to your computer and use it in GitHub Desktop.
Save dralletje/8d91b4faef661b6fae83263cb499a0d2 to your computer and use it in GitHub Desktop.
import Pluto
# ╔═╡ 2b310e52-1219-11eb-26f8-ed6dcdbaad47
Base.@kwdef struct PlutoWidget
html::HTML
default::Any
end
# ╔═╡ 586d4546-1219-11eb-1ed7-7791a437bd4f
function Base.show(io::IO, mime::MIME"text/html", widget::PlutoWidget)
show(io, mime, widget.html)
end
# ╔═╡ 6df9469e-1219-11eb-3560-cb819c84896f
Pluto.get(widget::PlutoWidget) = widget.default
# ╔═╡ e23a72d4-1215-11eb-3a71-a19a58d96ccb
"""
Docstring for this button
"""
function Button(label::String)
PlutoWidget(
html=HTML("""<input type="button" value="$(label)">"""),
default=label
)
end
# ╔═╡ 69da08f8-121b-11eb-1d81-6316c7149ee8
"""
Docstring for this slider
"""
function Slider(range::AbstractRange; default=first(range), show_value=false)
PlutoWidget(
html=HTML("""
<input
type="range"
min="$(first(slider.range))"
step="$(step(slider.range))"
max="$(last(slider.range))"
value="$(slider.default)"
$(
slider.show_value ?
"oninput=\"this.nextElementSibling.value=this.value\"" :
""
)
>
"""),
default=default
)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment