A music player that connects to your cloud/distributed storage.
at v4 65 lines 1.7 kB view raw
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}