@imgly/plugin-ai-generation-web 1.83.0-nightly.20260918 → 1.83.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.mjs +7 -7
- package/dist/index.mjs.map +2 -2
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
function Tr(e,t,r,n){let i=`property.${r}${n?`.${n}`:""}`,o=[`ly.img.plugin-ai-${t}-generation-web.${e}.${i}`,`ly.img.plugin-ai-generation-web.${i}`,`ly.img.plugin-ai-${t}-generation-web.${e}.defaults.${i}`,`ly.img.plugin-ai-generation-web.defaults.${i}`];return n==="placeholder"&&o.push("ly.img.plugin-ai-generation-web.fallback.property.placeholder"),o}var G=Tr;var Ot=class{constructor(e,t=[],r){this.id=e,this.translateLabel=r?.translateLabel,this.assets=t.map(n=>{if(typeof n.label=="string"&&!(n.label&&typeof n.label=="object")){let i=n;return{id:i.id,label:{en:i.label},meta:i.thumbUri?{...i.meta??{},thumbUri:i.thumbUri}:i.meta}}return n}),this.activeAssetIds=new Set,this.assets.length>0&&this.activeAssetIds.add(this.assets[0].id)}async findAssets(e){let{page:t,perPage:r,locale:n="en",sortActiveFirst:i,query:o,tags:a,groups:s,excludeGroups:c,sortingOrder:u,sortKey:l}=e,d=[...this.assets];if(s&&s.length>0&&(d=d.filter(m=>m.groups&&s.some(y=>m.groups?.includes(y)))),c&&c.length>0&&(d=d.filter(m=>!m.groups||!c.some(y=>m.groups?.includes(y)))),o){let m=o.toLowerCase();d=d.filter(y=>{let v=y.label?.[n]?.toLowerCase(),w=y.tags?.[n]||[];return v&&v.includes(m)||w.some(C=>C.toLowerCase().includes(m))})}if(a&&a.length>0){let m=Array.isArray(a)?a:[a];d=d.filter(y=>{let v=y.tags?.[n]||[];return m.some(w=>v.includes(w))})}i&&d.sort((m,y)=>{let v=this.activeAssetIds.has(m.id),w=this.activeAssetIds.has(y.id);return v&&!w?-1:!v&&w?1:0}),l&&l!=="id"?d.sort((m,y)=>{let v=m.meta?.[l],w=y.meta?.[l];return v===void 0?1:w===void 0?-1:typeof v=="string"&&typeof w=="string"?u==="Descending"?w.localeCompare(v):v.localeCompare(w):typeof v=="number"&&typeof w=="number"?u==="Descending"?w-v:v-w:0}):l==="id"&&d.sort((m,y)=>u==="Descending"?y.id.localeCompare(m.id):m.id.localeCompare(y.id));let p=d.length,g=t*r,f=g+r,h=d.slice(g,f).map(m=>{let y=m.label?.[n]||"",v=this.translateLabel?this.translateLabel(m.id,y,n):y;return{id:m.id,groups:m.groups,meta:m.meta,payload:m.payload,locale:n,label:v,tags:m.tags?.[n],active:this.activeAssetIds.has(m.id)}}),b=f<p?t+1:void 0;return{assets:h,currentPage:t,nextPage:b,total:p}}updateLabel(e,t,r){this.assets.forEach(n=>{n.id===e&&(n.label=n.label||{},n.label[r]=t)})}getAssetSelectValue(e){let t=this.assets.find(({id:r})=>r===e);if(t){let r=this.translateLabel?this.translateLabel(t.id,t.label?.en||"",""):t.label?.en||"";return{id:t.id,label:r,thumbUri:t.meta?.thumbUri}}}getActiveSelectValue(){let e=this.getActiveAssetIds();if(e.length>0){let t=this.assets.find(({id:r})=>r===e[0]);if(t){let r=this.translateLabel?this.translateLabel(t.id,t.label?.en||"",""):t.label?.en||"";return{id:t.id,label:r,thumbUri:t.meta?.thumbUri}}}}getTranslatedLabel(e){let t=this.assets.find(({id:r})=>r===e);if(t)return this.translateLabel?this.translateLabel(t.id,t.label?.en||"",""):t.label?.en||""}getAsset(e){return this.assets.find(t=>t.id===e)}setAssetActive(e){this.activeAssetIds.add(e)}getActiveAssetIds(){return Array.from(this.activeAssetIds)}setAssetsActive(e){e.forEach(t=>this.activeAssetIds.add(t))}setAssetInactive(e){this.activeAssetIds.delete(e)}clearActiveAssets(){this.activeAssetIds.clear()}isAssetActive(e){return this.activeAssetIds.has(e)}addAsset(e){let t=this.assets.findIndex(r=>r.id===e.id);t>=0?this.assets[t]=e:this.assets.push(e)}removeAsset(e){let t=this.assets.findIndex(r=>r.id===e);t!==-1&&(this.assets.splice(t,1),this.activeAssetIds.delete(e))}async getGroups(){let e=new Set;return this.assets.forEach(t=>{t.groups&&t.groups.forEach(r=>e.add(r))}),Array.from(e)}getSupportedMimeTypes(){return["image/jpeg","image/png","image/svg+xml","image/webp","video/mp4","audio/mpeg"]}},St=class{constructor(e,t,r){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=r?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=r?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.dbVersion);r.onerror=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},r.onupgradeneeded=n=>{let i=n.target.result;i.objectStoreNames.contains(this.assetStoreName)||i.createObjectStore(this.assetStoreName,{keyPath:"id"}),i.objectStoreNames.contains(this.blobStoreName)||i.createObjectStore(this.blobStoreName,{keyPath:"id"})},r.onsuccess=n=>{this.db=n.target.result,e()}})}close(){this.db&&(this.db.close(),this.db=null)}async findAssets(e){if(await this.initialize(),!this.db)throw new Error("Database not initialized");try{let t=(await this.getAllAssets("asc")).reduce((c,u)=>{let l=e.locale??"en",d="",p=[];u.label!=null&&typeof u.label=="object"&&u.label[l]&&(d=u.label[l]),u.tags!=null&&typeof u.tags=="object"&&u.tags[l]&&(p=u.tags[l]);let g={...u,label:d,tags:p};return this.filterAsset(g,e)&&c.push(g),c},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:r,perPage:n}=e,i=r*n,o=i+n,a=t.slice(i,o),s=o<t.length?r+1:void 0;return{assets:a,currentPage:r,nextPage:s,total:t.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){if(await this.initialize(),!this.db)throw new Error("Database not initialized");return new Promise((e,t)=>{let r=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();r.onsuccess=()=>{let n=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(a=>n.add(a))});let i=[...n];e(i)},r.onerror=()=>{t(new Error(`Failed to get groups: ${r.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),r=t.objectStore(this.assetStoreName),n=new Set;Y(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let i={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.put(i),t.oncomplete=()=>{this.engine.asset.assetSourceContentsChanged(this.id)},t.onerror=()=>{console.error(`Failed to add asset: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async removeAsset(e){let t=await this.getAsset(e);return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.assetStoreName,"readwrite");r.objectStore(this.assetStoreName).delete(e),r.oncomplete=()=>{Y(t,n=>{this.removeBlob(n)}),this.engine.asset.assetSourceContentsChanged(this.id)},r.onerror=()=>{console.error(`Failed to remove asset: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async removeBlob(e){return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.blobStoreName,"readwrite");t.objectStore(this.blobStoreName).delete(e),t.onerror=()=>{console.error(`Failed to remove blob: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async getAllAssets(e="desc"){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let i=n.result;i.sort((o,a)=>{let s=o.meta?.insertedAt||o._insertedAt||Date.now(),c=a.meta?.insertedAt||a._insertedAt||Date.now();return e==="asc"?s-c:c-s}),t(i)},n.onerror=()=>{r(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async createBlobUrlFromStore(e){let t=await this.getBlob(e);return t!=null?URL.createObjectURL(t.blob):e}async storeBlobUrls(e){let t={};return await Promise.all(e.map(async r=>{let n=await(await fetch(r)).blob();t[r]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),n=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([i,o])=>{let a={id:i,blob:o};n.put(a)}),r.onerror=()=>{console.error(`Failed to add blobs: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async restoreBlobUrls(e){let t={},r=new Set;return Y(e,n=>{r.add(n)}),await Promise.all([...r].map(async n=>{let i=await this.createBlobUrlFromStore(n);t[n]=i})),Y(e,n=>t[n]??n)}filterAsset(e,t){let{query:r,tags:n,groups:i,excludeGroups:o}=t;if(r&&r.trim()!==""){let a=r.trim().toLowerCase().split(" "),s=e.label?.toLowerCase()??"",c=e.tags?.map(u=>u.toLowerCase())??[];if(!a.every(u=>s.includes(u)||c.some(l=>l.includes(u))))return!1}if(n){let a=Array.isArray(n)?n:[n];if(a.length>0&&(!e.tags||!a.every(s=>e.tags?.includes(s))))return!1}return!(i&&i.length>0&&(!e.groups||!i.some(a=>e.groups?.includes(a)))||o&&o.length>0&&e.groups&&e.groups.some(a=>o.includes(a)))}sortAssets(e,t){let{sortingOrder:r,sortKey:n,sortActiveFirst:i}=t,o=[...e];return!r||r==="None"||(n?o.sort((a,s)=>{let c,u;return n==="id"?(c=a.id,u=s.id):(c=a.meta?.[n]??null,u=s.meta?.[n]??null),c==null?r==="Ascending"?-1:1:u==null?r==="Ascending"?1:-1:typeof c=="string"&&typeof u=="string"?r==="Ascending"?c.localeCompare(u):u.localeCompare(c):r==="Ascending"?c<u?-1:c>u?1:0:c>u?-1:c<u?1:0}):r==="Descending"&&o.reverse(),i&&o.sort((a,s)=>a.active&&!s.active?-1:!a.active&&s.active?1:0)),o}};function Y(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let i=r?`${r}[${n}]`:`[${n}]`;if(typeof e[n]=="string"&&e[n].startsWith("blob:")){let o=t(e[n],i);typeof o=="string"&&(e[n]=o)}else e[n]=Y(e[n],t,i)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=r?`${r}.${n}`:n;if(typeof i=="string"&&i.startsWith("blob:")){let a=t(i,o);typeof a=="string"&&(e[n]=a)}else e[n]=Y(i,t,o)}return e}var Ct=class{constructor(e,t,r){this.id=e,this.cesdk=t,this.assetSourceIds=r}async findAssets(e){try{let t=this.assetSourceIds.map(l=>this.cesdk.engine.asset.findAssets(l,{...e,perPage:9999,page:0})),r=await Promise.all(t),n=[];r.forEach(l=>{l?.assets&&(n=n.concat(l.assets))}),n.sort((l,d)=>{let p=l.meta?.insertedAt||0;return(d.meta?.insertedAt||0)-p});let{page:i,perPage:o}=e,a=i*o,s=a+o,c=n.slice(a,s),u=s<n.length?i+1:void 0;return{assets:c,currentPage:i,nextPage:u,total:n.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){let e=this.assetSourceIds.map(n=>this.cesdk.engine.asset.getGroups(n)),t=await Promise.all(e),r=new Set;return t.forEach(n=>{n.forEach(i=>r.add(i))}),Array.from(r)}addAsset(e){throw new Error("AggregatedAssetSource does not support adding assets")}removeAsset(e){throw new Error("AggregatedAssetSource does not support removing assets")}},Gr=class{constructor(e,t){this.engine=e,this.key=t}hasData(e){return this.engine.block.isValid(e)&&this.engine.block.hasMetadata(e,this.key)}get(e){if(this.hasData(e))return JSON.parse(this.engine.block.getMetadata(e,this.key))}set(e,t){this.engine.block.setMetadata(e,this.key,JSON.stringify(t))}clear(e){this.engine.block.hasMetadata(e,this.key)&&this.engine.block.removeMetadata(e,this.key)}},he=Gr,Lr=typeof global=="object"&&global&&global.Object===Object&&global,xt=Lr,Fr=typeof self=="object"&&self&&self.Object===Object&&self,$r=xt||Fr||Function("return this")(),$=$r,_r=$.Symbol,Z=_r,At=Object.prototype,jr=At.hasOwnProperty,Nr=At.toString,ie=Z?Z.toStringTag:void 0;function Vr(e){var t=jr.call(e,ie),r=e[ie];try{e[ie]=void 0;var n=!0}catch{}var i=Nr.call(e);return n&&(t?e[ie]=r:delete e[ie]),i}var Br=Vr,zr=Object.prototype,Ur=zr.toString;function qr(e){return Ur.call(e)}var Qr=qr,Hr="[object Null]",Yr="[object Undefined]",ut=Z?Z.toStringTag:void 0;function Zr(e){return e==null?e===void 0?Yr:Hr:ut&&ut in Object(e)?Br(e):Qr(e)}var le=Zr;function Wr(e){return e!=null&&typeof e=="object"}var Fe=Wr,Ts=Array.isArray;function Jr(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Et=Jr,Xr="[object AsyncFunction]",en="[object Function]",tn="[object GeneratorFunction]",rn="[object Proxy]";function nn(e){if(!Et(e))return!1;var t=le(e);return t==en||t==tn||t==Xr||t==rn}var on=nn,an=$["__core-js_shared__"],Re=an,dt=function(){var e=/[^.]+$/.exec(Re&&Re.keys&&Re.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function sn(e){return!!dt&&dt in e}var ln=sn,un=Function.prototype,dn=un.toString;function cn(e){if(e!=null){try{return dn.call(e)}catch{}try{return e+""}catch{}}return""}var V=cn,pn=/[\\^$.*+?()[\]{}|]/g,gn=/^\[object .+?Constructor\]$/,mn=Function.prototype,fn=Object.prototype,yn=mn.toString,bn=fn.hasOwnProperty,hn=RegExp("^"+yn.call(bn).replace(pn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function In(e){if(!Et(e)||ln(e))return!1;var t=on(e)?hn:gn;return t.test(V(e))}var vn=In;function wn(e,t){return e?.[t]}var kn=wn;function On(e,t){var r=kn(e,t);return vn(r)?r:void 0}var W=On,Sn=W($,"WeakMap"),Me=Sn;function Cn(e,t){return e===t||e!==e&&t!==t}var xn=Cn,An=9007199254740991;function En(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=An}var Pn=En;var Gs=Object.prototype;var Rn="[object Arguments]";function Dn(e){return Fe(e)&&le(e)==Rn}var ct=Dn,Pt=Object.prototype,Mn=Pt.hasOwnProperty,Kn=Pt.propertyIsEnumerable,Ls=ct(function(){return arguments}())?ct:function(e){return Fe(e)&&Mn.call(e,"callee")&&!Kn.call(e,"callee")};var Rt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pt=Rt&&typeof module=="object"&&module&&!module.nodeType&&module,Tn=pt&&pt.exports===Rt,gt=Tn?$.Buffer:void 0,Fs=gt?gt.isBuffer:void 0;var Gn="[object Arguments]",Ln="[object Array]",Fn="[object Boolean]",$n="[object Date]",_n="[object Error]",jn="[object Function]",Nn="[object Map]",Vn="[object Number]",Bn="[object Object]",zn="[object RegExp]",Un="[object Set]",qn="[object String]",Qn="[object WeakMap]",Hn="[object ArrayBuffer]",Yn="[object DataView]",Zn="[object Float32Array]",Wn="[object Float64Array]",Jn="[object Int8Array]",Xn="[object Int16Array]",ei="[object Int32Array]",ti="[object Uint8Array]",ri="[object Uint8ClampedArray]",ni="[object Uint16Array]",ii="[object Uint32Array]",P={};P[Zn]=P[Wn]=P[Jn]=P[Xn]=P[ei]=P[ti]=P[ri]=P[ni]=P[ii]=!0;P[Gn]=P[Ln]=P[Hn]=P[Fn]=P[Yn]=P[$n]=P[_n]=P[jn]=P[Nn]=P[Vn]=P[Bn]=P[zn]=P[Un]=P[qn]=P[Qn]=!1;function oi(e){return Fe(e)&&Pn(e.length)&&!!P[le(e)]}var ai=oi;function si(e){return function(t){return e(t)}}var li=si,Dt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,oe=Dt&&typeof module=="object"&&module&&!module.nodeType&&module,ui=oe&&oe.exports===Dt,De=ui&&xt.process,di=function(){try{var e=oe&&oe.require&&oe.require("util").types;return e||De&&De.binding&&De.binding("util")}catch{}}(),mt=di,ft=mt&&mt.isTypedArray,$s=ft?li(ft):ai;var ci=Object.prototype,_s=ci.hasOwnProperty;function pi(e,t){return function(r){return e(t(r))}}var gi=pi,js=gi(Object.keys,Object);var mi=Object.prototype,Ns=mi.hasOwnProperty;var fi=W(Object,"create"),ae=fi;function yi(){this.__data__=ae?ae(null):{},this.size=0}var bi=yi;function hi(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Ii=hi,vi="__lodash_hash_undefined__",wi=Object.prototype,ki=wi.hasOwnProperty;function Oi(e){var t=this.__data__;if(ae){var r=t[e];return r===vi?void 0:r}return ki.call(t,e)?t[e]:void 0}var Si=Oi,Ci=Object.prototype,xi=Ci.hasOwnProperty;function Ai(e){var t=this.__data__;return ae?t[e]!==void 0:xi.call(t,e)}var Ei=Ai,Pi="__lodash_hash_undefined__";function Ri(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ae&&t===void 0?Pi:t,this}var Di=Ri;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}J.prototype.clear=bi;J.prototype.delete=Ii;J.prototype.get=Si;J.prototype.has=Ei;J.prototype.set=Di;var yt=J;function Mi(){this.__data__=[],this.size=0}var Ki=Mi;function Ti(e,t){for(var r=e.length;r--;)if(xn(e[r][0],t))return r;return-1}var Ie=Ti,Gi=Array.prototype,Li=Gi.splice;function Fi(e){var t=this.__data__,r=Ie(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Li.call(t,r,1),--this.size,!0}var $i=Fi;function _i(e){var t=this.__data__,r=Ie(t,e);return r<0?void 0:t[r][1]}var ji=_i;function Ni(e){return Ie(this.__data__,e)>-1}var Vi=Ni;function Bi(e,t){var r=this.__data__,n=Ie(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var zi=Bi;function X(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}X.prototype.clear=Ki;X.prototype.delete=$i;X.prototype.get=ji;X.prototype.has=Vi;X.prototype.set=zi;var ve=X,Ui=W($,"Map"),se=Ui;function qi(){this.size=0,this.__data__={hash:new yt,map:new(se||ve),string:new yt}}var Qi=qi;function Hi(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Yi=Hi;function Zi(e,t){var r=e.__data__;return Yi(t)?r[typeof t=="string"?"string":"hash"]:r.map}var we=Zi;function Wi(e){var t=we(this,e).delete(e);return this.size-=t?1:0,t}var Ji=Wi;function Xi(e){return we(this,e).get(e)}var eo=Xi;function to(e){return we(this,e).has(e)}var ro=to;function no(e,t){var r=we(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var io=no;function ee(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ee.prototype.clear=Qi;ee.prototype.delete=Ji;ee.prototype.get=eo;ee.prototype.has=ro;ee.prototype.set=io;var Mt=ee;function oo(){this.__data__=new ve,this.size=0}var ao=oo;function so(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var lo=so;function uo(e){return this.__data__.get(e)}var co=uo;function po(e){return this.__data__.has(e)}var go=po,mo=200;function fo(e,t){var r=this.__data__;if(r instanceof ve){var n=r.__data__;if(!se||n.length<mo-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Mt(n)}return r.set(e,t),this.size=r.size,this}var yo=fo;function ue(e){var t=this.__data__=new ve(e);this.size=t.size}ue.prototype.clear=ao;ue.prototype.delete=lo;ue.prototype.get=co;ue.prototype.has=go;ue.prototype.set=yo;var bo=Object.prototype,Vs=bo.propertyIsEnumerable;var ho=W($,"DataView"),Ke=ho,Io=W($,"Promise"),Te=Io,vo=W($,"Set"),Ge=vo,bt="[object Map]",wo="[object Object]",ht="[object Promise]",It="[object Set]",vt="[object WeakMap]",wt="[object DataView]",ko=V(Ke),Oo=V(se),So=V(Te),Co=V(Ge),xo=V(Me),H=le;(Ke&&H(new Ke(new ArrayBuffer(1)))!=wt||se&&H(new se)!=bt||Te&&H(Te.resolve())!=ht||Ge&&H(new Ge)!=It||Me&&H(new Me)!=vt)&&(H=function(e){var t=le(e),r=t==wo?e.constructor:void 0,n=r?V(r):"";if(n)switch(n){case ko:return wt;case Oo:return bt;case So:return ht;case Co:return It;case xo:return vt}return t});var Bs=$.Uint8Array;var Ao="__lodash_hash_undefined__";function Eo(e){return this.__data__.set(e,Ao),this}var Po=Eo;function Ro(e){return this.__data__.has(e)}var Do=Ro;function Le(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Mt;++t<r;)this.add(e[t])}Le.prototype.add=Le.prototype.push=Po;Le.prototype.has=Do;var kt=Z?Z.prototype:void 0,zs=kt?kt.valueOf:void 0;var Mo=Object.prototype,Us=Mo.hasOwnProperty;var Ko=Object.prototype,qs=Ko.hasOwnProperty;var Qs=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),Hs=new RegExp(/[A-Fa-f0-9]{1}/,"g"),Ys=new RegExp(/[A-Fa-f0-9]{2}/,"g");async function Kt(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),i=t.editor.getBufferData(e,0,n),o=new Uint8Array(i),a=new Blob([o],{type:r});return URL.createObjectURL(a)}else return e}async function de(e,t){let r=await Kt(e,t);return new Promise((n,i)=>{let o=new Image;o.onload=()=>{n({width:o.width,height:o.height})},o.onerror=i,o.src=r})}function Tt(e,t){if(!t.block.isValid(e))return[];if(!t.block.supportsFill(e))return[];let r=t.block.getFill(e);return!t.block.isValid(r)||t.block.getType(r)!=="//ly.img.ubq/fill/image"?[]:[...t.block.getSourceSet(r,"fill/image/sourceSet").map(n=>n.uri),t.block.getString(r,"fill/image/imageFileURI")].filter(n=>n!=null&&n!==""&&!n.startsWith("buffer:"))}async function Gt(e,t,r){let n,i=t.block.getFill(e),o=t.block.getSourceSet(i,"fill/image/sourceSet"),[a]=o;if(a==null){if(n=t.block.getString(i,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=a.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return Kt(n,t)}function To(e){return e!==void 0}var _=To;function $e(e){return e?.version?e.version.localeCompare("1.59.0",void 0,{numeric:!0,sensitivity:"base"})>=0&&typeof e.i18n?.translate=="function":!1}function _e(e){return typeof e?.translate=="function"}function je(e,t,r){return e&&$e(e)&&_e(e.i18n)?e.i18n.translate(t):r}function L(e,t){let r=t?.i18n?.getLocale?.()||"en";return{engine:e,cesdk:t,locale:r}}var Ne=class{constructor(){this.cache=null}getContext(t,r){return this.cache||(this.cache=L(t,r)),this.cache}clear(){this.cache=null}};function F(e,t,r,n,i){if(t?.default!==void 0){let o=t.default;return typeof o!="function"?o:o(r)}return n!==void 0?n:i}function Go(e,t){let r={};for(let n of e){let i=F(n.id,n.config,t,n.schemaDefault,n.fallback);i!==void 0&&(r[n.id]=i)}return r}function T(e,t){if(typeof e.i18n?.getTranslations!="function"){e.i18n.setTranslations(t);return}let r=Object.keys(t),n=e.i18n.getTranslations(r),i={};for(let o of r){let a=t[o];if(!a)continue;let s=n[o]??{},c={};for(let[u,l]of Object.entries(a))!(u in s)&&l!==void 0&&(c[u]=l);Object.keys(c).length>0&&(i[o]=c)}Object.keys(i).length>0&&e.i18n.setTranslations(i)}function Lo(e,t,r="style",n="image"){return(i,o)=>{if(!$e(e))return o;let a=Lt(t,r,i,n);if(_e(e.i18n)){let s=e.i18n.translate(a);return s!==a[a.length-1]?s:o}return o}}function Lt(e,t,r,n="image"){return[`ly.img.plugin-ai-${n}-generation-web.${e}.property.${t}.${r}`,`ly.img.plugin-ai-generation-web.property.${t}.${r}`,`ly.img.plugin-ai-${n}-generation-web.${e}.defaults.property.${t}.${r}`,`ly.img.plugin-ai-generation-web.defaults.property.${t}.${r}`]}function Fo(e,t){let{cesdk:r}=t,n=t.propertyKey??"image_url",i=t.promptPropertyKey??"prompt",o=ze(e);T(r,{en:{[`panel.${o}`]:"Select Image To Change","ly.img.ai.imageSelection.selectImage.label":"Select Image","ly.img.ai.imageSelection.error.svg":"SVG images are not supported. Please choose a different image.","ly.img.ai.imageSelection.error.invalidType":"Only images are supported. Found '{mimeType}'. Please choose a different image.","ly.img.ai.prompt.referenceImage":"Reference image","ly.img.ai.prompt.attachSelectedImage":"Use the image selected on the canvas","ly.img.ai.prompt.images":"Reference images","ly.img.ai.prompt.addImage":"Add image","ly.img.ai.prompt.removeImage":"Remove image"}}),jo(e,r);let a=`${e}.${n}`,s={stateId:a,maxCount:1,isList:!1};return Ue().set(e,s),{[n]:(u,l)=>{let d=u.experimental.global(a,Ft(u,l.id,t)),p=ce(d.value);return()=>Be(l.schema)?{id:l.id,type:"array",value:p,required:!0}:{id:l.id,type:"string",value:p[0]??"",required:!0}},[i]:(u,l)=>{let{builder:d,engine:p,experimental:{global:g}}=u,f=u.kind??"image",h=u.properties?.find(({id:k})=>k===n),b=u.properties==null||h!=null,m=$o(h?.schema),y=Be(h?.schema);s.maxCount=m,s.isList=y;let v=g(`${e}.${l.id}`,$t(u,l.id,l.schema?.default)??""),w=g(a,Ft(u,n,t)),C=k=>{let x=ce(w.value);x.includes(k)||w.setValue(Ve([...x,k].slice(-m),y))},I=k=>w.setValue(Ve(ce(w.value).filter(x=>x!==k),y));return d.PromptInput(`${e}.${l.id}`,{inputLabel:G(e,f,l.id),placeholder:G(e,f,l.id,"placeholder"),...v,attachments:b?{items:_o(p,ce(w.value),{maxCount:m,attach:C,detach:I}),label:"ly.img.ai.prompt.images",addLabel:"ly.img.ai.prompt.addImage",maxCount:m,addIcon:"@imgly/ImageAdd",onAdd:()=>{r.ui.openPanel(o,{payload:{onSelect:k=>{k.meta?.uri!=null&&C(k.meta.uri)}}})}}:void 0}),()=>({id:l.id,type:"string",value:v.value})}}}function ce(e){return Array.isArray(e)?e:e?[e]:[]}function Ve(e,t){return t?e:e[0]??""}function Be(e){return e?.type==="array"}function $o(e){return Be(e)?e?.maxItems??1:1}function _o(e,t,{maxCount:r,attach:n,detach:i}){let o=e.block.findAllSelected().map(l=>Tt(l,e)).filter(l=>l.length>0),a=o.flat(),s=t.map(l=>({id:l,thumbnailUri:l,label:"ly.img.ai.prompt.referenceImage",isHighlighted:a.includes(l),removeLabel:"ly.img.ai.prompt.removeImage",onRemove:()=>i(l)})),c=o.filter(l=>!l.some(d=>t.includes(d))).map(([l])=>l),u=[...new Set(c)].slice(0,Math.max(r-t.length,0)).map(l=>({id:l,thumbnailUri:l,label:"ly.img.ai.prompt.attachSelectedImage",isSuggested:!0,onClick:()=>n(l)}));return[...s,...u]}function Ft(e,t,r){return $t(e,t)??e.payload?.url??r.defaultUrl??""}function $t(e,t,r){let n=e.providerConfig?.properties?.[t]??e.config?.properties?.[t];return F(t,n,L(e.engine),r)}function jo(e,t){t?.ui.registerPanel(ze(e),({builder:r,payload:n})=>{r.Library(`${e}.library.image`,{entries:["ly.img.image"],onSelect:async i=>{let o=i?.meta?.uri;if(o==null)return;let a=await t.engine.editor.getMimeType(o);a==="image/svg+xml"?t.ui.showNotification({type:"warning",message:"ly.img.ai.imageSelection.error.svg"}):a.startsWith("image/")?(n?.onSelect(i),t?.ui.closePanel(ze(e))):t.ui.showNotification({type:"warning",message:"ly.img.ai.imageSelection.error.invalidType"})}})})}function ze(e){return`ly.img.ai.${e}.imageSelection`}function Ue(){let e="__imgly_ai_prompt_image_entries__",t=typeof window<"u"?window:globalThis;return t[e]==null&&(t[e]=new Map),t[e]}function _t(e,t){return ce(e.ui.experimental.getGlobalStateValue(t.stateId))}function No(e,t){let r=Ue().get(t);return r==null?!1:_t(e,r).length<r.maxCount}function Vo(e,t,r){let n=Ue().get(t);if(n==null)return!1;let i=_t(e,n);return i.includes(r)?!0:i.length>=n.maxCount?!1:(e.ui.experimental.setGlobalStateValue(n.stateId,Ve([...i,r],n.isList)),!0)}var jt=Fo;function Bo(e,t){let{cesdk:r}=t;if(r==null)return{};let n=t.propertyKey??"style",i=Uo(e);T(r,{en:{[`panel.${i}`]:"Select Style",[`${e}.${n}`]:"Style","ly.img.ai.styleTransfer.none":"None","ly.img.ai.styleTransfer.anime":"Anime","ly.img.ai.styleTransfer.cyberpunk":"Cyberpunk","ly.img.ai.styleTransfer.kodak400":"Kodak 400","ly.img.ai.styleTransfer.watercolor":"Watercolor","ly.img.ai.styleTransfer.darkFantasy":"Dark Fantasy","ly.img.ai.styleTransfer.vaporwave":"Vaporwave","ly.img.ai.styleTransfer.vectorFlat":"Vector Flat","ly.img.ai.styleTransfer.3dAnimation":"3D Animation","ly.img.ai.styleTransfer.ukiyoe":"Ukiyo\u2011e","ly.img.ai.styleTransfer.surreal":"Surreal","ly.img.ai.styleTransfer.steampunk":"Steampunk","ly.img.ai.styleTransfer.nightBokeh":"Night Bokeh","ly.img.ai.styleTransfer.popArt":"Pop Art"}});let o=Qo({baseURL:t.baseURL??"https://cdn.img.ly/assets/plugins/plugin-ai-image-generation-web/v1/gpt-image-1/",includeNone:!0,cesdk:r}),a=o;t.styles!=null&&(Array.isArray(t.styles)?a=t.styles:typeof t.styles=="function"&&(a=t.styles(o)));let s=Ho({cesdk:r,providerId:e,styles:a}),c=s.id;return Yo(s,{cesdk:r}),zo({providerId:e,cesdk:r,panelId:i,entryId:c}),{[t.propertyKeyForPrompt??"prompt"]:(l,d)=>{let p=l.state("prompt","");return l.builder.PromptInput(`${d.id}`,{inputLabel:t.i18n?.prompt?.inputLabel??t.propertyKeyForPrompt??"prompt",placeholder:t.i18n?.prompt?.placeholder,...p}),()=>{let[g]=s.getActiveAssetIds(),f=s.getAsset(g);return{id:d.id,type:"string",value:f?.meta?.prompt==null?p.value:`${p.value}; ${f.meta.prompt}`}}},[n]:(l,d)=>{let{builder:p,state:g}=l;if(a.length>0){let f=g("style",a[0]);return p.Button(`${d.id}`,{inputLabel:`${e}.${d.id}`,icon:"@imgly/Appearance",isDisabled:a.length===0,trailingIcon:"@imgly/ChevronRight",label:f.value.label,labelAlignment:"left",onClick:()=>{let h={onSelect:async b=>{s.clearActiveAssets(),s.setAssetActive(b.id),f.setValue({id:b.id,label:b.label??b.id}),r.ui.closePanel(i)}};r.ui.openPanel(i,{payload:h})}}),()=>({id:d.id,type:"string",value:f.value.id})}return()=>({id:d.id,type:"string",value:"none"})}}}function zo(e){let{providerId:t,cesdk:r,panelId:n,entryId:i}=e;r?.ui.registerPanel(n,({builder:o,payload:a})=>{a?.onSelect==null&&o.Section(`${t}.error`,{children:()=>{o.Text("error",{content:"No onSelect function provided for the style selection panel."})}}),o.Library(`${t}.library.image`,{entries:[i],onSelect:async s=>{a?.onSelect?.(s)}})})}function Uo(e){return`ly.img.ai.${e}.styleSelection`}var qo=[{id:"none",labelKey:"ly.img.ai.styleTransfer.none",prompt:""},{id:"anime-celshaded",labelKey:"ly.img.ai.styleTransfer.anime",prompt:"anime cel\u2011shaded, bright pastel palette, expressive eyes, clean line art "},{id:"cyberpunk-neon",labelKey:"ly.img.ai.styleTransfer.cyberpunk",prompt:"cyberpunk cityscape, glowing neon signage, reflective puddles, dark atmosphere"},{id:"kodak-portra-400",labelKey:"ly.img.ai.styleTransfer.kodak400",prompt:"shot on Kodak Portra 400, soft grain, golden\u2011hour warmth, 35 mm photo"},{id:"watercolor-storybook",labelKey:"ly.img.ai.styleTransfer.watercolor",prompt:"loose watercolor washes, gentle gradients, dreamy storybook feel"},{id:"dark-fantasy-realism",labelKey:"ly.img.ai.styleTransfer.darkFantasy",prompt:"dark fantasy realm, moody chiaroscuro lighting, hyper\u2011real textures"},{id:"vaporwave-retrofuturism",labelKey:"ly.img.ai.styleTransfer.vaporwave",prompt:"retro\u2011futuristic vaporwave, pastel sunset gradient, chrome text, VHS scanlines"},{id:"minimal-vector-flat",labelKey:"ly.img.ai.styleTransfer.vectorFlat",prompt:"minimalist flat vector illustration, bold geometry, two\u2011tone palette"},{id:"pixarstyle-3d-render",labelKey:"ly.img.ai.styleTransfer.3dAnimation",prompt:"Pixar\u2011style 3D render, oversized eyes, subtle subsurface scattering, cinematic lighting"},{id:"ukiyoe-woodblock",labelKey:"ly.img.ai.styleTransfer.ukiyoe",prompt:"ukiyo\u2011e woodblock print, Edo\u2011period style, visible washi texture, limited color ink"},{id:"surreal-dreamscape",labelKey:"ly.img.ai.styleTransfer.surreal",prompt:"surreal dreamscape, floating objects, impossible architecture, vivid clouds"},{id:"steampunk-victorian",labelKey:"ly.img.ai.styleTransfer.steampunk",prompt:"Victorian steampunk world, ornate brass gears, leather attire, atmospheric fog"},{id:"nightstreet-photo-bokeh",labelKey:"ly.img.ai.styleTransfer.nightBokeh",prompt:"night\u2011time street shot, large aperture bokeh lights, candid urban mood"},{id:"comicbook-pop-art",labelKey:"ly.img.ai.styleTransfer.popArt",prompt:"classic comic\u2011book panel, halftone shading, exaggerated action lines, CMYK pop colors"}];function Qo(e){return qo.map(t=>t.id==="none"?e.includeNone?{id:t.id,label:je(e.cesdk,t.labelKey,t.labelKey),prompt:t.prompt,thumbUri:`${e.baseURL}thumbnails/None.svg`}:void 0:{id:t.id,label:je(e.cesdk,t.labelKey,t.labelKey),prompt:t.prompt,thumbUri:`${e.baseURL}thumbnails/${t.id}.jpeg`}).filter(_)}var Ho=e=>{let t=e.styles.map(a=>({...a,meta:{prompt:a.prompt}})),r=e.cesdk.engine.asset.findAllSources(),n=`${e.providerId}/styles`;for(;r.includes(n);)n+=`-${Math.random().toString(36).substring(2,5)}`;let i=new Ot(n,t),o=e.styles[0];return i.setAssetActive(o.id),i},Yo=(e,t)=>{t.cesdk.engine.asset.addSource(e),t.cesdk.ui.addAssetLibraryEntry({id:e.id,sourceIds:[e.id],gridItemHeight:"square",gridBackgroundType:"cover",cardLabel:({label:r})=>r,cardLabelPosition:()=>"below"})},Nt=Bo;function Zo(e,t,r){let n=`ly.img.${e}`,i=r.ui.getAssetLibraryEntry(n);if(i!=null){let o=typeof i.sourceIds=="function"?i.sourceIds({cesdk:r,engine:r.engine}):i.sourceIds;return r.ui.updateAssetLibraryEntry(n,{sourceIds:[...o,...t]}),i.id}}var Wo=Zo;var B=class e{constructor(){this.actions=new Map;this.subscribers=new Map}static get(){let t="__imgly_action_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new e),r[t]}register(t){return this.actions.set(t.id,t),this.notifySubscribers(t,"registered"),()=>{this.actions.get(t.id)===t&&(this.actions.delete(t.id),this.notifySubscribers(t,"unregistered"))}}getAll(){return Array.from(this.actions.values())}getBy(t){return this.getAll().filter(n=>this.matchesFilters(n,t))}subscribe(t){return this.subscribers.set(t,null),()=>{this.subscribers.delete(t)}}subscribeBy(t,r){return this.subscribers.set(r,t),()=>{this.subscribers.delete(r)}}notifySubscribers(t,r){this.subscribers.forEach((n,i)=>{if(n===null){i(t,r);return}this.matchesFilters(t,n)&&i(t,r)})}matchesFilters(t,r){return!(r.type&&t.type!==r.type||r.pluginId&&t.type==="plugin"&&t.pluginId!==r.pluginId||r.id&&t.id!==r.id||r.kind&&(t.type!=="quick"||t.kind!==r.kind))}};var z=class e{constructor(){this.providers=new Map}static get(){let t="__imgly_provider_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new e),r[t]}register(t){return this.providers.has(t.provider.id)&&console.warn(`Provider with ID "${t.provider.id}" is already registered`),this.providers.set(t.provider.id,t),()=>{this.providers.get(t.provider.id)===t&&this.providers.delete(t.provider.id)}}getAll(){return Array.from(this.providers.values())}getById(t){return this.providers.get(t)}getByKind(t){return this.getAll().filter(({provider:r})=>r.kind===t)}};function qe(e){let t=e.filter(r=>!!r);return r=>async(n,i)=>{let o=[],a=d=>{o.push(d)},s=async(d,p,g)=>{if(d>=t.length)return r(p,g);let f=t[d],h=async(m,y)=>s(d+1,m,y),b={...g,addDisposer:a};return f(p,b,h)},c={...i,addDisposer:a};return{result:await s(0,n,c),dispose:async()=>{for(let d=o.length-1;d>=0;d--)try{await o[d]()}catch(p){console.error("Error in disposer:",p)}o.length=0}}}}function Jo({enable:e=!0}){return async(r,n,i)=>{if(!e)return i(r,n);console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(r,null,2));let o,a=Date.now();try{return o=await i(r,n),o}finally{o!=null&&(console.log(`Generation took ${Date.now()-a}ms`),console.log("Generation result:",JSON.stringify(o,null,2))),console.groupEnd()}}}var Qe=Jo;var Xo="ly.img.ai",He="ly.img.ai.temp";async function Vt(e,t){return e.engine.asset.findAllSources().includes(He)||e.engine.asset.addLocalSource(He),e.engine.asset.apply(He,t)}function ea(e){return`${Xo}.${e}`}function Bt(e,t="We encountered an unknown error while generating the asset. Please try again."){if(e===null)return t;if(e instanceof Error)return e.message;if(typeof e=="object"){let r=e;return"message"in r&&typeof r.message=="string"?r.message:"cause"in r&&typeof r.cause=="string"?r.cause:"detail"in r&&typeof r.detail=="object"&&r.detail!==null&&"message"in r.detail&&typeof r.detail.message=="string"?r.detail.message:"error"in r&&typeof r.error=="object"&&r.error!==null&&"message"in r.error&&typeof r.error.message=="string"?r.error.message:t}return typeof e=="string"?e:String(e)||t}function Ye(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function ta(e){return new Promise((t,r)=>{try{let n=document.createElement("video");n.style.display="none",n.addEventListener("loadedmetadata",()=>{n.duration===1/0?(n.currentTime=1e101,setTimeout(()=>{n.currentTime=0,t(n.duration),document.body.removeChild(n)},50)):(t(n.duration),document.body.removeChild(n))}),n.addEventListener("error",()=>{document.body.removeChild(n),r(new Error(`Failed to load video from ${e}`))}),n.src=e,document.body.appendChild(n)}catch(n){r(n)}})}function Ze(e,t=0,r="image/jpeg",n=.8){return new Promise((i,o)=>{try{let a=document.createElement("video");a.crossOrigin="anonymous",a.style.display="none",a.addEventListener("loadedmetadata",()=>{a.currentTime=Math.min(t,a.duration),a.addEventListener("seeked",()=>{let s=document.createElement("canvas");s.width=a.videoWidth,s.height=a.videoHeight;let c=s.getContext("2d");if(!c){document.body.removeChild(a),o(new Error("Failed to create canvas context"));return}c.drawImage(a,0,0,s.width,s.height);try{let u=s.toDataURL(r,n);document.body.removeChild(a),i(u)}catch(u){document.body.removeChild(a),o(new Error(`Failed to create thumbnail: ${u instanceof Error?u.message:String(u)}`))}},{once:!0})}),a.addEventListener("error",()=>{document.body.removeChild(a),o(new Error(`Failed to load video from ${e}`))}),a.src=e,document.body.appendChild(a)}catch(a){o(a)}})}function ra(e){return e?e.replace(/[_-]/g," ").replace(/([A-Z])/g," $1").trim().split(" ").filter(t=>t.length>0).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" "):""}function pe(e){return typeof e=="object"&&e!==null&&"next"in e&&"return"in e&&"throw"in e&&typeof e.next=="function"&&typeof e.return=="function"&&typeof e.throw=="function"&&Symbol.asyncIterator in e&&typeof e[Symbol.asyncIterator]=="function"}function te(e){return e instanceof Error&&e.name==="AbortError"}function We(e,t,r){let n=`${t}.iconSetAdded`;e.ui.experimental.hasGlobalStateValue(n)||(e.ui.addIconSet(t,r),e.ui.experimental.setGlobalStateValue(n,!0))}function na(e){return`${e.replace(/\/+$/,"")}/`}function ia(e){return async(r,n,i)=>{let o=await i(r,n);return pe(o)?o:await e(o)}}var oa=ia;function Je(e,t){let r={...e};if(!t)return r;for(let[n,i]of Object.entries(t))i===!1||i===null||i===void 0?delete r[n]:i===!0?n in e||(r[n]=!0):r[n]=i;return r}var Xe=new Map,ke=class{constructor(t,r,n){this.db=null;this.dbVersion=1;this.isInitializing=!1;this.initPromise=null;this.instanceId=t,this.dbName=r??"ly.img.ai.rateLimit",this.storeName=n??"rateLimits"}async initialize(){if(!this.db)return this.isInitializing?this.initPromise:(this.isInitializing=!0,this.initPromise=new Promise((t,r)=>{try{let n=indexedDB.open(this.dbName,this.dbVersion);n.onerror=i=>{this.isInitializing=!1,console.error("Failed to open IndexedDB for rate limiting:",i),r(new Error("Failed to open IndexedDB for rate limiting"))},n.onupgradeneeded=i=>{let o=i.target.result;o.objectStoreNames.contains(this.storeName)||o.createObjectStore(this.storeName,{keyPath:"id"})},n.onsuccess=i=>{this.db=i.target.result,this.isInitializing=!1,t()}}catch(n){this.isInitializing=!1,console.error("Error initializing IndexedDB:",n),r(n)}}),this.initPromise)}async getTracker(t){try{await this.initialize();let n=`${typeof this.instanceId=="symbol"?this.instanceId.description||"":this.instanceId}_${t}`;return await new Promise((i,o)=>{let c=this.db.transaction(this.storeName,"readonly").objectStore(this.storeName).get(n);c.onsuccess=()=>{c.result?i(c.result.data):i(null)},c.onerror=()=>{console.error(`Failed to get tracker for key ${n}:`,c.error),o(c.error)}})}catch(r){return console.error("Error getting tracker from IndexedDB:",r),Promise.reject(r)}}async saveTracker(t,r){try{await this.initialize();let i=`${typeof this.instanceId=="symbol"?this.instanceId.description||"":this.instanceId}_${t}`;return await new Promise((o,a)=>{let s=this.db.transaction(this.storeName,"readwrite");s.objectStore(this.storeName).put({id:i,data:r}),s.oncomplete=()=>{o()},s.onerror=()=>{console.error(`Failed to save tracker for key ${i}:`,s.error),a(s.error)}})}catch(n){return console.error("Error saving tracker to IndexedDB:",n),Promise.reject(n)}}static isAvailable(){return typeof indexedDB<"u"}close(){this.db&&(this.db.close(),this.db=null)}};function aa(e){let{maxRequests:t,timeWindowMs:r,keyFn:n=()=>"global",onRateLimitExceeded:i,dbName:o}=e,s=`rate-limit-middleware-${t}-${r}`,c=ke.isAvailable(),u=c?new ke(s,o):null;Xe.has(s)||Xe.set(s,{});let l=Xe.get(s);return async(p,g,f)=>{if(typeof e.disable=="function"?e.disable():e.disable)return f(p,g);let h=typeof n=="string"?n:n(p,g),b=Date.now(),m;if(c&&u)try{let y=await u.getTracker(h);y?m=y:m={timestamps:[],lastCleanup:b}}catch(y){console.error("IndexedDB access failed, using in-memory fallback:",y),l[h]||(l[h]={timestamps:[],lastCleanup:b}),m=l[h]}else l[h]||(l[h]={timestamps:[],lastCleanup:b}),m=l[h];if(b-m.lastCleanup>r&&(m.timestamps=m.timestamps.filter(y=>b-y<r),m.lastCleanup=b),m.timestamps.length>=t){let y=Math.min(...m.timestamps),v=Math.max(0,r-(b-y));if(i){let w={key:h,currentCount:m.timestamps.length,maxRequests:t,timeWindowMs:r,remainingTimeMs:v};if(!await i(p,g,w))throw new DOMException("Operation aborted: Rate limit exceeded","AbortError")}else throw new Error("Rate limit exceeded. Please try again later.")}if(m.timestamps.push(b),c&&u)try{await u.saveTracker(h,m)}catch(y){console.error("Failed to save tracker to IndexedDB:",y),l[h]=m}else l[h]=m;return f(p,g)}}var sa=aa;function la(e,t,r){let n="ai-plugin-version",i="ai-plugin-version-warning-shown";try{let o=e.ui.experimental.getGlobalStateValue(n);o?o!==r&&(e.ui.experimental.getGlobalStateValue(i,!1)||(console.warn(`[IMG.LY AI Plugins] Version mismatch detected!
|
|
1
|
+
function Tr(e,t,r,n){let i=`property.${r}${n?`.${n}`:""}`,o=[`ly.img.plugin-ai-${t}-generation-web.${e}.${i}`,`ly.img.plugin-ai-generation-web.${i}`,`ly.img.plugin-ai-${t}-generation-web.${e}.defaults.${i}`,`ly.img.plugin-ai-generation-web.defaults.${i}`];return n==="placeholder"&&o.push("ly.img.plugin-ai-generation-web.fallback.property.placeholder"),o}var G=Tr;var Ot=class{constructor(e,t=[],r){this.id=e,this.translateLabel=r?.translateLabel,this.assets=t.map(n=>{if(typeof n.label=="string"&&!(n.label&&typeof n.label=="object")){let i=n;return{id:i.id,label:{en:i.label},meta:i.thumbUri?{...i.meta??{},thumbUri:i.thumbUri}:i.meta}}return n}),this.activeAssetIds=new Set,this.assets.length>0&&this.activeAssetIds.add(this.assets[0].id)}async findAssets(e){let{page:t,perPage:r,locale:n="en",sortActiveFirst:i,query:o,tags:a,groups:s,excludeGroups:c,sortingOrder:u,sortKey:l}=e,d=[...this.assets];if(s&&s.length>0&&(d=d.filter(m=>m.groups&&s.some(y=>m.groups?.includes(y)))),c&&c.length>0&&(d=d.filter(m=>!m.groups||!c.some(y=>m.groups?.includes(y)))),o){let m=o.toLowerCase();d=d.filter(y=>{let v=y.label?.[n]?.toLowerCase(),w=y.tags?.[n]||[];return v&&v.includes(m)||w.some(C=>C.toLowerCase().includes(m))})}if(a&&a.length>0){let m=Array.isArray(a)?a:[a];d=d.filter(y=>{let v=y.tags?.[n]||[];return m.some(w=>v.includes(w))})}i&&d.sort((m,y)=>{let v=this.activeAssetIds.has(m.id),w=this.activeAssetIds.has(y.id);return v&&!w?-1:!v&&w?1:0}),l&&l!=="id"?d.sort((m,y)=>{let v=m.meta?.[l],w=y.meta?.[l];return v===void 0?1:w===void 0?-1:typeof v=="string"&&typeof w=="string"?u==="Descending"?w.localeCompare(v):v.localeCompare(w):typeof v=="number"&&typeof w=="number"?u==="Descending"?w-v:v-w:0}):l==="id"&&d.sort((m,y)=>u==="Descending"?y.id.localeCompare(m.id):m.id.localeCompare(y.id));let p=d.length,g=t*r,f=g+r,h=d.slice(g,f).map(m=>{let y=m.label?.[n]||"",v=this.translateLabel?this.translateLabel(m.id,y,n):y;return{id:m.id,groups:m.groups,meta:m.meta,payload:m.payload,locale:n,label:v,tags:m.tags?.[n],active:this.activeAssetIds.has(m.id)}}),b=f<p?t+1:void 0;return{assets:h,currentPage:t,nextPage:b,total:p}}updateLabel(e,t,r){this.assets.forEach(n=>{n.id===e&&(n.label=n.label||{},n.label[r]=t)})}getAssetSelectValue(e){let t=this.assets.find(({id:r})=>r===e);if(t){let r=this.translateLabel?this.translateLabel(t.id,t.label?.en||"",""):t.label?.en||"";return{id:t.id,label:r,thumbUri:t.meta?.thumbUri}}}getActiveSelectValue(){let e=this.getActiveAssetIds();if(e.length>0){let t=this.assets.find(({id:r})=>r===e[0]);if(t){let r=this.translateLabel?this.translateLabel(t.id,t.label?.en||"",""):t.label?.en||"";return{id:t.id,label:r,thumbUri:t.meta?.thumbUri}}}}getTranslatedLabel(e){let t=this.assets.find(({id:r})=>r===e);if(t)return this.translateLabel?this.translateLabel(t.id,t.label?.en||"",""):t.label?.en||""}getAsset(e){return this.assets.find(t=>t.id===e)}setAssetActive(e){this.activeAssetIds.add(e)}getActiveAssetIds(){return Array.from(this.activeAssetIds)}setAssetsActive(e){e.forEach(t=>this.activeAssetIds.add(t))}setAssetInactive(e){this.activeAssetIds.delete(e)}clearActiveAssets(){this.activeAssetIds.clear()}isAssetActive(e){return this.activeAssetIds.has(e)}addAsset(e){let t=this.assets.findIndex(r=>r.id===e.id);t>=0?this.assets[t]=e:this.assets.push(e)}removeAsset(e){let t=this.assets.findIndex(r=>r.id===e);t!==-1&&(this.assets.splice(t,1),this.activeAssetIds.delete(e))}async getGroups(){let e=new Set;return this.assets.forEach(t=>{t.groups&&t.groups.forEach(r=>e.add(r))}),Array.from(e)}getSupportedMimeTypes(){return["image/jpeg","image/png","image/svg+xml","image/webp","video/mp4","audio/mpeg"]}},St=class{constructor(e,t,r){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=r?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=r?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.dbVersion);r.onerror=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},r.onupgradeneeded=n=>{let i=n.target.result;i.objectStoreNames.contains(this.assetStoreName)||i.createObjectStore(this.assetStoreName,{keyPath:"id"}),i.objectStoreNames.contains(this.blobStoreName)||i.createObjectStore(this.blobStoreName,{keyPath:"id"})},r.onsuccess=n=>{this.db=n.target.result,e()}})}close(){this.db&&(this.db.close(),this.db=null)}async findAssets(e){if(await this.initialize(),!this.db)throw new Error("Database not initialized");try{let t=(await this.getAllAssets("asc")).reduce((c,u)=>{let l=e.locale??"en",d="",p=[];u.label!=null&&typeof u.label=="object"&&u.label[l]&&(d=u.label[l]),u.tags!=null&&typeof u.tags=="object"&&u.tags[l]&&(p=u.tags[l]);let g={...u,label:d,tags:p};return this.filterAsset(g,e)&&c.push(g),c},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:r,perPage:n}=e,i=r*n,o=i+n,a=t.slice(i,o),s=o<t.length?r+1:void 0;return{assets:a,currentPage:r,nextPage:s,total:t.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){if(await this.initialize(),!this.db)throw new Error("Database not initialized");return new Promise((e,t)=>{let r=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();r.onsuccess=()=>{let n=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(a=>n.add(a))});let i=[...n];e(i)},r.onerror=()=>{t(new Error(`Failed to get groups: ${r.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),r=t.objectStore(this.assetStoreName),n=new Set;Y(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let i={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.put(i),t.oncomplete=()=>{this.engine.asset.assetSourceContentsChanged(this.id)},t.onerror=()=>{console.error(`Failed to add asset: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async removeAsset(e){let t=await this.getAsset(e);return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.assetStoreName,"readwrite");r.objectStore(this.assetStoreName).delete(e),r.oncomplete=()=>{Y(t,n=>{this.removeBlob(n)}),this.engine.asset.assetSourceContentsChanged(this.id)},r.onerror=()=>{console.error(`Failed to remove asset: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async removeBlob(e){return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.blobStoreName,"readwrite");t.objectStore(this.blobStoreName).delete(e),t.onerror=()=>{console.error(`Failed to remove blob: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async getAllAssets(e="desc"){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let i=n.result;i.sort((o,a)=>{let s=o.meta?.insertedAt||o._insertedAt||Date.now(),c=a.meta?.insertedAt||a._insertedAt||Date.now();return e==="asc"?s-c:c-s}),t(i)},n.onerror=()=>{r(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async createBlobUrlFromStore(e){let t=await this.getBlob(e);return t!=null?URL.createObjectURL(t.blob):e}async storeBlobUrls(e){let t={};return await Promise.all(e.map(async r=>{let n=await(await fetch(r)).blob();t[r]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),n=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([i,o])=>{let a={id:i,blob:o};n.put(a)}),r.onerror=()=>{console.error(`Failed to add blobs: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async restoreBlobUrls(e){let t={},r=new Set;return Y(e,n=>{r.add(n)}),await Promise.all([...r].map(async n=>{let i=await this.createBlobUrlFromStore(n);t[n]=i})),Y(e,n=>t[n]??n)}filterAsset(e,t){let{query:r,tags:n,groups:i,excludeGroups:o}=t;if(r&&r.trim()!==""){let a=r.trim().toLowerCase().split(" "),s=e.label?.toLowerCase()??"",c=e.tags?.map(u=>u.toLowerCase())??[];if(!a.every(u=>s.includes(u)||c.some(l=>l.includes(u))))return!1}if(n){let a=Array.isArray(n)?n:[n];if(a.length>0&&(!e.tags||!a.every(s=>e.tags?.includes(s))))return!1}return!(i&&i.length>0&&(!e.groups||!i.some(a=>e.groups?.includes(a)))||o&&o.length>0&&e.groups&&e.groups.some(a=>o.includes(a)))}sortAssets(e,t){let{sortingOrder:r,sortKey:n,sortActiveFirst:i}=t,o=[...e];return!r||r==="None"||(n?o.sort((a,s)=>{let c,u;return n==="id"?(c=a.id,u=s.id):(c=a.meta?.[n]??null,u=s.meta?.[n]??null),c==null?r==="Ascending"?-1:1:u==null?r==="Ascending"?1:-1:typeof c=="string"&&typeof u=="string"?r==="Ascending"?c.localeCompare(u):u.localeCompare(c):r==="Ascending"?c<u?-1:c>u?1:0:c>u?-1:c<u?1:0}):r==="Descending"&&o.reverse(),i&&o.sort((a,s)=>a.active&&!s.active?-1:!a.active&&s.active?1:0)),o}};function Y(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let i=r?`${r}[${n}]`:`[${n}]`;if(typeof e[n]=="string"&&e[n].startsWith("blob:")){let o=t(e[n],i);typeof o=="string"&&(e[n]=o)}else e[n]=Y(e[n],t,i)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=r?`${r}.${n}`:n;if(typeof i=="string"&&i.startsWith("blob:")){let a=t(i,o);typeof a=="string"&&(e[n]=a)}else e[n]=Y(i,t,o)}return e}var Ct=class{constructor(e,t,r){this.id=e,this.cesdk=t,this.assetSourceIds=r}async findAssets(e){try{let t=this.assetSourceIds.map(l=>this.cesdk.engine.asset.findAssets(l,{...e,perPage:9999,page:0})),r=await Promise.all(t),n=[];r.forEach(l=>{l?.assets&&(n=n.concat(l.assets))}),n.sort((l,d)=>{let p=l.meta?.insertedAt||0;return(d.meta?.insertedAt||0)-p});let{page:i,perPage:o}=e,a=i*o,s=a+o,c=n.slice(a,s),u=s<n.length?i+1:void 0;return{assets:c,currentPage:i,nextPage:u,total:n.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){let e=this.assetSourceIds.map(n=>this.cesdk.engine.asset.getGroups(n)),t=await Promise.all(e),r=new Set;return t.forEach(n=>{n.forEach(i=>r.add(i))}),Array.from(r)}addAsset(e){throw new Error("AggregatedAssetSource does not support adding assets")}removeAsset(e){throw new Error("AggregatedAssetSource does not support removing assets")}},Gr=class{constructor(e,t){this.engine=e,this.key=t}hasData(e){return this.engine.block.isValid(e)&&this.engine.block.hasMetadata(e,this.key)}get(e){if(this.hasData(e))return JSON.parse(this.engine.block.getMetadata(e,this.key))}set(e,t){this.engine.block.setMetadata(e,this.key,JSON.stringify(t))}clear(e){this.engine.block.hasMetadata(e,this.key)&&this.engine.block.removeMetadata(e,this.key)}},he=Gr,Lr=typeof global=="object"&&global&&global.Object===Object&&global,xt=Lr,Fr=typeof self=="object"&&self&&self.Object===Object&&self,$r=xt||Fr||Function("return this")(),$=$r,_r=$.Symbol,Z=_r,At=Object.prototype,jr=At.hasOwnProperty,Nr=At.toString,ie=Z?Z.toStringTag:void 0;function Vr(e){var t=jr.call(e,ie),r=e[ie];try{e[ie]=void 0;var n=!0}catch{}var i=Nr.call(e);return n&&(t?e[ie]=r:delete e[ie]),i}var Br=Vr,zr=Object.prototype,Ur=zr.toString;function qr(e){return Ur.call(e)}var Qr=qr,Hr="[object Null]",Yr="[object Undefined]",ut=Z?Z.toStringTag:void 0;function Zr(e){return e==null?e===void 0?Yr:Hr:ut&&ut in Object(e)?Br(e):Qr(e)}var le=Zr;function Wr(e){return e!=null&&typeof e=="object"}var Le=Wr,Ts=Array.isArray;function Jr(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Et=Jr,Xr="[object AsyncFunction]",en="[object Function]",tn="[object GeneratorFunction]",rn="[object Proxy]";function nn(e){if(!Et(e))return!1;var t=le(e);return t==en||t==tn||t==Xr||t==rn}var on=nn,an=$["__core-js_shared__"],Pe=an,dt=function(){var e=/[^.]+$/.exec(Pe&&Pe.keys&&Pe.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function sn(e){return!!dt&&dt in e}var ln=sn,un=Function.prototype,dn=un.toString;function cn(e){if(e!=null){try{return dn.call(e)}catch{}try{return e+""}catch{}}return""}var V=cn,pn=/[\\^$.*+?()[\]{}|]/g,gn=/^\[object .+?Constructor\]$/,mn=Function.prototype,fn=Object.prototype,yn=mn.toString,bn=fn.hasOwnProperty,hn=RegExp("^"+yn.call(bn).replace(pn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function In(e){if(!Et(e)||ln(e))return!1;var t=on(e)?hn:gn;return t.test(V(e))}var vn=In;function wn(e,t){return e?.[t]}var kn=wn;function On(e,t){var r=kn(e,t);return vn(r)?r:void 0}var W=On,Sn=W($,"WeakMap"),De=Sn;function Cn(e,t){return e===t||e!==e&&t!==t}var xn=Cn,An=9007199254740991;function En(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=An}var Pn=En;var Gs=Object.prototype;var Rn="[object Arguments]";function Dn(e){return Le(e)&&le(e)==Rn}var ct=Dn,Pt=Object.prototype,Mn=Pt.hasOwnProperty,Kn=Pt.propertyIsEnumerable,Ls=ct(function(){return arguments}())?ct:function(e){return Le(e)&&Mn.call(e,"callee")&&!Kn.call(e,"callee")};var Rt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pt=Rt&&typeof module=="object"&&module&&!module.nodeType&&module,Tn=pt&&pt.exports===Rt,gt=Tn?$.Buffer:void 0,Fs=gt?gt.isBuffer:void 0;var Gn="[object Arguments]",Ln="[object Array]",Fn="[object Boolean]",$n="[object Date]",_n="[object Error]",jn="[object Function]",Nn="[object Map]",Vn="[object Number]",Bn="[object Object]",zn="[object RegExp]",Un="[object Set]",qn="[object String]",Qn="[object WeakMap]",Hn="[object ArrayBuffer]",Yn="[object DataView]",Zn="[object Float32Array]",Wn="[object Float64Array]",Jn="[object Int8Array]",Xn="[object Int16Array]",ei="[object Int32Array]",ti="[object Uint8Array]",ri="[object Uint8ClampedArray]",ni="[object Uint16Array]",ii="[object Uint32Array]",P={};P[Zn]=P[Wn]=P[Jn]=P[Xn]=P[ei]=P[ti]=P[ri]=P[ni]=P[ii]=!0;P[Gn]=P[Ln]=P[Hn]=P[Fn]=P[Yn]=P[$n]=P[_n]=P[jn]=P[Nn]=P[Vn]=P[Bn]=P[zn]=P[Un]=P[qn]=P[Qn]=!1;function oi(e){return Le(e)&&Pn(e.length)&&!!P[le(e)]}var ai=oi;function si(e){return function(t){return e(t)}}var li=si,Dt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,oe=Dt&&typeof module=="object"&&module&&!module.nodeType&&module,ui=oe&&oe.exports===Dt,Re=ui&&xt.process,di=function(){try{var e=oe&&oe.require&&oe.require("util").types;return e||Re&&Re.binding&&Re.binding("util")}catch{}}(),mt=di,ft=mt&&mt.isTypedArray,$s=ft?li(ft):ai;var ci=Object.prototype,_s=ci.hasOwnProperty;function pi(e,t){return function(r){return e(t(r))}}var gi=pi,js=gi(Object.keys,Object);var mi=Object.prototype,Ns=mi.hasOwnProperty;var fi=W(Object,"create"),ae=fi;function yi(){this.__data__=ae?ae(null):{},this.size=0}var bi=yi;function hi(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Ii=hi,vi="__lodash_hash_undefined__",wi=Object.prototype,ki=wi.hasOwnProperty;function Oi(e){var t=this.__data__;if(ae){var r=t[e];return r===vi?void 0:r}return ki.call(t,e)?t[e]:void 0}var Si=Oi,Ci=Object.prototype,xi=Ci.hasOwnProperty;function Ai(e){var t=this.__data__;return ae?t[e]!==void 0:xi.call(t,e)}var Ei=Ai,Pi="__lodash_hash_undefined__";function Ri(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ae&&t===void 0?Pi:t,this}var Di=Ri;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}J.prototype.clear=bi;J.prototype.delete=Ii;J.prototype.get=Si;J.prototype.has=Ei;J.prototype.set=Di;var yt=J;function Mi(){this.__data__=[],this.size=0}var Ki=Mi;function Ti(e,t){for(var r=e.length;r--;)if(xn(e[r][0],t))return r;return-1}var Ie=Ti,Gi=Array.prototype,Li=Gi.splice;function Fi(e){var t=this.__data__,r=Ie(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Li.call(t,r,1),--this.size,!0}var $i=Fi;function _i(e){var t=this.__data__,r=Ie(t,e);return r<0?void 0:t[r][1]}var ji=_i;function Ni(e){return Ie(this.__data__,e)>-1}var Vi=Ni;function Bi(e,t){var r=this.__data__,n=Ie(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var zi=Bi;function X(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}X.prototype.clear=Ki;X.prototype.delete=$i;X.prototype.get=ji;X.prototype.has=Vi;X.prototype.set=zi;var ve=X,Ui=W($,"Map"),se=Ui;function qi(){this.size=0,this.__data__={hash:new yt,map:new(se||ve),string:new yt}}var Qi=qi;function Hi(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Yi=Hi;function Zi(e,t){var r=e.__data__;return Yi(t)?r[typeof t=="string"?"string":"hash"]:r.map}var we=Zi;function Wi(e){var t=we(this,e).delete(e);return this.size-=t?1:0,t}var Ji=Wi;function Xi(e){return we(this,e).get(e)}var eo=Xi;function to(e){return we(this,e).has(e)}var ro=to;function no(e,t){var r=we(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var io=no;function ee(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ee.prototype.clear=Qi;ee.prototype.delete=Ji;ee.prototype.get=eo;ee.prototype.has=ro;ee.prototype.set=io;var Mt=ee;function oo(){this.__data__=new ve,this.size=0}var ao=oo;function so(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var lo=so;function uo(e){return this.__data__.get(e)}var co=uo;function po(e){return this.__data__.has(e)}var go=po,mo=200;function fo(e,t){var r=this.__data__;if(r instanceof ve){var n=r.__data__;if(!se||n.length<mo-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Mt(n)}return r.set(e,t),this.size=r.size,this}var yo=fo;function ue(e){var t=this.__data__=new ve(e);this.size=t.size}ue.prototype.clear=ao;ue.prototype.delete=lo;ue.prototype.get=co;ue.prototype.has=go;ue.prototype.set=yo;var bo=Object.prototype,Vs=bo.propertyIsEnumerable;var ho=W($,"DataView"),Me=ho,Io=W($,"Promise"),Ke=Io,vo=W($,"Set"),Te=vo,bt="[object Map]",wo="[object Object]",ht="[object Promise]",It="[object Set]",vt="[object WeakMap]",wt="[object DataView]",ko=V(Me),Oo=V(se),So=V(Ke),Co=V(Te),xo=V(De),H=le;(Me&&H(new Me(new ArrayBuffer(1)))!=wt||se&&H(new se)!=bt||Ke&&H(Ke.resolve())!=ht||Te&&H(new Te)!=It||De&&H(new De)!=vt)&&(H=function(e){var t=le(e),r=t==wo?e.constructor:void 0,n=r?V(r):"";if(n)switch(n){case ko:return wt;case Oo:return bt;case So:return ht;case Co:return It;case xo:return vt}return t});var Bs=$.Uint8Array;var Ao="__lodash_hash_undefined__";function Eo(e){return this.__data__.set(e,Ao),this}var Po=Eo;function Ro(e){return this.__data__.has(e)}var Do=Ro;function Ge(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Mt;++t<r;)this.add(e[t])}Ge.prototype.add=Ge.prototype.push=Po;Ge.prototype.has=Do;var kt=Z?Z.prototype:void 0,zs=kt?kt.valueOf:void 0;var Mo=Object.prototype,Us=Mo.hasOwnProperty;var Ko=Object.prototype,qs=Ko.hasOwnProperty;var Qs=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),Hs=new RegExp(/[A-Fa-f0-9]{1}/,"g"),Ys=new RegExp(/[A-Fa-f0-9]{2}/,"g");async function Kt(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),i=t.editor.getBufferData(e,0,n),o=new Uint8Array(i),a=new Blob([o],{type:r});return URL.createObjectURL(a)}else return e}async function de(e,t){let r=await Kt(e,t);return new Promise((n,i)=>{let o=new Image;o.onload=()=>{n({width:o.width,height:o.height})},o.onerror=i,o.src=r})}function Tt(e,t){if(!t.block.isValid(e))return[];if(!t.block.supportsFill(e))return[];let r=t.block.getFill(e);return!t.block.isValid(r)||t.block.getType(r)!=="//ly.img.ubq/fill/image"?[]:[...t.block.getSourceSet(r,"fill/image/sourceSet").map(n=>n.uri),t.block.getString(r,"fill/image/imageFileURI")].filter(n=>n!=null&&n!==""&&!n.startsWith("buffer:"))}async function Gt(e,t,r){let n,i=t.block.getFill(e),o=t.block.getSourceSet(i,"fill/image/sourceSet"),[a]=o;if(a==null){if(n=t.block.getString(i,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=a.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return Kt(n,t)}function To(e){return e!==void 0}var _=To;function Fe(e){return e?.version?e.version.localeCompare("1.59.0",void 0,{numeric:!0,sensitivity:"base"})>=0&&typeof e.i18n?.translate=="function":!1}function $e(e){return typeof e?.translate=="function"}function _e(e,t,r){return e&&Fe(e)&&$e(e.i18n)?e.i18n.translate(t):r}function L(e,t){let r=t?.i18n?.getLocale?.()||"en";return{engine:e,cesdk:t,locale:r}}var je=class{constructor(){this.cache=null}getContext(t,r){return this.cache||(this.cache=L(t,r)),this.cache}clear(){this.cache=null}};function F(e,t,r,n,i){if(t?.default!==void 0){let o=t.default;return typeof o!="function"?o:o(r)}return n!==void 0?n:i}function Go(e,t){let r={};for(let n of e){let i=F(n.id,n.config,t,n.schemaDefault,n.fallback);i!==void 0&&(r[n.id]=i)}return r}function T(e,t){if(typeof e.i18n?.getTranslations!="function"){e.i18n.setTranslations(t);return}let r=Object.keys(t),n=e.i18n.getTranslations(r),i={};for(let o of r){let a=t[o];if(!a)continue;let s=n[o]??{},c={};for(let[u,l]of Object.entries(a))!(u in s)&&l!==void 0&&(c[u]=l);Object.keys(c).length>0&&(i[o]=c)}Object.keys(i).length>0&&e.i18n.setTranslations(i)}function Lo(e,t,r="style",n="image"){return(i,o)=>{if(!Fe(e))return o;let a=Lt(t,r,i,n);if($e(e.i18n)){let s=e.i18n.translate(a);return s!==a[a.length-1]?s:o}return o}}function Lt(e,t,r,n="image"){return[`ly.img.plugin-ai-${n}-generation-web.${e}.property.${t}.${r}`,`ly.img.plugin-ai-generation-web.property.${t}.${r}`,`ly.img.plugin-ai-${n}-generation-web.${e}.defaults.property.${t}.${r}`,`ly.img.plugin-ai-generation-web.defaults.property.${t}.${r}`]}function Fo(e,t){let{cesdk:r}=t,n=t.propertyKey??"image_url",i=t.promptPropertyKey??"prompt",o=Be(e);T(r,{en:{[`panel.${o}`]:"Select Image To Change","ly.img.ai.imageSelection.selectImage.label":"Select Image","ly.img.ai.imageSelection.error.svg":"SVG images are not supported. Please choose a different image.","ly.img.ai.imageSelection.error.invalidType":"Only images are supported. Found '{mimeType}'. Please choose a different image.","ly.img.ai.prompt.referenceImage":"Reference image","ly.img.ai.prompt.attachSelectedImage":"Use the image selected on the canvas","ly.img.ai.prompt.images":"Reference images","ly.img.ai.prompt.addImage":"Add image","ly.img.ai.prompt.removeImage":"Remove image"}}),jo(e,r);let a=`${e}.${n}`,s={stateId:a,maxCount:1,isList:!1};return ze().set(e,s),{[n]:(u,l)=>{let d=u.experimental.global(a,Ft(u,l.id,t)),p=ce(d.value);return()=>Ve(l.schema)?{id:l.id,type:"array",value:p,required:!0}:{id:l.id,type:"string",value:p[0]??"",required:!0}},[i]:(u,l)=>{let{builder:d,engine:p,experimental:{global:g}}=u,f=u.kind??"image",h=u.properties?.find(({id:k})=>k===n),b=u.properties==null||h!=null,m=$o(h?.schema),y=Ve(h?.schema);s.maxCount=m,s.isList=y;let v=g(`${e}.${l.id}`,$t(u,l.id,l.schema?.default)??""),w=g(a,Ft(u,n,t)),C=k=>{let x=ce(w.value);x.includes(k)||w.setValue(Ne([...x,k].slice(-m),y))},I=k=>w.setValue(Ne(ce(w.value).filter(x=>x!==k),y));return d.PromptInput(`${e}.${l.id}`,{inputLabel:G(e,f,l.id),placeholder:G(e,f,l.id,"placeholder"),...v,attachments:b?{items:_o(p,ce(w.value),{maxCount:m,attach:C,detach:I}),label:"ly.img.ai.prompt.images",addLabel:"ly.img.ai.prompt.addImage",maxCount:m,addIcon:"@imgly/ImageAdd",onAdd:()=>{r.ui.openPanel(o,{payload:{onSelect:k=>{k.meta?.uri!=null&&C(k.meta.uri)}}})}}:void 0}),()=>({id:l.id,type:"string",value:v.value})}}}function ce(e){return Array.isArray(e)?e:e?[e]:[]}function Ne(e,t){return t?e:e[0]??""}function Ve(e){return e?.type==="array"}function $o(e){return Ve(e)?e?.maxItems??1:1}function _o(e,t,{maxCount:r,attach:n,detach:i}){let o=e.block.findAllSelected().map(l=>Tt(l,e)).filter(l=>l.length>0),a=o.flat(),s=t.map(l=>({id:l,thumbnailUri:l,label:"ly.img.ai.prompt.referenceImage",isHighlighted:a.includes(l),removeLabel:"ly.img.ai.prompt.removeImage",onRemove:()=>i(l)})),c=o.filter(l=>!l.some(d=>t.includes(d))).map(([l])=>l),u=[...new Set(c)].slice(0,Math.max(r-t.length,0)).map(l=>({id:l,thumbnailUri:l,label:"ly.img.ai.prompt.attachSelectedImage",isSuggested:!0,onClick:()=>n(l)}));return[...s,...u]}function Ft(e,t,r){return $t(e,t)??e.payload?.url??r.defaultUrl??""}function $t(e,t,r){let n=e.providerConfig?.properties?.[t]??e.config?.properties?.[t];return F(t,n,L(e.engine),r)}function jo(e,t){t?.ui.registerPanel(Be(e),({builder:r,payload:n})=>{r.Library(`${e}.library.image`,{entries:["ly.img.image"],onSelect:async i=>{let o=i?.meta?.uri;if(o==null)return;let a=await t.engine.editor.getMimeType(o);a==="image/svg+xml"?t.ui.showNotification({type:"warning",message:"ly.img.ai.imageSelection.error.svg"}):a.startsWith("image/")?(n?.onSelect(i),t?.ui.closePanel(Be(e))):t.ui.showNotification({type:"warning",message:"ly.img.ai.imageSelection.error.invalidType"})}})})}function Be(e){return`ly.img.ai.${e}.imageSelection`}function ze(){let e="__imgly_ai_prompt_image_entries__",t=typeof window<"u"?window:globalThis;return t[e]==null&&(t[e]=new Map),t[e]}function _t(e,t){return ce(e.ui.experimental.getGlobalStateValue(t.stateId))}function No(e,t){let r=ze().get(t);return r==null?!1:_t(e,r).length<r.maxCount}function Vo(e,t,r){let n=ze().get(t);if(n==null)return!1;let i=_t(e,n);return i.includes(r)?!0:i.length>=n.maxCount?!1:(e.ui.experimental.setGlobalStateValue(n.stateId,Ne([...i,r],n.isList)),!0)}var jt=Fo;function Bo(e,t){let{cesdk:r}=t;if(r==null)return{};let n=t.propertyKey??"style",i=Uo(e);T(r,{en:{[`panel.${i}`]:"Select Style",[`${e}.${n}`]:"Style","ly.img.ai.styleTransfer.none":"None","ly.img.ai.styleTransfer.anime":"Anime","ly.img.ai.styleTransfer.cyberpunk":"Cyberpunk","ly.img.ai.styleTransfer.kodak400":"Kodak 400","ly.img.ai.styleTransfer.watercolor":"Watercolor","ly.img.ai.styleTransfer.darkFantasy":"Dark Fantasy","ly.img.ai.styleTransfer.vaporwave":"Vaporwave","ly.img.ai.styleTransfer.vectorFlat":"Vector Flat","ly.img.ai.styleTransfer.3dAnimation":"3D Animation","ly.img.ai.styleTransfer.ukiyoe":"Ukiyo\u2011e","ly.img.ai.styleTransfer.surreal":"Surreal","ly.img.ai.styleTransfer.steampunk":"Steampunk","ly.img.ai.styleTransfer.nightBokeh":"Night Bokeh","ly.img.ai.styleTransfer.popArt":"Pop Art"}});let o=Qo({baseURL:t.baseURL??"https://cdn.img.ly/assets/plugins/plugin-ai-image-generation-web/v1/gpt-image-1/",includeNone:!0,cesdk:r}),a=o;t.styles!=null&&(Array.isArray(t.styles)?a=t.styles:typeof t.styles=="function"&&(a=t.styles(o)));let s=Ho({cesdk:r,providerId:e,styles:a}),c=s.id;return Yo(s,{cesdk:r}),zo({providerId:e,cesdk:r,panelId:i,entryId:c}),{[t.propertyKeyForPrompt??"prompt"]:(l,d)=>{let p=l.state("prompt","");return l.builder.PromptInput(`${d.id}`,{inputLabel:t.i18n?.prompt?.inputLabel??t.propertyKeyForPrompt??"prompt",placeholder:t.i18n?.prompt?.placeholder,...p}),()=>{let[g]=s.getActiveAssetIds(),f=s.getAsset(g);return{id:d.id,type:"string",value:f?.meta?.prompt==null?p.value:`${p.value}; ${f.meta.prompt}`}}},[n]:(l,d)=>{let{builder:p,state:g}=l;if(a.length>0){let f=g("style",a[0]);return p.Button(`${d.id}`,{inputLabel:`${e}.${d.id}`,icon:"@imgly/Appearance",isDisabled:a.length===0,trailingIcon:"@imgly/ChevronRight",label:f.value.label,labelAlignment:"left",onClick:()=>{let h={onSelect:async b=>{s.clearActiveAssets(),s.setAssetActive(b.id),f.setValue({id:b.id,label:b.label??b.id}),r.ui.closePanel(i)}};r.ui.openPanel(i,{payload:h})}}),()=>({id:d.id,type:"string",value:f.value.id})}return()=>({id:d.id,type:"string",value:"none"})}}}function zo(e){let{providerId:t,cesdk:r,panelId:n,entryId:i}=e;r?.ui.registerPanel(n,({builder:o,payload:a})=>{a?.onSelect==null&&o.Section(`${t}.error`,{children:()=>{o.Text("error",{content:"No onSelect function provided for the style selection panel."})}}),o.Library(`${t}.library.image`,{entries:[i],onSelect:async s=>{a?.onSelect?.(s)}})})}function Uo(e){return`ly.img.ai.${e}.styleSelection`}var qo=[{id:"none",labelKey:"ly.img.ai.styleTransfer.none",prompt:""},{id:"anime-celshaded",labelKey:"ly.img.ai.styleTransfer.anime",prompt:"anime cel\u2011shaded, bright pastel palette, expressive eyes, clean line art "},{id:"cyberpunk-neon",labelKey:"ly.img.ai.styleTransfer.cyberpunk",prompt:"cyberpunk cityscape, glowing neon signage, reflective puddles, dark atmosphere"},{id:"kodak-portra-400",labelKey:"ly.img.ai.styleTransfer.kodak400",prompt:"shot on Kodak Portra 400, soft grain, golden\u2011hour warmth, 35 mm photo"},{id:"watercolor-storybook",labelKey:"ly.img.ai.styleTransfer.watercolor",prompt:"loose watercolor washes, gentle gradients, dreamy storybook feel"},{id:"dark-fantasy-realism",labelKey:"ly.img.ai.styleTransfer.darkFantasy",prompt:"dark fantasy realm, moody chiaroscuro lighting, hyper\u2011real textures"},{id:"vaporwave-retrofuturism",labelKey:"ly.img.ai.styleTransfer.vaporwave",prompt:"retro\u2011futuristic vaporwave, pastel sunset gradient, chrome text, VHS scanlines"},{id:"minimal-vector-flat",labelKey:"ly.img.ai.styleTransfer.vectorFlat",prompt:"minimalist flat vector illustration, bold geometry, two\u2011tone palette"},{id:"pixarstyle-3d-render",labelKey:"ly.img.ai.styleTransfer.3dAnimation",prompt:"Pixar\u2011style 3D render, oversized eyes, subtle subsurface scattering, cinematic lighting"},{id:"ukiyoe-woodblock",labelKey:"ly.img.ai.styleTransfer.ukiyoe",prompt:"ukiyo\u2011e woodblock print, Edo\u2011period style, visible washi texture, limited color ink"},{id:"surreal-dreamscape",labelKey:"ly.img.ai.styleTransfer.surreal",prompt:"surreal dreamscape, floating objects, impossible architecture, vivid clouds"},{id:"steampunk-victorian",labelKey:"ly.img.ai.styleTransfer.steampunk",prompt:"Victorian steampunk world, ornate brass gears, leather attire, atmospheric fog"},{id:"nightstreet-photo-bokeh",labelKey:"ly.img.ai.styleTransfer.nightBokeh",prompt:"night\u2011time street shot, large aperture bokeh lights, candid urban mood"},{id:"comicbook-pop-art",labelKey:"ly.img.ai.styleTransfer.popArt",prompt:"classic comic\u2011book panel, halftone shading, exaggerated action lines, CMYK pop colors"}];function Qo(e){return qo.map(t=>t.id==="none"?e.includeNone?{id:t.id,label:_e(e.cesdk,t.labelKey,t.labelKey),prompt:t.prompt,thumbUri:`${e.baseURL}thumbnails/None.svg`}:void 0:{id:t.id,label:_e(e.cesdk,t.labelKey,t.labelKey),prompt:t.prompt,thumbUri:`${e.baseURL}thumbnails/${t.id}.jpeg`}).filter(_)}var Ho=e=>{let t=e.styles.map(a=>({...a,meta:{prompt:a.prompt}})),r=e.cesdk.engine.asset.findAllSources(),n=`${e.providerId}/styles`;for(;r.includes(n);)n+=`-${Math.random().toString(36).substring(2,5)}`;let i=new Ot(n,t),o=e.styles[0];return i.setAssetActive(o.id),i},Yo=(e,t)=>{t.cesdk.engine.asset.addSource(e),t.cesdk.ui.addAssetLibraryEntry({id:e.id,sourceIds:[e.id],gridItemHeight:"square",gridBackgroundType:"cover",cardLabel:({label:r})=>r,cardLabelPosition:()=>"below"})},Nt=Bo;function Zo(e,t,r){let n=`ly.img.${e}`,i=r.ui.getAssetLibraryEntry(n);if(i!=null){let o=typeof i.sourceIds=="function"?i.sourceIds({cesdk:r,engine:r.engine}):i.sourceIds;return r.ui.updateAssetLibraryEntry(n,{sourceIds:[...o,...t]}),i.id}}var Wo=Zo;var B=class e{constructor(){this.actions=new Map;this.subscribers=new Map}static get(){let t="__imgly_action_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new e),r[t]}register(t){return this.actions.set(t.id,t),this.notifySubscribers(t,"registered"),()=>{this.actions.get(t.id)===t&&(this.actions.delete(t.id),this.notifySubscribers(t,"unregistered"))}}getAll(){return Array.from(this.actions.values())}getBy(t){return this.getAll().filter(n=>this.matchesFilters(n,t))}subscribe(t){return this.subscribers.set(t,null),()=>{this.subscribers.delete(t)}}subscribeBy(t,r){return this.subscribers.set(r,t),()=>{this.subscribers.delete(r)}}notifySubscribers(t,r){this.subscribers.forEach((n,i)=>{if(n===null){i(t,r);return}this.matchesFilters(t,n)&&i(t,r)})}matchesFilters(t,r){return!(r.type&&t.type!==r.type||r.pluginId&&t.type==="plugin"&&t.pluginId!==r.pluginId||r.id&&t.id!==r.id||r.kind&&(t.type!=="quick"||t.kind!==r.kind))}};var z=class e{constructor(){this.providers=new Map}static get(){let t="__imgly_provider_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new e),r[t]}register(t){return this.providers.has(t.provider.id)&&console.warn(`Provider with ID "${t.provider.id}" is already registered`),this.providers.set(t.provider.id,t),()=>{this.providers.get(t.provider.id)===t&&this.providers.delete(t.provider.id)}}getAll(){return Array.from(this.providers.values())}getById(t){return this.providers.get(t)}getByKind(t){return this.getAll().filter(({provider:r})=>r.kind===t)}};function Ue(e){let t=e.filter(r=>!!r);return r=>async(n,i)=>{let o=[],a=d=>{o.push(d)},s=async(d,p,g)=>{if(d>=t.length)return r(p,g);let f=t[d],h=async(m,y)=>s(d+1,m,y),b={...g,addDisposer:a};return f(p,b,h)},c={...i,addDisposer:a};return{result:await s(0,n,c),dispose:async()=>{for(let d=o.length-1;d>=0;d--)try{await o[d]()}catch(p){console.error("Error in disposer:",p)}o.length=0}}}}function Jo({enable:e=!0}){return async(r,n,i)=>{if(!e)return i(r,n);console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(r,null,2));let o,a=Date.now();try{return o=await i(r,n),o}finally{o!=null&&(console.log(`Generation took ${Date.now()-a}ms`),console.log("Generation result:",JSON.stringify(o,null,2))),console.groupEnd()}}}var qe=Jo;var Xo="ly.img.ai",Qe="ly.img.ai.temp";async function Vt(e,t){return e.engine.asset.findAllSources().includes(Qe)||e.engine.asset.addLocalSource(Qe),e.engine.asset.apply(Qe,t)}function ea(e){return`${Xo}.${e}`}function Bt(e,t="We encountered an unknown error while generating the asset. Please try again."){if(e===null)return t;if(e instanceof Error)return e.message;if(typeof e=="object"){let r=e;return"message"in r&&typeof r.message=="string"?r.message:"cause"in r&&typeof r.cause=="string"?r.cause:"detail"in r&&typeof r.detail=="object"&&r.detail!==null&&"message"in r.detail&&typeof r.detail.message=="string"?r.detail.message:"error"in r&&typeof r.error=="object"&&r.error!==null&&"message"in r.error&&typeof r.error.message=="string"?r.error.message:t}return typeof e=="string"?e:String(e)||t}function He(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function ta(e){return new Promise((t,r)=>{try{let n=document.createElement("video");n.style.display="none",n.addEventListener("loadedmetadata",()=>{n.duration===1/0?(n.currentTime=1e101,setTimeout(()=>{n.currentTime=0,t(n.duration),document.body.removeChild(n)},50)):(t(n.duration),document.body.removeChild(n))}),n.addEventListener("error",()=>{document.body.removeChild(n),r(new Error(`Failed to load video from ${e}`))}),n.src=e,document.body.appendChild(n)}catch(n){r(n)}})}function Ye(e,t=0,r="image/jpeg",n=.8){return new Promise((i,o)=>{try{let a=document.createElement("video");a.crossOrigin="anonymous",a.style.display="none",a.addEventListener("loadedmetadata",()=>{a.currentTime=Math.min(t,a.duration),a.addEventListener("seeked",()=>{let s=document.createElement("canvas");s.width=a.videoWidth,s.height=a.videoHeight;let c=s.getContext("2d");if(!c){document.body.removeChild(a),o(new Error("Failed to create canvas context"));return}c.drawImage(a,0,0,s.width,s.height);try{let u=s.toDataURL(r,n);document.body.removeChild(a),i(u)}catch(u){document.body.removeChild(a),o(new Error(`Failed to create thumbnail: ${u instanceof Error?u.message:String(u)}`))}},{once:!0})}),a.addEventListener("error",()=>{document.body.removeChild(a),o(new Error(`Failed to load video from ${e}`))}),a.src=e,document.body.appendChild(a)}catch(a){o(a)}})}function ra(e){return e?e.replace(/[_-]/g," ").replace(/([A-Z])/g," $1").trim().split(" ").filter(t=>t.length>0).map(t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join(" "):""}function pe(e){return typeof e=="object"&&e!==null&&"next"in e&&"return"in e&&"throw"in e&&typeof e.next=="function"&&typeof e.return=="function"&&typeof e.throw=="function"&&Symbol.asyncIterator in e&&typeof e[Symbol.asyncIterator]=="function"}function te(e){return e instanceof Error&&e.name==="AbortError"}function Ze(e,t,r){let n=`${t}.iconSetAdded`;e.ui.experimental.hasGlobalStateValue(n)||(e.ui.addIconSet(t,r),e.ui.experimental.setGlobalStateValue(n,!0))}function na(e){return`${e.replace(/\/+$/,"")}/`}function ia(e){return async(r,n,i)=>{let o=await i(r,n);return pe(o)?o:await e(o)}}var oa=ia;function We(e,t){let r={...e};if(!t)return r;for(let[n,i]of Object.entries(t))i===!1||i===null||i===void 0?delete r[n]:i===!0?n in e||(r[n]=!0):r[n]=i;return r}var Je=new Map,ke=class{constructor(t,r,n){this.db=null;this.dbVersion=1;this.isInitializing=!1;this.initPromise=null;this.instanceId=t,this.dbName=r??"ly.img.ai.rateLimit",this.storeName=n??"rateLimits"}async initialize(){if(!this.db)return this.isInitializing?this.initPromise:(this.isInitializing=!0,this.initPromise=new Promise((t,r)=>{try{let n=indexedDB.open(this.dbName,this.dbVersion);n.onerror=i=>{this.isInitializing=!1,console.error("Failed to open IndexedDB for rate limiting:",i),r(new Error("Failed to open IndexedDB for rate limiting"))},n.onupgradeneeded=i=>{let o=i.target.result;o.objectStoreNames.contains(this.storeName)||o.createObjectStore(this.storeName,{keyPath:"id"})},n.onsuccess=i=>{this.db=i.target.result,this.isInitializing=!1,t()}}catch(n){this.isInitializing=!1,console.error("Error initializing IndexedDB:",n),r(n)}}),this.initPromise)}async getTracker(t){try{await this.initialize();let n=`${typeof this.instanceId=="symbol"?this.instanceId.description||"":this.instanceId}_${t}`;return await new Promise((i,o)=>{let c=this.db.transaction(this.storeName,"readonly").objectStore(this.storeName).get(n);c.onsuccess=()=>{c.result?i(c.result.data):i(null)},c.onerror=()=>{console.error(`Failed to get tracker for key ${n}:`,c.error),o(c.error)}})}catch(r){return console.error("Error getting tracker from IndexedDB:",r),Promise.reject(r)}}async saveTracker(t,r){try{await this.initialize();let i=`${typeof this.instanceId=="symbol"?this.instanceId.description||"":this.instanceId}_${t}`;return await new Promise((o,a)=>{let s=this.db.transaction(this.storeName,"readwrite");s.objectStore(this.storeName).put({id:i,data:r}),s.oncomplete=()=>{o()},s.onerror=()=>{console.error(`Failed to save tracker for key ${i}:`,s.error),a(s.error)}})}catch(n){return console.error("Error saving tracker to IndexedDB:",n),Promise.reject(n)}}static isAvailable(){return typeof indexedDB<"u"}close(){this.db&&(this.db.close(),this.db=null)}};function aa(e){let{maxRequests:t,timeWindowMs:r,keyFn:n=()=>"global",onRateLimitExceeded:i,dbName:o}=e,s=`rate-limit-middleware-${t}-${r}`,c=ke.isAvailable(),u=c?new ke(s,o):null;Je.has(s)||Je.set(s,{});let l=Je.get(s);return async(p,g,f)=>{if(typeof e.disable=="function"?e.disable():e.disable)return f(p,g);let h=typeof n=="string"?n:n(p,g),b=Date.now(),m;if(c&&u)try{let y=await u.getTracker(h);y?m=y:m={timestamps:[],lastCleanup:b}}catch(y){console.error("IndexedDB access failed, using in-memory fallback:",y),l[h]||(l[h]={timestamps:[],lastCleanup:b}),m=l[h]}else l[h]||(l[h]={timestamps:[],lastCleanup:b}),m=l[h];if(b-m.lastCleanup>r&&(m.timestamps=m.timestamps.filter(y=>b-y<r),m.lastCleanup=b),m.timestamps.length>=t){let y=Math.min(...m.timestamps),v=Math.max(0,r-(b-y));if(i){let w={key:h,currentCount:m.timestamps.length,maxRequests:t,timeWindowMs:r,remainingTimeMs:v};if(!await i(p,g,w))throw new DOMException("Operation aborted: Rate limit exceeded","AbortError")}else throw new Error("Rate limit exceeded. Please try again later.")}if(m.timestamps.push(b),c&&u)try{await u.saveTracker(h,m)}catch(y){console.error("Failed to save tracker to IndexedDB:",y),l[h]=m}else l[h]=m;return f(p,g)}}var sa=aa;function la(e,t,r){let n="ai-plugin-version",i="ai-plugin-version-warning-shown";try{let o=e.ui.experimental.getGlobalStateValue(n);o?o!==r&&(e.ui.experimental.getGlobalStateValue(i,!1)||(console.warn(`[IMG.LY AI Plugins] Version mismatch detected!
|
|
2
2
|
Plugin "${t}" is using version ${r}, but other AI plugins are using version ${o}.
|
|
3
3
|
This may cause compatibility issues. Please ensure all AI plugins (@imgly/plugin-ai-*) use the same version.
|
|
4
|
-
Consider updating all AI plugins to the same version for optimal compatibility.`),e.ui.experimental.setGlobalStateValue(i,!0))):e.ui.experimental.setGlobalStateValue(n,r)}catch(o){console.debug("[IMG.LY AI Plugins] Could not check plugin version consistency:",o)}}function ua(e){let{cesdk:t,panelId:r}=e;r.startsWith("ly.img.ai.")||console.warn(`Dock components for AI generation should open a panel with an id starting with "ly.img.ai." \u2013 "${r}" was provided.`);let n=`${r}.dock`;t.ui.registerComponent(n,({builder:i})=>{let o=t.ui.isPanelOpen(r);i.Button(`${r}.dock.button`,{label:`${r}.dock.label`,isSelected:o,icon:"@imgly/Sparkle",onClick:()=>{t.ui.findAllPanels().forEach(a=>{a.startsWith("ly.img.ai.")&&t.ui.closePanel(a),!o&&a==="//ly.img.panel/assetLibrary"&&t.ui.closePanel(a)}),o?t.ui.closePanel(r):t.ui.openPanel(r)}})})}var da=ua;function ca(){return({engine:e})=>{let t=e.block.findAllSelected();if(t==null||t.length!==1)return!1;let[r]=t;if(!e.block.supportsFill(r)||e.block.getKind(r)==="sticker"||!["//ly.img.ubq/graphic","//ly.img.ubq/page"].includes(e.block.getType(r)))return!1;let n=e.block.getFill(r);return e.block.getType(n)==="//ly.img.ubq/fill/image"}}var pa=ca;function ga(e,t){let{cesdk:r,provider:n,getInput:i,middlewareOptions:o}=t;if(o?.defaultPrevented())return;console.error("Generation failed:",e),ma(r,n.output.notification,()=>({input:i?.().input,error:e}))||r.ui.showNotification({type:"error",message:Bt(e)})}function ma(e,t,r){let n=t?.error;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let o=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.failed",a=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"error",message:o,action:a,duration:n.duration}),!0}var ge=ga;var fa="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",Oe=fa;function ya(e,t,r){switch(t){case"image":return ba(e,r[t]);case"video":return ha(e,r[t]);case"sticker":return Ia(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function ba(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:Oe,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n}}}function ha(e,t){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:Oe,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}function Ia(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:Oe,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:r,height:n}}}var zt=ya;async function va(e,t,r,n){switch(t){case"image":{if(n.kind!=="image")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: image)`);return wa(e,r[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return ka(e,r[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Oa(e,r[t],n)}case"sticker":{if(n.kind!=="sticker")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: sticker)`);return Sa(e,r[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function wa(e,t,r){let n=t.width,i=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:i},payload:{sourceSet:[{uri:r.url,width:n,height:i}]}}}async function ka(e,t,r){let n=t.width,i=t.height,o=await Ze(r.url,0);return{id:e,label:t.label,meta:{uri:r.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:n,height:i}}}function Oa(e,t,r){return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.thumbnailUrl,blockType:"//ly.img.ubq/audio",mimeType:"audio/x-m4a",duration:r.duration.toString()}}}function Sa(e,t,r){let n=t.width,i=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:n,height:i},payload:{sourceSet:[{uri:r.url,width:n,height:i}]}}}var et=va;function Ca(e){switch(e.userFlow){case"placeholder":return Aa(e);case"generation-only":return xa(e);default:throw new Error(`Unknown user flow: ${e.userFlow}. Expected 'placeholder' or 'generation-only'.`)}}function xa(e){let{cesdk:t,abortSignal:r}=e;return async n=>{try{let i=e.kind,o=await e.getBlockInput(n);if(N(t,r))return{status:"aborted"};let a=await e.generate(n,{middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:r});if(N(t,r))return{status:"aborted"};if(a.status!=="success")return a;if(a.type==="async")throw new Error("Async generation is not supported in this context yet.");if(N(t,r))return{status:"aborted"};if(e.historyAssetSourceId!=null){let s=Ye(),c=await et(s,i,o,a.output),u={...c,id:`${Date.now()}-${c.id}`,label:c.label!=null?{en:c.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,u)}else e.debug&&console.log("No asset source ID found in history and generation only was requested. Doing nothing. If no middleware is adding functionality this could be a bug.");return a}catch(i){return{status:"error",message:i instanceof Error?i.message:String(i),error:i}}}}function Aa(e){let{cesdk:t,abortSignal:r}=e,n;return async i=>{try{let o=e.kind,a=await e.getBlockInput(i);if(N(t,r))return{status:"aborted"};let s=Ye(),c=zt(s,o,a);if(n=await Vt(t,c),N(t,r,n))return{status:"aborted"};if(n!=null&&e.kind==="video"){let d=t.engine.block.getPositionX(n),p=t.engine.block.getPositionY(n),g=t.engine.block.duplicate(n);t.engine.block.setPositionX(g,d),t.engine.block.setPositionY(g,p),t.engine.block.destroy(n),n=g}if(n==null)throw new Error("Could not create placeholder block");t.engine.block.setState(n,{type:"Pending",progress:0});let u=await e.generate(i,{blockIds:[n],middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:r});if(N(t,r,n))return{status:"aborted"};if(u.status!=="success")return n!=null&&t.engine.block.isValid(n)&&(u.status==="aborted"||u.middlewareOptions?.defaultPrevented()?t.engine.block.destroy(n):t.engine.block.setState(n,{type:"Error",error:"Unknown"})),u;if(u.type==="async")throw new Error("Async generation is not supported in this context yet.");if(!t.engine.block.isValid(n))return{status:"aborted",message:"Placeholder block was destroyed before generation completed."};let l=await et(s,o,a,u.output);if(N(t,r,n))return{status:"aborted"};if(e.debug&&console.log("Updating placeholder in scene:",JSON.stringify(l,void 0,2)),await t.engine.asset.defaultApplyAssetToBlock(l,n),N(t,r,n))return{status:"aborted"};if(e.historyAssetSourceId!=null){let d={...l,id:`${Date.now()}-${l.id}`,label:l.label!=null?{en:l.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,d)}return t.engine.block.isValid(n)&&t.engine.block.setState(n,{type:"Ready"}),u}catch(o){return n!=null&&t.engine.block.isValid(n)&&(te(o)?t.engine.block.destroy(n):t.engine.block.setState(n,{type:"Error",error:"Unknown"})),{status:"error",message:o instanceof Error?o.message:String(o),error:o}}}}function N(e,t,r){return t.aborted?(r!=null&&e.engine.block.isValid(r)&&e.engine.block.destroy(r),!0):!1}var Ut=Ca;function re(e){return`${e}.generating`}function qt(e){return`${e}.abort`}function Ea(e,t,r,n,i,o,a){let{builder:s,experimental:c}=e,{cesdk:u,includeHistoryLibrary:l=!0}=o,{id:d,output:{abortable:p}}=t,g=c.global(qt(d),()=>{}),f=c.global(re(d),!1),h,b=f.value&&p,m=()=>{b&&(g.value(),f.setValue(!1),g.setValue(()=>{}))},y;if(o.requiredInputs!=null&&o.requiredInputs.length>0){let w=n();y=o.requiredInputs.some(C=>{let I=w.input[C];return!I||Array.isArray(I)&&I.length===0})}let v=c.global(`${d}.confirmationDialogId`,void 0);s.Section(`${d}.generate.section`,{children:()=>{s.Button(`${d}.generate`,{label:["ly.img.plugin-ai-generation-web.generate","common.generate",`panel.${d}.generate`],isLoading:f.value,color:"accent",isDisabled:y,suffix:b?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${d}.abort`,"common.cancel"],onClick:()=>{let w=u.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:C})=>{u.ui.closeDialog(C),v.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:C})=>{m(),u.ui.closeDialog(C),v.setValue(void 0)}}});v.setValue(w)}}:void 0,onClick:async()=>{h=new AbortController;let w=h.signal;await(async()=>{try{f.setValue(!0),g.setValue(()=>{a.debug&&console.log("Aborting generation"),h?.abort()});let I=await Ut({kind:t.kind,generate:r,historyAssetSourceId:o.historyAssetSourceId,userFlow:o.createPlaceholderBlock?"placeholder":"generation-only",getBlockInput:i,abortSignal:w,cesdk:u,debug:a.debug,dryRun:a.dryRun})(n().input);if(I.status==="aborted")return;if(I.status==="error"){ge(I.error??I.message,{cesdk:u,provider:t,getInput:n,middlewareOptions:I.middlewareOptions});return}if(I.status==="success"&&I.type==="sync"&&!I.middlewareOptions?.defaultPrevented()){let k=t.output.notification;Pa(u,k,()=>({input:n().input,output:I.output}))}}catch(I){if(te(I))return;ge(I,{cesdk:u,provider:t,getInput:n})}finally{h=void 0,f.setValue(!1),g.setValue(()=>{}),v.value!=null&&(u.ui.closeDialog(v.value),v.setValue(void 0))}})()}}),t.output.generationHintText!=null&&s.Text(`${d}.generation-hint`,{align:"center",content:t.output.generationHintText})}}),l&&o.historyAssetLibraryEntryId!=null&&s.Library(`${d}.history.library`,{entries:[o.historyAssetLibraryEntryId]})}function Pa(e,t,r){let n=t?.success;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let o=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.success",a=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"success",message:o,action:a,duration:n.duration}),!0}var Se=Ea;function U(e){let{name:t}=e;return(typeof t=="function"?t():t)??e.id}async function Ra({options:e,provider:t,panelInput:r,config:n},i){if(r==null)return;let{cesdk:o}=e,{id:a}=t;n.debug&&console.log(`Provider: ${a} (custom)`);let s=r.render;return u=>{let{state:l}=u,d=l(re(a),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:p,getBlockInput:g}=s(u,{cesdk:o,isGenerating:d});return Se(u,t,i,p,g,{...e,includeHistoryLibrary:r.includeHistoryLibrary??!0,createPlaceholderBlock:r.userFlow==="placeholder"},n),p}}var Qt=Ra;function tt(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),n=e;for(let i of r){if(n==null)throw new Error(`Invalid reference path: ${t}`);n=n[i]}if(n===void 0)throw new Error(`Reference not found: ${t}`);return n}function me(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let n=tt(e,t.$ref),o={...me(e,n,r)};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&a!=="$ref"&&(o[a]=me(e,t[a],r));return o}if(Array.isArray(t))return t.map(n=>me(e,n,r));if(typeof t=="object"){let n={};for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=me(e,t[i],r));return n}return t}function rt(e){return me(e,{...e})}function Ht(e,t=!1){let r=s=>(t&&console.log(`OpenAPI Schema validation failed: ${s}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let n=e;if(!(typeof n.type=="string"||Array.isArray(n.enum)||typeof n.properties=="object"||typeof n.items=="object"||typeof n.allOf=="object"||typeof n.anyOf=="object"||typeof n.oneOf=="object"||typeof n.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let s=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!s.includes(n.type))return r(`Invalid type: ${n.type}. Must be one of ${s.join(", ")}`)}else if(Array.isArray(n.type)){for(let c of n.type)if(typeof c!="string"||!s.includes(c))return r(`Array of types contains invalid value: ${c}. Must be one of ${s.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof n.type}`)}if(n.items!==void 0&&(typeof n.items!="object"||n.items===null))return r(`Items must be an object, got ${n.items===null?"null":typeof n.items}`);if(n.properties!==void 0&&(typeof n.properties!="object"||n.properties===null))return r(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let o=["allOf","anyOf","oneOf"];for(let s of o)if(n[s]!==void 0){if(!Array.isArray(n[s]))return r(`${s} must be an array, got ${typeof n[s]}`);for(let c=0;c<n[s].length;c++){let u=n[s][c];if(typeof u!="object"||u===null)return r(`Item ${c} in ${s} must be an object, got ${u===null?"null":typeof u}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return r(`'not' must be an object, got ${n.not===null?"null":typeof n.not}`);if(n.additionalProperties!==void 0&&typeof n.additionalProperties!="boolean"&&(typeof n.additionalProperties!="object"||n.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${n.additionalProperties===null?"null":typeof n.additionalProperties}`);if(n.format!==void 0&&typeof n.format!="string")return r(`format must be a string, got ${typeof n.format}`);let a=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let s of a)if(n[s]!==void 0&&typeof n[s]!="number")return r(`${s} must be a number, got ${typeof n[s]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return r(`minLength must be a non-negative number, got ${typeof n.minLength=="number"?n.minLength:typeof n.minLength}`);if(n.maxLength!==void 0&&(typeof n.maxLength!="number"||n.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof n.maxLength=="number"?n.maxLength:typeof n.maxLength}`);if(n.pattern!==void 0&&typeof n.pattern!="string")return r(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return r(`minItems must be a non-negative number, got ${typeof n.minItems=="number"?n.minItems:typeof n.minItems}`);if(n.maxItems!==void 0&&(typeof n.maxItems!="number"||n.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof n.maxItems=="number"?n.maxItems:typeof n.maxItems}`);if(n.uniqueItems!==void 0&&typeof n.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof n.minProperties=="number"?n.minProperties:typeof n.minProperties}`);if(n.maxProperties!==void 0&&(typeof n.maxProperties!="number"||n.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof n.maxProperties=="number"?n.maxProperties:typeof n.maxProperties}`);if(n.required!==void 0){if(!Array.isArray(n.required))return r(`required must be an array, got ${typeof n.required}`);for(let s=0;s<n.required.length;s++){let c=n.required[s];if(typeof c!="string")return r(`Item ${s} in required array must be a string, got ${typeof c}`)}}return!0}function Da(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=e.properties,n=[];return Ma(e,t).forEach(o=>{let a=o,s=r[o]??void 0;n.push({id:a,schema:s})}),n}function Ma(e,t){let r=t.order;if(r!=null&&Array.isArray(r))return r;if(e.properties==null)throw new Error("Input schema must have properties");let n=e.properties,i=Object.keys(n),a=Ka(e,t)??i;return r!=null&&typeof r=="function"&&(a=r(a)),[...new Set(a)]}function Ka(e,t){if(t.orderExtensionKeyword==null)return;if(typeof t.orderExtensionKeyword!="string"&&!Array.isArray(t.orderExtensionKeyword))throw new Error("orderExtensionKeyword must be a string or an array of strings");let n=(typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword).find(o=>o in e);return n==null?void 0:e[n]}var Ce=Da;function Yt(e){let t="x-imgly-enum-labels"in e&&typeof e["x-imgly-enum-labels"]=="object"?e["x-imgly-enum-labels"]:{},r="x-imgly-enum-icons"in e&&typeof e["x-imgly-enum-icons"]=="object"?e["x-imgly-enum-icons"]:{};return{labels:t,icons:r}}function Zt(e,t,r,n,i,o,a,s){if(t.schema==null)if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null){let l={...e,providerConfig:s,config:o,provider:r,kind:a};return n.renderCustomProperty[t.id](l,t)}else return;let c=t,u=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null){let l={...e,providerConfig:s,config:o,provider:r,kind:a};return n.renderCustomProperty[t.id](l,t)}switch(u){case"string":return t.schema.enum!=null?Ta(e,c,r,n,i,o,a,s):Wt(e,c,r,n,i,o,a,s);case"boolean":return Jt(e,c,r,n,i,o,a,s);case"number":case"integer":return Xt(e,c,r,n,i,o,a,s);case"object":return nt(e,c,r,n,i,o,a,s);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return Ga(e,c,r,n,i,o,a,s);break}default:console.error(`Unsupported property type: ${u}`)}}function nt(e,t,r,n,i,o,a,s){let u=Ce(t.schema??{},n).reduce((l,d)=>{let p=Zt(e,d,r,n,i,o,a,s);return p!=null&&(l[d.id]=p()),l},{});return()=>({id:t.id,type:"object",value:u})}function Wt(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=G(r.id,a,d,"placeholder"),h=L(l,i.cesdk),b=s?.properties?.[d]??o.properties?.[d],m=F(d,b,h,t.schema.default,""),y=u(p,m),w=La(t.schema)?.component==="TextArea",C={inputLabel:g,...y};return w?c.PromptInput(p,{...C,...f.length>0&&{placeholder:f}}):c.TextInput(p,C),()=>({id:t.id,type:"string",value:y.value})}function Ta(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),{labels:f,icons:h}=Yt(t.schema),b=(t.schema.enum??[]).map(I=>({id:I,label:G(r.id,a,d,I),icon:h[I]})),m=L(l,i.cesdk),y=s?.properties?.[d]??o.properties?.[d],v=F(d,y,m,t.schema.default,b[0]?.id),w=v!=null?b.find(I=>I.id===v)??b[0]:b[0],C=u(p,w);return c.Select(p,{inputLabel:g,values:b,...C}),()=>({id:t.id,type:"string",value:C.value.id})}function Jt(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=L(l,i.cesdk),h=s?.properties?.[d]??o.properties?.[d],b=!!F(d,h,f,t.schema.default,!1),m=u(p,b);return c.Checkbox(p,{inputLabel:g,...m}),()=>({id:t.id,type:"boolean",value:m.value})}function Xt(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=t.schema.minimum,h=t.schema.maximum,b=L(l,i.cesdk),m=s?.properties?.[d]??o.properties?.[d],y=t.schema.default;y==null&&(f!=null?y=f:h!=null?y=h:y=0);let v=F(d,m,b,y,y),w=u(p,v);if(f!=null&&h!=null){let C=t.schema.type==="number"?.1:1;"x-imgly-step"in t.schema&&typeof t.schema["x-imgly-step"]=="number"&&(C=t.schema["x-imgly-step"]),c.Slider(p,{inputLabel:g,min:f,max:h,step:C,...w})}else c.NumberInput(p,{inputLabel:g,min:f,max:h,...w});return()=>({id:t.id,type:"integer",value:w.value})}function Ga(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=t.schema.anyOf??[],h=[],b={},m={},{labels:y,icons:v}=Yt(t.schema),w=L(l,i.cesdk),C=s?.properties?.[d]??o.properties?.[d],I={string:Wt,boolean:Jt,integer:Xt,object:nt},k=(O,M)=>O.$ref?O.$ref.split("/").pop():M.split(".").pop()??M,x=(O,M)=>({id:O,label:G(r.id,a,d,M),icon:v[M]??v[O]});f.forEach((O,M)=>{let K=`${r.id}.${d}.anyOf[${M}]`;if(O.$ref||O.title){let E=O.$ref?O.$ref.split("/").pop():O.title;b[K]=()=>nt(e,{id:K,schema:{...O,title:y[E]||E}},r,n,i,o,a,s),h.push(x(K,E))}else if(O.type==="string"&&O.enum)O.enum.forEach(E=>{h.push(x(E,E))});else if(O.type&&I[O.type]){let E=I[O.type];b[K]=()=>E(e,{id:K,schema:{...O,title:O.title}},r,n,i,o,a,s);let R=k(O,K);h.push(O.type==="string"&&!O.enum?{id:K,label:O.title||R,icon:O.title&&v[O.title]||v[R]}:x(K,R))}});let S=F(d,C,w,t.schema.default,null),D=S!=null?h.find(O=>O.id===S)??h[0]:h[0],A=u(p,D);if(c.Select(p,{inputLabel:g,values:h,...A}),A.value.id in b){let O=b[A.value.id]();m[A.value.id]=O}return()=>{let O=m[A.value.id];return O!=null?{...O(),id:t.id}:{id:t.id,type:"string",value:A.value.id}}}function La(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var er=Zt;var tr={"ly.img.plugin-ai-generation-web.fallback.property.placeholder":"","ly.img.plugin-ai-generation-web.defaults.property.prompt":"Prompt","ly.img.plugin-ai-generation-web.defaults.property.style":"Style","ly.img.plugin-ai-generation-web.defaults.property.image_size":"Image Size","ly.img.plugin-ai-generation-web.defaults.property.size":"Image Size","ly.img.plugin-ai-generation-web.defaults.property.colors":"Colors","ly.img.plugin-ai-generation-web.defaults.property.background":"Background","ly.img.plugin-ai-generation-web.defaults.property.width":"Width","ly.img.plugin-ai-generation-web.defaults.property.height":"Height","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio":"Aspect Ratio","ly.img.plugin-ai-generation-web.defaults.property.duration":"Duration","ly.img.plugin-ai-generation-web.defaults.property.resolution":"Resolution","ly.img.plugin-ai-generation-web.defaults.property.generate_audio":"Generate Audio","ly.img.plugin-ai-generation-web.defaults.property.voice_id":"Voice","ly.img.plugin-ai-generation-web.defaults.property.speed":"Speed","ly.img.plugin-ai-generation-web.defaults.property.text":"Text","ly.img.plugin-ai-generation-web.defaults.property.duration_seconds":"Duration (seconds)","ly.img.plugin-ai-generation-web.defaults.property.style.type":"Type","ly.img.plugin-ai-generation-web.defaults.property.style.type.image":"Image","ly.img.plugin-ai-generation-web.defaults.property.style.type.vector":"Vector","ly.img.plugin-ai-generation-web.defaults.property.style.type.icon":"Icon","ly.img.plugin-ai-generation-web.defaults.property.image_size.square":"Square","ly.img.plugin-ai-generation-web.defaults.property.image_size.portrait":"Portrait","ly.img.plugin-ai-generation-web.defaults.property.image_size.landscape":"Landscape","ly.img.plugin-ai-generation-web.defaults.property.background.auto":"Auto","ly.img.plugin-ai-generation-web.defaults.property.background.transparent":"Transparent","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.1:1":"1:1 (Square)","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.16:9":"16:9 (Widescreen)","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.9:16":"9:16 (Vertical)","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.4:3":"4:3","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.3:4":"3:4","ly.img.plugin-ai-generation-web.defaults.property.resolution.720p":"720p HD","ly.img.plugin-ai-generation-web.defaults.property.resolution.1080p":"1080p Full HD"};function rr(e){return e.replace(/_/g," ").replace(/\b3d\b/gi,"3D").replace(/\b2d\b/gi,"2D").replace(/\b\w/g,t=>t.toUpperCase())}function xe(e,t,r,n){let i={},o=(u,l)=>`ly.img.plugin-ai-${n}-generation-web.${t.id}.defaults.property.${u}${l?`.${l}`:""}`,a=u=>"x-imgly-enum-labels"in u&&typeof u["x-imgly-enum-labels"]=="object"?u["x-imgly-enum-labels"]:{},s=(u,l,d)=>{u.forEach(p=>{let g=String(p),f=d[g]||rr(g);i[o(l,g)]=f})};e.forEach(u=>{if(u.schema?.title&&(i[o(u.id)]=u.schema.title),u.schema?.enum){let l=a(u.schema);s(u.schema.enum,u.id,l)}if(u.schema?.anyOf&&Array.isArray(u.schema.anyOf)){let l=a(u.schema);u.schema.anyOf.forEach(d=>{let p=d;if(p.enum&&Array.isArray(p.enum))s(p.enum,u.id,l);else if(p.$ref){let g=p.$ref.split("/").pop();g&&l[g]&&(i[o(u.id,g)]=l[g])}else if(p.title){let g=p.title,f=l[g]||rr(g);i[o(u.id,g)]=f}})}});let c={...tr,...i};Object.keys(c).length>0&&T(r.cesdk,{en:c})}function nr(e){return typeof e.document=="function"?e.document():e.document}function ir(e,t,r){let n=rt(e),i=tt(n,t.inputReference);if(!Ht(i,r))throw new Error(`Input reference '${t.inputReference}' does not resolve to a valid OpenAPI schema`);let o=i,a=Ce(o,t);return{inputSchema:o,properties:a}}function or(e,t,r,{options:n,provider:i,config:o,providerConfig:a},s){let{id:c}=i;return u=>{let{builder:l}=u,d={...u,properties:t},p=[];l.Section(`${c}.schema.section`,{children:()=>{t.forEach(m=>{let y=er(d,m,i,r,n,o,i.kind,a);y!=null&&(Array.isArray(y)?p.push(...y):p.push(y))})}});let g=p.map(m=>m()),f=m=>m.type==="object"?Object.entries(m.value).reduce((y,[v,w])=>(y[v]=f(w),y),{}):m.value,h=g.reduce((m,y)=>(m[y.id]=f(y),m),{}),b=[...new Set([...e.required??[],...g.filter(m=>m.required).map(m=>m.id)])];Se(u,i,s,()=>({input:h}),()=>r.getBlockInput(h),{...n,requiredInputs:b,createPlaceholderBlock:r.userFlow==="placeholder"},o)}}async function Fa(e,t){let{options:r,provider:n,panelInput:i,config:o}=e,{id:a}=n;if(i==null)return;let s=i;o.debug&&console.log(`Provider: ${a} (schema-based)`);let c=nr(s);if(!(c instanceof Promise)){let{inputSchema:f,properties:h}=ir(c,s,o.debug);return xe(h,n,r,n.kind),or(f,h,s,e,t)}let u=null,l=null,d=`${a}.schema.loading`;function p(){u=null,l=null,r.cesdk.ui.experimental.setGlobalStateValue(d,!0),Promise.resolve(nr(s)).then(f=>{let{inputSchema:h,properties:b}=ir(f,s,o.debug);xe(b,n,r,n.kind),l=or(h,b,s,e,t)}).catch(f=>{u=f instanceof Error?f:new Error(String(f))}).finally(()=>{r.cesdk.ui.experimental.setGlobalStateValue(d,!1)})}return p(),f=>{let{builder:h}=f;if(l!=null){l(f);return}if(u!=null){h.Section(`${a}.schema.error`,{children:()=>{h.Text(`${a}.schema.error.title`,{content:"ly.img.plugin-ai-generation-web.schema.error.title"}),h.Text(`${a}.schema.error.details`,{content:u.message}),h.Button(`${a}.schema.error.retry`,{label:"ly.img.plugin-ai-generation-web.schema.error.retry",onClick:()=>{p()}})}});return}h.Spinner(`${a}.schema.loading`,{label:"ly.img.plugin-ai-generation-web.schema.loading.label"})}}var ar=Fa;async function $a(e,t){if(e.panelInput!=null)switch(e.panelInput.type){case"custom":return Qt(e,t);case"schema":return ar(e,t);default:e.config.debug&&console.warn(`Invalid panel input type '${panelInput.type}' - skipping`)}}var sr=$a;function _a(e){let{provider:t,options:{engine:r}}=e,n=t.output.history??"@imgly/local";if(n==null||n===!1)return;let i=r.asset.findAllSources();function o(){let a=`${t.id}.history`;for(;i.includes(a);)a+=`-${Math.random().toString(36).substring(2,6)}`;return a}if(n==="@imgly/local"){let a=o();return r.asset.addLocalSource(a),a}if(n==="@imgly/indexedDB"){let a=o();return r.asset.addSource(new St(a,r)),a}return n}var lr=_a;function ja(e,t){if(t==null||!t)return;let r=`${e.provider.id}.history`;return e.options.cesdk.ui.addAssetLibraryEntry({id:r,sourceIds:[t],sortBy:{sortKey:"insertedAt",sortingOrder:"Descending"},canRemove:!0,gridItemHeight:"square",gridBackgroundType:"cover"}),r}var ur=ja;var it="@imgly/plugin-ai-generation",Na=`
|
|
4
|
+
Consider updating all AI plugins to the same version for optimal compatibility.`),e.ui.experimental.setGlobalStateValue(i,!0))):e.ui.experimental.setGlobalStateValue(n,r)}catch(o){console.debug("[IMG.LY AI Plugins] Could not check plugin version consistency:",o)}}function ua(e){let{cesdk:t,panelId:r}=e;r.startsWith("ly.img.ai.")||console.warn(`Dock components for AI generation should open a panel with an id starting with "ly.img.ai." \u2013 "${r}" was provided.`);let n=`${r}.dock`;t.ui.registerComponent(n,({builder:i})=>{let o=t.ui.isPanelOpen(r);i.Button(`${r}.dock.button`,{label:`${r}.dock.label`,isSelected:o,icon:"@imgly/Sparkle",onClick:()=>{t.ui.findAllPanels().forEach(a=>{a.startsWith("ly.img.ai.")&&t.ui.closePanel(a),!o&&a==="//ly.img.panel/assetLibrary"&&t.ui.closePanel(a)}),o?t.ui.closePanel(r):t.ui.openPanel(r)}})})}var da=ua;function ca(){return({engine:e})=>{let t=e.block.findAllSelected();if(t==null||t.length!==1)return!1;let[r]=t;if(!e.block.supportsFill(r)||e.block.getKind(r)==="sticker"||!["//ly.img.ubq/graphic","//ly.img.ubq/page"].includes(e.block.getType(r)))return!1;let n=e.block.getFill(r);return e.block.getType(n)==="//ly.img.ubq/fill/image"}}var pa=ca;function ga(e,t){let{cesdk:r,provider:n,getInput:i,middlewareOptions:o}=t;if(o?.defaultPrevented())return;console.error("Generation failed:",e),ma(r,n.output.notification,()=>({input:i?.().input,error:e}))||r.ui.showNotification({type:"error",message:Bt(e)})}function ma(e,t,r){let n=t?.error;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let o=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.failed",a=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"error",message:o,action:a,duration:n.duration}),!0}var ge=ga;var fa="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",Oe=fa;function ya(e,t,r){switch(t){case"image":return ba(e,r[t]);case"video":return ha(e,r[t]);case"sticker":return Ia(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function ba(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:Oe,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n}}}function ha(e,t){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:Oe,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}function Ia(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:Oe,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:r,height:n}}}var zt=ya;async function va(e,t,r,n){switch(t){case"image":{if(n.kind!=="image")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: image)`);return wa(e,r[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return ka(e,r[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Oa(e,r[t],n)}case"sticker":{if(n.kind!=="sticker")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: sticker)`);return Sa(e,r[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function wa(e,t,r){let n=t.width,i=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:i},payload:{sourceSet:[{uri:r.url,width:n,height:i}]}}}async function ka(e,t,r){let n=t.width,i=t.height,o=await Ye(r.url,0);return{id:e,label:t.label,meta:{uri:r.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:n,height:i}}}function Oa(e,t,r){return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.thumbnailUrl,blockType:"//ly.img.ubq/audio",mimeType:"audio/x-m4a",duration:r.duration.toString()}}}function Sa(e,t,r){let n=t.width,i=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:n,height:i},payload:{sourceSet:[{uri:r.url,width:n,height:i}]}}}var Xe=va;function Ca(e){switch(e.userFlow){case"placeholder":return Aa(e);case"generation-only":return xa(e);default:throw new Error(`Unknown user flow: ${e.userFlow}. Expected 'placeholder' or 'generation-only'.`)}}function xa(e){let{cesdk:t,abortSignal:r}=e;return async n=>{try{let i=e.kind,o=await e.getBlockInput(n);if(N(t,r))return{status:"aborted"};let a=await e.generate(n,{middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:r});if(N(t,r))return{status:"aborted"};if(a.status!=="success")return a;if(a.type==="async")throw new Error("Async generation is not supported in this context yet.");if(N(t,r))return{status:"aborted"};if(e.historyAssetSourceId!=null){let s=He(),c=await Xe(s,i,o,a.output),u={...c,id:`${Date.now()}-${c.id}`,label:c.label!=null?{en:c.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,u)}else e.debug&&console.log("No asset source ID found in history and generation only was requested. Doing nothing. If no middleware is adding functionality this could be a bug.");return a}catch(i){return{status:"error",message:i instanceof Error?i.message:String(i),error:i}}}}function Aa(e){let{cesdk:t,abortSignal:r}=e,n;return async i=>{try{let o=e.kind,a=await e.getBlockInput(i);if(N(t,r))return{status:"aborted"};let s=He(),c=zt(s,o,a);if(n=await Vt(t,c),N(t,r,n))return{status:"aborted"};if(n!=null&&e.kind==="video"){let d=t.engine.block.getPositionX(n),p=t.engine.block.getPositionY(n),g=t.engine.block.duplicate(n);t.engine.block.setPositionX(g,d),t.engine.block.setPositionY(g,p),t.engine.block.destroy(n),n=g}if(n==null)throw new Error("Could not create placeholder block");t.engine.block.setState(n,{type:"Pending",progress:0});let u=await e.generate(i,{blockIds:[n],middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:r});if(N(t,r,n))return{status:"aborted"};if(u.status!=="success")return n!=null&&t.engine.block.isValid(n)&&(u.status==="aborted"||u.middlewareOptions?.defaultPrevented()?t.engine.block.destroy(n):t.engine.block.setState(n,{type:"Error",error:"Unknown"})),u;if(u.type==="async")throw new Error("Async generation is not supported in this context yet.");if(!t.engine.block.isValid(n))return{status:"aborted",message:"Placeholder block was destroyed before generation completed."};let l=await Xe(s,o,a,u.output);if(N(t,r,n))return{status:"aborted"};if(e.debug&&console.log("Updating placeholder in scene:",JSON.stringify(l,void 0,2)),await t.engine.asset.defaultApplyAssetToBlock(l,n),N(t,r,n))return{status:"aborted"};if(e.historyAssetSourceId!=null){let d={...l,id:`${Date.now()}-${l.id}`,label:l.label!=null?{en:l.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,d)}return t.engine.block.isValid(n)&&t.engine.block.setState(n,{type:"Ready"}),u}catch(o){return n!=null&&t.engine.block.isValid(n)&&(te(o)?t.engine.block.destroy(n):t.engine.block.setState(n,{type:"Error",error:"Unknown"})),{status:"error",message:o instanceof Error?o.message:String(o),error:o}}}}function N(e,t,r){return t.aborted?(r!=null&&e.engine.block.isValid(r)&&e.engine.block.destroy(r),!0):!1}var Ut=Ca;function re(e){return`${e}.generating`}function qt(e){return`${e}.abort`}function Ea(e,t,r,n,i,o,a){let{builder:s,experimental:c}=e,{cesdk:u,includeHistoryLibrary:l=!0}=o,{id:d,output:{abortable:p}}=t,g=c.global(qt(d),()=>{}),f=c.global(re(d),!1),h,b=f.value&&p,m=()=>{b&&(g.value(),f.setValue(!1),g.setValue(()=>{}))},y;if(o.requiredInputs!=null&&o.requiredInputs.length>0){let w=n();y=o.requiredInputs.some(C=>{let I=w.input[C];return!I||Array.isArray(I)&&I.length===0})}let v=c.global(`${d}.confirmationDialogId`,void 0);s.Section(`${d}.generate.section`,{children:()=>{s.Button(`${d}.generate`,{label:["ly.img.plugin-ai-generation-web.generate","common.generate",`panel.${d}.generate`],isLoading:f.value,color:"accent",isDisabled:y,suffix:b?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${d}.abort`,"common.cancel"],onClick:()=>{let w=u.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:C})=>{u.ui.closeDialog(C),v.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:C})=>{m(),u.ui.closeDialog(C),v.setValue(void 0)}}});v.setValue(w)}}:void 0,onClick:async()=>{h=new AbortController;let w=h.signal;await(async()=>{try{f.setValue(!0),g.setValue(()=>{a.debug&&console.log("Aborting generation"),h?.abort()});let I=await Ut({kind:t.kind,generate:r,historyAssetSourceId:o.historyAssetSourceId,userFlow:o.createPlaceholderBlock?"placeholder":"generation-only",getBlockInput:i,abortSignal:w,cesdk:u,debug:a.debug,dryRun:a.dryRun})(n().input);if(I.status==="aborted")return;if(I.status==="error"){ge(I.error??I.message,{cesdk:u,provider:t,getInput:n,middlewareOptions:I.middlewareOptions});return}if(I.status==="success"&&I.type==="sync"&&!I.middlewareOptions?.defaultPrevented()){let k=t.output.notification;Pa(u,k,()=>({input:n().input,output:I.output}))}}catch(I){if(te(I))return;ge(I,{cesdk:u,provider:t,getInput:n})}finally{h=void 0,f.setValue(!1),g.setValue(()=>{}),v.value!=null&&(u.ui.closeDialog(v.value),v.setValue(void 0))}})()}}),t.output.generationHintText!=null&&s.Text(`${d}.generation-hint`,{align:"center",content:t.output.generationHintText})}}),l&&o.historyAssetLibraryEntryId!=null&&s.Library(`${d}.history.library`,{entries:[o.historyAssetLibraryEntryId]})}function Pa(e,t,r){let n=t?.success;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let o=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.success",a=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"success",message:o,action:a,duration:n.duration}),!0}var Se=Ea;function U(e){let{name:t}=e;return(typeof t=="function"?t():t)??e.id}async function Ra({options:e,provider:t,panelInput:r,config:n},i){if(r==null)return;let{cesdk:o}=e,{id:a}=t;n.debug&&console.log(`Provider: ${a} (custom)`);let s=r.render;return u=>{let{state:l}=u,d=l(re(a),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:p,getBlockInput:g}=s(u,{cesdk:o,isGenerating:d});return Se(u,t,i,p,g,{...e,includeHistoryLibrary:r.includeHistoryLibrary??!0,createPlaceholderBlock:r.userFlow==="placeholder"},n),p}}var Qt=Ra;function et(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),n=e;for(let i of r){if(n==null)throw new Error(`Invalid reference path: ${t}`);n=n[i]}if(n===void 0)throw new Error(`Reference not found: ${t}`);return n}function me(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let n=et(e,t.$ref),o={...me(e,n,r)};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&a!=="$ref"&&(o[a]=me(e,t[a],r));return o}if(Array.isArray(t))return t.map(n=>me(e,n,r));if(typeof t=="object"){let n={};for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=me(e,t[i],r));return n}return t}function tt(e){return me(e,{...e})}function Ht(e,t=!1){let r=s=>(t&&console.log(`OpenAPI Schema validation failed: ${s}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let n=e;if(!(typeof n.type=="string"||Array.isArray(n.enum)||typeof n.properties=="object"||typeof n.items=="object"||typeof n.allOf=="object"||typeof n.anyOf=="object"||typeof n.oneOf=="object"||typeof n.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let s=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!s.includes(n.type))return r(`Invalid type: ${n.type}. Must be one of ${s.join(", ")}`)}else if(Array.isArray(n.type)){for(let c of n.type)if(typeof c!="string"||!s.includes(c))return r(`Array of types contains invalid value: ${c}. Must be one of ${s.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof n.type}`)}if(n.items!==void 0&&(typeof n.items!="object"||n.items===null))return r(`Items must be an object, got ${n.items===null?"null":typeof n.items}`);if(n.properties!==void 0&&(typeof n.properties!="object"||n.properties===null))return r(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let o=["allOf","anyOf","oneOf"];for(let s of o)if(n[s]!==void 0){if(!Array.isArray(n[s]))return r(`${s} must be an array, got ${typeof n[s]}`);for(let c=0;c<n[s].length;c++){let u=n[s][c];if(typeof u!="object"||u===null)return r(`Item ${c} in ${s} must be an object, got ${u===null?"null":typeof u}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return r(`'not' must be an object, got ${n.not===null?"null":typeof n.not}`);if(n.additionalProperties!==void 0&&typeof n.additionalProperties!="boolean"&&(typeof n.additionalProperties!="object"||n.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${n.additionalProperties===null?"null":typeof n.additionalProperties}`);if(n.format!==void 0&&typeof n.format!="string")return r(`format must be a string, got ${typeof n.format}`);let a=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let s of a)if(n[s]!==void 0&&typeof n[s]!="number")return r(`${s} must be a number, got ${typeof n[s]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return r(`minLength must be a non-negative number, got ${typeof n.minLength=="number"?n.minLength:typeof n.minLength}`);if(n.maxLength!==void 0&&(typeof n.maxLength!="number"||n.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof n.maxLength=="number"?n.maxLength:typeof n.maxLength}`);if(n.pattern!==void 0&&typeof n.pattern!="string")return r(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return r(`minItems must be a non-negative number, got ${typeof n.minItems=="number"?n.minItems:typeof n.minItems}`);if(n.maxItems!==void 0&&(typeof n.maxItems!="number"||n.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof n.maxItems=="number"?n.maxItems:typeof n.maxItems}`);if(n.uniqueItems!==void 0&&typeof n.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof n.minProperties=="number"?n.minProperties:typeof n.minProperties}`);if(n.maxProperties!==void 0&&(typeof n.maxProperties!="number"||n.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof n.maxProperties=="number"?n.maxProperties:typeof n.maxProperties}`);if(n.required!==void 0){if(!Array.isArray(n.required))return r(`required must be an array, got ${typeof n.required}`);for(let s=0;s<n.required.length;s++){let c=n.required[s];if(typeof c!="string")return r(`Item ${s} in required array must be a string, got ${typeof c}`)}}return!0}function Da(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=e.properties,n=[];return Ma(e,t).forEach(o=>{let a=o,s=r[o]??void 0;n.push({id:a,schema:s})}),n}function Ma(e,t){let r=t.order;if(r!=null&&Array.isArray(r))return r;if(e.properties==null)throw new Error("Input schema must have properties");let n=e.properties,i=Object.keys(n),a=Ka(e,t)??i;return r!=null&&typeof r=="function"&&(a=r(a)),[...new Set(a)]}function Ka(e,t){if(t.orderExtensionKeyword==null)return;if(typeof t.orderExtensionKeyword!="string"&&!Array.isArray(t.orderExtensionKeyword))throw new Error("orderExtensionKeyword must be a string or an array of strings");let n=(typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword).find(o=>o in e);return n==null?void 0:e[n]}var Ce=Da;function Yt(e){let t="x-imgly-enum-labels"in e&&typeof e["x-imgly-enum-labels"]=="object"?e["x-imgly-enum-labels"]:{},r="x-imgly-enum-icons"in e&&typeof e["x-imgly-enum-icons"]=="object"?e["x-imgly-enum-icons"]:{};return{labels:t,icons:r}}function Zt(e,t,r,n,i,o,a,s){if(t.schema==null)if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null){let l={...e,providerConfig:s,config:o,provider:r,kind:a};return n.renderCustomProperty[t.id](l,t)}else return;let c=t,u=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null){let l={...e,providerConfig:s,config:o,provider:r,kind:a};return n.renderCustomProperty[t.id](l,t)}switch(u){case"string":return t.schema.enum!=null?Ta(e,c,r,n,i,o,a,s):Wt(e,c,r,n,i,o,a,s);case"boolean":return Jt(e,c,r,n,i,o,a,s);case"number":case"integer":return Xt(e,c,r,n,i,o,a,s);case"object":return rt(e,c,r,n,i,o,a,s);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return Ga(e,c,r,n,i,o,a,s);break}default:console.error(`Unsupported property type: ${u}`)}}function rt(e,t,r,n,i,o,a,s){let u=Ce(t.schema??{},n).reduce((l,d)=>{let p=Zt(e,d,r,n,i,o,a,s);return p!=null&&(l[d.id]=p()),l},{});return()=>({id:t.id,type:"object",value:u})}function Wt(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=G(r.id,a,d,"placeholder"),h=L(l,i.cesdk),b=s?.properties?.[d]??o.properties?.[d],m=F(d,b,h,t.schema.default,""),y=u(p,m),w=La(t.schema)?.component==="TextArea",C={inputLabel:g,...y};return w?c.PromptInput(p,{...C,...f.length>0&&{placeholder:f}}):c.TextInput(p,C),()=>({id:t.id,type:"string",value:y.value})}function Ta(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),{labels:f,icons:h}=Yt(t.schema),b=(t.schema.enum??[]).map(I=>({id:I,label:G(r.id,a,d,I),icon:h[I]})),m=L(l,i.cesdk),y=s?.properties?.[d]??o.properties?.[d],v=F(d,y,m,t.schema.default,b[0]?.id),w=v!=null?b.find(I=>I.id===v)??b[0]:b[0],C=u(p,w);return c.Select(p,{inputLabel:g,values:b,...C}),()=>({id:t.id,type:"string",value:C.value.id})}function Jt(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=L(l,i.cesdk),h=s?.properties?.[d]??o.properties?.[d],b=!!F(d,h,f,t.schema.default,!1),m=u(p,b);return c.Checkbox(p,{inputLabel:g,...m}),()=>({id:t.id,type:"boolean",value:m.value})}function Xt(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=t.schema.minimum,h=t.schema.maximum,b=L(l,i.cesdk),m=s?.properties?.[d]??o.properties?.[d],y=t.schema.default;y==null&&(f!=null?y=f:h!=null?y=h:y=0);let v=F(d,m,b,y,y),w=u(p,v);if(f!=null&&h!=null){let C=t.schema.type==="number"?.1:1;"x-imgly-step"in t.schema&&typeof t.schema["x-imgly-step"]=="number"&&(C=t.schema["x-imgly-step"]),c.Slider(p,{inputLabel:g,min:f,max:h,step:C,...w})}else c.NumberInput(p,{inputLabel:g,min:f,max:h,...w});return()=>({id:t.id,type:"integer",value:w.value})}function Ga(e,t,r,n,i,o,a,s){let{builder:c,experimental:{global:u},engine:l}=e,{id:d}=t,p=`${r.id}.${d}`,g=G(r.id,a,d),f=t.schema.anyOf??[],h=[],b={},m={},{labels:y,icons:v}=Yt(t.schema),w=L(l,i.cesdk),C=s?.properties?.[d]??o.properties?.[d],I={string:Wt,boolean:Jt,integer:Xt,object:rt},k=(O,M)=>O.$ref?O.$ref.split("/").pop():M.split(".").pop()??M,x=(O,M)=>({id:O,label:G(r.id,a,d,M),icon:v[M]??v[O]});f.forEach((O,M)=>{let K=`${r.id}.${d}.anyOf[${M}]`;if(O.$ref||O.title){let E=O.$ref?O.$ref.split("/").pop():O.title;b[K]=()=>rt(e,{id:K,schema:{...O,title:y[E]||E}},r,n,i,o,a,s),h.push(x(K,E))}else if(O.type==="string"&&O.enum)O.enum.forEach(E=>{h.push(x(E,E))});else if(O.type&&I[O.type]){let E=I[O.type];b[K]=()=>E(e,{id:K,schema:{...O,title:O.title}},r,n,i,o,a,s);let R=k(O,K);h.push(O.type==="string"&&!O.enum?{id:K,label:O.title||R,icon:O.title&&v[O.title]||v[R]}:x(K,R))}});let S=F(d,C,w,t.schema.default,null),D=S!=null?h.find(O=>O.id===S)??h[0]:h[0],A=u(p,D);if(c.Select(p,{inputLabel:g,values:h,...A}),A.value.id in b){let O=b[A.value.id]();m[A.value.id]=O}return()=>{let O=m[A.value.id];return O!=null?{...O(),id:t.id}:{id:t.id,type:"string",value:A.value.id}}}function La(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var er=Zt;var tr={"ly.img.plugin-ai-generation-web.fallback.property.placeholder":"","ly.img.plugin-ai-generation-web.defaults.property.prompt":"Prompt","ly.img.plugin-ai-generation-web.defaults.property.style":"Style","ly.img.plugin-ai-generation-web.defaults.property.image_size":"Image Size","ly.img.plugin-ai-generation-web.defaults.property.size":"Image Size","ly.img.plugin-ai-generation-web.defaults.property.colors":"Colors","ly.img.plugin-ai-generation-web.defaults.property.background":"Background","ly.img.plugin-ai-generation-web.defaults.property.width":"Width","ly.img.plugin-ai-generation-web.defaults.property.height":"Height","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio":"Aspect Ratio","ly.img.plugin-ai-generation-web.defaults.property.duration":"Duration","ly.img.plugin-ai-generation-web.defaults.property.resolution":"Resolution","ly.img.plugin-ai-generation-web.defaults.property.generate_audio":"Generate Audio","ly.img.plugin-ai-generation-web.defaults.property.voice_id":"Voice","ly.img.plugin-ai-generation-web.defaults.property.speed":"Speed","ly.img.plugin-ai-generation-web.defaults.property.text":"Text","ly.img.plugin-ai-generation-web.defaults.property.duration_seconds":"Duration (seconds)","ly.img.plugin-ai-generation-web.defaults.property.style.type":"Type","ly.img.plugin-ai-generation-web.defaults.property.style.type.image":"Image","ly.img.plugin-ai-generation-web.defaults.property.style.type.vector":"Vector","ly.img.plugin-ai-generation-web.defaults.property.style.type.icon":"Icon","ly.img.plugin-ai-generation-web.defaults.property.image_size.square":"Square","ly.img.plugin-ai-generation-web.defaults.property.image_size.portrait":"Portrait","ly.img.plugin-ai-generation-web.defaults.property.image_size.landscape":"Landscape","ly.img.plugin-ai-generation-web.defaults.property.background.auto":"Auto","ly.img.plugin-ai-generation-web.defaults.property.background.transparent":"Transparent","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.1:1":"1:1 (Square)","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.16:9":"16:9 (Widescreen)","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.9:16":"9:16 (Vertical)","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.4:3":"4:3","ly.img.plugin-ai-generation-web.defaults.property.aspect_ratio.3:4":"3:4","ly.img.plugin-ai-generation-web.defaults.property.resolution.720p":"720p HD","ly.img.plugin-ai-generation-web.defaults.property.resolution.1080p":"1080p Full HD"};function rr(e){return e.replace(/_/g," ").replace(/\b3d\b/gi,"3D").replace(/\b2d\b/gi,"2D").replace(/\b\w/g,t=>t.toUpperCase())}function xe(e,t,r,n){let i={},o=(u,l)=>`ly.img.plugin-ai-${n}-generation-web.${t.id}.defaults.property.${u}${l?`.${l}`:""}`,a=u=>"x-imgly-enum-labels"in u&&typeof u["x-imgly-enum-labels"]=="object"?u["x-imgly-enum-labels"]:{},s=(u,l,d)=>{u.forEach(p=>{let g=String(p),f=d[g]||rr(g);i[o(l,g)]=f})};e.forEach(u=>{if(u.schema?.title&&(i[o(u.id)]=u.schema.title),u.schema?.enum){let l=a(u.schema);s(u.schema.enum,u.id,l)}if(u.schema?.anyOf&&Array.isArray(u.schema.anyOf)){let l=a(u.schema);u.schema.anyOf.forEach(d=>{let p=d;if(p.enum&&Array.isArray(p.enum))s(p.enum,u.id,l);else if(p.$ref){let g=p.$ref.split("/").pop();g&&l[g]&&(i[o(u.id,g)]=l[g])}else if(p.title){let g=p.title,f=l[g]||rr(g);i[o(u.id,g)]=f}})}});let c={...tr,...i};Object.keys(c).length>0&&T(r.cesdk,{en:c})}function nr(e){return typeof e.document=="function"?e.document():e.document}function ir(e,t,r){let n=tt(e),i=et(n,t.inputReference);if(!Ht(i,r))throw new Error(`Input reference '${t.inputReference}' does not resolve to a valid OpenAPI schema`);let o=i,a=Ce(o,t);return{inputSchema:o,properties:a}}function or(e,t,r,{options:n,provider:i,config:o,providerConfig:a},s){let{id:c}=i;return u=>{let{builder:l}=u,d={...u,properties:t},p=[];l.Section(`${c}.schema.section`,{children:()=>{t.forEach(m=>{let y=er(d,m,i,r,n,o,i.kind,a);y!=null&&(Array.isArray(y)?p.push(...y):p.push(y))})}});let g=p.map(m=>m()),f=m=>m.type==="object"?Object.entries(m.value).reduce((y,[v,w])=>(y[v]=f(w),y),{}):m.value,h=g.reduce((m,y)=>(m[y.id]=f(y),m),{}),b=[...new Set([...e.required??[],...g.filter(m=>m.required).map(m=>m.id)])];Se(u,i,s,()=>({input:h}),()=>r.getBlockInput(h),{...n,requiredInputs:b,createPlaceholderBlock:r.userFlow==="placeholder"},o)}}async function Fa(e,t){let{options:r,provider:n,panelInput:i,config:o}=e,{id:a}=n;if(i==null)return;let s=i;o.debug&&console.log(`Provider: ${a} (schema-based)`);let c=nr(s);if(!(c instanceof Promise)){let{inputSchema:f,properties:h}=ir(c,s,o.debug);return xe(h,n,r,n.kind),or(f,h,s,e,t)}let u=null,l=null,d=`${a}.schema.loading`;function p(){u=null,l=null,r.cesdk.ui.experimental.setGlobalStateValue(d,!0),Promise.resolve(nr(s)).then(f=>{let{inputSchema:h,properties:b}=ir(f,s,o.debug);xe(b,n,r,n.kind),l=or(h,b,s,e,t)}).catch(f=>{u=f instanceof Error?f:new Error(String(f))}).finally(()=>{r.cesdk.ui.experimental.setGlobalStateValue(d,!1)})}return p(),f=>{let{builder:h}=f;if(l!=null){l(f);return}if(u!=null){h.Section(`${a}.schema.error`,{children:()=>{h.Text(`${a}.schema.error.title`,{content:"ly.img.plugin-ai-generation-web.schema.error.title"}),h.Text(`${a}.schema.error.details`,{content:u.message}),h.Button(`${a}.schema.error.retry`,{label:"ly.img.plugin-ai-generation-web.schema.error.retry",onClick:()=>{p()}})}});return}h.Spinner(`${a}.schema.loading`,{label:"ly.img.plugin-ai-generation-web.schema.loading.label"})}}var ar=Fa;async function $a(e,t){if(e.panelInput!=null)switch(e.panelInput.type){case"custom":return Qt(e,t);case"schema":return ar(e,t);default:e.config.debug&&console.warn(`Invalid panel input type '${panelInput.type}' - skipping`)}}var sr=$a;function _a(e){let{provider:t,options:{engine:r}}=e,n=t.output.history??"@imgly/local";if(n==null||n===!1)return;let i=r.asset.findAllSources();function o(){let a=`${t.id}.history`;for(;i.includes(a);)a+=`-${Math.random().toString(36).substring(2,6)}`;return a}if(n==="@imgly/local"){let a=o();return r.asset.addLocalSource(a),a}if(n==="@imgly/indexedDB"){let a=o();return r.asset.addSource(new St(a,r)),a}return n}var lr=_a;function ja(e,t){if(t==null||!t)return;let r=`${e.provider.id}.history`;return e.options.cesdk.ui.addAssetLibraryEntry({id:r,sourceIds:[t],sortBy:{sortKey:"insertedAt",sortingOrder:"Descending"},canRemove:!0,gridItemHeight:"square",gridBackgroundType:"cover"}),r}var ur=ja;var nt="@imgly/plugin-ai-generation",Na=`
|
|
5
5
|
<svg>
|
|
6
6
|
<symbol
|
|
7
7
|
fill="none"
|
|
@@ -19,7 +19,7 @@ Consider updating all AI plugins to the same version for optimal compatibility.`
|
|
|
19
19
|
fill="none"
|
|
20
20
|
xmlns="http://www.w3.org/2000/svg"
|
|
21
21
|
viewBox="0 0 24 24"
|
|
22
|
-
id="${
|
|
22
|
+
id="${nt}/image"
|
|
23
23
|
>
|
|
24
24
|
<path d="M3 16.5V18C3 19.6569 4.34315 21 6 21H18C19.6569 21 21 19.6569 21 18V6C21 4.34315 19.6569 3 18 3L17.999 5C18.5513 5 19 5.44772 19 6V18C19 18.5523 18.5523 19 18 19H6C5.44772 19 5 18.5523 5 18V16.5H3Z" fill="currentColor"/>
|
|
25
25
|
<path d="M13.0982 0.884877C12.9734 0.568323 12.5254 0.568322 12.4005 0.884876L11.7485 2.53819C11.7104 2.63483 11.6339 2.71134 11.5372 2.74945L9.8839 3.40151C9.56735 3.52636 9.56734 3.97436 9.8839 4.09921L11.5372 4.75126C11.6339 4.78938 11.7104 4.86588 11.7485 4.96253L12.4005 6.61584C12.5254 6.93239 12.9734 6.9324 13.0982 6.61584L13.7503 4.96253C13.7884 4.86588 13.8649 4.78938 13.9616 4.75126L15.6149 4.09921C15.9314 3.97436 15.9314 3.52636 15.6149 3.40151L13.9616 2.74945C13.8649 2.71134 13.7884 2.63483 13.7503 2.53819L13.0982 0.884877Z" fill="currentColor"/>
|
|
@@ -31,7 +31,7 @@ Consider updating all AI plugins to the same version for optimal compatibility.`
|
|
|
31
31
|
fill="none"
|
|
32
32
|
xmlns="http://www.w3.org/2000/svg"
|
|
33
33
|
viewBox="0 0 24 24"
|
|
34
|
-
id="${
|
|
34
|
+
id="${nt}/video"
|
|
35
35
|
>
|
|
36
36
|
<path d="M6 3C4.34315 3 3 4.34315 3 6V18C3 19.6569 4.34315 21 6 21H18C19.6569 21 21 19.6569 21 18V16.5H19V18C19 18.5523 18.5523 19 18 19H6C5.44772 19 5 18.5523 5 18V6C5 5.44772 5.44772 5 6 5V3Z" fill="currentColor"/>
|
|
37
37
|
<path d="M10.9025 0.8839C11.0273 0.567345 11.4753 0.567346 11.6002 0.883901L12.2522 2.53721C12.2904 2.63386 12.3669 2.71036 12.4635 2.74848L14.1168 3.40053C14.4334 3.52538 14.4334 3.97338 14.1168 4.09823L12.4635 4.75029C12.3669 4.7884 12.2904 4.86491 12.2522 4.96155L11.6002 6.61486C11.4753 6.93142 11.0273 6.93142 10.9025 6.61486L10.2504 4.96155C10.2123 4.86491 10.1358 4.7884 10.0392 4.75029L8.38585 4.09823C8.0693 3.97338 8.0693 3.52538 8.38585 3.40053L10.0392 2.74848C10.1358 2.71036 10.2123 2.63386 10.2504 2.53721L10.9025 0.8839Z" fill="currentColor"/>
|
|
@@ -42,7 +42,7 @@ Consider updating all AI plugins to the same version for optimal compatibility.`
|
|
|
42
42
|
fill="none"
|
|
43
43
|
xmlns="http://www.w3.org/2000/svg"
|
|
44
44
|
viewBox="0 0 24 24"
|
|
45
|
-
id="${
|
|
45
|
+
id="${nt}/audio"
|
|
46
46
|
>
|
|
47
47
|
<path d="M6 3.80273C4.2066 4.84016 3 6.77919 3 9.00004V12.8153C3 15.931 5.39501 18.4873 8.44444 18.7436V20.9645C8.44444 22.2198 9.89427 22.9198 10.8773 22.1392L15.1265 18.7647H15.5C17.8285 18.7647 19.8472 17.4384 20.8417 15.5H18.4187C17.6889 16.2784 16.6512 16.7647 15.5 16.7647H14.9522C14.6134 16.7647 14.2846 16.8794 14.0193 17.0901L10.4444 19.929V18.2597C10.4444 17.4341 9.77513 16.7647 8.9495 16.7647C7.80494 16.7647 6.77409 16.2779 6.05276 15.5H6V15.4419C5.37798 14.7439 5 13.8237 5 12.8153V9.00004C5 7.98559 5.37764 7.05935 6 6.35422V3.80273Z" fill="currentColor"/>
|
|
48
48
|
<path d="M11.6002 1.8839C11.4753 1.56735 11.0273 1.56735 10.9025 1.8839L10.2504 3.53721C10.2123 3.63386 10.1358 3.71036 10.0392 3.74848L8.38585 4.40053C8.0693 4.52538 8.0693 4.97338 8.38585 5.09823L10.0392 5.75029C10.1358 5.7884 10.2123 5.86491 10.2504 5.96155L10.9025 7.61486C11.0273 7.93142 11.4753 7.93142 11.6002 7.61486L12.2522 5.96155C12.2904 5.86491 12.3669 5.7884 12.4635 5.75029L14.1168 5.09823C14.4334 4.97338 14.4334 4.52538 14.1168 4.40053L12.4635 3.74848C12.3669 3.71036 12.2904 3.63386 12.2522 3.53721L11.6002 1.8839Z" fill="currentColor"/>
|
|
@@ -74,9 +74,9 @@ Consider updating all AI plugins to the same version for optimal compatibility.`
|
|
|
74
74
|
</symbol>
|
|
75
75
|
</svg>
|
|
76
76
|
`,dr=Na;function Va(e){return async(r,n,i)=>e.enable?(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(r,void 0,2)),await cr(2e3),await Ba(r,e,n)):i(r,n)}async function Ba(e,t,r){switch(t.kind){case"image":return za(e,t,r);case"video":return Ua(e,t,r);case"text":return qa(e,t,r);case"audio":return Ha(e,t,r);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function za(e,t,{engine:r}){let n,i,o=e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"?e.prompt:"AI Generated Image",a=o.match(/(\d+)x(\d+)/);if(a!=null)n=parseInt(a[1],10),i=parseInt(a[2],10);else if(t.blockInputs!=null&&(n=t.blockInputs.image.width,i=t.blockInputs.image.height),t.blockIds!=null&&Array.isArray(t.blockIds)&&t.blockIds.length>0){let[c]=t.blockIds,u=await Gt(c,r),l=await de(u,r);n=l.width,i=l.height}else n=512,i=512;return{kind:"image",url:`https://placehold.co/${n}x${i}/000000/FFF?text=${o.replace(" ","+").replace(`
|
|
77
|
-
`,"+")}`}}async function Ua(e,t,r){return Promise.resolve({kind:"video",url:"https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"})}async function qa(e,t,r){let n="";if(t.blockIds&&t.blockIds.length>0){let[a]=t.blockIds;r.engine.block.isValid(a)&&(n=r.engine.block.getString(a,"text/text"))}if(!n&&e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"){let a=e.prompt,s=a.match(/text:\s*"([^"]+)"/i)||a.match(/content:\s*"([^"]+)"/i)||a.match(/"([^"]+)"/);s&&s[1]&&(n=s[1])}let i=n.length||50,o="";if(e!=null&&typeof e=="object")if("language"in e&&typeof e.language=="string")o=fe(i,"translation");else if("type"in e&&typeof e.type=="string"){let a=e.type;o=fe(i,a)}else"customPrompt"in e?o=fe(i,"custom"):o=fe(i,"improved");else o=fe(i,"generated");return Qa(o,r.abortSignal)}async function*Qa(e,t){let r=Math.max(1,Math.ceil(e.length/20)),n=0;for(;n<e.length;){if(t?.aborted)return;let i=Math.min(n+r,e.length);yield{kind:"text",text:e.substring(0,i)},n=i,n<e.length&&await cr(100)}return{kind:"text",text:e}}function fe(e,t){let r="[DRY RUN - Dummy Text] ",n=r.length;if(e<=n)return r.substring(0,e);let i=e-n,o={translation:"Ceci est un texte fictif traduit qui maintient la longueur approximative.",professional:"Enhanced professional content with improved clarity and structure.",casual:"Relaxed, friendly text that keeps things simple and approachable.",formal:"Refined formal documentation that preserves original structure.",humorous:"Amusing content that brings lighthearted fun to the text.",improved:"Enhanced text that demonstrates better clarity and readability.",custom:"Customized content reflecting the requested modifications.",generated:"AI-generated content maintaining original length and structure."},a=o[t]||o.generated,s="";if(i<=a.length)s=a.substring(0,i);else{s=a;let c=[" Additional content continues with similar phrasing."," Further elaboration maintains the established tone."," Extended content preserves the original style."," Continued text follows the same pattern."],u=0;for(;s.length<i;){let l=c[u%c.length];if(s.length+l.length<=i)s+=l;else{s+=l.substring(0,i-s.length);break}u++}}return r+s}async function Ha(e,t,r){let n=3;if(e!=null&&typeof e=="object"){if("duration"in e&&typeof e.duration=="number")n=e.duration;else if("prompt"in e&&typeof e.prompt=="string"){let a=e.prompt.match(/(\d+)\s*(?:seconds?|secs?|s)\b/i);a&&(n=parseInt(a[1],10))}}return t.blockInputs?.audio?.duration&&(n=t.blockInputs.audio.duration),{kind:"audio",url:Ya(220,n),duration:n,thumbnailUrl:void 0}}function Ya(e,t){let n=Math.floor(44100*t),i=new Float32Array(n);for(let o=0;o<n;o++)i[o]=Math.sin(2*Math.PI*e*o/44100);return Za(i,44100)}function Za(e,t){let r=e.length,n=2,i=1,o=i*n,a=t*o,s=r*n,c=44+s,u=new ArrayBuffer(c),l=new DataView(u),d=(b,m)=>{for(let y=0;y<m.length;y++)l.setUint8(b+y,m.charCodeAt(y))};d(0,"RIFF"),l.setUint32(4,c-8,!0),d(8,"WAVE"),d(12,"fmt "),l.setUint32(16,16,!0),l.setUint16(20,1,!0),l.setUint16(22,i,!0),l.setUint32(24,t,!0),l.setUint32(28,a,!0),l.setUint16(32,o,!0),l.setUint16(34,16,!0),d(36,"data"),l.setUint32(40,s,!0);let p=44;for(let b=0;b<r;b++){let m=Math.max(-1,Math.min(1,e[b])),y=Math.round(m*32767);l.setInt16(p,y,!0),p+=2}let g=new Uint8Array(u),f="";for(let b=0;b<g.length;b++)f+=String.fromCharCode(g[b]);return`data:audio/wav;base64,${btoa(f)}`}async function cr(e){return new Promise(t=>{setTimeout(t,e)})}var pr=Va;var Ae="USER_CANCEL";function Wa(e){return async(t,r)=>{if(r?.abortSignal?.aborted)return{status:"aborted"};let n=qe([...e.provider.output.middleware??[],...r?.middlewares??[],Qe({enable:r?.debug}),pr({enable:r?.dryRun,kind:e.provider.kind})]),i={prevented:!1},o={blockIds:r?.blockIds,abortSignal:r?.abortSignal,engine:e.engine,cesdk:e.cesdk,preventDefault:()=>{i.prevented=!0},defaultPrevented:()=>i.prevented};try{let{result:a}=await n(e.provider.output.generate)(t,o);return r?.abortSignal?.aborted?{status:"aborted",middlewareOptions:o}:a instanceof Error?{status:"error",message:a.message,error:a,middlewareOptions:o}:a==null?{status:"error",message:"No output generated",middlewareOptions:o}:pe(a)?{status:"success",type:"async",output:a,middlewareOptions:o}:{status:"success",type:"sync",output:a,middlewareOptions:o}}catch(a){return te(a)?{status:"aborted",message:a.message,middlewareOptions:o}:a===Ae?{status:"aborted",message:a,middlewareOptions:o}:{status:"error",message:a instanceof Error?a.message:String(a),error:a,middlewareOptions:o}}}}var gr=Wa;async function Ja(e,t,r,n){let i={...n,provider:t},o={provider:t,panelInput:t.input?.panel,options:{cesdk:r.cesdk,engine:r.cesdk.engine},config:i,providerConfig:t.configuration};if(await t.initialize?.({...r,engine:r.cesdk.engine}),t.input?.quickActions?.supported){let d=t.kind,p=B.get();Object.keys(t.input.quickActions.supported).forEach(g=>{if(!p.getBy({id:g,type:"quick"})[0]){let h=`ly.img.plugin-ai-${d}-generation-web.quickAction.${g}`;r.cesdk.feature.enable(h,!0)}})}let a=lr(o),s=ur(o,a);o.options.historyAssetSourceId=a,o.options.historyAssetLibraryEntryId=s;let c=gr({provider:t,cesdk:r.cesdk,engine:r.cesdk.engine}),u=await sr(o,c);We(r.cesdk,"@imgly/plugin-ai-generation",dr);let l={provider:t,panel:{builderRenderFunction:u},history:{assetSourceId:a,assetLibraryEntryId:s},generate:c};return z.get().register(l),l}var ye=Ja;function Xa(e){let{kind:t,cesdk:r,historAssetSourceIds:n}=e,i=`ly.img.ai.${t}-generation.history`;if(r.engine.asset.findAllSources().includes(i))return i;let o=new Ct(i,r,n);return r.engine.asset.addSource(o),o.id}var mr=Xa;function Ee(e,t){return[`ly.img.plugin-ai-${e}-generation-web.${t}`,`ly.img.plugin-ai-generation-web.${t}`,`ly.img.plugin-ai-generation-web.defaults.${t}`]}async function es(e,t,r,n){let{cesdk:i}=r;T(i,{en:{"ly.img.plugin-ai-generation-web.generate":"Generate","ly.img.plugin-ai-generation-web.defaults.fromType.label":"Input","ly.img.plugin-ai-generation-web.defaults.providerSelect.label":"Provider","ly.img.plugin-ai-generation-web.defaults.fromText.label":"Text","ly.img.plugin-ai-generation-web.defaults.fromImage.label":"Image","ly.img.plugin-ai-generation-web.schema.loading.label":"Loading\u2026","ly.img.plugin-ai-generation-web.schema.error.title":"Failed to load schema","ly.img.plugin-ai-generation-web.schema.error.retry":"Retry","common.ai-generation.failed":"We couldn't generate the asset. Please try again.","ly.img.ai.error.insufficientCredits":"You've run out of AI credits. Generation is unavailable until more credits are available.","ly.img.ai.error.unauthorized":"AI generation isn't authorized. Please sign in again or contact support.","ly.img.ai.error.notAvailable":"This AI model isn't available on your current plan.","ly.img.ai.error.invalidRequest":"This request couldn't be processed. Please adjust your input and try again.","ly.img.ai.error.serviceUnavailable":"The AI service is temporarily unavailable. Please try again shortly.","ly.img.ai.error.network":"We couldn't reach the AI service. Please check your connection and try again."}});let o,a=[];if(n.debug&&console.groupCollapsed(`Initializing ${e} generation providers`),Array.isArray(t)){let u=await Promise.all(t.map(l=>ye(e,l,r,n)));a.push(...u),o=rs({kind:e,prefix:e,providerInitializationResults:a,cesdk:i})}else{let u=await Promise.all(t.fromText.map(d=>ye(e,d,r,n)));a.push(...u);let l=await Promise.all(t.fromImage.map(d=>ye(e,d,r,n)));a.push(...l),o=ts({kind:e,prefix:`ly.img.ai.${e}-generation`,initializedFromTextProviders:u,initializedFromImageProviders:l,cesdk:i})}n.debug&&console.groupEnd();let s=mr({kind:e,cesdk:r.cesdk,historAssetSourceIds:a.map(u=>u.history?.assetSourceId).filter(_)}),c;return s!=null&&(c=s,r.cesdk.ui.addAssetLibraryEntry({id:c,sourceIds:[s],sortBy:{sortKey:"insertedAt",sortingOrder:"Descending"},canRemove:!0,gridItemHeight:"square",gridBackgroundType:"cover"})),{panel:{builderRenderFunction:o},history:{assetSourceId:s,assetLibraryEntryId:c},providerInitializationResults:a}}function ts({kind:e,prefix:t,initializedFromTextProviders:r,initializedFromImageProviders:n,cesdk:i}){let o=r.length>0&&n.length>0;return s=>{let{builder:c,experimental:u,engine:l}=s,d=`ly.img.plugin-ai-${e}-generation-web.fromText`,p=i.feature.isEnabled(d,{engine:l}),g=`ly.img.plugin-ai-${e}-generation-web.fromImage`,f=i.feature.isEnabled(g,{engine:l}),h;p&&r.length>0&&(!f||n.length===0)?h="fromText":f&&n.length>0&&(!p||r.length===0)?h="fromImage":p&&f&&o&&(h="fromText");let b=u.global(`${t}.fromType`,h),m=[];b.value==="fromText"?m.push(...r):b.value==="fromImage"?m.push(...n):m.push(...r,...n);let y=r.map(({provider:E,panel:R})=>({id:E.id,label:U(E),builderRenderFunction:R?.builderRenderFunction})),v=n.map(({provider:E,panel:R})=>({id:E.id,label:U(E),builderRenderFunction:R?.builderRenderFunction})),w=s.experimental.global(`${t}.selectedProvider.fromText`,y[0]?.id),C=s.experimental.global(`${t}.selectedProvider.fromImage`,v[0]?.id),I=y.find(E=>E.id===w.value)??y[0],k=v.find(E=>E.id===C.value)??v[0],x=b.value==="fromText"?w:b.value==="fromImage"?C:void 0,S=b.value==="fromText"?I:b.value==="fromImage"?k:void 0,D=`ly.img.plugin-ai-${e}-generation-web.providerSelect`,A=i.feature.isEnabled(D,{engine:l});if(!p&&!f){c.Section(`${t}.noInputWarning.section`,{children:()=>{c.Text(`${t}.noInputWarning.text`,{content:"No input types are enabled. Please enable at least one input type (text or image) via the Feature API."})}});return}let O=p&&f&&r.length>0&&n.length>0,M=o&&O,K=m.length>1&&A;if((M||K)&&c.Section(`${t}.providerSelection.section`,{children:()=>{if(M){let E=[{id:"fromText",isEnabled:p,providers:r},{id:"fromImage",isEnabled:f,providers:n}].filter(({isEnabled:R,providers:Pe})=>R&&Pe.length>0).map(({id:R,providers:Pe})=>({id:R,label:Ee(e,`${R}.label`),icon:b.value!==R&&ns(Pe,s)?"@imgly/LoadingSpinner":void 0}));c.Tabs(`${t}.fromType.tabs`,{inputLabel:Ee(e,"fromType.label"),tabs:E,value:b.value??E[0].id,setValue:R=>{b.setValue(R)}})}if(K){let E=b.value==="fromText"?y:b.value==="fromImage"?v:[...y,...v];x!=null&&S!=null&&c.Select(`${t}.providerSelect.select`,{inputLabel:Ee(e,"providerSelect.label"),values:E,value:S,setValue:R=>{x.setValue(R.id)}})}}}),m.length>1)S?.builderRenderFunction?.(s);else{let E=m[0];E&&E.panel?.builderRenderFunction?.(s)}}}function rs({kind:e,prefix:t,providerInitializationResults:r,cesdk:n}){return o=>{let{builder:a,engine:s}=o;if(r.length===0)return;let c=`ly.img.plugin-ai-${e}-generation-web.providerSelect`;e==="audio"&&t&&(t.includes("speech")?c="ly.img.plugin-ai-audio-generation-web.speech.providerSelect":t.includes("sound")&&(c="ly.img.plugin-ai-audio-generation-web.sound.providerSelect"));let u=n.feature.isEnabled(c,{engine:s}),l=r.map(({provider:g,panel:f})=>({id:g.id,label:U(g),builderRenderFunction:f?.builderRenderFunction})),d=o.state(`${t}.selectedProvider`,l[0]?.id),p=l.find(g=>g.id===d.value)??l[0];r.length>1&&u&&d!=null&&p!=null&&a.Section(`${t}.providerSelection.section`,{children:()=>{a.Select(`${t}.providerSelect.select`,{inputLabel:Ee(e,"providerSelect.label"),values:l,value:p,setValue:g=>{d.setValue(g.id)}})}}),p?.builderRenderFunction?.(o)}}function ns(e,t){return e.length===0?!1:e.some(({provider:r})=>r.id==null?!1:t.experimental.global(re(r.id),!1).value)}var is=es;var q="ly.img.ai.editMode",be="ly.img.ai.metadata";async function os(e){let t=`ly.img.ai.${e.kind}.confirmation`;e.cesdk&&T(e.cesdk,{en:{"ly.img.ai.processing":"Generating...",[`${t}.cancel`]:"Cancel Generation",[`${t}.apply`]:"Apply Generation",[`${t}.before`]:"Before",[`${t}.after`]:"After"}});let r=n=>{let{engine:i,builder:o,state:a,payload:s}=n;if(s==null)return;let c=i.block.findAllSelected();if(c.length===0)return null;let u=new he(i,be),l=u.get(c[0]);if(l==null)return null;let d=()=>{c.forEach(p=>{u.clear(p)})};switch(l.status){case"processing":{o.Button(`${t}.spinner`,{label:[`ly.img.ai.${l.quickActionId}.processing`,"ly.img.ai.processing"],isLoading:!0}),o.Separator(`${t}.separator`),o.Button(`${t}.cancel`,{icon:"@imgly/Cross",tooltip:`${t}.cancel`,onClick:()=>{s.onCancelGeneration?.(),d()}});break}case"confirmation":{let p=a(`${t}.comparing`,"after"),g=s.applyCallbacks?.onCancel;g!=null&&o.Button(`${t}.cancel`,{icon:"@imgly/Cross",tooltip:`${t}.cancel`,onClick:()=>{g(),d()}});let f=s.applyCallbacks?.onBefore,h=s.applyCallbacks?.onAfter;f!=null&&h!=null&&o.ButtonGroup(`${t}.compare`,{children:()=>{o.Button(`${t}.compare.before`,{label:`${t}.before`,variant:"regular",isActive:p.value==="before",onClick:()=>{f(),p.setValue("before")}}),o.Button(`${t}.compare.after`,{label:`${t}.after`,variant:"regular",isActive:p.value==="after",onClick:()=>{h(),p.setValue("after")}})}});let b=s.applyCallbacks?.onApply;b!=null&&o.Button(`${t}.apply`,{icon:"@imgly/Checkmark",tooltip:`${t}.apply`,color:"accent",isDisabled:p.value!=="after",onClick:()=>{d();let m=e.cesdk.engine.editor;typeof m._update=="function"&&m._update(),b()}});break}default:}};return Promise.resolve(r)}var fr=os;function as(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}var yr=as;function ss(e){return`ly.img.ai.${e}.canvasMenu`}var br=ss;function ls(e){if(typeof e=="string")return e;if(e!=null&&typeof e=="object"&&"id"in e&&typeof e.id=="string")return e.id}function hr(e){let t=[];for(let r of e){let n=ls(r);n!=null&&t.push(n)}return t}function us(e){let{kind:t,cesdk:r,payload:n,defaultOrder:i}=e,o=br(t);if(n==null||!Array.isArray(n.children)){let s=r.ui.getCanvasMenuOrder().find(({id:c})=>c===o);return s!=null&&Array.isArray(s.children)?hr(s.children):i??[]}return hr(n.children)}var Ir=us;function ds(e,t){if(t.blockIds.some(r=>!t.cesdk.engine.block.isValid(r)))return Promise.resolve({applyCallbacks:{onBefore:()=>{},onAfter:()=>{},onCancel:()=>{},onApply:()=>{}}});switch(t.kind){case"text":return cs(e,t);case"image":return ps(e,t);case"video":return gs(e,t);case"audio":return ms(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function cs(e,t){let{cesdk:r,blockIds:n,abortSignal:i}=t,o=n.map(d=>r.engine.block.getString(d,"text/text")),a;if(e.type==="async"){let d="";for await(let p of e.output){if(i?.aborted)break;typeof p=="string"?d=p:p.kind==="text"&&(d=p.text),n.forEach(f=>{r.engine.block.setString(f,"text/text",d)}),a={kind:"text",text:d}}}else a=e.output;if(a==null||a.kind!=="text")throw new Error("Output kind from generation is not text");e.type==="sync"&&n.forEach(d=>{r.engine.block.setString(d,"text/text",a.text)});let s=()=>{t.blockIds.forEach(d=>{t.cesdk.engine.block.setString(d,"text/text",a.text)})},c=()=>{t.blockIds.forEach((d,p)=>{t.cesdk.engine.block.setString(d,"text/text",o[p])})};return{applyCallbacks:{onBefore:c,onAfter:s,onCancel:c,onApply:()=>{s(),t.cesdk.engine.editor.addUndoStep()}}}}async function ps(e,t){let{cesdk:r,blockIds:n,abortSignal:i}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,a=r.engine.block.getFill(o),s=r.engine.block.getSourceSet(a,"fill/image/sourceSet"),[c]=s,u=r.engine.block.getString(a,"fill/image/imageFileURI"),l=r.engine.block.getString(a,"fill/image/previewFileURI"),d=r.engine.block.getContentFillMode(o),p=await r.engine.editor.getMimeType(c?.uri??u),g=await de(c?.uri??u,t.cesdk.engine),f=g.width/g.height;if(i?.throwIfAborted(),p==="image/svg+xml")throw new Error("SVG images are not supported");let h=r.engine.block.getCropScaleX(o),b=r.engine.block.getCropScaleY(o),m=r.engine.block.getCropTranslationX(o),y=r.engine.block.getCropTranslationY(o),v=r.engine.block.getCropRotation(o),w=()=>{r.engine.block.setCropScaleX(o,h),r.engine.block.setCropScaleY(o,b),r.engine.block.setCropTranslationX(o,m),r.engine.block.setCropTranslationY(o,y),r.engine.block.setCropRotation(o,v),r.engine.block.setContentFillMode(o,d)};if(e.type==="async")throw new Error("Streaming generation is not supported yet from a panel");if(e.output.kind!=="image"||typeof e.output.url!="string")throw new Error("Output kind from generation is not an image");let I=e.output.url,k=await de(I,t.cesdk.engine),x=k.width/k.height,S=Math.abs(f-x)>.001,D=c?[{uri:I,width:k.width,height:k.height}]:void 0,A=I,O=()=>{D==null?r.engine.block.setString(a,"fill/image/imageFileURI",A):(r.engine.block.setString(a,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(a,"fill/image/sourceSet",D)),r.engine.block.setString(a,"fill/image/previewFileURI","")};O(),await r.engine.block.forceLoadResources([a]),S?r.engine.block.setContentFillMode(o,"Cover"):w();let M=()=>{if(s==null||s.length===0){if(u==null)throw new Error("No image URI found");r.engine.block.setString(a,"fill/image/imageFileURI",u)}else r.engine.block.setSourceSet(a,"fill/image/sourceSet",s),r.engine.block.setString(a,"fill/image/imageFileURI",u);r.engine.block.setString(a,"fill/image/previewFileURI",l),w()},K=()=>{O(),S?r.engine.block.setContentFillMode(o,"Cover"):w()};return{applyCallbacks:{onBefore:M,onAfter:K,onCancel:()=>{M()},onApply:()=>{K(),t.cesdk.engine.editor.addUndoStep()}}}}async function gs(e,t){throw new Error("Function not implemented.")}async function ms(e,t){throw new Error("Function not implemented.")}var vr=ds;function fs(e){let{engine:t,blockIdsToLock:r,editModeToLockTo:n}=e;function i(){let u=t.block.findAllSelected();return r.some(l=>u.includes(l))}let o=t.editor.onStateChanged(()=>{t.editor.getEditMode()!==n&&i()&&t.editor.setEditMode(n)}),a=t.block.onSelectionChanged(()=>{i()?t.editor.setEditMode(n):t.editor.setEditMode("Transform")});i()&&t.editor.setEditMode(n);let s=!1;return()=>{s||(a(),o(),t.editor.setEditMode("Transform"),s=!0)}}var wr=fs;var ot=class e{constructor(){this.actions=new Map}static get(){let t="__imgly_callbacks_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new e),r[t]}register(t,r){let n=this.actions.get(t)??{};this.actions.set(t,{...n,...r})}get(t){return this.actions.get(t)??{}}},j=ot;function ys(e){return async(t,r)=>{let n=r?.blockIds??e.blockIds;if(e.providerInitializationResult==null)return e.debug&&console.warn("[Generate] No provider initialization result found for quick action. Returning abortion status."),{status:"aborted"};let i=e.providerInitializationResult?.provider.input?.quickActions?.supported?.[e.quickAction.id];if(i==null)throw new Error("[Generate] Quick action input mapping failed. Ensure the provider supports this quick action.");let o=typeof i=="object"&&i!==null&&"mapInput"in i?i.mapInput:l=>l;e.close();let a=new AbortController,s=AbortSignal.any([e.abortSignal,a.signal].filter(_)),c=new he(e.cesdk.engine,be),u=e.lock??!0?wr({engine:e.cesdk.engine,editModeToLockTo:q,blockIdsToLock:n}):()=>{};n.forEach(l=>{j.get().register(l,{onCancelGeneration:()=>{a.abort(Ae),u(),e.cesdk.engine.block.isValid(l)&&(e.cesdk.engine.block.isValid(l)&&e.cesdk.engine.block.setState(l,{type:"Ready"}),c.clear(l))}})}),n?.forEach(l=>{c.set(l,{status:"processing",quickActionId:e.quickAction.id})}),n.forEach(l=>{e.cesdk.engine.block.isValid(l)&&e.cesdk.engine.block.setState(l,{type:"Pending",progress:0})});try{let l=await e.providerInitializationResult.generate(o(t),{blockIds:n,middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:s}),d=l.status;switch(d){case"success":{let{applyCallbacks:p}=await vr(l,{kind:e.providerInitializationResult.provider.kind,blockIds:n,cesdk:e.cesdk,abortSignal:s});if(n.forEach(g=>{e.cesdk.engine.block.isValid(g)&&e.cesdk.engine.block.setState(g,{type:"Ready"})}),e.confirmation){n.forEach(f=>{c.set(f,{status:"confirmation",quickActionId:e.quickAction.id})});let g={...p,onApply:async()=>{p.onApply(),u()},onCancel:()=>{p.onCancel(),u()}};n.forEach(f=>{j.get().register(f,{applyCallbacks:g})})}else n.forEach(g=>{e.cesdk.engine.block.isValid(g)&&c.clear(g)}),p.onApply(),u();return l}case"aborted":return e.debug&&console.log("Generation was aborted"),u(),n.forEach(p=>{e.cesdk.engine.block.isValid(p)&&c.clear(p)}),l;case"error":return u(),n.forEach(p=>{e.cesdk.engine.block.isValid(p)&&c.clear(p)}),ge(l.error??l.message,{cesdk:e.cesdk,provider:e.providerInitializationResult.provider,middlewareOptions:l.middlewareOptions}),l;default:throw new Error(`[Generate] Unknown result status ${d}.`)}}catch(l){throw e.cesdk.ui.showNotification({type:"error",message:"A technical issue has occurred."}),u(),n.forEach(d=>{e.cesdk.engine.block.isValid(d)&&c.clear(d)}),l}finally{n.forEach(l=>{e.cesdk.engine.block.isValid(l)&&e.cesdk.engine.block.setState(l,{type:"Ready"})})}}}var at=ys;function bs(e){let t=`ly.img.ai.${e.kind}}`;T(e.cesdk,{en:{"ly.img.plugin-ai-generation-web.defaults.quickAction.providerSelect.label":"Provider"}});let r=n=>{if(n.engine.editor.getEditMode()===q)return;let i=n.engine.block.findAllSelected();if(i.length===0)return;let o=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction`;if(!e.cesdk.feature.isEnabled(o,{engine:e.engine}))return;let{payload:s}=n,c=Ir({kind:e.kind,cesdk:e.cesdk,payload:s,defaultOrder:e.defaultOrder})??[];if(c.length===0)return;let u=hs(c).filter(I=>{if(I==="ly.img.separator")return!0;let k=I.id.replace("ly.img.",""),x=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.${k}`;if(!e.cesdk.feature.isEnabled(x,{engine:e.engine}))return!1;let D=I.scopes;if(D!=null&&D.length>0&&!i.every(O=>D.every(M=>e.engine.block.isAllowedByScope(O,M))))return!1;if(I.enable!=null){if(typeof I.enable=="function")return I.enable({engine:e.engine});if(typeof I.enable=="boolean")return I.enable}return!0}),l=[],d=e.providerInitializationResults.reduce((I,k)=>{if(k.provider.kind!==e.kind)return I;let x=u.map(S=>{if(S==="ly.img.separator")return S;if(k.provider.input?.quickActions?.supported?.[S.id]!=null)return{definition:S};{let D=z.get().getAll().filter(A=>A.provider.kind!==e.kind&&A.provider.id!==k.provider.id).find(A=>A.provider.input?.quickActions?.supported?.[S.id]!=null);if(D!=null){let A={definition:S,providerInitializationResult:D};return l.push(A),A}else return}}).filter(_);return x=yr(x),x.length===0||x.every(S=>S==="ly.img.separator")||x.every(S=>S==="ly.img.separator"||S.providerInitializationResult!=null)||I.push({providerInitializationResult:k,quickActions:x}),I},[]);if(d.length===0)if(l.length>0){let I=new Map;l.forEach(x=>{let S=x.definition.id;I.has(S)||I.set(S,x)});let k=Array.from(I.values());d.push({providerInitializationResult:k[0].providerInitializationResult??e.providerInitializationResults[0],quickActions:k})}else return;let p=d.map(({providerInitializationResult:I})=>({id:I.provider.id,label:U(I.provider)})),g=n.experimental.global(`${t}.currentProvider`,p[0]),f=d.find(({providerInitializationResult:{provider:{id:I}}})=>I===g.value?.id),h=i.every(I=>n.engine.block.getState(I).type==="Ready"),{builder:b,experimental:m,state:y}=n,v=y(`${t}.isGenerating`,!1),w=y(`${t}.toggleExpandedState`,void 0),C=async(I,k,x)=>{v.setValue(!0);try{return await x(I,k)}finally{v.setValue(!1)}};m.builder.Popover(`${t}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!h,isLoading:v.value,trailingIcon:null,children:({close:I})=>{if(w.value!==void 0){let k=f?.quickActions.find(A=>A!=="ly.img.separator"&&A.definition.id===w.value);if(k==null||k.definition.render==null)return;let x=d.filter(({quickActions:A})=>A.some(O=>O!=="ly.img.separator"&&O.definition.id===k.definition.id)).map(({providerInitializationResult:A})=>({id:A.provider.id,label:U(A.provider)})),S=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect`,D=e.cesdk.feature.isEnabled(S,{engine:e.engine});x.length>1&&D&&b.Section(`${t}.popover.expanded.header`,{children:()=>{b.Select(`${t}.expanded.providerSelect.select`,{inputLabel:[`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect.label`,"ly.img.plugin-ai-generation-web.defaults.quickAction.providerSelect.label"],values:x,...g})}}),b.Section(`${t}.popover.expanded.section`,{children:()=>k.definition.render({...n,toggleExpand:()=>{w.setValue(void 0)},isExpanded:!0,generate:at({blockIds:i,providerInitializationResult:k.providerInitializationResult??f?.providerInitializationResult,quickAction:k.definition,middlewares:[C],confirmation:k.definition.defaults?.confirmation??!0,lock:k.definition.defaults?.lock??!0,close:I,cesdk:e.cesdk,debug:e.debug,dryRun:e.dryRun}),close:I,providerId:k.providerInitializationResult?.provider.id??g.value.id})})}else{let k=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect`,x=e.cesdk.feature.isEnabled(k,{engine:e.engine});p.length>1&&x&&b.Section(`${t}.popover.header`,{children:()=>{b.Select(`${t}.providerSelect.select`,{inputLabel:[`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect.label`,"ly.img.plugin-ai-generation-web.defaults.quickAction.providerSelect.label"],values:p,...g})}}),b.Section(`${t}.popover.section`,{children:()=>{m.builder.Menu(`${t}.menu`,{children:()=>{f?.quickActions.forEach(S=>{if(S==="ly.img.separator"){b.Separator(`${t}.separator.${Math.random().toString()}`);return}S.definition.render!=null&&S.definition.render({...n,toggleExpand:()=>{w.setValue(S.definition.id)},isExpanded:!1,generate:at({blockIds:i,providerInitializationResult:S.providerInitializationResult??f?.providerInitializationResult,quickAction:S.definition,middlewares:[C],confirmation:S.definition.defaults?.confirmation??!0,close:I,cesdk:e.cesdk,debug:e.debug,dryRun:e.dryRun}),close:I,providerId:S.providerInitializationResult?.provider.id??g.value.id})})}})}})}}})};return Promise.resolve(r)}function hs(e){return e.map(t=>t==="ly.img.separator"?t:B.get().getBy({id:t,type:"quick"})[0]).filter(_)}var kr=bs;async function Is(e){let t=await kr({kind:e.kind,providerInitializationResults:e.providerInitializationResults,cesdk:e.cesdk,engine:e.engine,debug:e.debug,dryRun:e.dryRun,defaultOrder:e.defaultOrder}),r=await fr({kind:e.kind,cesdk:e.cesdk});return{renderFunction:i=>{let{engine:o}=i;if(o.editor.getEditMode()===q){let a=i.engine.block.findAllSelected();r({...i,payload:{...i.payload??{},applyCallbacks:{onBefore:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onBefore?.()})},onAfter:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onAfter?.()})},onCancel:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onCancel?.()})},onApply:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onApply?.()})}},onCancelGeneration:()=>{a.forEach(s=>{j.get().get(s).onCancelGeneration?.()})}}});return}t(i)}}}var vs=Is;var Q=class extends Error{constructor(t){super(ws(t)),this.name="GatewayError",this.code=t.code,this.status=t.status,this.operation=t.operation,this.provider=t.provider,this.upstreamStatus=t.upstreamStatus,this.requestId=t.requestId}};function st(e){return e instanceof Error&&e.name==="GatewayError"&&typeof e.code=="string"&&typeof e.status=="number"}function ws({operation:e,status:t,code:r,detail:n,requestId:i}){let o=[`Gateway ${e} failed:`,`${ks(t,r)} ${r}`];return n&&o.push(`- ${n}`),i&&o.push(`(request id: ${i})`),o.join(" ")}function ks(e,t){return e!==0?String(e):t==="network_error"?"network":"stream"}function Os(e){return e===401?"unauthorized":e===402?"insufficient_credits":e===403?"provider_not_authorized":e===404?"model_not_found":e===400?"invalid_request":e===504?"timeout":e===503?"provider_unavailable":e>=500?"internal_error":"unknown"}function Ss(e){if(!e)return{};let t;try{t=JSON.parse(e)}catch{return{}}if(t==null||typeof t!="object")return{};let r=t,n=r.error;if(n==null||typeof n!="object")return{};let i=n;return{code:typeof i.code=="string"?i.code:typeof i.type=="string"?i.type:void 0,message:typeof i.message=="string"?i.message:void 0,provider:typeof i.provider=="string"?i.provider:void 0,upstreamStatus:typeof i.upstream_status=="number"?i.upstream_status:void 0,requestId:Or(r)??Or(i)}}function Or(e){return typeof e.request_id=="string"?Sr(e.request_id):void 0}function Sr(e){let t=e?.trim();return t==null||t===""?void 0:t}async function ne(e,t){let r="";try{r=await e.text()}catch{}let n=Ss(r);return new Q({code:n.code??Os(e.status),status:e.status,operation:t,detail:n.message,provider:n.provider,upstreamStatus:n.upstreamStatus,requestId:Sr(e.headers.get("x-request-id"))??n.requestId})}function Cr(e,t){return new Q({code:"network_error",status:0,operation:t,detail:e instanceof Error?e.message:String(e)})}var Cs=5*60*1e3;async function xr(e,t){try{return await t()}catch(r){throw r?.name==="AbortError"?r:Cr(r,e)}}function lt(e,t,r,n=Cs){let i=e.replace(/\/$/,""),o=null,a=null;async function s(){return o!=null&&Date.now()<o.expiresAt?o.value:(a!=null||(a=t().then(u=>(o={value:u,expiresAt:Date.now()+n},u)).finally(()=>{a=null})),a)}async function c(u,l,d){let p=async()=>{let f=await s();return xr(d,()=>fetch(u,{...l,headers:{...l.headers,Authorization:`Bearer ${f}`,...r??{}}}))},g=await p();return g.status===401?(o=null,p()):g}return{async fetchSchema(u){let l=await c(`${i}/v1/models/schema?model=${encodeURIComponent(u)}`,{method:"GET",headers:{Accept:"application/json"}},"schema");if(!l.ok)throw await ne(l,"schema");return await l.json()},async upload(u,l){let d=await c(`${i}/v1/uploads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content_type:l})},"upload");if(!d.ok)throw await ne(d,"upload");let p=await d.json(),g=await xr("upload",()=>fetch(p.upload_url,{method:"PUT",headers:{"Content-Type":l},body:u}));if(!g.ok)throw await ne(g,"upload");return p},async generate(u,l,d){let p=await c(`${i}/v1/responses`,{method:"POST",signal:d.abortSignal,headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:u,...l})},"generate");if(!p.ok)throw await ne(p,"generate");return xs(p,d.abortSignal,d.outputFilter)},async*generateStream(u,l,d){let p=await c(`${i}/v1/responses`,{method:"POST",signal:d.abortSignal,headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:u,...l})},"generate");if(!p.ok)throw await ne(p,"generate");return yield*As(p,d.abortSignal)}}}function Ar(e){return new Q({code:e.error?.code??"generation_failed",status:0,operation:"generate",detail:e.error?.message,provider:e.error?.provider,upstreamStatus:e.error?.upstream_status,requestId:e.request_id})}async function xs(e,t,r){let n=e.body?.getReader();if(!n)throw new Error("Response body is not readable");let i=new TextDecoder,o="",a="";try{for(;;){if(t?.aborted)throw new Error("Generation aborted");let{done:s,value:c}=await n.read();if(s)break;o+=i.decode(c,{stream:!0});let u=o.split(`
|
|
77
|
+
`,"+")}`}}async function Ua(e,t,r){return Promise.resolve({kind:"video",url:"https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"})}async function qa(e,t,r){let n="";if(t.blockIds&&t.blockIds.length>0){let[a]=t.blockIds;r.engine.block.isValid(a)&&(n=r.engine.block.getString(a,"text/text"))}if(!n&&e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"){let a=e.prompt,s=a.match(/text:\s*"([^"]+)"/i)||a.match(/content:\s*"([^"]+)"/i)||a.match(/"([^"]+)"/);s&&s[1]&&(n=s[1])}let i=n.length||50,o="";if(e!=null&&typeof e=="object")if("language"in e&&typeof e.language=="string")o=fe(i,"translation");else if("type"in e&&typeof e.type=="string"){let a=e.type;o=fe(i,a)}else"customPrompt"in e?o=fe(i,"custom"):o=fe(i,"improved");else o=fe(i,"generated");return Qa(o,r.abortSignal)}async function*Qa(e,t){let r=Math.max(1,Math.ceil(e.length/20)),n=0;for(;n<e.length;){if(t?.aborted)return;let i=Math.min(n+r,e.length);yield{kind:"text",text:e.substring(0,i)},n=i,n<e.length&&await cr(100)}return{kind:"text",text:e}}function fe(e,t){let r="[DRY RUN - Dummy Text] ",n=r.length;if(e<=n)return r.substring(0,e);let i=e-n,o={translation:"Ceci est un texte fictif traduit qui maintient la longueur approximative.",professional:"Enhanced professional content with improved clarity and structure.",casual:"Relaxed, friendly text that keeps things simple and approachable.",formal:"Refined formal documentation that preserves original structure.",humorous:"Amusing content that brings lighthearted fun to the text.",improved:"Enhanced text that demonstrates better clarity and readability.",custom:"Customized content reflecting the requested modifications.",generated:"AI-generated content maintaining original length and structure."},a=o[t]||o.generated,s="";if(i<=a.length)s=a.substring(0,i);else{s=a;let c=[" Additional content continues with similar phrasing."," Further elaboration maintains the established tone."," Extended content preserves the original style."," Continued text follows the same pattern."],u=0;for(;s.length<i;){let l=c[u%c.length];if(s.length+l.length<=i)s+=l;else{s+=l.substring(0,i-s.length);break}u++}}return r+s}async function Ha(e,t,r){let n=3;if(e!=null&&typeof e=="object"){if("duration"in e&&typeof e.duration=="number")n=e.duration;else if("prompt"in e&&typeof e.prompt=="string"){let a=e.prompt.match(/(\d+)\s*(?:seconds?|secs?|s)\b/i);a&&(n=parseInt(a[1],10))}}return t.blockInputs?.audio?.duration&&(n=t.blockInputs.audio.duration),{kind:"audio",url:Ya(220,n),duration:n,thumbnailUrl:void 0}}function Ya(e,t){let n=Math.floor(44100*t),i=new Float32Array(n);for(let o=0;o<n;o++)i[o]=Math.sin(2*Math.PI*e*o/44100);return Za(i,44100)}function Za(e,t){let r=e.length,n=2,i=1,o=i*n,a=t*o,s=r*n,c=44+s,u=new ArrayBuffer(c),l=new DataView(u),d=(b,m)=>{for(let y=0;y<m.length;y++)l.setUint8(b+y,m.charCodeAt(y))};d(0,"RIFF"),l.setUint32(4,c-8,!0),d(8,"WAVE"),d(12,"fmt "),l.setUint32(16,16,!0),l.setUint16(20,1,!0),l.setUint16(22,i,!0),l.setUint32(24,t,!0),l.setUint32(28,a,!0),l.setUint16(32,o,!0),l.setUint16(34,16,!0),d(36,"data"),l.setUint32(40,s,!0);let p=44;for(let b=0;b<r;b++){let m=Math.max(-1,Math.min(1,e[b])),y=Math.round(m*32767);l.setInt16(p,y,!0),p+=2}let g=new Uint8Array(u),f="";for(let b=0;b<g.length;b++)f+=String.fromCharCode(g[b]);return`data:audio/wav;base64,${btoa(f)}`}async function cr(e){return new Promise(t=>{setTimeout(t,e)})}var pr=Va;var Ae="USER_CANCEL";function Wa(e){return async(t,r)=>{if(r?.abortSignal?.aborted)return{status:"aborted"};let n=Ue([...e.provider.output.middleware??[],...r?.middlewares??[],qe({enable:r?.debug}),pr({enable:r?.dryRun,kind:e.provider.kind})]),i={prevented:!1},o={blockIds:r?.blockIds,abortSignal:r?.abortSignal,engine:e.engine,cesdk:e.cesdk,preventDefault:()=>{i.prevented=!0},defaultPrevented:()=>i.prevented};try{let{result:a}=await n(e.provider.output.generate)(t,o);return r?.abortSignal?.aborted?{status:"aborted",middlewareOptions:o}:a instanceof Error?{status:"error",message:a.message,error:a,middlewareOptions:o}:a==null?{status:"error",message:"No output generated",middlewareOptions:o}:pe(a)?{status:"success",type:"async",output:a,middlewareOptions:o}:{status:"success",type:"sync",output:a,middlewareOptions:o}}catch(a){return te(a)?{status:"aborted",message:a.message,middlewareOptions:o}:a===Ae?{status:"aborted",message:a,middlewareOptions:o}:{status:"error",message:a instanceof Error?a.message:String(a),error:a,middlewareOptions:o}}}}var gr=Wa;async function Ja(e,t,r,n){let i={...n,provider:t},o={provider:t,panelInput:t.input?.panel,options:{cesdk:r.cesdk,engine:r.cesdk.engine},config:i,providerConfig:t.configuration};if(await t.initialize?.({...r,engine:r.cesdk.engine}),t.input?.quickActions?.supported){let d=t.kind,p=B.get();Object.keys(t.input.quickActions.supported).forEach(g=>{if(!p.getBy({id:g,type:"quick"})[0]){let h=`ly.img.plugin-ai-${d}-generation-web.quickAction.${g}`;r.cesdk.feature.enable(h,!0)}})}let a=lr(o),s=ur(o,a);o.options.historyAssetSourceId=a,o.options.historyAssetLibraryEntryId=s;let c=gr({provider:t,cesdk:r.cesdk,engine:r.cesdk.engine}),u=await sr(o,c);Ze(r.cesdk,"@imgly/plugin-ai-generation",dr);let l={provider:t,panel:{builderRenderFunction:u},history:{assetSourceId:a,assetLibraryEntryId:s},generate:c};return z.get().register(l),l}var ye=Ja;function Xa(e){let{kind:t,cesdk:r,historAssetSourceIds:n}=e,i=`ly.img.ai.${t}-generation.history`;if(r.engine.asset.findAllSources().includes(i))return i;let o=new Ct(i,r,n);return r.engine.asset.addSource(o),o.id}var mr=Xa;function it(e,t){return[`ly.img.plugin-ai-${e}-generation-web.${t}`,`ly.img.plugin-ai-generation-web.${t}`,`ly.img.plugin-ai-${e}-generation-web.defaults.${t}`,`ly.img.plugin-ai-generation-web.defaults.${t}`]}async function es(e,t,r,n){let{cesdk:i}=r;T(i,{en:{"ly.img.plugin-ai-generation-web.generate":"Generate","ly.img.plugin-ai-generation-web.defaults.providerSelect.label":"Provider","ly.img.plugin-ai-generation-web.defaults.fromText.label":"Text","ly.img.plugin-ai-generation-web.defaults.fromImage.label":"Image","ly.img.plugin-ai-generation-web.schema.loading.label":"Loading\u2026","ly.img.plugin-ai-generation-web.schema.error.title":"Failed to load schema","ly.img.plugin-ai-generation-web.schema.error.retry":"Retry","common.ai-generation.failed":"We couldn't generate the asset. Please try again.","ly.img.ai.error.insufficientCredits":"You've run out of AI credits. Generation is unavailable until more credits are available.","ly.img.ai.error.unauthorized":"AI generation isn't authorized. Please sign in again or contact support.","ly.img.ai.error.notAvailable":"This AI model isn't available on your current plan.","ly.img.ai.error.invalidRequest":"This request couldn't be processed. Please adjust your input and try again.","ly.img.ai.error.serviceUnavailable":"The AI service is temporarily unavailable. Please try again shortly.","ly.img.ai.error.network":"We couldn't reach the AI service. Please check your connection and try again."}});let o,a=[];if(n.debug&&console.groupCollapsed(`Initializing ${e} generation providers`),Array.isArray(t)){let u=await Promise.all(t.map(l=>ye(e,l,r,n)));a.push(...u),o=rs({kind:e,prefix:e,providerInitializationResults:a,cesdk:i})}else{let u=await Promise.all(t.fromText.map(d=>ye(e,d,r,n)));a.push(...u);let l=await Promise.all(t.fromImage.map(d=>ye(e,d,r,n)));a.push(...l),o=ts({kind:e,prefix:`ly.img.ai.${e}-generation`,initializedFromTextProviders:u,initializedFromImageProviders:l,cesdk:i})}n.debug&&console.groupEnd();let s=mr({kind:e,cesdk:r.cesdk,historAssetSourceIds:a.map(u=>u.history?.assetSourceId).filter(_)}),c;return s!=null&&(c=s,r.cesdk.ui.addAssetLibraryEntry({id:c,sourceIds:[s],sortBy:{sortKey:"insertedAt",sortingOrder:"Descending"},canRemove:!0,gridItemHeight:"square",gridBackgroundType:"cover"})),{panel:{builderRenderFunction:o},history:{assetSourceId:s,assetLibraryEntryId:c},providerInitializationResults:a}}function ts({kind:e,prefix:t,initializedFromTextProviders:r,initializedFromImageProviders:n,cesdk:i}){let o=r.length>0&&n.length>0;return s=>{let{builder:c,experimental:u,engine:l}=s,d=`ly.img.plugin-ai-${e}-generation-web.fromText`,p=i.feature.isEnabled(d,{engine:l}),g=`ly.img.plugin-ai-${e}-generation-web.fromImage`,f=i.feature.isEnabled(g,{engine:l}),h;p&&r.length>0&&(!f||n.length===0)?h="fromText":f&&n.length>0&&(!p||r.length===0)?h="fromImage":p&&f&&o&&(h="fromText");let b=u.global(`${t}.fromType`,h),m=[];b.value==="fromText"?m.push(...r):b.value==="fromImage"?m.push(...n):m.push(...r,...n);let y=r.map(({provider:E,panel:R})=>({id:E.id,label:U(E),builderRenderFunction:R?.builderRenderFunction})),v=n.map(({provider:E,panel:R})=>({id:E.id,label:U(E),builderRenderFunction:R?.builderRenderFunction})),w=s.experimental.global(`${t}.selectedProvider.fromText`,y[0]?.id),C=s.experimental.global(`${t}.selectedProvider.fromImage`,v[0]?.id),I=y.find(E=>E.id===w.value)??y[0],k=v.find(E=>E.id===C.value)??v[0],x=b.value==="fromText"?w:b.value==="fromImage"?C:void 0,S=b.value==="fromText"?I:b.value==="fromImage"?k:void 0,D=`ly.img.plugin-ai-${e}-generation-web.providerSelect`,A=i.feature.isEnabled(D,{engine:l});if(!p&&!f){c.Section(`${t}.noInputWarning.section`,{children:()=>{c.Text(`${t}.noInputWarning.text`,{content:"No input types are enabled. Please enable at least one input type (text or image) via the Feature API."})}});return}let O=p&&f&&r.length>0&&n.length>0,M=o&&O,K=m.length>1&&A;if((M||K)&&c.Section(`${t}.providerSelection.section`,{children:()=>{if(M){let E=[{id:"fromText",isEnabled:p,providers:r},{id:"fromImage",isEnabled:f,providers:n}].filter(({isEnabled:R,providers:Ee})=>R&&Ee.length>0).map(({id:R,providers:Ee})=>({id:R,label:it(e,`${R}.label`),icon:b.value!==R&&ns(Ee,s)?"@imgly/LoadingSpinner":void 0}));c.Tabs(`${t}.fromType.tabs`,{tabs:E,value:b.value??E[0].id,setValue:R=>{b.setValue(R)}})}if(K){let E=b.value==="fromText"?y:b.value==="fromImage"?v:[...y,...v];x!=null&&S!=null&&c.Select(`${t}.providerSelect.select`,{inputLabel:it(e,"providerSelect.label"),values:E,value:S,setValue:R=>{x.setValue(R.id)}})}}}),m.length>1)S?.builderRenderFunction?.(s);else{let E=m[0];E&&E.panel?.builderRenderFunction?.(s)}}}function rs({kind:e,prefix:t,providerInitializationResults:r,cesdk:n}){return o=>{let{builder:a,engine:s}=o;if(r.length===0)return;let c=`ly.img.plugin-ai-${e}-generation-web.providerSelect`;e==="audio"&&t&&(t.includes("speech")?c="ly.img.plugin-ai-audio-generation-web.speech.providerSelect":t.includes("sound")&&(c="ly.img.plugin-ai-audio-generation-web.sound.providerSelect"));let u=n.feature.isEnabled(c,{engine:s}),l=r.map(({provider:g,panel:f})=>({id:g.id,label:U(g),builderRenderFunction:f?.builderRenderFunction})),d=o.state(`${t}.selectedProvider`,l[0]?.id),p=l.find(g=>g.id===d.value)??l[0];r.length>1&&u&&d!=null&&p!=null&&a.Section(`${t}.providerSelection.section`,{children:()=>{a.Select(`${t}.providerSelect.select`,{inputLabel:it(e,"providerSelect.label"),values:l,value:p,setValue:g=>{d.setValue(g.id)}})}}),p?.builderRenderFunction?.(o)}}function ns(e,t){return e.length===0?!1:e.some(({provider:r})=>r.id==null?!1:t.experimental.global(re(r.id),!1).value)}var is=es;var q="ly.img.ai.editMode",be="ly.img.ai.metadata";async function os(e){let t=`ly.img.ai.${e.kind}.confirmation`;e.cesdk&&T(e.cesdk,{en:{"ly.img.ai.processing":"Generating...",[`${t}.cancel`]:"Cancel Generation",[`${t}.apply`]:"Apply Generation",[`${t}.before`]:"Before",[`${t}.after`]:"After"}});let r=n=>{let{engine:i,builder:o,state:a,payload:s}=n;if(s==null)return;let c=i.block.findAllSelected();if(c.length===0)return null;let u=new he(i,be),l=u.get(c[0]);if(l==null)return null;let d=()=>{c.forEach(p=>{u.clear(p)})};switch(l.status){case"processing":{o.Button(`${t}.spinner`,{label:[`ly.img.ai.${l.quickActionId}.processing`,"ly.img.ai.processing"],isLoading:!0}),o.Separator(`${t}.separator`),o.Button(`${t}.cancel`,{icon:"@imgly/Cross",tooltip:`${t}.cancel`,onClick:()=>{s.onCancelGeneration?.(),d()}});break}case"confirmation":{let p=a(`${t}.comparing`,"after"),g=s.applyCallbacks?.onCancel;g!=null&&o.Button(`${t}.cancel`,{icon:"@imgly/Cross",tooltip:`${t}.cancel`,onClick:()=>{g(),d()}});let f=s.applyCallbacks?.onBefore,h=s.applyCallbacks?.onAfter;f!=null&&h!=null&&o.ButtonGroup(`${t}.compare`,{children:()=>{o.Button(`${t}.compare.before`,{label:`${t}.before`,variant:"regular",isActive:p.value==="before",onClick:()=>{f(),p.setValue("before")}}),o.Button(`${t}.compare.after`,{label:`${t}.after`,variant:"regular",isActive:p.value==="after",onClick:()=>{h(),p.setValue("after")}})}});let b=s.applyCallbacks?.onApply;b!=null&&o.Button(`${t}.apply`,{icon:"@imgly/Checkmark",tooltip:`${t}.apply`,color:"accent",isDisabled:p.value!=="after",onClick:()=>{d();let m=e.cesdk.engine.editor;typeof m._update=="function"&&m._update(),b()}});break}default:}};return Promise.resolve(r)}var fr=os;function as(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}var yr=as;function ss(e){return`ly.img.ai.${e}.canvasMenu`}var br=ss;function ls(e){if(typeof e=="string")return e;if(e!=null&&typeof e=="object"&&"id"in e&&typeof e.id=="string")return e.id}function hr(e){let t=[];for(let r of e){let n=ls(r);n!=null&&t.push(n)}return t}function us(e){let{kind:t,cesdk:r,payload:n,defaultOrder:i}=e,o=br(t);if(n==null||!Array.isArray(n.children)){let s=r.ui.getCanvasMenuOrder().find(({id:c})=>c===o);return s!=null&&Array.isArray(s.children)?hr(s.children):i??[]}return hr(n.children)}var Ir=us;function ds(e,t){if(t.blockIds.some(r=>!t.cesdk.engine.block.isValid(r)))return Promise.resolve({applyCallbacks:{onBefore:()=>{},onAfter:()=>{},onCancel:()=>{},onApply:()=>{}}});switch(t.kind){case"text":return cs(e,t);case"image":return ps(e,t);case"video":return gs(e,t);case"audio":return ms(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function cs(e,t){let{cesdk:r,blockIds:n,abortSignal:i}=t,o=n.map(d=>r.engine.block.getString(d,"text/text")),a;if(e.type==="async"){let d="";for await(let p of e.output){if(i?.aborted)break;typeof p=="string"?d=p:p.kind==="text"&&(d=p.text),n.forEach(f=>{r.engine.block.setString(f,"text/text",d)}),a={kind:"text",text:d}}}else a=e.output;if(a==null||a.kind!=="text")throw new Error("Output kind from generation is not text");e.type==="sync"&&n.forEach(d=>{r.engine.block.setString(d,"text/text",a.text)});let s=()=>{t.blockIds.forEach(d=>{t.cesdk.engine.block.setString(d,"text/text",a.text)})},c=()=>{t.blockIds.forEach((d,p)=>{t.cesdk.engine.block.setString(d,"text/text",o[p])})};return{applyCallbacks:{onBefore:c,onAfter:s,onCancel:c,onApply:()=>{s(),t.cesdk.engine.editor.addUndoStep()}}}}async function ps(e,t){let{cesdk:r,blockIds:n,abortSignal:i}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,a=r.engine.block.getFill(o),s=r.engine.block.getSourceSet(a,"fill/image/sourceSet"),[c]=s,u=r.engine.block.getString(a,"fill/image/imageFileURI"),l=r.engine.block.getString(a,"fill/image/previewFileURI"),d=r.engine.block.getContentFillMode(o),p=await r.engine.editor.getMimeType(c?.uri??u),g=await de(c?.uri??u,t.cesdk.engine),f=g.width/g.height;if(i?.throwIfAborted(),p==="image/svg+xml")throw new Error("SVG images are not supported");let h=r.engine.block.getCropScaleX(o),b=r.engine.block.getCropScaleY(o),m=r.engine.block.getCropTranslationX(o),y=r.engine.block.getCropTranslationY(o),v=r.engine.block.getCropRotation(o),w=()=>{r.engine.block.setCropScaleX(o,h),r.engine.block.setCropScaleY(o,b),r.engine.block.setCropTranslationX(o,m),r.engine.block.setCropTranslationY(o,y),r.engine.block.setCropRotation(o,v),r.engine.block.setContentFillMode(o,d)};if(e.type==="async")throw new Error("Streaming generation is not supported yet from a panel");if(e.output.kind!=="image"||typeof e.output.url!="string")throw new Error("Output kind from generation is not an image");let I=e.output.url,k=await de(I,t.cesdk.engine),x=k.width/k.height,S=Math.abs(f-x)>.001,D=c?[{uri:I,width:k.width,height:k.height}]:void 0,A=I,O=()=>{D==null?r.engine.block.setString(a,"fill/image/imageFileURI",A):(r.engine.block.setString(a,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(a,"fill/image/sourceSet",D)),r.engine.block.setString(a,"fill/image/previewFileURI","")};O(),await r.engine.block.forceLoadResources([a]),S?r.engine.block.setContentFillMode(o,"Cover"):w();let M=()=>{if(s==null||s.length===0){if(u==null)throw new Error("No image URI found");r.engine.block.setString(a,"fill/image/imageFileURI",u)}else r.engine.block.setSourceSet(a,"fill/image/sourceSet",s),r.engine.block.setString(a,"fill/image/imageFileURI",u);r.engine.block.setString(a,"fill/image/previewFileURI",l),w()},K=()=>{O(),S?r.engine.block.setContentFillMode(o,"Cover"):w()};return{applyCallbacks:{onBefore:M,onAfter:K,onCancel:()=>{M()},onApply:()=>{K(),t.cesdk.engine.editor.addUndoStep()}}}}async function gs(e,t){throw new Error("Function not implemented.")}async function ms(e,t){throw new Error("Function not implemented.")}var vr=ds;function fs(e){let{engine:t,blockIdsToLock:r,editModeToLockTo:n}=e;function i(){let u=t.block.findAllSelected();return r.some(l=>u.includes(l))}let o=t.editor.onStateChanged(()=>{t.editor.getEditMode()!==n&&i()&&t.editor.setEditMode(n)}),a=t.block.onSelectionChanged(()=>{i()?t.editor.setEditMode(n):t.editor.setEditMode("Transform")});i()&&t.editor.setEditMode(n);let s=!1;return()=>{s||(a(),o(),t.editor.setEditMode("Transform"),s=!0)}}var wr=fs;var ot=class e{constructor(){this.actions=new Map}static get(){let t="__imgly_callbacks_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new e),r[t]}register(t,r){let n=this.actions.get(t)??{};this.actions.set(t,{...n,...r})}get(t){return this.actions.get(t)??{}}},j=ot;function ys(e){return async(t,r)=>{let n=r?.blockIds??e.blockIds;if(e.providerInitializationResult==null)return e.debug&&console.warn("[Generate] No provider initialization result found for quick action. Returning abortion status."),{status:"aborted"};let i=e.providerInitializationResult?.provider.input?.quickActions?.supported?.[e.quickAction.id];if(i==null)throw new Error("[Generate] Quick action input mapping failed. Ensure the provider supports this quick action.");let o=typeof i=="object"&&i!==null&&"mapInput"in i?i.mapInput:l=>l;e.close();let a=new AbortController,s=AbortSignal.any([e.abortSignal,a.signal].filter(_)),c=new he(e.cesdk.engine,be),u=e.lock??!0?wr({engine:e.cesdk.engine,editModeToLockTo:q,blockIdsToLock:n}):()=>{};n.forEach(l=>{j.get().register(l,{onCancelGeneration:()=>{a.abort(Ae),u(),e.cesdk.engine.block.isValid(l)&&(e.cesdk.engine.block.isValid(l)&&e.cesdk.engine.block.setState(l,{type:"Ready"}),c.clear(l))}})}),n?.forEach(l=>{c.set(l,{status:"processing",quickActionId:e.quickAction.id})}),n.forEach(l=>{e.cesdk.engine.block.isValid(l)&&e.cesdk.engine.block.setState(l,{type:"Pending",progress:0})});try{let l=await e.providerInitializationResult.generate(o(t),{blockIds:n,middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:s}),d=l.status;switch(d){case"success":{let{applyCallbacks:p}=await vr(l,{kind:e.providerInitializationResult.provider.kind,blockIds:n,cesdk:e.cesdk,abortSignal:s});if(n.forEach(g=>{e.cesdk.engine.block.isValid(g)&&e.cesdk.engine.block.setState(g,{type:"Ready"})}),e.confirmation){n.forEach(f=>{c.set(f,{status:"confirmation",quickActionId:e.quickAction.id})});let g={...p,onApply:async()=>{p.onApply(),u()},onCancel:()=>{p.onCancel(),u()}};n.forEach(f=>{j.get().register(f,{applyCallbacks:g})})}else n.forEach(g=>{e.cesdk.engine.block.isValid(g)&&c.clear(g)}),p.onApply(),u();return l}case"aborted":return e.debug&&console.log("Generation was aborted"),u(),n.forEach(p=>{e.cesdk.engine.block.isValid(p)&&c.clear(p)}),l;case"error":return u(),n.forEach(p=>{e.cesdk.engine.block.isValid(p)&&c.clear(p)}),ge(l.error??l.message,{cesdk:e.cesdk,provider:e.providerInitializationResult.provider,middlewareOptions:l.middlewareOptions}),l;default:throw new Error(`[Generate] Unknown result status ${d}.`)}}catch(l){throw e.cesdk.ui.showNotification({type:"error",message:"A technical issue has occurred."}),u(),n.forEach(d=>{e.cesdk.engine.block.isValid(d)&&c.clear(d)}),l}finally{n.forEach(l=>{e.cesdk.engine.block.isValid(l)&&e.cesdk.engine.block.setState(l,{type:"Ready"})})}}}var at=ys;function bs(e){let t=`ly.img.ai.${e.kind}}`;T(e.cesdk,{en:{"ly.img.plugin-ai-generation-web.defaults.quickAction.providerSelect.label":"Provider"}});let r=n=>{if(n.engine.editor.getEditMode()===q)return;let i=n.engine.block.findAllSelected();if(i.length===0)return;let o=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction`;if(!e.cesdk.feature.isEnabled(o,{engine:e.engine}))return;let{payload:s}=n,c=Ir({kind:e.kind,cesdk:e.cesdk,payload:s,defaultOrder:e.defaultOrder})??[];if(c.length===0)return;let u=hs(c).filter(I=>{if(I==="ly.img.separator")return!0;let k=I.id.replace("ly.img.",""),x=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.${k}`;if(!e.cesdk.feature.isEnabled(x,{engine:e.engine}))return!1;let D=I.scopes;if(D!=null&&D.length>0&&!i.every(O=>D.every(M=>e.engine.block.isAllowedByScope(O,M))))return!1;if(I.enable!=null){if(typeof I.enable=="function")return I.enable({engine:e.engine});if(typeof I.enable=="boolean")return I.enable}return!0}),l=[],d=e.providerInitializationResults.reduce((I,k)=>{if(k.provider.kind!==e.kind)return I;let x=u.map(S=>{if(S==="ly.img.separator")return S;if(k.provider.input?.quickActions?.supported?.[S.id]!=null)return{definition:S};{let D=z.get().getAll().filter(A=>A.provider.kind!==e.kind&&A.provider.id!==k.provider.id).find(A=>A.provider.input?.quickActions?.supported?.[S.id]!=null);if(D!=null){let A={definition:S,providerInitializationResult:D};return l.push(A),A}else return}}).filter(_);return x=yr(x),x.length===0||x.every(S=>S==="ly.img.separator")||x.every(S=>S==="ly.img.separator"||S.providerInitializationResult!=null)||I.push({providerInitializationResult:k,quickActions:x}),I},[]);if(d.length===0)if(l.length>0){let I=new Map;l.forEach(x=>{let S=x.definition.id;I.has(S)||I.set(S,x)});let k=Array.from(I.values());d.push({providerInitializationResult:k[0].providerInitializationResult??e.providerInitializationResults[0],quickActions:k})}else return;let p=d.map(({providerInitializationResult:I})=>({id:I.provider.id,label:U(I.provider)})),g=n.experimental.global(`${t}.currentProvider`,p[0]),f=d.find(({providerInitializationResult:{provider:{id:I}}})=>I===g.value?.id),h=i.every(I=>n.engine.block.getState(I).type==="Ready"),{builder:b,experimental:m,state:y}=n,v=y(`${t}.isGenerating`,!1),w=y(`${t}.toggleExpandedState`,void 0),C=async(I,k,x)=>{v.setValue(!0);try{return await x(I,k)}finally{v.setValue(!1)}};m.builder.Popover(`${t}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!h,isLoading:v.value,trailingIcon:null,children:({close:I})=>{if(w.value!==void 0){let k=f?.quickActions.find(A=>A!=="ly.img.separator"&&A.definition.id===w.value);if(k==null||k.definition.render==null)return;let x=d.filter(({quickActions:A})=>A.some(O=>O!=="ly.img.separator"&&O.definition.id===k.definition.id)).map(({providerInitializationResult:A})=>({id:A.provider.id,label:U(A.provider)})),S=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect`,D=e.cesdk.feature.isEnabled(S,{engine:e.engine});x.length>1&&D&&b.Section(`${t}.popover.expanded.header`,{children:()=>{b.Select(`${t}.expanded.providerSelect.select`,{inputLabel:[`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect.label`,"ly.img.plugin-ai-generation-web.defaults.quickAction.providerSelect.label"],values:x,...g})}}),b.Section(`${t}.popover.expanded.section`,{children:()=>k.definition.render({...n,toggleExpand:()=>{w.setValue(void 0)},isExpanded:!0,generate:at({blockIds:i,providerInitializationResult:k.providerInitializationResult??f?.providerInitializationResult,quickAction:k.definition,middlewares:[C],confirmation:k.definition.defaults?.confirmation??!0,lock:k.definition.defaults?.lock??!0,close:I,cesdk:e.cesdk,debug:e.debug,dryRun:e.dryRun}),close:I,providerId:k.providerInitializationResult?.provider.id??g.value.id})})}else{let k=`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect`,x=e.cesdk.feature.isEnabled(k,{engine:e.engine});p.length>1&&x&&b.Section(`${t}.popover.header`,{children:()=>{b.Select(`${t}.providerSelect.select`,{inputLabel:[`ly.img.plugin-ai-${e.kind}-generation-web.quickAction.providerSelect.label`,"ly.img.plugin-ai-generation-web.defaults.quickAction.providerSelect.label"],values:p,...g})}}),b.Section(`${t}.popover.section`,{children:()=>{m.builder.Menu(`${t}.menu`,{children:()=>{f?.quickActions.forEach(S=>{if(S==="ly.img.separator"){b.Separator(`${t}.separator.${Math.random().toString()}`);return}S.definition.render!=null&&S.definition.render({...n,toggleExpand:()=>{w.setValue(S.definition.id)},isExpanded:!1,generate:at({blockIds:i,providerInitializationResult:S.providerInitializationResult??f?.providerInitializationResult,quickAction:S.definition,middlewares:[C],confirmation:S.definition.defaults?.confirmation??!0,close:I,cesdk:e.cesdk,debug:e.debug,dryRun:e.dryRun}),close:I,providerId:S.providerInitializationResult?.provider.id??g.value.id})})}})}})}}})};return Promise.resolve(r)}function hs(e){return e.map(t=>t==="ly.img.separator"?t:B.get().getBy({id:t,type:"quick"})[0]).filter(_)}var kr=bs;async function Is(e){let t=await kr({kind:e.kind,providerInitializationResults:e.providerInitializationResults,cesdk:e.cesdk,engine:e.engine,debug:e.debug,dryRun:e.dryRun,defaultOrder:e.defaultOrder}),r=await fr({kind:e.kind,cesdk:e.cesdk});return{renderFunction:i=>{let{engine:o}=i;if(o.editor.getEditMode()===q){let a=i.engine.block.findAllSelected();r({...i,payload:{...i.payload??{},applyCallbacks:{onBefore:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onBefore?.()})},onAfter:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onAfter?.()})},onCancel:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onCancel?.()})},onApply:()=>{a.forEach(s=>{j.get().get(s).applyCallbacks?.onApply?.()})}},onCancelGeneration:()=>{a.forEach(s=>{j.get().get(s).onCancelGeneration?.()})}}});return}t(i)}}}var vs=Is;var Q=class extends Error{constructor(t){super(ws(t)),this.name="GatewayError",this.code=t.code,this.status=t.status,this.operation=t.operation,this.provider=t.provider,this.upstreamStatus=t.upstreamStatus,this.requestId=t.requestId}};function st(e){return e instanceof Error&&e.name==="GatewayError"&&typeof e.code=="string"&&typeof e.status=="number"}function ws({operation:e,status:t,code:r,detail:n,requestId:i}){let o=[`Gateway ${e} failed:`,`${ks(t,r)} ${r}`];return n&&o.push(`- ${n}`),i&&o.push(`(request id: ${i})`),o.join(" ")}function ks(e,t){return e!==0?String(e):t==="network_error"?"network":"stream"}function Os(e){return e===401?"unauthorized":e===402?"insufficient_credits":e===403?"provider_not_authorized":e===404?"model_not_found":e===400?"invalid_request":e===504?"timeout":e===503?"provider_unavailable":e>=500?"internal_error":"unknown"}function Ss(e){if(!e)return{};let t;try{t=JSON.parse(e)}catch{return{}}if(t==null||typeof t!="object")return{};let r=t,n=r.error;if(n==null||typeof n!="object")return{};let i=n;return{code:typeof i.code=="string"?i.code:typeof i.type=="string"?i.type:void 0,message:typeof i.message=="string"?i.message:void 0,provider:typeof i.provider=="string"?i.provider:void 0,upstreamStatus:typeof i.upstream_status=="number"?i.upstream_status:void 0,requestId:Or(r)??Or(i)}}function Or(e){return typeof e.request_id=="string"?Sr(e.request_id):void 0}function Sr(e){let t=e?.trim();return t==null||t===""?void 0:t}async function ne(e,t){let r="";try{r=await e.text()}catch{}let n=Ss(r);return new Q({code:n.code??Os(e.status),status:e.status,operation:t,detail:n.message,provider:n.provider,upstreamStatus:n.upstreamStatus,requestId:Sr(e.headers.get("x-request-id"))??n.requestId})}function Cr(e,t){return new Q({code:"network_error",status:0,operation:t,detail:e instanceof Error?e.message:String(e)})}var Cs=5*60*1e3;async function xr(e,t){try{return await t()}catch(r){throw r?.name==="AbortError"?r:Cr(r,e)}}function lt(e,t,r,n=Cs){let i=e.replace(/\/$/,""),o=null,a=null;async function s(){return o!=null&&Date.now()<o.expiresAt?o.value:(a!=null||(a=t().then(u=>(o={value:u,expiresAt:Date.now()+n},u)).finally(()=>{a=null})),a)}async function c(u,l,d){let p=async()=>{let f=await s();return xr(d,()=>fetch(u,{...l,headers:{...l.headers,Authorization:`Bearer ${f}`,...r??{}}}))},g=await p();return g.status===401?(o=null,p()):g}return{async fetchSchema(u){let l=await c(`${i}/v1/models/schema?model=${encodeURIComponent(u)}`,{method:"GET",headers:{Accept:"application/json"}},"schema");if(!l.ok)throw await ne(l,"schema");return await l.json()},async upload(u,l){let d=await c(`${i}/v1/uploads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content_type:l})},"upload");if(!d.ok)throw await ne(d,"upload");let p=await d.json(),g=await xr("upload",()=>fetch(p.upload_url,{method:"PUT",headers:{"Content-Type":l},body:u}));if(!g.ok)throw await ne(g,"upload");return p},async generate(u,l,d){let p=await c(`${i}/v1/responses`,{method:"POST",signal:d.abortSignal,headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:u,...l})},"generate");if(!p.ok)throw await ne(p,"generate");return xs(p,d.abortSignal,d.outputFilter)},async*generateStream(u,l,d){let p=await c(`${i}/v1/responses`,{method:"POST",signal:d.abortSignal,headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:u,...l})},"generate");if(!p.ok)throw await ne(p,"generate");return yield*As(p,d.abortSignal)}}}function Ar(e){return new Q({code:e.error?.code??"generation_failed",status:0,operation:"generate",detail:e.error?.message,provider:e.error?.provider,upstreamStatus:e.error?.upstream_status,requestId:e.request_id})}async function xs(e,t,r){let n=e.body?.getReader();if(!n)throw new Error("Response body is not readable");let i=new TextDecoder,o="",a="";try{for(;;){if(t?.aborted)throw new Error("Generation aborted");let{done:s,value:c}=await n.read();if(s)break;o+=i.decode(c,{stream:!0});let u=o.split(`
|
|
78
78
|
`);o=u.pop()??"";for(let l of u){let d=l.trim();if(!(d===""||d.startsWith(":"))){if(d.startsWith("event:")){a=d.slice(6).trim();continue}if(d.startsWith("data:")){let p=d.slice(5).trim();if(a==="generation.completed"){let g=JSON.parse(p),f=r?g.output?.find(r):g.output?.[0];if(f?.url)return f.url;throw new Error("Gateway response did not include a matching output")}if(a==="generation.failed"){let g=JSON.parse(p);throw Ar(g)}a=""}}}}}finally{n.releaseLock()}throw new Error("SSE stream ended without a completion event")}async function*As(e,t){let r=e.body?.getReader();if(!r)throw new Error("Response body is not readable");let n=new TextDecoder,i="",o="",a="";try{for(;;){if(t?.aborted)throw new Error("Generation aborted");let{done:s,value:c}=await r.read();if(s)break;i+=n.decode(c,{stream:!0});let u=i.split(`
|
|
79
|
-
`);i=u.pop()??"";for(let l of u){let d=l.trim();if(!(d===""||d.startsWith(":"))){if(d.startsWith("event:")){o=d.slice(6).trim();continue}if(d.startsWith("data:")){let p=d.slice(5).trim();if(o==="generation.delta"){let g=JSON.parse(p);g.contentType==="text"&&(a+=g.data,yield a)}if(o==="generation.completed")return a;if(o==="generation.failed"){let g=JSON.parse(p);throw Ar(g)}o=""}}}}}finally{r.releaseLock()}if(a.length>0)return a;throw new Error("SSE stream ended without content")}var Er="common.ai-generation.failed",Es={insufficient_credits:"ly.img.ai.error.insufficientCredits",unauthorized:"ly.img.ai.error.unauthorized",network_error:"ly.img.ai.error.network",provider_not_authorized:"ly.img.ai.error.notAvailable",model_not_found:"ly.img.ai.error.notAvailable",invalid_request:"ly.img.ai.error.invalidRequest",invalid_model_id:"ly.img.ai.error.invalidRequest",validation_error:"ly.img.ai.error.invalidRequest",provider_not_supported:"ly.img.ai.error.invalidRequest",provider_unavailable:"ly.img.ai.error.serviceUnavailable",upstream_error:"ly.img.ai.error.serviceUnavailable",timeout:"ly.img.ai.error.serviceUnavailable",service_error:"ly.img.ai.error.serviceUnavailable",internal_error:"ly.img.ai.error.serviceUnavailable"};function Ps(e){return st(e)?Es[e.code]??Er:Er}function Pr(){return{show:!0,message:({error:e})=>Ps(e),duration:"long"}}var Rr="https://gateway.img.ly",Dr="ly.img.ai.getToken";var Mr=new WeakMap;function Rs(e,t){let r=Mr.get(e);r==null&&(r=new Map,Mr.set(e,r));let n=t.gatewayUrl??Rr,i=t.tokenActionId??Dr,o=`${n}\0${i}`,a=r.get(o);return a!=null||(a=lt(n,async()=>{let c=await e.actions.run(i);if(typeof c=="string"){if(c.startsWith("sk_"))throw new Error(`The token action '${i}' returned a raw API key. Exposing API keys in client-side code is a security risk. If this is intentional, return { dangerouslyExposeApiKey: 'sk_...' } instead.`);if(c.length===0)throw new Error(`Action '${i}' returned an empty token string`);return c}if(c!=null&&typeof c=="object"&&"dangerouslyExposeApiKey"in c){let u=c.dangerouslyExposeApiKey;if(typeof u!="string"||u.length===0)throw new Error(`Action '${i}' returned { dangerouslyExposeApiKey } but the value is not a valid string`);return u}throw new Error(`Action '${i}' must return either a token string or { dangerouslyExposeApiKey: string }`)},t.headers,t.tokenCacheTTL),r.set(o,a)),a}function Ds(e,t,r){if(r.quickActions!=null&&r.resolveQuickActions!=null)throw new Error(`createGatewayProvider('${e}'): 'quickActions' and 'resolveQuickActions' are mutually exclusive \u2014 received both.`);return async({cesdk:n})=>{r.onInitialize?.(n);let i=Rs(n,t),o=`gateway/${e}`,a=i.fetchSchema(e),s=r.createOutput!=null,c,u,l=r.quickActions!=null?Kr(r.quickActions,t.supportedQuickActions):void 0;a.then(g=>{if(c=g.name,s&&(u=r.onSchemaReady?.({schema:g,providerId:o,cesdk:n})),r.resolveQuickActions!=null){let f=r.resolveQuickActions({schema:g,providerId:o,cesdk:n});l=Kr(f,t.supportedQuickActions)}}).catch(g=>{let f=g instanceof Error?g:new Error(String(g));t.onError?.(f)});let d;s&&(d={type:"schema",document:()=>a.then(f=>Ms(e,f)),inputReference:"#/components/schemas/GatewayInput",includeHistoryLibrary:!0,orderExtensionKeyword:"x-property-order",get renderCustomProperty(){return u},getBlockInput:r.getBlockInput,userFlow:r.userFlow??"placeholder"});let p={id:o,kind:r.kind,name:()=>t.modelName??c??e,input:{...d!=null?{panel:d}:{},get quickActions(){return l}},output:{abortable:!0,middleware:t.middlewares??[],history:t.history??"@imgly/indexedDB",notification:{error:Pr()},generate:async(g,{abortSignal:f})=>{let h=r.processInput?await r.processInput(g,i,n):g;if(r.createStreamOutput!=null){let{createStreamOutput:m}=r,y=i.generateStream(e,h,{abortSignal:f});async function*v(){let w;for await(let C of y)w=m(C),yield w;return w}return v()}let b=await i.generate(e,h,{abortSignal:f,outputFilter:r.outputFilter});return await r.createOutput(b)}}};return t.debug&&console.log("Created Gateway Provider:",p),p}}function Kr(e,t){if(e==null&&t==null)return;let r=
|
|
79
|
+
`);i=u.pop()??"";for(let l of u){let d=l.trim();if(!(d===""||d.startsWith(":"))){if(d.startsWith("event:")){o=d.slice(6).trim();continue}if(d.startsWith("data:")){let p=d.slice(5).trim();if(o==="generation.delta"){let g=JSON.parse(p);g.contentType==="text"&&(a+=g.data,yield a)}if(o==="generation.completed")return a;if(o==="generation.failed"){let g=JSON.parse(p);throw Ar(g)}o=""}}}}}finally{r.releaseLock()}if(a.length>0)return a;throw new Error("SSE stream ended without content")}var Er="common.ai-generation.failed",Es={insufficient_credits:"ly.img.ai.error.insufficientCredits",unauthorized:"ly.img.ai.error.unauthorized",network_error:"ly.img.ai.error.network",provider_not_authorized:"ly.img.ai.error.notAvailable",model_not_found:"ly.img.ai.error.notAvailable",invalid_request:"ly.img.ai.error.invalidRequest",invalid_model_id:"ly.img.ai.error.invalidRequest",validation_error:"ly.img.ai.error.invalidRequest",provider_not_supported:"ly.img.ai.error.invalidRequest",provider_unavailable:"ly.img.ai.error.serviceUnavailable",upstream_error:"ly.img.ai.error.serviceUnavailable",timeout:"ly.img.ai.error.serviceUnavailable",service_error:"ly.img.ai.error.serviceUnavailable",internal_error:"ly.img.ai.error.serviceUnavailable"};function Ps(e){return st(e)?Es[e.code]??Er:Er}function Pr(){return{show:!0,message:({error:e})=>Ps(e),duration:"long"}}var Rr="https://gateway.img.ly",Dr="ly.img.ai.getToken";var Mr=new WeakMap;function Rs(e,t){let r=Mr.get(e);r==null&&(r=new Map,Mr.set(e,r));let n=t.gatewayUrl??Rr,i=t.tokenActionId??Dr,o=`${n}\0${i}`,a=r.get(o);return a!=null||(a=lt(n,async()=>{let c=await e.actions.run(i);if(typeof c=="string"){if(c.startsWith("sk_"))throw new Error(`The token action '${i}' returned a raw API key. Exposing API keys in client-side code is a security risk. If this is intentional, return { dangerouslyExposeApiKey: 'sk_...' } instead.`);if(c.length===0)throw new Error(`Action '${i}' returned an empty token string`);return c}if(c!=null&&typeof c=="object"&&"dangerouslyExposeApiKey"in c){let u=c.dangerouslyExposeApiKey;if(typeof u!="string"||u.length===0)throw new Error(`Action '${i}' returned { dangerouslyExposeApiKey } but the value is not a valid string`);return u}throw new Error(`Action '${i}' must return either a token string or { dangerouslyExposeApiKey: string }`)},t.headers,t.tokenCacheTTL),r.set(o,a)),a}function Ds(e,t,r){if(r.quickActions!=null&&r.resolveQuickActions!=null)throw new Error(`createGatewayProvider('${e}'): 'quickActions' and 'resolveQuickActions' are mutually exclusive \u2014 received both.`);return async({cesdk:n})=>{r.onInitialize?.(n);let i=Rs(n,t),o=`gateway/${e}`,a=i.fetchSchema(e),s=r.createOutput!=null,c,u,l=r.quickActions!=null?Kr(r.quickActions,t.supportedQuickActions):void 0;a.then(g=>{if(c=g.name,s&&(u=r.onSchemaReady?.({schema:g,providerId:o,cesdk:n})),r.resolveQuickActions!=null){let f=r.resolveQuickActions({schema:g,providerId:o,cesdk:n});l=Kr(f,t.supportedQuickActions)}}).catch(g=>{let f=g instanceof Error?g:new Error(String(g));t.onError?.(f)});let d;s&&(d={type:"schema",document:()=>a.then(f=>Ms(e,f)),inputReference:"#/components/schemas/GatewayInput",includeHistoryLibrary:!0,orderExtensionKeyword:"x-property-order",get renderCustomProperty(){return u},getBlockInput:r.getBlockInput,userFlow:r.userFlow??"placeholder"});let p={id:o,kind:r.kind,name:()=>t.modelName??c??e,input:{...d!=null?{panel:d}:{},get quickActions(){return l}},output:{abortable:!0,middleware:t.middlewares??[],history:t.history??"@imgly/indexedDB",notification:{error:Pr()},generate:async(g,{abortSignal:f})=>{let h=r.processInput?await r.processInput(g,i,n):g;if(r.createStreamOutput!=null){let{createStreamOutput:m}=r,y=i.generateStream(e,h,{abortSignal:f});async function*v(){let w;for await(let C of y)w=m(C),yield w;return w}return v()}let b=await i.generate(e,h,{abortSignal:f,outputFilter:r.outputFilter});return await r.createOutput(b)}}};return t.debug&&console.log("Created Gateway Provider:",p),p}}function Kr(e,t){if(e==null&&t==null)return;let r=We(e?.supported??{},t);if(Object.keys(r).length!==0)return{supported:r}}function Ms(e,t){let r=JSON.stringify(t.input_schema).includes("#/components/schemas/CustomSize");return{openapi:"3.0.0",info:{title:`Gateway - ${e}`,version:"1.0.0"},paths:{},components:{schemas:{GatewayInput:t.input_schema,...r?{CustomSize:{title:"Custom",type:"object",properties:{width:{type:"integer",minimum:1,default:1024},height:{type:"integer",minimum:1,default:1024}}}}:{}}}}}var Qd={ImageUrl:jt,StyleTransfer:Nt};export{q as AI_EDIT_MODE,be as AI_METADATA_KEY,B as ActionRegistry,Qd as CommonProperties,Q as GatewayError,je as PropertyContextCache,z as ProviderRegistry,qt as abortGenerationStateKey,Ze as addIconSetOnce,Vo as attachImageToPrompt,L as buildPropertyContext,Lt as buildTranslationKeys,No as canAttachImageToPrompt,la as checkAiPluginVersion,Ue as composeMiddlewares,lt as createGatewayClient,Ds as createGatewayProvider,Lo as createTranslationCallback,pa as enableQuickActionForImageFill,xe as extractAndSetSchemaTranslations,ta as getDurationForVideo,ra as getLabelFromId,ea as getPanelId,Ye as getThumbnailForVideo,ye as initializeProvider,is as initializeProviders,vs as initializeQuickActionComponents,Wo as integrateIntoDefaultAssetLibraryEntry,pe as isAsyncGenerator,st as isGatewayError,re as isGeneratingStateKey,qe as loggingMiddleware,We as mergeQuickActionsConfig,na as normalizeBaseURL,sa as rateLimitMiddleware,da as registerDockComponent,F as resolvePropertyDefault,Go as resolvePropertyDefaults,T as setDefaultTranslations,oa as uploadMiddleware};
|
|
80
80
|
/*! Bundled license information:
|
|
81
81
|
|
|
82
82
|
lodash-es/lodash.js:
|