function form(bind, el, param, value) {
    const node = element('input');
    for (const key in param) {
      if (key !== 'signal' && key !== 'element') {
        node.setAttribute(key === 'input' ? 'type' : key, param[key]);
      }
    }
    node.setAttribute('name', param.signal);
    node.value = value;
    el.appendChild(node);
    node.addEventListener('input', () => bind.update(node.value));
    bind.elements = [node];
    bind.set = value => node.value = value;
  }
Generates an arbitrary input form element.
The input type is controlled via user-provided parameters.