A music player that connects to your cloud/distributed storage. diffuse.sh
Something went wrong. Try again.
1.5 kB · 64 lines
JavaScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import { defineElement, DiffuseElement } from "~/common/element.js";
/** * @import {ProxiedActions, Tunnel} from "~/common/worker.d.ts" * @import {UploadElement} from "@specs/components/upload/types.d.ts" * @import {Actions} from "@specs/components/configurator/upload/types.d.ts" */
/** * @typedef {{ element: UploadElement, tunnel: Tunnel, worker: Worker | SharedWorker }} Upload */
////////////////////////////////////////////// ELEMENT////////////////////////////////////////////
/** * @implements {ProxiedActions<Actions>} */class UploadConfigurator extends DiffuseElement { static NAME = "diffuse/configurator/upload"; static WORKER_URL = "components/configurator/upload/worker.js";
constructor() { super();
/** @type {ProxiedActions<Actions>} */ const proxy = this.workerProxy();
this.consult = proxy.consult; this.upload = proxy.upload; this.delete = proxy.delete; this.createSource = proxy.createSource; }
// WORKERS
/** * @override */ dependencies() { return this.uploaders(); }
uploaders() { return Object.fromEntries( Array.from(this.children).map((element) => { const upload = /** @type {UploadElement} */ (element); return [upload.SCHEME, upload]; }), ); }}
export default UploadConfigurator;
////////////////////////////////////////////// REGISTER////////////////////////////////////////////
export const CLASS = UploadConfigurator;export const NAME = "dc-upload";
defineElement(NAME, CLASS);