1import{A as gt,Ba as te,Do as Te,Ia as m,Jo as ae,Ka as ge,La as A,Lo as H,Mn as ce,Mo as P,N as ct,Ra as $,So as pt,Wa as L,Wo as a,dr as Ee,fo as x,lr as Pe,to as ft,wo as re,za as U}from"./CFgVBipp.js";import"./DVBT5u8S.js";import"./Cw1cKaYg.js";import{M as ht,ft as vt}from"./Vg6eMshd.js";import"./BubNvveL.js";import"./CJjcOaAq.js";import{t as It}from"./Bd_6cHF6.js";import"./D3RFr9Qv.js";import"./DEwqsWQA.js";import{C as v,E as bt,c as wt,d as yt,g as pe,l as fe,o as xt,r as St,s as ie,v as se,x as Ue,y as he}from"./U5w1LfVD.js";import{t as Me}from"./BbBYHZDL.js";import"./Bov1K7CL.js";import{t as kt}from"./B-rLhruw.js";import"./BGPq7bhR.js";import"./BfbdidcX.js";import"./BSYPp4FP.js";import"./BpQhmcfd.js";import"./CvfPBcuB.js";import{i as Tt,n as Et,t as Pt}from"./BRf2LlGP.js";import{t as Ut}from"./DuaRAMUP.js";import"./CTdnSqyB.js";import{t as Mt}from"./BgVBwC_2.js";import{t as Rt}from"./g-UykEq6.js";import{H as ve,J as Ft,ct as At,j as Ie,n as Ht,q as Lt,rt as Re,t as Ct,tt as be,ut as Dt}from"./DY1IKCD1.js";import"./DygfhOtV.js";import{t as Bt}from"./5imhdD1A.js";import{t as we}from"./fcA0wBGu.js";import{a as Ot,i as zt,n as _t}from"./CeMnt475.js";import{t as qt}from"./DhsvAT7i.js";import{t as $t}from"./-a24bNKj.js";import"./DdAMnmD7.js";import"./SzezaHNM.js";import{t as jt}from"./Ccrr3Iyx.js";import"./NlgzUyoH.js";import{t as Wt}from"./BiGkIOev.js";import"./njUtHE8c.js";import"./Cemb6jf1.js";import{t as Nt}from"./DTAdJUit.js";import{t as Vt}from"./fpHsbpFr.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ec4d0ca4-bfd1-4c7d-ae81-56e2a2ecb753",e._sentryDebugIdIdentifier="sentry-dbid-ec4d0ca4-bfd1-4c7d-ae81-56e2a2ecb753")}catch{}})();const Gt={name:"AI Image Transformer",description:"Restyle and modify images with AI-powered style transfer",pricingDescription:"Usage-based (varies by model/output)"},Kt={uploadImageFirst:"Please upload a source image first",enterPrompt:"Please enter a prompt describing the transformation",selectModel:"Please select or enter a model",uploadReferenceImages:"Upload at least {count} reference image(s)",generatedSuccess:"Generated {count} image(s)",generationFailed:"An error occurred",transformingImage:"Transforming your image...",emptyResults:"Transformed images will appear here"},Jt={panelHeader:"Transformation Settings",referenceImages:"Reference Images",required:"Required",optional:"Optional",transformationStrength:"Transformation Strength",transformationStrengthHelp:"How much the original image is transformed (0 = no change, 1 = complete transformation)",referenceImagesHelp:"Upload {min} to {max} reference image(s).",transformButton:"Transform Image",uploadError:"Upload Error",uploadErrorDetail:"Failed to upload file {name}",numberOfImages:"Number of Images",outputSize:"Output Size",showAdvanced:"Show Advanced Settings",hideAdvanced:"Hide Advanced Settings"},Xt="{label} (~{credits} credits)";var Zt={meta:Gt,messages:Kt,settings:Jt,estimatedCreditsButton:Xt};const Yt={name:"Transformador de Imagenes IA",description:"Cambia el estilo de imagenes con transferencia de estilo IA",pricingDescription:"Por uso (var\xEDa seg\xFAn modelo/salida)"},Qt={uploadImageFirst:"Por favor, sube primero una imagen de origen",enterPrompt:"Por favor, ingresa una indicaci\xF3n describiendo la transformaci\xF3n",selectModel:"Por favor, selecciona o ingresa un modelo",uploadReferenceImages:"Sube al menos {count} imagen(es) de referencia",generatedSuccess:"Generadas {count} imagen(es)",generationFailed:"Ocurri\xF3 un error",transformingImage:"Transformando tu imagen...",emptyResults:"Las im\xE1genes transformadas aparecer\xE1n aqu\xED"},ea={panelHeader:"Configuraci\xF3n de Transformaci\xF3n",referenceImages:"Im\xE1genes de Referencia",required:"Requerido",optional:"Opcional",transformationStrength:"Fuerza de Transformaci\xF3n",transformationStrengthHelp:"Cu\xE1nto se transforma la imagen original (0 = sin cambios, 1 = transformaci\xF3n completa)",referenceImagesHelp:"Sube de {min} a {max} imagen(es) de referencia.",transformButton:"Transformar Imagen",uploadError:"Error de Subida",uploadErrorDetail:"Error al subir el archivo {name}",numberOfImages:"N\xFAmero de Im\xE1genes",outputSize:"Tama\xF1o de Salida",showAdvanced:"Mostrar Configuraci\xF3n Avanzada",hideAdvanced:"Ocultar Configuraci\xF3n Avanzada"},ta="{label} (~{credits} cr\xE9ditos)";var aa={meta:Yt,messages:Qt,settings:ea,estimatedCreditsButton:ta};
1const ra={name:"AI \u753B\u50CF\u30B9\u30BF\u30A4\u30EB\u5909\u63DB",description:"AI \u3067\u30B9\u30BF\u30A4\u30EB\u8EE2\u9001\u3068\u5275\u9020\u7684\u306A\u753B\u50CF\u5909\u63DB\u3092\u5B9F\u73FE",pricingDescription:"\u4F7F\u7528\u91CF\u30D9\u30FC\u30B9\uFF08\u30E2\u30C7\u30EB/\u51FA\u529B\u3067\u5909\u52D5\uFF09"},ia={uploadImageFirst:"\u6700\u521D\u306B\u30BD\u30FC\u30B9\u753B\u50CF\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044",enterPrompt:"\u5909\u63DB\u3092\u8AAC\u660E\u3059\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",selectModel:"\u30E2\u30C7\u30EB\u3092\u9078\u629E\u307E\u305F\u306F\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",uploadReferenceImages:"\u5C11\u306A\u304F\u3068\u3082 {count} \u679A\u306E\u53C2\u7167\u753B\u50CF\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044",generatedSuccess:"{count} \u679A\u306E\u753B\u50CF\u3092\u751F\u6210\u3057\u307E\u3057\u305F",generationFailed:"\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F",transformingImage:"\u753B\u50CF\u3092\u5909\u63DB\u3057\u3066\u3044\u307E\u3059...",emptyResults:"\u5909\u63DB\u3055\u308C\u305F\u753B\u50CF\u304C\u3053\u3053\u306B\u8868\u793A\u3055\u308C\u307E\u3059"},sa={panelHeader:"\u5909\u63DB\u8A2D\u5B9A",referenceImages:"\u53C2\u7167\u753B\u50CF",required:"\u5FC5\u9808",optional:"\u4EFB\u610F",transformationStrength:"\u5909\u63DB\u5F37\u5EA6",transformationStrengthHelp:"\u5143\u306E\u753B\u50CF\u304C\u3069\u306E\u7A0B\u5EA6\u5909\u63DB\u3055\u308C\u308B\u304B\uFF080 = \u5909\u5316\u306A\u3057\u30011 = \u5B8C\u5168\u306A\u5909\u63DB\uFF09",referenceImagesHelp:"{min} \u301C {max} \u679A\u306E\u53C2\u7167\u753B\u50CF\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002",transformButton:"\u753B\u50CF\u3092\u5909\u63DB",uploadError:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u30A8\u30E9\u30FC",uploadErrorDetail:"\u30D5\u30A1\u30A4\u30EB {name} \u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F",numberOfImages:"\u753B\u50CF\u306E\u679A\u6570",outputSize:"\u51FA\u529B\u30B5\u30A4\u30BA",showAdvanced:"\u9AD8\u5EA6\u306A\u8A2D\u5B9A\u3092\u8868\u793A",hideAdvanced:"\u9AD8\u5EA6\u306A\u8A2D\u5B9A\u3092\u975E\u8868\u793A"},na="{label}\uFF08~{credits} \u30AF\u30EC\u30B8\u30C3\u30C8\uFF09";var oa={meta:ra,messages:ia,settings:sa,estimatedCreditsButton:na};const la={name:"AI \u56FE\u751F\u56FE",description:"\u5229\u7528 AI \u8FDB\u884C\u56FE\u7247\u98CE\u683C\u8FC1\u79FB\u4E0E\u521B\u610F\u6539\u9020",pricingDescription:"\u6309\u7528\u91CF\u8BA1\u8D39\uFF08\u56E0\u6A21\u578B/\u8F93\u51FA\u800C\u5F02\uFF09"},da={uploadImageFirst:"\u8BF7\u5148\u4E0A\u4F20\u6E90\u56FE\u50CF",enterPrompt:"\u8BF7\u8F93\u5165\u63CF\u8FF0\u8F6C\u6362\u7684\u63D0\u793A",selectModel:"\u8BF7\u9009\u62E9\u6216\u8F93\u5165\u6A21\u578B",uploadReferenceImages:"\u8BF7\u4E0A\u4F20\u81F3\u5C11 {count} \u5F20\u53C2\u8003\u56FE\u50CF",generatedSuccess:"\u5DF2\u751F\u6210 {count} \u5F20\u56FE\u50CF",generationFailed:"\u53D1\u751F\u9519\u8BEF",transformingImage:"\u6B63\u5728\u8F6C\u6362\u60A8\u7684\u56FE\u50CF...",emptyResults:"\u8F6C\u6362\u540E\u7684\u56FE\u50CF\u5C06\u663E\u793A\u5728\u6B64\u5904"},ma={panelHeader:"\u8F6C\u6362\u8BBE\u7F6E",referenceImages:"\u53C2\u8003\u56FE\u50CF",required:"\u5FC5\u9700",optional:"\u53EF\u9009",transformationStrength:"\u8F6C\u6362\u5F3A\u5EA6",transformationStrengthHelp:"\u539F\u59CB\u56FE\u50CF\u88AB\u8F6C\u6362\u7684\u7A0B\u5EA6\uFF080 = \u65E0\u53D8\u5316\uFF0C1 = \u5B8C\u5168\u8F6C\u6362\uFF09",referenceImagesHelp:"\u4E0A\u4F20 {min} \u81F3 {max} \u5F20\u53C2\u8003\u56FE\u50CF\u3002",transformButton:"\u8F6C\u6362\u56FE\u50CF",uploadError:"\u4E0A\u4F20\u9519\u8BEF",uploadErrorDetail:"\u4E0A\u4F20\u6587\u4EF6 {name} \u5931\u8D25",numberOfImages:"\u56FE\u50CF\u6570\u91CF",outputSize:"\u8F93\u51FA\u5C3A\u5BF8",showAdvanced:"\u663E\u793A\u9AD8\u7EA7\u8BBE\u7F6E",hideAdvanced:"\u9690\u85CF\u9AD8\u7EA7\u8BBE\u7F6E"},ua="{label}\uFF08~{credits} \u79EF\u5206\uFF09";var ga={meta:la,messages:da,settings:ma,estimatedCreditsButton:ua},ye={en:Zt,zh:ga,es:aa,ja:oa},ca=ge({__name:"SettingsPanel",props:ft({isGenerating:{type:Boolean},selectedModelId:{}},{providerSettings:{required:!0},providerSettingsModifiers:{}}),emits:["update:providerSettings"],setup(e){const t=e,r=pt(e,"providerSettings"),{t:i}=ce({messages:ye}),o=m(()=>ve(t.selectedModelId,{mode:"image-to-image"})),l=m(()=>o.value.providerId??Re(t.selectedModelId)?.id??t.selectedModelId.split(":")[0]??""),d=m(()=>
1o.value.fields.length>0);return(h,b)=>{const k=Rt;return a(d)?(x(),$(k,{key:0,header:a(i)("settings.panelHeader"),"mobile-open-label":a(i)("settings.panelHeader")},{default:Te(()=>[L(Nt,{provider:a(l),fields:a(o).fields,"field-specs":a(o).fieldSpecs,settings:r.value,disabled:e.isGenerating,"onUpdate:settings":b[0]||(b[0]=C=>r.value=C)},null,8,["provider","fields","field-specs","settings","disabled"])]),_:1},8,["header","mobile-open-label"])):U("",!0)}}}),pa=ca,fa=new Set(["succeeded","failed","canceled","expired","timed_out"]);function ha(e){return e==="succeeded"||e==="failed"||e==="canceled"||e==="expired"||e==="timed_out"?e:"processing"}function va(e){return e.replace(/^data:[^;]+;base64,/,"").replace(/\s+/g,"")}function Ia(e){return/^(?:https?:|data:|blob:|urn:|\/)/i.test(e)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function ne(e,t){return Ia(e)?e:`data:${t?.trim()||"image/png"};base64,${va(e)}`}function Fe(e){let t="";for(let r=0;r<e.length;r+=32768)t+=String.fromCharCode(...e.subarray(r,r+32768));return globalThis.btoa(t)}async function Ae(e){const t=new Uint8Array(await e.arrayBuffer());return`data:${e.type||"image/png"};base64,${Fe(t)}`}async function ba(e){return e.seedImageFile?await Ae(e.seedImageFile):e.seedImageBase64?ne(e.seedImageBase64,e.seedImageMimeType):e.seedImage?ne(e.seedImage,e.seedImageMimeType):void 0}async function wa(e){const t=(e.referenceImages??[]).map(l=>ne(l)),r=await Promise.all((e.referenceImageFiles??[]).map(l=>Ae(l))),i=(e.referenceImageBase64??[]).map((l,d)=>ne(l,e.referenceImageMimeTypes?.[d])),o=[...t,...r,...i].map(l=>l.trim()).filter(l=>l.length>0);return o.length>0?o:void 0}function ya(e){if(e.length>=24&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71){const t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{width:t.getUint32(16),height:t.getUint32(20)}}return null}function xa(e){if(e.length<4||e[0]!==255||e[1]!==216)return null;let t=2;for(;t+8<e.length;){if(e[t]!==255){t++;continue}const r=e[t+1],i=(e[t+2]<<8)+e[t+3];if(i<2)return null;if(r!==void 0&&(r>=192&&r<=195||r>=197&&r<=199||r>=201&&r<=203||r>=205&&r<=207))return{height:(e[t+5]<<8)+e[t+6],width:(e[t+7]<<8)+e[t+8]};t+=2+i}return null}function Sa(e){return e.length<30||String.fromCharCode(...e.subarray(0,4))!=="RIFF"||String.fromCharCode(...e.subarray(8,12))!=="WEBP"?null:String.fromCharCode(...e.subarray(12,16))==="VP8X"?{width:1+e[24]+(e[25]<<8)+(e[26]<<16),height:1+e[27]+(e[28]<<8)+(e[29]<<16)}:null}function ka(e,t){const r=ya(e)??xa(e)??Sa(e);return{width:typeof t.width=="number"?t.width:r?.width??0,height:typeof t.height=="number"?t.height:r?.height??0}}function Ta(e){return e.imageURL??e.mediaURL}function Ea(e){return e.imageUUID??e.mediaUUID??""}function Pa(e,t){if(typeof t?.cost=="number")return t.cost;if(t?.cost&&typeof t.cost=="object"&&typeof t.cost.total=="number")return t.cost.total;const r=e.map(i=>i.cost).filter(i=>typeof i=="number");return r.length>0?r.reduce((i,o)=>i+o,0):null}async function Ua(e,t){const r=Ta(e);if(!r)throw new Error("Image-to-image task completed but returned an item without imageURL");const i=await globalThis.fetch(r);if(!i.ok)throw new Error(`Failed to download generated image (HTTP ${i.status})`);const o=new Uint8Array(await i.arrayBuffer()),l=i.headers.get("content-type")?.split(";")[0]?.trim(),d=e.mimeType||l||t,h=ka(o,e);return{image:`data:${d};base64,${Fe(o)}`,width:h.width,height:h.height,mimeType:d,imageUrl:r,imageUUID:Ea(e),seed:typeof e.seed=="number"?e.seed:0,cost:typeof e.cost=="number"?e.cost:null,byteLength:o.byteLength}}function He(e){return e?.items?.length?e.items:e?.image?[e.image]:e?.media?[e.media]:[]}async function Ma(e){const t=await Ee()("/api/t/ai-image-to-image/generate",{method:"POST",body:e});if(!t.success||!t.data?.taskId)throw new Error(t.message??"Failed to submit image-to-image task");return{taskId:t.data.taskId,logId:t.data.logId??null}}function Ra(e,t){return{mode:"submit",taskId:e,logId:t,status:"processing",statusEndpoint:`/api/tasks/${e}`,suggestedNextPollMs:2e3}}async function Fa(e){const t=await Ee()(`/api/tasks/${e}`);if(!t.success||!t.data?.task)throw new Error(t.message??"Failed to fetch task status");return t.data.task}async function Aa(e,t){const r=He(e);if(r.length===0)throw new Error("Image-to-image task completed but returned no images");const i=await Promise.all(r.map(o=>Ua(o,"image/png")));return{images:i,totalCost:Pa(i,e),logId:t}}async function Le(e){const t=await Fa(e),r=ha(t.status),i={mode:"status",taskId:t.id,status:r,submittedAt:t.created_at};return typeof t.progress=="number"&&(i.progress=t.progress),fa.has(r)||(i.suggestedNextPollMs=2e3),r==="succeeded"?(He(t.result_payload).length>0&&(i.result=await Aa(t.result_payload,null)),t.completed_at&&(i.completedAt=t.completed_at)):(r==="failed"||r==="canceled"||r==="expired"||r==="timed_out")&&(i.error={code:r,message:t.error_message??`Task ${r}`},t.completed_at&&(i.completedAt=t.completed_at)),i}function Ce(){const e=new Error("Task polling aborted");return e.name="AbortError",e}function De(e){if(e?.aborted)throw Ce()}async function Ha(e,t){De(t),await new Promise((r,i)=>{let o;const l=()=>{clearTimeout(o),i(Ce())};o=setTimeout(()=>{t?.removeEventListener("abort",l),r()},e),t?.addEventListener("abort",l,{once:!0})})}async function La(e,t,r={}){const i=Date.now();for(;Date.now()-i<t;){De(r.signal);const o=await Le(e);if(r.onProgress?.({status:o.status,progress:o.progress,suggestedNextPollMs:o.suggestedNextPollMs}),o.status!=="processing")return o;await Ha(o.suggestedNextPollMs??2e3,r.signal)}throw new Error(`Image-to-image task timed out after ${t/1e3}s`)}var Be=be(),Ca=new Set(Be.map(e=>e.id)),Oe=Be[0]?.id;if(!Oe)throw new Error("No image-to-image models registered");var ze=fe(e=>typeof File<"u"&&e instanceof File,{message:"Expected a File"}),_e={model:v().min(1).default(Oe).describe("Image-to-image model AIR identifier to use for generation."),positivePrompt:v().trim().min(1).describe("Positive prompt describing how the source image should be transformed."),negativePrompt:v().optional().describe("Optional negative prompt describing details the generated images should avoid."),translateToEnglish:wt().optional().describe("Translate the prompt to English before generation when supported by the endpoint."),seedImage:v().optional().describe("Signed Z.Tools uploaded image URL or inline raster data URL to transform when a File object is unavailable."),seedImageFile:ze.optional().describe("Source image file to transform in browser environments."),seedImageBase64:v().optional().describe("Base64 string or data URL of the source image to transform when a File object is unavailable."),seedImageMimeType:v().optional().describe("MIME type of the source image when seedImageBase64 is provided without a data URL prefix."),referenceImages:ie(v().min(1)).max(15).optional().describe("Additional signed Z.Tools uploaded image URLs or inline raster data URLs for reference-images models or seed-image guidance."),referenceImageFiles:ie(ze).max(15).optional().describe("Additional reference image files for reference-images models or seed-image guidance."),referenceImageBase64:ie(v().min(1)).max(15).optional().describe("Additional reference image base64 strings or data URLs."),referenceImageMimeTypes:ie(v()).max(15).optional().describe("Optional MIME types for referenceImageBase64 entries that do not include data URL prefixes."),width:se().int().min(128).max(8192).default(1024).describe("Requested output width in pixels for models that require explicit image dimensions."),height:se().int().min(128).max(8192).default(1024).describe("Requested output height in pixels for models that require explicit image dimensions."),strength:se().min(0).max(1).default(.7).describe("Transformation strength to use for models that support seedImage strength control."),providerSettings:Ue(v(),Ue(v(),bt())).optional().describe("Optional providerSettings payload keyed by provider id. Supported fields are defined by the selected model provider.")};function qe(e,t){!e.seedImage&&!e.seedImageFile&&!e.seedImageBase64&&!(e.referenceImages?.length||e.referenceImageFiles?.length||e.referenceImageBase64?.length)&&t.addIssue({code:Me.custom,message:"Seed image or referenceImages are required",path:["seedImage"]}),Ca.has(e.model)||t.addIssue({code:Me.custom,message:"Unsupported image-to-image model",path:["model"]})}const $e=he({mode:pe("submit").describe("Enqueue a new image-to-image task and return its taskId."),..._e,i
1dempotencyKey:v().uuid().optional().describe("Client-supplied UUID; identical key and payload returns the existing taskId.")}).superRefine(qe),Da=he({mode:pe("status").describe("Fetch current status / terminal result for a previously submitted taskId."),taskId:v().min(1).describe("Opaque task id returned by a prior submit call.")}),Ba=he({mode:pe("run").describe("Browser/script convenience: submit + poll + download in one call. AI agents should use submit + status polling instead."),..._e,idempotencyKey:v().uuid().optional().describe("Optional client-supplied UUID reused for the internal submit call."),pollTimeoutMs:se().int().min(5e3).max(6e5).default(3e5).describe("Maximum milliseconds to wait for the generation task to complete."),onProgress:St({input:[fe()],output:xt()}).optional().describe("Optional callback invoked after each task status poll."),signal:fe().optional().describe("Optional signal that stops local polling only.")}).superRefine(qe),Oa=yt("mode",[$e,Da,Ba]);var za="PNG",je=be();function _a(e){return Re(e)?.id??e.split(":")[0]??"unknown"}function qa(e,t){const r=ve(e,{mode:"image-to-image"}),i=r.providerId??_a(e),o=Object.keys(t??{});if(o.length>1)throw new Error("providerSettings must include at most one provider");if(o.length===1&&o[0]!==i)throw new Error(`providerSettings must match model provider (${i})`);const l=At(r,t?.[i],{applyDefaults:!0,enforceLocked:!0});if(l.issues.length>0){const d=l.issues[0],h=d?.path?.length?`.${d.path.join(".")}`:"";throw new Error(`Invalid providerSettings.${i}${h}: ${d?.message??"Invalid value"}`)}return Object.keys(l.settings).length>0?{[i]:l.settings}:void 0}async function $a(e){const t=je.find(j=>j.id===e.model);if(!t)throw new Error("Unsupported image-to-image model");const r=await ba(e),i=await wa(e),o=typeof r=="string"&&r.trim().length>0,l=(i?.length??0)>0,d=t.imageToImageInput??(l?"referenceImages":"seedImage");if(d==="referenceImages"&&!l)throw new Error("referenceImages are required for this model");if(d==="seedImage"&&!o)throw new Error("seedImage is required for this model");if(d==="referenceImages"&&o)throw new Error("seedImage is not supported for this model");if(d==="seedImage"&&l&&t.referenceImages===void 0)throw new Error("referenceImages are not supported for this model");const h=d==="seedImage"?t.imageToImageSupportsStrength??!0:!1,b=t.imageToImageSizeMode??(t.dimensions.length===0?"inherit":"explicit"),k=Ie(e.model,je),C=b==="explicit"?e.width:null,G=b==="explicit"?e.height:null,D=Math.max(1,t.referenceImages?.max??16),M=qa(e.model,e.providerSettings);return{body:{model:e.model,positivePrompt:e.positivePrompt,negativePrompt:e.negativePrompt?.trim()||void 0,translateToEnglish:e.translateToEnglish,...e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:{},...b==="explicit"?{width:e.width,height:e.height}:{},...d==="seedImage"?{seedImage:r}:{},...d==="seedImage"&&h?{strength:e.strength}:{},...d==="referenceImages"?{referenceImages:(i??[]).slice(0,D)}:{},...d==="seedImage"&&l?{referenceImages:i}:{},...M?{providerSettings:M}:{},...b==="explicit"&&!k.allowCustomSize?{width:e.width,height:e.height}:{}},inputType:d,outputWidth:C,outputHeight:G,strength:d==="seedImage"&&h?e.strength:null}}async function ja(e){const t=Oa.parse(e);if(t.mode==="status")return await Le(t.taskId);const r=await $a(t),{taskId:i,logId:o}=await Ma(r.body);if(t.mode==="submit")return Ra(i,o);const l=await La(i,t.pollTimeoutMs,{signal:t.signal,onProgress:t.onProgress});if(l.status!=="succeeded"||!l.result)throw new Error(l.error?.message??`Task ended with status: ${l.status}`);const d=l.result.images[0];return{mode:"run",taskId:i,model:t.model,positivePrompt:t.positivePrompt,negativePrompt:t.negativePrompt?.trim()||null,inputType:r.inputType,outputWidth:r.outputWidth??d?.width??null,outputHeight:r.outputHeight??d?.height??null,outputFormat:za,strength:r.strength,...l.result,logId:o}}var Wa={class:"flex flex-col gap-4 xl:sticky xl:top-4"},Na={key:0},Va={key:2,class:"flex flex-wrap gap-4 text-sm text-gray-600"},Ga={class:"flex items-center gap-2"},Ka={key:4,class:"flex flex-col gap-2"},Ja={class:"flex items-center justify-between"},Xa={class:"text-sm text-gray-700 font-medium"},Za={class:"m-0 text-xs text-gray-500"},Ya={class:"flex flex-wrap items-center gap-3"},Qa=ge({__name:"ToolRuntime.client",setup(e){const{t}=ce({messages:ye}),r=Pe("ai-image-to-image"),i=kt(),o=ct(),l=Pe("ai-image-to-image.reference-images"),d=be(),h=d.filter(s=>{if((s.imageToImageSizeMode??(s.dimensions.length===0?"inherit":"explicit"))==="inherit")return!0;const n=Ie(s.id,d);return n.allowCustomSize?n.minWidth<=n.maxWidth&&n.minHeight<=n.maxHeight:n.presets.length>0}),{selectedModelId:b,positivePrompt:k,negativePrompt:C,translateToEnglish:G,width:D,height:M,strength:j,isGenerating:c,currentModelId:B,canGenerate:We,buildBasePayload:Ne}=Vt({modelPresets:h,defaultModelId:h[0]?.id??"",toolName:"ai-image-to-image"}),{showError:K,showSuccess:Ve}=Bt(t),{generationHistory:xe,upsertHistoryItem:oe}=Tt("ai-image-to-image"),R=H([]),w=H(null),O=H(null),F=H(!1);let W=0;const S=H([]),T=H([]),J=H(!1);let X=0;const N=H({}),{waitForTask:Ge}=It(),Ke=m(()=>{const s=R.value[0];return!!(s&&!s.error&&O.value)}),Je=m(()=>c.value||xe.value.some(s=>s.status==="processing"||s.status==="success"&&s.media.length>0)),I=m(()=>d.find(s=>s.id===B.value)),le=m(()=>I.value?.imageToImageSizeMode??(I.value&&I.value.dimensions.length===0?"inherit":"explicit")),Xe=m(()=>!!I.value?.promptLimits?.negative),Se=m(()=>I.value?.promptLimits?.positive.max??3e3),Ze=m(()=>I.value?.promptLimits?.positive.min??0),Ye=m(()=>I.value?.promptLimits?.negative?.max??Se.value),Qe=m(()=>I.value?.promptLimits?.negative?.min??0),et=m(()=>I.value?.imageToImageInput??"seedImage"),z=m(()=>
1et.value==="referenceImages"),tt=m(()=>z.value?!1:I.value?.imageToImageSupportsStrength??!0),V=m(()=>I.value?.referenceImages?.max??0),at=m(()=>{const s=I.value?.referenceImages;return s?typeof s.min=="number"?s.min:s.required?1:0:0}),Y=m(()=>Math.max(1,at.value)),rt=m(()=>z.value&&V.value>0),_=m(()=>Ie(B.value,h)),it=m(()=>!We.value||c.value?!1:z.value?T.value.length>=Y.value:Ke.value),st=m(()=>{const s=Ct({toolSlug:"ai-image-to-image",operation:"image-generate",variant:Ft({modelId:B.value,width:D.value,height:M.value,referenceImagesCount:S.value.length,providerSettings:N.value}),itemCount:1});return Ht(t("settings.transformButton"),s,n=>t("estimatedCreditsButton",n))});function nt(s){return Lt(s)}re(B,s=>{N.value=nt(s)},{immediate:!0}),re(z,s=>{s?(W++,R.value=[],O.value=null,w.value=null,F.value=!1):(X++,S.value=[],T.value=[],J.value=!1)},{immediate:!0}),re(V,s=>{s<=0||S.value.length>s&&(S.value=S.value.slice(0,s),T.value=T.value.slice(0,s))}),re(S,s=>{s.length||(T.value=[])});async function ke(s){try{const{url:n}=await we(s.file);return n}catch(n){return l.error("Failed to upload file",n),o.add({severity:"error",summary:t("settings.uploadError"),detail:t("settings.uploadErrorDetail",{name:s.name})}),null}}async function ot(s){if(T.value=s,!s.length){X++,J.value=!1,S.value=[];return}const n=++X;J.value=!0;try{const p=await Promise.all(s.map(y=>ke(y)));if(n!==X)return;const f=p.filter(y=>typeof y=="string"&&y.length>0),u=V.value;S.value=u>0?f.slice(0,u):[]}finally{n===X&&(J.value=!1)}}async function lt(s){const n=URL.createObjectURL(s);try{return await new Promise((p,f)=>{const u=new Image;u.onload=()=>p({width:u.naturalWidth||u.width,height:u.naturalHeight||u.height}),u.onerror=()=>f(new Error("Failed to load image")),u.src=n})}finally{URL.revokeObjectURL(n)}}function dt(){W++,R.value=[],w.value=null,O.value=null,F.value=!1}async function mt(s){const n=++W;if(O.value=null,w.value=null,!s.length){F.value=!1;return}const p=s[0];if(!p||p.error){F.value=!1;return}F.value=!0;try{const[f,u]=await Promise.all([lt(p.file).catch(y=>(r.error("Failed to load source image dimensions",y),null)),we(p.file)]);if(n!==W)return;w.value=f,O.value=u.url}catch(f){if(n!==W)return;r.error("Failed to upload source image",f),o.add({severity:"error",summary:t("settings.uploadError"),detail:t("settings.uploadErrorDetail",{name:p.file.name})}),R.value=[],O.value=null,w.value=null}finally{n===W&&(F.value=!1)}}async function ut(){if(c.value)return;if(!k.value.trim()){K(t("messages.enterPrompt"));return}if(!B.value){K(t("messages.selectModel"));return}const s=I.value,n=z.value?"referenceImages":"seedImage";let p;if(n==="referenceImages"){if(T.value.length<Y.value){K(t("messages.uploadReferenceImages",{count:Y.value}));return}}else if(p=R.value[0],!p||p.error){K(t("messages.uploadImageFirst"));return}c.value=!0,r.info("Starting image-to-image generation");try{const f=s?.imageToImageSupportsStrength??n==="seedImage",u=ve(B.value,{mode:"image-to-image"}),y=u.providerId?Dt(u,N.value[u.providerId],{applyDefaults:!0,enforceLocked:!0}):{},E={...Ne()};if(le.value==="inherit"&&(delete E.width,delete E.height),u.providerId&&Object.keys(y).length>0&&(E.providerSettings={[u.providerId]:y}),n==="referenceImages"){const q=await Promise.all(T.value.filter(ue=>!ue.error).map(ue=>ke(ue)));if(q.includes(null))return;S.value=q.slice(0,V.value),E.referenceImages=S.value}else{const q=await we(p.file);O.value=q.url,E.seedImage=q.url,E.strength=f?j.value:void 0}const{taskId:Z,logId:me}=await ja($e.parse({mode:"submit",...E,idempotencyKey:crypto.randomUUID()})),Q=le.value==="explicit"?`${D.value}\xD7${M.value}`:w.value?`${w.value.width}\xD7${w.value.height}`:null,ee={id:me??Z,taskId:Z,status:"processing",title:k.value,subtitle:B.value,media:[],details:[...Q?[{label:"Size",value:Q}]:[],...n==="seedImage"&&f?[{label:"Strength",value:j.value}]:[]],creditsSpent:0,timestamp:Date.now()};oe(ee);const g=await Ge(Z);await zt({taskResult:g,pendingItem:ee,upsertHistoryItem:oe,showSuccess:q=>Ve(q),successMessage:t("messages.generatedSuccess",{count:_t(g.result).length}),closeMobileSidebar:()=>i.closeMobileSidebar()})}catch(f){r.error("Generation failed:",f),Ot({error:f,fallbackMessage:t("messages.generationFailed"),generationHistory:xe,upsertHistoryItem:oe,showError:K})}finally{c.value=!1}}const de=m({get:()=>j.value,set:s=>{j.value=s??0}});return(s,n)=>{const p=qt,f=Ut,u=$t,y=vt,E=Wt,Z=Mt,me=jt,Q=gt,ee=ht;return x(),te("div",null,[A("div",Wa,[a(Je)?(x(),te("div",Na,[L(p,{slug:"ai-image-to-image","media-type":"image","is-generating":a(c)},null,8,["is-generating"])])):U("",!0),a(z)?U("",!0):(x(),$(f,{key:1,modelValue:a(R),"onUpdate:modelValue":n[0]||(n[0]=g=>P(R)?R.value=g:null),accept:"image/png,image/jpeg,image/webp",multiple:!1,"max-size":10*1024*1024,"max-count":1,disabled:a(c)||a(F),loading:a(c)||a(F),"enable-paste":"",onChange:mt,onClear:dt},null,8,["modelValue","disabled","loading"])),!a(z)&&a(w)?(x(),te("div",Va,[A("div",Ga,[n[9]||(n[9]=A("i",{class:"i-solar:ruler-angular-bold text-gray-400"},null,-1)),A("span",null,ae(a(w).width)+"\xD7"+ae(a(w).height),1)])])):U("",!0),a(h).length>1?(x(),$(u,{key:3,"selected-model-id":a(b),"onUpdate:selectedModelId":n[1]||(n[1]=g=>P(b)?b.value=g:null),kind:"image","model-presets":a(h),disabled:a(c)},null,8,["selected-model-id","model-presets","disabled"])):U("",!0),a(rt)?(x(),te("div",Ka,[A("div",Ja,[A("label",Xa,ae(a(t)("settings.referenceImages")),1),L(y,{severity:"info",value:a(t)("settings.required")},null,8,["value"])]),L(f,{"model-value":a(T),accept:"image/*",variant:"input",multiple:!0,"max-count":a(V),"max-size":20*1024*1024,disabled:a(c)||a(J),"resize-images":!0,"max-width":2048,"max-height":2048,"image-quality":.9,"enable-paste":"","onUpdate:modelValue":ot},null,8,["model-value","max-count","disabled"]),A("p",Za,ae(a(t)("settings.referenceImagesHelp",{min:a(Y),max:a(V)})),1)])):U("",!0),a(tt)?(x(),$(E,{key:5,modelValue:a(de),"onUpdate:modelValue":n[2]||(n[2]=g=>P(de)?de.value=g:null),label:a(t)("settings.transformationStrength"),min:0,max:1,step:.
105,disabled:a(c),"help-text":a(t)("settings.transformationStrengthHelp")},null,8,["modelValue","label","disabled","help-text"])):U("",!0),L(Z,{"positive-prompt":a(k),"onUpdate:positivePrompt":n[3]||(n[3]=g=>P(k)?k.value=g:null),"negative-prompt":a(C),"onUpdate:negativePrompt":n[4]||(n[4]=g=>P(C)?C.value=g:null),"translate-to-english":a(G),"onUpdate:translateToEnglish":n[5]||(n[5]=g=>P(G)?G.value=g:null),disabled:a(c),"positive-placeholder":"Describe the transformation you want...","enable-negative-prompt":a(Xe),"max-length":a(Se),"min-length":a(Ze),"negative-max-length":a(Ye),"negative-min-length":a(Qe)},null,8,["positive-prompt","negative-prompt","translate-to-english","disabled","enable-negative-prompt","max-length","min-length","negative-max-length","negative-min-length"]),a(le)==="explicit"?(x(),$(me,{key:6,width:a(D),"onUpdate:width":n[6]||(n[6]=g=>P(D)?D.value=g:null),height:a(M),"onUpdate:height":n[7]||(n[7]=g=>P(M)?M.value=g:null),disabled:a(c),label:a(t)("settings.outputSize"),presets:a(_).presets,"allow-custom-size":a(_).allowCustomSize,"min-width":a(_).minWidth,"max-width":a(_).maxWidth,"min-height":a(_).minHeight,"max-height":a(_).maxHeight,step:a(_).step},null,8,["width","height","disabled","label","presets","allow-custom-size","min-width","max-width","min-height","max-height","step"])):U("",!0),A("div",Ya,[L(Q,{label:a(c)?a(t)("messages.transformingImage"):a(st),icon:a(c)?"i-solar:refresh-bold-duotone animate-spin":"i-solar:magic-stick-3-bold",disabled:!a(it),loading:a(c),severity:"primary",class:"ml-auto",onClick:ut},null,8,["label","icon","disabled","loading"])]),a(c)?(x(),$(ee,{key:7,class:"!h-1.5",mode:"indeterminate"})):U("",!0)]),L(pa,{"provider-settings":a(N),"onUpdate:providerSettings":n[8]||(n[8]=g=>P(N)?N.value=g:null),"selected-model-id":a(b),"is-generating":a(c)},null,8,["provider-settings","selected-model-id","is-generating"])])}}}),er=Qa,tr=ge({__name:"index",setup(e){const{t}=ce({messages:ye}),r=Pt(t);return(i,o)=>{const l=Et;return x(),$(l,{meta:a(r)},{default:Te(()=>[L(er)]),_:1},8,["meta"])}}}),ar=tr;export{ar as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.