PageSourceSearch

https://generatemusic.net/_next/static/chunks/f5fa831b7ad24902.js

js generatemusic.net collected 2026-10-06 12:50:57 UTC 47,631 bytes, 6 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,901017,e=>{"use strict";var s=e.i(466471),t=e.i(536355),r=e.i(884702),a=e.i(352162),i=e.i(6140),l="Progress",[n,o]=(0,a.createContextScope)(l),[c,d]=n(l),u=r.forwardRef((e,t)=>{var r,a;let{__scopeProgress:l,value:n=null,max:o,getValueLabel:d=g,...u}=e;(o||0===o)&&!f(o)&&console.error((r=`${o}`,`Invalid prop \`max\` of value \`${r}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let m=f(o)?o:100;null===n||v(n,m)||console.error((a=`${n}`,`Invalid prop \`value\` of value \`${a}\` supplied to \`Progress\`. The \`value\` prop must be:
2  - a positive number
3  - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
4  - \`null\` or \`undefined\` if the progress is indeterminate.
5
6Defaulting to \`null\`.`));let h=v(n,m)?n:null,j=x(h)?d(h,m):void 0;return(0,s.jsx)(c,{scope:l,value:h,max:m,children:(0,s.jsx)(i.Primitive.div,{"aria-valuemax":m,"aria-valuemin":0,"aria-valuenow":x(h)?h:void 0,"aria-valuetext":j,role:"progressbar","data-state":p(h,m),"data-value":h??void 0,"data-max":m,...u,ref:t})})});u.displayName=l;var m="ProgressIndicator",h=r.forwardRef((e,t)=>{let{__scopeProgress:r,...a}=e,l=d(m,r);return(0,s.jsx)(i.Primitive.div,{"data-state":p(l.value,l.max),"data-value":l.value??void 0,"data-max":l.max,...a,ref:t})});function g(e,s){return`${Math.round(e/s*100)}%`}function p(e,s){return null==e?"indeterminate":e===s?"complete":"loading"}function x(e){return"number"==typeof e}function f(e){return x(e)&&!isNaN(e)&&e>0}function v(e,s){return x(e)&&!isNaN(e)&&e<=s&&e>=0}h.displayName=m;var j=e.i(526683);function y(e){let r,a,i,l,n,o,c=(0,t.c)(12);c[0]!==e?({className:r,value:i,...a}=e,c[0]=e,c[1]=r,c[2]=a,c[3]=i):(r=c[1],a=c[2],i=c[3]),c[4]!==r?(l=(0,j.cn)("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",r),c[4]=r,c[5]=l):l=c[5];let d=`translateX(-${100-(i||0)}%)`;return c[6]!==d?(n=(0,s.jsx)(h,{"data-slot":"progress-indicator",className:"bg-primary h-full w-full flex-1 transition-all",style:{transform:d}}),c[6]=d,c[7]=n):n=c[7],c[8]!==a||c[9]!==l||c[10]!==n?(o=(0,s.jsx)(u,{"data-slot":"progress",className:l,...a,children:n}),c[8]=a,c[9]=l,c[10]=n,c[11]=o):o=c[11],o}e.s(["Progress",()=>y],901017)},22448,e=>{"use strict";var s=e.i(466471),t=e.i(884702),r=e.i(128686),r=r,a=e.i(71131),i=e.i(394673),l=e.i(910776),n=e.i(462297),o=e.i(709237),o=o,c=e.i(55871),d=e.i(283422),u=e.i(39973),m=e.i(623099),h=e.i(247835),g=e.i(779342),p=e.i(536355),x=e.i(550573),f=e.i(199978),v=e.i(511398),j=e.i(122913),y=e.i(422812),N=e.i(581682);function S(e){let t,r,a,l,n,o,c,d,u,m,g,S,I,_,T=(0,p.c)(60),{open:w,onOpenChange:E,requiredCredits:b,remainingCredits:C}=e,A=(0,h.useTranslations)("common.insufficient_credits"),O=(0,f.useRouter)(),k=(0,N.useMediaQuery)("(min-width: 768px)");T[0]!==E||T[1]!==O?(t=()=>{E(!1),O.push("/pricing")},T[0]=E,T[1]=O,T[2]=t):t=T[2];let M=t;T[3]===Symbol.for("react.memo_cache_sentinel")?(r=(0,s.jsx)("div",{className:"bg-destructive/10 flex h-16 w-16 items-center justify-center rounded-full",children:(0,s.jsx)(i.Coins,{className:"text-destructive h-8 w-8"})}),T[3]=r):r=T[3],T[4]!==C||T[5]!==b||T[6]!==A?(a=void 0!==b&&void 0!==C&&(0,s.jsxs)("div",{className:"text-muted-foreground text-center text-sm",children:[(0,s.jsxs)("p",{children:[A("required"),": ",(0,s.jsx)("span",{className:"font-semibold",children:b})]}),(0,s.jsxs)("p",{children:[A("remaining"),": ",(0,s.jsx)("span",{className:"font-semibold",children:C})]})]}),T[4]=C,T[5]=b,T[6]=A,T[7]=a):a=T[7],T[8]!==a?(l=(0,s.jsxs)("div",{className:"flex flex-col items-center gap-4 py-4",children:[r,a]}),T[8]=a,T[9]=l):l=T[9];let D=l;if(k){let e,t,r,a,i,l,n,o,c,d;return T[10]!==A?(e=A("title"),T[10]=A,T[11]=e):e=T[11],T[12]!==e?(t=(0,s.jsx)(j.DialogTitle,{className:"text-center",children:e}),T[12]=e,T[13]=t):t=T[13],T[14]!==A?(r=A("description"),T[14]=A,T[15]=r):r=T[15],T[16]!==r?(a=(0,s.jsx)(j.DialogDescription,{className:"text-center",children:r}),T[16]=r,T[17]=a):a=T[17],T[18]!==t||T[19]!==a?(i=(0,s.jsxs)(j.DialogHeader,{children:[t,a]}),T[18]=t,T[19]=a,T[20]=i):i=T[20],T[21]===Symbol.for("react.memo_cache_sentinel")?(l=(0,s.jsx)(x.Sparkles,{className:"mr-2 h-4 w-4"}),T[21]=l):l=T[21],T[22]!==A?(n=A("buy_credits"),T[22]=A,T[23]=n):n=T[23],T[24]!==M||T[25]!==n?(o=(0,s.jsx)(j.DialogFooter,{children:(0,s.jsxs)(v.Button,{onClick:M,className:"w-full",children:[l,n]})}),T[24]=M,T[25]=n,T[26]=o):o=T[26],T[27]!==D||T[28]!==o||T[29]!==i?(c=(0,s.jsxs)(j.DialogContent,{className:"sm:max-w-[400px]",children:[i,D,o]}),T[27]=D,T[28]=o,T[29]=i,T[30]=c):c=T[30],T[31]!==E||T[32]!==w||T[33]!==c?(d=(0,s.jsx)(j.Dialog,{open:w,onOpenChange:E,children:c}),T[31]=E,T[32]=w,T[33]=c,T[34]=d):d=T[34],d}return T[35]!==A?(n=A("title"),T[35]=A,T[36]=n):n=T[36],T[37]!==n?(o=(0,s.jsx)(y.DrawerTitle,{children:n}),T[37]=n,T[38]=o):o=T[38],T[39]!==A?(c=A("description"),T[39]=A,T[40]=c):c=T[40],T[41]!==c?(d=(0,s.jsx)(y.DrawerDescription,{children:c}),T[41]=c,T[42]=d):d=T[42],T[43]!==o||T[44]!==d?(u=(0,s.jsxs)(y.DrawerHeader,{className:"text-center",children:[o,d]}),T[43]=o,T[44]=d,T[45]=u):u=T[45],T[46]===Symbol.for("react.memo_cache_sentinel")?(m=(0,s.jsx)(x.Sparkles,{className:"mr-2 h-4 w-4"}),T[46]=m):m=T[46],T[47]!==A?(g=A("buy_credits"),T[47]=A,T[48]=g):g=T[48],T[49]!==M||T[50]!==g?(S=(0,s.jsx)(y.DrawerFooter,{className:"pt-4",children:(0,s.jsxs)(v.Button,{onClick:M,className:"w-full",children:[m,g]})}),T[49]=M,T[50]=g,T[51]=S):S=T[51],T[52]!==D||T[53]!==S||T[54]!==u?(I=(0,s.jsxs)(y.DrawerContent,{children:[u,D,S]}),T[52]=D,T[53]=S,T[54]=u,T[55]=I):I=T[55],T[56]!==E||T[57]!==w||T[58]!==I?(_=(0,s.jsx)(y.Drawer,{open:w,onOpenChange:E,children:I}),T[56]=E,T[57]=w,T[58]=I,T[59]=_):_=T[59],_}var I=e.i(24963),_=e.i(615978),T=e.i(686247),w=e.i(118621),E=e.i(273792),b=e.i(901017),C=e.i(534522),A=e.i(622491),O=e.i(791768),k=e.i(960568),M=e.i(528144),D=e.i(526683);class G{logRequest(e){}logResponse(e){}logError(e){}parseTaskResult(e){let s={status:e.status,songs:[],errorCode:null,errorMessage:null};if(e.taskInfo)try{let t=JSON.parse(e.taskInfo);s.songs=t.songs||[],s.errorCode=t.errorCode,s.errorMessage=t.errorMessage,t.status&&(s.status=this.mapInternalStatus(t.status))}catch(e){}return s}mapInternalStatus(e){return({PENDING:"pending",PROCESSING:"processing",TEXT_SUCCESS:"processing",FIRST_SUCCESS:"processing",SUCCESS:"success",FAILED:"failed"})[e]||"pending"}createSuccessResponse(e){return{code:0,message:"ok",data:e}}createErrorResponse(e){return{code:-1,message:e,data:{}}}}class P extends G{serviceName="MockMusicService";async generate(e){this.logRequest(e);try{let s=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:"music",provider:"mock",model:e.model,prompt:e.prompt,options:{style:e.options.style||"",title:e.options.title||"",lyrics:e.options.lyrics||"",customMode:e.options.customMode,instrumental:e.options.instrumental}})});if(!s.ok)throw Error(`Request failed with status: ${s.status}`);let t=await s.json();if(0!==t.code)throw Error(t.message||"Failed to generate music");let r={code:0,message:"ok",data:t.data};return this.logResponse(r),r}catch(e){return this.logError(e),this.createErrorResponse(e.message)}}async query(e){try{let s=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e.taskId})});if(!s.ok)throw Error(`Request failed with status: ${s.status}`);let t=await s.json();if(0!==t.code)throw Error(t.message||"Failed to query task");return{code:0,message:"ok",data:t.data}}catch(e){return this.logError(e),{code:-1,message:e.message,data:{}}}}}class U extends G{serviceName="SunoMusicService";async generate(e){this.logRequest(e);try{let s=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:"music",provider:e.provider,model:e.model,prompt:e.prompt,options:{style:e.options.style||"",title:e.options.title||"",lyrics:e.options.lyrics||"",customMode:e.options.customMode,instrumental:e.options.instrumental}})});if(!s.ok)throw Error(`Request failed with status: ${s.status}`);let t=await s.json();if(0!==t.code)throw Error(t.message||"Failed to generate music");let r={code:0,message:"ok",data:t.data};return this.logResponse(r),r}catch(e){return this.logError(e),this.createErrorResponse(e.message)}}async query(e){try{let s=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e.taskId})});if(!s.ok)throw Error(`Request failed with status: ${s.status}`);let t=await s.json();if(0!==t.code)throw Error(t.message||"Failed to query task");return{code:0,message:"ok",data:t.data}}catch(e){return this.logError(e),{code:-1,message:e.message,data:{}}}}}class V{static instance;services=new Map;constructor(){this.registerServices()}static getInstance(){return V.instance||(V.instance=new V),V.instance}registerServices(){this.services.set("mock",()=>new P),this.services.set("suno",()=>new U)}createService(e){let s=this.services.get(e||"suno");return s?s():new U}getAvailableProviders(){return Array.from(this.services.keys())}registerService(e,s){this.services.set(e,s)}}function L({className:e,srOnlyTitle:p}){(0,m.useLocale)();let x=(0,h.useTranslations)("ai.music"),{user:f,isCheckSign:j,setIsShowSignModal:y,fetchUserCredits:N}=(0,k.useAppContext)(),[G,P]=(0,t.useState)("kie"),U="V5_5",[L,F]=(0,t.useState)(!1),[R,$]=(0,t.useState)(""),[X,B]=(0,t.useState)(""),[q,z]=(0,t.useState)(!1),[H,J]=(0,t.useState)(""),[W,K]=(0,t.useState)(""),[Q,Z]=(0,t.useState)(!1),[Y,ee]=(0,t.useState)(null),[es,et]=(0,t.useState)(0),[er,ea]=(0,t.useState)([]),[ei,el]=(0,t.useState)(null),{play:en,currentTrack:eo,isPlaying:ec}=(0,M.useMusicPlayer)(),[ed,eu]=(0,t.useState)(!1),[em,eh]=(0,t.useState)(!1),eg=(0,t.useMemo)(()=>{var e;return e=O.env.NEXT_PUBLIC_MUSIC_SERVICE_PROVIDER||"suno",V.getInstance().createService(e)},[]);(0,t.useEffect)(()=>{eh(!0)},[]);let ep=async e=>{try{var s;if(ei&&Date.now()-ei>6e5)return et(0),Z(!1),el(null),g.toast.error("Generate music timed out. Please try again."),!0;let t=await eg.query({taskId:e});if(0!==t.code)throw Error(t.message);let r=t.data,a=eg.parseTaskResult(r);if(a.errorCode||a.errorMessage)throw Error(a.errorMessage||"Unknown error");let i=a.songs.map(e=>({id:e.id,title:e.title,duration:e.duration,audioUrl:e.audioUrl,imageUrl:e.imageUrl,artist:"AI Generated",style:e.tags,status:e.audioUrl?"ready":"generating",prompt:e.prompt,lyrics:e.lyrics||e.prompt}));if("pending"===r.status)return et(10),!1;if("processing"===(s=r.status)||"TEXT_SUCCESS"===s||"FIRST_SUCCESS"===s){et(20);let e=a.songs.some(e=>e.imageUrl),s=a.songs.some(e=>e.audioUrl);if(e&&!s)return et(60),ea(i),!1;return s&&(et(85),ea(i)),!1}if("failed"===r.status)return et(0),Z(!1),el(null),g.toast.error("Generate music failed: "+a.errorMessage),N(),!0;if("success"===r.status)return ea(i),et(100),Z(!1),el(null),!0;return et(e=>Math.min(e+3,80)),!1}catch(e){return Z(!1),et(0),el(null),g.toast.error("Create song failed: "+e.message),N(),!0}};(0,t.useEffect)(()=>
6{if(Y&&Q){let e=setInterval(async()=>{await ep(Y)&&clearInterval(e)},1e4);return()=>clearInterval(e)}},[Y,Q,ei]);let ex=async()=>{if(!f)return void y(!0);if(!f.credits||f.credits.remainingCredits<10)return void eu(!0);if(!G||!U)return void g.toast.error("Invalid provider or model");if(L){if(!R||!X)return void g.toast.error("Please enter title and style");if(!q&&!H)return void g.toast.error("Please enter lyrics")}else if(!W)return void g.toast.error("Please enter prompt");Z(!0),et(10),ea([]),el(Date.now());try{let e=await eg.generate({provider:G,model:U,prompt:L?void 0:W,options:{customMode:L,instrumental:q,style:L?X:void 0,title:L?R:void 0,lyrics:L&&!q?H:void 0}});if(0!==e.code)throw Error(e.message||"Failed to generate music");let{id:s}=e.data;if(!s)throw Error("Failed to generate music");await N(),ee(s),et(20)}catch(e){g.toast.error("Failed to generate music: "+e.message),Z(!1),et(0),el(null)}},ef=e=>{if(null==e)return"--:--";let s=Math.floor(e/60),t=Math.floor(e%60);return`${s}:${t.toString().padStart(2,"0")}`},ev=async e=>{if(e?.audioUrl)try{g.toast.info(x("generator.downloading"));let s=await fetch(e.audioUrl);if(!s.ok)throw Error("Failed to fetch audio file");let t=await s.blob(),r=URL.createObjectURL(t),a=document.createElement("a");a.href=r,a.download=`${e.title}.mp3`,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(r),100),g.toast.success(x("generator.download_success"))}catch(e){g.toast.error(x("generator.download_failed"))}};return(0,s.jsxs)("section",{id:"create",className:(0,D.cn)("pb-16 md:pb-24",e),children:[p&&(0,s.jsx)("h2",{className:"sr-only",children:p}),(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-2",children:[(0,s.jsxs)(T.Card,{children:[(0,s.jsx)(T.CardHeader,{children:(0,s.jsx)(T.CardTitle,{className:"flex items-center gap-2",children:x("generator.title")})}),(0,s.jsx)(T.CardContent,{className:"space-y-6",children:(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(C.Switch,{checked:L,onCheckedChange:F}),(0,s.jsx)(E.Label,{children:x("generator.form.custom_mode")})]})}),(0,s.jsxs)(T.CardContent,{className:"space-y-6",children:[L&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(E.Label,{htmlFor:"title",children:x("generator.form.title")}),(0,s.jsx)(w.Input,{id:"title",placeholder:x("generator.form.title_placeholder"),value:R,onChange:e=>$(e.target.value)})]}),L&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(E.Label,{htmlFor:"style",children:x("generator.form.style")}),(0,s.jsx)(A.Textarea,{id:"style",placeholder:x("generator.form.style_placeholder"),value:X,onChange:e=>B(e.target.value),className:"min-h-24"}),(0,s.jsxs)("div",{className:"text-muted-foreground text-right text-sm",children:[X.length,"/1000"]})]}),!L&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(E.Label,{htmlFor:"prompt",children:x("generator.form.prompt")}),(0,s.jsx)(A.Textarea,{id:"prompt",placeholder:x("generator.form.prompt_placeholder"),value:W,onChange:e=>K(e.target.value),className:"min-h-32",required:!0})]}),(0,s.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,s.jsx)(C.Switch,{id:"instrumental",checked:q,onCheckedChange:z}),(0,s.jsx)(E.Label,{htmlFor:"instrumental",children:x("generator.form.instrumental")})]}),L&&!q&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(E.Label,{htmlFor:"lyrics",children:x("generator.form.lyrics")}),(0,s.jsx)(A.Textarea,{id:"lyrics",placeholder:x("generator.form.lyrics_placeholder"),value:H,onChange:e=>J(e.target.value),className:"min-h-32"})]}),em?j?(0,s.jsxs)(v.Button,{className:"w-full",size:"lg",children:[(0,s.jsx)(n.Loader2,{className:"size-4 animate-spin"})," ",x("generator.loading")]}):f?(0,s.jsx)(v.Button,{onClick:ex,disabled:Q,className:"w-full",size:"lg",children:Q?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),x("generator.generating")]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.default,{className:"mr-2 h-4 w-4"}
6),x("generator.generate"),(0,s.jsxs)("span",{className:"ml-2 flex items-center gap-1",children:[(0,s.jsx)(i.Coins,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"text-sm font-medium",children:10})]})]})}):(0,s.jsxs)(v.Button,{className:"w-full",size:"lg",onClick:()=>y(!0),children:[(0,s.jsx)(u.User,{className:"mr-2 h-4 w-4"})," ",x("generator.sign_in_to_generate")]}):(0,s.jsxs)(v.Button,{className:"w-full",size:"lg",disabled:!0,children:[(0,s.jsx)(o.default,{className:"mr-2 h-4 w-4"}),x("generator.generate"),(0,s.jsxs)("span",{className:"ml-2 flex items-center gap-1",children:[(0,s.jsx)(i.Coins,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"text-sm font-medium",children:10})]})]}),Q&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,s.jsx)("span",{children:x("generator.generation_progress")}),(0,s.jsxs)("span",{children:[es,"%"]})]}),(0,s.jsx)(b.Progress,{value:es,className:"w-full"}),(0,s.jsx)("p",{className:"text-muted-foreground text-center text-sm",children:x("generator.time_cost")})]})]})]}),(0,s.jsxs)(T.Card,{children:[(0,s.jsx)(T.CardHeader,{children:(0,s.jsxs)(T.CardTitle,{className:"flex items-center gap-2",children:[(0,s.jsx)(o.default,{className:"h-5 w-5"}),x("generator.generated_song")]})}),(0,s.jsx)(T.CardContent,{children:er.length>0?(0,s.jsx)("div",{className:"space-y-4",children:er.map((e,t)=>{let i=eo?.id===e.id&&ec;return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"flex gap-4",children:[(0,s.jsxs)("div",{className:"relative flex-shrink-0",children:[(0,s.jsx)("div",{className:"bg-muted relative h-20 w-20 overflow-hidden rounded-lg",children:e.imageUrl?(0,s.jsx)(I.LazyImage,{src:e.imageUrl,alt:e.title,fill:!0,className:"object-cover"}):(0,s.jsx)("div",{className:"from-primary/20 to-accent/20 flex h-full w-full items-center justify-center bg-gradient-to-br",children:(0,s.jsx)(o.default,{className:"text-muted-foreground h-6 w-6"})})}),e.audioUrl&&(0,s.jsx)(v.Button,{size:"sm",variant:"secondary",className:"absolute top-6 right-6 h-8 w-8 rounded-full p-0 shadow-lg",onClick:()=>(e=>{if(!e?.audioUrl)return;let s={id:e.id,title:e.title,duration:ef(e.duration),audioUrl:e.audioUrl,imageUrl:e.imageUrl||"/imgs/features/music.png",tags:e.style?e.style.split(",").map(e=>e.trim()):[],lyrics:e.lyrics},t=er.filter(e=>e.audioUrl).map(e=>({id:e.id,title:e.title,duration:ef(e.duration),audioUrl:e.audioUrl,imageUrl:e.imageUrl||"/imgs/features/music.png",tags:e.style?e.style.split(",").map(e=>e.trim()):[],lyrics:e.lyrics}));0===t.length&&t.push(s),en(s,t)})(e),children:i?(0,s.jsx)(c.Pause,{className:"h-3 w-3"}):(0,s.jsx)(d.Play,{className:"h-3 w-3"})})]}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("h3",{className:"text-foreground mb-1 text-lg font-semibold",children:e.title}),(0,s.jsxs)("div",{className:"text-muted-foreground mb-2 flex items-center gap-2 text-sm",children:[(0,s.jsx)(u.User,{className:"h-4 w-4"}),(0,s.jsx)("span",{children:e.artist}),(0,s.jsx)(a.Clock,{className:"ml-2 h-4 w-4"}),(0,s.jsx)("span",{children:ef(e.duration)})]}),(0,s.jsx)("div",{className:"mb-2 line-clamp-1 flex flex-wrap gap-1",children:e.style&&e.style.split(",").slice(0,2).map((e,t)=>(0,s.jsx)(_.Badge,{variant:"default",className:"text-xs",children:e.trim()},t))}),(0,s.jsx)("div",{className:"flex items-center gap-2 text-sm",children:e.audioUrl?(0,s.jsxs)("div",{className:"flex items-center gap-2 text-green-600",children:[(0,s.jsx)(r.default,{className:"h-4 w-4"}),(0,s.jsx)("span",{children:x("generator.ready_to_play")})]}):(0,s.jsxs)("div",{className:"flex items-center gap-2 text-yellow-600",children:[(0,s.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin"}),(0,s.jsx)("span",{children:x("generator.audio_generating")})]})})]}),(0,s.jsx)("div",{className:"flex flex-col gap-2",children:e.audioUrl&&(0,s.jsx)(v.Button,{variant:"outline",size:"sm",onClick:()=>ev(e),children:(0,s.jsx)(l.Download,{className:"h-4 w-4"})})})]}),t<er.length-1&&(0,s.jsx)("div",{className:"border-t"})]},e.id)})}):(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,s.jsx)("div",{className:"bg-muted mb-4 flex h-16 w-16 items-center justify-center rounded-full",children:(0,s.jsx)(o.default,{className:"text-muted-foreground h-8 w-8"})}),(0,s.jsx)("p",{className:"text-muted-foreground mb-2",children:Q?x("generator.generating_song"):x("generator.no_song_generated")})]})})]})]})})}),(0,s.jsx)(S,{open:ed,onOpenChange:eu,requiredCredits:10,remainingCredits:f?.credits?.remainingCredits??0})]})}e.s(["MusicGenerator",()=>L],22448)},697743,293966,229675,e=>{"use strict";var s,t,r=e.i(109750);
6e.s(["CreditCard",()=>r.default],697743);var a=((s={}).MUSIC="music",s.IMAGE="image",s.VIDEO="video",s.TEXT="text",s.SPEECH="speech",s),i=((t={}).PENDING="pending",t.PROCESSING="processing",t.SUCCESS="success",t.FAILED="failed",t.CANCELED="canceled",t);e.s(["AIMediaType",()=>a,"AITaskStatus",()=>i],293966);let l={TEXT_TO_IMAGE:"text-to-image",IMAGE_TO_IMAGE:"image-to-image",FACE_SWAP:"face-swap",HEAD_SWAP:"head-swap",TEXT_TO_VIDEO:"text-to-video",IMAGE_TO_VIDEO:"image-to-video",VIDEO_TO_VIDEO:"video-to-video",TEXT_TO_MUSIC:"text-to-music"},n={[l.TEXT_TO_IMAGE]:2,[l.IMAGE_TO_IMAGE]:4,[l.FACE_SWAP]:5,[l.HEAD_SWAP]:10,[l.TEXT_TO_VIDEO]:6,[l.IMAGE_TO_VIDEO]:8,[l.VIDEO_TO_VIDEO]:10,[l.TEXT_TO_MUSIC]:10};function o(e){return n[e]??2}l.TEXT_TO_IMAGE,l.IMAGE_TO_IMAGE,l.FACE_SWAP,l.HEAD_SWAP,l.TEXT_TO_VIDEO,l.IMAGE_TO_VIDEO,l.VIDEO_TO_VIDEO,l.TEXT_TO_MUSIC,e.s(["AIScene",0,l,"getSceneCreditCost",()=>o],229675)},37181,e=>{"use strict";var s=e.i(466471),t=e.i(884702),r=e.i(697743),a=e.i(910776),i=e.i(169543),l=e.i(462297),n=e.i(550573),o=e.i(39973),c=e.i(247835),d=e.i(779342),u=e.i(199978),m=e.i(293966);e.i(741820);var h=e.i(561444),g=e.i(24963),p=e.i(511398),x=e.i(686247),f=e.i(273792),v=e.i(901017),j=e.i(638678),y=e.i(330771),N=e.i(622491),S=e.i(229675),I=e.i(960568),_=e.i(526683);let T=[{value:"google/nano-banana-pro",label:"Nano Banana Pro",provider:"replicate",scenes:[S.AIScene.TEXT_TO_IMAGE,S.AIScene.IMAGE_TO_IMAGE]},{value:"bytedance/seedream-4",label:"Seedream 4",provider:"replicate",scenes:[S.AIScene.TEXT_TO_IMAGE,S.AIScene.IMAGE_TO_IMAGE]},{value:"fal-ai/nano-banana-pro",label:"Nano Banana Pro",provider:"fal",scenes:[S.AIScene.TEXT_TO_IMAGE]},{value:"fal-ai/nano-banana-pro/edit",label:"Nano Banana Pro",provider:"fal",scenes:[S.AIScene.IMAGE_TO_IMAGE]},{value:"fal-ai/bytedance/seedream/v4/edit",label:"Seedream 4",provider:"fal",scenes:[S.AIScene.IMAGE_TO_IMAGE]},{value:"fal-ai/z-image/turbo",label:"Z-Image Turbo",provider:"fal",scenes:[S.AIScene.TEXT_TO_IMAGE]},{value:"fal-ai/flux-2-flex",label:"Flux 2 Flex",provider:"fal",scenes:[S.AIScene.TEXT_TO_IMAGE]},{value:"gemini-3-pro-image-preview",label:"Gemini 3 Pro Image Preview",provider:"gemini",scenes:[S.AIScene.TEXT_TO_IMAGE,S.AIScene.IMAGE_TO_IMAGE]},{value:"nano-banana-pro",label:"Nano Banana Pro",provider:"kie",scenes:[S.AIScene.TEXT_TO_IMAGE,S.AIScene.IMAGE_TO_IMAGE]}],w=[{value:"replicate",label:"Replicate"},{value:"fal",label:"Fal"},{value:"gemini",label:"Gemini"},{value:"kie",label:"Kie"}];function E(e){if(!e)return null;try{return JSON.parse(e)}catch(e){return null}}function b(e){if(!e)return[];let s=e.output??e.images??e.data;if(!s)return[];if("string"==typeof s)return[s];if(Array.isArray(s))return s.flatMap(e=>{if(!e)return[];if("string"==typeof e)return[e];if("object"==typeof e){let s=e.url??e.uri??e.image??e.src??e.imageUrl;return"string"==typeof s?[s]:[]}return[]}).filter(Boolean);if("object"==typeof s){let e=s.url??s.uri??s.image??s.src??s.imageUrl;if("string"==typeof e)return[e]}return[]}function C({allowMultipleImages:e=!0,maxImages:C=9,maxSizeMB:A=5,srOnlyTitle:O,className:k}){let M=(0,c.useTranslations)("ai.image.generator"),[D,G]=(0,t.useState)(S.AIScene.TEXT_TO_IMAGE),[P,U]=(0,t.useState)((0,S.getSceneCreditCost)(S.AIScene.TEXT_TO_IMAGE)),[V,L]=(0,t.useState)(w[0]?.value??""),[F,R]=(0,t.useState)(T[0]?.value??""),[$,X]=(0,t.useState)(""),[B,q]=(0,t.useState)([]),[z,H]=(0,t.useState)([]),[J,W]=(0,t.useState)([]),[K,Q]=(0,t.useState)(!1),[Z,Y]=(0,t.useState)(0),[ee,es]=(0,t.useState)(null),[et,er]=(0,t.useState)(null),[ea,ei]=(0,t.useState)(null),[el,en]=(0,t.useState)(null),[eo,ec]=(0,t.useState)(!1),{user:ed,isCheckSign:eu,setIsShowSignModal:em,fetchUserCredits:eh}=(0,I.useAppContext)();(0,t.useEffect)(()=>{ec(!0)},[]);let eg=$.trim().length,ep=ed?.credits?.remainingCredits??0,ex=eg>2e3,ef=D===S.AIScene.TEXT_TO_IMAGE,ev=(0,t.useMemo)(()=>{if(!ea)return"";switch(ea){case m.AITaskStatus.PENDING:return"Waiting for the model to start";case m.AITaskStatus.PROCESSING:return"Generating your image...";case m.AITaskStatus.SUCCESS:return"Image generation completed";case m.AITaskStatus.FAILED:return"Generation failed";default:return""}},[ea]),ej=(0,t.useCallback)(e=>{q(e),H(e.filter(e=>"uploaded"===e.status&&e.url).map(e=>e.url))},[]),ey=(0,t.useMemo)(()=>B.some(e=>"uploading"===e.status),[B]),eN=(0,t.useMemo)(()=>B.some(e=>"error"===e.status),[B]),eS=(0,t.useCallback)(()=>{Q(!1),Y(0),es(null),er(null),ei(null)},[]),eI=(0,t.useCallback)(async e=>{try{if(et&&Date.now()-et>18e4)return eS(),d.toast.error("Image generation timed out. Please try again."),!0;let s=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!s.ok)throw Error(`request failed with status: ${s.status}`);let{code:t,message:r,data:a}=await s.json();if(0!==t)throw Error(r||"Query task failed");let i=a.status;ei(i);let l=E(a.taskInfo),n=b(l);if(i===m.AITaskStatus.PENDING)return Y(e=>Math.max(e,20)),!1;if(i===m.AITaskStatus.PROCESSING)return n.length>0?(W(n.map((e,s)=>({id:`${a.id}-${s}`,url:e,provider:a.provider,model:a.model,prompt:a.prompt??void 0}))),Y(e=>Math.max(e,85))):Y(e=>
6Math.min(e+10,80)),!1;if(i===m.AITaskStatus.SUCCESS)return 0===n.length?d.toast.error("The provider returned no images. Please retry."):(W(n.map((e,s)=>({id:`${a.id}-${s}`,url:e,provider:a.provider,model:a.model,prompt:a.prompt??void 0}))),d.toast.success("Image generated successfully")),Y(100),eS(),!0;if(i===m.AITaskStatus.FAILED){let e=l?.errorMessage||"Generate image failed";return d.toast.error(e),eS(),eh(),!0}return Y(e=>Math.min(e+5,95)),!1}catch(e){return d.toast.error(`Query task failed: ${e.message}`),eS(),eh(),!0}},[et,eS]);(0,t.useEffect)(()=>{if(!ee||!K)return;let e=!1;(async()=>{!ee||await eI(ee)&&(e=!0)})();let s=setInterval(async()=>{e||!ee?clearInterval(s):await eI(ee)&&clearInterval(s)},5e3);return()=>{e=!0,clearInterval(s)}},[ee,K,eI]);let e_=async()=>{if(!ed)return void em(!0);if(ep<P)return void d.toast.error("Insufficient credits. Please top up to keep creating.");let e=$.trim();if(!e)return void d.toast.error("Please enter a prompt before generating.");if(!V||!F)return void d.toast.error("Provider or model is not configured correctly.");if(!ef&&0===z.length)return void d.toast.error("Please upload reference images before generating.");Q(!0),Y(15),ei(m.AITaskStatus.PENDING),W([]),er(Date.now());try{let s={};ef||(s.image_input=z);let t=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:m.AIMediaType.IMAGE,scene:ef?S.AIScene.TEXT_TO_IMAGE:S.AIScene.IMAGE_TO_IMAGE,provider:V,model:F,prompt:e,options:s})});if(!t.ok)throw Error(`request failed with status: ${t.status}`);let{code:r,message:a,data:i}=await t.json();if(0!==r)throw Error(a||"Failed to create an image task");let l=i?.id;if(!l)throw Error("Task id missing in response");if(i.status===m.AITaskStatus.SUCCESS&&i.taskInfo){let s=E(i.taskInfo),t=b(s);if(t.length>0){W(t.map((s,t)=>({id:`${l}-${t}`,url:s,provider:V,model:F,prompt:e}))),d.toast.success("Image generated successfully"),Y(100),eS(),await eh();return}}es(l),Y(25),await eh()}catch(e){d.toast.error(`Failed to generate image: ${e.message}`),eS()}},eT=async e=>{if(e.url)try{en(e.id);let s=await fetch(e.url);if(!s.ok)throw Error("Failed to fetch image");let t=await s.blob(),r=URL.createObjectURL(t),a=document.createElement("a");a.href=r,a.download=`${e.id}.png`,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(r),200),d.toast.success("Image downloaded")}catch(e){d.toast.error("Failed to download image")}finally{en(null)}};return(0,s.jsx)("section",{className:(0,_.cn)("py-16 md:py-24",k),children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[(0,s.jsxs)(x.Card,{children:[(0,s.jsxs)(x.CardHeader,{children:[O&&(0,s.jsx)("h2",{className:"sr-only",children:O}),(0,s.jsx)(x.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:M("title")})]}),(0,s.jsxs)(x.CardContent,{className:"space-y-6 pb-8",children:[(0,s.jsx)(y.Tabs,{value:D,onValueChange:e=>{G(e);let s=T.filter(s=>s.scenes.includes(e)&&s.provider===V);s.length>0?R(s[0].value):R(""),U((0,S.getSceneCreditCost)(e))},children:(0,s.jsxs)(y.TabsList,{className:"bg-primary/10 grid w-full grid-cols-2",children:[(0,s.jsx)(y.TabsTrigger,{value:S.AIScene.TEXT_TO_IMAGE,children:M("tabs.text-to-image")}),(0,s.jsx)(y.TabsTrigger,{value:S.AIScene.IMAGE_TO_IMAGE,children:M("tabs.image-to-image")})]})}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(f.Label,{children:M("form.provider")}),(0,s.jsxs)(j.Select,{value:V,onValueChange:e=>{L(e);let s=T.filter(s=>s.scenes.includes(D)&&s.provider===e);s.length>0?R(s[0].value):R("")},children:[(0,s.jsx)(j.SelectTrigger,{className:"w-full",children:(0,s.jsx)(j.SelectValue,{placeholder:M("form.select_provider")})}),(0,s.jsx)(j.SelectContent,{children:w.map(e=>(0,s.jsx)(j.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(f.Label,{children:M("form.model")}),(0,s.jsxs)(j.Select,{value:F,onValueChange:R,children:[(0,s.jsx)(j.SelectTrigger,{className:"w-full",children:(0,s.jsx)(j.SelectValue,{placeholder:M("form.select_model")})}),(0,s.jsx)(j.SelectContent,{children:T.filter(e=>e.scenes.includes(D)&&e.provider===V).map(e=>(0,s.jsx)(j.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),!ef&&(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsx)(h.ImageUploader,{title:M("form.reference_image"),allowMultiple:e,maxImages:e?C:1,maxSizeMB:A,onChange:ej,emptyHint:M("form.reference_image_placeholder")}),eN&&(0,s.jsx)("p",{className:"text-destructive text-xs",children:M("form.some_images_failed_to_upload")})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(f.Label,{htmlFor:"image-prompt",children:M("form.prompt")}),(0,s.jsx)(N.Textarea,{id:"image-prompt",value:$,onChange:e=>X(e.target.value),placeholder:M("form.prompt_placeholder"),className:"min-h-32"}),(0,s.jsxs)("div",{className:"text-muted-foreground flex items-center justify-between text-xs",children:[(0,s.jsxs)("span",{children:[eg," / ",2e3]}),ex&&(0,s.jsx)("span",{className:"text-destructive",children:M("form.prompt_too_long")})]})]}),eo?eu?(0,s.jsxs)(p.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,s.jsx)(l.L
6oader2,{className:"mr-2 h-4 w-4 animate-spin"}),M("checking_account")]}):ed?(0,s.jsx)(p.Button,{size:"lg",className:"w-full",onClick:e_,disabled:K||!$.trim()||ex||ey||eN,children:K?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),M("generating")]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.Sparkles,{className:"mr-2 h-4 w-4"}),M("generate")]})}):(0,s.jsxs)(p.Button,{size:"lg",className:"w-full",onClick:()=>em(!0),children:[(0,s.jsx)(o.User,{className:"mr-2 h-4 w-4"}),M("sign_in_to_generate")]}):(0,s.jsxs)(p.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,s.jsx)(l.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),M("loading")]}),eo?ed&&ep>0?(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{className:"text-primary",children:M("credits_cost",{credits:P})}),(0,s.jsx)("span",{children:M("credits_remaining",{credits:ep})})]}):(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{className:"text-primary",children:M("credits_cost",{credits:P})}),(0,s.jsx)("span",{children:M("credits_remaining",{credits:ep})})]}),(0,s.jsx)(u.Link,{href:"/pricing",children:(0,s.jsxs)(p.Button,{variant:"outline",className:"w-full",size:"lg",children:[(0,s.jsx)(r.CreditCard,{className:"mr-2 h-4 w-4"}),M("buy_credits")]})})]}):(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{className:"text-primary",children:M("credits_cost",{credits:P})}),(0,s.jsx)("span",{children:M("credits_remaining",{credits:0})})]}),K&&(0,s.jsxs)("div",{className:"space-y-2 rounded-lg border p-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{children:M("progress")}),(0,s.jsxs)("span",{children:[Z,"%"]})]}),(0,s.jsx)(v.Progress,{value:Z}),ev&&(0,s.jsx)("p",{className:"text-muted-foreground text-center text-xs",children:ev})]})]})]}),(0,s.jsxs)(x.Card,{children:[(0,s.jsx)(x.CardHeader,{children:(0,s.jsxs)(x.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:[(0,s.jsx)(i.ImageIcon,{className:"h-5 w-5"}),M("generated_images")]})}),(0,s.jsx)(x.CardContent,{className:"pb-8",children:J.length>0?(0,s.jsx)("div",{className:1===J.length?"grid grid-cols-1 gap-6":"grid gap-6 sm:grid-cols-2",children:J.map(e=>(0,s.jsx)("div",{className:"space-y-3",children:(0,s.jsxs)("div",{className:1===J.length?"relative overflow-hidden rounded-lg border":"relative aspect-square overflow-hidden rounded-lg border",children:[(0,s.jsx)(g.LazyImage,{src:e.url,alt:e.prompt||"Generated image",className:1===J.length?"h-auto w-full":"h-full w-full object-cover"}),(0,s.jsx)("div",{className:"absolute right-2 bottom-2 flex justify-end text-sm",children:(0,s.jsx)(p.Button,{size:"sm",variant:"ghost",className:"ml-auto",onClick:()=>eT(e),disabled:el===e.id,children:el===e.id?(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(l.Loader2,{className:"h-4 w-4 animate-spin"})}):(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(a.Download,{className:"h-4 w-4"})})})})]})},e.id))}):(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,s.jsx)("div",{className:"bg-muted mb-4 flex h-16 w-16 items-center justify-center rounded-full",children:(0,s.jsx)(i.ImageIcon,{className:"text-muted-foreground h-10 w-10"})}),(0,s.jsx)("p",{className:"text-muted-foreground",children:M(K?"ready_to_generate":"no_images_generated")})]})})]})]})})})})}e.s(["ImageGenerator",()=>C])},548728,e=>{"use strict";var s=e.i(466471),t=e.i(884702),r=e.i(697743),a=e.i(910776),i=e.i(462297),l=e.i(550573),n=e.i(39973),o=e.i(292909),o=o,c=e.i(247835),d=e.i(779342),u=e.i(199978),m=e.i(293966);e.i(741820);var h=e.i(561444),g=e.i(511398),p=e.i(686247),x=e.i(273792),f=e.i(901017),v=e.i(638678),j=e.i(330771),y=e.i(622491),N=e.i(229675),S=e.i(960568);let I=[{value:"google/veo-3.1",label:"Veo 3.1",provider:"replicate",scenes:[N.AIScene.TEXT_TO_VIDEO,N.AIScene.IMAGE_TO_VIDEO]},{value:"openai/sora-2",label:"Sora 2",provider:"replicate",scenes:[N.AIScene.TEXT_TO_VIDEO,N.AIScene.IMAGE_TO_VIDEO]},{value:"fal-ai/veo3",label:"Veo 3",provider:"fal",scenes:[N.AIScene.TEXT_TO_VIDEO]}
6,{value:"fal-ai/wan-pro/image-to-video",label:"Wan Pro",provider:"fal",scenes:[N.AIScene.IMAGE_TO_VIDEO]},{value:"fal-ai/kling-video/o1/video-to-video/edit",label:"Kling Video O1",provider:"fal",scenes:[N.AIScene.VIDEO_TO_VIDEO]},{value:"sora-2-pro-image-to-video",label:"Sora 2 Pro",provider:"kie",scenes:[N.AIScene.IMAGE_TO_VIDEO]},{value:"sora-2-pro-text-to-video",label:"Sora 2 Pro",provider:"kie",scenes:[N.AIScene.TEXT_TO_VIDEO]}],_=[{value:"replicate",label:"Replicate"},{value:"fal",label:"Fal"},{value:"kie",label:"Kie"}];function T(e){if(!e)return null;try{return JSON.parse(e)}catch(e){return null}}function w(e){if(!e)return[];let s=e.videos;if(s&&Array.isArray(s))return s.map(e=>e?"string"==typeof e?e:"object"==typeof e?e.url??e.uri??e.video??e.src??e.videoUrl:null:null).filter(Boolean);let t=e.output??e.video??e.data;if(!t)return[];if("string"==typeof t)return[t];if(Array.isArray(t))return t.flatMap(e=>{if(!e)return[];if("string"==typeof e)return[e];if("object"==typeof e){let s=e.url??e.uri??e.video??e.src??e.videoUrl;return"string"==typeof s?[s]:[]}return[]}).filter(Boolean);if("object"==typeof t){let e=t.url??t.uri??t.video??t.src??t.videoUrl;if("string"==typeof e)return[e]}return[]}function E({maxSizeMB:e=50,srOnlyTitle:E}){let b=(0,c.useTranslations)("ai.video.generator"),[C,A]=(0,t.useState)(N.AIScene.TEXT_TO_VIDEO),[O,k]=(0,t.useState)((0,N.getSceneCreditCost)(N.AIScene.TEXT_TO_VIDEO)),[M,D]=(0,t.useState)(_[0]?.value??""),[G,P]=(0,t.useState)(I[0]?.value??""),[U,V]=(0,t.useState)(""),[L,F]=(0,t.useState)([]),[R,$]=(0,t.useState)([]),[X,B]=(0,t.useState)(""),[q,z]=(0,t.useState)([]),[H,J]=(0,t.useState)(!1),[W,K]=(0,t.useState)(0),[Q,Z]=(0,t.useState)(null),[Y,ee]=(0,t.useState)(null),[es,et]=(0,t.useState)(null),[er,ea]=(0,t.useState)(null),[ei,el]=(0,t.useState)(!1),{user:en,isCheckSign:eo,setIsShowSignModal:ec,fetchUserCredits:ed}=(0,S.useAppContext)();(0,t.useEffect)(()=>{el(!0)},[]);let eu=U.trim().length,em=en?.credits?.remainingCredits??0,eh=eu>2e3,eg=C===N.AIScene.TEXT_TO_VIDEO,ep=C===N.AIScene.IMAGE_TO_VIDEO,ex=C===N.AIScene.VIDEO_TO_VIDEO,ef=(0,t.useMemo)(()=>{if(!es)return"";switch(es){case m.AITaskStatus.PENDING:return"Waiting for the model to start";case m.AITaskStatus.PROCESSING:return"Generating your video...";case m.AITaskStatus.SUCCESS:return"Video generation completed";case m.AITaskStatus.FAILED:return"Generation failed";default:return""}},[es]),ev=(0,t.useCallback)(e=>{F(e),$(e.filter(e=>"uploaded"===e.status&&e.url).map(e=>e.url))},[]),ej=(0,t.useMemo)(()=>L.some(e=>"uploading"===e.status),[L]),ey=(0,t.useMemo)(()=>L.some(e=>"error"===e.status),[L]),eN=(0,t.useCallback)(()=>{J(!1),K(0),Z(null),ee(null),et(null)},[]),eS=(0,t.useCallback)(async e=>{try{if(Y&&Date.now()-Y>6e5)return eN(),d.toast.error("Video generation timed out. Please try again."),!0;let s=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!s.ok)throw Error(`request failed with status: ${s.status}`);let{code:t,message:r,data:a}=await s.json();if(0!==t)throw Error(r||"Query task failed");let i=a.status;et(i);let l=T(a.taskInfo),n=w(l);if(i===m.AITaskStatus.PENDING)return K(e=>Math.max(e,20)),!1;if(i===m.AITaskStatus.PROCESSING)return n.length>0?(z(n.map((e,s)=>({id:`${a.id}-${s}`,url:e,provider:a.provider,model:a.model,prompt:a.prompt??void 0}))),K(e=>Math.max(e,85))):K(e=>Math.min(e+5,80)),!1;if(i===m.AITaskStatus.SUCCESS)return 0===n.length?d.toast.error("The provider returned no videos. Please retry."):(z(n.map((e,s)=>({id:`${a.id}-${s}`,url:e,provider:a.provider,model:a.model,prompt:a.prompt??void 0}))),d.toast.success("Video generated successfully")),K(100),eN(),!0;if(i===m.AITaskStatus.FAILED){let e=l?.errorMessage||"Generate video failed";return d.toast.error(e),eN(),ed(),!0}return K(e=>Math.min(e+3,95)),!1}catch(e){return d.toast.error(`Query task failed: ${e.message}`),eN(),ed(),!0}},[Y,eN]);(0,t.useEffect)(()=>{if(!Q||!H)return;let e=!1;(async()=>{!Q||await eS(Q)&&(e=!0)})();let s=setInterval(async()=>{e||!Q?clearInterval(s):await eS(Q)&&clearInterval(s)},15e3);return()=>{e=!0,clearInterval(s)}},[Q,H,eS]);let eI=async()=>
6{if(!en)return void ec(!0);if(em<O)return void d.toast.error("Insufficient credits. Please top up to keep creating.");let e=U.trim();if(!e&&eg)return void d.toast.error("Please enter a prompt before generating.");if(!M||!G)return void d.toast.error("Provider or model is not configured correctly.");if(ep&&0===R.length)return void d.toast.error("Please upload a reference image before generating.");if(ex&&!X)return void d.toast.error("Please provide a reference video URL before generating.");J(!0),K(15),et(m.AITaskStatus.PENDING),z([]),ee(Date.now());try{let s={};ep&&(s.image_input=R),ex&&(s.video_input=[X]);let t=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:m.AIMediaType.VIDEO,scene:C,provider:M,model:G,prompt:e,options:s})});if(!t.ok)throw Error(`request failed with status: ${t.status}`);let{code:r,message:a,data:i}=await t.json();if(0!==r)throw Error(a||"Failed to create a video task");let l=i?.id;if(!l)throw Error("Task id missing in response");if(i.status===m.AITaskStatus.SUCCESS&&i.taskInfo){let s=T(i.taskInfo),t=w(s);if(t.length>0){z(t.map((s,t)=>({id:`${l}-${t}`,url:s,provider:M,model:G,prompt:e}))),d.toast.success("Video generated successfully"),K(100),eN(),await ed();return}}Z(l),K(25),await ed()}catch(e){d.toast.error(`Failed to generate video: ${e.message}`),eN()}},e_=async e=>{if(e.url)try{ea(e.id);let s=await fetch(e.url);if(!s.ok)throw Error("Failed to fetch video");let t=await s.blob(),r=URL.createObjectURL(t),a=document.createElement("a");a.href=r,a.download=`${e.id}.mp4`,document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>URL.revokeObjectURL(r),200),d.toast.success("Video downloaded")}catch(e){d.toast.error("Failed to download video")}finally{ea(null)}};return(0,s.jsx)("section",{className:"py-16 md:py-24",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[(0,s.jsxs)(p.Card,{children:[(0,s.jsxs)(p.CardHeader,{children:[E&&(0,s.jsx)("h2",{className:"sr-only",children:E}),(0,s.jsx)(p.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:b("title")})]}),(0,s.jsxs)(p.CardContent,{className:"space-y-6 pb-8",children:[(0,s.jsx)(j.Tabs,{value:C,onValueChange:e=>{A(e);let s=I.filter(s=>s.scenes.includes(e)&&s.provider===M);s.length>0?P(s[0].value):P(""),k((0,N.getSceneCreditCost)(e))},children:(0,s.jsxs)(j.TabsList,{className:"bg-primary/10 grid w-full grid-cols-3",children:[(0,s.jsx)(j.TabsTrigger,{value:N.AIScene.TEXT_TO_VIDEO,children:b("tabs.text-to-video")}),(0,s.jsx)(j.TabsTrigger,{value:N.AIScene.IMAGE_TO_VIDEO,children:b("tabs.image-to-video")}),(0,s.jsx)(j.TabsTrigger,{value:N.AIScene.VIDEO_TO_VIDEO,children:b("tabs.video-to-video")})]})}),(0,s.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(x.Label,{children:b("form.provider")}),(0,s.jsxs)(v.Select,{value:M,onValueChange:e=>{D(e);let s=I.filter(s=>s.scenes.includes(C)&&s.provider===e);s.length>0?P(s[0].value):P("")},children:[(0,s.jsx)(v.SelectTrigger,{className:"w-full",children:(0,s.jsx)(v.SelectValue,{placeholder:b("form.select_provider")})}),(0,s.jsx)(v.SelectContent,{children:_.map(e=>(0,s.jsx)(v.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(x.Label,{children:b("form.model")}),(0,s.jsxs)(v.Select,{value:G,onValueChange:P,children:[(0,s.jsx)(v.SelectTrigger,{className:"w-full",children:(0,s.jsx)(v.SelectValue,{placeholder:b("form.select_model")})}),(0,s.jsx)(v.SelectContent,{children:I.filter(e=>e.scenes.includes(C)&&e.provider===M).map(e=>(0,s.jsx)(v.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),ep&&(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsx)(h.ImageUploader,{title:b("form.reference_image"),allowMultiple:!0,maxImages:3,maxSizeMB:e,onChange:ev,emptyHint:b("form.reference_image_placeholder")}),ey&&(0,s.jsx)("p",{className:"text-destructive text-xs",children:b("form.some_images_failed_to_upload")})]}),ex&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(x.Label,{htmlFor:"video-url",children:b("form.reference_video")}),(0,s.jsx)(y.Textarea,{id:"video-url",value:X,onChange:e=>B(e.target.value),placeholder:b("form.reference_video_placeholder"),className:"min-h-20"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(x.Label,{htmlFor:"video-prompt",children:b("form.prompt")}),(0,s.jsx)(y.Textarea,{id:"video-prompt",value:U,onChange:e=>V(e.target.value),placeholder:b("form.prompt_placeholder"),className:"min-h-32"}),(0,s.jsxs)("div",{className:"text-muted-foreground flex items-center justify-between text-xs",children:[(0,s.jsxs)("span",{children:[eu," / ",2e3]}),eh&&(0,s.jsx)("span",{className:"text-destructive",children:b("form.prompt_too_long")})]})]}),ei?eo?(0,s.jsxs)(g.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,s.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),b("checking_account")]}):en?(0,s.jsx)(g.Button,{size:"lg",className:"w-full",onClick:eI,disabled:H||eg&&!U.trim()||eh||ej||ey||ep&&0===R.length||ex&&!X,children:H?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),b("generating")]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l.Sparkles,{className:"mr-2 h-4 w-4"}),b("generate")]})}):(0,s.jsxs)(g.Button,{size:"lg",className:"w-full",onClick:()=>ec(!0),children:[(0,s.jsx)(n.User,{className:"mr-2 h-4 w-4"}),b("sign_in_to_generate")]}):(0,s.jsxs)(g.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,s.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),b("loading")]}),ei?en&&em>0?(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{className:"text-primary",children:b("credits_cost",{credits:O})}),(0,s.jsx)("span",{children:b("credits_remaining",{credits:em})})]}):(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{className:"text-primary",children:b("credits_cost",{credits:O})}),(0,s.jsx)("span",{children:b("credits_remaining",{credits:em})})]}),(0,s.jsx)(u.Link,{href:"/pricing",children:(0,s.jsxs)(g.Button,{variant:"outline",className:"w-full",size:"lg",children:[(0,s.jsx)(r.CreditCard,{className:"mr-2 h-4 w-4"}),b("buy_credits")]})})]}):(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{className:"text-primary",children:b("credits_cost",{credits:O})}),(0,s.jsx)("span",{children:b("credits_remaining",{credits:0})})]}),H&&(0,s.jsxs)("div",{className:"space-y-2 rounded-lg border p-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,s.jsx)("span",{children:b("progress")}),(0,s.jsxs)("span",{children:[W,"%"]})]}),(0,s.jsx)(f.Progress,{value:W}),ef&&(0,s.jsx)("p",{className:"text-muted-foreground text-center text-xs",children:ef})]})]})]}),(0,s.jsxs)(p.Card,{children:[(0,s.jsx)(p.CardHeader,{children:(0,s.jsxs)(p.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:[(0,s.jsx)(o.default,{className:"h-5 w-5"}),b("generated_videos")]})}),(0,s.jsx)(p.CardContent,{className:"pb-8",children:q.length>0?(0,s.jsx)("div",{className:"space-y-6",children:q.map(e=>(0,s.jsx)("div",{className:"space-y-3",children:(0,s.jsxs)("div",{className:"relative overflow-hidden rounded-lg border",children:[(0,s.jsx)("video",{src:e.url,controls:!0,className:"h-auto w-full",preload:"metadata"}),(0,s.jsx)("div",{className:"absolute right-2 bottom-2 flex justify-end text-sm",children:(0,s.jsx)(g.Button,{size:"sm",variant:"ghost",className:"ml-auto",onClick:()=>e_(e),disabled:er===e.id,children:er===e.id?(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"})}):(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(a.Download,{className:"h-4 w-4"})})})})]})},e.id))}):(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,s.jsx)("div",{className:"bg-muted mb-4 flex h-16 w-16 items-center justify-center rounded-full",children:(0,s.jsx)(o.default,{className:"text-muted-foreground h-10 w-10"})}),(0,s.jsx)("p",{className:"text-muted-foreground",children:b(H?"ready_to_generate":"no_videos_generated")})]})})]})]})})})})}e.s(["VideoGenerator",()=>E],548728)}]);

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.