PageSourceSearch

https://imagioo.com/_next/static/chunks/709ce33ac7814e54.js

js imagioo.com collected 2026-10-07 01:03:02 UTC 55,570 bytes, 6 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,697743,293966,901017,e=>{"use strict";var a,t,r=e.i(109750);e.s(["CreditCard",()=>r.default],697743);var s=((a={}).MUSIC="music",a.IMAGE="image",a.VIDEO="video",a.TEXT="text",a.SPEECH="speech",a),l=((t={}).PENDING="pending",t.PROCESSING="processing",t.SUCCESS="success",t.FAILED="failed",t.CANCELED="canceled",t);e.s(["AIMediaType",()=>s,"AITaskStatus",()=>l],293966);var i=e.i(466471),n=e.i(536355),o=e.i(884702),d=e.i(352162),c=e.i(6140),m="Progress",[u,g]=(0,d.createContextScope)(m),[p,h]=u(m),x=o.forwardRef((e,a)=>{var t,r;let{__scopeProgress:s,value:l=null,max:n,getValueLabel:o=b,...d}=e;(n||0===n)&&!w(n)&&console.error((t=`${n}`,`Invalid prop \`max\` of value \`${t}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let m=w(n)?n:100;null===l||N(l,m)||console.error((r=`${l}`,`Invalid prop \`value\` of value \`${r}\` 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 u=N(l,m)?l:null,g=y(u)?o(u,m):void 0;return(0,i.jsx)(p,{scope:s,value:u,max:m,children:(0,i.jsx)(c.Primitive.div,{"aria-valuemax":m,"aria-valuemin":0,"aria-valuenow":y(u)?u:void 0,"aria-valuetext":g,role:"progressbar","data-state":j(u,m),"data-value":u??void 0,"data-max":m,...d,ref:a})})});x.displayName=m;var f="ProgressIndicator",v=o.forwardRef((e,a)=>{let{__scopeProgress:t,...r}=e,s=h(f,t);return(0,i.jsx)(c.Primitive.div,{"data-state":j(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:a})});function b(e,a){return`${Math.round(e/a*100)}%`}function j(e,a){return null==e?"indeterminate":e===a?"complete":"loading"}function y(e){return"number"==typeof e}function w(e){return y(e)&&!isNaN(e)&&e>0}function N(e,a){return y(e)&&!isNaN(e)&&e<=a&&e>=0}v.displayName=f;var k=e.i(526683);function S(e){let a,t,r,s,l,o,d=(0,n.c)(12);d[0]!==e?({className:a,value:r,...t}=e,d[0]=e,d[1]=a,d[2]=t,d[3]=r):(a=d[1],t=d[2],r=d[3]),d[4]!==a?(s=(0,k.cn)("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",a),d[4]=a,d[5]=s):s=d[5];let c=`translateX(-${100-(r||0)}%)`;return d[6]!==c?(l=(0,i.jsx)(v,{"data-slot":"progress-indicator",className:"bg-primary h-full w-full flex-1 transition-all",style:{transform:c}}),d[6]=c,d[7]=l):l=d[7],d[8]!==t||d[9]!==s||d[10]!==l?(o=(0,i.jsx)(x,{"data-slot":"progress",className:s,...t,children:l}),d[8]=t,d[9]=s,d[10]=l,d[11]=o):o=d[11],o}e.s(["Progress",()=>S],901017)},22448,e=>{"use strict";var a=e.i(466471),t=e.i(884702),r=e.i(128686),r=r,s=e.i(266925),s=s,l=e.i(697743),i=e.i(910776),n=e.i(462297),o=e.i(709237),o=o,d=e.i(55871),c=e.i(283422),m=e.i(39973),u=e.i(247835),g=e.i(779342),p=e.i(199978),h=e.i(293966),x=e.i(24963),f=e.i(615978),v=e.i(511398),b=e.i(686247),j=e.i(118621),y=e.i(273792),w=e.i(901017),N=e.i(638678),k=e.i(534522),S=e.i(622491),_=e.i(960568),I=e.i(526683);function C({className:e,srOnlyTitle:C}){let T=(0,u.useTranslations)("ai.music"),{user:E,isCheckSign:P,setIsShowSignModal:z,fetchUserCredits:L}=(0,_.useAppContext)(),[A,U]=(0,t.useState)("kie"),[M,F]=(0,t.useState)("V5"),[V,$]=(0,t.useState)(!1),[O,D]=(0,t.useState)(""),[G,R]=(0,t.useState)(""),[B,K]=(0,t.useState)(!1),[q,J]=(0,t.useState)(""),[H,X]=(0,t.useState)(""),[Q,W]=(0,t.useState)(!1),[Y,Z]=(0,t.useState)(null),[ee,ea]=(0,t.useState)(0),[et,er]=(0,t.useState)([]),[es,el]=(0,t.useState)(null),[ei,en]=(0,t.useState)(null),[eo,ed]=(0,t.useState)(!1),[ec,em]=(0,t.useState)(!1),eu=(0,t.useRef)(null),[eg,ep]=(0,t.useState)(!1);(0,t.useEffect)(()=>{ep(!0)},[]);let eh=async e=>{try{if(ei&&Date.now()-ei>18e4)return ea(0),W(!1),en(null),g.toast.error("Generate music timed out. Please try again."),!0;let a=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!a.ok)throw Error(`request failed with status: ${a.status}`);let{code:t,message:r,data:s}=await a.json();if(0!==t)throw Error(r);let{status:l,taskInfo:i}=s;if(!l||!i)throw Error("Query task info failed");let{errorCode:n,errorMessage:o,songs:d}=JSON.parse(i);if(n||o)throw Error(o);if(l===h.AITaskStatus.PENDING)return ea(10),!1;if(l===h.AITaskStatus.PROCESSING){ea(20);let a=d.some(e=>e.imageUrl),t=d.some(e=>e.audioUrl);if(a)return ea(60),er(d.map(a=>({...a,taskId:e}))),!1;return t&&(ea(85),er(d.map(a=>({...a,taskId:e})))),!1}if(l===h.AITaskStatus.FAILED)return ea(0),W(!1),en(null),g.toast.error("Generate music failed: "+o),L(),!0;if(l===h.AITaskStatus.SUCCESS)return er(d.map(a=>({...a,taskId:e}))),ea(100),W(!1),en(null),!0;return ea(e=>Math.min(e+3,80)),!1}catch(e){return console.error("Error polling task:",e),W(!1),ea(0),en(null),g.toast.error("Create song failed: "+e.message),L(),!0}};(0,t.useEffect)(()=>
6{if(Y&&Q){let e=setInterval(async()=>{await eh(Y)&&clearInterval(e)},1e4);return()=>clearInterval(e)}},[Y,Q,ei]);let ex=async()=>{if(!E)return void z(!0);if(!E.credits||E.credits.remainingCredits<10)return void g.toast.error("Insufficient credits");if(!A||!M)return void g.toast.error("Invalid provider or model");if(V){if(!O||!G)return void g.toast.error("Please enter title and style");if(!B&&!q)return void g.toast.error("Please enter lyrics")}else if(!H)return void g.toast.error("Please enter prompt");let e={mediaType:"music",provider:A,model:M};V?(e.options={customMode:!0,style:G,title:O,instrumental:B},B||(e.options.lyrics=q)):(e.prompt=H,e.options={customMode:!1,instrumental:B}),W(!0),ea(10),er([]),el(null),en(Date.now());try{let e=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:"music",provider:A,model:M,prompt:H,options:{style:G,title:O,lyrics:q,customMode:V,instrumental:B}})});if(!e.ok)throw Error(`request failed with status: ${e.status}`);let{code:a,message:t,data:r}=await e.json();if(0!==a)throw Error(t||"Failed to generate music");let{id:s}=r;if(!s)throw Error("Failed to generate music");await L(),Z(s),ea(20)}catch(e){g.toast.error("Failed to generate music: "+e.message),W(!1),ea(0),en(null)}},ef=async e=>{if(e?.audioUrl){em(!0);try{if(eu.current&&!eu.current.paused&&eu.current.pause(),es?.id===e.id&&eo){ed(!1),el(null),em(!1);return}eu.current=new Audio(e.audioUrl),eu.current.addEventListener("ended",()=>{ed(!1),el(null)}),eu.current.addEventListener("error",e=>{console.error("Audio playback error:",e),em(!1),ed(!1),el(null)}),await eu.current.play(),ed(!0),el(e),em(!1)}catch(e){console.error("Failed to play audio:",e),em(!1),ed(!1),el(null)}}},ev=async e=>{if(e?.audioUrl)try{g.toast.info(T("generator.downloading"));let a=e.taskId||Y;if(!a)throw Error("Missing audio task id");let t=new URLSearchParams({url:e.audioUrl,taskId:a,filename:`${e.title||e.id}.mp3`}),r=await fetch(`/api/proxy/file?${t.toString()}`);if(!r.ok)throw Error("Failed to fetch audio file");let s=await r.blob(),l=URL.createObjectURL(s),i=document.createElement("a");i.href=l,i.download=`${e.title}.mp3`,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(l),100),g.toast.success(T("generator.download_success"))}catch(e){console.error("Failed to download audio:",e),g.toast.error(T("generator.download_failed"))}};return(0,a.jsxs)("section",{id:"create",className:(0,I.cn)("py-16 md:py-24",e),children:[C&&(0,a.jsx)("h2",{className:"sr-only",children:C}),(0,a.jsx)("div",{className:"container",children:(0,a.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-2",children:[(0,a.jsxs)(b.Card,{children:[(0,a.jsx)(b.CardHeader,{children:(0,a.jsx)(b.CardTitle,{className:"flex items-center gap-2",children:T("generator.title")})}),(0,a.jsx)(b.CardContent,{className:"space-y-6",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(k.Switch,{checked:V,onCheckedChange:$}),(0,a.jsx)(y.Label,{children:T("generator.form.custom_mode")})]}),(0,a.jsx)("div",{className:"flex-1"}),(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)(y.Label,{children:T("generator.form.model")}),(0,a.jsxs)(N.Select,{value:M,onValueChange:F,children:[(0,a.jsx)(N.SelectTrigger,{className:"w-32",children:(0,a.jsx)(N.SelectValue,{})}),(0,a.jsxs)(N.SelectContent,{children:[(0,a.jsx)(N.SelectItem,{value:"V5",children:"Suno V5"}),(0,a.jsx)(N.SelectItem,{value:"V4_5PLUS",children:"Suno V4.5+"}),(0,a.jsx)(N.SelectItem,{value:"V4_5",children:"Suno V4.5"}),(0,a.jsx)(N.SelectItem,{value:"V4",children:"Suno V4"}),(0,a.jsx)(N.SelectItem,{value:"V3_5",children:"Suno V3.5"})]})]})]})]})}),(0,a.jsxs)(b.CardContent,{className:"space-y-6",children:[V&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{htmlFor:"title",children:T("generator.form.title")}),(0,a.jsx)(j.Input,{id:"title",placeholder:T("generator.form.title_placeholder"),value:O,onChange:e=>D(e.target.value)})]}),V&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{htmlFor:"style",children:T("generator.form.style")}),(0,a.jsx)(S.Textarea,{id:"style",placeholder:T("generator.form.style_placeholder"),value:G,onChange:e=>R(e.target.value),className:"min-h-24"}),(0,a.jsxs)("div",{className:"text-muted-foreground text-right text-sm",children:[G.length,"/1000"]})]}),!V&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{htmlFor:"prompt",children:T("generator.form.prompt")}),(0,a.jsx)(S.Textarea,{id:"prompt",placeholder:T("generator.form.prompt_placeholder"),value:H,onChange:e=>X(e.target.value),className:"min-h-32",required:!0})]}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(k.Switch,{id:"instrumental",checked:B,onCheckedChange:K}),(0,a.jsx)(y.Label,{htmlFor:"instrumental",children:T("generator.form.instrumental")})]}),V&&!B&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{htmlFor:"lyrics",children:T("generator.form.lyrics")}),(0,a.jsx)(S.Textarea,{id:"lyrics",placeholder:T("generator.form.lyrics_placeholder"),value:q,onChange:e=>J(e.target.value),className:"min-h-32"})]}),eg?P?(0,a.jsxs)(v.Button,{className:"w-full",size:"lg",children:[(0,a.jsx)(n.Loader2,{className:"size-4 animate-spin"})," ",T("generator.loading")]}):E?(0,a.jsx)(v.Button,{onClick:ex,disabled:Q,className:"w-full",size:"lg",children:Q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),T("generator.generating")]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.default,{className:"mr-2 h-4 w-4"}),T("generator.generate")]})}):(0,a.jsxs)(v.Button,{className:"w-full",size:"lg",onClick:()=>z(!0),children:[(0,a.jsx)(m.User,{className:"mr-2 h-4 w-4"})," ",T("generator.sign_in_to_generate")]}):(0,a.jsxs)(v.Button,{className:"w-full",size:"lg",disabled:!0,children:[(0,a.jsx)(o.default,{className:"mr-2 h-4 w-4"}),T("generator.generate")]}),eg?E&&E.credits&&E.credits.remainingCredits>0?(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-primary",children:T("generator.credits_cost",{credits:10})}),(0,a.jsx)("span",{className:"text-foreground font-medium",children:T("generator.credits_remaining",{credits:E.credits.remainingCredits})})]}):(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between text-sm",children:[(0,a.jsxs)("span",{className:"text-primary",children:[T("generator.credits_cost",{credits:10}),","," ",T("generator.credits_remaining",{credits:E?.credits?.remainingCredits||0})]}),(0,a.jsx)(p.Link,{href:"/pricing",children:(0,a.jsxs)(v.Button,{className:"w-full",size:"lg",variant:"outline",children:[(0,a.jsx)(l.Credit
6Card,{className:"size-4"})," ",T("generator.buy_credits")]})})]}):(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-primary",children:T("generator.credits_cost",{credits:10})}),(0,a.jsx)("span",{className:"text-foreground font-medium",children:T("generator.credits_remaining",{credits:0})})]}),Q&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,a.jsx)("span",{children:T("generator.generation_progress")}),(0,a.jsxs)("span",{children:[ee,"%"]})]}),(0,a.jsx)(w.Progress,{value:ee,className:"w-full"}),(0,a.jsx)("p",{className:"text-muted-foreground text-center text-sm",children:T("generator.time_cost")})]})]})]}),(0,a.jsxs)(b.Card,{children:[(0,a.jsx)(b.CardHeader,{children:(0,a.jsxs)(b.CardTitle,{className:"flex items-center gap-2",children:[(0,a.jsx)(o.default,{className:"h-5 w-5"}),T("generator.generated_song")]})}),(0,a.jsx)(b.CardContent,{children:et.length>0?(0,a.jsx)("div",{className:"space-y-4",children:et.map((e,t)=>{var l;let u,g,p=es?.id===e.id&&eo,h=es?.id===e.id&&ec;return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex gap-4",children:[(0,a.jsxs)("div",{className:"relative flex-shrink-0",children:[(0,a.jsx)("div",{className:"bg-muted relative h-20 w-20 overflow-hidden rounded-lg",children:e.imageUrl?(0,a.jsx)(x.LazyImage,{src:e.imageUrl,alt:e.title,fill:!0,className:"object-cover"}):(0,a.jsx)("div",{className:"from-primary/20 to-accent/20 flex h-full w-full items-center justify-center bg-gradient-to-br",children:(0,a.jsx)(o.default,{className:"text-muted-foreground h-6 w-6"})})}),e.audioUrl&&(0,a.jsx)(v.Button,{size:"sm",variant:"secondary",className:"absolute top-6 right-6 h-8 w-8 rounded-full p-0 shadow-lg",onClick:()=>ef(e),disabled:h,children:h?(0,a.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin"}):p?(0,a.jsx)(d.Pause,{className:"h-3 w-3"}):(0,a.jsx)(c.Play,{className:"h-3 w-3"})})]}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("h3",{className:"text-foreground mb-1 text-lg font-semibold",children:e.title}),(0,a.jsxs)("div",{className:"text-muted-foreground mb-2 flex items-center gap-2 text-sm",children:[(0,a.jsx)(m.User,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:e.artist}),(0,a.jsx)(s.default,{className:"ml-2 h-4 w-4"}),(0,a.jsx)("span",{children:(u=Math.floor((l=e.duration)/60),g=Math.floor(l%60),`${u}:${g.toString().padStart(2,"0")}`)})]}),(0,a.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,a.jsx)(f.Badge,{variant:"default",className:"text-xs",children:e.trim()},t))}),(0,a.jsx)("div",{className:"flex items-center gap-2 text-sm",children:e.audioUrl?(0,a.jsxs)("div",{className:"flex items-center gap-2 text-green-600",children:[(0,a.jsx)(r.default,{className:"h-4 w-4"}),(0,a.jsx)("span",{children:T("generator.ready_to_play")})]}):(0,a.jsxs)("div",{className:"flex items-center gap-2 text-yellow-600",children:[(0,a.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin"}),(0,a.jsx)("span",{children:T("generator.audio_generating")})]})})]}),(0,a.jsx)("div",{className:"flex flex-col gap-2",children:e.audioUrl&&(0,a.jsx)(v.Button,{variant:"outline",size:"sm",onClick:()=>ev(e),children:(0,a.jsx)(i.Download,{className:"h-4 w-4"})})})]}),t<et.length-1&&(0,a.jsx)("div",{className:"border-t"})]},e.id)})}):(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,a.jsx)("div",{className:"bg-muted mb-4 flex h-16 w-16 items-center justify-center rounded-full",children:(0,a.jsx)(o.default,{className:"text-muted-foreground h-8 w-8"})}),(0,a.jsx)("p",{className:"text-muted-foreground mb-2",children:Q?T("generator.generating_song"):T("generator.no_song_generated")})]})})]})]})})})]})}e.s(["MusicGenerator",()=>C],22448)},550573,e=>{"use strict";var a=e.i(245193);e.s(["Sparkles",()=>a.default])},37181,e=>{"use strict";var a=e.i(466471),t=e.i(884702),r=e.i(697743),s=e.i(910776),l=e.i(169543),i=e.i(462297),n=e.i(151580),n=n,o=e.i(550573),d=e.i(39973),c=e.i(77591),c=c,m=e.i(653668),u=e.i(247835),g=e.i(779342),p=e.i(199978),h=e.i(293966);e.i(741820);var x=e.i(561444),f=e.i(24963),v=e.i(511398),b=e.i(122913),j=e.i(118621),y=e.i(273792),w=e.i(901017),N=e.i(638678),k=e.i(330771),S=e.i(622491);let _=[{name:"aspect_ratio",label:"Aspect Ratio",type:"select",defaultValue:"1:1",values:[{label:"1:1",value:"1:1"},{label:"2:3",value:"2:3"},{label:"3:2",value:"3:2"},{label:"3:4",value:"3:4"},{label:"4:3",value:"4:3"},{label:"4:5",value:"4:5"},{label:"5:4",value:"5:4"},{label:"9:16",value:"9:16"},{label:"16:9",value:"16:9"},{label:"21:9",value:"21:9"},{label:"Match input image",value:"match_input_image"}]},{name:"output_format",label:"Output Format",type:"select",defaultValue:"jpg",values:[{label:"JPG",value:"jpg"},{label:"PNG",value:"png"}]}],I=[{name:"resolution",label:"Resolution",type:"select",defaultValue:"1K",values:[{label:"1K",value:"1K"},{label:"2K",value:"2K"},{label:"4K",value:"4K"}]}],C=[{label:"Text to Image",value:"text-to-image"},{label:"Image to Image",value:"image-to-image"}],T=[{id:"google/nano-banana",label:"Nano Banana",provider:"replicate",description:"Google's fast Gemini 2.5 image generation and editing model.",modes:[{mode:"text-to-image",minImages:0,maxImages:0,costKey:"flat"},{mode:"image-to-image",minImages:1,maxImages:3,costKey:"flat"}],options:_,output:{type:"single-image"},pricingUsd:{flat:.039}},{id:"google/nano-banana-2",label:"Nano Banana 2",provider:"replicate",description:"Google's efficie
6nt image generation model with editing and up to 14 reference images.",modes:[{mode:"text-to-image",minImages:0,maxImages:0,costKey:"1K"},{mode:"image-to-image",minImages:1,maxImages:14,costKey:"1K"}],options:[...I,..._],output:{type:"single-image"},pricingUsd:{"1K":.067,"2K":.101,"4K":.151}},{id:"google/nano-banana-pro",label:"Nano Banana Pro",provider:"replicate",description:"Google's high-quality image generation and editing model with stronger text rendering.",modes:[{mode:"text-to-image",minImages:0,maxImages:0,costKey:"1K"},{mode:"image-to-image",minImages:1,maxImages:14,costKey:"1K"}],options:[...I,..._,{name:"safety_filter_level",label:"Safety Filter",type:"select",defaultValue:"block_only_high",values:[{label:"Block only high",value:"block_only_high"},{label:"Block medium and above",value:"block_medium_and_above"},{label:"Block low and above",value:"block_low_and_above"}]},{name:"allow_fallback_model",label:"Allow Fallback Model",type:"select",defaultValue:!1,values:[{label:"No",value:!1},{label:"Yes",value:!0}]}],output:{type:"single-image"},pricingUsd:{"1K":.15,"2K":.15,"4K":.3,fallback:.035}},{id:"openai/gpt-image-2",label:"GPT Image 2",provider:"replicate",description:"OpenAI's image generation and editing model with strong instruction following and text rendering.",modes:[{mode:"text-to-image",minImages:0,maxImages:0,costKey:"auto:1:1"},{mode:"image-to-image",minImages:1,maxImages:10,costKey:"auto:1:1"}],options:[{name:"aspect_ratio",label:"Aspect Ratio",type:"select",defaultValue:"1:1",values:[{label:"1:1",value:"1:1"},{label:"3:2",value:"3:2"},{label:"2:3",value:"2:3"}]},{name:"quality",label:"Quality",type:"select",defaultValue:"auto",values:[{label:"Auto",value:"auto"},{label:"Low",value:"low"},{label:"Medium",value:"medium"},{label:"High",value:"high"}]},{name:"number_of_images",label:"Images",type:"select",defaultValue:1,values:Array.from({length:10},(e,a)=>({label:String(a+1),value:a+1}))},{name:"output_format",label:"Output Format",type:"select",defaultValue:"webp",values:[{label:"WebP",value:"webp"},{label:"PNG",value:"png"},{label:"JPEG",value:"jpeg"}]},{name:"background",label:"Background",type:"select",defaultValue:"auto",values:[{label:"Auto",value:"auto"},{label:"Opaque",value:"opaque"}]},{name:"output_compression",label:"Compression",type:"number",defaultValue:90,min:0,max:100,step:1},{name:"moderation",label:"Moderation",type:"select",defaultValue:"auto",values:[{label:"Auto",value:"auto"},{label:"Low",value:"low"}]}],output:{type:"multiple-images"},pricingUsd:{"low:1:1":.01,"medium:1:1":.06,"high:1:1":.22,"auto:1:1":.22,"low:3:2":.01,"medium:3:2":.05,"high:3:2":.17,"auto:3:2":.17,"low:2:3":.01,"medium:2:3":.05,"high:2:3":.17,"auto:2:3":.17}}];function E(e,a){return e.modes.find(e=>e.mode===a)}function P(e){return e.options.reduce((e,a)=>(e[a.name]=a.defaultValue,e),{})}var z=e.i(960568),L=e.i(526683);function A(e){return T.filter(a=>a.modes.some(a=>a.mode===e))}function U(e){if(!e)return null;try{return JSON.parse(e)}catch(e){return console.warn("Failed to parse taskResult:",e),null}}function M(e){if(!e)return[];let a=e.output??e.images??e.data;if(!a)return[];if("string"==typeof a)return[a];if(Array.isArray(a))return a.flatMap(e=>{if(!e)return[];if("string"==typeof e)return[e];if("object"==typeof e){let a=e.url??e.uri??e.image??e.src??e.imageUrl;return"string"==typeof a?[a]:[]}return[]}).filter(Boolean);if("object"==typeof a){let e=a.url??a.uri??a.image??a.src??a.imageUrl;if("string"==typeof e)return[e]}return[]}function F({allowMultipleImages:e=!0,maxImages:_=14,maxSizeMB:I=5,srOnlyTitle:F,className:V}){let $=(0,u.useTranslations)("ai.image.generator"),O=A(C[0].value)[0],[D,G]=(0,t.useState)(C[0].value),[R,B]=(0,t.useState)(O?.provider||"replicate"),[K,q]=(0,t.useState)(O?.id||""),[J,H]=(0,t.useState)(()=>O?P(O):{}),[X,Q]=(0,t.useState)(""),[W,Y]=(0,t.useState)([]),[Z,ee]=(0,t.useState)([]),[ea,et]=(0,t.useState)([]),[er,es]=(0,t.useState)([]),[el,ei]=(0,t.useState)(!1),[en,eo]=(0,t.useState)(0),[ed,ec]=(0,t.useState)(null),[em,eu]=(0,t.useState)(null),[eg,ep]=(0,t.useState)(null),[eh,ex]=(0,t.useState)(null),[ef,ev]=(0,t.useState)(null),[eb,ej]=(0,t.useState)(!1),ey=(0,t.useRef)(!1),ew=(0,t.useRef)(null),eN=(0,t.useRef)({isDragging:!1,startX:0,startScrollLeft:0,moved:!1,suppressClick:!1}),{user:ek,isCheckSign:eS,setIsShowSignModal:e_,fetchUserCredits:eI}=(0,z.useAppContext)();(0,t.useEffect)(()=>{ej(!0)},[]),(0,t.useEffect)(()=>
6{if(!ek?.id)return void es([]);let e=!1;return(async()=>{try{let a=await fetch("/api/ai/history",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({limit:8})});if(!a.ok)throw Error(`request failed with status: ${a.status}`);let{code:t,data:r}=await a.json();if(0!==t||e)return;es(Array.isArray(r)?r:[])}catch(e){console.error("Failed to load image history:",e)}})(),()=>{e=!0}},[ek?.id]);let eC=X.trim().length,eT=ek?.credits?.remainingCredits??0,eE=eC>2e3,eP="text-to-image"===D,ez=(0,t.useMemo)(()=>(function({provider:e,model:a}){return T.find(t=>t.provider===e&&t.id===a)})({provider:R,model:K}),[R,K]),eL=(0,t.useMemo)(()=>ez?E(ez,D):void 0,[ez,D]),eA=(0,t.useMemo)(()=>A(D),[D]),eU=(0,t.useMemo)(()=>ez?function({modelConfig:e,mode:a,options:t}){return Math.max(1,Math.ceil(function({modelConfig:e,mode:a,options:t}){let r=E(e,a);if(!r)return 0;if("openai/gpt-image-2"===e.id){let a=String(t?.quality||"auto"),r=String(t?.aspect_ratio||"1:1");return(e.pricingUsd[`${a}:${r}`]||0)*Math.max(1,Number(t?.number_of_images||1))}if("google/nano-banana-2"===e.id||"google/nano-banana-pro"===e.id){let a=String(t?.resolution||r.costKey);return e.pricingUsd[a]||0}return e.pricingUsd[r.costKey]||0}({modelConfig:e,mode:a,options:t})/.107*5))}({modelConfig:ez,mode:D,options:J}):0,[ez,D,J]),eM=!!eL&&eL.minImages>0,eF=eL?.maxImages||0,eV=(e,a)=>{let t=ez?.options.find(a=>a.name===e),r=a;t?.type==="number"||"number"==typeof t?.defaultValue?r=Number(a):"true"===a?r=!0:"false"===a&&(r=!1),H(a=>({...a,[e]:r}))},e$=(0,t.useMemo)(()=>{if(!eg)return"";switch(eg){case h.AITaskStatus.PENDING:return $("status.pending");case h.AITaskStatus.PROCESSING:return $("status.processing");case h.AITaskStatus.SUCCESS:return $("status.success");case h.AITaskStatus.FAILED:return $("status.failed");default:return""}},[eg,$]),eO=(0,t.useCallback)(e=>{Y(e),ee(e.filter(e=>"uploaded"===e.status&&e.url).map(e=>e.url))},[]),eD=(0,t.useMemo)(()=>W.some(e=>"uploading"===e.status),[W]),eG=(0,t.useMemo)(()=>W.some(e=>"error"===e.status),[W]),eR=(0,t.useCallback)(()=>{ei(!1),eo(0),ec(null),eu(null),ep(null)},[]),eB=(0,t.useCallback)(async e=>{if(ey.current)return!1;ey.current=!0;try{if(em&&Date.now()-em>18e4)return eR(),g.toast.error("Image generation timed out. Please try again."),!0;let a=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!a.ok)throw Error(`request failed with status: ${a.status}`);let{code:t,message:r,data:s}=await a.json();if(0!==t)throw Error(r||"Query task failed");let l=s.status;ep(l);let i=U(s.taskInfo),n=M(i);if(l===h.AITaskStatus.PENDING)return eo(e=>Math.max(e,20)),!1;if(l===h.AITaskStatus.PROCESSING)return n.length>0?(et(n.map((e,a)=>({id:`${s.id}-${a}`,taskId:s.id,url:e,provider:s.provider,model:s.model,prompt:s.prompt??void 0}))),eo(e=>Math.max(e,85))):eo(e=>Math.min(e+10,80)),!1;if(l===h.AITaskStatus.SUCCESS)return 0===n.length?g.toast.error("The provider returned no images. Please retry."):(et(n.map((e,a)=>({id:`${s.id}-${a}`,taskId:s.id,url:e,provider:s.provider,model:s.model,prompt:s.prompt??void 0}))),g.toast.success("Image generated successfully")),eo(100),eR(),!0;if(l===h.AITaskStatus.FAILED){let e=i?.errorMessage||"Generate image failed";return g.toast.error(e),eR(),eI(),!0}return eo(e=>Math.min(e+5,95)),!1}catch(e){return console.error("Error polling image task:",e),g.toast.error(`Query task failed: ${e.message}`),eR(),eI(),!0}finally{ey.current=!1}},[em,eR]);(0,t.useEffect)(()=>{if(!ed||!el)return;let e=!1;(async()=>{!ed||await eB(ed)&&(e=!0)})();let a=setInterval(async()=>{e||!ed?clearInterval(a):await eB(ed)&&clearInterval(a)},5e3);return()=>{e=!0,clearInterval(a)}},[ed,el,eB]),(0,t.useEffect)(()=>{0!==ea.length&&es(e=>{let a=new Set(e.map(e=>e.id));return[...ea.filter(e=>!a.has(e.id)),...e].slice(0,24)})},[ea]);let eK=async()=>{if(!ek)return void e_(!0);if(eT<eU)return void g.toast.error("Insufficient credits. Please top up to keep creating.");let e=X.trim();if(!e)return void g.toast.error("Please enter a prompt before generating.");if(!R||!K)return void g.toast.error("Provider or model is not configured correctly.");if(eL&&Z.length<eL.minImages)return void g.toast.error(`Please upload at least ${eL.minImages} reference image(s).`);if(eL&&Z.length>eL.maxImages)return void g.toast.error(`Please upload at most ${eL.maxImages} reference image(s).`);ei(!0),eo(15),ep(h.AITaskStatus.PENDING),et([]),eu(Date.now());try{let a={...J};!eP&&Z.length>0&&(a.image_input=Z);let t=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:h.AIMediaType.IMAGE,scene:D,provider:R,model:K,prompt:e,options:a})});if(!t.ok)throw Error(`request failed with status: ${t.status}`);let{code:r,message:s,data:l}=await t.json();if(0!==r)throw Error(s||"Failed to create an image task");let i=l?.id;if(!i)throw Error("Task id missing in response");if(l.status===h.AITaskStatus.SUCCESS&&l.taskInfo){let a=U(l.taskInfo),t=M(a);if(t.length>0){et(t.map((a,t)=>({id:`${i}-${t}`,taskId:i,url:a,provider:R,model:K,prompt:e}))),g.toast.success("Image generated successfully"),eo(100),eR(),await eI();return}}ec(i),eo(25),await eI()}catch(e){console.error("Failed to generate image:",e),g.toast.error(`Failed to generate image: ${e.message}`),eR()}},eq=async e=>{if(e.url)try{let a=e.taskId||e.id.split("-")[0];if(!a)throw Error("Missing image task id");let t=new URLSearchParams({url:e.url,taskId:a,filename:`${e.id}.png`});ex(e.id);let r=await fetch(`/api/proxy/file?${t.toString()}`);if(!r.ok)throw Error("Failed to fetch image");let s=await r.blob(),l=URL.createObjectURL(s),i=document.createElement("a");i.href=l,i.download=`${e.id}.png`,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(l),200),g.toast.success("Image downloaded")}catch(e){console.error("Failed to download image:",e),g.toast.error("Failed to download image")}finally{ex(null)}},eJ=er.slice(0,8),eH=e=>{eN.current.isDragging=!1,eN.current.suppressClick&&window.setTimeout(()=>{eN.current.suppressClick=!1,eN.current.moved=!1},120)};return(0,a.jsxs)("section",{id:"image-generator-workbench",className:(0,L.cn)("relative min-h-dvh overflow-x-hidden pt-14 lg:pt-18","bg-[radial-gradient(circle_at_18%_0%,rgba(110,231,183,0.24),transparent_30%),linear-gradient(135deg,#f4fbf8_0%,#dceee7_58%,#24342f_145%)] dark:bg-[radial-gradient(circle_at_18%_0%,rgba(110,231,183,0.18),transparent_30%),linear-gradient(135deg,#101413_0%,#1f2a27_58%,#c8f7df_145%)]",V),children:[(0,a.jsxs)("div",{className:"pointer-events-none absolute inset-0 overflow-hidden",children:[(0,a.jsx)("div",{className:"graphite-mint-orb absolute -top-36 left-1/4 h-80 w-80 rounded-full bg-emerald-300/22 blur-3xl dark:bg-emerald-300/14"}),(0,a.jsx)("div",{className:"graphite-mint-orb-delay absolute right-0 bottom-0 h-96 w-96 rounded-full bg-teal-300/18 blur-3xl dark:bg-teal-300/10"}),(0,a.jsx)("div",{className:"graphite-mint-grid absolute inset-0 bg-[linear-gradient(rgba(31,42,39,0.08)_1px,transparent_1px),linear-gradient(90deg,rgba(31,42,39,0.08)_1px,transparent_1px)] bg-[size:48px_48px] dark:bg-[linear-gradient(rgba(255,255,255,0.035)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.035)_1px,transparent_1px)]"})]}),(0,a.jsxs)("div",{className:"relative z-10 mx-auto flex min-h-[calc(100dvh-3.5rem)] w-[calc(100%-2rem)] flex-col gap-3 py-3 sm:w-[calc(100%-3rem)] sm:py-4 lg:grid lg:min-h-[calc(100dvh-4.5rem)] lg:w-[calc(100%-6rem)] lg:grid-cols-[minmax(320px,3fr)_minmax(0,7fr)] lg:items-start lg:gap-5 lg:py-4",children:[(0,a.jsx)("aside",{className:"border border-zinc-950/10 bg-[#f4fbf8]/78 shadow-2xl shadow-emerald-950/15 backdrop-blur-xl dark:border-emerald-100/10 dark:bg-[#101413]/78 dark:shadow-black/50",children:(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsxs)("div",{className:"border-b border-zinc-950/10 px-5 py-4 dark:border-emerald-100/10",children:[F&&(0,a.jsx)("h1",{className:"sr-only",children:F}),(0,a.jsx)("p",{className:"text-xs font-semibold tracking-[0.24em] text-zinc-950/45 uppercase dark:text-emerald-50/45",children:"Imagioo Studio"}),(0,a.jsx)("h2",{className:"mt-2 text-2xl font-semibold tracking-[-0.04em] text-zinc-950 dark:text-emerald-50",children:$("title")})]}),(0,a.jsxs)("div",{className:"space-y-6 px-5 py-5",children:[(0,a.jsx)(k.Tabs,{value:D,onValueChange:e=>{G(e);let a=A(e),t=a.find(e=>e.id===K)||a[0];B(t?.provider||R),q(t?.id||""),H(t?P(t):{}),"text-to-image"===e&&(Y([]),ee([]))},children:(0,a.jsx)(k.TabsList,{className:"grid w-full grid-cols-2 rounded-full bg-zinc-950/8 p-1 dark:bg-emerald-50/8",children:C.map(e=>(0,a.jsx)(k.TabsTrigger,{value:e.value,className:"rounded-full data-[state=active]:bg-zinc-950 data-[state=active]:text-emerald-50 dark:data-[state=active]:bg-emerald-300 dark:data-[state=active]:text-slate-950",children:$(`tabs.${e.value}`)},e.value))})}),(0,a.jsx)("div",{className:"grid grid-cols-1 gap-4",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{children:$("form.model")}),(0,a.jsxs)(N.Select,{value:K,onValueChange:e=>{let a=T.find(a=>a.id===e&&a.modes.some(e=>e.mode===D));q(e),B(a?.provider||R),H(a?P(a):{})},children:[(0,a.jsx)(N.SelectTrigger,{className:"w-full border-zinc-950/10 bg-white/45 text-zinc-950 dark:border-emerald-100/15 dark:bg-black/20 dark:text-emerald-50",children:(0,a.jsx)(N.SelectValue,{placeholder:$("form.select_model")})}),(0,a.jsx)(N.SelectContent,{children:eA.map(e=>(0,a.jsx)(N.SelectItem,{value:e.id,children:e.label},e.id))})]})]})}),ez&&ez.options.length>0&&(0,a.jsx)("div",{className:"grid grid-cols-2 gap-4",children:ez.options.map(e=>{var t,r;let s;return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{children:(t=e.name,r=e.label,s=`options.labels.${t}`,$.has(s)?$(s):r)}
6),"select"===e.type?(0,a.jsxs)(N.Select,{value:String(J[e.name]),onValueChange:a=>eV(e.name,a),children:[(0,a.jsx)(N.SelectTrigger,{className:"w-full border-zinc-950/10 bg-white/45 text-zinc-950 dark:border-emerald-100/15 dark:bg-black/20 dark:text-emerald-50",children:(0,a.jsx)(N.SelectValue,{})}),(0,a.jsx)(N.SelectContent,{children:e.values?.map(t=>{var r,s,l;let i;return(0,a.jsx)(N.SelectItem,{value:String(t.value),children:(r=e.name,s=t.value,l=t.label,i=`options.values.${r}.${String(s)}`,$.has(i)?$(i):l)},String(t.value))})})]}):(0,a.jsx)(j.Input,{className:"border-zinc-950/10 bg-white/45 text-zinc-950 dark:border-emerald-100/15 dark:bg-black/20 dark:text-emerald-50",type:"number",value:J[e.name]??"",min:e.min,max:e.max,step:e.step,onChange:a=>eV(e.name,a.target.value)})]},e.name)})}),eM&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(x.ImageUploader,{title:$("form.reference_image"),allowMultiple:e&&eF>1,maxImages:e?Math.min(eF,_):1,maxSizeMB:I,onChange:eO,emptyHint:$("form.reference_image_placeholder")}),eG&&(0,a.jsx)("p",{className:"text-destructive text-xs",children:$("form.some_images_failed_to_upload")})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(y.Label,{htmlFor:"image-prompt",children:$("form.prompt")}),(0,a.jsx)(S.Textarea,{id:"image-prompt",value:X,onChange:e=>Q(e.target.value),placeholder:$("form.prompt_placeholder"),className:"min-h-32 border-zinc-950/10 bg-white/45 text-zinc-950 placeholder:text-zinc-950/35 dark:border-emerald-100/15 dark:bg-black/20 dark:text-emerald-50 dark:placeholder:text-emerald-50/35"}),(0,a.jsxs)("div",{className:"text-muted-foreground flex items-center justify-between text-xs",children:[(0,a.jsxs)("span",{children:[eC," / ",2e3]}),eE&&(0,a.jsx)("span",{className:"text-destructive",children:$("form.prompt_too_long")})]})]}),eb?eS?(0,a.jsxs)(v.Button,{className:"w-full rounded-full",disabled:!0,size:"lg",children:[(0,a.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),$("checking_account")]}):ek?(0,a.jsx)(v.Button,{size:"lg",className:"w-full rounded-full bg-zinc-950 text-emerald-50 shadow-lg shadow-emerald-950/20 hover:bg-zinc-800 dark:bg-emerald-300 dark:text-slate-950 dark:shadow-black/30 dark:hover:bg-emerald-200",onClick:eK,disabled:el||!X.trim()||eE||eD||eG,children:el?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),$("generating")]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.Sparkles,{className:"mr-2 h-4 w-4"}),$("generate")]})}):(0,a.jsxs)(v.Button,{size:"lg",className:"w-full rounded-full bg-zinc-950 text-emerald-50 shadow-lg shadow-emerald-950/20 hover:bg-zinc-800 dark:bg-emerald-300 dark:text-slate-950 dark:shadow-black/30 dark:hover:bg-emerald-200",onClick:()=>e_(!0),children:[(0,a.jsx)(d.User,{className:"mr-2 h-4 w-4"}),$("sign_in_to_generate")]}):(0,a.jsxs)(v.Button,{className:"w-full rounded-full",disabled:!0,size:"lg",children:[(0,a.jsx)(i.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),$("loading")]}),eb?ek&&eT>0?(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-zinc-950 dark:text-emerald-300",children:$("credits_cost",{credits:eU})}),(0,a.jsx)("span",{children:$("credits_remaining",{credits:eT})})]}):(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-zinc-950 dark:text-emerald-300",children:$("credits_cost",{credits:eU})}),(0,a.jsx)("span",{children:$("credits_remaining",{credits:eT})})]}),(0,a.jsx)(p.Link,{href:"/pricing",children:(0,a.jsxs)(v.Button,{variant:"outline",className:"w-full rounded-full border-zinc-950/10 bg-white/35 text-zinc-950 hover:bg-emerald-200/35 dark:border-emerald-100/15 dark:bg-emerald-50/5 dark:text-emerald-50 dark:hover:bg-emerald-300/10",size:"lg",children:[(0,a.jsx)(r.CreditCard,{className:"mr-2 h-4 w-4"}),$("buy_credits")]})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-zinc-950 dark:text-emerald-300",children:$("credits_cost",{credits:eU})}),(0,a.jsx)("span",{children:$("credits_remaining",{credits:0})})]}),el&&(0,a.jsxs)("div",{className:"space-y-2 rounded-2xl border border-zinc-950/10 bg-white/35 p-4 dark:border-emerald-100/10 dark:bg-emerald-50/5",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{children:$("progress")}),(0,a.jsxs)("span",{children:[en,"%"]})]}),(0,a.jsx)(w.Progress,{value:en}),e$&&(0,a.jsx)("p",{className:"text-muted-foreground text-center text-xs",children:e$})]})]})]})}),(0,a.jsxs)("main",{className:"grid min-h-0 gap-3 lg:gap-4",children:[(0,a.jsxs)("section",{className:"relative flex h-[clamp(360px,64dvh,760px)] min-h-0 overflow-hidden border border-zinc-950/10 bg-[#f4fbf8]/64 p-4 shadow-2xl shadow-emerald-950/15 backdrop-blur-xl dark:border-emerald-100/10 dark:bg-[#101413]/68 dark:shadow-black/50",children:[ea.length>0&&(0,a.jsxs)("span",{className:"absolute top-4 right-4 z-10 rounded-full border border-zinc-950/10 bg-white/65 px-3 py-1 text-xs text-zinc-950/55 backdrop-blur dark:border-emerald-100/10 dark:bg-black/45 dark:text-emerald-50/55",children:[ea.length," image",ea.length>
61?"s":""]}),ea.length>0?(0,a.jsx)("div",{className:(0,L.cn)("grid min-h-0 flex-1 gap-4",1===ea.length?"grid-cols-1":"grid-cols-1 md:grid-cols-2"),children:ea.map(e=>(0,a.jsxs)("div",{className:"relative flex min-h-0 items-center justify-center overflow-hidden",children:[(0,a.jsxs)("button",{type:"button",className:"group flex h-full w-full cursor-zoom-in items-center justify-center",onClick:()=>ev(e),"aria-label":"Open image preview",children:[(0,a.jsx)("img",{src:e.url,alt:e.prompt||"Generated image",className:"block h-auto max-h-full w-auto max-w-full object-contain"}),(0,a.jsx)("span",{className:"absolute top-3 left-3 rounded-full bg-white/65 p-2 text-zinc-950 opacity-0 backdrop-blur transition-opacity group-hover:opacity-100 dark:bg-black/45 dark:text-emerald-50",children:(0,a.jsx)(n.default,{className:"h-4 w-4"})})]}),(0,a.jsx)("div",{className:"absolute right-3 bottom-3 flex justify-end text-sm",children:(0,a.jsx)(v.Button,{size:"sm",variant:"ghost",className:"ml-auto rounded-full bg-white/65 text-zinc-950 backdrop-blur hover:bg-emerald-200/40 dark:bg-black/45 dark:text-emerald-50 dark:hover:bg-emerald-300/20",onClick:()=>eq(e),disabled:eh===e.id,children:eh===e.id?(0,a.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(s.Download,{className:"h-4 w-4"})})})]},e.id))}):(0,a.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center text-center",children:[(0,a.jsx)("div",{className:"mb-4 flex h-20 w-20 items-center justify-center rounded-full bg-zinc-950/10 dark:bg-emerald-300/10",children:(0,a.jsx)(l.ImageIcon,{className:"h-11 w-11 text-zinc-900/55 dark:text-emerald-200/70"})}),(0,a.jsx)("p",{className:"text-zinc-950/55 dark:text-emerald-50/55",children:el?$("ready_to_generate"):$("no_images_generated")})]})]}),(0,a.jsxs)("section",{className:"flex h-[220px] overflow-hidden border border-zinc-950/10 bg-[#f4fbf8]/64 p-4 shadow-2xl shadow-emerald-950/10 backdrop-blur-xl dark:border-emerald-100/10 dark:bg-[#101413]/68 dark:shadow-black/40",children:[(0,a.jsx)("div",{ref:ew,onPointerDown:e=>{0===e.button&&ew.current&&(eN.current={isDragging:!0,startX:e.clientX,startScrollLeft:ew.current.scrollLeft,moved:!1,suppressClick:!1})},onPointerMove:e=>{let a=eN.current;if(!a.isDragging||!ew.current)return;let t=e.clientX-a.startX;Math.abs(t)>4&&(a.moved=!0,a.suppressClick=!0),ew.current.scrollLeft=a.startScrollLeft-t},onPointerUp:eH,onPointerCancel:eH,onPointerLeave:eH,className:"scrollbar-hide h-full min-w-0 flex-1 cursor-grab overflow-x-auto overflow-y-hidden active:cursor-grabbing",children:eJ.length>0?(0,a.jsx)("div",{className:"flex h-full gap-3",children:eJ.map(e=>(0,a.jsxs)("button",{type:"button",onClick:a=>{if(eN.current.suppressClick){a.preventDefault(),a.stopPropagation(),eN.current.suppressClick=!1,eN.current.moved=!1;return}et([e])},className:"group relative h-full w-36 shrink-0 overflow-hidden border border-zinc-950/10 bg-white/35 sm:w-44 dark:border-emerald-100/10 dark:bg-black/20",children:[(0,a.jsx)(f.LazyImage,{src:e.url,alt:e.prompt||"Generated image",wrapperClassName:"block h-full w-full",className:"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105"}),(0,a.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/35 to-transparent opacity-0 transition-opacity group-hover:opacity-100"})]},e.id))}):(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-zinc-950/45 dark:text-emerald-50/45",children:$("history_empty")})}),(0,a.jsx)(p.Link,{href:"/activity/images",className:"group ml-3 flex h-full w-12 shrink-0 items-center justify-center border border-zinc-950/10 bg-white/25 text-zinc-950/55 transition-colors hover:bg-emerald-200/35 hover:text-zinc-950 dark:border-emerald-100/10 dark:bg-black/20 dark:text-emerald-50/55 dark:hover:bg-emerald-300/10 dark:hover:text-emerald-50","aria-label":$("view_more"),title:$("view_more"),children:(0,a.jsx)(c.default,{className:"h-5 w-5"})})]})]})]}),(0,a.jsx)(b.Dialog,{open:!!ef,onOpenChange:e=>{e||ev(null)},children:(0,a.jsxs)(b.DialogContent,{showCloseButton:!1,className:"max-w-[calc(100vw-2rem)] border-white/10 bg-black/90 p-3 shadow-2xl sm:max-w-[calc(100vw-3rem)]",children:[(0,a.jsx)("button",{type:"button",onClick:()=>ev(null),className:"absolute top-4 right-4 z-10 flex h-10 w-10 items-center justify-center rounded-full bg-white/90 text-zinc-950 shadow-lg shadow-black/30 transition-colors hover:bg-white","aria-label":"Close image preview",children:(0,a.jsx)(m.X,{className:"h-5 w-5"})}),(0,a.jsx)(b.DialogTitle,{className:"sr-only",children:"Image preview"}),(0,a.jsx)("div",{className:"flex h-[calc(100dvh-4rem)] w-full items-center justify-center",children:ef&&(0,a.jsx)("img",{src:ef.url,alt:ef.prompt||"Generated image",className:"block max-h-full max-w-full object-contain"})})]})})]})}e.s(["ImageGenerator",()=>F],37181)},548728,e=>{"use strict";var a=e.i(466471),t=e.i(884702),r=e.i(697743),s=e.i(910776),l=e.i(462297),i=e.i(550573),n=e.i(39973),o=e.i(292909),o=o,d=e.i(247835),c=e.i(779342),m=e.i(199978),u=e.i(293966);e.i(741820);var g=e.i(561444),p=e.i(511398),h=e.i(686247),x=e.i(273792),f=e.i(901017),v=e.i(638678),b=e.i(330771),j=e.i(622491),y=e.i(960568);let w=[{value:"google/veo-3.1",label:"Veo 3.1",provider:"replicate",scenes:["text-to-vi
6deo","image-to-video"]},{value:"openai/sora-2",label:"Sora 2",provider:"replicate",scenes:["text-to-video","image-to-video"]},{value:"fal-ai/veo3",label:"Veo 3",provider:"fal",scenes:["text-to-video"]},{value:"fal-ai/wan-pro/image-to-video",label:"Wan Pro",provider:"fal",scenes:["image-to-video"]},{value:"fal-ai/kling-video/o1/video-to-video/edit",label:"Kling Video O1",provider:"fal",scenes:["video-to-video"]},{value:"sora-2-pro-image-to-video",label:"Sora 2 Pro",provider:"kie",scenes:["image-to-video"]},{value:"sora-2-pro-text-to-video",label:"Sora 2 Pro",provider:"kie",scenes:["text-to-video"]}],N=[{value:"replicate",label:"Replicate"},{value:"fal",label:"Fal"},{value:"kie",label:"Kie"}];function k(e){if(!e)return null;try{return JSON.parse(e)}catch(e){return console.warn("Failed to parse taskResult:",e),null}}function S(e){if(!e)return[];let a=e.videos;if(a&&Array.isArray(a))return a.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 a=e.url??e.uri??e.video??e.src??e.videoUrl;return"string"==typeof a?[a]:[]}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 _({maxSizeMB:e=50,srOnlyTitle:_}){let I=(0,d.useTranslations)("ai.video.generator"),[C,T]=(0,t.useState)("text-to-video"),[E,P]=(0,t.useState)(6),[z,L]=(0,t.useState)(N[0]?.value??""),[A,U]=(0,t.useState)(w[0]?.value??""),[M,F]=(0,t.useState)(""),[V,$]=(0,t.useState)([]),[O,D]=(0,t.useState)([]),[G,R]=(0,t.useState)(""),[B,K]=(0,t.useState)([]),[q,J]=(0,t.useState)(!1),[H,X]=(0,t.useState)(0),[Q,W]=(0,t.useState)(null),[Y,Z]=(0,t.useState)(null),[ee,ea]=(0,t.useState)(null),[et,er]=(0,t.useState)(null),[es,el]=(0,t.useState)(!1),{user:ei,isCheckSign:en,setIsShowSignModal:eo,fetchUserCredits:ed}=(0,y.useAppContext)();(0,t.useEffect)(()=>{el(!0)},[]);let ec=M.trim().length,em=ei?.credits?.remainingCredits??0,eu=ec>2e3,eg="text-to-video"===C,ep="image-to-video"===C,eh="video-to-video"===C,ex=(0,t.useMemo)(()=>{if(!ee)return"";switch(ee){case u.AITaskStatus.PENDING:return"Waiting for the model to start";case u.AITaskStatus.PROCESSING:return"Generating your video...";case u.AITaskStatus.SUCCESS:return"Video generation completed";case u.AITaskStatus.FAILED:return"Generation failed";default:return""}},[ee]),ef=(0,t.useCallback)(e=>{$(e),D(e.filter(e=>"uploaded"===e.status&&e.url).map(e=>e.url))},[]),ev=(0,t.useMemo)(()=>V.some(e=>"uploading"===e.status),[V]),eb=(0,t.useMemo)(()=>V.some(e=>"error"===e.status),[V]),ej=(0,t.useCallback)(()=>{J(!1),X(0),W(null),Z(null),ea(null)},[]),ey=(0,t.useCallback)(async e=>{try{if(Y&&Date.now()-Y>6e5)return ej(),c.toast.error("Video generation timed out. Please try again."),!0;let a=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!a.ok)throw Error(`request failed with status: ${a.status}`);let{code:t,message:r,data:s}=await a.json();if(0!==t)throw Error(r||"Query task failed");let l=s.status;ea(l);let i=k(s.taskInfo),n=S(i);if(l===u.AITaskStatus.PENDING)return X(e=>Math.max(e,20)),!1;if(l===u.AITaskStatus.PROCESSING)return n.length>0?(K(n.map((e,a)=>({id:`${s.id}-${a}`,taskId:s.id,url:e,provider:s.provider,model:s.model,prompt:s.prompt??void 0}))),X(e=>Math.max(e,85))):X(e=>Math.min(e+5,80)),!1;if(l===u.AITaskStatus.SUCCESS)return 0===n.length?c.toast.error("The provider returned no videos. Please retry."):(K(n.map((e,a)=>({id:`${s.id}-${a}`,taskId:s.id,url:e,provider:s.provider,model:s.model,prompt:s.prompt??void 0}))),c.toast.success("Video generated successfully")),X(100),ej(),!0;if(l===u.AITaskStatus.FAILED){let e=i?.errorMessage||"Generate video failed";return c.toast.error(e),ej(),ed(),!0}return X(e=>Math.min(e+3,95)),!1}catch(e){return console.error("Error polling video task:",e),c.toast.error(`Query task failed: ${e.message}`),ej(),ed(),!0}},[Y,ej]);(0,t.useEffect)(()=>
6{if(!Q||!q)return;let e=!1;(async()=>{!Q||await ey(Q)&&(e=!0)})();let a=setInterval(async()=>{e||!Q?clearInterval(a):await ey(Q)&&clearInterval(a)},15e3);return()=>{e=!0,clearInterval(a)}},[Q,q,ey]);let ew=async()=>{if(!ei)return void eo(!0);if(em<E)return void c.toast.error("Insufficient credits. Please top up to keep creating.");let e=M.trim();if(!e&&eg)return void c.toast.error("Please enter a prompt before generating.");if(!z||!A)return void c.toast.error("Provider or model is not configured correctly.");if(ep&&0===O.length)return void c.toast.error("Please upload a reference image before generating.");if(eh&&!G)return void c.toast.error("Please provide a reference video URL before generating.");J(!0),X(15),ea(u.AITaskStatus.PENDING),K([]),Z(Date.now());try{let a={};ep&&(a.image_input=O),eh&&(a.video_input=[G]);let t=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:u.AIMediaType.VIDEO,scene:C,provider:z,model:A,prompt:e,options:a})});if(!t.ok)throw Error(`request failed with status: ${t.status}`);let{code:r,message:s,data:l}=await t.json();if(0!==r)throw Error(s||"Failed to create a video task");let i=l?.id;if(!i)throw Error("Task id missing in response");if(l.status===u.AITaskStatus.SUCCESS&&l.taskInfo){let a=k(l.taskInfo),t=S(a);if(t.length>0){K(t.map((a,t)=>({id:`${i}-${t}`,taskId:i,url:a,provider:z,model:A,prompt:e}))),c.toast.success("Video generated successfully"),X(100),ej(),await ed();return}}W(i),X(25),await ed()}catch(e){console.error("Failed to generate video:",e),c.toast.error(`Failed to generate video: ${e.message}`),ej()}},eN=async e=>{if(e.url)try{let a=e.taskId||e.id.split("-")[0];if(!a)throw Error("Missing video task id");let t=new URLSearchParams({url:e.url,taskId:a,filename:`${e.id}.mp4`});er(e.id);let r=await fetch(`/api/proxy/file?${t.toString()}`);if(!r.ok)throw Error("Failed to fetch video");let s=await r.blob(),l=URL.createObjectURL(s),i=document.createElement("a");i.href=l,i.download=`${e.id}.mp4`,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(l),200),c.toast.success("Video downloaded")}catch(e){console.error("Failed to download video:",e),c.toast.error("Failed to download video")}finally{er(null)}};return(0,a.jsx)("section",{className:"py-16 md:py-24",children:(0,a.jsx)("div",{className:"container",children:(0,a.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[(0,a.jsxs)(h.Card,{children:[(0,a.jsxs)(h.CardHeader,{children:[_&&(0,a.jsx)("h2",{className:"sr-only",children:_}),(0,a.jsx)(h.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:I("title")})]}),(0,a.jsxs)(h.CardContent,{className:"space-y-6 pb-8",children:[(0,a.jsx)(b.Tabs,{value:C,onValueChange:e=>{T(e);let a=w.filter(a=>a.scenes.includes(e)&&a.provider===z);a.length>0?U(a[0].value):U(""),"text-to-video"===e?P(6):"image-to-video"===e?P(8):"video-to-video"===e&&P(10)},children:(0,a.jsxs)(b.TabsList,{className:"bg-primary/10 grid w-full grid-cols-3",children:[(0,a.jsx)(b.TabsTrigger,{value:"text-to-video",children:I("tabs.text-to-video")}),(0,a.jsx)(b.TabsTrigger,{value:"image-to-video",children:I("tabs.image-to-video")}),(0,a.jsx)(b.TabsTrigger,{value:"video-to-video",children:I("tabs.video-to-video")})]})}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(x.Label,{children:I("form.provider")}),(0,a.jsxs)(v.Select,{value:z,onValueChange:e=>{L(e);let a=w.filter(a=>a.scenes.includes(C)&&a.provider===e);a.length>0?U(a[0].value):U("")},children:[(0,a.jsx)(v.SelectTrigger,{className:"w-full",children:(0,a.jsx)(v.SelectValue,{placeholder:I("form.select_provider")})}),(0,a.jsx)(v.SelectContent,{children:N.map(e=>(0,a.jsx)(v.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(x.Label,{children:I("form.model")}),(0,a.jsxs)(v.Select,{value:A,onValueChange:U,children:[(0,a.jsx)(v.SelectTrigger,{className:"w-full",children:(0,a.jsx)(v.SelectValue,{placeholder:I("form.select_model")})}),(0,a.jsx)(v.SelectContent,{children:w.filter(e=>e.scenes.includes(C)&&e.provider===z).map(e=>(0,a.jsx)(v.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),ep&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)(g.ImageUploader,{title:I("form.reference_image"),allowMultiple:!0,maxImages:3,maxSizeMB:e,onChange:ef,emptyHint:
6I("form.reference_image_placeholder")}),eb&&(0,a.jsx)("p",{className:"text-destructive text-xs",children:I("form.some_images_failed_to_upload")})]}),eh&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(x.Label,{htmlFor:"video-url",children:I("form.reference_video")}),(0,a.jsx)(j.Textarea,{id:"video-url",value:G,onChange:e=>R(e.target.value),placeholder:I("form.reference_video_placeholder"),className:"min-h-20"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(x.Label,{htmlFor:"video-prompt",children:I("form.prompt")}),(0,a.jsx)(j.Textarea,{id:"video-prompt",value:M,onChange:e=>F(e.target.value),placeholder:I("form.prompt_placeholder"),className:"min-h-32"}),(0,a.jsxs)("div",{className:"text-muted-foreground flex items-center justify-between text-xs",children:[(0,a.jsxs)("span",{children:[ec," / ",2e3]}),eu&&(0,a.jsx)("span",{className:"text-destructive",children:I("form.prompt_too_long")})]})]}),es?en?(0,a.jsxs)(p.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,a.jsx)(l.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),I("checking_account")]}):ei?(0,a.jsx)(p.Button,{size:"lg",className:"w-full",onClick:ew,disabled:q||eg&&!M.trim()||eu||ev||eb||ep&&0===O.length||eh&&!G,children:q?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),I("generating")]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.Sparkles,{className:"mr-2 h-4 w-4"}),I("generate")]})}):(0,a.jsxs)(p.Button,{size:"lg",className:"w-full",onClick:()=>eo(!0),children:[(0,a.jsx)(n.User,{className:"mr-2 h-4 w-4"}),I("sign_in_to_generate")]}):(0,a.jsxs)(p.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,a.jsx)(l.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),I("loading")]}),es?ei&&em>0?(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-primary",children:I("credits_cost",{credits:E})}),(0,a.jsx)("span",{children:I("credits_remaining",{credits:em})})]}):(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-primary",children:I("credits_cost",{credits:E})}),(0,a.jsx)("span",{children:I("credits_remaining",{credits:em})})]}),(0,a.jsx)(m.Link,{href:"/pricing",children:(0,a.jsxs)(p.Button,{variant:"outline",className:"w-full",size:"lg",children:[(0,a.jsx)(r.CreditCard,{className:"mr-2 h-4 w-4"}),I("buy_credits")]})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{className:"text-primary",children:I("credits_cost",{credits:E})}),(0,a.jsx)("span",{children:I("credits_remaining",{credits:0})})]}),q&&(0,a.jsxs)("div",{className:"space-y-2 rounded-lg border p-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,a.jsx)("span",{children:I("progress")}),(0,a.jsxs)("span",{children:[H,"%"]})]}),(0,a.jsx)(f.Progress,{value:H}),ex&&(0,a.jsx)("p",{className:"text-muted-foreground text-center text-xs",children:ex})]})]})]}),(0,a.jsxs)(h.Card,{children:[(0,a.jsx)(h.CardHeader,{children:(0,a.jsxs)(h.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:[(0,a.jsx)(o.default,{className:"h-5 w-5"}),I("generated_videos")]})}),(0,a.jsx)(h.CardContent,{className:"pb-8",children:B.length>0?(0,a.jsx)("div",{className:"space-y-6",children:B.map(e=>(0,a.jsx)("div",{className:"space-y-3",children:(0,a.jsxs)("div",{className:"relative overflow-hidden rounded-lg border",children:[(0,a.jsx)("video",{src:e.url,controls:!0,className:"h-auto w-full",preload:"metadata"}),(0,a.jsx)("div",{className:"absolute right-2 bottom-2 flex justify-end text-sm",children:(0,a.jsx)(p.Button,{size:"sm",variant:"ghost",className:"ml-auto",onClick:()=>eN(e),disabled:et===e.id,children:et===e.id?(0,a.jsx)(a.Fragment,{children:(0,a.jsx)(l.Loader2,{className:"h-4 w-4 animate-spin"})}):(0,a.jsx)(a.Fragment,{children:(0,a.jsx)(s.Download,{className:"h-4 w-4"})})})})]})},e.id))}):(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,a.jsx)("div",{className:"bg-muted mb-4 flex h-16 w-16 items-center justify-center rounded-full",children:(0,a.jsx)(o.default,{className:"text-muted-foreground h-10 w-10"})}),(0,a.jsx)("p",{className:"text-muted-foreground",children:I(q?"ready_to_generate":"no_videos_generated")})]})})]})]})})})})}e.s(["VideoGenerator",()=>_],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.