├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── changelog.md ├── client ├── app.js ├── controller.js ├── dropdirective.js ├── externs.js ├── filedialog.js ├── files.js ├── style.css └── uploadmanager.js ├── description.md ├── filedrop.go ├── icons ├── icon-128.svg ├── icon-150.svg ├── icon-24.svg └── icon-300.svg ├── index.html ├── keyring ├── misc ├── download.sh └── upload.sh ├── pgp-signature ├── sandstorm-files.list ├── sandstorm-pkgdef.capnp ├── screenshot.png └── third_party ├── angular-material ├── LICENSE ├── README.third_party ├── angular-material.min.css └── angular-material.min.js ├── angular ├── LICENSE ├── README.third_party ├── angular-1.3.12.min.js ├── angular-animate.js ├── angular-animate.min.js ├── angular-animate.min.js.map ├── angular-aria.js ├── angular-aria.min.js ├── angular-aria.min.js.map ├── angular-cookies.js ├── angular-cookies.min.js ├── angular-cookies.min.js.map ├── angular-csp.css ├── angular-loader.js ├── angular-loader.min.js ├── angular-loader.min.js.map ├── angular-messages.js ├── angular-messages.min.js ├── angular-messages.min.js.map ├── angular-mocks.js ├── angular-resource.js ├── angular-resource.min.js ├── angular-resource.min.js.map ├── angular-route.js ├── angular-route.min.js ├── angular-route.min.js.map ├── angular-sanitize.js ├── angular-sanitize.min.js ├── angular-sanitize.min.js.map ├── angular-scenario.js ├── angular-touch.js ├── angular-touch.min.js ├── angular-touch.min.js.map ├── angular.js ├── angular.min.js ├── angular.min.js.map ├── errors.json ├── i18n │ ├── angular-locale_aa-dj.js │ ├── angular-locale_aa-er.js │ ├── angular-locale_aa-et.js │ ├── angular-locale_aa.js │ ├── angular-locale_af-na.js │ ├── angular-locale_af-za.js │ ├── angular-locale_af.js │ ├── angular-locale_agq-cm.js │ ├── angular-locale_agq.js │ ├── angular-locale_ak-gh.js │ ├── angular-locale_ak.js │ ├── angular-locale_am-et.js │ ├── angular-locale_am.js │ ├── angular-locale_ar-001.js │ ├── angular-locale_ar-ae.js │ ├── angular-locale_ar-bh.js │ ├── angular-locale_ar-dj.js │ ├── angular-locale_ar-dz.js │ ├── angular-locale_ar-eg.js │ ├── angular-locale_ar-eh.js │ ├── angular-locale_ar-er.js │ ├── angular-locale_ar-il.js │ ├── angular-locale_ar-iq.js │ ├── angular-locale_ar-jo.js │ ├── angular-locale_ar-km.js │ ├── angular-locale_ar-kw.js │ ├── angular-locale_ar-lb.js │ ├── angular-locale_ar-ly.js │ ├── angular-locale_ar-ma.js │ ├── angular-locale_ar-mr.js │ ├── angular-locale_ar-om.js │ ├── angular-locale_ar-ps.js │ ├── angular-locale_ar-qa.js │ ├── angular-locale_ar-sa.js │ ├── angular-locale_ar-sd.js │ ├── angular-locale_ar-so.js │ ├── angular-locale_ar-ss.js │ ├── angular-locale_ar-sy.js │ ├── angular-locale_ar-td.js │ ├── angular-locale_ar-tn.js │ ├── angular-locale_ar-ye.js │ ├── angular-locale_ar.js │ ├── angular-locale_as-in.js │ ├── angular-locale_as.js │ ├── angular-locale_asa-tz.js │ ├── angular-locale_asa.js │ ├── angular-locale_ast-es.js │ ├── angular-locale_ast.js │ ├── angular-locale_az-cyrl-az.js │ ├── angular-locale_az-cyrl.js │ ├── angular-locale_az-latn-az.js │ ├── angular-locale_az-latn.js │ ├── angular-locale_az.js │ ├── angular-locale_bas-cm.js │ ├── angular-locale_bas.js │ ├── angular-locale_be-by.js │ ├── angular-locale_be.js │ ├── angular-locale_bem-zm.js │ ├── angular-locale_bem.js │ ├── angular-locale_bez-tz.js │ ├── angular-locale_bez.js │ ├── angular-locale_bg-bg.js │ ├── angular-locale_bg.js │ ├── angular-locale_bm-latn-ml.js │ ├── angular-locale_bm-latn.js │ ├── angular-locale_bm-ml.js │ ├── angular-locale_bm.js │ ├── angular-locale_bn-bd.js │ ├── angular-locale_bn-in.js │ ├── angular-locale_bn.js │ ├── angular-locale_bo-cn.js │ ├── angular-locale_bo-in.js │ ├── angular-locale_bo.js │ ├── angular-locale_br-fr.js │ ├── angular-locale_br.js │ ├── angular-locale_brx-in.js │ ├── angular-locale_brx.js │ ├── angular-locale_bs-cyrl-ba.js │ ├── angular-locale_bs-cyrl.js │ ├── angular-locale_bs-latn-ba.js │ ├── angular-locale_bs-latn.js │ ├── angular-locale_bs.js │ ├── angular-locale_byn-er.js │ ├── angular-locale_byn.js │ ├── angular-locale_ca-ad.js │ ├── angular-locale_ca-es-valencia.js │ ├── angular-locale_ca-es.js │ ├── angular-locale_ca-fr.js │ ├── angular-locale_ca-it.js │ ├── angular-locale_ca.js │ ├── angular-locale_cgg-ug.js │ ├── angular-locale_cgg.js │ ├── angular-locale_chr-us.js │ ├── angular-locale_chr.js │ ├── angular-locale_ckb-arab-iq.js │ ├── angular-locale_ckb-arab-ir.js │ ├── angular-locale_ckb-arab.js │ ├── angular-locale_ckb-iq.js │ ├── angular-locale_ckb-ir.js │ ├── angular-locale_ckb-latn-iq.js │ ├── angular-locale_ckb-latn.js │ ├── angular-locale_ckb.js │ ├── angular-locale_cs-cz.js │ ├── angular-locale_cs.js │ ├── angular-locale_cy-gb.js │ ├── angular-locale_cy.js │ ├── angular-locale_da-dk.js │ ├── angular-locale_da-gl.js │ ├── angular-locale_da.js │ ├── angular-locale_dav-ke.js │ ├── angular-locale_dav.js │ ├── angular-locale_de-at.js │ ├── angular-locale_de-be.js │ ├── angular-locale_de-ch.js │ ├── angular-locale_de-de.js │ ├── angular-locale_de-li.js │ ├── angular-locale_de-lu.js │ ├── angular-locale_de.js │ ├── angular-locale_dje-ne.js │ ├── angular-locale_dje.js │ ├── angular-locale_dsb-de.js │ ├── angular-locale_dsb.js │ ├── angular-locale_dua-cm.js │ ├── angular-locale_dua.js │ ├── angular-locale_dyo-sn.js │ ├── angular-locale_dyo.js │ ├── angular-locale_dz-bt.js │ ├── angular-locale_dz.js │ ├── angular-locale_ebu-ke.js │ ├── angular-locale_ebu.js │ ├── angular-locale_ee-gh.js │ ├── angular-locale_ee-tg.js │ ├── angular-locale_ee.js │ ├── angular-locale_el-cy.js │ ├── angular-locale_el-gr.js │ ├── angular-locale_el.js │ ├── angular-locale_en-001.js │ ├── angular-locale_en-150.js │ ├── angular-locale_en-ag.js │ ├── angular-locale_en-ai.js │ ├── angular-locale_en-as.js │ ├── angular-locale_en-au.js │ ├── angular-locale_en-bb.js │ ├── angular-locale_en-be.js │ ├── angular-locale_en-bm.js │ ├── angular-locale_en-bs.js │ ├── angular-locale_en-bw.js │ ├── angular-locale_en-bz.js │ ├── angular-locale_en-ca.js │ ├── angular-locale_en-cc.js │ ├── angular-locale_en-ck.js │ ├── angular-locale_en-cm.js │ ├── angular-locale_en-cx.js │ ├── angular-locale_en-dg.js │ ├── angular-locale_en-dm.js │ ├── angular-locale_en-er.js │ ├── angular-locale_en-fj.js │ ├── angular-locale_en-fk.js │ ├── angular-locale_en-fm.js │ ├── angular-locale_en-gb.js │ ├── angular-locale_en-gd.js │ ├── angular-locale_en-gg.js │ ├── angular-locale_en-gh.js │ ├── angular-locale_en-gi.js │ ├── angular-locale_en-gm.js │ ├── angular-locale_en-gu.js │ ├── angular-locale_en-gy.js │ ├── angular-locale_en-hk.js │ ├── angular-locale_en-ie.js │ ├── angular-locale_en-im.js │ ├── angular-locale_en-in.js │ ├── angular-locale_en-io.js │ ├── angular-locale_en-iso.js │ ├── angular-locale_en-je.js │ ├── angular-locale_en-jm.js │ ├── angular-locale_en-ke.js │ ├── angular-locale_en-ki.js │ ├── angular-locale_en-kn.js │ ├── angular-locale_en-ky.js │ ├── angular-locale_en-lc.js │ ├── angular-locale_en-lr.js │ ├── angular-locale_en-ls.js │ ├── angular-locale_en-mg.js │ ├── angular-locale_en-mh.js │ ├── angular-locale_en-mo.js │ ├── angular-locale_en-mp.js │ ├── angular-locale_en-ms.js │ ├── angular-locale_en-mt.js │ ├── angular-locale_en-mu.js │ ├── angular-locale_en-mw.js │ ├── angular-locale_en-my.js │ ├── angular-locale_en-na.js │ ├── angular-locale_en-nf.js │ ├── angular-locale_en-ng.js │ ├── angular-locale_en-nr.js │ ├── angular-locale_en-nu.js │ ├── angular-locale_en-nz.js │ ├── angular-locale_en-pg.js │ ├── angular-locale_en-ph.js │ ├── angular-locale_en-pk.js │ ├── angular-locale_en-pn.js │ ├── angular-locale_en-pr.js │ ├── angular-locale_en-pw.js │ ├── angular-locale_en-rw.js │ ├── angular-locale_en-sb.js │ ├── angular-locale_en-sc.js │ ├── angular-locale_en-sd.js │ ├── angular-locale_en-sg.js │ ├── angular-locale_en-sh.js │ ├── angular-locale_en-sl.js │ ├── angular-locale_en-ss.js │ ├── angular-locale_en-sx.js │ ├── angular-locale_en-sz.js │ ├── angular-locale_en-tc.js │ ├── angular-locale_en-tk.js │ ├── angular-locale_en-to.js │ ├── angular-locale_en-tt.js │ ├── angular-locale_en-tv.js │ ├── angular-locale_en-tz.js │ ├── angular-locale_en-ug.js │ ├── angular-locale_en-um.js │ ├── angular-locale_en-us.js │ ├── angular-locale_en-vc.js │ ├── angular-locale_en-vg.js │ ├── angular-locale_en-vi.js │ ├── angular-locale_en-vu.js │ ├── angular-locale_en-ws.js │ ├── angular-locale_en-za.js │ ├── angular-locale_en-zm.js │ ├── angular-locale_en-zw.js │ ├── angular-locale_en.js │ ├── angular-locale_eo-001.js │ ├── angular-locale_eo.js │ ├── angular-locale_es-419.js │ ├── angular-locale_es-ar.js │ ├── angular-locale_es-bo.js │ ├── angular-locale_es-cl.js │ ├── angular-locale_es-co.js │ ├── angular-locale_es-cr.js │ ├── angular-locale_es-cu.js │ ├── angular-locale_es-do.js │ ├── angular-locale_es-ea.js │ ├── angular-locale_es-ec.js │ ├── angular-locale_es-es.js │ ├── angular-locale_es-gq.js │ ├── angular-locale_es-gt.js │ ├── angular-locale_es-hn.js │ ├── angular-locale_es-ic.js │ ├── angular-locale_es-mx.js │ ├── angular-locale_es-ni.js │ ├── angular-locale_es-pa.js │ ├── angular-locale_es-pe.js │ ├── angular-locale_es-ph.js │ ├── angular-locale_es-pr.js │ ├── angular-locale_es-py.js │ ├── angular-locale_es-sv.js │ ├── angular-locale_es-us.js │ ├── angular-locale_es-uy.js │ ├── angular-locale_es-ve.js │ ├── angular-locale_es.js │ ├── angular-locale_et-ee.js │ ├── angular-locale_et.js │ ├── angular-locale_eu-es.js │ ├── angular-locale_eu.js │ ├── angular-locale_ewo-cm.js │ ├── angular-locale_ewo.js │ ├── angular-locale_fa-af.js │ ├── angular-locale_fa-ir.js │ ├── angular-locale_fa.js │ ├── angular-locale_ff-cm.js │ ├── angular-locale_ff-gn.js │ ├── angular-locale_ff-mr.js │ ├── angular-locale_ff-sn.js │ ├── angular-locale_ff.js │ ├── angular-locale_fi-fi.js │ ├── angular-locale_fi.js │ ├── angular-locale_fil-ph.js │ ├── angular-locale_fil.js │ ├── angular-locale_fo-fo.js │ ├── angular-locale_fo.js │ ├── angular-locale_fr-be.js │ ├── angular-locale_fr-bf.js │ ├── angular-locale_fr-bi.js │ ├── angular-locale_fr-bj.js │ ├── angular-locale_fr-bl.js │ ├── angular-locale_fr-ca.js │ ├── angular-locale_fr-cd.js │ ├── angular-locale_fr-cf.js │ ├── angular-locale_fr-cg.js │ ├── angular-locale_fr-ch.js │ ├── angular-locale_fr-ci.js │ ├── angular-locale_fr-cm.js │ ├── angular-locale_fr-dj.js │ ├── angular-locale_fr-dz.js │ ├── angular-locale_fr-fr.js │ ├── angular-locale_fr-ga.js │ ├── angular-locale_fr-gf.js │ ├── angular-locale_fr-gn.js │ ├── angular-locale_fr-gp.js │ ├── angular-locale_fr-gq.js │ ├── angular-locale_fr-ht.js │ ├── angular-locale_fr-km.js │ ├── angular-locale_fr-lu.js │ ├── angular-locale_fr-ma.js │ ├── angular-locale_fr-mc.js │ ├── angular-locale_fr-mf.js │ ├── angular-locale_fr-mg.js │ ├── angular-locale_fr-ml.js │ ├── angular-locale_fr-mq.js │ ├── angular-locale_fr-mr.js │ ├── angular-locale_fr-mu.js │ ├── angular-locale_fr-nc.js │ ├── angular-locale_fr-ne.js │ ├── angular-locale_fr-pf.js │ ├── angular-locale_fr-pm.js │ ├── angular-locale_fr-re.js │ ├── angular-locale_fr-rw.js │ ├── angular-locale_fr-sc.js │ ├── angular-locale_fr-sn.js │ ├── angular-locale_fr-sy.js │ ├── angular-locale_fr-td.js │ ├── angular-locale_fr-tg.js │ ├── angular-locale_fr-tn.js │ ├── angular-locale_fr-vu.js │ ├── angular-locale_fr-wf.js │ ├── angular-locale_fr-yt.js │ ├── angular-locale_fr.js │ ├── angular-locale_fur-it.js │ ├── angular-locale_fur.js │ ├── angular-locale_fy-nl.js │ ├── angular-locale_fy.js │ ├── angular-locale_ga-ie.js │ ├── angular-locale_ga.js │ ├── angular-locale_gd-gb.js │ ├── angular-locale_gd.js │ ├── angular-locale_gl-es.js │ ├── angular-locale_gl.js │ ├── angular-locale_gsw-ch.js │ ├── angular-locale_gsw-fr.js │ ├── angular-locale_gsw-li.js │ ├── angular-locale_gsw.js │ ├── angular-locale_gu-in.js │ ├── angular-locale_gu.js │ ├── angular-locale_guz-ke.js │ ├── angular-locale_guz.js │ ├── angular-locale_gv-im.js │ ├── angular-locale_gv.js │ ├── angular-locale_ha-latn-gh.js │ ├── angular-locale_ha-latn-ne.js │ ├── angular-locale_ha-latn-ng.js │ ├── angular-locale_ha-latn.js │ ├── angular-locale_ha.js │ ├── angular-locale_haw-us.js │ ├── angular-locale_haw.js │ ├── angular-locale_he-il.js │ ├── angular-locale_he.js │ ├── angular-locale_hi-in.js │ ├── angular-locale_hi.js │ ├── angular-locale_hr-ba.js │ ├── angular-locale_hr-hr.js │ ├── angular-locale_hr.js │ ├── angular-locale_hsb-de.js │ ├── angular-locale_hsb.js │ ├── angular-locale_hu-hu.js │ ├── angular-locale_hu.js │ ├── angular-locale_hy-am.js │ ├── angular-locale_hy.js │ ├── angular-locale_ia-fr.js │ ├── angular-locale_ia.js │ ├── angular-locale_id-id.js │ ├── angular-locale_id.js │ ├── angular-locale_ig-ng.js │ ├── angular-locale_ig.js │ ├── angular-locale_ii-cn.js │ ├── angular-locale_ii.js │ ├── angular-locale_in.js │ ├── angular-locale_is-is.js │ ├── angular-locale_is.js │ ├── angular-locale_it-ch.js │ ├── angular-locale_it-it.js │ ├── angular-locale_it-sm.js │ ├── angular-locale_it.js │ ├── angular-locale_iw.js │ ├── angular-locale_ja-jp.js │ ├── angular-locale_ja.js │ ├── angular-locale_jgo-cm.js │ ├── angular-locale_jgo.js │ ├── angular-locale_jmc-tz.js │ ├── angular-locale_jmc.js │ ├── angular-locale_ka-ge.js │ ├── angular-locale_ka.js │ ├── angular-locale_kab-dz.js │ ├── angular-locale_kab.js │ ├── angular-locale_kam-ke.js │ ├── angular-locale_kam.js │ ├── angular-locale_kde-tz.js │ ├── angular-locale_kde.js │ ├── angular-locale_kea-cv.js │ ├── angular-locale_kea.js │ ├── angular-locale_khq-ml.js │ ├── angular-locale_khq.js │ ├── angular-locale_ki-ke.js │ ├── angular-locale_ki.js │ ├── angular-locale_kk-cyrl-kz.js │ ├── angular-locale_kk-cyrl.js │ ├── angular-locale_kk.js │ ├── angular-locale_kkj-cm.js │ ├── angular-locale_kkj.js │ ├── angular-locale_kl-gl.js │ ├── angular-locale_kl.js │ ├── angular-locale_kln-ke.js │ ├── angular-locale_kln.js │ ├── angular-locale_km-kh.js │ ├── angular-locale_km.js │ ├── angular-locale_kn-in.js │ ├── angular-locale_kn.js │ ├── angular-locale_ko-kp.js │ ├── angular-locale_ko-kr.js │ ├── angular-locale_ko.js │ ├── angular-locale_kok-in.js │ ├── angular-locale_kok.js │ ├── angular-locale_ks-arab-in.js │ ├── angular-locale_ks-arab.js │ ├── angular-locale_ks.js │ ├── angular-locale_ksb-tz.js │ ├── angular-locale_ksb.js │ ├── angular-locale_ksf-cm.js │ ├── angular-locale_ksf.js │ ├── angular-locale_ksh-de.js │ ├── angular-locale_ksh.js │ ├── angular-locale_kw-gb.js │ ├── angular-locale_kw.js │ ├── angular-locale_ky-cyrl-kg.js │ ├── angular-locale_ky-cyrl.js │ ├── angular-locale_ky.js │ ├── angular-locale_lag-tz.js │ ├── angular-locale_lag.js │ ├── angular-locale_lb-lu.js │ ├── angular-locale_lb.js │ ├── angular-locale_lg-ug.js │ ├── angular-locale_lg.js │ ├── angular-locale_lkt-us.js │ ├── angular-locale_lkt.js │ ├── angular-locale_ln-ao.js │ ├── angular-locale_ln-cd.js │ ├── angular-locale_ln-cf.js │ ├── angular-locale_ln-cg.js │ ├── angular-locale_ln.js │ ├── angular-locale_lo-la.js │ ├── angular-locale_lo.js │ ├── angular-locale_lt-lt.js │ ├── angular-locale_lt.js │ ├── angular-locale_lu-cd.js │ ├── angular-locale_lu.js │ ├── angular-locale_luo-ke.js │ ├── angular-locale_luo.js │ ├── angular-locale_luy-ke.js │ ├── angular-locale_luy.js │ ├── angular-locale_lv-lv.js │ ├── angular-locale_lv.js │ ├── angular-locale_mas-ke.js │ ├── angular-locale_mas-tz.js │ ├── angular-locale_mas.js │ ├── angular-locale_mer-ke.js │ ├── angular-locale_mer.js │ ├── angular-locale_mfe-mu.js │ ├── angular-locale_mfe.js │ ├── angular-locale_mg-mg.js │ ├── angular-locale_mg.js │ ├── angular-locale_mgh-mz.js │ ├── angular-locale_mgh.js │ ├── angular-locale_mgo-cm.js │ ├── angular-locale_mgo.js │ ├── angular-locale_mk-mk.js │ ├── angular-locale_mk.js │ ├── angular-locale_ml-in.js │ ├── angular-locale_ml.js │ ├── angular-locale_mn-cyrl-mn.js │ ├── angular-locale_mn-cyrl.js │ ├── angular-locale_mn.js │ ├── angular-locale_mr-in.js │ ├── angular-locale_mr.js │ ├── angular-locale_ms-latn-bn.js │ ├── angular-locale_ms-latn-my.js │ ├── angular-locale_ms-latn-sg.js │ ├── angular-locale_ms-latn.js │ ├── angular-locale_ms.js │ ├── angular-locale_mt-mt.js │ ├── angular-locale_mt.js │ ├── angular-locale_mua-cm.js │ ├── angular-locale_mua.js │ ├── angular-locale_my-mm.js │ ├── angular-locale_my.js │ ├── angular-locale_naq-na.js │ ├── angular-locale_naq.js │ ├── angular-locale_nb-no.js │ ├── angular-locale_nb-sj.js │ ├── angular-locale_nb.js │ ├── angular-locale_nd-zw.js │ ├── angular-locale_nd.js │ ├── angular-locale_ne-in.js │ ├── angular-locale_ne-np.js │ ├── angular-locale_ne.js │ ├── angular-locale_nl-aw.js │ ├── angular-locale_nl-be.js │ ├── angular-locale_nl-bq.js │ ├── angular-locale_nl-cw.js │ ├── angular-locale_nl-nl.js │ ├── angular-locale_nl-sr.js │ ├── angular-locale_nl-sx.js │ ├── angular-locale_nl.js │ ├── angular-locale_nmg-cm.js │ ├── angular-locale_nmg.js │ ├── angular-locale_nn-no.js │ ├── angular-locale_nn.js │ ├── angular-locale_nnh-cm.js │ ├── angular-locale_nnh.js │ ├── angular-locale_no-no.js │ ├── angular-locale_no.js │ ├── angular-locale_nr-za.js │ ├── angular-locale_nr.js │ ├── angular-locale_nso-za.js │ ├── angular-locale_nso.js │ ├── angular-locale_nus-sd.js │ ├── angular-locale_nus.js │ ├── angular-locale_nyn-ug.js │ ├── angular-locale_nyn.js │ ├── angular-locale_om-et.js │ ├── angular-locale_om-ke.js │ ├── angular-locale_om.js │ ├── angular-locale_or-in.js │ ├── angular-locale_or.js │ ├── angular-locale_os-ge.js │ ├── angular-locale_os-ru.js │ ├── angular-locale_os.js │ ├── angular-locale_pa-arab-pk.js │ ├── angular-locale_pa-arab.js │ ├── angular-locale_pa-guru-in.js │ ├── angular-locale_pa-guru.js │ ├── angular-locale_pa.js │ ├── angular-locale_pl-pl.js │ ├── angular-locale_pl.js │ ├── angular-locale_ps-af.js │ ├── angular-locale_ps.js │ ├── angular-locale_pt-ao.js │ ├── angular-locale_pt-br.js │ ├── angular-locale_pt-cv.js │ ├── angular-locale_pt-gw.js │ ├── angular-locale_pt-mo.js │ ├── angular-locale_pt-mz.js │ ├── angular-locale_pt-pt.js │ ├── angular-locale_pt-st.js │ ├── angular-locale_pt-tl.js │ ├── angular-locale_pt.js │ ├── angular-locale_qu-bo.js │ ├── angular-locale_qu-ec.js │ ├── angular-locale_qu-pe.js │ ├── angular-locale_qu.js │ ├── angular-locale_rm-ch.js │ ├── angular-locale_rm.js │ ├── angular-locale_rn-bi.js │ ├── angular-locale_rn.js │ ├── angular-locale_ro-md.js │ ├── angular-locale_ro-ro.js │ ├── angular-locale_ro.js │ ├── angular-locale_rof-tz.js │ ├── angular-locale_rof.js │ ├── angular-locale_ru-by.js │ ├── angular-locale_ru-kg.js │ ├── angular-locale_ru-kz.js │ ├── angular-locale_ru-md.js │ ├── angular-locale_ru-ru.js │ ├── angular-locale_ru-ua.js │ ├── angular-locale_ru.js │ ├── angular-locale_rw-rw.js │ ├── angular-locale_rw.js │ ├── angular-locale_rwk-tz.js │ ├── angular-locale_rwk.js │ ├── angular-locale_sah-ru.js │ ├── angular-locale_sah.js │ ├── angular-locale_saq-ke.js │ ├── angular-locale_saq.js │ ├── angular-locale_sbp-tz.js │ ├── angular-locale_sbp.js │ ├── angular-locale_se-fi.js │ ├── angular-locale_se-no.js │ ├── angular-locale_se-se.js │ ├── angular-locale_se.js │ ├── angular-locale_seh-mz.js │ ├── angular-locale_seh.js │ ├── angular-locale_ses-ml.js │ ├── angular-locale_ses.js │ ├── angular-locale_sg-cf.js │ ├── angular-locale_sg.js │ ├── angular-locale_shi-latn-ma.js │ ├── angular-locale_shi-latn.js │ ├── angular-locale_shi-tfng-ma.js │ ├── angular-locale_shi-tfng.js │ ├── angular-locale_shi.js │ ├── angular-locale_si-lk.js │ ├── angular-locale_si.js │ ├── angular-locale_sk-sk.js │ ├── angular-locale_sk.js │ ├── angular-locale_sl-si.js │ ├── angular-locale_sl.js │ ├── angular-locale_smn-fi.js │ ├── angular-locale_smn.js │ ├── angular-locale_sn-zw.js │ ├── angular-locale_sn.js │ ├── angular-locale_so-dj.js │ ├── angular-locale_so-et.js │ ├── angular-locale_so-ke.js │ ├── angular-locale_so-so.js │ ├── angular-locale_so.js │ ├── angular-locale_sq-al.js │ ├── angular-locale_sq-mk.js │ ├── angular-locale_sq-xk.js │ ├── angular-locale_sq.js │ ├── angular-locale_sr-cyrl-ba.js │ ├── angular-locale_sr-cyrl-me.js │ ├── angular-locale_sr-cyrl-rs.js │ ├── angular-locale_sr-cyrl-xk.js │ ├── angular-locale_sr-cyrl.js │ ├── angular-locale_sr-latn-ba.js │ ├── angular-locale_sr-latn-me.js │ ├── angular-locale_sr-latn-rs.js │ ├── angular-locale_sr-latn-xk.js │ ├── angular-locale_sr-latn.js │ ├── angular-locale_sr.js │ ├── angular-locale_ss-sz.js │ ├── angular-locale_ss-za.js │ ├── angular-locale_ss.js │ ├── angular-locale_ssy-er.js │ ├── angular-locale_ssy.js │ ├── angular-locale_st-ls.js │ ├── angular-locale_st-za.js │ ├── angular-locale_st.js │ ├── angular-locale_sv-ax.js │ ├── angular-locale_sv-fi.js │ ├── angular-locale_sv-se.js │ ├── angular-locale_sv.js │ ├── angular-locale_sw-ke.js │ ├── angular-locale_sw-tz.js │ ├── angular-locale_sw-ug.js │ ├── angular-locale_sw.js │ ├── angular-locale_swc-cd.js │ ├── angular-locale_swc.js │ ├── angular-locale_ta-in.js │ ├── angular-locale_ta-lk.js │ ├── angular-locale_ta-my.js │ ├── angular-locale_ta-sg.js │ ├── angular-locale_ta.js │ ├── angular-locale_te-in.js │ ├── angular-locale_te.js │ ├── angular-locale_teo-ke.js │ ├── angular-locale_teo-ug.js │ ├── angular-locale_teo.js │ ├── angular-locale_tg-cyrl-tj.js │ ├── angular-locale_tg-cyrl.js │ ├── angular-locale_tg.js │ ├── angular-locale_th-th.js │ ├── angular-locale_th.js │ ├── angular-locale_ti-er.js │ ├── angular-locale_ti-et.js │ ├── angular-locale_ti.js │ ├── angular-locale_tig-er.js │ ├── angular-locale_tig.js │ ├── angular-locale_tl.js │ ├── angular-locale_tn-bw.js │ ├── angular-locale_tn-za.js │ ├── angular-locale_tn.js │ ├── angular-locale_to-to.js │ ├── angular-locale_to.js │ ├── angular-locale_tr-cy.js │ ├── angular-locale_tr-tr.js │ ├── angular-locale_tr.js │ ├── angular-locale_ts-za.js │ ├── angular-locale_ts.js │ ├── angular-locale_twq-ne.js │ ├── angular-locale_twq.js │ ├── angular-locale_tzm-latn-ma.js │ ├── angular-locale_tzm-latn.js │ ├── angular-locale_tzm.js │ ├── angular-locale_ug-arab-cn.js │ ├── angular-locale_ug-arab.js │ ├── angular-locale_ug.js │ ├── angular-locale_uk-ua.js │ ├── angular-locale_uk.js │ ├── angular-locale_ur-in.js │ ├── angular-locale_ur-pk.js │ ├── angular-locale_ur.js │ ├── angular-locale_uz-arab-af.js │ ├── angular-locale_uz-arab.js │ ├── angular-locale_uz-cyrl-uz.js │ ├── angular-locale_uz-cyrl.js │ ├── angular-locale_uz-latn-uz.js │ ├── angular-locale_uz-latn.js │ ├── angular-locale_uz.js │ ├── angular-locale_vai-latn-lr.js │ ├── angular-locale_vai-latn.js │ ├── angular-locale_vai-vaii-lr.js │ ├── angular-locale_vai-vaii.js │ ├── angular-locale_vai.js │ ├── angular-locale_ve-za.js │ ├── angular-locale_ve.js │ ├── angular-locale_vi-vn.js │ ├── angular-locale_vi.js │ ├── angular-locale_vo-001.js │ ├── angular-locale_vo.js │ ├── angular-locale_vun-tz.js │ ├── angular-locale_vun.js │ ├── angular-locale_wae-ch.js │ ├── angular-locale_wae.js │ ├── angular-locale_wal-et.js │ ├── angular-locale_wal.js │ ├── angular-locale_xh-za.js │ ├── angular-locale_xh.js │ ├── angular-locale_xog-ug.js │ ├── angular-locale_xog.js │ ├── angular-locale_yav-cm.js │ ├── angular-locale_yav.js │ ├── angular-locale_yi-001.js │ ├── angular-locale_yi.js │ ├── angular-locale_yo-bj.js │ ├── angular-locale_yo-ng.js │ ├── angular-locale_yo.js │ ├── angular-locale_zgh-ma.js │ ├── angular-locale_zgh.js │ ├── angular-locale_zh-cn.js │ ├── angular-locale_zh-hans-cn.js │ ├── angular-locale_zh-hans-hk.js │ ├── angular-locale_zh-hans-mo.js │ ├── angular-locale_zh-hans-sg.js │ ├── angular-locale_zh-hans.js │ ├── angular-locale_zh-hant-hk.js │ ├── angular-locale_zh-hant-mo.js │ ├── angular-locale_zh-hant-tw.js │ ├── angular-locale_zh-hant.js │ ├── angular-locale_zh-hk.js │ ├── angular-locale_zh-tw.js │ ├── angular-locale_zh.js │ ├── angular-locale_zu-za.js │ └── angular-locale_zu.js ├── version.json └── version.txt ├── material_design_icons ├── LICENSE ├── README.third_party └── sprites │ └── svg-sprite │ ├── svg-sprite-action.svg │ ├── svg-sprite-file.svg │ └── svg-sprite-navigation.svg └── roboto ├── LICENSE.txt ├── README.third_party ├── Roboto-Black.ttf ├── Roboto-BlackItalic.ttf ├── Roboto-Bold.ttf ├── Roboto-BoldItalic.ttf ├── Roboto-Italic.ttf ├── Roboto-Light.ttf ├── Roboto-LightItalic.ttf ├── Roboto-Medium.ttf ├── Roboto-MediumItalic.ttf ├── Roboto-Regular.ttf ├── Roboto-Thin.ttf └── Roboto-ThinItalic.ttf /.gitignore: -------------------------------------------------------------------------------- 1 | LICENSE.all 2 | client/bundle.css 3 | client/bundle.js 4 | client/compiled_js.js 5 | client/deps.js 6 | filedrop 7 | *.swp 8 | .DS_STORE 9 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Google Inc. All rights reserved. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | .PHONY: all clean 16 | 17 | JS_SRCS=\ 18 | client/controller.js \ 19 | client/dropdirective.js \ 20 | client/filedialog.js \ 21 | client/files.js \ 22 | client/uploadmanager.js \ 23 | client/app.js 24 | JS_DEPS=\ 25 | third_party/angular/angular.min.js \ 26 | third_party/angular/angular-animate.min.js \ 27 | third_party/angular/angular-aria.min.js \ 28 | third_party/angular/angular-messages.min.js \ 29 | third_party/angular-material/angular-material.min.js 30 | THIRD_PARTY_LICENSES=\ 31 | third_party/angular/LICENSE \ 32 | third_party/angular-material/LICENSE \ 33 | third_party/material_design_icons/LICENSE \ 34 | third_party/roboto/LICENSE.txt 35 | 36 | all: LICENSE.all filedrop client/bundle.css client/bundle.js 37 | 38 | LICENSE.all: LICENSE $(THIRD_PARTY_LICENSES) 39 | cp LICENSE $@ 40 | for name in $(THIRD_PARTY_LICENSES); do \ 41 | echo >> $@; \ 42 | echo "******************** $$name ********************" >> $@; \ 43 | echo >> $@; \ 44 | cat $$name >> $@; \ 45 | done 46 | 47 | filedrop: filedrop.go 48 | go get -d 49 | go build -o $@ 50 | 51 | client/bundle.js: client/deps.js client/compiled_js.js 52 | cat $^ > $@ 53 | 54 | client/bundle.css: third_party/angular-material/angular-material.min.css client/style.css 55 | cat $^ > $@ 56 | 57 | client/deps.js: $(JS_DEPS) 58 | cat $^ | sed -e '/sourceMappingURL=/d' > $@ 59 | 60 | # TODO(light): compile JS if Closure Compiler present 61 | client/compiled_js.js: $(JS_SRCS) 62 | cat $^ > $@ 63 | 64 | clean: 65 | rm -f LICENSE.all filedrop client/bundle.js client/bundle.css client/deps.js client/compiled_js.js 66 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FileDrop 2 | 3 | **This project is no longer maintained.** 4 | 5 | FileDrop is a small web-based file-sharing UI. It can be used as a standalone 6 | server in trusted LANs, but it can optionally use [Sandstorm][sandstorm] for 7 | ACLs and sharing. 8 | 9 | [![Try it on Sandstorm](https://img.shields.io/badge/try-live%20demo-783189.svg)](https://demo.sandstorm.io/appdemo/nn7axgy3y8kvd0m1mtk3cwca34t916p5d7m4j1j2e874nuz3t8y0) 10 | 11 | ## Dependencies 12 | 13 | FileDrop requires Go 1.4 to build. Other dependencies are vendored in 14 | `third_party`. 15 | 16 | ## Building and Running Locally 17 | 18 | ``` 19 | make 20 | ./filedrop -address=:8080 -storage=/var/directory/for/files 21 | ``` 22 | 23 | ## Building an SPK 24 | 25 | ``` 26 | make 27 | spk pack filedrop.spk 28 | ``` 29 | 30 | ## API 31 | 32 | You can download/upload files by using the standard HTTP verbs on the `/file/` 33 | resource. For example: 34 | 35 | ``` 36 | # Download foo.jpg 37 | curl -s http://localhost:8080/file/foo.jpg > foo.jpg 38 | # Upload bar.txt 39 | curl -T bar.txt http://localhost:8080/file/ 40 | ``` 41 | 42 | If you're using Sandstorm web keys, remember to use `-H 'Authorization: Bearer 43 | TOKEN` to authorize the request. 44 | 45 | ## License 46 | 47 | Apache License 2.0. See LICENSE for details. 48 | 49 | This is not an official Google product (experimental or otherwise), it is just 50 | code that happens to be owned by Google. 51 | 52 | [sandstorm]: https://sandstorm.io/ 53 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | # 1.0.4 2 | 3 | - Added short description to metadata 4 | 5 | # 1.0.3 6 | 7 | - Fixed icons ([issue #3](https://github.com/zombiezen/filedrop/issues/3)) 8 | 9 | # 1.0.2 10 | 11 | - Fixed [issue #1](https://github.com/zombiezen/filedrop/issues/1) 12 | - Fixed [issue #2](https://github.com/zombiezen/filedrop/issues/2) 13 | - Updated angular-material to 0.10.1 14 | 15 | # 1.0.1 16 | 17 | First public release. 18 | -------------------------------------------------------------------------------- /client/app.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @license Apache-2.0 3 | * 4 | * Copyright 2015 Google Inc. All rights reserved. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | //goog.provide('filedrop.module'); 20 | 21 | //goog.require('filedrop.Controller'); 22 | //goog.require('filedrop.FileDialog'); 23 | //goog.require('filedrop.Files'); 24 | //goog.require('filedrop.dropDirective'); 25 | var filedrop = filedrop || {}; 26 | 27 | 28 | //goog.scope(function() { 29 | 30 | filedrop.module = angular.module('FileDropApp', [ 31 | 'ngAnimate', 32 | 'ngMaterial', 33 | 'ngMessages']); 34 | 35 | filedrop.module 36 | .controller('Controller', filedrop.Controller) 37 | .directive('filedropDrop', filedrop.dropDirective) 38 | .service('FileDialog', filedrop.FileDialog) 39 | .service('UploadManager', filedrop.UploadManager) 40 | .service('Files', filedrop.Files); 41 | 42 | /** 43 | * @param {md.$mdIconProvider} $mdIconProvider 44 | * @param {md.$mdThemingProvider} $mdThemingProvider 45 | * @ngInject 46 | */ 47 | var config = function($mdIconProvider, $mdThemingProvider) { 48 | $mdIconProvider 49 | .iconSet('action', '/icons/action.svg') 50 | .iconSet('file', '/icons/file.svg') 51 | .iconSet('navigation', '/icons/navigation.svg'); 52 | $mdThemingProvider.theme('default') 53 | .primaryPalette('teal'); 54 | }; 55 | filedrop.module.config(config); 56 | 57 | //}); 58 | -------------------------------------------------------------------------------- /client/dropdirective.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @license Apache-2.0 3 | * 4 | * Copyright 2015 Google Inc. All rights reserved. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | //goog.provide('filedrop.dropDirective'); 20 | var filedrop = filedrop || {}; 21 | 22 | 23 | /** 24 | * Attribute for registering a file drop event handler. 25 | * 26 | * @param {!angular.$parse} $parse 27 | * @param {!angular.$log} $log 28 | * @return {Object} 29 | * @ngInject 30 | */ 31 | filedrop.dropDirective = function($parse, $log) { 32 | /** 33 | * @param {!angular.JQLite} element 34 | * @param {!Object.} attrs 35 | */ 36 | var compile = function(element, attrs) { 37 | var fn = $parse(attrs['filedropDrop']); 38 | /** 39 | * @param {!angular.Scope} scope 40 | * @param {!angular.JQLite} element 41 | * @param {!Object.} attrs 42 | */ 43 | var link = function(scope, element, attrs) { 44 | element.on('dragenter dragover drop', function(e) { 45 | e.preventDefault(); 46 | e.stopPropagation(); 47 | }); 48 | element.on('drop', function(e) { 49 | var callback = function() { 50 | fn(scope, {'$event': e}); 51 | }; 52 | $log.log('Dropped ' + e.dataTransfer.files.length + ' files'); 53 | scope.$apply(callback); 54 | }); 55 | }; 56 | return link; 57 | }; 58 | return { 59 | 'restrict': 'A', 60 | 'compile': compile 61 | }; 62 | }; 63 | -------------------------------------------------------------------------------- /client/externs.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @license Apache-2.0 3 | * 4 | * Copyright 2015 Google Inc. All rights reserved. 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | // Filedrop externs 20 | 21 | /** @type {!Array.} */ 22 | var permissions; 23 | -------------------------------------------------------------------------------- /client/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google Inc. All rights reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { 18 | display: none !important; 19 | } 20 | 21 | .filedrop-backdrop { 22 | background: #fafafa; 23 | } 24 | 25 | .filedrop-maincard { 26 | background: white; 27 | } 28 | 29 | .filedrop-heroiconblock { 30 | text-align: center; 31 | } 32 | 33 | .filedrop-heroicon { 34 | width: 64px; 35 | height: 64px; 36 | } 37 | 38 | /* Workaround for angular-material #3773 */ 39 | .md-scroll-mask { 40 | z-index: 0 !important; 41 | } 42 | -------------------------------------------------------------------------------- /description.md: -------------------------------------------------------------------------------- 1 | ** Drag-n-drop file sharing ** 2 | 3 | FileDrop is a small web-based file-sharing app. It allows you to share files in 4 | Sandstorm and optionally give the receiver the ability to share files back. 5 | Advanced users can use the REST API to store files programmatically. 6 | -------------------------------------------------------------------------------- /keyring: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zombiezen/filedrop/16b413cd24f23b29ccf7c4ef38a117962cfd31f4/keyring -------------------------------------------------------------------------------- /misc/download.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [[ $# -ne 2 ]]; then 3 | echo "usage: $(basename "$0") URL NAME" 1>&2 4 | exit 64 5 | fi 6 | 7 | url="$1" 8 | token="$(echo "$url" | sed -e 's/^.*#//')" 9 | base="$(echo "$url" | sed -e 's/#.*$//')" 10 | shift 1 11 | exec curl -sSL -H "Authorization: Bearer $token" "$base/file/$1" 12 | -------------------------------------------------------------------------------- /misc/upload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [[ $# -lt 2 ]]; then 3 | echo "usage: $(basename "$0") URL FILE [...]" 1>&2 4 | exit 64 5 | fi 6 | 7 | url="$1" 8 | token="$(echo "$url" | sed -e 's/^.*#//')" 9 | base="$(echo "$url" | sed -e 's/#.*$//')" 10 | shift 1 11 | for name in "$@"; do 12 | curl -H "Authorization: Bearer $token" -T "$name" "$base/file/" || exit 1 13 | done 14 | -------------------------------------------------------------------------------- /pgp-signature: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP MESSAGE----- 2 | Version: GnuPG v1 3 | 4 | owGbwMvMwMRYc3LTnj3tG/cynq5MYgi9/lzSUyExV6EkI1UhsbQkI79IIT8NzAtO 5 | zEspLskvytXLzFdILChQKM8syQDLpOXn5OSXZ+alK3i6WCnk5ZknVqRXGldaZJel 6 | GOQa5pZkGyeXJycam5RYGpoVmKaY55pkGWYZpVqYm+SVVhmXWFQadDLKsDAwMjGw 7 | sTKBXMDAxSkAc9aERez/c9MUY/r+XvoRVsw4cxdnAx/rg4gT0k8+/H61as7PG4t+ 8 | 3p5fN6dipnLa3kbnL5u6BYRm/SyVEzV40mRTYND05JRL2NU5/7pPrjXc6+jpqv6t 9 | Sigp9Rt3TgXDlGXX7SzaH+q9v/p5yWe2ml0pbCc9877uWTVR+OAFv4rrgtXvpcJd 10 | rvxWUWNM/j3HNjUmL+pNuJTeJ922jd8++wXPPV9U8XP3bxnDzPiz+lEvZ6xsZrLt 11 | ZFTf4yr+fsP3xVInXXZUvQ+XqUiZ4CSRcYV9WoLne5vK5/16of4tu9aabhU8Lplz 12 | PzrnWrDmtQ5Jvpt2Z15Pfu21eaN9jd8iq/m2szh3hjUdO7p+g0/57qMxRioLAQ== 13 | =Mngc 14 | -----END PGP MESSAGE----- 15 | -------------------------------------------------------------------------------- /sandstorm-files.list: -------------------------------------------------------------------------------- 1 | # *** WARNING: GENERATED FILE *** 2 | # This file is automatically updated and rewritten in sorted order every time 3 | # the app runs in dev mode. You may manually add or remove files, but don't 4 | # expect comments or ordering to be retained. 5 | etc/mime.types 6 | filedrop/client/bundle.css 7 | filedrop/client/bundle.js 8 | filedrop/filedrop 9 | filedrop/index.html 10 | filedrop/third_party/material_design_icons/sprites/svg-sprite/svg-sprite-action.svg 11 | filedrop/third_party/material_design_icons/sprites/svg-sprite/svg-sprite-file.svg 12 | filedrop/third_party/material_design_icons/sprites/svg-sprite/svg-sprite-navigation.svg 13 | lib/x86_64-linux-gnu/ld-2.19.so 14 | lib/x86_64-linux-gnu/libc-2.19.so 15 | lib/x86_64-linux-gnu/libc.so.6 16 | lib/x86_64-linux-gnu/libpthread-2.19.so 17 | lib/x86_64-linux-gnu/libpthread.so.0 18 | lib64/ld-linux-x86-64.so.2 19 | proc/cpuinfo 20 | sandstorm-http-bridge 21 | sandstorm-http-bridge-config 22 | sandstorm-manifest 23 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zombiezen/filedrop/16b413cd24f23b29ccf7c4ef38a117962cfd31f4/screenshot.png -------------------------------------------------------------------------------- /third_party/angular-material/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2014 Google, Inc. http://angularjs.org 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /third_party/angular-material/README.third_party: -------------------------------------------------------------------------------- 1 | URL: https://github.com/angular/bower-material/archive/v0.10.1.zip 2 | Version: 0.10.1 3 | License: MIT 4 | License File: LICENSE 5 | 6 | Description: 7 | The Angular Material project is an implementation of Material Design in 8 | Angular.js. 9 | 10 | Local Modifications: 11 | No Modifications. 12 | -------------------------------------------------------------------------------- /third_party/angular/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010-2015 Google, Inc. http://angularjs.org 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /third_party/angular/README.third_party: -------------------------------------------------------------------------------- 1 | URL: https://code.angularjs.org/1.3.12/angular-1.3.12.zip 2 | Version: 1.3.12 3 | License: MIT 4 | License File: LICENSE 5 | 6 | Description: 7 | AngularJS is a web application framework for single-page JavaScript 8 | applications. 9 | 10 | Local Modifications: 11 | No Modifications. 12 | -------------------------------------------------------------------------------- /third_party/angular/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.3.12 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", 7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /third_party/angular/angular-cookies.min.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"angular-cookies.min.js", 4 | "lineCount":7, 5 | "mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAmBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA0BW,UA1BX,CA0BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAQ,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACvEC,EAAU,EAD6D,CAEvEC,EAAc,EAFyD,CAGvEC,CAHuE,CAIvEC,EAAU,CAAA,CAJ6D,CAKvEC,EAAOV,CAAAU,KALgE,CAMvEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAKgB,CAAL,GAAaX,EAAb,CACEY,CAKA,CALQZ,CAAA,CAAQW,CAAR,CAKR,CAJKjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAIL,GAHEA,CACA,CADQ,EACR,CADaA,CACb,CAAAZ,CAAA,CAAQW,CAAR,CAAA,CAAgBC,CAElB,EAAIA,CAAJ,GAAcX,CAAA,CAAYU,CAAZ,CAAd,GACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CAFZ,CAOF,IAAIA,CAAJ,CAIE,IAAKF,CAAL,GAFAI,EAEaf,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBI,CAAA,CAAeJ,CAAf,CAAtB,GAEMN,CAAA,CAAYU,CAAA,CAAeJ,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBI,CAAA,CAAeJ,CAAf,CALpB,CAhCU,CAThB,CAEA,OAAOX,EA1BoE,CAA1D,CA1BvB,CAAAH,QAAA,CAoIW,cApIX;AAoI2B,CAAC,UAAD,CAAa,QAAQ,CAACmB,CAAD,CAAW,CAErD,MAAO,CAWLC,IAAKA,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHN,CACG,CADKI,CAAA,CAASE,CAAT,CACL,EAAQxB,CAAAyB,SAAA,CAAiBP,CAAjB,CAAR,CAAkCA,CAFxB,CAXd,CA0BLQ,IAAKA,QAAQ,CAACF,CAAD,CAAMN,CAAN,CAAa,CACxBI,CAAA,CAASE,CAAT,CAAA,CAAgBxB,CAAA2B,OAAA,CAAeT,CAAf,CADQ,CA1BrB,CAuCLU,OAAQA,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CAvCjB,CAF8C,CAAhC,CApI3B,CAnBsC,CAArC,CAAD,CAwMGzB,MAxMH,CAwMWA,MAAAC,QAxMX;", 6 | "sources":["angular-cookies.js"], 7 | "names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"] 8 | } 9 | -------------------------------------------------------------------------------- /third_party/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide:not(.ng-hide-animate) { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /third_party/angular/angular-loader.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.3.12 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(){'use strict';function d(b){return function(){var c=arguments[0],e;e="["+(b?b+":":"")+c+"] http://errors.angularjs.org/1.3.12/"+(b?b+"/":"")+c;for(c=1;c").html(a);f.forEach(a.children(), 8 | function(a){a=f.element(a);h?h.after(a):d.prepend(a);h=a;q(a)(b)});c.renderMessages(e,g)})}}}]).directive("ngMessage",["$animate",function(f){return{require:"^ngMessages",transclude:"element",terminal:!0,restrict:"AE",link:function(k,l,b,d,a){for(var c,g,e=l[0],n=e.parentNode,h=0,p=0;h