у тебя там засада в том, что ты хочешь в модель инпута отображать выбранное значение, когда инпут не сфокусирован. (т.е. модель перегружена обязанностями)
я б сделал по другому. подложил под инпут дивку в которую выводится текущий селектед, а инпут просто делал прозрачным при блюре. как вариант можно в плейсхолдер инпута, тоже отображать селектед-элемент.
в таком варианте селектед элемент живёт своей жизнью, не смешиваемой с моделью инпута.
это резко упростит всю остальную кухню.
имха, само сабой
а в чем упростит?
я избавляюсь от proxyForInput
но добавлю
if focused - показать инпут,
else показать дивку
не очень понял как это затронет текущую раздвоенность изменения значения в инпуте и из подсказок и из «внешнего» мира