sclass HSlider { S id = aGlobalID(), name, label; double min, max, value; bool useWebSocket = true; bool requiresWebsocket() { true; } S html() { ret tag input("", type := "range", +id, +name, +min, +max, +value, onchange := !useWebSocket ? null : hjs_escapedDollarVars("if (typeof wsSend !== 'undefined') wsSend(JSON.stringify({sliderValue: {id: $id, value: this.value}))", +id)) + " " + hlabelFor(id, label); } }