template "widget[@type='Input']", mode="widget_class"{
class InputWidget extends Widget{
let new_val = this.change_hmi_value(0, opstr);
this.apply_hmi_value(0, new_val);
template "widget[@type='Input']", mode="widget_defs" {
const "key_pos_elt" optional_labels("key_pos");
const "value_elt" optional_labels("value");
const "have_value","string-length($value_elt)>0";
const "edit_elt" optional_labels("edit");
const "have_edit","string-length($edit_elt)>0";
| dispatch: function(value) {
| this.value_elt.textContent = String(value);
| this.edit_elt.onclick = () => edit_value(
| "«path/@value»", "«path/@type»",
when "string-length($key_pos_elt)>0"
| this.key_pos_elt.getBBox()
foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" {
| id("«@id»").onclick = () => this.on_op_click("«func:escape_quotes(@inkscape:label)»");