template "widget[@type='Input']", mode="widget_defs" {
optional_labels("value");
const "have_value","string-length($value_elt)>0";
| dispatch: function(value) {
| this.value_elt.textContent = String(value);
const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id";
| id("«$edit_elt_id»").addEventListener(
| evt => alert('XXX TODO : Edit value'));
foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" {
| id("«@id»").addEventListener(
| evt => {let new_val = change_hmi_value(this.indexes[0], "«func:escape_quotes(@inkscape:label)»");
| this.value_elt.textContent = String(new_val);
/* TODO gray out value until refreshed */