A music player that connects to your cloud/distributed storage.
1////////////////////////////////////////////
2// DEMO
3////////////////////////////////////////////
4
5import { insertPreludes } from "./common/facets/prelude.js";
6
7const addDemoBtn = document.querySelector("#add-sample-content");
8
9async function addSampleContent() {
10 if (!addDemoBtn) return;
11
12 addDemoBtn.setAttribute("disabled", "");
13 addDemoBtn.innerHTML = `<span>
14 <i class="ph-fill ph-hourglass-medium"></i>
15 Loading dependencies
16 </span>`;
17
18 const { default: foundation } = await import("~/common/facets/foundation.js");
19 const Output = await import("~/common/output.js");
20
21 const output = await foundation.orchestrator.output();
22 const input = await foundation.orchestrator.input();
23 const pto = await foundation.orchestrator.processTracks({
24 disableWhenReady: true,
25 });
26
27 // Execute prelude
28 await insertPreludes(
29 await Output.data(output.facets),
30 );
31
32 /** @type {import("~/components/input/s3/element.js").CLASS | null} */
33 const s3 = input.querySelector("di-s3");
34
35 if (!s3) {
36 throw new Error("S3 input not found");
37 }
38
39 addDemoBtn.innerHTML = `<span>
40 <i class="ph-fill ph-hourglass-medium"></i>
41 Adding source
42 </span>`;
43
44 const demo = await s3.demo();
45
46 await output.tracks.save([
47 ...(await Output.data(output.tracks)),
48 demo.track,
49 ]);
50
51 addDemoBtn.innerHTML = `<span>
52 <i class="ph-fill ph-hourglass-medium"></i>
53 Processing source
54 </span>`;
55
56 await pto.process();
57
58 addDemoBtn.innerHTML = `<span>
59 <i class="ph-fill ph-check-fat"></i> Added
60 </span>`;
61}
62
63addDemoBtn?.addEventListener("click", addSampleContent);