@imgly/plugin-ai-image-generation-web 0.1.10 → 0.2.1

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/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import { Output } from '@imgly/plugin-ai-generation-web';
2
+ import { DEFAULT_IMAGE_QUICK_ACTION_ORDER } from './plugin';
1
3
  import { type PluginConfiguration } from './types';
2
- declare const Plugin: (pluginConfiguration: PluginConfiguration) => {
4
+ declare const Plugin: <I, O extends Output>(pluginConfiguration: PluginConfiguration<I, O>) => {
3
5
  initialize: (context: import("@cesdk/engine").EnginePluginContext & {
4
6
  cesdk?: import("@cesdk/cesdk-js").default;
5
7
  }) => void;
@@ -7,3 +9,4 @@ declare const Plugin: (pluginConfiguration: PluginConfiguration) => {
7
9
  version: string;
8
10
  };
9
11
  export default Plugin;
12
+ export { DEFAULT_IMAGE_QUICK_ACTION_ORDER };
package/dist/index.mjs CHANGED
@@ -1,5 +1,7 @@
1
- var ct=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=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},i.onupgradeneeded=n=>{let a=n.target.result;a.objectStoreNames.contains(this.assetStoreName)||a.createObjectStore(this.assetStoreName,{keyPath:"id"}),a.objectStoreNames.contains(this.blobStoreName)||a.createObjectStore(this.blobStoreName,{keyPath:"id"})},i.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,s)=>{let u=e.locale??"en",d="",p=[];s.label!=null&&typeof s.label=="object"&&s.label[u]&&(d=s.label[u]),s.tags!=null&&typeof s.tags=="object"&&s.tags[u]&&(p=s.tags[u]);let m={...s,label:d,tags:p};return this.filterAsset(m,e)&&c.push(m),c},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:i,perPage:n}=e,a=i*n,o=a+n,r=t.slice(a,o),l=o<t.length?i+1:void 0;return{assets:r,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 n=new Set;i.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(r=>n.add(r))});let a=[...n];e(a)},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),n=new Set;T(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let a={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};i.put(a),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=()=>{T(t,n=>{this.removeBlob(n)}),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 n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let a=n.result;a.sort((o,r)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),c=r.meta?.insertedAt||r._insertedAt||Date.now();return e==="asc"?l-c:c-l}),t(a)},n.onerror=()=>{i(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,i)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{i(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,i)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{i(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 i=>{let n=await(await fetch(i)).blob();t[i]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let i=this.db.transaction(this.blobStoreName,"readwrite"),n=i.objectStore(this.blobStoreName);Object.entries(t).forEach(([a,o])=>{let r={id:a,blob:o};n.put(r)}),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 T(e,n=>{i.add(n)}),await Promise.all([...i].map(async n=>{let a=await this.createBlobUrlFromStore(n);t[n]=a})),T(e,n=>t[n]??n)}filterAsset(e,t){let{query:i,tags:n,groups:a,excludeGroups:o}=t;if(i&&i.trim()!==""){let r=i.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",c=e.tags?.map(s=>s.toLowerCase())??[];if(!r.every(s=>l.includes(s)||c.some(u=>u.includes(s))))return!1}if(n){let r=Array.isArray(n)?n:[n];if(r.length>0&&(!e.tags||!r.every(l=>e.tags?.includes(l))))return!1}return!(a&&a.length>0&&(!e.groups||!a.some(r=>e.groups?.includes(r)))||o&&o.length>0&&e.groups&&e.groups.some(r=>o.includes(r)))}sortAssets(e,t){let{sortingOrder:i,sortKey:n,sortActiveFirst:a}=t,o=[...e];return!i||i==="None"||(n?o.sort((r,l)=>{let c,s;return n==="id"?(c=r.id,s=l.id):(c=r.meta?.[n]??null,s=l.meta?.[n]??null),c==null?i==="Ascending"?-1:1:s==null?i==="Ascending"?1:-1:typeof c=="string"&&typeof s=="string"?i==="Ascending"?c.localeCompare(s):s.localeCompare(c):i==="Ascending"?c<s?-1:c>s?1:0:c>s?-1:c<s?1:0}):i==="Descending"&&o.reverse(),a&&o.sort((r,l)=>r.active&&!l.active?-1:!r.active&&l.active?1:0)),o}};function T(e,t,i=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let a=i?`${i}[${n}]`:`[${n}]`;if(typeof e[n]=="string"&&e[n].startsWith("blob:")){let o=t(e[n],a);typeof o=="string"&&(e[n]=o)}else e[n]=T(e[n],t,a)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let a=e[n],o=i?`${i}.${n}`:n;if(typeof a=="string"&&a.startsWith("blob:")){let r=t(a,o);typeof r=="string"&&(e[n]=r)}else e[n]=T(a,t,o)}return e}var ut=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)}},De=ut,dt=typeof global=="object"&&global&&global.Object===Object&&global,Oe=dt,pt=typeof self=="object"&&self&&self.Object===Object&&self,gt=Oe||pt||Function("return this")(),E=gt,mt=E.Symbol,L=mt,Pe=Object.prototype,yt=Pe.hasOwnProperty,ft=Pe.toString,U=L?L.toStringTag:void 0;function bt(e){var t=yt.call(e,U),i=e[U];try{e[U]=void 0;var n=!0}catch{}var a=ft.call(e);return n&&(t?e[U]=i:delete e[U]),a}var ht=bt,kt=Object.prototype,vt=kt.toString;function wt(e){return vt.call(e)}var At=wt,It="[object Null]",Ct="[object Undefined]",be=L?L.toStringTag:void 0;function xt(e){return e==null?e===void 0?Ct:It:be&&be in Object(e)?ht(e):At(e)}var R=xt;function Mt(e){return e!=null&&typeof e=="object"}var ue=Mt,Lo=Array.isArray;function Et(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var _e=Et,St="[object AsyncFunction]",$t="[object Function]",jt="[object GeneratorFunction]",Tt="[object Proxy]";function Lt(e){if(!_e(e))return!1;var t=R(e);return t==$t||t==jt||t==St||t==Tt}var Nt=Lt,Dt=E["__core-js_shared__"],X=Dt,he=function(){var e=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ot(e){return!!he&&he in e}var Pt=Ot,_t=Function.prototype,zt=_t.toString;function Ut(e){if(e!=null){try{return zt.call(e)}catch{}try{return e+""}catch{}}return""}var $=Ut,qt=/[\\^$.*+?()[\]{}|]/g,Bt=/^\[object .+?Constructor\]$/,Vt=Function.prototype,Ft=Object.prototype,Gt=Vt.toString,Qt=Ft.hasOwnProperty,Rt=RegExp("^"+Gt.call(Qt).replace(qt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Yt(e){if(!_e(e)||Pt(e))return!1;var t=Nt(e)?Rt:Bt;return t.test($(e))}var Ht=Yt;function Zt(e,t){return e?.[t]}var Wt=Zt;function Kt(e,t){var i=Wt(e,t);return Ht(i)?i:void 0}var D=Kt,Jt=D(E,"WeakMap"),re=Jt;function Xt(e,t){return e===t||e!==e&&t!==t}var en=Xt,tn=9007199254740991;function nn(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=tn}var rn=nn,No=Object.prototype,on="[object Arguments]";function an(e){return ue(e)&&R(e)==on}var ke=an,ze=Object.prototype,ln=ze.hasOwnProperty,sn=ze.propertyIsEnumerable,Do=ke(function(){return arguments}())?ke:function(e){return ue(e)&&ln.call(e,"callee")&&!sn.call(e,"callee")},Ue=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ve=Ue&&typeof module=="object"&&module&&!module.nodeType&&module,cn=ve&&ve.exports===Ue,we=cn?E.Buffer:void 0,Oo=we?we.isBuffer:void 0,un="[object Arguments]",dn="[object Array]",pn="[object Boolean]",gn="[object Date]",mn="[object Error]",yn="[object Function]",fn="[object Map]",bn="[object Number]",hn="[object Object]",kn="[object RegExp]",vn="[object Set]",wn="[object String]",An="[object WeakMap]",In="[object ArrayBuffer]",Cn="[object DataView]",xn="[object Float32Array]",Mn="[object Float64Array]",En="[object Int8Array]",Sn="[object Int16Array]",$n="[object Int32Array]",jn="[object Uint8Array]",Tn="[object Uint8ClampedArray]",Ln="[object Uint16Array]",Nn="[object Uint32Array]",A={};A[xn]=A[Mn]=A[En]=A[Sn]=A[$n]=A[jn]=A[Tn]=A[Ln]=A[Nn]=!0;A[un]=A[dn]=A[In]=A[pn]=A[Cn]=A[gn]=A[mn]=A[yn]=A[fn]=A[bn]=A[hn]=A[kn]=A[vn]=A[wn]=A[An]=!1;function Dn(e){return ue(e)&&rn(e.length)&&!!A[R(e)]}var On=Dn;function Pn(e){return function(t){return e(t)}}var _n=Pn,qe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,F=qe&&typeof module=="object"&&module&&!module.nodeType&&module,zn=F&&F.exports===qe,ee=zn&&Oe.process,Un=function(){try{var e=F&&F.require&&F.require("util").types;return e||ee&&ee.binding&&ee.binding("util")}catch{}}(),Ae=Un,Ie=Ae&&Ae.isTypedArray,Po=Ie?_n(Ie):On,qn=Object.prototype,_o=qn.hasOwnProperty;function Bn(e,t){return function(i){return e(t(i))}}var Vn=Bn,zo=Vn(Object.keys,Object),Fn=Object.prototype,Uo=Fn.hasOwnProperty,Gn=D(Object,"create"),G=Gn;function Qn(){this.__data__=G?G(null):{},this.size=0}var Rn=Qn;function Yn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Hn=Yn,Zn="__lodash_hash_undefined__",Wn=Object.prototype,Kn=Wn.hasOwnProperty;function Jn(e){var t=this.__data__;if(G){var i=t[e];return i===Zn?void 0:i}return Kn.call(t,e)?t[e]:void 0}var Xn=Jn,ei=Object.prototype,ti=ei.hasOwnProperty;function ni(e){var t=this.__data__;return G?t[e]!==void 0:ti.call(t,e)}var ii=ni,ri="__lodash_hash_undefined__";function oi(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=G&&t===void 0?ri:t,this}var ai=oi;function O(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}O.prototype.clear=Rn;O.prototype.delete=Hn;O.prototype.get=Xn;O.prototype.has=ii;O.prototype.set=ai;var Ce=O;function li(){this.__data__=[],this.size=0}var si=li;function ci(e,t){for(var i=e.length;i--;)if(en(e[i][0],t))return i;return-1}var W=ci,ui=Array.prototype,di=ui.splice;function pi(e){var t=this.__data__,i=W(t,e);if(i<0)return!1;var n=t.length-1;return i==n?t.pop():di.call(t,i,1),--this.size,!0}var gi=pi;function mi(e){var t=this.__data__,i=W(t,e);return i<0?void 0:t[i][1]}var yi=mi;function fi(e){return W(this.__data__,e)>-1}var bi=fi;function hi(e,t){var i=this.__data__,n=W(i,e);return n<0?(++this.size,i.push([e,t])):i[n][1]=t,this}var ki=hi;function P(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}P.prototype.clear=si;P.prototype.delete=gi;P.prototype.get=yi;P.prototype.has=bi;P.prototype.set=ki;var K=P,vi=D(E,"Map"),Q=vi;function wi(){this.size=0,this.__data__={hash:new Ce,map:new(Q||K),string:new Ce}}var Ai=wi;function Ii(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ci=Ii;function xi(e,t){var i=e.__data__;return Ci(t)?i[typeof t=="string"?"string":"hash"]:i.map}var J=xi;function Mi(e){var t=J(this,e).delete(e);return this.size-=t?1:0,t}var Ei=Mi;function Si(e){return J(this,e).get(e)}var $i=Si;function ji(e){return J(this,e).has(e)}var Ti=ji;function Li(e,t){var i=J(this,e),n=i.size;return i.set(e,t),this.size+=i.size==n?0:1,this}var Ni=Li;function _(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}_.prototype.clear=Ai;_.prototype.delete=Ei;_.prototype.get=$i;_.prototype.has=Ti;_.prototype.set=Ni;var Be=_;function Di(){this.__data__=new K,this.size=0}var Oi=Di;function Pi(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}var _i=Pi;function zi(e){return this.__data__.get(e)}var Ui=zi;function qi(e){return this.__data__.has(e)}var Bi=qi,Vi=200;function Fi(e,t){var i=this.__data__;if(i instanceof K){var n=i.__data__;if(!Q||n.length<Vi-1)return n.push([e,t]),this.size=++i.size,this;i=this.__data__=new Be(n)}return i.set(e,t),this.size=i.size,this}var Gi=Fi;function Y(e){var t=this.__data__=new K(e);this.size=t.size}Y.prototype.clear=Oi;Y.prototype.delete=_i;Y.prototype.get=Ui;Y.prototype.has=Bi;Y.prototype.set=Gi;var Qi=Object.prototype,qo=Qi.propertyIsEnumerable,Ri=D(E,"DataView"),oe=Ri,Yi=D(E,"Promise"),ae=Yi,Hi=D(E,"Set"),le=Hi,xe="[object Map]",Zi="[object Object]",Me="[object Promise]",Ee="[object Set]",Se="[object WeakMap]",$e="[object DataView]",Wi=$(oe),Ki=$(Q),Ji=$(ae),Xi=$(le),er=$(re),j=R;(oe&&j(new oe(new ArrayBuffer(1)))!=$e||Q&&j(new Q)!=xe||ae&&j(ae.resolve())!=Me||le&&j(new le)!=Ee||re&&j(new re)!=Se)&&(j=function(e){var t=R(e),i=t==Zi?e.constructor:void 0,n=i?$(i):"";if(n)switch(n){case Wi:return $e;case Ki:return xe;case Ji:return Me;case Xi:return Ee;case er:return Se}return t});var Bo=E.Uint8Array,tr="__lodash_hash_undefined__";function nr(e){return this.__data__.set(e,tr),this}var ir=nr;function rr(e){return this.__data__.has(e)}var or=rr;function se(e){var t=-1,i=e==null?0:e.length;for(this.__data__=new Be;++t<i;)this.add(e[t])}se.prototype.add=se.prototype.push=ir;se.prototype.has=or;var je=L?L.prototype:void 0,Vo=je?je.valueOf:void 0,ar=Object.prototype,Fo=ar.hasOwnProperty,lr=Object.prototype,Go=lr.hasOwnProperty,Qo=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),Ro=new RegExp(/[A-Fa-f0-9]{1}/,"g"),Yo=new RegExp(/[A-Fa-f0-9]{2}/,"g");function sr(e){return{"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg"}[e]??"png"}async function Ve(e,t){if(e.startsWith("buffer:")){let i=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),a=t.editor.getBufferData(e,0,n),o=new Blob([a],{type:i});return URL.createObjectURL(o)}else return e}async function ce(e,t){let i=await Ve(e,t);return new Promise((n,a)=>{let o=new Image;o.onload=()=>{n({width:o.width,height:o.height})},o.onerror=a,o.src=i})}async function cr(e,t,i){let n,a=t.block.getFill(e),o=t.block.getSourceSet(a,"fill/image/sourceSet"),[r]=o;if(r==null){if(n=t.block.getString(a,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=r.uri;if(i?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return Ve(n,t)}function Fe(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let i=t.substring(2).split("/"),n=e;for(let a of i){if(n==null)throw new Error(`Invalid reference path: ${t}`);n=n[a]}if(n===void 0)throw new Error(`Reference not found: ${t}`);return n}function B(e,t,i=new Set){if(t==null||i.has(t))return t;if(i.add(t),t.$ref&&typeof t.$ref=="string"){let n=Fe(e,t.$ref),a={...B(e,n,i)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(a[o]=B(e,t[o],i));return a}if(Array.isArray(t))return t.map(n=>B(e,n,i));if(typeof t=="object"){let n={};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=B(e,t[a],i));return n}return t}function ur(e){return B(e,{...e})}function dr(e,t=!1){let i=r=>(t&&console.log(`OpenAPI Schema validation failed: ${r}`),!1);if(typeof e!="object"||e===null)return i(`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 i("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let r=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!r.includes(n.type))return i(`Invalid type: ${n.type}. Must be one of ${r.join(", ")}`)}else if(Array.isArray(n.type)){for(let l of n.type)if(typeof l!="string"||!r.includes(l))return i(`Array of types contains invalid value: ${l}. Must be one of ${r.join(", ")}`)}else return i(`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 i(`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 i(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let a=["allOf","anyOf","oneOf"];for(let r of a)if(n[r]!==void 0){if(!Array.isArray(n[r]))return i(`${r} must be an array, got ${typeof n[r]}`);for(let l=0;l<n[r].length;l++){let c=n[r][l];if(typeof c!="object"||c===null)return i(`Item ${l} in ${r} must be an object, got ${c===null?"null":typeof c}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return i(`'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 i(`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 i(`format must be a string, got ${typeof n.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let r of o)if(n[r]!==void 0&&typeof n[r]!="number")return i(`${r} must be a number, got ${typeof n[r]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return i(`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 i(`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 i(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return i(`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 i(`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 i(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return i(`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 i(`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 i(`required must be an array, got ${typeof n.required}`);for(let r=0;r<n.required.length;r++){let l=n.required[r];if(typeof l!="string")return i(`Item ${r} in required array must be a string, got ${typeof l}`)}}return!0}function pr(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let i=e.properties,n=[];return gr(e,t).forEach(a=>{let o=a,r=i[a]??void 0;n.push({id:o,schema:r})}),n}function gr(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 n=e.properties,a=Object.keys(n),o=mr(e,t)??a;return i!=null&&typeof i=="function"&&(o=i(o)),[...new Set(o)]}function mr(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(n=>n in e);return i==null?void 0:e[i]}var Ge=pr,yr="ly.img.ai",te="ly.img.ai/temp";async function fr(e,t){return e.engine.asset.findAllSources().includes(te)||e.engine.asset.addLocalSource(te),e.engine.asset.apply(te,t)}function Qe(e){return`${yr}/${e}`}function br(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 hr(){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 kr(e,t=0,i="image/jpeg",n=.8){return new Promise((a,o)=>{try{let r=document.createElement("video");r.crossOrigin="anonymous",r.style.display="none",r.addEventListener("loadedmetadata",()=>{r.currentTime=Math.min(t,r.duration),r.addEventListener("seeked",()=>{let l=document.createElement("canvas");l.width=r.videoWidth,l.height=r.videoHeight;let c=l.getContext("2d");if(!c){document.body.removeChild(r),o(new Error("Failed to create canvas context"));return}c.drawImage(r,0,0,l.width,l.height);try{let s=l.toDataURL(i,n);document.body.removeChild(r),a(s)}catch(s){document.body.removeChild(r),o(new Error(`Failed to create thumbnail: ${s instanceof Error?s.message:String(s)}`))}},{once:!0})}),r.addEventListener("error",()=>{document.body.removeChild(r),o(new Error(`Failed to load video from ${e}`))}),r.src=e,document.body.appendChild(r)}catch(r){o(r)}})}function Re(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 de(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 N(e){return e instanceof Error&&e.name==="AbortError"}function Ye(e,t,i,n,a,o){if(t.schema==null)return n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null?n.renderCustomProperty[t.id](e,t):void 0;let r=t,l=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null)return n.renderCustomProperty[t.id](e,t);switch(l){case"string":return t.schema.enum!=null?vr(e,r,i,n,a,o):Ze(e,r,i,n,a,o);case"boolean":return We(e,r,i,n,a,o);case"number":case"integer":return Ke(e,r,i,n,a,o);case"object":return He(e,r,i,n,a,o);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return wr(e,r,i,n,a,o);break}default:console.error(`Unsupported property type: ${l}`)}}function He(e,t,i,n,a,o){let r=Ge(t.schema??{},n).reduce((l,c)=>{let s=Ye(e,c,i,n,a,o);return s!=null&&(l[c.id]=s()),l},{});return()=>({id:t.id,type:"object",value:r})}function Ze(e,t,i,n,a,o){let{builder:r,experimental:{global:l}}=e,{id:c}=t,s=`${i.id}.${c}`,u=t.schema.title??s,d=l(s,t.schema.default??""),p=Ar(t.schema),m=p?.component!=null&&p?.component==="TextArea"?"TextArea":"TextInput";return r[m](s,{inputLabel:u,placeholder:a.i18n?.prompt,...d}),()=>({id:t.id,type:"string",value:d.value})}function vr(e,t,i,n,a,o){let{builder:r,experimental:{global:l}}=e,{id:c}=t,s=`${i.id}.${c}`,u=t.schema.title??s,d=t.schema.enum!=null&&"x-imgly-enum-labels"in t.schema.enum&&typeof t.schema.enum["x-imgly-enum-labels"]=="object"?t.schema.enum["x-imgly-enum-labels"]:"x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},p="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{},m=(t.schema.enum??[]).map(h=>({id:h,label:d[h]??Re(h),icon:p[h]})),f=t.schema.default!=null?m.find(h=>h.id===t.schema.default)??m[0]:m[0],w=l(s,f);return r.Select(s,{inputLabel:u,values:m,...w}),()=>({id:t.id,type:"string",value:w.value.id})}function We(e,t,i,n,a,o){let{builder:r,experimental:{global:l}}=e,{id:c}=t,s=`${i.id}.${c}`,u=t.schema.title??s,d=!!t.schema.default,p=l(s,d);return r.Checkbox(s,{inputLabel:u,...p}),()=>({id:t.id,type:"boolean",value:p.value})}function Ke(e,t,i,n,a,o){let{builder:r,experimental:{global:l}}=e,{id:c}=t,s=`${i.id}.${c}`,u=t.schema.title??s,d=t.schema.minimum,p=t.schema.maximum,m=t.schema.default;m==null&&(d!=null?m=d:p!=null?m=p:m=0);let f=l(s,m);if(d!=null&&p!=null){let w=t.schema.type==="number"?.1:1;"x-imgly-step"in t.schema&&typeof t.schema["x-imgly-step"]=="number"&&(w=t.schema["x-imgly-step"]),r.Slider(s,{inputLabel:u,min:d,max:p,step:w,...f})}else r.NumberInput(s,{inputLabel:u,min:d,max:p,...f});return()=>({id:t.id,type:"integer",value:f.value})}function wr(e,t,i,n,a,o){let{builder:r,experimental:{global:l}}=e,{id:c}=t,s=`${i.id}.${c}`,u=t.schema.title??s,d=t.schema.anyOf??[],p=[],m={},f={};d.forEach((g,k)=>{let y=g.title??"common.custom",b=`${i.id}.${c}.anyOf[${k}]`,v="x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},I="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{};g.type==="string"?g.enum!=null?g.enum.forEach(C=>{p.push({id:C,label:v[C]??Re(C),icon:I[C]})}):(m[b]=()=>Ze(e,{id:b,schema:{...g,title:y}},i,n,a,o),p.push({id:b,label:v[y]??y,icon:I[y]})):g.type==="boolean"?(m[b]=()=>We(e,{id:b,schema:{...g,title:y}},i,n,a,o),p.push({id:b,label:v[y]??y,icon:I[y]})):g.type==="integer"?(m[b]=()=>Ke(e,{id:b,schema:{...g,title:y}},i,n,a,o),p.push({id:b,label:v[y]??y,icon:I[y]})):g.type==="array"||g.type==="object"&&(m[b]=()=>He(e,{id:b,schema:{...g,title:y}},i,n,a,o),p.push({id:b,label:v[y]??y,icon:I[y]}))});let w=t.schema.default!=null?p.find(g=>g.id===t.schema.default)??p[0]:p[0],h=l(s,w);if(r.Select(s,{inputLabel:u,values:p,...h}),h.value.id in m){let g=m[h.value.id]();f[h.value.id]=g}return()=>{let g=f[h.value.id];return g!=null?{...g(),id:t.id}:{id:t.id,type:"string",value:h.value.id}}}function Ar(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var Ir=Ye,Cr="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",Je=Cr;function xr(e,t,i){switch(t){case"image":return Mr(e,i[t]);case"video":return Er(e,i[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Mr(e,t){let i=t.width,n=t.height;return{id:e,meta:{previewUri:Je,fillType:"//ly.img.ubq/fill/image",kind:"image",width:i,height:n}}}function Er(e,t){let i=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:Je,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:i,height:n}}}var Sr=xr;async function $r(e,t,i,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 jr(e,i[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return Tr(e,i[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Lr(e,i[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function jr(e,t,i){let n=t.width,a=t.height;return{id:e,label:t.label,meta:{uri:i.url,thumbUri:i.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:a},payload:{sourceSet:[{uri:i.url,width:n,height:a}]}}}async function Tr(e,t,i){let n=t.width,a=t.height,o=await kr(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:n,height:a}}}function Lr(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()}}}var Te=$r;function Xe(e){let t=e.filter(i=>!!i);return i=>async(n,a)=>{let o=[],r=s=>{o.push(s)},l=async(s,u,d)=>{if(s>=t.length)return i(u,d);let p=t[s],m=async(w,h)=>l(s+1,w,h),f={...d,addDisposer:r};return p(u,f,m)},c={...a,addDisposer:r};return{result:await l(0,n,c),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(u){console.error("Error in disposer:",u)}o.length=0}}}}function Nr(){return async(e,t,i)=>{console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(e,null,2));let n,a=Date.now();try{return n=await i(e,t),n}finally{n!=null&&(console.log(`Generation took ${Date.now()-a}ms`),console.log("Generation result:",JSON.stringify(n,null,2))),console.groupEnd()}}}var et=Nr;function Dr(e){return async(t,i)=>(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(t,void 0,2)),await zr(2e3),await Or(t,e,i))}async function Or(e,t,i){switch(t.kind){case"image":return Pr(e,t,i);case"video":return _r(e,t,i);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function Pr(e,t,{engine:i}){let n,a,o=e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"?e.prompt:"AI Generated Image",r=o.match(/(\d+)x(\d+)/);if(r!=null)n=parseInt(r[1],10),a=parseInt(r[2],10);else if(t.blockInputs!=null&&(n=t.blockInputs.image.width,a=t.blockInputs.image.height),t.blockIds!=null&&Array.isArray(t.blockIds)&&t.blockIds.length>0){let[l]=t.blockIds,c=await cr(l,i),s=await ce(c,i);n=s.width,a=s.height}else n=512,a=512;return{kind:"image",url:`https://placehold.co/${n}x${a}/000000/FFF?text=${o.replace(" ","+").replace(`
2
- `,"+")}`}}async function _r(e,t,i){return Promise.resolve({kind:"video",url:"https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"})}async function zr(e){return new Promise(t=>{setTimeout(t,e)})}var tt=Dr;async function Ur(e,t,i,n,a,o,r){let{cesdk:l,createPlaceholderBlock:c,historyAssetSourceId:s}=a,u;try{o.debug&&console.group(`Starting Generation for '${e}'`);let d=t(),p=await i(d.input),m=hr(),f;if(c){if(f=Sr(m,e,p),o.debug&&console.log("Adding as asset to scene:",JSON.stringify(f,void 0,2)),u=await fr(l,f),u!=null&&n.kind==="video"){let k=l.engine.block.getPositionX(u),y=l.engine.block.getPositionY(u),b=l.engine.block.duplicate(u);l.engine.block.setPositionX(b,k),l.engine.block.setPositionY(b,y),l.engine.block.destroy(u),u=b}if(Z(l,r,u))return{status:"aborted"};if(u==null)throw new Error("Could not create placeholder block");l.engine.block.setState(u,{type:"Pending",progress:0})}let w=Xe([...n.output.middleware??[],o.debug?et():void 0,o.dryRun?tt({kind:n.kind,blockInputs:p}):void 0]),{result:h}=await w(n.output.generate)(d.input,{abortSignal:r,engine:a.engine,cesdk:l});if(de(h))throw new Error("Streaming generation is not supported yet from a panel");if(Z(l,r,u))return{status:"aborted"};if(h==null)throw new Error("Generation failed");o.debug&&console.log("Generated output:",JSON.stringify(h,void 0,2));let g;if(u!=null&&l.engine.block.isValid(u)&&(g=await Te(m,e,p,h),o.debug&&console.log("Updating asset in scene:",JSON.stringify(g,void 0,2)),await l.engine.asset.defaultApplyAssetToBlock(g,u)),Z(l,r,u))return{status:"aborted"};if(s!=null){if(g==null&&(g=await Te(m,e,p,h),Z(l,r,u)))return{status:"aborted"};let k={...g,id:`${Date.now()}-${g.id}`,label:g.label!=null?{en:g.label}:{},tags:{}};l.engine.asset.addAssetToSource(s,k)}return u!=null&&l.engine.block.isValid(u)&&l.engine.block.setState(u,{type:"Ready"}),{status:"success",output:h}}catch(d){throw u!=null&&l.engine.block.isValid(u)&&(N(d)?l.engine.block.destroy(u):l.engine.block.setState(u,{type:"Error",error:"Unknown"})),d}finally{o.debug&&console.groupEnd()}}function Z(e,t,i){return t.aborted?(i!=null&&e.engine.block.isValid(i)&&e.engine.block.destroy(i),!0):!1}var qr=Ur;function Br(e,t,i){let{cesdk:n,provider:a,getInput:o}=t;i.onError!=null&&typeof i.onError=="function"?i.onError(e):(console.error("Generation failed:",e),Vr(n,a.output.notification,()=>({input:o?.().input,error:e}))||n.ui.showNotification({type:"error",message:br(e)}))}function Vr(e,t,i){let n=t?.error;if(n==null||!(typeof n.show=="function"?n.show(i()):n.show))return!1;let a=typeof n.message=="function"?n.message(i()):n.message??"common.ai-generation.failed",o=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(i()):n.action.label,onClick:()=>{n?.action?.onClick(i())}}:void 0;return e.ui.showNotification({type:"error",message:a,action:o}),!0}var V=Br;function H(e){return`${e}.generating`}function Fr(e){return`${e}.abort`}function Gr(e,t,i,n,a,o){let{builder:r,experimental:l}=e,{cesdk:c,includeHistoryLibrary:s=!0}=a,{id:u,output:{abortable:d}}=t,p=l.global(Fr(u),()=>{}),m=l.global(H(u),!1),f,w=m.value&&d,h=()=>{w&&(p.value(),m.setValue(!1),p.setValue(()=>{}))},g;if(a.requiredInputs!=null&&a.requiredInputs.length>0){let y=i();g=a.requiredInputs.every(b=>!y.input[b])}let k=l.global(`${u}.confirmationDialogId`,void 0);r.Section(`${u}.generate.section`,{children:()=>{r.Button(`${u}.generate`,{label:["common.ai-generation.generate",`panel.${u}.generate`],isLoading:m.value,color:"accent",isDisabled:g,suffix:w?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${u}.abort`,"common.cancel"],onClick:()=>{let y=c.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:b})=>{c.ui.closeDialog(b),k.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:b})=>{h(),c.ui.closeDialog(b),k.setValue(void 0)}}});k.setValue(y)}}:void 0,onClick:async()=>{f=new AbortController;let y=f.signal,b=async()=>{try{m.setValue(!0),p.setValue(()=>{o.debug&&console.log("Aborting generation"),f?.abort()});let v=await qr(t.kind,i,n,t,a,o,y);if(v.status==="aborted")return;let I=t.output.notification;Qr(c,I,()=>({input:i().input,output:v.output}))}catch(v){if(N(v))return;V(v,{cesdk:c,provider:t,getInput:i},o)}finally{f=void 0,m.setValue(!1),p.setValue(()=>{}),k.value!=null&&(c.ui.closeDialog(k.value),k.setValue(void 0))}};o.middleware!=null?await o.middleware(b,{provider:t,abort:h}):await b()}}),t.output.generationHintText!=null&&r.Text(`${u}.generation-hint`,{align:"center",content:t.output.generationHintText})}}),s&&a.historyAssetLibraryEntryId!=null&&r.Library(`${u}.history.library`,{entries:[a.historyAssetLibraryEntryId]})}function Qr(e,t,i){let n=t?.success;if(n==null||!(typeof n.show=="function"?n.show(i()):n.show))return!1;let a=typeof n.message=="function"?n.message(i()):n.message??"common.ai-generation.success",o=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(i()):n.action.label,onClick:()=>{n?.action?.onClick(i())}}:void 0;return e.ui.showNotification({type:"success",message:a,action:o,duration:n.duration}),!0}var nt=Gr;async function Rr(e,t,i,n){let{cesdk:a}=i,{id:o}=e;n.debug&&console.log(`Registering schema-based panel input for provider ${o}`);let r=ur(t.document),l=Fe(r,t.inputReference);if(!dr(l,n.debug))throw new Error(`Input reference '${t.inputReference}' does not resolve to a valid OpenAPI schema`);let c=l,s=Ge(c,t),u=d=>{let{builder:p}=d,m=[];p.Section(`${o}.schema.section`,{children:()=>{s.forEach(g=>{let k=Ir(d,g,e,t,i,n);k!=null&&(Array.isArray(k)?m.push(...k):m.push(k))})}});let f=m.map(g=>g()),w=g=>g.type==="object"?Object.entries(g.value).reduce((k,[y,b])=>(k[y]=w(b),k),{}):g.value,h=f.reduce((g,k)=>(g[k.id]=w(k),g),{});nt(d,e,()=>({input:h}),()=>t.getBlockInput(h),{...i,requiredInputs:c.required,createPlaceholderBlock:t.userFlow==="placeholder"},n)};return a.ui.registerPanel(Qe(o),u),u}var Yr=Rr;async function Hr(e,t,i,n){let{cesdk:a}=i,{id:o}=e,r=t.render,l=c=>{let{state:s}=c,u=s(H(o),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:d,getBlockInput:p}=r(c,{cesdk:a,isGenerating:u});return nt(c,e,d,p,{...i,includeHistoryLibrary:t.includeHistoryLibrary??!0,createPlaceholderBlock:t.userFlow==="placeholder"},n),d};return a.ui.registerPanel(Qe(o),l),l}var Zr=Hr,ne="@imgly/plugin-ai-generation",Wr=`
1
+ var Gr=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=i=>{t(new Error(`Failed to open IndexedDB: ${i.target.error}`))},r.onupgradeneeded=i=>{let n=i.target.result;n.objectStoreNames.contains(this.assetStoreName)||n.createObjectStore(this.assetStoreName,{keyPath:"id"}),n.objectStoreNames.contains(this.blobStoreName)||n.createObjectStore(this.blobStoreName,{keyPath:"id"})},r.onsuccess=i=>{this.db=i.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,s)=>{let u=e.locale??"en",d="",p=[];s.label!=null&&typeof s.label=="object"&&s.label[u]&&(d=s.label[u]),s.tags!=null&&typeof s.tags=="object"&&s.tags[u]&&(p=s.tags[u]);let g={...s,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:i}=e,n=r*i,o=n+i,a=t.slice(n,o),l=o<t.length?r+1:void 0;return{assets:a,currentPage:r,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 r=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();r.onsuccess=()=>{let i=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(a=>i.add(a))});let n=[...i];e(n)},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),i=new Set;Z(e,o=>{i.add(o)}),setTimeout(()=>{this.storeBlobUrls([...i])});let n={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.put(n),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=()=>{Z(t,i=>{this.removeBlob(i)}),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 i=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();i.onsuccess=()=>{let n=i.result;n.sort((o,a)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),c=a.meta?.insertedAt||a._insertedAt||Date.now();return e==="asc"?l-c:c-l}),t(n)},i.onerror=()=>{r(new Error(`Failed to get assets: ${i.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let i=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);i.onsuccess=()=>{t(i.result)},i.onerror=()=>{r(new Error(`Failed to get blob: ${i.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let i=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);i.onsuccess=()=>{t(i.result)},i.onerror=()=>{r(new Error(`Failed to get blob: ${i.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 i=await(await fetch(r)).blob();t[r]=i})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),i=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([n,o])=>{let a={id:n,blob:o};i.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 Z(e,i=>{r.add(i)}),await Promise.all([...r].map(async i=>{let n=await this.createBlobUrlFromStore(i);t[i]=n})),Z(e,i=>t[i]??i)}filterAsset(e,t){let{query:r,tags:i,groups:n,excludeGroups:o}=t;if(r&&r.trim()!==""){let a=r.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",c=e.tags?.map(s=>s.toLowerCase())??[];if(!a.every(s=>l.includes(s)||c.some(u=>u.includes(s))))return!1}if(i){let a=Array.isArray(i)?i:[i];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:r,sortKey:i,sortActiveFirst:n}=t,o=[...e];return!r||r==="None"||(i?o.sort((a,l)=>{let c,s;return i==="id"?(c=a.id,s=l.id):(c=a.meta?.[i]??null,s=l.meta?.[i]??null),c==null?r==="Ascending"?-1:1:s==null?r==="Ascending"?1:-1:typeof c=="string"&&typeof s=="string"?r==="Ascending"?c.localeCompare(s):s.localeCompare(c):r==="Ascending"?c<s?-1:c>s?1:0:c>s?-1:c<s?1:0}):r==="Descending"&&o.reverse(),n&&o.sort((a,l)=>a.active&&!l.active?-1:!a.active&&l.active?1:0)),o}};function Z(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let i=0;i<e.length;i++){let n=r?`${r}[${i}]`:`[${i}]`;if(typeof e[i]=="string"&&e[i].startsWith("blob:")){let o=t(e[i],n);typeof o=="string"&&(e[i]=o)}else e[i]=Z(e[i],t,n)}return e}for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let n=e[i],o=r?`${r}.${i}`:i;if(typeof n=="string"&&n.startsWith("blob:")){let a=t(n,o);typeof a=="string"&&(e[i]=a)}else e[i]=Z(n,t,o)}return e}var qr=class{constructor(e,t,r){this.id=e,this.cesdk=t,this.assetSourceIds=r}async findAssets(e){try{let t=this.assetSourceIds.map(u=>this.cesdk.engine.asset.findAssets(u,{...e,perPage:9999,page:0})),r=await Promise.all(t),i=[];r.forEach(u=>{u?.assets&&(i=i.concat(u.assets))}),i.sort((u,d)=>{let p=u.meta?.insertedAt||0;return(d.meta?.insertedAt||0)-p});let{page:n,perPage:o}=e,a=n*o,l=a+o,c=i.slice(a,l),s=l<i.length?n+1:void 0;return{assets:c,currentPage:n,nextPage:s,total:i.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){let e=this.assetSourceIds.map(i=>this.cesdk.engine.asset.getGroups(i)),t=await Promise.all(e),r=new Set;return t.forEach(i=>{i.forEach(n=>r.add(n))}),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")}},Hr=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)}},xt=Hr,Qr=typeof global=="object"&&global&&global.Object===Object&&global,Et=Qr,Zr=typeof self=="object"&&self&&self.Object===Object&&self,Yr=Et||Zr||Function("return this")(),T=Yr,Wr=T.Symbol,Y=Wr,Mt=Object.prototype,Kr=Mt.hasOwnProperty,Xr=Mt.toString,le=Y?Y.toStringTag:void 0;function Jr(e){var t=Kr.call(e,le),r=e[le];try{e[le]=void 0;var i=!0}catch{}var n=Xr.call(e);return i&&(t?e[le]=r:delete e[le]),n}var ei=Jr,ti=Object.prototype,ri=ti.toString;function ii(e){return ri.call(e)}var ni=ii,oi="[object Null]",ai="[object Undefined]",ct=Y?Y.toStringTag:void 0;function li(e){return e==null?e===void 0?ai:oi:ct&&ct in Object(e)?ei(e):ni(e)}var ge=li;function si(e){return e!=null&&typeof e=="object"}var He=si,Gu=Array.isArray;function ci(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var $t=ci,ui="[object AsyncFunction]",di="[object Function]",pi="[object GeneratorFunction]",gi="[object Proxy]";function mi(e){if(!$t(e))return!1;var t=ge(e);return t==di||t==pi||t==ui||t==gi}var fi=mi,hi=T["__core-js_shared__"],Ne=hi,ut=function(){var e=/[^.]+$/.exec(Ne&&Ne.keys&&Ne.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function bi(e){return!!ut&&ut in e}var yi=bi,vi=Function.prototype,ki=vi.toString;function wi(e){if(e!=null){try{return ki.call(e)}catch{}try{return e+""}catch{}}return""}var G=wi,Ii=/[\\^$.*+?()[\]{}|]/g,Ai=/^\[object .+?Constructor\]$/,Ci=Function.prototype,Si=Object.prototype,xi=Ci.toString,Ei=Si.hasOwnProperty,Mi=RegExp("^"+xi.call(Ei).replace(Ii,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $i(e){if(!$t(e)||yi(e))return!1;var t=fi(e)?Mi:Ai;return t.test(G(e))}var ji=$i;function Pi(e,t){return e?.[t]}var Ti=Pi;function _i(e,t){var r=Ti(e,t);return ji(r)?r:void 0}var W=_i,Di=W(T,"WeakMap"),ze=Di;function Ni(e,t){return e===t||e!==e&&t!==t}var Li=Ni,Oi=9007199254740991;function Ri(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Oi}var Fi=Ri,qu=Object.prototype,zi="[object Arguments]";function Bi(e){return He(e)&&ge(e)==zi}var dt=Bi,jt=Object.prototype,Ui=jt.hasOwnProperty,Vi=jt.propertyIsEnumerable,Hu=dt(function(){return arguments}())?dt:function(e){return He(e)&&Ui.call(e,"callee")&&!Vi.call(e,"callee")},Pt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,pt=Pt&&typeof module=="object"&&module&&!module.nodeType&&module,Gi=pt&&pt.exports===Pt,gt=Gi?T.Buffer:void 0,Qu=gt?gt.isBuffer:void 0,qi="[object Arguments]",Hi="[object Array]",Qi="[object Boolean]",Zi="[object Date]",Yi="[object Error]",Wi="[object Function]",Ki="[object Map]",Xi="[object Number]",Ji="[object Object]",en="[object RegExp]",tn="[object Set]",rn="[object String]",nn="[object WeakMap]",on="[object ArrayBuffer]",an="[object DataView]",ln="[object Float32Array]",sn="[object Float64Array]",cn="[object Int8Array]",un="[object Int16Array]",dn="[object Int32Array]",pn="[object Uint8Array]",gn="[object Uint8ClampedArray]",mn="[object Uint16Array]",fn="[object Uint32Array]",A={};A[ln]=A[sn]=A[cn]=A[un]=A[dn]=A[pn]=A[gn]=A[mn]=A[fn]=!0;A[qi]=A[Hi]=A[on]=A[Qi]=A[an]=A[Zi]=A[Yi]=A[Wi]=A[Ki]=A[Xi]=A[Ji]=A[en]=A[tn]=A[rn]=A[nn]=!1;function hn(e){return He(e)&&Fi(e.length)&&!!A[ge(e)]}var bn=hn;function yn(e){return function(t){return e(t)}}var vn=yn,Tt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ue=Tt&&typeof module=="object"&&module&&!module.nodeType&&module,kn=ue&&ue.exports===Tt,Le=kn&&Et.process,wn=function(){try{var e=ue&&ue.require&&ue.require("util").types;return e||Le&&Le.binding&&Le.binding("util")}catch{}}(),mt=wn,ft=mt&&mt.isTypedArray,Zu=ft?vn(ft):bn,In=Object.prototype,Yu=In.hasOwnProperty;function An(e,t){return function(r){return e(t(r))}}var Cn=An,Wu=Cn(Object.keys,Object),Sn=Object.prototype,Ku=Sn.hasOwnProperty,xn=W(Object,"create"),de=xn;function En(){this.__data__=de?de(null):{},this.size=0}var Mn=En;function $n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var jn=$n,Pn="__lodash_hash_undefined__",Tn=Object.prototype,_n=Tn.hasOwnProperty;function Dn(e){var t=this.__data__;if(de){var r=t[e];return r===Pn?void 0:r}return _n.call(t,e)?t[e]:void 0}var Nn=Dn,Ln=Object.prototype,On=Ln.hasOwnProperty;function Rn(e){var t=this.__data__;return de?t[e]!==void 0:On.call(t,e)}var Fn=Rn,zn="__lodash_hash_undefined__";function Bn(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=de&&t===void 0?zn:t,this}var Un=Bn;function K(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}K.prototype.clear=Mn;K.prototype.delete=jn;K.prototype.get=Nn;K.prototype.has=Fn;K.prototype.set=Un;var ht=K;function Vn(){this.__data__=[],this.size=0}var Gn=Vn;function qn(e,t){for(var r=e.length;r--;)if(Li(e[r][0],t))return r;return-1}var xe=qn,Hn=Array.prototype,Qn=Hn.splice;function Zn(e){var t=this.__data__,r=xe(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():Qn.call(t,r,1),--this.size,!0}var Yn=Zn;function Wn(e){var t=this.__data__,r=xe(t,e);return r<0?void 0:t[r][1]}var Kn=Wn;function Xn(e){return xe(this.__data__,e)>-1}var Jn=Xn;function eo(e,t){var r=this.__data__,i=xe(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}var to=eo;function X(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}X.prototype.clear=Gn;X.prototype.delete=Yn;X.prototype.get=Kn;X.prototype.has=Jn;X.prototype.set=to;var Ee=X,ro=W(T,"Map"),pe=ro;function io(){this.size=0,this.__data__={hash:new ht,map:new(pe||Ee),string:new ht}}var no=io;function oo(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var ao=oo;function lo(e,t){var r=e.__data__;return ao(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Me=lo;function so(e){var t=Me(this,e).delete(e);return this.size-=t?1:0,t}var co=so;function uo(e){return Me(this,e).get(e)}var po=uo;function go(e){return Me(this,e).has(e)}var mo=go;function fo(e,t){var r=Me(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}var ho=fo;function J(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}J.prototype.clear=no;J.prototype.delete=co;J.prototype.get=po;J.prototype.has=mo;J.prototype.set=ho;var _t=J;function bo(){this.__data__=new Ee,this.size=0}var yo=bo;function vo(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var ko=vo;function wo(e){return this.__data__.get(e)}var Io=wo;function Ao(e){return this.__data__.has(e)}var Co=Ao,So=200;function xo(e,t){var r=this.__data__;if(r instanceof Ee){var i=r.__data__;if(!pe||i.length<So-1)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new _t(i)}return r.set(e,t),this.size=r.size,this}var Eo=xo;function me(e){var t=this.__data__=new Ee(e);this.size=t.size}me.prototype.clear=yo;me.prototype.delete=ko;me.prototype.get=Io;me.prototype.has=Co;me.prototype.set=Eo;var Mo=Object.prototype,Xu=Mo.propertyIsEnumerable,$o=W(T,"DataView"),Be=$o,jo=W(T,"Promise"),Ue=jo,Po=W(T,"Set"),Ve=Po,bt="[object Map]",To="[object Object]",yt="[object Promise]",vt="[object Set]",kt="[object WeakMap]",wt="[object DataView]",_o=G(Be),Do=G(pe),No=G(Ue),Lo=G(Ve),Oo=G(ze),Q=ge;(Be&&Q(new Be(new ArrayBuffer(1)))!=wt||pe&&Q(new pe)!=bt||Ue&&Q(Ue.resolve())!=yt||Ve&&Q(new Ve)!=vt||ze&&Q(new ze)!=kt)&&(Q=function(e){var t=ge(e),r=t==To?e.constructor:void 0,i=r?G(r):"";if(i)switch(i){case _o:return wt;case Do:return bt;case No:return yt;case Lo:return vt;case Oo:return kt}return t});var Ju=T.Uint8Array,Ro="__lodash_hash_undefined__";function Fo(e){return this.__data__.set(e,Ro),this}var zo=Fo;function Bo(e){return this.__data__.has(e)}var Uo=Bo;function Ge(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new _t;++t<r;)this.add(e[t])}Ge.prototype.add=Ge.prototype.push=zo;Ge.prototype.has=Uo;var It=Y?Y.prototype:void 0,ed=It?It.valueOf:void 0,Vo=Object.prototype,td=Vo.hasOwnProperty,Go=Object.prototype,rd=Go.hasOwnProperty,id=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),nd=new RegExp(/[A-Fa-f0-9]{1}/,"g"),od=new RegExp(/[A-Fa-f0-9]{2}/,"g");function qo(e){return{"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg"}[e]??"png"}async function Dt(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),i=t.editor.getBufferLength(e),n=t.editor.getBufferData(e,0,i),o=new Blob([n],{type:r});return URL.createObjectURL(o)}else return e}async function qe(e,t){let r=await Dt(e,t);return new Promise((i,n)=>{let o=new Image;o.onload=()=>{i({width:o.width,height:o.height})},o.onerror=n,o.src=r})}async function Ho(e,t,r){let i,n=t.block.getFill(e),o=t.block.getSourceSet(n,"fill/image/sourceSet"),[a]=o;if(a==null){if(i=t.block.getString(n,"fill/image/imageFileURI"),i==null)throw new Error("No image source/uri found")}else i=a.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(i)==="image/svg+xml")throw new Error("SVG images are not supported");return Dt(i,t)}function Qo(e){return e!==void 0}var $e=Qo;var Qe=class Nt{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 Nt),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(r=>this.matchesFilters(r,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((i,n)=>{if(i===null){n(t,r);return}this.matchesFilters(t,i)&&n(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))}},Lt=class Ot{constructor(){this.providers=new Map}static get(){let t="__imgly_provider_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new Ot),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 Zo(e){let t=e.filter(r=>!!r);return r=>async(i,n)=>{let o=[],a=s=>{o.push(s)},l=async(s,u,d)=>{if(s>=t.length)return r(u,d);let p=t[s],g=async(h,v)=>l(s+1,h,v),m={...d,addDisposer:a};return p(u,m,g)},c={...n,addDisposer:a};return{result:await l(0,i,c),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(u){console.error("Error in disposer:",u)}o.length=0}}}}function Yo({enable:e=!0}){return async(t,r,i)=>{if(!e)return i(t,r);console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(t,null,2));let n,o=Date.now();try{return n=await i(t,r),n}finally{n!=null&&(console.log(`Generation took ${Date.now()-o}ms`),console.log("Generation result:",JSON.stringify(n,null,2))),console.groupEnd()}}}var Wo=Yo;var Oe="ly.img.ai.temp";async function Ko(e,t){return e.engine.asset.findAllSources().includes(Oe)||e.engine.asset.addLocalSource(Oe),e.engine.asset.apply(Oe,t)}function Xo(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 Rt(){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 Jo(e,t=0,r="image/jpeg",i=.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 c=l.getContext("2d");if(!c){document.body.removeChild(a),o(new Error("Failed to create canvas context"));return}c.drawImage(a,0,0,l.width,l.height);try{let s=l.toDataURL(r,i);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 Ft(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 ea(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 Ze(e){return e instanceof Error&&e.name==="AbortError"}function ta(e,t,r){let i=`${t}.iconSetAdded`;e.ui.experimental.hasGlobalStateValue(i)||(e.ui.addIconSet(t,r),e.ui.experimental.setGlobalStateValue(i,!0))}function zt(e,t,r){let i="ai-plugin-version",n="ai-plugin-version-warning-shown";try{let o=e.ui.experimental.getGlobalStateValue(i);o?o!==r&&(e.ui.experimental.getGlobalStateValue(n,!1)||(console.warn(`[IMG.LY AI Plugins] Version mismatch detected!
2
+ Plugin "${t}" is using version ${r}, but other AI plugins are using version ${o}.
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(n,!0))):e.ui.experimental.setGlobalStateValue(i,r)}catch(o){console.debug("[IMG.LY AI Plugins] Could not check plugin version consistency:",o)}}function ra(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 i=`${r}.dock`;t.ui.registerComponent(i,({builder:n})=>{let o=t.ui.isPanelOpen(r);n.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 Bt=ra;function ia(){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 i=e.block.getFill(r);return e.block.getType(i)==="//ly.img.ubq/fill/image"}}var P=ia;function na(e,t){let{cesdk:r,provider:i,getInput:n}=t;console.error("Generation failed:",e),oa(r,i.output.notification,()=>({input:n?.().input,error:e}))||r.ui.showNotification({type:"error",message:Xo(e)})}function oa(e,t,r){let i=t?.error;if(i==null||!(typeof i.show=="function"?i.show(r()):i.show))return!1;let n=typeof i.message=="function"?i.message(r()):i.message??"common.ai-generation.failed",o=i.action!=null?{label:typeof i.action.label=="function"?i.action.label(r()):i.action.label,onClick:()=>{i?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"error",message:n,action:o}),!0}var At=na,aa="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",Ye=aa;function la(e,t,r){switch(t){case"image":return sa(e,r[t]);case"video":return ca(e,r[t]);case"sticker":return ua(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function sa(e,t){let r=t.width,i=t.height;return{id:e,meta:{previewUri:Ye,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:i}}}function ca(e,t){let r=t.width,i=t.height;return{id:e,label:t.label,meta:{previewUri:Ye,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:i}}}function ua(e,t){let r=t.width,i=t.height;return{id:e,meta:{previewUri:Ye,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:r,height:i}}}var da=la;async function pa(e,t,r,i){switch(t){case"image":{if(i.kind!=="image")throw new Error(`Output kind does not match the expected type: ${i.kind} (expected: image)`);return ga(e,r[t],i)}case"video":{if(i.kind!=="video")throw new Error(`Output kind does not match the expected type: ${i.kind} (expected: video)`);return ma(e,r[t],i)}case"audio":{if(i.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${i.kind} (expected: audio)`);return fa(e,r[t],i)}case"sticker":{if(i.kind!=="sticker")throw new Error(`Output kind does not match the expected type: ${i.kind} (expected: sticker)`);return ha(e,r[t],i)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function ga(e,t,r){let i=t.width,n=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:i,height:n},payload:{sourceSet:[{uri:r.url,width:i,height:n}]}}}async function ma(e,t,r){let i=t.width,n=t.height,o=await Jo(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:i,height:n}}}function fa(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 ha(e,t,r){let i=t.width,n=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"sticker",width:i,height:n},payload:{sourceSet:[{uri:r.url,width:i,height:n}]}}}var Ut=pa;function ba(e){switch(e.userFlow){case"placeholder":return va(e);case"generation-only":return ya(e);default:throw new Error(`Unknown user flow: ${e.userFlow}. Expected 'placeholder' or 'generation-only'.`)}}function ya(e){let{cesdk:t,abortSignal:r}=e;return async i=>{try{let n=e.kind,o=await e.getBlockInput(i);if(L(t,r))return{status:"aborted"};let a=await e.generate(i,{middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:r});if(L(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(L(t,r))return{status:"aborted"};if(e.historyAssetSourceId!=null){let l=Rt(),c=await Ut(l,n,o,a.output),s={...c,id:`${Date.now()}-${c.id}`,label:c.label!=null?{en:c.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 va(e){let{cesdk:t,abortSignal:r}=e,i;return async n=>{try{let o=e.kind,a=await e.getBlockInput(n);if(L(t,r))return{status:"aborted"};let l=Rt(),c=da(l,o,a);if(i=await Ko(t,c),L(t,r,i))return{status:"aborted"};if(i!=null&&e.kind==="video"){let d=t.engine.block.getPositionX(i),p=t.engine.block.getPositionY(i),g=t.engine.block.duplicate(i);t.engine.block.setPositionX(g,d),t.engine.block.setPositionY(g,p),t.engine.block.destroy(i),i=g}if(i==null)throw new Error("Could not create placeholder block");t.engine.block.setState(i,{type:"Pending",progress:0});let s=await e.generate(n,{middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:r});if(L(t,r,i))return{status:"aborted"};if(s.status!=="success")return s;if(s.type==="async")throw new Error("Async generation is not supported in this context yet.");if(!t.engine.block.isValid(i))return{status:"aborted",message:"Placeholder block was destroyed before generation completed."};let u=await Ut(l,o,a,s.output);if(L(t,r,i))return{status:"aborted"};if(e.debug&&console.log("Updating placeholder in scene:",JSON.stringify(u,void 0,2)),await t.engine.asset.defaultApplyAssetToBlock(u,i),L(t,r,i))return{status:"aborted"};if(e.historyAssetSourceId!=null){let d={...u,id:`${Date.now()}-${u.id}`,label:u.label!=null?{en:u.label}:{},tags:{}};t.engine.asset.addAssetToSource(e.historyAssetSourceId,d)}return t.engine.block.isValid(i)&&t.engine.block.setState(i,{type:"Ready"}),s}catch(o){return i!=null&&t.engine.block.isValid(i)&&(Ze(o)?t.engine.block.destroy(i):t.engine.block.setState(i,{type:"Error",error:"Unknown"})),{status:"error",message:o instanceof Error?o.message:String(o)}}}}function L(e,t,r){return t.aborted?(r!=null&&e.engine.block.isValid(r)&&e.engine.block.destroy(r),!0):!1}var ka=ba;function We(e){return`${e}.generating`}function wa(e){return`${e}.abort`}function Ia(e,t,r,i,n,o,a){let{builder:l,experimental:c}=e,{cesdk:s,includeHistoryLibrary:u=!0}=o,{id:d,output:{abortable:p}}=t,g=c.global(wa(d),()=>{}),m=c.global(We(d),!1),h,v=m.value&&p,y=()=>{v&&(g.value(),m.setValue(!1),g.setValue(()=>{}))},S;if(o.requiredInputs!=null&&o.requiredInputs.length>0){let b=i();S=o.requiredInputs.every(f=>!b.input[f])}let k=c.global(`${d}.confirmationDialogId`,void 0);l.Section(`${d}.generate.section`,{children:()=>{l.Button(`${d}.generate`,{label:["common.generate",`panel.${d}.generate`],isLoading:m.value,color:"accent",isDisabled:S,suffix:v?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${d}.abort`,"common.cancel"],onClick:()=>{let b=s.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:f})=>{s.ui.closeDialog(f),k.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:f})=>{y(),s.ui.closeDialog(f),k.setValue(void 0)}}});k.setValue(b)}}:void 0,onClick:async()=>{h=new AbortController;let b=h.signal;await(async()=>{try{m.setValue(!0),g.setValue(()=>{a.debug&&console.log("Aborting generation"),h?.abort()});let f=await ka({kind:t.kind,generate:r,historyAssetSourceId:o.historyAssetSourceId,userFlow:o.createPlaceholderBlock?"placeholder":"generation-only",getBlockInput:n,abortSignal:b,cesdk:s,debug:a.debug,dryRun:a.dryRun})(i().input);if(f.status==="aborted")return;if(f.status==="error"){At(f.message,{cesdk:s,provider:t,getInput:i});return}if(f.status==="success"&&f.type==="sync"){let w=t.output.notification;Aa(s,w,()=>({input:i().input,output:f.output}))}}catch(f){if(Ze(f))return;At(f,{cesdk:s,provider:t,getInput:i})}finally{h=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})}}),u&&o.historyAssetLibraryEntryId!=null&&l.Library(`${d}.history.library`,{entries:[o.historyAssetLibraryEntryId]})}function Aa(e,t,r){let i=t?.success;if(i==null||!(typeof i.show=="function"?i.show(r()):i.show))return!1;let n=typeof i.message=="function"?i.message(r()):i.message??"common.ai-generation.success",o=i.action!=null?{label:typeof i.action.label=="function"?i.action.label(r()):i.action.label,onClick:()=>{i?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"success",message:n,action:o,duration:i.duration}),!0}var Vt=Ia;async function Ca({options:e,provider:t,panelInput:r,config:i},n){if(r==null)return;let{cesdk:o}=e,{id:a}=t,l=r.render;return c=>{let{state:s}=c,u=s(We(a),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:d,getBlockInput:p}=l(c,{cesdk:o,isGenerating:u});return Vt(c,t,n,d,p,{...e,includeHistoryLibrary:r.includeHistoryLibrary??!0,createPlaceholderBlock:r.userFlow==="placeholder"},i),d}}var Sa=Ca;function Gt(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),i=e;for(let n of r){if(i==null)throw new Error(`Invalid reference path: ${t}`);i=i[n]}if(i===void 0)throw new Error(`Reference not found: ${t}`);return i}function ce(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let i=Gt(e,t.$ref),n={...ce(e,i,r)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(n[o]=ce(e,t[o],r));return n}if(Array.isArray(t))return t.map(i=>ce(e,i,r));if(typeof t=="object"){let i={};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n]=ce(e,t[n],r));return i}return t}function xa(e){return ce(e,{...e})}function Ea(e,t=!1){let r=a=>(t&&console.log(`OpenAPI Schema validation failed: ${a}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let i=e;if(!(typeof i.type=="string"||Array.isArray(i.enum)||typeof i.properties=="object"||typeof i.items=="object"||typeof i.allOf=="object"||typeof i.anyOf=="object"||typeof i.oneOf=="object"||typeof i.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(i.type!==void 0){let a=["string","number","integer","boolean","array","object","null"];if(typeof i.type=="string"){if(!a.includes(i.type))return r(`Invalid type: ${i.type}. Must be one of ${a.join(", ")}`)}else if(Array.isArray(i.type)){for(let l of i.type)if(typeof l!="string"||!a.includes(l))return r(`Array of types contains invalid value: ${l}. Must be one of ${a.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof i.type}`)}if(i.items!==void 0&&(typeof i.items!="object"||i.items===null))return r(`Items must be an object, got ${i.items===null?"null":typeof i.items}`);if(i.properties!==void 0&&(typeof i.properties!="object"||i.properties===null))return r(`Properties must be an object, got ${i.properties===null?"null":typeof i.properties}`);let n=["allOf","anyOf","oneOf"];for(let a of n)if(i[a]!==void 0){if(!Array.isArray(i[a]))return r(`${a} must be an array, got ${typeof i[a]}`);for(let l=0;l<i[a].length;l++){let c=i[a][l];if(typeof c!="object"||c===null)return r(`Item ${l} in ${a} must be an object, got ${c===null?"null":typeof c}`)}}if(i.not!==void 0&&(typeof i.not!="object"||i.not===null))return r(`'not' must be an object, got ${i.not===null?"null":typeof i.not}`);if(i.additionalProperties!==void 0&&typeof i.additionalProperties!="boolean"&&(typeof i.additionalProperties!="object"||i.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${i.additionalProperties===null?"null":typeof i.additionalProperties}`);if(i.format!==void 0&&typeof i.format!="string")return r(`format must be a string, got ${typeof i.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let a of o)if(i[a]!==void 0&&typeof i[a]!="number")return r(`${a} must be a number, got ${typeof i[a]}`);if(i.minLength!==void 0&&(typeof i.minLength!="number"||i.minLength<0))return r(`minLength must be a non-negative number, got ${typeof i.minLength=="number"?i.minLength:typeof i.minLength}`);if(i.maxLength!==void 0&&(typeof i.maxLength!="number"||i.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof i.maxLength=="number"?i.maxLength:typeof i.maxLength}`);if(i.pattern!==void 0&&typeof i.pattern!="string")return r(`pattern must be a string, got ${typeof i.pattern}`);if(i.minItems!==void 0&&(typeof i.minItems!="number"||i.minItems<0))return r(`minItems must be a non-negative number, got ${typeof i.minItems=="number"?i.minItems:typeof i.minItems}`);if(i.maxItems!==void 0&&(typeof i.maxItems!="number"||i.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof i.maxItems=="number"?i.maxItems:typeof i.maxItems}`);if(i.uniqueItems!==void 0&&typeof i.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof i.uniqueItems}`);if(i.minProperties!==void 0&&(typeof i.minProperties!="number"||i.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof i.minProperties=="number"?i.minProperties:typeof i.minProperties}`);if(i.maxProperties!==void 0&&(typeof i.maxProperties!="number"||i.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof i.maxProperties=="number"?i.maxProperties:typeof i.maxProperties}`);if(i.required!==void 0){if(!Array.isArray(i.required))return r(`required must be an array, got ${typeof i.required}`);for(let a=0;a<i.required.length;a++){let l=i.required[a];if(typeof l!="string")return r(`Item ${a} in required array must be a string, got ${typeof l}`)}}return!0}function Ma(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=e.properties,i=[];return $a(e,t).forEach(n=>{let o=n,a=r[n]??void 0;i.push({id:o,schema:a})}),i}function $a(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 i=e.properties,n=Object.keys(i),o=ja(e,t)??n;return r!=null&&typeof r=="function"&&(o=r(o)),[...new Set(o)]}function ja(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 r=(typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword).find(i=>i in e);return r==null?void 0:e[r]}var qt=Ma;function Ht(e,t,r,i,n,o){if(t.schema==null)return i.renderCustomProperty!=null&&i.renderCustomProperty[t.id]!=null?i.renderCustomProperty[t.id](e,t):void 0;let a=t,l=t.schema.type;if(i.renderCustomProperty!=null&&i.renderCustomProperty[t.id]!=null)return i.renderCustomProperty[t.id](e,t);switch(l){case"string":return t.schema.enum!=null?Pa(e,a,r,i,n,o):Zt(e,a,r,i,n,o);case"boolean":return Yt(e,a,r,i,n,o);case"number":case"integer":return Wt(e,a,r,i,n,o);case"object":return Qt(e,a,r,i,n,o);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return Ta(e,a,r,i,n,o);break}default:console.error(`Unsupported property type: ${l}`)}}function Qt(e,t,r,i,n,o){let a=qt(t.schema??{},i).reduce((l,c)=>{let s=Ht(e,c,r,i,n,o);return s!=null&&(l[c.id]=s()),l},{});return()=>({id:t.id,type:"object",value:a})}function Zt(e,t,r,i,n,o){let{builder:a,experimental:{global:l}}=e,{id:c}=t,s=`${r.id}.${c}`,u=t.schema.title??s,d=l(s,t.schema.default??""),p=_a(t.schema),g=p?.component!=null&&p?.component==="TextArea"?"TextArea":"TextInput";return a[g](s,{inputLabel:u,placeholder:n.i18n?.prompt,...d}),()=>({id:t.id,type:"string",value:d.value})}function Pa(e,t,r,i,n,o){let{builder:a,experimental:{global:l}}=e,{id:c}=t,s=`${r.id}.${c}`,u=t.schema.title??s,d=t.schema.enum!=null&&"x-imgly-enum-labels"in t.schema.enum&&typeof t.schema.enum["x-imgly-enum-labels"]=="object"?t.schema.enum["x-imgly-enum-labels"]:"x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},p="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{},g=(t.schema.enum??[]).map(v=>({id:v,label:d[v]??Ft(v),icon:p[v]})),m=t.schema.default!=null?g.find(v=>v.id===t.schema.default)??g[0]:g[0],h=l(s,m);return a.Select(s,{inputLabel:u,values:g,...h}),()=>({id:t.id,type:"string",value:h.value.id})}function Yt(e,t,r,i,n,o){let{builder:a,experimental:{global:l}}=e,{id:c}=t,s=`${r.id}.${c}`,u=t.schema.title??s,d=!!t.schema.default,p=l(s,d);return a.Checkbox(s,{inputLabel:u,...p}),()=>({id:t.id,type:"boolean",value:p.value})}function Wt(e,t,r,i,n,o){let{builder:a,experimental:{global:l}}=e,{id:c}=t,s=`${r.id}.${c}`,u=t.schema.title??s,d=t.schema.minimum,p=t.schema.maximum,g=t.schema.default;g==null&&(d!=null?g=d:p!=null?g=p:g=0);let m=l(s,g);if(d!=null&&p!=null){let h=t.schema.type==="number"?.1:1;"x-imgly-step"in t.schema&&typeof t.schema["x-imgly-step"]=="number"&&(h=t.schema["x-imgly-step"]),a.Slider(s,{inputLabel:u,min:d,max:p,step:h,...m})}else a.NumberInput(s,{inputLabel:u,min:d,max:p,...m});return()=>({id:t.id,type:"integer",value:m.value})}function Ta(e,t,r,i,n,o){let{builder:a,experimental:{global:l}}=e,{id:c}=t,s=`${r.id}.${c}`,u=t.schema.title??s,d=t.schema.anyOf??[],p=[],g={},m={};d.forEach((y,S)=>{let k=y.title??"common.custom",b=`${r.id}.${c}.anyOf[${S}]`,f="x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},w="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{};y.type==="string"?y.enum!=null?y.enum.forEach(I=>{p.push({id:I,label:f[I]??Ft(I),icon:w[I]})}):(g[b]=()=>Zt(e,{id:b,schema:{...y,title:k}},r,i,n,o),p.push({id:b,label:f[k]??k,icon:w[k]})):y.type==="boolean"?(g[b]=()=>Yt(e,{id:b,schema:{...y,title:k}},r,i,n,o),p.push({id:b,label:f[k]??k,icon:w[k]})):y.type==="integer"?(g[b]=()=>Wt(e,{id:b,schema:{...y,title:k}},r,i,n,o),p.push({id:b,label:f[k]??k,icon:w[k]})):y.type==="array"||y.type==="object"&&(g[b]=()=>Qt(e,{id:b,schema:{...y,title:k}},r,i,n,o),p.push({id:b,label:f[k]??k,icon:w[k]}))});let h=t.schema.default!=null?p.find(y=>y.id===t.schema.default)??p[0]:p[0],v=l(s,h);if(a.Select(s,{inputLabel:u,values:p,...v}),v.value.id in g){let y=g[v.value.id]();m[v.value.id]=y}return()=>{let y=m[v.value.id];return y!=null?{...y(),id:t.id}:{id:t.id,type:"string",value:v.value.id}}}function _a(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var Da=Ht;async function Na({options:e,provider:t,panelInput:r,config:i},n){let{id:o}=t;if(r==null)return;i.debug&&console.log(`Registering schema-based panel input for provider ${o}`);let a=xa(r.document),l=Gt(a,r.inputReference);if(!Ea(l,i.debug))throw new Error(`Input reference '${r.inputReference}' does not resolve to a valid OpenAPI schema`);let c=l,s=qt(c,r);return u=>{let{builder:d}=u,p=[];d.Section(`${o}.schema.section`,{children:()=>{s.forEach(v=>{let y=Da(u,v,t,r,e,i);y!=null&&(Array.isArray(y)?p.push(...y):p.push(y))})}});let g=p.map(v=>v()),m=v=>v.type==="object"?Object.entries(v.value).reduce((y,[S,k])=>(y[S]=m(k),y),{}):v.value,h=g.reduce((v,y)=>(v[y.id]=m(y),v),{});Vt(u,t,n,()=>({input:h}),()=>r.getBlockInput(h),{...e,requiredInputs:c.required,createPlaceholderBlock:r.userFlow==="placeholder"},i)}}var La=Na;async function Oa(e,t){if(e.panelInput!=null)switch(e.panelInput.type){case"custom":return Sa(e,t);case"schema":return La(e,t);default:e.config.debug&&console.warn(`Invalid panel input type '${panelInput.type}' - skipping`)}}var Ra=Oa;function Fa(e){let{provider:t,options:{engine:r}}=e,i=t.output.history??"@imgly/local";if(i==null||i===!1)return;let n=r.asset.findAllSources();function o(){let a=`${t.id}.history`;for(;n.includes(a);)a+=`-${Math.random().toString(36).substring(2,6)}`;return a}if(i==="@imgly/local"){let a=o();return r.asset.addLocalSource(a),a}if(i==="@imgly/indexedDB"){let a=o();return r.asset.addSource(new Gr(a,r)),a}return i}var za=Fa;function Ba(e,t){if(t==null||!t)return;let r=`${e.provider.id}.history.entry`;return e.options.cesdk.ui.addAssetLibraryEntry({id:r,sourceIds:[t],sortBy:{sortKey:"insertedAt",sortingOrder:"Descending"},canRemove:!0,gridItemHeight:"square",gridBackgroundType:"cover"}),r}var Ua=Ba,Re="@imgly/plugin-ai-generation",Va=`
3
5
  <svg>
4
6
  <symbol
5
7
  fill="none"
@@ -17,7 +19,7 @@ var ct=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName=
17
19
  fill="none"
18
20
  xmlns="http://www.w3.org/2000/svg"
19
21
  viewBox="0 0 24 24"
20
- id="${ne}/image"
22
+ id="${Re}/image"
21
23
  >
22
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"/>
23
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"/>
@@ -29,7 +31,7 @@ var ct=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName=
29
31
  fill="none"
30
32
  xmlns="http://www.w3.org/2000/svg"
31
33
  viewBox="0 0 24 24"
32
- id="${ne}/video"
34
+ id="${Re}/video"
33
35
  >
34
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"/>
35
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"/>
@@ -40,7 +42,7 @@ var ct=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName=
40
42
  fill="none"
41
43
  xmlns="http://www.w3.org/2000/svg"
42
44
  viewBox="0 0 24 24"
43
- id="${ne}/audio"
45
+ id="${Re}/audio"
44
46
  >
45
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"/>
46
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"/>
@@ -60,7 +62,8 @@ var ct=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName=
60
62
 
61
63
  </symbol>
62
64
  </svg>
63
- `,Kr=Wr,Le="ly.img.ai.quickAction.order",q="ly.img.ai.quickAction.actions";function Jr(e,t){return{id:t,setQuickActionMenuOrder:i=>{e.ui.experimental.setGlobalStateValue(`${Le}.${t}`,i)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${Le}.${t}`,[]),registerQuickAction:i=>{if(!e.ui.experimental.hasGlobalStateValue(`${q}.${t}`))e.ui.experimental.setGlobalStateValue(`${q}.${t}`,{[i.id]:i});else{let n=e.ui.experimental.getGlobalStateValue(`${q}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${q}.${t}`,{...n,[i.id]:i})}},getQuickAction:i=>e.ui.experimental.getGlobalStateValue(`${q}.${t}`,{})[i]}}var Xr=Jr,ie="ly.img.ai.inference.editMode",it="ly.img.ai.inference.metadata";function rt(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function eo(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((i,n)=>(n==="ly.img.separator"&&i.length>0&&i[i.length-1]==="ly.img.separator"||i.push(n),i),[])}function to({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(i,n,a)=>{let o={},r={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(c=>{if(n.engine.block.isValid(c)&&e&&(o[c]=n.engine.block.isAlwaysOnTop(c),n.engine.block.setAlwaysOnTop(c,!0)),t){let s=n.engine.block.getParent(c);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(r[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(c=>{if(n.engine.block.isValid(c)&&e&&n.engine.block.setAlwaysOnTop(c,o[c]),t){let s=n.engine.block.getParent(c);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&r[s]!=null&&n.engine.block.setClipped(s,r[s])}})}),await a(i,n)}}var no=to;function io({pending:e=!0}){return async(t,i,n)=>{let a=e?i.blockIds??i.engine.block.findAllSelected():[];try{return a.forEach(o=>{i.engine.block.isValid(o)&&i.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,i)}finally{a.forEach(o=>{i.engine.block.isValid(o)&&i.engine.block.setState(o,{type:"Ready"})})}}}var ro=io;function oo({editMode:e,automaticallyUnlock:t=!1}){return async(i,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),r=()=>{};t||n.addDisposer(async()=>{r?.()});try{return r=ao(n.engine,o,e),await a(i,n)}catch(l){throw N(l)&&r(),l}finally{t&&r()}}}function ao(e,t,i){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(i);let o=e.editor.createHistory(),r=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(u=>{t.includes(u)||e.block.setSelected(u,!1)}),t.forEach(u=>{e.block.setSelected(u,!0)})}let c=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==i&&e.editor.setEditMode(i)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(r),e.editor.destroyHistory(o),s(),c()}}var lo=oo;function so(e,t){switch(t.kind){case"text":return co(e,t);case"image":return uo(e,t);case"video":return po(e,t);case"audio":return go(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function co(e,t){let{cesdk:i,blockIds:n,abortSignal:a}=t,o=n.map(s=>i.engine.block.getString(s,"text/text")),r;if(de(e)){let s="";for await(let u of e){if(a.aborted)break;typeof u=="string"?s=u:u.kind==="text"&&(s=u.text),n.forEach(d=>{i.engine.block.setString(d,"text/text",s)}),r={kind:"text",text:s}}}else r=e;if(r==null||r.kind!=="text")throw new Error("Output kind from generation is not text");let l=()=>{t.blockIds.forEach(s=>{t.cesdk.engine.block.setString(s,"text/text",r.text)})},c=()=>{t.blockIds.forEach((s,u)=>{t.cesdk.engine.block.setString(s,"text/text",o[u])})};return{consumedGenerationResult:r,applyCallbacks:{onBefore:c,onAfter:l,onCancel:c,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function uo(e,t){let{cesdk:i,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,r=i.engine.block.getFill(o),l=i.engine.block.getSourceSet(r,"fill/image/sourceSet"),[c]=l,s;c==null&&(s=i.engine.block.getString(r,"fill/image/imageFileURI"));let u=await i.engine.editor.getMimeType(c?.uri??s),d=await ce(c?.uri??s,t.cesdk.engine),p=d.width/d.height;if(a.throwIfAborted(),u==="image/svg+xml")throw new Error("SVG images are not supported");let m=i.engine.block.getCropScaleX(o),f=i.engine.block.getCropScaleY(o),w=i.engine.block.getCropTranslationX(o),h=i.engine.block.getCropTranslationY(o),g=i.engine.block.getCropRotation(o),k=()=>{i.engine.block.setCropScaleX(o,m),i.engine.block.setCropScaleY(o,f),i.engine.block.setCropTranslationX(o,w),i.engine.block.setCropTranslationY(o,h),i.engine.block.setCropRotation(o,g)};if(de(e))throw new Error("Streaming generation is not supported yet from a panel");if(e.kind!=="image"||typeof e.url!="string")throw new Error("Output kind from generation is not an image");let y=e.url,b=await i.engine.editor.getMimeType(y),v=await mo(i,y,b),I=await ce(v,t.cesdk.engine),C=I.width/I.height,M=Math.abs(p-C)>.001,S=c?[{uri:v,width:I.width,height:I.height}]:void 0,z=v;S==null?i.engine.block.setString(r,"fill/image/imageFileURI",z):(i.engine.block.setString(r,"fill/image/imageFileURI",""),i.engine.block.setSourceSet(r,"fill/image/sourceSet",S)),M?i.engine.block.setContentFillMode(o,"Cover"):k();let ye=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");i.engine.block.setString(r,"fill/image/imageFileURI",s)}else i.engine.block.setSourceSet(r,"fill/image/sourceSet",l);k()},fe=()=>{if(S==null){if(z==null)throw new Error("No image URI found");i.engine.block.setString(r,"fill/image/imageFileURI",z)}else i.engine.block.setSourceSet(r,"fill/image/sourceSet",S);M?i.engine.block.setContentFillMode(o,"Cover"):k()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:ye,onAfter:fe,onCancel:()=>{ye()},onApply:()=>{fe(),t.cesdk.engine.editor.addUndoStep()}}}}async function po(e,t){throw new Error("Function not implemented.")}async function go(e,t){throw new Error("Function not implemented.")}async function mo(e,t,i){let n=await(await fetch(t)).blob(),a=new File([n],`image.${sr(i)}`,{type:i}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var yo=so;function fo({editMode:e,automaticallyUnlock:t=!1,showNotification:i=!0}){return async(n,a,o)=>{let r=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=bo(a.engine,r,e);let c=await o(n,a);if(i){let s=a.engine.block.findAllSelected();r.some(u=>s.includes(u))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{r.forEach(u=>{a.engine.block.select(u)})}}})}return c}catch(c){throw N(c)&&l(),c}finally{t&&l()}}}function bo(e,t,i){function n(){let r=e.block.findAllSelected();return t.some(l=>r.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==i&&n()&&e.editor.setEditMode(i)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(i):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(i),()=>{o(),a(),e.editor.setEditMode("Transform")}}var ho=fo;async function ko(e,t){let{cesdk:i,input:n,blockIds:a,provider:o,quickAction:r,confirmationComponentId:l,abortSignal:c}=e;r.confirmation&&i.ui.setCanvasMenuOrder([l],{editMode:ie});let s=new De(i.engine,it);a.forEach(g=>{s.set(g,{status:"processing",quickActionId:r.id})});let u={cesdk:i,engine:i.engine,abortSignal:c},d=Xe([...o.output.middleware??[],t.debug?et():void 0,ro({}),...r.confirmation?[r.lockDuringConfirmation?lo({editMode:ie}):ho({editMode:ie}),r.confirmation&&no({})]:[],t.dryRun?tt({kind:o.kind,blockIds:a}):void 0]),{result:p,dispose:m}=await d(o.output.generate)(n,u),{consumedGenerationResult:f,applyCallbacks:w}=await yo(p,{abortSignal:c,kind:o.kind,blockIds:a,cesdk:i});r.confirmation?a.forEach(g=>{s.set(g,{status:"confirmation",quickActionId:r.id})}):(w.onApply(),a.forEach(g=>{s.clear(g)}));let h=()=>{m(),a.forEach(g=>{s.clear(g)})};return c.addEventListener("abort",h),{dispose:h,returnValue:f,applyCallbacks:w}}var Ne=ko;function vo(e,t){let{cesdk:i,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,r=`${o}.confirmation`;i.setTranslations({en:{[`${r}.apply`]:"Apply",[`${r}.before`]:"Before",[`${r}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${r}.canvasnMenu`,c={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,p=d.signal;return c.abort=()=>{d.abort()},p};i.ui.registerComponent(l,({builder:d,engine:p,state:m})=>{let f=p.block.findAllSelected();if(f.length===0)return null;let w=new De(i.engine,it),h=w.get(f[0]);if(h==null)return null;let g=()=>{f.forEach(k=>{w.clear(k)})};switch(h.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${h.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{c.abort(),g()}});break}case"confirmation":{let k=m(`${r}.comparing`,"after"),y=c.applyCallbacks?.onCancel;y!=null&&d.Button(`${r}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{c.unlock(),y(),g()}});let b=c.applyCallbacks?.onBefore,v=c.applyCallbacks?.onAfter;b!=null&&v!=null&&d.ButtonGroup(`${r}.compare`,{children:()=>{d.Button(`${r}.compare.before`,{label:`${r}.before`,variant:"regular",isActive:k.value==="before",onClick:()=>{b(),k.setValue("before")}}),d.Button(`${r}.compare.after`,{label:`${r}.after`,variant:"regular",isActive:k.value==="after",onClick:()=>{v(),k.setValue("after")}})}});let I=c.applyCallbacks?.onApply;I!=null&&d.Button(`${r}.apply`,{icon:"@imgly/Checkmark",tooltip:`${r}.apply`,color:"accent",isDisabled:k.value!=="after",onClick:()=>{c.unlock(),g(),i.engine.editor._update(),I()}});break}default:}});let u=`${o}.canvasMenu`;return i.ui.registerComponent(u,d=>{let p=d.engine.block.findAllSelected(),m=p.every(y=>d.engine.block.getState(y).type==="Ready"),f=n.getQuickActionMenuOrder().map(y=>{if(y==="ly.img.separator")return y;let b=n.getQuickAction(y);if(b==null||!i.feature.isEnabled(rt({quickActionId:y,quickActionMenuId:n.id}),{engine:d.engine}))return null;let v=b.scopes;return v!=null&&v.length>0&&!p.every(I=>v.every(C=>d.engine.block.isAllowedByScope(I,C)))?null:b}).filter(y=>y!=null);if(f=eo(f),f.length===0||f.every(y=>y==="ly.img.separator"))return null;let{builder:w,experimental:h,state:g}=d,k=g(`${o}.toggleExpandedState`,void 0);h.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!m,trailingIcon:null,children:({close:y})=>{w.Section(`${o}.popover.section`,{children:()=>{if(k.value!=null){let b=k.value,v=n.getQuickAction(b);if(v!=null&&v.renderExpanded!=null){v.renderExpanded(d,{blockIds:p,closeMenu:y,toggleExpand:()=>{k.setValue(void 0)},handleGenerationError:I=>{V(I,{cesdk:i,provider:a},t)},generate:async(I,C)=>{try{let{returnValue:M,applyCallbacks:S,dispose:z}=await Ne({input:I,quickAction:v,quickActionMenu:n,provider:a,cesdk:i,abortSignal:s(),blockIds:C?.blockIds??p,confirmationComponentId:l},t);return c.unlock=z,c.applyCallbacks=S,M}catch(M){throw N(M)||V(M,{cesdk:i,provider:a},t),M}}});return}}h.builder.Menu(`${o}.menu`,{children:()=>{f.forEach(b=>{b==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):b.render(d,{blockIds:p,closeMenu:y,handleGenerationError:v=>{V(v,{cesdk:i,provider:a},t)},toggleExpand:()=>{k.setValue(b.id)},generate:async(v,I)=>{try{let{returnValue:C,applyCallbacks:M,dispose:S}=await Ne({input:v,quickAction:b,quickActionMenu:n,provider:a,cesdk:i,abortSignal:s(),blockIds:I?.blockIds??p,confirmationComponentId:l},t);return c.unlock=S,c.applyCallbacks=M,C}catch(C){throw N(C)||V(C,{cesdk:i,provider:a},t),C}}})})}})}})}})}),{canvasMenuComponentId:u}}var wo=vo;async function Ao(e,t,i){await e.initialize?.(t);let n=await Co(t.engine,e.id,e.output.history??"@imgly/local");if(t.cesdk==null)return{};let a=n?`${e.id}.history.entry`:void 0,o={...t,cesdk:t.cesdk,historyAssetSourceId:n,historyAssetLibraryEntryId:a,i18n:{prompt:"common.ai-generation.prompt.placeholder"}};a!=null&&n!=null&&t.cesdk.ui.addAssetLibraryEntry({id:a,sourceIds:[n],sortBy:{sortKey:"insertedAt",sortingOrder:"Descending"},canRemove:!0,gridItemHeight:"square",gridBackgroundType:"cover"}),t.cesdk.i18n.setTranslations({en:{"common.ai-generation.success":"Generation Successful","common.ai-generation.failed":"Generation Failed","common.ai-generation.generate":"Generate","common.ai-generation.prompt.placeholder":"Describe what you want to create...",[`panel.${e.id}`]:Io(e)}});let r="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(r)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",Kr),t.cesdk.ui.experimental.setGlobalStateValue(r,!0)),{renderBuilderFunctions:await xo(e,o,i)}}function Io(e){if(e.name!=null)return e.name;switch(e.kind){case"image":return"Generate Image";case"video":return"Generate Video";case"audio":return"Generate Audio";default:return"Generate Asset"}}async function Co(e,t,i){if(!(i==null||i===!1)){if(i==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(i==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new ct(n,e)),n}return i}}async function xo(e,t,i){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await Mo(e,e.input.panel,t,i)),e.input?.quickActions!=null&&(i.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),Eo(e,e.input.quickActions,t,i)),n}async function Mo(e,t,i,n){switch(t.type){case"custom":return Zr(e,t,i,n);case"schema":return Yr(e,t,i,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function Eo(e,t,i,n){let{cesdk:a}=i,o={};t.actions.forEach(r=>{let l=r.kind??e.kind;o[l]==null&&(o[l]=Xr(a,l));let c=o[l],s=r.enable??!0;a.feature.enable(rt({quickActionId:r.id,quickActionMenuId:l}),s),c.registerQuickAction(r),n.debug&&console.log(`Registered quick action: '${r.id}' (v${r.version}) to menu '${l}'`)}),Object.values(o).forEach(r=>{let{canvasMenuComponentId:l}=wo({cesdk:a,quickActionMenu:r,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var pe=Ao;function So(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 n=`${i}.dock`;t.ui.registerComponent(n,({builder:a})=>{let o=t.ui.isPanelOpen(i);a.Button(`${i}.dock.button`,{label:`${i}.dock.label`,isSelected:o,icon:"@imgly/Sparkle",onClick:()=>{t.ui.findAllPanels().forEach(r=>{r.startsWith("ly.img.ai/")&&t.ui.closePanel(r),!o&&r==="//ly.img.panel/assetLibrary"&&t.ui.closePanel(r)}),o?t.ui.closePanel(i):t.ui.openPanel(i)}})})}var ot=So;var at="@imgly/plugin-ai-image-generation",$o=`
65
+ `,Ga=Va;function qa(e){return async(t,r,i)=>e.enable?(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(t,void 0,2)),await Kt(2e3),await Ha(t,e,r)):i(t,r)}async function Ha(e,t,r){switch(t.kind){case"image":return Qa(e,t,r);case"video":return Za(e,t,r);case"text":return Ya(e,t,r);case"audio":return Ka(e,t,r);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function Qa(e,t,{engine:r}){let i,n,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)i=parseInt(a[1],10),n=parseInt(a[2],10);else if(t.blockInputs!=null&&(i=t.blockInputs.image.width,n=t.blockInputs.image.height),t.blockIds!=null&&Array.isArray(t.blockIds)&&t.blockIds.length>0){let[l]=t.blockIds,c=await Ho(l,r),s=await qe(c,r);i=s.width,n=s.height}else i=512,n=512;return{kind:"image",url:`https://placehold.co/${i}x${n}/000000/FFF?text=${o.replace(" ","+").replace(`
66
+ `,"+")}`}}async function Za(e,t,r){return Promise.resolve({kind:"video",url:"https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"})}async function Ya(e,t,r){let i="";if(t.blockIds&&t.blockIds.length>0){let[a]=t.blockIds;r.engine.block.isValid(a)&&(i=r.engine.block.getString(a,"text/text"))}if(!i&&e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"){let a=e.prompt,l=a.match(/text:\s*"([^"]+)"/i)||a.match(/content:\s*"([^"]+)"/i)||a.match(/"([^"]+)"/);l&&l[1]&&(i=l[1])}let n=i.length||50,o="";if(e!=null&&typeof e=="object")if("language"in e&&typeof e.language=="string")o=se(n,"translation");else if("type"in e&&typeof e.type=="string"){let a=e.type;o=se(n,a)}else"customPrompt"in e?o=se(n,"custom"):o=se(n,"improved");else o=se(n,"generated");return Wa(o,r.abortSignal)}async function*Wa(e,t){let r=Math.max(1,Math.ceil(e.length/20)),i=0;for(;i<e.length;){if(t?.aborted)return;let n=Math.min(i+r,e.length);yield{kind:"text",text:e.substring(0,n)},i=n,i<e.length&&await Kt(100)}return{kind:"text",text:e}}function se(e,t){let r="[DRY RUN - Dummy Text] ",i=r.length;if(e<=i)return r.substring(0,e);let n=e-i,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,l="";if(n<=a.length)l=a.substring(0,n);else{l=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."],s=0;for(;l.length<n;){let u=c[s%c.length];if(l.length+u.length<=n)l+=u;else{l+=u.substring(0,n-l.length);break}s++}}return r+l}async function Ka(e,t,r){let i=3;if(e!=null&&typeof e=="object"){if("duration"in e&&typeof e.duration=="number")i=e.duration;else if("prompt"in e&&typeof e.prompt=="string"){let n=e.prompt.match(/(\d+)\s*(?:seconds?|secs?|s)\b/i);n&&(i=parseInt(n[1],10))}}return t.blockInputs?.audio?.duration&&(i=t.blockInputs.audio.duration),{kind:"audio",url:Xa(220,i),duration:i,thumbnailUrl:void 0}}function Xa(e,t){let r=Math.floor(44100*t),i=new Float32Array(r);for(let n=0;n<r;n++)i[n]=Math.sin(2*Math.PI*e*n/44100);return Ja(i,44100)}function Ja(e,t){let r=e.length,i=2,n=1,o=n*i,a=t*o,l=r*i,c=44+l,s=new ArrayBuffer(c),u=new DataView(s),d=(h,v)=>{for(let y=0;y<v.length;y++)u.setUint8(h+y,v.charCodeAt(y))};d(0,"RIFF"),u.setUint32(4,c-8,!0),d(8,"WAVE"),d(12,"fmt "),u.setUint32(16,16,!0),u.setUint16(20,1,!0),u.setUint16(22,n,!0),u.setUint32(24,t,!0),u.setUint32(28,a,!0),u.setUint16(32,o,!0),u.setUint16(34,16,!0),d(36,"data"),u.setUint32(40,l,!0);let p=44;for(let h=0;h<r;h++){let v=Math.max(-1,Math.min(1,e[h])),y=Math.round(v*32767);u.setInt16(p,y,!0),p+=2}let g=new Uint8Array(s),m="";for(let h=0;h<g.length;h++)m+=String.fromCharCode(g[h]);return`data:audio/wav;base64,${btoa(m)}`}async function Kt(e){return new Promise(t=>{setTimeout(t,e)})}var el=qa,Xt="USER_CANCEL";function tl(e){return async(t,r)=>{if(r?.abortSignal?.aborted)return{status:"aborted"};let i=Zo([...e.provider.output.middleware??[],...r?.middlewares??[],Wo({enable:r?.debug}),el({enable:r?.dryRun,kind:e.provider.kind})]);try{let{result:n}=await i(e.provider.output.generate)(t,{abortSignal:r?.abortSignal,engine:e.engine,cesdk:e.cesdk});return r?.abortSignal?.aborted?{status:"aborted"}:n instanceof Error?{status:"error",message:n.message}:n==null?{status:"error",message:"No output generated"}:ea(n)?{status:"success",type:"async",output:n}:{status:"success",type:"sync",output:n}}catch(n){return Ze(n)?{status:"aborted",message:n.message}:n===Xt?{status:"aborted",message:n}:{status:"error",message:n instanceof Error?n.message:String(n)}}}}var rl=tl;async function il(e,t,r,i){let n={...i,provider:t},o={provider:t,panelInput:t.input?.panel,options:{cesdk:r.cesdk,engine:r.cesdk.engine},config:n};await t.initialize?.({...r,engine:r.cesdk.engine});let a=za(o),l=Ua(o,a);o.options.historyAssetSourceId=a,o.options.historyAssetLibraryEntryId=l;let c=rl({provider:t,cesdk:r.cesdk,engine:r.cesdk.engine}),s=await Ra(o,c);ta(r.cesdk,"@imgly/plugin-ai-generation",Ga);let u={provider:t,panel:{builderRenderFunction:s},history:{assetSourceId:a,assetLibraryEntryId:l},generate:c};return Lt.get().register(u),u}var Fe=il;function nl(e){let{kind:t,cesdk:r,historAssetSourceIds:i}=e,n=`ly.img.ai.${t}-generation.history`;if(r.engine.asset.findAllSources().includes(n))return n;let o=new qr(n,r,i);return r.engine.asset.addSource(o),o.id}var ol=nl;async function al(e,t,r,i){let n,o=[];if(Array.isArray(t)){let l=await Promise.all(t.map(c=>Fe(e,c,r,i)));o.push(...l),n=sl({prefix:e,providerInitializationResults:o})}else{let l=await Promise.all(t.fromText.map(s=>Fe(e,s,r,i)));o.push(...l);let c=await Promise.all(t.fromImage.map(s=>Fe(e,s,r,i)));o.push(...c),n=ll({prefix:`ly.img.ai.${e}-generation`,initializedFromTextProviders:l,initializedFromImageProviders:c})}let a=ol({kind:e,cesdk:r.cesdk,historAssetSourceIds:o.map(l=>l.history?.assetSourceId).filter($e)});return{panel:{builderRenderFunction:n},history:{assetSourceId:a},providerInitializationResults:o}}function ll({prefix:e,initializedFromTextProviders:t,initializedFromImageProviders:r}){let i=t.length>0&&r.length>0;return n=>{let{builder:o,experimental:a}=n,l=a.global(`${e}.fromType`,i?"fromText":void 0),c=[];l.value==="fromText"?c.push(...t):l.value==="fromImage"?c.push(...r):c.push(...t,...r);let s=t.map(({provider:m,panel:h})=>({id:m.id,label:m.name??m.id,builderRenderFunction:h?.builderRenderFunction})),u=r.map(({provider:m,panel:h})=>({id:m.id,label:m.name??m.id,builderRenderFunction:h?.builderRenderFunction})),d=n.experimental.global(`${e}.selectedProvider.fromText`,s[0]),p=n.experimental.global(`${e}.selectedProvider.fromImage`,u[0]),g=l.value==="fromText"?d:l.value==="fromImage"?p:void 0;if((i||c.length>1)&&o.Section(`${e}.providerSelection.section`,{children:()=>{if(i&&o.ButtonGroup(`${e}.fromType.buttonGroup`,{inputLabel:"Input",children:()=>{o.Button(`${e}.fromType.buttonGroup.fromText`,{label:"Text",icon:l.value!=="fromText"&&Ct(t,n)?"@imgly/LoadingSpinner":void 0,isActive:l.value==="fromText",onClick:()=>{l.setValue("fromText")}}),o.Button(`${e}.fromType.buttonGroup.fromImage`,{label:"Image",icon:l.value!=="fromImage"&&Ct(r,n)?"@imgly/LoadingSpinner":void 0,isActive:l.value==="fromImage",onClick:()=>{l.setValue("fromImage")}})}}),c.length>1){let m=l.value==="fromText"?s:l.value==="fromImage"?u:[...s,...u];g!=null&&o.Select(`${e}.providerSelect.select`,{inputLabel:"Provider",values:m,...g})}}}),c.length>1)g?.value.builderRenderFunction?.(n);else{let m=c[0];m&&m.panel?.builderRenderFunction?.(n)}}}function sl({prefix:e,providerInitializationResults:t}){return r=>{let{builder:i}=r;if(t.length===0)return;let n=t.map(({provider:a,panel:l})=>({id:a.id,label:a.name??a.id,builderRenderFunction:l?.builderRenderFunction})),o=r.state(`${e}.selectedProvider`,n[0]);t.length>1&&o!=null&&i.Section(`${e}.providerSelection.section`,{children:()=>{i.Select(`${e}.providerSelect.select`,{inputLabel:"Provider",values:n,...o})}}),o.value.builderRenderFunction?.(r)}}function Ct(e,t){return e.length===0?!1:e.some(({provider:r})=>r.id==null?!1:t.experimental.global(We(r.id),!1).value)}var Jt=al,fe="ly.img.ai.editMode",er="ly.img.ai.metadata";async function cl(e){let t=`ly.img.ai.${e.kind}.confirmation`;e.cesdk?.i18n.setTranslations({en:{"ly.img.ai.processing":"Generating...",[`${t}.cancel`]:"Cancel Generation",[`${t}.apply`]:"Apply Generation",[`${t}.before`]:"Before",[`${t}.after`]:"After"}});let r=i=>{let{engine:n,builder:o,state:a,payload:l}=i;if(l==null)return;let c=n.block.findAllSelected();if(c.length===0)return null;let s=new xt(n,er),u=s.get(c[0]);if(u==null)return null;let d=()=>{c.forEach(p=>{s.clear(p)})};switch(u.status){case"processing":{o.Button(`${t}.spinner`,{label:[`ly.img.ai.${u.quickActionId}.processing`,"ly.img.ai.processing"],isLoading:!0}),o.Separator(`${t}.separator`),o.Button(`${t}.cancel`,{icon:"@imgly/Cross",tooltip:`${t}.cancel`,onClick:()=>{l.onCancelGeneration?.(),d()}});break}case"confirmation":{let p=a(`${t}.comparing`,"after"),g=l.applyCallbacks?.onCancel;g!=null&&o.Button(`${t}.cancel`,{icon:"@imgly/Cross",tooltip:`${t}.cancel`,onClick:()=>{g(),d()}});let m=l.applyCallbacks?.onBefore,h=l.applyCallbacks?.onAfter;m!=null&&h!=null&&o.ButtonGroup(`${t}.compare`,{children:()=>{o.Button(`${t}.compare.before`,{label:`${t}.before`,variant:"regular",isActive:p.value==="before",onClick:()=>{m(),p.setValue("before")}}),o.Button(`${t}.compare.after`,{label:`${t}.after`,variant:"regular",isActive:p.value==="after",onClick:()=>{h(),p.setValue("after")}})}});let v=l.applyCallbacks?.onApply;v!=null&&o.Button(`${t}.apply`,{icon:"@imgly/Checkmark",tooltip:`${t}.apply`,color:"accent",isDisabled:p.value!=="after",onClick:()=>{d(),cesdk?.engine.editor._update(),v()}});break}default:}};return Promise.resolve(r)}var ul=cl;function dl(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,i)=>(i==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(i),r),[])}var pl=dl;function gl(e){return`ly.img.ai.${e}.canvasMenu`}var ml=gl;function fl(e){let{kind:t,cesdk:r,payload:i,defaultOrder:n}=e,o=ml(t);if(i==null||!Array.isArray(i.children)){let a=r.ui.getCanvasMenuOrder().find(({id:l})=>l===o);return a!=null&&Array.isArray(a.children)?a.children:n??[]}return i.children.filter(a=>typeof a=="string")}var hl=fl;function bl(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 yl(e,t);case"image":return vl(e,t);case"video":return kl(e,t);case"audio":return wl(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function yl(e,t){let{cesdk:r,blockIds:i,abortSignal:n}=t,o=i.map(s=>r.engine.block.getString(s,"text/text")),a;if(e.type==="async"){let s="";for await(let u of e.output){if(n?.aborted)break;typeof u=="string"?s=u:u.kind==="text"&&(s=u.text),i.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),a={kind:"text",text:s}}}else a=e.output;if(a==null||a.kind!=="text")throw new Error("Output kind from generation is not text");e.type==="sync"&&i.forEach(s=>{r.engine.block.setString(s,"text/text",a.text)});let l=()=>{t.blockIds.forEach(s=>{t.cesdk.engine.block.setString(s,"text/text",a.text)})},c=()=>{t.blockIds.forEach((s,u)=>{t.cesdk.engine.block.setString(s,"text/text",o[u])})};return{applyCallbacks:{onBefore:c,onAfter:l,onCancel:c,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function vl(e,t){let{cesdk:r,blockIds:i,abortSignal:n}=t;if(i.length!==1)throw new Error("Only one block is supported for image generation");let[o]=i,a=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(a,"fill/image/sourceSet"),[c]=l,s;c==null&&(s=r.engine.block.getString(a,"fill/image/imageFileURI"));let u=await r.engine.editor.getMimeType(c?.uri??s),d=await qe(c?.uri??s,t.cesdk.engine),p=d.width/d.height;if(n?.throwIfAborted(),u==="image/svg+xml")throw new Error("SVG images are not supported");let g=r.engine.block.getCropScaleX(o),m=r.engine.block.getCropScaleY(o),h=r.engine.block.getCropTranslationX(o),v=r.engine.block.getCropTranslationY(o),y=r.engine.block.getCropRotation(o),S=()=>{r.engine.block.setCropScaleX(o,g),r.engine.block.setCropScaleY(o,m),r.engine.block.setCropTranslationX(o,h),r.engine.block.setCropTranslationY(o,v),r.engine.block.setCropRotation(o,y)};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 k=e.output.url,b=await r.engine.editor.getMimeType(k),f=await Il(r,k,b),w=await qe(f,t.cesdk.engine),I=w.width/w.height,ae=Math.abs(p-I)>.001,x=c?[{uri:f,width:w.width,height:w.height}]:void 0,De=f;x==null?r.engine.block.setString(a,"fill/image/imageFileURI",De):(r.engine.block.setString(a,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(a,"fill/image/sourceSet",x)),await r.engine.block.forceLoadResources([a]),ae?r.engine.block.setContentFillMode(o,"Cover"):S();let lt=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(a,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(a,"fill/image/sourceSet",l);S()},st=()=>{if(x==null){if(De==null)throw new Error("No image URI found");r.engine.block.setString(a,"fill/image/imageFileURI",De)}else r.engine.block.setSourceSet(a,"fill/image/sourceSet",x);ae?r.engine.block.setContentFillMode(o,"Cover"):S()};return{applyCallbacks:{onBefore:lt,onAfter:st,onCancel:()=>{lt()},onApply:()=>{st(),t.cesdk.engine.editor.addUndoStep()}}}}async function kl(e,t){throw new Error("Function not implemented.")}async function wl(e,t){throw new Error("Function not implemented.")}async function Il(e,t,r){let i=await(await fetch(t)).blob(),n=new File([i],`image.${qo(r)}`,{type:r}),o=await e.unstable_upload(n,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var Al=bl;function Cl(e){let{engine:t,blockIdsToLock:r,editModeToLockTo:i}=e;function n(){let c=t.block.findAllSelected();return r.some(s=>c.includes(s))}let o=t.editor.onStateChanged(()=>{t.editor.getEditMode()!==i&&n()&&t.editor.setEditMode(i)}),a=t.block.onSelectionChanged(()=>{n()?t.editor.setEditMode(i):t.editor.setEditMode("Transform")});n()&&t.editor.setEditMode(i);let l=!1;return()=>{l||(a(),o(),t.editor.setEditMode("Transform"),l=!0)}}var Sl=Cl,xl=class tr{constructor(){this.actions=new Map}static get(){let t="__imgly_callbacks_registry__",r=typeof window<"u"?window:globalThis;return r[t]||(r[t]=new tr),r[t]}register(t,r){let i=this.actions.get(t)??{};this.actions.set(t,{...i,...r})}get(t){return this.actions.get(t)??{}}},V=xl;function El(e){return async(t,r)=>{let i=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 n=e.providerInitializationResult?.provider.input?.quickActions?.supported?.[e.quickAction.id];if(n==null)throw new Error("[Generate] Quick action input mapping failed. Ensure the provider supports this quick action.");let o=typeof n=="object"&&n!==null&&"mapInput"in n?n.mapInput:u=>u;e.close();let a=new AbortController,l=AbortSignal.any([e.abortSignal,a.signal].filter($e)),c=new xt(e.cesdk.engine,er),s=e.lock??!0?Sl({engine:e.cesdk.engine,editModeToLockTo:fe,blockIdsToLock:i}):()=>{};i.forEach(u=>{V.get().register(u,{onCancelGeneration:()=>{a.abort(Xt),s(),e.cesdk.engine.block.isValid(u)&&(e.cesdk.engine.block.isValid(u)&&e.cesdk.engine.block.setState(u,{type:"Ready"}),c.clear(u))}})}),i?.forEach(u=>{c.set(u,{status:"processing",quickActionId:e.quickAction.id})}),i.forEach(u=>{e.cesdk.engine.block.isValid(u)&&e.cesdk.engine.block.setState(u,{type:"Pending",progress:0})});try{let u=await e.providerInitializationResult.generate(o(t),{middlewares:[...e.middlewares??[]],debug:e.debug,dryRun:e.dryRun,abortSignal:l}),d=u.status;switch(d){case"success":{let{applyCallbacks:p}=await Al(u,{kind:e.providerInitializationResult.provider.kind,blockIds:i,cesdk:e.cesdk,abortSignal:l});if(i.forEach(g=>{e.cesdk.engine.block.isValid(g)&&e.cesdk.engine.block.setState(g,{type:"Ready"})}),e.confirmation){i.forEach(m=>{c.set(m,{status:"confirmation",quickActionId:e.quickAction.id})});let g={...p,onApply:async()=>{p.onApply(),s()},onCancel:()=>{p.onCancel(),s()}};i.forEach(m=>{V.get().register(m,{applyCallbacks:g})})}else i.forEach(g=>{e.cesdk.engine.block.isValid(g)&&c.clear(g)}),p.onApply(),s();return u}case"aborted":return e.debug&&console.log("Generation was aborted"),s(),i.forEach(p=>{e.cesdk.engine.block.isValid(p)&&c.clear(p)}),u;case"error":return s(),i.forEach(p=>{e.cesdk.engine.block.isValid(p)&&c.clear(p)}),console.error(`[Generate]: ${u.message}`),u;default:throw new Error(`[Generate] Unknown result status ${d}.`)}}catch(u){throw e.cesdk.ui.showNotification({type:"error",message:"A technical issue has occurred."}),s(),i.forEach(d=>{e.cesdk.engine.block.isValid(d)&&c.clear(d)}),u}finally{i.forEach(u=>{e.cesdk.engine.block.isValid(u)&&e.cesdk.engine.block.setState(u,{type:"Ready"})})}}}var St=El;function Ml(e){let t=`ly.img.ai.${e.kind}}`;e.cesdk.i18n.setTranslations({en:{[`${t}.quickActionMenu.providerSelect.label`]:"Provider"}});let r=i=>{if(i.engine.editor.getEditMode()===fe)return;let n=i.engine.block.findAllSelected();if(n.length===0)return;let{payload:o}=i,a=hl({kind:e.kind,cesdk:e.cesdk,payload:o,defaultOrder:e.defaultOrder})??[];if(a.length===0)return;let l=$l(a).filter(b=>{if(b==="ly.img.separator")return!0;let f=b.scopes;if(f!=null&&f.length>0&&!n.every(w=>f.every(I=>e.engine.block.isAllowedByScope(w,I))))return!1;if(b.enable!=null){if(typeof b.enable=="function")return b.enable({engine:e.engine});if(typeof b.enable=="boolean")return b.enable}return!0}),c=[],s=e.providerInitializationResults.reduce((b,f)=>{if(f.provider.kind!==e.kind)return b;let w=l.map(I=>{if(I==="ly.img.separator")return I;if(f.provider.input?.quickActions?.supported?.[I.id]!=null)return{definition:I};{let ae=Lt.get().getAll().filter(x=>x.provider.kind!==e.kind&&x.provider.id!==f.provider.id).find(x=>x.provider.input?.quickActions?.supported?.[I.id]!=null);if(ae!=null){let x={definition:I,providerInitializationResult:ae};return c.push(x),x}else return}}).filter($e);return w=pl(w),w.length===0||w.every(I=>I==="ly.img.separator")||w.every(I=>I==="ly.img.separator"||I.providerInitializationResult!=null)||b.push({providerInitializationResult:f,quickActions:w}),b},[]);if(s.length===0)if(c.length>0){let b=new Map;c.forEach(w=>{let I=w.definition.id;b.has(I)||b.set(I,w)});let f=Array.from(b.values());s.push({providerInitializationResult:f[0].providerInitializationResult??e.providerInitializationResults[0],quickActions:f})}else return;let u=s.map(({providerInitializationResult:b})=>({id:b.provider.id,label:b.provider.name??b.provider.id})),d=i.experimental.global(`${t}.currentProvider`,u[0]),p=s.find(({providerInitializationResult:{provider:{id:b}}})=>b===d.value?.id),g=n.every(b=>i.engine.block.getState(b).type==="Ready"),{builder:m,experimental:h,state:v}=i,y=v(`${t}.isGenerating`,!1),S=v(`${t}.toggleExpandedState`,void 0),k=async(b,f,w)=>{y.setValue(!0);try{return await w(b,f)}finally{y.setValue(!1)}};h.builder.Popover(`${t}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!g,isLoading:y.value,trailingIcon:null,children:({close:b})=>{m.Section(`${t}.popover.section`,{children:()=>{if(S.value!==void 0){let f=p?.quickActions.find(w=>w!=="ly.img.separator"&&w.definition.id===S.value);return f!=null&&f.definition.render!=null?f.definition.render({...i,toggleExpand:()=>{S.setValue(void 0)},isExpanded:!0,generate:St({blockIds:n,providerInitializationResult:f.providerInitializationResult??p?.providerInitializationResult,quickAction:f.definition,middlewares:[k],confirmation:f.definition.defaults?.confirmation??!0,close:b,cesdk:e.cesdk,debug:e.debug,dryRun:e.dryRun}),close:b,providerId:d.value.id}):void 0}S.value==null&&u.length>1&&(m.Select(`${t}.providerSelect.select`,{inputLabel:`${t}.quickActionMenu.providerSelect.label`,values:u,...d}),m.Separator(`${t}.providerSelect.separator`)),h.builder.Menu(`${t}.menu`,{children:()=>{p?.quickActions.forEach(f=>{if(f==="ly.img.separator"){m.Separator(`${t}.separator.${Math.random().toString()}`);return}f.definition.render!=null&&f.definition.render({...i,toggleExpand:()=>{S.setValue(f.definition.id)},isExpanded:!1,generate:St({blockIds:n,providerInitializationResult:f.providerInitializationResult??p?.providerInitializationResult,quickAction:f.definition,middlewares:[k],confirmation:f.definition.defaults?.confirmation??!0,close:b,cesdk:e.cesdk,debug:e.debug,dryRun:e.dryRun}),close:b,providerId:d.value.id})})}})}})}})};return Promise.resolve(r)}function $l(e){return e.map(t=>t==="ly.img.separator"?t:Qe.get().getBy({id:t,type:"quick"})[0]).filter($e)}var jl=Ml;async function Pl(e){let t=await jl({kind:e.kind,providerInitializationResults:e.providerInitializationResults,cesdk:e.cesdk,engine:e.engine,debug:e.debug,dryRun:e.dryRun,defaultOrder:e.defaultOrder}),r=await ul({kind:e.kind,cesdk:e.cesdk});return{renderFunction:i=>{let{engine:n}=i;if(n.editor.getEditMode()===fe){let o=i.engine.block.findAllSelected();r({...i,payload:{...i.payload??{},applyCallbacks:{onBefore:()=>{o.forEach(a=>{V.get().get(a).applyCallbacks?.onBefore?.()})},onAfter:()=>{o.forEach(a=>{V.get().get(a).applyCallbacks?.onAfter?.()})},onCancel:()=>{o.forEach(a=>{V.get().get(a).applyCallbacks?.onCancel?.()})},onApply:()=>{o.forEach(a=>{V.get().get(a).applyCallbacks?.onApply?.()})}},onCancelGeneration:()=>{o.forEach(a=>{V.get().get(a).onCancelGeneration?.()})}}});return}t(i)}}}var rr=Pl;var ir="@imgly/plugin-ai-image-generation",Tl=`
64
67
  <svg>
65
68
  <symbol
66
69
  fill="none"
@@ -74,7 +77,7 @@ var ct=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName=
74
77
 
75
78
  </symbol>
76
79
  </svg>
77
- `,lt=$o;var ge="@imgly/plugin-ai-image-generation-web";var x="ly.img.ai/image-generation",me="ly.img.ai.image-generation.fromType";function jo(e){return{async initialize({cesdk:t}){if(t==null)return;let i={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.ui.addIconSet(at,lt),t.setTranslations({en:{[`panel.${x}`]:"Image Generation","ly.img.ai.image-generation.success":"Image Generation Successful","ly.img.ai.image-generation.success.action":"Show"}});let n=e?.text2image,a=e?.image2image,o=await n?.({cesdk:t}),r=await a?.({cesdk:t});function l(d){if(t!=null)return{success:{show:()=>{let p=t?.ui.isPanelOpen(x),m=t.ui.experimental.getGlobalStateValue(me,"fromText")===d;return!p||!m},message:"ly.img.ai.image-generation.success",action:{label:"ly.img.ai.image-generation.success.action",onClick:()=>{t.ui.experimental.setGlobalStateValue(me,d),t.ui.openPanel(x)}},duration:"long"}}}o!=null&&(o.output.notification=l("fromText")),r!=null&&(r.output.notification=l("fromImage"));let c=o!=null?await pe(o,{cesdk:t,engine:t.engine},i):void 0,s=r!=null?await pe(r,{cesdk:t,engine:t.engine},i):void 0;if(c?.renderBuilderFunctions?.panel==null&&s?.renderBuilderFunctions?.panel==null){i.debug&&console.log("No providers are initialized \u2013 doing nothing");return}if(c?.renderBuilderFunctions?.panel!=null&&s?.renderBuilderFunctions?.panel!=null)t.ui.registerPanel(x,d=>{let{builder:p,experimental:m}=d,f=m.global(me,"fromText");switch(p.Section(`${x}.fromType.section`,{children:()=>{p.ButtonGroup(`${x}.fromType.buttonGroup`,{inputLabel:"Input",children:()=>{p.Button(`${x}.fromType.buttonGroup.fromText`,{label:"Text",icon:f.value!=="fromText"&&o!=null&&m.global(H(o.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromText",onClick:()=>{f.setValue("fromText")}}),p.Button(`${x}.fromType.buttonGroup.fromImage`,{label:"Image",icon:f.value!=="fromImage"&&r!=null&&m.global(H(r.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromImage",onClick:()=>{f.setValue("fromImage")}})}})}}),f.value){case"fromText":{c?.renderBuilderFunctions?.panel?.(d);break}case"fromImage":{s?.renderBuilderFunctions?.panel?.(d);break}default:}});else{let d=c?.renderBuilderFunctions?.panel??s?.renderBuilderFunctions?.panel;if(d==null)return;t.ui.registerPanel(x,d),t.i18n.setTranslations({en:{[`${x}.dock.label`]:"AI Image"}}),ot({cesdk:t,panelId:x})}}}}var st=jo;var To=e=>({name:ge,version:"0.1.10",...st(e)}),ra=To;export{ra as default};
80
+ `,nr=Tl;var _l=typeof global=="object"&&global&&global.Object===Object&&global,vr=_l,Dl=typeof self=="object"&&self&&self.Object===Object&&self,Nl=vr||Dl||Function("return this")(),_=Nl,Ll=_.Symbol,te=Ll,kr=Object.prototype,Ol=kr.hasOwnProperty,Rl=kr.toString,he=te?te.toStringTag:void 0;function Fl(e){var t=Ol.call(e,he),r=e[he];try{e[he]=void 0;var i=!0}catch{}var n=Rl.call(e);return i&&(t?e[he]=r:delete e[he]),n}var zl=Fl,Bl=Object.prototype,Ul=Bl.toString;function Vl(e){return Ul.call(e)}var Gl=Vl,ql="[object Null]",Hl="[object Undefined]",or=te?te.toStringTag:void 0;function Ql(e){return e==null?e===void 0?Hl:ql:or&&or in Object(e)?zl(e):Gl(e)}var ke=Ql;function Zl(e){return e!=null&&typeof e=="object"}var nt=Zl,dd=Array.isArray;function Yl(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var wr=Yl,Wl="[object AsyncFunction]",Kl="[object Function]",Xl="[object GeneratorFunction]",Jl="[object Proxy]";function es(e){if(!wr(e))return!1;var t=ke(e);return t==Kl||t==Xl||t==Wl||t==Jl}var ts=es,rs=_["__core-js_shared__"],Ke=rs,ar=function(){var e=/[^.]+$/.exec(Ke&&Ke.keys&&Ke.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function is(e){return!!ar&&ar in e}var ns=is,os=Function.prototype,as=os.toString;function ls(e){if(e!=null){try{return as.call(e)}catch{}try{return e+""}catch{}}return""}var q=ls,ss=/[\\^$.*+?()[\]{}|]/g,cs=/^\[object .+?Constructor\]$/,us=Function.prototype,ds=Object.prototype,ps=us.toString,gs=ds.hasOwnProperty,ms=RegExp("^"+ps.call(gs).replace(ss,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function fs(e){if(!wr(e)||ns(e))return!1;var t=ts(e)?ms:cs;return t.test(q(e))}var hs=fs;function bs(e,t){return e?.[t]}var ys=bs;function vs(e,t){var r=ys(e,t);return hs(r)?r:void 0}var re=vs,ks=re(_,"WeakMap"),Je=ks;function ws(e,t){return e===t||e!==e&&t!==t}var Is=ws,As=9007199254740991;function Cs(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=As}var Ss=Cs;var pd=Object.prototype;var xs="[object Arguments]";function Es(e){return nt(e)&&ke(e)==xs}var lr=Es,Ir=Object.prototype,Ms=Ir.hasOwnProperty,$s=Ir.propertyIsEnumerable,gd=lr(function(){return arguments}())?lr:function(e){return nt(e)&&Ms.call(e,"callee")&&!$s.call(e,"callee")};var Ar=typeof exports=="object"&&exports&&!exports.nodeType&&exports,sr=Ar&&typeof module=="object"&&module&&!module.nodeType&&module,js=sr&&sr.exports===Ar,cr=js?_.Buffer:void 0,md=cr?cr.isBuffer:void 0;var Ps="[object Arguments]",Ts="[object Array]",_s="[object Boolean]",Ds="[object Date]",Ns="[object Error]",Ls="[object Function]",Os="[object Map]",Rs="[object Number]",Fs="[object Object]",zs="[object RegExp]",Bs="[object Set]",Us="[object String]",Vs="[object WeakMap]",Gs="[object ArrayBuffer]",qs="[object DataView]",Hs="[object Float32Array]",Qs="[object Float64Array]",Zs="[object Int8Array]",Ys="[object Int16Array]",Ws="[object Int32Array]",Ks="[object Uint8Array]",Xs="[object Uint8ClampedArray]",Js="[object Uint16Array]",ec="[object Uint32Array]",C={};C[Hs]=C[Qs]=C[Zs]=C[Ys]=C[Ws]=C[Ks]=C[Xs]=C[Js]=C[ec]=!0;C[Ps]=C[Ts]=C[Gs]=C[_s]=C[qs]=C[Ds]=C[Ns]=C[Ls]=C[Os]=C[Rs]=C[Fs]=C[zs]=C[Bs]=C[Us]=C[Vs]=!1;function tc(e){return nt(e)&&Ss(e.length)&&!!C[ke(e)]}var rc=tc;function ic(e){return function(t){return e(t)}}var nc=ic,Cr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,be=Cr&&typeof module=="object"&&module&&!module.nodeType&&module,oc=be&&be.exports===Cr,Xe=oc&&vr.process,ac=function(){try{var e=be&&be.require&&be.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch{}}(),ur=ac,dr=ur&&ur.isTypedArray,fd=dr?nc(dr):rc;var lc=Object.prototype,hd=lc.hasOwnProperty;function sc(e,t){return function(r){return e(t(r))}}var cc=sc,bd=cc(Object.keys,Object);var uc=Object.prototype,yd=uc.hasOwnProperty;var dc=re(Object,"create"),ye=dc;function pc(){this.__data__=ye?ye(null):{},this.size=0}var gc=pc;function mc(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var fc=mc,hc="__lodash_hash_undefined__",bc=Object.prototype,yc=bc.hasOwnProperty;function vc(e){var t=this.__data__;if(ye){var r=t[e];return r===hc?void 0:r}return yc.call(t,e)?t[e]:void 0}var kc=vc,wc=Object.prototype,Ic=wc.hasOwnProperty;function Ac(e){var t=this.__data__;return ye?t[e]!==void 0:Ic.call(t,e)}var Cc=Ac,Sc="__lodash_hash_undefined__";function xc(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ye&&t===void 0?Sc:t,this}var Ec=xc;function ie(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}ie.prototype.clear=gc;ie.prototype.delete=fc;ie.prototype.get=kc;ie.prototype.has=Cc;ie.prototype.set=Ec;var pr=ie;function Mc(){this.__data__=[],this.size=0}var $c=Mc;function jc(e,t){for(var r=e.length;r--;)if(Is(e[r][0],t))return r;return-1}var je=jc,Pc=Array.prototype,Tc=Pc.splice;function _c(e){var t=this.__data__,r=je(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():Tc.call(t,r,1),--this.size,!0}var Dc=_c;function Nc(e){var t=this.__data__,r=je(t,e);return r<0?void 0:t[r][1]}var Lc=Nc;function Oc(e){return je(this.__data__,e)>-1}var Rc=Oc;function Fc(e,t){var r=this.__data__,i=je(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}var zc=Fc;function ne(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}ne.prototype.clear=$c;ne.prototype.delete=Dc;ne.prototype.get=Lc;ne.prototype.has=Rc;ne.prototype.set=zc;var Pe=ne,Bc=re(_,"Map"),ve=Bc;function Uc(){this.size=0,this.__data__={hash:new pr,map:new(ve||Pe),string:new pr}}var Vc=Uc;function Gc(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var qc=Gc;function Hc(e,t){var r=e.__data__;return qc(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Te=Hc;function Qc(e){var t=Te(this,e).delete(e);return this.size-=t?1:0,t}var Zc=Qc;function Yc(e){return Te(this,e).get(e)}var Wc=Yc;function Kc(e){return Te(this,e).has(e)}var Xc=Kc;function Jc(e,t){var r=Te(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}var eu=Jc;function oe(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var i=e[t];this.set(i[0],i[1])}}oe.prototype.clear=Vc;oe.prototype.delete=Zc;oe.prototype.get=Wc;oe.prototype.has=Xc;oe.prototype.set=eu;var Sr=oe;function tu(){this.__data__=new Pe,this.size=0}var ru=tu;function iu(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var nu=iu;function ou(e){return this.__data__.get(e)}var au=ou;function lu(e){return this.__data__.has(e)}var su=lu,cu=200;function uu(e,t){var r=this.__data__;if(r instanceof Pe){var i=r.__data__;if(!ve||i.length<cu-1)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new Sr(i)}return r.set(e,t),this.size=r.size,this}var du=uu;function we(e){var t=this.__data__=new Pe(e);this.size=t.size}we.prototype.clear=ru;we.prototype.delete=nu;we.prototype.get=au;we.prototype.has=su;we.prototype.set=du;var pu=Object.prototype,vd=pu.propertyIsEnumerable;var gu=re(_,"DataView"),et=gu,mu=re(_,"Promise"),tt=mu,fu=re(_,"Set"),rt=fu,gr="[object Map]",hu="[object Object]",mr="[object Promise]",fr="[object Set]",hr="[object WeakMap]",br="[object DataView]",bu=q(et),yu=q(ve),vu=q(tt),ku=q(rt),wu=q(Je),ee=ke;(et&&ee(new et(new ArrayBuffer(1)))!=br||ve&&ee(new ve)!=gr||tt&&ee(tt.resolve())!=mr||rt&&ee(new rt)!=fr||Je&&ee(new Je)!=hr)&&(ee=function(e){var t=ke(e),r=t==hu?e.constructor:void 0,i=r?q(r):"";if(i)switch(i){case bu:return br;case yu:return gr;case vu:return mr;case ku:return fr;case wu:return hr}return t});var kd=_.Uint8Array;var Iu="__lodash_hash_undefined__";function Au(e){return this.__data__.set(e,Iu),this}var Cu=Au;function Su(e){return this.__data__.has(e)}var xu=Su;function it(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Sr;++t<r;)this.add(e[t])}it.prototype.add=it.prototype.push=Cu;it.prototype.has=xu;var yr=te?te.prototype:void 0,wd=yr?yr.valueOf:void 0;var Eu=Object.prototype,Id=Eu.hasOwnProperty;var Mu=Object.prototype,Ad=Mu.hasOwnProperty;var Cd=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),Sd=new RegExp(/[A-Fa-f0-9]{1}/,"g"),xd=new RegExp(/[A-Fa-f0-9]{2}/,"g");async function $u(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),i=t.editor.getBufferLength(e),n=t.editor.getBufferData(e,0,i),o=new Blob([n],{type:r});return URL.createObjectURL(o)}else return e}async function E(e,t,r){let i,n=t.block.getFill(e),o=t.block.getSourceSet(n,"fill/image/sourceSet"),[a]=o;if(a==null){if(i=t.block.getString(n,"fill/image/imageFileURI"),i==null)throw new Error("No image source/uri found")}else i=a.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(i)==="image/svg+xml")throw new Error("SVG images are not supported");return $u(i,t)}function ju(e){return e==null?[]:Array.isArray(e)?e:[e]}var ot=ju;var H="@imgly/plugin-ai-image-generation-web",_e=["ly.img.gpt-image-1.changeStyleLibrary","ly.img.styleTransfer","ly.img.artistTransfer","ly.img.separator","ly.img.editImage","ly.img.swapBackground","ly.img.createVariant","ly.img.combineImages","ly.img.separator","ly.img.remixPage","ly.img.separator","ly.img.createVideo"];var xr="editImage",O=`ly.img.${xr}`,M=`ly.img.ai.quickAction.image.${xr}`,Pu=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${M}.label`]:"Edit Image...",[`${M}.description`]:"Change image based on description",[`${M}.prompt.label`]:"Edit Image...",[`${M}.prompt.placeholder`]:'e.g. "Add a sunset"',[`${M}.apply`]:"Change"}}),{id:O,type:"quick",kind:"image",label:`${M}.label`,description:`${M}.description`,enable:P(),scopes:["fill/change"],render:({builder:r,experimental:i,isExpanded:n,toggleExpand:o,generate:a,engine:l,state:c,close:s})=>{if(n){let u=c(`${O}.prompt`,"");r.TextArea(`${O}.prompt`,{inputLabel:`${M}.prompt.label`,placeholder:`${M}.prompt.placeholder`,...u}),r.Separator(`${O}.separator`),i.builder.ButtonRow(`${O}.footer`,{justifyContent:"space-between",children:()=>{r.Button(`${O}.footer.cancel`,{label:"common.back",icon:"@imgly/ChevronLeft",onClick:o}),r.Button(`${O}.footer.apply`,{label:`${M}.apply`,icon:"@imgly/MagicWand",color:"accent",isDisabled:u.value.length===0,onClick:async()=>{try{let d=u.value;if(!d)return;let[p]=l.block.findAllSelected(),g=await E(p,l,{throwErrorIfSvg:!0});await a({prompt:d,uri:g}),o(),s()}catch(d){console.error("Generation error:",d),e.ui.showNotification({type:"error",message:d.message||"Failed to edit image. Please try again.",duration:"medium"})}}})}})}else r.Button(`${O}.button`,{label:`${M}.label`,icon:"@imgly/plugin-ai-generation/image",labelAlignment:"left",variant:"plain",onClick:o})}}),Er=Pu;var Mr="swapBackground",R=`ly.img.${Mr}`,$=`ly.img.ai.quickAction.image.${Mr}`,Tu=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${$}.label`]:"Swap Background...",[`${$}.description`]:"Change the background of the image",[`${$}.prompt.label`]:"Swap Background...",[`${$}.prompt.placeholder`]:'e.g. "A sunset over mountains"',[`${$}.apply`]:"Change"}}),{id:R,type:"quick",kind:"image",label:`${$}.label`,description:`${$}.description`,enable:P(),scopes:["fill/change"],render:({builder:r,experimental:i,isExpanded:n,toggleExpand:o,generate:a,engine:l,state:c,close:s})=>{if(n){let u=c(`${R}.prompt`,"");r.TextArea(`${R}.prompt`,{inputLabel:`${$}.prompt.label`,placeholder:`${$}.prompt.placeholder`,...u}),r.Separator(`${R}.separator`),i.builder.ButtonRow(`${R}.footer`,{justifyContent:"space-between",children:()=>{r.Button(`${R}.footer.cancel`,{label:"common.back",icon:"@imgly/ChevronLeft",onClick:o}),r.Button(`${R}.footer.apply`,{label:`${$}.apply`,icon:"@imgly/MagicWand",color:"accent",isDisabled:u.value.length===0,onClick:async()=>{try{let d=u.value;if(!d)return;let[p]=l.block.findAllSelected(),g=await E(p,l,{throwErrorIfSvg:!0});await a({prompt:`Swap the background to ${d}`,uri:g}),o(),s()}catch(d){console.error("Generation error:",d),e.ui.showNotification({type:"error",message:d.message||"Failed to swap background. Please try again.",duration:"medium"})}}})}})}else r.Button(`${R}.button`,{label:`${$}.label`,icon:"@imgly/plugin-ai-generation/image",labelAlignment:"left",variant:"plain",onClick:o})}}),$r=Tu;var jr="styleTransfer",Ie=`ly.img.${jr}`,Ae=`ly.img.ai.quickAction.image.${jr}`,_u=[{id:"water",label:"Watercolor Painting",prompt:"Convert to watercolor painting."},{id:"oil",label:"Oil Painting",prompt:"Render in oil painting style."},{id:"charcoal",label:"Charcoal Sketch",prompt:"Transform into a charcoal sketch."},{id:"pencil",label:"Pencil Drawing",prompt:"Apply pencil drawing effect."},{id:"pastel",label:"Pastel Artwork",prompt:"Make it look like a pastel artwork."},{id:"ink",label:"Ink Wash",prompt:"Turn into a classic ink wash painting."},{id:"stained-glass",label:"Stained Glass Window",prompt:"Stylize as a stained glass window."},{id:"japanese",label:"Japanese Woodblock Print",prompt:"Repaint as a traditional Japanese woodblock print."}],Du=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${Ae}.label`]:"Change Art Style",[`${Ae}.description`]:"Transform image into different art styles"}}),{id:Ie,type:"quick",kind:"image",label:`${Ae}.label`,description:`${Ae}.description`,enable:P(),scopes:["fill/change"],render:({builder:r,experimental:i,generate:n,engine:o,close:a})=>{i.builder.Popover(`${Ie}.popover`,{label:`${Ae}.label`,icon:"@imgly/Appearance",labelAlignment:"left",variant:"plain",trailingIcon:"@imgly/ChevronRight",placement:"right",children:()=>{r.Section(`${Ie}.popover.section`,{children:()=>{i.builder.Menu(`${Ie}.popover.menu`,{children:()=>{_u.forEach(l=>{r.Button(`${Ie}.popover.menu.${l.id}`,{label:l.label,labelAlignment:"left",variant:"plain",onClick:async()=>{try{let[c]=o.block.findAllSelected(),s=await E(c,o,{throwErrorIfSvg:!0});await n({style:l.prompt,uri:s}),a()}catch(c){console.error("Generation error:",c),e.ui.showNotification({type:"error",message:c.message||"Failed to apply style transfer. Please try again.",duration:"medium"})}}})})}})}})}})}}),Pr=Du;var Tr="artistTransfer",Ce=`ly.img.${Tr}`,Se=`ly.img.ai.quickAction.image.${Tr}`,Nu=[{id:"van-gogh",label:"Van Gogh",prompt:"Render this image in the style of Vincent van Gogh, using expressive brushstrokes and swirling motion."},{id:"monet",label:"Monet",prompt:"Transform this image into the soft, impressionistic style of Claude Monet with natural light and delicate color blending."},{id:"picasso",label:"Picasso",prompt:"Apply a Pablo Picasso cubist style with abstract geometry and fragmented shapes."},{id:"dali",label:"Dal\xED",prompt:"Make this image resemble Salvador Dal\xED's surrealist style, with dreamlike distortion and soft shadows."},{id:"matisse",label:"Matisse",prompt:"Stylize the image using Henri Matisse's bold colors and simplified, flowing shapes."},{id:"warhol",label:"Warhol",prompt:"Convert this image into Andy Warhol's pop art style with flat colors, repetition, and bold outlines."},{id:"michelangelo",label:"Michelangelo",prompt:"Render the image in the classical Renaissance style of Michelangelo, with dramatic anatomy and fresco-like detail."},{id:"da-vinci",label:"Da Vinci",prompt:"Make this image look like a Leonardo da Vinci painting, using soft transitions, balanced composition, and natural tones."},{id:"rembrandt",label:"Rembrandt",prompt:"Apply Rembrandt's style with rich contrast, warm tones, and dramatic use of light and shadow."},{id:"mondrian",label:"Mondrian",prompt:"Transform the image into Piet Mondrian's abstract geometric style with grids and primary colors."},{id:"kahlo",label:"Frida Kahlo",prompt:"Stylize this image in the expressive, symbolic style of Frida Kahlo with vivid colors and surreal framing."},{id:"hokusai",label:"Hokusai",prompt:"Render the image in the style of Hokusai, using bold outlines, flat color, and traditional Japanese woodblock aesthetics."}],Lu=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${Se}.label`]:"Painted By",[`${Se}.description`]:"Transform image in the style of famous artists"}}),{id:Ce,type:"quick",kind:"image",label:`${Se}.label`,description:`${Se}.description`,enable:P(),scopes:["fill/change"],render:({builder:r,experimental:i,generate:n,engine:o,close:a})=>{i.builder.Popover(`${Ce}.popover`,{label:`${Se}.label`,icon:"@imgly/Appearance",labelAlignment:"left",variant:"plain",trailingIcon:"@imgly/ChevronRight",placement:"right",children:()=>{r.Section(`${Ce}.popover.section`,{children:()=>{i.builder.Menu(`${Ce}.popover.menu`,{children:()=>{Nu.forEach(l=>{r.Button(`${Ce}.popover.menu.${l.id}`,{label:l.label,labelAlignment:"left",variant:"plain",onClick:async()=>{try{let[c]=o.block.findAllSelected(),s=await E(c,o,{throwErrorIfSvg:!0});await n({artist:l.prompt,uri:s}),a()}catch(c){console.error("Generation error:",c),e.ui.showNotification({type:"error",message:c.message||"Failed to apply artist style. Please try again.",duration:"medium"})}}})})}})}})}})}}),_r=Lu;var Dr="createVariant",F=`ly.img.${Dr}`,j=`ly.img.ai.quickAction.image.${Dr}`,Ou=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${j}.label`]:"Create Variant...",[`${j}.description`]:"Create a variation of the image",[`${j}.prompt.label`]:"Create Variant...",[`${j}.prompt.placeholder`]:'e.g. "Make it more colorful"',[`${j}.apply`]:"Create"}}),{id:F,type:"quick",kind:"image",defaults:{confirmation:!1,lock:!1},label:`${j}.label`,description:`${j}.description`,enable:r=>{if(!P()(r))return!1;let[i]=r.engine.block.findAllSelected();return!(!e.feature.isEnabled("ly.img.duplicate",{engine:r.engine})||!r.engine.block.isAllowedByScope(i,"lifecycle/duplicate"))},scopes:["fill/change","lifecycle/duplicate"],render:({builder:r,experimental:i,isExpanded:n,toggleExpand:o,generate:a,engine:l,state:c,close:s})=>{if(n){let u=c(`${F}.prompt`,"");r.TextArea(`${F}.prompt`,{inputLabel:`${j}.prompt.label`,placeholder:`${j}.prompt.placeholder`,...u}),r.Separator(`${F}.separator`),i.builder.ButtonRow(`${F}.footer`,{justifyContent:"space-between",children:()=>{r.Button(`${F}.footer.cancel`,{label:"common.back",icon:"@imgly/ChevronLeft",onClick:o}),r.Button(`${F}.footer.apply`,{label:`${j}.apply`,icon:"@imgly/MagicWand",color:"accent",isDisabled:u.value.length===0,onClick:async()=>{try{let d=u.value;if(!d)return;let[p]=l.block.findAllSelected(),g=l.block.getType(p),m=l.block.duplicate(p);g==="//ly.img.ubq/page"&&l.block.getChildren(m).forEach(S=>{l.block.destroy(S)}),l.block.setSelected(p,!1),l.block.setSelected(m,!0);let h=l.block.getParent(m);if(h==null)throw new Error("Parent not found");if(!(h!=null&&l.block.getType(h)==="//ly.img.ubq/track"&&l.block.isPageDurationSource(h))&&g!=="//ly.img.ubq/page"){let k=l.block.getWidth(h),b=l.block.getHeight(h),f=.02*Math.min(k,b)*1;l.block.setPositionX(m,l.block.getPositionX(m)+f),l.block.setPositionY(m,l.block.getPositionY(m)+f)}let y=await E(m,l,{throwErrorIfSvg:!0});await a({prompt:d,uri:y},{blockIds:[m]}),o(),s()}catch(d){console.error("Generation error:",d),e.ui.showNotification({type:"error",message:d.message||"Failed to create variant. Please try again.",duration:"medium"})}}})}})}else r.Button(`${F}.button`,{label:`${j}.label`,icon:"@imgly/ImageVariation",labelAlignment:"left",variant:"plain",onClick:o})}}),Nr=Ou;var Lr="combineImages",z=`ly.img.${Lr}`,D=`ly.img.ai.quickAction.${Lr}`,Ru=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${D}.apply`]:"Combine",[`${D}`]:"Combine Images...",[`${D}.prompt.inputLabel`]:"Image Combination Instructions",[`${D}.prompt.placeholder`]:"e.g., add character to the left of the mountain scene"}}),{id:z,type:"quick",kind:"image",defaults:{confirmation:!1,lock:!1},label:`${D}`,description:"Combine multiple images with instructions",enable:r=>{let i=r.engine.block.findAllSelected();return i==null||i.length<2?!1:i.every(n=>{if(r.engine.block.getType(n)!=="//ly.img.ubq/graphic"&&!r.engine.block.supportsFill(n))return!1;let o=r.engine.block.getFill(n);if(r.engine.block.getType(o)!=="//ly.img.ubq/fill/image"||!e.feature.isEnabled("ly.img.duplicate",{engine:r.engine})||!r.engine.block.isAllowedByScope(n,"lifecycle/duplicate"))return!1;let a=r.engine.block.getParent(n);return!(a!=null&&r.engine.block.getType(a)==="//ly.img.ubq/track"&&r.engine.block.isPageDurationSource(a)||r.engine.block.getType(n)==="//ly.img.ubq/page")})},scopes:["lifecycle/duplicate","fill/change"],render:({builder:r,experimental:i,isExpanded:n,toggleExpand:o,generate:a,engine:l,state:c,close:s})=>{if(n){let u=c(`${z}.prompt`,"");r.TextArea(`${z}.prompt`,{inputLabel:`${D}.prompt.inputLabel`,placeholder:`${D}.prompt.placeholder`,...u}),r.Separator(`${z}.separator`),i.builder.ButtonRow(`${z}.footer`,{justifyContent:"space-between",children:()=>{r.Button(`${z}.footer.cancel`,{label:"common.back",icon:"@imgly/ChevronLeft",onClick:o}),r.Button(`${z}.footer.apply`,{label:`${D}.apply`,icon:"@imgly/MagicWand",color:"accent",isDisabled:u.value.length===0,onClick:async()=>{try{let d=u.value;if(!d)return;let p=l.block.findAllSelected(),g=l.block.duplicate(p[0]);p.forEach(b=>{l.block.setSelected(b,!1)}),l.block.setSelected(g,!0);let m=l.block.getParent(g);if(m==null)throw new Error("Parent not found");let h=1,v=l.block.getWidth(m),y=l.block.getHeight(m),S=.02*Math.min(v,y)*h;l.block.setPositionX(g,l.block.getPositionX(g)+S),l.block.setPositionY(g,l.block.getPositionY(g)+S);let k=await Promise.all(p.map(b=>E(b,l,{throwErrorIfSvg:!0})));await a({prompt:d,uris:k,exportFromBlockIds:p},{blockIds:[g]}),o(),s()}catch(d){console.error("Generation error:",d),e.ui.showNotification({type:"error",message:d.message||"Failed to combine images. Please try again.",duration:"medium"})}}})}})}else r.Button(`${z}.button`,{label:`${D}`,icon:"@imgly/ImageVariation",labelAlignment:"left",variant:"plain",onClick:o})}}),Or=Ru;var Fr="remixPage",Rr=`ly.img.${Fr}`,at=`ly.img.ai.quickAction.${Fr}`,Fu=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${at}`]:"Turn Page into Image"}}),{id:Rr,type:"quick",kind:"image",defaults:{confirmation:!1,lock:!1},label:`${at}`,description:"Convert the page into a single image",enable:({engine:r})=>{let i=r.block.findAllSelected();if(i.length!==1)return!1;let n=i[0];return r.block.getType(n)==="//ly.img.ubq/page"},scopes:["lifecycle/duplicate"],render:({builder:r,generate:i,engine:n,close:o})=>{r.Button(`${Rr}.button`,{label:`${at}`,icon:"@imgly/Sparkle",labelAlignment:"left",variant:"plain",onClick:async()=>{try{let[a]=n.block.findAllSelected(),l=await n.block.export(a),c=URL.createObjectURL(l),s=n.block.duplicate(a);n.block.getChildren(s).forEach(y=>{n.block.destroy(y)}),n.block.setSelected(a,!1);let u=n.block.getFrameWidth(a),d=n.block.getFrameHeight(a),p=n.block.getPositionX(a),g=n.block.getPositionY(a),m=n.block.createShape("rect"),h=n.block.create("graphic");n.block.setShape(h,m),n.block.appendChild(s,h),n.block.setWidth(h,u),n.block.setHeight(h,d),n.block.setPositionX(h,p),n.block.setPositionY(h,g);let v=n.block.createFill("image");n.block.setFill(h,v),n.block.setString(v,"fill/image/imageFileURI",c),n.block.setSelected(h,!0),n.scene.zoomToBlock(h),await i({prompt:"Follow instructions but don't add the instructions for the image",uri:c},{blockIds:[h]}),o()}catch(a){console.error("Generation error:",a),e.ui.showNotification({type:"error",message:a.message||"Failed to remix page. Please try again.",duration:"medium"})}}})}}),zr=Fu;var Br="remixPageWithPrompt",B=`ly.img.${Br}`,N=`ly.img.ai.quickAction.${Br}`,zu=({cesdk:e})=>(e.i18n.setTranslations({en:{[`${N}`]:"Remix Page...",[`${N}.prompt.inputLabel`]:"Remix Page Prompt",[`${N}.prompt.placeholder`]:"e.g. rearrange the layout to...",[`${N}.apply`]:"Remix"}}),{id:B,type:"quick",kind:"image",defaults:{confirmation:!1,lock:!1},label:`${N}`,description:"Remix the page with custom instructions",enable:({engine:r})=>{let i=r.block.findAllSelected();if(i.length!==1)return!1;let n=i[0];return r.block.getType(n)==="//ly.img.ubq/page"},scopes:["lifecycle/duplicate"],render:({builder:r,experimental:i,isExpanded:n,toggleExpand:o,generate:a,engine:l,state:c,close:s})=>{if(n){let u=c(`${B}.prompt`,"");r.TextArea(`${B}.prompt`,{inputLabel:`${N}.prompt.inputLabel`,placeholder:`${N}.prompt.placeholder`,...u}),r.Separator(`${B}.separator`),i.builder.ButtonRow(`${B}.footer`,{justifyContent:"space-between",children:()=>{r.Button(`${B}.footer.cancel`,{label:"common.back",icon:"@imgly/ChevronLeft",onClick:o}),r.Button(`${B}.footer.apply`,{label:`${N}.apply`,icon:"@imgly/MagicWand",color:"accent",isDisabled:u.value.length===0,onClick:async()=>{try{let d=u.value;if(!d)return;let[p]=l.block.findAllSelected(),g=await l.block.export(p),m=URL.createObjectURL(g),h=l.block.duplicate(p);l.block.getChildren(h).forEach(I=>{l.block.destroy(I)}),l.block.setSelected(p,!1);let v=l.block.getFrameWidth(p),y=l.block.getFrameHeight(p),S=l.block.getPositionX(p),k=l.block.getPositionY(p),b=l.block.createShape("rect"),f=l.block.create("graphic");l.block.setShape(f,b),l.block.appendChild(h,f),l.block.setWidth(f,v),l.block.setHeight(f,y),l.block.setPositionX(f,S),l.block.setPositionY(f,k);let w=l.block.createFill("image");l.block.setFill(f,w),l.block.setString(w,"fill/image/imageFileURI",m),l.block.setSelected(f,!0),l.scene.zoomToBlock(f),await a({prompt:d,uri:m},{blockIds:[f]}),o(),s()}catch(d){console.error("Generation error:",d),e.ui.showNotification({type:"error",message:d.message||"Failed to remix page. Please try again.",duration:"medium"})}}})}})}else r.Button(`${B}.button`,{label:`${N}`,icon:"@imgly/Sparkle",labelAlignment:"left",variant:"plain",onClick:o})}}),Ur=zu;var U="ly.img.ai.image-generation";function Bu(e){return{async initialize({cesdk:t}){if(t==null)return;zt(t,H,"0.2.1");let r=Qe.get(),i=r.register({type:"plugin",sceneMode:"Design",id:H,pluginId:H,label:"Generate Image",meta:{panelId:U},execute:()=>{t.ui.isPanelOpen(U)?t.ui.closePanel(U):t.ui.openPanel(U)}});t.ui.addIconSet(ir,nr),t.i18n.setTranslations({en:{[`panel.${U}`]:"Image Generation",[`${U}.dock.label`]:"AI Image"}}),Uu(e),r.register(Er({cesdk:t})),r.register($r({cesdk:t})),r.register(Pr({cesdk:t})),r.register(_r({cesdk:t})),r.register(Nr({cesdk:t})),r.register(Or({cesdk:t})),r.register(zr({cesdk:t})),r.register(Ur({cesdk:t}));let n=e.providers?.text2image??e.text2image,o=e.providers?.image2image??e.image2image,a=await Promise.all(ot(n).map(d=>d({cesdk:t}))),l=await Promise.all(ot(o).map(d=>d({cesdk:t})));if(!(a.length>0||l.length>0)){i();return}let s=await Jt("image",{fromText:a,fromImage:l},{cesdk:t},e),u=await rr({kind:"image",providerInitializationResults:s.providerInitializationResults,cesdk:t,engine:t.engine,debug:e.debug,dryRun:e.dryRun,defaultOrder:_e});s.history?.assetSourceId!=null,u.renderFunction!=null&&(t.ui.registerComponent("ly.img.ai.image.canvasMenu",u.renderFunction),t.ui.setCanvasMenuOrder(["ly.img.ai.image.canvasMenu"],{editMode:fe})),s.panel.builderRenderFunction!=null?(t.ui.registerPanel(U,s.panel.builderRenderFunction),Bt({cesdk:t,panelId:U})):i()}}}function Uu(e){e.debug&&(e.providers?.text2image!=null&&e.text2image!=null&&console.warn("[ImageGeneration]: Both `providers.text2image` and `text2image` configuration is provided. Since `text2image` is deprecated, only `providers.text2image` will be used."),e.providers?.image2image!=null&&e.image2image!=null&&console.warn("[ImageGeneration]: Both `providers.image2image` and `image2image` configuration is provided. Since `image2image` is deprecated, only `providers.image2image` will be used."))}var Vr=Bu;var Vu=e=>({name:H,version:"0.2.1",...Vr(e)}),fp=Vu;export{_e as DEFAULT_IMAGE_QUICK_ACTION_ORDER,fp as default};
78
81
  /*! Bundled license information:
79
82
 
80
83
  @imgly/plugin-ai-generation-web/dist/index.mjs:
@@ -95,5 +98,20 @@ var ct=class{constructor(e,t,i){this.assetStoreName="assets",this.blobStoreName=
95
98
  *)
96
99
  *)
97
100
  *)
101
+
102
+ @imgly/plugin-utils/dist/index.mjs:
103
+ (*! Bundled license information:
104
+
105
+ lodash-es/lodash.js:
106
+ (**
107
+ * @license
108
+ * Lodash (Custom Build) <https://lodash.com/>
109
+ * Build: `lodash modularize exports="es" -o ./`
110
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
111
+ * Released under MIT license <https://lodash.com/license>
112
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
113
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
114
+ *)
115
+ *)
98
116
  */
99
117
  //# sourceMappingURL=index.mjs.map