fix source component to handle changing props
observable component
live example
shared cursor and brush