image-sprout 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const u of s.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();const Zr=!1;var hn=Array.isArray,Rs=Array.prototype.indexOf,Vt=Array.prototype.includes,Dr=Array.from,Ps=Object.defineProperty,Ht=Object.getOwnPropertyDescriptor,sa=Object.getOwnPropertyDescriptors,Cs=Object.prototype,Is=Array.prototype,gn=Object.getPrototypeOf,zn=Object.isExtensible;const Ms=()=>{};function Ts(e){return e()}function $r(e){for(var t=0;t<e.length;t++)e[t]()}function ia(){var e,t,r=new Promise((n,a)=>{e=n,t=a});return{promise:r,resolve:e,reject:t}}const be=2,Qt=4,At=8,bn=1<<24,kt=16,Ye=32,Lt=64,Qr=128,Ue=512,he=1024,ge=2048,We=4096,we=8192,rt=16384,er=32768,Jt=65536,Gn=1<<17,Ds=1<<18,tr=1<<19,oa=1<<20,et=1<<25,Ot=65536,en=1<<21,mn=1<<22,mt=1<<23,lt=Symbol("$state"),As=Symbol("legacy props"),Os=Symbol(""),Pt=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Ns=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml");function la(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Fs(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Ls(e,t,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Us(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function zs(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Gs(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Bs(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function qs(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Ks(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Hs(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Vs(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Js(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Ws=1,Ys=2,ua=4,Xs=8,Zs=16,$s=1,Qs=2,ei=4,ti=8,ri=16,ni=1,ai=2,ve=Symbol(),ca="http://www.w3.org/1999/xhtml";function si(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function ii(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function da(e){return e===this.v}function oi(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function fa(e){return!oi(e,this.v)}let rr=!1,li=!1;function ui(){rr=!0}let le=null;function Wt(e){le=e}function xe(e,t=!1,r){le={p:le,i:!1,c:null,e:null,s:e,x:null,l:rr&&!t?{s:null,u:null,$:[]}:null}}function ye(e){var t=le,r=t.e;if(r!==null){t.e=null;for(var n of r)Ia(n)}return t.i=!0,le=t.p,{}}function gr(){return!rr||le!==null&&le.l===null}let Ct=[];function va(){var e=Ct;Ct=[],$r(e)}function ut(e){if(Ct.length===0&&!dr){var t=Ct;queueMicrotask(()=>{t===Ct&&va()})}Ct.push(e)}function ci(){for(;Ct.length>0;)va()}function pa(e){var t=re;if(t===null)return $.f|=mt,e;if((t.f&er)===0&&(t.f&Qt)===0)throw e;bt(e,t)}function bt(e,t){for(;t!==null;){if((t.f&Qr)!==0){if((t.f&er)===0)throw e;try{t.b.error(e);return}catch(r){e=r}}t=t.parent}throw e}const di=-7169;function ce(e,t){e.f=e.f&di|t}function _n(e){(e.f&Ue)!==0||e.deps===null?ce(e,he):ce(e,We)}function ha(e){if(e!==null)for(const t of e)(t.f&be)===0||(t.f&Ot)===0||(t.f^=Ot,ha(t.deps))}function ga(e,t,r){(e.f&ge)!==0?t.add(e):(e.f&We)!==0&&r.add(e),ha(e.deps),ce(e,he)}const jr=new Set;let ae=null,tn=null,He=null,Re=[],Ar=null,dr=!1,Yt=null,fi=1;class _t{id=fi++;current=new Map;previous=new Map;#e=new Set;#o=new Set;#t=0;#i=0;#r=null;#s=new Set;#n=new Set;#a=new Map;is_fork=!1;#l=!1;#c(){return this.is_fork||this.#i>0}skip_effect(t){this.#a.has(t)||this.#a.set(t,{d:[],m:[]})}unskip_effect(t){var r=this.#a.get(t);if(r){this.#a.delete(t);for(var n of r.d)ce(n,ge),tt(n);for(n of r.m)ce(n,We),tt(n)}}process(t){Re=[],this.apply();var r=Yt=[],n=[];for(const a of t)this.#u(a,r,n);if(Yt=null,this.#c()){this.#d(n),this.#d(r);for(const[a,s]of this.#a)xa(a,s)}else{tn=this,ae=null;for(const a of this.#e)a(this);this.#e.clear(),this.#t===0&&this.#f(),Bn(n),Bn(r),this.#s.clear(),this.#n.clear(),tn=null,this.#r?.resolve()}He=null}#u(t,r,n){t.f^=he;for(var a=t.first;a!==null;){var s=a.f,u=(s&(Ye|Lt))!==0,d=u&&(s&he)!==0,o=(s&we)!==0,f=d||this.#a.has(a);if(!f&&a.fn!==null){u?o||(a.f^=he):(s&Qt)!==0?r.push(a):(s&(At|bn))!==0&&o?n.push(a):_r(a)&&($t(a),(s&kt)!==0&&(this.#n.add(a),o&&ce(a,ge)));var v=a.first;if(v!==null){a=v;continue}}for(;a!==null;){var _=a.next;if(_!==null){a=_;break}a=a.parent}}}#d(t){for(var r=0;r<t.length;r+=1)ga(t[r],this.#s,this.#n)}capture(t,r){r!==ve&&!this.previous.has(t)&&this.previous.set(t,r),(t.f&mt)===0&&(this.current.set(t,t.v),He?.set(t,t.v))}activate(){ae=this,this.apply()}deactivate(){ae===this&&(ae=null,He=null)}flush(){if(Re.length>0)ae=this,ba();else if(this.#t===0&&!this.is_fork){for(const t of this.#e)t(this);this.#e.clear(),this.#f(),this.#r?.resolve()}this.deactivate()}discard(){for(const t of this.#o)t(this);this.#o.clear()}#f(){if(jr.size>1){this.previous.clear();var t=ae,r=He,n=!0;for(const s of jr){if(s===this){n=!1;continue}const u=[];for(const[o,f]of this.current){if(s.current.has(o))if(n&&f!==s.current.get(o))s.current.set(o,f);else continue;u.push(o)}if(u.length===0)continue;const d=[...s.current.keys()].filter(o=>!this.current.has(o));if(d.length>0){var a=Re;Re=[];const o=new Set,f=new Map;for(const v of u)ma(v,d,o,f);if(Re.length>0){ae=s,s.apply();for(const v of Re)s.#u(v,[],[]);s.deactivate()}Re=a}}ae=t,He=r}this.#a.clear(),jr.delete(this)}increment(t){this.#t+=1,t&&(this.#i+=1)}decrement(t){this.#t-=1,t&&(this.#i-=1),!this.#l&&(this.#l=!0,ut(()=>{this.#l=!1,this.#c()?Re.length>0&&this.flush():this.revive()}))}revive(){for(const t of this.#s)this.#n.delete(t),ce(t,ge),tt(t);for(const t of this.#n)ce(t,We),tt(t);this.flush()}oncommit(t){this.#e.add(t)}ondiscard(t){this.#o.add(t)}settled(){return(this.#r??=ia()).promise}static ensure(){if(ae===null){const t=ae=new _t;jr.add(ae),dr||ut(()=>{ae===t&&t.flush()})}return ae}apply(){}}function vi(e){var t=dr;dr=!0;try{for(var r;;){if(ci(),Re.length===0&&(ae?.flush(),Re.length===0))return Ar=null,r;ba()}}finally{dr=t}}function ba(){var e=null;try{for(var t=0;Re.length>0;){var r=_t.ensure();if(t++>1e3){var n,a;pi()}r.process(Re),xt.clear()}}finally{Re=[],Ar=null,Yt=null}}function pi(){try{Bs()}catch(e){bt(e,Ar)}}let ot=null;function Bn(e){var t=e.length;if(t!==0){for(var r=0;r<t;){var n=e[r++];if((n.f&(rt|we))===0&&_r(n)&&(ot=new Set,$t(n),n.deps===null&&n.first===null&&n.nodes===null&&n.teardown===null&&n.ac===null&&Ta(n),ot?.size>0)){xt.clear();for(const a of ot){if((a.f&(rt|we))!==0)continue;const s=[a];let u=a.parent;for(;u!==null;)ot.has(u)&&(ot.delete(u),s.push(u)),u=u.parent;for(let d=s.length-1;d>=0;d--){const o=s[d];(o.f&(rt|we))===0&&$t(o)}}ot.clear()}}ot=null}}function ma(e,t,r,n){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const a of e.reactions){const s=a.f;(s&be)!==0?ma(a,t,r,n):(s&(mn|kt))!==0&&(s&ge)===0&&_a(a,t,n)&&(ce(a,ge),tt(a))}}function _a(e,t,r){const n=r.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const a of e.deps){if(Vt.call(t,a))return!0;if((a.f&be)!==0&&_a(a,t,r))return r.set(a,!0),!0}return r.set(e,!1),!1}function tt(e){var t=Ar=e,r=t.b;if(r?.is_pending&&(e.f&(Qt|At|bn))!==0&&(e.f&er)===0){r.defer_effect(e);return}for(;t.parent!==null;){t=t.parent;var n=t.f;if(Yt!==null&&t===re&&(e.f&At)===0)return;if((n&(Lt|Ye))!==0){if((n&he)===0)return;t.f^=he}}Re.push(t)}function xa(e,t){if(!((e.f&Ye)!==0&&(e.f&he)!==0)){(e.f&ge)!==0?t.d.push(e):(e.f&We)!==0&&t.m.push(e),ce(e,he);for(var r=e.first;r!==null;)xa(r,t),r=r.next}}function hi(e){let t=0,r=Nt(0),n;return()=>{yn()&&(i(r),kn(()=>(t===0&&(n=Ut(()=>e(()=>fr(r)))),t+=1,()=>{ut(()=>{t-=1,t===0&&(n?.(),n=void 0,fr(r))})})))}}var gi=Jt|tr;function bi(e,t,r,n){new mi(e,t,r,n)}class mi{parent;is_pending=!1;transform_error;#e;#o=null;#t;#i;#r;#s=null;#n=null;#a=null;#l=null;#c=0;#u=0;#d=!1;#f=new Set;#p=new Set;#v=null;#_=hi(()=>(this.#v=Nt(this.#c),()=>{this.#v=null}));constructor(t,r,n,a){this.#e=t,this.#t=r,this.#i=s=>{var u=re;u.b=this,u.f|=Qr,n(s)},this.parent=re.b,this.transform_error=a??this.parent?.transform_error??(s=>s),this.#r=Sn(()=>{this.#b()},gi)}#x(){try{this.#s=Le(()=>this.#i(this.#e))}catch(t){this.error(t)}}#y(t){const r=this.#t.failed;r&&(this.#a=Le(()=>{r(this.#e,()=>t,()=>()=>{})}))}#w(){const t=this.#t.pending;t&&(this.is_pending=!0,this.#n=Le(()=>t(this.#e)),ut(()=>{var r=this.#l=document.createDocumentFragment(),n=yt();r.append(n),this.#s=this.#g(()=>(_t.ensure(),Le(()=>this.#i(n)))),this.#u===0&&(this.#e.before(r),this.#l=null,Tt(this.#n,()=>{this.#n=null}),this.#h())}))}#b(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#c=0,this.#s=Le(()=>{this.#i(this.#e)}),this.#u>0){var t=this.#l=document.createDocumentFragment();Rn(this.#s,t);const r=this.#t.pending;this.#n=Le(()=>r(this.#e))}else this.#h()}catch(r){this.error(r)}}#h(){this.is_pending=!1;for(const t of this.#f)ce(t,ge),tt(t);for(const t of this.#p)ce(t,We),tt(t);this.#f.clear(),this.#p.clear()}defer_effect(t){ga(t,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#t.pending}#g(t){var r=re,n=$,a=le;nt(this.#r),Ge(this.#r),Wt(this.#r.ctx);try{return t()}catch(s){return pa(s),null}finally{nt(r),Ge(n),Wt(a)}}#m(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#m(t);return}this.#u+=t,this.#u===0&&(this.#h(),this.#n&&Tt(this.#n,()=>{this.#n=null}),this.#l&&(this.#e.before(this.#l),this.#l=null))}update_pending_count(t){this.#m(t),this.#c+=t,!(!this.#v||this.#d)&&(this.#d=!0,ut(()=>{this.#d=!1,this.#v&&Xt(this.#v,this.#c)}))}get_effect_pending(){return this.#_(),i(this.#v)}error(t){var r=this.#t.onerror;let n=this.#t.failed;if(!r&&!n)throw t;this.#s&&(Ce(this.#s),this.#s=null),this.#n&&(Ce(this.#n),this.#n=null),this.#a&&(Ce(this.#a),this.#a=null);var a=!1,s=!1;const u=()=>{if(a){ii();return}a=!0,s&&Js(),this.#a!==null&&Tt(this.#a,()=>{this.#a=null}),this.#g(()=>{_t.ensure(),this.#b()})},d=o=>{try{s=!0,r?.(o,u),s=!1}catch(f){bt(f,this.#r&&this.#r.parent)}n&&(this.#a=this.#g(()=>{_t.ensure();try{return Le(()=>{var f=re;f.b=this,f.f|=Qr,n(this.#e,()=>o,()=>u)})}catch(f){return bt(f,this.#r.parent),null}}))};ut(()=>{var o;try{o=this.transform_error(t)}catch(f){bt(f,this.#r&&this.#r.parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(d,f=>bt(f,this.#r&&this.#r.parent)):d(o)})}}function _i(e,t,r,n){const a=gr()?br:Or;var s=e.filter(_=>!_.settled);if(r.length===0&&s.length===0){n(t.map(a));return}var u=re,d=xi(),o=s.length===1?s[0].promise:s.length>1?Promise.all(s.map(_=>_.promise)):null;function f(_){d();try{n(_)}catch(m){(u.f&rt)===0&&bt(m,u)}rn()}if(r.length===0){o.then(()=>f(t.map(a)));return}function v(){d(),Promise.all(r.map(_=>wi(_))).then(_=>f([...t.map(a),..._])).catch(_=>bt(_,u))}o?o.then(v):v()}function xi(){var e=re,t=$,r=le,n=ae;return function(s=!0){nt(e),Ge(t),Wt(r),s&&n?.activate()}}function rn(e=!0){nt(null),Ge(null),Wt(null),e&&ae?.deactivate()}function yi(){var e=re.b,t=ae,r=e.is_rendered();return e.update_pending_count(1),t.increment(r),()=>{e.update_pending_count(-1),t.decrement(r)}}function br(e){var t=be|ge,r=$!==null&&($.f&be)!==0?$:null;return re!==null&&(re.f|=tr),{ctx:le,deps:null,effects:null,equals:da,f:t,fn:e,reactions:null,rv:0,v:ve,wv:0,parent:r??re,ac:null}}function wi(e,t,r){re===null&&Fs();var a=void 0,s=Nt(ve),u=!$,d=new Map;return Li(()=>{var o=ia();a=o.promise;try{Promise.resolve(e()).then(o.resolve,o.reject).finally(rn)}catch(m){o.reject(m),rn()}var f=ae;if(u){var v=yi();d.get(f)?.reject(Pt),d.delete(f),d.set(f,o)}const _=(m,w=void 0)=>{if(f.activate(),w)w!==Pt&&(s.f|=mt,Xt(s,w));else{(s.f&mt)!==0&&(s.f^=mt),Xt(s,m);for(const[g,b]of d){if(d.delete(g),g===f)break;b.reject(Pt)}}v&&v()};o.promise.then(_,m=>_(null,m||"unknown"))}),wn(()=>{for(const o of d.values())o.reject(Pt)}),new Promise(o=>{function f(v){function _(){v===a?o(s):f(a)}v.then(_,_)}f(a)})}function te(e){const t=br(e);return Oa(t),t}function Or(e){const t=br(e);return t.equals=fa,t}function ki(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r<t.length;r+=1)Ce(t[r])}}function Si(e){for(var t=e.parent;t!==null;){if((t.f&be)===0)return(t.f&rt)===0?t:null;t=t.parent}return null}function xn(e){var t,r=re;nt(Si(e));try{e.f&=~Ot,ki(e),t=Ua(e)}finally{nt(r)}return t}function ya(e){var t=xn(e);if(!e.equals(t)&&(e.wv=Fa(),(!ae?.is_fork||e.deps===null)&&(e.v=t,e.deps===null))){ce(e,he);return}wt||(He!==null?(yn()||ae?.is_fork)&&He.set(e,t):_n(e))}function ji(e){if(e.effects!==null)for(const t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(Pt),t.teardown=Ms,t.ac=null,vr(t,0),jn(t))}function wa(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&$t(t)}let nn=new Set;const xt=new Map;let ka=!1;function Nt(e,t){var r={f:0,v:e,reactions:null,equals:da,rv:0,wv:0};return r}function N(e,t){const r=Nt(e);return Oa(r),r}function Ei(e,t=!1,r=!0){const n=Nt(e);return t||(n.equals=fa),rr&&r&&le!==null&&le.l!==null&&(le.l.s??=[]).push(n),n}function l(e,t,r=!1){$!==null&&(!Ve||($.f&Gn)!==0)&&gr()&&($.f&(be|kt|mn|Gn))!==0&&(ze===null||!Vt.call(ze,e))&&Vs();let n=r?Ae(t):t;return Xt(e,n)}function Xt(e,t){if(!e.equals(t)){var r=e.v;wt?xt.set(e,t):xt.set(e,r),e.v=t;var n=_t.ensure();if(n.capture(e,r),(e.f&be)!==0){const a=e;(e.f&ge)!==0&&xn(a),_n(a)}e.wv=Fa(),Sa(e,ge),gr()&&re!==null&&(re.f&he)!==0&&(re.f&(Ye|Lt))===0&&(Fe===null?Gi([e]):Fe.push(e)),!n.is_fork&&nn.size>0&&!ka&&Ri()}return t}function Ri(){ka=!1;for(const e of nn)(e.f&he)!==0&&ce(e,We),_r(e)&&$t(e);nn.clear()}function fr(e){l(e,e.v+1)}function Sa(e,t){var r=e.reactions;if(r!==null)for(var n=gr(),a=r.length,s=0;s<a;s++){var u=r[s],d=u.f;if(!(!n&&u===re)){var o=(d&ge)===0;if(o&&ce(u,t),(d&be)!==0){var f=u;He?.delete(f),(d&Ot)===0&&(d&Ue&&(u.f|=Ot),Sa(f,We))}else o&&((d&kt)!==0&&ot!==null&&ot.add(u),tt(u))}}}function Ae(e){if(typeof e!="object"||e===null||lt in e)return e;const t=gn(e);if(t!==Cs&&t!==Is)return e;var r=new Map,n=hn(e),a=N(0),s=Dt,u=d=>{if(Dt===s)return d();var o=$,f=Dt;Ge(null),Jn(s);var v=d();return Ge(o),Jn(f),v};return n&&r.set("length",N(e.length)),new Proxy(e,{defineProperty(d,o,f){(!("value"in f)||f.configurable===!1||f.enumerable===!1||f.writable===!1)&&Ks();var v=r.get(o);return v===void 0?u(()=>{var _=N(f.value);return r.set(o,_),_}):l(v,f.value,!0),!0},deleteProperty(d,o){var f=r.get(o);if(f===void 0){if(o in d){const v=u(()=>N(ve));r.set(o,v),fr(a)}}else l(f,ve),fr(a);return!0},get(d,o,f){if(o===lt)return e;var v=r.get(o),_=o in d;if(v===void 0&&(!_||Ht(d,o)?.writable)&&(v=u(()=>{var w=Ae(_?d[o]:ve),g=N(w);return g}),r.set(o,v)),v!==void 0){var m=i(v);return m===ve?void 0:m}return Reflect.get(d,o,f)},getOwnPropertyDescriptor(d,o){var f=Reflect.getOwnPropertyDescriptor(d,o);if(f&&"value"in f){var v=r.get(o);v&&(f.value=i(v))}else if(f===void 0){var _=r.get(o),m=_?.v;if(_!==void 0&&m!==ve)return{enumerable:!0,configurable:!0,value:m,writable:!0}}return f},has(d,o){if(o===lt)return!0;var f=r.get(o),v=f!==void 0&&f.v!==ve||Reflect.has(d,o);if(f!==void 0||re!==null&&(!v||Ht(d,o)?.writable)){f===void 0&&(f=u(()=>{var m=v?Ae(d[o]):ve,w=N(m);return w}),r.set(o,f));var _=i(f);if(_===ve)return!1}return v},set(d,o,f,v){var _=r.get(o),m=o in d;if(n&&o==="length")for(var w=f;w<_.v;w+=1){var g=r.get(w+"");g!==void 0?l(g,ve):w in d&&(g=u(()=>N(ve)),r.set(w+"",g))}if(_===void 0)(!m||Ht(d,o)?.writable)&&(_=u(()=>N(void 0)),l(_,Ae(f)),r.set(o,_));else{m=_.v!==ve;var b=u(()=>Ae(f));l(_,b)}var h=Reflect.getOwnPropertyDescriptor(d,o);if(h?.set&&h.set.call(v,f),!m){if(n&&typeof o=="string"){var S=r.get("length"),L=Number(o);Number.isInteger(L)&&L>=S.v&&l(S,L+1)}fr(a)}return!0},ownKeys(d){i(a);var o=Reflect.ownKeys(d).filter(_=>{var m=r.get(_);return m===void 0||m.v!==ve});for(var[f,v]of r)v.v!==ve&&!(f in d)&&o.push(f);return o},setPrototypeOf(){Hs()}})}function qn(e){try{if(e!==null&&typeof e=="object"&&lt in e)return e[lt]}catch{}return e}function Pi(e,t){return Object.is(qn(e),qn(t))}var Kn,ja,Ea,Ra;function Ci(){if(Kn===void 0){Kn=window,ja=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Ea=Ht(t,"firstChild").get,Ra=Ht(t,"nextSibling").get,zn(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),zn(r)&&(r.__t=void 0)}}function yt(e=""){return document.createTextNode(e)}function Zt(e){return Ea.call(e)}function mr(e){return Ra.call(e)}function c(e,t){return Zt(e)}function _e(e,t=!1){{var r=Zt(e);return r instanceof Comment&&r.data===""?mr(r):r}}function p(e,t=1,r=!1){let n=e;for(;t--;)n=mr(n);return n}function Ii(e){e.textContent=""}function Pa(){return!1}function Mi(e,t,r){return document.createElementNS(ca,e,void 0)}let Hn=!1;function Ti(){Hn||(Hn=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Nr(e){var t=$,r=re;Ge(null),nt(null);try{return e()}finally{Ge(t),nt(r)}}function Di(e,t,r,n=r){e.addEventListener(t,()=>Nr(r));const a=e.__on_r;a?e.__on_r=()=>{a(),n(!0)}:e.__on_r=()=>n(!0),Ti()}function Ca(e){re===null&&($===null&&Gs(),zs()),wt&&Us()}function Ai(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function st(e,t){var r=re;r!==null&&(r.f&we)!==0&&(e|=we);var n={ctx:le,deps:null,nodes:null,f:e|ge|Ue,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null},a=n;if((e&Qt)!==0)Yt!==null?Yt.push(n):tt(n);else if(t!==null){try{$t(n)}catch(u){throw Ce(n),u}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&(a.f&tr)===0&&(a=a.first,(e&kt)!==0&&(e&Jt)!==0&&a!==null&&(a.f|=Jt))}if(a!==null&&(a.parent=r,r!==null&&Ai(a,r),$!==null&&($.f&be)!==0&&(e&Lt)===0)){var s=$;(s.effects??=[]).push(a)}return n}function yn(){return $!==null&&!Ve}function wn(e){const t=st(At,null);return ce(t,he),t.teardown=e,t}function ct(e){Ca();var t=re.f,r=!$&&(t&Ye)!==0&&(t&er)===0;if(r){var n=le;(n.e??=[]).push(e)}else return Ia(e)}function Ia(e){return st(Qt|oa,e)}function Oi(e){return Ca(),st(At|oa,e)}function Ni(e){_t.ensure();const t=st(Lt|tr,e);return(r={})=>new Promise(n=>{r.outro?Tt(t,()=>{Ce(t),n(void 0)}):(Ce(t),n(void 0))})}function Fi(e){return st(Qt,e)}function Li(e){return st(mn|tr,e)}function kn(e,t=0){return st(At|t,e)}function B(e,t=[],r=[],n=[]){_i(n,t,r,a=>{st(At,()=>e(...a.map(i)))})}function Sn(e,t=0){var r=st(kt|t,e);return r}function Le(e){return st(Ye|tr,e)}function Ma(e){var t=e.teardown;if(t!==null){const r=wt,n=$;Vn(!0),Ge(null);try{t.call(null)}finally{Vn(r),Ge(n)}}}function jn(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const a=r.ac;a!==null&&Nr(()=>{a.abort(Pt)});var n=r.next;(r.f&Lt)!==0?r.parent=null:Ce(r,t),r=n}}function Ui(e){for(var t=e.first;t!==null;){var r=t.next;(t.f&Ye)===0&&Ce(t),t=r}}function Ce(e,t=!0){var r=!1;(t||(e.f&Ds)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(zi(e.nodes.start,e.nodes.end),r=!0),jn(e,t&&!r),vr(e,0),ce(e,rt);var n=e.nodes&&e.nodes.t;if(n!==null)for(const s of n)s.stop();Ma(e);var a=e.parent;a!==null&&a.first!==null&&Ta(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function zi(e,t){for(;e!==null;){var r=e===t?null:mr(e);e.remove(),e=r}}function Ta(e){var t=e.parent,r=e.prev,n=e.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=r))}function Tt(e,t,r=!0){var n=[];Da(e,n,!0);var a=()=>{r&&Ce(e),t&&t()},s=n.length;if(s>0){var u=()=>--s||a();for(var d of n)d.out(u)}else a()}function Da(e,t,r){if((e.f&we)===0){e.f^=we;var n=e.nodes&&e.nodes.t;if(n!==null)for(const d of n)(d.is_global||r)&&t.push(d);for(var a=e.first;a!==null;){var s=a.next,u=(a.f&Jt)!==0||(a.f&Ye)!==0&&(e.f&kt)!==0;Da(a,t,u?r:!1),a=s}}}function En(e){Aa(e,!0)}function Aa(e,t){if((e.f&we)!==0){e.f^=we;for(var r=e.first;r!==null;){var n=r.next,a=(r.f&Jt)!==0||(r.f&Ye)!==0;Aa(r,a?t:!1),r=n}var s=e.nodes&&e.nodes.t;if(s!==null)for(const u of s)(u.is_global||t)&&u.in()}}function Rn(e,t){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end;r!==null;){var a=r===n?null:mr(r);t.append(r),r=a}}let Cr=!1,wt=!1;function Vn(e){wt=e}let $=null,Ve=!1;function Ge(e){$=e}let re=null;function nt(e){re=e}let ze=null;function Oa(e){$!==null&&(ze===null?ze=[e]:ze.push(e))}let Pe=null,De=0,Fe=null;function Gi(e){Fe=e}let Na=1,It=0,Dt=It;function Jn(e){Dt=e}function Fa(){return++Na}function _r(e){var t=e.f;if((t&ge)!==0)return!0;if(t&be&&(e.f&=~Ot),(t&We)!==0){for(var r=e.deps,n=r.length,a=0;a<n;a++){var s=r[a];if(_r(s)&&ya(s),s.wv>e.wv)return!0}(t&Ue)!==0&&He===null&&ce(e,he)}return!1}function La(e,t,r=!0){var n=e.reactions;if(n!==null&&!(ze!==null&&Vt.call(ze,e)))for(var a=0;a<n.length;a++){var s=n[a];(s.f&be)!==0?La(s,t,!1):t===s&&(r?ce(s,ge):(s.f&he)!==0&&ce(s,We),tt(s))}}function Ua(e){var t=Pe,r=De,n=Fe,a=$,s=ze,u=le,d=Ve,o=Dt,f=e.f;Pe=null,De=0,Fe=null,$=(f&(Ye|Lt))===0?e:null,ze=null,Wt(e.ctx),Ve=!1,Dt=++It,e.ac!==null&&(Nr(()=>{e.ac.abort(Pt)}),e.ac=null);try{e.f|=en;var v=e.fn,_=v();e.f|=er;var m=e.deps,w=ae?.is_fork;if(Pe!==null){var g;if(w||vr(e,De),m!==null&&De>0)for(m.length=De+Pe.length,g=0;g<Pe.length;g++)m[De+g]=Pe[g];else e.deps=m=Pe;if(yn()&&(e.f&Ue)!==0)for(g=De;g<m.length;g++)(m[g].reactions??=[]).push(e)}else!w&&m!==null&&De<m.length&&(vr(e,De),m.length=De);if(gr()&&Fe!==null&&!Ve&&m!==null&&(e.f&(be|We|ge))===0)for(g=0;g<Fe.length;g++)La(Fe[g],e);if(a!==null&&a!==e){if(It++,a.deps!==null)for(let b=0;b<r;b+=1)a.deps[b].rv=It;if(t!==null)for(const b of t)b.rv=It;Fe!==null&&(n===null?n=Fe:n.push(...Fe))}return(e.f&mt)!==0&&(e.f^=mt),_}catch(b){return pa(b)}finally{e.f^=en,Pe=t,De=r,Fe=n,$=a,ze=s,Wt(u),Ve=d,Dt=o}}function Bi(e,t){let r=t.reactions;if(r!==null){var n=Rs.call(r,e);if(n!==-1){var a=r.length-1;a===0?r=t.reactions=null:(r[n]=r[a],r.pop())}}if(r===null&&(t.f&be)!==0&&(Pe===null||!Vt.call(Pe,t))){var s=t;(s.f&Ue)!==0&&(s.f^=Ue,s.f&=~Ot),_n(s),ji(s),vr(s,0)}}function vr(e,t){var r=e.deps;if(r!==null)for(var n=t;n<r.length;n++)Bi(e,r[n])}function $t(e){var t=e.f;if((t&rt)===0){ce(e,he);var r=re,n=Cr;re=e,Cr=!0;try{(t&(kt|bn))!==0?Ui(e):jn(e),Ma(e);var a=Ua(e);e.teardown=typeof a=="function"?a:null,e.wv=Na;var s;Zr&&li&&(e.f&ge)!==0&&e.deps}finally{Cr=n,re=r}}}async function qi(){await Promise.resolve(),vi()}function i(e){var t=e.f,r=(t&be)!==0;if($!==null&&!Ve){var n=re!==null&&(re.f&rt)!==0;if(!n&&(ze===null||!Vt.call(ze,e))){var a=$.deps;if(($.f&en)!==0)e.rv<It&&(e.rv=It,Pe===null&&a!==null&&a[De]===e?De++:Pe===null?Pe=[e]:Pe.push(e));else{($.deps??=[]).push(e);var s=e.reactions;s===null?e.reactions=[$]:Vt.call(s,$)||s.push($)}}}if(wt&&xt.has(e))return xt.get(e);if(r){var u=e;if(wt){var d=u.v;return((u.f&he)===0&&u.reactions!==null||Ga(u))&&(d=xn(u)),xt.set(u,d),d}var o=(u.f&Ue)===0&&!Ve&&$!==null&&(Cr||($.f&Ue)!==0),f=(u.f&er)===0;_r(u)&&(o&&(u.f|=Ue),ya(u)),o&&!f&&(wa(u),za(u))}if(He?.has(e))return He.get(e);if((e.f&mt)!==0)throw e.v;return e.v}function za(e){if(e.f|=Ue,e.deps!==null)for(const t of e.deps)(t.reactions??=[]).push(e),(t.f&be)!==0&&(t.f&Ue)===0&&(wa(t),za(t))}function Ga(e){if(e.v===ve)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(xt.has(t)||(t.f&be)!==0&&Ga(t))return!0;return!1}function Ut(e){var t=Ve;try{return Ve=!0,e()}finally{Ve=t}}function Ki(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(lt in e)an(e);else if(!Array.isArray(e))for(let t in e){const r=e[t];typeof r=="object"&&r&&lt in r&&an(r)}}}function an(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{an(e[n],t)}catch{}const r=gn(e);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const n=sa(r);for(let a in n){const s=n[a].get;if(s)try{s.call(e)}catch{}}}}}const Hi=["touchstart","touchmove"];function Vi(e){return Hi.includes(e)}const ur=Symbol("events"),Ba=new Set,sn=new Set;function Ji(e,t,r,n={}){function a(s){if(n.capture||on.call(t,s),!s.cancelBubble)return Nr(()=>r?.call(this,s))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?ut(()=>{t.addEventListener(e,a,n)}):t.addEventListener(e,a,n),a}function Rt(e,t,r,n,a){var s={capture:n,passive:a},u=Ji(e,t,r,s);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&wn(()=>{t.removeEventListener(e,u,s)})}function D(e,t,r){(t[ur]??={})[e]=r}function Ie(e){for(var t=0;t<e.length;t++)Ba.add(e[t]);for(var r of sn)r(e)}let Wn=null;function on(e){var t=this,r=t.ownerDocument,n=e.type,a=e.composedPath?.()||[],s=a[0]||e.target;Wn=e;var u=0,d=Wn===e&&e[ur];if(d){var o=a.indexOf(d);if(o!==-1&&(t===document||t===window)){e[ur]=t;return}var f=a.indexOf(t);if(f===-1)return;o<=f&&(u=o)}if(s=a[u]||e.target,s!==t){Ps(e,"currentTarget",{configurable:!0,get(){return s||r}});var v=$,_=re;Ge(null),nt(null);try{for(var m,w=[];s!==null;){var g=s.assignedSlot||s.parentNode||s.host||null;try{var b=s[ur]?.[n];b!=null&&(!s.disabled||e.target===s)&&b.call(s,e)}catch(h){m?w.push(h):m=h}if(e.cancelBubble||g===t||g===null)break;s=g}if(m){for(let h of w)queueMicrotask(()=>{throw h});throw m}}finally{e[ur]=t,delete e.currentTarget,Ge(v),nt(_)}}}const Wi=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function Yi(e){return Wi?.createHTML(e)??e}function qa(e){var t=Mi("template");return t.innerHTML=Yi(e.replaceAll("<!>","<!---->")),t.content}function Ir(e,t){var r=re;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function E(e,t){var r=(t&ni)!==0,n=(t&ai)!==0,a,s=!e.startsWith("<!>");return()=>{a===void 0&&(a=qa(s?e:"<!>"+e),r||(a=Zt(a)));var u=n||ja?document.importNode(a,!0):a.cloneNode(!0);if(r){var d=Zt(u),o=u.lastChild;Ir(d,o)}else Ir(u,u);return u}}function Xi(e,t,r="svg"){var n=!e.startsWith("<!>"),a=`<${r}>${n?e:"<!>"+e}</${r}>`,s;return()=>{if(!s){var u=qa(a),d=Zt(u);s=Zt(d)}var o=s.cloneNode(!0);return Ir(o,o),o}}function Zi(e,t){return Xi(e,t,"svg")}function xr(){var e=document.createDocumentFragment(),t=document.createComment(""),r=yt();return e.append(t,r),Ir(t,r),e}function k(e,t){e!==null&&e.before(t)}function G(e,t){var r=t==null?"":typeof t=="object"?`${t}`:t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=`${r}`)}function $i(e,t){return Qi(e,t)}const Er=new Map;function Qi(e,{target:t,anchor:r,props:n={},events:a,context:s,intro:u=!0,transformError:d}){Ci();var o=void 0,f=Ni(()=>{var v=r??t.appendChild(yt());bi(v,{pending:()=>{}},w=>{xe({});var g=le;s&&(g.c=s),a&&(n.$$events=a),o=e(w,n)||{},ye()},d);var _=new Set,m=w=>{for(var g=0;g<w.length;g++){var b=w[g];if(!_.has(b)){_.add(b);var h=Vi(b);for(const R of[t,document]){var S=Er.get(R);S===void 0&&(S=new Map,Er.set(R,S));var L=S.get(b);L===void 0?(R.addEventListener(b,on,{passive:h}),S.set(b,1)):S.set(b,L+1)}}}};return m(Dr(Ba)),sn.add(m),()=>{for(var w of _)for(const h of[t,document]){var g=Er.get(h),b=g.get(w);--b==0?(h.removeEventListener(w,on),g.delete(w),g.size===0&&Er.delete(h)):g.set(w,b)}sn.delete(m),v!==r&&v.parentNode?.removeChild(v)}});return eo.set(o,f),o}let eo=new WeakMap;class to{anchor;#e=new Map;#o=new Map;#t=new Map;#i=new Set;#r=!0;constructor(t,r=!0){this.anchor=t,this.#r=r}#s=t=>{if(this.#e.has(t)){var r=this.#e.get(t),n=this.#o.get(r);if(n)En(n),this.#i.delete(r);else{var a=this.#t.get(r);a&&(a.effect.f&we)===0&&(this.#o.set(r,a.effect),this.#t.delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),n=a.effect)}for(const[s,u]of this.#e){if(this.#e.delete(s),s===t)break;const d=this.#t.get(u);d&&(Ce(d.effect),this.#t.delete(u))}for(const[s,u]of this.#o){if(s===r||this.#i.has(s)||(u.f&we)!==0)continue;const d=()=>{if(Array.from(this.#e.values()).includes(s)){var f=document.createDocumentFragment();Rn(u,f),f.append(yt()),this.#t.set(s,{effect:u,fragment:f})}else Ce(u);this.#i.delete(s),this.#o.delete(s)};this.#r||!n?(this.#i.add(s),Tt(u,d,!1)):d()}}};#n=t=>{this.#e.delete(t);const r=Array.from(this.#e.values());for(const[n,a]of this.#t)r.includes(n)||(Ce(a.effect),this.#t.delete(n))};ensure(t,r){var n=ae,a=Pa();if(r&&!this.#o.has(t)&&!this.#t.has(t))if(a){var s=document.createDocumentFragment(),u=yt();s.append(u),this.#t.set(t,{effect:Le(()=>r(u)),fragment:s})}else this.#o.set(t,Le(()=>r(this.anchor)));if(this.#e.set(n,t),a){for(const[d,o]of this.#o)d===t?n.unskip_effect(o):n.skip_effect(o);for(const[d,o]of this.#t)d===t?n.unskip_effect(o.effect):n.skip_effect(o.effect);n.oncommit(this.#s),n.ondiscard(this.#n)}else this.#s(n)}}function z(e,t,r=!1){var n=new to(e),a=r?Jt:0;function s(u,d){n.ensure(u,d)}Sn(()=>{var u=!1;t((d,o=0)=>{u=!0,s(o,d)}),u||s(-1,null)},a)}function Jr(e,t){return t}function ro(e,t,r){for(var n=[],a=t.length,s,u=t.length,d=0;d<a;d++){let _=t[d];Tt(_,()=>{if(s){if(s.pending.delete(_),s.done.add(_),s.pending.size===0){var m=e.outrogroups;ln(e,Dr(s.done)),m.delete(s),m.size===0&&(e.outrogroups=null)}}else u-=1},!1)}if(u===0){var o=n.length===0&&r!==null;if(o){var f=r,v=f.parentNode;Ii(v),v.append(f),e.items.clear()}ln(e,t,!o)}else s={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(s)}function ln(e,t,r=!0){var n;if(e.pending.size>0){n=new Set;for(const u of e.pending.values())for(const d of u)n.add(e.items.get(d).e)}for(var a=0;a<t.length;a++){var s=t[a];if(n?.has(s)){s.f|=et;const u=document.createDocumentFragment();Rn(s,u)}else Ce(t[a],r)}}var Yn;function Je(e,t,r,n,a,s=null){var u=e,d=new Map,o=(t&ua)!==0;if(o){var f=e;u=f.appendChild(yt())}var v=null,_=Or(()=>{var R=r();return hn(R)?R:R==null?[]:Dr(R)}),m,w=new Map,g=!0;function b(R){(L.effect.f&rt)===0&&(L.pending.delete(R),L.fallback=v,no(L,m,u,t,n),v!==null&&(m.length===0?(v.f&et)===0?En(v):(v.f^=et,cr(v,null,u)):Tt(v,()=>{v=null})))}function h(R){L.pending.delete(R)}var S=Sn(()=>{m=i(_);for(var R=m.length,C=new Set,A=ae,y=Pa(),x=0;x<R;x+=1){var I=m[x],K=n(I,x),q=g?null:d.get(K);q?(q.v&&Xt(q.v,I),q.i&&Xt(q.i,x),y&&A.unskip_effect(q.e)):(q=ao(d,g?u:Yn??=yt(),I,K,x,a,t,r),g||(q.e.f|=et),d.set(K,q)),C.add(K)}if(R===0&&s&&!v&&(g?v=Le(()=>s(u)):(v=Le(()=>s(Yn??=yt())),v.f|=et)),R>C.size&&Ls(),!g)if(w.set(A,C),y){for(const[J,Y]of d)C.has(J)||A.skip_effect(Y.e);A.oncommit(b),A.ondiscard(h)}else b(A);i(_)}),L={effect:S,items:d,pending:w,outrogroups:null,fallback:v};g=!1}function lr(e){for(;e!==null&&(e.f&Ye)===0;)e=e.next;return e}function no(e,t,r,n,a){var s=(n&Xs)!==0,u=t.length,d=e.items,o=lr(e.effect.first),f,v=null,_,m=[],w=[],g,b,h,S;if(s)for(S=0;S<u;S+=1)g=t[S],b=a(g,S),h=d.get(b).e,(h.f&et)===0&&(h.nodes?.a?.measure(),(_??=new Set).add(h));for(S=0;S<u;S+=1){if(g=t[S],b=a(g,S),h=d.get(b).e,e.outrogroups!==null)for(const q of e.outrogroups)q.pending.delete(h),q.done.delete(h);if((h.f&et)!==0)if(h.f^=et,h===o)cr(h,null,r);else{var L=v?v.next:o;h===e.effect.last&&(e.effect.last=h.prev),h.prev&&(h.prev.next=h.next),h.next&&(h.next.prev=h.prev),gt(e,v,h),gt(e,h,L),cr(h,L,r),v=h,m=[],w=[],o=lr(v.next);continue}if((h.f&we)!==0&&(En(h),s&&(h.nodes?.a?.unfix(),(_??=new Set).delete(h))),h!==o){if(f!==void 0&&f.has(h)){if(m.length<w.length){var R=w[0],C;v=R.prev;var A=m[0],y=m[m.length-1];for(C=0;C<m.length;C+=1)cr(m[C],R,r);for(C=0;C<w.length;C+=1)f.delete(w[C]);gt(e,A.prev,y.next),gt(e,v,A),gt(e,y,R),o=R,v=y,S-=1,m=[],w=[]}else f.delete(h),cr(h,o,r),gt(e,h.prev,h.next),gt(e,h,v===null?e.effect.first:v.next),gt(e,v,h),v=h;continue}for(m=[],w=[];o!==null&&o!==h;)(f??=new Set).add(o),w.push(o),o=lr(o.next);if(o===null)continue}(h.f&et)===0&&m.push(h),v=h,o=lr(h.next)}if(e.outrogroups!==null){for(const q of e.outrogroups)q.pending.size===0&&(ln(e,Dr(q.done)),e.outrogroups?.delete(q));e.outrogroups.size===0&&(e.outrogroups=null)}if(o!==null||f!==void 0){var x=[];if(f!==void 0)for(h of f)(h.f&we)===0&&x.push(h);for(;o!==null;)(o.f&we)===0&&o!==e.fallback&&x.push(o),o=lr(o.next);var I=x.length;if(I>0){var K=(n&ua)!==0&&u===0?r:null;if(s){for(S=0;S<I;S+=1)x[S].nodes?.a?.measure();for(S=0;S<I;S+=1)x[S].nodes?.a?.fix()}ro(e,x,K)}}s&&ut(()=>{if(_!==void 0)for(h of _)h.nodes?.a?.apply()})}function ao(e,t,r,n,a,s,u,d){var o=(u&Ws)!==0?(u&Zs)===0?Ei(r,!1,!1):Nt(r):null,f=(u&Ys)!==0?Nt(a):null;return{v:o,i:f,e:Le(()=>(s(t,o??r,f??a,d),()=>{e.delete(n)}))}}function cr(e,t,r){if(e.nodes)for(var n=e.nodes.start,a=e.nodes.end,s=t&&(t.f&et)===0?t.nodes.start:r;n!==null;){var u=mr(n);if(s.before(n),n===a)return;n=u}}function gt(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function Ka(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=Ka(e[t]))&&(n&&(n+=" "),n+=r)}else for(r in e)e[r]&&(n&&(n+=" "),n+=r);return n}function so(){for(var e,t,r=0,n="",a=arguments.length;r<a;r++)(e=arguments[r])&&(t=Ka(e))&&(n&&(n+=" "),n+=t);return n}function io(e){return typeof e=="object"?so(e):e??""}function oo(e,t,r){var n=e==null?"":""+e;return n===""?null:n}function lo(e,t){return e==null?null:String(e)}function pe(e,t,r,n,a,s){var u=e.__className;if(u!==r||u===void 0){var d=oo(r);d==null?e.removeAttribute("class"):t?e.className=d:e.setAttribute("class",d),e.__className=r}return s}function Pn(e,t,r,n){var a=e.__style;if(a!==t){var s=lo(t);s==null?e.removeAttribute("style"):e.style.cssText=s,e.__style=t}return n}function Ha(e,t,r=!1){if(e.multiple){if(t==null)return;if(!hn(t))return si();for(var n of e.options)n.selected=t.includes(Xn(n));return}for(n of e.options){var a=Xn(n);if(Pi(a,t)){n.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function uo(e){var t=new MutationObserver(()=>{Ha(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),wn(()=>{t.disconnect()})}function Xn(e){return"__value"in e?e.__value:e.value}const co=Symbol("is custom element"),fo=Symbol("is html"),vo=Ns?"progress":"PROGRESS";function dt(e,t){var r=Cn(e);r.value===(r.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==vo)||(e.value=t??"")}function Va(e,t){var r=Cn(e);r.checked!==(r.checked=t??void 0)&&(e.checked=t)}function H(e,t,r,n){var a=Cn(e);a[t]!==(a[t]=r)&&(t==="loading"&&(e[Os]=r),r==null?e.removeAttribute(t):typeof r!="string"&&po(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function Cn(e){return e.__attributes??={[co]:e.nodeName.includes("-"),[fo]:e.namespaceURI===ca}}var Zn=new Map;function po(e){var t=e.getAttribute("is")||e.nodeName,r=Zn.get(t);if(r)return r;Zn.set(t,r=[]);for(var n,a=e,s=Element.prototype;s!==a;){n=sa(a);for(var u in n)n[u].set&&r.push(u);a=gn(a)}return r}function un(e,t,r=t){var n=new WeakSet;Di(e,"input",async a=>{var s=a?e.defaultValue:e.value;if(s=Wr(e)?Yr(s):s,r(s),ae!==null&&n.add(ae),await qi(),s!==(s=t())){var u=e.selectionStart,d=e.selectionEnd,o=e.value.length;if(e.value=s??"",d!==null){var f=e.value.length;u===d&&d===o&&f>o?(e.selectionStart=f,e.selectionEnd=f):(e.selectionStart=u,e.selectionEnd=Math.min(d,f))}}}),Ut(t)==null&&e.value&&(r(Wr(e)?Yr(e.value):e.value),ae!==null&&n.add(ae)),kn(()=>{var a=t();if(e===document.activeElement){var s=tn??ae;if(n.has(s))return}Wr(e)&&a===Yr(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function Wr(e){var t=e.type;return t==="number"||t==="range"}function Yr(e){return e===""?null:+e}function $n(e,t){return e===t||e?.[lt]===t}function ho(e={},t,r,n){return Fi(()=>{var a,s;return kn(()=>{a=s,s=[],Ut(()=>{e!==r(...s)&&(t(e,...s),a&&$n(r(...a),e)&&t(null,...a))})}),()=>{ut(()=>{s&&$n(r(...s),e)&&t(null,...s)})}}),e}function Ja(e=!1){const t=le,r=t.l.u;if(!r)return;let n=()=>Ki(t.s);if(e){let a=0,s={};const u=br(()=>{let d=!1;const o=t.s;for(const f in o)o[f]!==s[f]&&(s[f]=o[f],d=!0);return d&&a++,a});n=()=>i(u)}r.b.length&&Oi(()=>{Qn(t,n),$r(r.b)}),ct(()=>{const a=Ut(()=>r.m.map(Ts));return()=>{for(const s of a)typeof s=="function"&&s()}}),r.a.length&&ct(()=>{Qn(t,n),$r(r.a)})}function Qn(e,t){if(e.l.s)for(const r of e.l.s)i(r);t()}let Rr=!1;function go(e){var t=Rr;try{return Rr=!1,[e(),Rr]}finally{Rr=t}}function pr(e,t,r,n){var a=!rr||(r&Qs)!==0,s=(r&ti)!==0,u=(r&ri)!==0,d=n,o=!0,f=()=>(o&&(o=!1,d=u?Ut(n):n),d),v;if(s){var _=lt in e||As in e;v=Ht(e,t)?.set??(_&&t in e?R=>e[t]=R:void 0)}var m,w=!1;s?[m,w]=go(()=>e[t]):m=e[t],m===void 0&&n!==void 0&&(m=f(),v&&(a&&qs(),v(m)));var g;if(a?g=()=>{var R=e[t];return R===void 0?f():(o=!0,R)}:g=()=>{var R=e[t];return R!==void 0&&(d=void 0),R===void 0?d:R},a&&(r&ei)===0)return g;if(v){var b=e.$$legacy;return(function(R,C){return arguments.length>0?((!a||!C||b||w)&&v(C?g():R),R):g()})}var h=!1,S=((r&$s)!==0?br:Or)(()=>(h=!1,g()));s&&i(S);var L=re;return(function(R,C){if(arguments.length>0){const A=C?i(S):a&&s?Ae(R):R;return l(S,A),h=!0,d!==void 0&&(d=A),R}return wt&&h||(L.f&rt)!==0?S.v:i(S)})}function Wa(e){le===null&&la(),rr&&le.l!==null?mo(le).m.push(e):ct(()=>{const t=Ut(e);if(typeof t=="function")return t})}function bo(e){le===null&&la(),Wa(()=>()=>Ut(e))}function mo(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const _o="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(_o);const Ya=[{id:"google/gemini-3.1-flash-image-preview",label:"Nano Banana 2",requestFormat:"image-config"},{id:"google/gemini-3-pro-image-preview",label:"Nano Banana Pro",requestFormat:"image-config"},{id:"openai/gpt-5-image",label:"GPT-5 Image",requestFormat:"openai-size"}],Xa=Ya[0].id,xo=[2,4,6];async function ue(e,t){const r=typeof window<"u"?new URL(e,window.location.origin).toString():e,n=await fetch(r,{headers:{"Content-Type":"application/json",...t?.headers??{}},...t}),a=n.headers.get("content-type")??"";if(!n.ok){let s={};try{s=await n.json()}catch{}throw new Error(s.error?.message??`Request failed: ${n.status}`)}if(!a.includes("application/json")){const u=(await n.text()).trimStart();throw u.startsWith("<!doctype")||u.startsWith("<html")?new Error("Expected JSON from /api but received HTML. Start the app through `npm run web`, or use a dev server with the local bridge middleware enabled."):new Error(`Expected JSON response but received ${a||"unknown content type"}`)}return n.json()}function yo(e){return new Promise((t,r)=>{const n=new FileReader;n.onload=()=>t(String(n.result)),n.onerror=()=>r(new Error(`Failed to read file: ${e.name}`)),n.readAsDataURL(e)})}async function wo(){return ue("/api/bootstrap")}async function ko(e){return ue("/api/config",{method:"PATCH",body:JSON.stringify(e)})}async function So(){return ue("/api/models")}async function jo(e){return ue("/api/models",{method:"POST",body:JSON.stringify(e)})}async function Eo(e,t){return ue(`/api/models/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)})}async function Ro(e){return ue(`/api/models/${encodeURIComponent(e)}`,{method:"DELETE"})}async function Po(e){return ue(`/api/models/${encodeURIComponent(e)}/set-default`,{method:"POST"})}async function Co(){return ue("/api/models/restore-defaults",{method:"POST"})}async function Io(e){return ue("/api/projects",{method:"POST",body:JSON.stringify({name:e})})}async function Mo(){return ue("/api/projects")}async function To(e){return ue(`/api/projects/${encodeURIComponent(e)}`)}async function Do(e){return ue(`/api/projects/${encodeURIComponent(e)}/use`,{method:"POST"})}async function Ao(e,t){return ue(`/api/projects/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)})}async function Oo(e,t,r="both"){const n=await Promise.all(t.map(async({file:a,width:s,height:u})=>({filename:a.name,mimeType:a.type,width:s,height:u,dataUrl:await yo(a)})));return ue(`/api/projects/${encodeURIComponent(e)}/refs`,{method:"POST",body:JSON.stringify({body:{files:n,role:r}})})}async function No(e,t){await ue(`/api/projects/${encodeURIComponent(e)}/refs/${encodeURIComponent(t)}`,{method:"DELETE"})}async function Za(e,t,r){return ue(`/api/projects/${encodeURIComponent(e)}/refs/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify({role:r})})}async function Fo(e){return ue(`/api/projects/${encodeURIComponent(e)}/status`)}async function Lo(e,t="both",r){return ue(`/api/projects/${encodeURIComponent(e)}/derive`,{method:"POST",body:JSON.stringify({target:t,persist:r?.persist})})}async function Uo(e){return ue(`/api/projects/${encodeURIComponent(e.projectId)}/generate`,{method:"POST",body:JSON.stringify({prompt:e.prompt,feedback:e.feedback,sessionId:e.sessionId??void 0,selectedImageDataUrls:e.selectedImageDataUrls??[],model:e.model,sizePreset:e.sizePreset,imageCount:e.imageCount})})}async function $a(e){return ue(`/api/projects/${encodeURIComponent(e)}/sessions`)}async function zo(e,t){return ue(`/api/projects/${encodeURIComponent(e)}/sessions/${encodeURIComponent(t)}`)}async function Go(e,t){await ue(`/api/projects/${encodeURIComponent(e)}/sessions/${encodeURIComponent(t)}`,{method:"DELETE"})}let yr=N(!1),Fr=N("16:9"),Lr=N(4),at=N(Ae(Xa)),cn=N(Ae(Ya.map(e=>({id:e.id,label:e.label,source:"builtin"})))),dn=N(Ae(Xa)),fn=N(!1),vn=N(!1),hr=N(null);async function Bo(){l(vn,!0);try{const e=await wo();l(yr,e.config.apiKeyConfigured,!0),l(Fr,e.config.sizePreset,!0),l(Lr,e.config.imageCount,!0),l(at,e.config.model,!0),wr(e.modelRegistry),l(hr,null),l(fn,!0)}catch(e){l(hr,e instanceof Error?e.message:"Failed to load settings",!0),l(fn,!0)}finally{l(vn,!1)}}function qo(e){l(yr,e.apiKeyConfigured,!0),l(Fr,e.sizePreset,!0),l(Lr,e.imageCount,!0),l(at,e.model,!0)}function wr(e){l(cn,e.models,!0),l(dn,e.defaultModelId,!0),i(cn).some(t=>t.id===i(at))||l(at,i(dn),!0)}async function zt(e){try{const t=await ko(e);qo(t),l(hr,null)}catch(t){throw l(hr,t instanceof Error?t.message:"Failed to save settings",!0),t}}function Qa(e){return l(yr,e.trim().length>0),zt({apiKey:e})}function Ko(){return l(yr,!1),zt({apiKey:""})}function Ho(e){return l(Fr,e,!0),zt({sizePreset:e})}function Vo(e){return l(Lr,e,!0),zt({imageCount:e})}function Jo(e){return l(at,e,!0),zt({model:e})}async function es(){wr(await So())}async function Wo(e){await jo(e),await es()}async function Yo(e,t){await Eo(e,t),await es()}async function Xo(e){const t=await Ro(e);wr(t),i(at)===e&&l(at,t.defaultModelId,!0)}async function Zo(e){const t=await Po(e);wr(t),l(at,t.defaultModelId,!0),await zt({model:t.defaultModelId})}async function $o(){const e=await Co();wr(e),l(at,e.defaultModelId,!0),await zt({model:e.defaultModelId})}const ne={get apiKeyConfigured(){return i(yr)},get sizePreset(){return i(Fr)},get imageCount(){return i(Lr)},get model(){return i(at)},get availableModels(){return i(cn)},get defaultModelId(){return i(dn)},get ready(){return i(fn)},get loading(){return i(vn)},get loadError(){return i(hr)}};let Ft=N(Ae([])),fe=N(null),ke=N(Ae([])),Mr=N(null);function Qo(){if(i(fe)!==null)return i(Ft).find(e=>e.id===i(fe))}const ea=new Proxy([],{get(e,t){return Reflect.get(i(Ft),t)},has(e,t){return Reflect.has(i(Ft),t)}}),ft={get value(){return i(fe)}},Ur=Qo,Kt=new Proxy([],{get(e,t){return Reflect.get(i(ke),t)},has(e,t){return Reflect.has(i(ke),t)}}),Mt={get value(){return i(Mr)}};let ts=null;function el(e){ts=e}function rs(e){l(Ft,e.projects,!0),l(fe,e.currentProjectId,!0),l(ke,e.activeProject?.refs??[],!0)}async function St(e){if(!e){l(Mr,null);return}l(Mr,await Fo(e),!0)}async function tl(){const e=await Mo();if(l(Ft,e.projects,!0),l(fe,e.currentProjectId,!0),l(ke,[],!0),l(Mr,null),e.currentProjectId){const t=await To(e.currentProjectId);l(ke,t.refs,!0),await St(e.currentProjectId)}}async function rl(e){const t=await Io(e);return rs(t),await St(t.currentProjectId),t.project}async function nl(e){ts?.();const t=await Do(e);rs(t),await St(t.currentProjectId)}async function al(e,t){const r=await Ao(e,t);return l(Ft,i(Ft).map(n=>n.id===e?r:n),!0),i(fe)===e&&(l(ke,r.refs,!0),await St(e)),r}async function sl(e,t="both",r){return await Lo(e,t,r)}async function il(e,t,r,n="both"){if(i(fe)===null)throw new Error("No active project");const[a]=await Oo(i(fe),[{file:e,width:t,height:r}],n);return l(ke,[...i(ke),a],!0),await St(i(fe)),a}async function ol(e){if(i(fe)===null)throw new Error("No active project");await No(i(fe),e),l(ke,i(ke).filter(t=>t.id!==e),!0),await St(i(fe))}async function ll(e,t){if(i(fe)===null)throw new Error("No active project");const r=await Za(i(fe),e,t);return l(ke,i(ke).map(n=>n.id===e?r:n),!0),await St(i(fe)),r}async function ul(){if(i(fe)===null)throw new Error("No active project");const e=i(ke).filter(n=>n.role!=="both");if(e.length===0)return;const t=await Promise.all(e.map(n=>Za(i(fe),n.id,"both"))),r=new Map(t.map(n=>[n.id,n]));l(ke,i(ke).map(n=>r.get(n.id)??n),!0),await St(i(fe))}var cl=E('<p class="mt-1 text-xs text-red-600"> </p>'),dl=E(`<div data-testid="api-key-setup" class="flex items-center justify-center min-h-screen bg-slate-50"><div class="w-full max-w-md mx-4 bg-white rounded-xl shadow-lg p-8"><div class="text-center mb-6"><h1 class="text-2xl font-bold text-slate-900 mb-2">Image Sprout</h1> <p class="text-sm text-slate-600">To get started, you'll need an OpenRouter API key. This key is used to
2
+ generate images via the OpenRouter API and is stored locally on your
3
+ machine for this installation.</p></div> <div class="space-y-4"><div><label for="api-key-input" class="block text-sm font-medium text-slate-700 mb-1">API Key</label> <input id="api-key-input" type="password" placeholder="sk-or-..." class="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm text-slate-900 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-accent-500 focus:border-transparent"/> <!></div> <button class="w-full px-4 py-2.5 bg-accent-600 text-white text-sm font-semibold rounded-lg hover:bg-accent-700 transition-colors cursor-pointer">Save</button></div> <p class="mt-4 text-center text-xs text-slate-500">Don't have a key? <a href="https://openrouter.ai/keys" target="_blank" rel="noopener noreferrer" class="text-accent-600 hover:text-accent-700 underline">Get one at OpenRouter</a></p></div></div>`);function fl(e,t){xe(t,!0);let r=N(""),n=N("");function a(b){l(r,b.target.value,!0)}function s(){const b=i(r).trim();if(!b){l(n,"Please enter an API key");return}l(n,""),Qa(b)}function u(b){b.key==="Enter"&&s()}var d=dl(),o=c(d),f=p(c(o),2),v=c(f),_=p(c(v),2),m=p(_,2);{var w=b=>{var h=cl(),S=c(h);B(()=>G(S,i(n))),k(b,h)};z(m,b=>{i(n)&&b(w)})}var g=p(v,2);B(()=>dt(_,i(r))),D("input",_,a),D("keydown",_,u),D("click",g,s),k(e,d),ye()}Ie(["input","keydown","click"]);var vl=E('<p data-testid="project-selector-error" class="px-4 py-1 text-xs text-red-600"> </p>'),pl=E('<div class="px-4 py-3"><p class="text-sm font-medium text-slate-700 mb-2">Create your first project</p> <input data-testid="new-project-input" type="text" placeholder="Project name..." class="w-full px-3 py-1.5 text-sm border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500"/></div>'),hl=Zi('<svg class="ml-auto w-4 h-4 text-indigo-600 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg>'),gl=E('<button><span class="truncate"> </span> <!></button>'),bl=E('<div class="px-3 py-2"><input data-testid="new-project-input" type="text" placeholder="Project name..." class="w-full px-2 py-1.5 text-sm border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500"/></div>'),ml=E('<button data-testid="new-project-button" class="flex items-center w-full px-3 py-2 text-left text-sm text-indigo-600 hover:bg-indigo-50 transition-colors cursor-pointer"><svg class="w-4 h-4 mr-2" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 4v16m8-8H4"></path></svg> New Project</button>'),_l=E('<div data-testid="project-dropdown-list" class="absolute left-0 right-0 z-10 mt-1 bg-white border border-slate-200 rounded-md shadow-lg max-h-64 overflow-y-auto"><!> <div class="border-t border-slate-100"><!></div></div>'),xl=E('<button data-testid="project-selector-trigger" class="flex items-center justify-between w-full mt-2 px-2.5 py-1.5 text-left text-sm text-slate-700 bg-slate-50 border border-slate-200 rounded-md hover:bg-slate-100 transition-colors cursor-pointer"><span class="truncate"> </span> <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"></path></svg></button> <!>',1),yl=E('<div class="relative" data-testid="project-selector"><!> <!></div>');function wl(e,t){xe(t,!0);let r=N(!1),n=N(!1),a=N(""),s=N(!1),u=N(null);const d=te(()=>ea.length>0),o=te(Ur);async function f(){const C=i(a).trim();if(!(!C||i(s))){l(s,!0),l(u,null);try{await rl(C),l(a,""),l(n,!1),l(r,!1)}catch(A){l(u,A instanceof Error?A.message:"Failed to create project",!0),console.error("Failed to create project:",A)}finally{l(s,!1)}}}function v(C){C.key==="Enter"?f():C.key==="Escape"&&(l(a,""),l(n,!1))}async function _(C){l(r,!1),l(u,null);try{await nl(C)}catch(A){l(u,A instanceof Error?A.message:"Failed to switch project",!0),console.error("Failed to switch project:",A)}}function m(){l(r,!i(r)),i(r)||l(n,!1)}function w(){l(n,!0)}var g=yl(),b=c(g);{var h=C=>{var A=vl(),y=c(A);B(()=>G(y,i(u))),k(C,A)};z(b,C=>{i(u)&&C(h)})}var S=p(b,2);{var L=C=>{var A=pl(),y=p(c(A),2);D("keydown",y,v),un(y,()=>i(a),x=>l(a,x)),k(C,A)},R=C=>{var A=xl(),y=_e(A),x=c(y),I=c(x),K=p(x,2),q=p(y,2);{var J=Y=>{var Q=_l(),F=c(Q);Je(F,17,()=>ea,V=>V.id,(V,Z)=>{var ie=gl(),Se=c(ie),Oe=c(Se),Xe=p(Se,2);{var Ze=Me=>{var $e=hl();k(Me,$e)};z(Xe,Me=>{ft.value===i(Z).id&&Me(Ze)})}B(()=>{H(ie,"data-testid",`project-option-${i(Z).id??""}`),pe(ie,1,`flex items-center w-full px-3 py-2 text-left text-sm transition-colors cursor-pointer ${ft.value===i(Z).id?"bg-indigo-50 text-indigo-700 font-medium":"text-slate-700 hover:bg-slate-50"}`),G(Oe,i(Z).name)}),D("click",ie,()=>_(i(Z).id)),k(V,ie)});var P=p(F,2),U=c(P);{var O=V=>{var Z=bl(),ie=c(Z);D("keydown",ie,v),un(ie,()=>i(a),Se=>l(a,Se)),k(V,Z)},ee=V=>{var Z=ml();D("click",Z,w),k(V,Z)};z(U,V=>{i(n)?V(O):V(ee,-1)})}k(Y,Q)};z(q,Y=>{i(r)&&Y(J)})}B(()=>{G(I,i(o)?.name??"Select project"),pe(K,0,`w-3.5 h-3.5 text-slate-400 transition-transform duration-200 ${i(r)?"rotate-180":""}`)}),D("click",y,m),k(C,A)};z(S,C=>{!i(d)&&!i(o)?C(L):C(R,-1)})}k(e,g),ye()}Ie(["keydown","click"]);let Tr=N(Ae([]));const ta=new Proxy([],{get(e,t){return Reflect.get(i(Tr),t)},has(e,t){return Reflect.has(i(Tr),t)}});async function ra(e){l(Tr,await $a(e),!0)}async function ns(e){l(Tr,await $a(e),!0)}function kl(){return{status:"idle",results:[],prompt:"",feedback:"",error:null,activeSessionId:null,activeRunIndex:0,sessionRuns:[]}}let T=Ae(kl());function as(){return T.results.filter(e=>e.status==="success"&&e.selected)}function Sl(){T.status="generating",T.error=null}function jl(e){e<0||e>=T.results.length||(T.results[e].selected=!T.results[e].selected)}function na(){for(const e of T.results)e.selected=!1}function Xr(e){T.feedback=e}function zr(){T.status="idle",T.results=[],T.prompt="",T.feedback="",T.error=null,T.activeSessionId=null,T.activeRunIndex=0,T.sessionRuns=[]}function El(){zr()}el(zr);function In(e){T.results=e.images.map(t=>t.status==="error"?{status:"error",error:t.error??"Unknown error",selected:!1}:{status:"success",imageDataUrl:t.imageDataUrl,selected:!1}),T.prompt=e.prompt,T.feedback=e.feedback??""}async function Rl(e){const t=ft.value;if(!t)return;const{session:r,runs:n}=await zo(t,e);if(T.activeSessionId=e,T.sessionRuns=n,T.prompt=r.prompt,n.length>0){const a=n.length-1;T.activeRunIndex=a,In(n[a]),T.status="complete"}}function Pl(e){e<0||e>=T.sessionRuns.length||(T.activeRunIndex=e,In(T.sessionRuns[e]))}async function Cl(e){const t=ft.value;t&&(await Go(t,e),T.activeSessionId===e&&zr(),await ns(t))}async function pn(e){Sl();try{const t=Ur(),r=ft.value;if(!r||!t)throw new Error("No active project");const n=await Uo({projectId:r,prompt:e.prompt,feedback:T.feedback||null,sessionId:T.activeSessionId,selectedImageDataUrls:as().filter(a=>a.status==="success").map(a=>a.imageDataUrl),model:ne.model,sizePreset:ne.sizePreset,imageCount:ne.imageCount});T.activeSessionId=n.sessionId,T.sessionRuns=n.runs,T.activeRunIndex=n.runs.length-1,In(n.run),T.status="complete",await ns(r)}catch(t){T.status="error",T.error=t instanceof Error?t.message:"Generation failed"}}var Il=E('<p class="text-sm text-slate-500">Generate from the main canvas to create the first session for this project.</p>'),Ml=E('<p class="text-sm text-slate-500 mb-3">Set up references and guides before generating the first session for this project.</p> <button data-testid="empty-state-settings-link" class="text-sm font-medium text-accent-600 hover:text-accent-700 transition-colors cursor-pointer">Open Project Settings</button>',1),Tl=E('<div data-testid="session-history-empty" class="px-4 py-6"><div class="bg-slate-50 rounded-lg p-4 text-center"><!></div></div>'),Dl=E('<div role="button" tabindex="0"><div class="flex-1 min-w-0"><p class="text-sm text-slate-700 truncate"> </p> <p class="text-xs text-slate-400"> </p></div> <button class="ml-2 p-1 text-slate-300 hover:text-red-500 opacity-0 group-hover:opacity-100 transition-opacity cursor-pointer" aria-label="Delete session"><svg class="w-3.5 h-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg></button></div>'),Al=E('<div data-testid="session-history-list" class="py-1"></div>'),Ol=E('<div class="flex items-center justify-between px-4 py-2 border-b border-slate-100"><h2 class="text-xs font-semibold uppercase tracking-[0.14em] text-slate-400">Sessions</h2> <button data-testid="new-session-button" class="rounded-md border border-slate-200 bg-white px-2.5 py-1 text-xs font-medium text-slate-600 hover:bg-slate-50 hover:text-slate-800 transition-colors cursor-pointer">New Session</button></div> <!>',1);function Nl(e,t){xe(t,!0),ct(()=>{const w=ft.value;w&&ra(w)});function r(w){const g=new Date(w),h=new Date().getTime()-g.getTime(),S=Math.floor(h/1e3),L=Math.floor(S/60),R=Math.floor(L/60),C=Math.floor(R/24);return S<60?"just now":L<60?`${L}m ago`:R<24?`${R}h ago`:C<7?`${C}d ago`:g.toLocaleDateString()}async function n(w){await Rl(w)}async function a(w,g){w.stopPropagation(),await Cl(g);const b=ft.value;b&&await ra(b)}function s(){El()}const u=te(()=>Mt.value?.readiness.generate??!1);var d=Ol(),o=_e(d),f=p(c(o),2),v=p(o,2);{var _=w=>{var g=Tl(),b=c(g),h=c(b);{var S=R=>{var C=Il();k(R,C)},L=R=>{var C=Ml(),A=p(_e(C),2);D("click",A,()=>t.onOpenSettings?.()),k(R,C)};z(h,R=>{i(u)?R(S):R(L,-1)})}k(w,g)},m=w=>{var g=Al();Je(g,21,()=>ta,b=>b.id,(b,h)=>{var S=Dl(),L=c(S),R=c(L),C=c(R),A=p(R,2),y=c(A),x=p(L,2);B(I=>{H(S,"data-testid",`session-item-${i(h).id??""}`),pe(S,1,`flex items-center w-full px-4 py-2.5 text-left hover:bg-slate-50 transition-colors cursor-pointer group ${T.activeSessionId===i(h).id?"bg-accent-50 border-r-2 border-accent-500":""}`),G(C,i(h).prompt),G(y,I),H(x,"data-testid",`delete-session-${i(h).id??""}`)},[()=>r(i(h).updatedAt)]),D("click",S,()=>n(i(h).id)),D("keydown",S,I=>I.key==="Enter"&&n(i(h).id)),D("click",x,I=>a(I,i(h).id)),k(b,S)}),k(w,g)};z(v,w=>{ta.length===0?w(_):w(m,-1)})}D("click",f,s),k(e,d),ye()}Ie(["click","keydown"]);var Fl=E('<button data-testid="sidebar-settings-button" class="flex items-center gap-2 px-4 py-2.5 text-sm text-slate-600 hover:bg-slate-50 transition-colors cursor-pointer border-b border-slate-100"><svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path></svg> <span>Project Settings</span></button>'),Ll=E('<input type="password" placeholder="Enter new API key" class="w-full px-2 py-1.5 border border-slate-300 rounded text-xs text-slate-900 placeholder-slate-400 focus:outline-none focus:ring-1 focus:ring-accent-500 mb-2"/> <div class="flex gap-2"><button data-testid="sidebar-api-key-save" class="px-2 py-1 bg-accent-600 text-white rounded text-xs hover:bg-accent-700 transition-colors cursor-pointer">Save</button> <button class="px-2 py-1 text-slate-500 hover:text-slate-700 text-xs cursor-pointer">Cancel</button></div>',1),Ul=E('<p class="text-slate-600 mb-2">Key: <span class="font-medium"> </span></p> <div class="flex gap-2"><button data-testid="sidebar-api-key-change" class="px-2 py-1 text-accent-600 hover:text-accent-700 text-xs cursor-pointer">Change</button> <button data-testid="sidebar-api-key-remove" class="px-2 py-1 text-red-600 hover:text-red-700 text-xs cursor-pointer">Remove</button></div>',1),zl=E('<div data-testid="sidebar-api-key-editor" class="mt-2 p-2 bg-slate-50 rounded-lg text-xs"><!></div>'),Gl=E('<aside data-testid="sidebar" class="flex flex-col h-full overflow-y-auto bg-white border-r border-slate-200"><div class="px-4 py-3 border-b border-slate-200"><h1 class="text-lg font-bold text-slate-900">Image Sprout</h1> <!></div> <!> <div class="flex-1 overflow-y-auto"><!></div> <div class="border-t border-slate-200 px-4 py-2"><button data-testid="sidebar-api-key-button" class="text-xs text-slate-500 hover:text-accent-600 transition-colors cursor-pointer">API Key</button> <!></div></aside>');function Bl(e,t){xe(t,!0);const r=te(()=>Ur()!==void 0);let n=N(!1),a=N(!1),s=N("");function u(){l(n,!i(n)),l(a,!1),l(s,"")}function d(){l(a,!0),l(s,"")}function o(){const y=i(s).trim();y&&(Qa(y),l(a,!1),l(s,""))}function f(){Ko(),l(n,!1),l(a,!1)}var v=Gl(),_=c(v),m=p(c(_),2);wl(m,{});var w=p(_,2);{var g=y=>{var x=Fl();D("click",x,()=>t.onOpenSettings?.()),k(y,x)};z(w,y=>{i(r)&&y(g)})}var b=p(w,2),h=c(b);{var S=y=>{Nl(y,{onOpenSettings:()=>t.onOpenSettings?.()})};z(h,y=>{i(r)&&y(S)})}var L=p(b,2),R=c(L),C=p(R,2);{var A=y=>{var x=zl(),I=c(x);{var K=J=>{var Y=Ll(),Q=_e(Y),F=p(Q,2),P=c(F),U=p(P,2);un(Q,()=>i(s),O=>l(s,O)),D("click",P,o),D("click",U,()=>{l(a,!1),l(s,"")}),k(J,Y)},q=J=>{var Y=Ul(),Q=_e(Y),F=p(c(Q)),P=c(F),U=p(Q,2),O=c(U),ee=p(O,2);B(()=>G(P,ne.apiKeyConfigured?"Configured":"Not set")),D("click",O,d),D("click",ee,f),k(J,Y)};z(I,J=>{i(a)?J(K):J(q,-1)})}k(y,x)};z(C,y=>{i(n)&&y(A)})}D("click",R,u),k(e,v),ye()}Ie(["click"]);ui();var ql=E('<div class="bg-slate-100"><img class="block h-auto w-full select-none pointer-events-none"/></div>'),Kl=E('<div class="absolute inset-0 flex items-center justify-center bg-slate-100 p-4"><p class="text-sm text-red-600 text-center"> </p></div>'),Hl=E('<div class="absolute top-2 right-2 bg-indigo-600 text-white rounded-full w-6 h-6 flex items-center justify-center"><svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path></svg></div>'),Vl=E('<span class="text-xs text-green-300 font-medium">Copied!</span>'),Jl=E('<span class="text-xs text-red-300 font-medium"> </span>'),Wl=E('<div class="absolute bottom-0 left-0 right-0 z-10 flex items-center justify-center gap-2 bg-black/60 p-1.5 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100"><button type="button" class="inline-flex cursor-pointer rounded bg-white/20 p-1 text-white transition-colors hover:bg-white/40" title="View larger"><svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"></path></svg></button> <button type="button" class="inline-flex cursor-pointer rounded bg-white/20 p-1 text-white transition-colors hover:bg-white/40" title="Download PNG"><svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M4 16v2a2 2 0 002 2h12a2 2 0 002-2v-2M7 10l5 5m0 0l5-5m-5 5V3"></path></svg></button> <button type="button" class="inline-flex cursor-pointer rounded bg-white/20 p-1 text-white transition-colors hover:bg-white/40" title="Copy to clipboard"><svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"></path></svg></button> <!> <!></div>'),Yl=E('<div role="button" tabindex="0"><!> <span class="absolute top-2 left-2 bg-black/50 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center"> </span> <!> <!></div>');function aa(e,t){xe(t,!0);let r=pr(t,"sizePreset",3,"16:9"),n=N(!1),a=N("");function s(){jl(t.index)}function u(y){y.target===y.currentTarget&&(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),s())}function d(y){if(y.stopPropagation(),t.result.status!=="success")return;const x=document.createElement("a");x.href=t.result.imageDataUrl,x.download=`image-sprout-${t.index+1}.png`,document.body.appendChild(x),x.click(),document.body.removeChild(x)}function o(y){const[x,I]=y.split(","),K=x.match(/:(.*?);/),q=K?K[1]:"image/png",J=atob(I),Y=new Uint8Array(J.length);for(let Q=0;Q<J.length;Q++)Y[Q]=J.charCodeAt(Q);return new Blob([Y],{type:q})}async function f(y){if(y.stopPropagation(),t.result.status==="success")try{const x=o(t.result.imageDataUrl);await navigator.clipboard.write([new ClipboardItem({[x.type]:x})]),l(n,!0),l(a,""),setTimeout(()=>{l(n,!1)},2e3)}catch{l(a,"Copy not supported in this browser"),l(n,!1)}}function v(y){y.stopPropagation(),t.result.status==="success"&&t.onPreview?.(t.index)}function _(y){return y==="1:1"?"1 / 1":y==="9:16"?"9 / 16":"16 / 9"}var m=Yl(),w=c(m);{var g=y=>{var x=ql(),I=c(x);B(()=>{H(I,"src",t.result.imageDataUrl),H(I,"alt",`Generated image ${t.index+1}`)}),k(y,x)},b=y=>{var x=Kl(),I=c(x),K=c(I);B(()=>G(K,t.result.error)),k(y,x)};z(w,y=>{t.result.status==="success"?y(g):y(b,-1)})}var h=p(w,2),S=c(h),L=p(h,2);{var R=y=>{var x=Hl();B(()=>H(x,"data-testid",`checkmark-${t.index??""}`)),k(y,x)};z(L,y=>{t.result.selected&&y(R)})}var C=p(L,2);{var A=y=>{var x=Wl(),I=c(x),K=p(I,2),q=p(K,2),J=p(q,2);{var Y=P=>{var U=Vl();B(()=>H(U,"data-testid",`copy-feedback-${t.index??""}`)),k(P,U)};z(J,P=>{i(n)&&P(Y)})}var Q=p(J,2);{var F=P=>{var U=Jl(),O=c(U);B(()=>{H(U,"data-testid",`copy-error-${t.index??""}`),G(O,i(a))}),k(P,U)};z(Q,P=>{i(a)&&P(F)})}B(()=>{H(x,"data-testid",`export-toolbar-${t.index??""}`),H(I,"data-testid",`preview-btn-${t.index??""}`),H(I,"aria-label",`View generated image ${t.index+1} larger`),H(K,"data-testid",`download-btn-${t.index??""}`),H(K,"aria-label",`Download generated image ${t.index+1} as PNG`),H(q,"data-testid",`copy-btn-${t.index??""}`),H(q,"aria-label",`Copy generated image ${t.index+1} to clipboard`)}),D("click",I,v),D("click",K,d),D("click",q,f),k(y,x)};z(C,y=>{t.result.status==="success"&&y(A)})}B(y=>{H(m,"data-testid",`image-card-${t.index??""}`),pe(m,1,`group relative block w-full self-start overflow-hidden rounded-lg transition-all ${t.result.selected?"ring-2 ring-indigo-600":"ring-1 ring-slate-200"} cursor-pointer`),Pn(m,y),H(m,"aria-pressed",t.result.selected),H(m,"aria-label",`Select generated image ${t.index+1}`),H(h,"data-testid",`image-index-${t.index??""}`),G(S,t.index+1)},[()=>t.result.status==="success"?"":`aspect-ratio: ${_(r())};`]),D("click",m,s),D("keydown",m,u),k(e,m),ye()}Ie(["click","keydown"]);var Xl=E('<div class="flex-1 flex items-center justify-center"><div class="text-center"><p class="text-slate-500 text-sm">Generate images to see results here</p> <svg class="mx-auto mt-2 w-5 h-5 text-slate-400" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div></div>'),Zl=E('<div class="relative overflow-hidden rounded-2xl border border-slate-200 bg-slate-200"><div class="absolute inset-0 animate-pulse bg-gradient-to-br from-slate-200 via-slate-100 to-slate-200"></div></div>'),$l=E('<div class="flex-1 flex items-center justify-center px-6"><div class="w-full max-w-5xl"><div class="mb-4 rounded-2xl border border-indigo-200 bg-indigo-50 px-4 py-3 text-center"><p class="text-sm font-semibold text-indigo-700">Generating images</p> <p class="mt-1 text-sm text-indigo-600">This can take a few seconds depending on the model and image count.</p></div> <div data-testid="results-grid"></div></div></div>'),Ql=E('<div class="relative w-full"><div data-testid="results-grid"></div> <div class="pointer-events-none absolute inset-0 flex items-start justify-center p-6"><div class="rounded-2xl border border-indigo-200 bg-white/96 px-4 py-3 text-center shadow-lg backdrop-blur-sm"><div class="mx-auto mb-2 h-5 w-5 animate-spin rounded-full border-2 border-indigo-200 border-t-indigo-600"></div> <p class="text-sm font-semibold text-slate-800">Generating next run</p> <p class="mt-1 text-sm text-slate-600"> </p></div></div></div>'),eu=E('<div class="flex-1 flex items-center justify-center"><div class="text-center space-y-3"><div class="mx-auto w-10 h-10 rounded-full bg-red-100 flex items-center justify-center"><svg class="w-5 h-5 text-red-600" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z"></path></svg></div> <p class="text-sm text-red-600"> </p> <button data-testid="retry-button" class="px-4 py-2 text-sm font-medium text-white bg-indigo-600 rounded-lg hover:bg-indigo-700 transition-colors cursor-pointer">Try Again</button> <p class="text-xs text-slate-400 mt-1">Returns to the generation form</p></div></div>'),tu=E('<div data-testid="results-grid"></div>'),ru=E('<div data-testid="image-preview-backdrop" class="fixed inset-0 z-40 flex items-center justify-center bg-slate-950/75 p-6" role="dialog" aria-modal="true" aria-label="Image preview" tabindex="-1"><div class="relative w-full max-w-7xl"><button type="button" data-testid="image-preview-close" class="absolute right-3 top-3 z-10 rounded-full bg-black/50 p-2 text-white hover:bg-black/70 cursor-pointer" aria-label="Close preview"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg></button> <img data-testid="image-preview" class="mx-auto max-h-[85vh] w-auto max-w-full rounded-2xl bg-slate-950 object-contain shadow-2xl"/></div></div>'),nu=E("<!> <!>",1);function au(e,t){xe(t,!0);let r=N(null);function n(){return T.sessionRuns[T.activeRunIndex]?.sizePreset??ne.sizePreset}function a(x,I){return x>=6?I==="1:1"?"grid-cols-2 xl:grid-cols-3":"grid-cols-1 md:grid-cols-2 xl:grid-cols-3":"grid-cols-1 lg:grid-cols-2"}function s(x,I){return x>=6?I==="1:1"||I==="9:16"?"max-w-4xl":"max-w-7xl":x>=4?I==="1:1"?"max-w-4xl":"max-w-6xl":I==="1:1"?"max-w-4xl":"max-w-5xl"}function u(x){return x==="1:1"?"1 / 1":x==="9:16"?"9 / 16":"16 / 9"}function d(x){l(r,x,!0)}function o(){l(r,null)}let f=te(()=>i(r)===null?null:T.results[i(r)]??null),v=te(()=>T.results.length>0),_=te(()=>T.sessionRuns[T.activeRunIndex]??null),m=te(()=>T.status==="generating"?i(_)?`Generating a new variation from ${i(_).sizePreset} · ${i(_).imageCount} images...`:"Generating images...":null);function w(x){x.target===x.currentTarget&&o()}var g=nu(),b=_e(g);{var h=x=>{var I=Xl();k(x,I)},S=x=>{var I=$l(),K=c(I),q=p(c(K),2);Je(q,21,()=>Array(ne.imageCount),Jr,(J,Y,Q)=>{var F=Zl();H(F,"data-testid",`skeleton-${Q}`),B(P=>Pn(F,P),[()=>`aspect-ratio: ${u(ne.sizePreset)};`]),k(J,F)}),B(J=>pe(q,1,J),[()=>`grid self-start items-start ${a(ne.imageCount,ne.sizePreset)} gap-4 p-4 w-full ${s(ne.imageCount,ne.sizePreset)} mx-auto`]),k(x,I)},L=x=>{var I=Ql(),K=c(I);Je(K,21,()=>T.results,Jr,(F,P,U)=>{{let O=te(n);aa(F,{get result(){return i(P)},index:U,onPreview:d,get sizePreset(){return i(O)}})}});var q=p(K,2),J=c(q),Y=p(c(J),4),Q=c(Y);B(F=>{pe(K,1,F),G(Q,i(m))},[()=>`grid self-start items-start ${a(T.results.length,n())} gap-4 p-4 w-full ${s(T.results.length,n())} mx-auto opacity-45 transition-opacity`]),k(x,I)},R=x=>{var I=eu(),K=c(I),q=p(c(K),2),J=c(q),Y=p(q,2);B(()=>G(J,T.error)),D("click",Y,function(...Q){zr?.apply(this,Q)}),k(x,I)},C=x=>{var I=tu();Je(I,21,()=>T.results,Jr,(K,q,J)=>{{let Y=te(n);aa(K,{get result(){return i(q)},index:J,onPreview:d,get sizePreset(){return i(Y)}})}}),B(K=>pe(I,1,K),[()=>`grid self-start items-start ${a(T.results.length,n())} gap-4 p-4 w-full ${s(T.results.length,n())} mx-auto`]),k(x,I)};z(b,x=>{T.status==="idle"&&T.results.length===0?x(h):T.status==="generating"&&!i(v)?x(S,1):T.status==="generating"&&i(v)?x(L,2):T.status==="error"?x(R,3):T.status==="complete"&&T.results.length>0&&x(C,4)})}var A=p(b,2);{var y=x=>{var I=ru(),K=c(I),q=c(K),J=p(q,2);B(()=>{H(J,"src",i(f).imageDataUrl),H(J,"alt",`Generated image ${i(r)+1} preview`)}),D("click",I,w),D("keydown",I,Y=>Y.key==="Escape"&&o()),D("click",q,o),k(x,I)};z(A,x=>{i(f)?.status==="success"&&i(r)!==null&&x(y)})}k(e,g),ye()}Ie(["click","keydown"]);var su=E('<img class="block h-full w-full object-contain"/>'),iu=E('<div class="w-full h-full flex items-center justify-center text-slate-400 text-xs">?</div>'),ou=E('<button class="flex-shrink-0 flex flex-col items-center gap-1 cursor-pointer group"><div><div class="flex h-full w-full items-center justify-center overflow-hidden rounded-[4px] bg-slate-100"><!></div></div> <span class="text-[10px] text-slate-500 group-hover:text-slate-700"> </span></button>'),lu=E('<div data-testid="run-strip" class="border-t border-slate-200 bg-white px-4 py-2"><div class="flex gap-2 overflow-x-auto"></div></div>');function uu(e,t){xe(t,!1);function r(d){return d.images.find(f=>f.status==="success")?.imageDataUrl??null}function n(d){return d==="1:1"?"1 / 1":d==="9:16"?"9 / 16":"16 / 9"}Ja();var a=xr(),s=_e(a);{var u=d=>{var o=lu(),f=c(o);Je(f,7,()=>T.sessionRuns,v=>v.id,(v,_,m)=>{const w=Or(()=>r(i(_)));var g=ou(),b=c(g),h=c(b),S=c(h);{var L=y=>{var x=su();B(()=>{H(x,"src",i(w)),H(x,"alt",`Run ${i(m)+1}`)}),k(y,x)},R=y=>{var x=iu();k(y,x)};z(S,y=>{i(w)?y(L):y(R,-1)})}var C=p(b,2),A=c(C);B(y=>{H(g,"data-testid",`run-thumbnail-${i(m)??""}`),H(b,"data-testid",`run-thumbnail-frame-${i(m)??""}`),pe(b,1,`h-8 shrink-0 rounded border-2 ${T.activeRunIndex===i(m)?"border-indigo-500":"border-slate-200"}`),Pn(b,y),G(A,`Run ${i(m)+1}`)},[()=>`aspect-ratio: ${n(i(_).sizePreset)};`]),D("click",g,()=>Pl(i(m))),k(v,g)}),k(d,o)};z(s,d=>{T.sessionRuns?.length>1&&d(u)})}k(e,a),ye()}Ie(["click"]);var cu=E('<p class="mt-1 text-xs text-slate-500"> </p>'),du=E('<span data-testid="selected-count" class="shrink-0 text-sm text-slate-500"> </span>'),fu=E('<button type="button" data-testid="iterate-button" class="px-4 py-1.5 text-sm font-medium text-white bg-indigo-600 rounded-lg hover:bg-indigo-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">Iterate</button>'),vu=E(`<div data-testid="action-bar" class="border-t border-slate-200 bg-white px-4 py-2"><div class="mb-2 rounded-lg border border-slate-200 bg-slate-50 px-3 py-2"><div class="flex items-start justify-between gap-3"><div class="min-w-0 flex-1"><p class="text-[11px] font-semibold uppercase tracking-[0.14em] text-slate-400">Prompt Used</p> <p class="mt-1 text-sm text-slate-700 whitespace-pre-wrap break-words"> </p> <!> <p class="mt-2 text-xs text-slate-500"> </p></div> <!></div></div> <div class="flex items-center gap-3"><input type="text" data-testid="feedback-input" class="flex-1 px-3 py-1.5 text-sm border border-slate-300 rounded-lg focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500" placeholder="Describe changes you'd like..."/> <div class="flex items-center gap-2"><!> <button type="button" data-testid="run-again-button" class="px-4 py-1.5 text-sm font-medium text-slate-700 bg-slate-200 rounded-lg hover:bg-slate-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">Run Again</button></div></div></div>`);function pu(e,t){xe(t,!0);let r=N(""),n=te(as),a=te(()=>T.results.length>0),s=te(()=>T.status==="generating"),u=te(()=>i(n).length>0||i(r).length>0),d=te(()=>T.sessionRuns[T.activeRunIndex]??null),o=te(()=>i(n).length>0?`Using ${i(n).length} selected image${i(n).length===1?"":"s"} as visual references for the next iteration.`:i(r).length>0?"No images selected. This iteration will use the project references with your feedback.":"Tip: click one or more images above to carry them forward visually, then describe the changes you want."),f=te(()=>i(d)?`${i(d).sizePreset} · ${i(d).imageCount} image${i(d).imageCount===1?"":"s"} · ${i(d).model}`:null);function v(h){const S=h.target;l(r,S.value,!0),Xr(S.value)}async function _(){na(),Xr(""),l(r,"");try{await pn({prompt:T.prompt})}catch(h){console.error("handleRegenerate: unexpected error",h)}}async function m(){try{await pn({prompt:T.prompt})}catch(h){console.error("handleIterate: unexpected error",h)}l(r,""),Xr(""),na()}var w=xr(),g=_e(w);{var b=h=>{var S=vu(),L=c(S),R=c(L),C=c(R),A=p(c(C),2),y=c(A),x=p(A,2);{var I=V=>{var Z=cu(),ie=c(Z);B(()=>G(ie,`Run used: ${i(f)??""}`)),k(V,Z)};z(x,V=>{i(f)&&V(I)})}var K=p(x,2),q=c(K),J=p(C,2);{var Y=V=>{var Z=du(),ie=c(Z);B(()=>G(ie,`${i(n).length??""} selected`)),k(V,Z)};z(J,V=>{i(n).length>0&&V(Y)})}var Q=p(L,2),F=c(Q),P=p(F,2),U=c(P);{var O=V=>{var Z=fu();B(()=>Z.disabled=i(s)),D("click",Z,m),k(V,Z)};z(U,V=>{i(u)&&V(O)})}var ee=p(U,2);B(()=>{G(y,T.prompt),G(q,i(o)),dt(F,i(r)),ee.disabled=i(s)}),D("input",F,v),D("click",ee,_),k(h,S)};z(g,h=>{i(a)&&h(b)})}k(e,w),ye()}Ie(["input","click"]);var hu=E('<div data-testid="canvas" class="flex-1 flex flex-col bg-slate-50 overflow-auto"><div class="flex-1 flex justify-center p-6 overflow-auto"><!></div> <!> <!></div>');function gu(e){var t=hu(),r=c(t),n=c(r);au(n,{});var a=p(r,2);uu(a,{});var s=p(a,2);pu(s,{}),k(e,t)}var bu=E("<button> </button>"),mu=E('<div class="flex gap-2" data-testid="size-presets"></div>');function _u(e,t){xe(t,!1);const r=[{label:"Blog Header",value:"16:9"},{label:"Square",value:"1:1"},{label:"Story",value:"9:16"}];Ja();var n=mu();Je(n,5,()=>r,a=>a.value,(a,s)=>{var u=bu(),d=c(u);B(()=>{H(u,"data-testid",`size-preset-${i(s).value??""}`),pe(u,1,`px-3 py-1 rounded-full text-xs font-medium transition-colors cursor-pointer ${ne.sizePreset===i(s).value?"bg-indigo-600 text-white":"bg-slate-200 text-slate-700 hover:bg-slate-300"}`),G(d,i(s).label)}),D("click",u,()=>Ho(i(s).value)),k(a,u)}),k(e,n),ye()}Ie(["click"]);var xu=E('<textarea data-testid="prompt-textarea" class="w-full rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-sm text-slate-900 placeholder:text-slate-400 focus:border-indigo-500 focus:ring-1 focus:ring-indigo-500 focus:outline-none resize-none" rows="2" placeholder="Describe what you want to generate..."></textarea>'),yu=E("<button> </button>"),wu=E("<option> </option>"),ku=E('<button type="button" data-testid="model-settings-button" class="flex h-7 w-7 items-center justify-center rounded-full border border-slate-200 bg-white text-slate-500 hover:bg-slate-50 hover:text-slate-700 cursor-pointer" aria-label="Manage models"><svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path></svg></button>'),Su=E('<button type="button" class="text-xs font-medium text-amber-800 underline decoration-amber-300 underline-offset-2 hover:text-amber-900 cursor-pointer">Open Project Settings</button>'),ju=E('<p class="text-right text-xs text-amber-700"> </p> <!>',1),Eu=E('<div class="flex max-w-64 flex-col items-end gap-1.5"><button data-testid="generate-button"> </button> <!></div>'),Ru=E(`<div data-testid="generation-form" class="space-y-3"><!> <div class="flex items-start justify-between gap-4"><div class="flex items-center gap-6"><div class="flex flex-col gap-1"><span class="text-xs text-slate-500">Size</span> <!></div> <div class="flex flex-col gap-1"><span class="text-xs text-slate-500">Images</span> <div class="flex items-center gap-1.5"></div></div> <div class="flex flex-col gap-1"><span class="text-xs text-slate-500">Model</span> <div class="flex items-center gap-1.5"><select data-testid="model-select" class="text-xs text-slate-700 bg-slate-200 rounded-full px-3 py-1 font-medium cursor-pointer hover:bg-slate-300 transition-colors focus:outline-none focus:ring-1 focus:ring-indigo-500 appearance-none pr-6 bg-no-repeat bg-[length:12px] bg-[right_8px_center] bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%2364748b%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M6%209l6%206%206-6%22%2F%3E%3C%2Fsvg%3E')]"></select> <!></div></div></div> <!></div></div>`);function Pu(e,t){xe(t,!0);let r=pr(t,"prompt",15,""),n=pr(t,"variant",3,"full");const a=xo;function s(F){const P=F.target;r(P.value)}function u(){i(f)||t.onGenerate?.()}function d(F){const P=F.target;Jo(P.value)}function o(F){if(!F||F.readiness.generate)return null;if(F.mode==="none")return"Add shared, style, or subject references in Project Settings to get this project ready.";const P=[];return(F.mode==="style"||F.mode==="both")&&!F.guides.stylePresent&&P.push("visual style"),(F.mode==="subject"||F.mode==="both")&&!F.guides.subjectPresent&&P.push("subject guide"),P.length===2?"Generate a visual style and subject guide from your references in Project Settings before generating.":P[0]==="visual style"?"Generate a visual style from your references in Project Settings before generating.":P[0]==="subject guide"?"Generate a subject guide from your references in Project Settings before generating.":"Finish setting up this project in Project Settings before generating."}let f=te(()=>!r().trim()||!ne.apiKeyConfigured||!Mt.value?.readiness.generate||T.status==="generating"),v=te(()=>o(Mt.value)),_=te(()=>n()==="full"),m=te(()=>n()==="full");var w=Ru(),g=c(w);{var b=F=>{var P=xu();B(()=>dt(P,r())),D("input",P,s),k(F,P)};z(g,F=>{i(_)&&F(b)})}var h=p(g,2),S=c(h),L=c(S),R=p(c(L),2);_u(R,{});var C=p(L,2),A=p(c(C),2);Je(A,20,()=>a,F=>F,(F,P)=>{var U=yu(),O=c(U);B(()=>{H(U,"data-testid",`image-count-${P??""}`),pe(U,1,`w-7 h-7 rounded-full text-xs font-medium transition-colors cursor-pointer ${ne.imageCount===P?"bg-indigo-600 text-white":"bg-slate-200 text-slate-700 hover:bg-slate-300"}`),G(O,P)}),D("click",U,()=>Vo(P)),k(F,U)});var y=p(C,2),x=p(c(y),2),I=c(x);Je(I,21,()=>ne.availableModels,F=>F.id,(F,P)=>{var U=wu(),O=c(U),ee={};B(()=>{G(O,i(P).label),ee!==(ee=i(P).id)&&(U.value=(U.__value=i(P).id)??"")}),k(F,U)});var K;uo(I);var q=p(I,2);{var J=F=>{var P=ku();D("click",P,()=>t.onOpenModelSettings?.()),k(F,P)};z(q,F=>{t.onOpenModelSettings&&F(J)})}var Y=p(S,2);{var Q=F=>{var P=Eu(),U=c(P),O=c(U),ee=p(U,2);{var V=Z=>{var ie=ju(),Se=_e(ie),Oe=c(Se),Xe=p(Se,2);{var Ze=Me=>{var $e=Su();D("click",$e,()=>t.onOpenSettings?.()),k(Me,$e)};z(Xe,Me=>{t.onOpenSettings&&Me(Ze)})}B(()=>G(Oe,i(v))),k(Z,ie)};z(ee,Z=>{i(v)&&Z(V)})}B(()=>{pe(U,1,`px-4 py-1.5 rounded-lg text-sm font-medium transition-colors ${i(f)?"bg-slate-200 text-slate-400 cursor-not-allowed":"bg-indigo-600 text-white hover:bg-indigo-700 cursor-pointer"}`),U.disabled=i(f),G(O,T.status==="generating"?"Generating...":"Generate")}),D("click",U,u),k(F,P)};z(Y,F=>{i(m)&&F(Q)})}B(()=>{K!==(K=ne.model)&&(I.value=(I.__value=ne.model)??"",Ha(I,ne.model))}),D("change",I,d),k(e,w),ye()}Ie(["input","click","change"]);var Cu=E('<span class="truncate text-slate-500"> </span>'),Iu=E('<div data-testid="drawer-content" class="px-4 pb-4"><!></div>'),Mu=E('<div data-testid="drawer"><button data-testid="drawer-collapsed-bar" class="flex items-center w-full px-4 h-[44px] text-left text-sm text-slate-600 hover:bg-slate-50 transition-colors cursor-pointer gap-2"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M5 15l7-7 7 7"></path></svg> <!> <span class="ml-auto flex items-center gap-2 text-xs text-slate-400"><span> </span> <span class="text-slate-300">|</span> <span> </span></span></button> <!></div>');function Tu(e,t){xe(t,!0);let r=N(!0),n=N(""),a=!1,s=te(()=>T.activeSessionId!==null||T.sessionRuns.length>0);ct(()=>{i(s)&&!a&&l(r,!1),!i(s)&&a&&(l(n,T.prompt,!0),l(r,!0)),a=i(s)});function u(){l(r,!i(r))}async function d(){try{await pn({prompt:i(n).trim()})}catch(A){console.error("handleGenerate: unexpected error",A)}}let o=te(()=>i(s)?"Next iteration settings":i(n).trim()||"Describe what you want to generate...");var f=Mu(),v=c(f),_=c(v),m=p(_,2);{var w=A=>{var y=Cu(),x=c(y);B(()=>G(x,i(o))),k(A,y)};z(m,A=>{i(r)||A(w)})}var g=p(m,2),b=c(g),h=c(b),S=p(b,4),L=c(S),R=p(v,2);{var C=A=>{var y=Iu(),x=c(y);{let I=te(()=>i(s)?"settings":"full");Pu(x,{get variant(){return i(I)},onGenerate:d,get onOpenSettings(){return t.onOpenSettings},get onOpenModelSettings(){return t.onOpenModelSettings},get prompt(){return i(n)},set prompt(K){l(n,K,!0)}})}k(A,y)};z(R,A=>{i(r)&&A(C)})}B(()=>{pe(f,1,`border-t border-slate-200 bg-white transition-all duration-200 ease-in-out ${i(r)?"expanded":""}`),pe(_,0,`w-4 h-4 text-slate-400 transition-transform duration-200 ${i(r)?"rotate-180":""}`),G(h,ne.sizePreset),G(L,`${ne.imageCount??""} images`)}),D("click",v,u),k(e,f),ye()}Ie(["click"]);var Du=E('<p class="mt-4 text-sm text-red-600"> </p>'),Au=E('<span class="rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-semibold text-indigo-700">Default</span>'),Ou=E('<button class="rounded-lg border border-slate-300 px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-50 cursor-pointer">Set Default</button>'),Nu=E('<button class="rounded-lg border border-red-200 px-3 py-1.5 text-xs font-medium text-red-600 hover:bg-red-50 cursor-pointer">Remove</button>'),Fu=E('<div class="rounded-2xl border border-slate-200 bg-white px-4 py-4"><div class="flex flex-wrap items-start justify-between gap-3"><div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><p class="truncate text-sm font-semibold text-slate-900"> </p> <!> <span class="rounded-full bg-slate-100 px-2 py-0.5 text-[11px] font-medium text-slate-600"> </span></div> <p class="mt-1 break-all font-mono text-xs text-slate-500"> </p></div> <div class="flex items-center gap-2"><!> <!></div></div> <div class="mt-3"><input type="text" class="rounded-lg border border-slate-300 px-3 py-2 text-sm text-slate-900"/> <p class="mt-2 text-xs text-slate-500">Image Sprout validates this model against OpenRouter and handles compatibility automatically.</p></div></div>'),Lu=E('<div class="fixed inset-0 z-[70] flex items-center justify-center bg-black/45 px-4" role="dialog" aria-modal="true" aria-label="Manage models" tabindex="-1"><div class="w-full max-w-3xl overflow-hidden rounded-2xl bg-white shadow-2xl"><div class="flex items-center justify-between border-b border-slate-200 px-6 py-4"><div><h2 class="text-lg font-semibold text-slate-900">Manage Models</h2> <p class="mt-1 text-sm text-slate-500">These models are shared between the CLI and web app. Restore defaults anytime.</p></div> <button class="rounded-md p-1 text-slate-400 hover:text-slate-700 cursor-pointer" aria-label="Close"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg></button></div> <div class="max-h-[80vh] overflow-y-auto px-6 py-5"><div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-4"><h3 class="text-sm font-semibold text-slate-900">Add Model</h3> <div class="mt-3 grid gap-3 md:grid-cols-[1.8fr_1fr_auto]"><input type="text" class="rounded-lg border border-slate-300 px-3 py-2 text-sm text-slate-900" placeholder="OpenRouter model id, e.g. provider/model-name"/> <input type="text" class="rounded-lg border border-slate-300 px-3 py-2 text-sm text-slate-900" placeholder="Friendly label (optional)"/> <button class="rounded-lg bg-indigo-600 px-4 py-2 text-sm font-medium text-white hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer">Add</button></div> <p class="mt-2 text-xs text-slate-500">If the label is omitted, Image Sprout will use the OpenRouter model name when it can fetch it. Only OpenRouter models that accept image input and return image output can be added.</p></div> <!> <div class="mt-6 space-y-3"></div></div> <div class="flex items-center justify-between border-t border-slate-200 px-6 py-4"><button class="rounded-lg border border-slate-300 px-4 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50 cursor-pointer">Restore Defaults</button> <button class="rounded-lg bg-slate-900 px-4 py-2 text-sm font-medium text-white hover:bg-slate-800 cursor-pointer">Done</button></div></div></div>');function Uu(e,t){xe(t,!0);let r=N(""),n=N(""),a=N(!1),s=N(null);async function u(){const g=i(r).trim();if(!(!g||i(a))){l(a,!0),l(s,null);try{await Wo({id:g,label:i(n).trim()||void 0}),l(r,""),l(n,"")}catch(b){l(s,b instanceof Error?b.message:"Failed to add model",!0)}finally{l(a,!1)}}}async function d(g){l(a,!0),l(s,null);try{await Zo(g)}catch(b){l(s,b instanceof Error?b.message:"Failed to set default model",!0)}finally{l(a,!1)}}async function o(g){l(a,!0),l(s,null);try{await Xo(g)}catch(b){l(s,b instanceof Error?b.message:"Failed to remove model",!0)}finally{l(a,!1)}}async function f(){l(a,!0),l(s,null);try{await $o()}catch(g){l(s,g instanceof Error?g.message:"Failed to restore defaults",!0)}finally{l(a,!1)}}async function v(g,b){const h=b.target.value;try{await Yo(g,{label:h})}catch(S){l(s,S instanceof Error?S.message:"Failed to update label",!0)}}var _=xr(),m=_e(_);{var w=g=>{var b=Lu(),h=c(b),S=c(h),L=p(c(S),2),R=p(S,2),C=c(R),A=p(c(C),2),y=c(A),x=p(y,2),I=p(x,2),K=p(C,2);{var q=P=>{var U=Du(),O=c(U);B(()=>G(O,i(s))),k(P,U)};z(K,P=>{i(s)&&P(q)})}var J=p(K,2);Je(J,21,()=>ne.availableModels,P=>P.id,(P,U)=>{var O=Fu(),ee=c(O),V=c(ee),Z=c(V),ie=c(Z),Se=c(ie),Oe=p(ie,2);{var Xe=de=>{var Ee=Au();k(de,Ee)};z(Oe,de=>{ne.defaultModelId===i(U).id&&de(Xe)})}var Ze=p(Oe,2),Me=c(Ze),$e=p(Z,2),nr=c($e),ar=p(V,2),je=c(ar);{var Gt=de=>{var Ee=Ou();D("click",Ee,()=>d(i(U).id)),k(de,Ee)};z(je,de=>{ne.defaultModelId!==i(U).id&&de(Gt)})}var sr=p(je,2);{var jt=de=>{var Ee=Nu();D("click",Ee,()=>o(i(U).id)),k(de,Ee)};z(sr,de=>{i(U).source==="user"&&de(jt)})}var ir=p(ee,2),Et=c(ir);B(()=>{G(Se,i(U).label),G(Me,i(U).source),G(nr,i(U).id),dt(Et,i(U).label)}),Rt("blur",Et,de=>v(i(U).id,de)),k(P,O)});var Y=p(R,2),Q=c(Y),F=p(Q,2);B(P=>{dt(y,i(r)),dt(x,i(n)),I.disabled=P},[()=>i(a)||!i(r).trim()]),D("click",b,P=>P.target===P.currentTarget&&t.onClose()),D("keydown",b,P=>P.key==="Escape"&&t.onClose()),D("click",L,function(...P){t.onClose?.apply(this,P)}),D("input",y,P=>l(r,P.target.value,!0)),D("input",x,P=>l(n,P.target.value,!0)),D("click",I,u),D("click",Q,f),D("click",F,function(...P){t.onClose?.apply(this,P)}),k(g,b)};z(m,g=>{t.open&&g(w)})}k(e,_),ye()}Ie(["click","keydown","input"]);var zu=E('<label class="flex shrink-0 items-start gap-2 pt-0.5"><input type="checkbox" class="mt-0.5 h-4 w-4 rounded border-slate-300 text-amber-600 focus:ring-amber-500"/> <span class="text-sm text-slate-700"> </span></label>'),Gu=E('<p class="mb-2 text-xs text-red-600"> </p>'),Bu=E('<div class="rounded-xl border border-dashed border-slate-200 bg-slate-50 px-4 py-5"><p class="text-sm text-slate-500"> </p></div>'),qu=E('<div class="mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-slate-200 bg-white text-slate-400" title="Drag to another section"><svg class="h-4 w-4" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.4"><path stroke-linecap="round" d="M5 3h.01M5 6.5h.01M5 10h.01M5 13h.01M11 3h.01M11 6.5h.01M11 10h.01M11 13h.01"></path></svg></div>'),Ku=E('<article><div class="relative"><button class="block aspect-square w-full overflow-hidden rounded-lg bg-slate-100 cursor-pointer"><img class="h-full w-full object-cover"/></button> <button class="absolute right-1.5 top-1.5 flex h-7 w-7 items-center justify-center rounded-full bg-white/90 text-slate-500 shadow-sm hover:bg-white hover:text-red-600 cursor-pointer"><svg class="h-3.5 w-3.5" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8"><path stroke-linecap="round" d="M4 4l8 8M12 4l-8 8"></path></svg></button></div> <div class="mt-2 flex items-start justify-between gap-2"><div class="min-w-0"><p class="truncate text-[11px] font-medium text-slate-700"> </p> <p class="mt-1 text-[11px] text-slate-500"> </p></div> <!></div></article>'),Hu=E('<div class="fixed inset-0 z-[60] flex items-center justify-center bg-black/70 px-4" role="presentation"><div class="max-h-[90vh] max-w-4xl overflow-hidden rounded-xl bg-white shadow-2xl"><div class="flex items-center justify-between border-b border-slate-200 px-4 py-3"><div class="min-w-0"><h4 class="truncate text-sm font-medium text-slate-900"> </h4> <p class="text-xs text-slate-500"> </p></div> <div class="flex items-center gap-2"><button class="rounded-md px-2 py-1 text-xs text-slate-600 hover:bg-slate-100 cursor-pointer">Download</button> <button class="rounded-md px-2 py-1 text-xs text-slate-600 hover:bg-slate-100 cursor-pointer">Close</button></div></div> <img class="max-h-[80vh] w-full object-contain bg-slate-100"/></div></div>'),Vu=E('<section class="rounded-xl border border-slate-200 bg-white"><div class="border-b border-slate-100 px-4 py-3"><div class="flex flex-wrap items-start justify-between gap-4"><div class="min-w-0"><h4 class="text-sm font-semibold text-slate-900"> </h4> <p class="mt-1 text-xs text-slate-500"> </p></div> <!></div></div> <div role="region"><!> <!> <div class="mt-3 flex gap-3 overflow-x-auto pb-1"><!> <button><span>+</span></button></div> <input type="file" multiple="" class="hidden"/></div></section> <!>',1);function Pr(e,t){xe(t,!0);let r=pr(t,"allowRoleMove",3,!1),n=pr(t,"compact",3,!1);const a=["image/png","image/jpeg","image/webp"],s=1024;let u=N(!1),d=N(!1),o=N(void 0),f=N(null),v=N(null);const _="application/x-image-sprout-ref",m=te(()=>n()?"w-32":"w-44"),w=te(()=>n()?"text-2xl":"text-3xl"),g=new Map,b=te(()=>Kt.filter(j=>j.role===t.role));function h(j){let M=g.get(j.id);if(!M){if(!j.blob)return"";M=URL.createObjectURL(j.blob),g.set(j.id,M)}return M}function S(j){return j.dataUrl??h(j)}function L(){for(const[,j]of g)URL.revokeObjectURL(j);g.clear()}ct(()=>{const j=new Set(Kt.map(M=>M.id));for(const[M,W]of g)j.has(M)||(URL.revokeObjectURL(W),g.delete(M))}),bo(L);async function R(j){if(!a.includes(j.type))return;let M=null;try{M=await createImageBitmap(j);let{width:W,height:se}=M,me=j;if(W>s||se>s){const Te=s/Math.max(W,se),Be=Math.round(W*Te),Qe=Math.round(se*Te);if(typeof OffscreenCanvas<"u"){const it=new OffscreenCanvas(Be,Qe);it.getContext("2d").drawImage(M,0,0,Be,Qe);const pt=await it.convertToBlob({type:j.type});me=new File([pt],j.name,{type:j.type}),W=Be,se=Qe}}await il(me,W,se,t.role)}finally{M&&typeof M.close=="function"&&M.close()}}async function C(j){const M=Array.from(j);l(f,null);for(const W of M)try{await R(W)}catch(se){const me=se instanceof Error?se.message:"Failed to process image";l(f,`Failed to upload ${W.name}: ${me}`)}}function A(j){const M=j.target;M.files&&M.files.length>0&&(C(M.files),M.value="")}function y(){i(o)?.click()}function x(j){const M=j.dataTransfer?.types;return Array.isArray(M)?M.includes(_):!!M?.includes?.(_)}function I(j){const M=j.dataTransfer?.types;return Array.isArray(M)?M.includes("Files"):!!M?.includes?.("Files")}function K(j){if(j.preventDefault(),r()&&x(j)){l(d,!0);return}I(j)&&l(u,!0)}function q(j){if(r()&&x(j)){j.preventDefault(),l(d,!0),j.dataTransfer&&(j.dataTransfer.dropEffect="move");return}I(j)&&(j.preventDefault(),l(u,!0))}function J(j){j.preventDefault(),j.currentTarget===j.target&&(l(u,!1),l(d,!1))}async function Y(j){if(j.preventDefault(),l(u,!1),l(d,!1),r()&&x(j)){const W=j.dataTransfer?.getData(_);if(!W)return;try{const se=JSON.parse(W);if(!se.id||se.role===t.role)return;await ll(se.id,t.role)}catch(se){l(f,se instanceof Error?se.message:"Failed to move reference",!0)}return}const M=j.dataTransfer?.files;M&&M.length>0&&await C(M)}async function Q(j){try{await ol(j)}catch(M){l(f,M instanceof Error?M.message:"Failed to delete image",!0)}}function F(j){l(v,j,!0)}function P(){l(v,null)}function U(j){const M=S(j),W=document.createElement("a");W.href=M,W.download=j.filename,W.click()}function O(j,M){!r()||!j.dataTransfer||(j.dataTransfer.effectAllowed="move",j.dataTransfer.setData(_,JSON.stringify({id:M.id,role:M.role})))}function ee(){l(d,!1)}var V=Vu(),Z=_e(V),ie=c(Z),Se=c(ie),Oe=c(Se),Xe=c(Oe),Ze=c(Xe),Me=p(Xe,2),$e=c(Me),nr=p(Oe,2);{var ar=j=>{var M=zu(),W=c(M),se=p(W,2),me=c(se);B(()=>{Va(W,t.headerAction.checked),W.disabled=t.headerAction.disabled,G(me,t.headerAction.label)}),D("change",W,Te=>{t.headerAction.onChange(Te)}),k(j,M)};z(nr,j=>{t.headerAction&&j(ar)})}var je=p(ie,2),Gt=c(je);{var sr=j=>{var M=Gu(),W=c(M);B(()=>{H(M,"data-testid",`upload-error-${t.role}`),G(W,i(f))}),k(j,M)};z(Gt,j=>{i(f)&&j(sr)})}var jt=p(Gt,2);{var ir=j=>{var M=Bu(),W=c(M),se=c(W);B(()=>G(se,t.emptyLabel)),k(j,M)};z(jt,j=>{i(b).length===0&&j(ir)})}var Et=p(jt,2),de=c(Et);Je(de,17,()=>i(b),j=>j.id,(j,M)=>{var W=Ku(),se=c(W),me=c(se),Te=c(me),Be=p(me,2),Qe=p(se,2),it=c(Qe),vt=c(it),pt=c(vt),ht=p(vt,2),Bt=c(ht),qe=p(it,2);{var Kr=Ke=>{var kr=qu();B(()=>H(kr,"aria-label",`Drag ${i(M).filename??""} to another reference section`)),k(Ke,kr)};z(qe,Ke=>{r()&&Ke(Kr)})}B(Ke=>{H(W,"data-testid",`reference-card-${t.role}-${i(M).id}`),pe(W,1,`group ${i(m)} shrink-0 rounded-xl border border-slate-200 bg-slate-50 p-2`),H(W,"draggable",r()),H(me,"aria-label",`View ${i(M).filename??""}`),H(Te,"src",Ke),H(Te,"alt",i(M).filename),H(Be,"aria-label",`Delete ${i(M).filename??""}`),H(vt,"title",i(M).filename),G(pt,i(M).filename),G(Bt,i(M).role==="both"?"Shared reference":i(M).role==="style"?"Style only":"Subject only")},[()=>S(i(M))]),Rt("dragstart",W,Ke=>O(Ke,i(M))),Rt("dragend",W,ee),D("click",me,()=>F(i(M))),D("click",Be,()=>Q(i(M).id)),k(j,W)});var Ee=p(de,2),Gr=c(Ee),or=p(Et,2);ho(or,j=>l(o,j),()=>i(o));var Br=p(Z,2);{var qr=j=>{var M=Hu(),W=c(M),se=c(W),me=c(se),Te=c(me),Be=c(Te),Qe=p(Te,2),it=c(Qe),vt=p(me,2),pt=c(vt),ht=p(pt,2),Bt=p(se,2);B(qe=>{G(Be,i(v).filename),G(it,`Role: ${i(v).role??""}`),H(Bt,"src",qe),H(Bt,"alt",i(v).filename)},[()=>S(i(v))]),D("click",M,qe=>{qe.target===qe.currentTarget&&P()}),D("click",pt,()=>i(v)&&U(i(v))),D("click",ht,P),k(j,M)};z(Br,j=>{i(v)&&j(qr)})}B(j=>{G(Ze,t.title),G($e,t.description),H(je,"data-testid",`reference-images-dropzone-${t.role}`),pe(je,1,`px-4 py-4 transition-colors ${i(u)?"rounded-b-xl border-2 border-dashed border-amber-400 bg-amber-50":""} ${i(d)?"rounded-b-xl border-2 border-dashed border-sky-400 bg-sky-50/80":""}`),H(je,"aria-label",t.title),H(Ee,"data-testid",`upload-tile-${t.role}`),pe(Ee,1,`flex aspect-square ${i(m)} shrink-0 items-center justify-center rounded-xl border-2 border-dashed border-slate-300 bg-white text-slate-400 hover:border-amber-400 hover:text-amber-600 transition-colors cursor-pointer`),pe(Gr,1,io(i(w))),H(or,"accept",j)},[()=>a.join(",")]),Rt("dragenter",je,K),Rt("dragover",je,q),Rt("dragleave",je,J),Rt("drop",je,j=>{Y(j)}),D("click",Ee,y),D("change",or,A),k(e,V),ye()}Ie(["change","click"]);var Ju=E('<div class="flex items-center justify-between gap-4 rounded-2xl border border-slate-200 bg-slate-50 px-5 py-4"><p class="text-xs text-slate-600">Need a reference to influence both guides?</p> <button type="button" class="rounded-lg border border-slate-300 bg-white px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-50 cursor-pointer">Show Shared References</button></div>'),Wu=E('<div class="flex items-start justify-between gap-4 rounded-2xl border border-slate-200 bg-slate-50 px-5 py-4"><div class="max-w-2xl"><h3 class="text-sm font-semibold text-slate-900">Split Reference Sets</h3> <p class="mt-1 text-xs text-slate-500">Keep style and subject references separate when the same images should not drive both guides.</p></div> <label class="flex shrink-0 items-start gap-2 pt-0.5"><input type="checkbox" class="mt-0.5 h-4 w-4 rounded border-slate-300 text-amber-600 focus:ring-amber-500"/> <span class="text-sm text-slate-700">Enabled</span></label></div> <div class="grid gap-4 xl:grid-cols-2"><!> <!></div> <!>',1),Yu=E('<p data-testid="derive-error" class="mt-3 text-xs text-red-600"> </p>'),Xu=E('<p class="mt-3 text-xs text-emerald-700"> </p>'),Zu=E('<div class="xl:col-span-2"><span class="inline-flex items-center rounded-full border border-amber-200 bg-amber-50 px-3 py-1 text-xs font-medium text-amber-800">Unsaved project profile changes</span></div>'),$u=E('<div class="border-t border-slate-100 px-5 py-4"><textarea data-testid="instructions-textarea" class="min-h-28 w-full resize-y rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm text-slate-700 focus:border-amber-500 focus:outline-none focus:ring-1 focus:ring-amber-500" placeholder="Add instructions that should apply to every generation..."></textarea></div>'),Qu=E('<p class="mr-auto text-xs text-slate-500">Derived guides stay local until you save them.</p>'),ec=E('<button data-testid="settings-cancel-btn" class="rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50 transition-colors cursor-pointer">Cancel</button> <button data-testid="settings-save-btn" class="rounded-lg bg-amber-600 px-4 py-2 text-sm font-medium text-white hover:bg-amber-700 transition-colors cursor-pointer">Save Edits</button>',1),tc=E('<button data-testid="settings-close-btn" class="rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50 transition-colors cursor-pointer">Close</button>'),rc=E('<div data-testid="settings-modal-backdrop" class="fixed inset-0 z-50 flex items-center justify-center bg-black/40" role="dialog" aria-modal="true" aria-label="Project Settings" tabindex="-1"><div data-testid="settings-modal-panel" class="mx-4 flex max-h-[88vh] w-full max-w-6xl flex-col overflow-hidden rounded-2xl bg-[linear-gradient(180deg,#fffdf7_0%,#ffffff_18%,#f8fafc_100%)] shadow-xl"><div class="flex items-center justify-between border-b border-slate-200 px-6 py-4"><div><h2 class="text-lg font-semibold text-slate-900">Project Profile</h2> <p class="text-sm text-slate-500">Define shared, style-only, and subject-only references, then derive the guides the generator depends on.</p></div> <button data-testid="settings-modal-close" class="p-1 text-slate-400 hover:text-slate-600 transition-colors cursor-pointer" aria-label="Close"><svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg></button></div> <div class="flex-1 overflow-y-auto px-6 py-5"><div class="rounded-2xl border border-amber-200 bg-amber-50/70 p-4"><div class="flex flex-wrap items-center gap-4"><div><p class="text-xs font-semibold uppercase tracking-[0.16em] text-amber-700">Project Status</p> <p class="mt-1 text-sm text-slate-700">Mode: <span class="font-medium"> </span></p></div> <div class="grid flex-1 gap-2 text-xs text-slate-700 sm:grid-cols-4"><div class="rounded-xl bg-white/80 px-3 py-2">Shared refs: <span class="font-medium"> </span></div> <div class="rounded-xl bg-white/80 px-3 py-2">Style ready: <span class="font-medium"> </span></div> <div class="rounded-xl bg-white/80 px-3 py-2">Subject ready: <span class="font-medium"> </span></div> <div class="rounded-xl bg-white/80 px-3 py-2">API key: <span class="font-medium"> </span></div></div></div></div> <div class="mt-6 space-y-4"><!> <!></div> <div class="mt-6 rounded-2xl border border-slate-200 bg-white px-5 py-4"><div class="flex flex-wrap items-center justify-between gap-3"><div><h3 class="text-sm font-semibold text-slate-900">Derive Guides</h3> <p class="mt-1 text-xs text-slate-500"> </p></div> <div class="flex flex-wrap gap-2"><button data-testid="derive-both-btn" class="rounded-lg bg-amber-600 px-3 py-2 text-xs font-semibold text-white hover:bg-amber-700 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer"> </button> <button class="rounded-lg border border-slate-300 bg-white px-3 py-2 text-xs font-semibold text-slate-700 hover:bg-slate-50 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer"> </button> <button class="rounded-lg border border-slate-300 bg-white px-3 py-2 text-xs font-semibold text-slate-700 hover:bg-slate-50 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer"> </button></div></div> <!></div> <div class="mt-6 grid gap-4 xl:grid-cols-2"><!> <div class="rounded-2xl border border-slate-200 bg-white"><div class="border-b border-slate-100 px-5 py-4"><h3 class="text-sm font-semibold text-slate-900">Visual Style</h3> <p class="mt-1 min-h-10 text-xs text-slate-500">Describe the rendering style, palette, composition tendencies, and overall art direction.</p></div> <div class="px-5 py-4"><textarea data-testid="style-description-textarea" class="min-h-44 w-full resize-y rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm text-slate-700 focus:border-amber-500 focus:outline-none focus:ring-1 focus:ring-amber-500" placeholder="Describe the visual style for this project..."></textarea></div></div> <div class="rounded-2xl border border-slate-200 bg-white"><div class="border-b border-slate-100 px-5 py-4"><h3 class="text-sm font-semibold text-slate-900">Subject Guide</h3> <p class="mt-1 min-h-10 text-xs text-slate-500">Describe the recurring character, product, or subject identity this project should preserve.</p></div> <div class="px-5 py-4"><textarea data-testid="core-instruction-textarea" class="min-h-44 w-full resize-y rounded-xl border border-slate-200 bg-slate-50 px-3 py-3 text-sm text-slate-700 focus:border-amber-500 focus:outline-none focus:ring-1 focus:ring-amber-500" placeholder="Describe the recurring subject identity for this project..."></textarea></div></div> <div class="rounded-2xl border border-slate-200 bg-white xl:col-span-2"><button type="button" class="flex w-full items-start justify-between gap-4 px-5 py-4 text-left cursor-pointer"><div><h3 class="text-sm font-semibold text-slate-900">Instructions</h3> <p class="mt-1 text-xs text-slate-500">Advanced project-level instructions that apply to every generation, such as watermark, framing, or branding requirements. Use Visual Style and Subject Guide first when those are enough.</p></div> <span class="rounded-full border border-slate-200 bg-slate-50 px-3 py-1 text-xs font-medium text-slate-600"> </span></button> <!></div></div></div> <div class="flex items-center justify-end gap-3 border-t border-slate-200 px-6 py-4"><!> <!></div></div></div>');function nc(e,t){xe(t,!0);let r=N(""),n=N(""),a=N(""),s=N(""),u=N(""),d=N(""),o=N(null),f=N(null),v=N(null),_=N(!1),m=N(!1),w=N(!1),g=N(!1),b=te(()=>Kt.filter(O=>O.role!=="both").length),h=te(()=>Kt.filter(O=>O.role==="both").length),S=te(()=>i(b)>0),L=!1;ct(()=>{if(t.open&&!L){const O=Ur();l(r,O?.subjectGuide??"",!0),l(n,O?.visualStyle??"",!0),l(a,O?.instructions??"",!0),l(s,i(r),!0),l(u,i(n),!0),l(d,i(a),!0),l(f,null),l(v,null),l(o,null),l(_,Kt.some(ee=>ee.role!=="both"),!0),l(m,!1),l(w,Kt.some(ee=>ee.role==="both"),!0),l(g,(O?.instructions??"").trim().length>0),L=!0}t.open||(L=!1)}),ct(()=>{t.open&&i(S)&&l(_,!0)}),ct(()=>{i(h)>0&&l(w,!0)});let R=te(()=>i(r)!==i(s)||i(n)!==i(u)||i(a)!==i(d));async function C(O){const ee=ft.value;if(!(!ee||i(o))){l(o,O,!0),l(f,null),l(v,null);try{const V=await sl(ee,O,{persist:!1});(O==="both"||O==="style")&&l(n,V.visualStyle??"",!0),(O==="both"||O==="subject")&&l(r,V.subjectGuide??"",!0),l(v,O==="both"?"Style and subject guides were derived. Review them, then save to apply.":O==="style"?"Visual style was derived. Save to apply it.":"Subject guide was derived. Save to apply it.",!0)}catch(V){l(f,V instanceof Error?V.message:"Derivation failed",!0)}finally{l(o,null)}}}async function A(){const O=ft.value;if(O)try{await al(O,{subjectGuide:i(r),visualStyle:i(n),instructions:i(a)}),l(s,i(r),!0),l(u,i(n),!0),l(d,i(a),!0),l(v,null),t.onClose()}catch(ee){l(f,ee instanceof Error?ee.message:"Failed to save settings",!0)}}function y(){l(r,i(s),!0),l(n,i(u),!0),l(a,i(d),!0),l(f,null),l(v,null),t.onClose()}function x(O){O.target===O.currentTarget&&y()}function I(O){O.key==="Escape"&&y()}function K(O){l(r,O.target.value,!0),l(v,null)}function q(O){l(n,O.target.value,!0),l(v,null)}function J(O){l(a,O.target.value,!0),l(v,null)}function Y(){return i(_)?"Derive visual style from style references and subject guide from subject references.":"Derive both guides from the project references."}async function Q(O){if(O.target.checked){l(_,!0);return}l(m,!0),l(f,null);try{await ul(),l(_,!1)}catch(V){l(f,V instanceof Error?V.message:"Failed to merge references",!0),l(_,!0)}finally{l(m,!1)}}var F=xr(),P=_e(F);{var U=O=>{var ee=rc(),V=c(ee),Z=c(V),ie=p(c(Z),2),Se=p(Z,2),Oe=c(Se),Xe=c(Oe),Ze=c(Xe),Me=p(c(Ze),2),$e=p(c(Me)),nr=c($e),ar=p(Ze,2),je=c(ar),Gt=p(c(je)),sr=c(Gt),jt=p(je,2),ir=p(c(jt)),Et=c(ir),de=p(jt,2),Ee=p(c(de)),Gr=c(Ee),or=p(de,2),Br=p(c(or)),qr=c(Br),j=p(Oe,2),M=c(j);{var W=X=>{var oe=Wu(),Ne=_e(oe),Hr=p(c(Ne),2),Vr=c(Hr),Fn=p(Ne,2),Ln=c(Fn);Pr(Ln,{title:"Visual Style References",description:"Moodboards, palettes, rendering examples, and composition cues.",role:"style",emptyLabel:"Upload style-only references when the project's look should be separated from its subject.",allowRoleMove:!0,compact:!0});var ws=p(Ln,2);Pr(ws,{title:"Subject References",description:"Character sheets, product shots, or recurring subject references.",role:"subject",emptyLabel:"Upload subject-only references when the project's subject should be separated from its look.",allowRoleMove:!0,compact:!0});var ks=p(Fn,2);{var Ss=qt=>{Pr(qt,{title:"Shared References (Optional)",description:"Keep only the references that should influence both guides. Drag cards here or out to style/subject when needed.",role:"both",emptyLabel:"Drop shared references here only when an image should influence both style and subject.",allowRoleMove:!0,compact:!0})},js=qt=>{var Un=Ju(),Es=p(c(Un),2);D("click",Es,()=>l(w,!0)),k(qt,Un)};z(ks,qt=>{i(h)>0||i(w)?qt(Ss):qt(js,-1)})}B(()=>{Va(Vr,i(_)),Vr.disabled=i(m)}),D("change",Vr,Q),k(X,oe)};z(M,X=>{i(_)&&X(W)})}var se=p(M,2);{var me=X=>{{let oe=te(()=>({label:"Split style and subject references",checked:i(_),disabled:i(m),onChange:Q}));Pr(X,{title:"Project References",description:"Used for both the visual style and subject guide. This is the default reference set for the project.",role:"both",emptyLabel:"Upload the core references for this project. These will drive both the visual style and the subject guide.",allowRoleMove:!1,get headerAction(){return i(oe)}})}};z(se,X=>{i(_)||X(me)})}var Te=p(j,2),Be=c(Te),Qe=c(Be),it=p(c(Qe),2),vt=c(it),pt=p(Qe,2),ht=c(pt),Bt=c(ht),qe=p(ht,2),Kr=c(qe),Ke=p(qe,2),kr=c(Ke),ss=p(Be,2);{var is=X=>{var oe=Yu(),Ne=c(oe);B(()=>G(Ne,i(f))),k(X,oe)},os=X=>{var oe=Xu(),Ne=c(oe);B(()=>G(Ne,i(v))),k(X,oe)};z(ss,X=>{i(f)?X(is):i(v)&&X(os,1)})}var ls=p(Te,2),Mn=c(ls);{var us=X=>{var oe=Zu();k(X,oe)};z(Mn,X=>{i(R)&&X(us)})}var Tn=p(Mn,2),cs=p(c(Tn),2),Dn=c(cs),An=p(Tn,2),ds=p(c(An),2),On=c(ds),fs=p(An,2),Sr=c(fs),vs=p(c(Sr),2),ps=c(vs),hs=p(Sr,2);{var gs=X=>{var oe=$u(),Ne=c(oe);B(()=>dt(Ne,i(a))),D("input",Ne,J),k(X,oe)};z(hs,X=>{i(g)&&X(gs)})}var bs=p(Se,2),Nn=c(bs);{var ms=X=>{var oe=Qu();k(X,oe)};z(Nn,X=>{!i(R)&&i(v)&&X(ms)})}var _s=p(Nn,2);{var xs=X=>{var oe=ec(),Ne=_e(oe),Hr=p(Ne,2);D("click",Ne,y),D("click",Hr,A),k(X,oe)},ys=X=>{var oe=tc();D("click",oe,y),k(X,oe)};z(_s,X=>{i(R)?X(xs):X(ys,-1)})}B(X=>{G(nr,Mt.value?.mode??"none"),G(sr,Mt.value?.refs.both??0),G(Et,Mt.value?.readiness.style?"yes":"no"),G(Gr,Mt.value?.readiness.subject?"yes":"no"),G(qr,ne.apiKeyConfigured?"configured":"missing"),G(vt,X),ht.disabled=i(o)!==null,G(Bt,i(o)==="both"?"Deriving style + subject...":"Derive Style + Subject"),qe.disabled=i(o)!==null,G(Kr,i(o)==="style"?"Deriving style...":"Derive Style"),Ke.disabled=i(o)!==null,G(kr,i(o)==="subject"?"Deriving subject...":"Derive Subject"),dt(Dn,i(n)),dt(On,i(r)),H(Sr,"aria-expanded",i(g)),G(ps,i(g)?"Hide":"Show")},[Y]),D("click",ee,x),D("keydown",ee,I),D("click",ie,y),D("click",ht,()=>C("both")),D("click",qe,()=>C("style")),D("click",Ke,()=>C("subject")),D("input",Dn,q),D("input",On,K),D("click",Sr,()=>l(g,!i(g))),k(O,ee)};z(P,O=>{t.open&&O(U)})}k(e,F),ye()}Ie(["click","keydown","change","input"]);var ac=E('<div class="flex min-h-screen items-center justify-center bg-slate-50 text-sm text-slate-500">Loading Image Sprout...</div>'),sc=E('<div class="flex min-h-screen items-center justify-center bg-slate-50 px-6"><div class="rounded-xl bg-white p-6 text-sm text-red-600 shadow-lg"> </div></div>'),ic=E('<div data-testid="layout" class="grid h-screen" style="grid-template-columns: 300px 1fr"><!> <div data-testid="canvas-column" class="flex flex-col min-h-0 overflow-hidden"><!> <!></div></div> <!> <!>',1);function oc(e,t){xe(t,!0);let r=N(!1),n=N(!1),a=N(null);function s(){l(r,!0)}function u(){l(r,!1)}function d(){l(n,!0)}function o(){l(n,!1)}Wa(async()=>{try{await Bo(),await tl(),l(a,null)}catch(b){l(a,b instanceof Error?b.message:"Failed to load app",!0)}});var f=xr(),v=_e(f);{var _=b=>{var h=ac();k(b,h)},m=b=>{var h=sc(),S=c(h),L=c(S);B(()=>G(L,i(a)??ne.loadError)),k(b,h)},w=b=>{fl(b,{})},g=b=>{var h=ic(),S=_e(h),L=c(S);Bl(L,{onOpenSettings:s});var R=p(L,2),C=c(R);gu(C);var A=p(C,2);Tu(A,{onOpenSettings:s,onOpenModelSettings:d});var y=p(S,2);nc(y,{get open(){return i(r)},onClose:u});var x=p(y,2);Uu(x,{get open(){return i(n)},onClose:o}),k(b,h)};z(v,b=>{!ne.ready||ne.loading?b(_):i(a)||ne.loadError?b(m,1):ne.apiKeyConfigured?b(g,-1):b(w,2)})}k(e,f),ye()}$i(oc,{target:document.getElementById("app")});
Binary file
Binary file