wcl_wdoc 0.11.2-alpha

WCL documentation format — build structured docs with WCL, render to HTML
    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" }
                ]
            }
        ]
    }