forked from
tokono.ma/diffuse
A music player that connects to your cloud/distributed storage.
1import { defineElement, DiffuseElement } from "~/common/element.js";
2
3/**
4 * @import {ProxiedActions} from "~/common/worker.d.ts"
5 * @import {ArtworkElement} from "~/components/artwork/types.d.ts"
6 * @import {Actions} from "./types.d.ts"
7 */
8
9////////////////////////////////////////////
10// ELEMENT
11////////////////////////////////////////////
12
13/**
14 * @implements {ProxiedActions<Actions>}
15 */
16class ArtworkConfigurator extends DiffuseElement {
17 static NAME = "diffuse/configurator/artwork";
18 static WORKER_URL = "components/configurator/artwork/worker.js";
19
20 constructor() {
21 super();
22
23 /** @type {ProxiedActions<Actions>} */
24 const proxy = this.workerProxy();
25
26 this.get = proxy.get;
27 }
28
29 // WORKERS
30
31 /**
32 * @override
33 */
34 dependencies() {
35 return Object.fromEntries(
36 Array.from(this.children).map((element) => {
37 const artwork = /** @type {ArtworkElement} */ (element);
38 return [artwork.localName, artwork];
39 }),
40 );
41 }
42}
43
44export default ArtworkConfigurator;
45
46////////////////////////////////////////////
47// REGISTER
48////////////////////////////////////////////
49
50export const CLASS = ArtworkConfigurator;
51export const NAME = "dc-artwork";
52
53defineElement(NAME, ArtworkConfigurator);