@imgly/plugin-ai-apps-web 0.1.7 → 0.1.8

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.mjs CHANGED
@@ -135,7 +135,7 @@ var Ul="ly.img.ai";function _t(e){return`${Ul}/${e}`}var Vl=typeof global=="obje
135
135
 
136
136
  </symbol>
137
137
  </svg>
138
- `,nm=tm,rm="@imgly/plugin-ai-image-generation-web",_="ly.img.ai/image-generation",In="ly.img.ai.image-generation.fromType";function im(e){return{async initialize({cesdk:t}){if(t==null)return;let r={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.ui.addIconSet(em,nm),t.setTranslations({en:{[`panel.${_}`]:"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}),i=await a?.({cesdk:t});function l(c){if(t!=null)return{success:{show:()=>{let d=t?.ui.isPanelOpen(_),g=t.ui.experimental.getGlobalStateValue(In,"fromText")===c;return!d||!g},message:"ly.img.ai.image-generation.success",action:{label:"ly.img.ai.image-generation.success.action",onClick:()=>{t.ui.experimental.setGlobalStateValue(In,c),t.ui.openPanel(_)}},duration:"long"}}}o!=null&&(o.output.notification=l("fromText")),i!=null&&(i.output.notification=l("fromImage"));let u=o!=null?await fi(o,{cesdk:t,engine:t.engine},r):void 0,s=i!=null?await fi(i,{cesdk:t,engine:t.engine},r):void 0;if(u?.renderBuilderFunctions?.panel==null&&s?.renderBuilderFunctions?.panel==null){r.debug&&console.log("No providers are initialized \u2013 doing nothing");return}if(u?.renderBuilderFunctions?.panel!=null&&s?.renderBuilderFunctions?.panel!=null)t.ui.registerPanel(_,c=>{let{builder:d,experimental:g}=c,f=g.global(In,"fromText");switch(d.Section(`${_}.fromType.section`,{children:()=>{d.ButtonGroup(`${_}.fromType.buttonGroup`,{inputLabel:"Input",children:()=>{d.Button(`${_}.fromType.buttonGroup.fromText`,{label:"Text",icon:f.value!=="fromText"&&o!=null&&g.global(Bt(o.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromText",onClick:()=>{f.setValue("fromText")}}),d.Button(`${_}.fromType.buttonGroup.fromImage`,{label:"Image",icon:f.value!=="fromImage"&&i!=null&&g.global(Bt(i.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromImage",onClick:()=>{f.setValue("fromImage")}})}})}}),f.value){case"fromText":{u?.renderBuilderFunctions?.panel?.(c);break}case"fromImage":{s?.renderBuilderFunctions?.panel?.(c);break}default:}});else{let c=u?.renderBuilderFunctions?.panel??s?.renderBuilderFunctions?.panel;if(c==null)return;t.ui.registerPanel(_,c),t.i18n.setTranslations({en:{[`${_}.dock.label`]:"AI Image"}}),Xp({cesdk:t,panelId:_})}}}}var om=im,am=e=>({name:rm,version:"0.1.7",...om(e)}),Bi=am;function ao(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),n=e;for(let a of r){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 it(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let n=ao(e,t.$ref),a={...it(e,n,r)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(a[o]=it(e,t[o],r));return a}if(Array.isArray(t))return t.map(n=>it(e,n,r));if(typeof t=="object"){let n={};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=it(e,t[a],r));return n}return t}function lm(e){return it(e,{...e})}function sm(e,t=!1){let r=i=>(t&&console.log(`OpenAPI Schema validation failed: ${i}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let n=e;if(!(typeof n.type=="string"||Array.isArray(n.enum)||typeof n.properties=="object"||typeof n.items=="object"||typeof n.allOf=="object"||typeof n.anyOf=="object"||typeof n.oneOf=="object"||typeof n.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let i=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!i.includes(n.type))return r(`Invalid type: ${n.type}. Must be one of ${i.join(", ")}`)}else if(Array.isArray(n.type)){for(let l of n.type)if(typeof l!="string"||!i.includes(l))return r(`Array of types contains invalid value: ${l}. Must be one of ${i.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof n.type}`)}if(n.items!==void 0&&(typeof n.items!="object"||n.items===null))return r(`Items must be an object, got ${n.items===null?"null":typeof n.items}`);if(n.properties!==void 0&&(typeof n.properties!="object"||n.properties===null))return r(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let a=["allOf","anyOf","oneOf"];for(let i of a)if(n[i]!==void 0){if(!Array.isArray(n[i]))return r(`${i} must be an array, got ${typeof n[i]}`);for(let l=0;l<n[i].length;l++){let u=n[i][l];if(typeof u!="object"||u===null)return r(`Item ${l} in ${i} must be an object, got ${u===null?"null":typeof u}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return r(`'not' must be an object, got ${n.not===null?"null":typeof n.not}`);if(n.additionalProperties!==void 0&&typeof n.additionalProperties!="boolean"&&(typeof n.additionalProperties!="object"||n.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${n.additionalProperties===null?"null":typeof n.additionalProperties}`);if(n.format!==void 0&&typeof n.format!="string")return r(`format must be a string, got ${typeof n.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let i of o)if(n[i]!==void 0&&typeof n[i]!="number")return r(`${i} must be a number, got ${typeof n[i]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return r(`minLength must be a non-negative number, got ${typeof n.minLength=="number"?n.minLength:typeof n.minLength}`);if(n.maxLength!==void 0&&(typeof n.maxLength!="number"||n.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof n.maxLength=="number"?n.maxLength:typeof n.maxLength}`);if(n.pattern!==void 0&&typeof n.pattern!="string")return r(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return r(`minItems must be a non-negative number, got ${typeof n.minItems=="number"?n.minItems:typeof n.minItems}`);if(n.maxItems!==void 0&&(typeof n.maxItems!="number"||n.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof n.maxItems=="number"?n.maxItems:typeof n.maxItems}`);if(n.uniqueItems!==void 0&&typeof n.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof n.minProperties=="number"?n.minProperties:typeof n.minProperties}`);if(n.maxProperties!==void 0&&(typeof n.maxProperties!="number"||n.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof n.maxProperties=="number"?n.maxProperties:typeof n.maxProperties}`);if(n.required!==void 0){if(!Array.isArray(n.required))return r(`required must be an array, got ${typeof n.required}`);for(let i=0;i<n.required.length;i++){let l=n.required[i];if(typeof l!="string")return r(`Item ${i} in required array must be a string, got ${typeof l}`)}}return!0}function um(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=[];return cm(e,t)??(Object.entries(e.properties).forEach(n=>{let a=n[0],o=n[1];r.push({id:a,schema:o})}),r)}function cm(e,t){if(t.orderExtensionKeyword==null)return;let r=[];if(typeof t.orderExtensionKeyword!="string"&&!Array.isArray(t.orderExtensionKeyword))throw new Error("orderExtensionKeyword must be a string or an array of strings");let n=typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword,a=n.find(i=>i in e);if(a==null)return;let o=e[a];if(o==null||Array.isArray(o)===!1)throw new Error(`Extension keyword ${a} must be an array of strings`);if([...new Set(o)].forEach(i=>{let l=e.properties?.[i];l!=null&&r.push({id:i,schema:l})}),r.length===0)throw new Error(`Could not find any properties with order extension keyword(s) ${n.join(", ")}`);return r}var lo=um,dm="ly.img.ai",On="ly.img.ai/temp";async function gm(e,t){return e.engine.asset.findAllSources().includes(On)||e.engine.asset.addLocalSource(On),e.engine.asset.apply(On,t)}function so(e){return`${dm}/${e}`}function pm(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 mm(){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 fm(e,t=0,r="image/jpeg",n=.8){return new Promise((a,o)=>{try{let i=document.createElement("video");i.crossOrigin="anonymous",i.style.display="none",i.addEventListener("loadedmetadata",()=>{i.currentTime=Math.min(t,i.duration),i.addEventListener("seeked",()=>{let l=document.createElement("canvas");l.width=i.videoWidth,l.height=i.videoHeight;let u=l.getContext("2d");if(!u){document.body.removeChild(i),o(new Error("Failed to create canvas context"));return}u.drawImage(i,0,0,l.width,l.height);try{let s=l.toDataURL(r,n);document.body.removeChild(i),a(s)}catch(s){document.body.removeChild(i),o(new Error(`Failed to create thumbnail: ${s instanceof Error?s.message:String(s)}`))}},{once:!0})}),i.addEventListener("error",()=>{document.body.removeChild(i),o(new Error(`Failed to load video from ${e}`))}),i.src=e,document.body.appendChild(i)}catch(i){o(i)}})}function uo(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 Qn(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 pe(e){return e instanceof Error&&e.name==="AbortError"}function co(e,t,r,n,a,o){let i=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null)return n.renderCustomProperty[t.id](e,t);switch(i){case"string":return t.schema.enum!=null?ym(e,t,r,n,a,o):po(e,t,r,n,a,o);case"boolean":return mo(e,t,r,n,a,o);case"number":case"integer":return fo(e,t,r,n,a,o);case"object":return go(e,t,r,n,a,o);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return bm(e,t,r,n,a,o);break}default:console.error(`Unsupported property type: ${i}`)}}function go(e,t,r,n,a,o){let i=lo(t.schema??{},n).reduce((l,u)=>{let s=co(e,u,r,n,a,o);return s!=null&&(l[u.id]=s()),l},{});return()=>({id:t.id,type:"object",value:i})}function po(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=l(s,t.schema.default??""),g=hm(t.schema),f=g?.component!=null&&g?.component==="TextArea"?"TextArea":"TextInput";return i[f](s,{inputLabel:c,placeholder:a.i18n?.prompt,...d}),()=>({id:t.id,type:"string",value:d.value})}function ym(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=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"]:{},g="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{},f=(t.schema.enum??[]).map(b=>({id:b,label:d[b]??uo(b),icon:g[b]})),v=t.schema.default!=null?f.find(b=>b.id===t.schema.default)??f[0]:f[0],w=l(s,v);return i.Select(s,{inputLabel:c,values:f,...w}),()=>({id:t.id,type:"string",value:w.value.id})}function mo(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=!!t.schema.default,g=l(s,d);return i.Checkbox(s,{inputLabel:c,...g}),()=>({id:t.id,type:"boolean",value:g.value})}function fo(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.minimum,g=t.schema.maximum,f=t.schema.default;f==null&&(d!=null?f=d:g!=null?f=g:f=0);let v=l(s,f);if(d!=null&&g!=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"]),i.Slider(s,{inputLabel:c,min:d,max:g,step:w,...v})}else i.NumberInput(s,{inputLabel:c,min:d,max:g,...v});return()=>({id:t.id,type:"integer",value:v.value})}function bm(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.anyOf??[],g=[],f={},v={};d.forEach((p,h)=>{let m=p.title??"common.custom",y=`${r.id}.${u}.anyOf[${h}]`,k="x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},C="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{};p.type==="string"?p.enum!=null?p.enum.forEach(M=>{g.push({id:M,label:k[M]??uo(M),icon:C[M]})}):(f[y]=()=>po(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="boolean"?(f[y]=()=>mo(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="integer"?(f[y]=()=>fo(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="array"||p.type==="object"&&(f[y]=()=>go(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]}))});let w=t.schema.default!=null?g.find(p=>p.id===t.schema.default)??g[0]:g[0],b=l(s,w);if(i.Select(s,{inputLabel:c,values:g,...b}),b.value.id in f){let p=f[b.value.id]();v[b.value.id]=p}return()=>{let p=v[b.value.id];return p!=null?{...p(),id:t.id}:{id:t.id,type:"string",value:b.value.id}}}function hm(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var vm=co,km="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",yo=km;function wm(e,t,r){switch(t){case"image":return Cm(e,r[t]);case"video":return Mm(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Cm(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:yo,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n}}}function Mm(e,t){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:yo,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}var xm=wm;async function Im(e,t,r,n){switch(t){case"image":{if(n.kind!=="image")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: image)`);return Am(e,r[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return Em(e,r[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Sm(e,r[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Am(e,t,r){let n=t.width,a=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:a},payload:{sourceSet:[{uri:r.url,width:n,height:a}]}}}async function Em(e,t,r){let n=t.width,a=t.height,o=await fm(r.url,0);return{id:e,label:t.label,meta:{uri:r.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:n,height:a}}}function Sm(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()}}}var Fi=Im;function bo(e){let t=e.filter(r=>!!r);return r=>async(n,a)=>{let o=[],i=s=>{o.push(s)},l=async(s,c,d)=>{if(s>=t.length)return r(c,d);let g=t[s],f=async(w,b)=>l(s+1,w,b),v={...d,addDisposer:i};return g(c,v,f)},u={...a,addDisposer:i};return{result:await l(0,n,u),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(c){console.error("Error in disposer:",c)}o.length=0}}}}function jm(){return async(e,t,r)=>{console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(e,null,2));let n,a=Date.now();try{return n=await r(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 ho=jm,Lm=class{constructor(e,t,r){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=r?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=r?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.dbVersion);r.onerror=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},r.onupgradeneeded=n=>{let 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"})},r.onsuccess=n=>{this.db=n.target.result,e()}})}close(){this.db&&(this.db.close(),this.db=null)}async findAssets(e){if(await this.initialize(),!this.db)throw new Error("Database not initialized");try{let t=(await this.getAllAssets("asc")).reduce((u,s)=>{let c=e.locale??"en",d="",g=[];s.label!=null&&typeof s.label=="object"&&s.label[c]&&(d=s.label[c]),s.tags!=null&&typeof s.tags=="object"&&s.tags[c]&&(g=s.tags[c]);let f={...s,label:d,tags:g};return this.filterAsset(f,e)&&u.push(f),u},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:r,perPage:n}=e,a=r*n,o=a+n,i=t.slice(a,o),l=o<t.length?r+1:void 0;return{assets:i,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 n=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(i=>n.add(i))});let a=[...n];e(a)},r.onerror=()=>{t(new Error(`Failed to get groups: ${r.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),r=t.objectStore(this.assetStoreName),n=new Set;ge(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let a={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.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 r=this.db.transaction(this.assetStoreName,"readwrite");r.objectStore(this.assetStoreName).delete(e),r.oncomplete=()=>{ge(t,n=>{this.removeBlob(n)}),this.engine.asset.assetSourceContentsChanged(this.id)},r.onerror=()=>{console.error(`Failed to remove asset: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async removeBlob(e){return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.blobStoreName,"readwrite");t.objectStore(this.blobStoreName).delete(e),t.onerror=()=>{console.error(`Failed to remove blob: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async getAllAssets(e="desc"){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let a=n.result;a.sort((o,i)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),u=i.meta?.insertedAt||i._insertedAt||Date.now();return e==="asc"?l-u:u-l}),t(a)},n.onerror=()=>{r(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async createBlobUrlFromStore(e){let t=await this.getBlob(e);return t!=null?URL.createObjectURL(t.blob):e}async storeBlobUrls(e){let t={};return await Promise.all(e.map(async r=>{let n=await(await fetch(r)).blob();t[r]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),n=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([a,o])=>{let i={id:a,blob:o};n.put(i)}),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 ge(e,n=>{r.add(n)}),await Promise.all([...r].map(async n=>{let a=await this.createBlobUrlFromStore(n);t[n]=a})),ge(e,n=>t[n]??n)}filterAsset(e,t){let{query:r,tags:n,groups:a,excludeGroups:o}=t;if(r&&r.trim()!==""){let i=r.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",u=e.tags?.map(s=>s.toLowerCase())??[];if(!i.every(s=>l.includes(s)||u.some(c=>c.includes(s))))return!1}if(n){let i=Array.isArray(n)?n:[n];if(i.length>0&&(!e.tags||!i.every(l=>e.tags?.includes(l))))return!1}return!(a&&a.length>0&&(!e.groups||!a.some(i=>e.groups?.includes(i)))||o&&o.length>0&&e.groups&&e.groups.some(i=>o.includes(i)))}sortAssets(e,t){let{sortingOrder:r,sortKey:n,sortActiveFirst:a}=t,o=[...e];return!r||r==="None"||(n?o.sort((i,l)=>{let u,s;return n==="id"?(u=i.id,s=l.id):(u=i.meta?.[n]??null,s=l.meta?.[n]??null),u==null?r==="Ascending"?-1:1:s==null?r==="Ascending"?1:-1:typeof u=="string"&&typeof s=="string"?r==="Ascending"?u.localeCompare(s):s.localeCompare(u):r==="Ascending"?u<s?-1:u>s?1:0:u>s?-1:u<s?1:0}):r==="Descending"&&o.reverse(),a&&o.sort((i,l)=>i.active&&!l.active?-1:!i.active&&l.active?1:0)),o}};function ge(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let a=r?`${r}[${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]=ge(e[n],t,a)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let a=e[n],o=r?`${r}.${n}`:n;if(typeof a=="string"&&a.startsWith("blob:")){let i=t(a,o);typeof i=="string"&&(e[n]=i)}else e[n]=ge(a,t,o)}return e}var Tm=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)}},vo=Tm,$m=typeof global=="object"&&global&&global.Object===Object&&global,ko=$m,Nm=typeof self=="object"&&self&&self.Object===Object&&self,Om=ko||Nm||Function("return this")(),V=Om,Dm=V.Symbol,me=Dm,wo=Object.prototype,_m=wo.hasOwnProperty,Pm=wo.toString,nt=me?me.toStringTag:void 0;function zm(e){var t=_m.call(e,nt),r=e[nt];try{e[nt]=void 0;var n=!0}catch{}var a=Pm.call(e);return n&&(t?e[nt]=r:delete e[nt]),a}var Um=zm,Vm=Object.prototype,Bm=Vm.toString;function Fm(e){return Bm.call(e)}var Gm=Fm,Rm="[object Null]",qm="[object Undefined]",Gi=me?me.toStringTag:void 0;function Qm(e){return e==null?e===void 0?qm:Rm:Gi&&Gi in Object(e)?Um(e):Gm(e)}var ut=Qm;function Hm(e){return e!=null&&typeof e=="object"}var Hn=Hm,rC=Array.isArray;function Ym(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Co=Ym,Zm="[object AsyncFunction]",Wm="[object Function]",Km="[object GeneratorFunction]",Jm="[object Proxy]";function Xm(e){if(!Co(e))return!1;var t=ut(e);return t==Wm||t==Km||t==Zm||t==Jm}var e2=Xm,t2=V["__core-js_shared__"],Dn=t2,Ri=function(){var e=/[^.]+$/.exec(Dn&&Dn.keys&&Dn.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function n2(e){return!!Ri&&Ri in e}var r2=n2,i2=Function.prototype,o2=i2.toString;function a2(e){if(e!=null){try{return o2.call(e)}catch{}try{return e+""}catch{}}return""}var Q=a2,l2=/[\\^$.*+?()[\]{}|]/g,s2=/^\[object .+?Constructor\]$/,u2=Function.prototype,c2=Object.prototype,d2=u2.toString,g2=c2.hasOwnProperty,p2=RegExp("^"+d2.call(g2).replace(l2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function m2(e){if(!Co(e)||r2(e))return!1;var t=e2(e)?p2:s2;return t.test(Q(e))}var f2=m2;function y2(e,t){return e?.[t]}var b2=y2;function h2(e,t){var r=b2(e,t);return f2(r)?r:void 0}var fe=h2,v2=fe(V,"WeakMap"),Vn=v2;function k2(e,t){return e===t||e!==e&&t!==t}var w2=k2,C2=9007199254740991;function M2(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=C2}var x2=M2,iC=Object.prototype,I2="[object Arguments]";function A2(e){return Hn(e)&&ut(e)==I2}var qi=A2,Mo=Object.prototype,E2=Mo.hasOwnProperty,S2=Mo.propertyIsEnumerable,oC=qi(function(){return arguments}())?qi:function(e){return Hn(e)&&E2.call(e,"callee")&&!S2.call(e,"callee")},xo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qi=xo&&typeof module=="object"&&module&&!module.nodeType&&module,j2=Qi&&Qi.exports===xo,Hi=j2?V.Buffer:void 0,aC=Hi?Hi.isBuffer:void 0,L2="[object Arguments]",T2="[object Array]",$2="[object Boolean]",N2="[object Date]",O2="[object Error]",D2="[object Function]",_2="[object Map]",P2="[object Number]",z2="[object Object]",U2="[object RegExp]",V2="[object Set]",B2="[object String]",F2="[object WeakMap]",G2="[object ArrayBuffer]",R2="[object DataView]",q2="[object Float32Array]",Q2="[object Float64Array]",H2="[object Int8Array]",Y2="[object Int16Array]",Z2="[object Int32Array]",W2="[object Uint8Array]",K2="[object Uint8ClampedArray]",J2="[object Uint16Array]",X2="[object Uint32Array]",S={};S[q2]=S[Q2]=S[H2]=S[Y2]=S[Z2]=S[W2]=S[K2]=S[J2]=S[X2]=!0;S[L2]=S[T2]=S[G2]=S[$2]=S[R2]=S[N2]=S[O2]=S[D2]=S[_2]=S[P2]=S[z2]=S[U2]=S[V2]=S[B2]=S[F2]=!1;function ef(e){return Hn(e)&&x2(e.length)&&!!S[ut(e)]}var tf=ef;function nf(e){return function(t){return e(t)}}var rf=nf,Io=typeof exports=="object"&&exports&&!exports.nodeType&&exports,at=Io&&typeof module=="object"&&module&&!module.nodeType&&module,of=at&&at.exports===Io,_n=of&&ko.process,af=function(){try{var e=at&&at.require&&at.require("util").types;return e||_n&&_n.binding&&_n.binding("util")}catch{}}(),Yi=af,Zi=Yi&&Yi.isTypedArray,lC=Zi?rf(Zi):tf,lf=Object.prototype,sC=lf.hasOwnProperty;function sf(e,t){return function(r){return e(t(r))}}var uf=sf,uC=uf(Object.keys,Object),cf=Object.prototype,cC=cf.hasOwnProperty,df=fe(Object,"create"),lt=df;function gf(){this.__data__=lt?lt(null):{},this.size=0}var pf=gf;function mf(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var ff=mf,yf="__lodash_hash_undefined__",bf=Object.prototype,hf=bf.hasOwnProperty;function vf(e){var t=this.__data__;if(lt){var r=t[e];return r===yf?void 0:r}return hf.call(t,e)?t[e]:void 0}var kf=vf,wf=Object.prototype,Cf=wf.hasOwnProperty;function Mf(e){var t=this.__data__;return lt?t[e]!==void 0:Cf.call(t,e)}var xf=Mf,If="__lodash_hash_undefined__";function Af(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=lt&&t===void 0?If:t,this}var Ef=Af;function ye(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ye.prototype.clear=pf;ye.prototype.delete=ff;ye.prototype.get=kf;ye.prototype.has=xf;ye.prototype.set=Ef;var Wi=ye;function Sf(){this.__data__=[],this.size=0}var jf=Sf;function Lf(e,t){for(var r=e.length;r--;)if(w2(e[r][0],t))return r;return-1}var Ht=Lf,Tf=Array.prototype,$f=Tf.splice;function Nf(e){var t=this.__data__,r=Ht(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():$f.call(t,r,1),--this.size,!0}var Of=Nf;function Df(e){var t=this.__data__,r=Ht(t,e);return r<0?void 0:t[r][1]}var _f=Df;function Pf(e){return Ht(this.__data__,e)>-1}var zf=Pf;function Uf(e,t){var r=this.__data__,n=Ht(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Vf=Uf;function be(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}be.prototype.clear=jf;be.prototype.delete=Of;be.prototype.get=_f;be.prototype.has=zf;be.prototype.set=Vf;var Yt=be,Bf=fe(V,"Map"),st=Bf;function Ff(){this.size=0,this.__data__={hash:new Wi,map:new(st||Yt),string:new Wi}}var Gf=Ff;function Rf(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var qf=Rf;function Qf(e,t){var r=e.__data__;return qf(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Zt=Qf;function Hf(e){var t=Zt(this,e).delete(e);return this.size-=t?1:0,t}var Yf=Hf;function Zf(e){return Zt(this,e).get(e)}var Wf=Zf;function Kf(e){return Zt(this,e).has(e)}var Jf=Kf;function Xf(e,t){var r=Zt(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var e0=Xf;function he(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}he.prototype.clear=Gf;he.prototype.delete=Yf;he.prototype.get=Wf;he.prototype.has=Jf;he.prototype.set=e0;var Ao=he;function t0(){this.__data__=new Yt,this.size=0}var n0=t0;function r0(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var i0=r0;function o0(e){return this.__data__.get(e)}var a0=o0;function l0(e){return this.__data__.has(e)}var s0=l0,u0=200;function c0(e,t){var r=this.__data__;if(r instanceof Yt){var n=r.__data__;if(!st||n.length<u0-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Ao(n)}return r.set(e,t),this.size=r.size,this}var d0=c0;function ct(e){var t=this.__data__=new Yt(e);this.size=t.size}ct.prototype.clear=n0;ct.prototype.delete=i0;ct.prototype.get=a0;ct.prototype.has=s0;ct.prototype.set=d0;var g0=Object.prototype,dC=g0.propertyIsEnumerable,p0=fe(V,"DataView"),Bn=p0,m0=fe(V,"Promise"),Fn=m0,f0=fe(V,"Set"),Gn=f0,Ki="[object Map]",y0="[object Object]",Ji="[object Promise]",Xi="[object Set]",eo="[object WeakMap]",to="[object DataView]",b0=Q(Bn),h0=Q(st),v0=Q(Fn),k0=Q(Gn),w0=Q(Vn),de=ut;(Bn&&de(new Bn(new ArrayBuffer(1)))!=to||st&&de(new st)!=Ki||Fn&&de(Fn.resolve())!=Ji||Gn&&de(new Gn)!=Xi||Vn&&de(new Vn)!=eo)&&(de=function(e){var t=ut(e),r=t==y0?e.constructor:void 0,n=r?Q(r):"";if(n)switch(n){case b0:return to;case h0:return Ki;case v0:return Ji;case k0:return Xi;case w0:return eo}return t});var gC=V.Uint8Array,C0="__lodash_hash_undefined__";function M0(e){return this.__data__.set(e,C0),this}var x0=M0;function I0(e){return this.__data__.has(e)}var A0=I0;function Rn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Ao;++t<r;)this.add(e[t])}Rn.prototype.add=Rn.prototype.push=x0;Rn.prototype.has=A0;var no=me?me.prototype:void 0,pC=no?no.valueOf:void 0,E0=Object.prototype,mC=E0.hasOwnProperty,S0=Object.prototype,fC=S0.hasOwnProperty,yC=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),bC=new RegExp(/[A-Fa-f0-9]{1}/,"g"),hC=new RegExp(/[A-Fa-f0-9]{2}/,"g");function j0(e){return{"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg"}[e]??"png"}async function Eo(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),a=t.editor.getBufferData(e,0,n),o=new Blob([a],{type:r});return URL.createObjectURL(o)}else return e}async function qn(e,t){let r=await Eo(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=r})}async function L0(e,t,r){let n,a=t.block.getFill(e),o=t.block.getSourceSet(a,"fill/image/sourceSet"),[i]=o;if(i==null){if(n=t.block.getString(a,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=i.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return Eo(n,t)}function T0(e){return async(t,r)=>(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(t,void 0,2)),await D0(2e3),await $0(t,e,r))}async function $0(e,t,r){switch(t.kind){case"image":return N0(e,t,r);case"video":return O0(e,t,r);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function N0(e,t,{engine:r}){let n,a,o=e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"?e.prompt:"AI Generated Image",i=o.match(/(\d+)x(\d+)/);if(i!=null)n=parseInt(i[1],10),a=parseInt(i[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,u=await L0(l,r),s=await qn(u,r);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(`
138
+ `,nm=tm,rm="@imgly/plugin-ai-image-generation-web",_="ly.img.ai/image-generation",In="ly.img.ai.image-generation.fromType";function im(e){return{async initialize({cesdk:t}){if(t==null)return;let r={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.ui.addIconSet(em,nm),t.setTranslations({en:{[`panel.${_}`]:"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}),i=await a?.({cesdk:t});function l(c){if(t!=null)return{success:{show:()=>{let d=t?.ui.isPanelOpen(_),g=t.ui.experimental.getGlobalStateValue(In,"fromText")===c;return!d||!g},message:"ly.img.ai.image-generation.success",action:{label:"ly.img.ai.image-generation.success.action",onClick:()=>{t.ui.experimental.setGlobalStateValue(In,c),t.ui.openPanel(_)}},duration:"long"}}}o!=null&&(o.output.notification=l("fromText")),i!=null&&(i.output.notification=l("fromImage"));let u=o!=null?await fi(o,{cesdk:t,engine:t.engine},r):void 0,s=i!=null?await fi(i,{cesdk:t,engine:t.engine},r):void 0;if(u?.renderBuilderFunctions?.panel==null&&s?.renderBuilderFunctions?.panel==null){r.debug&&console.log("No providers are initialized \u2013 doing nothing");return}if(u?.renderBuilderFunctions?.panel!=null&&s?.renderBuilderFunctions?.panel!=null)t.ui.registerPanel(_,c=>{let{builder:d,experimental:g}=c,f=g.global(In,"fromText");switch(d.Section(`${_}.fromType.section`,{children:()=>{d.ButtonGroup(`${_}.fromType.buttonGroup`,{inputLabel:"Input",children:()=>{d.Button(`${_}.fromType.buttonGroup.fromText`,{label:"Text",icon:f.value!=="fromText"&&o!=null&&g.global(Bt(o.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromText",onClick:()=>{f.setValue("fromText")}}),d.Button(`${_}.fromType.buttonGroup.fromImage`,{label:"Image",icon:f.value!=="fromImage"&&i!=null&&g.global(Bt(i.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromImage",onClick:()=>{f.setValue("fromImage")}})}})}}),f.value){case"fromText":{u?.renderBuilderFunctions?.panel?.(c);break}case"fromImage":{s?.renderBuilderFunctions?.panel?.(c);break}default:}});else{let c=u?.renderBuilderFunctions?.panel??s?.renderBuilderFunctions?.panel;if(c==null)return;t.ui.registerPanel(_,c),t.i18n.setTranslations({en:{[`${_}.dock.label`]:"AI Image"}}),Xp({cesdk:t,panelId:_})}}}}var om=im,am=e=>({name:rm,version:"0.1.8",...om(e)}),Bi=am;function ao(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),n=e;for(let a of r){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 it(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let n=ao(e,t.$ref),a={...it(e,n,r)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(a[o]=it(e,t[o],r));return a}if(Array.isArray(t))return t.map(n=>it(e,n,r));if(typeof t=="object"){let n={};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=it(e,t[a],r));return n}return t}function lm(e){return it(e,{...e})}function sm(e,t=!1){let r=i=>(t&&console.log(`OpenAPI Schema validation failed: ${i}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let n=e;if(!(typeof n.type=="string"||Array.isArray(n.enum)||typeof n.properties=="object"||typeof n.items=="object"||typeof n.allOf=="object"||typeof n.anyOf=="object"||typeof n.oneOf=="object"||typeof n.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let i=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!i.includes(n.type))return r(`Invalid type: ${n.type}. Must be one of ${i.join(", ")}`)}else if(Array.isArray(n.type)){for(let l of n.type)if(typeof l!="string"||!i.includes(l))return r(`Array of types contains invalid value: ${l}. Must be one of ${i.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof n.type}`)}if(n.items!==void 0&&(typeof n.items!="object"||n.items===null))return r(`Items must be an object, got ${n.items===null?"null":typeof n.items}`);if(n.properties!==void 0&&(typeof n.properties!="object"||n.properties===null))return r(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let a=["allOf","anyOf","oneOf"];for(let i of a)if(n[i]!==void 0){if(!Array.isArray(n[i]))return r(`${i} must be an array, got ${typeof n[i]}`);for(let l=0;l<n[i].length;l++){let u=n[i][l];if(typeof u!="object"||u===null)return r(`Item ${l} in ${i} must be an object, got ${u===null?"null":typeof u}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return r(`'not' must be an object, got ${n.not===null?"null":typeof n.not}`);if(n.additionalProperties!==void 0&&typeof n.additionalProperties!="boolean"&&(typeof n.additionalProperties!="object"||n.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${n.additionalProperties===null?"null":typeof n.additionalProperties}`);if(n.format!==void 0&&typeof n.format!="string")return r(`format must be a string, got ${typeof n.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let i of o)if(n[i]!==void 0&&typeof n[i]!="number")return r(`${i} must be a number, got ${typeof n[i]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return r(`minLength must be a non-negative number, got ${typeof n.minLength=="number"?n.minLength:typeof n.minLength}`);if(n.maxLength!==void 0&&(typeof n.maxLength!="number"||n.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof n.maxLength=="number"?n.maxLength:typeof n.maxLength}`);if(n.pattern!==void 0&&typeof n.pattern!="string")return r(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return r(`minItems must be a non-negative number, got ${typeof n.minItems=="number"?n.minItems:typeof n.minItems}`);if(n.maxItems!==void 0&&(typeof n.maxItems!="number"||n.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof n.maxItems=="number"?n.maxItems:typeof n.maxItems}`);if(n.uniqueItems!==void 0&&typeof n.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof n.minProperties=="number"?n.minProperties:typeof n.minProperties}`);if(n.maxProperties!==void 0&&(typeof n.maxProperties!="number"||n.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof n.maxProperties=="number"?n.maxProperties:typeof n.maxProperties}`);if(n.required!==void 0){if(!Array.isArray(n.required))return r(`required must be an array, got ${typeof n.required}`);for(let i=0;i<n.required.length;i++){let l=n.required[i];if(typeof l!="string")return r(`Item ${i} in required array must be a string, got ${typeof l}`)}}return!0}function um(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=[];return cm(e,t)??(Object.entries(e.properties).forEach(n=>{let a=n[0],o=n[1];r.push({id:a,schema:o})}),r)}function cm(e,t){if(t.orderExtensionKeyword==null)return;let r=[];if(typeof t.orderExtensionKeyword!="string"&&!Array.isArray(t.orderExtensionKeyword))throw new Error("orderExtensionKeyword must be a string or an array of strings");let n=typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword,a=n.find(i=>i in e);if(a==null)return;let o=e[a];if(o==null||Array.isArray(o)===!1)throw new Error(`Extension keyword ${a} must be an array of strings`);if([...new Set(o)].forEach(i=>{let l=e.properties?.[i];l!=null&&r.push({id:i,schema:l})}),r.length===0)throw new Error(`Could not find any properties with order extension keyword(s) ${n.join(", ")}`);return r}var lo=um,dm="ly.img.ai",On="ly.img.ai/temp";async function gm(e,t){return e.engine.asset.findAllSources().includes(On)||e.engine.asset.addLocalSource(On),e.engine.asset.apply(On,t)}function so(e){return`${dm}/${e}`}function pm(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 mm(){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 fm(e,t=0,r="image/jpeg",n=.8){return new Promise((a,o)=>{try{let i=document.createElement("video");i.crossOrigin="anonymous",i.style.display="none",i.addEventListener("loadedmetadata",()=>{i.currentTime=Math.min(t,i.duration),i.addEventListener("seeked",()=>{let l=document.createElement("canvas");l.width=i.videoWidth,l.height=i.videoHeight;let u=l.getContext("2d");if(!u){document.body.removeChild(i),o(new Error("Failed to create canvas context"));return}u.drawImage(i,0,0,l.width,l.height);try{let s=l.toDataURL(r,n);document.body.removeChild(i),a(s)}catch(s){document.body.removeChild(i),o(new Error(`Failed to create thumbnail: ${s instanceof Error?s.message:String(s)}`))}},{once:!0})}),i.addEventListener("error",()=>{document.body.removeChild(i),o(new Error(`Failed to load video from ${e}`))}),i.src=e,document.body.appendChild(i)}catch(i){o(i)}})}function uo(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 Qn(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 pe(e){return e instanceof Error&&e.name==="AbortError"}function co(e,t,r,n,a,o){let i=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null)return n.renderCustomProperty[t.id](e,t);switch(i){case"string":return t.schema.enum!=null?ym(e,t,r,n,a,o):po(e,t,r,n,a,o);case"boolean":return mo(e,t,r,n,a,o);case"number":case"integer":return fo(e,t,r,n,a,o);case"object":return go(e,t,r,n,a,o);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return bm(e,t,r,n,a,o);break}default:console.error(`Unsupported property type: ${i}`)}}function go(e,t,r,n,a,o){let i=lo(t.schema??{},n).reduce((l,u)=>{let s=co(e,u,r,n,a,o);return s!=null&&(l[u.id]=s()),l},{});return()=>({id:t.id,type:"object",value:i})}function po(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=l(s,t.schema.default??""),g=hm(t.schema),f=g?.component!=null&&g?.component==="TextArea"?"TextArea":"TextInput";return i[f](s,{inputLabel:c,placeholder:a.i18n?.prompt,...d}),()=>({id:t.id,type:"string",value:d.value})}function ym(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=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"]:{},g="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{},f=(t.schema.enum??[]).map(b=>({id:b,label:d[b]??uo(b),icon:g[b]})),v=t.schema.default!=null?f.find(b=>b.id===t.schema.default)??f[0]:f[0],w=l(s,v);return i.Select(s,{inputLabel:c,values:f,...w}),()=>({id:t.id,type:"string",value:w.value.id})}function mo(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=!!t.schema.default,g=l(s,d);return i.Checkbox(s,{inputLabel:c,...g}),()=>({id:t.id,type:"boolean",value:g.value})}function fo(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.minimum,g=t.schema.maximum,f=t.schema.default;f==null&&(d!=null?f=d:g!=null?f=g:f=0);let v=l(s,f);if(d!=null&&g!=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"]),i.Slider(s,{inputLabel:c,min:d,max:g,step:w,...v})}else i.NumberInput(s,{inputLabel:c,min:d,max:g,...v});return()=>({id:t.id,type:"integer",value:v.value})}function bm(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.anyOf??[],g=[],f={},v={};d.forEach((p,h)=>{let m=p.title??"common.custom",y=`${r.id}.${u}.anyOf[${h}]`,k="x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},C="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{};p.type==="string"?p.enum!=null?p.enum.forEach(M=>{g.push({id:M,label:k[M]??uo(M),icon:C[M]})}):(f[y]=()=>po(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="boolean"?(f[y]=()=>mo(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="integer"?(f[y]=()=>fo(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="array"||p.type==="object"&&(f[y]=()=>go(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]}))});let w=t.schema.default!=null?g.find(p=>p.id===t.schema.default)??g[0]:g[0],b=l(s,w);if(i.Select(s,{inputLabel:c,values:g,...b}),b.value.id in f){let p=f[b.value.id]();v[b.value.id]=p}return()=>{let p=v[b.value.id];return p!=null?{...p(),id:t.id}:{id:t.id,type:"string",value:b.value.id}}}function hm(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var vm=co,km="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",yo=km;function wm(e,t,r){switch(t){case"image":return Cm(e,r[t]);case"video":return Mm(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Cm(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:yo,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n}}}function Mm(e,t){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:yo,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}var xm=wm;async function Im(e,t,r,n){switch(t){case"image":{if(n.kind!=="image")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: image)`);return Am(e,r[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return Em(e,r[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Sm(e,r[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Am(e,t,r){let n=t.width,a=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:a},payload:{sourceSet:[{uri:r.url,width:n,height:a}]}}}async function Em(e,t,r){let n=t.width,a=t.height,o=await fm(r.url,0);return{id:e,label:t.label,meta:{uri:r.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:n,height:a}}}function Sm(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()}}}var Fi=Im;function bo(e){let t=e.filter(r=>!!r);return r=>async(n,a)=>{let o=[],i=s=>{o.push(s)},l=async(s,c,d)=>{if(s>=t.length)return r(c,d);let g=t[s],f=async(w,b)=>l(s+1,w,b),v={...d,addDisposer:i};return g(c,v,f)},u={...a,addDisposer:i};return{result:await l(0,n,u),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(c){console.error("Error in disposer:",c)}o.length=0}}}}function jm(){return async(e,t,r)=>{console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(e,null,2));let n,a=Date.now();try{return n=await r(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 ho=jm,Lm=class{constructor(e,t,r){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=r?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=r?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.dbVersion);r.onerror=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},r.onupgradeneeded=n=>{let 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"})},r.onsuccess=n=>{this.db=n.target.result,e()}})}close(){this.db&&(this.db.close(),this.db=null)}async findAssets(e){if(await this.initialize(),!this.db)throw new Error("Database not initialized");try{let t=(await this.getAllAssets("asc")).reduce((u,s)=>{let c=e.locale??"en",d="",g=[];s.label!=null&&typeof s.label=="object"&&s.label[c]&&(d=s.label[c]),s.tags!=null&&typeof s.tags=="object"&&s.tags[c]&&(g=s.tags[c]);let f={...s,label:d,tags:g};return this.filterAsset(f,e)&&u.push(f),u},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:r,perPage:n}=e,a=r*n,o=a+n,i=t.slice(a,o),l=o<t.length?r+1:void 0;return{assets:i,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 n=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(i=>n.add(i))});let a=[...n];e(a)},r.onerror=()=>{t(new Error(`Failed to get groups: ${r.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),r=t.objectStore(this.assetStoreName),n=new Set;ge(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let a={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.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 r=this.db.transaction(this.assetStoreName,"readwrite");r.objectStore(this.assetStoreName).delete(e),r.oncomplete=()=>{ge(t,n=>{this.removeBlob(n)}),this.engine.asset.assetSourceContentsChanged(this.id)},r.onerror=()=>{console.error(`Failed to remove asset: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async removeBlob(e){return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.blobStoreName,"readwrite");t.objectStore(this.blobStoreName).delete(e),t.onerror=()=>{console.error(`Failed to remove blob: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async getAllAssets(e="desc"){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let a=n.result;a.sort((o,i)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),u=i.meta?.insertedAt||i._insertedAt||Date.now();return e==="asc"?l-u:u-l}),t(a)},n.onerror=()=>{r(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async createBlobUrlFromStore(e){let t=await this.getBlob(e);return t!=null?URL.createObjectURL(t.blob):e}async storeBlobUrls(e){let t={};return await Promise.all(e.map(async r=>{let n=await(await fetch(r)).blob();t[r]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),n=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([a,o])=>{let i={id:a,blob:o};n.put(i)}),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 ge(e,n=>{r.add(n)}),await Promise.all([...r].map(async n=>{let a=await this.createBlobUrlFromStore(n);t[n]=a})),ge(e,n=>t[n]??n)}filterAsset(e,t){let{query:r,tags:n,groups:a,excludeGroups:o}=t;if(r&&r.trim()!==""){let i=r.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",u=e.tags?.map(s=>s.toLowerCase())??[];if(!i.every(s=>l.includes(s)||u.some(c=>c.includes(s))))return!1}if(n){let i=Array.isArray(n)?n:[n];if(i.length>0&&(!e.tags||!i.every(l=>e.tags?.includes(l))))return!1}return!(a&&a.length>0&&(!e.groups||!a.some(i=>e.groups?.includes(i)))||o&&o.length>0&&e.groups&&e.groups.some(i=>o.includes(i)))}sortAssets(e,t){let{sortingOrder:r,sortKey:n,sortActiveFirst:a}=t,o=[...e];return!r||r==="None"||(n?o.sort((i,l)=>{let u,s;return n==="id"?(u=i.id,s=l.id):(u=i.meta?.[n]??null,s=l.meta?.[n]??null),u==null?r==="Ascending"?-1:1:s==null?r==="Ascending"?1:-1:typeof u=="string"&&typeof s=="string"?r==="Ascending"?u.localeCompare(s):s.localeCompare(u):r==="Ascending"?u<s?-1:u>s?1:0:u>s?-1:u<s?1:0}):r==="Descending"&&o.reverse(),a&&o.sort((i,l)=>i.active&&!l.active?-1:!i.active&&l.active?1:0)),o}};function ge(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let a=r?`${r}[${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]=ge(e[n],t,a)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let a=e[n],o=r?`${r}.${n}`:n;if(typeof a=="string"&&a.startsWith("blob:")){let i=t(a,o);typeof i=="string"&&(e[n]=i)}else e[n]=ge(a,t,o)}return e}var Tm=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)}},vo=Tm,$m=typeof global=="object"&&global&&global.Object===Object&&global,ko=$m,Nm=typeof self=="object"&&self&&self.Object===Object&&self,Om=ko||Nm||Function("return this")(),V=Om,Dm=V.Symbol,me=Dm,wo=Object.prototype,_m=wo.hasOwnProperty,Pm=wo.toString,nt=me?me.toStringTag:void 0;function zm(e){var t=_m.call(e,nt),r=e[nt];try{e[nt]=void 0;var n=!0}catch{}var a=Pm.call(e);return n&&(t?e[nt]=r:delete e[nt]),a}var Um=zm,Vm=Object.prototype,Bm=Vm.toString;function Fm(e){return Bm.call(e)}var Gm=Fm,Rm="[object Null]",qm="[object Undefined]",Gi=me?me.toStringTag:void 0;function Qm(e){return e==null?e===void 0?qm:Rm:Gi&&Gi in Object(e)?Um(e):Gm(e)}var ut=Qm;function Hm(e){return e!=null&&typeof e=="object"}var Hn=Hm,rC=Array.isArray;function Ym(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Co=Ym,Zm="[object AsyncFunction]",Wm="[object Function]",Km="[object GeneratorFunction]",Jm="[object Proxy]";function Xm(e){if(!Co(e))return!1;var t=ut(e);return t==Wm||t==Km||t==Zm||t==Jm}var e2=Xm,t2=V["__core-js_shared__"],Dn=t2,Ri=function(){var e=/[^.]+$/.exec(Dn&&Dn.keys&&Dn.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function n2(e){return!!Ri&&Ri in e}var r2=n2,i2=Function.prototype,o2=i2.toString;function a2(e){if(e!=null){try{return o2.call(e)}catch{}try{return e+""}catch{}}return""}var Q=a2,l2=/[\\^$.*+?()[\]{}|]/g,s2=/^\[object .+?Constructor\]$/,u2=Function.prototype,c2=Object.prototype,d2=u2.toString,g2=c2.hasOwnProperty,p2=RegExp("^"+d2.call(g2).replace(l2,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function m2(e){if(!Co(e)||r2(e))return!1;var t=e2(e)?p2:s2;return t.test(Q(e))}var f2=m2;function y2(e,t){return e?.[t]}var b2=y2;function h2(e,t){var r=b2(e,t);return f2(r)?r:void 0}var fe=h2,v2=fe(V,"WeakMap"),Vn=v2;function k2(e,t){return e===t||e!==e&&t!==t}var w2=k2,C2=9007199254740991;function M2(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=C2}var x2=M2,iC=Object.prototype,I2="[object Arguments]";function A2(e){return Hn(e)&&ut(e)==I2}var qi=A2,Mo=Object.prototype,E2=Mo.hasOwnProperty,S2=Mo.propertyIsEnumerable,oC=qi(function(){return arguments}())?qi:function(e){return Hn(e)&&E2.call(e,"callee")&&!S2.call(e,"callee")},xo=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qi=xo&&typeof module=="object"&&module&&!module.nodeType&&module,j2=Qi&&Qi.exports===xo,Hi=j2?V.Buffer:void 0,aC=Hi?Hi.isBuffer:void 0,L2="[object Arguments]",T2="[object Array]",$2="[object Boolean]",N2="[object Date]",O2="[object Error]",D2="[object Function]",_2="[object Map]",P2="[object Number]",z2="[object Object]",U2="[object RegExp]",V2="[object Set]",B2="[object String]",F2="[object WeakMap]",G2="[object ArrayBuffer]",R2="[object DataView]",q2="[object Float32Array]",Q2="[object Float64Array]",H2="[object Int8Array]",Y2="[object Int16Array]",Z2="[object Int32Array]",W2="[object Uint8Array]",K2="[object Uint8ClampedArray]",J2="[object Uint16Array]",X2="[object Uint32Array]",S={};S[q2]=S[Q2]=S[H2]=S[Y2]=S[Z2]=S[W2]=S[K2]=S[J2]=S[X2]=!0;S[L2]=S[T2]=S[G2]=S[$2]=S[R2]=S[N2]=S[O2]=S[D2]=S[_2]=S[P2]=S[z2]=S[U2]=S[V2]=S[B2]=S[F2]=!1;function ef(e){return Hn(e)&&x2(e.length)&&!!S[ut(e)]}var tf=ef;function nf(e){return function(t){return e(t)}}var rf=nf,Io=typeof exports=="object"&&exports&&!exports.nodeType&&exports,at=Io&&typeof module=="object"&&module&&!module.nodeType&&module,of=at&&at.exports===Io,_n=of&&ko.process,af=function(){try{var e=at&&at.require&&at.require("util").types;return e||_n&&_n.binding&&_n.binding("util")}catch{}}(),Yi=af,Zi=Yi&&Yi.isTypedArray,lC=Zi?rf(Zi):tf,lf=Object.prototype,sC=lf.hasOwnProperty;function sf(e,t){return function(r){return e(t(r))}}var uf=sf,uC=uf(Object.keys,Object),cf=Object.prototype,cC=cf.hasOwnProperty,df=fe(Object,"create"),lt=df;function gf(){this.__data__=lt?lt(null):{},this.size=0}var pf=gf;function mf(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var ff=mf,yf="__lodash_hash_undefined__",bf=Object.prototype,hf=bf.hasOwnProperty;function vf(e){var t=this.__data__;if(lt){var r=t[e];return r===yf?void 0:r}return hf.call(t,e)?t[e]:void 0}var kf=vf,wf=Object.prototype,Cf=wf.hasOwnProperty;function Mf(e){var t=this.__data__;return lt?t[e]!==void 0:Cf.call(t,e)}var xf=Mf,If="__lodash_hash_undefined__";function Af(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=lt&&t===void 0?If:t,this}var Ef=Af;function ye(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ye.prototype.clear=pf;ye.prototype.delete=ff;ye.prototype.get=kf;ye.prototype.has=xf;ye.prototype.set=Ef;var Wi=ye;function Sf(){this.__data__=[],this.size=0}var jf=Sf;function Lf(e,t){for(var r=e.length;r--;)if(w2(e[r][0],t))return r;return-1}var Ht=Lf,Tf=Array.prototype,$f=Tf.splice;function Nf(e){var t=this.__data__,r=Ht(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():$f.call(t,r,1),--this.size,!0}var Of=Nf;function Df(e){var t=this.__data__,r=Ht(t,e);return r<0?void 0:t[r][1]}var _f=Df;function Pf(e){return Ht(this.__data__,e)>-1}var zf=Pf;function Uf(e,t){var r=this.__data__,n=Ht(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Vf=Uf;function be(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}be.prototype.clear=jf;be.prototype.delete=Of;be.prototype.get=_f;be.prototype.has=zf;be.prototype.set=Vf;var Yt=be,Bf=fe(V,"Map"),st=Bf;function Ff(){this.size=0,this.__data__={hash:new Wi,map:new(st||Yt),string:new Wi}}var Gf=Ff;function Rf(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var qf=Rf;function Qf(e,t){var r=e.__data__;return qf(t)?r[typeof t=="string"?"string":"hash"]:r.map}var Zt=Qf;function Hf(e){var t=Zt(this,e).delete(e);return this.size-=t?1:0,t}var Yf=Hf;function Zf(e){return Zt(this,e).get(e)}var Wf=Zf;function Kf(e){return Zt(this,e).has(e)}var Jf=Kf;function Xf(e,t){var r=Zt(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var e0=Xf;function he(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}he.prototype.clear=Gf;he.prototype.delete=Yf;he.prototype.get=Wf;he.prototype.has=Jf;he.prototype.set=e0;var Ao=he;function t0(){this.__data__=new Yt,this.size=0}var n0=t0;function r0(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var i0=r0;function o0(e){return this.__data__.get(e)}var a0=o0;function l0(e){return this.__data__.has(e)}var s0=l0,u0=200;function c0(e,t){var r=this.__data__;if(r instanceof Yt){var n=r.__data__;if(!st||n.length<u0-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Ao(n)}return r.set(e,t),this.size=r.size,this}var d0=c0;function ct(e){var t=this.__data__=new Yt(e);this.size=t.size}ct.prototype.clear=n0;ct.prototype.delete=i0;ct.prototype.get=a0;ct.prototype.has=s0;ct.prototype.set=d0;var g0=Object.prototype,dC=g0.propertyIsEnumerable,p0=fe(V,"DataView"),Bn=p0,m0=fe(V,"Promise"),Fn=m0,f0=fe(V,"Set"),Gn=f0,Ki="[object Map]",y0="[object Object]",Ji="[object Promise]",Xi="[object Set]",eo="[object WeakMap]",to="[object DataView]",b0=Q(Bn),h0=Q(st),v0=Q(Fn),k0=Q(Gn),w0=Q(Vn),de=ut;(Bn&&de(new Bn(new ArrayBuffer(1)))!=to||st&&de(new st)!=Ki||Fn&&de(Fn.resolve())!=Ji||Gn&&de(new Gn)!=Xi||Vn&&de(new Vn)!=eo)&&(de=function(e){var t=ut(e),r=t==y0?e.constructor:void 0,n=r?Q(r):"";if(n)switch(n){case b0:return to;case h0:return Ki;case v0:return Ji;case k0:return Xi;case w0:return eo}return t});var gC=V.Uint8Array,C0="__lodash_hash_undefined__";function M0(e){return this.__data__.set(e,C0),this}var x0=M0;function I0(e){return this.__data__.has(e)}var A0=I0;function Rn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Ao;++t<r;)this.add(e[t])}Rn.prototype.add=Rn.prototype.push=x0;Rn.prototype.has=A0;var no=me?me.prototype:void 0,pC=no?no.valueOf:void 0,E0=Object.prototype,mC=E0.hasOwnProperty,S0=Object.prototype,fC=S0.hasOwnProperty,yC=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),bC=new RegExp(/[A-Fa-f0-9]{1}/,"g"),hC=new RegExp(/[A-Fa-f0-9]{2}/,"g");function j0(e){return{"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg"}[e]??"png"}async function Eo(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),a=t.editor.getBufferData(e,0,n),o=new Blob([a],{type:r});return URL.createObjectURL(o)}else return e}async function qn(e,t){let r=await Eo(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=r})}async function L0(e,t,r){let n,a=t.block.getFill(e),o=t.block.getSourceSet(a,"fill/image/sourceSet"),[i]=o;if(i==null){if(n=t.block.getString(a,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=i.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return Eo(n,t)}function T0(e){return async(t,r)=>(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(t,void 0,2)),await D0(2e3),await $0(t,e,r))}async function $0(e,t,r){switch(t.kind){case"image":return N0(e,t,r);case"video":return O0(e,t,r);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function N0(e,t,{engine:r}){let n,a,o=e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"?e.prompt:"AI Generated Image",i=o.match(/(\d+)x(\d+)/);if(i!=null)n=parseInt(i[1],10),a=parseInt(i[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,u=await L0(l,r),s=await qn(u,r);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(`
139
139
  `,"+")}`}}async function O0(e,t,r){return Promise.resolve({kind:"video",url:"https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"})}async function D0(e){return new Promise(t=>{setTimeout(t,e)})}var So=T0;async function _0(e,t,r,n,a,o,i){let{cesdk:l,createPlaceholderBlock:u,historyAssetSourceId:s}=a,c;try{o.debug&&console.group(`Starting Generation for '${e}'`);let d=t(),g=await r(d.input),f=mm(),v;if(u){if(v=xm(f,e,g),o.debug&&console.log("Adding as asset to scene:",JSON.stringify(v,void 0,2)),c=await gm(l,v),c!=null&&n.kind==="video"){let h=l.engine.block.getPositionX(c),m=l.engine.block.getPositionY(c),y=l.engine.block.duplicate(c);l.engine.block.setPositionX(y,h),l.engine.block.setPositionY(y,m),l.engine.block.destroy(c),c=y}if(qt(l,i,c))return{status:"aborted"};if(c==null)throw new Error("Could not create placeholder block");l.engine.block.setState(c,{type:"Pending",progress:0})}let w=bo([...n.output.middleware??[],o.debug?ho():void 0,o.dryRun?So({kind:n.kind,blockInputs:g}):void 0]),{result:b}=await w(n.output.generate)(d.input,{abortSignal:i,engine:a.engine,cesdk:l});if(Qn(b))throw new Error("Streaming generation is not supported yet from a panel");if(qt(l,i,c))return{status:"aborted"};if(b==null)throw new Error("Generation failed");o.debug&&console.log("Generated output:",JSON.stringify(b,void 0,2));let p;if(c!=null&&l.engine.block.isValid(c)&&(p=await Fi(f,e,g,b),o.debug&&console.log("Updating asset in scene:",JSON.stringify(p,void 0,2)),await l.engine.asset.defaultApplyAssetToBlock(p,c)),qt(l,i,c))return{status:"aborted"};if(s!=null){if(p==null&&(p=await Fi(f,e,g,b),qt(l,i,c)))return{status:"aborted"};let h={...p,id:`${Date.now()}-${p.id}`,label:p.label!=null?{en:p.label}:{},tags:{}};l.engine.asset.addAssetToSource(s,h)}return c!=null&&l.engine.block.isValid(c)&&l.engine.block.setState(c,{type:"Ready"}),{status:"success",output:b}}catch(d){throw c!=null&&l.engine.block.isValid(c)&&(pe(d)?l.engine.block.destroy(c):l.engine.block.setState(c,{type:"Error",error:"Unknown"})),d}finally{o.debug&&console.groupEnd()}}function qt(e,t,r){return t.aborted?(r!=null&&e.engine.block.isValid(r)&&e.engine.block.destroy(r),!0):!1}var P0=_0;function z0(e,t,r){let{cesdk:n,provider:a,getInput:o}=t;r.onError!=null&&typeof r.onError=="function"?r.onError(e):(console.error("Generation failed:",e),U0(n,a.output.notification,()=>({input:o?.().input,error:e}))||n.ui.showNotification({type:"error",message:pm(e)}))}function U0(e,t,r){let n=t?.error;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let a=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.failed",o=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"error",message:a,action:o}),!0}var ot=z0;function Qt(e){return`${e}.generating`}function V0(e){return`${e}.abort`}function B0(e,t,r,n,a,o){let{builder:i,experimental:l}=e,{cesdk:u,includeHistoryLibrary:s=!0}=a,{id:c,output:{abortable:d}}=t,g=l.global(V0(c),()=>{}),f=l.global(Qt(c),!1),v,w=f.value&&d,b=()=>{w&&(g.value(),f.setValue(!1),g.setValue(()=>{}))},p;if(a.requiredInputs!=null&&a.requiredInputs.length>0){let m=r();p=a.requiredInputs.every(y=>!m.input[y])}let h=l.global(`${c}.confirmationDialogId`,void 0);i.Section(`${c}.generate.section`,{children:()=>{i.Button(`${c}.generate`,{label:["common.ai-generation.generate",`panel.${c}.generate`],isLoading:f.value,color:"accent",isDisabled:p,suffix:w?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${c}.abort`,"common.cancel"],onClick:()=>{let m=u.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:y})=>{u.ui.closeDialog(y),h.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:y})=>{b(),u.ui.closeDialog(y),h.setValue(void 0)}}});h.setValue(m)}}:void 0,onClick:async()=>{v=new AbortController;let m=v.signal,y=async()=>{try{f.setValue(!0),g.setValue(()=>{o.debug&&console.log("Aborting generation"),v?.abort()});let k=await P0(t.kind,r,n,t,a,o,m);if(k.status==="aborted")return;let C=t.output.notification;F0(u,C,()=>({input:r().input,output:k.output}))}catch(k){if(pe(k))return;ot(k,{cesdk:u,provider:t,getInput:r},o)}finally{v=void 0,f.setValue(!1),g.setValue(()=>{}),h.value!=null&&(u.ui.closeDialog(h.value),h.setValue(void 0))}};o.middleware!=null?await o.middleware(y,{provider:t,abort:b}):await y()}}),t.output.generationHintText!=null&&i.Text(`${c}.generation-hint`,{align:"center",content:t.output.generationHintText})}}),s&&a.historyAssetLibraryEntryId!=null&&i.Library(`${c}.history.library`,{entries:[a.historyAssetLibraryEntryId]})}function F0(e,t,r){let n=t?.success;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let a=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.success",o=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"success",message:a,action:o,duration:n.duration}),!0}var jo=B0;async function G0(e,t,r,n){let{cesdk:a}=r,{id:o}=e;n.debug&&console.log(`Registering schema-based panel input for provider ${o}`);let i=lm(t.document),l=ao(i,t.inputReference);if(!sm(l,n.debug))throw new Error(`Input reference '${t.inputReference}' does not resolve to a valid OpenAPI schema`);let u=l,s=lo(u,t),c=d=>{let{builder:g}=d,f=[];g.Section(`${o}.schema.section`,{children:()=>{s.forEach(p=>{let h=vm(d,p,e,t,r,n);h!=null&&(Array.isArray(h)?f.push(...h):f.push(h))})}});let v=f.map(p=>p()),w=p=>p.type==="object"?Object.entries(p.value).reduce((h,[m,y])=>(h[m]=w(y),h),{}):p.value,b=v.reduce((p,h)=>(p[h.id]=w(h),p),{});jo(d,e,()=>({input:b}),()=>t.getBlockInput(b),{...r,requiredInputs:u.required,createPlaceholderBlock:t.userFlow==="placeholder"},n)};return a.ui.registerPanel(so(o),c),c}var R0=G0;async function q0(e,t,r,n){let{cesdk:a}=r,{id:o}=e,i=t.render,l=u=>{let{state:s}=u,c=s(Qt(o),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:d,getBlockInput:g}=i(u,{cesdk:a,isGenerating:c});return jo(u,e,d,g,{...r,includeHistoryLibrary:t.includeHistoryLibrary??!0,createPlaceholderBlock:t.userFlow==="placeholder"},n),d};return a.ui.registerPanel(so(o),l),l}var Q0=q0,Pn="@imgly/plugin-ai-generation",H0=`
140
140
  <svg>
141
141
  <symbol
@@ -197,7 +197,7 @@ var Ul="ly.img.ai";function _t(e){return`${Ul}/${e}`}var Vl=typeof global=="obje
197
197
 
198
198
  </symbol>
199
199
  </svg>
200
- `,Y0=H0,ro="ly.img.ai.quickAction.order",rt="ly.img.ai.quickAction.actions";function Z0(e,t){return{id:t,setQuickActionMenuOrder:r=>{e.ui.experimental.setGlobalStateValue(`${ro}.${t}`,r)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${ro}.${t}`,[]),registerQuickAction:r=>{if(!e.ui.experimental.hasGlobalStateValue(`${rt}.${t}`))e.ui.experimental.setGlobalStateValue(`${rt}.${t}`,{[r.id]:r});else{let n=e.ui.experimental.getGlobalStateValue(`${rt}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${rt}.${t}`,{...n,[r.id]:r})}},getQuickAction:r=>e.ui.experimental.getGlobalStateValue(`${rt}.${t}`,{})[r]}}var W0=Z0,zn="ly.img.ai.inference.editMode",Lo="ly.img.ai.inference.metadata";function To(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function K0(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}function J0({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(r,n,a)=>{let o={},i={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&(o[u]=n.engine.block.isAlwaysOnTop(u),n.engine.block.setAlwaysOnTop(u,!0)),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(i[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&n.engine.block.setAlwaysOnTop(u,o[u]),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&i[s]!=null&&n.engine.block.setClipped(s,i[s])}})}),await a(r,n)}}var X0=J0;function ey({pending:e=!0}){return async(t,r,n)=>{let a=e?r.blockIds??r.engine.block.findAllSelected():[];try{return a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,r)}finally{a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Ready"})})}}}var ty=ey;function ny({editMode:e,automaticallyUnlock:t=!1}){return async(r,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),i=()=>{};t||n.addDisposer(async()=>{i?.()});try{return i=ry(n.engine,o,e),await a(r,n)}catch(l){throw pe(l)&&i(),l}finally{t&&i()}}}function ry(e,t,r){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(r);let o=e.editor.createHistory(),i=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(c=>{t.includes(c)||e.block.setSelected(c,!1)}),t.forEach(c=>{e.block.setSelected(c,!0)})}let u=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&e.editor.setEditMode(r)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(i),e.editor.destroyHistory(o),s(),u()}}var iy=ny;function oy(e,t){switch(t.kind){case"text":return ay(e,t);case"image":return ly(e,t);case"video":return sy(e,t);case"audio":return uy(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function ay(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t,o=n.map(s=>r.engine.block.getString(s,"text/text")),i;if(Qn(e)){let s="";for await(let c of e){if(a.aborted)break;typeof c=="string"?s=c:c.kind==="text"&&(s=c.text),n.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),i={kind:"text",text:s}}}else i=e;if(i==null||i.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",i.text)})},u=()=>{t.blockIds.forEach((s,c)=>{t.cesdk.engine.block.setString(s,"text/text",o[c])})};return{consumedGenerationResult:i,applyCallbacks:{onBefore:u,onAfter:l,onCancel:u,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function ly(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,i=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(i,"fill/image/sourceSet"),[u]=l,s;u==null&&(s=r.engine.block.getString(i,"fill/image/imageFileURI"));let c=await r.engine.editor.getMimeType(u?.uri??s),d=await qn(u?.uri??s,t.cesdk.engine),g=d.width/d.height;if(a.throwIfAborted(),c==="image/svg+xml")throw new Error("SVG images are not supported");let f=r.engine.block.getCropScaleX(o),v=r.engine.block.getCropScaleY(o),w=r.engine.block.getCropTranslationX(o),b=r.engine.block.getCropTranslationY(o),p=r.engine.block.getCropRotation(o),h=()=>{r.engine.block.setCropScaleX(o,f),r.engine.block.setCropScaleY(o,v),r.engine.block.setCropTranslationX(o,w),r.engine.block.setCropTranslationY(o,b),r.engine.block.setCropRotation(o,p)};if(Qn(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 m=e.url,y=await r.engine.editor.getMimeType(m),k=await cy(r,m,y),C=await qn(k,t.cesdk.engine),M=C.width/C.height,x=Math.abs(g-M)>.001,I=u?[{uri:k,width:C.width,height:C.height}]:void 0,$=k;I==null?r.engine.block.setString(i,"fill/image/imageFileURI",$):(r.engine.block.setString(i,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(i,"fill/image/sourceSet",I)),x?r.engine.block.setContentFillMode(o,"Cover"):h();let O=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",l);h()},D=()=>{if(I==null){if($==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",$)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",I);x?r.engine.block.setContentFillMode(o,"Cover"):h()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:O,onAfter:D,onCancel:()=>{O()},onApply:()=>{D(),t.cesdk.engine.editor.addUndoStep()}}}}async function sy(e,t){throw new Error("Function not implemented.")}async function uy(e,t){throw new Error("Function not implemented.")}async function cy(e,t,r){let n=await(await fetch(t)).blob(),a=new File([n],`image.${j0(r)}`,{type:r}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var dy=oy;function gy({editMode:e,automaticallyUnlock:t=!1,showNotification:r=!0}){return async(n,a,o)=>{let i=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=py(a.engine,i,e);let u=await o(n,a);if(r){let s=a.engine.block.findAllSelected();i.some(c=>s.includes(c))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{i.forEach(c=>{a.engine.block.select(c)})}}})}return u}catch(u){throw pe(u)&&l(),u}finally{t&&l()}}}function py(e,t,r){function n(){let i=e.block.findAllSelected();return t.some(l=>i.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&n()&&e.editor.setEditMode(r)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(r):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(r),()=>{o(),a(),e.editor.setEditMode("Transform")}}var my=gy;async function fy(e,t){let{cesdk:r,input:n,blockIds:a,provider:o,quickAction:i,confirmationComponentId:l,abortSignal:u}=e;i.confirmation&&r.ui.setCanvasMenuOrder([l],{editMode:zn});let s=new vo(r.engine,Lo);a.forEach(p=>{s.set(p,{status:"processing",quickActionId:i.id})});let c={cesdk:r,engine:r.engine,abortSignal:u},d=bo([...o.output.middleware??[],t.debug?ho():void 0,ty({}),...i.confirmation?[i.lockDuringConfirmation?iy({editMode:zn}):my({editMode:zn}),i.confirmation&&X0({})]:[],t.dryRun?So({kind:o.kind,blockIds:a}):void 0]),{result:g,dispose:f}=await d(o.output.generate)(n,c),{consumedGenerationResult:v,applyCallbacks:w}=await dy(g,{abortSignal:u,kind:o.kind,blockIds:a,cesdk:r});i.confirmation?a.forEach(p=>{s.set(p,{status:"confirmation",quickActionId:i.id})}):(w.onApply(),a.forEach(p=>{s.clear(p)}));let b=()=>{f(),a.forEach(p=>{s.clear(p)})};return u.addEventListener("abort",b),{dispose:b,returnValue:v,applyCallbacks:w}}var io=fy;function yy(e,t){let{cesdk:r,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,i=`${o}.confirmation`;r.setTranslations({en:{[`${i}.apply`]:"Apply",[`${i}.before`]:"Before",[`${i}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${i}.canvasnMenu`,u={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,g=d.signal;return u.abort=()=>{d.abort()},g};r.ui.registerComponent(l,({builder:d,engine:g,state:f})=>{let v=g.block.findAllSelected();if(v.length===0)return null;let w=new vo(r.engine,Lo),b=w.get(v[0]);if(b==null)return null;let p=()=>{v.forEach(h=>{w.clear(h)})};switch(b.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${b.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.abort(),p()}});break}case"confirmation":{let h=f(`${i}.comparing`,"after"),m=u.applyCallbacks?.onCancel;m!=null&&d.Button(`${i}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.unlock(),m(),p()}});let y=u.applyCallbacks?.onBefore,k=u.applyCallbacks?.onAfter;y!=null&&k!=null&&d.ButtonGroup(`${i}.compare`,{children:()=>{d.Button(`${i}.compare.before`,{label:`${i}.before`,variant:"regular",isActive:h.value==="before",onClick:()=>{y(),h.setValue("before")}}),d.Button(`${i}.compare.after`,{label:`${i}.after`,variant:"regular",isActive:h.value==="after",onClick:()=>{k(),h.setValue("after")}})}});let C=u.applyCallbacks?.onApply;C!=null&&d.Button(`${i}.apply`,{icon:"@imgly/Checkmark",tooltip:`${i}.apply`,color:"accent",isDisabled:h.value!=="after",onClick:()=>{u.unlock(),p(),r.engine.editor._update(),C()}});break}default:}});let c=`${o}.canvasMenu`;return r.ui.registerComponent(c,d=>{let g=d.engine.block.findAllSelected(),f=g.every(m=>d.engine.block.getState(m).type==="Ready"),v=n.getQuickActionMenuOrder().map(m=>{if(m==="ly.img.separator")return m;let y=n.getQuickAction(m);if(y==null||!r.feature.isEnabled(To({quickActionId:m,quickActionMenuId:n.id}),{engine:d.engine}))return null;let k=y.scopes;return k!=null&&k.length>0&&!g.every(C=>k.every(M=>d.engine.block.isAllowedByScope(C,M)))?null:y}).filter(m=>m!=null);if(v=K0(v),v.length===0||v.every(m=>m==="ly.img.separator"))return null;let{builder:w,experimental:b,state:p}=d,h=p(`${o}.toggleExpandedState`,void 0);b.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!f,trailingIcon:null,children:({close:m})=>{w.Section(`${o}.popover.section`,{children:()=>{if(h.value!=null){let y=h.value,k=n.getQuickAction(y);if(k!=null&&k.renderExpanded!=null){k.renderExpanded(d,{blockIds:g,closeMenu:m,toggleExpand:()=>{h.setValue(void 0)},handleGenerationError:C=>{ot(C,{cesdk:r,provider:a},t)},generate:async(C,M)=>{try{let{returnValue:x,applyCallbacks:I,dispose:$}=await io({input:C,quickAction:k,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:M?.blockIds??g,confirmationComponentId:l},t);return u.unlock=$,u.applyCallbacks=I,x}catch(x){throw pe(x)||ot(x,{cesdk:r,provider:a},t),x}}});return}}b.builder.Menu(`${o}.menu`,{children:()=>{v.forEach(y=>{y==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):y.render(d,{blockIds:g,closeMenu:m,handleGenerationError:k=>{ot(k,{cesdk:r,provider:a},t)},toggleExpand:()=>{h.setValue(y.id)},generate:async(k,C)=>{try{let{returnValue:M,applyCallbacks:x,dispose:I}=await io({input:k,quickAction:y,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:C?.blockIds??g,confirmationComponentId:l},t);return u.unlock=I,u.applyCallbacks=x,M}catch(M){throw pe(M)||ot(M,{cesdk:r,provider:a},t),M}}})})}})}})}})}),{canvasMenuComponentId:c}}var by=yy;async function hy(e,t,r){await e.initialize?.(t);let n=await ky(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}`]:vy(e)}});let i="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(i)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",Y0),t.cesdk.ui.experimental.setGlobalStateValue(i,!0)),{renderBuilderFunctions:await wy(e,o,r)}}function vy(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 ky(e,t,r){if(!(r==null||r===!1)){if(r==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(r==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new Lm(n,e)),n}return r}}async function wy(e,t,r){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await Cy(e,e.input.panel,t,r)),e.input?.quickActions!=null&&(r.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),My(e,e.input.quickActions,t,r)),n}async function Cy(e,t,r,n){switch(t.type){case"custom":return Q0(e,t,r,n);case"schema":return R0(e,t,r,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function My(e,t,r,n){let{cesdk:a}=r,o={};t.actions.forEach(i=>{let l=i.kind??e.kind;o[l]==null&&(o[l]=W0(a,l));let u=o[l],s=i.enable??!0;a.feature.enable(To({quickActionId:i.id,quickActionMenuId:l}),s),u.registerQuickAction(i),n.debug&&console.log(`Registered quick action: '${i.id}' (v${i.version}) to menu '${l}'`)}),Object.values(o).forEach(i=>{let{canvasMenuComponentId:l}=by({cesdk:a,quickActionMenu:i,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var oo=hy;function xy(e){let{cesdk:t,panelId:r}=e;r.startsWith("ly.img.ai/")&&console.warn(`Dock components for AI generation should open a panel with an id starting with "ly.img.ai/" \u2013 "${r}" was provided.`);let n=`${r}.dock`;t.ui.registerComponent(n,({builder:a})=>{let o=t.ui.isPanelOpen(r);a.Button(`${r}.dock.button`,{label:`${r}.dock.label`,isSelected:o,icon:"@imgly/Sparkle",onClick:()=>{t.ui.findAllPanels().forEach(i=>{i.startsWith("ly.img.ai/")&&t.ui.closePanel(i),!o&&i==="//ly.img.panel/assetLibrary"&&t.ui.closePanel(i)}),o?t.ui.closePanel(r):t.ui.openPanel(r)}})})}var Iy=xy,Ay="@imgly/plugin-ai-video-generation-web",P="ly.img.ai/video-generation",Un="ly.img.ai.video-generation.fromType";function Ey(e){return{async initialize({cesdk:t}){if(t==null)return;let r={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.setTranslations({en:{[`panel.${P}`]:"Video Generation","ly.img.ai.video-generation.success":"Video Generation Successful","ly.img.ai.video-generation.success.action":"Show"}});let n=e?.text2video,a=e?.image2video,o=await n?.({cesdk:t}),i=await a?.({cesdk:t});function l(c){if(t!=null)return{success:{show:()=>{let d=t?.ui.isPanelOpen(P),g=t.ui.experimental.getGlobalStateValue(Un)===c;return!d||!g},message:"ly.img.ai.video-generation.success",action:{label:"ly.img.ai.video-generation.success.action",onClick:()=>{t.ui.experimental.setGlobalStateValue(Un,c),t.ui.openPanel(P)}},duration:"long"}}}o!=null&&(o.output.notification=l("fromText")),i!=null&&(i.output.notification=l("fromImage"));let u=o!=null?await oo(o,{cesdk:t,engine:t.engine},r):void 0,s=i!=null?await oo(i,{cesdk:t,engine:t.engine},r):void 0;if(u?.renderBuilderFunctions?.panel==null&&s?.renderBuilderFunctions?.panel==null){r.debug&&console.log("No providers are initialized \u2013 doing nothing");return}if(u?.renderBuilderFunctions?.panel!=null&&s?.renderBuilderFunctions?.panel!=null)t.ui.registerPanel(P,c=>{let{builder:d,experimental:g}=c,f=g.global(Un,"fromText");switch(d.Section(`${P}.fromType.section`,{children:()=>{d.ButtonGroup(`${P}.fromType.buttonGroup`,{inputLabel:"Input",children:()=>{d.Button(`${P}.fromType.buttonGroup.fromText`,{label:"Text",icon:f.value!=="fromText"&&o!=null&&g.global(Qt(o.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromText",onClick:()=>{f.setValue("fromText")}}),d.Button(`${P}.fromType.buttonGroup.fromImage`,{label:"Image",icon:f.value!=="fromImage"&&i!=null&&g.global(Qt(i.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromImage",onClick:()=>{f.setValue("fromImage")}})}})}}),f.value){case"fromText":{u?.renderBuilderFunctions?.panel?.(c);break}case"fromImage":{s?.renderBuilderFunctions?.panel?.(c);break}default:}});else{let c=u?.renderBuilderFunctions?.panel??s?.renderBuilderFunctions?.panel;if(c==null)return;t.ui.registerPanel(P,c),t.i18n.setTranslations({en:{[`${P}.dock.label`]:"AI Video"}}),Iy({cesdk:t,panelId:P})}}}}var Sy=Ey,jy=e=>({name:Ay,version:"0.1.7",...Sy(e)}),$o=jy;function Ko(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),n=e;for(let a of r){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 mt(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let n=Ko(e,t.$ref),a={...mt(e,n,r)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(a[o]=mt(e,t[o],r));return a}if(Array.isArray(t))return t.map(n=>mt(e,n,r));if(typeof t=="object"){let n={};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=mt(e,t[a],r));return n}return t}function Ly(e){return mt(e,{...e})}function Ty(e,t=!1){let r=i=>(t&&console.log(`OpenAPI Schema validation failed: ${i}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let n=e;if(!(typeof n.type=="string"||Array.isArray(n.enum)||typeof n.properties=="object"||typeof n.items=="object"||typeof n.allOf=="object"||typeof n.anyOf=="object"||typeof n.oneOf=="object"||typeof n.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let i=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!i.includes(n.type))return r(`Invalid type: ${n.type}. Must be one of ${i.join(", ")}`)}else if(Array.isArray(n.type)){for(let l of n.type)if(typeof l!="string"||!i.includes(l))return r(`Array of types contains invalid value: ${l}. Must be one of ${i.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof n.type}`)}if(n.items!==void 0&&(typeof n.items!="object"||n.items===null))return r(`Items must be an object, got ${n.items===null?"null":typeof n.items}`);if(n.properties!==void 0&&(typeof n.properties!="object"||n.properties===null))return r(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let a=["allOf","anyOf","oneOf"];for(let i of a)if(n[i]!==void 0){if(!Array.isArray(n[i]))return r(`${i} must be an array, got ${typeof n[i]}`);for(let l=0;l<n[i].length;l++){let u=n[i][l];if(typeof u!="object"||u===null)return r(`Item ${l} in ${i} must be an object, got ${u===null?"null":typeof u}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return r(`'not' must be an object, got ${n.not===null?"null":typeof n.not}`);if(n.additionalProperties!==void 0&&typeof n.additionalProperties!="boolean"&&(typeof n.additionalProperties!="object"||n.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${n.additionalProperties===null?"null":typeof n.additionalProperties}`);if(n.format!==void 0&&typeof n.format!="string")return r(`format must be a string, got ${typeof n.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let i of o)if(n[i]!==void 0&&typeof n[i]!="number")return r(`${i} must be a number, got ${typeof n[i]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return r(`minLength must be a non-negative number, got ${typeof n.minLength=="number"?n.minLength:typeof n.minLength}`);if(n.maxLength!==void 0&&(typeof n.maxLength!="number"||n.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof n.maxLength=="number"?n.maxLength:typeof n.maxLength}`);if(n.pattern!==void 0&&typeof n.pattern!="string")return r(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return r(`minItems must be a non-negative number, got ${typeof n.minItems=="number"?n.minItems:typeof n.minItems}`);if(n.maxItems!==void 0&&(typeof n.maxItems!="number"||n.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof n.maxItems=="number"?n.maxItems:typeof n.maxItems}`);if(n.uniqueItems!==void 0&&typeof n.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof n.minProperties=="number"?n.minProperties:typeof n.minProperties}`);if(n.maxProperties!==void 0&&(typeof n.maxProperties!="number"||n.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof n.maxProperties=="number"?n.maxProperties:typeof n.maxProperties}`);if(n.required!==void 0){if(!Array.isArray(n.required))return r(`required must be an array, got ${typeof n.required}`);for(let i=0;i<n.required.length;i++){let l=n.required[i];if(typeof l!="string")return r(`Item ${i} in required array must be a string, got ${typeof l}`)}}return!0}function $y(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=[];return Ny(e,t)??(Object.entries(e.properties).forEach(n=>{let a=n[0],o=n[1];r.push({id:a,schema:o})}),r)}function Ny(e,t){if(t.orderExtensionKeyword==null)return;let r=[];if(typeof t.orderExtensionKeyword!="string"&&!Array.isArray(t.orderExtensionKeyword))throw new Error("orderExtensionKeyword must be a string or an array of strings");let n=typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword,a=n.find(i=>i in e);if(a==null)return;let o=e[a];if(o==null||Array.isArray(o)===!1)throw new Error(`Extension keyword ${a} must be an array of strings`);if([...new Set(o)].forEach(i=>{let l=e.properties?.[i];l!=null&&r.push({id:i,schema:l})}),r.length===0)throw new Error(`Could not find any properties with order extension keyword(s) ${n.join(", ")}`);return r}var Jo=$y,Oy="ly.img.ai",Yn="ly.img.ai/temp";async function Dy(e,t){return e.engine.asset.findAllSources().includes(Yn)||e.engine.asset.addLocalSource(Yn),e.engine.asset.apply(Yn,t)}function Xo(e){return`${Oy}/${e}`}function _y(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 Py(){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 zy(e,t=0,r="image/jpeg",n=.8){return new Promise((a,o)=>{try{let i=document.createElement("video");i.crossOrigin="anonymous",i.style.display="none",i.addEventListener("loadedmetadata",()=>{i.currentTime=Math.min(t,i.duration),i.addEventListener("seeked",()=>{let l=document.createElement("canvas");l.width=i.videoWidth,l.height=i.videoHeight;let u=l.getContext("2d");if(!u){document.body.removeChild(i),o(new Error("Failed to create canvas context"));return}u.drawImage(i,0,0,l.width,l.height);try{let s=l.toDataURL(r,n);document.body.removeChild(i),a(s)}catch(s){document.body.removeChild(i),o(new Error(`Failed to create thumbnail: ${s instanceof Error?s.message:String(s)}`))}},{once:!0})}),i.addEventListener("error",()=>{document.body.removeChild(i),o(new Error(`Failed to load video from ${e}`))}),i.src=e,document.body.appendChild(i)}catch(i){o(i)}})}function ea(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 or(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 we(e){return e instanceof Error&&e.name==="AbortError"}function ta(e,t,r,n,a,o){let i=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null)return n.renderCustomProperty[t.id](e,t);switch(i){case"string":return t.schema.enum!=null?Uy(e,t,r,n,a,o):ra(e,t,r,n,a,o);case"boolean":return ia(e,t,r,n,a,o);case"number":case"integer":return oa(e,t,r,n,a,o);case"object":return na(e,t,r,n,a,o);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return Vy(e,t,r,n,a,o);break}default:console.error(`Unsupported property type: ${i}`)}}function na(e,t,r,n,a,o){let i=Jo(t.schema??{},n).reduce((l,u)=>{let s=ta(e,u,r,n,a,o);return s!=null&&(l[u.id]=s()),l},{});return()=>({id:t.id,type:"object",value:i})}function ra(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=l(s,t.schema.default??""),g=By(t.schema),f=g?.component!=null&&g?.component==="TextArea"?"TextArea":"TextInput";return i[f](s,{inputLabel:c,placeholder:a.i18n?.prompt,...d}),()=>({id:t.id,type:"string",value:d.value})}function Uy(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=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"]:{},g="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{},f=(t.schema.enum??[]).map(b=>({id:b,label:d[b]??ea(b),icon:g[b]})),v=t.schema.default!=null?f.find(b=>b.id===t.schema.default)??f[0]:f[0],w=l(s,v);return i.Select(s,{inputLabel:c,values:f,...w}),()=>({id:t.id,type:"string",value:w.value.id})}function ia(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=!!t.schema.default,g=l(s,d);return i.Checkbox(s,{inputLabel:c,...g}),()=>({id:t.id,type:"boolean",value:g.value})}function oa(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.minimum,g=t.schema.maximum,f=t.schema.default;f==null&&(d!=null?f=d:g!=null?f=g:f=0);let v=l(s,f);if(d!=null&&g!=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"]),i.Slider(s,{inputLabel:c,min:d,max:g,step:w,...v})}else i.NumberInput(s,{inputLabel:c,min:d,max:g,...v});return()=>({id:t.id,type:"integer",value:v.value})}function Vy(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.anyOf??[],g=[],f={},v={};d.forEach((p,h)=>{let m=p.title??"common.custom",y=`${r.id}.${u}.anyOf[${h}]`,k="x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},C="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{};p.type==="string"?p.enum!=null?p.enum.forEach(M=>{g.push({id:M,label:k[M]??ea(M),icon:C[M]})}):(f[y]=()=>ra(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="boolean"?(f[y]=()=>ia(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="integer"?(f[y]=()=>oa(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="array"||p.type==="object"&&(f[y]=()=>na(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]}))});let w=t.schema.default!=null?g.find(p=>p.id===t.schema.default)??g[0]:g[0],b=l(s,w);if(i.Select(s,{inputLabel:c,values:g,...b}),b.value.id in f){let p=f[b.value.id]();v[b.value.id]=p}return()=>{let p=v[b.value.id];return p!=null?{...p(),id:t.id}:{id:t.id,type:"string",value:b.value.id}}}function By(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var Fy=ta,Gy="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",aa=Gy;function Ry(e,t,r){switch(t){case"image":return qy(e,r[t]);case"video":return Qy(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function qy(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:aa,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n}}}function Qy(e,t){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:aa,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}var Hy=Ry;async function Yy(e,t,r,n){switch(t){case"image":{if(n.kind!=="image")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: image)`);return Zy(e,r[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return Wy(e,r[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Ky(e,r[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Zy(e,t,r){let n=t.width,a=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:a},payload:{sourceSet:[{uri:r.url,width:n,height:a}]}}}async function Wy(e,t,r){let n=t.width,a=t.height,o=await zy(r.url,0);return{id:e,label:t.label,meta:{uri:r.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:n,height:a}}}function Ky(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()}}}var No=Yy;function la(e){let t=e.filter(r=>!!r);return r=>async(n,a)=>{let o=[],i=s=>{o.push(s)},l=async(s,c,d)=>{if(s>=t.length)return r(c,d);let g=t[s],f=async(w,b)=>l(s+1,w,b),v={...d,addDisposer:i};return g(c,v,f)},u={...a,addDisposer:i};return{result:await l(0,n,u),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(c){console.error("Error in disposer:",c)}o.length=0}}}}function Jy(){return async(e,t,r)=>{console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(e,null,2));let n,a=Date.now();try{return n=await r(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 sa=Jy,Xy=class{constructor(e,t,r){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=r?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=r?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.dbVersion);r.onerror=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},r.onupgradeneeded=n=>{let 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"})},r.onsuccess=n=>{this.db=n.target.result,e()}})}close(){this.db&&(this.db.close(),this.db=null)}async findAssets(e){if(await this.initialize(),!this.db)throw new Error("Database not initialized");try{let t=(await this.getAllAssets("asc")).reduce((u,s)=>{let c=e.locale??"en",d="",g=[];s.label!=null&&typeof s.label=="object"&&s.label[c]&&(d=s.label[c]),s.tags!=null&&typeof s.tags=="object"&&s.tags[c]&&(g=s.tags[c]);let f={...s,label:d,tags:g};return this.filterAsset(f,e)&&u.push(f),u},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:r,perPage:n}=e,a=r*n,o=a+n,i=t.slice(a,o),l=o<t.length?r+1:void 0;return{assets:i,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 n=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(i=>n.add(i))});let a=[...n];e(a)},r.onerror=()=>{t(new Error(`Failed to get groups: ${r.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),r=t.objectStore(this.assetStoreName),n=new Set;ke(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let a={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.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 r=this.db.transaction(this.assetStoreName,"readwrite");r.objectStore(this.assetStoreName).delete(e),r.oncomplete=()=>{ke(t,n=>{this.removeBlob(n)}),this.engine.asset.assetSourceContentsChanged(this.id)},r.onerror=()=>{console.error(`Failed to remove asset: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async removeBlob(e){return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.blobStoreName,"readwrite");t.objectStore(this.blobStoreName).delete(e),t.onerror=()=>{console.error(`Failed to remove blob: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async getAllAssets(e="desc"){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let a=n.result;a.sort((o,i)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),u=i.meta?.insertedAt||i._insertedAt||Date.now();return e==="asc"?l-u:u-l}),t(a)},n.onerror=()=>{r(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async createBlobUrlFromStore(e){let t=await this.getBlob(e);return t!=null?URL.createObjectURL(t.blob):e}async storeBlobUrls(e){let t={};return await Promise.all(e.map(async r=>{let n=await(await fetch(r)).blob();t[r]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),n=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([a,o])=>{let i={id:a,blob:o};n.put(i)}),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 ke(e,n=>{r.add(n)}),await Promise.all([...r].map(async n=>{let a=await this.createBlobUrlFromStore(n);t[n]=a})),ke(e,n=>t[n]??n)}filterAsset(e,t){let{query:r,tags:n,groups:a,excludeGroups:o}=t;if(r&&r.trim()!==""){let i=r.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",u=e.tags?.map(s=>s.toLowerCase())??[];if(!i.every(s=>l.includes(s)||u.some(c=>c.includes(s))))return!1}if(n){let i=Array.isArray(n)?n:[n];if(i.length>0&&(!e.tags||!i.every(l=>e.tags?.includes(l))))return!1}return!(a&&a.length>0&&(!e.groups||!a.some(i=>e.groups?.includes(i)))||o&&o.length>0&&e.groups&&e.groups.some(i=>o.includes(i)))}sortAssets(e,t){let{sortingOrder:r,sortKey:n,sortActiveFirst:a}=t,o=[...e];return!r||r==="None"||(n?o.sort((i,l)=>{let u,s;return n==="id"?(u=i.id,s=l.id):(u=i.meta?.[n]??null,s=l.meta?.[n]??null),u==null?r==="Ascending"?-1:1:s==null?r==="Ascending"?1:-1:typeof u=="string"&&typeof s=="string"?r==="Ascending"?u.localeCompare(s):s.localeCompare(u):r==="Ascending"?u<s?-1:u>s?1:0:u>s?-1:u<s?1:0}):r==="Descending"&&o.reverse(),a&&o.sort((i,l)=>i.active&&!l.active?-1:!i.active&&l.active?1:0)),o}};function ke(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let a=r?`${r}[${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]=ke(e[n],t,a)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let a=e[n],o=r?`${r}.${n}`:n;if(typeof a=="string"&&a.startsWith("blob:")){let i=t(a,o);typeof i=="string"&&(e[n]=i)}else e[n]=ke(a,t,o)}return e}var eb=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)}},ua=eb,tb=typeof global=="object"&&global&&global.Object===Object&&global,ca=tb,nb=typeof self=="object"&&self&&self.Object===Object&&self,rb=ca||nb||Function("return this")(),B=rb,ib=B.Symbol,Ce=ib,da=Object.prototype,ob=da.hasOwnProperty,ab=da.toString,dt=Ce?Ce.toStringTag:void 0;function lb(e){var t=ob.call(e,dt),r=e[dt];try{e[dt]=void 0;var n=!0}catch{}var a=ab.call(e);return n&&(t?e[dt]=r:delete e[dt]),a}var sb=lb,ub=Object.prototype,cb=ub.toString;function db(e){return cb.call(e)}var gb=db,pb="[object Null]",mb="[object Undefined]",Oo=Ce?Ce.toStringTag:void 0;function fb(e){return e==null?e===void 0?mb:pb:Oo&&Oo in Object(e)?sb(e):gb(e)}var vt=fb;function yb(e){return e!=null&&typeof e=="object"}var ar=yb,CC=Array.isArray;function bb(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var ga=bb,hb="[object AsyncFunction]",vb="[object Function]",kb="[object GeneratorFunction]",wb="[object Proxy]";function Cb(e){if(!ga(e))return!1;var t=vt(e);return t==vb||t==kb||t==hb||t==wb}var Mb=Cb,xb=B["__core-js_shared__"],Zn=xb,Do=function(){var e=/[^.]+$/.exec(Zn&&Zn.keys&&Zn.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ib(e){return!!Do&&Do in e}var Ab=Ib,Eb=Function.prototype,Sb=Eb.toString;function jb(e){if(e!=null){try{return Sb.call(e)}catch{}try{return e+""}catch{}}return""}var H=jb,Lb=/[\\^$.*+?()[\]{}|]/g,Tb=/^\[object .+?Constructor\]$/,$b=Function.prototype,Nb=Object.prototype,Ob=$b.toString,Db=Nb.hasOwnProperty,_b=RegExp("^"+Ob.call(Db).replace(Lb,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Pb(e){if(!ga(e)||Ab(e))return!1;var t=Mb(e)?_b:Tb;return t.test(H(e))}var zb=Pb;function Ub(e,t){return e?.[t]}var Vb=Ub;function Bb(e,t){var r=Vb(e,t);return zb(r)?r:void 0}var Me=Bb,Fb=Me(B,"WeakMap"),Xn=Fb;function Gb(e,t){return e===t||e!==e&&t!==t}var Rb=Gb,qb=9007199254740991;function Qb(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=qb}var Hb=Qb,MC=Object.prototype,Yb="[object Arguments]";function Zb(e){return ar(e)&&vt(e)==Yb}var _o=Zb,pa=Object.prototype,Wb=pa.hasOwnProperty,Kb=pa.propertyIsEnumerable,xC=_o(function(){return arguments}())?_o:function(e){return ar(e)&&Wb.call(e,"callee")&&!Kb.call(e,"callee")},ma=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Po=ma&&typeof module=="object"&&module&&!module.nodeType&&module,Jb=Po&&Po.exports===ma,zo=Jb?B.Buffer:void 0,IC=zo?zo.isBuffer:void 0,Xb="[object Arguments]",e4="[object Array]",t4="[object Boolean]",n4="[object Date]",r4="[object Error]",i4="[object Function]",o4="[object Map]",a4="[object Number]",l4="[object Object]",s4="[object RegExp]",u4="[object Set]",c4="[object String]",d4="[object WeakMap]",g4="[object ArrayBuffer]",p4="[object DataView]",m4="[object Float32Array]",f4="[object Float64Array]",y4="[object Int8Array]",b4="[object Int16Array]",h4="[object Int32Array]",v4="[object Uint8Array]",k4="[object Uint8ClampedArray]",w4="[object Uint16Array]",C4="[object Uint32Array]",j={};j[m4]=j[f4]=j[y4]=j[b4]=j[h4]=j[v4]=j[k4]=j[w4]=j[C4]=!0;j[Xb]=j[e4]=j[g4]=j[t4]=j[p4]=j[n4]=j[r4]=j[i4]=j[o4]=j[a4]=j[l4]=j[s4]=j[u4]=j[c4]=j[d4]=!1;function M4(e){return ar(e)&&Hb(e.length)&&!!j[vt(e)]}var x4=M4;function I4(e){return function(t){return e(t)}}var A4=I4,fa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yt=fa&&typeof module=="object"&&module&&!module.nodeType&&module,E4=yt&&yt.exports===fa,Wn=E4&&ca.process,S4=function(){try{var e=yt&&yt.require&&yt.require("util").types;return e||Wn&&Wn.binding&&Wn.binding("util")}catch{}}(),Uo=S4,Vo=Uo&&Uo.isTypedArray,AC=Vo?A4(Vo):x4,j4=Object.prototype,EC=j4.hasOwnProperty;function L4(e,t){return function(r){return e(t(r))}}var T4=L4,SC=T4(Object.keys,Object),$4=Object.prototype,jC=$4.hasOwnProperty,N4=Me(Object,"create"),bt=N4;function O4(){this.__data__=bt?bt(null):{},this.size=0}var D4=O4;function _4(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var P4=_4,z4="__lodash_hash_undefined__",U4=Object.prototype,V4=U4.hasOwnProperty;function B4(e){var t=this.__data__;if(bt){var r=t[e];return r===z4?void 0:r}return V4.call(t,e)?t[e]:void 0}var F4=B4,G4=Object.prototype,R4=G4.hasOwnProperty;function q4(e){var t=this.__data__;return bt?t[e]!==void 0:R4.call(t,e)}var Q4=q4,H4="__lodash_hash_undefined__";function Y4(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=bt&&t===void 0?H4:t,this}var Z4=Y4;function xe(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}xe.prototype.clear=D4;xe.prototype.delete=P4;xe.prototype.get=F4;xe.prototype.has=Q4;xe.prototype.set=Z4;var Bo=xe;function W4(){this.__data__=[],this.size=0}var K4=W4;function J4(e,t){for(var r=e.length;r--;)if(Rb(e[r][0],t))return r;return-1}var Jt=J4,X4=Array.prototype,e5=X4.splice;function t5(e){var t=this.__data__,r=Jt(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():e5.call(t,r,1),--this.size,!0}var n5=t5;function r5(e){var t=this.__data__,r=Jt(t,e);return r<0?void 0:t[r][1]}var i5=r5;function o5(e){return Jt(this.__data__,e)>-1}var a5=o5;function l5(e,t){var r=this.__data__,n=Jt(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var s5=l5;function Ie(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ie.prototype.clear=K4;Ie.prototype.delete=n5;Ie.prototype.get=i5;Ie.prototype.has=a5;Ie.prototype.set=s5;var Xt=Ie,u5=Me(B,"Map"),ht=u5;function c5(){this.size=0,this.__data__={hash:new Bo,map:new(ht||Xt),string:new Bo}}var d5=c5;function g5(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var p5=g5;function m5(e,t){var r=e.__data__;return p5(t)?r[typeof t=="string"?"string":"hash"]:r.map}var en=m5;function f5(e){var t=en(this,e).delete(e);return this.size-=t?1:0,t}var y5=f5;function b5(e){return en(this,e).get(e)}var h5=b5;function v5(e){return en(this,e).has(e)}var k5=v5;function w5(e,t){var r=en(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var C5=w5;function Ae(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ae.prototype.clear=d5;Ae.prototype.delete=y5;Ae.prototype.get=h5;Ae.prototype.has=k5;Ae.prototype.set=C5;var ya=Ae;function M5(){this.__data__=new Xt,this.size=0}var x5=M5;function I5(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var A5=I5;function E5(e){return this.__data__.get(e)}var S5=E5;function j5(e){return this.__data__.has(e)}var L5=j5,T5=200;function $5(e,t){var r=this.__data__;if(r instanceof Xt){var n=r.__data__;if(!ht||n.length<T5-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new ya(n)}return r.set(e,t),this.size=r.size,this}var N5=$5;function kt(e){var t=this.__data__=new Xt(e);this.size=t.size}kt.prototype.clear=x5;kt.prototype.delete=A5;kt.prototype.get=S5;kt.prototype.has=L5;kt.prototype.set=N5;var O5=Object.prototype,LC=O5.propertyIsEnumerable,D5=Me(B,"DataView"),er=D5,_5=Me(B,"Promise"),tr=_5,P5=Me(B,"Set"),nr=P5,Fo="[object Map]",z5="[object Object]",Go="[object Promise]",Ro="[object Set]",qo="[object WeakMap]",Qo="[object DataView]",U5=H(er),V5=H(ht),B5=H(tr),F5=H(nr),G5=H(Xn),ve=vt;(er&&ve(new er(new ArrayBuffer(1)))!=Qo||ht&&ve(new ht)!=Fo||tr&&ve(tr.resolve())!=Go||nr&&ve(new nr)!=Ro||Xn&&ve(new Xn)!=qo)&&(ve=function(e){var t=vt(e),r=t==z5?e.constructor:void 0,n=r?H(r):"";if(n)switch(n){case U5:return Qo;case V5:return Fo;case B5:return Go;case F5:return Ro;case G5:return qo}return t});var TC=B.Uint8Array,R5="__lodash_hash_undefined__";function q5(e){return this.__data__.set(e,R5),this}var Q5=q5;function H5(e){return this.__data__.has(e)}var Y5=H5;function rr(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new ya;++t<r;)this.add(e[t])}rr.prototype.add=rr.prototype.push=Q5;rr.prototype.has=Y5;var Ho=Ce?Ce.prototype:void 0,$C=Ho?Ho.valueOf:void 0,Z5=Object.prototype,NC=Z5.hasOwnProperty,W5=Object.prototype,OC=W5.hasOwnProperty,DC=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),_C=new RegExp(/[A-Fa-f0-9]{1}/,"g"),PC=new RegExp(/[A-Fa-f0-9]{2}/,"g");function K5(e){return{"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg"}[e]??"png"}async function ba(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),a=t.editor.getBufferData(e,0,n),o=new Blob([a],{type:r});return URL.createObjectURL(o)}else return e}async function ir(e,t){let r=await ba(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=r})}async function J5(e,t,r){let n,a=t.block.getFill(e),o=t.block.getSourceSet(a,"fill/image/sourceSet"),[i]=o;if(i==null){if(n=t.block.getString(a,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=i.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return ba(n,t)}function X5(e){return async(t,r)=>(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(t,void 0,2)),await rh(2e3),await eh(t,e,r))}async function eh(e,t,r){switch(t.kind){case"image":return th(e,t,r);case"video":return nh(e,t,r);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function th(e,t,{engine:r}){let n,a,o=e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"?e.prompt:"AI Generated Image",i=o.match(/(\d+)x(\d+)/);if(i!=null)n=parseInt(i[1],10),a=parseInt(i[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,u=await J5(l,r),s=await ir(u,r);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(`
200
+ `,Y0=H0,ro="ly.img.ai.quickAction.order",rt="ly.img.ai.quickAction.actions";function Z0(e,t){return{id:t,setQuickActionMenuOrder:r=>{e.ui.experimental.setGlobalStateValue(`${ro}.${t}`,r)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${ro}.${t}`,[]),registerQuickAction:r=>{if(!e.ui.experimental.hasGlobalStateValue(`${rt}.${t}`))e.ui.experimental.setGlobalStateValue(`${rt}.${t}`,{[r.id]:r});else{let n=e.ui.experimental.getGlobalStateValue(`${rt}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${rt}.${t}`,{...n,[r.id]:r})}},getQuickAction:r=>e.ui.experimental.getGlobalStateValue(`${rt}.${t}`,{})[r]}}var W0=Z0,zn="ly.img.ai.inference.editMode",Lo="ly.img.ai.inference.metadata";function To(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function K0(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}function J0({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(r,n,a)=>{let o={},i={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&(o[u]=n.engine.block.isAlwaysOnTop(u),n.engine.block.setAlwaysOnTop(u,!0)),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(i[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&n.engine.block.setAlwaysOnTop(u,o[u]),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&i[s]!=null&&n.engine.block.setClipped(s,i[s])}})}),await a(r,n)}}var X0=J0;function ey({pending:e=!0}){return async(t,r,n)=>{let a=e?r.blockIds??r.engine.block.findAllSelected():[];try{return a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,r)}finally{a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Ready"})})}}}var ty=ey;function ny({editMode:e,automaticallyUnlock:t=!1}){return async(r,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),i=()=>{};t||n.addDisposer(async()=>{i?.()});try{return i=ry(n.engine,o,e),await a(r,n)}catch(l){throw pe(l)&&i(),l}finally{t&&i()}}}function ry(e,t,r){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(r);let o=e.editor.createHistory(),i=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(c=>{t.includes(c)||e.block.setSelected(c,!1)}),t.forEach(c=>{e.block.setSelected(c,!0)})}let u=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&e.editor.setEditMode(r)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(i),e.editor.destroyHistory(o),s(),u()}}var iy=ny;function oy(e,t){switch(t.kind){case"text":return ay(e,t);case"image":return ly(e,t);case"video":return sy(e,t);case"audio":return uy(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function ay(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t,o=n.map(s=>r.engine.block.getString(s,"text/text")),i;if(Qn(e)){let s="";for await(let c of e){if(a.aborted)break;typeof c=="string"?s=c:c.kind==="text"&&(s=c.text),n.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),i={kind:"text",text:s}}}else i=e;if(i==null||i.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",i.text)})},u=()=>{t.blockIds.forEach((s,c)=>{t.cesdk.engine.block.setString(s,"text/text",o[c])})};return{consumedGenerationResult:i,applyCallbacks:{onBefore:u,onAfter:l,onCancel:u,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function ly(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,i=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(i,"fill/image/sourceSet"),[u]=l,s;u==null&&(s=r.engine.block.getString(i,"fill/image/imageFileURI"));let c=await r.engine.editor.getMimeType(u?.uri??s),d=await qn(u?.uri??s,t.cesdk.engine),g=d.width/d.height;if(a.throwIfAborted(),c==="image/svg+xml")throw new Error("SVG images are not supported");let f=r.engine.block.getCropScaleX(o),v=r.engine.block.getCropScaleY(o),w=r.engine.block.getCropTranslationX(o),b=r.engine.block.getCropTranslationY(o),p=r.engine.block.getCropRotation(o),h=()=>{r.engine.block.setCropScaleX(o,f),r.engine.block.setCropScaleY(o,v),r.engine.block.setCropTranslationX(o,w),r.engine.block.setCropTranslationY(o,b),r.engine.block.setCropRotation(o,p)};if(Qn(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 m=e.url,y=await r.engine.editor.getMimeType(m),k=await cy(r,m,y),C=await qn(k,t.cesdk.engine),M=C.width/C.height,x=Math.abs(g-M)>.001,I=u?[{uri:k,width:C.width,height:C.height}]:void 0,$=k;I==null?r.engine.block.setString(i,"fill/image/imageFileURI",$):(r.engine.block.setString(i,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(i,"fill/image/sourceSet",I)),x?r.engine.block.setContentFillMode(o,"Cover"):h();let O=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",l);h()},D=()=>{if(I==null){if($==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",$)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",I);x?r.engine.block.setContentFillMode(o,"Cover"):h()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:O,onAfter:D,onCancel:()=>{O()},onApply:()=>{D(),t.cesdk.engine.editor.addUndoStep()}}}}async function sy(e,t){throw new Error("Function not implemented.")}async function uy(e,t){throw new Error("Function not implemented.")}async function cy(e,t,r){let n=await(await fetch(t)).blob(),a=new File([n],`image.${j0(r)}`,{type:r}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var dy=oy;function gy({editMode:e,automaticallyUnlock:t=!1,showNotification:r=!0}){return async(n,a,o)=>{let i=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=py(a.engine,i,e);let u=await o(n,a);if(r){let s=a.engine.block.findAllSelected();i.some(c=>s.includes(c))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{i.forEach(c=>{a.engine.block.select(c)})}}})}return u}catch(u){throw pe(u)&&l(),u}finally{t&&l()}}}function py(e,t,r){function n(){let i=e.block.findAllSelected();return t.some(l=>i.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&n()&&e.editor.setEditMode(r)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(r):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(r),()=>{o(),a(),e.editor.setEditMode("Transform")}}var my=gy;async function fy(e,t){let{cesdk:r,input:n,blockIds:a,provider:o,quickAction:i,confirmationComponentId:l,abortSignal:u}=e;i.confirmation&&r.ui.setCanvasMenuOrder([l],{editMode:zn});let s=new vo(r.engine,Lo);a.forEach(p=>{s.set(p,{status:"processing",quickActionId:i.id})});let c={cesdk:r,engine:r.engine,abortSignal:u},d=bo([...o.output.middleware??[],t.debug?ho():void 0,ty({}),...i.confirmation?[i.lockDuringConfirmation?iy({editMode:zn}):my({editMode:zn}),i.confirmation&&X0({})]:[],t.dryRun?So({kind:o.kind,blockIds:a}):void 0]),{result:g,dispose:f}=await d(o.output.generate)(n,c),{consumedGenerationResult:v,applyCallbacks:w}=await dy(g,{abortSignal:u,kind:o.kind,blockIds:a,cesdk:r});i.confirmation?a.forEach(p=>{s.set(p,{status:"confirmation",quickActionId:i.id})}):(w.onApply(),a.forEach(p=>{s.clear(p)}));let b=()=>{f(),a.forEach(p=>{s.clear(p)})};return u.addEventListener("abort",b),{dispose:b,returnValue:v,applyCallbacks:w}}var io=fy;function yy(e,t){let{cesdk:r,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,i=`${o}.confirmation`;r.setTranslations({en:{[`${i}.apply`]:"Apply",[`${i}.before`]:"Before",[`${i}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${i}.canvasnMenu`,u={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,g=d.signal;return u.abort=()=>{d.abort()},g};r.ui.registerComponent(l,({builder:d,engine:g,state:f})=>{let v=g.block.findAllSelected();if(v.length===0)return null;let w=new vo(r.engine,Lo),b=w.get(v[0]);if(b==null)return null;let p=()=>{v.forEach(h=>{w.clear(h)})};switch(b.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${b.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.abort(),p()}});break}case"confirmation":{let h=f(`${i}.comparing`,"after"),m=u.applyCallbacks?.onCancel;m!=null&&d.Button(`${i}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.unlock(),m(),p()}});let y=u.applyCallbacks?.onBefore,k=u.applyCallbacks?.onAfter;y!=null&&k!=null&&d.ButtonGroup(`${i}.compare`,{children:()=>{d.Button(`${i}.compare.before`,{label:`${i}.before`,variant:"regular",isActive:h.value==="before",onClick:()=>{y(),h.setValue("before")}}),d.Button(`${i}.compare.after`,{label:`${i}.after`,variant:"regular",isActive:h.value==="after",onClick:()=>{k(),h.setValue("after")}})}});let C=u.applyCallbacks?.onApply;C!=null&&d.Button(`${i}.apply`,{icon:"@imgly/Checkmark",tooltip:`${i}.apply`,color:"accent",isDisabled:h.value!=="after",onClick:()=>{u.unlock(),p(),r.engine.editor._update(),C()}});break}default:}});let c=`${o}.canvasMenu`;return r.ui.registerComponent(c,d=>{let g=d.engine.block.findAllSelected(),f=g.every(m=>d.engine.block.getState(m).type==="Ready"),v=n.getQuickActionMenuOrder().map(m=>{if(m==="ly.img.separator")return m;let y=n.getQuickAction(m);if(y==null||!r.feature.isEnabled(To({quickActionId:m,quickActionMenuId:n.id}),{engine:d.engine}))return null;let k=y.scopes;return k!=null&&k.length>0&&!g.every(C=>k.every(M=>d.engine.block.isAllowedByScope(C,M)))?null:y}).filter(m=>m!=null);if(v=K0(v),v.length===0||v.every(m=>m==="ly.img.separator"))return null;let{builder:w,experimental:b,state:p}=d,h=p(`${o}.toggleExpandedState`,void 0);b.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!f,trailingIcon:null,children:({close:m})=>{w.Section(`${o}.popover.section`,{children:()=>{if(h.value!=null){let y=h.value,k=n.getQuickAction(y);if(k!=null&&k.renderExpanded!=null){k.renderExpanded(d,{blockIds:g,closeMenu:m,toggleExpand:()=>{h.setValue(void 0)},handleGenerationError:C=>{ot(C,{cesdk:r,provider:a},t)},generate:async(C,M)=>{try{let{returnValue:x,applyCallbacks:I,dispose:$}=await io({input:C,quickAction:k,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:M?.blockIds??g,confirmationComponentId:l},t);return u.unlock=$,u.applyCallbacks=I,x}catch(x){throw pe(x)||ot(x,{cesdk:r,provider:a},t),x}}});return}}b.builder.Menu(`${o}.menu`,{children:()=>{v.forEach(y=>{y==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):y.render(d,{blockIds:g,closeMenu:m,handleGenerationError:k=>{ot(k,{cesdk:r,provider:a},t)},toggleExpand:()=>{h.setValue(y.id)},generate:async(k,C)=>{try{let{returnValue:M,applyCallbacks:x,dispose:I}=await io({input:k,quickAction:y,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:C?.blockIds??g,confirmationComponentId:l},t);return u.unlock=I,u.applyCallbacks=x,M}catch(M){throw pe(M)||ot(M,{cesdk:r,provider:a},t),M}}})})}})}})}})}),{canvasMenuComponentId:c}}var by=yy;async function hy(e,t,r){await e.initialize?.(t);let n=await ky(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}`]:vy(e)}});let i="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(i)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",Y0),t.cesdk.ui.experimental.setGlobalStateValue(i,!0)),{renderBuilderFunctions:await wy(e,o,r)}}function vy(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 ky(e,t,r){if(!(r==null||r===!1)){if(r==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(r==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new Lm(n,e)),n}return r}}async function wy(e,t,r){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await Cy(e,e.input.panel,t,r)),e.input?.quickActions!=null&&(r.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),My(e,e.input.quickActions,t,r)),n}async function Cy(e,t,r,n){switch(t.type){case"custom":return Q0(e,t,r,n);case"schema":return R0(e,t,r,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function My(e,t,r,n){let{cesdk:a}=r,o={};t.actions.forEach(i=>{let l=i.kind??e.kind;o[l]==null&&(o[l]=W0(a,l));let u=o[l],s=i.enable??!0;a.feature.enable(To({quickActionId:i.id,quickActionMenuId:l}),s),u.registerQuickAction(i),n.debug&&console.log(`Registered quick action: '${i.id}' (v${i.version}) to menu '${l}'`)}),Object.values(o).forEach(i=>{let{canvasMenuComponentId:l}=by({cesdk:a,quickActionMenu:i,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var oo=hy;function xy(e){let{cesdk:t,panelId:r}=e;r.startsWith("ly.img.ai/")&&console.warn(`Dock components for AI generation should open a panel with an id starting with "ly.img.ai/" \u2013 "${r}" was provided.`);let n=`${r}.dock`;t.ui.registerComponent(n,({builder:a})=>{let o=t.ui.isPanelOpen(r);a.Button(`${r}.dock.button`,{label:`${r}.dock.label`,isSelected:o,icon:"@imgly/Sparkle",onClick:()=>{t.ui.findAllPanels().forEach(i=>{i.startsWith("ly.img.ai/")&&t.ui.closePanel(i),!o&&i==="//ly.img.panel/assetLibrary"&&t.ui.closePanel(i)}),o?t.ui.closePanel(r):t.ui.openPanel(r)}})})}var Iy=xy,Ay="@imgly/plugin-ai-video-generation-web",P="ly.img.ai/video-generation",Un="ly.img.ai.video-generation.fromType";function Ey(e){return{async initialize({cesdk:t}){if(t==null)return;let r={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.setTranslations({en:{[`panel.${P}`]:"Video Generation","ly.img.ai.video-generation.success":"Video Generation Successful","ly.img.ai.video-generation.success.action":"Show"}});let n=e?.text2video,a=e?.image2video,o=await n?.({cesdk:t}),i=await a?.({cesdk:t});function l(c){if(t!=null)return{success:{show:()=>{let d=t?.ui.isPanelOpen(P),g=t.ui.experimental.getGlobalStateValue(Un)===c;return!d||!g},message:"ly.img.ai.video-generation.success",action:{label:"ly.img.ai.video-generation.success.action",onClick:()=>{t.ui.experimental.setGlobalStateValue(Un,c),t.ui.openPanel(P)}},duration:"long"}}}o!=null&&(o.output.notification=l("fromText")),i!=null&&(i.output.notification=l("fromImage"));let u=o!=null?await oo(o,{cesdk:t,engine:t.engine},r):void 0,s=i!=null?await oo(i,{cesdk:t,engine:t.engine},r):void 0;if(u?.renderBuilderFunctions?.panel==null&&s?.renderBuilderFunctions?.panel==null){r.debug&&console.log("No providers are initialized \u2013 doing nothing");return}if(u?.renderBuilderFunctions?.panel!=null&&s?.renderBuilderFunctions?.panel!=null)t.ui.registerPanel(P,c=>{let{builder:d,experimental:g}=c,f=g.global(Un,"fromText");switch(d.Section(`${P}.fromType.section`,{children:()=>{d.ButtonGroup(`${P}.fromType.buttonGroup`,{inputLabel:"Input",children:()=>{d.Button(`${P}.fromType.buttonGroup.fromText`,{label:"Text",icon:f.value!=="fromText"&&o!=null&&g.global(Qt(o.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromText",onClick:()=>{f.setValue("fromText")}}),d.Button(`${P}.fromType.buttonGroup.fromImage`,{label:"Image",icon:f.value!=="fromImage"&&i!=null&&g.global(Qt(i.id),!1).value?"@imgly/LoadingSpinner":void 0,isActive:f.value==="fromImage",onClick:()=>{f.setValue("fromImage")}})}})}}),f.value){case"fromText":{u?.renderBuilderFunctions?.panel?.(c);break}case"fromImage":{s?.renderBuilderFunctions?.panel?.(c);break}default:}});else{let c=u?.renderBuilderFunctions?.panel??s?.renderBuilderFunctions?.panel;if(c==null)return;t.ui.registerPanel(P,c),t.i18n.setTranslations({en:{[`${P}.dock.label`]:"AI Video"}}),Iy({cesdk:t,panelId:P})}}}}var Sy=Ey,jy=e=>({name:Ay,version:"0.1.8",...Sy(e)}),$o=jy;function Ko(e,t){if(!t.startsWith("#/"))throw new Error(`External references are not supported: ${t}`);let r=t.substring(2).split("/"),n=e;for(let a of r){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 mt(e,t,r=new Set){if(t==null||r.has(t))return t;if(r.add(t),t.$ref&&typeof t.$ref=="string"){let n=Ko(e,t.$ref),a={...mt(e,n,r)};for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&o!=="$ref"&&(a[o]=mt(e,t[o],r));return a}if(Array.isArray(t))return t.map(n=>mt(e,n,r));if(typeof t=="object"){let n={};for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=mt(e,t[a],r));return n}return t}function Ly(e){return mt(e,{...e})}function Ty(e,t=!1){let r=i=>(t&&console.log(`OpenAPI Schema validation failed: ${i}`),!1);if(typeof e!="object"||e===null)return r(`Input is ${e===null?"null":typeof e}, not an object`);let n=e;if(!(typeof n.type=="string"||Array.isArray(n.enum)||typeof n.properties=="object"||typeof n.items=="object"||typeof n.allOf=="object"||typeof n.anyOf=="object"||typeof n.oneOf=="object"||typeof n.not=="object"))return r("Missing required schema-defining properties (type, enum, properties, items, allOf, anyOf, oneOf, not)");if(n.type!==void 0){let i=["string","number","integer","boolean","array","object","null"];if(typeof n.type=="string"){if(!i.includes(n.type))return r(`Invalid type: ${n.type}. Must be one of ${i.join(", ")}`)}else if(Array.isArray(n.type)){for(let l of n.type)if(typeof l!="string"||!i.includes(l))return r(`Array of types contains invalid value: ${l}. Must be one of ${i.join(", ")}`)}else return r(`Type must be a string or array of strings, got ${typeof n.type}`)}if(n.items!==void 0&&(typeof n.items!="object"||n.items===null))return r(`Items must be an object, got ${n.items===null?"null":typeof n.items}`);if(n.properties!==void 0&&(typeof n.properties!="object"||n.properties===null))return r(`Properties must be an object, got ${n.properties===null?"null":typeof n.properties}`);let a=["allOf","anyOf","oneOf"];for(let i of a)if(n[i]!==void 0){if(!Array.isArray(n[i]))return r(`${i} must be an array, got ${typeof n[i]}`);for(let l=0;l<n[i].length;l++){let u=n[i][l];if(typeof u!="object"||u===null)return r(`Item ${l} in ${i} must be an object, got ${u===null?"null":typeof u}`)}}if(n.not!==void 0&&(typeof n.not!="object"||n.not===null))return r(`'not' must be an object, got ${n.not===null?"null":typeof n.not}`);if(n.additionalProperties!==void 0&&typeof n.additionalProperties!="boolean"&&(typeof n.additionalProperties!="object"||n.additionalProperties===null))return r(`additionalProperties must be a boolean or an object, got ${n.additionalProperties===null?"null":typeof n.additionalProperties}`);if(n.format!==void 0&&typeof n.format!="string")return r(`format must be a string, got ${typeof n.format}`);let o=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"];for(let i of o)if(n[i]!==void 0&&typeof n[i]!="number")return r(`${i} must be a number, got ${typeof n[i]}`);if(n.minLength!==void 0&&(typeof n.minLength!="number"||n.minLength<0))return r(`minLength must be a non-negative number, got ${typeof n.minLength=="number"?n.minLength:typeof n.minLength}`);if(n.maxLength!==void 0&&(typeof n.maxLength!="number"||n.maxLength<0))return r(`maxLength must be a non-negative number, got ${typeof n.maxLength=="number"?n.maxLength:typeof n.maxLength}`);if(n.pattern!==void 0&&typeof n.pattern!="string")return r(`pattern must be a string, got ${typeof n.pattern}`);if(n.minItems!==void 0&&(typeof n.minItems!="number"||n.minItems<0))return r(`minItems must be a non-negative number, got ${typeof n.minItems=="number"?n.minItems:typeof n.minItems}`);if(n.maxItems!==void 0&&(typeof n.maxItems!="number"||n.maxItems<0))return r(`maxItems must be a non-negative number, got ${typeof n.maxItems=="number"?n.maxItems:typeof n.maxItems}`);if(n.uniqueItems!==void 0&&typeof n.uniqueItems!="boolean")return r(`uniqueItems must be a boolean, got ${typeof n.uniqueItems}`);if(n.minProperties!==void 0&&(typeof n.minProperties!="number"||n.minProperties<0))return r(`minProperties must be a non-negative number, got ${typeof n.minProperties=="number"?n.minProperties:typeof n.minProperties}`);if(n.maxProperties!==void 0&&(typeof n.maxProperties!="number"||n.maxProperties<0))return r(`maxProperties must be a non-negative number, got ${typeof n.maxProperties=="number"?n.maxProperties:typeof n.maxProperties}`);if(n.required!==void 0){if(!Array.isArray(n.required))return r(`required must be an array, got ${typeof n.required}`);for(let i=0;i<n.required.length;i++){let l=n.required[i];if(typeof l!="string")return r(`Item ${i} in required array must be a string, got ${typeof l}`)}}return!0}function $y(e,t){if(e.properties==null)throw new Error("Input schema must have properties");let r=[];return Ny(e,t)??(Object.entries(e.properties).forEach(n=>{let a=n[0],o=n[1];r.push({id:a,schema:o})}),r)}function Ny(e,t){if(t.orderExtensionKeyword==null)return;let r=[];if(typeof t.orderExtensionKeyword!="string"&&!Array.isArray(t.orderExtensionKeyword))throw new Error("orderExtensionKeyword must be a string or an array of strings");let n=typeof t.orderExtensionKeyword=="string"?[t.orderExtensionKeyword]:t.orderExtensionKeyword,a=n.find(i=>i in e);if(a==null)return;let o=e[a];if(o==null||Array.isArray(o)===!1)throw new Error(`Extension keyword ${a} must be an array of strings`);if([...new Set(o)].forEach(i=>{let l=e.properties?.[i];l!=null&&r.push({id:i,schema:l})}),r.length===0)throw new Error(`Could not find any properties with order extension keyword(s) ${n.join(", ")}`);return r}var Jo=$y,Oy="ly.img.ai",Yn="ly.img.ai/temp";async function Dy(e,t){return e.engine.asset.findAllSources().includes(Yn)||e.engine.asset.addLocalSource(Yn),e.engine.asset.apply(Yn,t)}function Xo(e){return`${Oy}/${e}`}function _y(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 Py(){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 zy(e,t=0,r="image/jpeg",n=.8){return new Promise((a,o)=>{try{let i=document.createElement("video");i.crossOrigin="anonymous",i.style.display="none",i.addEventListener("loadedmetadata",()=>{i.currentTime=Math.min(t,i.duration),i.addEventListener("seeked",()=>{let l=document.createElement("canvas");l.width=i.videoWidth,l.height=i.videoHeight;let u=l.getContext("2d");if(!u){document.body.removeChild(i),o(new Error("Failed to create canvas context"));return}u.drawImage(i,0,0,l.width,l.height);try{let s=l.toDataURL(r,n);document.body.removeChild(i),a(s)}catch(s){document.body.removeChild(i),o(new Error(`Failed to create thumbnail: ${s instanceof Error?s.message:String(s)}`))}},{once:!0})}),i.addEventListener("error",()=>{document.body.removeChild(i),o(new Error(`Failed to load video from ${e}`))}),i.src=e,document.body.appendChild(i)}catch(i){o(i)}})}function ea(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 or(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 we(e){return e instanceof Error&&e.name==="AbortError"}function ta(e,t,r,n,a,o){let i=t.schema.type;if(n.renderCustomProperty!=null&&n.renderCustomProperty[t.id]!=null)return n.renderCustomProperty[t.id](e,t);switch(i){case"string":return t.schema.enum!=null?Uy(e,t,r,n,a,o):ra(e,t,r,n,a,o);case"boolean":return ia(e,t,r,n,a,o);case"number":case"integer":return oa(e,t,r,n,a,o);case"object":return na(e,t,r,n,a,o);case"array":break;case void 0:{if(t.schema.anyOf!=null&&Array.isArray(t.schema.anyOf))return Vy(e,t,r,n,a,o);break}default:console.error(`Unsupported property type: ${i}`)}}function na(e,t,r,n,a,o){let i=Jo(t.schema??{},n).reduce((l,u)=>{let s=ta(e,u,r,n,a,o);return s!=null&&(l[u.id]=s()),l},{});return()=>({id:t.id,type:"object",value:i})}function ra(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=l(s,t.schema.default??""),g=By(t.schema),f=g?.component!=null&&g?.component==="TextArea"?"TextArea":"TextInput";return i[f](s,{inputLabel:c,placeholder:a.i18n?.prompt,...d}),()=>({id:t.id,type:"string",value:d.value})}function Uy(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=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"]:{},g="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{},f=(t.schema.enum??[]).map(b=>({id:b,label:d[b]??ea(b),icon:g[b]})),v=t.schema.default!=null?f.find(b=>b.id===t.schema.default)??f[0]:f[0],w=l(s,v);return i.Select(s,{inputLabel:c,values:f,...w}),()=>({id:t.id,type:"string",value:w.value.id})}function ia(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=!!t.schema.default,g=l(s,d);return i.Checkbox(s,{inputLabel:c,...g}),()=>({id:t.id,type:"boolean",value:g.value})}function oa(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.minimum,g=t.schema.maximum,f=t.schema.default;f==null&&(d!=null?f=d:g!=null?f=g:f=0);let v=l(s,f);if(d!=null&&g!=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"]),i.Slider(s,{inputLabel:c,min:d,max:g,step:w,...v})}else i.NumberInput(s,{inputLabel:c,min:d,max:g,...v});return()=>({id:t.id,type:"integer",value:v.value})}function Vy(e,t,r,n,a,o){let{builder:i,experimental:{global:l}}=e,{id:u}=t,s=`${r.id}.${u}`,c=t.schema.title??s,d=t.schema.anyOf??[],g=[],f={},v={};d.forEach((p,h)=>{let m=p.title??"common.custom",y=`${r.id}.${u}.anyOf[${h}]`,k="x-imgly-enum-labels"in t.schema&&typeof t.schema["x-imgly-enum-labels"]=="object"?t.schema["x-imgly-enum-labels"]:{},C="x-imgly-enum-icons"in t.schema&&typeof t.schema["x-imgly-enum-icons"]=="object"?t.schema["x-imgly-enum-icons"]:{};p.type==="string"?p.enum!=null?p.enum.forEach(M=>{g.push({id:M,label:k[M]??ea(M),icon:C[M]})}):(f[y]=()=>ra(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="boolean"?(f[y]=()=>ia(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="integer"?(f[y]=()=>oa(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]})):p.type==="array"||p.type==="object"&&(f[y]=()=>na(e,{id:y,schema:{...p,title:m}},r,n,a,o),g.push({id:y,label:k[m]??m,icon:C[m]}))});let w=t.schema.default!=null?g.find(p=>p.id===t.schema.default)??g[0]:g[0],b=l(s,w);if(i.Select(s,{inputLabel:c,values:g,...b}),b.value.id in f){let p=f[b.value.id]();v[b.value.id]=p}return()=>{let p=v[b.value.id];return p!=null?{...p(),id:t.id}:{id:t.id,type:"string",value:b.value.id}}}function By(e){if("x-imgly-builder"in e)return e["x-imgly-builder"]}var Fy=ta,Gy="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIzIiBoZWlnaHQ9IjMyMyIgdmlld0JveD0iMCAwIDMyMyAzMjMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjMiIGhlaWdodD0iMzIzIiBmaWxsPSIjRTlFQkVEIi8+CjxnIG9wYWNpdHk9IjAuMyI+CjxwYXRoIGQ9Ik0xMTYgMTg0VjE5MS41QzExNiAxOTkuNzg0IDEyMi43MTYgMjA2LjUgMTMxIDIwNi41SDE5MUMxOTkuMjg0IDIwNi41IDIwNiAxOTkuNzg0IDIwNiAxOTEuNVYxMzEuNUMyMDYgMTIzLjIxNiAxOTkuMjg0IDExNi41IDE5MSAxMTYuNUwxOTAuOTk1IDEyNi41QzE5My43NTcgMTI2LjUgMTk2IDEyOC43MzkgMTk2IDEzMS41VjE5MS41QzE5NiAxOTQuMjYxIDE5My43NjEgMTk2LjUgMTkxIDE5Ni41SDEzMUMxMjguMjM5IDE5Ni41IDEyNiAxOTQuMjYxIDEyNiAxOTEuNVYxODRIMTE2WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTY2LjQ5NCAxMDUuOTI0QzE2NS44NjkgMTA0LjM0MiAxNjMuNjI5IDEwNC4zNDIgMTYzLjAwNSAxMDUuOTI0TDE1OS43NDUgMTE0LjE5MUMxNTkuNTU0IDExNC42NzQgMTU5LjE3MiAxMTUuMDU3IDE1OC42ODggMTE1LjI0N0wxNTAuNDIyIDExOC41MDhDMTQ4LjgzOSAxMTkuMTMyIDE0OC44MzkgMTIxLjM3MiAxNTAuNDIyIDEyMS45OTZMMTU4LjY4OCAxMjUuMjU2QzE1OS4xNzIgMTI1LjQ0NyAxNTkuNTU0IDEyNS44MjkgMTU5Ljc0NSAxMjYuMzEzTDE2My4wMDUgMTM0LjU3OUMxNjMuNjI5IDEzNi4xNjIgMTY1Ljg2OSAxMzYuMTYyIDE2Ni40OTQgMTM0LjU3OUwxNjkuNzU0IDEyNi4zMTNDMTY5Ljk0NCAxMjUuODI5IDE3MC4zMjcgMTI1LjQ0NyAxNzAuODEgMTI1LjI1NkwxNzkuMDc3IDEyMS45OTZDMTgwLjY2IDEyMS4zNzIgMTgwLjY2IDExOS4xMzIgMTc5LjA3NyAxMTguNTA4TDE3MC44MSAxMTUuMjQ3QzE3MC4zMjcgMTE1LjA1NyAxNjkuOTQ0IDExNC42NzQgMTY5Ljc1NCAxMTQuMTkxTDE2Ni40OTQgMTA1LjkyNFoiIGZpbGw9IiM4RjhGOEYiLz4KPHBhdGggZD0iTTEzMy4wMDUgMTI4LjQyNEMxMzMuNjI5IDEyNi44NDIgMTM1Ljg2OSAxMjYuODQyIDEzNi40OTQgMTI4LjQyNEwxNDEuODc1IDE0Mi4wN0MxNDIuMDY2IDE0Mi41NTMgMTQyLjQ0OCAxNDIuOTM1IDE0Mi45MzIgMTQzLjEyNkwxNTYuNTc3IDE0OC41MDhDMTU4LjE2IDE0OS4xMzIgMTU4LjE2IDE1MS4zNzIgMTU2LjU3NyAxNTEuOTk2TDE0Mi45MzIgMTU3LjM3OEMxNDIuNDQ4IDE1Ny41NjggMTQyLjA2NiAxNTcuOTUxIDE0MS44NzUgMTU4LjQzNEwxMzYuNDk0IDE3Mi4wNzlDMTM1Ljg2OSAxNzMuNjYyIDEzMy42MjkgMTczLjY2MiAxMzMuMDA1IDE3Mi4wNzlMMTI3LjYyMyAxNTguNDM0QzEyNy40MzMgMTU3Ljk1MSAxMjcuMDUgMTU3LjU2OCAxMjYuNTY3IDE1Ny4zNzhMMTEyLjkyMiAxNTEuOTk2QzExMS4zMzkgMTUxLjM3MiAxMTEuMzM5IDE0OS4xMzIgMTEyLjkyMiAxNDguNTA4TDEyNi41NjcgMTQzLjEyNkMxMjcuMDUgMTQyLjkzNSAxMjcuNDMzIDE0Mi41NTMgMTI3LjYyMyAxNDIuMDdMMTMzLjAwNSAxMjguNDI0WiIgZmlsbD0iIzhGOEY4RiIvPgo8cGF0aCBkPSJNMTk1Ljk5OSAxODQuMDA0VjE5MS41MDJDMTk1Ljk5OSAxOTQuMjYzIDE5My43NjEgMTk2LjUwMiAxOTAuOTk5IDE5Ni41MDJIMTQ3LjY2OEwxNzIuODc5IDE1OC42ODRDMTc0LjM2MyAxNTYuNDU4IDE3Ny42MzUgMTU2LjQ1OCAxNzkuMTIgMTU4LjY4NEwxOTUuOTk5IDE4NC4wMDRaIiBmaWxsPSIjOEY4RjhGIi8+CjwvZz4KPC9zdmc+Cg==",aa=Gy;function Ry(e,t,r){switch(t){case"image":return qy(e,r[t]);case"video":return Qy(e,r[t]);default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function qy(e,t){let r=t.width,n=t.height;return{id:e,meta:{previewUri:aa,fillType:"//ly.img.ubq/fill/image",kind:"image",width:r,height:n}}}function Qy(e,t){let r=t.width,n=t.height;return{id:e,label:t.label,meta:{previewUri:aa,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:r,height:n}}}var Hy=Ry;async function Yy(e,t,r,n){switch(t){case"image":{if(n.kind!=="image")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: image)`);return Zy(e,r[t],n)}case"video":{if(n.kind!=="video")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: video)`);return Wy(e,r[t],n)}case"audio":{if(n.kind!=="audio")throw new Error(`Output kind does not match the expected type: ${n.kind} (expected: audio)`);return Ky(e,r[t],n)}default:throw new Error(`Unsupported output kind for creating placeholder block: ${t}`)}}function Zy(e,t,r){let n=t.width,a=t.height;return{id:e,label:t.label,meta:{uri:r.url,thumbUri:r.url,fillType:"//ly.img.ubq/fill/image",kind:"image",width:n,height:a},payload:{sourceSet:[{uri:r.url,width:n,height:a}]}}}async function Wy(e,t,r){let n=t.width,a=t.height,o=await zy(r.url,0);return{id:e,label:t.label,meta:{uri:r.url,thumbUri:o,mimeType:"video/mp4",kind:"video",fillType:"//ly.img.ubq/fill/video",duration:t.duration.toString(),width:n,height:a}}}function Ky(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()}}}var No=Yy;function la(e){let t=e.filter(r=>!!r);return r=>async(n,a)=>{let o=[],i=s=>{o.push(s)},l=async(s,c,d)=>{if(s>=t.length)return r(c,d);let g=t[s],f=async(w,b)=>l(s+1,w,b),v={...d,addDisposer:i};return g(c,v,f)},u={...a,addDisposer:i};return{result:await l(0,n,u),dispose:async()=>{for(let s=o.length-1;s>=0;s--)try{await o[s]()}catch(c){console.error("Error in disposer:",c)}o.length=0}}}}function Jy(){return async(e,t,r)=>{console.group("[GENERATION]"),console.log("Generating with input:",JSON.stringify(e,null,2));let n,a=Date.now();try{return n=await r(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 sa=Jy,Xy=class{constructor(e,t,r){this.assetStoreName="assets",this.blobStoreName="blobs",this.db=null,this.id=e,this.engine=t,this.dbName=r?.dbName??`ly.img.assetSource/${e}`,this.dbVersion=r?.dbVersion??1}async initialize(){if(!this.db)return new Promise((e,t)=>{let r=indexedDB.open(this.dbName,this.dbVersion);r.onerror=n=>{t(new Error(`Failed to open IndexedDB: ${n.target.error}`))},r.onupgradeneeded=n=>{let 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"})},r.onsuccess=n=>{this.db=n.target.result,e()}})}close(){this.db&&(this.db.close(),this.db=null)}async findAssets(e){if(await this.initialize(),!this.db)throw new Error("Database not initialized");try{let t=(await this.getAllAssets("asc")).reduce((u,s)=>{let c=e.locale??"en",d="",g=[];s.label!=null&&typeof s.label=="object"&&s.label[c]&&(d=s.label[c]),s.tags!=null&&typeof s.tags=="object"&&s.tags[c]&&(g=s.tags[c]);let f={...s,label:d,tags:g};return this.filterAsset(f,e)&&u.push(f),u},[]);t=await this.restoreBlobUrls(t),t=this.sortAssets(t,e);let{page:r,perPage:n}=e,a=r*n,o=a+n,i=t.slice(a,o),l=o<t.length?r+1:void 0;return{assets:i,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 n=new Set;r.result.forEach(o=>{o.groups&&Array.isArray(o.groups)&&o.groups.forEach(i=>n.add(i))});let a=[...n];e(a)},r.onerror=()=>{t(new Error(`Failed to get groups: ${r.error}`))}})}addAsset(e){this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.assetStoreName,"readwrite"),r=t.objectStore(this.assetStoreName),n=new Set;ke(e,o=>{n.add(o)}),setTimeout(()=>{this.storeBlobUrls([...n])});let a={...e,meta:{...e.meta,insertedAt:e.meta?.insertedAt||Date.now()}};r.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 r=this.db.transaction(this.assetStoreName,"readwrite");r.objectStore(this.assetStoreName).delete(e),r.oncomplete=()=>{ke(t,n=>{this.removeBlob(n)}),this.engine.asset.assetSourceContentsChanged(this.id)},r.onerror=()=>{console.error(`Failed to remove asset: ${r.error}`)}}).catch(r=>{console.error("Error initializing database:",r)})}async removeBlob(e){return this.initialize().then(()=>{if(!this.db)throw new Error("Database not initialized");let t=this.db.transaction(this.blobStoreName,"readwrite");t.objectStore(this.blobStoreName).delete(e),t.onerror=()=>{console.error(`Failed to remove blob: ${t.error}`)}}).catch(t=>{console.error("Error initializing database:",t)})}async getAllAssets(e="desc"){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).getAll();n.onsuccess=()=>{let a=n.result;a.sort((o,i)=>{let l=o.meta?.insertedAt||o._insertedAt||Date.now(),u=i.meta?.insertedAt||i._insertedAt||Date.now();return e==="asc"?l-u:u-l}),t(a)},n.onerror=()=>{r(new Error(`Failed to get assets: ${n.error}`))}})}async getAsset(e){return new Promise((t,r)=>{let n=this.db.transaction(this.assetStoreName,"readonly").objectStore(this.assetStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async getBlob(e){return new Promise((t,r)=>{let n=this.db.transaction(this.blobStoreName,"readonly").objectStore(this.blobStoreName).get(e);n.onsuccess=()=>{t(n.result)},n.onerror=()=>{r(new Error(`Failed to get blob: ${n.error}`))}})}async createBlobUrlFromStore(e){let t=await this.getBlob(e);return t!=null?URL.createObjectURL(t.blob):e}async storeBlobUrls(e){let t={};return await Promise.all(e.map(async r=>{let n=await(await fetch(r)).blob();t[r]=n})),this.initialize().then(async()=>{if(!this.db)throw new Error("Database not initialized");let r=this.db.transaction(this.blobStoreName,"readwrite"),n=r.objectStore(this.blobStoreName);Object.entries(t).forEach(([a,o])=>{let i={id:a,blob:o};n.put(i)}),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 ke(e,n=>{r.add(n)}),await Promise.all([...r].map(async n=>{let a=await this.createBlobUrlFromStore(n);t[n]=a})),ke(e,n=>t[n]??n)}filterAsset(e,t){let{query:r,tags:n,groups:a,excludeGroups:o}=t;if(r&&r.trim()!==""){let i=r.trim().toLowerCase().split(" "),l=e.label?.toLowerCase()??"",u=e.tags?.map(s=>s.toLowerCase())??[];if(!i.every(s=>l.includes(s)||u.some(c=>c.includes(s))))return!1}if(n){let i=Array.isArray(n)?n:[n];if(i.length>0&&(!e.tags||!i.every(l=>e.tags?.includes(l))))return!1}return!(a&&a.length>0&&(!e.groups||!a.some(i=>e.groups?.includes(i)))||o&&o.length>0&&e.groups&&e.groups.some(i=>o.includes(i)))}sortAssets(e,t){let{sortingOrder:r,sortKey:n,sortActiveFirst:a}=t,o=[...e];return!r||r==="None"||(n?o.sort((i,l)=>{let u,s;return n==="id"?(u=i.id,s=l.id):(u=i.meta?.[n]??null,s=l.meta?.[n]??null),u==null?r==="Ascending"?-1:1:s==null?r==="Ascending"?1:-1:typeof u=="string"&&typeof s=="string"?r==="Ascending"?u.localeCompare(s):s.localeCompare(u):r==="Ascending"?u<s?-1:u>s?1:0:u>s?-1:u<s?1:0}):r==="Descending"&&o.reverse(),a&&o.sort((i,l)=>i.active&&!l.active?-1:!i.active&&l.active?1:0)),o}};function ke(e,t,r=""){if(e===null||typeof e!="object")return e;if(Array.isArray(e)){for(let n=0;n<e.length;n++){let a=r?`${r}[${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]=ke(e[n],t,a)}return e}for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let a=e[n],o=r?`${r}.${n}`:n;if(typeof a=="string"&&a.startsWith("blob:")){let i=t(a,o);typeof i=="string"&&(e[n]=i)}else e[n]=ke(a,t,o)}return e}var eb=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)}},ua=eb,tb=typeof global=="object"&&global&&global.Object===Object&&global,ca=tb,nb=typeof self=="object"&&self&&self.Object===Object&&self,rb=ca||nb||Function("return this")(),B=rb,ib=B.Symbol,Ce=ib,da=Object.prototype,ob=da.hasOwnProperty,ab=da.toString,dt=Ce?Ce.toStringTag:void 0;function lb(e){var t=ob.call(e,dt),r=e[dt];try{e[dt]=void 0;var n=!0}catch{}var a=ab.call(e);return n&&(t?e[dt]=r:delete e[dt]),a}var sb=lb,ub=Object.prototype,cb=ub.toString;function db(e){return cb.call(e)}var gb=db,pb="[object Null]",mb="[object Undefined]",Oo=Ce?Ce.toStringTag:void 0;function fb(e){return e==null?e===void 0?mb:pb:Oo&&Oo in Object(e)?sb(e):gb(e)}var vt=fb;function yb(e){return e!=null&&typeof e=="object"}var ar=yb,CC=Array.isArray;function bb(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var ga=bb,hb="[object AsyncFunction]",vb="[object Function]",kb="[object GeneratorFunction]",wb="[object Proxy]";function Cb(e){if(!ga(e))return!1;var t=vt(e);return t==vb||t==kb||t==hb||t==wb}var Mb=Cb,xb=B["__core-js_shared__"],Zn=xb,Do=function(){var e=/[^.]+$/.exec(Zn&&Zn.keys&&Zn.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ib(e){return!!Do&&Do in e}var Ab=Ib,Eb=Function.prototype,Sb=Eb.toString;function jb(e){if(e!=null){try{return Sb.call(e)}catch{}try{return e+""}catch{}}return""}var H=jb,Lb=/[\\^$.*+?()[\]{}|]/g,Tb=/^\[object .+?Constructor\]$/,$b=Function.prototype,Nb=Object.prototype,Ob=$b.toString,Db=Nb.hasOwnProperty,_b=RegExp("^"+Ob.call(Db).replace(Lb,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Pb(e){if(!ga(e)||Ab(e))return!1;var t=Mb(e)?_b:Tb;return t.test(H(e))}var zb=Pb;function Ub(e,t){return e?.[t]}var Vb=Ub;function Bb(e,t){var r=Vb(e,t);return zb(r)?r:void 0}var Me=Bb,Fb=Me(B,"WeakMap"),Xn=Fb;function Gb(e,t){return e===t||e!==e&&t!==t}var Rb=Gb,qb=9007199254740991;function Qb(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=qb}var Hb=Qb,MC=Object.prototype,Yb="[object Arguments]";function Zb(e){return ar(e)&&vt(e)==Yb}var _o=Zb,pa=Object.prototype,Wb=pa.hasOwnProperty,Kb=pa.propertyIsEnumerable,xC=_o(function(){return arguments}())?_o:function(e){return ar(e)&&Wb.call(e,"callee")&&!Kb.call(e,"callee")},ma=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Po=ma&&typeof module=="object"&&module&&!module.nodeType&&module,Jb=Po&&Po.exports===ma,zo=Jb?B.Buffer:void 0,IC=zo?zo.isBuffer:void 0,Xb="[object Arguments]",e4="[object Array]",t4="[object Boolean]",n4="[object Date]",r4="[object Error]",i4="[object Function]",o4="[object Map]",a4="[object Number]",l4="[object Object]",s4="[object RegExp]",u4="[object Set]",c4="[object String]",d4="[object WeakMap]",g4="[object ArrayBuffer]",p4="[object DataView]",m4="[object Float32Array]",f4="[object Float64Array]",y4="[object Int8Array]",b4="[object Int16Array]",h4="[object Int32Array]",v4="[object Uint8Array]",k4="[object Uint8ClampedArray]",w4="[object Uint16Array]",C4="[object Uint32Array]",j={};j[m4]=j[f4]=j[y4]=j[b4]=j[h4]=j[v4]=j[k4]=j[w4]=j[C4]=!0;j[Xb]=j[e4]=j[g4]=j[t4]=j[p4]=j[n4]=j[r4]=j[i4]=j[o4]=j[a4]=j[l4]=j[s4]=j[u4]=j[c4]=j[d4]=!1;function M4(e){return ar(e)&&Hb(e.length)&&!!j[vt(e)]}var x4=M4;function I4(e){return function(t){return e(t)}}var A4=I4,fa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yt=fa&&typeof module=="object"&&module&&!module.nodeType&&module,E4=yt&&yt.exports===fa,Wn=E4&&ca.process,S4=function(){try{var e=yt&&yt.require&&yt.require("util").types;return e||Wn&&Wn.binding&&Wn.binding("util")}catch{}}(),Uo=S4,Vo=Uo&&Uo.isTypedArray,AC=Vo?A4(Vo):x4,j4=Object.prototype,EC=j4.hasOwnProperty;function L4(e,t){return function(r){return e(t(r))}}var T4=L4,SC=T4(Object.keys,Object),$4=Object.prototype,jC=$4.hasOwnProperty,N4=Me(Object,"create"),bt=N4;function O4(){this.__data__=bt?bt(null):{},this.size=0}var D4=O4;function _4(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var P4=_4,z4="__lodash_hash_undefined__",U4=Object.prototype,V4=U4.hasOwnProperty;function B4(e){var t=this.__data__;if(bt){var r=t[e];return r===z4?void 0:r}return V4.call(t,e)?t[e]:void 0}var F4=B4,G4=Object.prototype,R4=G4.hasOwnProperty;function q4(e){var t=this.__data__;return bt?t[e]!==void 0:R4.call(t,e)}var Q4=q4,H4="__lodash_hash_undefined__";function Y4(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=bt&&t===void 0?H4:t,this}var Z4=Y4;function xe(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}xe.prototype.clear=D4;xe.prototype.delete=P4;xe.prototype.get=F4;xe.prototype.has=Q4;xe.prototype.set=Z4;var Bo=xe;function W4(){this.__data__=[],this.size=0}var K4=W4;function J4(e,t){for(var r=e.length;r--;)if(Rb(e[r][0],t))return r;return-1}var Jt=J4,X4=Array.prototype,e5=X4.splice;function t5(e){var t=this.__data__,r=Jt(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():e5.call(t,r,1),--this.size,!0}var n5=t5;function r5(e){var t=this.__data__,r=Jt(t,e);return r<0?void 0:t[r][1]}var i5=r5;function o5(e){return Jt(this.__data__,e)>-1}var a5=o5;function l5(e,t){var r=this.__data__,n=Jt(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var s5=l5;function Ie(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ie.prototype.clear=K4;Ie.prototype.delete=n5;Ie.prototype.get=i5;Ie.prototype.has=a5;Ie.prototype.set=s5;var Xt=Ie,u5=Me(B,"Map"),ht=u5;function c5(){this.size=0,this.__data__={hash:new Bo,map:new(ht||Xt),string:new Bo}}var d5=c5;function g5(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var p5=g5;function m5(e,t){var r=e.__data__;return p5(t)?r[typeof t=="string"?"string":"hash"]:r.map}var en=m5;function f5(e){var t=en(this,e).delete(e);return this.size-=t?1:0,t}var y5=f5;function b5(e){return en(this,e).get(e)}var h5=b5;function v5(e){return en(this,e).has(e)}var k5=v5;function w5(e,t){var r=en(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var C5=w5;function Ae(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ae.prototype.clear=d5;Ae.prototype.delete=y5;Ae.prototype.get=h5;Ae.prototype.has=k5;Ae.prototype.set=C5;var ya=Ae;function M5(){this.__data__=new Xt,this.size=0}var x5=M5;function I5(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var A5=I5;function E5(e){return this.__data__.get(e)}var S5=E5;function j5(e){return this.__data__.has(e)}var L5=j5,T5=200;function $5(e,t){var r=this.__data__;if(r instanceof Xt){var n=r.__data__;if(!ht||n.length<T5-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new ya(n)}return r.set(e,t),this.size=r.size,this}var N5=$5;function kt(e){var t=this.__data__=new Xt(e);this.size=t.size}kt.prototype.clear=x5;kt.prototype.delete=A5;kt.prototype.get=S5;kt.prototype.has=L5;kt.prototype.set=N5;var O5=Object.prototype,LC=O5.propertyIsEnumerable,D5=Me(B,"DataView"),er=D5,_5=Me(B,"Promise"),tr=_5,P5=Me(B,"Set"),nr=P5,Fo="[object Map]",z5="[object Object]",Go="[object Promise]",Ro="[object Set]",qo="[object WeakMap]",Qo="[object DataView]",U5=H(er),V5=H(ht),B5=H(tr),F5=H(nr),G5=H(Xn),ve=vt;(er&&ve(new er(new ArrayBuffer(1)))!=Qo||ht&&ve(new ht)!=Fo||tr&&ve(tr.resolve())!=Go||nr&&ve(new nr)!=Ro||Xn&&ve(new Xn)!=qo)&&(ve=function(e){var t=vt(e),r=t==z5?e.constructor:void 0,n=r?H(r):"";if(n)switch(n){case U5:return Qo;case V5:return Fo;case B5:return Go;case F5:return Ro;case G5:return qo}return t});var TC=B.Uint8Array,R5="__lodash_hash_undefined__";function q5(e){return this.__data__.set(e,R5),this}var Q5=q5;function H5(e){return this.__data__.has(e)}var Y5=H5;function rr(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new ya;++t<r;)this.add(e[t])}rr.prototype.add=rr.prototype.push=Q5;rr.prototype.has=Y5;var Ho=Ce?Ce.prototype:void 0,$C=Ho?Ho.valueOf:void 0,Z5=Object.prototype,NC=Z5.hasOwnProperty,W5=Object.prototype,OC=W5.hasOwnProperty,DC=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),_C=new RegExp(/[A-Fa-f0-9]{1}/,"g"),PC=new RegExp(/[A-Fa-f0-9]{2}/,"g");function K5(e){return{"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg"}[e]??"png"}async function ba(e,t){if(e.startsWith("buffer:")){let r=await t.editor.getMimeType(e),n=t.editor.getBufferLength(e),a=t.editor.getBufferData(e,0,n),o=new Blob([a],{type:r});return URL.createObjectURL(o)}else return e}async function ir(e,t){let r=await ba(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=r})}async function J5(e,t,r){let n,a=t.block.getFill(e),o=t.block.getSourceSet(a,"fill/image/sourceSet"),[i]=o;if(i==null){if(n=t.block.getString(a,"fill/image/imageFileURI"),n==null)throw new Error("No image source/uri found")}else n=i.uri;if(r?.throwErrorIfSvg&&await t.editor.getMimeType(n)==="image/svg+xml")throw new Error("SVG images are not supported");return ba(n,t)}function X5(e){return async(t,r)=>(console.log(`[DRY RUN]: Requesting dummy AI generation for kind '${e.kind}' with inputs: `,JSON.stringify(t,void 0,2)),await rh(2e3),await eh(t,e,r))}async function eh(e,t,r){switch(t.kind){case"image":return th(e,t,r);case"video":return nh(e,t,r);default:throw new Error(`Unsupported output kind for creating dry run output: ${t.kind}`)}}async function th(e,t,{engine:r}){let n,a,o=e!=null&&typeof e=="object"&&"prompt"in e&&typeof e.prompt=="string"?e.prompt:"AI Generated Image",i=o.match(/(\d+)x(\d+)/);if(i!=null)n=parseInt(i[1],10),a=parseInt(i[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,u=await J5(l,r),s=await ir(u,r);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(`
201
201
  `,"+")}`}}async function nh(e,t,r){return Promise.resolve({kind:"video",url:"https://storage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"})}async function rh(e){return new Promise(t=>{setTimeout(t,e)})}var ha=X5;async function ih(e,t,r,n,a,o,i){let{cesdk:l,createPlaceholderBlock:u,historyAssetSourceId:s}=a,c;try{o.debug&&console.group(`Starting Generation for '${e}'`);let d=t(),g=await r(d.input),f=Py(),v;if(u){if(v=Hy(f,e,g),o.debug&&console.log("Adding as asset to scene:",JSON.stringify(v,void 0,2)),c=await Dy(l,v),c!=null&&n.kind==="video"){let h=l.engine.block.getPositionX(c),m=l.engine.block.getPositionY(c),y=l.engine.block.duplicate(c);l.engine.block.setPositionX(y,h),l.engine.block.setPositionY(y,m),l.engine.block.destroy(c),c=y}if(Wt(l,i,c))return{status:"aborted"};if(c==null)throw new Error("Could not create placeholder block");l.engine.block.setState(c,{type:"Pending",progress:0})}let w=la([...n.output.middleware??[],o.debug?sa():void 0,o.dryRun?ha({kind:n.kind,blockInputs:g}):void 0]),{result:b}=await w(n.output.generate)(d.input,{abortSignal:i,engine:a.engine,cesdk:l});if(or(b))throw new Error("Streaming generation is not supported yet from a panel");if(Wt(l,i,c))return{status:"aborted"};if(b==null)throw new Error("Generation failed");o.debug&&console.log("Generated output:",JSON.stringify(b,void 0,2));let p;if(c!=null&&l.engine.block.isValid(c)&&(p=await No(f,e,g,b),o.debug&&console.log("Updating asset in scene:",JSON.stringify(p,void 0,2)),await l.engine.asset.defaultApplyAssetToBlock(p,c)),Wt(l,i,c))return{status:"aborted"};if(s!=null){if(p==null&&(p=await No(f,e,g,b),Wt(l,i,c)))return{status:"aborted"};let h={...p,id:`${Date.now()}-${p.id}`,label:p.label!=null?{en:p.label}:{},tags:{}};l.engine.asset.addAssetToSource(s,h)}return c!=null&&l.engine.block.isValid(c)&&l.engine.block.setState(c,{type:"Ready"}),{status:"success",output:b}}catch(d){throw c!=null&&l.engine.block.isValid(c)&&(we(d)?l.engine.block.destroy(c):l.engine.block.setState(c,{type:"Error",error:"Unknown"})),d}finally{o.debug&&console.groupEnd()}}function Wt(e,t,r){return t.aborted?(r!=null&&e.engine.block.isValid(r)&&e.engine.block.destroy(r),!0):!1}var oh=ih;function ah(e,t,r){let{cesdk:n,provider:a,getInput:o}=t;r.onError!=null&&typeof r.onError=="function"?r.onError(e):(console.error("Generation failed:",e),lh(n,a.output.notification,()=>({input:o?.().input,error:e}))||n.ui.showNotification({type:"error",message:_y(e)}))}function lh(e,t,r){let n=t?.error;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let a=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.failed",o=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"error",message:a,action:o}),!0}var ft=ah;function va(e){return`${e}.generating`}function sh(e){return`${e}.abort`}function uh(e,t,r,n,a,o){let{builder:i,experimental:l}=e,{cesdk:u,includeHistoryLibrary:s=!0}=a,{id:c,output:{abortable:d}}=t,g=l.global(sh(c),()=>{}),f=l.global(va(c),!1),v,w=f.value&&d,b=()=>{w&&(g.value(),f.setValue(!1),g.setValue(()=>{}))},p;if(a.requiredInputs!=null&&a.requiredInputs.length>0){let m=r();p=a.requiredInputs.every(y=>!m.input[y])}let h=l.global(`${c}.confirmationDialogId`,void 0);i.Section(`${c}.generate.section`,{children:()=>{i.Button(`${c}.generate`,{label:["common.ai-generation.generate",`panel.${c}.generate`],isLoading:f.value,color:"accent",isDisabled:p,suffix:w?{icon:"@imgly/Cross",color:"danger",tooltip:[`panel.${c}.abort`,"common.cancel"],onClick:()=>{let m=u.ui.showDialog({type:"warning",content:"panel.ly.img.ai.generation.confirmCancel.content",cancel:{label:"common.close",onClick:({id:y})=>{u.ui.closeDialog(y),h.setValue(void 0)}},actions:{label:"panel.ly.img.ai.generation.confirmCancel.confirm",color:"danger",onClick:({id:y})=>{b(),u.ui.closeDialog(y),h.setValue(void 0)}}});h.setValue(m)}}:void 0,onClick:async()=>{v=new AbortController;let m=v.signal,y=async()=>{try{f.setValue(!0),g.setValue(()=>{o.debug&&console.log("Aborting generation"),v?.abort()});let k=await oh(t.kind,r,n,t,a,o,m);if(k.status==="aborted")return;let C=t.output.notification;ch(u,C,()=>({input:r().input,output:k.output}))}catch(k){if(we(k))return;ft(k,{cesdk:u,provider:t,getInput:r},o)}finally{v=void 0,f.setValue(!1),g.setValue(()=>{}),h.value!=null&&(u.ui.closeDialog(h.value),h.setValue(void 0))}};o.middleware!=null?await o.middleware(y,{provider:t,abort:b}):await y()}}),t.output.generationHintText!=null&&i.Text(`${c}.generation-hint`,{align:"center",content:t.output.generationHintText})}}),s&&a.historyAssetLibraryEntryId!=null&&i.Library(`${c}.history.library`,{entries:[a.historyAssetLibraryEntryId]})}function ch(e,t,r){let n=t?.success;if(n==null||!(typeof n.show=="function"?n.show(r()):n.show))return!1;let a=typeof n.message=="function"?n.message(r()):n.message??"common.ai-generation.success",o=n.action!=null?{label:typeof n.action.label=="function"?n.action.label(r()):n.action.label,onClick:()=>{n?.action?.onClick(r())}}:void 0;return e.ui.showNotification({type:"success",message:a,action:o,duration:n.duration}),!0}var ka=uh;async function dh(e,t,r,n){let{cesdk:a}=r,{id:o}=e;n.debug&&console.log(`Registering schema-based panel input for provider ${o}`);let i=Ly(t.document),l=Ko(i,t.inputReference);if(!Ty(l,n.debug))throw new Error(`Input reference '${t.inputReference}' does not resolve to a valid OpenAPI schema`);let u=l,s=Jo(u,t),c=d=>{let{builder:g}=d,f=[];g.Section(`${o}.schema.section`,{children:()=>{s.forEach(p=>{let h=Fy(d,p,e,t,r,n);h!=null&&(Array.isArray(h)?f.push(...h):f.push(h))})}});let v=f.map(p=>p()),w=p=>p.type==="object"?Object.entries(p.value).reduce((h,[m,y])=>(h[m]=w(y),h),{}):p.value,b=v.reduce((p,h)=>(p[h.id]=w(h),p),{});ka(d,e,()=>({input:b}),()=>t.getBlockInput(b),{...r,requiredInputs:u.required,createPlaceholderBlock:t.userFlow==="placeholder"},n)};return a.ui.registerPanel(Xo(o),c),c}var gh=dh;async function ph(e,t,r,n){let{cesdk:a}=r,{id:o}=e,i=t.render,l=u=>{let{state:s}=u,c=s(va(o),{isGenerating:!1,abort:()=>{}}).value.isGenerating,{getInput:d,getBlockInput:g}=i(u,{cesdk:a,isGenerating:c});return ka(u,e,d,g,{...r,includeHistoryLibrary:t.includeHistoryLibrary??!0,createPlaceholderBlock:t.userFlow==="placeholder"},n),d};return a.ui.registerPanel(Xo(o),l),l}var mh=ph,Kn="@imgly/plugin-ai-generation",fh=`
202
202
  <svg>
203
203
  <symbol
@@ -259,7 +259,7 @@ var Ul="ly.img.ai";function _t(e){return`${Ul}/${e}`}var Vl=typeof global=="obje
259
259
 
260
260
  </symbol>
261
261
  </svg>
262
- `,yh=fh,Yo="ly.img.ai.quickAction.order",gt="ly.img.ai.quickAction.actions";function bh(e,t){return{id:t,setQuickActionMenuOrder:r=>{e.ui.experimental.setGlobalStateValue(`${Yo}.${t}`,r)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${Yo}.${t}`,[]),registerQuickAction:r=>{if(!e.ui.experimental.hasGlobalStateValue(`${gt}.${t}`))e.ui.experimental.setGlobalStateValue(`${gt}.${t}`,{[r.id]:r});else{let n=e.ui.experimental.getGlobalStateValue(`${gt}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${gt}.${t}`,{...n,[r.id]:r})}},getQuickAction:r=>e.ui.experimental.getGlobalStateValue(`${gt}.${t}`,{})[r]}}var wa=bh,Jn="ly.img.ai.inference.editMode",Ca="ly.img.ai.inference.metadata";function Ma(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function hh(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}function vh({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(r,n,a)=>{let o={},i={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&(o[u]=n.engine.block.isAlwaysOnTop(u),n.engine.block.setAlwaysOnTop(u,!0)),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(i[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&n.engine.block.setAlwaysOnTop(u,o[u]),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&i[s]!=null&&n.engine.block.setClipped(s,i[s])}})}),await a(r,n)}}var kh=vh;function wh({pending:e=!0}){return async(t,r,n)=>{let a=e?r.blockIds??r.engine.block.findAllSelected():[];try{return a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,r)}finally{a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Ready"})})}}}var Ch=wh;function Mh({editMode:e,automaticallyUnlock:t=!1}){return async(r,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),i=()=>{};t||n.addDisposer(async()=>{i?.()});try{return i=xh(n.engine,o,e),await a(r,n)}catch(l){throw we(l)&&i(),l}finally{t&&i()}}}function xh(e,t,r){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(r);let o=e.editor.createHistory(),i=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(c=>{t.includes(c)||e.block.setSelected(c,!1)}),t.forEach(c=>{e.block.setSelected(c,!0)})}let u=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&e.editor.setEditMode(r)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(i),e.editor.destroyHistory(o),s(),u()}}var Ih=Mh;function Ah(e,t){switch(t.kind){case"text":return Eh(e,t);case"image":return Sh(e,t);case"video":return jh(e,t);case"audio":return Lh(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function Eh(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t,o=n.map(s=>r.engine.block.getString(s,"text/text")),i;if(or(e)){let s="";for await(let c of e){if(a.aborted)break;typeof c=="string"?s=c:c.kind==="text"&&(s=c.text),n.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),i={kind:"text",text:s}}}else i=e;if(i==null||i.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",i.text)})},u=()=>{t.blockIds.forEach((s,c)=>{t.cesdk.engine.block.setString(s,"text/text",o[c])})};return{consumedGenerationResult:i,applyCallbacks:{onBefore:u,onAfter:l,onCancel:u,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function Sh(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,i=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(i,"fill/image/sourceSet"),[u]=l,s;u==null&&(s=r.engine.block.getString(i,"fill/image/imageFileURI"));let c=await r.engine.editor.getMimeType(u?.uri??s),d=await ir(u?.uri??s,t.cesdk.engine),g=d.width/d.height;if(a.throwIfAborted(),c==="image/svg+xml")throw new Error("SVG images are not supported");let f=r.engine.block.getCropScaleX(o),v=r.engine.block.getCropScaleY(o),w=r.engine.block.getCropTranslationX(o),b=r.engine.block.getCropTranslationY(o),p=r.engine.block.getCropRotation(o),h=()=>{r.engine.block.setCropScaleX(o,f),r.engine.block.setCropScaleY(o,v),r.engine.block.setCropTranslationX(o,w),r.engine.block.setCropTranslationY(o,b),r.engine.block.setCropRotation(o,p)};if(or(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 m=e.url,y=await r.engine.editor.getMimeType(m),k=await Th(r,m,y),C=await ir(k,t.cesdk.engine),M=C.width/C.height,x=Math.abs(g-M)>.001,I=u?[{uri:k,width:C.width,height:C.height}]:void 0,$=k;I==null?r.engine.block.setString(i,"fill/image/imageFileURI",$):(r.engine.block.setString(i,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(i,"fill/image/sourceSet",I)),x?r.engine.block.setContentFillMode(o,"Cover"):h();let O=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",l);h()},D=()=>{if(I==null){if($==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",$)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",I);x?r.engine.block.setContentFillMode(o,"Cover"):h()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:O,onAfter:D,onCancel:()=>{O()},onApply:()=>{D(),t.cesdk.engine.editor.addUndoStep()}}}}async function jh(e,t){throw new Error("Function not implemented.")}async function Lh(e,t){throw new Error("Function not implemented.")}async function Th(e,t,r){let n=await(await fetch(t)).blob(),a=new File([n],`image.${K5(r)}`,{type:r}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var $h=Ah;function Nh({editMode:e,automaticallyUnlock:t=!1,showNotification:r=!0}){return async(n,a,o)=>{let i=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=Oh(a.engine,i,e);let u=await o(n,a);if(r){let s=a.engine.block.findAllSelected();i.some(c=>s.includes(c))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{i.forEach(c=>{a.engine.block.select(c)})}}})}return u}catch(u){throw we(u)&&l(),u}finally{t&&l()}}}function Oh(e,t,r){function n(){let i=e.block.findAllSelected();return t.some(l=>i.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&n()&&e.editor.setEditMode(r)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(r):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(r),()=>{o(),a(),e.editor.setEditMode("Transform")}}var Dh=Nh;async function _h(e,t){let{cesdk:r,input:n,blockIds:a,provider:o,quickAction:i,confirmationComponentId:l,abortSignal:u}=e;i.confirmation&&r.ui.setCanvasMenuOrder([l],{editMode:Jn});let s=new ua(r.engine,Ca);a.forEach(p=>{s.set(p,{status:"processing",quickActionId:i.id})});let c={cesdk:r,engine:r.engine,abortSignal:u},d=la([...o.output.middleware??[],t.debug?sa():void 0,Ch({}),...i.confirmation?[i.lockDuringConfirmation?Ih({editMode:Jn}):Dh({editMode:Jn}),i.confirmation&&kh({})]:[],t.dryRun?ha({kind:o.kind,blockIds:a}):void 0]),{result:g,dispose:f}=await d(o.output.generate)(n,c),{consumedGenerationResult:v,applyCallbacks:w}=await $h(g,{abortSignal:u,kind:o.kind,blockIds:a,cesdk:r});i.confirmation?a.forEach(p=>{s.set(p,{status:"confirmation",quickActionId:i.id})}):(w.onApply(),a.forEach(p=>{s.clear(p)}));let b=()=>{f(),a.forEach(p=>{s.clear(p)})};return u.addEventListener("abort",b),{dispose:b,returnValue:v,applyCallbacks:w}}var Zo=_h;function Ph(e,t){let{cesdk:r,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,i=`${o}.confirmation`;r.setTranslations({en:{[`${i}.apply`]:"Apply",[`${i}.before`]:"Before",[`${i}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${i}.canvasnMenu`,u={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,g=d.signal;return u.abort=()=>{d.abort()},g};r.ui.registerComponent(l,({builder:d,engine:g,state:f})=>{let v=g.block.findAllSelected();if(v.length===0)return null;let w=new ua(r.engine,Ca),b=w.get(v[0]);if(b==null)return null;let p=()=>{v.forEach(h=>{w.clear(h)})};switch(b.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${b.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.abort(),p()}});break}case"confirmation":{let h=f(`${i}.comparing`,"after"),m=u.applyCallbacks?.onCancel;m!=null&&d.Button(`${i}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.unlock(),m(),p()}});let y=u.applyCallbacks?.onBefore,k=u.applyCallbacks?.onAfter;y!=null&&k!=null&&d.ButtonGroup(`${i}.compare`,{children:()=>{d.Button(`${i}.compare.before`,{label:`${i}.before`,variant:"regular",isActive:h.value==="before",onClick:()=>{y(),h.setValue("before")}}),d.Button(`${i}.compare.after`,{label:`${i}.after`,variant:"regular",isActive:h.value==="after",onClick:()=>{k(),h.setValue("after")}})}});let C=u.applyCallbacks?.onApply;C!=null&&d.Button(`${i}.apply`,{icon:"@imgly/Checkmark",tooltip:`${i}.apply`,color:"accent",isDisabled:h.value!=="after",onClick:()=>{u.unlock(),p(),r.engine.editor._update(),C()}});break}default:}});let c=`${o}.canvasMenu`;return r.ui.registerComponent(c,d=>{let g=d.engine.block.findAllSelected(),f=g.every(m=>d.engine.block.getState(m).type==="Ready"),v=n.getQuickActionMenuOrder().map(m=>{if(m==="ly.img.separator")return m;let y=n.getQuickAction(m);if(y==null||!r.feature.isEnabled(Ma({quickActionId:m,quickActionMenuId:n.id}),{engine:d.engine}))return null;let k=y.scopes;return k!=null&&k.length>0&&!g.every(C=>k.every(M=>d.engine.block.isAllowedByScope(C,M)))?null:y}).filter(m=>m!=null);if(v=hh(v),v.length===0||v.every(m=>m==="ly.img.separator"))return null;let{builder:w,experimental:b,state:p}=d,h=p(`${o}.toggleExpandedState`,void 0);b.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!f,trailingIcon:null,children:({close:m})=>{w.Section(`${o}.popover.section`,{children:()=>{if(h.value!=null){let y=h.value,k=n.getQuickAction(y);if(k!=null&&k.renderExpanded!=null){k.renderExpanded(d,{blockIds:g,closeMenu:m,toggleExpand:()=>{h.setValue(void 0)},handleGenerationError:C=>{ft(C,{cesdk:r,provider:a},t)},generate:async(C,M)=>{try{let{returnValue:x,applyCallbacks:I,dispose:$}=await Zo({input:C,quickAction:k,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:M?.blockIds??g,confirmationComponentId:l},t);return u.unlock=$,u.applyCallbacks=I,x}catch(x){throw we(x)||ft(x,{cesdk:r,provider:a},t),x}}});return}}b.builder.Menu(`${o}.menu`,{children:()=>{v.forEach(y=>{y==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):y.render(d,{blockIds:g,closeMenu:m,handleGenerationError:k=>{ft(k,{cesdk:r,provider:a},t)},toggleExpand:()=>{h.setValue(y.id)},generate:async(k,C)=>{try{let{returnValue:M,applyCallbacks:x,dispose:I}=await Zo({input:k,quickAction:y,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:C?.blockIds??g,confirmationComponentId:l},t);return u.unlock=I,u.applyCallbacks=x,M}catch(M){throw we(M)||ft(M,{cesdk:r,provider:a},t),M}}})})}})}})}})}),{canvasMenuComponentId:c}}var zh=Ph;async function Uh(e,t,r){await e.initialize?.(t);let n=await Bh(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}`]:Vh(e)}});let i="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(i)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",yh),t.cesdk.ui.experimental.setGlobalStateValue(i,!0)),{renderBuilderFunctions:await Fh(e,o,r)}}function Vh(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 Bh(e,t,r){if(!(r==null||r===!1)){if(r==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(r==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new Xy(n,e)),n}return r}}async function Fh(e,t,r){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await Gh(e,e.input.panel,t,r)),e.input?.quickActions!=null&&(r.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),Rh(e,e.input.quickActions,t,r)),n}async function Gh(e,t,r,n){switch(t.type){case"custom":return mh(e,t,r,n);case"schema":return gh(e,t,r,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function Rh(e,t,r,n){let{cesdk:a}=r,o={};t.actions.forEach(i=>{let l=i.kind??e.kind;o[l]==null&&(o[l]=wa(a,l));let u=o[l],s=i.enable??!0;a.feature.enable(Ma({quickActionId:i.id,quickActionMenuId:l}),s),u.registerQuickAction(i),n.debug&&console.log(`Registered quick action: '${i.id}' (v${i.version}) to menu '${l}'`)}),Object.values(o).forEach(i=>{let{canvasMenuComponentId:l}=zh({cesdk:a,quickActionMenu:i,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var Wo=Uh,qh="@imgly/plugin-ai-audio-generation-web",pt="ly.img.ai/audio-generation/speech",Kt="ly.img.ai/audio-generation/sound";function Qh(e){return{async initialize({cesdk:t}){if(t==null)return;let r={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.setTranslations({en:{[`panel.${pt}`]:"AI Voice",[`panel.${Kt}`]:"Sound Generation","ly.img.ai.audio-generation.speech.success":"Generation Successful","ly.img.ai.audio-generation.speech.success.action":"Show","ly.img.ai.audio-generation.sound.success":"Sound Generation Successful","ly.img.ai.audio-generation.sound.success.action":"Show"}});let n=e?.text2speech,a=e?.text2sound,o=await n?.({cesdk:t}),i=await a?.({cesdk:t});o!=null&&(o.output.notification={success:{show:()=>!t?.ui.isPanelOpen(pt),message:"ly.img.ai.audio-generation.speech.success",action:{label:"ly.img.ai.audio-generation.speech.success.action",onClick:()=>{t.ui.openPanel(pt)}},duration:"long"}}),i!=null&&(i.output.notification={success:{show:()=>!t?.ui.isPanelOpen(Kt),message:"ly.img.ai.audio-generation.sound.success",action:{label:"ly.img.ai.audio-generation.sound.success.action",onClick:()=>{t.ui.openPanel(Kt)}}}});let l=o!=null?await Wo(o,{cesdk:t,engine:t.engine},r):void 0,u=i!=null?await Wo(i,{cesdk:t,engine:t.engine},r):void 0;u?.renderBuilderFunctions?.panel!=null&&t.ui.registerPanel(Kt,u.renderBuilderFunctions.panel),l?.renderBuilderFunctions?.panel!=null&&(Hh(t,s=>{t.ui.openPanel(pt),t.ui.experimental.setGlobalStateValue(`${o?.id}.prompt`,s)}),t.ui.registerPanel(pt,l.renderBuilderFunctions.panel))}}}function Hh(e,t){let r=wa(e,"text"),n="generateSpeech";r.registerQuickAction({id:n,version:"1",confirmation:!1,enable:({engine:a})=>{let o=a.block.findAllSelected();if(o.length!==1)return!1;let[i]=o;return a.block.getType(i)==="//ly.img.ubq/text"},render:({builder:a},o)=>{a.Button(n,{icon:"@imgly/Audio",variant:"plain",labelAlignment:"left",label:"AI Voice...",onClick:()=>{let[i]=e.engine.block.findAllSelected(),l=e.engine.block.getString(i,"text/text");t(l),o.closeMenu()}})}}),r.setQuickActionMenuOrder([...r.getQuickActionMenuOrder(),"ly.img.separator",n])}var Yh=Qh,Zh=e=>({name:qh,version:"0.1.7",...Yh(e)}),xa=Zh;var Wh="@imgly/plugin-ai-text-generation",Kh=`
262
+ `,yh=fh,Yo="ly.img.ai.quickAction.order",gt="ly.img.ai.quickAction.actions";function bh(e,t){return{id:t,setQuickActionMenuOrder:r=>{e.ui.experimental.setGlobalStateValue(`${Yo}.${t}`,r)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${Yo}.${t}`,[]),registerQuickAction:r=>{if(!e.ui.experimental.hasGlobalStateValue(`${gt}.${t}`))e.ui.experimental.setGlobalStateValue(`${gt}.${t}`,{[r.id]:r});else{let n=e.ui.experimental.getGlobalStateValue(`${gt}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${gt}.${t}`,{...n,[r.id]:r})}},getQuickAction:r=>e.ui.experimental.getGlobalStateValue(`${gt}.${t}`,{})[r]}}var wa=bh,Jn="ly.img.ai.inference.editMode",Ca="ly.img.ai.inference.metadata";function Ma(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function hh(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}function vh({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(r,n,a)=>{let o={},i={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&(o[u]=n.engine.block.isAlwaysOnTop(u),n.engine.block.setAlwaysOnTop(u,!0)),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(i[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&n.engine.block.setAlwaysOnTop(u,o[u]),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&i[s]!=null&&n.engine.block.setClipped(s,i[s])}})}),await a(r,n)}}var kh=vh;function wh({pending:e=!0}){return async(t,r,n)=>{let a=e?r.blockIds??r.engine.block.findAllSelected():[];try{return a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,r)}finally{a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Ready"})})}}}var Ch=wh;function Mh({editMode:e,automaticallyUnlock:t=!1}){return async(r,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),i=()=>{};t||n.addDisposer(async()=>{i?.()});try{return i=xh(n.engine,o,e),await a(r,n)}catch(l){throw we(l)&&i(),l}finally{t&&i()}}}function xh(e,t,r){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(r);let o=e.editor.createHistory(),i=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(c=>{t.includes(c)||e.block.setSelected(c,!1)}),t.forEach(c=>{e.block.setSelected(c,!0)})}let u=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&e.editor.setEditMode(r)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(i),e.editor.destroyHistory(o),s(),u()}}var Ih=Mh;function Ah(e,t){switch(t.kind){case"text":return Eh(e,t);case"image":return Sh(e,t);case"video":return jh(e,t);case"audio":return Lh(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function Eh(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t,o=n.map(s=>r.engine.block.getString(s,"text/text")),i;if(or(e)){let s="";for await(let c of e){if(a.aborted)break;typeof c=="string"?s=c:c.kind==="text"&&(s=c.text),n.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),i={kind:"text",text:s}}}else i=e;if(i==null||i.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",i.text)})},u=()=>{t.blockIds.forEach((s,c)=>{t.cesdk.engine.block.setString(s,"text/text",o[c])})};return{consumedGenerationResult:i,applyCallbacks:{onBefore:u,onAfter:l,onCancel:u,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function Sh(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,i=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(i,"fill/image/sourceSet"),[u]=l,s;u==null&&(s=r.engine.block.getString(i,"fill/image/imageFileURI"));let c=await r.engine.editor.getMimeType(u?.uri??s),d=await ir(u?.uri??s,t.cesdk.engine),g=d.width/d.height;if(a.throwIfAborted(),c==="image/svg+xml")throw new Error("SVG images are not supported");let f=r.engine.block.getCropScaleX(o),v=r.engine.block.getCropScaleY(o),w=r.engine.block.getCropTranslationX(o),b=r.engine.block.getCropTranslationY(o),p=r.engine.block.getCropRotation(o),h=()=>{r.engine.block.setCropScaleX(o,f),r.engine.block.setCropScaleY(o,v),r.engine.block.setCropTranslationX(o,w),r.engine.block.setCropTranslationY(o,b),r.engine.block.setCropRotation(o,p)};if(or(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 m=e.url,y=await r.engine.editor.getMimeType(m),k=await Th(r,m,y),C=await ir(k,t.cesdk.engine),M=C.width/C.height,x=Math.abs(g-M)>.001,I=u?[{uri:k,width:C.width,height:C.height}]:void 0,$=k;I==null?r.engine.block.setString(i,"fill/image/imageFileURI",$):(r.engine.block.setString(i,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(i,"fill/image/sourceSet",I)),x?r.engine.block.setContentFillMode(o,"Cover"):h();let O=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",l);h()},D=()=>{if(I==null){if($==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",$)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",I);x?r.engine.block.setContentFillMode(o,"Cover"):h()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:O,onAfter:D,onCancel:()=>{O()},onApply:()=>{D(),t.cesdk.engine.editor.addUndoStep()}}}}async function jh(e,t){throw new Error("Function not implemented.")}async function Lh(e,t){throw new Error("Function not implemented.")}async function Th(e,t,r){let n=await(await fetch(t)).blob(),a=new File([n],`image.${K5(r)}`,{type:r}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var $h=Ah;function Nh({editMode:e,automaticallyUnlock:t=!1,showNotification:r=!0}){return async(n,a,o)=>{let i=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=Oh(a.engine,i,e);let u=await o(n,a);if(r){let s=a.engine.block.findAllSelected();i.some(c=>s.includes(c))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{i.forEach(c=>{a.engine.block.select(c)})}}})}return u}catch(u){throw we(u)&&l(),u}finally{t&&l()}}}function Oh(e,t,r){function n(){let i=e.block.findAllSelected();return t.some(l=>i.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&n()&&e.editor.setEditMode(r)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(r):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(r),()=>{o(),a(),e.editor.setEditMode("Transform")}}var Dh=Nh;async function _h(e,t){let{cesdk:r,input:n,blockIds:a,provider:o,quickAction:i,confirmationComponentId:l,abortSignal:u}=e;i.confirmation&&r.ui.setCanvasMenuOrder([l],{editMode:Jn});let s=new ua(r.engine,Ca);a.forEach(p=>{s.set(p,{status:"processing",quickActionId:i.id})});let c={cesdk:r,engine:r.engine,abortSignal:u},d=la([...o.output.middleware??[],t.debug?sa():void 0,Ch({}),...i.confirmation?[i.lockDuringConfirmation?Ih({editMode:Jn}):Dh({editMode:Jn}),i.confirmation&&kh({})]:[],t.dryRun?ha({kind:o.kind,blockIds:a}):void 0]),{result:g,dispose:f}=await d(o.output.generate)(n,c),{consumedGenerationResult:v,applyCallbacks:w}=await $h(g,{abortSignal:u,kind:o.kind,blockIds:a,cesdk:r});i.confirmation?a.forEach(p=>{s.set(p,{status:"confirmation",quickActionId:i.id})}):(w.onApply(),a.forEach(p=>{s.clear(p)}));let b=()=>{f(),a.forEach(p=>{s.clear(p)})};return u.addEventListener("abort",b),{dispose:b,returnValue:v,applyCallbacks:w}}var Zo=_h;function Ph(e,t){let{cesdk:r,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,i=`${o}.confirmation`;r.setTranslations({en:{[`${i}.apply`]:"Apply",[`${i}.before`]:"Before",[`${i}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${i}.canvasnMenu`,u={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,g=d.signal;return u.abort=()=>{d.abort()},g};r.ui.registerComponent(l,({builder:d,engine:g,state:f})=>{let v=g.block.findAllSelected();if(v.length===0)return null;let w=new ua(r.engine,Ca),b=w.get(v[0]);if(b==null)return null;let p=()=>{v.forEach(h=>{w.clear(h)})};switch(b.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${b.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.abort(),p()}});break}case"confirmation":{let h=f(`${i}.comparing`,"after"),m=u.applyCallbacks?.onCancel;m!=null&&d.Button(`${i}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.unlock(),m(),p()}});let y=u.applyCallbacks?.onBefore,k=u.applyCallbacks?.onAfter;y!=null&&k!=null&&d.ButtonGroup(`${i}.compare`,{children:()=>{d.Button(`${i}.compare.before`,{label:`${i}.before`,variant:"regular",isActive:h.value==="before",onClick:()=>{y(),h.setValue("before")}}),d.Button(`${i}.compare.after`,{label:`${i}.after`,variant:"regular",isActive:h.value==="after",onClick:()=>{k(),h.setValue("after")}})}});let C=u.applyCallbacks?.onApply;C!=null&&d.Button(`${i}.apply`,{icon:"@imgly/Checkmark",tooltip:`${i}.apply`,color:"accent",isDisabled:h.value!=="after",onClick:()=>{u.unlock(),p(),r.engine.editor._update(),C()}});break}default:}});let c=`${o}.canvasMenu`;return r.ui.registerComponent(c,d=>{let g=d.engine.block.findAllSelected(),f=g.every(m=>d.engine.block.getState(m).type==="Ready"),v=n.getQuickActionMenuOrder().map(m=>{if(m==="ly.img.separator")return m;let y=n.getQuickAction(m);if(y==null||!r.feature.isEnabled(Ma({quickActionId:m,quickActionMenuId:n.id}),{engine:d.engine}))return null;let k=y.scopes;return k!=null&&k.length>0&&!g.every(C=>k.every(M=>d.engine.block.isAllowedByScope(C,M)))?null:y}).filter(m=>m!=null);if(v=hh(v),v.length===0||v.every(m=>m==="ly.img.separator"))return null;let{builder:w,experimental:b,state:p}=d,h=p(`${o}.toggleExpandedState`,void 0);b.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!f,trailingIcon:null,children:({close:m})=>{w.Section(`${o}.popover.section`,{children:()=>{if(h.value!=null){let y=h.value,k=n.getQuickAction(y);if(k!=null&&k.renderExpanded!=null){k.renderExpanded(d,{blockIds:g,closeMenu:m,toggleExpand:()=>{h.setValue(void 0)},handleGenerationError:C=>{ft(C,{cesdk:r,provider:a},t)},generate:async(C,M)=>{try{let{returnValue:x,applyCallbacks:I,dispose:$}=await Zo({input:C,quickAction:k,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:M?.blockIds??g,confirmationComponentId:l},t);return u.unlock=$,u.applyCallbacks=I,x}catch(x){throw we(x)||ft(x,{cesdk:r,provider:a},t),x}}});return}}b.builder.Menu(`${o}.menu`,{children:()=>{v.forEach(y=>{y==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):y.render(d,{blockIds:g,closeMenu:m,handleGenerationError:k=>{ft(k,{cesdk:r,provider:a},t)},toggleExpand:()=>{h.setValue(y.id)},generate:async(k,C)=>{try{let{returnValue:M,applyCallbacks:x,dispose:I}=await Zo({input:k,quickAction:y,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:C?.blockIds??g,confirmationComponentId:l},t);return u.unlock=I,u.applyCallbacks=x,M}catch(M){throw we(M)||ft(M,{cesdk:r,provider:a},t),M}}})})}})}})}})}),{canvasMenuComponentId:c}}var zh=Ph;async function Uh(e,t,r){await e.initialize?.(t);let n=await Bh(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}`]:Vh(e)}});let i="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(i)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",yh),t.cesdk.ui.experimental.setGlobalStateValue(i,!0)),{renderBuilderFunctions:await Fh(e,o,r)}}function Vh(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 Bh(e,t,r){if(!(r==null||r===!1)){if(r==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(r==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new Xy(n,e)),n}return r}}async function Fh(e,t,r){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await Gh(e,e.input.panel,t,r)),e.input?.quickActions!=null&&(r.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),Rh(e,e.input.quickActions,t,r)),n}async function Gh(e,t,r,n){switch(t.type){case"custom":return mh(e,t,r,n);case"schema":return gh(e,t,r,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function Rh(e,t,r,n){let{cesdk:a}=r,o={};t.actions.forEach(i=>{let l=i.kind??e.kind;o[l]==null&&(o[l]=wa(a,l));let u=o[l],s=i.enable??!0;a.feature.enable(Ma({quickActionId:i.id,quickActionMenuId:l}),s),u.registerQuickAction(i),n.debug&&console.log(`Registered quick action: '${i.id}' (v${i.version}) to menu '${l}'`)}),Object.values(o).forEach(i=>{let{canvasMenuComponentId:l}=zh({cesdk:a,quickActionMenu:i,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var Wo=Uh,qh="@imgly/plugin-ai-audio-generation-web",pt="ly.img.ai/audio-generation/speech",Kt="ly.img.ai/audio-generation/sound";function Qh(e){return{async initialize({cesdk:t}){if(t==null)return;let r={debug:e.debug??!1,dryRun:e.dryRun??!1,middleware:e.middleware};t.setTranslations({en:{[`panel.${pt}`]:"AI Voice",[`panel.${Kt}`]:"Sound Generation","ly.img.ai.audio-generation.speech.success":"Generation Successful","ly.img.ai.audio-generation.speech.success.action":"Show","ly.img.ai.audio-generation.sound.success":"Sound Generation Successful","ly.img.ai.audio-generation.sound.success.action":"Show"}});let n=e?.text2speech,a=e?.text2sound,o=await n?.({cesdk:t}),i=await a?.({cesdk:t});o!=null&&(o.output.notification={success:{show:()=>!t?.ui.isPanelOpen(pt),message:"ly.img.ai.audio-generation.speech.success",action:{label:"ly.img.ai.audio-generation.speech.success.action",onClick:()=>{t.ui.openPanel(pt)}},duration:"long"}}),i!=null&&(i.output.notification={success:{show:()=>!t?.ui.isPanelOpen(Kt),message:"ly.img.ai.audio-generation.sound.success",action:{label:"ly.img.ai.audio-generation.sound.success.action",onClick:()=>{t.ui.openPanel(Kt)}}}});let l=o!=null?await Wo(o,{cesdk:t,engine:t.engine},r):void 0,u=i!=null?await Wo(i,{cesdk:t,engine:t.engine},r):void 0;u?.renderBuilderFunctions?.panel!=null&&t.ui.registerPanel(Kt,u.renderBuilderFunctions.panel),l?.renderBuilderFunctions?.panel!=null&&(Hh(t,s=>{t.ui.openPanel(pt),t.ui.experimental.setGlobalStateValue(`${o?.id}.prompt`,s)}),t.ui.registerPanel(pt,l.renderBuilderFunctions.panel))}}}function Hh(e,t){let r=wa(e,"text"),n="generateSpeech";r.registerQuickAction({id:n,version:"1",confirmation:!1,enable:({engine:a})=>{let o=a.block.findAllSelected();if(o.length!==1)return!1;let[i]=o;return a.block.getType(i)==="//ly.img.ubq/text"},render:({builder:a},o)=>{a.Button(n,{icon:"@imgly/Audio",variant:"plain",labelAlignment:"left",label:"AI Voice...",onClick:()=>{let[i]=e.engine.block.findAllSelected(),l=e.engine.block.getString(i,"text/text");t(l),o.closeMenu()}})}}),r.setQuickActionMenuOrder([...r.getQuickActionMenuOrder(),"ly.img.separator",n])}var Yh=Qh,Zh=e=>({name:qh,version:"0.1.8",...Yh(e)}),xa=Zh;var Wh="@imgly/plugin-ai-text-generation",Kh=`
263
263
  <svg>
264
264
  <symbol
265
265
  fill="none"
@@ -397,7 +397,7 @@ var Ul="ly.img.ai";function _t(e){return`${Ul}/${e}`}var Vl=typeof global=="obje
397
397
 
398
398
  </symbol>
399
399
  </svg>
400
- `,U8=z8,Va="ly.img.ai.quickAction.order",Ct="ly.img.ai.quickAction.actions";function V8(e,t){return{id:t,setQuickActionMenuOrder:r=>{e.ui.experimental.setGlobalStateValue(`${Va}.${t}`,r)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${Va}.${t}`,[]),registerQuickAction:r=>{if(!e.ui.experimental.hasGlobalStateValue(`${Ct}.${t}`))e.ui.experimental.setGlobalStateValue(`${Ct}.${t}`,{[r.id]:r});else{let n=e.ui.experimental.getGlobalStateValue(`${Ct}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${Ct}.${t}`,{...n,[r.id]:r})}},getQuickAction:r=>e.ui.experimental.getGlobalStateValue(`${Ct}.${t}`,{})[r]}}var gl=V8,dr="ly.img.ai.inference.editMode",pl="ly.img.ai.inference.metadata";function ml(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function B8(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}function F8({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(r,n,a)=>{let o={},i={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&(o[u]=n.engine.block.isAlwaysOnTop(u),n.engine.block.setAlwaysOnTop(u,!0)),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(i[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&n.engine.block.setAlwaysOnTop(u,o[u]),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&i[s]!=null&&n.engine.block.setClipped(s,i[s])}})}),await a(r,n)}}var G8=F8;function R8({pending:e=!0}){return async(t,r,n)=>{let a=e?r.blockIds??r.engine.block.findAllSelected():[];try{return a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,r)}finally{a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Ready"})})}}}var q8=R8;function Q8({editMode:e,automaticallyUnlock:t=!1}){return async(r,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),i=()=>{};t||n.addDisposer(async()=>{i?.()});try{return i=H8(n.engine,o,e),await a(r,n)}catch(l){throw je(l)&&i(),l}finally{t&&i()}}}function H8(e,t,r){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(r);let o=e.editor.createHistory(),i=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(c=>{t.includes(c)||e.block.setSelected(c,!1)}),t.forEach(c=>{e.block.setSelected(c,!0)})}let u=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&e.editor.setEditMode(r)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(i),e.editor.destroyHistory(o),s(),u()}}var Y8=Q8;function Z8(e,t){switch(t.kind){case"text":return W8(e,t);case"image":return K8(e,t);case"video":return J8(e,t);case"audio":return X8(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function W8(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t,o=n.map(s=>r.engine.block.getString(s,"text/text")),i;if(hr(e)){let s="";for await(let c of e){if(a.aborted)break;typeof c=="string"?s=c:c.kind==="text"&&(s=c.text),n.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),i={kind:"text",text:s}}}else i=e;if(i==null||i.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",i.text)})},u=()=>{t.blockIds.forEach((s,c)=>{t.cesdk.engine.block.setString(s,"text/text",o[c])})};return{consumedGenerationResult:i,applyCallbacks:{onBefore:u,onAfter:l,onCancel:u,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function K8(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,i=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(i,"fill/image/sourceSet"),[u]=l,s;u==null&&(s=r.engine.block.getString(i,"fill/image/imageFileURI"));let c=await r.engine.editor.getMimeType(u?.uri??s),d=await br(u?.uri??s,t.cesdk.engine),g=d.width/d.height;if(a.throwIfAborted(),c==="image/svg+xml")throw new Error("SVG images are not supported");let f=r.engine.block.getCropScaleX(o),v=r.engine.block.getCropScaleY(o),w=r.engine.block.getCropTranslationX(o),b=r.engine.block.getCropTranslationY(o),p=r.engine.block.getCropRotation(o),h=()=>{r.engine.block.setCropScaleX(o,f),r.engine.block.setCropScaleY(o,v),r.engine.block.setCropTranslationX(o,w),r.engine.block.setCropTranslationY(o,b),r.engine.block.setCropRotation(o,p)};if(hr(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 m=e.url,y=await r.engine.editor.getMimeType(m),k=await e6(r,m,y),C=await br(k,t.cesdk.engine),M=C.width/C.height,x=Math.abs(g-M)>.001,I=u?[{uri:k,width:C.width,height:C.height}]:void 0,$=k;I==null?r.engine.block.setString(i,"fill/image/imageFileURI",$):(r.engine.block.setString(i,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(i,"fill/image/sourceSet",I)),x?r.engine.block.setContentFillMode(o,"Cover"):h();let O=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",l);h()},D=()=>{if(I==null){if($==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",$)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",I);x?r.engine.block.setContentFillMode(o,"Cover"):h()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:O,onAfter:D,onCancel:()=>{O()},onApply:()=>{D(),t.cesdk.engine.editor.addUndoStep()}}}}async function J8(e,t){throw new Error("Function not implemented.")}async function X8(e,t){throw new Error("Function not implemented.")}async function e6(e,t,r){let n=await(await fetch(t)).blob(),a=new File([n],`image.${k8(r)}`,{type:r}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var t6=Z8;function n6({editMode:e,automaticallyUnlock:t=!1,showNotification:r=!0}){return async(n,a,o)=>{let i=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=r6(a.engine,i,e);let u=await o(n,a);if(r){let s=a.engine.block.findAllSelected();i.some(c=>s.includes(c))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{i.forEach(c=>{a.engine.block.select(c)})}}})}return u}catch(u){throw je(u)&&l(),u}finally{t&&l()}}}function r6(e,t,r){function n(){let i=e.block.findAllSelected();return t.some(l=>i.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&n()&&e.editor.setEditMode(r)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(r):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(r),()=>{o(),a(),e.editor.setEditMode("Transform")}}var i6=n6;async function o6(e,t){let{cesdk:r,input:n,blockIds:a,provider:o,quickAction:i,confirmationComponentId:l,abortSignal:u}=e;i.confirmation&&r.ui.setCanvasMenuOrder([l],{editMode:dr});let s=new el(r.engine,pl);a.forEach(p=>{s.set(p,{status:"processing",quickActionId:i.id})});let c={cesdk:r,engine:r.engine,abortSignal:u},d=Ja([...o.output.middleware??[],t.debug?Xa():void 0,q8({}),...i.confirmation?[i.lockDuringConfirmation?Y8({editMode:dr}):i6({editMode:dr}),i.confirmation&&G8({})]:[],t.dryRun?ul({kind:o.kind,blockIds:a}):void 0]),{result:g,dispose:f}=await d(o.output.generate)(n,c),{consumedGenerationResult:v,applyCallbacks:w}=await t6(g,{abortSignal:u,kind:o.kind,blockIds:a,cesdk:r});i.confirmation?a.forEach(p=>{s.set(p,{status:"confirmation",quickActionId:i.id})}):(w.onApply(),a.forEach(p=>{s.clear(p)}));let b=()=>{f(),a.forEach(p=>{s.clear(p)})};return u.addEventListener("abort",b),{dispose:b,returnValue:v,applyCallbacks:w}}var Ba=o6;function a6(e,t){let{cesdk:r,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,i=`${o}.confirmation`;r.setTranslations({en:{[`${i}.apply`]:"Apply",[`${i}.before`]:"Before",[`${i}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${i}.canvasnMenu`,u={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,g=d.signal;return u.abort=()=>{d.abort()},g};r.ui.registerComponent(l,({builder:d,engine:g,state:f})=>{let v=g.block.findAllSelected();if(v.length===0)return null;let w=new el(r.engine,pl),b=w.get(v[0]);if(b==null)return null;let p=()=>{v.forEach(h=>{w.clear(h)})};switch(b.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${b.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.abort(),p()}});break}case"confirmation":{let h=f(`${i}.comparing`,"after"),m=u.applyCallbacks?.onCancel;m!=null&&d.Button(`${i}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.unlock(),m(),p()}});let y=u.applyCallbacks?.onBefore,k=u.applyCallbacks?.onAfter;y!=null&&k!=null&&d.ButtonGroup(`${i}.compare`,{children:()=>{d.Button(`${i}.compare.before`,{label:`${i}.before`,variant:"regular",isActive:h.value==="before",onClick:()=>{y(),h.setValue("before")}}),d.Button(`${i}.compare.after`,{label:`${i}.after`,variant:"regular",isActive:h.value==="after",onClick:()=>{k(),h.setValue("after")}})}});let C=u.applyCallbacks?.onApply;C!=null&&d.Button(`${i}.apply`,{icon:"@imgly/Checkmark",tooltip:`${i}.apply`,color:"accent",isDisabled:h.value!=="after",onClick:()=>{u.unlock(),p(),r.engine.editor._update(),C()}});break}default:}});let c=`${o}.canvasMenu`;return r.ui.registerComponent(c,d=>{let g=d.engine.block.findAllSelected(),f=g.every(m=>d.engine.block.getState(m).type==="Ready"),v=n.getQuickActionMenuOrder().map(m=>{if(m==="ly.img.separator")return m;let y=n.getQuickAction(m);if(y==null||!r.feature.isEnabled(ml({quickActionId:m,quickActionMenuId:n.id}),{engine:d.engine}))return null;let k=y.scopes;return k!=null&&k.length>0&&!g.every(C=>k.every(M=>d.engine.block.isAllowedByScope(C,M)))?null:y}).filter(m=>m!=null);if(v=B8(v),v.length===0||v.every(m=>m==="ly.img.separator"))return null;let{builder:w,experimental:b,state:p}=d,h=p(`${o}.toggleExpandedState`,void 0);b.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!f,trailingIcon:null,children:({close:m})=>{w.Section(`${o}.popover.section`,{children:()=>{if(h.value!=null){let y=h.value,k=n.getQuickAction(y);if(k!=null&&k.renderExpanded!=null){k.renderExpanded(d,{blockIds:g,closeMenu:m,toggleExpand:()=>{h.setValue(void 0)},handleGenerationError:C=>{xt(C,{cesdk:r,provider:a},t)},generate:async(C,M)=>{try{let{returnValue:x,applyCallbacks:I,dispose:$}=await Ba({input:C,quickAction:k,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:M?.blockIds??g,confirmationComponentId:l},t);return u.unlock=$,u.applyCallbacks=I,x}catch(x){throw je(x)||xt(x,{cesdk:r,provider:a},t),x}}});return}}b.builder.Menu(`${o}.menu`,{children:()=>{v.forEach(y=>{y==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):y.render(d,{blockIds:g,closeMenu:m,handleGenerationError:k=>{xt(k,{cesdk:r,provider:a},t)},toggleExpand:()=>{h.setValue(y.id)},generate:async(k,C)=>{try{let{returnValue:M,applyCallbacks:x,dispose:I}=await Ba({input:k,quickAction:y,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:C?.blockIds??g,confirmationComponentId:l},t);return u.unlock=I,u.applyCallbacks=x,M}catch(M){throw je(M)||xt(M,{cesdk:r,provider:a},t),M}}})})}})}})}})}),{canvasMenuComponentId:c}}var l6=a6;async function s6(e,t,r){await e.initialize?.(t);let n=await c6(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}`]:u6(e)}});let i="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(i)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",U8),t.cesdk.ui.experimental.setGlobalStateValue(i,!0)),{renderBuilderFunctions:await d6(e,o,r)}}function u6(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 c6(e,t,r){if(!(r==null||r===!1)){if(r==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(r==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new C9(n,e)),n}return r}}async function d6(e,t,r){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await g6(e,e.input.panel,t,r)),e.input?.quickActions!=null&&(r.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),p6(e,e.input.quickActions,t,r)),n}async function g6(e,t,r,n){switch(t.type){case"custom":return P8(e,t,r,n);case"schema":return D8(e,t,r,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function p6(e,t,r,n){let{cesdk:a}=r,o={};t.actions.forEach(i=>{let l=i.kind??e.kind;o[l]==null&&(o[l]=gl(a,l));let u=o[l],s=i.enable??!0;a.feature.enable(ml({quickActionId:i.id,quickActionMenuId:l}),s),u.registerQuickAction(i),n.debug&&console.log(`Registered quick action: '${i.id}' (v${i.version}) to menu '${l}'`)}),Object.values(o).forEach(i=>{let{canvasMenuComponentId:l}=l6({cesdk:a,quickActionMenu:i,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var m6=s6,f6="@imgly/plugin-ai-text-generation-web",y6=e=>({async initialize({cesdk:t}){if(t==null)return;let r=await e.provider?.({cesdk:t});m6(r,{cesdk:t,engine:t.engine},{debug:e.debug??!1,dryRun:!1});let n=gl(t,"text");n.setQuickActionMenuOrder(["improve","fix","shorter","longer","ly.img.separator","changeTone","translate","ly.img.separator","changeTextTo",...n.getQuickActionMenuOrder()]),t.ui.addIconSet(Wh,Jh),t.setTranslations({en:{"ly.img.ai.inference.apply":"Apply","ly.img.ai.inference.cancel":"Cancel","ly.img.ai.inference.improve":"Improve Writing","ly.img.ai.inference.improve.processing":"Improving Writing...","ly.img.ai.inference.fix":"Fix Spelling & Grammar","ly.img.ai.inference.fix.processing":"Fixing spelling & grammar...","ly.img.ai.inference.longer":"Make Longer","ly.img.ai.inference.longer.processing":"Making longer...","ly.img.ai.inference.shorter":"Make Shorter","ly.img.ai.inference.shorter.processing":"Making shorter...","ly.img.ai.inference.changeTone":"Change Tone","ly.img.ai.inference.changeTone.processing":"Changing tone...","ly.img.ai.inference.changeTone.type.professional":"Professional","ly.img.ai.inference.changeTone.type.casual":"Casual","ly.img.ai.inference.changeTone.type.friendly":"Friendly","ly.img.ai.inference.changeTone.type.serious":"Serious","ly.img.ai.inference.changeTone.type.humorous":"Humorous","ly.img.ai.inference.changeTone.type.optimistic":"Optimistic","ly.img.ai.inference.translate":"Translate","ly.img.ai.inference.translate.processing":"Translating...","ly.img.ai.inference.changeTextTo":"Change Text to...","ly.img.ai.inference.changeTextTo.processing":"Changing text..."}})}}),b6=e=>({name:f6,version:"0.1.7",...y6(e)}),fl=b6;var Er=class{constructor(e,t,r){this.id=e,this.cesdk=t,this.assetSourceIds=r}async findAssets(e){try{let t=this.assetSourceIds.map(c=>this.cesdk.engine.asset.findAssets(c,{...e,perPage:9999,page:0})),r=await Promise.all(t),n=[];r.forEach(c=>{c?.assets&&(n=n.concat(c.assets))}),n.sort((c,d)=>{let g=c.meta?.insertedAt||0;return(d.meta?.insertedAt||0)-g});let{page:a,perPage:o}=e,i=a*o,l=i+o,u=n.slice(i,l),s=l<n.length?a+1:void 0;return{assets:u,currentPage:a,nextPage:s,total:n.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){let e=this.assetSourceIds.map(n=>this.cesdk.engine.asset.getGroups(n)),t=await Promise.all(e),r=new Set;return t.forEach(n=>{n.forEach(a=>r.add(a))}),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")}};var h6=typeof global=="object"&&global&&global.Object===Object&&global,Ll=h6,v6=typeof self=="object"&&self&&self.Object===Object&&self,k6=Ll||v6||Function("return this")(),G=k6,w6=G.Symbol,_e=w6,Tl=Object.prototype,C6=Tl.hasOwnProperty,M6=Tl.toString,Lt=_e?_e.toStringTag:void 0;function x6(e){var t=C6.call(e,Lt),r=e[Lt];try{e[Lt]=void 0;var n=!0}catch{}var a=M6.call(e);return n&&(t?e[Lt]=r:delete e[Lt]),a}var I6=x6,A6=Object.prototype,E6=A6.toString;function S6(e){return E6.call(e)}var j6=S6,L6="[object Null]",T6="[object Undefined]",yl=_e?_e.toStringTag:void 0;function $6(e){return e==null?e===void 0?T6:L6:yl&&yl in Object(e)?I6(e):j6(e)}var Ot=$6;function N6(e){return e!=null&&typeof e=="object"}var Sr=N6,aM=Array.isArray;function O6(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var $l=O6,D6="[object AsyncFunction]",_6="[object Function]",P6="[object GeneratorFunction]",z6="[object Proxy]";function U6(e){if(!$l(e))return!1;var t=Ot(e);return t==_6||t==P6||t==D6||t==z6}var V6=U6,B6=G["__core-js_shared__"],kr=B6,bl=function(){var e=/[^.]+$/.exec(kr&&kr.keys&&kr.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function F6(e){return!!bl&&bl in e}var G6=F6,R6=Function.prototype,q6=R6.toString;function Q6(e){if(e!=null){try{return q6.call(e)}catch{}try{return e+""}catch{}}return""}var Z=Q6,H6=/[\\^$.*+?()[\]{}|]/g,Y6=/^\[object .+?Constructor\]$/,Z6=Function.prototype,W6=Object.prototype,K6=Z6.toString,J6=W6.hasOwnProperty,X6=RegExp("^"+K6.call(J6).replace(H6,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ev(e){if(!$l(e)||G6(e))return!1;var t=V6(e)?X6:Y6;return t.test(Z(e))}var tv=ev;function nv(e,t){return e?.[t]}var rv=nv;function iv(e,t){var r=rv(e,t);return tv(r)?r:void 0}var Pe=iv,ov=Pe(G,"WeakMap"),Cr=ov;function av(e,t){return e===t||e!==e&&t!==t}var lv=av,sv=9007199254740991;function uv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=sv}var cv=uv;var lM=Object.prototype;var dv="[object Arguments]";function gv(e){return Sr(e)&&Ot(e)==dv}var hl=gv,Nl=Object.prototype,pv=Nl.hasOwnProperty,mv=Nl.propertyIsEnumerable,sM=hl(function(){return arguments}())?hl:function(e){return Sr(e)&&pv.call(e,"callee")&&!mv.call(e,"callee")};var Ol=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vl=Ol&&typeof module=="object"&&module&&!module.nodeType&&module,fv=vl&&vl.exports===Ol,kl=fv?G.Buffer:void 0,uM=kl?kl.isBuffer:void 0;var yv="[object Arguments]",bv="[object Array]",hv="[object Boolean]",vv="[object Date]",kv="[object Error]",wv="[object Function]",Cv="[object Map]",Mv="[object Number]",xv="[object Object]",Iv="[object RegExp]",Av="[object Set]",Ev="[object String]",Sv="[object WeakMap]",jv="[object ArrayBuffer]",Lv="[object DataView]",Tv="[object Float32Array]",$v="[object Float64Array]",Nv="[object Int8Array]",Ov="[object Int16Array]",Dv="[object Int32Array]",_v="[object Uint8Array]",Pv="[object Uint8ClampedArray]",zv="[object Uint16Array]",Uv="[object Uint32Array]",T={};T[Tv]=T[$v]=T[Nv]=T[Ov]=T[Dv]=T[_v]=T[Pv]=T[zv]=T[Uv]=!0;T[yv]=T[bv]=T[jv]=T[hv]=T[Lv]=T[vv]=T[kv]=T[wv]=T[Cv]=T[Mv]=T[xv]=T[Iv]=T[Av]=T[Ev]=T[Sv]=!1;function Vv(e){return Sr(e)&&cv(e.length)&&!!T[Ot(e)]}var Bv=Vv;function Fv(e){return function(t){return e(t)}}var Gv=Fv,Dl=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Tt=Dl&&typeof module=="object"&&module&&!module.nodeType&&module,Rv=Tt&&Tt.exports===Dl,wr=Rv&&Ll.process,qv=function(){try{var e=Tt&&Tt.require&&Tt.require("util").types;return e||wr&&wr.binding&&wr.binding("util")}catch{}}(),wl=qv,Cl=wl&&wl.isTypedArray,cM=Cl?Gv(Cl):Bv;var Qv=Object.prototype,dM=Qv.hasOwnProperty;function Hv(e,t){return function(r){return e(t(r))}}var Yv=Hv,gM=Yv(Object.keys,Object);var Zv=Object.prototype,pM=Zv.hasOwnProperty;var Wv=Pe(Object,"create"),$t=Wv;function Kv(){this.__data__=$t?$t(null):{},this.size=0}var Jv=Kv;function Xv(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var ek=Xv,tk="__lodash_hash_undefined__",nk=Object.prototype,rk=nk.hasOwnProperty;function ik(e){var t=this.__data__;if($t){var r=t[e];return r===tk?void 0:r}return rk.call(t,e)?t[e]:void 0}var ok=ik,ak=Object.prototype,lk=ak.hasOwnProperty;function sk(e){var t=this.__data__;return $t?t[e]!==void 0:lk.call(t,e)}var uk=sk,ck="__lodash_hash_undefined__";function dk(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=$t&&t===void 0?ck:t,this}var gk=dk;function ze(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze.prototype.clear=Jv;ze.prototype.delete=ek;ze.prototype.get=ok;ze.prototype.has=uk;ze.prototype.set=gk;var Ml=ze;function pk(){this.__data__=[],this.size=0}var mk=pk;function fk(e,t){for(var r=e.length;r--;)if(lv(e[r][0],t))return r;return-1}var an=fk,yk=Array.prototype,bk=yk.splice;function hk(e){var t=this.__data__,r=an(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():bk.call(t,r,1),--this.size,!0}var vk=hk;function kk(e){var t=this.__data__,r=an(t,e);return r<0?void 0:t[r][1]}var wk=kk;function Ck(e){return an(this.__data__,e)>-1}var Mk=Ck;function xk(e,t){var r=this.__data__,n=an(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Ik=xk;function Ue(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ue.prototype.clear=mk;Ue.prototype.delete=vk;Ue.prototype.get=wk;Ue.prototype.has=Mk;Ue.prototype.set=Ik;var ln=Ue,Ak=Pe(G,"Map"),Nt=Ak;function Ek(){this.size=0,this.__data__={hash:new Ml,map:new(Nt||ln),string:new Ml}}var Sk=Ek;function jk(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Lk=jk;function Tk(e,t){var r=e.__data__;return Lk(t)?r[typeof t=="string"?"string":"hash"]:r.map}var sn=Tk;function $k(e){var t=sn(this,e).delete(e);return this.size-=t?1:0,t}var Nk=$k;function Ok(e){return sn(this,e).get(e)}var Dk=Ok;function _k(e){return sn(this,e).has(e)}var Pk=_k;function zk(e,t){var r=sn(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Uk=zk;function Ve(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ve.prototype.clear=Sk;Ve.prototype.delete=Nk;Ve.prototype.get=Dk;Ve.prototype.has=Pk;Ve.prototype.set=Uk;var _l=Ve;function Vk(){this.__data__=new ln,this.size=0}var Bk=Vk;function Fk(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var Gk=Fk;function Rk(e){return this.__data__.get(e)}var qk=Rk;function Qk(e){return this.__data__.has(e)}var Hk=Qk,Yk=200;function Zk(e,t){var r=this.__data__;if(r instanceof ln){var n=r.__data__;if(!Nt||n.length<Yk-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new _l(n)}return r.set(e,t),this.size=r.size,this}var Wk=Zk;function Dt(e){var t=this.__data__=new ln(e);this.size=t.size}Dt.prototype.clear=Bk;Dt.prototype.delete=Gk;Dt.prototype.get=qk;Dt.prototype.has=Hk;Dt.prototype.set=Wk;var Kk=Object.prototype,mM=Kk.propertyIsEnumerable;var Jk=Pe(G,"DataView"),Mr=Jk,Xk=Pe(G,"Promise"),xr=Xk,ew=Pe(G,"Set"),Ir=ew,xl="[object Map]",tw="[object Object]",Il="[object Promise]",Al="[object Set]",El="[object WeakMap]",Sl="[object DataView]",nw=Z(Mr),rw=Z(Nt),iw=Z(xr),ow=Z(Ir),aw=Z(Cr),De=Ot;(Mr&&De(new Mr(new ArrayBuffer(1)))!=Sl||Nt&&De(new Nt)!=xl||xr&&De(xr.resolve())!=Il||Ir&&De(new Ir)!=Al||Cr&&De(new Cr)!=El)&&(De=function(e){var t=Ot(e),r=t==tw?e.constructor:void 0,n=r?Z(r):"";if(n)switch(n){case nw:return Sl;case rw:return xl;case iw:return Il;case ow:return Al;case aw:return El}return t});var fM=G.Uint8Array;var lw="__lodash_hash_undefined__";function sw(e){return this.__data__.set(e,lw),this}var uw=sw;function cw(e){return this.__data__.has(e)}var dw=cw;function Ar(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new _l;++t<r;)this.add(e[t])}Ar.prototype.add=Ar.prototype.push=uw;Ar.prototype.has=dw;var jl=_e?_e.prototype:void 0,yM=jl?jl.valueOf:void 0;var gw=Object.prototype,bM=gw.hasOwnProperty;var pw=Object.prototype,hM=pw.hasOwnProperty;var vM=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),kM=new RegExp(/[A-Fa-f0-9]{1}/,"g"),wM=new RegExp(/[A-Fa-f0-9]{2}/,"g");var jr=class{constructor(t,r,n=[]){this.id=t,this.assets=[...n],this.activeAssetIds=new Set,this.loaderDisposer={},this.cesdk=r}async findAssets(t){let{page:r,perPage:n,locale:a="en",sortActiveFirst:o,query:i,tags:l,groups:u,excludeGroups:s,sortingOrder:c,sortKey:d}=t,g=[...this.assets];if(u&&u.length>0&&(g=g.filter(m=>m.groups&&u.some(y=>m.groups?.includes(y)))),s&&s.length>0&&(g=g.filter(m=>!m.groups||!s.some(y=>m.groups?.includes(y)))),i){let m=i.toLowerCase();g=g.filter(y=>{let k=y.label?.[a]?.toLowerCase(),C=y.tags?.[a]||[];return k&&k.includes(m)||C.some(M=>M.toLowerCase().includes(m))})}if(l&&l.length>0){let m=Array.isArray(l)?l:[l];g=g.filter(y=>{let k=y.tags?.[a]||[];return m.some(C=>k.includes(C))})}o&&g.sort((m,y)=>{let k=this.activeAssetIds.has(m.id),C=this.activeAssetIds.has(y.id);return k&&!C?-1:!k&&C?1:0}),d&&d!=="id"?g.sort((m,y)=>{let k=m.meta?.[d],C=y.meta?.[d];return k===void 0?1:C===void 0?-1:typeof k=="string"&&typeof C=="string"?c==="Descending"?C.localeCompare(k):k.localeCompare(C):typeof k=="number"&&typeof C=="number"?c==="Descending"?C-k:k-C:0}):d==="id"&&g.sort((m,y)=>c==="Descending"?y.id.localeCompare(m.id):m.id.localeCompare(y.id));let f=g.length,v=r*n,w=v+n,p=g.slice(v,w).map(m=>({id:m.id,groups:m.groups,meta:m.meta,payload:m.payload,locale:a,label:m.label?.[a],tags:m.tags?.[a],active:this.activeAssetIds.has(m.id)})),h=w<f?r+1:void 0;return{assets:p,currentPage:r,nextPage:h,total:f}}updateLabel(t,r,n){this.assets.forEach(a=>{a.id===t&&(a.label=a.label||{},a.label[n]=r(a.label[n]))})}getLabel(t,r){let n=this.assets.find(a=>a.id===t);if(n!=null)return n.label?.[r]}setAssetActive(t){this.activeAssetIds.add(t)}setAssetLoading(t,r){if(r){let n=this.getLabel(t,"en")??"",a=mw(o=>this.cesdk.engine.asset===null?!1:(this.updateLabel(t,()=>`${o} ${n}`,"en"),this.cesdk.engine.asset.assetSourceContentsChanged(this.id),!0));this.loaderDisposer[t]=()=>{this.updateLabel(t,()=>n,"en"),a()}}else this.loaderDisposer[t]?.(),this.loaderDisposer[t]=void 0}setAssetInactive(t){this.activeAssetIds.delete(t),this.loaderDisposer[t]?.(),this.loaderDisposer[t]=void 0}clearActiveAssets(){this.activeAssetIds.clear(),Object.values(this.loaderDisposer).forEach(t=>{t?.()}),this.loaderDisposer={}}isAssetActive(t){return this.activeAssetIds.has(t)}addAsset(t){let r=this.assets.findIndex(n=>n.id===t.id);r>=0?this.assets[r]=t:this.assets.push(t)}removeAsset(t){let r=this.assets.findIndex(n=>n.id===t);r!==-1&&(this.assets.splice(r,1),this.activeAssetIds.delete(t))}async getGroups(){let t=new Set;return this.assets.forEach(r=>{r.groups&&r.groups.forEach(n=>t.add(n))}),Array.from(t)}getSupportedMimeTypes(){return["image/jpeg","image/png","image/svg+xml","image/webp","video/mp4","audio/mpeg"]}};function Pl(e,t,r=[]){return new jr(e,t,r)}function mw(e,t=200){let r=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],n=0,a=setInterval(()=>{let o=r[n];n=(n+1)%r.length,e(o)||clearInterval(a)},t);return()=>{clearInterval(a)}}var Lr="ly.img.ai.apps";var N=_t("apps"),un=512,cn=128,zl=e=>({async initialize({cesdk:t}){if(t==null)return;let r=t.engine.scene.getMode()==="Video",{providers:n,baseURL:a="https://cdn.img.ly/assets/plugins/plugin-ai-apps-web/v1/"}=e,{activeAssetSource:o}=await fw(t,{isVideoMode:r,baseURL:a,debug:e.debug}),i=await W(t,o,n.text2text),l=await W(t,o,n.text2image),u=await W(t,o,n.image2image),s,c,d,g;r&&(s=await W(t,o,n.text2video),c=await W(t,o,n.image2video),d=await W(t,o,n.text2speech),g=await W(t,o,n.text2sound),t.addPlugin($o({text2video:s,image2video:c,debug:e.debug,dryRun:e.dryRun})),t.addPlugin(xa({text2speech:d,text2sound:g,debug:e.debug,dryRun:e.dryRun}))),i!=null&&t.addPlugin(fl({provider:i,debug:e.debug})),t.addPlugin(Bi({text2image:l,image2image:u,debug:e.debug,dryRun:e.dryRun})),bw(t,{text2text:i,text2image:l,image2image:u,text2video:s,image2video:c,text2speech:d,text2sound:g},r),hw(t)}});async function W(e,t,r){if(r==null)return;let n=await r({cesdk:e});if(t!=null){let a=async(o,i,l)=>{let u=`${n.kind}-generation`;n.kind==="audio"&&(n.id.includes("sound")?u="audio-generation/sound":n.id.includes("speech")&&(u="audio-generation/speech")),e.ui.experimental.setGlobalStateValue(`${N}.isGenerating`,!0),t.setAssetLoading(u,!0),e.engine.asset.assetSourceContentsChanged(N);try{return await l(o,i)}finally{e.engine.asset.assetSourceContentsChanged(N),t.setAssetLoading(u,!1),e.ui.experimental.setGlobalStateValue(`${N}.isGenerating`,!1)}};n.output.middleware=[...n.output.middleware??[],a]}return()=>Promise.resolve(n)}async function fw(e,t){let{isVideoMode:r,debug:n,baseURL:a}=t;yw(e);let o;r&&(o=Pl(N,e,[{id:"image-generation",label:{en:"Generate Image"},meta:{label:"Generate Image",thumbUri:`${a}GenerateImage.png`,width:un,height:cn}},{id:"video-generation",label:{en:"Generate Video"},meta:{label:"Generate Video",thumbUri:`${a}GenerateVideo.png`,width:un,height:cn}},{id:"audio-generation/sound",label:{en:"Generate Sound"},meta:{label:"Generate Sound",thumbUri:`${a}GenerateSound.png`,width:un,height:cn}},{id:"audio-generation/speech",label:{en:"AI Voice"},meta:{label:"AI Voice",thumbUri:`${a}AIVoice.png`,width:un,height:cn}}]),e.engine.asset.addSource(o),e.ui.registerPanel(N,({builder:l})=>{l.Library(N,{entries:[N],onSelect:async u=>{e.ui.openPanel(_t(u.id))}})}),e.ui.addAssetLibraryEntry({id:N,sourceIds:[N],gridColumns:1,gridItemHeight:"auto",gridBackgroundType:"cover",cardLabel:({label:l})=>l,cardLabelPosition:()=>"inside"}));let i=`${N}.dock`;return r?(n&&console.log("Registering AI App Dock Button",i),e.ui.registerComponent(i,({builder:l,experimental:u})=>{let s=e.ui.isPanelOpen(N),c=u.global(`${N}.isGenerating`,!1);l.Button(`${N}.dock.button`,{label:"AI",isSelected:s,icon:c.value?"@imgly/LoadingSpinner":"@imgly/Sparkle",onClick:()=>{e.ui.findAllPanels().forEach(d=>{d.startsWith("ly.img.ai/")&&e.ui.closePanel(d),!s&&d==="//ly.img.panel/assetLibrary"&&e.ui.closePanel(d)}),s?e.ui.closePanel(N):e.ui.openPanel(N)}})})):e.ui.registerComponent(i,({builder:l,experimental:u})=>{let s=_t("image-generation"),c=u.global(`${N}.isGenerating`,!1),d=e.ui.isPanelOpen(s);l.Button(`${N}.dock.button`,{label:"AI",isSelected:d,icon:c.value?"@imgly/LoadingSpinner":"@imgly/Sparkle",onClick:()=>{d?e.ui.closePanel(s):e.ui.openPanel(s)}})}),{activeAssetSource:o}}function yw(e){e.ui.registerComponent("ly.img.assetLibrary.dock",({builder:{Button:t},engine:r,payload:n})=>{let a="\n\nPlease provide a payload with entries, e.g. \n```\n{ id: 'ly.img.assetLibrary.dock', entries: ['ly.img.image', 'ly.img.video'] }\n```";if(!n||n.id!=="ly.img.assetLibrary.dock"){console.warn(`No payload found for 'ly.img.assetLibrary.dock'${a}`);return}let{id:o,key:i,label:l,icon:u,entries:s}=n;if(s==null||!Array.isArray(s)){console.warn(`No valid entries value found for 'ly.img.assetLibrary.dock'${a}`);return}if(s.some(b=>typeof b!="string")){console.warn(`Entries value for 'ly.img.assetLibrary.dock' need to be all strings referring to asset library entries${a}`);return}l!=null&&typeof l!="string"&&console.warn("Label for 'ly.img.assetLibrary.dock' must be a string if provided");let c=r.scene.getMode(),d=s.filter(b=>{let p=e.ui.getAssetLibraryEntry(b);if(p==null)return!1;let h=p.sceneMode;return typeof h=="string"?p.sceneMode===c||p.sceneMode==="All":typeof h=="function"?p.sourceIds.some(m=>{let y=h(m);return y===c||y==="All"}):!0});if(d.length===0)return;let g=l;g==null&&(g=`libraries.${o}.label`);let f=e.ui.isPanelOpen("//ly.img.panel/assetLibrary",{payload:{entries:d,title:g}}),v=e.ui.isPanelOpen("//ly.img.panel/assetLibrary.replace"),w=u;w==null&&d.length===1&&(w=e.ui.getAssetLibraryEntry(d[0])?.icon),t(i??o,{label:g,icon:w,isDisabled:v,isSelected:f,onClick:()=>{f?e.ui.closePanel("//ly.img.panel/assetLibrary"):(e.ui.findAllPanels().forEach(b=>{(b===N||b.startsWith("ly.img.ai/"))&&e.ui.closePanel(b)}),e.ui.openPanel("//ly.img.panel/assetLibrary",{payload:{entries:d,title:g}}))}})})}async function bw(e,t,r){let n=await t.text2image?.({cesdk:e}),a=await t.image2image?.({cesdk:e}),o=new Er("ly.img.ai/image-generation.history",e,[n!=null?`${n.id}.history`:void 0,a!=null?`${a?.id}.history`:void 0].filter(Boolean));e.engine.asset.addSource(o);let i=e.ui.getAssetLibraryEntry("ly.img.image");if(i!=null&&e.ui.updateAssetLibraryEntry("ly.img.image",{sourceIds:[...i.sourceIds,"ly.img.ai/image-generation.history"]}),!r)return;let l=await t.text2video?.({cesdk:e}),u=await t.image2video?.({cesdk:e}),s=new Er("ly.img.ai/video-generation.history",e,[l!=null?`${l.id}.history`:void 0,u!=null?`${u?.id}.history`:void 0].filter(Boolean));e.engine.asset.addSource(s);let c=e.ui.getAssetLibraryEntry("ly.img.video");c!=null&&e.ui.updateAssetLibraryEntry("ly.img.video",{sourceIds:[...c.sourceIds,"ly.img.ai/video-generation.history"]});let d=await t.text2speech?.({cesdk:e}),g=await t.text2sound?.({cesdk:e}),f=e.ui.getAssetLibraryEntry("ly.img.audio"),v=[d!=null?`${d.id}.history`:void 0,g!=null?`${g.id}.history`:void 0].filter(Boolean);f!=null&&e.ui.updateAssetLibraryEntry("ly.img.audio",{sourceIds:[...f.sourceIds,...v]})}function hw(e){e.i18n.setTranslations({en:{"panel.ly.img.ai.generation.confirmCancel.content":"Are you sure you want to cancel the generation?","panel.ly.img.ai.generation.confirmCancel.confirm":"Cancel Generation","panel.ly.img.ai/apps":"AI","panel.ly.img.ai/fal-ai/gemini-flash-edit.imageSelection":"Select Image To Change","panel.gpt-image-1.imageSelection":"Select Image To Change","panel.ly.img.ai/elevenlabs":"AI Voice","panel.ly.img.ai/demo.video":"Generate Video","panel.ly.img.ai/demo.image":"Generate Image","panel.fal-ai/minimax/video-01-live/image-to-video.imageSelection":"Select Image To Generate","panel.ly.img.ai/fal-ai/minimax/video-01-live/image-to-video.imageSelection":"Select Image To Generate","panel.fal-ai/gemini-flash-edit.imageSelection":"Select Image To Generate","libraries.ly.img.ai/fal-ai/recraft-v3.history.label":"Generated From Text","libraries.ly.img.ai/fal-ai/gemini-flash-edit.history.label":"Generated From Image","libraries.ly.img.ai/fal-ai/pixverse/v3.5/text-to-video.history.label":"Generated From Text","libraries.ly.img.ai/fal-ai/minimax/video-01-live/image-to-video.history.label":"Generated From Image","libraries.elevenlabs/monolingual/v1.history.label":"AI Voice","libraries.elevenlabs/sound-generation.history.label":"Generated Sound","libraries.ly.img.ai/image-generation.history.label":"AI Generated Images","libraries.ly.img.ai/video-generation.history.label":"AI Generated Videos"}})}var vw=e=>({name:Lr,version:"0.1.7",...zl(e)}),VM=vw;export{VM as default};
400
+ `,U8=z8,Va="ly.img.ai.quickAction.order",Ct="ly.img.ai.quickAction.actions";function V8(e,t){return{id:t,setQuickActionMenuOrder:r=>{e.ui.experimental.setGlobalStateValue(`${Va}.${t}`,r)},getQuickActionMenuOrder:()=>e.ui.experimental.getGlobalStateValue(`${Va}.${t}`,[]),registerQuickAction:r=>{if(!e.ui.experimental.hasGlobalStateValue(`${Ct}.${t}`))e.ui.experimental.setGlobalStateValue(`${Ct}.${t}`,{[r.id]:r});else{let n=e.ui.experimental.getGlobalStateValue(`${Ct}.${t}`,{});e.ui.experimental.setGlobalStateValue(`${Ct}.${t}`,{...n,[r.id]:r})}},getQuickAction:r=>e.ui.experimental.getGlobalStateValue(`${Ct}.${t}`,{})[r]}}var gl=V8,dr="ly.img.ai.inference.editMode",pl="ly.img.ai.inference.metadata";function ml(e){return`ly.img.ai.quickAction.${e.quickActionMenuId}.${e.quickActionId}`}function B8(e){if(e.length===0)return[];let t=[...e];for(;t.length>0&&t[0]==="ly.img.separator";)t.shift();for(;t.length>0&&t[t.length-1]==="ly.img.separator";)t.pop();return t.reduce((r,n)=>(n==="ly.img.separator"&&r.length>0&&r[r.length-1]==="ly.img.separator"||r.push(n),r),[])}function F8({alwaysOnTop:e=!0,disableClipping:t=!0}){return async(r,n,a)=>{let o={},i={},l=e||t?n.blockIds??n.engine.block.findAllSelected():[];return l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&(o[u]=n.engine.block.isAlwaysOnTop(u),n.engine.block.setAlwaysOnTop(u,!0)),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&(i[s]=n.engine.block.isClipped(s),n.engine.block.setClipped(s,!1))}}),n.addDisposer(async()=>{l.forEach(u=>{if(n.engine.block.isValid(u)&&e&&n.engine.block.setAlwaysOnTop(u,o[u]),t){let s=n.engine.block.getParent(u);s!=null&&n.engine.block.getType(s)!=="//ly.img.ubq/scene"&&i[s]!=null&&n.engine.block.setClipped(s,i[s])}})}),await a(r,n)}}var G8=F8;function R8({pending:e=!0}){return async(t,r,n)=>{let a=e?r.blockIds??r.engine.block.findAllSelected():[];try{return a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Pending",progress:0})}),await n(t,r)}finally{a.forEach(o=>{r.engine.block.isValid(o)&&r.engine.block.setState(o,{type:"Ready"})})}}}var q8=R8;function Q8({editMode:e,automaticallyUnlock:t=!1}){return async(r,n,a)=>{let o=n.blockIds??n.engine.block.findAllSelected(),i=()=>{};t||n.addDisposer(async()=>{i?.()});try{return i=H8(n.engine,o,e),await a(r,n)}catch(l){throw je(l)&&i(),l}finally{t&&i()}}}function H8(e,t,r){let n=e.editor.getGlobalScope("editor/select"),a=e.editor.getEditMode();l(),e.editor.setGlobalScope("editor/select","Deny"),e.editor.setEditMode(r);let o=e.editor.createHistory(),i=e.editor.getActiveHistory();e.editor.setActiveHistory(o);function l(){e.block.findAllSelected().forEach(c=>{t.includes(c)||e.block.setSelected(c,!1)}),t.forEach(c=>{e.block.setSelected(c,!0)})}let u=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&e.editor.setEditMode(r)}),s=e.block.onSelectionChanged(l);return()=>{n!=null&&e.editor.setGlobalScope("editor/select",n),e.editor.setEditMode(a),e.editor.setActiveHistory(i),e.editor.destroyHistory(o),s(),u()}}var Y8=Q8;function Z8(e,t){switch(t.kind){case"text":return W8(e,t);case"image":return K8(e,t);case"video":return J8(e,t);case"audio":return X8(e,t);default:throw new Error(`Unsupported output kind for quick actions: ${t.kind}`)}}async function W8(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t,o=n.map(s=>r.engine.block.getString(s,"text/text")),i;if(hr(e)){let s="";for await(let c of e){if(a.aborted)break;typeof c=="string"?s=c:c.kind==="text"&&(s=c.text),n.forEach(d=>{r.engine.block.setString(d,"text/text",s)}),i={kind:"text",text:s}}}else i=e;if(i==null||i.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",i.text)})},u=()=>{t.blockIds.forEach((s,c)=>{t.cesdk.engine.block.setString(s,"text/text",o[c])})};return{consumedGenerationResult:i,applyCallbacks:{onBefore:u,onAfter:l,onCancel:u,onApply:()=>{l(),t.cesdk.engine.editor.addUndoStep()}}}}async function K8(e,t){let{cesdk:r,blockIds:n,abortSignal:a}=t;if(n.length!==1)throw new Error("Only one block is supported for image generation");let[o]=n,i=r.engine.block.getFill(o),l=r.engine.block.getSourceSet(i,"fill/image/sourceSet"),[u]=l,s;u==null&&(s=r.engine.block.getString(i,"fill/image/imageFileURI"));let c=await r.engine.editor.getMimeType(u?.uri??s),d=await br(u?.uri??s,t.cesdk.engine),g=d.width/d.height;if(a.throwIfAborted(),c==="image/svg+xml")throw new Error("SVG images are not supported");let f=r.engine.block.getCropScaleX(o),v=r.engine.block.getCropScaleY(o),w=r.engine.block.getCropTranslationX(o),b=r.engine.block.getCropTranslationY(o),p=r.engine.block.getCropRotation(o),h=()=>{r.engine.block.setCropScaleX(o,f),r.engine.block.setCropScaleY(o,v),r.engine.block.setCropTranslationX(o,w),r.engine.block.setCropTranslationY(o,b),r.engine.block.setCropRotation(o,p)};if(hr(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 m=e.url,y=await r.engine.editor.getMimeType(m),k=await e6(r,m,y),C=await br(k,t.cesdk.engine),M=C.width/C.height,x=Math.abs(g-M)>.001,I=u?[{uri:k,width:C.width,height:C.height}]:void 0,$=k;I==null?r.engine.block.setString(i,"fill/image/imageFileURI",$):(r.engine.block.setString(i,"fill/image/imageFileURI",""),r.engine.block.setSourceSet(i,"fill/image/sourceSet",I)),x?r.engine.block.setContentFillMode(o,"Cover"):h();let O=()=>{if(l==null||l.length===0){if(s==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",s)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",l);h()},D=()=>{if(I==null){if($==null)throw new Error("No image URI found");r.engine.block.setString(i,"fill/image/imageFileURI",$)}else r.engine.block.setSourceSet(i,"fill/image/sourceSet",I);x?r.engine.block.setContentFillMode(o,"Cover"):h()};return{consumedGenerationResult:e,applyCallbacks:{onBefore:O,onAfter:D,onCancel:()=>{O()},onApply:()=>{D(),t.cesdk.engine.editor.addUndoStep()}}}}async function J8(e,t){throw new Error("Function not implemented.")}async function X8(e,t){throw new Error("Function not implemented.")}async function e6(e,t,r){let n=await(await fetch(t)).blob(),a=new File([n],`image.${k8(r)}`,{type:r}),o=await e.unstable_upload(a,()=>{});return o?.meta?.uri??(console.warn("Failed to upload image:",o),t)}var t6=Z8;function n6({editMode:e,automaticallyUnlock:t=!1,showNotification:r=!0}){return async(n,a,o)=>{let i=a.blockIds??a.engine.block.findAllSelected(),l=()=>{};t||a.addDisposer(async()=>{l?.()});try{l=r6(a.engine,i,e);let u=await o(n,a);if(r){let s=a.engine.block.findAllSelected();i.some(c=>s.includes(c))||a.cesdk?.ui.showNotification({type:"success",message:"AI generation complete",action:{label:"Select",onClick:()=>{i.forEach(c=>{a.engine.block.select(c)})}}})}return u}catch(u){throw je(u)&&l(),u}finally{t&&l()}}}function r6(e,t,r){function n(){let i=e.block.findAllSelected();return t.some(l=>i.includes(l))}let a=e.editor.onStateChanged(()=>{e.editor.getEditMode()!==r&&n()&&e.editor.setEditMode(r)}),o=e.block.onSelectionChanged(()=>{n()?e.editor.setEditMode(r):e.editor.setEditMode("Transform")});return n()&&e.editor.setEditMode(r),()=>{o(),a(),e.editor.setEditMode("Transform")}}var i6=n6;async function o6(e,t){let{cesdk:r,input:n,blockIds:a,provider:o,quickAction:i,confirmationComponentId:l,abortSignal:u}=e;i.confirmation&&r.ui.setCanvasMenuOrder([l],{editMode:dr});let s=new el(r.engine,pl);a.forEach(p=>{s.set(p,{status:"processing",quickActionId:i.id})});let c={cesdk:r,engine:r.engine,abortSignal:u},d=Ja([...o.output.middleware??[],t.debug?Xa():void 0,q8({}),...i.confirmation?[i.lockDuringConfirmation?Y8({editMode:dr}):i6({editMode:dr}),i.confirmation&&G8({})]:[],t.dryRun?ul({kind:o.kind,blockIds:a}):void 0]),{result:g,dispose:f}=await d(o.output.generate)(n,c),{consumedGenerationResult:v,applyCallbacks:w}=await t6(g,{abortSignal:u,kind:o.kind,blockIds:a,cesdk:r});i.confirmation?a.forEach(p=>{s.set(p,{status:"confirmation",quickActionId:i.id})}):(w.onApply(),a.forEach(p=>{s.clear(p)}));let b=()=>{f(),a.forEach(p=>{s.clear(p)})};return u.addEventListener("abort",b),{dispose:b,returnValue:v,applyCallbacks:w}}var Ba=o6;function a6(e,t){let{cesdk:r,quickActionMenu:n,provider:a}=e,o=`ly.img.ai.${n.id}`,i=`${o}.confirmation`;r.setTranslations({en:{[`${i}.apply`]:"Apply",[`${i}.before`]:"Before",[`${i}.after`]:"After",[`${o}.cancel`]:"Cancel",[`${o}.processing`]:"Generating..."}});let l=`${i}.canvasnMenu`,u={unlock:()=>{},abort:()=>{},applyCallbacks:void 0},s=()=>{let d=new AbortController,g=d.signal;return u.abort=()=>{d.abort()},g};r.ui.registerComponent(l,({builder:d,engine:g,state:f})=>{let v=g.block.findAllSelected();if(v.length===0)return null;let w=new el(r.engine,pl),b=w.get(v[0]);if(b==null)return null;let p=()=>{v.forEach(h=>{w.clear(h)})};switch(b.status){case"processing":{d.Button(`${o}.spinner`,{label:[`ly.img.ai.inference.${b.quickActionId}.processing`,`${o}.cancel`],isLoading:!0}),d.Separator(`${o}.separator`),d.Button(`${o}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.abort(),p()}});break}case"confirmation":{let h=f(`${i}.comparing`,"after"),m=u.applyCallbacks?.onCancel;m!=null&&d.Button(`${i}.cancel`,{icon:"@imgly/Cross",tooltip:`${o}.cancel`,onClick:()=>{u.unlock(),m(),p()}});let y=u.applyCallbacks?.onBefore,k=u.applyCallbacks?.onAfter;y!=null&&k!=null&&d.ButtonGroup(`${i}.compare`,{children:()=>{d.Button(`${i}.compare.before`,{label:`${i}.before`,variant:"regular",isActive:h.value==="before",onClick:()=>{y(),h.setValue("before")}}),d.Button(`${i}.compare.after`,{label:`${i}.after`,variant:"regular",isActive:h.value==="after",onClick:()=>{k(),h.setValue("after")}})}});let C=u.applyCallbacks?.onApply;C!=null&&d.Button(`${i}.apply`,{icon:"@imgly/Checkmark",tooltip:`${i}.apply`,color:"accent",isDisabled:h.value!=="after",onClick:()=>{u.unlock(),p(),r.engine.editor._update(),C()}});break}default:}});let c=`${o}.canvasMenu`;return r.ui.registerComponent(c,d=>{let g=d.engine.block.findAllSelected(),f=g.every(m=>d.engine.block.getState(m).type==="Ready"),v=n.getQuickActionMenuOrder().map(m=>{if(m==="ly.img.separator")return m;let y=n.getQuickAction(m);if(y==null||!r.feature.isEnabled(ml({quickActionId:m,quickActionMenuId:n.id}),{engine:d.engine}))return null;let k=y.scopes;return k!=null&&k.length>0&&!g.every(C=>k.every(M=>d.engine.block.isAllowedByScope(C,M)))?null:y}).filter(m=>m!=null);if(v=B8(v),v.length===0||v.every(m=>m==="ly.img.separator"))return null;let{builder:w,experimental:b,state:p}=d,h=p(`${o}.toggleExpandedState`,void 0);b.builder.Popover(`${o}.popover`,{icon:"@imgly/Sparkle",variant:"plain",isDisabled:!f,trailingIcon:null,children:({close:m})=>{w.Section(`${o}.popover.section`,{children:()=>{if(h.value!=null){let y=h.value,k=n.getQuickAction(y);if(k!=null&&k.renderExpanded!=null){k.renderExpanded(d,{blockIds:g,closeMenu:m,toggleExpand:()=>{h.setValue(void 0)},handleGenerationError:C=>{xt(C,{cesdk:r,provider:a},t)},generate:async(C,M)=>{try{let{returnValue:x,applyCallbacks:I,dispose:$}=await Ba({input:C,quickAction:k,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:M?.blockIds??g,confirmationComponentId:l},t);return u.unlock=$,u.applyCallbacks=I,x}catch(x){throw je(x)||xt(x,{cesdk:r,provider:a},t),x}}});return}}b.builder.Menu(`${o}.menu`,{children:()=>{v.forEach(y=>{y==="ly.img.separator"?w.Separator(`${o}.separator.${Math.random().toString()}`):y.render(d,{blockIds:g,closeMenu:m,handleGenerationError:k=>{xt(k,{cesdk:r,provider:a},t)},toggleExpand:()=>{h.setValue(y.id)},generate:async(k,C)=>{try{let{returnValue:M,applyCallbacks:x,dispose:I}=await Ba({input:k,quickAction:y,quickActionMenu:n,provider:a,cesdk:r,abortSignal:s(),blockIds:C?.blockIds??g,confirmationComponentId:l},t);return u.unlock=I,u.applyCallbacks=x,M}catch(M){throw je(M)||xt(M,{cesdk:r,provider:a},t),M}}})})}})}})}})}),{canvasMenuComponentId:c}}var l6=a6;async function s6(e,t,r){await e.initialize?.(t);let n=await c6(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}`]:u6(e)}});let i="@imgly/plugin-ai-generation.iconSetAdded";return t.cesdk.ui.experimental.hasGlobalStateValue(i)||(t.cesdk.ui.addIconSet("@imgly/plugin-ai-generation",U8),t.cesdk.ui.experimental.setGlobalStateValue(i,!0)),{renderBuilderFunctions:await d6(e,o,r)}}function u6(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 c6(e,t,r){if(!(r==null||r===!1)){if(r==="@imgly/local"){let n=`${t}.history`;return e.asset.addLocalSource(n),n}if(r==="@imgly/indexedDB"){let n=`${t}.history`;return e.asset.addSource(new C9(n,e)),n}return r}}async function d6(e,t,r){let n={panel:void 0};return e.input?.panel!=null&&(n.panel=await g6(e,e.input.panel,t,r)),e.input?.quickActions!=null&&(r.debug&&console.log(`Initializing quick actions for provider '${e.kind}' (${e.id})`),p6(e,e.input.quickActions,t,r)),n}async function g6(e,t,r,n){switch(t.type){case"custom":return P8(e,t,r,n);case"schema":return D8(e,t,r,n);default:n.debug&&console.warn(`Invalid panel input type '${t.type}' - skipping`)}}async function p6(e,t,r,n){let{cesdk:a}=r,o={};t.actions.forEach(i=>{let l=i.kind??e.kind;o[l]==null&&(o[l]=gl(a,l));let u=o[l],s=i.enable??!0;a.feature.enable(ml({quickActionId:i.id,quickActionMenuId:l}),s),u.registerQuickAction(i),n.debug&&console.log(`Registered quick action: '${i.id}' (v${i.version}) to menu '${l}'`)}),Object.values(o).forEach(i=>{let{canvasMenuComponentId:l}=l6({cesdk:a,quickActionMenu:i,provider:e},n);n.debug&&console.log(`Registered quick action menu component: ${l}`)})}var m6=s6,f6="@imgly/plugin-ai-text-generation-web",y6=e=>({async initialize({cesdk:t}){if(t==null)return;let r=await e.provider?.({cesdk:t});m6(r,{cesdk:t,engine:t.engine},{debug:e.debug??!1,dryRun:!1});let n=gl(t,"text");n.setQuickActionMenuOrder(["improve","fix","shorter","longer","ly.img.separator","changeTone","translate","ly.img.separator","changeTextTo",...n.getQuickActionMenuOrder()]),t.ui.addIconSet(Wh,Jh),t.setTranslations({en:{"ly.img.ai.inference.apply":"Apply","ly.img.ai.inference.cancel":"Cancel","ly.img.ai.inference.improve":"Improve Writing","ly.img.ai.inference.improve.processing":"Improving Writing...","ly.img.ai.inference.fix":"Fix Spelling & Grammar","ly.img.ai.inference.fix.processing":"Fixing spelling & grammar...","ly.img.ai.inference.longer":"Make Longer","ly.img.ai.inference.longer.processing":"Making longer...","ly.img.ai.inference.shorter":"Make Shorter","ly.img.ai.inference.shorter.processing":"Making shorter...","ly.img.ai.inference.changeTone":"Change Tone","ly.img.ai.inference.changeTone.processing":"Changing tone...","ly.img.ai.inference.changeTone.type.professional":"Professional","ly.img.ai.inference.changeTone.type.casual":"Casual","ly.img.ai.inference.changeTone.type.friendly":"Friendly","ly.img.ai.inference.changeTone.type.serious":"Serious","ly.img.ai.inference.changeTone.type.humorous":"Humorous","ly.img.ai.inference.changeTone.type.optimistic":"Optimistic","ly.img.ai.inference.translate":"Translate","ly.img.ai.inference.translate.processing":"Translating...","ly.img.ai.inference.changeTextTo":"Change Text to...","ly.img.ai.inference.changeTextTo.processing":"Changing text..."}})}}),b6=e=>({name:f6,version:"0.1.8",...y6(e)}),fl=b6;var Er=class{constructor(e,t,r){this.id=e,this.cesdk=t,this.assetSourceIds=r}async findAssets(e){try{let t=this.assetSourceIds.map(c=>this.cesdk.engine.asset.findAssets(c,{...e,perPage:9999,page:0})),r=await Promise.all(t),n=[];r.forEach(c=>{c?.assets&&(n=n.concat(c.assets))}),n.sort((c,d)=>{let g=c.meta?.insertedAt||0;return(d.meta?.insertedAt||0)-g});let{page:a,perPage:o}=e,i=a*o,l=i+o,u=n.slice(i,l),s=l<n.length?a+1:void 0;return{assets:u,currentPage:a,nextPage:s,total:n.length}}catch(t){console.error("Error finding assets:",t);return}}async getGroups(){let e=this.assetSourceIds.map(n=>this.cesdk.engine.asset.getGroups(n)),t=await Promise.all(e),r=new Set;return t.forEach(n=>{n.forEach(a=>r.add(a))}),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")}};var h6=typeof global=="object"&&global&&global.Object===Object&&global,Ll=h6,v6=typeof self=="object"&&self&&self.Object===Object&&self,k6=Ll||v6||Function("return this")(),G=k6,w6=G.Symbol,_e=w6,Tl=Object.prototype,C6=Tl.hasOwnProperty,M6=Tl.toString,Lt=_e?_e.toStringTag:void 0;function x6(e){var t=C6.call(e,Lt),r=e[Lt];try{e[Lt]=void 0;var n=!0}catch{}var a=M6.call(e);return n&&(t?e[Lt]=r:delete e[Lt]),a}var I6=x6,A6=Object.prototype,E6=A6.toString;function S6(e){return E6.call(e)}var j6=S6,L6="[object Null]",T6="[object Undefined]",yl=_e?_e.toStringTag:void 0;function $6(e){return e==null?e===void 0?T6:L6:yl&&yl in Object(e)?I6(e):j6(e)}var Ot=$6;function N6(e){return e!=null&&typeof e=="object"}var Sr=N6,aM=Array.isArray;function O6(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var $l=O6,D6="[object AsyncFunction]",_6="[object Function]",P6="[object GeneratorFunction]",z6="[object Proxy]";function U6(e){if(!$l(e))return!1;var t=Ot(e);return t==_6||t==P6||t==D6||t==z6}var V6=U6,B6=G["__core-js_shared__"],kr=B6,bl=function(){var e=/[^.]+$/.exec(kr&&kr.keys&&kr.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function F6(e){return!!bl&&bl in e}var G6=F6,R6=Function.prototype,q6=R6.toString;function Q6(e){if(e!=null){try{return q6.call(e)}catch{}try{return e+""}catch{}}return""}var Z=Q6,H6=/[\\^$.*+?()[\]{}|]/g,Y6=/^\[object .+?Constructor\]$/,Z6=Function.prototype,W6=Object.prototype,K6=Z6.toString,J6=W6.hasOwnProperty,X6=RegExp("^"+K6.call(J6).replace(H6,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ev(e){if(!$l(e)||G6(e))return!1;var t=V6(e)?X6:Y6;return t.test(Z(e))}var tv=ev;function nv(e,t){return e?.[t]}var rv=nv;function iv(e,t){var r=rv(e,t);return tv(r)?r:void 0}var Pe=iv,ov=Pe(G,"WeakMap"),Cr=ov;function av(e,t){return e===t||e!==e&&t!==t}var lv=av,sv=9007199254740991;function uv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=sv}var cv=uv;var lM=Object.prototype;var dv="[object Arguments]";function gv(e){return Sr(e)&&Ot(e)==dv}var hl=gv,Nl=Object.prototype,pv=Nl.hasOwnProperty,mv=Nl.propertyIsEnumerable,sM=hl(function(){return arguments}())?hl:function(e){return Sr(e)&&pv.call(e,"callee")&&!mv.call(e,"callee")};var Ol=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vl=Ol&&typeof module=="object"&&module&&!module.nodeType&&module,fv=vl&&vl.exports===Ol,kl=fv?G.Buffer:void 0,uM=kl?kl.isBuffer:void 0;var yv="[object Arguments]",bv="[object Array]",hv="[object Boolean]",vv="[object Date]",kv="[object Error]",wv="[object Function]",Cv="[object Map]",Mv="[object Number]",xv="[object Object]",Iv="[object RegExp]",Av="[object Set]",Ev="[object String]",Sv="[object WeakMap]",jv="[object ArrayBuffer]",Lv="[object DataView]",Tv="[object Float32Array]",$v="[object Float64Array]",Nv="[object Int8Array]",Ov="[object Int16Array]",Dv="[object Int32Array]",_v="[object Uint8Array]",Pv="[object Uint8ClampedArray]",zv="[object Uint16Array]",Uv="[object Uint32Array]",T={};T[Tv]=T[$v]=T[Nv]=T[Ov]=T[Dv]=T[_v]=T[Pv]=T[zv]=T[Uv]=!0;T[yv]=T[bv]=T[jv]=T[hv]=T[Lv]=T[vv]=T[kv]=T[wv]=T[Cv]=T[Mv]=T[xv]=T[Iv]=T[Av]=T[Ev]=T[Sv]=!1;function Vv(e){return Sr(e)&&cv(e.length)&&!!T[Ot(e)]}var Bv=Vv;function Fv(e){return function(t){return e(t)}}var Gv=Fv,Dl=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Tt=Dl&&typeof module=="object"&&module&&!module.nodeType&&module,Rv=Tt&&Tt.exports===Dl,wr=Rv&&Ll.process,qv=function(){try{var e=Tt&&Tt.require&&Tt.require("util").types;return e||wr&&wr.binding&&wr.binding("util")}catch{}}(),wl=qv,Cl=wl&&wl.isTypedArray,cM=Cl?Gv(Cl):Bv;var Qv=Object.prototype,dM=Qv.hasOwnProperty;function Hv(e,t){return function(r){return e(t(r))}}var Yv=Hv,gM=Yv(Object.keys,Object);var Zv=Object.prototype,pM=Zv.hasOwnProperty;var Wv=Pe(Object,"create"),$t=Wv;function Kv(){this.__data__=$t?$t(null):{},this.size=0}var Jv=Kv;function Xv(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var ek=Xv,tk="__lodash_hash_undefined__",nk=Object.prototype,rk=nk.hasOwnProperty;function ik(e){var t=this.__data__;if($t){var r=t[e];return r===tk?void 0:r}return rk.call(t,e)?t[e]:void 0}var ok=ik,ak=Object.prototype,lk=ak.hasOwnProperty;function sk(e){var t=this.__data__;return $t?t[e]!==void 0:lk.call(t,e)}var uk=sk,ck="__lodash_hash_undefined__";function dk(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=$t&&t===void 0?ck:t,this}var gk=dk;function ze(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze.prototype.clear=Jv;ze.prototype.delete=ek;ze.prototype.get=ok;ze.prototype.has=uk;ze.prototype.set=gk;var Ml=ze;function pk(){this.__data__=[],this.size=0}var mk=pk;function fk(e,t){for(var r=e.length;r--;)if(lv(e[r][0],t))return r;return-1}var an=fk,yk=Array.prototype,bk=yk.splice;function hk(e){var t=this.__data__,r=an(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():bk.call(t,r,1),--this.size,!0}var vk=hk;function kk(e){var t=this.__data__,r=an(t,e);return r<0?void 0:t[r][1]}var wk=kk;function Ck(e){return an(this.__data__,e)>-1}var Mk=Ck;function xk(e,t){var r=this.__data__,n=an(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Ik=xk;function Ue(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ue.prototype.clear=mk;Ue.prototype.delete=vk;Ue.prototype.get=wk;Ue.prototype.has=Mk;Ue.prototype.set=Ik;var ln=Ue,Ak=Pe(G,"Map"),Nt=Ak;function Ek(){this.size=0,this.__data__={hash:new Ml,map:new(Nt||ln),string:new Ml}}var Sk=Ek;function jk(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Lk=jk;function Tk(e,t){var r=e.__data__;return Lk(t)?r[typeof t=="string"?"string":"hash"]:r.map}var sn=Tk;function $k(e){var t=sn(this,e).delete(e);return this.size-=t?1:0,t}var Nk=$k;function Ok(e){return sn(this,e).get(e)}var Dk=Ok;function _k(e){return sn(this,e).has(e)}var Pk=_k;function zk(e,t){var r=sn(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Uk=zk;function Ve(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Ve.prototype.clear=Sk;Ve.prototype.delete=Nk;Ve.prototype.get=Dk;Ve.prototype.has=Pk;Ve.prototype.set=Uk;var _l=Ve;function Vk(){this.__data__=new ln,this.size=0}var Bk=Vk;function Fk(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var Gk=Fk;function Rk(e){return this.__data__.get(e)}var qk=Rk;function Qk(e){return this.__data__.has(e)}var Hk=Qk,Yk=200;function Zk(e,t){var r=this.__data__;if(r instanceof ln){var n=r.__data__;if(!Nt||n.length<Yk-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new _l(n)}return r.set(e,t),this.size=r.size,this}var Wk=Zk;function Dt(e){var t=this.__data__=new ln(e);this.size=t.size}Dt.prototype.clear=Bk;Dt.prototype.delete=Gk;Dt.prototype.get=qk;Dt.prototype.has=Hk;Dt.prototype.set=Wk;var Kk=Object.prototype,mM=Kk.propertyIsEnumerable;var Jk=Pe(G,"DataView"),Mr=Jk,Xk=Pe(G,"Promise"),xr=Xk,ew=Pe(G,"Set"),Ir=ew,xl="[object Map]",tw="[object Object]",Il="[object Promise]",Al="[object Set]",El="[object WeakMap]",Sl="[object DataView]",nw=Z(Mr),rw=Z(Nt),iw=Z(xr),ow=Z(Ir),aw=Z(Cr),De=Ot;(Mr&&De(new Mr(new ArrayBuffer(1)))!=Sl||Nt&&De(new Nt)!=xl||xr&&De(xr.resolve())!=Il||Ir&&De(new Ir)!=Al||Cr&&De(new Cr)!=El)&&(De=function(e){var t=Ot(e),r=t==tw?e.constructor:void 0,n=r?Z(r):"";if(n)switch(n){case nw:return Sl;case rw:return xl;case iw:return Il;case ow:return Al;case aw:return El}return t});var fM=G.Uint8Array;var lw="__lodash_hash_undefined__";function sw(e){return this.__data__.set(e,lw),this}var uw=sw;function cw(e){return this.__data__.has(e)}var dw=cw;function Ar(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new _l;++t<r;)this.add(e[t])}Ar.prototype.add=Ar.prototype.push=uw;Ar.prototype.has=dw;var jl=_e?_e.prototype:void 0,yM=jl?jl.valueOf:void 0;var gw=Object.prototype,bM=gw.hasOwnProperty;var pw=Object.prototype,hM=pw.hasOwnProperty;var vM=new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,"i"),kM=new RegExp(/[A-Fa-f0-9]{1}/,"g"),wM=new RegExp(/[A-Fa-f0-9]{2}/,"g");var jr=class{constructor(t,r,n=[]){this.id=t,this.assets=[...n],this.activeAssetIds=new Set,this.loaderDisposer={},this.cesdk=r}async findAssets(t){let{page:r,perPage:n,locale:a="en",sortActiveFirst:o,query:i,tags:l,groups:u,excludeGroups:s,sortingOrder:c,sortKey:d}=t,g=[...this.assets];if(u&&u.length>0&&(g=g.filter(m=>m.groups&&u.some(y=>m.groups?.includes(y)))),s&&s.length>0&&(g=g.filter(m=>!m.groups||!s.some(y=>m.groups?.includes(y)))),i){let m=i.toLowerCase();g=g.filter(y=>{let k=y.label?.[a]?.toLowerCase(),C=y.tags?.[a]||[];return k&&k.includes(m)||C.some(M=>M.toLowerCase().includes(m))})}if(l&&l.length>0){let m=Array.isArray(l)?l:[l];g=g.filter(y=>{let k=y.tags?.[a]||[];return m.some(C=>k.includes(C))})}o&&g.sort((m,y)=>{let k=this.activeAssetIds.has(m.id),C=this.activeAssetIds.has(y.id);return k&&!C?-1:!k&&C?1:0}),d&&d!=="id"?g.sort((m,y)=>{let k=m.meta?.[d],C=y.meta?.[d];return k===void 0?1:C===void 0?-1:typeof k=="string"&&typeof C=="string"?c==="Descending"?C.localeCompare(k):k.localeCompare(C):typeof k=="number"&&typeof C=="number"?c==="Descending"?C-k:k-C:0}):d==="id"&&g.sort((m,y)=>c==="Descending"?y.id.localeCompare(m.id):m.id.localeCompare(y.id));let f=g.length,v=r*n,w=v+n,p=g.slice(v,w).map(m=>({id:m.id,groups:m.groups,meta:m.meta,payload:m.payload,locale:a,label:m.label?.[a],tags:m.tags?.[a],active:this.activeAssetIds.has(m.id)})),h=w<f?r+1:void 0;return{assets:p,currentPage:r,nextPage:h,total:f}}updateLabel(t,r,n){this.assets.forEach(a=>{a.id===t&&(a.label=a.label||{},a.label[n]=r(a.label[n]))})}getLabel(t,r){let n=this.assets.find(a=>a.id===t);if(n!=null)return n.label?.[r]}setAssetActive(t){this.activeAssetIds.add(t)}setAssetLoading(t,r){if(r){let n=this.getLabel(t,"en")??"",a=mw(o=>this.cesdk.engine.asset===null?!1:(this.updateLabel(t,()=>`${o} ${n}`,"en"),this.cesdk.engine.asset.assetSourceContentsChanged(this.id),!0));this.loaderDisposer[t]=()=>{this.updateLabel(t,()=>n,"en"),a()}}else this.loaderDisposer[t]?.(),this.loaderDisposer[t]=void 0}setAssetInactive(t){this.activeAssetIds.delete(t),this.loaderDisposer[t]?.(),this.loaderDisposer[t]=void 0}clearActiveAssets(){this.activeAssetIds.clear(),Object.values(this.loaderDisposer).forEach(t=>{t?.()}),this.loaderDisposer={}}isAssetActive(t){return this.activeAssetIds.has(t)}addAsset(t){let r=this.assets.findIndex(n=>n.id===t.id);r>=0?this.assets[r]=t:this.assets.push(t)}removeAsset(t){let r=this.assets.findIndex(n=>n.id===t);r!==-1&&(this.assets.splice(r,1),this.activeAssetIds.delete(t))}async getGroups(){let t=new Set;return this.assets.forEach(r=>{r.groups&&r.groups.forEach(n=>t.add(n))}),Array.from(t)}getSupportedMimeTypes(){return["image/jpeg","image/png","image/svg+xml","image/webp","video/mp4","audio/mpeg"]}};function Pl(e,t,r=[]){return new jr(e,t,r)}function mw(e,t=200){let r=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],n=0,a=setInterval(()=>{let o=r[n];n=(n+1)%r.length,e(o)||clearInterval(a)},t);return()=>{clearInterval(a)}}var Lr="ly.img.ai.apps";var N=_t("apps"),un=512,cn=128,zl=e=>({async initialize({cesdk:t}){if(t==null)return;let r=t.engine.scene.getMode()==="Video",{providers:n,baseURL:a="https://cdn.img.ly/assets/plugins/plugin-ai-apps-web/v1/"}=e,{activeAssetSource:o}=await fw(t,{isVideoMode:r,baseURL:a,debug:e.debug}),i=await W(t,o,n.text2text),l=await W(t,o,n.text2image),u=await W(t,o,n.image2image),s,c,d,g;r&&(s=await W(t,o,n.text2video),c=await W(t,o,n.image2video),d=await W(t,o,n.text2speech),g=await W(t,o,n.text2sound),t.addPlugin($o({text2video:s,image2video:c,debug:e.debug,dryRun:e.dryRun})),t.addPlugin(xa({text2speech:d,text2sound:g,debug:e.debug,dryRun:e.dryRun}))),i!=null&&t.addPlugin(fl({provider:i,debug:e.debug})),t.addPlugin(Bi({text2image:l,image2image:u,debug:e.debug,dryRun:e.dryRun})),bw(t,{text2text:i,text2image:l,image2image:u,text2video:s,image2video:c,text2speech:d,text2sound:g},r),hw(t)}});async function W(e,t,r){if(r==null)return;let n=await r({cesdk:e});if(t!=null){let a=async(o,i,l)=>{let u=`${n.kind}-generation`;n.kind==="audio"&&(n.id.includes("sound")?u="audio-generation/sound":n.id.includes("speech")&&(u="audio-generation/speech")),e.ui.experimental.setGlobalStateValue(`${N}.isGenerating`,!0),t.setAssetLoading(u,!0),e.engine.asset.assetSourceContentsChanged(N);try{return await l(o,i)}finally{e.engine.asset.assetSourceContentsChanged(N),t.setAssetLoading(u,!1),e.ui.experimental.setGlobalStateValue(`${N}.isGenerating`,!1)}};n.output.middleware=[...n.output.middleware??[],a]}return()=>Promise.resolve(n)}async function fw(e,t){let{isVideoMode:r,debug:n,baseURL:a}=t;yw(e);let o;r&&(o=Pl(N,e,[{id:"image-generation",label:{en:"Generate Image"},meta:{label:"Generate Image",thumbUri:`${a}GenerateImage.png`,width:un,height:cn}},{id:"video-generation",label:{en:"Generate Video"},meta:{label:"Generate Video",thumbUri:`${a}GenerateVideo.png`,width:un,height:cn}},{id:"audio-generation/sound",label:{en:"Generate Sound"},meta:{label:"Generate Sound",thumbUri:`${a}GenerateSound.png`,width:un,height:cn}},{id:"audio-generation/speech",label:{en:"AI Voice"},meta:{label:"AI Voice",thumbUri:`${a}AIVoice.png`,width:un,height:cn}}]),e.engine.asset.addSource(o),e.ui.registerPanel(N,({builder:l})=>{l.Library(N,{entries:[N],onSelect:async u=>{e.ui.openPanel(_t(u.id))}})}),e.ui.addAssetLibraryEntry({id:N,sourceIds:[N],gridColumns:1,gridItemHeight:"auto",gridBackgroundType:"cover",cardLabel:({label:l})=>l,cardLabelPosition:()=>"inside"}));let i=`${N}.dock`;return r?(n&&console.log("Registering AI App Dock Button",i),e.ui.registerComponent(i,({builder:l,experimental:u})=>{let s=e.ui.isPanelOpen(N),c=u.global(`${N}.isGenerating`,!1);l.Button(`${N}.dock.button`,{label:"AI",isSelected:s,icon:c.value?"@imgly/LoadingSpinner":"@imgly/Sparkle",onClick:()=>{e.ui.findAllPanels().forEach(d=>{d.startsWith("ly.img.ai/")&&e.ui.closePanel(d),!s&&d==="//ly.img.panel/assetLibrary"&&e.ui.closePanel(d)}),s?e.ui.closePanel(N):e.ui.openPanel(N)}})})):e.ui.registerComponent(i,({builder:l,experimental:u})=>{let s=_t("image-generation"),c=u.global(`${N}.isGenerating`,!1),d=e.ui.isPanelOpen(s);l.Button(`${N}.dock.button`,{label:"AI",isSelected:d,icon:c.value?"@imgly/LoadingSpinner":"@imgly/Sparkle",onClick:()=>{d?e.ui.closePanel(s):e.ui.openPanel(s)}})}),{activeAssetSource:o}}function yw(e){e.ui.registerComponent("ly.img.assetLibrary.dock",({builder:{Button:t},engine:r,payload:n})=>{let a="\n\nPlease provide a payload with entries, e.g. \n```\n{ id: 'ly.img.assetLibrary.dock', entries: ['ly.img.image', 'ly.img.video'] }\n```";if(!n||n.id!=="ly.img.assetLibrary.dock"){console.warn(`No payload found for 'ly.img.assetLibrary.dock'${a}`);return}let{id:o,key:i,label:l,icon:u,entries:s}=n;if(s==null||!Array.isArray(s)){console.warn(`No valid entries value found for 'ly.img.assetLibrary.dock'${a}`);return}if(s.some(b=>typeof b!="string")){console.warn(`Entries value for 'ly.img.assetLibrary.dock' need to be all strings referring to asset library entries${a}`);return}l!=null&&typeof l!="string"&&console.warn("Label for 'ly.img.assetLibrary.dock' must be a string if provided");let c=r.scene.getMode(),d=s.filter(b=>{let p=e.ui.getAssetLibraryEntry(b);if(p==null)return!1;let h=p.sceneMode;return typeof h=="string"?p.sceneMode===c||p.sceneMode==="All":typeof h=="function"?p.sourceIds.some(m=>{let y=h(e.version.startsWith("1.51.")?m:{sourceId:m});return y===c||y==="All"}):!0});if(d.length===0)return;let g=l;g==null&&(g=`libraries.${o}.label`);let f=e.ui.isPanelOpen("//ly.img.panel/assetLibrary",{payload:{entries:d,title:g}}),v=e.ui.isPanelOpen("//ly.img.panel/assetLibrary.replace"),w=u;w==null&&d.length===1&&(w=e.ui.getAssetLibraryEntry(d[0])?.icon),t(i??o,{label:g,icon:w,isDisabled:v,isSelected:f,onClick:()=>{f?e.ui.closePanel("//ly.img.panel/assetLibrary"):(e.ui.findAllPanels().forEach(b=>{(b===N||b.startsWith("ly.img.ai/"))&&e.ui.closePanel(b)}),e.ui.openPanel("//ly.img.panel/assetLibrary",{payload:{entries:d,title:g}}))}})})}async function bw(e,t,r){let n=await t.text2image?.({cesdk:e}),a=await t.image2image?.({cesdk:e}),o=new Er("ly.img.ai/image-generation.history",e,[n!=null?`${n.id}.history`:void 0,a!=null?`${a?.id}.history`:void 0].filter(Boolean));e.engine.asset.addSource(o);let i=e.ui.getAssetLibraryEntry("ly.img.image");if(i!=null&&e.ui.updateAssetLibraryEntry("ly.img.image",{sourceIds:[...i.sourceIds,"ly.img.ai/image-generation.history"]}),!r)return;let l=await t.text2video?.({cesdk:e}),u=await t.image2video?.({cesdk:e}),s=new Er("ly.img.ai/video-generation.history",e,[l!=null?`${l.id}.history`:void 0,u!=null?`${u?.id}.history`:void 0].filter(Boolean));e.engine.asset.addSource(s);let c=e.ui.getAssetLibraryEntry("ly.img.video");c!=null&&e.ui.updateAssetLibraryEntry("ly.img.video",{sourceIds:[...c.sourceIds,"ly.img.ai/video-generation.history"]});let d=await t.text2speech?.({cesdk:e}),g=await t.text2sound?.({cesdk:e}),f=e.ui.getAssetLibraryEntry("ly.img.audio"),v=[d!=null?`${d.id}.history`:void 0,g!=null?`${g.id}.history`:void 0].filter(Boolean);f!=null&&e.ui.updateAssetLibraryEntry("ly.img.audio",{sourceIds:[...f.sourceIds,...v]})}function hw(e){e.i18n.setTranslations({en:{"panel.ly.img.ai.generation.confirmCancel.content":"Are you sure you want to cancel the generation?","panel.ly.img.ai.generation.confirmCancel.confirm":"Cancel Generation","panel.ly.img.ai/apps":"AI","panel.ly.img.ai/fal-ai/gemini-flash-edit.imageSelection":"Select Image To Change","panel.gpt-image-1.imageSelection":"Select Image To Change","panel.ly.img.ai/elevenlabs":"AI Voice","panel.ly.img.ai/demo.video":"Generate Video","panel.ly.img.ai/demo.image":"Generate Image","panel.fal-ai/minimax/video-01-live/image-to-video.imageSelection":"Select Image To Generate","panel.ly.img.ai/fal-ai/minimax/video-01-live/image-to-video.imageSelection":"Select Image To Generate","panel.fal-ai/gemini-flash-edit.imageSelection":"Select Image To Generate","libraries.ly.img.ai/fal-ai/recraft-v3.history.label":"Generated From Text","libraries.ly.img.ai/fal-ai/gemini-flash-edit.history.label":"Generated From Image","libraries.ly.img.ai/fal-ai/pixverse/v3.5/text-to-video.history.label":"Generated From Text","libraries.ly.img.ai/fal-ai/minimax/video-01-live/image-to-video.history.label":"Generated From Image","libraries.elevenlabs/monolingual/v1.history.label":"AI Voice","libraries.elevenlabs/sound-generation.history.label":"Generated Sound","libraries.ly.img.ai/image-generation.history.label":"AI Generated Images","libraries.ly.img.ai/video-generation.history.label":"AI Generated Videos"}})}var vw=e=>({name:Lr,version:"0.1.8",...zl(e)}),VM=vw;export{VM as default};
401
401
  /*! Bundled license information:
402
402
 
403
403
  @imgly/plugin-ai-generation-web/dist/index.mjs: