Use component/{emitter,events}, support swipestart event, fix swipeend