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