A music player that connects to your cloud/distributed storage.
at v4 63 lines 1.6 kB view raw
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);