deposit: js uploader component

Integrates and supersedes #2322