fix(input): preserve cursor position on update

Closes #102