add component-js support