1import{d as As,c as R,q as ze,r as v,o as Ss,w as ma,O as Ms,D as Ge,K as A,k as _,z as p,E as S,B as n,a1 as Rs,G as i,u as l,H as U,A as C,U as Fe,P as ga,F as te,V as ke,S as pa,Q as Ie,W as Pt,a3 as gt,C as m}from"./vendor-vue-Dzwqm9Y9.js";import{_ as Ps}from"./AppLayout.vue_vue_type_script_setup_true_lang-DU-NXSvm.js";import{T as Ts}from"./TablePageLayout-ebRrTZp5.js";import{D as Bs}from"./DataTable-BszWCXiN.js";import{o as ae,a as Ds,_ as k,g as pt,D as Ls}from"./index-BB-1BiLf.js";import{S as ft}from"./Select-unWSiPwC.js";import{_ as Ns}from"./SearchInput.vue_vue_type_script_setup_true_lang-DnoXrebP.js";import{u as Us}from"./useClipboard-00CrFCqB.js";import{g as $s,s as Os}from"./usePersistedPageSize-x0WpaIWh.js";import{k as zs}from"./AppHeader.vue_vue_type_style_index_0_scoped_80f3916c_lang-CWJeTQGo.js";import{u as Gs}from"./vendor-i18n-BuoWFzps.js";import"./vendor-misc-B-nM3tYW.js";import"./featureFlags-DuhANbyz.js";import"./LocaleSwitcher-DwqRgoPh.js";/* empty css */import"./vendor-ui-mF4M59HB.js";async function se(x){var g,h;try{const b=await x.json(),f=((g=b==null?void 0:b.error)==null?void 0:g.message)||(b==null?void 0:b.message)||x.statusText,pe=new Error(f);return pe.code=((h=b==null?void 0:b.error)==null?void 0:h.code)||x.status,pe.status=x.status,pe.requestId=x.headers.get("X-Request-Id")||"",pe}catch{const b=new Error(x.statusText||`HTTP ${x.status}`);return b.code=x.status,b.status=x.status,b.requestId=x.headers.get("X-Request-Id")||"",b}}function ne(x,g){return{Authorization:`Bearer ${x}`,...g}}async function fa(x,g,h){const b=await fetch(ae("/v1/images/batches"),{method:"POST",headers:ne(x,{"Content-Type":"application/json","Idempotency-Key":h}),body:JSON.stringify(g)});if(!b.ok)throw await se(b);return b.json()}async function Fs(x,g){const h=await fetch(ae(`/v1/images/batches/${encodeURIComponent(g)}`),{headers:ne(x)});if(!h.ok)throw await se(h);return h.json()}async function Ks(x,g=20){const h=new URLSearchParams;typeof g=="number"?h.set("limit",String(g)):(h.set("limit",String(g.limit||20)),g.cursor&&h.set("cursor",g.cursor),g.status&&h.set("status",g.status),g.taskName&&h.set("task_name",g.taskName),g.downloaded&&h.set("downloaded",g.downloaded),g.from&&h.set("from",g.from),g.to&&h.set("to",g.to));const b=await fetch(ae(`/v1/images/batches?${h.toString()}`),{headers:ne(x)});if(!b.ok)throw await se(b);return b.json()}async function Hs(x){const g=await fetch(ae("/v1/images/batches/models"),{headers:ne(x)});if(!g.ok)throw await se(g);return g.json()}async function ha(x,g,h=""){const b=h?`?status=${encodeURIComponent(h)}`:"",f=await fetch(ae(`/v1/images/batches/${encodeURIComponent(g)}/items${b}`),{headers:ne(x)});if(!f.ok)throw await se(f);return f.json()}async function Vs(x,g){const h=await fetch(ae(`/v1/images/batches/${encodeURIComponent(g)}/cancel`),{method:"POST",headers:ne(x)});if(!h.ok)throw await se(h);return h.json()}async function _a(x,g){const h=await fetch(ae(`/v1/images/batches/${encodeURIComponent(g)}/download`),{headers:ne(x)});if(!h.ok)throw await se(h);return h.blob()}async function Js(x,g,h,b=0){const f=await fetch(ae(`/v1/images/batches/${encodeURIComponent(g)}/items/${encodeURIComponent(h)}/content?image_index=${encodeURIComponent(String(b))}`),{headers:ne(x)});if(!f.ok)throw await se(f);return f.blob()}async function va(x,g){const h=await fetch(ae(`/v1/images/batches/${encodeURIComponent(g)}`),{method:"DELETE",headers:ne(x)});if(!h.ok)throw await se(h)}function ba(x,g){const h=URL.createObjectURL(x),b=document.createElement("a");b.href=h,b.download=g,document.body.appendChild(b),b.click(),document.body.removeChild(b),URL.revokeObjectURL(h)}const qs={class:"flex flex-col gap-3"},Ws={class:"flex flex-col gap-3 2xl:flex-row 2xl:items-center 2xl:justify-between"},Xs={class:"grid w-full grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-[260px_160px_144px_152px] 2xl:w-auto"},Ys={class:"min-w-0"},Zs={class:"flex flex-wrap items-center justify-start gap-2 sm:justify-end 2xl:flex-shrink-0"},Qs=["disabled"],js=["disabled","title"],en={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-lg border border-gray-200 bg-white px-3 py-2 shadow-sm dark:border-dark-700 dark:bg-dark-800"},tn={class:"font-medium text-gray-900 dark:text-white"},an={class:"flex flex-wrap items-center gap-2"},sn=["disabled"],nn=["disabled"],rn=["checked","indeterminate"],on=["checked","onChange"],ln=["title","onClick"],cn={key:1,class:"w-6 flex-shrink-0"},dn=["onClick"],un={class:"min-w-0 truncate"},mn={key:0,class:"flex-shrink-0 rounded-full bg-gray-100 px-2 py-0.5 text-xs font-normal text-gray-600 dark:bg-dark-700 dark:text-gray-300"},gn={key:1,class:"flex-shrink-0 rounded-full bg-amber-50 px-2 py-0.5 text-xs font-normal text-amber-700 dark:bg-amber-900/20 dark:text-amber-300"},pn={class:"mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-gray-500 dark:text-gray-400"},fn={class:"mx-auto max-w-[180px] text-center"},hn=["title"],_n={class:"block truncate text-center text-sm text-gray-700 dark:text-gray-300"},vn={class:"flex justify-center"},bn={class:"flex items-center justify-center gap-2 text-sm tabular-nums"},yn={class:"text-emerald-600 dark:text-emerald-300"},xn={class:"text-xs text-gray-400 dark:text-gray-500"},wn={class:"block text-center text-sm text-gray-700 dark:text-gray-300"},kn={class:"flex items-center justify-center gap-1"},In=["title","onClick"],Cn={class:"text-xs"},En=["disabled","title","onClick"],An={class:"text-xs"},Sn={key:0},Mn=["title","onClick"],Rn={class:"text-xs"},Pn={class:"flex min-h-[260px] flex-col items-center justify-center py-6 md:min-
1h-[300px]"},Tn={class:"text-lg font-medium text-gray-900 dark:text-gray-100"},Bn={class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Dn={key:0,class:"flex flex-col gap-3 border-t border-gray-200 bg-white px-4 py-3 dark:border-dark-700 dark:bg-dark-800 sm:flex-row sm:items-center sm:justify-between sm:px-6"},Ln={class:"flex flex-wrap items-center gap-3 text-sm text-gray-700 dark:text-gray-300"},Nn={class:"font-medium"},Un={class:"font-medium"},$n={class:"flex items-center gap-2"},On={class:"flex items-center justify-end gap-2"},zn=["disabled"],Gn=["disabled"],Fn=["disabled","onClick"],Kn=["disabled","onClick"],Hn={class:"mb-2 flex items-center justify-between gap-3"},Vn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Jn={class:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words leading-6 selection:bg-primary-100 selection:text-primary-900 dark:selection:bg-primary-900/60 dark:selection:text-primary-100"},qn={key:0,class:"space-y-4"},Wn={class:"rounded-lg border border-gray-200 bg-gray-50/70 px-4 py-3 dark:border-dark-700 dark:bg-dark-900/40"},Xn={class:"grid gap-x-6 gap-y-3 sm:grid-cols-2 lg:grid-cols-4"},Yn={class:"min-w-0 text-center"},Zn={class:"text-xs text-gray-500 dark:text-gray-400"},Qn={class:"mt-1 flex justify-center"},jn={class:"min-w-0 text-center"},er={class:"text-xs text-gray-500 dark:text-gray-400"},tr={class:"mt-1 flex items-center justify-center gap-2 font-medium tabular-nums"},ar={class:"text-emerald-600 dark:text-emerald-300"},sr={class:"min-w-0 text-center"},nr={class:"text-xs text-gray-500 dark:text-gray-400"},rr={class:"mt-1 truncate font-medium text-gray-900 dark:text-white"},or={class:"min-w-0 text-center"},ir={class:"text-xs text-gray-500 dark:text-gray-400"},lr={class:"mt-1 truncate font-medium text-gray-900 dark:text-white"},cr={class:"flex flex-wrap items-center justify-between gap-3"},dr={class:"text-sm font-semibold text-gray-900 dark:text-white"},ur=["disabled"],mr={key:0,class:"overflow-x-auto rounded-lg border border-gray-200 bg-white dark:border-dark-700 dark:bg-dark-900"},gr={class:"w-full min-w-[860px] table-fixed divide-y divide-gray-200 text-sm dark:divide-dark-700"},pr={class:"bg-gray-50 dark:bg-dark-800/80"},fr={class:"px-3 py-3 text-center text-sm font-medium text-gray-500 dark:text-gray-400"},hr={class:"px-3 py-3 text-center text-sm font-medium text-gray-500 dark:text-gray-400"},_r={class:"px-3 py-3 text-center text-sm font-medium text-gray-500 dark:text-gray-400"},vr={class:"divide-y divide-gray-100 dark:divide-dark-700"},br={class:"px-3 py-2.5 text-center"},yr=["title"],xr=["onPointerenter","onMouseenter","onClick","onFocus","onFocusin"],wr={class:"px-3 py-2.5 text-center"},kr=["title"],Ir={class:"px-3 py-2.5 text-center"},Cr={class:"mx-auto h-12 w-12 overflow-hidden rounded-md border border-gray-200 bg-gray-50 dark:border-dark-700 dark:bg-dark-800"},Er=["title","onClick"],Ar=["src","onError"],Sr=["disabled","title","onClick"],Mr=["title"],Rr={class:"px-3 py-2.5 text-center"},Pr=["title"],Tr={key:1,class:"rounded-lg border border-dashed border-gray-200 py-10 text-center dark:border-dark-700"},Br={class:"text-sm font-medium text-gray-700 dark:text-gray-200"},Dr={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Lr={class:"flex justify-end gap-3"},Nr=["disabled"],Ur=["disabled"],$r=["disabled"],Or={class:"space-y-3"},zr={class:"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-100"},Gr={class:"flex min-h-[420px] items-center justify-center rounded-lg bg-gray-50 p-4 dark:bg-dark-900"},Fr=["src","alt"],Kr={class:"grid gap-4 md:grid-cols-2"},Hr={class:"md:col-span-2"},Vr={class:"input-label"},Jr=["placeholder"],qr={class:"md:col-span-2"},Wr=["disabled"],Xr={value:0},Yr=["value"],Zr={key:0,class:"input-hint text-amber-600 dark:text-amber-400"},Qr={class:"input-label"},jr=["disabled"],eo={key:0,value:""},to={key:1,value:""},ao=["value"],so={key:0,class:"input-hint text-amber-600 dark:text-amber-400"},no={key:1,class:"input-hint text-amber-600 dark:text-amber-400"},ro={class:"input-label"},oo={class:"input-hint"},io={class:"input-label"},lo={class:"input-label"},co={class:"input flex items-center bg-gray-50 text-gray-600 dark:bg-dark-900 dark:text-gray-300"},uo={class:"space-y-3"},mo={class:"flex items-center justify-between gap-3"},go={class:"text-xs text-gray-500 dark:text-gray-400"},po={class:"rounded-lg border border-gray-200 p-3 dark:border-dark-700"},fo=["placeholder"],ho={class:"mt-2 grid gap-2 md:grid-cols-[minmax(0,1fr)_112px_132px_112px] md:items-center"},_o=["placeholder"],vo=["title","aria-label"],bo=["value"],yo=["disabled"],xo=["disabled"],wo={key:0,class:"mt-3 flex flex-wrap gap-2"},ko={class:"max-w-[180px] truncate"},Io=["title","onClick"],Co={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Eo={key:0,class:"overflow-hidden rounded-lg border border-gray-200 dark:border-dark-700"},Ao={class:"w-20 flex-shrink-0 font-mono text-xs text-gray-500 dark:text-gray-400"},So={class:"min-w-0 flex-1 truncate text-sm text-gray-800 dark:text-gray-100"},Mo={key:0,class:"flex-shrink-0 text-xs text-gray-500 dark:text-gray-400"},Ro={key:1,class:"flex-shrink-0 text-xs text-gray-500 dark:text-gray-400"},Po=["title","onClick"],To={key:1,class:"rounded-lg border border-dashed border-gray-200 px-3 py-6 text-center text-sm text-gray-500 dark:border-dark-700 dark:text-gray-400"},Bo={class:"rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm leading-6 text-amber-900 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-100"},Do={key:0,class:"rounded-lg border border-sky-200 bg-sky-50 p-3 text-sm leading-6 text-sky-800 dark:border-sky-800 dark:bg-sky-950/30 dark:text-sky-100"},Lo={class:"flex justify-end gap-3"},No=["disabled"],Uo=["disabled"],$o={class:"space-y-5"},Oo={class:"space-y-3"},zo={class:"text-sm font-semibold text-gray-900 dark:text-white"},Go={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm leading-6 text-gray-700 dark:border-dark-700 dark:bg-dark-900/50 dark:text-gray-200"},Fo={class:"space-y-3"},Ko={class:"flex flex-wrap items-center justify-between gap-3"},Ho={class:"text-sm font-semibold text-gray-900 dark:text-white"},Vo={class:"text-xs text-gray-500 dark:text-gray-400"},Jo=["value"],qo={class:"flex justify-end gap-3"},Wo="sub2api-batch-image-preview-cache",$="thumbnails",Xo=360,Yo=.72,ya=3*24*60*60*1e3,Zo=120,Qo=48*1024*1024,Tt=4,xa=200,jo=As({__name:"BatchImageGuideView",setup(x){const g=new Set(["completed","failed","cancelled","output_deleted"]),h=Array.from({length:Tt},(e,t)=>t+1),b=[20,50,100].map(e=>({value:e,label:String(e)})),f=Ds(),{copyToClipboard:pe}=Us(),{t:r,locale:wa}=Gs(),ka=R(()=>
1[{key:"select",label:"",sortable:!1,class:"w-12 text-center"},{key:"id",label:r("batchImage.columns.taskName"),sortable:!1,class:"w-[240px] max-w-[240px]"},{key:"model",label:r("batchImage.columns.model"),sortable:!1,class:"w-[180px] max-w-[180px] text-center"},{key:"api_key_name",label:r("batchImage.columns.apiKey"),sortable:!1,class:"w-40 max-w-40 text-center"},{key:"status",label:r("common.status"),sortable:!1,class:"w-28 text-center"},{key:"counts",label:r("batchImage.columns.result"),sortable:!1,class:"w-32 text-center"},{key:"cost",label:r("batchImage.columns.cost"),sortable:!1,class:"w-36 text-center"},{key:"downloaded",label:r("batchImage.columns.downloadStatus"),sortable:!1,class:"w-40 text-center"},{key:"actions",label:r("common.actions"),sortable:!1,class:"w-40 text-center"}]),Ia=R(()=>[{value:"",label:r("batchImage.filters.allStatuses")},{value:"queued",label:r("batchImage.status.queued")},{value:"running",label:r("batchImage.status.running")},{value:"processing_results",label:r("batchImage.status.processingResults")},{value:"settling",label:r("batchImage.status.settling")},{value:"completed",label:r("batchImage.status.completed")},{value:"failed",label:r("batchImage.status.failed")},{value:"cancelled",label:r("batchImage.status.cancelled")},{value:"output_deleted",label:r("batchImage.status.outputDeleted")}]),Ca=R(()=>[{value:"",label:r("batchImage.filters.allDownloadStates")},{value:"true",label:r("batchImage.filters.downloaded")},{value:"false",label:r("batchImage.filters.notDownloaded")}]),I=ze({apiKeyId:0,taskName:"",model:"",responseMimeType:"image/png"}),M=ze({taskName:"",apiKeyId:"",status:"",downloaded:""}),P=ze({page:1,page_size:Math.min($s(20),100),has_more:!1}),ht=v([]),re=v(!1),oe=v(!1),Q=v(!1),Ke=v(!1),He=v(!1),ie=v(!1),Be=v(""),fe=v(""),Ce=v(!1),Ee=v(!1),le=v(""),he=v(!1),Ae=v(!1),Ve=v(!1),Je=v(!1),u=v(null),K=v(""),_e=v(0),X=v([]),D=v([]),L=v(new Set),ve=v(new Set),O=v([]),ce=v(""),De=v(""),Le=v(1),N=v([]),T=ze({}),de=v(new Set),H=v(new Set),be=v(null),j=v([]),qe=v(""),Se=v(""),Bt=v({}),J=ze({visible:!1,text:"",style:{}});let We=0,Xe=null,Ye=null,Ze=null,Qe=null,je=null,et=null;const G=R(()=>ht.value.filter(e=>{var t,s;return e.status==="active"&&((t=e.group)==null?void 0:t.platform)==="gemini"&&((s=e.group)==null?void 0:s.allow_batch_image_generation)===!0})),q=R(()=>G.value.find(e=>e.id===Number(I.apiKeyId))||null),Ea=R(()=>{const e=Number(M.apiKeyId||0);return e?G.value.filter(t=>t.id===e):G.value}),Aa=R(()=>[{value:"",label:r("batchImage.filters.allApiKeys")},...G.value.map(e=>({value:String(e.id),label:e.name||`API Key #${e.id}`}))]),Dt=R(()=>D.value.filter(e=>L.value.has(e.id))),tt=R(()=>{const e=new Map;for(const t of D.value){if(!t.parent_batch_id)continue;const s=e.get(t.parent_batch_id)||[];s.push(t),e.set(t.parent_batch_id,s)}for(const t of e.values())t.sort((s,o)=>s.created_at-o.created_at);return e}),ue=R(()=>{const e=[];for(const t of D.value.filter(s=>!s.parent_batch_id))e.push(t),ve.value.has(t.id)&&e.push(...(tt.value.get(t.id)||[]).map(s=>({...s,is_child:!0})));return e}),_t=R(()=>Dt.value.filter(e=>it(e))),Lt=R(()=>ue.value.length>0&&ue.value.every(e=>L.value.has(e.id))),Sa=R(()=>ue.value.some(e=>L.value.has(e.id))&&!Lt.value),Nt=R(()=>{const e=be.value;return e&&T[z(e)]||""}),Ma=R(()=>{if(!Ct())return new Set;const t=new Set;for(const s of X.value){if(!rs(s)||!ns(s))continue;const o=os(s.custom_id);o&&t.add(o)}return t}),me=R(()=>u.value?ee(u.value):null),ye=R(()=>{var t;const e=(t=f.apiBaseUrl)==null?void 0:t.trim();return e?e.replace(/\/+$/,""):typeof window<"u"?window.location.origin.replace(/\/+$/,""):"<ä½ ç Sub2API API 端ç¹>"}),Me=R(()=>Ra(I.model)),Ut=R(()=>O.value.reduce((e,t)=>e+bt(t.output_count),0)),vt=R(()=>{const e=new Set;return O.value.map((t,s)=>{const a={custom_id:Ot(t.custom_id||`img_${String(s+1).padStart(3,"0")}`,e,s),prompt:t.prompt.trim()},c=bt(t.output_count);return c>1&&(a.output_count=c),t.reference_images.length&&(a.reference_images=t.reference_images),a}).filter(t=>t.prompt)});function Ra(e){const t=String(e||"").toLowerCase();return t.includes("pro-image")?14:t.includes("flash-image")?3:0}const $t=R(()=>`---
2name: sub2api-batch-image 3description: å½ç¨æ·å¸æç¨ Gemini/Vertex æ¹éçæå¾çãæ¹éè·æç¤ºè¯ãä¸è½½æ¹éçå¾ç»æãéè¯å¤±è´¥å¾çæ¶ä½¿ç¨ã 4--- 5 6ä½ æ¯ Codex ä¸çæ¹éç徿§è¡ Agentãç¨æ·ä¸éè¦æå¨å¡«å页é¢è¡¨åï¼ä½ åºä»å½åè天ãç¨æ·ç»çæä»¶ãç®å½æä¸ä¸æä¸æ´çä»»å¡åç§°ãprompt å表åè¾åºç®å½ï¼åªæç¼ºå°å ³é®å³çæ¶æåç¨æ·æé®ã 7 8é»è®¤ç«¯ç¹ï¼ 9${ye.value} 10 11ä½ éè¦èªå·±å®æï¼ 121. ä»ç¨æ·è天æé件䏿å promptãæ¯æ¡ prompt ä¿ç宿´ææ¬ï¼æé¡ºåºçæç¨³å® custom_idï¼ä¾å¦ img_001ãimg_002ã 132. ä»ç¨æ·è¦æ±æä¸ä¸ææ¨æä»»å¡åç§°ï¼æ²¡ææç¡®åç§°æ¶ç¨å½åæ¶é´çæä»»å¡åã 143. ä»ç¨æ·è¦æ±æä¸ä¸ææ¨æè¾åºç®å½ï¼å¦æç¨æ·æ²¡æè¯´ä¿åå°åªéï¼æè¯¢é®ç¨æ·ã 154. æäº¤åå¿ é¡»å è®¡ç® expected_output_count = ææ item ç output_count ä¹åãå个æ¹éä»»å¡ç¡¬æ§æå¤ 200 å¼ è¾åºå¾ï¼è¶ è¿ 200 å¼ å¿ é¡»ææå¤ç»ä»»å¡ï¼ä¸è½æäº¤ä¸ä¸ªè¶ 大任å¡ï¼ä¹ä¸è½æåèå¾éä»¶ä¸é彿çæå¼ æ°ä¸éã 165. å¦æç¨æ·æä¾åèå¾ï¼æåè徿ç¨éç»å®å°å ·ä½ itemãåèå¾åªæ¯è¾å ¥éä»¶ï¼ä¸æ¯è¾åºå¾æ°éãæ¨¡ååæ¡éå¶å¿ é¡»ææ¨¡åæ§è¡ï¼Gemini 2.5 Flash Image æ¯æ¡æå¤ 3 å¼ åèå¾ï¼Gemini 3 Pro Image æ¯æ¡æå¤ 14 å¼ åèå¾ãä¸è¦æå端é件飿§çè§£æ Pro åæ¡è½åï¼æ output_count å±å¼åï¼ææ item çåèå¾éä»¶æ»æ°è¿æå é¨ä¿æ¤éå¼ 1000 个ï¼inline base64 åèå¾è§£ç åæ»éæå¤ 128MBãè¿ä¸ª 1000 åªæ¯æå¡å¨æç»å¼å¸¸è¯·æ±çä¿æ¤éå¼ï¼ä¸æ¯æ¨èè§æ¨¡ï¼åèå¾å¾å¤ææ»è¯·æ±ä½è¾å¤§æ¶åºä¸»å¨æåä»»å¡ã 176. åèå¾ä¼æ output_count é夿¶èè¾å ¥ tokenï¼å¤§éä»»å¡ãéå¤å¤ç¨åä¸å¼ åè徿åè徿»ä½ç§¯è¾å¤§æ¶ï¼ä¼å ä½¿ç¨ gs:// file_uri ææåæå¤ç»ä»»å¡ã 187. éæ© API Key 忍¡åï¼å è·åå½åå¯ç¨çæ¹éçå¾ Key/模åï¼å¦æç¨æ·æå®æ¨¡åä¸è¯¥ Key æ¯æï¼å使ç¨ç¨æ·æå®æ¨¡åï¼å¦å使ç¨è¯¥ Key å¯ç¨æ¨¡åä¸çé»è®¤/第ä¸ä¸ªãä¸è¦å±ç¤ºæè¯¢é®å é¨ provider åç§°ã 198. è°ç¨æ¹éçå¾ API æäº¤ã轮询ãä¸è½½ï¼ä¸è¦æ±ç¨æ·å»é¡µé¢éæå¡«ã 20 21API è°ç¨è§èï¼ 22- 模åï¼GET ${Re(ye.value,"/v1/images/batches/models")} 23- æäº¤ï¼POST ${Re(ye.value,"/v1/images/batches")} 24- æ¥è¯¢ï¼GET ${Re(ye.value,"/v1/images/batches/{id}")} 25- æç»ï¼GET ${Re(ye.value,"/v1/images/batches/{id}/items")} 26- ä¸è½½ï¼GET ${Re(ye.value,"/v1/images/batches/{id}/download")} 27- åæ¶ï¼POST ${Re(ye.value,"/v1/images/batches/{id}/cancel")} 28 29æäº¤è¯·æ±ä½ï¼ 30{ 31 "model": "<ææé Key å¯ç¨æ¨¡åå¡«å>", 32 "task_name": "<ä»èå¤©æ¨æï¼ä¸ºç©ºåç¨å½åæ¶é´>", 33 "image_size": "1K", 34 "response_mime_type": "image/png", 35 "items": [ 36 { 37 "custom_id": "img_001", 38 "prompt": "<ç¬¬ä¸æ¡å®æ´ prompt>", 39 "output_count": 1, 40 "reference_images": [ 41 { 42 "id": "face", 43 "type": "subject", 44 "mime_type": "image/png", 45 "data": "<base64ï¼ä¸å« data:image/png;base64, åç¼>" 46 } 47 ] 48 } 49 ] 50} 51 52å¿ é¡»éµå®ï¼ 53- ä¸è¦æ API Key åå ¥ä»åºãæ¥å¿ãæäº¤è®°å½ææç»åå¤ã 54- ä¸è¦æåèå¾ base64 åå ¥æç»åå¤ãæ¥å¿æå ¬å¼æä»¶ãæ¢å¤è®°å½ä¸åªä¿ååè徿件åãç¨éãæ°éåè¯·æ± JSON æä»¶è·¯å¾ï¼è¥è¯·æ± JSON æä»¶å å« base64ï¼åºä¿åå¨ç¨æ·æå®è¾åºç®å½ä¸ä¸è¦æäº¤å°ä»åºã 55- output_count 表示åä¸ prompt ååèå¾éå¤çæå å¼ ï¼é»è®¤ 1ï¼æ¯æ¡æå¤ 4ï¼è¿ä¸æ¯ä¾èµ Gemini 忬¡è¯·æ±è¿åå¤å¾ï¼èæ¯ç³»ç»å±å¼æå¤ä¸ªçå®ä»»å¡é¡¹ãæäº¤åå¿ é¡»ç¡®è®¤é¢è®¡è¾åºå¾æ»æ°ä¸è¶ è¿ 200ï¼è¶ è¿å°±æåæå¤ç»ä»»å¡ãç»ä¸è½å 为åèå¾éä»¶ææ´é«çå é¨ä¿æ¤éå¼ï¼å°±æäº¤ä¼çæè¶ è¿ 200 å¼ å¾çä»»å¡ã 56- å½åå¯¹ç¨æ·çæ¹éçå¾è®¡è´¹ä»ææåè¾åºå¾çæ°éç»ç®ï¼ä¸åç¬å¯¹åèå¾å ä»·ãå¯ä»¥åç¨æ·è¯´æï¼åèå¾ä¼äº§çå°é䏿¸¸è¾å ¥ token å临æ¶å卿æ¬ï¼ä¸ä¼é output_count éå¤è®¡ç®ï¼é¡µé¢æ¾ç¤ºçå»ç»/ç»ç®é颿è¾åºå¾çæ°é计ç®ã 57- æäº¤æååï¼å¿ é¡»ç«å»å¨è¾åºç®å½åå ¥æ¬å°æ¢å¤è®°å½ï¼ä¾å¦ batch-image-resume.jsonã
57ä¸è¦å¨æ¢å¤è®°å½éä¿å API Keyã 58- æ¢å¤è®°å½è³å°å å«ï¼endpointãtask_nameãbatch_idãmodelãoutput_dirãrequest_fileãsubmitted_atãlast_statusãstatus_urlãitems_urlãdownload_urlãprompt_countãexpected_output_countï¼ä»¥åå¯ç¨äºå¤±è´¥éè¯ç custom_id å° prompt æ å°æè¯·æ± JSON æä»¶è·¯å¾ã 59- æ¯æ¬¡æ¥è¯¢ç¶æåæ´æ°æ¢å¤è®°å½ï¼åå ¥ last_checked_atãlast_statusãæåæ°ã失败æ°ãå®é æ£è´¹å失败æè¦ãä¼è¯ä¸æææååï¼ä¸æ¬¡å¿ é¡»è½å该æä»¶ç»§ç»æ¥è¯¢ãä¸è½½æéè¯ã 60- ä¸è¦é«é¢è½®è¯¢ã馿¬¡æ¥è¯¢çå¾ çº¦ 20 å° 30 ç§ï¼queued ç¶ææ¯ 60 å° 120 ç§æ¥è¯¢ä¸æ¬¡ï¼å¦æè¿ç» 3 æ¬¡ä»æ¯ queuedï¼å°±å 忢䏻卿¥è¯¢ï¼åè¯ç¨æ·ä»»å¡ä»å¨æéï¼å¹¶ä¿çæ¢å¤è®°å½ï¼ä¹åå¯ç»§ç»å ¶ä»ä»»å¡æçå¾ ç¨æ·ç¨åè®©ä½ æ¢å¤ã 61- running ç¶ææ¯çº¦ 60 ç§æ¥è¯¢ä¸æ¬¡ï¼æå¡å¨åå大æå¤§æ¹é任塿¶å¯ä»¥æ´ä¹ ï¼processing_results çæ¥è¿å®æçç¶æå¯æ¯ 20 å° 45 ç§æ¥è¯¢ä¸æ¬¡ã 62- ä»»å¡å®æåæ¥åä»»å¡åãä»»å¡ idãæåæ°ã失败æ°ãå®é æ£è´¹åä¿åè·¯å¾ã 63- åªä¸è½½æåå¾çãé¨å失败æ¶ï¼å å±ç¤ºå¤±è´¥ custom_idãé误ç ãéè¯¯æ¥æºåç®è¦åå ã 64- éè¯åªè½éè¯å¤±è´¥é¡¹ï¼ä¸è½éå¤æäº¤å·²æå项ãè¥åå²ä»»å¡æ²¡æä¿å失败项 promptï¼å¿ é¡»åè¯ç¨æ·æ æ³èªå¨éè¯ï¼å¹¶è¯¢é®ç¨æ·æ¯å¦æä¾å promptã 65- åæ¶ä»»å¡åå¿ é¡»æéï¼å·²è¢«ç³»ç»ç´¢å¼ä¸ºæåçå¾çä»ä¼ææå项ç»ç®æ£è´¹ï¼å ¶ä½å»ç»éé¢ä¼éæ¾ã 66- å¾çé¢è§æéå è½½ï¼ä¸è¦ä¸ºäºæ¥çå表èªå¨æ¹éå è½½å¾çå 容ã`);function Re(e,t){return`${e.replace(/\/+$/,"")}/${t.replace(/^\/+/,"")}`}function Ot(e,t,s){const o=e.replace(/[^\w.-]+/g,"_").replace(/^_+|_+$/g,"")||`img_${String(s+1).padStart(3,"0")}`;let a=o,c=2;for(;t.has(a);)a=`${o}_${c}`,c+=1;return t.add(a),a}function bt(e){const t=Math.floor(Number(e||1));return Number.isFinite(t)?Math.min(Tt,Math.max(1,t)):1}function zt(){const e=ce.value.trim();if(!e)return;const t=bt(Le.value),s=new Set(O.value.map(a=>a.custom_id)),o=Ot(De.value||`img_${String(O.value.length+1).padStart(3,"0")}`,s,O.value.length);O.value=[...O.value,{localId:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,custom_id:o,prompt:e,output_count:t,reference_images:N.value.map(({name:a,size:c,...y})=>y)}],ce.value="",De.value="",Le.value=1,N.value=[]}function Pa(e){O.value=O.value.filter((t,s)=>s!==e)}function Ta(e){N.value=N.value.filter((t,s)=>s!==e)}async function Ba(e){const t=e.target,s=Array.from(t.files||[]);if(t.value="",s.length===0)return;const o=Me.value;if(o<=0){f.showError(r("batchImage.create.modelNoReferenceImages"));return}const a=Math.max(0,o-N.value.length);if(a<=0){f.showError(r("batchImage.create.refLimitReached",{limit:o}));return}const c=s.slice(0,a);c.length<s.length&&f.showError(r("batchImage.create.refLimitExceededIgnored",{limit:o}));const y=[];for(const w of c){if(!["image/png","image/jpeg","image/webp"].includes(w.type)){f.showError(r("batchImage.create.refFormatUnsupported"));continue}if(w.size>10*1024*1024){f.showError(r("batchImage.create.refFileTooLarge",{name:w.name}));continue}const B=await Da(w);y.push({id:w.name,type:"reference",mime_type:w.type,data:B,name:w.name,size:w.size})}N.value=[...N.value,...y]}function Da(e){return new Promise((t,s)=>{const o=new FileReader;o.onerror=()=>s(o.error||new Error("Failed to read file")),o.onload=()=>{const a=String(o.result||"");t(a.includes(",")?a.slice(a.indexOf(",")+1):a)},o.readAsDataURL(e)})}async function Gt(){re.value=!0;try{const e=await zs.list(1,100,{status:"active",sort_by:"created_at",sort_order:"desc"});ht.value=e.items||[],!q.value&&G.value.length>0&&(I.apiKeyId=G.value[0].id),M.apiKeyId&&!G.value.some(t=>String(t.id)===M.apiKeyId)&&(M.apiKeyId=""),q.value||(j.value=[],I.model="")}catch(e){f.showError(F(e,d("loadKeysFailed")))}finally{re.value=!1}}async function La(){var s;const e=q.value,t=++We;if(qe.value="",j.value=[],I.model="",!!e){Ae.value=!0;try{const o=await Hs(e.key);if(t!==We)return;const a=new Set;j.value=(o.data||[]).map(c=>String(c.id||"").trim()).filter(c=>!c||a.has(c)?!1:(a.add(c),!0)).map(c=>({value:c,label:c})),I.model=((s=j.value[0])==null?void 0:s.value)||""}catch(o){if(t!==We)return;qe.value=F(o,d("loadModelsFailed"))}finally{t===We&&(Ae.value=!1)}}}async function Ft(){await Gt(),await nt()}function Ne(){P.page=1,L.value=new Set,nt()}function Na(){M.taskName="",M.apiKeyId="",M.status="",M.downloaded="",Ne()}function Ua(){const e={limit:P.page_size,cursor:String((P.page-1)*P.page_size)};return M.taskName.trim()&&(e.taskName=M.taskName.trim()),M.status&&(e.status=M.status),M.downloaded&&(e.downloaded=M.downloaded),e}function yt(e,t=q.value){return{id:e.id,task_name:e.task_name||mt(e.created_at),parent_batch_id:e.parent_batch_id||null,status:e.status,model:e.model,provider:e.provider,item_count:e.item_count,success_count:e.success_count,fail_count:e.fail_count,estimated_cost:e.estimated_cost,hold_amount:e.hold_amount,actual_cost:e.actual_cost,created_at:e.created_at,downloaded_at:e.downloaded_at,api_key_id:(t==null?void 0:t.id)||0,api_key_name:(t==null?void 0:t.name)||"",child_count:0}}function xt(e){const t=new Map;for(const s of e)s.parent_batch_id&&t.set(s.parent_batch_id,(t.get(s.parent_batch_id)||0)+1);return e.map(s=>({...s,child_count:t.get(s.id)||0}
66))}function ee(e){if(e.parent_batch_id)return e;const t=tt.value.get(e.id)||[];if(!t.length)return e;const s=t.reduce((E,V)=>E+V.success_count,0),o=t.reduce((E,V)=>E+V.estimated_cost,0),a=t.reduce((E,V)=>E+V.hold_amount,0),c=t.reduce((E,V)=>E+(V.actual_cost||0),0),y=t.every(E=>E.actual_cost!==null),w=Math.min(e.item_count,e.success_count+s),B=Math.max(0,e.item_count-w),Z=e.actual_cost===null?y?c:null:e.actual_cost+c;return{...e,success_count:w,fail_count:B,status:B===0&&g.has(e.status)?"completed":e.status,estimated_cost:e.estimated_cost+o,hold_amount:e.hold_amount+a,actual_cost:Z}}function $a(e){return(tt.value.get(e)||[]).length>0}function Oa(e){const t=new Set(ve.value);t.has(e)?t.delete(e):t.add(e),ve.value=t}function W(){Se.value=""}function za(e,t){if(Se.value===e.id){W();return}const s=t.currentTarget,o=s==null?void 0:s.getBoundingClientRect();if(!o)return;const a=176,c=8,y=Math.max(c,Math.min(o.right-a,window.innerWidth-a-c)),w=Math.min(o.bottom+c,window.innerHeight-96);Bt.value={left:`${y}px`,top:`${Math.max(c,w)}px`},Se.value=e.id}function Ue(){Qe&&(clearTimeout(Qe),Qe=null)}function at(){je&&(clearTimeout(je),je=null)}function xe(){at(),Ue(),J.visible=!1,J.text="",J.style={},et=null}function st(){at(),Ue(),Qe=setTimeout(()=>{xe()},180)}function Kt(e,t){const s=e.currentTarget;if(!s)return;const o=String(t||"").trim();!o||o==="-"||(et=s,at(),Ue(),je=setTimeout(()=>{et!==s||!document.body.contains(s)||Ht(s,o)},520))}function wt(e,t){const s=String(t||"").trim();if(!s||s==="-")return;const o=e.currentTarget;Ue(),at(),o&&(et=o,Ht(o,s))}function Ht(e,t){const s=e.getBoundingClientRect();if(!s)return;const o=window.innerWidth||1280,a=window.innerHeight||720,c=Math.min(440,Math.max(320,o-32)),y=Math.max(16,Math.min(s.left,o-c-16)),w=178,B=s.bottom+8,Z=B+w>a?Math.max(16,s.top-w-8):B;J.text=t,J.style={left:`${y}px`,top:`${Z}px`,width:`${c}px`},J.visible=!0}function Ga(){J.text&&pe(J.text,r("batchImage.promptPopover.copied"))}async function nt(){const e=Ea.value;if(!e.length){D.value=[],P.has_more=!1;return}oe.value=!0,W();try{const t=Ua(),s=await Promise.all(e.map(async o=>{const a=await Ks(o.key,t);return{hasMore:!!a.has_more,rows:(a.data||[]).map(c=>yt(c,o))}}));D.value=xt(s.flatMap(o=>o.rows).sort((o,a)=>a.created_at-o.created_at).slice(0,P.page_size)),P.has_more=s.some(o=>o.hasMore),L.value=new Set([...L.value].filter(o=>ue.value.some(a=>a.id===o)))}catch(t){f.showError(F(t,d("loadJobsFailed")))}finally{oe.value=!1}}function rt(e){const t=yt(e),s=D.value.findIndex(o=>o.id===e.id);if(s>=0){const o=[...D.value];o[s]={...t,is_child:o[s].is_child},D.value=xt(o);return}D.value=xt([t,...D.value].slice(0,P.page_size))}function Vt(e){e<1||e===P.page||(P.page=e,L.value=new Set,nt())}function Fa(e){if(e===null||typeof e=="boolean")return;const t=Math.min(Math.max(Number(e)||20,1),100);P.page_size=t,P.page=1,Os(t),L.value=new Set,nt()}function Ka(){Ve.value=!0,ht.value.length||Gt()}function Jt(){Q.value||(Ve.value=!1,qt())}function qt(){I.taskName="",I.responseMimeType="image/png",O.value=[],ce.value="",De.value="",Le.value=1,N.value=[]}function Wt(){xe(),u.value=null,K.value="",_e.value=0,X.value=[],St()}function Pe(){if(_e.value){const e=G.value.find(t=>t.id===_e.value);if(e)return e}return q.value}function ge(){return q.value?q.value:(f.showError(d("selectApiKey")),null)}function Ha(){if(!ge())return!1;if(!I.model)return f.showError(j.value.length===0?d("noModelsForKey"):d("selectModel")),!1;if(vt.value.length===0)return f.showError(d("promptRequired")),!1;if(Ut.value>xa)return f.showError(d("tooManyOutputImages")),!1;const e=Me.value;return O.value.some(t=>t.reference_images.length>e)?(f.showError(d("tooManyReferenceImages")),!1):!0}async function Xt(){if(Q.value||(ce.value.trim()&&zt(),!Ha()))return;const e=ge();if(e){Q.value=!0;try{const t=await fa(e.key,{model:I.model,task_name:I.taskName.trim()||mt(),image_size:"1K",response_mime_type:I.responseMimeType,items:vt.value},`sub2api-ui-${Date.now()}-${Math.random().toString(36).slice(2,10)}`);u.value=t,K.value=t.id,_e.value=e.id,X.value=[],rt(t),Ve.value=!1,qt(),f.showSuccess(d("submitted")),ut(),Zt()}catch(t){f.showError(F(t,d("submitFailed")))}finally{Q.value=!1}}}async function kt(){if(!K.value)return;const e=Pe()||ge();if(e){Ke.value=!0;try{const t=await Fs(e.key,K.value);u.value=t,rt(t),g.has(t.status)&&ot()}catch(t){f.showError(F(t,d("refreshFailed")))}finally{Ke.value=!1}}}async function Va(){await Promise.all([kt(),ut()])}function Yt(e){const t=D.value.find(s=>
66s.id===e);t!=null&&t.api_key_id&&G.value.some(s=>s.id===t.api_key_id)?(I.apiKeyId=t.api_key_id,_e.value=t.api_key_id):_e.value=0,K.value=e,u.value=null,X.value=[],kt(),ut()}function Zt(){ot(),Xe=setInterval(()=>{if(!u.value||g.has(u.value.status)){ot();return}kt()},8e3)}function ot(){Xe&&(clearInterval(Xe),Xe=null)}function Ja(e){return!g.has(e.status)}function it(e){return e.status==="completed"&&e.success_count>0}function lt(e){const t="id"in e?ee(e):e;return g.has(t.status)&&t.fail_count>0}function ct(e){return ie.value&&Be.value===e}function qa(e){"api_key_id"in e&&e.api_key_id&&G.value.some(t=>t.id===e.api_key_id)&&(I.apiKeyId=e.api_key_id)}function $e(e){return"api_key_id"in e&&e.api_key_id?G.value.find(t=>t.id===e.api_key_id)||null:q.value}function Qt(e,t){const s=new Set(L.value);t?s.add(e):s.delete(e),L.value=s}function Wa(e){const t=new Set(L.value);for(const s of ue.value)e?t.add(s.id):t.delete(s.id);L.value=t}function dt(e){return g.has(e.status)}async function Xa(){if(!u.value)return;const e=Pe()||ge();if(e&&window.confirm(d("cancelConfirm"))){He.value=!0;try{const t=await Vs(e.key,u.value.id);u.value=t,rt(t),f.showSuccess(d("cancelled"))}catch(t){f.showError(F(t,d("cancelFailed")))}finally{He.value=!1}}}async function Ya(){u.value&&await ea(u.value)}async function Za(){u.value&&await jt(u.value)}async function jt(e){if(!lt(e)||fe.value)return;W();const t=$e(e)||Pe()||ge();if(t){fe.value=e.id;try{const o=(await Qa(t.key,e.id)).filter(c=>c.status==="failed").map(c=>({custom_id:ja(c.custom_id),prompt:String(c.prompt_preview||"").trim()})).filter(c=>c.prompt);if(o.length===0){f.showError(d("retryMissingPrompts"));return}const a=await fa(t.key,{model:e.model,task_name:`${e.task_name||mt()} ${r("batchImage.messages.retryTaskNameSuffix")}`,parent_batch_id:es(e),provider:e.provider,image_size:"1K",response_mime_type:I.responseMimeType,items:o},`sub2api-ui-retry-${e.id}-${Date.now()}-${Math.random().toString(36).slice(2,10)}`);u.value=a,K.value=a.id,_e.value=t.id,X.value=[],rt(a),a.parent_batch_id&&(ve.value=new Set([...ve.value,a.parent_batch_id])),f.showSuccess(d("retrySubmitted")),ut(),Zt()}catch(s){f.showError(F(s,d("retryFailed")))}finally{fe.value=""}}}async function Qa(e,t){return K.value===t&&X.value.length>0?X.value:(await ha(e,t)).data||[]}function ja(e){return`${String(e||"item").replace(/[^\w.-]+/g,"_").replace(/^_+|_+$/g,"")||"item"}_retry_${Date.now().toString(36)}`}function es(e){return e.parent_batch_id||e.id}async function ea(e){if(ie.value)return;W(),qa(e);const t=$e(e)||ge();if(t){ie.value=!0,Be.value=e.id;try{const s=await _a(t.key,e.id);ba(s,`${e.id}.zip`),ta(e.id)}catch(s){f.showError(F(s,d("downloadFailed")))}finally{ie.value=!1,Be.value=""}}}async function ts(){if(!(Ce.value||_t.value.length===0)){Ce.value=!0;try{for(const e of _t.value){const t=$e(e);if(!t)continue;ie.value=!0,Be.value=e.id;const s=await _a(t.key,e.id);ba(s,`${e.id}.zip`),ta(e.id)}f.showSuccess(d("batchDownloadStarted"))}catch(e){f.showError(F(e,d("downloadFailed")))}finally{Ce.value=!1,ie.value=!1,Be.value=""}}}async function as(e){if(!dt(e)||le.value)return;W();const t=$e(e);if(t&&window.confirm(d("deleteConfirm"))){le.value=e.id;try{await va(t.key,e.id),aa(e.id),f.showSuccess(d("deleted"))}catch(s){f.showError(F(s,d("deleteFailed")))}finally{le.value=""}}}async function ss(){const e=Dt.value.filter(t=>dt(t));if(!(Ee.value||e.length===0)&&window.confirm(d("deleteSelectedConfirm"))){Ee.value=!0;try{for(const t of e){const s=$e(t);s&&(le.value=t.id,await va(s.key,t.id),aa(t.id))}f.showSuccess(d("deleted"))}catch(t){f.showError(F(t,d("deleteFailed")))}finally{Ee.value=!1,le.value=""}}}function ta(e){var s;const t=Math.floor(Date.now()/1e3);D.value=D.value.map(o=>o.id===e?{...o,downloaded_at:o.downloaded_at||t}:o),((s=u.value)==null?void 0:s.id)===e&&!u.value.downloaded_at&&(u.value={...u.value,downloaded_at:t})}function aa(e){var t;D.value=D.value.filter(s=>s.id!==e),Qt(e,!1),((t=u.value)==null?void 0:t.id)===e&&Wt()}function It(e){return(e.status==="succeeded"||e.status==="success")&&e.image_count>0}function ns(e){return(e.status==="succeeded"||e.status==="success")&&e.image_count>0}function Ct(){var e,t;return((e=u.value)==null?void 0:e.parent_batch_id)||K.value||((t=u.value)==null?void 0:t.id)||""}function rs(e){const t=Ct();return!!(t&&e.batch_id&&e.batch_id!==t)}function os(e){return String(e||"").replace(/(?:_retry_[a-z0-9]+)+$/i,"")}function we(e){const t=Ct();return!!(t&&e.batch_id===t&&e.status==="failed"&&Ma.value.has(e.custom_id))}function is(e){return we(e)?"bg-gray-50/80 text-gray-400 hover:bg-gray-100/80 dark:bg-dark-900/60 dark:text-gray-500 dark:hover:bg-dark-800/70":"hover:bg-gray-50/70 dark:hover:bg-dark-800/60"}function sa(){return typeof window<"u"&&"indexedDB"in window}function Et(e,t,s=0){return[e,t,s].map(o=>encodeURIComponent(String(o))).join(":")}function z(e){var t;return Et(e.batch_id||K.value||((t=u.value)==null?void 0:t.id)||"",e.custom_id,0)}function Te(e){return new Promise((t,s)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>s(e.error)})}function Oe(){return sa()?Ye||(Ye=new Promise(e=>
66{const t=window.indexedDB.open(Wo,1);t.onupgradeneeded=()=>{const s=t.result;s.objectStoreNames.contains($)||s.createObjectStore($,{keyPath:"key"}).createIndex("lastAccessedAt","lastAccessedAt",{unique:!1})},t.onsuccess=()=>e(t.result),t.onerror=()=>e(null),t.onblocked=()=>e(null)}),Ye):Promise.resolve(null)}async function na(e){const t=await Oe();if(!t)return null;const s=await Te(t.transaction($,"readonly").objectStore($).get(e)).catch(()=>{});if(!(s!=null&&s.blob))return null;const o=Date.now();return o-s.createdAt>ya?(us(e),null):(ds(e,o),s.blob)}async function ls(e){const t=e.filter(s=>It(s));!t.length||!sa()||await Promise.all(t.map(async s=>{var y;const o=s.batch_id||K.value||((y=u.value)==null?void 0:y.id)||"",a=z(s);if(!o||T[a]||H.value.has(a))return;const c=await na(Et(o,s.custom_id,0)).catch(()=>null);!c||T[a]||(T[a]=URL.createObjectURL(c))}))}async function cs(e,t){const s=await Oe();if(!s)return;const o=Date.now(),a={key:e,blob:t,size:t.size,createdAt:o,lastAccessedAt:o};await Te(s.transaction($,"readwrite").objectStore($).put(a)).catch(()=>null),At()}async function ds(e,t){const s=await Oe();if(!s)return;const o=await Te(s.transaction($,"readonly").objectStore($).get(e)).catch(()=>{});o&&(o.lastAccessedAt=t,await Te(s.transaction($,"readwrite").objectStore($).put(o)).catch(()=>null))}async function us(e){const t=await Oe();t&&await Te(t.transaction($,"readwrite").objectStore($).delete(e)).catch(()=>null)}async function At(){var B,Z;const e=await Oe();if(!e)return;const t=await Te(e.transaction($,"readonly").objectStore($).getAll()).catch(()=>[]);if(!t.length)return;const s=Date.now(),o=[...t].sort((E,V)=>E.lastAccessedAt-V.lastAccessedAt),a=new Set;let c=0,y=0;for(const E of o){if(s-E.createdAt>ya){a.add(E.key);continue}c+=E.size||((B=E.blob)==null?void 0:B.size)||0,y+=1}for(const E of o)if(!a.has(E.key)){if(y<=Zo&&c<=Qo)break;a.add(E.key),c-=E.size||((Z=E.blob)==null?void 0:Z.size)||0,y-=1}if(!a.size)return;const w=e.transaction($,"readwrite").objectStore($);for(const E of a)w.delete(E)}async function ms(e){const t=await gs(e),s=t.width,o=t.height,a=Math.min(1,Xo/Math.max(s,o)),c=Math.max(1,Math.round(s*a)),y=Math.max(1,Math.round(o*a)),w=document.createElement("canvas");w.width=c,w.height=y;const B=w.getContext("2d");if(!B)throw new Error("canvas unavailable");return B.drawImage(t.image,0,0,c,y),t.close(),await new Promise((Z,E)=>{w.toBlob(V=>{V?Z(V):E(new Error("thumbnail unavailable"))},"image/webp",Yo)})}async function gs(e){if("createImageBitmap"in window){const s=await window.createImageBitmap(e);return{image:s,width:s.width,height:s.height,close:()=>s.close()}}const t=URL.createObjectURL(e);try{const s=await new Promise((o,a)=>{const c=new Image;c.onload=()=>o(c),c.onerror=()=>a(new Error("image unavailable")),c.src=t});return{image:s,width:s.naturalWidth||s.width,height:s.naturalHeight||s.height,close:()=>URL.revokeObjectURL(t)}}catch(s){throw URL.revokeObjectURL(t),s}}async function ut(){var s;const e=K.value||((s=u.value)==null?void 0:s.id)||"";if(!e)return;const t=Pe()||ge();if(t){he.value=!0;try{St();const o=ps(e),c=(await Promise.all(o.map(async y=>((await ha(t.key,y.id)).data||[]).map(B=>({...B,batch_id:y.id,source_task_name:fs(y,e)}))))).flat();X.value=c,ls(c)}catch(o){f.showError(F(o,d("loadItemsFailed")))}finally{he.value=!1}}}function ps(e){const s=D.value.find(o=>o.id===e)||(u.value&&u.value.id===e?yt(u.value,Pe()||q.value):null);return s?s.parent_batch_id?[s]:[s,...tt.value.get(s.id)||[]]:[]}function fs(e,t){const s=e.task_name||e.id;return e.id===t?r("batchImage.detail.mainTask",{name:s}):r("batchImage.detail.childTask",{name:s})}async function hs(e){var c;const t=e.batch_id||K.value||((c=u.value)==null?void 0:c.id)||"",s=z(e);if(!t||!It(e)||T[s]&&!H.value.has(s))return;const o=Pe()||ge();if(!o)return;const a=Et(t,e.custom_id,0);de.value=new Set([...de.value,s]);try{H.value=new Set([...H.value].filter(Z=>Z!==s)),T[s]&&(URL.revokeObjectURL(T[s]),delete T[s]);const y=await na(a);if(y){T[s]=URL.createObjectURL(y);return}const w=await Js(o.key,t,e.custom_id,0),B=await ms(w).catch(()=>w);T[s]=URL.createObjectURL(B),(B!==w||B.size<=1024*1024)&&cs(a,B)}catch(y){H.value=new Set([...H.value,s]),f.showError(F(y,d("loadPreviewFailed")))}finally{const y=new Set(de.value);y.delete(s),de.value=y}}function _s(e){const t=z(e);!T[t]||H.value.has(t)||(be.value=e)}function vs(){be.value=null}function bs(e){T[e]&&(URL.revokeObjectURL(T[e]),delete T[e]),H.value=new Set([...H.value,e])}function St(){xe();for(const e of Object.values(T))e&&URL.revokeObjectURL(e);for(const e of Object.keys(T))delete T[e];de.value=new Set,H.value=new Set,be.value=null}function ys(){pe($t.value,d("copiedInstruction"))}function ra(e){const t=typeof e=="string"?e:e.status;if(typeof e!="string"&&t==="completed"&&e.fail_count>0)return e.success_count>0?r("batchImage.status.partialSuccess"):r("batchImage.status.allFailed");const o={queued:"queued",running:"running",indexing:"processingResults",processing_results:"processingResults",settling:"settling",completed:"completed",failed:"failed",cancelled:"cancelled",output_deleted:"outputDeleted"}[t];return o?r(`batchImage.status.${o}`):t}function oa(e){const t=typeof e=="string"?e:e.status;return typeof e!="string"&&t==="completed"&&e.fail_count>0?e.success_count>0?"badge-warning":"badge-danger":t==="completed"?"badge-success":t==="failed"||t==="cancelled"?"badge-danger":t==="output_deleted"?"badge-gray":"badge-primary"}function xs(e){const s={pending:"pending",succeeded:"succeeded",success:"succeeded",failed:"failed",cancelled:"cancelled"}[e];return s?r(`batchImage.itemStatus.${s}`):e}function ia(e){return we(e)?r("batchImage.itemStatus.recovered"):xs(e.status)}function ws(e){return e==="succeeded"||e==="success"?"badge-success":e==="failed"||e==="cancelled"?"badge-danger":"badge-primary"}function ks(e){return we(e)?"badge-gray":ws(e.status)}function la(e){return we(e)?r("batchImage.itemResult.recoveredByRetry"):e.error?Cs(e.error):e.status==="succeeded"||e.status==="success"?T[z(e)]?r("batchImage.itemResult.readyPreview"):r("batchImage.itemResult.readyDownload"):e.status==="failed"?r("batchImage.itemResult.noUsableImage"):e.status==="cancelled"?r("batchImage.itemResult.cancelled"):r("batchImage.itemResult.waiting")}function Is(e){return we(e)?"bg-gray-100 text-gray-500 ring-gray-200 dark:bg-dark-800 dark:text-gray-400 dark:ring-dark-700":e.error||e.status==="failed"||e.status==="cancelled"?"bg-red-50 text-red-700 ring-red-100 dark:bg-red-950/30 dark:text-red-300 dark:ring-red-900/50":e.status==="succeeded"||e.status==="success"?"bg-emerald-50 text-emerald-700 ring-emerald-100 dark:bg-emerald-950/30 dark:text-emerald-300 dark:ring-emerald-900/50":"bg-gray-50 text-gray-500 ring-gray-200 dark:bg-dark-800 dark:text-gray-400 dark:ring-dark-700"}function Cs(e){return e?e.code==="EMPTY_IMAGE_OUTPUT"?r("batchImage.itemResult.emptyImageOutput"):e.code==="PROVIDER_ITEM_FAILED"?r("batchImage.itemResult.providerItemFailed"):e.message||e.code||"-":"-"}function Mt(e){return e==null||Number.isNaN(Number(e))?"$0.00":`$${Number(e).toFixed(2)}`}function Es(e){return e.actual_cost===null&&(e.status==="failed"||e.status==="cancelled")}function ca(e){return e.actual_cost!==null?Mt(e.actual_cost):Es(e)?Mt(0):r("batchImage.detail.holdCost",{amount:Mt(e.hold_amount)})}function da(){return String(wa.value||"").toLowerCase().startsWith("zh")}function d(e){return r(`batchImage.messages.${e}`)}function ua(e){const t=[],s=String((e==null?void 0:e.code)||"").trim(),o=String((e==null?void 0:e.requestId)||"").trim(),a=String((e==null?void 0:e.status)||"").trim();
66return s&&t.push(r("batchImage.messages.errorCodeRef",{code:s})),o&&t.push(r("batchImage.messages.requestIdRef",{id:o})),!s&&a&&t.push(r("batchImage.messages.httpStatusRef",{status:a})),t.length?`ï¼${t.join(da()?"ï¼":", ")}ï¼`:""}function Y(e,t){const s=ua(t);return`${e}${s?` ${s}`:""} ${d("adminReference")}`}function ei(e){return e}function F(e,t){const s=String((e==null?void 0:e.code)||"").trim(),o=String((e==null?void 0:e.message)||"").trim();if(s==="API_KEY_REQUIRED"||s==="401")return d("authRequired");if(s==="BATCH_IMAGE_NO_ACCOUNT_AVAILABLE"||/no compatible batch image account/i.test(o))return Y(d("noCompatibleAccount"),e);if(s==="BATCH_IMAGE_UNSUPPORTED_PROVIDER"||/unsupported batch image provider/i.test(o))return Y(d("unsupportedProvider"),e);if(s==="BATCH_IMAGE_VERTEX_GCS_BUCKET_MISSING"||s==="VERTEX_MANAGED_GCS_BUCKET_MISSING")return Y(d("vertexGcsBucketMissing"),e);if(s==="BATCH_IMAGE_PROVIDER_SUBMIT_FAILED"||s==="BATCH_IMAGE_PROVIDER_MISSING_API_KEY"||s==="BATCH_IMAGE_PROVIDER_MISSING_SERVICE_ACCOUNT"||s==="BATCH_IMAGE_PROVIDER_UNSUPPORTED_ACCOUNT")return Y(d("providerSubmitFailed"),e);if(s==="BATCH_IMAGE_QUEUE_FAILED"||s==="BATCH_IMAGE_QUEUE_NOT_CONFIGURED")return Y(d("queueFailed"),e);if(s==="BATCH_IMAGE_BILLING_HOLD_FAILED")return Y(d("billingHoldFailed"),e);if(s==="BATCH_IMAGE_GROUP_DISABLED")return d("groupDisabled");if(s==="BATCH_IMAGE_SETTLEMENT_PRICING_MISSING")return Y(d("pricingMissing"),e);if(s==="BATCH_IMAGE_INSUFFICIENT_BALANCE")return d("insufficientBalance");if(s==="BATCH_IMAGE_INVALID_MODEL")return d("invalidModel");if(s==="BATCH_IMAGE_INVALID_ITEMS")return d("invalidItems");if(s==="BATCH_IMAGE_DUPLICATE_CUSTOM_ID")return d("duplicateCustomId");if(s==="BATCH_IMAGE_PROMPT_TOO_LONG")return d("promptTooLong");if(s==="BATCH_IMAGE_INVALID_REFERENCE_IMAGE")return d("invalidReferenceImage");if(s==="BATCH_IMAGE_TOO_MANY_REFERENCE_IMAGES")return d("tooManyReferenceImages");if(s==="BATCH_IMAGE_REFERENCE_IMAGES_TOO_LARGE")return d("referenceImagesTooLarge");if(s==="BATCH_IMAGE_TOO_MANY_OUTPUT_IMAGES")return d("tooManyOutputImages");if(s==="BATCH_IMAGE_IDEMPOTENCY_CONFLICT")return d("idempotencyConflict");if(s==="BATCH_IMAGE_NOT_READY")return d("notReady");if(s==="BATCH_IMAGE_OUTPUT_DELETED")return d("outputDeleted");if(s==="BATCH_IMAGE_RESULT_MISSING")return Y(d("resultMissing"),e);if(s==="BATCH_IMAGE_ITEM_FAILED")return d("itemFailed");if(s==="BATCH_IMAGE_ITEM_IMAGE_INDEX_OUT_OF_RANGE")return d("itemImageIndexOutOfRange");if(s==="BATCH_IMAGE_DOWNLOAD_LIMITED")return d("downloadLimited");if(s==="BATCH_IMAGE_DOWNLOAD_TOO_LARGE")return d("downloadTooLarge");if(s==="BATCH_IMAGE_RECORD_DELETE_NOT_READY")return d("deleteNotReady");if(s==="BATCH_IMAGE_DISABLED")return Y(d("disabled"),e);if(s==="INTERNAL_ERROR"||s==="500")return Y(t,e);if(da()){const a=o?`${d("errorReference")}ï¼${o}`:d("adminReference");return`${t}ã${a} ${ua(e)}`}return o||t}function Rt(e){return e?new Date(e*1e3).toLocaleString():""}function mt(e){return(e?new Date(e*1e3):new Date).toLocaleString()}return Ss(()=>{f.fetchPublicSettings(),Ft(),At(),Ze=setInterval(()=>{At()},60*60*1e3),document.addEventListener("click",W),window.addEventListener("resize",W),window.addEventListener("scroll",W,!0),window.addEventListener("resize",xe),window.addEventListener("scroll",xe,!0)}),ma(()=>I.apiKeyId,()=>{La()}),ma(()=>I.model,()=>{const e=Me.value;if(e<=0){N.value=[];return}N.value.length>e&&(N.value=N.value.slice(0,e))}),Ms(()=>{ot(),Ze&&(clearInterval(Ze),Ze=null),St(),document.removeEventListener("click",W),window.removeEventListener("resize",W),window.removeEventListener("scroll",W,!0),window.removeEventListener("resize",xe),window.removeEventListener("scroll",xe,!0)}),(e,t)=>{const s=Rs("i18n-t");return m(),Ge(Ps,null,{default:A(()=>{var o;return[_(Ts,null,{filters:A(()=>[n("div",qs,[n("div",Ws,[n("div",Xs,[n("div",Ys,[_(Ns,{modelValue:M.taskName,"onUpdate:modelValue":t[0]||(t[0]=a=>M.taskName=a),placeholder:l(r)("batchImage.filters.searchTaskName"),class:"w-full",onSearch:Ne},null,8,["modelValue","placeholder"])]),_(ft,{modelValue:M.apiKeyId,"onUpdate:modelValue":t[1]||(t[1]=a=>
66M.apiKeyId=a),options:Aa.value,class:"w-full",onChange:Ne},null,8,["modelValue","options"]),_(ft,{modelValue:M.status,"onUpdate:modelValue":t[2]||(t[2]=a=>M.status=a),options:Ia.value,class:"w-full",onChange:Ne},null,8,["modelValue","options"]),_(ft,{modelValue:M.downloaded,"onUpdate:modelValue":t[3]||(t[3]=a=>M.downloaded=a),options:Ca.value,class:"w-full",onChange:Ne},null,8,["modelValue","options"])]),n("div",Zs,[n("button",{type:"button",class:"btn btn-secondary",disabled:oe.value,onClick:Na},i(l(r)("common.reset")),9,Qs),n("button",{type:"button",class:"btn btn-secondary",disabled:re.value||oe.value,title:l(r)("common.refresh"),onClick:Ft},[_(k,{name:"refresh",size:"md",class:C(re.value||oe.value?"animate-spin":"")},null,8,["class"])],8,js),n("button",{type:"button",class:"btn btn-secondary",onClick:t[4]||(t[4]=a=>Je.value=!0)},[_(k,{name:"book",size:"md",class:"mr-2"}),U(" "+i(l(r)("batchImage.actions.usageGuide")),1)]),n("button",{type:"button",class:"btn btn-primary",onClick:Ka},[_(k,{name:"plus",size:"md",class:"mr-2"}),U(" "+i(l(r)("batchImage.actions.createJob")),1)])])]),L.value.size?(m(),p("div",en,[_(s,{keypath:"batchImage.list.selectedJobs",tag:"span",scope:"global",plural:L.value.size,class:"text-sm text-gray-600 dark:text-gray-300"},{count:A(()=>[n("span",tn,i(L.value.size),1)]),_:1},8,["plural"]),n("div",an,[n("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:Ce.value||_t.value.length===0,onClick:ts},[_(k,{name:Ce.value?"refresh":"download",size:"sm",class:C(["mr-1.5",Ce.value?"animate-spin":""])},null,8,["name","class"]),U(" "+i(l(r)("batchImage.actions.downloadSelected")),1)],8,sn),n("button",{type:"button",class:"btn btn-secondary btn-sm text-red-600 hover:text-red-700 dark:text-red-400",disabled:Ee.value,onClick:ss},[_(k,{name:Ee.value?"refresh":"trash",size:"sm",class:C(["mr-1.5",Ee.value?"animate-spin":""])},null,8,["name","class"]),U(" "+i(l(r)("batchImage.actions.deleteRecords")),1)],8,nn)])])):S("",!0)])]),table:A(()=>[_(Bs,{columns:ka.value,data:ue.value,loading:re.value||oe.value,"expandable-actions":!1,"row-key":"id"},{"header-select":A(()=>[n("input",{type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500",checked:Lt.value,indeterminate:Sa.value,onChange:t[5]||(t[5]=a=>Wa(a.target.checked))},null,40,rn)]),"cell-select":A(({row:a})=>[n("input",{type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500",checked:L.value.has(a.id),onChange:c=>Qt(a.id,c.target.checked),onClick:t[6]||(t[6]=Fe(()=>{},["stop"]))},null,40,on)]),"cell-id":A(({row:a})=>[n("div",{class:C(["flex w-[220px] items-start gap-1",a.is_child?"pl-6":""])},[a.child_count>0&&!a.is_child?(m(),p("button",{key:0,type:"button",class:"mt-1 flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-md text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:text-gray-400 dark:hover:bg-dark-700 dark:hover:text-white",title:ve.value.has(a.id)?l(r)("batchImage.list.collapseChildren"):l(r)("batchImage.list.expandChildren",{n:a.child_count},a.child_count),onClick:Fe(c=>Oa(a.id),["stop"])},[_(k,{name:ve.value.has(a.id)?"chevronDown":"chevronRight",size:"xs"},null,8,["name"])],8,ln)):(m(),p("span",cn)),n("button",{type:"button",class:"min-w-0 flex-1 rounded-lg py-1 text-left transition-colors hover:bg-gray-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:hover:bg-dark-700",onClick:c=>Yt(a.id)},[n("span",{class:C(["flex min-w-0 items-center gap-2 text-sm font-medium",a.task_name?"text-gray-900 dark:text-white":"text-gray-500 dark:text-gray-400"])},[n("span",un,i(a.task_name||mt(a.created_at)),1),a.child_count>0&&!a.is_child?(m(),p("span",mn,i(l(r)("batchImage.list.childCount",{n:a.child_count},a.child_count)),1)):S("",!0),a.is_child?(m(),p("span",gn,i(l(r)("batchImage.list.childBadge")),1)):S("",!0)],2),n("span",pn,[n("span",null,i(Rt(a.created_at)),1)])],8,dn)],2)]),"cell-model":A(({row:a})=>[n("div",fn,[n("p",{class:"truncate text-sm text-gray-700 dark:text-gray-300",title:a.model},i(a.model),9,hn)])]),"cell-api_key_name":A(({value:a})=>
66[n("span",_n,i(a||l(r)("batchImage.list.keyNotRecorded")),1)]),"cell-status":A(({row:a})=>[n("div",vn,[n("span",{class:C([oa(ee(a)),"badge"])},i(ra(ee(a))),3)])]),"cell-counts":A(({row:a})=>[n("div",bn,[n("span",yn,i(ee(a).success_count),1),t[20]||(t[20]=n("span",{class:"text-gray-300 dark:text-dark-500"},"/",-1)),n("span",{class:C(ee(a).fail_count>0?"text-red-600 dark:text-red-300":"text-gray-400 dark:text-gray-500")},i(ee(a).fail_count),3),n("span",xn,i(l(r)("batchImage.list.totalCount",{n:ee(a).item_count})),1)])]),"cell-cost":A(({row:a})=>[n("span",wn,i(ca(ee(a))),1)]),"cell-downloaded":A(({row:a})=>[n("span",{class:C(["block text-center text-sm",a.downloaded_at?"text-emerald-700 dark:text-emerald-300":"text-gray-500 dark:text-gray-400"])},i(a.downloaded_at?Rt(a.downloaded_at):l(r)("batchImage.list.notDownloaded")),3)]),"cell-actions":A(({row:a})=>[n("div",kn,[n("button",{type:"button",class:"batch-row-action flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:hover:bg-dark-700 dark:hover:text-primary-400",title:l(r)("batchImage.actions.viewDetail"),onClick:c=>Yt(a.id)},[_(k,{name:"eye",size:"sm"}),n("span",Cn,i(l(r)("common.view")),1)],8,In),n("button",{type:"button",class:C(["batch-row-action flex flex-col items-center gap-0.5 rounded-lg p-1.5 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30",it(a)?"text-gray-500 hover:bg-green-50 hover:text-green-600 dark:hover:bg-green-900/20 dark:hover:text-green-400":"text-gray-300 dark:text-dark-500"]),disabled:!it(a)||ie.value,title:l(r)("batchImage.actions.downloadZip"),onClick:c=>ea(a)},[_(k,{name:ct(a.id)?"refresh":"download",size:"sm",class:C(ct(a.id)?"animate-spin":"")},null,8,["name","class"]),n("span",An,i(l(r)("batchImage.actions.download")),1)],10,En),lt(a)||dt(a)?(m(),p("div",Sn,[n("button",{type:"button",class:C(["batch-row-action flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:hover:bg-dark-700 dark:hover:text-white",{"bg-gray-100 text-gray-900 dark:bg-dark-700 dark:text-white":Se.value===a.id}]),title:l(r)("batchImage.actions.moreActions"),onClick:Fe(c=>za(a,c),["stop"])},[_(k,{name:"more",size:"sm"}),n("span",Rn,i(l(r)("common.more")),1)],10,Mn)])):S("",!0)])]),empty:A(()=>[n("div",Pn,[_(k,{name:"sparkles",size:"xl",class:"mb-4 h-12 w-12 text-gray-400 dark:text-dark-500"}),n("p",Tn,i(l(r)("batchImage.list.empty")),1),n("p",Bn,i(l(r)("batchImage.list.emptyHint")),1)])]),_:1},8,["columns","data","loading"])]),pagination:A(()=>[ue.value.length>0||P.page>1?(m(),p("div",Dn,[n("div",Ln,[_(s,{keypath:"batchImage.pagination.pageNumber",tag:"span",scope:"global"},{page:A(()=>[n("span",Nn,i(P.page),1)]),_:1}),_(s,{keypath:"batchImage.pagination.pageItems",tag:"span",scope:"global"},{count:A(()=>[n("span",Un,i(ue.value.length),1)]),_:1}),n("div",$n,[n("span",null,i(l(r)("pagination.perPage")),1),_(ft,{modelValue:P.page_size,"onUpdate:modelValue":t[7]||(t[7]=a=>P.page_size=a),options:l(b),class:"w-24",onChange:Fa},null,8,["modelValue","options"])])]),n("div",On,[n("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:P.page<=1||oe.value,onClick:t[8]||(t[8]=a=>Vt(P.page-1))},[_(k,{name:"chevronLeft",size:"sm",class:"mr-1"}),U(" "+i(l(r)("pagination.previous")),1)],8,zn),n("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:!P.has_more||oe.value,onClick:t[9]||(t[9]=a=>Vt(P.page+1))},[U(i(l(r)("pagination.next"))+" ",1),_(k,{name:"chevronRight",size:"sm",class:"ml-1"})],8,Gn)])])):S("",!0)]),_:1}),(m(),Ge(ga,{to:"body"},[Se.value?(m(),p("div",{key:0,class:"fixed z-[9999] w-44 overflow-hidden rounded-xl bg-white py-1 text-sm shadow-lg ring-1 ring-black/5 dark:bg-dark-800 dark:ring-white/10",style:pa(Bt.value),onClick:t[10]||(t[10]=Fe(()=>{},["stop"]))},[(m(!0),p(te,null,ke(D.value,a=>(m(),p(te,{key:a.id},[a.id===Se.value?(m(),p(te,{key:0}
66,[lt(a)?(m(),p("button",{key:0,type:"button",class:"flex w-full items-center gap-2 px-3 py-2 text-left text-gray-700 transition-colors hover:bg-amber-50 hover:text-amber-700 disabled:opacity-60 dark:text-gray-200 dark:hover:bg-amber-900/20 dark:hover:text-amber-300",disabled:fe.value===a.id,onClick:c=>jt(a)},[_(k,{name:"refresh",size:"sm",class:C(fe.value===a.id?"animate-spin":"")},null,8,["class"]),U(" "+i(l(r)("batchImage.actions.retryFailedItems")),1)],8,Fn)):S("",!0),dt(a)?(m(),p("button",{key:1,type:"button",class:"flex w-full items-center gap-2 px-3 py-2 text-left text-red-600 transition-colors hover:bg-red-50 disabled:opacity-60 dark:text-red-400 dark:hover:bg-red-900/20",disabled:le.value===a.id,onClick:c=>as(a)},[_(k,{name:le.value===a.id?"refresh":"trash",size:"sm",class:C(le.value===a.id?"animate-spin":"")},null,8,["name","class"]),U(" "+i(l(r)("batchImage.actions.deleteRecords")),1)],8,Kn)):S("",!0)],64)):S("",!0)],64))),128))],4)):S("",!0)])),(m(),Ge(ga,{to:"body"},[J.visible?(m(),p("div",{key:0,class:"batch-prompt-popover fixed z-[9999] rounded-lg border border-gray-200 bg-white p-3 text-sm text-gray-800 shadow-xl ring-1 ring-black/5 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-100 dark:ring-white/10",style:pa(J.style),onMouseenter:Ue,onMouseleave:st},[n("div",Hn,[n("span",Vn,i(l(r)("batchImage.promptPopover.title")),1),n("button",{type:"button",class:"rounded-md px-2 py-1 text-xs font-medium text-primary-600 transition-colors hover:bg-primary-50 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 dark:text-primary-300 dark:hover:bg-primary-900/20",onClick:Ga},i(l(r)("common.copy")),1)]),n("p",Jn,i(J.text),1)],36)):S("",!0)])),_(pt,{show:!!u.value,title:l(r)("batchImage.detail.title"),width:"extra-wide",onClose:Wt},{footer:A(()=>[n("div",Lr,[n("button",{type:"button",class:"btn btn-secondary",disabled:!u.value||!Ja(u.value)||He.value,onClick:Xa},[He.value?(m(),Ge(k,{key:0,name:"refresh",size:"sm",class:"mr-2 animate-spin"})):S("",!0),U(" "+i(l(r)("batchImage.actions.cancelJob")),1)],8,Nr),u.value&&me.value&<(me.value)?(m(),p("button",{key:0,type:"button",class:"btn btn-secondary inline-flex min-w-[116px] items-center justify-center",disabled:fe.value===u.value.id,onClick:Za},[_(k,{name:"refresh",size:"sm",class:C(["mr-2",u.value&&fe.value===u.value.id?"animate-spin":""])},null,8,["class"]),U(" "+i(l(r)("batchImage.actions.retryFailedItems")),1)],8,Ur)):S("",!0),n("button",{type:"button",class:"btn btn-primary inline-flex min-w-[112px] items-center justify-center",disabled:!u.value||!it(u.value)||ie.value,onClick:Ya},[_(k,{name:u.value&&ct(u.value.id)?"refresh":"download",size:"sm",class:C(["mr-2",u.value&&ct(u.value.id)?"animate-spin":""])},null,8,["name","class"]),U(" "+i(l(r)("batchImage.actions.downloadZip")),1)],8,$r)])]),default:A(()=>[u.value?(m(),p("div",qn,[n("div",Wn,[n("div",Xn,[n("div",Yn,[n("p",Zn,i(l(r)("common.status")),1),n("div",Qn,[n("span",{class:C([oa(me.value||u.value),"badge whitespace-nowrap"])},i(ra(me.value||u.value)),3)])]),n("div",jn,[n("p",er,i($a(u.value.id)?l(r)("batchImage.detail.aggregatedResult"):l(r)("batchImage.detail.result")),1),n("p",tr,[n("span",ar,i((me.value||u.value).success_count),1),t[21]||(t[21]=n("span",{class:"text-gray-300 dark:text-dark-500"},"/",-1)),n("span",{class:C((me.value||u.value).fail_count>0?"text-red-600 dark:text-red-300":"text-gray-400 dark:text-gray-500")},i((me.value||u.value).fail_count),3)])]),n("div",sr,[n("p",nr,i(l(r)("batchImage.detail.cost")),1),n("p",rr,i(ca(me.value||u.value)),1)]),n("div",or,[n("p",ir,i(l(r)("batchImage.detail.downloadStatus")),1),n("p",lr,i(u.value.downloaded_at?Rt(u.value.downloaded_at):l(r)("batchImage.list.notDownloaded")),1)])])]),n("div",cr,[n("h3",dr,i(l(r)("batchImage.detail.items")),1),n("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:Ke.value||he.value,onClick:Va},[_(k,{name:"refresh",size:"sm",class:C(["mr-1.5",Ke.value||he.value?"animate-spin":""])},null,8,["class"]),U(" "+i(l(r)("common.refresh")),1)],8,ur)]),X.value.length?(m(),p("div",mr,[n("table",gr,[t[24]||(t[24]=n("colgroup",null,[n("col",{class:"w-[18%]"}),n("col",{class:"w-[34%]"}),n("col",{class:"w-[12%]"}),n("col",{class:"w-[10%]"}),n("col",{class:"w-[26%]"})],-1)),n("thead",pr,[n("tr",null,[t[22]||(t[22]=n("th",{class:"px-3 py-3 text-center text-sm font-medium text-gray-500 dark:text-gray-400"},"Custom ID",-1)),t[23]||(t[23]=n("th",{class:"px-3 py-3 text-left text-sm font-medium text-gray-500 dark:text-gray-400"},"Prompt",-1)),n("th",fr,i(l(r)("common.status")),1),n("th",hr,i(l(r)("batchImage.detail.preview")),1),n("th",_r,i(l(r)("batchImage.detail.result")),1)])]),n("tbody",vr,[(m(!0),p(te,null,ke(X.value,a=>(m(),p("tr",{key:z(a),class:C(["align-middle",is(a)])},[n("td",br,[n("span",{class:C(["block min-w-0 truncate font-mono text-sm",we(a)?"text-gray-400 dark:text-gray-500":"text-gray-900 dark:text-white"]),title:a.custom_id},i(a.custom_id),11,yr)]),n("td",{class:C(["px-3 py-2.5 text-left",we(a)?"text-gray-400 dark:text-gray-500":"text-gray-700 dark:text-gray-300"])},[n("div",{class:"batch-prompt-trigger cursor-default truncate rounded px-1 text-sm leading-6 focus:outline-none",tabindex:"0",onPointerenter:c=>Kt(c,a.prompt_preview||"-"),onPointerleave:st,onMouseenter:c=>Kt(c,a.prompt_preview||"-"),onMouseleave:st,onClick:c=>wt(c,a.prompt_preview||"-"),onFocus:c=>wt(c,a.prompt_preview||"-"),onFocusin:c=>wt(c,a.prompt_preview||"-"),onBlur:st},i(a.prompt_preview||"-"),41,xr)],2),n("td",wr,[n("span",{class:C([ks(a),"badge max-w-full truncate whitespace-nowrap"]),title:ia(a)},i(ia(a)),11,kr)]),n("td",Ir,[n("div",Cr,[T[z(a)]&&!H.value.has(z(a))?(m(),p("button",{key:0,t
66ype:"button",class:"block h-full w-full overflow-hidden",title:l(r)("batchImage.detail.previewZoom",{id:a.custom_id}),onClick:c=>_s(a)},[n("img",{src:T[z(a)],class:"h-full w-full object-cover",alt:"",onError:c=>bs(z(a))},null,40,Ar)],8,Er)):It(a)?(m(),p("button",{key:1,type:"button",class:"flex h-full w-full items-center justify-center text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 disabled:cursor-wait disabled:opacity-70 dark:text-gray-400 dark:hover:bg-dark-700",disabled:de.value.has(z(a)),title:H.value.has(z(a))?l(r)("batchImage.detail.previewReload"):l(r)("batchImage.detail.previewLoad"),onClick:c=>hs(a)},[_(k,{name:de.value.has(z(a))?"refresh":"eye",size:"sm",class:C(de.value.has(z(a))?"animate-spin":"")},null,8,["name","class"])],8,Sr)):(m(),p("div",{key:2,class:"flex h-full w-full items-center justify-center text-gray-400",title:a.image_count>0?l(r)("batchImage.detail.previewUnavailable"):l(r)("batchImage.detail.noImage")},[_(k,{name:"document",size:"sm"})],8,Mr))])]),n("td",Rr,[n("span",{class:C(["inline-flex max-w-full items-center justify-center truncate rounded-md px-2.5 py-1 text-xs font-medium leading-5 ring-1 ring-inset",Is(a)]),title:la(a)},i(la(a)),11,Pr)])],2))),128))])])])):(m(),p("div",Tr,[_(k,{name:"refresh",size:"lg",class:C(["mx-auto mb-3 text-gray-400",he.value?"animate-spin":""])},null,8,["class"]),n("p",Br,i(he.value?l(r)("batchImage.detail.loadingItems"):l(r)("batchImage.detail.noItems")),1),he.value?S("",!0):(m(),p("p",Dr,i(l(r)("batchImage.detail.noItemsHint")),1))]))])):S("",!0)]),_:1},8,["show","title"]),_(pt,{show:!!be.value,title:((o=be.value)==null?void 0:o.custom_id)||l(r)("batchImage.imagePreview.title"),width:"extra-wide","z-index":60,onClose:vs},{default:A(()=>{var a;return[n("div",Or,[n("div",zr,i(l(r)("batchImage.imagePreview.notice")),1),n("div",Gr,[Nt.value?(m(),p("img",{key:0,src:Nt.value,class:"max-h-[70vh] max-w-full rounded-md object-contain",alt:((a=be.value)==null?void 0:a.custom_id)||""},null,8,Fr)):S("",!0)])])]}),_:1},8,["show","title"]),_(pt,{show:Ve.value,title:l(r)("batchImage.create.title"),width:"wide",onClose:Jt},{footer:A(()=>[n("div",Lo,[n("button",{type:"button",class:"btn btn-secondary",disabled:Q.value,onClick:Jt},i(l(r)("common.cancel")),9,No),n("button",{type:"button",class:"btn btn-primary inline-flex min-w-[120px] justify-center",disabled:Q.value||Ae.value||vt.value.length===0&&!ce.value.trim()||!q.value||!I.model,onClick:Xt},[Q.value?(m(),Ge(k,{key:0,name:"refresh",size:"sm",class:"mr-2 animate-spin"})):S("",!0),U(" "+i(Q.value?l(r)("common.submitting"):l(r)("batchImage.actions.submitJob")),1)],8,Uo)])]),default:A(()=>[n("form",{class:"space-y-5",onSubmit:Fe(Xt,["prevent"])},[n("div",Kr,[n("div",Hr,[n("label",Vr,i(l(r)("batchImage.create.taskName")),1),Ie(n("input",{"onUpdate:modelValue":t[11]||(t[11]=a=>I.taskName=a),type:"text",maxlength:"255",class:"input",placeholder:l(r)("batchImage.create.taskNamePlaceholder")},null,8,Jr),[[Pt,I.taskName]])]),n("div",qr,[t[25]||(t[25]=n("label",{class:"input-label"},"API Key",-1)),Ie(n("select",{"onUpdate:modelValue":t[12]||(t[12]=a=>I.apiKeyId=a),class:"input",disabled:re.value},[n("option",Xr,i(re.value?l(r)("batchImage.create.loadingKeys"):l(r)("batchImage.create.selectKeyPlaceholder")),1),(m(!0),p(te,null,ke(G.value,a=>{var c;return m(),p("option",{key:a.id,value:a.id},i(a.name)+" · "+i(((c=a.group)==null?void 0:c.name)||"Gemini"),9,Yr)}),128))],8,Wr),[[gt,I.apiKeyId,void 0,{number:!0}]]),!re.value&&G.value.length===0?(m(),p("p",Zr,i(l(r)("batchImage.create.noKeysHint")),1)):S("",!0)]),n("div",null,[n("label",Qr,i(l(r)("batchImage.create.model")),1),Ie(n("select",{"onUpdate:modelValue":t[13]||(t[13]=a=>I.model=a),class:"input",disabled:Ae.value||j.value.length===0},[Ae.value?(m(),p("option",eo,i(d("loadingModels")),1)):j.value.length===0?(m(),p("option",to,i(d("noModels")),1)):S("",!0),(m(!0),p(te,null,ke(j.value,a=>(m(),p("option",{key:a.value,value:a.value},i(a.label),9,ao))),128))],8,jr),[[gt,I.model]]),qe.value?(m(),p("p",so,i(qe.value),1)):q.value&&!Ae.value&&j.value.length===0?(m(),p("p",no,i(d("noModelsHint")),1)):S("",!0)]),n("div",null,[n("label",ro,i(l(r)("batchImage.create.imageSize")),1),t[26]||(t[26]=n("div",{class:"input flex items-center bg-gray-50 text-gray-600 dark:bg-dark-900 dark:text-gray-300"}," 1K ",-1)),n("p",oo,i(l(r)("batchImage.create.imageSizeHint")),1)]),n("div",null,[n("label",io,i(l(r)("batchImage.create.outputFormat")),1),Ie(n("select",{"onUpdate:modelValue":t[14]||(t[14]=a=>I.responseMimeType=a),class:"input"},[...t[27]||(t[27]=[n("option",{value:"image/png"},"PNG",-1),n("option",{value:"image/jpeg"},"JPEG",-1),n("option",{value:"image/webp"},"WebP",-1)])],512),[[gt,I.responseMimeType]])]),n("div",null,[n("label",lo,i(l(r)("batchImage.create.estimatedOutput")),1),n("div",co,i(l(r)("batchImage.create.estimatedOutputValue",{images:Ut.value,prompts:O.value.length})),1)])]),n("div",uo,[n("div",mo,[t[28]||(t[28]=n("label",{class:"input-label mb-0"},"Prompt",-1)),n("span",go,i(l(r)("batchImage.create.promptAdded",{count:O.value.length})),1)]),n("div",po,[Ie(n("textarea",{"onUpdate:modelValue":t[15]||(t[15]=a=>ce.value=a),rows:"3",class:"h-[76px] w-full resize-y rounded-md border border-gray-300 px-3 py-2 text-sm leading-5 outline-none focus:border-primary-500 focus:ring-2 focus:ring-primary-100 dark:border-dark-600 dark:bg-dark-900 dark:text-gray-100 dark:focus:border-primary-500 dark:focus:ring-primary-900/40",placeholder:l(r)("batchImage.create.promptPlaceholder")},null,8,fo),[[Pt,ce.value]]),n("div",ho,[Ie(n("input",{"onUpdate:modelValue":t[16]||(t[16]=a=>De.value=a),type:"text",maxlength:"255",class:"input h-9 text-sm",placeholder:l(r)("batchImage.create.customIdPlaceholder")},null,8,_o),[[Pt,De.value]]),Ie(n("select",{"onUpdate:modelValue":t[17]||(t[17]=a=>Le.value=a),class:"batch-output-count-select input h-9 text-sm",title:l(r)("batchImage.create.outputCountPerPrompt"),"aria-label":l(r)("batchImage.create.outputCountPerPrompt")},[(m(!0),p(te,null,ke(l(h),a=>(m(),p("option",{key:a,value:a},i(l(r)("batchImage.create.outputCountOption",{n:a},a)),9,bo))),128))],8,vo),[[gt,Le.value,void 0,{number:!0}]]),n("label",{class:C(["btn btn-secondary h-9 cursor-pointer justify-center text-sm",N.value.length>=Me.value?"pointer-events-none opacity-60":""])},[_(k,{name:"upload",size:"sm",class:"mr-1.5"}),U(" "+i(l(r)("batchImage.create.referenceImage"))+" ",1),n("input",{type:"file",accept:"image/png,image/jpeg,image/webp",multiple:"",class:"hidden",disabled:N.value.length>=Me.value,onChange:Ba},null,40,yo)],2),n("button",{type:"button",class:"btn btn-secondary h-9 justify-center whitespace-nowrap px-4 text-sm",disabled:!ce.value.trim(),onClick:zt},[_(k,{name:"plus",size:"sm",class:"mr-1.5"}),U(" "+i(l(r)("common.add")),1)],8,xo)]),N.value.length?(m(),p("div",wo,[(m(!0),p(te,null,ke(N.value,(a,c)=>(m(),p("span",{key:`${a.name}-${c}`,class:"inline-flex max-w-full items-center gap-1 rounded-md border border-gray-200 bg-gray-50 px-2 py-1 text-xs text-gray-700 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-200"},[n("span",ko,i(a.name),1),n("button",{type:"button",class:"text-gray-400 hover:text-red-600",title:l(r)("batchImage.create.removeReferenceImage"),onClick:y=>Ta(c)},[_(k,{name:"x",size:"xs"})],8,Io)]))),128))])):S("",!0),n("p",Co,i(l(r)("batchImage.create.limitsHint",{maxPerItem:Tt,maxPerJob:xa,refLimit:Me.value})),1)]),O.value.length?(m(),p("div",Eo,[(m(!0),p(te,null,ke(O.value,(a,c)=>(m(),p("div",{key:a.localId,class:"flex items-center gap-3 border-b border-gray-100 px-3 py-2 last:border-b-0 dark:border-dark-700"},[n("span",Ao,i(a.custom_id),1),n("p",So,i(a.prompt),1),a.output_count>1?(m(),p("span",Mo," x"+i(a.output_count),1)):S("",!0),a.reference_images.length?(m(),p("span",Ro,i(l(r)("batchImage.create.referenceCount",{n:a.reference_images.length},a.reference_images.length)),1)):S("",!0),n("button",{type:"button",class:"btn-ghost btn-icon flex-shrink-0 text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20",title:l(r)("common.delete"),onClick:y=>Pa(c)},[_(k,{name:"trash",size:"sm"})],8,Po)]))),128))])):(m(),p("div",To,i(l(r)("batchImage.create.noPrompts")),1))]),n("div",Bo,i(l(r)("batchImage.create.cancelNotice")),1),Q.value?(m(),p("div",Do,i(l(r)("batchImage.create.submittingNotice")),1)):S("",!0)],32)]),_:1},8,["show","title"]),_(pt,{show:Je.value,title:l(r)("batchImage.guide.title"),width:"wide",onClose:t[19]||(t[19]=a=>Je.value=!1)},{footer:A(()=>[n("div",qo,[n("button",{type:"button",class:"btn btn-secondary",onClick:t[18]||(t[18]=a=>Je.value=!1)},i(l(r)("common.close")),1),n("button",{type:"button",class:"btn btn-primary",onClick:ys},[_(k,{name:"copy",size:"sm",class:"mr-2"}),U(" "+i(l(r)("batchImage.actions.copyInstruction")),1)])])]),default:A(()=>[n("div",$o,[n("section",Oo,[n("h3",zo,i(l(r)("batchImage.guide.uiTitle")),1),n("div",Go,[n("p",null,i(l(r)("batchImage.guide.step1")),1),n("p",null,i(l(r)("batchImage.guide.step2")),1),n("p",null,i(l(r)("batchImage.guide.step3")),1),n("p",null,i(l(r)("batchImage.guide.step4")),1)])]),n("section",Fo,[n("div",Ko,[n("h3",Ho,i(l(r)("batchImage.guide.skillTitle")),1),n("p",Vo,i(l(r)("batchImage.guide.skillDesc")),1
66)]),n("textarea",{value:$t.value,readonly:"",class:"min-h-[420px] w-full resize-y rounded-md border border-gray-200 bg-gray-50 p-4 font-mono text-sm leading-6 text-gray-800 outline-none focus:border-primary-400 focus:ring-2 focus:ring-primary-100 dark:border-dark-600 dark:bg-dark-900 dark:text-gray-100 dark:focus:border-primary-500 dark:focus:ring-primary-900/40"},null,8,Jo)])])]),_:1},8,["show","title"])]}),_:1})}}}),_i=Ls(jo,[["__scopeId","data-v-c4f753e4"]]);export{_i 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.