refactor: move virtual dom impl to ui.cljs