function withPreset(name, def, factory) {
const input = factory(name, preset(name, def));
input.addEventListener("input", (e) => {
var searchParams = new URLSearchParams(window.location.search);
searchParams.set(name, e.target.value);
const query = "?" + searchParams.toString();
console.info("change", e.target.value, query);
window.history.pushState(undefined, undefined, "." + query);
console.info("changed");
});
return input;
}