1import{g as lt,X as Ot,r as Y,e as ge,h as F,M as Ne,I as Re,V as Gt,u as $t,Z as jt,ca as tt,cb as zt,al as rt,ab as K,cc as j,O as xe,P as nt,cd as Bt,ak as Dt}from"./BW8Gosg2.js";import{r as Vt,P as st,h as Wt}from"./CNtSVYU9.js";import{c as Kt,u as Ht}from"./BHLrCrPn.js";let ot=0;const Z=e=>typeof e!="string"&&typeof e!="number"?"":String(e).trim(),ye=(...e)=>{for(const t of e){const r=Z(t);if(r)return r}return""},dt=e=>Array.isArray(e)?e:Array.isArray(e?.value)?e.value:[],ft=e=>Number.isInteger(e?.revision)&&e.revision>=0?e.revision:0,ce=(e="local")=>{const t=Z(e).replace(/:+$/,"")||"local",r=globalThis.crypto?.randomUUID?.();return r?`${t}:${r}`:(ot+=1,`${t}:${Date.now().toString(36)}-${ot.toString(36)}-${Math.random().toString(36).slice(2,10)}`)},mt=e=>{const t=Z(e);return t?t.startsWith("history:")?t:`history:${t}`:""},we=e=>Z(e?.clientTaskId),_e=(e,t={})=>{if(!e||typeof e!="object")return"";const r=we(e);return r?e.clientTaskId=r:e.clientTaskId=ce(t?.prefix||"local"),(!Number.isInteger(e.revision)||e.revision<0)&&(e.revision=0),e.clientTaskId},ve=e=>ye(e?.pollTaskId,e?.job_id,e?.generate_id,e?.rawTask?.job_id,e?.rawTask?.generate_id),Ge=e=>ye(ve(e),e?.id,e?.task_id),le=e=>{const t=ye(e?.serverTaskId,e?.task_id,e?.rawTask?.task_id,e?.rawTask?.id);if(t)return t;const r=Z(e?.id),n=ye(e?.pollTaskId,e?.job_id,e?.generate_id,e?.rawTask?.job_id,e?.rawTask?.generate_id);return r&&n===r?"":r},te=(e,t)=>{const r=Z(t);if(r)return dt(e).find(n=>we(n)===r)},q=(e,t,r,n)=>{const o=te(e,t);if(!o)return null;const c=ft(o);if(n!==void 0&&n!==c)return null;const l=typeof r=="function"?r(o):r;if(!l||typeof l!="object"||Array.isArray(l))return null;const _=_e(o),m=Object.fromEntries(Object.entries(l).filter(([d])=>d!=="clientTaskId"&&d!=="revision"));return Object.assign(o,m),o.clientTaskId=_,o.revision=c+1,o},Qt=(e,t)=>{const r=dt(e),n=Z(t);if(!n)return null;const o=r.findIndex(l=>we(l)===n);if(o<0)return null;const c=r[o];return c.revision=ft(c)+1,r.splice(o,1)[0]||null},$e=new Set(["queued","generating","processing"]),gt=new Set(["done","failed"]),ie=(...e)=>{for(const t of e){if(typeof t!="string")continue;const r=t.trim();if(r)return r}return""},Xt=(e,t)=>{if(t==="done")return 100;const r=Number(e);return Number.isFinite(r)?Math.max(0,Math.min(100,r)):0},Yt=(e,t="")=>{const r=String(e||"").trim().toLowerCase();return["done","completed","complete","success","succeeded"].includes(r)?"done":["failed","failure","error","rejected"].includes(r)?"failed":["queued","pending","waiting"].includes(r)?"queued":["generating","processing","running","in_progress"].includes(r)?"generating":t?"done":"generating"},Zt=e=>{const t=String(e||"").split(/[?#]/)[0].toLowerCase();return t.endsWith(".gif")?"gif":/\.(mp4|webm|mov|m4v|avi)$/.test(t)?"video":/\.(mp3|wav|m4a|aac|ogg)$/.test(t)?"audio":"img"},Jt=(e,t={})=>{if(!e||typeof e!="object")return null;const r=ie(e.url,e.image_url,e.video_url,e.gif_url,e.audio_url),n=String(e.sourceType||e.source_type||e.media_type||t.defaultSourceType||"").trim().toLowerCase(),o=["img","video","gif","audio"].includes(n)?n:Zt(r),c=Yt(e.status,r),l=Number(e.index),_=Number.isFinite(l)?l:Number.isFinite(Number(t.fallbackIndex))?Number(t.fallbackIndex):0,m=e.itemId??e.item_id??e.id,d=m!=null&&String(m).trim()!=="",I=e.hasServerItemId===!1?!1:d;return{itemId:d?m:`index:${_}`,hasServerItemId:I,index:_,status:c,progress:Xt(e.progress,c),sourceType:o,url:r,posterUrl:ie(e.posterUrl,e.poster_url,e.cover_url,e.thumbnail_url),templateUrl:ie(e.templateUrl,e.template_url),error:ie(e.error,e.error_message,e.msg,e.message)}},re=(e,t={})=>{if(!Array.isArray(e))return[];const r=new Set;return e.map((n,o)=>Jt(n,{...t,fallbackIndex:o+1})).filter(n=>{if(!n)return!1;const o=String(n.itemId);return r.has(o)?!1:(r.add(o),!0)}).sort((n,o)=>n.index-o.index)},er=(e,t)=>{if(!e)return t;if(!t)return e;const r=gt.has(e.status),n=$e.has(t.status),o=r&&n;return{...e,...t,status:o?e.status:t.status,progress:o?e.progress:t.progress,url:t.url||e.url||"",posterUrl:t.posterUrl||e.posterUrl||"",templateUrl:t.templateUrl||e.templateUrl||"",error:t.error||(t.status==="failed"?e.error:"")}},pt=(e,t,r={})=>{const n=re(e,r),o=re(t,r),c=new Map(n.map(l=>[String(l.itemId),l]));for(const l of o){const _=String(l.itemId);let m=c.get(_);if(!m){const d=Array.from(c.entries()).find(([I,v])=>I===`index:${v.index}`&&v.index===l.index&&!v.url&&$e.has(v.status));if(d){const[I,v]=d;c.delete(I),m=v}}c.set(_,er(m,l))}return Array.from(c.values()).sort((l,_)=>l.index-_.index)},tr=(e,t={})=>{const r=re(e),n=r.filter(m=>m.status==="done").length,o=r.filter(m=>m.status==="failed").length,c=r.filter(m=>$e.has(m.status)).length,l=Number(t.totalCount??t.total_count??0);return{totalCount:Math.max(r.length,Number.isFinite(l)?l:0),completedCount:n,failedCount:o,generatingCount:c}},ue=(e,t={})=>{const r=re(e,t),n=tr(r,t.summary),o=n.generatingCount>0,c=n.completedCount+n.failedCount>0,l=n.completedCount+n.failedCount,_=n.totalCount>0&&!o&&c&&l>=n.totalCount,m=t.isTerminal===!0||t.isTerminal!==!1&&_,d=m&&n.totalCount>0&&n.failedCount>=n.totalCount,I=m?d?"failed":n.failedCount>0?"partial_success":"success":"processing",v=r.find(x=>x.status==="done"&&x.url);return{resultMode:"collection",items:r,summary:n,completionStatus:I,coverUrl:v?.url||"",backgroundUrl:v?.url||"",generateLoading:!m,generateError:d,errorTip:d&&(r.find(x=>x.error)?.error||t.errorTip)||"",status:m?d?"failed":"succeeded":"processing"}},rr=(e,t={})=>{const r=Array.isArray(t.responseItems)?t.responseItems:[],n=r.length?pt(e,r,{defaultSourceType:t.defaultSourceType}):re(e,{defaultSourceType:t.defaultSourceType}),o=ie(t.errorTip);return ue(n.map(c=>gt.has(c.status)?c:{...c,status:"failed",error:o||c.error}),{isTerminal:!0,errorTip:o})},Yr=(e,t={})=>{const r=Math.max(0,Math.floor(Number(e)||0));return ue(Array.from({length:r},(n,o)=>({index:o+1,status:"queued",progress:0,sourceType:t.sourceType||"img",url:""})),{summary:{totalCount:r}})},pe=e=>e?.resultMode==="collection"||Array.isArray(e?.items),Zr=(e,t=0)=>{const r=e?.itemId??e?.item_id;return r!=null&&String(r).trim()?String(r):`index:${Number.isFinite(Number(e?.index))?Number(e.index):t+1}`},nr=e=>{if(!e||typeof e!="object"||e.hasServerItemId!==!0)return;const t=e.itemId??e.item_id??e.id;if(!(t==null||String(t).trim()===""))return t},sr=2,or=(...e)=>e.find(t=>typeof t=="string"&&t.trim())||"",Tt=e=>ve(e),je=e=>{if(typeof e!="string")return"";const t=e.trim();return!t||t.startsWith("blob:")?"":t},Jr=e=>{const t=le(e);
1if(t)return`server:${t}`;const r=Ge(e);if(r)return`poll:${r}`;const n=je(e?.url);return n?`url:${n}`:""},qe=e=>{const t=[],r=we(e),n=le(e),o=Ge(e);if(r&&t.push(`client:${r}`),n&&t.push(`server:${n}`),o&&t.push(`poll:${o}`),!n&&!o){const c=je(e?.url);c&&t.push(`url:${c}`)}return t},at=(e=[],t)=>{const r=new Set(qe(t));if(r.size!==0)return e.find(n=>qe(n).some(o=>r.has(o)))},ar=e=>{const t=e?.results||{};if(t.image_url)return{sourceType:"img",url:t.image_url,downloadUrl:t.image_url,backgroundUrl:t.image_url,posterUrl:""};if(t.gif_url)return{sourceType:"gif",url:t.gif_url,downloadUrl:t.gif_url,backgroundUrl:t.gif_url,posterUrl:""};if(t.url){const r=or(t.cover_url,t.poster_url,t.thumbnail_url,t.cover,t.thumbnail,e?.cover_url,e?.poster_url,e?.thumbnail_url,e?.cover,e?.thumbnail);return{sourceType:"video",url:t.url,downloadUrl:t.url,backgroundUrl:r,posterUrl:r}}return null},ir=(e,t="")=>{const r=String(t||"").trim().toLowerCase();if(["img","video","gif","audio"].includes(r))return r;const n=String(e||"").split(/[?#]/)[0].toLowerCase();return n.endsWith(".gif")?"gif":/\.(mp4|webm|mov|m4v|avi)$/.test(n)?"video":/\.(mp3|wav|m4a|aac|ogg)$/.test(n)?"audio":"img"},cr=(e,t={})=>{if(!e||typeof e!="object")return null;const r=e.results&&typeof e.results=="object"?e.results:{},n=e.output&&typeof e.output=="object"?e.output:{},c=[[e.url,""],[e.image_url,"img"],[e.video_url,"video"],[e.gif_url,"gif"],[e.audio_url,"audio"],[e.output_url,""],[typeof e.output=="string"?e.output:"",""],[r.url,""],[r.image_url,"img"],[r.video_url,"video"],[r.gif_url,"gif"],[r.audio_url,"audio"],[n.url,""],[n.image_url,"img"],[n.video_url,"video"],[n.gif_url,"gif"],[n.audio_url,"audio"]].find(([m])=>typeof m=="string"&&m.trim());if(!c)return null;const l=c[0].trim(),_=e.sourceType||e.source_type||e.media_type||c[1]||t.defaultSourceType;return{url:l,sourceType:ir(l,_)}},ur=e=>{const t=e?.results||{},r=Array.isArray(t.items)?t.items:Array.isArray(t.outputs)?t.outputs:Array.isArray(t.images)?t.images:[];return r.length?re(r,{defaultSourceType:Array.isArray(t.images)?"img":void 0}):[]},kt=e=>{const t=ur(e);if(!t.length)return null;const r=e?.results||{};return ue(t,{isTerminal:!yt(e),summary:{totalCount:r.total_count,completedCount:r.completed_count,failedCount:r.failed_count}})},ze=e=>e?.results?.task_species||e?.task_species||e?.task_type||"",yt=e=>Number(e?.status)===sr,lr=e=>{const t=Number(e);return!Number.isFinite(t)||t<=0?Date.now():t<1e12?t*1e3:t},dr=e=>{const t=String(e?.task_type||"").toLowerCase();return t.includes("photo_package")||t.includes("image")||t.includes("img")?"img":t.includes("gif")?"gif":t.includes("audio")?"audio":"video"},fr=e=>{const t=String(e?.completion_mode||e?.results?.completion_mode||e?.results?.output_mode||"").trim().toLowerCase();return["gif","video_to_gif","videotogif"].includes(t)?"videoToGif":["direct","backend","backend_managed"].includes(t)?"direct":/gif/i.test(ze(e))?"videoToGif":"direct"},mr=e=>{if(!yt(e))return null;const t=Tt(e);if(!t)return null;const r=le(e),n=r||t,o=kt(e),c=!!o||String(e?.task_type||"").toLowerCase().includes("package");return{clientTaskId:mt(n),revision:0,serverTaskId:r,pollTaskId:t,id:e?.id,generate_id:t,taskOrigin:"recovered",countsTowardAdmission:!1,requestStarted:!0,status:"processing",generateLoading:!0,generateError:!1,errorTip:"",sourceType:dr(e),url:"",created_at:e?.created_at,processingStartedAt:lr(e?.created_at),completionMode:fr(e),task_species:ze(e),task_type:e?.task_type,historyUpdatedAt:e?.updated_at,rawTask:e,...c?o||{resultMode:"collection",items:[],summary:{totalCount:0,completedCount:0,failedCount:0,generatingCount:0},completionStatus:"processing"}:{}}},en=e=>{const t=kt(e),r=ar(e);if(!t&&!r)return null;const n=le(e),o=Tt(e),c=n||Ge(e)||je(r?.url||t?.coverUrl);return{clientTaskId:mt(c),revision:0,serverTaskId:n,pollTaskId:o,id:e?.id,generate_id:o,...t||r,generateLoading:t?.generateLoading||!1,generateError:t?.generateError||!1,errorTip:t?.errorTip||"",created_at:e?.created_at,task_species:ze(e),task_type:e?.task_type,rawTask:e}},tn=(e=[],t=[])=>{const r=new Set,n=e.filter(Boolean).map(c=>(_e(c,{prefix:"local"}),c)),o=t.filter(Boolean).map(c=>(_e(c,{prefix:"history"}),c));return[...n,...o].filter(c=>{if(!c)return!1;const l=qe(c);if(l.length===0)return!0;
1if(l.some(_=>r.has(_)))return!1;for(const _ of l)r.add(_);return!0})},he=5,gr=3,pr=new Set(["queued","submitting","processing","postProcessingQueued","postProcessing"]),Tr=(e,t=!1)=>{if(typeof e=="boolean")return e;if(typeof e=="number")return e===1;if(typeof e!="string")return t;const r=e.trim().toLowerCase();return["1","true","yes","on"].includes(r)?!0:["0","false","no","off"].includes(r)?!1:t},oe=(e,t)=>{const r=Number(e);return Number.isFinite(r)&&r>0?Math.floor(r):t},kr=(e={},t={})=>{const r=Tr(e?.enabled,!1),n=oe(e?.hardMaxActiveTasks,he),o=Math.min(n,he),c=oe(e?.defaultMaxActiveTasks,gr),l=oe(e?.paidMaxActiveTasks,c),_=oe(e?.subscriptionMaxActiveTasks,l),m=oe(e?.freeMaxActiveTasks,1),d=Vt(t?.userInfo),I=typeof t?.paidAccess=="boolean",v=I?t.paidAccess?"paid":st.FREE:d.tier,x=Math.max(1,Math.min(l,o)),A=Math.max(1,Math.min(m,o)),L=Math.max(1,Math.min(_,o)),O=I?t.paidAccess?x:A:v===st.FREE?A:d.maxConcurrentGenerations,H=Math.max(1,Math.min(O,o)),M=I?x:L,z=I||!d.isSubscriber;return{parallelEnabled:r,maxActiveTasks:H,hardMaxActiveTasks:o,upgrade:{available:r&&z&&M>H,maxActiveTasks:M},rollout:{scope:"result",globalEnabled:r,userTier:v}}},yr=(e=[])=>e.filter(t=>t?.countsTowardAdmission===!1?!1:pr.has(t?.status)?!0:!t?.status&&t?.generateLoading===!0).length,_r=({tasks:e=[],reservationCount:t=0,effectiveMaxActiveTasks:r=1}={})=>{const n=yr(e)+Math.max(0,Math.floor(Number(t)||0));return{activeTaskCount:n,canAdmit:n<Math.max(1,Number(r)||1)}},vr=e=>{if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},Fe=(e,t)=>{if(!e||typeof e!="object")return e;if(t.has(e))return t.get(e);if(!Array.isArray(e)&&!vr(e))return e;const r=Array.isArray(e)?[]:{};return t.set(e,r),Array.isArray(e)?(e.forEach(n=>r.push(Fe(n,t))),r):(Object.entries(e).forEach(([n,o])=>{r[n]=Fe(o,t)}),r)},_t=e=>Fe(e,new WeakMap),hr=new Set(["queued","submitting"]),wr=e=>{const[t=15,r=t]=Array.isArray(e)?e:[15,20],n=Math.max(0,Number(t)||0),o=Math.max(n,Number(r)||n);return[n,o]},Ir=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function Sr(e,t={}){const r=lt("userInfo"),n=new Map,o=Ot(new Set);let c=null,l=!1,_=!1;const m=Y(0),d=Y(0),I=Math.max(1,Math.min(he,Math.floor(Number(ge(t.hardMaxActiveTasks))||he))),v=F(()=>ge(t.parallelEnabled)?Math.max(1,Math.min(Math.floor(Number(ge(t.maxActiveTasks))||3),I)):1),x=F(()=>_r({tasks:e.value,reservationCount:o.size,effectiveMaxActiveTasks:v.value}).activeTaskCount),A=F(()=>x.value>=v.value),L=F(()=>o.size>0||e.value.some(S=>S?.countsTowardAdmission!==!1&&hr.has(S?.status))),O=F(()=>!_&&!A.value),H=F(()=>({parallelEnabled:!!ge(t.parallelEnabled),activeTaskCount:x.value,effectiveMaxActiveTasks:v.value,reservationCount:o.size,admissionAcceptedCount:m.value,admissionRejectedCount:d.value,createUnknownCount:e.value.filter(S=>S?.status==="createUnknown").length})),M=()=>{c!==null&&(clearTimeout(c),c=null)},z=S=>{if(Wt(r.value))return 0;const[b,U]=wr(S||t.queueTimeRange);return Ir(b,U)*1e3},E=()=>{if(M(),_||l||n.size===0)return;const S=Math.min(...Array.from(n.values(),U=>U.queueEndsAt)),b=Math.max(0,S-Date.now());c=setTimeout(de,b)},J=(S,b,U)=>{q(e,S,{status:"failed",generateLoading:!1,generateError:!0,errorTip:U instanceof Error?U.message:String(U||"")},b)};async function de(){if(c=null,_||l)return;const S=Date.now(),b=Array.from(n.values()).filter(B=>B.queueEndsAt<=S).sort((B,X)=>B.queueEndsAt-X.queueEndsAt)[0];if(!b){E();return}n.delete(b.clientTaskId);const U=te(e,b.clientTaskId);if(!U||U.requestStarted){E();return}const Q=q(e,b.clientTaskId,{requestStarted:!0,status:"submitting",submittingStartedAt:Date.now()},U.revision);if(!Q){E();return}l=!0;try{await b.execute({clientTaskId:b.clientTaskId,payload:b.payload,expectedRevision:Q.revision})}catch(B){J(b.clientTaskId,Q.revision,B)}finally{b.payload=void 0,l=!1,E()}}const Ie=()=>{if(!O.value)return d.value+=1,"";const S=ce();return o.add(S),m.value+=1,S},Se=S=>{o.delete(S)},Ae=S=>{o.delete(S);const b=n.get(S);return b&&(b.payload=void 0,n.delete(S)),E(),!!b},G=({clientTaskId:S,result:b,payload:U,execute:Q,queueTimeRange:B})=>
1{if(_||!o.delete(S))return"";const X=Date.now(),fe=z(B),me={...b,clientTaskId:S,revision:0,requestStarted:!1,status:"queued",queueStartedAt:X,queueDurationMs:fe,queueEndsAt:X+fe};return e.value.unshift(me),n.set(S,{clientTaskId:S,payload:_t(U),execute:Q,queueEndsAt:me.queueEndsAt}),E(),S};return Ne(()=>{_=!0,M(),o.clear(),n.clear()}),{activeTaskCount:x,canReserveTask:O,coordinatorSubmitBusy:L,effectiveMaxActiveTasks:v,isAtActiveLimit:A,reserveTaskSlot:Ie,releaseTaskSlot:Se,discardTaskExecution:Ae,enqueueReservedTask:G,taskConcurrencySnapshot:H}}const vt=15,Le=320,Oe=1,Ar=.5,br=2,Cr=[240,320,480],Er="https://cdn.jsdelivr.net/npm";function it(e){const t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:null}function Rr(e){const t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:null}function xr(e=[]){const t=Array.isArray(e)?e.filter(Boolean):[],r=t.find(n=>n?.file instanceof File);return r||t.find(n=>typeof n?.url=="string"&&n.url.trim())||null}function Ur(e={}){const t=it(e.fps)||vt,r=it(e.resolution)||Le,n=Rr(e.speed)||Oe;return{fps:t,resolution:Cr.includes(r)?r:Le,speed:n>=Ar&&n<=br?n:Oe}}function Mr({fps:e=vt,resolution:t=Le,speed:r=Oe}={}){return`setpts=${Number((1/r).toFixed(6))}*PTS,fps=${e},scale=${t}:-1:flags=bicubic,gblur=sigma=0.2:steps=1,split[s0][s1];[s0]palettegen=stats_mode=diff:reserve_transparent=0[p];[s1][p]paletteuse=dither=sierra2_4a:diff_mode=rectangle`}function ht(e="",t="video.mp4"){if(!e||typeof e!="string")return t;try{return new URL(e,"http://local.video").pathname.split("/").pop()||t}catch{return t}}function Pr(e="video"){const t=(e||"video").trim()||"video";return/\.[^.]+$/.test(t)?t.replace(/\.[^.]+$/,".gif"):`${t}.gif`}function Nr(e=null){return`input${((e?.file?.name||ht(e?.url)).match(/\.[^.]+$/)?.[0]||".mp4").toLowerCase()}`}function qr(e="0.12.10"){const t=(e||"0.12.10").trim(),r=`${Er}/@ffmpeg/core@${t}/dist/esm`;return{coreURL:`${r}/ffmpeg-core.js`,wasmURL:`${r}/ffmpeg-core.wasm`}}function Fr(e){const t=e instanceof Error?e.message:String(e||""),r=t.toLowerCase();return r.includes("failed to fetch")||r.includes("networkerror")||r.includes("load failed")?"Failed to load the video conversion engine. Check your network connection and try again.":t||"Video to GIF conversion failed."}let ct=Promise.resolve();const Lr=e=>{const t=ct.then(e,e);return ct=t.catch(()=>{}),t};let ae=null,Te=null,ke=null,Ue=null;const wt=45e3;function It(e,t,r){let n;const o=new Promise((c,l)=>{n=setTimeout(()=>l(new Error(r)),t)});return Promise.race([e,o]).finally(()=>{n&&clearTimeout(n)})}async function Or(e,t){const r=new URL(e,window.location.href);return r.origin===window.location.origin?r.href:t(e,"text/javascript")}async function Be(){return Ue||(Ue=Promise.all([Re(()=>import("./Dctrsu-5.js"),[],import.meta.url),Re(()=>import("./B97fb_H9.js"),[],import.meta.url),Re(()=>import("./qnIIaQKn.js"),[],import.meta.url)]).then(([e,t,r])=>({FFmpeg:e.FFmpeg,fetchFile:t.fetchFile,toBlobURL:t.toBlobURL,ffmpegWorkerUrl:r.default}))),Ue}async function Gr(){if(!ke){const{ffmpegWorkerUrl:e,toBlobURL:t}=await Be(),{coreURL:r,wasmURL:n}=qr();ke=It(Promise.all([Or(e,t),t(r,"text/javascript"),t(n,"application/wasm")]),wt,"Timed out while loading the video processing engine.").then(([o,c,l])=>({classWorkerURL:o,coreURL:c,wasmURL:l})).catch(o=>{throw ke=null,o})}return ke}async function $r(){const{FFmpeg:e}=await Be();ae||(ae=new e);const t=ae;if(t.loaded)return t;if(!Te){const r=await Gr();Te=It(t.load({classWorkerURL:r.classWorkerURL,coreURL:r.coreURL,wasmURL:r.wasmURL}
1),wt,"Timed out while starting the video processing engine.").then(()=>t).catch(n=>{try{t.terminate()}catch{}throw ae===t&&(ae=null),n}).finally(()=>{Te=null})}return Te}function jr(e){if(e?.file instanceof File)return e.file;if(typeof e?.url=="string"&&e.url.trim())return e.url;throw new Error("A valid video source is required.")}function zr(e){return e?.file?.name||ht(e?.url)}function Br(e){return Fr(e)}function Dr(){const e=Y(!1),t=Y(0),r=Y("");async function n(o){e.value=!0,t.value=0,r.value="";const c=Ur(o),l=Nr(o.source),_="output.gif",m=zr(o.source);let d=null;const I=({progress:v})=>{t.value=Math.max(0,Math.min(100,Math.round(v*100)))};return Lr(async()=>{try{d=await $r();const{fetchFile:v}=await Be();d.on("progress",I);const x=await v(jr(o.source));await d.writeFile(l,x),await d.exec(["-i",l,"-vf",Mr(c),"-loop","0",_]);const A=await d.readFile(_),L=A instanceof Uint8Array?A:new TextEncoder().encode(String(A)),O=new Uint8Array(L.byteLength);return O.set(L),t.value=100,new File([O],Pr(m),{type:"image/gif"})}catch(v){throw r.value=Br(v),new Error(r.value)}finally{e.value=!1,d&&(d.off("progress",I),await Promise.allSettled([d.deleteFile(l),d.deleteFile(_)]))}})}return{convert:n,error:r,loading:e,progress:t}}const Me="Task creation outcome is unknown. The backend may still be processing it; do not submit the same task again automatically.",Vr=e=>{const t=new Error(e||"Generation request was rejected.");return t.name="GenerationBusinessError",t},ut=e=>{if(e?.name==="GenerationBusinessError")return!1;const t=e?.code;return!(typeof t=="number"&&Number.isFinite(t)||typeof t=="string"&&t.trim()!==""&&Number.isFinite(Number(t)))},Pe=e=>String(e||"").trim(),Wr=({revoke:e}={})=>{const t=new Map;let r=!1;const n=typeof e=="function"?e:m=>globalThis.URL?.revokeObjectURL?.(m),o=(m,d)=>{const I=Pe(m);if(r||!I||typeof d!="string"||!d.startsWith("blob:"))return!1;const v=t.get(I)||new Set;return v.add(d),t.set(I,v),!0},c=(m,d)=>{const I=Pe(m),v=t.get(I);return v?.delete(d)?(n(d),v.size||t.delete(I),!0):!1},l=m=>{const d=Pe(m),I=t.get(d);if(!I)return 0;t.delete(d);for(const v of I)n(v);return I.size};return{register:o,releaseUrl:c,releaseTask:l,dispose:()=>{r=!0;let m=0;for(const d of[...t.keys()])m+=l(d);return m},getOwnedCount:()=>[...t.values()].reduce((m,d)=>m+d.size,0)}};function rn(e,t,r){const n=Y(!1),o=Y(""),c=Gt(),l=jt(),_=lt("userInfo"),m=$t("pricingModalShow",()=>!1),d=F(()=>kr(l.public.generationTaskConcurrency,{userInfo:_.value})),I=F(()=>d.value.parallelEnabled),v=F(()=>d.value.maxActiveTasks),x=F(()=>d.value.hardMaxActiveTasks),A=c.$taskPollBroker,L=c.$taskPostProcessingQueue,O=ce("poll-owner"),H=ce("post-processing-owner"),M=new Map,z=new Set,E=new Map,J=Wr();let de=!1;const{convert:Ie,error:Se}=Dr(),Ae=(s={})=>({feature:e.eventName||"unknown",req_url:e.reqUrl||"",...s}),G=(s,a={})=>Ae({...s?._generationContext?.eventName?{feature:s._generationContext.eventName}:{},...s?._generationContext?.reqUrl?{req_url:s._generationContext.reqUrl}:{},...a}),S=s=>s instanceof Error?s.message:typeof s=="string"?s:String(s||""),{activeTaskCount:b,canReserveTask:U,coordinatorSubmitBusy:Q,effectiveMaxActiveTasks:B,isAtActiveLimit:X,reserveTaskSlot:fe,releaseTaskSlot:me,discardTaskExecution:St,enqueueReservedTask:At,taskConcurrencySnapshot:bt}=Sr(t,{parallelEnabled:I,maxActiveTasks:v,hardMaxActiveTasks:x,queueTimeRange:e.queueTimeRange}),D=s=>Number.isInteger(s?.revision)?s.revision:0,P=(s,a)=>{if(!s)return null;const i=te(t,s);return!i||a!==void 0&&D(i)!==a?null:i},De=(s,a,i)=>A?.getOwnerScope()===i&&!!P(s,a);Ne(()=>{A?.unregisterOwner(O),M.clear(),z.clear(),E.clear(),de=!0,L?.cancelOwner(H),J.dispose()});const ne=(s,a)=>{if(!P(s,a))return z.delete(s),null;St(s),A?.unregister({ownerId:O,clientTaskId:s}),M.delete(s),L?.cancel({ownerId:H,workId:s}),J.releaseTask(s),z.delete(s);const i=`${s.length}:${s}`;for(const p of E.keys())p.startsWith(i)&&E.delete(p);return Qt(t,s)},Ve=(s,a)=>ne(s,a),be=()=>{for(const s of Array.from(z))ne(s)},We=s=>{(s.key==="token"||s.key===null)&&be()};window.addEventListener(tt,be),window.addEventListener("storage",We),Ne(()=>{window.removeEventListener(tt,be),window.removeEventListener("storage",We)});const Ke=ne,He=s=>ne(s),Qe=s=>ne(s),Ct=(s,a,i)=>{if(!P(s,i))return a?.startsWith?.("blob:")&&globalThis.URL?.revokeObjectURL?.(a),!1;const p=J.register(s,a);return!p&&a?.startsWith?.("blob:")&&globalThis.URL?.revokeObjectURL?.(a),p},Et=(s,a)=>
1J.releaseUrl(s,a),Xe=async({clientTaskId:s,expectedRevision:a,isOwnerCurrent:i,onInvalidated:p,run:g})=>{if(!L)throw new Error("Task post-processing queue is unavailable.");let k=a;const w=q(t,s,{status:"postProcessingQueued",postProcessingQueuedAt:Date.now()},k);if(!w)return null;k=D(w);const f=()=>!!P(s,k),T=()=>!de&&f()&&(!i||i()),h=y=>{const C=q(t,s,y,k);return C&&(k=D(C)),C},u=y=>Ct(s,y,k);try{return await L.enqueue({ownerId:H,workId:s,isCurrent:T,onStart:()=>!!h({status:"postProcessing",postProcessingStartedAt:Date.now()}),run:()=>g({isCurrent:T,patchTask:h,ownObjectUrl:u,releaseObjectUrl:y=>Et(s,y)})})}catch(y){if(zt(y))return f()&&i&&!i()&&p?.(k),null;const C=y instanceof Error?y.message:String(y||"Task post-processing failed.");throw h({status:"failed",generateLoading:!1,generateError:!0,url:"",errorTip:C}),y}},Rt=async s=>{const a=xr([{url:s}]);if(!a)throw new Error("A valid video source is required.");const i=await Ie({source:a,fps:15,resolution:320,speed:1});return await Ht(i,{target:"default"})||""},xt=async s=>{if(!rt())return!1;n.value=!0;try{const a=await Bt(s,r);return a}finally{n.value=!1}},Ut=async(s,a,i,p={})=>{const g=P(a,i);if(!g||!g.requestStarted)return;let k=i??D(g);const w=p.reqUrl||g._generationContext?.reqUrl||e.reqUrl,f=G(g,{...p.eventName?{feature:p.eventName}:{},...w?{req_url:w}:{}});try{if(j("generate_start",f),!w)throw new Error("Missing generation request URL");const T=await xe(w,s);if(!P(a,k))return;if(T.code==1e4){const h=T.data.job_id||"";if(!h)throw new Error("Generation response is missing job_id.");const u=T.data.task_id||"",y=q(t,a,{pollTaskId:h,generate_id:h,...u?{serverTaskId:u,task_id:u}:{},status:"processing",processingStartedAt:Date.now(),id:h},k);if(!y)return;k=D(y),se(h,a,k),A?.requestUserInfoRefresh()}else if(T.code==10006)j("generate_create_failed",{...f,failure_reason:"credit_not_enough",response_code:T.code}),K.warning(r("credit_not_enough")),Ke(a,k);else throw Vr(T.msg)}catch(T){if(!P(a,k))return;j("generate_create_failed",{...f,failure_reason:ut(T)?"create_outcome_unknown":"request_failed",error_message:S(T)}),ut(T)?(o.value=Me,q(t,a,{status:"createUnknown",generateLoading:!1,generateError:!0,errorTip:Me},k),K.error(Me)):(o.value=T?.message||"Generation request failed.",K.error(o.value),Ke(a,k)),e.errorBack&&e?.errorBack()}},Ce=(s,a)=>s instanceof Error?s.message||a:typeof s=="string"&&s||a,Ee=({error:s,clientTaskId:a,expectedRevision:i,ownerScope:p,status:g="failed"})=>{if(!De(a,i,p))return;const w=Ce(s,g==="timedOut"?"Result tracking timed out. The backend task may still be running.":"Failed to retrieve the generation result.");o.value=w,A?.requestUserInfoRefresh();const f=P(a,i),T=s&&typeof s=="object"?s.response:null,h=pe(f)?rr(f.items,{responseItems:T?.data,defaultSourceType:f.sourceType,errorTip:w}):{},u=q(t,a,{...h,status:g,generateLoading:!1,...pe(f)?{}:{url:""},generateError:!0,errorTip:w},i);u&&(j("generate_failed",G(u,{failure_stage:"polling",failure_status:g,error_message:w})),e.errorBack&&e.errorBack())},Ye=({response:s,clientTaskId:a,expectedRevision:i,isTerminal:p=!1})=>{const g=P(a,i);if(!g)return null;const k=Array.isArray(s?.data)?s.data:[];if(!(pe(g)||k.length>1||String(g.task_type||"").toLowerCase().includes("package")))return null;
1const f=pt(g.items,k,{defaultSourceType:g.sourceType}),T=ue(f,{isTerminal:p,summary:g.summary}),h=k.find(u=>u?.task_id)?.task_id||g.serverTaskId||"";return q(t,a,{...T,serverTaskId:h,task_id:h,task_species:k.find(u=>u?.task_species)?.task_species||g.task_species},i)},Mt=async({response:s,pollTaskId:a,clientTaskId:i,expectedRevision:p,ownerScope:g})=>{let k=p;try{if(!De(i,k,g))return;const w=P(i,k);if(!w)return;const f=Ye({response:s,clientTaskId:i,expectedRevision:k,isTerminal:!0});if(f){A?.requestUserInfoRefresh(),j(f.generateError?"generate_failed":"generate_success",G(f,{task_species:f.task_species||"",result_mode:"collection",completion_status:f.completionStatus||"",total_count:f.summary?.totalCount||0,completed_count:f.summary?.completedCount||0,failed_count:f.summary?.failedCount||0})),f.generateError&&e.errorBack&&e.errorBack();return}const T=s?.data?.[0];if(!T)throw new Error("Generation result response is missing data.");const h=cr(T,{defaultSourceType:w.sourceType});if(!h?.url)throw new Error("Generation result response is missing a media URL.");const u=T.task_id||w.serverTaskId||"";if(A?.requestUserInfoRefresh(),w.completionMode==="videoToGif"||!w.completionMode&&e.needGif){await Xe({clientTaskId:i,expectedRevision:k,isOwnerCurrent:()=>A?.getOwnerScope()===g,onInvalidated:N=>{Ve(i,N)},run:async({isCurrent:N,patchTask:V})=>{const W=await Rt(h.url);if(!N())return null;if(W){if(await xe("/api/tasks/update_results",{task_id:u||a,gif_url:W,mode:"append",media_type:"gif"}),!N())return null}else K.warning(Se.value||"Video to GIF conversion failed.");const R=V({serverTaskId:u,status:"succeeded",generate_id:a,generateLoading:!1,generateError:!1,errorTip:"",task_species:T.task_species||w.task_species,task_id:u,url:W||h.url,created_at:T.created_at||w.created_at,...W?{}:{sourceType:"video"}});return R&&j("generate_success",G(R,{task_species:R.task_species||T.task_species||"",post_processing:"video_to_gif"})),R}});return}const C=q(t,i,{serverTaskId:u,status:"succeeded",generate_id:a,generateLoading:!1,generateError:!1,errorTip:"",task_species:T.task_species||w.task_species,task_id:u,url:h.url,sourceType:h.sourceType||w.sourceType,created_at:T.created_at||w.created_at},k);if(!C)return;j("generate_success",G(C,{task_species:C.task_species||T.task_species||""}))}catch(w){const f=te(t,i);if(f?.status==="failed"){o.value=f.errorTip||Ce(w,"Task post-processing failed."),A?.requestUserInfoRefresh(),e.errorBack&&e.errorBack();return}Ee({error:w,clientTaskId:i,expectedRevision:k,ownerScope:g})}},se=(s,a,i)=>{if(!A)throw new Error("Task Poll Broker is unavailable.");z.add(a);const p=`${s}:${i}`;if(M.get(a)===p)return;M.set(a,p);const g=()=>{M.get(a)===p&&M.delete(a)},k=A.refreshOwnerScope(),w=Kt();let f=i;A.register({ownerId:O,ownerScope:k,clientTaskId:a,pollTaskId:s,revision:i,trackingTimeoutMs:e.polling?.trackingTimeoutMs,request:async({signal:T})=>{try{return await Dt(`/api/vt?i=${encodeURIComponent(s)}`,void 0,{signal:T})}catch(h){if(h&&typeof h=="object"&&h.code!==void 0)return h;throw h}},classify:w,isCurrent:()=>!!P(a,f),onProgress:T=>{if(!P(a,f))return;const u=Ye({response:T,clientTaskId:a,expectedRevision:f});u&&(f=D(u))},onComplete:T=>{g(),Mt({response:T,pollTaskId:s,clientTaskId:a,expectedRevision:f,ownerScope:k})},onFailure:T=>{g(),Ee({error:T,clientTaskId:a,expectedRevision:f,ownerScope:k})},onTimeout:()=>{g(),Ee({error:new Error("Result tracking timed out. The backend task may still be running."),clientTaskId:a,expectedRevision:f,ownerScope:k,status:"timedOut"})},onInvalidated:()=>{g(),Ve(a,f)}})},Pt=(s=[])=>{let a=0;for(const i of s){const p=mr(i);if(!p)continue;const g=at(t.value,p);if(g){if(g.status!=="processing")continue;se(p.pollTaskId,g.clientTaskId,D(g));continue}t.value.push(p),se(p.pollTaskId,p.clientTaskId,D(p)),a+=1}return a},ee=(s,a)=>`${s.length}:${s}${String(a)}`,Nt=s=>{if(!s||!pe(s))return null;const a=at(t.value,s);if(a)return a;const i={...s,items:Array.isArray(s.items)?s.items.map(p=>({...p})):[],retryingItemIds:[]};return _e(i,{prefix:s.rawTask?"history":"local"}),t.value.push(i),i},Ze=s=>{if(!s?.generateLoading)return;const a=ve(s);a&&se(a,s.clientTaskId,D(s))},Je=(s,a)=>{const i=new Set(a.map(g=>String(g))),p=q(t,s,g=>({retryingItemIds:(g.retryingItemIds||[]).filter(k=>!i.has(String(k)))}));return p&&Ze(p),p},qt=async(s,a=[])=>{if(!rt()||!Array.isArray(a))return!1;const i=Nt(s);if(!i)return!1;
1const p=le(i),g=ve(i);if(!p||!g)return K.error(r("message.request_exception")),!1;const k=new Map;for(const u of i.items||[]){if(u?.status!=="failed")continue;const y=nr(u);y!==void 0&&k.set(String(y),u)}const f=Array.from(new Map(a.filter(u=>u!=null&&String(u).trim()).map(u=>[String(u),u])).values()).filter(u=>{const y=ee(i.clientTaskId,u);return k.has(String(u))&&!E.has(y)});if(!f.length)return!1;const T=ce("collection-retry");for(const u of f)E.set(ee(i.clientTaskId,u),T);const h=q(t,i.clientTaskId,u=>{const y=[...u.retryingItemIds||[],...f];return{retryingItemIds:Array.from(new Map(y.map(C=>[String(C),C])).values())}});if(!h){for(const u of f)E.delete(ee(i.clientTaskId,u));return!1}Ze(h),j("collection_retry_start",G(i,{task_id:p,retry_count:f.length}));try{const u=await xe("/api/generation/retry",{task_id:i.serverTaskId??i.task_id??i.rawTask?.id??p,retry_ids:f}),y=f.filter(C=>E.get(ee(i.clientTaskId,C))===T);if(!y.length||!te(t,i.clientTaskId))return!1;if(Number(u?.code)===1e4){const C=new Set(y.map(V=>String(V))),N=q(t,i.clientTaskId,V=>{const W=(V.items||[]).map($=>C.has(String($.itemId??$.item_id))?{...$,status:"generating",progress:0,url:"",error:""}:$);return{...ue(W,{isTerminal:!1,summary:V.summary}),pollTaskId:g,generate_id:g,retryingItemIds:(V.retryingItemIds||[]).filter($=>!C.has(String($)))}});return N?(A?.requestUserInfoRefresh(),se(g,N.clientTaskId,D(N)),j("collection_retry_success",G(N,{task_id:p,retry_count:y.length})),!0):!1}return Je(i.clientTaskId,y),Number(u?.code)===10006?(K.warning(r("credit_not_enough")),m.value=!0,nt("pricing_modal_open",{source:"collection_retry_credit_not_enough"})):K.error(u?.msg||r("message.request_exception")),j("collection_retry_failed",G(i,{task_id:p,retry_count:y.length,response_code:u?.code})),!1}catch(u){const y=f.filter(C=>E.get(ee(i.clientTaskId,C))===T);return y.length&&te(t,i.clientTaskId)&&(Je(i.clientTaskId,y),Number(u?.code)===10006?(K.warning(r("credit_not_enough")),m.value=!0,nt("pricing_modal_open",{source:"collection_retry_credit_not_enough"})):K.error(Ce(u,r("message.request_exception")))),j("collection_retry_failed",G(i,{task_id:p,retry_count:y.length,response_code:u?.code,error_message:S(u)})),!1}finally{for(const u of f){const y=ee(i.clientTaskId,u);E.get(y)===T&&E.delete(y)}}},Ft=async({credit:s,result:a,payload:i,execute:p,skipCreditCheck:g=!1,queueTimeRange:k,reqUrl:w,eventName:f,onAdmissionRejected:T})=>{const h=fe();if(!h)return T?.(),"";const u=A?.getOwnerScope(),y=_t(i),C=[a?.model,y?.model,y?.input?.model].find(R=>typeof R=="string"&&R.trim()),N=[a?.prompt,y?.input?.prompt,y?.prompt].find(R=>typeof R=="string"&&R.trim()),V={...a,...C?{model:C}:{},...N?{prompt:N}:{},_generationContext:{eventName:f||a?._generationContext?.eventName||e.eventName||"",reqUrl:w||a?._generationContext?.reqUrl||e.reqUrl||""}};let W=!1;try{if(!g&&(!await xt(s)||A?.getOwnerScope()!==u))return"";const R=At({clientTaskId:h,result:V,payload:y,queueTimeRange:k,execute:p||($=>Ut($.payload,$.clientTaskId,$.expectedRevision,{reqUrl:w,eventName:f}))});return W=!!R,R&&!g&&z.add(R),R}finally{W||me(h)}},et=F(()=>n.value||Q.value),Lt=F(()=>({loading:et.value,atActiveLimit:X.value,activeTaskCount:b.value,activeTaskLimit:B.value,taskCapacityVisible:I.value,taskCapacityUpgradeAvailable:!!_.value&&d.value.upgrade.available,taskCapacityUpgradeLimit:d.value.upgrade.maxActiveTasks}));return{btnLoading:n,activeTaskCount:b,canReserveTask:U,effectiveMaxActiveTasks:B,generateButtonState:Lt,isAtActiveLimit:X,removeLocalTask:He,resultTaskActions:{recoverHistoryTasks:Pt,removeLocalTask:He,retryCollectionItems:qt,stopTrackingTask:Qe},runTaskPostProcessing:Xe,stopTrackingTask:Qe,submitBusy:et,submitTask:Ft,taskConcurrencySnapshot:bt}}export{le as a,Jr as b,Yr as c,$r as d,_e as e,nr as f,Zr as g,ue as h,pe as i,Dr as j,ve as k,Be as l,tn as m,re as n,xr as p,Lr as r,tr as s,en as t,rn as u};
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.