@imgly/plugin-ai-image-generation-web
Version:
AI image generation plugin for the CE.SDK editor
4 lines • 120 kB
JavaScript
var hr=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=i?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=i?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let i=indexedDB.open(this.dbName,this.dbVersion);i.onerror=r=>{t(new Error(`Failed to open IndexedDB: ${r.target.error}`))},i.onupgradeneeded=r=>{let n=r.target.result;n.objectStoreNames.contains(this.assetStoreName)||n.createObjectStore(this.assetStoreName,{keyPath:"id"}),n.objectStoreNames.contains(this.blobStoreName)||n.createObjectStore(this.blobStoreName,{keyPath:"id"})},i.onsuccess=r=>{this.db=r.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((u,s)=>{let c=e.locale??"en",d="",p=[];s.label!=null&&typeof s.label=="object"&&s.label[c]&&(d=s.label[c]),s.tags!=null&&typeof s.tags=="object"&&s.tags[c]&&(p=s.tags[c]);let g={...s,label:d,tags:p};return this.filterAsset(g,e)&&u.push(g),u},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:i,perPage:r}=e,n=i*r,o=n+r,a=t.slice(n,o),l=o<t.length?i+1:void 0;return{assets:a,currentPage:i,nextPage:l,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 i=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();i.onsuccess=()=>{let r=new Set;i.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(a=>r.add(a))});let n=[...r];e(n)},i.onerror=()=>{t(new Error(`Failed to get groups: ${i.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),i=t.objectStore(this.assetStoreName),r=new Set;ee(e,o=>{r.add(o)}),setTimeout(()=>{this.storeBlobUrls([...r])});let n={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};i.put(n),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 i=this.db.transaction(this.assetStoreName,"readwrite");i.objectStore(this.assetStoreName).delete(e),i.oncomplete=()=>{ee(t,r=>{this.removeBlob(r)}),this.engine.asset.assetSourceContentsChanged(this.id)},i.onerror=()=>{console.error(`Failed to remove asset: ${i.error}`)}}).catch(i=>{console.error("Error initializing database:",i)})}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,i)=>{let r=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();r.onsuccess=()=>{let n=r.result;n.sort((o,a)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),u=a.meta?.insertedAt||a._insertedAt||Date.now();return e==="asc"?l-u:u-l}),t(n)},r.onerror=()=>{i(new Error(`Failed to get assets: ${r.error}`))}})}async getAsset(e){return new Promise((t,i)=>{let r=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);r.onsuccess=()=>{t(r.result)},r.onerror=()=>{i(new Error(`Failed to get blob: ${r.error}`))}})}async getBlob(e){return new Promise((t,i)=>{let r=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);r.onsuccess=()=>{t(r.result)},r.onerror=()=>{i(new Error(`Failed to get blob: ${r.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 i=>{let r=await(await fetch(i)).blob();t[i]=r})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let i=this.db.transaction(this.blobStoreName,"readwrite"),r=i.objectStore(this.blobStoreName);Object.entries(t).forEach(([n,o])=>{let a={id:n,blob:o};r.put(a)}),i.onerror=()=>{console.error(`Failed to add blobs: ${i.error}`)}}).catch(i=>{console.error("Error initializing database:",i)})}async restoreBlobUrls(e){let t={},i=new Set;return ee(e,r=>{i.add(r)}),await Promise.all([...i].map(async r=>{let n=await this.createBlobUrlFromStore(r);t[r]=n})),ee(e,r=>t[r]??r)}filterAsset(e,t){let{query:i,tags:r,groups:n,excludeGroups:o}=t;if(i&&i.trim()!==""){let a=i.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",u=e.tags?.map(s=>s.toLowerCase())??[];if(!a.every(s=>l.includes(s)||u.some(c=>c.includes(s))))return!1}if(r){let a=Array.isArray(r)?r:[r];if(a.length>0&&(!e.tags||!a.every(l=>e.tags?.includes(l))))return!1}return!(n&&n.length>0&&(!e.groups||!n.some(a=>e.groups?.includes(a)))||o&&o.length>0&&e.groups&&e.groups.some(a=>o.includes(a)))}sortAssets(e,t){let{sortingOrder:i,sortKey:r,sortActiveFirst:n}=t,o=[...e];return!i||i==="None"||(r?o.sort((a,l)=>{let u,s;return r==="id"?(u=a.id,s=l.id):(u=a.meta?.[r]??null,s=l.meta?.[r]??null),u==null?i==="Ascending"?-1:1:s==null?i==="Ascending"?1:-1:typeof u=="string"&&typeof s=="string"?i==="Ascending"?u.localeCompare(s):s.localeCompare(u):i==="Ascending"?u<s?-1:u>s?1:0:u>s?-1:u<s?1:0}):i==="Descending"&&o.reverse(),n&&o.sort((a,l)=>a.active&&!l.active?-1:!a.active&&l.active?1:0)),o}};function ee(e,t,i=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let r=0;r<e.length;r++){let n=i?`${i}[${r}]`:`[${r}]`;if(typeof e[r]=="string"&&e[r].startsWith("blob:")){let o=t(e[r],n);typeof o=="string"&&(e[r]=o)}else e[r]=ee(e[r],t,n)}return e}for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let n=e[r],o=i?`${i}.${r}`:r;if(typeof n=="string"&&n.startsWith("blob:")){let a=t(n,o);typeof a=="string"&&(e[r]=a)}else e[r]=ee(n,t,o)}return e}var vr=class{constructor(e,t,i){this.id=e,this.cesdk=t,this.assetSourceIds=i}async findAssets(e){try{let t=this.assetSourceIds.map(c=>this.cesdk.engine.asset.findAssets(c,{...e,perPage:9999,page:0})),i=await Promise.all(t),r=[];i.forEach(c=>{c?.assets&&(r=r.concat(c.assets))}),r.sort((c,d)=>{let p=c.meta?.insertedAt||0;return(d.meta?.insertedAt||0)-p});let{page:n,perPage:o}=e,a=n*o,l=a+o,u=r.slice(a,l),s=l<r.length?n+1:void 0;return{assets:u,currentPage:n,nextPage:s,total:r.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){let e=this.assetSourceIds.map(r=>this.cesdk.engine.asset.getGroups(r)),t=await Promise.all(e),i=new Set;return t.forEach(r=>{r.forEach(n=>i.add(n))}),Array.from(i)}addAsset(e){throw new Error("AggregatedAssetSource does not support adding assets")}removeAsset(e){throw new Error("AggregatedAssetSource does not support removing assets")}},wr=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)}},ti=wr,kr=typeof global=="object"&&global&&global.Object===Object&&global,ii=kr,Ir=typeof self=="object"&&self&&self.Object===Object&&self,Ar=ii||Ir||Function("return this")(),R=Ar,Sr=R.Symbol,te=Sr,ri=Object.prototype,Cr=ri.hasOwnProperty,$r=ri.toString,pe=te?te.toStringTag:void 0;function xr(e){var t=Cr.call(e,pe),i=e[pe];try{e[pe]=void 0;var r=!0}catch{}var n=$r.call(e);return r&&(t?e[pe]=i:delete e[pe]),n}var Er=xr,Mr=Object.prototype,Tr=Mr.toString;function Pr(e){return Tr.call(e)}var jr=Pr,_r="[object Null]",Lr="[object Undefined]",jt=te?te.toStringTag:void 0;function Dr(e){return e==null?e===void 0?Lr:_r:jt&&jt in Object(e)?Er(e):jr(e)}var we=Dr;function Nr(e){return e!=null&&typeof e=="object"}var bt=Nr,Cd=Array.isArray;function Or(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var ni=Or,Fr="[object AsyncFunction]",Rr="[object Function]",zr="[object GeneratorFunction]",Ur="[object Proxy]";function Br(e){if(!ni(e))return!1;var t=we(e);return t==Rr||t==zr||t==Fr||t==Ur}var Vr=Br,Gr=R["__core-js_shared__"],at=Gr,_t=function(){var e=/[^.]+$/.exec(at&&at.keys&&at.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function qr(e){return!!_t&&_t in e}var Hr=qr,Qr=Function.prototype,Wr=Qr.toString;function Zr(e){if(e!=null){try{return Wr.call(e)}catch{}try{return e+""}catch{}}return""}var K=Zr,Yr=/[\\^$.*+?()[\]{}|]/g,Kr=/^\[object .+?Constructor\]$/,Xr=Function.prototype,Jr=Object.prototype,en=Xr.toString,tn=Jr.hasOwnProperty,rn=RegExp("^"+en.call(tn).replace(Yr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function nn(e){if(!ni(e)||Hr(e))return!1;var t=Vr(e)?rn:Kr;return t.test(K(e))}var an=nn;function on(e,t){return e?.[t]}var ln=on;function sn(e,t){var i=ln(e,t);return an(i)?i:void 0}var ie=sn,cn=ie(R,"WeakMap"),ut=cn;function un(e,t){return e===t||e!==e&&t!==t}var dn=un,pn=9007199254740991;function gn(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=pn}var fn=gn,$d=Object.prototype,mn="[object Arguments]";function yn(e){return bt(e)&&we(e)==mn}var Lt=yn,ai=Object.prototype,bn=ai.hasOwnProperty,hn=ai.propertyIsEnumerable,xd=Lt(function(){return arguments}())?Lt:function(e){return bt(e)&&bn.call(e,"callee")&&!hn.call(e,"callee")},oi=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Dt=oi&&typeof module=="object"&&module&&!module.nodeType&&module,vn=Dt&&Dt.exports===oi,Nt=vn?R.Buffer:void 0,Ed=Nt?Nt.isBuffer:void 0,wn="[object Arguments]",kn="[object Array]",In="[object Boolean]",An="[object Date]",Sn="[object Error]",Cn="[object Function]",$n="[object Map]",xn="[object Number]",En="[object Object]",Mn="[object RegExp]",Tn="[object Set]",Pn="[object String]",jn="[object WeakMap]",_n="[object ArrayBuffer]",Ln="[object DataView]",Dn="[object Float32Array]",Nn="[object Float64Array]",On="[object Int8Array]",Fn="[object Int16Array]",Rn="[object Int32Array]",zn="[object Uint8Array]",Un="[object Uint8ClampedArray]",Bn="[object Uint16Array]",Vn="[object Uint32Array]",$={};$[Dn]=$[Nn]=$[On]=$[Fn]=$[Rn]=$[zn]=$[Un]=$[Bn]=$[Vn]=!0;$[wn]=$[kn]=$[_n]=$[In]=$[Ln]=$[An]=$[Sn]=$[Cn]=$[$n]=$[xn]=$[En]=$[Mn]=$[Tn]=$[Pn]=$[jn]=!1;function Gn(e){return bt(e)&&fn(e.length)&&!!$[we(e)]}var qn=Gn;function Hn(e){return function(t){return e(t)}}var Qn=Hn,li=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ye=li&&typeof module=="object"&&module&&!module.nodeType&&module,Wn=ye&&ye.exports===li,ot=Wn&&ii.process,Zn=function(){try{var e=ye&&ye.require&&ye.require("util").types;return e||ot&&ot.binding&&ot.binding("util")}catch{}}(),Ot=Zn,Ft=Ot&&Ot.isTypedArray,Md=Ft?Qn(Ft):qn,Yn=Object.prototype,Td=Yn.hasOwnProperty;function Kn(e,t){return function(i){return e(t(i))}}var Xn=Kn,Pd=Xn(Object.keys,Object),Jn=Object.prototype,jd=Jn.hasOwnProperty,ea=ie(Object,"create"),be=ea;function ta(){this.__data__=be?be(null):{},this.size=0}var ia=ta;function ra(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var na=ra,aa="__lodash_hash_undefined__",oa=Object.prototype,la=oa.hasOwnProperty;function sa(e){var t=this.__data__;if(be){var i=t[e];return i===aa?void 0:i}return la.call(t,e)?t[e]:void 0}var ca=sa,ua=Object.prototype,da=ua.hasOwnProperty;function pa(e){var t=this.__data__;return be?t[e]!==void 0:da.call(t,e)}var ga=pa,fa="__lodash_hash_undefined__";function ma(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=be&&t===void 0?fa:t,this}var ya=ma;function re(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}re.prototype.clear=ia;re.prototype.delete=na;re.prototype.get=ca;re.prototype.has=ga;re.prototype.set=ya;var Rt=re;function ba(){this.__data__=[],this.size=0}var ha=ba;function va(e,t){for(var i=e.length;i--;)if(dn(e[i][0],t))return i;return-1}var _e=va,wa=Array.prototype,ka=wa.splice;function Ia(e){var t=this.__data__,i=_e(t,e);if(i<0)return!1;var r=t.length-1;return i==r?t.pop():ka.call(t,i,1),--this.size,!0}var Aa=Ia;function Sa(e){var t=this.__data__,i=_e(t,e);return i<0?void 0:t[i][1]}var Ca=Sa;function $a(e){return _e(this.__data__,e)>-1}var xa=$a;function Ea(e,t){var i=this.__data__,r=_e(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}var Ma=Ea;function ne(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}ne.prototype.clear=ha;ne.prototype.delete=Aa;ne.prototype.get=Ca;ne.prototype.has=xa;ne.prototype.set=Ma;var Le=ne,Ta=ie(R,"Map"),he=Ta;function Pa(){this.size=0,this.__data__={hash:new Rt,map:new(he||Le),string:new Rt}}var ja=Pa;function _a(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var La=_a;function Da(e,t){var i=e.__data__;return La(t)?i[typeof t=="string"?"string":"hash"]:i.map}var De=Da;function Na(e){var t=De(this,e).delete(e);return this.size-=t?1:0,t}var Oa=Na;function Fa(e){return De(this,e).get(e)}var Ra=Fa;function za(e){return De(this,e).has(e)}var Ua=za;function Ba(e,t){var i=De(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this}var Va=Ba;function ae(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}ae.prototype.clear=ja;ae.prototype.delete=Oa;ae.prototype.get=Ra;ae.prototype.has=Ua;ae.prototype.set=Va;var si=ae;function Ga(){this.__data__=new Le,this.size=0}var qa=Ga;function Ha(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}var Qa=Ha;function Wa(e){return this.__data__.get(e)}var Za=Wa;function Ya(e){return this.__data__.has(e)}var Ka=Ya,Xa=200;function Ja(e,t){var i=this.__data__;if(i instanceof Le){var r=i.__data__;if(!he||r.length<Xa-1)return r.push([e,t]),this.size=++i.size,this;i=this.__data__=new si(r)}return i.set(e,t),this.size=i.size,this}var eo=Ja;function ke(e){var t=this.__data__=new Le(e);this.size=t.size}ke.prototype.clear=qa;ke.prototype.delete=Qa;ke.prototype.get=Za;ke.prototype.has=Ka;ke.prototype.set=eo;var to=Object.prototype,_d=to.propertyIsEnumerable,io=ie(R,"DataView"),dt=io,ro=ie(R,"Promise"),pt=ro,no=ie(R,"Set"),gt=no,zt="[object Map]",ao="[object Object]",Ut="[object Promise]",Bt="[object Set]",Vt="[object WeakMap]",Gt="[object DataView]",oo=K(dt),lo=K(he),so=K(pt),co=K(gt),uo=K(ut),J=we;(dt&&J(new dt(new ArrayBuffer(1)))!=Gt||he&&J(new he)!=zt||pt&&J(pt.resolve())!=Ut||gt&&J(new gt)!=Bt||ut&&J(new ut)!=Vt)&&(J=function(e){var t=we(e),i=t==ao?e.constructor:void 0,r=i?K(i):"";if(r)switch(r){case oo:return Gt;case lo:return zt;case so:return Ut;case co:return Bt;case uo:return Vt}return t});var Ld=R.Uint8Array,po="__lodash_hash_undefined__";function go(e){return this.__data__.set(e,po),this}var fo=go;function mo(e){return this.__data__.has(e)}var yo=mo;function ft(e){var t=-1,i=e==null?0:e.length;for(this.__data__=new si;++t<i;)this.add(e[t])}ft.prototype.add=ft.prototype.push=fo;ft.prototype.has=yo;var qt=te?te.prototype:void 0,Dd=qt?qt.valueOf:void 0,bo=Object.prototype,Nd=bo.hasOwnProperty,ho=Object.prototype,Od=ho.hasOwnProperty,Fd=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),Rd=new RegExp(/[A-Fa-f0-9]{1}/,"g"),zd=new RegExp(/[A-Fa-f0-9]{2}/,"g");async function ci(e,t){if(e.startsWith("buffer:")){let i=await t.editor.getMimeType(e),r=t.editor.getBufferLength(e),n=t.editor.getBufferData(e,0,r),o=new Uint8Array(n),a=new Blob([o],{type:i});return URL.createObjectURL(a)}else return e}async function mt(e,t){let i=await ci(e,t);return new Promise((r,n)=>{let o=new Image;o.onload=()=>{r({width:o.width,height:o.height})},o.onerror=n,o.src=i})}async function vo(e,t,i){let r,n=t.block.getFill(e),o=t.block.getSourceSet(n,"fill/image/sourceSet"),[a]=o;if(a==null){if(r=t.block.getString(n,"fill/image/imageFileURI"),r==null)throw new Error("No image source/uri found")}else r=a.uri;if(i?.throwErrorIfSvg&&await t.editor.getMimeType(r)==="image/svg+xml")throw new Error("SVG images are not supported");return ci(r,t)}function wo(e){return e!==void 0}var Ne=wo;function T(e,t){if(typeof e.i18n?.getTranslations!="function"){e.i18n.setTranslations(t);return}let i=Object.keys(t),r=e.i18n.getTranslations(i),n={};for(let o of i){let a=t[o];if(!a)continue;let l=r[o]??{},u={};for(let[s,c]of Object.entries(a))!(s in l)&&c!==void 0&&(u[s]=c);Object.keys(u).length>0&&(n[o]=u)}Object.keys(n).length>0&&e.i18n.setTranslations(n)}function Ie(e,t){let i=t?.i18n?.getLocale?.()||"en";return{engine:e,cesdk:t,locale:i}}function Ae(e,t,i,r,n){if(t?.default!==void 0){let o=t.default;return typeof o!="function"?o:o(i)}return r!==void 0?r:n}var Oe=class ui{constructor(){this.actions=new Map,this.subscribers=new Map}static get(){let t="__imgly_action_registry__",i=typeof window<"u"?window:globalThis;return i[t]||(i[t]=new ui),i[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(i=>this.matchesFilters(i,t))}subscribe(t){return this.subscribers.set(t,null),()=>{this.subscribers.delete(t)}}subscribeBy(t,i){return this.subscribers.set(i,t),()=>{this.subscribers.delete(i)}}notifySubscribers(t,i){this.subscribers.forEach((r,n)=>{if(r===null){n(t,i);return}this.matchesFilters(t,r)&&n(t,i)})}matchesFilters(t,i){return!(i.type&&t.type!==i.type||i.pluginId&&t.type==="plugin"&&t.pluginId!==i.pluginId||i.id&&t.id!==i.id||i.kind&&(t.type!=="quick"||t.kind!==i.kind))}},di=class pi{constructor(){this.providers=new Map}static get(){let t="__imgly_provider_registry__",i=typeof window<"u"?window:globalThis;return i[t]||(i[t]=new pi),i[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:i})=>i.kind===t)}};function ko(e){let t=e.filter(i=>!!i);return i=>async(r,n)=>{let o=[],a=s=>{o.push(s)},l=async(s,c,d)=>{if(s>=t.length)return i(c,d);let p=t[s],g=async(f,y)=>l(s+1,f,y),m={...d,addDisposer:a};return p(c,m,g)},u={...n,addDisposer:a};return{result:await l(0,r,u),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(c){console.error("Error in disposer:",c)}o.length=0}}}}function Io({enable:e=!0}){return async(t,i,r)=>{if(!e)return r(t,i);console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(t,null,2));let n,o=Date.now();try{return n=await r(t,i),n}finally{n!=null&&(console.log(`Generation took ${Date.now()-o}ms`),console.log("Generation result:",JSON.stringify(n,null,2))),console.groupEnd()}}}var Ao=Io;var lt="ly.img.ai.temp";async function So(e,t){return e.engine.asset.findAllSources().includes(lt)||e.engine.asset.addLocalSource(lt),e.engine.asset.apply(lt,t)}function Co(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 i=e;return"message"in i&&typeof i.message=="string"?i.message:"cause"in i&&typeof i.cause=="string"?i.cause:"detail"in i&&typeof i.detail=="object"&&i.detail!==null&&"message"in i.detail&&typeof i.detail.message=="string"?i.detail.message:"error"in i&&typeof i.error=="object"&&i.error!==null&&"message"in i.error&&typeof i.error.message=="string"?i.error.message:t}return typeof e=="string"?e:String(e)||t}function gi(){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 $o(e,t=0,i="image/jpeg",r=.8){return new Promise((n,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 l=document.createElement("canvas");l.width=a.videoWidth,l.height=a.videoHeight;let u=l.getContext("2d");if(!u){document.body.removeChild(a),o(new Error("Failed to create canvas context"));return}u.drawImage(a,0,0,l.width,l.height);try{let s=l.toDataURL(i,r);document.body.removeChild(a),n(s)}catch(s){document.body.removeChild(a),o(new Error(`Failed to create thumbnail: ${s instanceof Error?s.message:String(s)}`))}},{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 xo(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 ht(e){return e instanceof Error&&e.name==="AbortError"}function Eo(e,t,i){let r=`${t}.iconSetAdded`;e.ui.experimental.hasGlobalStateValue(r)||(e.ui.addIconSet(t,i),e.ui.experimental.setGlobalStateValue(r,!0))}function fi(e,t,i){let r="ai-plugin-version",n="ai-plugin-version-warning-shown";try{let o=e.ui.experimental.getGlobalStateValue(r);o?o!==i&&(e.ui.experimental.getGlobalStateValue(n,!1)||(console.warn(`[IMG.LY AI Plugins] Version mismatch detected!
Plugin "${t}" is using version ${i}, but other AI plugins are using version ${o}.
This may cause compatibility issues. Please ensure all AI plugins (@imgly/plugin-ai-*) use the same version.
Consider updating all AI plugins to the same version for optimal compatibility.`),e.ui.experimental.setGlobalStateValue(n,!0))):e.ui.experimental.setGlobalStateValue(r,i)}catch(o){console.debug("[IMG.LY AI Plugins] Could not check plugin version consistency:",o)}}function Mo(e){let{cesdk:t,panelId:i}=e;i.startsWith("ly.img.ai.")||console.warn(`Dock components for AI generation should open a panel with an id starting with "ly.img.ai." \u2013 "${i}" was provided.`);let r=`${i}.dock`;t.ui.registerComponent(r,({builder:n})=>{let o=t.ui.isPanelOpen(i);n.Button(`${i}.dock.button`,{label:`${i}.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(i):t.ui.openPanel(i)}})})}var mi=Mo;function To(){return({engine:e})=>{let t=e.block.findAllSelected();if(t==null||t.length!==1)return!1;let[i]=t;if(!e.block.supportsFill(i)||e.block.getKind(i)==="sticker"||!["//ly.img.ubq/graphic","//ly.img.ubq/page"].includes(e.block.getType(i)))return!1;let r=e.block.getFill(i);return e.block.getType(r)==="//ly.img.ubq/fill/image"}}var O=To;function Po(e,t){let{cesdk:i,provider:r,getInput:n,middlewareOptions:o}=t;o?.defaultPrevented()||(console.error("Generation failed:",e),jo(i,r.output.notification,()=>({input:n?.().input,error:e}))||i.ui.showNotification({type:"error",message:Co(e)}))}function jo(e,t,i){let r=t?.error;if(r==null||!(typeof r.show=="function"?r.show(i()):r.show))return!1;let n=typeof r.message=="function"?r.message(i()):r.message??"common.ai-generation.failed",o=r.action!=null?{label:typeof r.action.label=="function"?r.action.label(i()):r.action.label,onClick:()=>{r?.action?.onClick(i())}}:void 0;return e.ui.showNotification({type:"error",message:n,action:o}),!0}var Ht=Po,_o="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",vt=_o;function Lo(e,t,i){switch(t){case"image":return Do(e,i[t]);case"video":return No(e,i[t]);case"sticker":return Oo(e,i[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Do(e,t){let i=t.width,r=t.height;return{id:e,meta:{previewUri:vt,fillType:"//ly.img.ubq/fill/image",kind:"image",width:i,height:r}}}function No(e,t){let i=t.width,r=t.height;return{id:e,label:t.label,meta:{previewUri:vt,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:i,height:r}}}function Oo(e,t){let i=t.width,r=t.height;return{id:e,meta:{previewUri:vt,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:i,height:r}}}var Fo=Lo;async function Ro(e,t,i,r){switch(t){case"image":{if(r.kind!=="image")throw new Error(`Output kind does not match the expected type: ${r.kind} (expected: image)`);return zo(e,i[t],r)}case"video":{if(r.kind!=="video")throw new Error(`Output kind does not match the expected type: ${r.kind} (expected: video)`);return Uo(e,i[t],r)}case"audio":{if(r.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${r.kind} (expected: audio)`);return Bo(e,i[t],r)}case"sticker":{if(r.kind!=="sticker")throw new Error(`Output kind does not match the expected type: ${r.kind} (expected: sticker)`);return Vo(e,i[t],r)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function zo(e,t,i){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{uri:i.url,thumbUri:i.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n},payload:{sourceSet:[{uri:i.url,width:r,height:n}]}}}async function Uo(e,t,i){let r=t.width,n=t.height,o=await $o(i.url,0);return{id:e,label:t.label,meta:{uri:i.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}function Bo(e,t,i){return{id:e,label:t.label,meta:{uri:i.url,thumbUri:i.thumbnailUrl,blockType:"//ly.img.ubq/audio",mimeType:"audio/x-m4a",duration:i.duration.toString()}}}function Vo(e,t,i){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{uri:i.url,thumbUri:i.url,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:r,height:n},payload:{sourceSet:[{uri:i.url,width:r,height:n}]}}}var yi=Ro;function Go(e){switch(e.userFlow){case"placeholder":return Ho(e);case"generation-only":return qo(e);default:throw new Error(`Unknown user flow: ${e.userFlow}. Expected 'placeholder' or 'generation-only'.`)}}function qo(e){let{cesdk:t,abortSignal:i}=e;return async r=>{try{let n=e.kind,o=await e.getBlockInput(r);if(U(t,i))return{status:"aborted"};let a=await e.generate(r,{middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:i});if(U(t,i))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(U(t,i))return{status:"aborted"};if(e.historyAssetSourceId!=null){let l=gi(),u=await yi(l,n,o,a.output),s={...u,id:`${Date.now()}-${u.id}`,label:u.label!=null?{en:u.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,s)}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(n){return{status:"error",message:n instanceof Error?n.message:String(n)}}}}function Ho(e){let{cesdk:t,abortSignal:i}=e,r;return async n=>{try{let o=e.kind,a=await e.getBlockInput(n);if(U(t,i))return{status:"aborted"};let l=gi(),u=Fo(l,o,a);if(r=await So(t,u),U(t,i,r))return{status:"aborted"};if(r!=null&&e.kind==="video"){let d=t.engine.block.getPositionX(r),p=t.engine.block.getPositionY(r),g=t.engine.block.duplicate(r);t.engine.block.setPositionX(g,d),t.engine.block.setPositionY(g,p),t.engine.block.destroy(r),r=g}if(r==null)throw new Error("Could not create placeholder block");t.engine.block.setState(r,{type:"Pending",progress:0});let s=await e.generate(n,{blockIds:[r],middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:i});if(U(t,i,r))return{status:"aborted"};if(s.status!=="success")return s.middlewareOptions?.defaultPrevented()||r!=null&&t.engine.block.isValid(r)&&(s.status==="aborted"?t.engine.block.destroy(r):t.engine.block.setState(r,{type:"Error",error:"Unknown"})),s;if(s.type==="async")throw new Error("Async generation is not supported in this context yet.");if(!t.engine.block.isValid(r))return{status:"aborted",message:"Placeholder block was destroyed before generation completed."};let c=await yi(l,o,a,s.output);if(U(t,i,r))return{status:"aborted"};if(e.debug&&console.log("Updating placeholder in scene:",JSON.stringify(c,void 0,2)),await t.engine.asset.defaultApplyAssetToBlock(c,r),U(t,i,r))return{status:"aborted"};if(e.historyAssetSourceId!=null){let d={...c,id:`${Date.now()}-${c.id}`,label:c.label!=null?{en:c.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,d)}return t.engine.block.isValid(r)&&t.engine.block.setState(r,{type:"Ready"}),s}catch(o){return r!=null&&t.engine.block.isValid(r)&&(ht(o)?t.engine.block.destroy(r):t.engine.block.setState(r,{type:"Error",error:"Unknown"})),{status:"error",message:o instanceof Error?o.message:String(o)}}}}function U(e,t,i){return t.aborted?(i!=null&&e.engine.block.isValid(i)&&e.engine.block.destroy(i),!0):!1}var Qo=Go;function wt(e){return`${e}.generating`}function Wo(e){return`${e}.abort`}function Zo(e,t,i,r,n,o,a){let{builder:l,experimental:u}=e,{cesdk:s,includeHistoryLibrary:c=!0}=o,{id:d,output:{abortable:p}}=t,g=u.global(Wo(d),()=>{}),m=u.global(wt(d),!1),f,y=m.value&&p,h=()=>{y&&(g.value(),m.setValue(!1),g.setValue(()=>{}))},I;if(o.requiredInputs!=null&&o.requiredInputs.length>0){let S=r();I=o.requiredInputs.some(b=>!S.input[b])}let k=u.global(`${d}.confirmationDialogId`,void 0);l.Section(`${d}.generate.section`,{children:()=>{l.Button(`${d}.generate`,{label:["ly.img.plugin-ai-generation-web.generate","common.generate",`panel.${d}.generate`],isLoading:m.value,color:"accent",isDisabled:I,suffix:y?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${d}.abort`,"common.cancel"],onClick:()=>{let S=s.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:b})=>{s.ui.closeDialog(b),k.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:b})=>{h(),s.ui.closeDialog(b),k.setValue(void 0)}}});k.setValue(S)}}:void 0,onClick:async()=>{f=new AbortController;let S=f.signal;await(async()=>{try{m.setValue(!0),g.setValue(()=>{a.debug&&console.log("Aborting generation"),f?.abort()});let b=await Qo({kind:t.kind,generate:i,historyAssetSourceId:o.historyAssetSourceId,userFlow:o.createPlaceholderBlock?"placeholder":"generation-only",getBlockInput:n,abortSignal:S,cesdk:s,debug:a.debug,dryRun:a.dryRun})(r().input);if(b.status==="aborted")return;if(b.status==="error"){Ht(b.message,{cesdk:s,provider:t,getInput:r,middlewareOptions:b.middlewareOptions});return}if(b.status==="success"&&b.type==="sync"&&!b.middlewareOptions?.defaultPrevented()){let v=t.output.notification;Yo(s,v,()=>({input:r().input,output:b.output}))}}catch(b){if(ht(b))return;Ht(b,{cesdk:s,provider:t,getInput:r})}finally{f=void 0,m.setValue(!1),g.setValue(()=>{}),k.value!=null&&(s.ui.closeDialog(k.value),k.setValue(void 0))}})()}}),t.output.generationHintText!=null&&l.Text(`${d}.generation-hint`,{align:"center",content:t.output.generationHintText})}}),c&&o.historyAssetLibraryEntryId!=null&&l.Library(`${d}.history.library`,{entries:[o.historyAssetLibraryEntryId]})}function Yo(e,t,i){let r=t?.success;if(r==null||!(typeof r.show=="function"?r.show(i()):r.show))return!1;let n=typeof r.message=="function"?r.message(i()):r.message??"common.ai-generation.success",o=r.action!=null?{label:typeof r.action.label=="function"?r.action.label(i()):r.action.label,onClick:()=>{r?.action?.onClick(i())}}:void 0;return e.ui.showNotification({type:"success",message:n,action:o,duration:r.duration}),!0}var bi=Zo;function ve(e){let{name:t}=e;return(typeof t=="function"?t():t)??e.id}async function Ko({options:e,provider:t,panelInput:i,config:r},n){if(i==null)return;let{cesdk:o}=e,{id:a}=t;r.debug&&console.log(`Provider: ${a} (custom)`);let l=i.render;return u=>{let{state:s}=u,c=s(wt(a),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:d,getBlockInput:p}=l(u,{cesdk:o,isGenerating:c});return bi(u,t,n,d,p,{...e,includeHistoryLibrary:i.includeHistoryLibrary??!0,createPlaceholderBlock:i.userFlow==="placeholder"},r),d}}var Xo=Ko;function hi(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let i=t.substring(2).split("/"),r=e;for(let n of i){if(r==null)throw new Error(`Invalid reference path: ${t}`);r=r[n]}if(r===void 0)throw new Error(`Reference not found: ${t}`);return r}function fe(e,t,i=new Set){if(t==null||i.has(t))return t;if(i.add(t),t.$ref&&typeof t.$ref=="string"){let r=hi(e,t.$ref),n={...fe(e,r,i)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(n[o]=fe(e,t[o],i));return n}if(Array.isArray(t))return t.map(r=>fe(e,r,i));if(typeof t=="object"){let r={};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=fe(e,t[n],i));return r}return t}function Jo(e){return fe(e,{...e})}function el(e,t=!1){let i=a=>(t&&console.log(`OpenAPI Schema validation failed: ${a}`),!1);if(typeof e!="object"||e===null)return i(`Input is ${e===null?"null":typeof e}, not an object`);let r=e;if(!(typeof r.type=="string"||Array.isArray(r.enum)||typeof r.properties=="object"||typeof r.items=="object"||typeof r.allOf=="object"||typeof r.anyOf=="object"||typeof r.oneOf=="object"||typeof r.not=="object"))return i("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(r.type!==void 0){let a=["string","number","integer","boolean","array","object","null"];if(typeof r.type=="string"){if(!a.includes(r.type))return i(`Invalid type: ${r.type}. Must be one of ${a.join(", ")}`)}else if(Array.isArray(r.type)){for(let l of r.type)if(typeof l!="string"||!a.includes(l))return i(`Array of types contains invalid value: ${l}. Must be one of ${a.join(", ")}`)}else return i(`Type must be a string or array of strings, got ${typeof r.type}`)}if(r.items!==void 0&&(typeof r.items!="object"||r.items===null))return i(`Items must be an object, got ${r.items===null?"null":typeof r.items}`);if(r.properties!==void 0&&(typeof r.properties!="object"||r.properties===null))return i(`Properties must be an object, got ${r.properties===null?"null":typeof r.properties}`);let n=["allOf","anyOf","oneOf"];for(let a of n)if(r[a]!==void 0){if(!Array.isArray(r[a]))return i(`${a} must be an array, got ${typeof r[a]}`);for(let l=0;l<r[a].length;l++){let u=r[a][l];if(typeof u!="object"||u===null)return i(`Item ${l} in ${a} must be an object, got ${u===null?"null":typeof u}`)}}if(r.not!==void 0&&(typeof r.not!="object"||r.not===null))return i(`'not' must be an object, got ${r.not===null?"null":typeof r.not}`);if(r.additionalProperties!==void 0&&typeof r.additionalProperties!="boolean"&&(typeof r.additionalProperties!="object"||r.additionalProperties===null))return i(`additionalProperties must be a boolean or an object, got ${r.additionalProperties===null?"null":typeof r.additionalProperties}`);if(r.format!==void 0&&typeof r.format!="string")return i(`format must be a string, got ${typeof r.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let a of o)if(r[a]!==void 0&&typeof r[a]!="number")return i(`${a} must be a number, got ${typeof r[a]}`);if(r.minLength!==void 0&&(typeof r.minLength!="number"||r.minLength<0))return i(`minLength must be a non-negative number, got ${typeof r.minLength=="number"?r.minLength:typeof r.minLength}`);if(r.maxLength!==void 0&&(typeof r.maxLength!="number"||r.maxLength<0))return i(`maxLength must be a non-negative number, got ${typeof r.maxLength=="number"?r.maxLength:typeof r.maxLength}`);if(r.pattern!==void 0&&typeof r.pattern!="string")return i(`pattern must be a string, got ${typeof r.pattern}`);if(r.minItems!==void 0&&(typeof r.minItems!="number"||r.minItems<0))return i(`minItems must be a non-negative number, got ${typeof r.minItems=="number"?r.minItems:typeof r.minItems}`);if(r.maxItems!==void 0&&(typeof r.maxItems!="number"||r.maxItems<0))return i(`maxItems must be a non-negative number, got ${typeof r.maxItems=="number"?r.maxItems:typeof r.maxItems}`);if(r.uniqueItems!==void 0&&typeof r.uniqueItems!="boolean")return i(`uniqueItems must be a boolean, got ${typeof r.uniqueItems}`);if(r.minProperties!==void 0&&(typeof r.minProperties!="number"||r.minProperties<0))return i(`minProperties must be a non-negative number, got ${typeof r.minProperties=="number"?r.minProperties:typeof r.minProperties}`);if(r.maxProperties!==void 0&&(typeof r.maxProperties!="number"||r.maxProperties<0))return i(`maxProperties must be a non-negative number, got ${typeof r.maxProperties=="number"?r.maxProperties:typeof r.maxProperties}`);if(r.required!==void 0){if(!Array.isArray(r.required))return i(`required must be an array, got ${typeof r.required}`);for(let a=0;a<r.required.length;a++){let l=r.required[a];if(typeof l!="string")return i(`Item ${a} in required array must be a string, got ${typeof l}`)}}return!0}function tl(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let i=e.properties,r=[];return il(e,t).forEach(n=>{let o=n,a=i[n]??void 0;r.push({id:o,schema:a})}),r}function il(e,t){let i=t.order;if(i!=null&&Array.isArray(i))return i;if(e.properties==null)throw new Error("Input schema must have properties");let r=e.properties,n=Object.keys(r),o=rl(e,t)??n;return i!=null&&typeof i=="function"&&(o=i(o)),[...new Set(o)]}function rl(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 i=(typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword).find(r=>r in e);return i==null?void 0:e[i]}var vi=tl;function B(e,t,i,r){let n=`property.${e.id}${r?`.${r}`:""}`,o=[`ly.img.plugin-ai-${i}-generation-web.${t.id}.${n}`,`ly.img.plugin-ai-generation-web.${n}`,`ly.img.plugin-ai-${i}-generation-web.${t.id}.defaults.${n}`,`ly.img.plugin-ai-generation-web.defaults.${n}`];return r==="placeholder"&&o.push("ly.img.plugin-ai-generation-web.fallback.property.placeholder"),o}function wi(e){let t="x-imgly-enum-labels"in e&&typeof e["x-imgly-enum-labels"]=="object"?e["x-imgly-enum-labels"]:{},i="x-imgly-enum-icons"in e&&typeof e["x-imgly-enum-icons"]=="object"?e["x-imgly-enum-icons"]:{};return{labels:t,icons:i}}function ki(e,t,i,r,n,o,a,l){if(t.schema==null)if(r.renderCustomProperty!=null&&r.renderCustomProperty[t.id]!=null){let c={...e,providerConfig:l,config:o};return r.renderCustomProperty[t.id](c,t)}else return;let u=t,s=t.schema.type;if(r.renderCustomProperty!=null&&r.renderCustomProperty[t.id]!=null){let c={...e,providerConfig:l,config:o};return r.renderCustomProperty[t.id](c,t)}switch(s){case"string":return t.schema.enum!=null?nl(e,u,i,r,n,o,a,l):Ii(e,u,i,r,n,o,a,l);case"boolean":return Ai(e,u,i,r,n,o,a,l);case"number":case"integer":return Si(e,u,i,r,n,o,a,l);case"object":return yt(e,u,i,r,n,o,a,l);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return al(e,u,i,r,n,o,a,l);break}default:console.error(`Unsupported property type: ${s}`)}}function yt(e,t,i,r,n,o,a,l){let u=vi(t.schema??{},r).reduce((s,c)=>{let d=ki(e,c,i,r,n,o,a,l);return d!=null&&(s[c.id]=d()),s},{});return()=>({id:t.id,type:"object",value:u})}function Ii(e,t,i,r,n,o,a,l){let{builder:u,experimental:{global:s},engine:c}=e,{id:d}=t,p=`${i.id}.${d}`,g=B(t,i,a),m=B(t,i,a,"placeholder"),f=Ie(c,n.cesdk),y=l?.properties?.[d]??o.properties?.[d],h=Ae(d,y,f,t.schema.default,""),I=s(p,h),k=ol(t.schema),S=k?.component!=null&&k?.component==="TextArea"?"TextArea":"TextInput",b=m.length>0?m:void 0;return u[S](p,{inputLabel:g,...b&&{placeholder:b},...I}),()=>({id:t.id,type:"string",value:I.value})}function nl(e,t,i,r,n,o,a,l){let{builder:u,experimental:{global:s},engine:c}=e,{id:d}=t,p=`${i.id}.${d}`,g=B(t,i,a),{labels:m,icons:f}=wi(t.schema),y=(t.schema.enum??[]).map(v=>({id:v,label:B(t,i,a,v),icon:f[v]})),h=Ie(c,n.cesdk),I=l?.properties?.[d]??o.properties?.[d],k=Ae(d,I,h,t.schema.default,y[0]?.id),S=k!=null?y.find(v=>v.id===k)??y[0]:y[0],b=s(p,S);return u.Select(p,{inputLabel:g,values:y,...b}),()=>({id:t.id,type:"string",value:b.value.id})}function Ai(e,t,i,r,n,o,a,l){let{builder:u,experimental:{global:s},engine:c}=e,{id:d}=t,p=`${i.id}.${d}`,g=B(t,i,a),m=Ie(c,n.cesdk),f=l?.properties?.[d]??o.properties?.[d],y=!!Ae(d,f,m,t.schema.default,!1),h=s(p,y);return u.Checkbox(p,{inputLabel:g,...h}),()=>({id:t.id,type:"boolean",value:h.value})}function Si(e,t,i,r,n,o,a,l){let{builder:u,experimental:{global:s},engine:c}=e,{id:d}=t,p=`${i.id}.${d}`,g=B(t,i,a),m=t.schema.minimum,f=t.schema.maximum,y=Ie(c,n.cesdk),h=l?.properties?.[d]??o.properties?.[d],I=t.schema.default;I==null&&(m!=null?I=m:f!=null?I=f:I=0);let k=Ae(d,h,y,I,I),S=s(p,k);if(m!=null&&f!=null){let b=t.schema.type==="number"?.1:1;"x-imgly-step"in t.schema&&typeof t.schema["x-imgly-step"]=="number"&&(b=t.schema["x-imgly-step"]),u.Slider(p,{inputLabel:g,min:m,max:f,step:b,...S})}else u.NumberInput(p,{inputLabel:g,min:m,max:f,...S});return()=>({id:t.id,type:"integer",value:S.value})}function al(e,t,i,r,n,o,a,l){let{builder:u,experimental:{global:s},engine:c}=e,{id:d}=t,p=`${i.id}.${d}`,g=B(t,i,a),m=t.schema.anyOf??[],f=[],y={},h={},{labels:I,icons:k}=wi(t.schema),S=Ie(c,n.cesdk),b=l?.properties?.[d]??o.properties?.[d],v={string:Ii,boolean:Ai,integer:Si,object:yt},C=(A,N)=>A.$ref?A.$ref.split("/").pop():N.split(".").pop()??N,w=(A,N)=>({id:A,label:B(t,i,a,N),icon:k[N]??k[A]});m.forEach((A,N)=>{let M=`${i.id}.${d}.anyOf[${N}]`;if(A.$ref||A.title){let j=A.$ref?A.$ref.split("/").pop():A.title;y[M]=()=>yt(e,{id:M,schema:{...A,title:I[j]||j}},i,r,n,o,a,l),f.push(w(M,j))}else if(A.type==="string"&&A.enum)A.enum.forEach(j=>{f.push(w(j,j))});else if(A.type&&v[A.type]){let j=v[A.type];y[M]=()=>j(e,{id:M,schema:{...A,title:A.title}},i,r,n,o,a,l);let nt=C(A,M);f.push(A.type==="string"&&!A.enum?{id:M,label:A.title||nt,icon:A.title&&k[A.title]||k[nt]}:w(M,nt))}});let P=Ae(d,b,S,t.schema.default,null),E=P!=null?f.find(A=>A.id===P)??f[0]:f[0],D=s(p,E);if(u.Select(p,{inputLabel:g,values:f,...D}),D.value.id in y){let A=y[D.value.id]();h[D.value.id]=A}return()=>{let A=h[D.value.id];return A!=null?{...A(),id:t.id}:{id:t.id,type:"string",value:D.value.id}}}function ol(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var ll=ki,sl={"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 Qt(e){return e.replace(/_/g," ").replace(/\b3d\b/gi,"3D").replace(/\b2d\b/gi,"2D").replace(/\b\w/g,t=>t.toUpperCase())}function Wt(e,t,i,r){let n={},o=(s,c)=>`ly.img.plugin-ai-${r}-generation-web.${t.id}.defaults.property.${s}${c?`.${c}`:""}`,a=s=>"x-imgly-enum-labels"in s&&typeof s["x-imgly-enum-labels"]=="object"?s["x-imgly-enum-labels"]:{},l=(s,c,d)=>{s.forEach(p=>{let g=String(p),m=d[g]||Qt(g);n[o(c,g)]=m})};e.forEach(s=>{if(s.schema?.title&&(n[o(s.id)]=s.schema.title),s.schema?.enum){let c=a(s.schema);l(s.schema.enum,s.id,c)}if(s.schema?.anyOf&&Array.isArray(s.schema.anyOf)){let c=a(s.schema);s.schema.anyOf.forEach(d=>{let p=d;if(p.enum&&Array.isArray(p.enum))l(p.enum,s.id,c);else if(p.$ref){let g=p.$ref.split("/").pop();g&&c[g]&&(n[o(s.id,g)]=c[g])}else if(p.title){let g=p.title,m=c[g]||Qt(g);n[o(s.id,g)]=m}})}});let u={...sl,...n};Object.keys(u).length>0&&T(i.cesdk,{en:u})}function Zt(e){return typeof e.document=="function"?e.document():e.document}function Yt(e,t,i){let r=Jo(e),n=hi(r,t.inputReference);if(!el(n,i))throw new Error(`Input reference '${t.inputReference}' does not resolve to a valid OpenAPI schema`);let o=n,a=vi(o,t);return{inputSchema:o,properties:a}}function Kt(e,t,i,{options:r,provider:n,config:o,providerConfig:a},l){let{id:u}=n;return s=>{let{builder:c}=s,d=[];c.Section(`${u}.schema.section`,{children:()=>{t.forEach(y=>{let h=ll(s,y,n,i,r,o,n.kind,a);h!=null&&(Array.isArray(h)?d.push(...h):d.push(h))})}});let p=d.map(y=>y()),g=y=>y.type==="object"?Object.entries(y.value).reduce((h,[I,k])=>(h[I]=g(k),h),{}):y.value,m=p.reduce((y,h)=>(y[h.id]=g(h),y),{}),f=[...new Set([...e.required??[],...p.filter(y=>y.required).map(y=>y.id)])];bi(s,n,l,()=>({input:m}),()=>i.getBlockInput(m),{...r,requiredInputs:f,createPlaceholderBlock:i.userFlow==="placeholder"},o)}}async function cl(e,t){let{options:i,provider:r,panelInput:n,config:o}=e,{id:a}=r;if(n==null)return;let l=n;o.debug&&console.log(`Provider: ${a} (schema-based)`);let u=Zt(l);if(!(u instanceof Promise)){let{inputSchema:g,properties:m}=Yt(u,l,o.debug);return Wt(m,r,i,r.kind),Kt(g,m,l,e,t)}let s=null,c=null,d=`${a}.schema.loading`;function p(){s=null,c=null,i.cesdk.ui.experimental.setGlobalStateValue(d,!0),Promise.resolve(Zt(l)).then(g=>{let{inputSchema:m,properties:f}=Yt(g,l,o.debug);Wt(f,r,i,r.kind),c=Kt(m,f,l,e,t)}).catch(g=>{s=g instanceof Error?g:new Error(String(g))}).fi