Oh, no! I wish I had, though I took a different way: in order to cover all the original inputs, I had to give up trying to apply them a common function, in particular the color, coordinates, worldMapCoordinates and usaMapCoordinates have special code. And obviously select, checkbox and radio also have a special treatment, but you also managed them in your code.
I also tried to keep as near as possible to the original code (hoping it will be merged upstream, or better: re-implemented more directly) and that's why I didn't modify the DOM in any way.
You could also try a "two-pronged" approach where you import the widgets with your overridden input ("import {...} with {input2 as input} from "@jashkenas/inputs") to add whatever additional API you need, then fine-tune the individual widgets (by overriding or currying them).
I surely would have done this way if I had known your notebook before. For now, I will stay with that code because it works OK for me (as they say: if it works, don't touch it). And my secret hope is the setters will be integrated "natively" in the "upstream" notebook, so that I don't have to maintain this one :P