PageSourceSearch

https://www.kling4.co/_next/static/chunks/e140798d22e659ec.js?dpl=dpl_73C6mAfgdCMGKuXjFccnpAMGHhTn

js kling4.co collected 2026-09-24 12:20:17 UTC 37,115 bytes, 1 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,22448,e=>{"use strict";var r=e.i(466471),t=e.i(884702),a=e.i(128686),a=a,s=e.i(266925),s=s,l=e.i(697743),i=e.i(910776),n=e.i(462297),o=e.i(709237),o=o,c=e.i(55871),d=e.i(283422),m=e.i(39973),u=e.i(247835),g=e.i(779342),h=e.i(199978),x=e.i(293966),p=e.i(24963),f=e.i(615978),j=e.i(511398),v=e.i(686247),N=e.i(118621),b=e.i(273792),y=e.i(901017),w=e.i(638678),_=e.i(534522),S=e.i(622491),k=e.i(960568),C=e.i(873613),I=e.i(526683),E=e.i(888);function T({className:e,srOnlyTitle:T}){let L=(0,u.useTranslations)("ai.music"),{user:M,isCheckSign:U,setIsShowSignModal:A,setIsShowCreditsModal:G,fetchUserCredits:F}=(0,k.useAppContext)(),[O,V]=(0,t.useState)("kie"),[P,z]=(0,t.useState)("V5"),[B,$]=(0,t.useState)(!1),[D,R]=(0,t.useState)(""),[q,K]=(0,t.useState)(""),[H,J]=(0,t.useState)(!1),[Q,W]=(0,t.useState)(""),[Y,X]=(0,t.useState)(""),[Z,ee]=(0,t.useState)(!1),[er,et]=(0,t.useState)(null),[ea,es]=(0,t.useState)(0),[el,ei]=(0,t.useState)([]),[en,eo]=(0,t.useState)(null),[ec,ed]=(0,t.useState)(null),[em,eu]=(0,t.useState)(!1),[eg,eh]=(0,t.useState)(!1),ex=(0,t.useRef)(null),[ep,ef]=(0,t.useState)(!1);(0,t.useEffect)(()=>{ef(!0)},[]);let ej=async e=>{try{if(ec&&Date.now()-ec>18e4)return es(0),ee(!1),ed(null),g.toast.error(L("generator.error_timeout")),!0;let r=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!r.ok)throw Error(`request failed with status: ${r.status}`);let{code:t,message:a,data:s}=await r.json();if(0!==t)throw Error(a);let{status:l,taskInfo:i}=s;if(!l||!i)throw Error("Query task info failed");let{errorCode:n,errorMessage:o,songs:c}=JSON.parse(i);if(n||o)throw Error(o);if(l===x.AITaskStatus.PENDING)return es(10),!1;if(l===x.AITaskStatus.PROCESSING){es(20);let e=c.some(e=>e.imageUrl),r=c.some(e=>e.audioUrl);if(e)return es(60),ei(c),!1;return r&&(es(85),ei(c)),!1}if(l===x.AITaskStatus.FAILED||l===x.AITaskStatus.CANCELED)return es(0),ee(!1),ed(null),g.toast.error(L("generator.error_generate_failed",{error:o})),(0,E.trackEvent)("Music_Generate_Fail",{model:P,error:o||""}),F(),!0;if(l===x.AITaskStatus.SUCCESS){ei(c);let e=ec?Math.round((Date.now()-ec)/1e3):0;return(0,E.trackEvent)("Music_Generate_Success",{model:P,duration_seconds:e}),es(100),ee(!1),ed(null),!0}return es(e=>Math.min(e+3,80)),!1}catch(e){return console.error("Error polling task:",e),ee(!1),es(0),ed(null),g.toast.error(L("generator.error_create_failed",{error:e.message})),F(),!0}};(0,C.useTaskPoll)({taskId:er,active:Z,poll:ej,interval:1e4});let ev=async()=>{if(!M){(0,E.trackEvent)("Sign_Modal_Open",{trigger:"music_generate"}),A(!0);return}if(!M.credits||M.credits.remainingCredits<10){(0,E.trackEvent)("Insufficient_Credits",{required:10,remaining:M.credits?.remainingCredits??0}),G(!0);return}if(!O||!P)return void g.toast.error(L("generator.error_invalid_provider"));if(B){if(!D||!q)return void g.toast.error(L("generator.error_enter_title_style"));if(!H&&!Q)return void g.toast.error(L("generator.error_enter_lyrics"))}else if(!Y)return void g.toast.error(L("generator.error_enter_prompt"));let e={mediaType:"music",provider:O,model:P};B?(e.options={customMode:!0,style:q,title:D,instrumental:H},H||(e.options.lyrics=Q)):(e.prompt=Y,e.options={customMode:!1,instrumental:H}),ee(!0),es(10),ei([]),eo(null),ed(Date.now()),(0,E.trackEvent)("Music_Generate",{model:P,custom_mode:B});try{let e=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:"music",provider:O,model:P,prompt:Y,options:{style:q,title:D,lyrics:Q,customMode:B,instrumental:H}})});if(!e.ok)throw Error(`request failed with status: ${e.status}`);let{code:r,message:t,data:a}=await e.json();if(0!==r)throw Error(t||"Failed to generate music");let{id:s}=a;if(!s)throw Error("Failed to generate music");await F(),(0,E.trackEvent)("Music_Task_Created",{model:P,custom_mode:B}),et(s),es(20)}catch(e){(0,E.trackEvent)("Music_Generate_Fail",{model:P}),g.toast.error(L("generator.error_generation_failed",{error:e.message})),ee(!1),es(0),ed(null)}},eN=async e=>{if(e?.audioUrl){eh(!0);try{if(ex.current&&!ex.current.paused&&ex.current.pause(),en?.id===e.id&&em){eu(!1),eo(null),eh(!1);return}
1ex.current=new Audio(e.audioUrl),ex.current.addEventListener("ended",()=>{eu(!1),eo(null)}),ex.current.addEventListener("error",e=>{console.error("Audio playback error:",e),eh(!1),eu(!1),eo(null)}),await ex.current.play(),eu(!0),eo(e),eh(!1)}catch(e){console.error("Failed to play audio:",e),eh(!1),eu(!1),eo(null)}}},eb=async e=>{if(e?.audioUrl)try{g.toast.info(L("generator.downloading"));let r=await fetch(`/api/proxy/file?url=${encodeURIComponent(e.audioUrl)}`);if(!r.ok)throw Error("Failed to fetch audio file");let t=await r.blob(),a=URL.createObjectURL(t),s=document.createElement("a");s.href=a,s.download=`${e.title}.mp3`,document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout(()=>URL.revokeObjectURL(a),100),(0,E.trackEvent)("Music_Download",{source:"generator"}),g.toast.success(L("generator.download_success"))}catch(e){console.error("Failed to download audio:",e),g.toast.error(L("generator.download_failed"))}};return(0,r.jsxs)("section",{id:"create",className:(0,I.cn)("py-16 md:py-24",e),children:[T&&(0,r.jsx)("h2",{className:"sr-only",children:T}),(0,r.jsx)("div",{className:"container",children:(0,r.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-2",children:[(0,r.jsxs)(v.Card,{children:[(0,r.jsx)(v.CardHeader,{children:(0,r.jsx)(v.CardTitle,{className:"flex items-center gap-2",children:L("generator.title")})}),(0,r.jsx)(v.CardContent,{className:"space-y-6",children:(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(_.Switch,{checked:B,onCheckedChange:$}),(0,r.jsx)(b.Label,{children:L("generator.form.custom_mode")})]}),(0,r.jsx)("div",{className:"flex-1"}),(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsx)(b.Label,{children:L("generator.form.model")}),(0,r.jsxs)(w.Select,{value:P,onValueChange:z,children:[(0,r.jsx)(w.SelectTrigger,{className:"w-32",children:(0,r.jsx)(w.SelectValue,{})}),(0,r.jsxs)(w.SelectContent,{children:[(0,r.jsx)(w.SelectItem,{value:"V5",children:"Suno V5"}),(0,r.jsx)(w.SelectItem,{value:"V4_5PLUS",children:"Suno V4.5+"}),(0,r.jsx)(w.SelectItem,{value:"V4_5",children:"Suno V4.5"}),(0,r.jsx)(w.SelectItem,{value:"V4",children:"Suno V4"}),(0,r.jsx)(w.SelectItem,{value:"V3_5",children:"Suno V3.5"})]})]})]})]})}),(0,r.jsxs)(v.CardContent,{className:"space-y-6",children:[B&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(b.Label,{htmlFor:"title",children:L("generator.form.title")}),(0,r.jsx)(N.Input,{id:"title",placeholder:L("generator.form.title_placeholder"),value:D,onChange:e=>R(e.target.value)})]}),B&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(b.Label,{htmlFor:"style",children:L("generator.form.style")}),(0,r.jsx)(S.Textarea,{id:"style",placeholder:L("generator.form.style_placeholder"),value:q,onChange:e=>K(e.target.value),className:"min-h-24"}),(0,r.jsxs)("div",{className:"text-muted-foreground text-right text-sm",children:[q.length,"/1000"]})]}),!B&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(b.Label,{htmlFor:"prompt",children:L("generator.form.prompt")}),(0,r.jsx)(S.Textarea,{id:"prompt",placeholder:L("generator.form.prompt_placeholder"),value:Y,onChange:e=>X(e.target.value),className:"min-h-32",required:!0})]}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,r.jsx)(_.Switch,{id:"instrumental",checked:H,onCheckedChange:J}),(0,r.jsx)(b.Label,{htmlFor:"instrumental",children:L("generator.form.instrumental")})]}),B&&!H&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(b.Label,{htmlFor:"lyrics",children:L("generator.form.lyrics")}),(0,r.jsx)(S.Textarea,{id:"lyrics",placeholder:L("generator.form.lyrics_placeholder"),value:Q,onChange:e=>W(e.target.value),className:"min-h-32"})]}),ep?U?(0,r.jsxs)(j.Button,{className:"w-full",size:"lg",children:[(0,r.jsx)(n.Loader2,{className:"size-4 animate-spin"})," ",L("generator.loading")]}):M?(0,r.jsx)(j.Button,{onClick:ev,disabled:Z,className:"w-full",size:"lg",children:Z?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),L("generator.generating")]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.default,{className:"mr-2 h-4 w-4"}),L("generator.generate")]})}):(0,r.jsxs)(j.Button,{className:"w-full",size:"lg",onClick:()=>A(!0),children:[(0,r.jsx)(m.User,{className:"mr-2 h-4 w-4"})," ",L("generator.sign_in_to_generate")]}):(0,r.jsxs)(j.Button,{className:"w-full",size:"lg",disabled:!0,children:[(0,r.jsx)(o.default,{className:"mr-2 h-4 w-4"}),L("generator.generate")]}),ep?M&&M.credits&&M.credits.remainingCredits>0?(0,r.jsxs)("div",{className:"mb-6 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"text-primary",children:L("generator.credits_cost",{credits:10})}),(0,r.jsx)("span",{className:"text-foreground font-medium",children:L("generator.credits_remaining",{credits:M.credits.remainingCredits})})]}):(0,r.jsxs)("div",{className:"mb-6 flex items-center justify-between text-sm",children:[(0,r.jsxs)("span",{className:"text-primary",children:[L("generator.credits_cost",{credits:10}),","," ",L("generator.credits_remaining",{credits:M?.credits?.remainingCredits||0})]}),(0,r.jsx)(h.Link,{href:"/pricing",className:"group relative inline-flex",children:(0,r.jsxs)(j.Button,{className:"relative w-full",size:"lg",variant:"outline",children:[(0,r.jsx)(l.Credit
1Card,{className:"size-4"})," ",L("generator.buy_credits")]})})]}):(0,r.jsxs)("div",{className:"mb-6 flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"text-primary",children:L("generator.credits_cost",{credits:10})}),(0,r.jsx)("span",{className:"text-foreground font-medium",children:L("generator.credits_remaining",{credits:0})})]}),Z&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,r.jsx)("span",{children:L("generator.generation_progress")}),(0,r.jsx)("span",{children:`${ea}%`})]}),(0,r.jsx)(y.Progress,{value:ea,className:"w-full"}),(0,r.jsx)("p",{className:"text-muted-foreground text-center text-sm",children:L("generator.time_cost")})]})]})]}),(0,r.jsxs)(v.Card,{children:[(0,r.jsx)(v.CardHeader,{children:(0,r.jsxs)(v.CardTitle,{className:"flex items-center gap-2",children:[(0,r.jsx)(o.default,{className:"h-5 w-5"}),L("generator.generated_song")]})}),(0,r.jsx)(v.CardContent,{children:el.length>0?(0,r.jsx)("div",{className:"space-y-4",children:el.map((e,t)=>{var l;let u,g,h=en?.id===e.id&&em,x=en?.id===e.id&&eg;return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{className:"flex gap-4",children:[(0,r.jsxs)("div",{className:"relative flex-shrink-0",children:[(0,r.jsx)("div",{className:"bg-muted relative h-20 w-20 overflow-hidden rounded-lg",children:e.imageUrl?(0,r.jsx)(p.LazyImage,{src:e.imageUrl,alt:e.title,fill:!0,className:"object-cover"}):(0,r.jsx)("div",{className:"from-primary/20 to-accent/20 flex h-full w-full items-center justify-center bg-gradient-to-br",children:(0,r.jsx)(o.default,{className:"text-muted-foreground h-6 w-6"})})}),e.audioUrl&&(0,r.jsx)(j.Button,{size:"sm",variant:"secondary",className:"absolute top-6 right-6 h-8 w-8 rounded-full p-0 shadow-lg",onClick:()=>eN(e),disabled:x,children:x?(0,r.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin"}):h?(0,r.jsx)(c.Pause,{className:"h-3 w-3"}):(0,r.jsx)(d.Play,{className:"h-3 w-3"})})]}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("h3",{className:"text-foreground mb-1 text-lg font-semibold",children:e.title}),(0,r.jsxs)("div",{className:"text-muted-foreground mb-2 flex items-center gap-2 text-sm",children:[(0,r.jsx)(m.User,{className:"h-4 w-4"}),(0,r.jsx)("span",{children:e.artist}),(0,r.jsx)(s.default,{className:"ml-2 h-4 w-4"}),(0,r.jsx)("span",{children:(u=Math.floor((l=e.duration)/60),g=Math.floor(l%60),`${u}:${g.toString().padStart(2,"0")}`)})]}),(0,r.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,r.jsx)(f.Badge,{variant:"default",className:"text-xs",children:e.trim()},t))}),(0,r.jsx)("div",{className:"flex items-center gap-2 text-sm",children:e.audioUrl?(0,r.jsxs)("div",{className:"flex items-center gap-2 text-green-600",children:[(0,r.jsx)(a.default,{className:"h-4 w-4"}),(0,r.jsx)("span",{children:L("generator.ready_to_play")})]}):(0,r.jsxs)("div",{className:"flex items-center gap-2 text-yellow-600",children:[(0,r.jsx)(n.Loader2,{className:"h-4 w-4 animate-spin"}),(0,r.jsx)("span",{children:L("generator.audio_generating")})]})})]}),(0,r.jsx)("div",{className:"flex flex-col gap-2",children:e.audioUrl&&(0,r.jsx)(j.Button,{variant:"outline",size:"sm",onClick:()=>eb(e),children:(0,r.jsx)(i.Download,{className:"h-4 w-4"})})})]}),t<el.length-1&&(0,r.jsx)("div",{className:"border-t"})]},e.id)})}):(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)("div",{className:"bg-muted mb-4 flex h-16 w-16 items-center justify-center rounded-full",children:(0,r.jsx)(o.default,{className:"text-muted-foreground h-8 w-8"})}),(0,r.jsx)("p",{className:"text-muted-foreground mb-2",children:Z?L("generator.generating_song"):L("generator.no_song_generated")})]})})]})]})})})]})}e.s(["MusicGenerator",()=>T],22448)},37181,e=>{"use strict";var r=e.i(466471),t=e.i(884702),a=e.i(636680),s=e.i(654150),l=e.i(570172),i=e.i(866273),n=e.i(697743),o=e.i(910776),c=e.i(241051),d=e.i(169543),m=e.i(462297),u=e.i(550573),g=e.i(39973),h=e.i(247835),x=e.i(779342),p=e.i(199978),f=e.i(293966);e.i(741820);var j=e.i(561444),v=e.i(24963),N=e.i(511398),b=e.i(686247),y=e.i(273792),w=e.i(901017),_=e.i(638678),S=e.i(330771),k=e.i(622491),C=e.i(960568),I=e.i(873613),E=e.i(742096),T=e.i(888),L=e.i(526683),M=e.i(240236);let U=["https://cdn.kling4.co/videos/ai-hero-cinematic-war-scene.webp","https://cdn.kling4.co/videos/ai-luxury-car-night-drive.webp","https://cdn.kling4.co/videos/ai-dark-fantasy-monster-rider.webp","https://cdn.kling4.co/videos/ai-motorcycle-racing-track.webp","https://cdn.kling4.co/videos/ai-airport-storm-flooding-vfx.webp","https://cdn.kling4.co/videos/ai-cyberpunk-female-warrior.webp","https://cdn.kling4.co/videos/ai-anime-girl-mountain-road.webp"],A=[{value:"1:1",label:"1:1"},{value:"16:9",label:"16:9"},{value:"9:16",label:"9:16"},{value:"4:3",label:"4:3"},{value:"3:4",label:"3:4"},{value:"3:2",label:"3:2"},{value:"2:3",label:"2:3"},{value:"21:9",label:"21:9"}],G={value:"auto",label:"Auto"},F=[{value:"1K",label:"1K"},{value:"2K",label:"2K"},{value:"4K",label:"4K"}],O=[{value:"png",label:"PNG"},{value:"jpeg",label:"JPEG"},{value:"webp",label:"WebP"}],V=Array.from({length:9},(e,r)=>{let t=String(r+1);return{value:t,label:t}});function P(e){return e<6e4?8e3:15e3}let z=[{value:"nano-banana-2-new",label:"Nano Banana 2",description:"Gemini-powered image generation with 2K and 4K output",provider:"poyo",scenes:["text-to-image","image-to-image"]},{value:"kling-o3-image",label:"Kling O3 Image",description:"High-expressiveness prompt-only image generation",provider:"poyo",scenes:["text-to-image"]},{value:"kling-o3-image-edit",label:"Kling O3 Image Edit",description:"Image editing with reference images and O3 composition",provider:"poyo",scenes:["image-to-image"]}],B=[{value:"poyo",label:"PoYo"}];function $(e){if(!e)return null;try{return JSON.parse(e)}catch(e){return console.warn("Failed to parse taskResult:",e),null}}function D(e){if(!e)return[];let r=e.output??e.images??e.data;if(!r)return[];if("string"==typeof r)return[r];if(Array.isArray(r))return r.flatMap(e=>{if(!e)return[];if("string"==typeof e)return[e];if("object"==typeof e){let r=e.url??e.uri??e.image??e.src??e.imageUrl;return"string"==typeof r?[r]:[]}return[]}
1).filter(Boolean);if("object"==typeof r){let e=r.url??r.uri??r.image??r.src??r.imageUrl;if("string"==typeof e)return[e]}return[]}function R({allowMultipleImages:e=!0,maxImages:R=9,maxSizeMB:q=5,srOnlyTitle:K,className:H,defaultProvider:J,defaultModel:Q,defaultTab:W,filterModels:Y,showProviderSelect:X=!0}){let Z=(0,h.useTranslations)("ai.image.generator"),ee=(0,t.useMemo)(()=>{if(W)return W;if(Q){let e=z.find(e=>e.value===Q);if(e&&!e.scenes.includes("text-to-image"))return"image-to-image"}return"text-to-image"},[W,Q]),[er,et]=(0,t.useState)(ee),ea=(0,t.useMemo)(()=>Y&&0!==Y.length?z.filter(e=>Y.includes(e.value)):z,[Y]),es=(0,t.useMemo)(()=>{let e=new Set;return ea.forEach(r=>r.scenes.forEach(r=>e.add(r))),e},[ea]),el=es.has("text-to-image")&&es.has("image-to-image"),[ei,en]=(0,t.useState)(2),[eo,ec]=(0,t.useState)(J??ea[0]?.provider??B[0]?.value??""),[ed,em]=(0,t.useState)(Q??ea[0]?.value??""),[eu,eg]=(0,t.useState)("1:1"),[eh,ex]=(0,t.useState)("1K"),[ep,ef]=(0,t.useState)("png"),[ej,ev]=(0,t.useState)("1"),[eN,eb]=(0,t.useState)(""),[ey,ew]=(0,t.useState)([]),[e_,eS]=(0,t.useState)([]),[ek,eC]=(0,t.useState)([]),[eI,eE]=(0,t.useState)(!1),[eT,eL]=(0,t.useState)(0),[eM,eU]=(0,t.useState)(null),[eA,eG]=(0,t.useState)(null),[eF,eO]=(0,t.useState)(null),[eV,eP]=(0,t.useState)(null),[ez,eB]=(0,t.useState)(!1),[e$,eD]=(0,t.useState)(0),[eR,eq]=(0,t.useState)(!1),eK=(0,t.useRef)(0);(0,t.useEffect)(()=>{(0,T.trackOnce)("gen:view:image","Generator_View",{media:"image",mode:er,model:ed})},[]);let[eH,eJ]=(0,t.useState)("examples"),[eQ,eW]=(0,t.useState)([]),[eY,eX]=(0,t.useState)(!1),[eZ,e0]=(0,t.useState)(new Set),e1=(0,t.useRef)(null),{user:e2,isCheckSign:e4,setIsShowSignModal:e3,setIsShowCreditsModal:e6,setRequiredCredits:e8,fetchUserCredits:e5}=(0,C.useAppContext)();(0,t.useEffect)(()=>{eB(!0)},[]),(0,t.useEffect)(()=>{if(ek.length>0)return;let e=setInterval(()=>{eD(e=>(e+1)%U.length)},4e3);return()=>clearInterval(e)},[ek.length]),(0,t.useEffect)(()=>{if(!eR)return;let e=e=>{e1.current&&!e1.current.contains(e.target)&&eq(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[eR]);let e7=(0,t.useCallback)(async e=>{if(eJ(e),"history"===e&&0===eQ.length){eX(!0);try{let e=await fetch("/api/ai/tasks?mediaType=image&limit=6");if(e.ok){let r=(await e.json()).tasks.filter(e=>"completed"===e.status&&e.resultUrl).map(e=>({id:e.id,taskId:e.id,url:e.resultUrl,prompt:e.prompt,provider:e.provider,model:e.model}));eW(r)}}catch(e){console.error("Failed to load history:",e)}finally{eX(!1)}}},[eQ.length]),e9=eN.trim().length,re=e2?.credits?.remainingCredits??0,rr=e9>2e3,rt="text-to-image"===er,ra="kling-o3-image"===ed||"kling-o3-image-edit"===ed,rs="kling-o3-image-edit"===ed,rl=rs?[G,...A]:A,ri=(0,t.useMemo)(()=>ea.filter(e=>e.scenes.includes(er)&&e.provider===eo),[ea,er,eo]),rn=ri.find(e=>e.value===ed);(0,t.useEffect)(()=>{en((0,E.calculateImageCredits)({model:ed,resolution:eh,scene:er,count:Number(ej)}))},[ed,eh,er,ej]);let ro=(0,t.useMemo)(()=>{if(!eF)return"";switch(eF){case f.AITaskStatus.PENDING:return"Waiting for the model to start";case f.AITaskStatus.PROCESSING:return"Generating your image...";case f.AITaskStatus.SUCCESS:return"Image generation completed";case f.AITaskStatus.FAILED:return"Generation failed";default:return""}},[eF]),rc=(0,t.useCallback)(e=>{e.some(e=>"uploaded"===e.status&&e.url)&&(0,T.trackOnce)("gen:refupload:image","Reference_Upload",{media:"image"}),ew(e),eS(e.filter(e=>"uploaded"===e.status&&e.url).map(e=>e.url))},[]),rd=(0,t.useMemo)(()=>ey.some(e=>"uploading"===e.status),[ey]),rm=(0,t.useMemo)(()=>ey.some(e=>"error"===e.status),[ey]),ru=(0,t.useCallback)(()=>{eE(!1),eL(0),eU(null),eG(null),eO(null)},[]),rg=(0,t.useCallback)(async e=>{try{if(eA&&Date.now()-eA>18e4)return(0,T.trackEvent)("Generate_Timeout",{media:"image",model:ed,waited_seconds:Math.round((Date.now()-eA)/1e3)}),ru(),x.toast.error(Z("errors.generation_timeout")),!0;let r=await fetch("/api/ai/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!r.ok)throw Error(`request failed with status: ${r.status}`);let{code:t,message:a,data:s}=await r.json();if(0!==t)throw Error(a||"Query task failed");let l=s.status;eO(l);let i=$(s.taskInfo),n=D(i);if(l===f.AITaskStatus.PENDING)return eL(e=>Math.max(e,20)),!1;if(l===f.AITaskStatus.PROCESSING)return n.length>0?(eC(n.map((e,r)=>({id:`${s.id}-${r}`,taskId:s.id,url:e,provider:s.provider,model:s.model,prompt:s.prompt??void 0}))),eL(e=>Math.max(e,85))):eL(e=>
1Math.min(e+10,80)),!1;if(l===f.AITaskStatus.SUCCESS){0===n.length?x.toast.error(Z("errors.no_images")):(eC(n.map((e,r)=>({id:`${s.id}-${r}`,taskId:s.id,url:e,provider:s.provider,model:s.model,prompt:s.prompt??void 0}))),eJ("generated"),x.toast.success(Z("image_generated_successfully")));let e=eA?Math.round((Date.now()-eA)/1e3):0;return(0,T.trackEvent)("Image_Generate_Success",{mode:er,model:ed,duration_seconds:e}),eL(100),ru(),e5(),!0}if(l===f.AITaskStatus.FAILED||l===f.AITaskStatus.CANCELED){let e=i?.errorMessage||Z("errors.generate_failed_default");return x.toast.error(e),(0,T.trackEvent)("Image_Generate_Fail",{mode:er,model:ed}),ru(),e5(),!0}return eL(e=>Math.min(e+5,95)),!1}catch(e){return console.error("Error polling image task:",e),x.toast.error(Z("errors.query_failed",{error:e.message})),ru(),e5(),!0}},[eA,ru]);(0,I.useTaskPoll)({taskId:eM,active:eI,poll:rg,interval:P});let rh=async()=>{if(!e2){(0,T.trackEvent)("Sign_Modal_Open",{trigger:"image_generate"}),e3(!0);return}if(re<ei){(0,T.trackEvent)("Insufficient_Credits",{required:ei,remaining:re}),e8(ei),e6(!0);return}let e=eN.trim();if(!e){(0,T.trackEvent)("Generator_Submit_Blocked",{media:"image",reason:"prompt_required",mode:er,model:ed}),x.toast.error(Z("errors.prompt_required"));return}if(!eo||!ed){(0,T.trackEvent)("Generator_Submit_Blocked",{media:"image",reason:"provider_model_misconfigured",mode:er,model:ed}),x.toast.error(Z("errors.provider_model_misconfigured"));return}if(!rt&&0===e_.length){(0,T.trackEvent)("Generator_Submit_Blocked",{media:"image",reason:"reference_images_required",mode:er,model:ed}),x.toast.error(Z("errors.reference_images_required"));return}eE(!0),eL(15),eO(f.AITaskStatus.PENDING),eG(Date.now()),eJ("generated"),eK.current+=1,eK.current>1&&(0,T.trackEvent)("Generate_Again",{media:"image",run_index:eK.current,model:ed}),(0,T.trackEvent)("Image_Generate",{mode:er,model:ed});try{let r={};r.size=eu,r.resolution=eh,ra&&(r.output_format=ep,r.n=Number(ej)),rt||(r.image_input=e_);let t=await fetch("/api/ai/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mediaType:f.AIMediaType.IMAGE,scene:rt?"text-to-image":"image-to-image",provider:eo,model:ed,prompt:e,options:r})});if(!t.ok)throw Error(`request failed with status: ${t.status}`);let{code:a,message:s,data:l}=await t.json();if(0!==a)throw Error(s||Z("errors.create_failed_default"));let i=l?.id;if(!i)throw Error(Z("errors.task_id_missing"));if(l.status===f.AITaskStatus.SUCCESS&&l.taskInfo){let r=$(l.taskInfo),t=D(r);if(t.length>0){eC(t.map((r,t)=>({id:`${i}-${t}`,taskId:i,url:r,provider:eo,model:ed,prompt:e}))),x.toast.success(Z("image_generated_successfully")),(0,T.trackEvent)("Image_Task_Created",{mode:er,model:ed}),eL(100),ru(),await e5();return}}(0,T.trackEvent)("Image_Task_Created",{mode:er,model:ed}),eU(i),eL(25),await e5()}catch(e){console.error("Failed to generate image:",e),(0,T.trackEvent)("Image_Generate_Fail",{mode:er,model:ed}),x.toast.error(Z("errors.generate_failed",{error:e.message})),ru()}},rx=async e=>{if(e.url)try{eP(e.id);let r=await fetch(`/api/proxy/file?url=${encodeURIComponent(e.url)}`);if(!r.ok)throw Error(Z("errors.fetch_image_failed"));let t=await r.blob(),a=URL.createObjectURL(t),s=document.createElement("a");s.href=a,s.download=`${e.id}.png`,document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout(()=>URL.revokeObjectURL(a),200),x.toast.success(Z("errors.download_success")),(0,T.trackEvent)("Image_Download",{source:"generator"})}catch(e){console.error("Failed to download image:",e),x.toast.error(Z("errors.download_failed"))}finally{eP(null)}};return(0,r.jsx)("section",{className:(0,L.cn)("py-16 md:py-24",H),children:(0,r.jsx)("div",{className:"container",children:(0,r.jsx)("div",{className:"mx-auto max-w-6xl",children:(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-8 lg:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]",children:[(0,r.jsxs)(b.Card,{children:[(0,r.jsxs)(b.CardHeader,{children:[K&&(0,r.jsx)("h2",{className:"sr-only",children:K}),(0,r.jsx)(b.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:Z("title")})]}),(0,r.jsxs)(b.CardContent,{className:"space-y-6 pb-8",children:[el&&(0,r.jsx)(S.Tabs,{value:er,onValueChange:e=>{e!==er&&(0,T.trackEvent)("Generator_Mode_Changed",{media:"image",from:er,to:e}),et(e);let r=ea.filter(r=>r.scenes.includes(e)&&r.provider===eo),t="kling-o3-image"===ed?"kling-o3-image-edit":"kling-o3-image-edit"===ed?"kling-o3-image":"",a=(t?r.find(e=>e.value===t):void 0)??r[0];a?(em(a.value),"kling-o3-image-edit"===a.value?eg("auto"):"auto"===eu&&eg("1:1")):em("")},children:(0,r.jsxs)(S.TabsList,{className:"bg-primary/10 grid w-full grid-cols-2",children:[(0,r.jsx)(S.TabsTrigger,{value:"text-to-image",children:Z("tabs.text-to-image")}),(0,r.jsx)(S.TabsTrigger,{value:"image-to-image",children:Z("tabs.image-to-image")})]})}),X&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(y.Label,{children:Z("form.provider")}),(0,r.jsxs)(_.Select,{value:eo,onValueChange:e=>{ec(e);let r=ea.filter(r=>r.scenes.includes(er)&&r.provider===e);r.length>0?(em(r[0].value),"kling-o3-image-edit"===r[0].value?eg("auto"):"auto"===eu&&eg("1:1")):em("")},children:[(0,r.jsx)(_.SelectTrigger,{className:"w-full",children:(0,r.jsx)(_.SelectValue,{placeholder:Z("form.select_provider")})}),(0,r.jsx)(_.SelectContent,{children:B.map(e=>(0,r.jsx)(_.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,r.jsxs)("div",{className:"relative space-y-2",ref:e1,children:[(0,r.jsx)(y.Label,{children:Z("form.model")}),(0,r.jsxs)("button",{type:"button",onClick:()=>eq(e=>!e),className:"border-input bg-background hover:bg-muted flex w-full items-center justify-between rounded-lg border px-4 py-2.5 text-sm transition-colors",children:[(0,r.jsx)("span",{className:"font-medium",children:rn?.label??Z("form.select_model")}),(0,r.jsx)(s.ChevronDown,{className:`h-4 w-4 transition-transform ${eR?"rotate-180":""}`})]}),eR&&(0,r.jsx)("div",{className:"border-border bg-popover absolute right-0 left-0 z-50 mt-1 overflow-hidden rounded-lg border shadow-lg",children:ri.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>{e.value!==ed&&(0,T.trackEvent)("Model_Select",{media:"image",source:"picker",from:ed,to:e.value,mode:er}),em(e.value),"kling-o3-image-edit"===e.value?eg("auto"):"auto"===eu&&eg("1:1"),eq(!1)},className:`flex w-full items-start gap-3 px-4 py-3 text-left transition-colors ${ed===e.value?"bg-primary/5":"hover:bg-muted"}`,children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsx)("span",{className:"text-sm font-semibold",children:e.label})}),(0,r.jsx)("p",{className:"text-muted-foreground mt-0.5 text-xs",children:e.description})]}),ed===e.value&&(0,r.jsx)(a.Check,{className:"text-primary mt-0.5 h-4 w-4 shrink-0"})]},e.value))})]}),(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(y.Label,{children:Z("form.as
1pect_ratio")}),(0,r.jsxs)(_.Select,{value:eu,onValueChange:eg,children:[(0,r.jsx)(_.SelectTrigger,{className:"w-full",children:(0,r.jsx)(_.SelectValue,{})}),(0,r.jsx)(_.SelectContent,{children:rl.map(e=>(0,r.jsx)(_.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(y.Label,{children:Z("form.resolution")}),(0,r.jsxs)(_.Select,{value:eh,onValueChange:ex,children:[(0,r.jsx)(_.SelectTrigger,{className:"w-full",children:(0,r.jsx)(_.SelectValue,{})}),(0,r.jsx)(_.SelectContent,{children:F.map(e=>(0,r.jsx)(_.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),ra&&(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(y.Label,{children:Z("form.output_format")}),(0,r.jsxs)(_.Select,{value:ep,onValueChange:ef,children:[(0,r.jsx)(_.SelectTrigger,{className:"w-full",children:(0,r.jsx)(_.SelectValue,{})}),(0,r.jsx)(_.SelectContent,{children:O.map(e=>(0,r.jsx)(_.SelectItem,{value:e.value,children:e.label},e.value))})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(y.Label,{children:Z("form.images")}),(0,r.jsxs)(_.Select,{value:ej,onValueChange:ev,children:[(0,r.jsx)(_.SelectTrigger,{className:"w-full",children:(0,r.jsx)(_.SelectValue,{})}),(0,r.jsx)(_.SelectContent,{children:V.map(e=>(0,r.jsx)(_.SelectItem,{value:e.value,children:e.label},e.value))})]})]})]}),!rt&&(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)(j.ImageUploader,{title:Z("form.reference_image"),allowMultiple:e,maxImages:e?rs?10:R:1,maxSizeMB:q,onChange:rc,emptyHint:Z("form.reference_image_placeholder")}),rm&&(0,r.jsx)("p",{className:"text-destructive text-xs",children:Z("form.some_images_failed_to_upload")})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(y.Label,{htmlFor:"image-prompt",children:Z("form.prompt")}),(0,r.jsx)(k.Textarea,{id:"image-prompt",value:eN,onChange:e=>{e.target.value.trim().length>=8&&(0,T.trackOnce)("gen:prompt:image","Generator_Prompt_Start",{media:"image",mode:er,model:ed}),eb(e.target.value)},placeholder:Z("form.prompt_placeholder"),className:"min-h-32"}),(0,r.jsxs)("div",{className:"text-muted-foreground flex items-center justify-between text-xs",children:[(0,r.jsxs)("span",{children:[e9," / ",2e3]}),rr&&(0,r.jsx)("span",{className:"text-destructive",children:Z("form.prompt_too_long")})]})]}),ez?e4?(0,r.jsxs)(N.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,r.jsx)(m.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),Z("checking_account")]}):e2?(0,r.jsx)(N.Button,{size:"lg",className:"w-full",onClick:rh,disabled:eI||!eN.trim()||rr||rd||rm,children:eI?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(m.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),Z("generating")]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u.Sparkles,{className:"mr-2 h-4 w-4"}),Z("generate")]})}):(0,r.jsxs)(N.Button,{size:"lg",className:"w-full",onClick:()=>e3(!0),children:[(0,r.jsx)(g.User,{className:"mr-2 h-4 w-4"}),Z("sign_in_to_generate")]}):(0,r.jsxs)(N.Button,{className:"w-full",disabled:!0,size:"lg",children:[(0,r.jsx)(m.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),Z("loading")]}),ez?e2&&re>0?(0,r.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"text-primary",children:Z("credits_cost",{credits:ei})}),(0,r.jsx)("span",{children:Z("credits_remaining",{credits:re})})]}):(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"text-primary",children:Z("credits_cost",{credits:ei})}),(0,r.jsx)("span",{children:Z("credits_remaining",{credits:re})})]}),(0,r.jsx)(p.Link,{href:"/pricing",className:"group relative inline-flex w-full",children:(0,r.jsxs)(N.Button,{variant:"outline",className:"relative w-full",size:"lg",children:[(0,r.jsx)(n.CreditCard,{className:"mr-2 h-4 w-4"}),Z("buy_credits")]})})]}):(0,r.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"text-primary",children:Z("credits_cost",{credits:e
1i})}),(0,r.jsx)("span",{children:Z("credits_remaining",{credits:0})})]}),eI&&(0,r.jsxs)("div",{className:"space-y-2 rounded-lg border p-4",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{children:Z("progress")}),(0,r.jsx)("span",{children:`${eT}%`})]}),(0,r.jsx)(w.Progress,{value:eT}),ro&&(0,r.jsx)("p",{className:"text-muted-foreground text-center text-xs",children:ro})]})]})]}),(0,r.jsxs)(b.Card,{children:[(0,r.jsx)(b.CardHeader,{children:(0,r.jsxs)(b.CardTitle,{className:"flex items-center gap-2 text-xl font-semibold",children:[(0,r.jsx)(d.ImageIcon,{className:"h-5 w-5"}),Z("generated_images")]})}),(0,r.jsx)(b.CardContent,{className:"pb-8",children:(0,r.jsxs)(S.Tabs,{value:eH,onValueChange:e7,children:[(0,r.jsxs)(S.TabsList,{className:`mb-4 grid w-full ${ek.length>0||eI?"grid-cols-3":"grid-cols-2"}`,children:[(ek.length>0||eI)&&(0,r.jsx)(S.TabsTrigger,{value:"generated",children:Z("generated_images")}),(0,r.jsx)(S.TabsTrigger,{value:"examples",children:Z("example_images")}),(0,r.jsx)(S.TabsTrigger,{value:"history",children:Z("generation_history")})]}),(ek.length>0||eI)&&(0,r.jsxs)(S.TabsContent,{value:"generated",children:[eI&&0===ek.length&&(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(m.Loader2,{className:"text-primary mb-4 h-12 w-12 animate-spin"}),(0,r.jsx)("p",{className:"text-muted-foreground",children:ro||"Generating your image..."})]}),(0,r.jsx)("div",{className:1===ek.length?"grid grid-cols-1 gap-6":"grid gap-6 sm:grid-cols-2",children:ek.map(e=>(0,r.jsx)("div",{className:"space-y-3",children:(0,r.jsxs)("div",{className:1===ek.length?"relative overflow-hidden rounded-lg border":"relative aspect-square overflow-hidden rounded-lg border",children:[(0,r.jsx)(v.LazyImage,{src:e.url,alt:e.prompt||Z("generated_image_alt"),className:1===ek.length?"h-auto w-full":"h-full w-full object-cover"}),(0,r.jsxs)("div",{className:"absolute right-2 bottom-2 flex justify-end text-sm",children:[(0,r.jsx)(M.ShareMenu,{taskId:e.taskId,prompt:e.prompt,mediaType:"image",translationNamespace:"ai.image.generator"}),(0,r.jsx)(N.Button,{size:"sm",variant:"ghost",className:"ml-auto",onClick:()=>rx(e),disabled:eV===e.id,children:eV===e.id?(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(m.Loader2,{className:"h-4 w-4 animate-spin"})}):(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(o.Download,{className:"h-4 w-4"})})})]})]})},e.id))})]}),(0,r.jsx)(S.TabsContent,{value:"examples",children:(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("div",{className:"flex h-[320px] items-center justify-center overflow-hidden rounded-lg border bg-black md:h-[480px]",children:(0,r.jsx)(v.LazyImage,{src:U[e$],alt:Z("demo_image_alt"),className:"max-h-full max-w-full object-contain"},U[e$])}),(0,r.jsx)("button",{type:"button",onClick:()=>eD(e=>(e-1+U.length)%U.length),className:"bg-background/60 hover:bg-background/80 absolute top-1/2 left-2 -translate-y-1/2 rounded-full p-1.5 backdrop-blur-sm transition-colors",children:(0,r.jsx)(l.ChevronLeft,{className:"h-5 w-5"})}),(0,r.jsx)("button",{type:"button",onClick:()=>eD(e=>(e+1)%U.length),className:"bg-background/60 hover:bg-background/80 absolute top-1/2 right-2 -translate-y-1/2 rounded-full p-1.5 backdrop-blur-sm transition-colors",children:(0,r.jsx)(i.ChevronRight,{className:"h-5 w-5"})})]}),(0,r.jsx)("div",{className:"flex items-center justify-center gap-2",children:U.map((e,t)=>(0,r.jsx)("button",{type:"button",onClick:()=>eD(t),className:`h-1.5 rounded-full transition-all ${t===e$?"bg-primary w-4":"bg-muted-foreground/30 hover:bg-muted-foreground/50 w-1.5"}`},t))})]})}),(0,r.jsx)(S.TabsContent,{value:"history",children:eY?(0,r.jsx)("div",{className:"flex h-[320px] items-center justify-center md:h-[480px]",children:(0,r.jsx)(m.Loader2,{className:"text-muted-foreground h-8 w-8 animate-spin"})}):eQ.length>0?(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:eQ.map(e=>(0,r.jsx)("div",{className:"group relative aspect-square cursor-pointer overflow-hidden rounded-lg border transition-transform hover:scale-105",children:(0,r.jsx)(v.LazyImage,{src:e.url,alt:e.prompt||Z("generated_image_alt"),className:"h-full w-full object-cover"})},e.id))}),(0,r.jsxs)(p.Link,{href:"/history",className:"text-muted-foreground hover:border-primary hover:text-primary flex items-center justify-center gap-2 rounded-lg border border-dashed p-3 text-sm transition-colors",children:[(0,r.jsx)(c.History,{className:"h-4 w-4"}),Z("view_full_history")]}),eZ.size>0&&(0,r.jsxs)("div",{className:"text-muted-foreground flex items-center justify-center gap-2 text-xs",children:[(0,r.jsx)(m.Loader2,{className:"h-3 w-3 animate-spin"}),Z("images_generating_in_background",{count:eZ.size})]})]}):(0,r.jsxs)("div",{className:"text-muted-foreground flex h-[320px] flex-col items-center justify-center text-center md:h-[480px]",children:[(0,r.jsx)(d.ImageIcon,{className:"mb-3 h-12 w-12 opacity-50"}),(0,r.jsx)("p",{children:Z("no_generation_history")}),(0,r.jsx)("p",{className:"mt-1 text-xs",children:Z("images_will_show_here_after_generation")})]})})]})})]})]})})})})}e.s(["ImageGenerator",()=>R])}]);

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.