var xa=Object.defineProperty;var Kr=k=>{throw TypeError(k)};var Oa=(k,w,S)=>w in k?xa(k,w,{enumerable:!0,configurable:!0,writable:!0,value:S}):k[w]=S;var Je=(k,w,S)=>Oa(k,typeof w!="symbol"?w+"":w,S),Ia=(k,w,S)=>w.has(k)||Kr("Cannot "+S);var Fe=(k,w,S)=>(Ia(k,w,"read from private field"),S?S.call(k):w.get(k)),Qt=(k,w,S)=>w.has(k)?Kr("Cannot add the same private member more than once"):w instanceof WeakSet?w.add(k):w.set(k,S);import{s as Mn,a as Sr,g as Un,e as Fn,D as Pa,h as Ea}from"./c625DOTJ.js";import{g as jr}from"./BPHiMHp4.js";import{i as Cr}from"./Dsd3-0x-.js";import{o as Rr,p as Aa,q as Ka,a as Sa}from"./zO0CuF4M.js";import"./C5OrMAnU.js";import"./B-4V-jI8.js";import"./CrAZiyhe.js";var qr={exports:{}};(function(k,w){(function(S,I){k.exports=I()})(Rr,function(){var S=function(e,t){return(S=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[a]=r[a])})(e,t)},I=function(){return(I=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"u"||F.Promise||(F.Promise=Promise);var z=Object.getPrototypeOf,le={}.hasOwnProperty;function J(e,t){return le.call(e,t)}function Pe(e,t){typeof t=="function"&&(t=t(z(e))),(typeof Reflect>"u"?N:Reflect.ownKeys)(t).forEach(function(n){ge(e,n,t[n])})}var bt=Object.defineProperty;function ge(e,t,n,r){bt(e,t,Y(n&&J(n,"get")&&typeof n.get=="function"?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function Ne(e){return{from:function(t){return e.prototype=Object.create(t.prototype),ge(e.prototype,"constructor",e),{extend:Pe.bind(null,e.prototype)}}}}var Fr=Object.getOwnPropertyDescriptor,Nr=[].slice;function wt(e,t,n){return Nr.call(e,t,n)}function Wn(e,t){return t(e)}function Ze(e){if(!e)throw new Error("Assertion Failed")}function Vn(e){F.setImmediate?setImmediate(e):setTimeout(e,0)}function pe(e,t){if(typeof t=="string"&&J(e,t))return e[t];if(!t)return e;if(typeof t!="string"){for(var n=[],r=0,a=t.length;r"u"?[]:function(){var e=Promise.resolve();if(typeof crypto>"u"||!crypto.subtle)return[e,z(e),e];var t=crypto.subtle.digest("SHA-512",new Uint8Array([0]));return[t,z(t),e]}(),rt=Se[0],ce=Se[1],Se=Se[2],ce=ce&&ce.then,je=rt&&rt.constructor,nn=!!Se,at=function(e,t){it.push([e,t]),xt&&(queueMicrotask(Zr),xt=!1)},rn=!0,xt=!0,Ce=[],Ot=[],an=tt,be={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:$,pgp:!1,env:{},finalize:$},R=be,it=[],Re=0,It=[];function j(e){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");this._listeners=[],this._lib=!1;var t=this._PSD=R;if(typeof e!="function"){if(e!==nt)throw new TypeError("Not a function");return this._state=arguments[1],this._value=arguments[2],void(this._state===!1&&un(this,this._value))}this._state=null,this._value=null,++t.ref,function n(r,a){try{a(function(i){if(r._state===null){if(i===r)throw new TypeError("A promise cannot be resolved with itself.");var o=r._lib&&$e();i&&typeof i.then=="function"?n(r,function(u,c){i instanceof j?i._then(u,c):i.then(u,c)}):(r._state=!0,r._value=i,Zn(r)),o&&Ye()}},un.bind(null,r))}catch(i){un(r,i)}}(this,e)}var on={get:function(){var e=R,t=Kt;function n(r,a){var i=this,o=!e.global&&(e!==R||t!==Kt),u=o&&!_e(),c=new j(function(f,p){sn(i,new Jn(tr(r,e,o,u),tr(a,e,o,u),f,p,e))});return this._consoleTask&&(c._consoleTask=this._consoleTask),c}return n.prototype=nt,n},set:function(e){ge(this,"then",e&&e.prototype===nt?on:{get:function(){return e},set:on.set})}};function Jn(e,t,n,r,a){this.onFulfilled=typeof e=="function"?e:null,this.onRejected=typeof t=="function"?t:null,this.resolve=n,this.reject=r,this.psd=a}function un(e,t){var n,r;Ot.push(t),e._state===null&&(n=e._lib&&$e(),t=an(t),e._state=!1,e._value=t,r=e,Ce.some(function(a){return a._value===r._value})||Ce.push(r),Zn(e),n&&Ye())}function Zn(e){var t=e._listeners;e._listeners=[];for(var n=0,r=t.length;n.",nr="String expected.",Ge=[],jt="__dbnames",fn="readonly",hn="readwrite";function Be(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var rr={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function Ct(e){return typeof e!="string"||/\./.test(e)?function(t){return t}:function(t){return t[e]===void 0&&e in t&&delete(t=Ee(t))[e],t}}function ar(){throw T.Type()}function L(e,t){try{var n=ir(e),r=ir(t);if(n!==r)return n==="Array"?1:r==="Array"?-1:n==="binary"?1:r==="binary"?-1:n==="string"?1:r==="string"?-1:n==="Date"?1:r!=="Date"?NaN:-1;switch(n){case"number":case"Date":case"string":return tb+_&&v(b+p)})})}var g=Qe(n)&&n.limit===1/0&&(typeof e!="function"||e===yn)&&{index:n.index,range:n.range};return v(0).then(function(){if(0=m})).length!==0?(p.forEach(function(v){y.push(function(){var g=h,b=v._cfg.dbschema;Ft(s,g,d),Ft(s,b,d),h=s._dbSchema=b;var _=_n(g,b);_.add.forEach(function(K){kn(d,K[0],K[1].primKey,K[1].indexes)}),_.change.forEach(function(K){if(K.recreate)throw new T.Upgrade("Not yet support for changing primary key");var E=d.objectStore(K.name);K.add.forEach(function(C){return Mt(E,C)}),K.change.forEach(function(C){E.deleteIndex(C.name),Mt(E,C)}),K.del.forEach(function(C){return E.deleteIndex(C)})});var x=v._cfg.contentUpgrade;if(x&&v._cfg.version>m){Bt(s,d),l._memoizedTables={};var A=$n(b);_.del.forEach(function(K){A[K]=g[K]}),wn(s,[s.Transaction.prototype]),qt(s,[s.Transaction.prototype],N(A),A),l.schema=A;var O,P=Zt(x);return P&&ze(),_=j.follow(function(){var K;(O=x(l))&&P&&(K=_e.bind(null,null),O.then(K,K))}),O&&typeof O.then=="function"?j.resolve(O):_.then(function(){return O})}}),y.push(function(g){var b,_,x=v._cfg.dbschema;b=x,_=g,[].slice.call(_.db.objectStoreNames).forEach(function(A){return b[A]==null&&_.db.deleteObjectStore(A)}),wn(s,[s.Transaction.prototype]),qt(s,[s.Transaction.prototype],s._storeNames,s._dbSchema),l.schema=s._dbSchema}),y.push(function(g){s.idbdb.objectStoreNames.contains("$meta")&&(Math.ceil(s.idbdb.version/10)===v._cfg.version?(s.idbdb.deleteObjectStore("$meta"),delete s._dbSchema.$meta,s._storeNames=s._storeNames.filter(function(b){return b!=="$meta"})):g.objectStore("$meta").put(v._cfg.version,"version"))})}),function v(){return y.length?j.resolve(y.shift()(l.idbtrans)).then(v):j.resolve()}().then(function(){yr(h,d)})):j.resolve();var s,m,l,d,y,h}).catch(o)):(N(a).forEach(function(p){kn(n,p,a[p].primKey,a[p].indexes)}),Bt(e,n),void j.follow(function(){return e.on.populate.fire(i)}).catch(o));var c,f})}function ha(e,t){yr(e._dbSchema,t),t.db.version%10!=0||t.objectStoreNames.contains("$meta")||t.db.createObjectStore("$meta").add(Math.ceil(t.db.version/10-1),"version");var n=Ut(0,e.idbdb,t);Ft(e,e._dbSchema,t);for(var r=0,a=_n(n,e._dbSchema).change;rMath.pow(2,62)?0:h.oldVersion,s=h<1,e.idbdb=y.result,i&&ha(e,p),fa(e,h/10,p,l))},l),y.onsuccess=Q(function(){p=null;var h,v,g,b,_,x=e.idbdb=y.result,A=wt(x.objectStoreNames);if(0"u"?j.resolve():!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(m){function l(){return indexedDB.databases().finally(m)}c=setInterval(l,100),l()}).finally(function(){return clearInterval(c)}):Promise.resolve()).then(u)]).then(function(){return o(),t.onReadyBeingFired=[],j.resolve(In(function(){return e.on.ready.fire(e.vip)})).then(function m(){if(0t.limit?m.length=t.limit:e.length===t.limit&&m.length=v.limit&&(!v.values||x.req.values)&&ba(x.req.query.range,v.query.range)}),!1,g,b];case"count":return _=b.find(function(x){return Pr(x.req.query.range,v.query.range)}),[_,!!_,g,b]}}(t,n,"query",i),p=f[0],s=f[1],m=f[2],l=f[3];return p&&s?p.obsSet=i.obsSet:(s=r.query(i).then(function(d){var y=d.result;if(p&&(p.res=y),o){for(var h=0,v=y.length;h{const w=await k.table("dataItems").toArray(),S=new Set,I=()=>crypto&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"uuid_"+Date.now()+"_"+Math.random().toString(36).substring(2,9);for(const B of w)(!B.taskId||S.has(B.taskId))&&(B.taskId=I()),S.add(B.taskId),await k.table("dataItems").update(B.id,{taskId:B.taskId})});se.version(3).stores({dataItems:"++id,&taskId"});async function yt(k){try{const w=await fetch(k);if(!w.ok)throw new Error(`Failed to fetch image: ${w.status} ${w.statusText}`);const S=await w.blob();return new Promise((I,B)=>{const F=new FileReader;F.onloadend=()=>I(F.result),F.onerror=B,F.readAsDataURL(S)})}catch(w){throw console.error("Error converting image URL to base64:",w),w}}async function Nn(k,w={}){const{maxWidth:S=300,maxHeight:I=300,format:B="image/jpeg",quality:F=.8}=w;return new Promise((N,V)=>{const Y=new Image;Y.crossOrigin="anonymous",Y.onload=()=>{let z=Y.width,le=Y.height;z>le?z>S&&(le=Math.round(le*(S/z)),z=S):le>I&&(z=Math.round(z*(I/le)),le=I);const J=document.createElement("canvas");J.width=z,J.height=le,J.getContext("2d").drawImage(Y,0,0,z,le);const bt=J.toDataURL(B,F);N(bt)},Y.onerror=()=>{N(null)},Y.src=k})}async function Ca(k){if(k.type==="create_video")[k.data.video,k.data.beforeImage,k.data.thumbnail]=await Promise.all([yt(k.data.video),yt(k.data.beforeImage),Nn(k.data.beforeImage)]);else if(k.type==="create_image"){const w=await Promise.all(k.data.images.map(async S=>Promise.all([yt(S),Nn(S,{maxWidth:250,maxHeight:250})])));k.data.images=w.map(S=>S[0]),k.data.thumbnails=w.map(S=>S[1])}else k.type==="edit_image"&&([k.data.afterImage,k.data.beforeImage,k.data.thumbnail]=await Promise.all([yt(k.data.afterImage),yt(k.data.beforeImage),Nn(k.data.afterImage)]));return k}async function Ra({type:k,data:w,taskId:S}){try{if(await Ta(S))return;let B={type:k,data:w,taskId:S,savedAt:new Date().toISOString()};B=await Ca(B);const F=await se.dataItems.add(B);await Ba();return}catch(I){if(I.name==="ConstraintError")return;throw I}}function Mr(k){if(!k)return k;const w={...k};return k.type==="create_video"?(w.data.video instanceof Blob&&(w.data.video=URL.createObjectURL(w.data.video)),w.data.beforeImage instanceof Blob&&(w.data.beforeImage=URL.createObjectURL(w.data.beforeImage)),w.data.thumbnail instanceof Blob&&(w.data.thumbnail=URL.createObjectURL(w.data.thumbnail))):k.type==="create_image"?(Array.isArray(w.data.images)&&(w.data.images=w.data.images.map(S=>S instanceof Blob?URL.createObjectURL(S):S)),Array.isArray(w.data.thumbnails)&&(w.data.thumbnails=w.data.thumbnails.map(S=>S instanceof Blob?URL.createObjectURL(S):S))):k.type==="edit_image"?(w.data.beforeImage instanceof Blob&&(w.data.beforeImage=URL.createObjectURL(w.data.beforeImage)),w.data.afterImage instanceof Blob&&(w.data.afterImage=URL.createObjectURL(w.data.afterImage)),w.data.thumbnail instanceof Blob&&(w.data.thumbnail=URL.createObjectURL(w.data.thumbnail))):k.mediaBlob instanceof Blob&&(w.blobUrl=URL.createObjectURL(k.mediaBlob)),w}function Ur(k){var w,S,I,B,F,N,V,Y;if(k)if(k.type==="create_video")typeof((w=k.data)==null?void 0:w.video)=="string"&&k.data.video.startsWith("blob:")&&URL.revokeObjectURL(k.data.video),typeof((S=k.data)==null?void 0:S.beforeImage)=="string"&&k.data.beforeImage.startsWith("blob:")&&URL.revokeObjectURL(k.data.beforeImage),typeof((I=k.data)==null?void 0:I.thumbnail)=="string"&&k.data.thumbnail.startsWith("blob:")&&URL.revokeObjectURL(k.data.thumbnail);else if(k.type==="create_image"){if(Array.isArray((B=k.data)==null?void 0:B.images))for(const z of k.data.images)typeof z=="string"&&z.startsWith("blob:")&&URL.revokeObjectURL(z);if(Array.isArray((F=k.data)==null?void 0:F.thumbnails))for(const z of k.data.thumbnails)typeof z=="string"&&z.startsWith("blob:")&&URL.revokeObjectURL(z)}else k.type==="edit_image"?(typeof((N=k.data)==null?void 0:N.beforeImage)=="string"&&k.data.beforeImage.startsWith("blob:")&&URL.revokeObjectURL(k.data.beforeImage),typeof((V=k.data)==null?void 0:V.afterImage)=="string"&&k.data.afterImage.startsWith("blob:")&&URL.revokeObjectURL(k.data.afterImage),typeof((Y=k.data)==null?void 0:Y.thumbnail)=="string"&&k.data.thumbnail.startsWith("blob:")&&URL.revokeObjectURL(k.data.thumbnail)):k.blobUrl&&URL.revokeObjectURL(k.blobUrl)}async function ti(){try{return(await se.dataItems.toArray()).map(w=>Mr(w))}catch(k){return console.log(k),{error:`Error retrieving media: ${k}`}}}async function Ta(k){if(!k)return!1;try{return await se.dataItems.where("taskId").equals(k).count()>0}catch(w){return console.error(`Error checking for duplicates: ${w}`),!1}}async function Da(k){if(!k)return null;try{const w=await se.dataItems.where("taskId").equals(k).first();return w?Mr(w):null}catch(w){return console.error(`Error retrieving item by taskId: ${w}`),null}}async function Ba(){try{const k=await se.dataItems.count();if(k>Dr){const w=k-Dr,B=(await se.dataItems.toArray()).sort((N,V)=>{const Y=N.createdAt||N.data&&N.data.savedAt,z=V.createdAt||V.data&&V.data.savedAt;return Yz?1:0}).slice(0,w);for(const N of B)Ur(N);const F=B.map(N=>N.id);F.length>0&&await se.dataItems.bulkDelete(F)}}catch(k){console.error(`Error during cleanup: ${k}`)}}async function ni(){try{const k=await se.dataItems.toArray();for(const S of k)Ur(S);const w=await se.dataItems.count();return await se.dataItems.clear(),w}catch(k){return{error:`Error deleting all media items: ${k}`}}}const Br=Symbol();var mt,vt,gt;class ri{constructor(w,S){Je(this,"user",null);Je(this,"modals",null);Qt(this,mt,Mn(Sr([])));Qt(this,vt,Mn(Sr({})));Qt(this,gt,Mn(!1));Je(this,"get",w=>this.tasks.find(S=>S.id===w));Je(this,"getPendingTasks",()=>this.tasks.filter(w=>w.state!=="failed"&&w.state!=="completed"));Je(this,"getReceivedTaskIds",()=>this.tasks.filter(w=>w.state==="failed"||w.state==="completed").map(w=>w.id));Pa(Br,this),this.user=w,this.modals=S,Ka("/api/task/poll",1e3,!1,()=>({ignoreTaskIds:this.getReceivedTaskIds()}),I=>{var B;I.user&&((B=this.user)==null||B.set(I.user)),this.processPolledTasks(I.tasks)},null,()=>this.user.isSignedIn())}get tasks(){return Un(Fe(this,mt))}set tasks(w){Fn(Fe(this,mt),w,!0)}get completedTasks(){return Un(Fe(this,vt))}set completedTasks(w){Fn(Fe(this,vt),w,!0)}get loaded(){return Un(Fe(this,gt))}set loaded(w){Fn(Fe(this,gt),w,!0)}static get(){return Ea(Br)}processPolledTasks(w){this.loaded=!0,w.forEach(async S=>{let I=this.get(S.id);I?Object.assign(I,S):this.tasks.push(S),S.state==="completed"&&this.saveToCreations(S)}),this.tasks=this.tasks.filter(S=>S.state==="failed"||S.state==="completed"?!0:w.find(I=>I.id===S.id)),this.tasks=this.tasks.sort((S,I)=>{const B=S.state!=="failed"&&S.state!=="completed",F=I.state!=="failed"&&I.state!=="completed";return B&&!F?-1:!B&&F?1:I.createdAt-S.createdAt})}structureCreation(w){const S=w.results,I=w.metadata;let B=null;return w.type==="create_video"?B={type:"create_video",data:{video:S[0],beforeImage:I.beforeImageUrl,thumbnail:I.beforeImageUrl,effectId:I.effectId,effect:Cr[I.effectId],createdAt:w.createdAt},taskId:w.id}:w.type==="create_image"?B={type:"create_image",data:{images:w.results,thumbnails:w.results,prompt:I.prompt,createdAt:w.createdAt},taskId:w.id}:w.type==="edit_image"&&(B={type:"edit_image",data:{beforeImage:I.beforeImageUrl,afterImage:S[0],thumbnail:S[0],editMode:I.editMode,prompt:Cr[I.editMode]+" Edit",createdAt:w.createdAt},taskId:w.id}),B}async saveToCreations(w){try{await Ra(this.structureCreation(w))}catch(S){console.error(`Error saving ${w.type}: ${S}`),this.modals.showMessage("Failed to save creation","Something went wrong...","Okay")}this.completedTasks[w.id]=await Da(w.id),this.completedTasks[w.id]||(console.log("backup"),this.completedTasks[w.id]=this.structureCreation(w))}async start(w,S){var F;const{data:I,error:B}=await Sa.post("/api/task",{type:w,options:S});if(B){B.status;const N=(F=B.data)==null?void 0:F.message;if(B.status===400&&N==="Prohibited content")this.modals.showMessage("Content not allowed","Your prompt may contain prohibited content. Please revise and try again.","Okay");else switch(B.status){case 401:jr("/"),this.user.set(null),this.modals.showSignIn();break;case 402:this.modals.showMessage("Not enough gems!","You'll need more gems to do this.","Buy more",()=>{jr("/gems")});break;case 409:N==="Already starting a task"?this.modals.showMessage("Slow down!","You are already starting a task, please wait a few seconds.","Okay"):N==="Concurrent task limit reached"&&this.modals.showMessage("Slow down!","You already have a task in progress, wait for it to finish and try again.","Okay");break;case 413:this.modals.showMessage("Image too large","One of the images you have uploaded is too large. Choose a smaller one and try again.","Okay");break;case 429:this.modals.showMessage("Slow down!","Wait a bit before trying again.","Okay");break;case 503:this.modals.showMessage("Please wait","We are experiencing extremely high demand. Please try again in a few minutes.","Okay");break;default:this.modals.showGenericError()}return!1}return this.processPolledTasks(I.tasks),this.user.set(I.user),!0}}mt=new WeakMap,vt=new WeakMap,gt=new WeakMap;export{Dr as D,ri as T,ni as d,ti as g};