1import{I as V}from"./CcPPHZck.js";import{B as A}from"./CRmEIWDb.js";import{s as g}from"./Bn99QnXs.js";import{e as k,r as n,c as x,o as b,a as t,g as B,b as u,h as s,i as p,t as f,w as E,K as v,d as G}from"#entry";import"./0f0XNADI.js";import"./C50x5zDf.js";import"./BkLtITBR.js";import"./OaRjpU2K.js";import"./BSMlXKon.js";const U={class:"container mx-auto p-4"},w={class:"space-y-4"},I={class:"text-sm text-gray-500"},N={class:"text-sm text-gray-500"},C={key:0,class:"mt-8"},P=["src"],Y=k({__name:"ai-music",setup(S){const i=n("128 BPM tech house drum loop"),l=n(30),a=n(100),d=n(!1),m=n("");g.config({credentials:"207e20ec-f6d1-4b5f-a9a6-7111392c8d91:5f9920c8070e4d3b04773c6d09f4f28e"});const y=async()=>{d.value=!0;try{const o=await g.subscribe("fal-ai/stable-audio",{input:{prompt:i.value,seconds_total:l.value,steps:a.value},logs:!0,onQueueUpdate:e=>{e.status==="IN_PROGRESS"&&(Array.isArray(e.logs),console.log("Update logs:",e.logs))}});if(o&&o.audio_file&&o.audio_file.url)m.value=o.audio_file.url,v({title:"Audio Generated",description:"Your audio has been successfully generated!"});else throw new Error("Invalid result structure")}catch(o){console.error("Error generating audio:",o),v({title:"Error",description:"Failed to generate audio. Please try again.",variant:"destructive"})}finally{d.value=!1}};return(o,e)=>{const c=V,_=A;return b(),x("div",U,[e[7]||(e[7]=t("h1",{class:"text-2xl font-bold mb-4"},"AI Music Generation",-1)),t("div",w,[t("div",null,[e[3]||(e[3]=t("label",{for:"prompt",class:"block text-sm font-medium text-gray-700"},"Prompt",-1)),u(c,{id:"prompt",modelValue:s(i),"onUpdate:modelValue":e[0]||(e[0]=r=>p(i)?i.value=r:null),placeholder:"Enter your music prompt",class:"mt-1"},null,8,["modelValue"])]),t("div",null,[e[4]||(e[4]=t("label",{for:"seconds",class:"block text-sm font-medium text-gray-700"},"Duration (seconds)",-1)),u(c,{id:"seconds",modelValue:s(l),"onUpdate:modelValue":e[1]||(e[1]=r=>p(l)?l.value=r:null),min:5,max:60,step:5,class:"mt-1"},null,8,["modelValue"]),t("span",I,f(s(l))+" seconds",1)]),t("div",null,[e[5]||(e[5]=t("label",{for:"steps",class:"block text-sm font-medium text-gray-700"},"Steps",-1)),u(c,{id:"steps",modelValue:s(a),"onUpdate:modelValue":e[2]||(e[2]=r=>p(a)?a.value=r:null),min:50,max:150,step:10,class:"mt-1"},null,8,["modelValue"]),t("span",N,f(s(a))+" steps",1)]),u(_,{onClick:y,disabled:s(d)},{default:E(()=>[G(f(s(d)?"Generating...":"Generate Audio"),1)]),_:1},8,["disabled"])]),s(m)?(b(),x("div",C,[e[6]||(e[6]=t("h2",{class:"text-xl font-semibold mb-2"},"Generated Audio",-1)),t("audio",{controls:"",src:s(m),class:"w-full"},null,8,P)])):B("",!0)])}}});export{Y as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.