export let widget_slider = (b) => {
let w = attr_or(b, "width", 160)
let h = attr_or(b, "height", 24)
let min = attr_or(b, "min", 0)
let max = attr_or(b, "max", 100)
let step = attr_or(b, "step", 1)
let value = attr_or(b, "value", min)
let signal = attr_or(b, "signal", "")
let pct = max == min ? 0 : (1.0 * (value - min)) / (max - min)
let thumb_r = attr_or(b, "thumb_radius", h / 2)
let track_h = attr_or(b, "track_height", 6)
let track_y = (h - track_h) / 2
let track_fill = attr_or(b, "track_fill", "var(--color-nav-border)")
let fill = attr_or(b, "fill", "var(--color-link)")
let thumb_fill = attr_or(b, "thumb_fill", "#ffffff")
let thumb_stroke = attr_or(b, "thumb_stroke", "var(--color-link)")
[
{
kind = "group",
id = to_string(b.id),
width = w,
height = h,
cursor = "pointer",
pointer_events = "all",
data_wdoc_slider = "true",
data_wdoc_slider_signal = signal,
data_wdoc_slider_min = min,
data_wdoc_slider_max = max,
data_wdoc_slider_step = step,
data_wdoc_slider_value = value,
children = [
{ kind = "rect", id = to_string(b.id) + "_hit", x = 0, y = 0, width = w, height = h, fill = "#ffffff", opacity = 0, pointer_events = "all" },
{ kind = "rect", id = to_string(b.id) + "_track", x = 0, y = track_y, width = w, height = track_h, rx = track_h / 2, fill = track_fill, pointer_events = "none" },
{ kind = "rect", id = to_string(b.id) + "_fill", x = 0, y = track_y, width = w * pct, height = track_h, rx = track_h / 2, fill = fill, pointer_events = "none", data_wdoc_slider_fill = "true" },
{ kind = "circle", id = to_string(b.id) + "_thumb", x = (w * pct) - thumb_r, y = (h / 2) - thumb_r, width = thumb_r * 2, height = thumb_r * 2, fill = thumb_fill, stroke = thumb_stroke, stroke_width = 2, pointer_events = "none", data_wdoc_slider_thumb = "true" }
]
}
]
}