living-ai-documentation 3.16.0 → 3.17.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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import e from"https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),e.initialize({startOnLoad:!1,theme:`default`}),window.mermaid=e;var t=Array.isArray,n=Array.prototype.indexOf,r=Array.prototype.includes,i=Array.from,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyDescriptors,c=Object.prototype,l=Array.prototype,u=Object.getPrototypeOf,d=Object.isExtensible,f=()=>{};function p(e){return e()}function m(e){for(var t=0;t<e.length;t++)e[t]()}function h(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var g=1024,_=2048,v=4096,y=8192,b=16384,x=32768,S=1<<25,C=65536,w=1<<19,T=1<<20,E=1<<25,D=65536,O=1<<21,k=1<<22,ee=1<<23,A=Symbol(`$state`),te=Symbol(`legacy props`),ne=Symbol(``),re=Symbol(`attributes`),ie=Symbol(`class`),ae=Symbol(`style`),oe=Symbol(`text`),se=Symbol(`form reset`),ce=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},le=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ue(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function de(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function fe(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function pe(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function me(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function he(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ge(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function _e(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function ve(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function ye(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function be(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function xe(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Se={},j=Symbol(`uninitialized`),Ce=`http://www.w3.org/1999/xhtml`,M=`http://www.w3.org/2000/svg`,we=`http://www.w3.org/1998/Math/MathML`;function Te(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ee(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function De(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Oe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var ke=!1;function Ae(e){ke=e}var je;function Me(e){if(e===null)throw Ee(),Se;return je=e}function Ne(){return Me(fn(je))}function N(e){if(ke){if(fn(je)!==null)throw Ee(),Se;je=e}}function Pe(e=1){if(ke){for(var t=e,n=je;t--;)n=fn(n);je=n}}function Fe(e=!0){for(var t=0,n=je;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=fn(n);e&&n.remove(),n=i}}function Ie(e){if(!e||e.nodeType!==8)throw Ee(),Se;return e.data}function Le(e){return e===this.v}function Re(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ze(e){return!Re(e,this.v)}var Be=!1,Ve=!1;function He(){Ve=!0}var Ue=null;function We(e){Ue=e}function Ge(e,t=!1,n){Ue={p:Ue,i:!1,c:null,e:null,s:e,x:null,r:tr,l:Ve&&!t?{s:null,u:null,$:[]}:null}}function Ke(e){var t=Ue,n=t.e;if(n!==null){t.e=null;for(var r of n)kn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ue=t.p,e??{}}function qe(){return!Ve||Ue!==null&&Ue.l===null}var Je=[];function Ye(){var e=Je;Je=[],m(e)}function Xe(e){if(Je.length===0&&!mt){var t=Je;queueMicrotask(()=>{t===Je&&Ye()})}Je.push(e)}function Ze(){for(;Je.length>0;)Ye()}function Qe(e){var t=tr;if(t===null)return Qn.f|=ee,e;if(!(t.f&32768)&&!(t.f&4))throw e;$e(e,t)}function $e(e,t){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}var et=~(_|v|g);function tt(e,t){e.f=e.f&et|t}function nt(e){e.f&512||e.deps===null?tt(e,g):tt(e,v)}function rt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=D,rt(t.deps))}function it(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),rt(e.deps),tt(e,g)}var at=!1,ot=!1;function st(e){var t=ot;try{return ot=!1,[e(),ot]}finally{ot=t}}var ct=null,lt=null,ut=null,dt=null,ft=null,pt=null,mt=!1,ht=!1,gt=null,_t=null,vt=0,yt=1,bt=class e{id=yt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){lt===null?ct=lt=this:(lt.#n=this,this.#t=lt),lt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)tt(r,_),t(r);for(r of n.m)tt(r,v),t(r)}this.#p.add(e)}#g(){this.#e=!0,vt++>1e3&&(this.#S(),St());for(let e of this.#u)this.#d.delete(e),tt(e,_),this.schedule(e);for(let e of this.#d)tt(e,v),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=gt=[],r=[],i=_t=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw kt(e),this.#h()||this.discard(),t}if(ut=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(gt=null,_t=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Ot(e,t);i.length>0&&ut.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),dt=this,wt(r),wt(n),dt=null,this.#s?.resolve();var s=ut;if(this.#a===0&&(this.#c.length===0||s!==null)&&(this.#S(),Be&&(this.#x(),ut=s)),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=g;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=g:i&4?t.push(r):Be&&i&16777224?n.push(r):mr(r)&&(i&16&&this.#d.add(r),yr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),tt(i,_),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),ut=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)it(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==j&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),ft?.set(e,t)),this.is_fork||(e.v=t)}activate(){ut=this}deactivate(){ut=null,ft=null}flush(){try{ht=!0,ut=this,this.#g()}finally{vt=0,pt=null,gt=null,_t=null,ht=!1,ut=null,ft=null,Jt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear(),this.#S(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}#x(){for(let l=ct;l!==null;l=l.#n){var e=l.id<this.id,t=[];for(let[r,[i,a]]of this.current){if(l.current.has(r)){var n=l.current.get(r)[0];if(e&&i!==n)l.current.set(r,[i,a]);else continue}t.push(r)}if(e)for(let[e,t]of this.async_deriveds){let n=l.async_deriveds.get(e);n&&t.promise.then(n.resolve).catch(n.reject)}if(l.#e){var r=[...l.current.keys()].filter(e=>!l.current.get(e)[1]&&!this.current.has(e));if(r.length===0)e&&l.discard();else if(t.length>0){if(e)for(let e of this.#p)l.unskip_effect(e,e=>{e.f&4194320?l.schedule(e):l.#b([e])});l.activate();var i=new Set,a=new Map;for(var o of t)Tt(o,r,i,a);a=new Map;var s=[...l.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(s.length>0)for(let e of this.#l)!(e.f&155648)&&Et(e,s,a)&&(e.f&4194320?(tt(e,_),l.schedule(e)):l.#u.add(e));if(l.#c.length>0&&!l.#m){l.apply();for(var c of l.#c)l.#_(c,[],[]);l.#c=[]}l.deactivate()}}}}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,Xe(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=h()).promise}static ensure(){if(ut===null){let t=ut=new e;!ht&&!mt&&Xe(()=>{t.#e||t.flush()})}return ut}apply(){if(!Be||!this.is_fork&&this.#t===null&&this.#n===null){ft=null;return}ft=new Map;for(let[e,[t]]of this.current)ft.set(e,t);for(let t=ct;t!==null;t=t.#n)if(!(t===this||t.is_fork)){var e=!1;if(t.id<this.id){for(let[n,[,r]]of t.current)if(!r&&this.current.has(n)){e=!0;break}}if(!e)for(let[e,n]of t.previous)ft.has(e)||ft.set(e,n)}}schedule(e){if(pt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(gt!==null&&t===tr&&(Be||(Qn===null||!(Qn.f&2))&&!at))return;if(n&96){if(!(n&1024))return;t.f^=g}}this.#c.push(t)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null?ct=t:e.#n=t,t===null?lt=e:t.#t=e,this.linked=!1}}};function xt(e){var t=mt;mt=!0;try{var n;for(e&&(ut!==null&&!ut.is_fork&&ut.flush(),n=e());;){if(Ze(),ut===null)return n;ut.flush()}}finally{mt=t}}function St(){try{ge()}catch(e){$e(e,pt)}}var Ct=null;function wt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&mr(r)&&(Ct=new Set,yr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&Hn(r),Ct?.size>0)){Jt.clear();for(let e of Ct){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Ct.has(n)&&(Ct.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||yr(n)}}Ct.clear()}}Ct=null}}function Tt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Tt(i,t,n,r):e&4194320&&!(e&2048)&&Et(i,t,r)&&(tt(i,_),Dt(i))}}function Et(e,t,n){let i=n.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(r.call(t,i))return!0;if(i.f&2&&Et(i,t,n))return n.set(i,!0),!0}return n.set(e,!1),!1}function Dt(e){ut.schedule(e)}function Ot(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),tt(e,g);for(var n=e.first;n!==null;)Ot(n,t),n=n.next}}function kt(e){tt(e,g);for(var t=e.first;t!==null;)kt(t),t=t.next}function At(e){let t=0,n=Xt(0),r;return()=>{En()&&(H(n),Pn(()=>(t===0&&(r=Cr(()=>e(()=>en(n)))),t+=1,()=>{Xe(()=>{--t,t===0&&(r?.(),r=void 0,en(n))})})))}}var jt=C|w;function Mt(e,t,n,r){new Nt(e,t,n,r)}var Nt=class{parent;is_pending=!1;transform_error;#e;#t=ke?je:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=At(()=>(this.#m=Xt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=tr;t.b=this,t.f|=128,n(e)},this.parent=tr.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Fn(()=>{if(ke){let e=this.#t;Ne();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},jt),ke&&(this.#e=je)}#g(){try{this.#a=In(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=In(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=In(()=>e(this.#e)),Xe(()=>{var e=this.#c=document.createDocumentFragment(),t=un();e.append(t),this.#a=this.#x(()=>In(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Un(this.#o,()=>{this.#o=null}),this.#b(ut))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=In(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();qn(this.#a,e);let t=this.#n.pending;this.#o=In(()=>t(this.#e))}else this.#b(ut)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){it(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=tr,n=Qn,r=Ue;nr(this.#i),er(this.#i),We(this.#i.ctx);try{return bt.ensure(),e()}catch(e){return Qe(e),null}finally{nr(t),er(n),We(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Un(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Xe(()=>{this.#d=!1,this.#m&&Qt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),H(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;ut?.is_fork?(this.#a&&ut.skip_effect(this.#a),this.#o&&ut.skip_effect(this.#o),this.#s&&ut.skip_effect(this.#s),ut.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Bn(this.#a),null),this.#o&&=(Bn(this.#o),null),this.#s&&=(Bn(this.#s),null),ke&&(Me(this.#t),Pe(),Me(Fe()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Oe();return}r=!0,i&&xe(),this.#s!==null&&Un(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){$e(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return In(()=>{var t=tr;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return $e(e,this.#i.parent),null}}))};Xe(()=>{var t;try{t=this.transform_error(e)}catch(e){$e(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>$e(e,this.#i&&this.#i.parent)):o(t)})}};function Pt(e,t,n,r){let i=qe()?Rt:Vt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=tr,c=Ft(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){$e(e,s)}It()}}var d=Lt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>Bt(e))).then(u).catch(e=>$e(e,s)).finally(d)}l?l.then(()=>{c(),f(),It()}):f()}function Ft(){var e=tr,t=Qn,n=Ue,r=ut;return function(i=!0){nr(e),er(t),We(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function It(e=!0){nr(null),er(null),We(null),e&&ut?.deactivate()}function Lt(){var e=tr,t=e.b,n=ut,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Rt(e){var t=2|_;return tr!==null&&(tr.f|=w),{ctx:Ue,deps:null,effects:null,equals:Le,f:t,fn:e,reactions:null,rv:0,v:j,wv:0,parent:tr,ac:null}}var zt=Symbol(`obsolete`);function Bt(e,t,n){let r=tr;r===null&&de();var i=void 0,a=Xt(j),o=!Qn,s=new Set;return Nn(()=>{var t=tr,n=h();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ce&&n.reject(e)}).finally(It)}catch(e){n.reject(e),It()}var c=ut;if(o){if(t.f&32768)var l=Lt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(zt);else for(let e of s.values())e.reject(zt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==zt&&(c.activate(),t?(a.f|=ee,Qt(a,t)):(a.f&8388608&&(a.f^=ee),Qt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Dn(()=>{for(let e of s)e.reject(zt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function P(e){let t=Rt(e);return Be||ir(t),t}function Vt(e){let t=Rt(e);return t.equals=ze,t}function Ht(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Bn(t[n])}}function Ut(e){var t,n=tr,r=e.parent;if(!Xn&&r!==null&&e.v!==j&&r.f&24576)return Te(),e.v;nr(r);try{e.f&=~D,Ht(e),t=gr(e)}finally{nr(n)}return t}function Wt(e){var t=Ut(e);if(!e.equals(t)&&(e.wv=pr(),(!ut?.is_fork||e.deps===null)&&(ut===null?e.v=t:(ut.capture(e,t,!0),dt?.capture(e,t,!0)),e.deps===null))){tt(e,g);return}Xn||(ft===null?nt(e):(En()||ut?.is_fork)&&ft.set(e,t))}function Gt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(ce),t.fn!==null&&(t.teardown=f),t.ac=null,vr(t,0),Rn(t))}function Kt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&yr(t)}var qt=new Set,Jt=new Map,Yt=!1;function Xt(e,t){return{f:0,v:e,reactions:null,equals:Le,rv:0,wv:0}}function F(e,t){let n=Xt(e,t);return ir(n),n}function Zt(e,t=!1,n=!0){let r=Xt(e);return t||(r.equals=ze),Ve&&n&&Ue!==null&&Ue.l!==null&&(Ue.l.s??=[]).push(r),r}function I(e,t,n=!1){return Qn!==null&&(!$n||Qn.f&131072)&&qe()&&Qn.f&4325394&&(rr===null||!rr.has(e))&&be(),Qt(e,n?L(t):t,_t)}function Qt(e,t,n=null){if(!e.equals(t)){Jt.set(e,Xn?t:e.v);var r=bt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Ut(t),ft===null&&nt(t)}e.wv=pr(),tn(e,_,n),qe()&&tr!==null&&tr.f&1024&&!(tr.f&96)&&(sr===null?cr([e]):sr.push(e)),!r.is_fork&&qt.size>0&&!Yt&&$t()}return t}function $t(){Yt=!1;for(let e of qt){e.f&1024&&tt(e,v);let t;try{t=mr(e)}catch{t=!0}t&&yr(e)}qt.clear()}function en(e){I(e,e.v+1)}function tn(e,t,n){var r=e.reactions;if(r!==null)for(var i=qe(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===tr)){var l=(c&_)===0;if(l&&tt(s,t),c&131072)qt.add(s);else if(c&2){var u=s;ft?.delete(u),c&65536||(c&512&&(tr===null||!(tr.f&2097152))&&(s.f|=D),tn(u,v,n))}else if(l){var d=s;c&16&&Ct!==null&&Ct.add(d),n===null?Dt(d):n.push(d)}}}}function L(e){if(typeof e!=`object`||!e||A in e)return e;let n=u(e);if(n!==c&&n!==l)return e;var r=new Map,i=t(e),a=F(0),s=null,d=dr,f=e=>{if(dr===d)return e();var t=Qn,n=dr;er(null),fr(d);var r=e();return er(t),fr(n),r};return i&&r.set(`length`,F(e.length,s)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&ve();var i=r.get(t);return i===void 0?f(()=>{var e=F(n.value,s);return r.set(t,e),e}):I(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>F(j,s));r.set(t,e),en(a)}}else I(n,j),en(a);return!0},get(t,n,i){if(n===A)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||o(t,n)?.writable)&&(a=f(()=>F(L(c?t[n]:j),s)),r.set(n,a)),a!==void 0){var l=H(a);return l===j?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=H(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==j)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===A)return!0;var n=r.get(t),i=n!==void 0&&n.v!==j||Reflect.has(e,t);return(n!==void 0||tr!==null&&(!i||o(e,t)?.writable))&&(n===void 0&&(n=f(()=>F(i?L(e[t]):j,s)),r.set(t,n)),H(n)===j)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;d<l.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>F(j,s)),r.set(d+``,p)):I(p,j)}if(l===void 0)(!u||o(e,t)?.writable)&&(l=f(()=>F(void 0,s)),I(l,L(n)),r.set(t,l));else{u=l.v!==j;var m=f(()=>L(n));I(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&I(g,_+1)}en(a)}return!0},ownKeys(e){H(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==j});for(var[n,i]of r)i.v!==j&&!(n in e)&&t.push(n);return t},setPrototypeOf(){ye()}})}function nn(e){try{if(typeof e==`object`&&e&&A in e)return e[A]}catch{}return e}function rn(e,t){return Object.is(nn(e),nn(t))}new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);var an,on,sn,cn;function ln(){if(an===void 0){an=window,on=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;sn=o(t,`firstChild`).get,cn=o(t,`nextSibling`).get,d(e)&&(e[ie]=void 0,e[re]=null,e[ae]=void 0,e.__e=void 0),d(n)&&(n[oe]=void 0)}}function un(e=``){return document.createTextNode(e)}function dn(e){return sn.call(e)}function fn(e){return cn.call(e)}function R(e,t){if(!ke)return dn(e);var n=dn(je);if(n===null)n=je.appendChild(un());else if(t&&n.nodeType!==3){var r=un();return n?.before(r),Me(r),r}return t&&gn(n),Me(n),n}function z(e,t=!1){if(!ke){var n=dn(e);return n instanceof Comment&&n.data===``?fn(n):n}if(t){if(je?.nodeType!==3){var r=un();return je?.before(r),Me(r),r}gn(je)}return je}function B(e,t=1,n=!1){let r=ke?je:e;for(var i;t--;)i=r,r=fn(r);if(!ke)return r;if(n){if(r?.nodeType!==3){var a=un();return r===null?i?.after(a):r.before(a),Me(a),a}gn(r)}return Me(r),r}function pn(e){e.textContent=``}function mn(){return!Be||Ct!==null?!1:(tr.f&x)!==0}function hn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function gn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function _n(e,t){if(t){let t=document.body;e.autofocus=!0,Xe(()=>{document.activeElement===t&&e.focus()})}}function vn(e){ke&&dn(e)!==null&&pn(e)}var yn=!1;function bn(){yn||(yn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[se]?.()})},{capture:!0}))}function xn(e){var t=Qn,n=tr;er(null),nr(null);try{return e()}finally{er(t),nr(n)}}function Sn(e,t,n,r=n){e.addEventListener(t,()=>xn(n));let i=e[se];i?e[se]=()=>{i(),r(!0)}:e[se]=()=>r(!0),bn()}function Cn(e){tr===null&&(Qn===null&&he(e),me()),Xn&&pe(e)}function wn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Tn(e,t){var n=tr;n!==null&&n.f&8192&&(e|=y);var r={ctx:Ue,deps:null,nodes:null,f:e|_|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};ut?.register_created_effect(r);var i=r;if(e&4)gt===null?bt.ensure().schedule(r):gt.push(r);else if(t!==null){try{yr(r)}catch(e){throw Bn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=C))}if(i!==null&&(i.parent=n,n!==null&&wn(i,n),Qn!==null&&Qn.f&2&&!(e&64))){var a=Qn;(a.effects??=[]).push(i)}return r}function En(){return Qn!==null&&!$n}function Dn(e){let t=Tn(8,null);return tt(t,g),t.teardown=e,t}function On(e){Cn(`$effect`);var t=tr.f;if(!Qn&&t&32&&Ue!==null&&!Ue.i){var n=Ue;(n.e??=[]).push(e)}else return kn(e)}function kn(e){return Tn(4|T,e)}function An(e){return Cn(`$effect.pre`),Tn(8|T,e)}function jn(e){bt.ensure();let t=Tn(64|w,e);return(e={})=>new Promise(n=>{e.outro?Un(t,()=>{Bn(t),n(void 0)}):(Bn(t),n(void 0))})}function Mn(e){return Tn(4,e)}function Nn(e){return Tn(k|w,e)}function Pn(e,t=0){return Tn(8|t,e)}function V(e,t=[],n=[],r=[]){Pt(r,t,n,t=>{Tn(8,()=>{e(...t.map(H))})})}function Fn(e,t=0){return Tn(16|t,e)}function In(e){return Tn(32|w,e)}function Ln(e){var t=e.teardown;if(t!==null){let e=Xn,n=Qn;Zn(!0),er(null);try{t.call(null)}finally{Zn(e),er(n)}}}function Rn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&xn(()=>{e.abort(ce)});var r=n.next;n.f&64?n.parent=null:Bn(n,t),n=r}}function zn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Bn(t),t=n}}function Bn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Vn(e.nodes.start,e.nodes.end),n=!0),e.f|=S,Rn(e,t&&!n),vr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Ln(e),e.f^=S,e.f|=b;var i=e.parent;i!==null&&i.first!==null&&Hn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Vn(e,t){for(;e!==null;){var n=e===t?null:fn(e);e.remove(),e=n}}function Hn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Un(e,t,n=!0){var r=[];Wn(e,r,!0);var i=()=>{n&&Bn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Wn(e,t,n){if(!(e.f&8192)){e.f^=y;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Wn(i,t,o?n:!1)}i=a}}}function Gn(e){Kn(e,!0)}function Kn(e,t){if(e.f&8192){e.f^=y,e.f&1024||(tt(e,_),bt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Kn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function qn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:fn(n);t.append(n),n=i}}var Jn=null,Yn=!1,Xn=!1;function Zn(e){Xn=e}var Qn=null,$n=!1;function er(e){Qn=e}var tr=null;function nr(e){tr=e}var rr=null;function ir(e){Qn!==null&&(!Be||Qn.f&2)&&(rr??=new Set).add(e)}var ar=null,or=0,sr=null;function cr(e){sr=e}var lr=1,ur=0,dr=ur;function fr(e){dr=e}function pr(){return++lr}function mr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~D),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(mr(a)&&Wt(a),a.wv>e.wv)return!0}t&512&&ft===null&&tt(e,g)}return!1}function hr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!Be&&rr!==null&&rr.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?hr(a,t,!1):t===a&&(n?tt(a,_):a.f&1024&&tt(a,v),Dt(a))}}function gr(e){var t=ar,n=or,r=sr,i=Qn,a=rr,o=Ue,s=$n,c=dr,l=e.f;ar=null,or=0,sr=null,Qn=l&96?null:e,rr=null,We(e.ctx),$n=!1,dr=++ur,e.ac!==null&&(xn(()=>{e.ac.abort(ce)}),e.ac=null);try{e.f|=O;var u=e.fn,d=u();e.f|=x;var f=e.deps,p=ut?.is_fork;if(ar!==null){var m;if(p||vr(e,or),f!==null&&or>0)for(f.length=or+ar.length,m=0;m<ar.length;m++)f[or+m]=ar[m];else e.deps=f=ar;if(En()&&e.f&512)for(m=or;m<f.length;m++)(f[m].reactions??=[]).push(e)}else !p&&f!==null&&or<f.length&&(vr(e,or),f.length=or);if(qe()&&sr!==null&&!$n&&f!==null&&!(e.f&6146))for(m=0;m<sr.length;m++)hr(sr[m],e);if(i!==null&&i!==e){if(ur++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=ur;if(t!==null)for(let e of t)e.rv=ur;sr!==null&&(r===null?r=sr:r.push(...sr))}return e.f&8388608&&(e.f^=ee),d}catch(e){return Qe(e)}finally{e.f^=O,ar=t,or=n,sr=r,Qn=i,rr=a,We(o),$n=s,dr=c}}function _r(e,t){let i=t.reactions;if(i!==null){var a=n.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=t.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&t.f&2&&(ar===null||!r.call(ar,t))){var s=t;s.f&512&&(s.f^=512,s.f&=~D),s.v!==j&&nt(s),Gt(s),vr(s,0)}}function vr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)_r(e,n[r])}function yr(e){var t=e.f;if(!(t&16384)){tt(e,g);var n=tr,r=Yn;tr=e,Yn=!0;try{t&16777232?zn(e):Rn(e),Ln(e);var i=gr(e);e.teardown=typeof i==`function`?i:null,e.wv=lr}finally{Yn=r,tr=n}}}async function br(){if(Be)return new Promise(e=>{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),xt()}function H(e){var t=(e.f&2)!=0;if(Jn?.add(e),Qn!==null&&!$n&&!(tr!==null&&tr.f&16384)&&(rr===null||!rr.has(e))){var n=Qn.deps;if(Qn.f&2097152)e.rv<ur&&(e.rv=ur,ar===null&&n!==null&&n[or]===e?or++:ar===null?ar=[e]:ar.push(e));else{Qn.deps??=[],r.call(Qn.deps,e)||Qn.deps.push(e);var i=e.reactions;i===null?e.reactions=[Qn]:r.call(i,Qn)||i.push(Qn)}}if(Xn&&Jt.has(e))return Jt.get(e);if(t){var a=e;if(Xn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||Sr(a))&&(o=Ut(a)),Jt.set(a,o),o}var s=(a.f&512)==0&&!$n&&Qn!==null&&(Yn||(Qn.f&512)!=0),c=(a.f&x)===0;mr(a)&&(s&&(a.f|=512),Wt(a)),s&&!c&&(Kt(a),xr(a))}if(ft?.has(e))return ft.get(e);if(e.f&8388608)throw e.v;return e.v}function xr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(Kt(t),xr(t))}function Sr(e){if(e.v===j)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Jt.has(t)||t.f&2&&Sr(t))return!0;return!1}function Cr(e){var t=$n;try{return $n=!0,e()}finally{$n=t}}function wr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(A in e)Tr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&A in n&&Tr(n)}}}function Tr(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Tr(e[n],t)}catch{}let n=u(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=s(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var Er=[`touchstart`,`touchmove`];function Dr(e){return Er.includes(e)}var Or=Symbol(`events`),kr=new Set,Ar=new Set;function jr(e,t,n,r={}){function i(e){if(r.capture||Fr.call(t,e),!e.cancelBubble)return xn(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Xe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Mr(e,t,n,r,i){var a={capture:r,passive:i},o=jr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Dn(()=>{t.removeEventListener(e,o,a)})}function U(e,t,n){(t[Or]??={})[e]=n}function Nr(e){for(var t=0;t<e.length;t++)kr.add(e[t]);for(var n of Ar)n(e)}var Pr=null;function Fr(e){var t=this,n=t.ownerDocument,r=e.type,i=e.composedPath?.()||[],o=i[0]||e.target;Pr=e;var s=0,c=Pr===e&&e[Or];if(c){var l=i.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Or]=t;return}var u=i.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=i[s]||e.target,o!==t){a(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=Qn,f=tr;er(null),nr(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[Or]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<i.length?i[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[Or]=t,delete e.currentTarget,er(d),nr(f)}}}var Ir=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Lr(e){return Ir?.createHTML(e)??e}function Rr(e){var t=hn(`template`);return t.innerHTML=Lr(e.replaceAll(`<!>`,`<!---->`)),t.content}function zr(e,t){var n=tr;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(ke)return zr(je,null),je;i===void 0&&(i=Rr(a?e:`<!>`+e),n||(i=dn(i)));var t=r||on?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=dn(t),s=t.lastChild;zr(o,s)}else zr(t,t);return t}}function Br(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=(t&1)!=0,a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(ke)return zr(je,null),je;if(!o){var e=dn(Rr(a));if(i)for(o=document.createDocumentFragment();dn(e);)o.appendChild(dn(e));else o=dn(e)}var t=o.cloneNode(!0);if(i){var n=dn(t),r=t.lastChild;zr(n,r)}else zr(t,t);return t}}function Vr(e,t){return Br(e,t,`svg`)}function Hr(e=``){if(!ke){var t=un(e+``);return zr(t,t),t}var n=je;return n.nodeType===3?gn(n):(n.before(n=un()),Me(n)),zr(n,n),n}function Ur(){if(ke)return zr(je,null),je;var e=document.createDocumentFragment(),t=document.createComment(``),n=un();return e.append(t,n),zr(t,n),e}function G(e,t){if(ke){var n=tr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=je),Ne();return}e!==null&&e.before(t)}function K(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[oe]??=e.nodeValue)&&(e[oe]=n,e.nodeValue=`${n}`)}function Wr(e,t){return Kr(e,t)}var Gr=new Map;function Kr(e,{target:t,anchor:n,props:r={},events:a,context:o,intro:s=!0,transformError:c}){ln();var l=void 0,u=jn(()=>{var s=n??t.appendChild(un());Mt(s,{pending:()=>{}},t=>{Ge({});var n=Ue;if(o&&(n.c=o),a&&(r.$$events=a),ke&&zr(t,null),l=e(t,r)||{},ke&&(tr.nodes.end=je,je===null||je.nodeType!==8||je.data!==`]`))throw Ee(),Se;Ke()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=Dr(r);for(let e of[t,document]){var a=Gr.get(e);a===void 0&&(a=new Map,Gr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,Fr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(i(kr)),Ar.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Gr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Fr),r.delete(e),r.size===0&&Gr.delete(n)):r.set(e,i)}Ar.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return qr.set(l,u),l}var qr=new WeakMap,Jr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Gn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Gn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Bn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();qn(r,t),t.append(un()),this.#n.set(e,{effect:r,fragment:t})}else Bn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Un(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Bn(n.effect),this.#n.delete(e))};ensure(e,t){var n=ut,r=mn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=un();i.append(a),this.#n.set(e,{effect:In(()=>t(a)),fragment:i})}else this.#t.set(e,In(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else ke&&(this.anchor=je),this.#a(n)}};function q(e,t,n=!1){var r;ke&&(r=je,Ne());var i=new Jr(e),a=n?C:0;function o(e,t){if(ke){var n=Ie(r);if(e!==parseInt(n.substring(1))){var a=Fe();Me(a),i.anchor=a,Ae(!1),i.ensure(e,t),Ae(!0);return}}i.ensure(e,t)}Fn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Yr(e,t){return t}function Xr(e,t,n){for(var r=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Un(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Zr(e,i(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;pn(d),d.append(u),e.items.clear()}Zr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Zr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=E,qn(a,document.createDocumentFragment())):Bn(t[i],n)}}var Qr;function J(e,n,r,a,o,s=null){var c=e,l=new Map;if(n&4){var u=e;c=ke?Me(dn(u)):u.appendChild(un())}ke&&Ne();var d=null,f=Vt(()=>{var e=r();return t(e)?e:e==null?[]:i(e)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,ei(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=E,ni(d,null,c)):Gn(d):Un(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Fn(()=>{p=H(f);var e=p.length;let t=!1;ke&&Ie(c)===`[!`!=(e===0)&&(c=Fe(),Me(c),Ae(!1),t=!0);for(var i=new Set,u=ut,v=mn(),y=0;y<e;y+=1){ke&&je.nodeType===8&&je.data===`]`&&(c=je,t=!0,Ae(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&Qt(S.v,b),S.i&&Qt(S.i,y),v&&u.unskip_effect(S.e)):(S=ti(l,h?c:Qr??=un(),b,x,y,o,n,r),h||(S.e.f|=E),l.set(x,S)),i.add(x)}if(e===0&&s&&!d&&(h?d=In(()=>s(c)):(d=In(()=>s(Qr??=un())),d.f|=E)),e>i.size&&fe(``,``,``),ke&&e>0&&Me(Fe()),!h)if(m.set(u,i),v){for(let[e,t]of l)i.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&Ae(!0),H(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,ke&&(c=je)}function $r(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function ei(e,t,n,r,a){var o=(r&8)!=0,s=t.length,c=e.items,l=$r(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Gn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=E,_===l)ni(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),ri(e,d,_),ri(e,_,y),ni(_,y,n),d=_,p=[],m=[],l=$r(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)ni(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);ri(e,S.prev,C.next),ri(e,d,S),ri(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),ni(_,l,n),ri(e,_.prev,_.next),ri(e,_,d===null?e.effect.first:d.next),ri(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=$r(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=$r(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Zr(e,i(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=$r(l.next);var T=w.length;if(T>0){var D=r&4&&s===0?n:null;if(o){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}Xr(e,w,D)}}o&&Xe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function ti(e,t,n,r,i,a,o,s){var c=o&1?o&16?Xt(n):Zt(n,!1,!1):null,l=o&2?Xt(i):null;return{v:c,i:l,e:In(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function ni(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=fn(r);if(a.before(r),r===i)return;r=o}}function ri(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function ii(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;ke&&(o=Me(dn(c)))}V(()=>{var e=tr;if(s===(s=t()??``)){ke&&Ne();return}if(n&&!ke){e.nodes=null,c.innerHTML=s,s!==``&&zr(dn(c),c.lastChild);return}if(e.nodes!==null&&(Vn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(ke){for(var a=je.data,l=Ne(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=fn(l);if(l===null)throw Ee(),Se;zr(je,u),o=Me(l);return}var d=hn(r?`svg`:i?`math`:`template`,r?M:i?we:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(zr(dn(f),f.lastChild),r||i)for(;dn(f);)o.before(dn(f));else o.before(f)}})}function ai(e,t,...n){var r=new Jr(e);Fn(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},C)}function oi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=oi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function si(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=oi(e))&&(r&&(r+=` `),r+=t);return r}function ci(e){return typeof e==`object`?si(e):e??``}var li=[...`
|
|
2
|
-
\r\f\xA0\v`];function ui(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||li.includes(r[o-1]))&&(s===r.length||li.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function di(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function fi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function pi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(fi)),i&&c.push(...Object.keys(i).map(fi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=fi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=di(r)),i&&(n+=di(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function mi(e,t,n,r,i,a){var o=e[ie];if(ke||o!==n||o===void 0){var s=ui(n,r,a);(!ke||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ie]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function hi(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function gi(e,t,n,r){var i=e[ae];if(ke||i!==t){var a=pi(t,r);(!ke||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ae]=t}else r&&(Array.isArray(r)?(hi(e,n?.[0],r[0]),hi(e,n?.[1],r[1],`important`)):hi(e,n,r));return r}function _i(e,n,r=!1){if(e.multiple){if(n==null)return;if(!t(n))return De();for(var i of e.options)i.selected=n.includes(bi(i));return}for(i of e.options)if(rn(bi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(e.selectedIndex=-1)}function vi(e){var t=new MutationObserver(()=>{_i(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Dn(()=>{t.disconnect()})}function yi(e,t,n=t){var r=new WeakSet,i=!0;Sn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),bi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&bi(o)}n(a),e.__value=a,ut!==null&&r.add(ut)}),Mn(()=>{var a=t();if(e===document.activeElement){var o=Be?dt:ut;if(r.has(o))return}if(_i(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=bi(s),n(a))}e.__value=a,i=!1}),vi(e)}function bi(e){return`__value`in e?e.__value:e.value}var xi=Symbol(`is custom element`),Si=Symbol(`is html`),Ci=le?`link`:`LINK`,wi=le?`progress`:`PROGRESS`;function Ti(e){if(ke){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Y(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Y(e,`checked`,null),e.checked=r}}};e[se]=n,Xe(n),bn()}}function Ei(e,t){var n=Oi(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==wi)||(e.value=t??``)}function Di(e,t){var n=Oi(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Y(e,t,n,r){var i=Oi(e);ke&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Ci)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ne]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Ai(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Oi(e){return e[re]??={[xi]:e.nodeName.includes(`-`),[Si]:e.namespaceURI===Ce}}var ki=new Map;function Ai(e){var t=e.getAttribute(`is`)||e.nodeName,n=ki.get(t);if(n)return n;ki.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=s(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=u(i)}return n}function ji(e,t,n=t){var r=new WeakSet;Sn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ni(e)?Pi(a):a,n(a),ut!==null&&r.add(ut),await br(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(ke&&e.defaultValue!==e.value||Cr(t)==null&&e.value)&&(n(Ni(e)?Pi(e.value):e.value),ut!==null&&r.add(ut)),Pn(()=>{var n=t();if(e===document.activeElement){var i=Be?dt:ut;if(r.has(i))return}Ni(e)&&n===Pi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Mi(e,t,n=t){Sn(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(ke&&e.defaultChecked!==e.checked||Cr(t)==null)&&n(e.checked),Pn(()=>{e.checked=!!t()})}function Ni(e){var t=e.type;return t===`number`||t===`range`}function Pi(e){return e===``?null:+e}function Fi(e,t){return e===t||e?.[A]===t}function Ii(e={},t,n,r){var i=Ue.r,a=tr;return Mn(()=>{var o,s;return Pn(()=>{o=s,s=r?.()||[],Cr(()=>{Fi(n(...s),e)||(t(e,...s),o&&Fi(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Fi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Li(e=!1){let t=Ue,n=t.l.u;if(!n)return;let r=()=>wr(t.s);if(e){let e=0,n={},i=Rt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&An(()=>{Ri(t,r),m(n.b)}),On(()=>{let e=Cr(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&On(()=>{Ri(t,r),m(n.a)})}function Ri(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function zi(e,t,n,r){var i=!Ve||(n&2)!=0,a=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Rt(r),H(u)):(l&&(l=!1,c=s?Cr(r):r),c);let f;if(a){var p=A in e||te in e;f=o(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=st(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&_e(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Rt:Vt)(()=>(v=!1,g()));a&&H(y);var b=tr;return(function(e,t){if(arguments.length>0){let n=t?H(y):i&&a?L(e):e;return I(y,n),v=!0,c!==void 0&&(c=n),e}return Xn&&v||b.f&16384?y.v:H(y)})}function Bi(e){Ue===null&&ue(`onMount`),Ve&&Ue.l!==null?Vi(Ue).m.push(e):On(()=>{let t=Cr(e);if(typeof t==`function`)return t})}function Vi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var Hi=W(`<section class="config-section"><header class="config-section-header"><h3 class="config-section-title"><span aria-hidden="true"> </span> </h3> <p class="config-section-desc"> </p></header> <div class="config-section-body"><!></div></section>`);function Ui(e,t){var n=Hi(),r=R(n),i=R(r),a=R(i),o=R(a,!0);N(a);var s=B(a);N(i);var c=B(i,2),l=R(c,!0);N(c),N(r);var u=B(r,2);ai(R(u),()=>t.children),N(u),N(n),V(()=>{K(o,t.icon),K(s,` ${t.title??``}`),K(l,t.description)}),G(e,n)}var Wi=W(`<p class="browser-msg">Loading…</p>`),Gi=W(`<p class="browser-msg browser-msg--error">Cannot read directory</p>`),Ki=W(`<p class="browser-msg">Empty directory</p>`),qi=W(`<button type="button" class="browser-row browser-row--dir"><span>📁</span><span> </span></button>`),Ji=W(`<span class="badge-added">Added</span>`),Yi=W(`<button type="button" class="link-btn">+ Add</button>`),Xi=W(`<div class="browser-row browser-row--file"><span class="browser-row-name"><span>📄</span><span> </span></span> <!></div>`),Zi=W(`<!> <!>`,1),Qi=W(`<p class="field-hint" style="font-style:italic">No extra files added yet.</p>`),$i=W(`<div class="extra-file-row"><div class="extra-file-arrows"><button type="button">↑</button> <button type="button">↓</button></div> <span class="extra-file-path"> </span> <button type="button" class="remove-btn">Remove</button></div>`),ea=W(`<div class="extra-files-list"></div>`),ta=W(`<div class="field-group"><p class="field-label">General — Extra Files</p> <p class="field-hint">Add Markdown files from outside the docs folder to the General section.</p> <div class="file-browser"><div class="file-browser-toolbar"><button type="button" class="link-btn">↑ Up</button> <span class="file-browser-path"> </span></div> <div class="file-browser-list"><!></div></div> <p class="field-label" style="margin-top:1rem">Added files</p> <!></div>`);function na(e,t){Ge(t,!0);let n=F(``),r=F(null),i=F(L([])),a=F(L([])),o=F(!1),s=F(!1);function c(e,t){if(!e)return t;let n=e=>e.replace(/\\/g,`/`),r=n(e).split(`/`).filter(Boolean),i=n(t).split(`/`).filter(Boolean),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=r.length-a,s=i.slice(a).join(`/`),c=`../`.repeat(o)+s;return c.endsWith(`/`)&&(c=c.slice(0,-1)),c===``?`.`:c}function l(e){return t.docsFolder?`$DOCS_FOLDER/`+c(t.docsFolder,e):e}async function u(e){I(o,!0),I(s,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(n,t.current,!0),I(r,t.parent,!0),I(i,t.dirs,!0),I(a,t.files,!0)}catch{I(s,!0)}finally{I(o,!1)}}function d(){H(r)&&u(H(r))}async function f(e){if(t.extraFiles.includes(e))return;let r=[...t.extraFiles,e];await h(r),t.onchange(r),u(H(n))}async function p(e){let r=t.extraFiles.filter(t=>t!==e);await h(r),t.onchange(r),u(H(n))}async function m(e,n){let r=e+n;if(r<0||r>=t.extraFiles.length)return;let i=[...t.extraFiles];[i[e],i[r]]=[i[r],i[e]],await h(i),t.onchange(i)}async function h(e){let n=e.map(e=>c(t.docsFolder,e));await fetch(`/api/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({extraFiles:n})})}var g={loadBrowse:u},_=ta(),v=B(R(_),4),y=R(v),b=R(y),x=B(b,2),S=R(x,!0);N(x),N(y);var C=B(y,2),w=R(C),T=e=>{G(e,Wi())},E=e=>{G(e,Gi())},D=e=>{G(e,Ki())},O=e=>{var n=Zi(),r=z(n);J(r,17,()=>H(i),Yr,(e,t)=>{var n=qi(),r=B(R(n)),i=R(r,!0);N(r),N(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>u(H(t).path)),G(e,n)}),J(B(r,2),17,()=>H(a),Yr,(e,n)=>{var r=Xi(),i=R(r),a=B(R(i)),o=R(a,!0);N(a),N(i);var s=B(i,2),c=e=>{G(e,Ji())},l=P(()=>t.extraFiles.includes(H(n).path)),u=e=>{var t=Yi();U(`click`,t,()=>f(H(n).path)),G(e,t)};q(s,e=>{H(l)?e(c):e(u,-1)}),N(r),V(()=>K(o,H(n).name)),G(e,r)}),G(e,n)};q(w,e=>{H(o)?e(T):H(s)?e(E,1):H(i).length===0&&H(a).length===0?e(D,2):e(O,-1)}),N(C),N(v);var k=B(v,4),ee=e=>{G(e,Qi())},A=e=>{var n=ea();J(n,21,()=>t.extraFiles,Yr,(e,n,r)=>{var i=$i(),a=R(i),o=R(a);o.disabled=r===0;var s=B(o,2);N(a);var c=B(a,2),u=R(c,!0);N(c);var d=B(c,2);N(i),V(e=>{s.disabled=r===t.extraFiles.length-1,Y(c,`title`,H(n)),K(u,e)},[()=>l(H(n))]),U(`click`,o,()=>m(r,-1)),U(`click`,s,()=>m(r,1)),U(`click`,d,()=>p(H(n))),G(e,i)}),N(n),G(e,n)};return q(k,e=>{t.extraFiles.length===0?e(ee):e(A,-1)}),N(_),V(e=>{b.disabled=!H(r),K(S,e)},[()=>l(H(n))]),U(`click`,b,d),G(e,_),Ke(g)}Nr([`click`]);var ra=W(`<div class="swatch-wrap"><div class="swatch"></div> <input type="color" class="swatch-input"/></div>`),ia=W(`<div class="edge-swatch-wrap"><div class="edge-swatch"></div> <button type="button" class="remove-swatch-btn">✕</button></div>`),aa=W(`<div class="palette-group"><div class="palette-header"><span class="field-label">Shape colors</span> <button type="button" class="link-btn">Reset</button></div> <p class="field-hint">Click a color to change it.</p> <div class="swatches"></div></div> <div class="palette-group" style="margin-top:1.5rem"><div class="palette-header"><span class="field-label">Arrow colors</span> <button type="button" class="link-btn">Reset</button></div> <p class="field-hint">Click ✕ to remove a color.</p> <div class="swatches" style="align-items:flex-end"></div> <div class="add-color-row"><input type="color" class="color-input"/> <button type="button" class="btn-primary btn-sm">Add color</button></div></div>`,1);function oa(e,t){Ge(t,!0);let n=zi(t,`nodePalette`,15),r=zi(t,`edgePalette`,15),i={"c-white":{bg:`#ffffff`,border:`#dbd5d1`,label:`White`},"c-gray":{bg:`#f5f5f4`,border:`#a8a29e`,label:`Gray`},"c-slate":{bg:`#f1f5f9`,border:`#64748b`,label:`Slate`},"c-blue":{bg:`#dbeafe`,border:`#3b82f6`,label:`Blue`},"c-sky":{bg:`#e0f2fe`,border:`#0ea5e9`,label:`Sky`},"c-cyan":{bg:`#cffafe`,border:`#06b6d4`,label:`Cyan`},"c-teal":{bg:`#ccfbf1`,border:`#14b8a6`,label:`Teal`},"c-green":{bg:`#dcfce7`,border:`#22c55e`,label:`Green`},"c-lime":{bg:`#ecfccb`,border:`#84cc16`,label:`Lime`},"c-amber":{bg:`#fef9c3`,border:`#f59e0b`,label:`Amber`},"c-orange":{bg:`#ffedd5`,border:`#f97316`,label:`Orange`},"c-red":{bg:`#fee2e2`,border:`#ef4444`,label:`Red`},"c-rose":{bg:`#ffe4e6`,border:`#f43f5e`,label:`Rose`},"c-pink":{bg:`#fce7f3`,border:`#ec4899`,label:`Pink`},"c-purple":{bg:`#ede9fe`,border:`#8b5cf6`,label:`Purple`}},a={"c-gray":.667,"c-slate":.488,"c-blue":.645,"c-sky":.518,"c-cyan":.473,"c-teal":.448,"c-green":.489,"c-lime":.496,"c-amber":.57,"c-orange":.578,"c-red":.64,"c-rose":.636,"c-pink":.638,"c-purple":.694},o=Object.keys(i),s=[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],c=F(`#3b82f6`);function l(e,t=.6){let n=parseInt(e.slice(1,3),16)/255,r=parseInt(e.slice(3,5),16)/255,i=parseInt(e.slice(5,7),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2,c=a-o,l=0,u=0;c>0&&(u=s>.5?c/(2-a-o):c/(a+o),l=a===n?((r-i)/c+(r<i?6:0))/6:a===r?((i-n)/c+2)/6:((n-r)/c+4)/6);function d(e,t,n){let r,i,a;if(t===0)r=i=a=n;else{let o=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),s=n<.5?n*(1+t):n+t-n*t,c=2*n-s;r=o(c,s,e+1/3),i=o(c,s,e),a=o(c,s,e-1/3)}return`#`+[r,i,a].map(e=>Math.max(0,Math.min(255,Math.round(e*255))).toString(16).padStart(2,`0`)).join(``)}return{bg:e,border:d(l,u,s*t)}}function u(e,t){let n=i[e];return t===n.bg?n.border:l(t,a[e]||.6).border}function d(){n(o.map(e=>i[e].bg))}function f(){r([...s])}function p(){let e=H(c).toLowerCase();r().includes(e)||r([...r(),e])}function m(e){r().length<=1||r(r().filter((t,n)=>n!==e))}var h=aa(),g=z(h),_=R(g),v=B(R(_),2);N(_);var y=B(_,4);J(y,21,()=>o,Yr,(e,t,r)=>{let a=P(()=>n()[r]||i[H(t)].bg),o=P(()=>u(H(t),H(a)));var s=ra(),c=R(s),l=B(c,2);Ti(l),N(s),V(()=>{Y(s,`title`,i[H(t)].label),gi(c,`background:${H(a)??``};border-color:${H(o)??``}`),Ei(l,H(a))}),U(`input`,l,e=>{n(n()[r]=e.target.value.toLowerCase(),!0)}),G(e,s)}),N(y),N(g);var b=B(g,2),x=R(b),S=B(R(x),2);N(x);var C=B(x,4);J(C,21,r,Yr,(e,t,n)=>{var r=ia(),i=R(r),a=B(i,2);N(r),V(()=>gi(i,`background:${H(t)??``}`)),U(`click`,a,()=>m(n)),G(e,r)}),N(C);var w=B(C,2),T=R(w);Ti(T);var E=B(T,2);N(w),N(b),U(`click`,v,d),U(`click`,S,f),ji(T,()=>H(c),e=>I(c,e)),U(`click`,E,p),G(e,h),Ke()}Nr([`click`,`input`]);var sa=W(`<a class="ghost-button"> </a>`),ca=W(`<header class="topbar"><div class="brand-lockup"><span class="brand-mark">LD</span> <div><h1> </h1> <p> </p></div></div> <!> <div class="topbar-right"><!> <!></div></header>`);function la(e,t){Ge(t,!0);let n=zi(t,`nav`,19,()=>[]),r=window.location.pathname,i=P(()=>[...n(),{label:`Workspace`,href:`/workspace`},{label:`Agents`,href:`/agents`},{label:`Blueprint`,href:`/blueprint`},{label:`Diagram`,href:`/diagram`},{label:`Files`,href:`/files`},{label:`Survival Kit`,href:`/survival-kit`},{label:`AI Context`,href:`/context`},{label:`Admin`,href:`/admin`},{label:`Home`,href:`/`}].filter(e=>e.href!==r));var a=ca(),o=R(a),s=B(R(o),2),c=R(s),l=R(c,!0);N(c);var u=B(c,2),d=R(u,!0);N(u),N(s),N(o);var f=B(o,2),p=e=>{var n=Ur();ai(z(n),()=>t.children),G(e,n)};q(f,e=>{t.children&&e(p)});var m=B(f,2),h=R(m);J(h,17,()=>H(i),Yr,(e,t)=>{var n=sa(),r=R(n,!0);N(n),V(()=>{Y(n,`href`,H(t).href),K(r,H(t).label)}),G(e,n)});var g=B(h,2),_=e=>{var n=Ur();ai(z(n),()=>t.actions),G(e,n)};q(g,e=>{t.actions&&e(_)}),N(m),N(a),V(()=>{K(l,t.title),K(d,t.subtitle)}),G(e,a),Ke()}var ua=F(L({}));async function da(e){try{let t=await fetch(`/i18n/${e||`en`}.json`);t.ok&&I(ua,await t.json(),!0)}catch{}}function X(e,t){let n=H(ua)[e]===void 0?e:H(ua)[e];if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{${e}}`,r);return n}var fa=W(`<span> </span>`),pa=W(`<div class="field-row"><div class="info-item"><dt class="info-label"> </dt> <dd class="info-value"> </dd></div> <div class="info-item"><dt class="info-label"> </dt> <dd class="info-value"> </dd></div></div> <div class="field-group"><label class="field-label" for="field-title"> </label> <input id="field-title" type="text" class="field-input"/> <p class="field-hint"> </p></div> <div class="field-group"><label class="field-label" for="field-theme"> </label> <select id="field-theme" class="field-input"><option> </option><option> </option><option> </option></select> <p class="field-hint"> </p></div> <div class="field-group"><label class="field-label" for="field-language"> </label> <select id="field-language" class="field-input"><option> </option><option> </option></select> <p class="field-hint"> </p></div>`,1),ma=W(`<div class="pattern-row"><p class="pattern-filename"> </p> <div class="pattern-cols"><div><span class="pattern-col-label"> </span> <span> </span></div> <div><span class="pattern-col-label"> </span> <span class="pattern-value--cat"> </span></div> <div><span class="pattern-col-label"> </span> <span class="pattern-value--title"> </span></div></div></div>`),ha=W(`<div class="field-group"><label class="field-label" for="field-pattern"> </label> <input id="field-pattern" type="text" class="field-input"/> <p class="field-hint"> <code> </code></p></div> <div class="pattern-preview"><h4 class="pattern-preview-title"> </h4> <p class="field-hint"> </p> <div class="pattern-rows"></div></div>`,1),ga=W(`<div class="field-group"><label class="field-label" for="field-source-root"> </label> <input id="field-source-root" type="text" class="field-input field-input--mono" placeholder=".."/> <p class="field-hint"> </p></div> <!>`,1),_a=W(`<div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`,1),va=W(`<div class="field-group"><label class="field-label" for="field-code-max-height"> </label> <input id="field-code-max-height" type="number" class="field-input" min="0" max="5000" step="10" placeholder="400"/> <p class="field-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"></p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`,1),ya=W(`<div class="field-group"><label class="field-label" for="field-blocked"> </label> <textarea id="field-blocked" class="field-input field-input--mono" placeholder="exe sh bat cmd com scr ps1 msi"></textarea> <p class="field-hint"> </p></div>`),ba=W(`<div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`),xa=W(`<div class="app-shell"><!> <div class="admin-scroll"><form class="admin-form" novalidate=""><div class="save-bar"><div class="save-bar-inner"><div><h2 class="save-bar-title"> </h2> <p class="save-bar-desc"> </p></div> <div class="save-bar-actions"><!> <button type="submit" class="btn-primary"> </button></div></div></div> <div class="admin-sections"><!> <!> <!> <!> <!> <!> <!> <!></div></form> <div class="admin-sections"><div class="license-card"><div class="license-banner"><span class="license-icon">📖</span> <div><h3 class="license-title"> </h3> <p class="license-subtitle"> </p></div></div> <div class="license-body"><p></p> <div class="license-links"><a href="https://www.linkedin.com/in/youssef-medaghri-alaoui-93b2922/" target="_blank" rel="noopener noreferrer" class="license-btn license-btn--linkedin"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.13 1.44-2.13 2.93v5.68H9.37V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.35-1.85 3.58 0 4.24 2.36 4.24 5.43v6.31ZM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.12 20.45H3.56V9h3.56v11.45ZM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45C23.2 24 24 23.23 24 22.28V1.72C24 .77 23.2 0 22.22 0Z"></path></svg> </a> <a href="https://www.npmjs.com/package/living-ai-documentation" target="_blank" rel="noopener noreferrer" class="license-btn license-btn--npm"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M0 0v24h24V0H0Zm19.2 19.2H13.6V8h-3.2v11.2H4.8V4.8h14.4v14.4Z"></path></svg> </a></div></div></div></div></div></div>`);function Sa(e,t){Ge(t,!0);let n=F(``),r=F(``),i=F(``),a=F(`system`),o=F(`en`),s=F(``),c=F(``),l=F(!1),u=F(!1),d=F(400),f=F(!1),p=F(!1),m=F(!1),h=F(!1),g=F(!1),_=F(``),v=F(L([])),y=F(L([])),b=F(L([])),x=F(null),S=null,C=F(null),w=[`2024_01_15_09_30_[DevOps]_deploy_pipeline.md`,`2023_11_03_14_45_[Frontend]_react_hooks_guide.md`,`2025_06_20_08_00_meeting_notes.md`,`readme.md`];function T(e){let t=e.split(`_`);return t.length===5?`${t[0]}-${t[1]}-${t[2]}T${t[3]}:${t[4]}`:`${t[0]}-${t[1]}-${t[2]}`}function E(e){e||=`YYYY_MM_DD_HH_mm_[Category]_title`;let t=/YYYY.*MM.*DD/.test(e),n=t&&/HH.*mm/.test(e),r=/\[Category\]/i.test(e),i=n?`(\\d{4}_\\d{2}_\\d{2}(?:_\\d{2}_\\d{2})?)`:`(\\d{4}_\\d{2}_\\d{2})`,a=`\\[([^\\]]+)\\]`,o=t&&r&&e.search(/\[Category\]/i)<e.search(/YYYY/i),s=null,c=null;if(t&&r){let e=o?`${a}_${i}`:`${i}_${a}`;s=RegExp(`^`+e+`_(.+)\\.md$`,`i`),c=RegExp(`^`+i+`_(.+)\\.md$`,`i`)}else t?c=RegExp(`^`+i+`_(.+)\\.md$`,`i`):r&&(s=RegExp(`^\\[([^\\]]+)\\]_(.+)\\.md$`,`i`));return{full:s,dateOnly:c,hasDate:t,hasCategory:r,catBeforeDate:o}}function D(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function O(e,t){if(t.full){let n=e.match(t.full);if(n){if(t.hasDate&&t.hasCategory){let e=t.catBeforeDate?n[2]:n[1],r=t.catBeforeDate?n[1]:n[2];return{date:T(e),category:r,title:D(n[3]),match:!0}}else if(t.hasCategory)return{date:null,category:n[1],title:D(n[2]),match:!0}}}if(t.dateOnly){let n=e.match(t.dateOnly);if(n)return{date:T(n[1]),category:`General`,title:D(n[2]),match:!0}}return{date:null,category:`General`,title:e.replace(`.md`,``),match:!1}}let k=P(()=>w.map(e=>({filename:e,...O(e,E(H(s)))})));function ee(e){return/^([/\\]|[a-zA-Z]:[\\/]|~)/.test(e)}function A(e,t){if(!e)return t;let n=e=>e.replace(/\\/g,`/`),r=n(e).split(`/`).filter(Boolean),i=n(t).split(`/`).filter(Boolean),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=r.length-a,s=i.slice(a).join(`/`),c=`../`.repeat(o)+s;return c.endsWith(`/`)&&(c=c.slice(0,-1)),c===``?`.`:c}async function te(){try{let e=await fetch(`/api/config`).then(e=>e.json());I(n,e.docsFolder||``,!0),I(r,e.port||``,!0),I(i,e.title||``,!0),I(a,e.theme||`system`,!0),I(o,e.language||`en`,!0),await da(H(o)),I(s,e.filenamePattern||``,!0),I(c,e.docsFolder&&e.sourceRoot?A(e.docsFolder,e.sourceRoot):``,!0),I(l,!!e.exclusiveFolderExpansion),I(u,!!e.exclusiveCategoryExpansion),I(d,typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,!0),I(f,!!e.markdownSoftBreaks),I(p,!!e.imageRoundedCorners),I(m,!!e.imageCentered),I(h,!!e.imageBorder),I(g,!!e.codeBlockLightTheme),I(_,(e.blockedFileExtensions||[]).join(` `),!0),I(v,e.extraFiles||[],!0);let t=[`c-white`,`c-gray`,`c-slate`,`c-blue`,`c-sky`,`c-cyan`,`c-teal`,`c-green`,`c-lime`,`c-amber`,`c-orange`,`c-red`,`c-rose`,`c-pink`,`c-purple`],x={"c-white":`#ffffff`,"c-gray":`#f5f5f4`,"c-slate":`#f1f5f9`,"c-blue":`#dbeafe`,"c-sky":`#e0f2fe`,"c-cyan":`#cffafe`,"c-teal":`#ccfbf1`,"c-green":`#dcfce7`,"c-lime":`#ecfccb`,"c-amber":`#fef9c3`,"c-orange":`#ffedd5`,"c-red":`#fee2e2`,"c-rose":`#ffe4e6`,"c-pink":`#fce7f3`,"c-purple":`#ede9fe`};I(y,Array.isArray(e.diagramNodePalette)&&e.diagramNodePalette.length?t.map((t,n)=>e.diagramNodePalette[n]||x[t]):t.map(e=>x[e]),!0),I(b,Array.isArray(e.diagramEdgePalette)&&e.diagramEdgePalette.length?[...e.diagramEdgePalette]:[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],!0),H(C).loadBrowse(e.docsFolder||`/`)}catch{re(`Failed to load configuration.`,`error`)}}async function ne(e){e.preventDefault();let t=H(s).trim();if(t){let e=(t.match(/\[Category\]/gi)||[]).length;if(e===0){re(`Pattern must include [Category].`,`error`);return}if(e>1){re(`Pattern must include [Category] only once.`,`error`);return}}if(H(c)!==``&&ee(H(c))){re(`Source root must be a relative path.`,`error`);return}let n=H(_).split(/[\s,]+/).map(e=>e.trim().replace(/^\.+/,``).toLowerCase()).filter(e=>/^[a-z0-9]+$/.test(e)),r={title:H(i),theme:H(a),language:H(o),filenamePattern:t,exclusiveFolderExpansion:H(l),exclusiveCategoryExpansion:H(u),codeBlockMaxHeight:Math.max(0,Math.min(5e3,H(d)||0)),markdownSoftBreaks:H(f),imageRoundedCorners:H(p),imageCentered:H(m),imageBorder:H(h),codeBlockLightTheme:H(g),diagramNodePalette:[...H(y)],diagramEdgePalette:[...H(b)],sourceRoot:H(c)===``?null:H(c),blockedFileExtensions:n};try{let e=await fetch(`/api/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(!e.ok)throw Error(await e.text());re(`Settings saved.`,`ok`)}catch(e){re(`Save failed: `+(e instanceof Error?e.message:String(e)),`error`)}}function re(e,t){I(x,{text:e,type:t},!0),S&&clearTimeout(S),t===`ok`&&(S=window.setTimeout(()=>{I(x,null)},3e3))}Bi(()=>{te()});var ie=xa(),ae=R(ie);{let e=P(()=>X(`admin.title`)),t=P(()=>X(`admin.config.title`));la(ae,{get title(){return H(e)},get subtitle(){return H(t)}})}var oe=B(ae,2),se=R(oe),ce=R(se),le=R(ce),ue=R(le),de=R(ue),fe=R(de,!0);N(de);var pe=B(de,2),me=R(pe,!0);N(pe),N(ue);var he=B(ue,2),ge=R(he),_e=e=>{var t=fa(),n=R(t,!0);N(t),V(()=>{mi(t,1,`save-msg save-msg--${H(x).type??``}`),K(n,H(x).text)}),G(e,t)};q(ge,e=>{H(x)&&e(_e)});var ve=B(ge,2),ye=R(ve,!0);N(ve),N(he),N(le),N(ce);var be=B(ce,2),xe=R(be);{let e=P(()=>X(`admin.section.general.title`)),t=P(()=>X(`admin.section.general.desc`));Ui(xe,{icon:`🌐`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var s=pa(),c=z(s),l=R(c),u=R(l),d=R(u,!0);N(u);var f=B(u,2),p=R(f,!0);N(f),N(l);var m=B(l,2),h=R(m),g=R(h,!0);N(h);var _=B(h,2),v=R(_,!0);N(_),N(m),N(c);var y=B(c,2),b=R(y),x=R(b,!0);N(b);var S=B(b,2);Ti(S);var C=B(S,2),w=R(C,!0);N(C),N(y);var T=B(y,2),E=R(T),D=R(E,!0);N(E);var O=B(E,2),k=R(O),ee=R(k,!0);N(k),k.value=k.__value=`system`;var A=B(k),te=R(A,!0);N(A),A.value=A.__value=`light`;var ne=B(A),re=R(ne,!0);N(ne),ne.value=ne.__value=`dark`,N(O);var ie=B(O,2),ae=R(ie,!0);N(ie),N(T);var oe=B(T,2),se=R(oe),ce=R(se,!0);N(se);var le=B(se,2),ue=R(le),de=R(ue,!0);N(ue),ue.value=ue.__value=`en`;var fe=B(ue),pe=R(fe,!0);N(fe),fe.value=fe.__value=`fr`,N(le);var me=B(le,2),he=R(me,!0);N(me),N(oe),V((e,t,i,a,o,s,c,l,u,f,m,h,_,y)=>{K(d,e),K(p,H(n)||`—`),K(g,t),K(v,H(r)||`—`),K(x,i),Y(S,`placeholder`,a),K(w,o),K(D,s),K(ee,c),K(te,l),K(re,u),K(ae,f),K(ce,m),K(de,h),K(pe,_),K(he,y)},[()=>X(`admin.server_info.docs_folder`),()=>X(`admin.server_info.port`),()=>X(`admin.appearance.site_title_label`),()=>X(`admin.appearance.site_title_placeholder`),()=>X(`admin.appearance.site_title_hint`),()=>X(`admin.appearance.theme_label`),()=>X(`admin.appearance.theme_system`),()=>X(`admin.appearance.theme_light`),()=>X(`admin.appearance.theme_dark`),()=>X(`admin.appearance.theme_hint`),()=>X(`admin.appearance.language_label`),()=>X(`admin.appearance.language_en`),()=>X(`admin.appearance.language_fr`),()=>X(`admin.appearance.language_hint`)]),ji(S,()=>H(i),e=>I(i,e)),yi(O,()=>H(a),e=>I(a,e)),U(`change`,le,()=>da(H(o))),yi(le,()=>H(o),e=>I(o,e)),G(e,s)},$$slots:{default:!0}})}var Se=B(xe,2);{let e=P(()=>X(`admin.section.filename.title`)),t=P(()=>X(`admin.section.filename.desc`));Ui(Se,{icon:`📝`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ha(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ti(o);var c=B(o,2),l=R(c),u=B(l),d=R(u,!0);N(u),N(c),N(r);var f=B(r,2),p=R(f),m=R(p,!0);N(p);var h=B(p,2),g=R(h,!0);N(h);var _=B(h,2);J(_,21,()=>H(k),Yr,(e,t)=>{var n=ma(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a),s=R(o),c=R(s,!0);N(s);var l=B(s,2),u=R(l,!0);N(l),N(o);var d=B(o,2),f=R(d),p=R(f,!0);N(f);var m=B(f,2),h=R(m,!0);N(m),N(d);var g=B(d,2),_=R(g),v=R(_,!0);N(_);var y=B(_,2),b=R(y,!0);N(y),N(g),N(a),N(n),V((e,n,r,a)=>{K(i,H(t).filename),K(c,e),mi(l,1,ci(H(t).date?`pattern-value--date`:`pattern-value--none`)),K(u,n),K(p,r),K(h,H(t).category),K(v,a),K(b,H(t).title)},[()=>X(`admin.pattern.col_date`),()=>H(t).date||X(`admin.pattern.col_none`),()=>X(`admin.pattern.col_category`),()=>X(`admin.pattern.col_title`)]),G(e,n)}),N(_),N(f),V((e,t,n,r,i)=>{K(a,e),Y(o,`placeholder`,t),K(l,`${n??``} `),K(d,(H(s)||`YYYY_MM_DD_HH_mm_[Category]_title`)+`.md`),K(m,r),K(g,i)},[()=>X(`admin.pattern.label`),()=>X(`admin.pattern.placeholder`),()=>X(`admin.pattern.hint`),()=>X(`admin.pattern.preview_title`),()=>X(`admin.pattern.preview_desc`)]),ji(o,()=>H(s),e=>I(s,e)),G(e,n)},$$slots:{default:!0}})}var j=B(Se,2);{let e=P(()=>X(`admin.section.source.title`)),t=P(()=>X(`admin.section.source.desc`));Ui(j,{icon:`📂`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var r=ga(),i=z(r),a=R(i),o=R(a,!0);N(a);var s=B(a,2);Ti(s);var l=B(s,2),u=R(l,!0);N(l),N(i),Ii(na(B(i,2),{get docsFolder(){return H(n)},get extraFiles(){return H(v)},onchange:e=>I(v,e,!0)}),e=>I(C,e,!0),()=>H(C)),V((e,t)=>{K(o,e),K(u,t)},[()=>X(`admin.server_info.source_root`),()=>X(`admin.server_info.source_root_hint`)]),ji(s,()=>H(c),e=>I(c,e)),G(e,r)},$$slots:{default:!0}})}var Ce=B(j,2);{let e=P(()=>X(`admin.section.sidebar.title`)),t=P(()=>X(`admin.section.sidebar.desc`));Ui(Ce,{icon:`🗂️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=_a(),r=z(n),i=R(r),a=R(i);Ti(a);var o=B(a,2),s=R(o,!0);N(o),N(i);var c=B(i,2),d=R(c,!0);N(c),N(r);var f=B(r,2),p=R(f),m=R(p);Ti(m);var h=B(m,2),g=R(h,!0);N(h),N(p);var _=B(p,2),v=R(_,!0);N(_),N(f),V((e,t,n,r)=>{K(s,e),K(d,t),K(g,n),K(v,r)},[()=>X(`admin.appearance.exclusive_folder_label`),()=>X(`admin.appearance.exclusive_folder_hint`),()=>X(`admin.appearance.exclusive_category_label`),()=>X(`admin.appearance.exclusive_category_hint`)]),Mi(a,()=>H(l),e=>I(l,e)),Mi(m,()=>H(u),e=>I(u,e)),G(e,n)},$$slots:{default:!0}})}var M=B(Ce,2);{let e=P(()=>X(`admin.section.markdown.title`)),t=P(()=>X(`admin.section.markdown.desc`));Ui(M,{icon:`✍️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=va(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ti(o);var s=B(o,2),c=R(s,!0);N(s),N(r);var l=B(r,2),u=R(l),_=R(u);Ti(_);var v=B(_,2),y=R(v,!0);N(v),N(u);var b=B(u,2);ii(b,()=>X(`admin.appearance.soft_breaks_hint`),!0),N(b),N(l);var x=B(l,2),S=R(x),C=R(S);Ti(C);var w=B(C,2),T=R(w,!0);N(w),N(S);var E=B(S,2),D=R(E,!0);N(E),N(x);var O=B(x,2),k=R(O),ee=R(k);Ti(ee);var A=B(ee,2),te=R(A,!0);N(A),N(k);var ne=B(k,2),re=R(ne,!0);N(ne),N(O);var ie=B(O,2),ae=R(ie),oe=R(ae);Ti(oe);var se=B(oe,2),ce=R(se,!0);N(se),N(ae);var le=B(ae,2),ue=R(le,!0);N(le),N(ie);var de=B(ie,2),fe=R(de),pe=R(fe);Ti(pe);var me=B(pe,2),he=R(me,!0);N(me),N(fe);var ge=B(fe,2),_e=R(ge,!0);N(ge),N(de),V((e,t,n,r,i,o,s,l,u,d,f)=>{K(a,e),K(c,t),K(y,n),K(T,r),K(D,i),K(te,o),K(re,s),K(ce,l),K(ue,u),K(he,d),K(_e,f)},[()=>X(`admin.appearance.code_max_height_label`),()=>X(`admin.appearance.code_max_height_hint`),()=>X(`admin.appearance.soft_breaks_label`),()=>X(`admin.appearance.image_rounded_label`),()=>X(`admin.appearance.image_rounded_hint`),()=>X(`admin.appearance.image_centered_label`),()=>X(`admin.appearance.image_centered_hint`),()=>X(`admin.appearance.image_border_label`),()=>X(`admin.appearance.image_border_hint`),()=>X(`admin.appearance.code_light_theme_label`),()=>X(`admin.appearance.code_light_theme_hint`)]),ji(o,()=>H(d),e=>I(d,e)),Mi(_,()=>H(f),e=>I(f,e)),Mi(C,()=>H(p),e=>I(p,e)),Mi(ee,()=>H(m),e=>I(m,e)),Mi(oe,()=>H(h),e=>I(h,e)),Mi(pe,()=>H(g),e=>I(g,e)),G(e,n)},$$slots:{default:!0}})}var we=B(M,2);{let e=P(()=>X(`admin.section.files.title`)),t=P(()=>X(`admin.files.description`));Ui(we,{icon:`📎`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ya(),r=R(n),i=R(r,!0);N(r);var a=B(r,2);vn(a),Y(a,`rows`,3);var o=B(a,2),s=R(o,!0);N(o),N(n),V((e,t)=>{K(i,e),K(s,t)},[()=>X(`admin.files.blocked_label`),()=>X(`admin.files.hint`)]),ji(a,()=>H(_),e=>I(_,e)),G(e,n)},$$slots:{default:!0}})}var Te=B(we,2);{let e=P(()=>X(`admin.section.diagram.title`)),t=P(()=>X(`admin.section.diagram.desc`));Ui(Te,{icon:`🎨`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{oa(e,{get nodePalette(){return H(y)},set nodePalette(e){I(y,e,!0)},get edgePalette(){return H(b)},set edgePalette(e){I(b,e,!0)}})},$$slots:{default:!0}})}var Ee=B(Te,2);{let e=P(()=>X(`admin.section.developer.title`)),t=P(()=>X(`admin.section.developer.desc`));Ui(Ee,{icon:`🛠️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ba(),r=R(n),i=B(R(r),2),a=R(i,!0);N(i),N(r);var o=B(r,2),s=R(o,!0);N(o),N(n),V((e,t)=>{K(a,e),K(s,t)},[()=>X(`admin.appearance.debug_label`),()=>X(`admin.appearance.debug_hint`)]),G(e,n)},$$slots:{default:!0}})}N(be),N(se);var De=B(se,2),Oe=R(De),ke=R(Oe),Ae=B(R(ke),2),je=R(Ae),Me=R(je,!0);N(je);var Ne=B(je,2),Pe=R(Ne,!0);N(Ne),N(Ae),N(ke);var Fe=B(ke,2),Ie=R(Fe);ii(Ie,()=>X(`admin.license.body`),!0),N(Ie);var Le=B(Ie,2),Re=R(Le),ze=B(R(Re));N(Re);var Be=B(Re,2),Ve=B(R(Be));N(Be),N(Le),N(Fe),N(Oe),N(De),N(oe),N(ie),V((e,t,n,r,i,a,o)=>{K(fe,e),K(me,t),K(ye,n),K(Me,r),K(Pe,i),K(ze,` ${a??``}`),K(Ve,` ${o??``}`)},[()=>X(`admin.config.title`),()=>X(`admin.config.description`),()=>X(`admin.config.save_btn`),()=>X(`admin.license.title`),()=>X(`admin.license.subtitle`),()=>X(`admin.license.linkedin_btn`),()=>X(`admin.license.npm_btn`)]),Mr(`submit`,se,ne),G(e,ie),Ke()}Nr([`change`]);var Ca=W(`<input class="cluster-tag-input"/>`),wa=W(`<button class="cluster-tag-label" type="button"> </button>`),Ta=W(`<button class="cluster-tag-del" type="button">×</button>`),Ea=W(`<div class="cluster-tag"><!> <!></div>`),Da=W(`<div class="empty-state"><p>No sub-folders found.</p></div>`),Oa=W(`<nav class="rail"><button class="tool-button" type="button">⌖</button> <button type="button">⠿</button> <button class="tool-button" type="button">⬚</button> <button type="button">☰</button></nav> <canvas id="blueprintCanvas"></canvas> <div class="cluster-overlays"></div> <!>`,1);function ka(e,t){Ge(t,!0);let n=zi(t,`activeExplorerPath`,3,null),r=`#64748b`,i=`#3b82f6`,a,o,s=F(!0),c=F(!1),l=0,u=0,d=1,f=[],p=-1,m=-1,h=new Set,g=new Map,_={x:0,y:0},v=!1,y={x:0,y:0},b={x:0,y:0},x=``,S=!1,C=!1,w=!1,T=0,E=0,D=0,O=0,k=null,ee={},A=null,te=F(L([])),ne=null,re=F(0),ie=F(L([])),ae=F(null),oe=0,se=0,ce=0,le=0,ue=0,de=0,fe=0,pe=!1;function me(e){let t=0,n=0;return e.map(e=>{let r=ee[e.path],i=r?r.x:t*240,a=r?r.y:n*150;return r||(t++,t>=4&&(t=0,n++)),{folder:e,x:i,y:a,w:200,h:110}})}function he(e){if(!e.length)return{minX:0,minY:0,maxX:0,maxY:0};let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x+a.w),i=Math.max(i,a.y+a.h);return{minX:t,minY:n,maxX:r,maxY:i}}function ge(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t):``}function _e(e){let t=a.clientWidth,r=a.clientHeight;xe((n()===null?t:t/2)/2-(e.x+e.w/2)*d,r/2-(e.y+e.h/2)*d,d)}function ve(e){if(!f.length)return;let{minX:t,minY:n,maxX:r,maxY:i}=he(f),o=a.clientWidth,s=a.clientHeight,c=Math.min((o-160)/Math.max(1,r-t),(s-160)/Math.max(1,i-n),1.4),p=(t+r)/2,m=(n+i)/2,h=o/2-p*c,g=s/2-m*c;e?xe(h,g,c):(l=h,u=g,d=c)}function ye(e){let t=a.clientWidth,n=a.clientHeight,r=Math.min((t-160)/e.w,(n-160)/e.h,1.6),i=e.x+e.w/2,o=e.y+e.h/2;xe(t/2-i*r,n/2-o*r,r)}function be(e){return e<.5?2*e*e:-1+(4-2*e)*e}function xe(e,t,n){oe=l,se=u,ce=d,le=e,ue=t,de=n,fe=performance.now(),pe=!0,j()}function Se(e){let t=Math.min(1,(e-fe)/420),n=be(t);l=oe+(le-oe)*n,u=se+(ue-se)*n,d=ce+(de-ce)*n,t>=1&&(pe=!1)}function j(){k===null&&(k=requestAnimationFrame(Ce))}function Ce(e){k=null,pe&&(Se(e),j());let t=window.devicePixelRatio||1,n=a.clientWidth,r=a.clientHeight;(a.width!==n*t||a.height!==r*t)&&(a.width=n*t,a.height=r*t),o.save(),o.clearRect(0,0,a.width,a.height),o.scale(t,t),we(n,r),o.translate(l,u),o.scale(d,d),M();for(let e=0;e<f.length;e++)Ee(f[e],e===p,e===m,h.has(e));if(v){let e=Math.min(y.x,b.x),t=Math.min(y.y,b.y),n=Math.abs(b.x-y.x),r=Math.abs(b.y-y.y);o.strokeStyle=`#3b82f6`,o.lineWidth=1.5/d,o.fillStyle=`rgba(59,130,246,0.08)`,o.beginPath(),o.roundRect(e,t,n,r,6/d),o.fill(),o.stroke()}o.restore()}function M(){let e=[];for(let t of H(te)){let n=f.filter(e=>t.members.includes(e.folder.path));if(n.length===0)continue;let{minX:r,minY:i,maxX:a,maxY:s}=he(n),c=r-24,p=i-24,m=a-r+48,h=s-i+48;o.save(),o.strokeStyle=`#a78bfa`,o.globalAlpha=.55,o.lineWidth=1.5/d,o.setLineDash([8/d,6/d]),Te(c,p,m,h,18),o.stroke(),o.restore(),e.push({id:t.id,label:t.label,x:l+c*d+10*d,y:u+p*d})}I(ie,e,!0)}function we(e,t){let n=40*d,r=(l%n+n)%n,i=(u%n+n)%n;o.strokeStyle=`rgba(255,255,255,0.04)`,o.lineWidth=1,o.beginPath();for(let i=r;i<e;i+=n)o.moveTo(i,0),o.lineTo(i,t);for(let r=i;r<t;r+=n)o.moveTo(0,r),o.lineTo(e,r);o.stroke()}function Te(e,t,n,r,i){o.beginPath(),o.roundRect(e,t,n,r,i)}function Ee(e,t,r=!1,i=!1){let{x:a,y:s,w:c,h:l,folder:u}=e,f=u.hasChildren?`#1e293b`:`#172033`,p=n()===u.path,m=r?`#f59e0b`:i?`#fbbf24`:p?`#60a5fa`:t?`#3b82f6`:`rgba(255,255,255,0.12)`,h=t||r||i||p?2:1;o.save(),o.shadowColor=r?`rgba(245,158,11,0.4)`:`rgba(0,0,0,0.4)`,o.shadowBlur=r?36:t?24:12,Te(a,s,c,l,18),o.fillStyle=f,o.fill(),o.restore(),Te(a,s,c,l,18),o.strokeStyle=m,o.lineWidth=h/d,o.stroke(),o.fillStyle=p?`#60a5fa`:t?`#94a3b8`:`rgba(255,255,255,0.3)`,o.font=`${20*.7}px sans-serif`,o.textBaseline=`top`,o.textAlign=`left`,o.fillText(`☰`,a+10,s+10);let g=e.folder.hasDoc===!0,_=a+10+20+4;o.fillStyle=g?t?`#34d399`:`#10b981`:t?`#a78bfa`:`rgba(167,139,250,0.4)`,o.font=`bold ${20*.65}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`top`,o.textAlign=`left`,o.fillText(`D`,_,s+11),g||(o.font=`bold ${20*.5}px Inter, ui-sans-serif, sans-serif`,o.fillText(`+`,_+20*.6,s+7));let v=a+18;De(v,s+l/2-18/2-4,18,t);let y=Math.max(10,Math.min(14,120/u.name.length));o.fillStyle=t?`#fff`:`#f1f5f9`,o.font=`700 ${y}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`middle`,o.textAlign=`left`;let b=c-36-18-8,x=ke(u.name,b,y);o.fillText(x,v+18+8,s+l/2),u.hasChildren&&Oe(a+c-22,s+l/2,t)}function De(e,t,n,a){o.fillStyle=a?i:r,o.beginPath(),o.roundRect(e,t+n*.3,n,n*.7,2),o.fill(),o.beginPath(),o.roundRect(e,t+n*.2,n*.45,n*.18,2),o.fill()}function Oe(e,t,n){o.fillStyle=n?i:r,o.beginPath(),o.moveTo(e-6,t-6),o.lineTo(e+6,t),o.lineTo(e-6,t+6),o.closePath(),o.fill()}function ke(e,t,n){if(o.font=`700 ${n}px Inter, ui-sans-serif, sans-serif`,o.measureText(e).width<=t)return e;let r=e;for(;r.length>1&&o.measureText(r+`…`).width>t;)r=r.slice(0,-1);return r+`…`}async function Ae(){try{ee=await fetch(`/api/blueprint/positions`).then(e=>e.json())}catch{ee={}}}function je(){A!==null&&clearTimeout(A),A=window.setTimeout(()=>{A=null,fetch(`/api/blueprint/positions`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ee)})},600)}async function Me(){try{let e=await fetch(`/api/blueprint/clusters`).then(e=>e.json());I(te,Array.isArray(e)?e:[],!0)}catch{I(te,[],!0)}}function Ne(){ne!==null&&clearTimeout(ne),ne=window.setTimeout(()=>{ne=null,fetch(`/api/blueprint/clusters`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(H(te))})},600)}function Pe(){I(re,h.size,!0)}function Fe(){let e=[...h].map(e=>f[e]?.folder.path).filter(Boolean);if(e.length===0)return;let t=`cl_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,7)}`;I(te,[...H(te),{id:t,label:X(`blueprint.cluster.default_label`),members:e}],!0),Ne(),h.clear(),Pe(),j()}function Ie(e,t){I(te,H(te).map(n=>n.id===e?{...n,label:t}:n),!0),Ne(),j()}function Le(e){I(te,H(te).filter(t=>t.id!==e),!0),H(ae)===e&&I(ae,null),Ne(),j()}async function Re(e,n,r){try{let i=`/api/blueprint${e?`?path=${encodeURIComponent(e)}`:``}`,a=await fetch(i).then(e=>e.json()),o;if(!e)o=[{name:a.sourceRoot,path:``}];else{let t=e.split(`/`),n=``;o=[{name:a.sourceRoot,path:``}];for(let e of t)n=n?`${n}/${e}`:e,o.push({name:e,path:n})}t.onbreadcrumbchange(o),x=e,f=me(a.folders),I(s,f.length>0),r&&n?(ye(r),setTimeout(()=>ve(!0),420*.6)):ve(n),j()}catch(e){console.error(`Blueprint load error`,e)}}function ze(e,t){return{x:(e-l)/d,y:(t-u)/d}}function Be(e,t){for(let n=0;n<f.length;n++){let r=f[n];if(e>=r.x&&e<=r.x+r.w&&t>=r.y&&t<=r.y+r.h)return n}return-1}function Ve(e,t,n){return t>=e.x+6&&t<=e.x+6+20&&n>=e.y+6&&n<=e.y+6+20}function He(e,t,n){let r=e.x+10+20+4;return t>=r&&t<=r+20&&n>=e.y+6&&n<=e.y+6+20}async function Ue(e){let t=ge(e);x!==t&&await Re(t,!0);let n=f.find(t=>t.folder.path===e);n&&(_e(n),j())}function We(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;if(S&&m>=0&&H(c)){let{x:e,y:t}=ze(n,r),i=e-_.x,a=t-_.y;Math.hypot(i,a)>6/d&&(w=!0);let o=h.has(m)&&h.size>1?[...h]:[m];for(let e of o){let t=g.get(e);t&&(f[e].x=t.x+i,f[e].y=t.y+a)}j();return}if(v){b=ze(n,r),j();return}if(C){let e=n-T,t=r-E;Math.hypot(e,t)>6&&(w=!0),l=D+e,u=O+t,j();return}let{x:i,y:o}=ze(n,r),s=Be(i,o);s!==p&&(p=s,a.style.cursor=s>=0&&H(c)?`grab`:s>=0?`pointer`:`default`,j())}function qe(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,{x:i,y:o}=ze(n,r),s=Be(i,o);T=n,E=r,w=!1,a.setPointerCapture(e.pointerId),s>=0?(m=s,S=!0,_={x:i,y:o},g=new Map(f.map((e,t)=>[t,{x:e.x,y:e.y}])),i-f[s].x,o-f[s].y,H(c)&&(a.style.cursor=`grabbing`)):H(c)&&e.shiftKey?(v=!0,y={x:i,y:o},b={x:i,y:o},a.style.cursor=`crosshair`):(C=!0,D=l,O=u)}function Je(e){let r=a.getBoundingClientRect(),i=e.clientX-r.left,o=e.clientY-r.top;if(a.releasePointerCapture(e.pointerId),S){if(S=!1,a.style.cursor=H(c)?`grab`:`pointer`,w){let e=h.has(m)&&h.size>1?[...h]:[m];for(let t of e){let e=f[t];ee[e.folder.path]={...ee[e.folder.path]??{},x:e.x,y:e.y}}je()}else{let r=f[m],{x:a,y:s}=ze(i,o);H(c)&&e.shiftKey?(h.has(m)?h.delete(m):h.add(m),Pe(),j()):H(c)?(h.clear(),h.add(m),Pe(),j()):He(r,a,s)?t.onopenAdr(r):Ve(r,a,s)?n()===r.folder.path?t.onclosefilerexplorer():t.onopenexplorer(r):r.folder.hasChildren&&(t.onclosefilerexplorer(),Re(r.folder.path,!0,r))}m=-1;return}if(v){v=!1,a.style.cursor=`crosshair`;let e=Math.min(y.x,b.x),t=Math.min(y.y,b.y),n=Math.max(y.x,b.x),r=Math.max(y.y,b.y);if(n-e>4||r-t>4)for(let i=0;i<f.length;i++){let a=f[i];a.x<n&&a.x+a.w>e&&a.y<r&&a.y+a.h>t&&h.add(i)}Pe(),j();return}if(C){C=!1;let e=i-T,t=o-E;Math.hypot(e,t)<=6&&H(c)&&(h.clear(),Pe(),j())}}function Ye(e){e.preventDefault();let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=1-e.deltaY*.0018,o=Math.max(.15,Math.min(4,d*i));l=n-(n-l)*(o/d),u=r-(r-u)*(o/d),d=o,j()}function Xe(){ve(!0)}function Ze(){let e=x?x.split(`/`).pop():``;t.onopenexplorer({folder:{name:e,path:x,hasChildren:!0},x:0,y:0,w:0,h:0})}function Qe(){I(c,!H(c)),H(c)||(h.clear(),Pe(),j()),a.style.cursor=H(c)&&p>=0?`grab`:`default`}Bi(()=>(o=a.getContext(`2d`),window.addEventListener(`resize`,j),Promise.all([Ae(),Me()]).then(async()=>{await Re(``,!1)}),()=>{window.removeEventListener(`resize`,j)}));var $e={centerOnBox:_e,loadPath:Re,navigateToFolder:Ue},et=Oa(),tt=z(et),nt=R(tt),rt=B(nt,2);let it;var at=B(rt,2),ot=B(at,2);let st;N(tt);var ct=B(tt,2);Ii(ct,e=>a=e,()=>a);var lt=B(ct,2);J(lt,21,()=>H(ie),e=>e.id,(e,t)=>{var n=Ea(),r=R(n),i=e=>{var n=Ca();Ti(n),_n(n,!0),V(()=>Ei(n,H(t).label)),U(`keydown`,n,e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&I(ae,null)}),Mr(`blur`,n,e=>{Ie(H(t).id,e.currentTarget.value.trim()||H(t).label),I(ae,null)}),G(e,n)},a=e=>{var n=wa(),r=R(n,!0);N(n),V((e,t)=>{Y(n,`title`,e),K(r,t)},[()=>X(`blueprint.cluster.rename`),()=>H(t).label||X(`blueprint.cluster.default_label`)]),U(`click`,n,()=>I(ae,H(t).id,!0)),G(e,n)};q(r,e=>{H(ae)===H(t).id?e(i):e(a,-1)});var o=B(r,2),s=e=>{var n=Ta();V(e=>Y(n,`title`,e),[()=>X(`blueprint.cluster.delete`)]),U(`click`,n,()=>Le(H(t).id)),G(e,n)};q(o,e=>{H(c)&&e(s)}),N(n),V(()=>gi(n,`left:${H(t).x??``}px; top:${H(t).y??``}px;`)),G(e,n)}),N(lt);var ut=B(lt,2),dt=e=>{G(e,Da())};return q(ut,e=>{H(s)||e(dt)}),V((e,t,r,i)=>{Y(nt,`title`,e),it=mi(rt,1,`tool-button`,null,it,{active:H(c)}),Y(rt,`title`,t),Y(at,`title`,r),at.disabled=H(re)===0,st=mi(ot,1,`tool-button`,null,st,{active:n()===x}),Y(ot,`title`,i)},[()=>X(`blueprint.canvas.fit_view`),()=>X(`blueprint.canvas.drag_mode`),()=>X(`blueprint.canvas.create_cluster`),()=>X(`blueprint.canvas.browse_current`)]),U(`click`,nt,Xe),U(`click`,rt,Qe),U(`click`,at,Fe),U(`click`,ot,Ze),U(`pointermove`,ct,We),U(`pointerdown`,ct,qe),U(`pointerup`,ct,Je),Mr(`wheel`,ct,Ye),G(e,et),Ke($e)}Nr([`click`,`pointermove`,`pointerdown`,`pointerup`,`keydown`]);var Aa=W(`<button class="explorer-breadcrumb-item" type="button">~</button>`),ja=W(`<span class="explorer-breadcrumb-item current">~</span>`),Ma=W(`<span class="explorer-breadcrumb-item current"> </span>`),Na=W(`<button class="explorer-breadcrumb-item" type="button"> </button>`),Pa=W(`<span class="explorer-breadcrumb-sep">/</span> <!>`,1),Fa=W(`<div class="explorer-section-label"> </div>`),Ia=W(`<button class="explorer-item is-folder" type="button"><span class="explorer-item-icon">📁</span> <span class="explorer-item-name"> </span></button>`),La=W(`<div class="explorer-section-label with-action"><span> </span> <button type="button" data-testid="copy-blueprint-folders"><i aria-hidden="true"></i></button></div> <!>`,1),Ra=W(`<button class="explorer-item is-file" type="button"><span class="explorer-item-icon">📄</span> <span class="explorer-item-name"> </span></button>`),za=W(`<div class="explorer-section-label with-action"><span> </span> <button type="button" data-testid="copy-blueprint-files"><i aria-hidden="true"></i></button></div> <!>`,1),Ba=W(`<!> <!>`,1),Va=W(`<p class="file-preview-placeholder"> </p>`),Ha=W(`<p class="file-preview-name"> </p> <p class="file-preview-placeholder"> </p>`,1),Ua=W(`<p class="file-preview-name"> </p> <span class="file-preview-binary"> </span>`,1),Wa=W(`<p class="file-preview-name"> </p> <img/>`,1),Ga=W(`<p class="file-preview-name"> </p> <video controls=""></video>`,3),Ka=W(`<span class="file-preview-truncated"> </span>`),qa=W(`<p class="file-preview-name"> </p> <!> <pre><code> </code></pre>`,1),Ja=W(`<aside class="file-explorer"><header class="explorer-header"><div class="explorer-breadcrumb"><!> <!></div> <button class="explorer-close" type="button">×</button></header> <div class="explorer-top"><div class="explorer-list"><!></div></div> <div class="explorer-divider"></div> <div class="explorer-bottom"><div class="file-preview"><!></div></div></aside>`);function Ya(e,t){Ge(t,!0);let n=F(``),r=F(L([])),i=F(L([])),a=F(!1),o=F(!1),s=F(null),c=F(L({status:`idle`}));function l(e){return e?e.split(`/`).map((e,t,n)=>({name:e,path:n.slice(0,t+1).join(`/`),isLast:t===n.length-1})):[]}async function u(e){I(n,e,!0),I(c,{status:`idle`},!0),await d(e)}async function d(e){I(n,e,!0),I(a,!0),I(o,!1);try{let t=await fetch(`/api/blueprint/files?path=${encodeURIComponent(e)}`).then(e=>e.json());I(r,t.folders,!0),I(i,t.files,!0)}catch{I(o,!0),I(r,[],!0),I(i,[],!0)}finally{I(a,!1)}}async function f(e){t.onnavigate(e),await d(e)}async function p(e,t){I(c,{status:`loading`,name:t},!0);try{let n=await fetch(`/api/blueprint/file-content?path=${encodeURIComponent(e)}`).then(e=>e.json());n.type===`image`?I(c,{status:`image`,name:t,url:n.url},!0):n.type===`video`?I(c,{status:`video`,name:t,url:n.url},!0):n.type===`binary`?I(c,{status:`binary`,name:t},!0):n.type===`text`&&n.content!==void 0&&(I(c,{status:`text`,name:t,content:n.content,language:n.language,truncated:n.truncated},!0),setTimeout(()=>{let e=document.querySelector(`.file-preview code`);e&&window.hljs&&(window.hljs.highlightElement(e),window.hljs.lineNumbersBlock&&window.hljs.lineNumbersBlock(e))},0))}catch{I(c,{status:`error`,name:t},!0)}}function m(e){return H(n)?`${H(n)}/${e}`:e}async function h(e,t){if(t.length)try{await navigator.clipboard.writeText(t.join(`
|
|
2
|
+
\r\f\xA0\v`];function ui(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||li.includes(r[o-1]))&&(s===r.length||li.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function di(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function fi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function pi(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(fi)),i&&c.push(...Object.keys(i).map(fi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=fi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=di(r)),i&&(n+=di(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function mi(e,t,n,r,i,a){var o=e[ie];if(ke||o!==n||o===void 0){var s=ui(n,r,a);(!ke||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ie]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function hi(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function gi(e,t,n,r){var i=e[ae];if(ke||i!==t){var a=pi(t,r);(!ke||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ae]=t}else r&&(Array.isArray(r)?(hi(e,n?.[0],r[0]),hi(e,n?.[1],r[1],`important`)):hi(e,n,r));return r}function _i(e,n,r=!1){if(e.multiple){if(n==null)return;if(!t(n))return De();for(var i of e.options)i.selected=n.includes(bi(i));return}for(i of e.options)if(rn(bi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(e.selectedIndex=-1)}function vi(e){var t=new MutationObserver(()=>{_i(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Dn(()=>{t.disconnect()})}function yi(e,t,n=t){var r=new WeakSet,i=!0;Sn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),bi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&bi(o)}n(a),e.__value=a,ut!==null&&r.add(ut)}),Mn(()=>{var a=t();if(e===document.activeElement){var o=Be?dt:ut;if(r.has(o))return}if(_i(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=bi(s),n(a))}e.__value=a,i=!1}),vi(e)}function bi(e){return`__value`in e?e.__value:e.value}var xi=Symbol(`is custom element`),Si=Symbol(`is html`),Ci=le?`link`:`LINK`,wi=le?`progress`:`PROGRESS`;function Ti(e){if(ke){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;Y(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;Y(e,`checked`,null),e.checked=r}}};e[se]=n,Xe(n),bn()}}function Ei(e,t){var n=Oi(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==wi)||(e.value=t??``)}function Di(e,t){var n=Oi(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Y(e,t,n,r){var i=Oi(e);ke&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Ci)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ne]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Ai(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Oi(e){return e[re]??={[xi]:e.nodeName.includes(`-`),[Si]:e.namespaceURI===Ce}}var ki=new Map;function Ai(e){var t=e.getAttribute(`is`)||e.nodeName,n=ki.get(t);if(n)return n;ki.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=s(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=u(i)}return n}function ji(e,t,n=t){var r=new WeakSet;Sn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ni(e)?Pi(a):a,n(a),ut!==null&&r.add(ut),await br(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(ke&&e.defaultValue!==e.value||Cr(t)==null&&e.value)&&(n(Ni(e)?Pi(e.value):e.value),ut!==null&&r.add(ut)),Pn(()=>{var n=t();if(e===document.activeElement){var i=Be?dt:ut;if(r.has(i))return}Ni(e)&&n===Pi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Mi(e,t,n=t){Sn(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(ke&&e.defaultChecked!==e.checked||Cr(t)==null)&&n(e.checked),Pn(()=>{e.checked=!!t()})}function Ni(e){var t=e.type;return t===`number`||t===`range`}function Pi(e){return e===``?null:+e}function Fi(e,t){return e===t||e?.[A]===t}function Ii(e={},t,n,r){var i=Ue.r,a=tr;return Mn(()=>{var o,s;return Pn(()=>{o=s,s=r?.()||[],Cr(()=>{Fi(n(...s),e)||(t(e,...s),o&&Fi(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Fi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Li(e=!1){let t=Ue,n=t.l.u;if(!n)return;let r=()=>wr(t.s);if(e){let e=0,n={},i=Rt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&An(()=>{Ri(t,r),m(n.b)}),On(()=>{let e=Cr(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&On(()=>{Ri(t,r),m(n.a)})}function Ri(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function zi(e,t,n,r){var i=!Ve||(n&2)!=0,a=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Rt(r),H(u)):(l&&(l=!1,c=s?Cr(r):r),c);let f;if(a){var p=A in e||te in e;f=o(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=st(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&_e(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Rt:Vt)(()=>(v=!1,g()));a&&H(y);var b=tr;return(function(e,t){if(arguments.length>0){let n=t?H(y):i&&a?L(e):e;return I(y,n),v=!0,c!==void 0&&(c=n),e}return Xn&&v||b.f&16384?y.v:H(y)})}function Bi(e){Ue===null&&ue(`onMount`),Ve&&Ue.l!==null?Vi(Ue).m.push(e):On(()=>{let t=Cr(e);if(typeof t==`function`)return t})}function Vi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var Hi=W(`<section class="config-section"><header class="config-section-header"><h3 class="config-section-title"><span aria-hidden="true"> </span> </h3> <p class="config-section-desc"> </p></header> <div class="config-section-body"><!></div></section>`);function Ui(e,t){var n=Hi(),r=R(n),i=R(r),a=R(i),o=R(a,!0);N(a);var s=B(a);N(i);var c=B(i,2),l=R(c,!0);N(c),N(r);var u=B(r,2);ai(R(u),()=>t.children),N(u),N(n),V(()=>{K(o,t.icon),K(s,` ${t.title??``}`),K(l,t.description)}),G(e,n)}var Wi=W(`<p class="browser-msg">Loading…</p>`),Gi=W(`<p class="browser-msg browser-msg--error">Cannot read directory</p>`),Ki=W(`<p class="browser-msg">Empty directory</p>`),qi=W(`<button type="button" class="browser-row browser-row--dir"><span>📁</span><span> </span></button>`),Ji=W(`<span class="badge-added">Added</span>`),Yi=W(`<button type="button" class="link-btn">+ Add</button>`),Xi=W(`<div class="browser-row browser-row--file"><span class="browser-row-name"><span>📄</span><span> </span></span> <!></div>`),Zi=W(`<!> <!>`,1),Qi=W(`<p class="field-hint" style="font-style:italic">No extra files added yet.</p>`),$i=W(`<div class="extra-file-row"><div class="extra-file-arrows"><button type="button">↑</button> <button type="button">↓</button></div> <span class="extra-file-path"> </span> <button type="button" class="remove-btn">Remove</button></div>`),ea=W(`<div class="extra-files-list"></div>`),ta=W(`<div class="field-group"><p class="field-label">General — Extra Files</p> <p class="field-hint">Add Markdown files from outside the docs folder to the General section.</p> <div class="file-browser"><div class="file-browser-toolbar"><button type="button" class="link-btn">↑ Up</button> <span class="file-browser-path"> </span></div> <div class="file-browser-list"><!></div></div> <p class="field-label" style="margin-top:1rem">Added files</p> <!></div>`);function na(e,t){Ge(t,!0);let n=F(``),r=F(null),i=F(L([])),a=F(L([])),o=F(!1),s=F(!1);function c(e,t){if(!e)return t;let n=e=>e.replace(/\\/g,`/`),r=n(e).split(`/`).filter(Boolean),i=n(t).split(`/`).filter(Boolean),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=r.length-a,s=i.slice(a).join(`/`),c=`../`.repeat(o)+s;return c.endsWith(`/`)&&(c=c.slice(0,-1)),c===``?`.`:c}function l(e){return t.docsFolder?`$DOCS_FOLDER/`+c(t.docsFolder,e):e}async function u(e){I(o,!0),I(s,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(n,t.current,!0),I(r,t.parent,!0),I(i,t.dirs,!0),I(a,t.files,!0)}catch{I(s,!0)}finally{I(o,!1)}}function d(){H(r)&&u(H(r))}async function f(e){if(t.extraFiles.includes(e))return;let r=[...t.extraFiles,e];await h(r),t.onchange(r),u(H(n))}async function p(e){let r=t.extraFiles.filter(t=>t!==e);await h(r),t.onchange(r),u(H(n))}async function m(e,n){let r=e+n;if(r<0||r>=t.extraFiles.length)return;let i=[...t.extraFiles];[i[e],i[r]]=[i[r],i[e]],await h(i),t.onchange(i)}async function h(e){let n=e.map(e=>c(t.docsFolder,e));await fetch(`/api/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({extraFiles:n})})}var g={loadBrowse:u},_=ta(),v=B(R(_),4),y=R(v),b=R(y),x=B(b,2),S=R(x,!0);N(x),N(y);var C=B(y,2),w=R(C),T=e=>{G(e,Wi())},E=e=>{G(e,Gi())},D=e=>{G(e,Ki())},O=e=>{var n=Zi(),r=z(n);J(r,17,()=>H(i),Yr,(e,t)=>{var n=qi(),r=B(R(n)),i=R(r,!0);N(r),N(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>u(H(t).path)),G(e,n)}),J(B(r,2),17,()=>H(a),Yr,(e,n)=>{var r=Xi(),i=R(r),a=B(R(i)),o=R(a,!0);N(a),N(i);var s=B(i,2),c=e=>{G(e,Ji())},l=P(()=>t.extraFiles.includes(H(n).path)),u=e=>{var t=Yi();U(`click`,t,()=>f(H(n).path)),G(e,t)};q(s,e=>{H(l)?e(c):e(u,-1)}),N(r),V(()=>K(o,H(n).name)),G(e,r)}),G(e,n)};q(w,e=>{H(o)?e(T):H(s)?e(E,1):H(i).length===0&&H(a).length===0?e(D,2):e(O,-1)}),N(C),N(v);var k=B(v,4),ee=e=>{G(e,Qi())},A=e=>{var n=ea();J(n,21,()=>t.extraFiles,Yr,(e,n,r)=>{var i=$i(),a=R(i),o=R(a);o.disabled=r===0;var s=B(o,2);N(a);var c=B(a,2),u=R(c,!0);N(c);var d=B(c,2);N(i),V(e=>{s.disabled=r===t.extraFiles.length-1,Y(c,`title`,H(n)),K(u,e)},[()=>l(H(n))]),U(`click`,o,()=>m(r,-1)),U(`click`,s,()=>m(r,1)),U(`click`,d,()=>p(H(n))),G(e,i)}),N(n),G(e,n)};return q(k,e=>{t.extraFiles.length===0?e(ee):e(A,-1)}),N(_),V(e=>{b.disabled=!H(r),K(S,e)},[()=>l(H(n))]),U(`click`,b,d),G(e,_),Ke(g)}Nr([`click`]);var ra=W(`<div class="swatch-wrap"><div class="swatch"></div> <input type="color" class="swatch-input"/></div>`),ia=W(`<div class="edge-swatch-wrap"><div class="edge-swatch"></div> <button type="button" class="remove-swatch-btn">✕</button></div>`),aa=W(`<div class="palette-group"><div class="palette-header"><span class="field-label">Shape colors</span> <button type="button" class="link-btn">Reset</button></div> <p class="field-hint">Click a color to change it.</p> <div class="swatches"></div></div> <div class="palette-group" style="margin-top:1.5rem"><div class="palette-header"><span class="field-label">Arrow colors</span> <button type="button" class="link-btn">Reset</button></div> <p class="field-hint">Click ✕ to remove a color.</p> <div class="swatches" style="align-items:flex-end"></div> <div class="add-color-row"><input type="color" class="color-input"/> <button type="button" class="btn-primary btn-sm">Add color</button></div></div>`,1);function oa(e,t){Ge(t,!0);let n=zi(t,`nodePalette`,15),r=zi(t,`edgePalette`,15),i={"c-white":{bg:`#ffffff`,border:`#dbd5d1`,label:`White`},"c-gray":{bg:`#f5f5f4`,border:`#a8a29e`,label:`Gray`},"c-slate":{bg:`#f1f5f9`,border:`#64748b`,label:`Slate`},"c-blue":{bg:`#dbeafe`,border:`#3b82f6`,label:`Blue`},"c-sky":{bg:`#e0f2fe`,border:`#0ea5e9`,label:`Sky`},"c-cyan":{bg:`#cffafe`,border:`#06b6d4`,label:`Cyan`},"c-teal":{bg:`#ccfbf1`,border:`#14b8a6`,label:`Teal`},"c-green":{bg:`#dcfce7`,border:`#22c55e`,label:`Green`},"c-lime":{bg:`#ecfccb`,border:`#84cc16`,label:`Lime`},"c-amber":{bg:`#fef9c3`,border:`#f59e0b`,label:`Amber`},"c-orange":{bg:`#ffedd5`,border:`#f97316`,label:`Orange`},"c-red":{bg:`#fee2e2`,border:`#ef4444`,label:`Red`},"c-rose":{bg:`#ffe4e6`,border:`#f43f5e`,label:`Rose`},"c-pink":{bg:`#fce7f3`,border:`#ec4899`,label:`Pink`},"c-purple":{bg:`#ede9fe`,border:`#8b5cf6`,label:`Purple`}},a={"c-gray":.667,"c-slate":.488,"c-blue":.645,"c-sky":.518,"c-cyan":.473,"c-teal":.448,"c-green":.489,"c-lime":.496,"c-amber":.57,"c-orange":.578,"c-red":.64,"c-rose":.636,"c-pink":.638,"c-purple":.694},o=Object.keys(i),s=[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],c=F(`#3b82f6`);function l(e,t=.6){let n=parseInt(e.slice(1,3),16)/255,r=parseInt(e.slice(3,5),16)/255,i=parseInt(e.slice(5,7),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2,c=a-o,l=0,u=0;c>0&&(u=s>.5?c/(2-a-o):c/(a+o),l=a===n?((r-i)/c+(r<i?6:0))/6:a===r?((i-n)/c+2)/6:((n-r)/c+4)/6);function d(e,t,n){let r,i,a;if(t===0)r=i=a=n;else{let o=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),s=n<.5?n*(1+t):n+t-n*t,c=2*n-s;r=o(c,s,e+1/3),i=o(c,s,e),a=o(c,s,e-1/3)}return`#`+[r,i,a].map(e=>Math.max(0,Math.min(255,Math.round(e*255))).toString(16).padStart(2,`0`)).join(``)}return{bg:e,border:d(l,u,s*t)}}function u(e,t){let n=i[e];return t===n.bg?n.border:l(t,a[e]||.6).border}function d(){n(o.map(e=>i[e].bg))}function f(){r([...s])}function p(){let e=H(c).toLowerCase();r().includes(e)||r([...r(),e])}function m(e){r().length<=1||r(r().filter((t,n)=>n!==e))}var h=aa(),g=z(h),_=R(g),v=B(R(_),2);N(_);var y=B(_,4);J(y,21,()=>o,Yr,(e,t,r)=>{let a=P(()=>n()[r]||i[H(t)].bg),o=P(()=>u(H(t),H(a)));var s=ra(),c=R(s),l=B(c,2);Ti(l),N(s),V(()=>{Y(s,`title`,i[H(t)].label),gi(c,`background:${H(a)??``};border-color:${H(o)??``}`),Ei(l,H(a))}),U(`input`,l,e=>{n(n()[r]=e.target.value.toLowerCase(),!0)}),G(e,s)}),N(y),N(g);var b=B(g,2),x=R(b),S=B(R(x),2);N(x);var C=B(x,4);J(C,21,r,Yr,(e,t,n)=>{var r=ia(),i=R(r),a=B(i,2);N(r),V(()=>gi(i,`background:${H(t)??``}`)),U(`click`,a,()=>m(n)),G(e,r)}),N(C);var w=B(C,2),T=R(w);Ti(T);var E=B(T,2);N(w),N(b),U(`click`,v,d),U(`click`,S,f),ji(T,()=>H(c),e=>I(c,e)),U(`click`,E,p),G(e,h),Ke()}Nr([`click`,`input`]);var sa=W(`<a class="ghost-button"> </a>`),ca=W(`<header class="topbar"><div class="brand-lockup"><span class="brand-mark">LD</span> <div><h1> </h1> <p> </p></div></div> <!> <div class="topbar-right"><!> <!></div></header>`);function la(e,t){Ge(t,!0);let n=zi(t,`nav`,19,()=>[]),r=window.location.pathname,i=P(()=>[...n(),{label:`Workspace`,href:`/workspace`},{label:`Agents`,href:`/agents`},{label:`Blueprint`,href:`/blueprint`},{label:`Diagram`,href:`/diagram`},{label:`Files`,href:`/files`},{label:`Survival Kit`,href:`/survival-kit`},{label:`AI Context`,href:`/context`},{label:`Admin`,href:`/admin`},{label:`Home`,href:`/`}].filter(e=>e.href!==r));var a=ca(),o=R(a),s=B(R(o),2),c=R(s),l=R(c,!0);N(c);var u=B(c,2),d=R(u,!0);N(u),N(s),N(o);var f=B(o,2),p=e=>{var n=Ur();ai(z(n),()=>t.children),G(e,n)};q(f,e=>{t.children&&e(p)});var m=B(f,2),h=R(m);J(h,17,()=>H(i),Yr,(e,t)=>{var n=sa(),r=R(n,!0);N(n),V(()=>{Y(n,`href`,H(t).href),K(r,H(t).label)}),G(e,n)});var g=B(h,2),_=e=>{var n=Ur();ai(z(n),()=>t.actions),G(e,n)};q(g,e=>{t.actions&&e(_)}),N(m),N(a),V(()=>{K(l,t.title),K(d,t.subtitle)}),G(e,a),Ke()}var ua=F(L({}));async function da(e){try{let t=await fetch(`/i18n/${e||`en`}.json`);t.ok&&I(ua,await t.json(),!0)}catch{}}function X(e,t){let n=H(ua)[e]===void 0?e:H(ua)[e];if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{${e}}`,r);return n}var fa=W(`<span> </span>`),pa=W(`<div class="field-row"><div class="info-item"><dt class="info-label"> </dt> <dd class="info-value"> </dd></div> <div class="info-item"><dt class="info-label"> </dt> <dd class="info-value"> </dd></div></div> <div class="field-group"><label class="field-label" for="field-title"> </label> <input id="field-title" type="text" class="field-input"/> <p class="field-hint"> </p></div> <div class="field-group"><label class="field-label" for="field-theme"> </label> <select id="field-theme" class="field-input"><option> </option><option> </option><option> </option></select> <p class="field-hint"> </p></div> <div class="field-group"><label class="field-label" for="field-language"> </label> <select id="field-language" class="field-input"><option> </option><option> </option></select> <p class="field-hint"> </p></div>`,1),ma=W(`<div class="pattern-row"><p class="pattern-filename"> </p> <div class="pattern-cols"><div><span class="pattern-col-label"> </span> <span> </span></div> <div><span class="pattern-col-label"> </span> <span class="pattern-value--cat"> </span></div> <div><span class="pattern-col-label"> </span> <span class="pattern-value--title"> </span></div></div></div>`),ha=W(`<div class="field-group"><label class="field-label" for="field-pattern"> </label> <input id="field-pattern" type="text" class="field-input"/> <p class="field-hint"> <code> </code></p></div> <div class="pattern-preview"><h4 class="pattern-preview-title"> </h4> <p class="field-hint"> </p> <div class="pattern-rows"></div></div>`,1),ga=W(`<div class="field-group"><label class="field-label" for="field-source-root"> </label> <input id="field-source-root" type="text" class="field-input field-input--mono" placeholder=".."/> <p class="field-hint"> </p></div> <!>`,1),_a=W(`<div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`,1),va=W(`<div class="field-group"><label class="field-label" for="field-code-max-height"> </label> <input id="field-code-max-height" type="number" class="field-input" min="0" max="5000" step="10" placeholder="400"/> <p class="field-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"></p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div> <div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`,1),ya=W(`<div class="field-group"><label class="field-label" for="field-blocked"> </label> <textarea id="field-blocked" class="field-input field-input--mono" placeholder="exe sh bat cmd com scr ps1 msi"></textarea> <p class="field-hint"> </p></div>`),ba=W(`<div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`),xa=W(`<div class="app-shell"><!> <div class="admin-scroll"><form class="admin-form" novalidate=""><div class="save-bar"><div class="save-bar-inner"><div><h2 class="save-bar-title"> </h2> <p class="save-bar-desc"> </p></div> <div class="save-bar-actions"><!> <button type="submit" class="btn-primary"> </button></div></div></div> <div class="admin-sections"><!> <!> <!> <!> <!> <!> <!> <!></div></form> <div class="admin-sections"><div class="license-card"><div class="license-banner"><span class="license-icon">📖</span> <div><h3 class="license-title"> </h3> <p class="license-subtitle"> </p></div></div> <div class="license-body"><p></p> <div class="license-links"><a href="https://www.linkedin.com/in/youssef-medaghri-alaoui-93b2922/" target="_blank" rel="noopener noreferrer" class="license-btn license-btn--linkedin"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.45 20.45h-3.55v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.13 1.44-2.13 2.93v5.68H9.37V9h3.41v1.56h.05c.47-.9 1.63-1.85 3.35-1.85 3.58 0 4.24 2.36 4.24 5.43v6.31ZM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.12 20.45H3.56V9h3.56v11.45ZM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45C23.2 24 24 23.23 24 22.28V1.72C24 .77 23.2 0 22.22 0Z"></path></svg> </a> <a href="https://www.npmjs.com/package/living-ai-documentation" target="_blank" rel="noopener noreferrer" class="license-btn license-btn--npm"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M0 0v24h24V0H0Zm19.2 19.2H13.6V8h-3.2v11.2H4.8V4.8h14.4v14.4Z"></path></svg> </a></div></div></div></div></div></div>`);function Sa(e,t){Ge(t,!0);let n=F(``),r=F(``),i=F(``),a=F(`system`),o=F(`en`),s=F(``),c=F(``),l=F(!1),u=F(!1),d=F(400),f=F(!1),p=F(!1),m=F(!1),h=F(!1),g=F(!1),_=F(``),v=F(L([])),y=F(L([])),b=F(L([])),x=F(null),S=null,C=F(null),w=[`2024_01_15_09_30_[DevOps]_deploy_pipeline.md`,`2023_11_03_14_45_[Frontend]_react_hooks_guide.md`,`2025_06_20_08_00_meeting_notes.md`,`readme.md`];function T(e){let t=e.split(`_`);return t.length===5?`${t[0]}-${t[1]}-${t[2]}T${t[3]}:${t[4]}`:`${t[0]}-${t[1]}-${t[2]}`}function E(e){e||=`YYYY_MM_DD_HH_mm_[Category]_title`;let t=/YYYY.*MM.*DD/.test(e),n=t&&/HH.*mm/.test(e),r=/\[Category\]/i.test(e),i=n?`(\\d{4}_\\d{2}_\\d{2}(?:_\\d{2}_\\d{2})?)`:`(\\d{4}_\\d{2}_\\d{2})`,a=`\\[([^\\]]+)\\]`,o=t&&r&&e.search(/\[Category\]/i)<e.search(/YYYY/i),s=null,c=null;if(t&&r){let e=o?`${a}_${i}`:`${i}_${a}`;s=RegExp(`^`+e+`_(.+)\\.md$`,`i`),c=RegExp(`^`+i+`_(.+)\\.md$`,`i`)}else t?c=RegExp(`^`+i+`_(.+)\\.md$`,`i`):r&&(s=RegExp(`^\\[([^\\]]+)\\]_(.+)\\.md$`,`i`));return{full:s,dateOnly:c,hasDate:t,hasCategory:r,catBeforeDate:o}}function D(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function O(e,t){if(t.full){let n=e.match(t.full);if(n){if(t.hasDate&&t.hasCategory){let e=t.catBeforeDate?n[2]:n[1],r=t.catBeforeDate?n[1]:n[2];return{date:T(e),category:r,title:D(n[3]),match:!0}}else if(t.hasCategory)return{date:null,category:n[1],title:D(n[2]),match:!0}}}if(t.dateOnly){let n=e.match(t.dateOnly);if(n)return{date:T(n[1]),category:`General`,title:D(n[2]),match:!0}}return{date:null,category:`General`,title:e.replace(`.md`,``),match:!1}}let k=P(()=>w.map(e=>({filename:e,...O(e,E(H(s)))})));function ee(e){return/^([/\\]|[a-zA-Z]:[\\/]|~)/.test(e)}function A(e,t){if(!e)return t;let n=e=>e.replace(/\\/g,`/`),r=n(e).split(`/`).filter(Boolean),i=n(t).split(`/`).filter(Boolean),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=r.length-a,s=i.slice(a).join(`/`),c=`../`.repeat(o)+s;return c.endsWith(`/`)&&(c=c.slice(0,-1)),c===``?`.`:c}async function te(){try{let e=await fetch(`/api/config`).then(e=>e.json());I(n,e.docsFolder||``,!0),I(r,e.port||``,!0),I(i,e.title||``,!0),I(a,e.theme||`system`,!0),I(o,e.language||`en`,!0),await da(H(o)),I(s,e.filenamePattern||``,!0),I(c,e.docsFolder&&e.sourceRoot?A(e.docsFolder,e.sourceRoot):``,!0),I(l,!!e.exclusiveFolderExpansion),I(u,!!e.exclusiveCategoryExpansion),I(d,typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,!0),I(f,!!e.markdownSoftBreaks),I(p,!!e.imageRoundedCorners),I(m,!!e.imageCentered),I(h,!!e.imageBorder),I(g,!!e.codeBlockLightTheme),I(_,(e.blockedFileExtensions||[]).join(` `),!0),I(v,e.extraFiles||[],!0);let t=[`c-white`,`c-gray`,`c-slate`,`c-blue`,`c-sky`,`c-cyan`,`c-teal`,`c-green`,`c-lime`,`c-amber`,`c-orange`,`c-red`,`c-rose`,`c-pink`,`c-purple`],x={"c-white":`#ffffff`,"c-gray":`#f5f5f4`,"c-slate":`#f1f5f9`,"c-blue":`#dbeafe`,"c-sky":`#e0f2fe`,"c-cyan":`#cffafe`,"c-teal":`#ccfbf1`,"c-green":`#dcfce7`,"c-lime":`#ecfccb`,"c-amber":`#fef9c3`,"c-orange":`#ffedd5`,"c-red":`#fee2e2`,"c-rose":`#ffe4e6`,"c-pink":`#fce7f3`,"c-purple":`#ede9fe`};I(y,Array.isArray(e.diagramNodePalette)&&e.diagramNodePalette.length?t.map((t,n)=>e.diagramNodePalette[n]||x[t]):t.map(e=>x[e]),!0),I(b,Array.isArray(e.diagramEdgePalette)&&e.diagramEdgePalette.length?[...e.diagramEdgePalette]:[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],!0),H(C).loadBrowse(e.docsFolder||`/`)}catch{re(`Failed to load configuration.`,`error`)}}async function ne(e){e.preventDefault();let t=H(s).trim();if(t){let e=(t.match(/\[Category\]/gi)||[]).length;if(e===0){re(`Pattern must include [Category].`,`error`);return}if(e>1){re(`Pattern must include [Category] only once.`,`error`);return}}if(H(c)!==``&&ee(H(c))){re(`Source root must be a relative path.`,`error`);return}let n=H(_).split(/[\s,]+/).map(e=>e.trim().replace(/^\.+/,``).toLowerCase()).filter(e=>/^[a-z0-9]+$/.test(e)),r={title:H(i),theme:H(a),language:H(o),filenamePattern:t,exclusiveFolderExpansion:H(l),exclusiveCategoryExpansion:H(u),codeBlockMaxHeight:Math.max(0,Math.min(5e3,H(d)||0)),markdownSoftBreaks:H(f),imageRoundedCorners:H(p),imageCentered:H(m),imageBorder:H(h),codeBlockLightTheme:H(g),diagramNodePalette:[...H(y)],diagramEdgePalette:[...H(b)],sourceRoot:H(c)===``?null:H(c),blockedFileExtensions:n};try{let e=await fetch(`/api/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(!e.ok)throw Error(await e.text());re(`Settings saved.`,`ok`)}catch(e){re(`Save failed: `+(e instanceof Error?e.message:String(e)),`error`)}}function re(e,t){I(x,{text:e,type:t},!0),S&&clearTimeout(S),t===`ok`&&(S=window.setTimeout(()=>{I(x,null)},3e3))}Bi(()=>{te()});var ie=xa(),ae=R(ie);{let e=P(()=>X(`admin.title`)),t=P(()=>X(`admin.config.title`));la(ae,{get title(){return H(e)},get subtitle(){return H(t)}})}var oe=B(ae,2),se=R(oe),ce=R(se),le=R(ce),ue=R(le),de=R(ue),fe=R(de,!0);N(de);var pe=B(de,2),me=R(pe,!0);N(pe),N(ue);var he=B(ue,2),ge=R(he),_e=e=>{var t=fa(),n=R(t,!0);N(t),V(()=>{mi(t,1,`save-msg save-msg--${H(x).type??``}`),K(n,H(x).text)}),G(e,t)};q(ge,e=>{H(x)&&e(_e)});var ve=B(ge,2),ye=R(ve,!0);N(ve),N(he),N(le),N(ce);var be=B(ce,2),xe=R(be);{let e=P(()=>X(`admin.section.general.title`)),t=P(()=>X(`admin.section.general.desc`));Ui(xe,{icon:`🌐`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var s=pa(),c=z(s),l=R(c),u=R(l),d=R(u,!0);N(u);var f=B(u,2),p=R(f,!0);N(f),N(l);var m=B(l,2),h=R(m),g=R(h,!0);N(h);var _=B(h,2),v=R(_,!0);N(_),N(m),N(c);var y=B(c,2),b=R(y),x=R(b,!0);N(b);var S=B(b,2);Ti(S);var C=B(S,2),w=R(C,!0);N(C),N(y);var T=B(y,2),E=R(T),D=R(E,!0);N(E);var O=B(E,2),k=R(O),ee=R(k,!0);N(k),k.value=k.__value=`system`;var A=B(k),te=R(A,!0);N(A),A.value=A.__value=`light`;var ne=B(A),re=R(ne,!0);N(ne),ne.value=ne.__value=`dark`,N(O);var ie=B(O,2),ae=R(ie,!0);N(ie),N(T);var oe=B(T,2),se=R(oe),ce=R(se,!0);N(se);var le=B(se,2),ue=R(le),de=R(ue,!0);N(ue),ue.value=ue.__value=`en`;var fe=B(ue),pe=R(fe,!0);N(fe),fe.value=fe.__value=`fr`,N(le);var me=B(le,2),he=R(me,!0);N(me),N(oe),V((e,t,i,a,o,s,c,l,u,f,m,h,_,y)=>{K(d,e),K(p,H(n)||`—`),K(g,t),K(v,H(r)||`—`),K(x,i),Y(S,`placeholder`,a),K(w,o),K(D,s),K(ee,c),K(te,l),K(re,u),K(ae,f),K(ce,m),K(de,h),K(pe,_),K(he,y)},[()=>X(`admin.server_info.docs_folder`),()=>X(`admin.server_info.port`),()=>X(`admin.appearance.site_title_label`),()=>X(`admin.appearance.site_title_placeholder`),()=>X(`admin.appearance.site_title_hint`),()=>X(`admin.appearance.theme_label`),()=>X(`admin.appearance.theme_system`),()=>X(`admin.appearance.theme_light`),()=>X(`admin.appearance.theme_dark`),()=>X(`admin.appearance.theme_hint`),()=>X(`admin.appearance.language_label`),()=>X(`admin.appearance.language_en`),()=>X(`admin.appearance.language_fr`),()=>X(`admin.appearance.language_hint`)]),ji(S,()=>H(i),e=>I(i,e)),yi(O,()=>H(a),e=>I(a,e)),U(`change`,le,()=>da(H(o))),yi(le,()=>H(o),e=>I(o,e)),G(e,s)},$$slots:{default:!0}})}var Se=B(xe,2);{let e=P(()=>X(`admin.section.filename.title`)),t=P(()=>X(`admin.section.filename.desc`));Ui(Se,{icon:`📝`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ha(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ti(o);var c=B(o,2),l=R(c),u=B(l),d=R(u,!0);N(u),N(c),N(r);var f=B(r,2),p=R(f),m=R(p,!0);N(p);var h=B(p,2),g=R(h,!0);N(h);var _=B(h,2);J(_,21,()=>H(k),Yr,(e,t)=>{var n=ma(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a),s=R(o),c=R(s,!0);N(s);var l=B(s,2),u=R(l,!0);N(l),N(o);var d=B(o,2),f=R(d),p=R(f,!0);N(f);var m=B(f,2),h=R(m,!0);N(m),N(d);var g=B(d,2),_=R(g),v=R(_,!0);N(_);var y=B(_,2),b=R(y,!0);N(y),N(g),N(a),N(n),V((e,n,r,a)=>{K(i,H(t).filename),K(c,e),mi(l,1,ci(H(t).date?`pattern-value--date`:`pattern-value--none`)),K(u,n),K(p,r),K(h,H(t).category),K(v,a),K(b,H(t).title)},[()=>X(`admin.pattern.col_date`),()=>H(t).date||X(`admin.pattern.col_none`),()=>X(`admin.pattern.col_category`),()=>X(`admin.pattern.col_title`)]),G(e,n)}),N(_),N(f),V((e,t,n,r,i)=>{K(a,e),Y(o,`placeholder`,t),K(l,`${n??``} `),K(d,(H(s)||`YYYY_MM_DD_HH_mm_[Category]_title`)+`.md`),K(m,r),K(g,i)},[()=>X(`admin.pattern.label`),()=>X(`admin.pattern.placeholder`),()=>X(`admin.pattern.hint`),()=>X(`admin.pattern.preview_title`),()=>X(`admin.pattern.preview_desc`)]),ji(o,()=>H(s),e=>I(s,e)),G(e,n)},$$slots:{default:!0}})}var j=B(Se,2);{let e=P(()=>X(`admin.section.source.title`)),t=P(()=>X(`admin.section.source.desc`));Ui(j,{icon:`📂`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var r=ga(),i=z(r),a=R(i),o=R(a,!0);N(a);var s=B(a,2);Ti(s);var l=B(s,2),u=R(l,!0);N(l),N(i),Ii(na(B(i,2),{get docsFolder(){return H(n)},get extraFiles(){return H(v)},onchange:e=>I(v,e,!0)}),e=>I(C,e,!0),()=>H(C)),V((e,t)=>{K(o,e),K(u,t)},[()=>X(`admin.server_info.source_root`),()=>X(`admin.server_info.source_root_hint`)]),ji(s,()=>H(c),e=>I(c,e)),G(e,r)},$$slots:{default:!0}})}var Ce=B(j,2);{let e=P(()=>X(`admin.section.sidebar.title`)),t=P(()=>X(`admin.section.sidebar.desc`));Ui(Ce,{icon:`🗂️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=_a(),r=z(n),i=R(r),a=R(i);Ti(a);var o=B(a,2),s=R(o,!0);N(o),N(i);var c=B(i,2),d=R(c,!0);N(c),N(r);var f=B(r,2),p=R(f),m=R(p);Ti(m);var h=B(m,2),g=R(h,!0);N(h),N(p);var _=B(p,2),v=R(_,!0);N(_),N(f),V((e,t,n,r)=>{K(s,e),K(d,t),K(g,n),K(v,r)},[()=>X(`admin.appearance.exclusive_folder_label`),()=>X(`admin.appearance.exclusive_folder_hint`),()=>X(`admin.appearance.exclusive_category_label`),()=>X(`admin.appearance.exclusive_category_hint`)]),Mi(a,()=>H(l),e=>I(l,e)),Mi(m,()=>H(u),e=>I(u,e)),G(e,n)},$$slots:{default:!0}})}var M=B(Ce,2);{let e=P(()=>X(`admin.section.markdown.title`)),t=P(()=>X(`admin.section.markdown.desc`));Ui(M,{icon:`✍️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=va(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ti(o);var s=B(o,2),c=R(s,!0);N(s),N(r);var l=B(r,2),u=R(l),_=R(u);Ti(_);var v=B(_,2),y=R(v,!0);N(v),N(u);var b=B(u,2);ii(b,()=>X(`admin.appearance.soft_breaks_hint`),!0),N(b),N(l);var x=B(l,2),S=R(x),C=R(S);Ti(C);var w=B(C,2),T=R(w,!0);N(w),N(S);var E=B(S,2),D=R(E,!0);N(E),N(x);var O=B(x,2),k=R(O),ee=R(k);Ti(ee);var A=B(ee,2),te=R(A,!0);N(A),N(k);var ne=B(k,2),re=R(ne,!0);N(ne),N(O);var ie=B(O,2),ae=R(ie),oe=R(ae);Ti(oe);var se=B(oe,2),ce=R(se,!0);N(se),N(ae);var le=B(ae,2),ue=R(le,!0);N(le),N(ie);var de=B(ie,2),fe=R(de),pe=R(fe);Ti(pe);var me=B(pe,2),he=R(me,!0);N(me),N(fe);var ge=B(fe,2),_e=R(ge,!0);N(ge),N(de),V((e,t,n,r,i,o,s,l,u,d,f)=>{K(a,e),K(c,t),K(y,n),K(T,r),K(D,i),K(te,o),K(re,s),K(ce,l),K(ue,u),K(he,d),K(_e,f)},[()=>X(`admin.appearance.code_max_height_label`),()=>X(`admin.appearance.code_max_height_hint`),()=>X(`admin.appearance.soft_breaks_label`),()=>X(`admin.appearance.image_rounded_label`),()=>X(`admin.appearance.image_rounded_hint`),()=>X(`admin.appearance.image_centered_label`),()=>X(`admin.appearance.image_centered_hint`),()=>X(`admin.appearance.image_border_label`),()=>X(`admin.appearance.image_border_hint`),()=>X(`admin.appearance.code_light_theme_label`),()=>X(`admin.appearance.code_light_theme_hint`)]),ji(o,()=>H(d),e=>I(d,e)),Mi(_,()=>H(f),e=>I(f,e)),Mi(C,()=>H(p),e=>I(p,e)),Mi(ee,()=>H(m),e=>I(m,e)),Mi(oe,()=>H(h),e=>I(h,e)),Mi(pe,()=>H(g),e=>I(g,e)),G(e,n)},$$slots:{default:!0}})}var we=B(M,2);{let e=P(()=>X(`admin.section.files.title`)),t=P(()=>X(`admin.files.description`));Ui(we,{icon:`📎`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ya(),r=R(n),i=R(r,!0);N(r);var a=B(r,2);vn(a),Y(a,`rows`,3);var o=B(a,2),s=R(o,!0);N(o),N(n),V((e,t)=>{K(i,e),K(s,t)},[()=>X(`admin.files.blocked_label`),()=>X(`admin.files.hint`)]),ji(a,()=>H(_),e=>I(_,e)),G(e,n)},$$slots:{default:!0}})}var Te=B(we,2);{let e=P(()=>X(`admin.section.diagram.title`)),t=P(()=>X(`admin.section.diagram.desc`));Ui(Te,{icon:`🎨`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{oa(e,{get nodePalette(){return H(y)},set nodePalette(e){I(y,e,!0)},get edgePalette(){return H(b)},set edgePalette(e){I(b,e,!0)}})},$$slots:{default:!0}})}var Ee=B(Te,2);{let e=P(()=>X(`admin.section.developer.title`)),t=P(()=>X(`admin.section.developer.desc`));Ui(Ee,{icon:`🛠️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ba(),r=R(n),i=B(R(r),2),a=R(i,!0);N(i),N(r);var o=B(r,2),s=R(o,!0);N(o),N(n),V((e,t)=>{K(a,e),K(s,t)},[()=>X(`admin.appearance.debug_label`),()=>X(`admin.appearance.debug_hint`)]),G(e,n)},$$slots:{default:!0}})}N(be),N(se);var De=B(se,2),Oe=R(De),ke=R(Oe),Ae=B(R(ke),2),je=R(Ae),Me=R(je,!0);N(je);var Ne=B(je,2),Pe=R(Ne,!0);N(Ne),N(Ae),N(ke);var Fe=B(ke,2),Ie=R(Fe);ii(Ie,()=>X(`admin.license.body`),!0),N(Ie);var Le=B(Ie,2),Re=R(Le),ze=B(R(Re));N(Re);var Be=B(Re,2),Ve=B(R(Be));N(Be),N(Le),N(Fe),N(Oe),N(De),N(oe),N(ie),V((e,t,n,r,i,a,o)=>{K(fe,e),K(me,t),K(ye,n),K(Me,r),K(Pe,i),K(ze,` ${a??``}`),K(Ve,` ${o??``}`)},[()=>X(`admin.config.title`),()=>X(`admin.config.description`),()=>X(`admin.config.save_btn`),()=>X(`admin.license.title`),()=>X(`admin.license.subtitle`),()=>X(`admin.license.linkedin_btn`),()=>X(`admin.license.npm_btn`)]),Mr(`submit`,se,ne),G(e,ie),Ke()}Nr([`change`]);var Ca=W(`<input class="cluster-tag-input"/>`),wa=W(`<button class="cluster-tag-label" type="button"> </button>`),Ta=W(`<button class="cluster-tag-del" type="button">×</button>`),Ea=W(`<div class="cluster-tag"><!> <!></div>`),Da=W(`<div class="empty-state"><p>No sub-folders found.</p></div>`),Oa=W(`<nav class="rail"><button class="tool-button" type="button">⌖</button> <button type="button">⠿</button> <button class="tool-button" type="button"></button> <button type="button">☰</button></nav> <canvas id="blueprintCanvas"></canvas> <div class="cluster-overlays"></div> <!>`,1);function ka(e,t){Ge(t,!0);let n=zi(t,`activeExplorerPath`,3,null),r=`#64748b`,i=`#3b82f6`,a,o,s=F(!0),c=F(!1),l=0,u=0,d=1,f=[],p=-1,m=-1,h=new Set,g=new Map,_={x:0,y:0},v=!1,y={x:0,y:0},b={x:0,y:0},x=``,S=!1,C=!1,w=!1,T=0,E=0,D=0,O=0,k=null,ee={},A=null,te=F(L([])),ne=null,re=F(0),ie=F(L([])),ae=F(null),oe=0,se=0,ce=0,le=0,ue=0,de=0,fe=0,pe=!1;function me(e){let t=0,n=0;return e.map(e=>{let r=ee[e.path],i=r?r.x:t*240,a=r?r.y:n*150;return r||(t++,t>=4&&(t=0,n++)),{folder:e,x:i,y:a,w:200,h:110}})}function he(e){if(!e.length)return{minX:0,minY:0,maxX:0,maxY:0};let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x+a.w),i=Math.max(i,a.y+a.h);return{minX:t,minY:n,maxX:r,maxY:i}}function ge(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t):``}function _e(e){let t=a.clientWidth,r=a.clientHeight;xe((n()===null?t:t/2)/2-(e.x+e.w/2)*d,r/2-(e.y+e.h/2)*d,d)}function ve(e){if(!f.length)return;let{minX:t,minY:n,maxX:r,maxY:i}=he(f),o=a.clientWidth,s=a.clientHeight,c=Math.min((o-160)/Math.max(1,r-t),(s-160)/Math.max(1,i-n),1.4),p=(t+r)/2,m=(n+i)/2,h=o/2-p*c,g=s/2-m*c;e?xe(h,g,c):(l=h,u=g,d=c)}function ye(e){let t=a.clientWidth,n=a.clientHeight,r=Math.min((t-160)/e.w,(n-160)/e.h,1.6),i=e.x+e.w/2,o=e.y+e.h/2;xe(t/2-i*r,n/2-o*r,r)}function be(e){return e<.5?2*e*e:-1+(4-2*e)*e}function xe(e,t,n){oe=l,se=u,ce=d,le=e,ue=t,de=n,fe=performance.now(),pe=!0,j()}function Se(e){let t=Math.min(1,(e-fe)/420),n=be(t);l=oe+(le-oe)*n,u=se+(ue-se)*n,d=ce+(de-ce)*n,t>=1&&(pe=!1)}function j(){k===null&&(k=requestAnimationFrame(Ce))}function Ce(e){k=null,pe&&(Se(e),j());let t=window.devicePixelRatio||1,n=a.clientWidth,r=a.clientHeight;(a.width!==n*t||a.height!==r*t)&&(a.width=n*t,a.height=r*t),o.save(),o.clearRect(0,0,a.width,a.height),o.scale(t,t),we(n,r),o.translate(l,u),o.scale(d,d),M();for(let e=0;e<f.length;e++)Ee(f[e],e===p,e===m,h.has(e));if(v){let e=Math.min(y.x,b.x),t=Math.min(y.y,b.y),n=Math.abs(b.x-y.x),r=Math.abs(b.y-y.y);o.strokeStyle=`#3b82f6`,o.lineWidth=1.5/d,o.fillStyle=`rgba(59,130,246,0.08)`,o.beginPath(),o.roundRect(e,t,n,r,6/d),o.fill(),o.stroke()}o.restore()}function M(){let e=[];for(let t of H(te)){let n=f.filter(e=>t.members.includes(e.folder.path));if(n.length===0)continue;let{minX:r,minY:i,maxX:a,maxY:s}=he(n),c=r-24,p=i-24,m=a-r+48,h=s-i+48;o.save(),o.strokeStyle=`#a78bfa`,o.globalAlpha=.55,o.lineWidth=1.5/d,o.setLineDash([8/d,6/d]),Te(c,p,m,h,18),o.stroke(),o.restore(),e.push({id:t.id,label:t.label,x:l+c*d+10*d,y:u+p*d})}I(ie,e,!0)}function we(e,t){let n=40*d,r=(l%n+n)%n,i=(u%n+n)%n;o.strokeStyle=`rgba(255,255,255,0.04)`,o.lineWidth=1,o.beginPath();for(let i=r;i<e;i+=n)o.moveTo(i,0),o.lineTo(i,t);for(let r=i;r<t;r+=n)o.moveTo(0,r),o.lineTo(e,r);o.stroke()}function Te(e,t,n,r,i){o.beginPath(),o.roundRect(e,t,n,r,i)}function Ee(e,t,r=!1,i=!1){let{x:a,y:s,w:c,h:l,folder:u}=e,f=u.hasChildren?`#1e293b`:`#172033`,p=n()===u.path,m=r?`#f59e0b`:i?`#fbbf24`:p?`#60a5fa`:t?`#3b82f6`:`rgba(255,255,255,0.12)`,h=t||r||i||p?2:1;o.save(),o.shadowColor=r?`rgba(245,158,11,0.4)`:`rgba(0,0,0,0.4)`,o.shadowBlur=r?36:t?24:12,Te(a,s,c,l,18),o.fillStyle=f,o.fill(),o.restore(),Te(a,s,c,l,18),o.strokeStyle=m,o.lineWidth=h/d,o.stroke(),o.fillStyle=p?`#60a5fa`:t?`#94a3b8`:`rgba(255,255,255,0.3)`,o.font=`${20*.7}px sans-serif`,o.textBaseline=`top`,o.textAlign=`left`,o.fillText(`☰`,a+10,s+10);let g=e.folder.hasDoc===!0,_=a+10+20+4;o.fillStyle=g?t?`#34d399`:`#10b981`:t?`#a78bfa`:`rgba(167,139,250,0.4)`,o.font=`bold ${20*.65}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`top`,o.textAlign=`left`,o.fillText(`D`,_,s+11),g||(o.font=`bold ${20*.5}px Inter, ui-sans-serif, sans-serif`,o.fillText(`+`,_+20*.6,s+7));let v=a+18;De(v,s+l/2-18/2-4,18,t);let y=Math.max(10,Math.min(14,120/u.name.length));o.fillStyle=t?`#fff`:`#f1f5f9`,o.font=`700 ${y}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`middle`,o.textAlign=`left`;let b=c-36-18-8,x=ke(u.name,b,y);o.fillText(x,v+18+8,s+l/2),u.hasChildren&&Oe(a+c-22,s+l/2,t)}function De(e,t,n,a){o.fillStyle=a?i:r,o.beginPath(),o.roundRect(e,t+n*.3,n,n*.7,2),o.fill(),o.beginPath(),o.roundRect(e,t+n*.2,n*.45,n*.18,2),o.fill()}function Oe(e,t,n){o.fillStyle=n?i:r,o.beginPath(),o.moveTo(e-6,t-6),o.lineTo(e+6,t),o.lineTo(e-6,t+6),o.closePath(),o.fill()}function ke(e,t,n){if(o.font=`700 ${n}px Inter, ui-sans-serif, sans-serif`,o.measureText(e).width<=t)return e;let r=e;for(;r.length>1&&o.measureText(r+`…`).width>t;)r=r.slice(0,-1);return r+`…`}async function Ae(){try{ee=await fetch(`/api/blueprint/positions`).then(e=>e.json())}catch{ee={}}}function je(){A!==null&&clearTimeout(A),A=window.setTimeout(()=>{A=null,fetch(`/api/blueprint/positions`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ee)})},600)}async function Me(){try{let e=await fetch(`/api/blueprint/clusters`).then(e=>e.json());I(te,Array.isArray(e)?e:[],!0)}catch{I(te,[],!0)}}function Ne(){ne!==null&&clearTimeout(ne),ne=window.setTimeout(()=>{ne=null,fetch(`/api/blueprint/clusters`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(H(te))})},600)}function Pe(){I(re,h.size,!0)}function Fe(){let e=[...h].map(e=>f[e]?.folder.path).filter(Boolean);if(e.length===0)return;let t=`cl_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,7)}`;I(te,[...H(te),{id:t,label:X(`blueprint.cluster.default_label`),members:e}],!0),Ne(),h.clear(),Pe(),j()}function Ie(e,t){I(te,H(te).map(n=>n.id===e?{...n,label:t}:n),!0),Ne(),j()}function Le(e){I(te,H(te).filter(t=>t.id!==e),!0),H(ae)===e&&I(ae,null),Ne(),j()}async function Re(e,n,r){try{let i=`/api/blueprint${e?`?path=${encodeURIComponent(e)}`:``}`,a=await fetch(i).then(e=>e.json()),o;if(!e)o=[{name:a.sourceRoot,path:``}];else{let t=e.split(`/`),n=``;o=[{name:a.sourceRoot,path:``}];for(let e of t)n=n?`${n}/${e}`:e,o.push({name:e,path:n})}t.onbreadcrumbchange(o),x=e,f=me(a.folders),I(s,f.length>0),r&&n?(ye(r),setTimeout(()=>ve(!0),420*.6)):ve(n),j()}catch(e){console.error(`Blueprint load error`,e)}}function ze(e,t){return{x:(e-l)/d,y:(t-u)/d}}function Be(e,t){for(let n=0;n<f.length;n++){let r=f[n];if(e>=r.x&&e<=r.x+r.w&&t>=r.y&&t<=r.y+r.h)return n}return-1}function Ve(e,t,n){return t>=e.x+6&&t<=e.x+6+20&&n>=e.y+6&&n<=e.y+6+20}function He(e,t,n){let r=e.x+10+20+4;return t>=r&&t<=r+20&&n>=e.y+6&&n<=e.y+6+20}async function Ue(e){let t=ge(e);x!==t&&await Re(t,!0);let n=f.find(t=>t.folder.path===e);n&&(_e(n),j())}function We(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;if(S&&m>=0&&H(c)){let{x:e,y:t}=ze(n,r),i=e-_.x,a=t-_.y;Math.hypot(i,a)>6/d&&(w=!0);let o=h.has(m)&&h.size>1?[...h]:[m];for(let e of o){let t=g.get(e);t&&(f[e].x=t.x+i,f[e].y=t.y+a)}j();return}if(v){b=ze(n,r),j();return}if(C){let e=n-T,t=r-E;Math.hypot(e,t)>6&&(w=!0),l=D+e,u=O+t,j();return}let{x:i,y:o}=ze(n,r),s=Be(i,o);s!==p&&(p=s,a.style.cursor=s>=0&&H(c)?`grab`:s>=0?`pointer`:`default`,j())}function qe(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,{x:i,y:o}=ze(n,r),s=Be(i,o);T=n,E=r,w=!1,a.setPointerCapture(e.pointerId),s>=0?(m=s,S=!0,_={x:i,y:o},g=new Map(f.map((e,t)=>[t,{x:e.x,y:e.y}])),i-f[s].x,o-f[s].y,H(c)&&(a.style.cursor=`grabbing`)):H(c)&&e.shiftKey?(v=!0,y={x:i,y:o},b={x:i,y:o},a.style.cursor=`crosshair`):(C=!0,D=l,O=u)}function Je(e){let r=a.getBoundingClientRect(),i=e.clientX-r.left,o=e.clientY-r.top;if(a.releasePointerCapture(e.pointerId),S){if(S=!1,a.style.cursor=H(c)?`grab`:`pointer`,w){let e=h.has(m)&&h.size>1?[...h]:[m];for(let t of e){let e=f[t];ee[e.folder.path]={...ee[e.folder.path]??{},x:e.x,y:e.y}}je()}else{let r=f[m],{x:a,y:s}=ze(i,o);H(c)&&e.shiftKey?(h.has(m)?h.delete(m):h.add(m),Pe(),j()):H(c)?(h.clear(),h.add(m),Pe(),j()):He(r,a,s)?t.onopenAdr(r):Ve(r,a,s)?n()===r.folder.path?t.onclosefilerexplorer():t.onopenexplorer(r):r.folder.hasChildren&&(t.onclosefilerexplorer(),Re(r.folder.path,!0,r))}m=-1;return}if(v){v=!1,a.style.cursor=`crosshair`;let e=Math.min(y.x,b.x),t=Math.min(y.y,b.y),n=Math.max(y.x,b.x),r=Math.max(y.y,b.y);if(n-e>4||r-t>4)for(let i=0;i<f.length;i++){let a=f[i];a.x<n&&a.x+a.w>e&&a.y<r&&a.y+a.h>t&&h.add(i)}Pe(),j();return}if(C){C=!1;let e=i-T,t=o-E;Math.hypot(e,t)<=6&&H(c)&&(h.clear(),Pe(),j())}}function Ye(e){e.preventDefault();let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=1-e.deltaY*.0018,o=Math.max(.15,Math.min(4,d*i));l=n-(n-l)*(o/d),u=r-(r-u)*(o/d),d=o,j()}function Xe(){ve(!0)}function Ze(){let e=x?x.split(`/`).pop():``;t.onopenexplorer({folder:{name:e,path:x,hasChildren:!0},x:0,y:0,w:0,h:0})}function Qe(){I(c,!H(c)),H(c)||(h.clear(),Pe(),j()),a.style.cursor=H(c)&&p>=0?`grab`:`default`}Bi(()=>(o=a.getContext(`2d`),window.addEventListener(`resize`,j),Promise.all([Ae(),Me()]).then(async()=>{await Re(``,!1)}),()=>{window.removeEventListener(`resize`,j)}));var $e={centerOnBox:_e,loadPath:Re,navigateToFolder:Ue},et=Oa(),tt=z(et),nt=R(tt),rt=B(nt,2);let it;var at=B(rt,2);at.textContent=`⬚︎`;var ot=B(at,2);let st;N(tt);var ct=B(tt,2);Ii(ct,e=>a=e,()=>a);var lt=B(ct,2);J(lt,21,()=>H(ie),e=>e.id,(e,t)=>{var n=Ea(),r=R(n),i=e=>{var n=Ca();Ti(n),_n(n,!0),V(()=>Ei(n,H(t).label)),U(`keydown`,n,e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&I(ae,null)}),Mr(`blur`,n,e=>{Ie(H(t).id,e.currentTarget.value.trim()||H(t).label),I(ae,null)}),G(e,n)},a=e=>{var n=wa(),r=R(n,!0);N(n),V((e,t)=>{Y(n,`title`,e),K(r,t)},[()=>X(`blueprint.cluster.rename`),()=>H(t).label||X(`blueprint.cluster.default_label`)]),U(`click`,n,()=>I(ae,H(t).id,!0)),G(e,n)};q(r,e=>{H(ae)===H(t).id?e(i):e(a,-1)});var o=B(r,2),s=e=>{var n=Ta();V(e=>Y(n,`title`,e),[()=>X(`blueprint.cluster.delete`)]),U(`click`,n,()=>Le(H(t).id)),G(e,n)};q(o,e=>{H(c)&&e(s)}),N(n),V(()=>gi(n,`left:${H(t).x??``}px; top:${H(t).y??``}px;`)),G(e,n)}),N(lt);var ut=B(lt,2),dt=e=>{G(e,Da())};return q(ut,e=>{H(s)||e(dt)}),V((e,t,r,i)=>{Y(nt,`title`,e),it=mi(rt,1,`tool-button`,null,it,{active:H(c)}),Y(rt,`title`,t),Y(at,`title`,r),st=mi(ot,1,`tool-button`,null,st,{active:n()===x}),Y(ot,`title`,i)},[()=>X(`blueprint.canvas.fit_view`),()=>X(`blueprint.canvas.drag_mode`),()=>X(`blueprint.canvas.create_cluster`),()=>X(`blueprint.canvas.browse_current`)]),U(`click`,nt,Xe),U(`click`,rt,Qe),U(`click`,at,Fe),U(`click`,ot,Ze),U(`pointermove`,ct,We),U(`pointerdown`,ct,qe),U(`pointerup`,ct,Je),Mr(`wheel`,ct,Ye),G(e,et),Ke($e)}Nr([`click`,`pointermove`,`pointerdown`,`pointerup`,`keydown`]);var Aa=W(`<button class="explorer-breadcrumb-item" type="button">~</button>`),ja=W(`<span class="explorer-breadcrumb-item current">~</span>`),Ma=W(`<span class="explorer-breadcrumb-item current"> </span>`),Na=W(`<button class="explorer-breadcrumb-item" type="button"> </button>`),Pa=W(`<span class="explorer-breadcrumb-sep">/</span> <!>`,1),Fa=W(`<div class="explorer-section-label"> </div>`),Ia=W(`<button class="explorer-item is-folder" type="button"><span class="explorer-item-icon">📁</span> <span class="explorer-item-name"> </span></button>`),La=W(`<div class="explorer-section-label with-action"><span> </span> <button type="button" data-testid="copy-blueprint-folders"><i aria-hidden="true"></i></button></div> <!>`,1),Ra=W(`<button class="explorer-item is-file" type="button"><span class="explorer-item-icon">📄</span> <span class="explorer-item-name"> </span></button>`),za=W(`<div class="explorer-section-label with-action"><span> </span> <button type="button" data-testid="copy-blueprint-files"><i aria-hidden="true"></i></button></div> <!>`,1),Ba=W(`<!> <!>`,1),Va=W(`<p class="file-preview-placeholder"> </p>`),Ha=W(`<p class="file-preview-name"> </p> <p class="file-preview-placeholder"> </p>`,1),Ua=W(`<p class="file-preview-name"> </p> <span class="file-preview-binary"> </span>`,1),Wa=W(`<p class="file-preview-name"> </p> <img/>`,1),Ga=W(`<p class="file-preview-name"> </p> <video controls=""></video>`,3),Ka=W(`<span class="file-preview-truncated"> </span>`),qa=W(`<p class="file-preview-name"> </p> <!> <pre><code> </code></pre>`,1),Ja=W(`<aside class="file-explorer"><header class="explorer-header"><div class="explorer-breadcrumb"><!> <!></div> <button class="explorer-close" type="button">×</button></header> <div class="explorer-top"><div class="explorer-list"><!></div></div> <div class="explorer-divider"></div> <div class="explorer-bottom"><div class="file-preview"><!></div></div></aside>`);function Ya(e,t){Ge(t,!0);let n=F(``),r=F(L([])),i=F(L([])),a=F(!1),o=F(!1),s=F(null),c=F(L({status:`idle`}));function l(e){return e?e.split(`/`).map((e,t,n)=>({name:e,path:n.slice(0,t+1).join(`/`),isLast:t===n.length-1})):[]}async function u(e){I(n,e,!0),I(c,{status:`idle`},!0),await d(e)}async function d(e){I(n,e,!0),I(a,!0),I(o,!1);try{let t=await fetch(`/api/blueprint/files?path=${encodeURIComponent(e)}`).then(e=>e.json());I(r,t.folders,!0),I(i,t.files,!0)}catch{I(o,!0),I(r,[],!0),I(i,[],!0)}finally{I(a,!1)}}async function f(e){t.onnavigate(e),await d(e)}async function p(e,t){I(c,{status:`loading`,name:t},!0);try{let n=await fetch(`/api/blueprint/file-content?path=${encodeURIComponent(e)}`).then(e=>e.json());n.type===`image`?I(c,{status:`image`,name:t,url:n.url},!0):n.type===`video`?I(c,{status:`video`,name:t,url:n.url},!0):n.type===`binary`?I(c,{status:`binary`,name:t},!0):n.type===`text`&&n.content!==void 0&&(I(c,{status:`text`,name:t,content:n.content,language:n.language,truncated:n.truncated},!0),setTimeout(()=>{let e=document.querySelector(`.file-preview code`);e&&window.hljs&&(window.hljs.highlightElement(e),window.hljs.lineNumbersBlock&&window.hljs.lineNumbersBlock(e))},0))}catch{I(c,{status:`error`,name:t},!0)}}function m(e){return H(n)?`${H(n)}/${e}`:e}async function h(e,t){if(t.length)try{await navigator.clipboard.writeText(t.join(`
|
|
3
3
|
`)),I(s,e,!0),setTimeout(()=>{H(s)===e&&I(s,null)},1800)}catch{}}var g={open:u},_=Ja(),v=R(_),y=R(v),b=R(y),x=e=>{var t=Aa();U(`click`,t,()=>f(``)),G(e,t)},S=e=>{G(e,ja())};q(b,e=>{H(n)?e(x):e(S,-1)}),J(B(b,2),17,()=>l(H(n)),Yr,(e,t)=>{var n=Pa(),r=B(z(n),2),i=e=>{var n=Ma(),r=R(n,!0);N(n),V(()=>K(r,H(t).name)),G(e,n)},a=e=>{var n=Na(),r=R(n,!0);N(n),V(()=>K(r,H(t).name)),U(`click`,n,()=>f(H(t).path)),G(e,n)};q(r,e=>{H(t).isLast?e(i):e(a,-1)}),G(e,n)}),N(y);var C=B(y,2);N(v);var w=B(v,2),T=R(w),E=R(T),D=e=>{var t=Fa(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.explorer.loading`)]),G(e,t)},O=e=>{var t=Fa(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.explorer.error`)]),G(e,t)},k=e=>{var t=Fa(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.explorer.empty`)]),G(e,t)},ee=e=>{var t=Ba(),n=z(t),a=e=>{var t=La(),n=z(t),i=R(n),a=R(i,!0);N(i);var o=B(i,2),c=R(o);N(o),N(n),J(B(n,2),17,()=>H(r),Yr,(e,t)=>{var n=Ia(),r=B(R(n),2),i=R(r,!0);N(r),N(n),V(()=>K(i,H(t))),U(`click`,n,()=>f(m(H(t)))),G(e,n)}),V((e,t)=>{K(a,e),mi(o,1,`explorer-copy-btn ${H(s)===`folders`?`copied`:``}`),Y(o,`title`,t),mi(c,1,`fa-${H(s)===`folders`?`solid fa-check`:`regular fa-copy`}`)},[()=>X(`blueprint.explorer.folders`),()=>X(`blueprint.explorer.copy_folders`)]),U(`click`,o,()=>h(`folders`,H(r))),G(e,t)};q(n,e=>{H(r).length&&e(a)});var o=B(n,2),c=e=>{var t=za(),n=z(t),r=R(n),a=R(r,!0);N(r);var o=B(r,2),c=R(o);N(o),N(n),J(B(n,2),17,()=>H(i),Yr,(e,t)=>{var n=Ra(),r=B(R(n),2),i=R(r,!0);N(r),N(n),V(()=>K(i,H(t))),U(`click`,n,()=>p(m(H(t)),H(t))),G(e,n)}),V((e,t)=>{K(a,e),mi(o,1,`explorer-copy-btn ${H(s)===`files`?`copied`:``}`),Y(o,`title`,t),mi(c,1,`fa-${H(s)===`files`?`solid fa-check`:`regular fa-copy`}`)},[()=>X(`blueprint.explorer.files`),()=>X(`blueprint.explorer.copy_files`)]),U(`click`,o,()=>h(`files`,H(i))),G(e,t)};q(o,e=>{H(i).length&&e(c)}),G(e,t)};q(E,e=>{H(a)?e(D):H(o)?e(O,1):H(r).length===0&&H(i).length===0?e(k,2):e(ee,-1)}),N(T),N(w);var A=B(w,4),te=R(A),ne=R(te),re=e=>{var t=Va(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.preview.placeholder`)]),G(e,t)},ie=e=>{var t=Ha(),n=z(t),r=R(n,!0);N(n);var i=B(n,2),a=R(i,!0);N(i),V(e=>{K(r,H(c).name),K(a,e)},[()=>X(`blueprint.preview.loading`)]),G(e,t)},ae=e=>{var t=Ha(),n=z(t),r=R(n,!0);N(n);var i=B(n,2),a=R(i,!0);N(i),V(e=>{K(r,H(c).name),K(a,e)},[()=>X(`blueprint.preview.error`)]),G(e,t)},oe=e=>{var t=Ua(),n=z(t),r=R(n,!0);N(n);var i=B(n,2),a=R(i,!0);N(i),V(e=>{K(r,H(c).name),K(a,e)},[()=>X(`blueprint.preview.binary`)]),G(e,t)},se=e=>{var t=Wa(),n=z(t),r=R(n,!0);N(n);var i=B(n,2);V(()=>{K(r,H(c).name),Y(i,`src`,H(c).url),Y(i,`alt`,H(c).name)}),G(e,t)},ce=e=>{var t=Ga(),n=z(t),r=R(n,!0);N(n);var i=B(n,2);V(()=>{K(r,H(c).name),Y(i,`src`,H(c).url)}),G(e,t)},le=e=>{var t=qa(),n=z(t),r=R(n,!0);N(n);var i=B(n,2),a=e=>{var t=Ka(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.preview.truncated`)]),G(e,t)};q(i,e=>{H(c).truncated&&e(a)});var o=B(i,2),s=R(o),l=R(s,!0);N(s),N(o),V(()=>{K(r,H(c).name),mi(s,1,ci(H(c).language&&H(c).language!==`plaintext`?`language-${H(c).language}`:``)),K(l,H(c).content)}),G(e,t)};return q(ne,e=>{H(c).status===`idle`?e(re):H(c).status===`loading`?e(ie,1):H(c).status===`error`?e(ae,2):H(c).status===`binary`?e(oe,3):H(c).status===`image`?e(se,4):H(c).status===`video`?e(ce,5):H(c).status===`text`&&e(le,6)}),N(te),N(A),N(_),U(`click`,C,function(...e){t.onclose?.apply(this,e)}),G(e,_),Ke(g)}Nr([`click`]);function Xa(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function Za(){try{let e=parseInt(localStorage.getItem(`ld-highlight-status`)||`0`,10);return e===1||e===2?e:0}catch{return 0}}var Z=new class{#e;get allDocs(){return H(this.#e)}set allDocs(e){I(this.#e,e,!0)}#t;get allFolderPaths(){return H(this.#t)}set allFolderPaths(e){I(this.#t,e,!0)}#n;get annotationCounts(){return H(this.#n)}set annotationCounts(e){I(this.#n,e,!0)}#r;get fileAttachmentCounts(){return H(this.#r)}set fileAttachmentCounts(e){I(this.#r,e,!0)}#i;get docStatuses(){return H(this.#i)}set docStatuses(e){I(this.#i,e,!0)}#a;get currentDocId(){return H(this.#a)}set currentDocId(e){I(this.#a,e,!0)}#o;get searchQuery(){return H(this.#o)}set searchQuery(e){I(this.#o,e,!0)}#s;get searchResults(){return H(this.#s)}set searchResults(e){I(this.#s,e,!0)}#c;get expandedCategories(){return H(this.#c)}set expandedCategories(e){I(this.#c,e,!0)}#l;get expandedFolders(){return H(this.#l)}set expandedFolders(e){I(this.#l,e,!0)}#u;get hideCategories(){return H(this.#u)}set hideCategories(e){I(this.#u,e,!0)}#d;get hideAttachments(){return H(this.#d)}set hideAttachments(e){I(this.#d,e,!0)}#f;get highlightStatusState(){return H(this.#f)}set highlightStatusState(e){I(this.#f,e,!0)}#p;get exclusiveFolderExpansion(){return H(this.#p)}set exclusiveFolderExpansion(e){I(this.#p,e,!0)}#m;get exclusiveCategoryExpansion(){return H(this.#m)}set exclusiveCategoryExpansion(e){I(this.#m,e,!0)}#h;get codeBlockMaxHeight(){return H(this.#h)}set codeBlockMaxHeight(e){I(this.#h,e,!0)}#g;get imageRoundedCorners(){return H(this.#g)}set imageRoundedCorners(e){I(this.#g,e,!0)}#_;get imageCentered(){return H(this.#_)}set imageCentered(e){I(this.#_,e,!0)}#v;get imageBorder(){return H(this.#v)}set imageBorder(e){I(this.#v,e,!0)}#y;get codeBlockLightTheme(){return H(this.#y)}set codeBlockLightTheme(e){I(this.#y,e,!0)}#b;get markerState(){return H(this.#b)}set markerState(e){I(this.#b,e,!0)}constructor(){this.#e=F(L([])),this.#t=F(L([])),this.#n=F(L({})),this.#r=F(L({})),this.#i=F(L({})),this.#a=F(null),this.#o=F(``),this.#s=F(null),this.#c=F(L(new Set)),this.#l=F(L(new Set)),this.#u=F(L(Xa(`ld-hide-categories`))),this.#d=F(L(Xa(`ld-hide-attachments`))),this.#f=F(L(Za())),this.#p=F(!1),this.#m=F(!1),this.#h=F(400),this.#g=F(!1),this.#_=F(!1),this.#v=F(!1),this.#y=F(!1),this.#b=F(`normal`)}get markerActive(){return this.markerState===`active`}get markerHidden(){return this.markerState===`hidden`}initMarker(){let e=`normal`;try{e=localStorage.getItem(`ld-marker-state`)||`normal`}catch{}this.markerState=e===`active`?`active`:e===`hidden`?`hidden`:`normal`}toggleMarker(){this.markerState===`normal`?this.markerState=`active`:this.markerState===`active`?this.markerState=`hidden`:this.markerState=`normal`;try{localStorage.setItem(`ld-marker-state`,this.markerState)}catch{}return this.markerState}get filteredDocs(){if(!this.searchQuery)return this.allDocs;if(Array.isArray(this.searchResults))return this.searchResults;let e=e=>e.normalize(`NFD`).replace(/[̀-ͯ]/g,``).toLowerCase(),t=e(this.searchQuery);return this.allDocs.filter(n=>e(n.title).includes(t)||e(n.category).includes(t))}toggleHideCategories(){this.hideCategories=!this.hideCategories;try{localStorage.setItem(`ld-hide-categories`,this.hideCategories?`1`:`0`)}catch{}}toggleHideAttachments(){this.hideAttachments=!this.hideAttachments;try{localStorage.setItem(`ld-hide-attachments`,this.hideAttachments?`1`:`0`)}catch{}}cycleHighlightStatus(){this.highlightStatusState=(this.highlightStatusState+1)%3;try{localStorage.setItem(`ld-highlight-status`,String(this.highlightStatusState))}catch{}}toggleCategory(e){let t=new Set(this.expandedCategories);if(t.has(e))t.delete(e);else{if(this.exclusiveCategoryExpansion){let n=e.split(`|`).slice(0,-1).join(`|`);for(let e of[...t])e.split(`|`).slice(0,-1).join(`|`)===n&&t.delete(e)}t.add(e)}this.expandedCategories=t}toggleFolder(e){let t=new Set(this.expandedFolders);if(t.has(e)){t.delete(e);let n=e+`|`;for(let e of[...t])e.startsWith(n)&&t.delete(e);let r=new Set(this.expandedCategories);for(let e of[...r])e.startsWith(n)&&r.delete(e);this.expandedCategories=r}else{if(this.exclusiveFolderExpansion){let n=e.split(`|`).slice(0,-1).join(`|`);for(let e of[...t])if(e.split(`|`).slice(0,-1).join(`|`)===n){t.delete(e);let n=e+`|`;for(let e of[...t])e.startsWith(n)&&t.delete(e)}}t.add(e)}this.expandedFolders=t}revealDoc(e){let t=new Set(this.expandedFolders),n=new Set(this.expandedCategories),r=e.folder||[];for(let e=0;e<r.length;e++)t.add(r.slice(0,e+1).join(`|`));n.add([...r,e.category].join(`|`)),this.expandedFolders=t,this.expandedCategories=n}},Qa=`(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}(?:\\|[^\\n]*\\|\\n)\\|[ \\t:|-]*-[ \\t:|-]*\\|(?:\\n\\|[^\\n]*\\|)*`;function $a(){return Qa}var eo=new Set([`compact`,`striped`]),to=new Set([`bordered`,`borderless`]),no=new Set([`bordered`,`borderless`]),ro=new Set([`info`,`success`,`warning`,`danger`,`note`]);function io(e){let t=null,n=null,r=null,i=/<!--\s*table-(style|border|color):\s*([a-z][a-z0-9_-]*)\s*-->/g,a;for(;a=i.exec(e||``);){let[,e,i]=a;e===`style`&&eo.has(i)&&(t=i),e===`style`&&no.has(i)&&(n=i),e===`border`&&to.has(i)&&(n=i),e===`color`&&ro.has(i)&&(r=i)}return{style:t,border:n,color:r}}function ao(e){let t=typeof e==`string`?e.trim():``,n=RegExp(`^(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}`);return io(t.match(n)?.[0]||``)}function oo(e){let t=io([e?.style?`<!-- table-style: ${e.style} -->`:``,e?.border?`<!-- table-border: ${e.border} -->`:``,e?.color?`<!-- table-color: ${e.color} -->`:``].filter(Boolean).join(`
|
|
4
4
|
`)),n=[];return t.style&&n.push(`<!-- table-style: ${t.style} -->`),t.border===`bordered`&&n.push(`<!-- table-border: bordered -->`),t.color&&n.push(`<!-- table-color: ${t.color} -->`),n.join(`
|
|
5
5
|
`)}function so(e){return e.trim().split(`|`).slice(1,-1).map(e=>e.trim())}function co(e){let t=so(e);return t.length>0&&t.every(e=>/^:?-+:?$/.test(e.replace(/\s+/g,``)))}function lo(e){let t=(typeof e==`string`?e.trim():``).replace(RegExp(`^(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}`),``).split(`
|
|
@@ -147,7 +147,7 @@ Texte`};case`link`:return{text:Se(`snip-link-text`),textFallback:X(`snippet.link
|
|
|
147
147
|
</html>`,f=window.open(``,`_blank`);if(!f){alert(X(`error.pdf_popup`));return}f.document.write(d),f.document.close(),t.onclose()}catch(e){alert(X(`error.pdf_export`)+(e instanceof Error?e.message:String(e)))}finally{I(d,!1)}}let y=`px-4 py-2 text-sm border-b-2 border-blue-500 text-blue-600 dark:text-blue-400 font-semibold transition-colors`,b=`px-4 py-2 text-sm text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition-colors`;var x=Ur(),S=z(x),C=e=>{var r=hg(),f=R(r),p=R(f),h=B(R(p),2),x=R(h,!0);N(h),N(p);var S=B(p,2),C=R(S),w=R(C,!0);N(C);var T=B(C,2),E=R(T,!0);N(T);var D=B(T,2),O=R(D,!0);N(D),N(S);var k=B(S,2),ee=e=>{var t=fg(),n=R(t),r=R(n),c=e=>{var t=lg(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`common.loading`)]),G(e,t)},l=e=>{var t=ug(),n=R(t);N(t),V(e=>K(n,`${e??``}failed to load folders`),[()=>X(`common.error_prefix`)]),G(e,t)},u=e=>{var t=Ur();J(z(t),16,()=>H(o),e=>e,(e,t)=>{var n=dg(),r=R(n);Ti(r);var i,a=B(r,2),o=R(a,!0);N(a),N(n),V(()=>{i!==(i=t)&&(r.value=(r.__value=t)??``),K(o,t)}),Mi(r,()=>H(s)[t],e=>H(s)[t]=e),G(e,n)}),G(e,t)};q(r,e=>{H(i)?e(c):H(a)?e(l,1):e(u,-1)}),N(n),N(t),G(e,t)};q(k,e=>{H(n)===`html`&&e(ee)});var A=B(k,2),te=e=>{var n=pg(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a),s=R(o,!0);N(o);var l=B(o,2),u=R(l,!0);N(l),N(a),N(n),V((e,t,n)=>{K(i,e),K(s,t),l.disabled=H(c),K(u,n)},[()=>X(`modal.export.markdown_hint`),()=>X(`common.cancel`),()=>H(c)?`⏳`:X(`modal.export.markdown_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),U(`click`,l,g),G(e,n)};q(A,e=>{H(n)===`markdown`&&e(te)});var ne=B(A,2),re=e=>{var n=mg(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a),s=R(o,!0);N(o);var c=B(o,2),d=R(c,!0);N(c);var f=B(c,2),p=R(f,!0);N(f),N(a),N(n),V((e,t,n,r)=>{K(i,e),K(s,t),c.disabled=H(l),K(d,n),f.disabled=H(u),K(p,r)},[()=>X(`modal.export_html.hint`),()=>X(`common.cancel`),()=>H(l)?`⏳`:X(`modal.export_html.notion_btn`),()=>H(u)?`⏳`:X(`modal.export_html.confluence_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),U(`click`,c,()=>_(`notion`)),U(`click`,f,()=>_(`confluence`)),G(e,n)};q(ne,e=>{H(n)===`html`&&e(re)});var ie=B(ne,2),ae=e=>{var n=pg(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a),s=R(o,!0);N(o);var c=B(o,2),l=R(c,!0);N(c),N(a),N(n),V((e,t,n)=>{K(i,e),K(s,t),c.disabled=H(d),K(l,n)},[()=>X(`modal.export.pdf_hint`),()=>X(`common.cancel`),()=>H(d)?`⏳`:X(`modal.export.pdf_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),U(`click`,c,v),G(e,n)};q(ie,e=>{H(n)===`pdf`&&e(ae)}),N(f),N(r),V((e,t,r,i)=>{K(x,e),mi(C,1,ci(H(n)===`markdown`?y:b)),K(w,t),mi(T,1,ci(H(n)===`html`?y:b)),K(E,r),mi(D,1,ci(H(n)===`pdf`?y:b)),K(O,i)},[()=>X(`modal.export.title`),()=>X(`modal.export.tab_markdown`),()=>X(`modal.export.tab_html`),()=>X(`modal.export.tab_pdf`)]),U(`click`,r,e=>{e.target===e.currentTarget&&t.onclose()}),U(`click`,C,()=>m(`markdown`)),U(`click`,T,()=>m(`html`)),U(`click`,D,()=>m(`pdf`)),G(e,r)};q(S,e=>{t.open&&e(C)}),G(e,x),Ke()}Nr([`click`]);var _g=W(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),vg=W(`<p> </p>`),yg=W(`<div class="group flex items-center hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><button class="flex-1 flex items-center gap-2 px-3 py-2 text-sm text-left"><span class="text-gray-400 shrink-0">📁</span> <span class="text-gray-700 dark:text-gray-300 truncate"> </span></button> <button title="Add to exclusions" class="shrink-0 text-red-400 hover:text-red-600 px-3 py-2 text-sm font-bold transition-colors">⊖</button></div>`),bg=W(`<div class="group flex items-center hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><span class="flex-1 flex items-center gap-2 px-3 py-2 text-sm text-gray-500 dark:text-gray-400"><span class="shrink-0 opacity-40">📄</span> <span class="truncate font-mono"> </span></span> <button title="Add to exclusions" class="shrink-0 text-red-400 hover:text-red-600 px-3 py-2 text-sm font-bold transition-colors">⊖</button></div>`),xg=W(`<div class="border-t border-gray-200 dark:border-gray-700"><div class="flex items-center gap-2 px-3 py-2 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700"><button class="text-xs text-blue-600 dark:text-blue-400 hover:underline disabled:opacity-30 disabled:pointer-events-none shrink-0">↑ Up</button> <span class="font-mono text-xs text-gray-400 dark:text-gray-500 truncate flex-1 text-right"> </span></div> <div class="divide-y divide-gray-100 dark:divide-gray-800 max-h-52 overflow-y-auto"><!></div></div>`),Sg=W(`<label class="flex items-center gap-1.5 text-xs text-gray-700 dark:text-gray-300 cursor-pointer"><input type="checkbox"/> </label>`),Cg=W(`<div class="group flex items-center hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><button class="flex-1 flex items-center gap-2 px-3 py-2 text-sm text-left"><span class="text-gray-400 shrink-0">📁</span> <span class="text-gray-700 dark:text-gray-300 truncate"> </span></button> <button title="Exclude this folder" class="shrink-0 opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 px-3 py-2 text-sm transition-opacity">⊖</button></div>`),wg=W(`<button class="w-full px-3 py-2 text-xs text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-950/30 text-left font-medium border-t border-gray-100 dark:border-gray-800">✓ Select: <span class="font-mono"> </span></button>`),Tg=W(`<!> <!>`,1),Eg=W(`<div> </div>`),Dg=W(`<div> </div> <div> </div> <div> </div> <!>`,1),Og=W(`<div role="button" tabindex="0" class="flex items-center gap-2 px-3 py-1 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors"><span class="text-gray-400 dark:text-gray-600 w-5 text-right shrink-0 tabular-nums text-xs"></span> <div class="flex-1 min-w-0"><div class="flex items-center justify-between gap-1"><span class="text-gray-800 dark:text-gray-200 font-medium truncate text-xs"> </span> <span class="text-gray-400 dark:text-gray-600 tabular-nums shrink-0 text-xs"> </span></div> <div class="h-1 bg-gray-100 dark:bg-gray-800 rounded-full mt-0.5"><div class="h-1 bg-blue-400 dark:bg-blue-600 rounded-full"></div></div></div></div>`),kg=W(`<div class="w-56 shrink-0 border-r border-gray-200 dark:border-gray-800 flex flex-col bg-white dark:bg-gray-900 overflow-hidden"><div class="px-3 py-2 text-xs text-gray-500 dark:text-gray-400 space-y-0.5 border-b border-gray-100 dark:border-gray-800"><!></div> <div class="px-3 py-2 border-b border-gray-100 dark:border-gray-800 flex items-center gap-2"><span class="text-xs text-gray-500 dark:text-gray-400 shrink-0 cursor-help"> </span> <input type="number" min="1" max="20" class="w-12 px-1.5 py-0.5 text-xs rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-800 dark:text-gray-200 focus:outline-none"/> <button class="text-xs text-blue-600 dark:text-blue-400 hover:underline"> </button></div> <p class="px-3 pt-2 pb-1 text-xs font-semibold text-gray-400 dark:text-gray-600 uppercase tracking-wider"> </p> <div class="flex-1 overflow-y-auto"></div></div>`),Ag=W(`<p class="absolute inset-0 flex items-center justify-center text-gray-400 dark:text-gray-500 text-sm animate-pulse"> </p>`),jg=W(`<div class="flex items-center gap-1 group py-0.5"><span class="text-gray-600 dark:text-gray-400 break-all font-mono flex-1 text-xs"> </span> <button title="Exclude this file" class="shrink-0 opacity-0 group-hover:opacity-100 text-red-400 hover:text-red-600 text-xs leading-none px-1 transition-opacity">⊖</button></div>`),Mg=W(`<div class="text-gray-400 text-center py-2">—</div>`),Ng=W(`<div class="w-80 shrink-0 border-l border-gray-200 dark:border-gray-800 flex flex-col bg-white dark:bg-gray-900 overflow-hidden"><div class="px-3 py-2 border-b border-gray-100 dark:border-gray-800 flex items-center justify-between"><span class="font-bold text-sm text-gray-900 dark:text-gray-100"> </span> <button class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 text-xs leading-none">✕</button></div> <p class="px-3 pt-2 pb-1 text-xs font-semibold text-gray-400 dark:text-gray-600 uppercase tracking-wider"> </p> <div class="flex-1 overflow-y-auto px-3 py-1 space-y-1 text-xs"><!></div></div>`),Pg=W(`<div class="fixed inset-0 z-50 flex flex-col bg-white dark:bg-gray-950"><div class="flex items-center justify-between px-6 h-14 border-b border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 shrink-0"><h2 class="font-semibold text-base"> </h2> <button class="text-sm px-3 py-1.5 rounded-lg text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"> </button></div> <div class="border-b border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 shrink-0"><div class="flex items-center gap-3 px-6 py-3"><label class="text-xs font-medium text-gray-500 dark:text-gray-400 shrink-0"> </label> <input type="text" readonly="" spellcheck="false" class="flex-1 px-3 py-1.5 text-sm rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 font-mono cursor-default focus:outline-none"/> <button class="text-sm px-3 py-1.5 rounded-lg border border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors shrink-0">📁 <span> </span></button> <button class="text-sm px-4 py-1.5 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors shrink-0"> </button></div> <div class="flex items-start gap-3 px-6 pb-2"><label class="text-xs font-medium text-gray-500 dark:text-gray-400 shrink-0 pt-1.5"> </label> <textarea rows="3" spellcheck="false" class="flex-1 px-3 py-1.5 text-sm rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 font-mono focus:outline-none focus:ring-1 focus:ring-blue-400 resize-y"></textarea> <button class="text-sm px-3 py-1.5 rounded-lg border border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors shrink-0">📁 <span> </span></button></div> <!> <div class="flex items-center gap-x-4 gap-y-2 px-6 pb-3 flex-wrap"><span class="text-xs font-medium text-gray-500 dark:text-gray-400 shrink-0"> </span> <label class="flex items-center gap-1.5 text-xs font-medium text-blue-600 dark:text-blue-400 cursor-pointer shrink-0"><input type="checkbox"/> </label> <!></div> <!></div> <div class="flex-1 overflow-hidden flex"><!> <div class="flex-1 relative overflow-hidden"><!> <canvas style="position: absolute; inset: 0"></canvas></div> <!></div></div>`);function Fg(e,t){Ge(t,!0);let n=new Set(`the.a.an.and.or.but.not.nor.so.yet.both.either.neither.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.shall.should.may.might.can.could.must.need.dare.ought.used.to.of.in.for.on.with.at.by.from.up.about.into.through.during.before.after.above.below.between.out.off.over.under.again.further.then.once.here.there.when.where.why.how.all.each.few.more.most.other.some.such.no.only.own.same.than.too.very.just.also.still.already.always.never.often.sometimes.usually.this.that.these.those.its.your.our.their.his.her.him.she.you.they.we.me.my.it.who.which.what.whose.whom.if.though.although.because.since.while.unless.until.whether.as.like.via.per.i.am.he.us.see.now.new.old.got.let.put.say.said.says.get.use.make.made.take.come.came.go.went.know.think.look.want.give.seem.back.down.even.much.well.good.work.tell.keep.hold.turn.move.play.live.help.run.start.off.way.too.few.show.hear.etc.eg.ie.one.two.three.four.five.six.seven.eight.nine.ten.le.la.les.un.une.des.du.de.d.l.au.aux.ce.ci.cet.cette.ces.mon.ma.mes.ton.ta.tes.son.sa.ses.notre.nos.votre.vos.leur.leurs.je.tu.il.elle.on.nous.vous.ils.elles.me.te.se.lui.y.en.qui.que.quoi.dont.où.et.ou.mais.donc.or.ni.car.si.ne.pas.plus.moins.très.bien.mal.peu.beaucoup.trop.assez.aussi.comme.pour.par.avec.sans.dans.sur.sous.entre.vers.chez.contre.avant.après.pendant.depuis.selon.malgré.sauf.est.sont.était.être.avoir.fait.faire.dit.dire.peut.pouvoir.doit.devoir.veut.vouloir.sait.savoir.va.aller.vient.venir.tout.tous.toute.toutes.autre.autres.même.chaque.quel.quelle.quels.quelles.aucun.aucune.certain.certaine.plusieurs.quelque.quelques.tel.telle.tels.telles.cela.ceci.ça.celui.celle.ceux.celles.ici.voici.voilà.alors.ainsi.encore.déjà.jamais.toujours.souvent.parfois.rien.personne.chose.fois.jour.temps.part.cas.point.lieu.monde.cependant.néanmoins.pourtant.toutefois.quand.lorsque.puisque.parce.afin.puis.lors.notamment.surtout.seulement.vraiment.enfin.ensuite.ailleurs.là.ici.voici.voilà.dont.lequel.laquelle.lesquels.lesquelles`.split(`.`)),r=new Set(`public.private.protected.static.void.class.interface.abstract.final.const.let.var.function.return.if.else.for.while.do.switch.case.break.continue.try.catch.throw.throws.finally.new.this.self.super.import.export.from.package.module.require.include.using.namespace.struct.enum.trait.impl.fn.def.func.fun.val.mut.async.await.yield.lambda.extends.implements.override.virtual.sealed.data.object.companion.where.when.match.guard.defer.go.chan.select.type.alias.as.is.in.of.with.true.false.null.nil.none.undefined.println.printf.fmt.log.print.main.args.argv.init.setup.teardown.describe.test.expect.assert.before.after.not.and.or.delete.typeof.instanceof.readonly.keyof.infer.never.unknown.declare.satisfies.get.set.add.remove.update.create.find.fetch.load.save.put.post.patch.list.map.filter.reduce.sort.merge.parse.format.convert.transform.validate.check.handle.process.execute.start.stop.reset.clear.close.open.read.write.send.receive.emit.trigger.dispatch.subscribe.unsubscribe.listen.notify.register.unregister.bind.apply.call.invoke.callback.handler.listener.middleware.interceptor.resolver.provider.consumer.producer.builder.factory.adapter.wrapper.proxy.decorator.observer.visitor.strategy.command.controller.service.repository.dao.dto.entity.model.schema.config.context.state.store.action.reducer.selector.hook.ref.effect.memo.component.module.plugin.extension.util.utils.helper.helpers.common.shared.base.default.index.app.core.lib.src.test.spec.mock.stub.fixture.impl.internal.api.sdk.client.server.request.response.status.code.error.exception.message.result.data.value.key.name.label.title.description.item.element.node.child.parent.root.container.wrapper.layout.view.page.screen.panel.header.footer.sidebar.navbar.body.content.section.row.col.column.grid.flex.block.inline.span.div.input.output.param.params.arg.option.options.props.attr.attrs.field.fields.property.properties.method.methods.string.number.boolean.integer.float.double.long.short.byte.char.array.object.map.set.list.vector.queue.stack.hash.table.tree.graph.pair.tuple.optional.nullable.void.unit.any.bool.bytes.none.int.str.bool.all.each.every.some.many.single.multi.first.last.next.prev.previous.current.old.temp.tmp.new.top.bottom.left.right.center.middle.start.end.begin.min.max.count.total.sum.avg.size.length.width.height.depth.flag.num.idx.id.uid.uuid.num.str.val.obj.arr.fn.cb.ctx.req.res.err.msg.src.dst.evt.doc.db.io.fs.os.env.sys.http.https.url.uri.path.port.host.tcp.udp.ssl.tls.html.css.json.xml.yml.yaml.csv.sql.regex.utf.ascii.rgb.rgba.hex.px.em.rem.vh.vw.auto.inherit.initial.application.file.local.source.messages.logging.alerting.programmed.offset.offsets.zone.zoned.decimal.big.integer.constructor.mapper.captor.publisher.verify.subscriber.org.edr.ack.ref.ssr.ssg.csr.isr.mockito.junit.vitest.jest.mocha.rspec.pytest.cypress.playwright.captor.spy.given.then.verify.times.never.invocation.argumentcaptor.inorder.donothing.doreturn.ippon.springframework.jakarta.javax.todo.fixme.hack.note.deprecated.experimental.eslint.prettier.typescript.javascript.java.kotlin.python.golang.rust.csharp.swift.ruby.spring.boot.javax.jakarta.hibernate.lombok.gradle.maven.webpack.vite.react.angular.vue.svelte.nuxt.express.fastapi.flask.django.rails.fiber.gin.actix.tokio.asyncio.junit.jest.mocha.pytest.rspec.docker.kubernetes.aws.gcp.azure.terraform.ansible.nginx.apache.linux.nextjs.remix.astro.sveltekit.gatsby.nuxtjs.qwik.solid.vercel.netlify.cloudflare.supabase.firebase.mongodb.postgres.prisma.drizzle.typeorm.sequelize.mongoose.redis.neon.trpc.graphql.grpc.rest.openapi.swagger.zod.yup.valibot.tailwind.shadcn.radix.headless.chakra.mantine.antd.mui.tanstack.tanstackquery.zustand.jotai.recoil.redux.mobx.storybook.cypress.playwright.vitest.turbopack.turborepo.getserversideprops.getstaticprops.getstaticpaths.generatestaticparams.generatemetadata.serveraction.revalidate.notfound.redirect.permanentredirect.unstablecache.unstablenostore.cookies.headers.userouter.usepathname.usesearchparams.useparams.useformstate.useformstatus.useoptimistic.useserveraction.classname.onclick.onchange.onsubmit.onfocus.onblur.onkeydown.onkeyup.onmousedown.onmouseup.defaultvalue.htmlfor.tabindex.strokewidth.viewbox.fillopacity.strokeopacity.pathdata.children.fragment.portal.suspense.errorboundary.strictmode.createelement.createcontext.createref.forwardref.usestate.useeffect.useref.usecontext.usememo.usecallback.usereducer.useid.usetransition.usedeferredvalue.useimperativehandle.mutex.lock.thread.goroutine.coroutine.channel.buffer.stream.pipe.observable.promise.future.completable.deferred.disposable.lifecycle.scope.annotation.attribute.metadata.reflection.generic.template.macro.preprocessor.compiler.runtime.debug.release.production.development.staging.build.deploy.lint.coverage.report.the.and.for.are.but.not.you.all.this.that.with.have.from.they.will.been.can.has.was.its.our.their.more.also.when.what.about.which.would.into.than.then.each.just.over.after.such.here.some.were.very.only`.split(`.`));function i(e){return n.has(e)||r.has(e)||e.length<3||/^\d+$/.test(e)||/^[^a-z]/.test(e)}function a(e){return e.replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1 $2`).replace(/[_\-./]+/g,` `).toLowerCase().trim().split(/\s+/).filter(e=>e.length>=3)}function o(e){return e.toLowerCase().split(/[^a-zàâäéèêëïîôùûü]+/).filter(e=>e.length>=3)}let s=[{value:`adoc`,cat:`prose`},{value:`asciidoc`,cat:`prose`},{value:`asm`,cat:`code`},{value:`astro`,cat:`code`},{value:`avsc`,cat:`config`},{value:`bash`,cat:`code`},{value:`bat`,cat:`code`},{value:`bicep`,cat:`config`},{value:`c`,cat:`code`},{value:`cc`,cat:`code`},{value:`cfg`,cat:`config`},{value:`cjs`,cat:`code`},{value:`clj`,cat:`code`},{value:`cljs`,cat:`code`},{value:`cmake`,cat:`code`},{value:`cmd`,cat:`code`},{value:`conf`,cat:`config`},{value:`cpp`,cat:`code`},{value:`cql`,cat:`code`},{value:`cs`,cat:`code`},{value:`cshtml`,cat:`code`},{value:`css`,cat:`config`},{value:`cxx`,cat:`code`},{value:`dart`,cat:`code`},{value:`env`,cat:`config`},{value:`erb`,cat:`code`},{value:`erl`,cat:`code`},{value:`ex`,cat:`code`},{value:`exs`,cat:`code`},{value:`fish`,cat:`code`},{value:`fs`,cat:`code`},{value:`fsx`,cat:`code`},{value:`go`,cat:`code`},{value:`gql`,cat:`code`},{value:`gradle`,cat:`code`},{value:`graphql`,cat:`code`},{value:`groovy`,cat:`code`},{value:`h`,cat:`code`},{value:`hcl`,cat:`config`},{value:`hpp`,cat:`code`},{value:`hs`,cat:`code`},{value:`html`,cat:`config`},{value:`ini`,cat:`config`},{value:`java`,cat:`code`},{value:`jl`,cat:`code`},{value:`js`,cat:`code`},{value:`json`,cat:`config`},{value:`jsx`,cat:`code`,jsx:!0},{value:`kt`,cat:`code`},{value:`less`,cat:`config`},{value:`lua`,cat:`code`},{value:`m`,cat:`code`},{value:`md`,cat:`prose`,def:!0},{value:`mdx`,cat:`prose`},{value:`mjs`,cat:`code`},{value:`mk`,cat:`code`},{value:`ml`,cat:`code`},{value:`mli`,cat:`code`},{value:`mm`,cat:`code`},{value:`nim`,cat:`code`},{value:`php`,cat:`code`},{value:`pl`,cat:`code`},{value:`prisma`,cat:`code`},{value:`properties`,cat:`config`},{value:`proto`,cat:`code`},{value:`ps1`,cat:`code`},{value:`py`,cat:`code`},{value:`r`,cat:`code`},{value:`razor`,cat:`code`},{value:`rb`,cat:`code`},{value:`rs`,cat:`code`},{value:`rst`,cat:`prose`},{value:`s`,cat:`code`},{value:`scala`,cat:`code`},{value:`scss`,cat:`config`},{value:`sh`,cat:`code`},{value:`sol`,cat:`code`},{value:`sql`,cat:`code`},{value:`styl`,cat:`config`},{value:`svelte`,cat:`code`},{value:`swift`,cat:`code`},{value:`tex`,cat:`prose`},{value:`tf`,cat:`config`},{value:`tfvars`,cat:`config`},{value:`thrift`,cat:`code`},{value:`toml`,cat:`config`},{value:`ts`,cat:`code`},{value:`tsx`,cat:`code`,jsx:!0},{value:`txt`,cat:`prose`},{value:`v`,cat:`code`},{value:`vb`,cat:`code`},{value:`vue`,cat:`code`},{value:`xml`,cat:`config`},{value:`yaml`,cat:`config`},{value:`yml`,cat:`config`},{value:`zig`,cat:`code`},{value:`zsh`,cat:`code`}],c=new Set(s.filter(e=>e.cat===`prose`).map(e=>e.value)),l=new Set(s.filter(e=>e.cat===`code`).map(e=>e.value)),u=new Set(s.filter(e=>e.cat===`config`).map(e=>e.value)),d=new Set(s.filter(e=>e.jsx).map(e=>e.value));function f(e,t){let n=[];if(c.has(t)){let t=e.replace(/^\s*(import|export\s+\{[^}]*\}|export\s+\*|package|require|#include|from\s+['"][^'"]+['"]\s*(import)?)\b.*/gm,``).replace(/```[\s\S]*?```/g,` `).replace(/`[^`\n]+`/g,` `).replace(/!\[[^\]]*\]\([^)]*\)/g,` `).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/https?:\/\/\S+/g,` `).replace(/[#*_~>`|!\[\](){}=+\-]/g,` `);n.push(...o(t))}else l.has(t)?(d.has(t)&&(e=e.replace(/<\/?[A-Z][A-Za-z0-9.]*[^>]*>/g,` `),e=e.replace(/<\/?(div|span|main|section|article|aside|nav|header|footer|form|input|button|select|option|textarea|table|thead|tbody|tr|td|th|ul|ol|li|a|img|p|h[1-6]|label|figure|figcaption|picture|video|audio|canvas|svg|path|circle|rect|g|defs|use|link|meta|head|html|body|script|style|br|hr|strong|em|code|pre|blockquote|small|sub|sup)\b[^>]*>/gi,` `),e=e.replace(/\b(className|onClick|onChange|onSubmit|onFocus|onBlur|onKeyDown|onKeyUp|onMouseDown|onMouseUp|htmlFor|tabIndex|strokeWidth|viewBox|fillOpacity|strokeOpacity|defaultValue|placeholder|disabled|checked|readOnly|required|multiple|autoFocus|autoComplete|type|href|src|alt|width|height|style|key|ref)\s*=/g,` =`)),e=e.replace(/^\s*(import\s+[\w.*{},\s'"@/-]+;?|from\s+['"][^'"]+['"]\s*;?|package\s+[\w.]+;?|namespace\s+[\w.]+;?|using\s+[\w.]+;?|require\s*\(?\s*['"][^'"]+['"]\s*\)?;?)\s*$/gm,``),e.replace(/(?:\/\/|#(?!.*[{}[\]<>])| -- )\s*(.+)$/gm,(e,t)=>(n.push(...o(t)),e)),e.replace(/\/\*[\s\S]*?\*\//g,e=>(n.push(...o(e)),e)),e.replace(/"""[\s\S]*?"""|'''[\s\S]*?'''/g,e=>(n.push(...o(e)),e)),e.replace(/["'`]([A-Za-zÀ-ÿ][A-Za-zÀ-ÿ\s,.'éàèùâêîôûç]{3,})["'`]/g,(e,t)=>(n.push(...o(t)),e)),e.replace(/\b([A-Za-z][A-Za-z0-9_]{2,})\b/g,(e,t)=>(n.push(...a(t)),e))):u.has(t)&&(e.replace(/:\s*["']([^"']{3,})["']/g,(e,t)=>(n.push(...o(t)),e)),e.replace(/\b([A-Za-z][A-Za-z0-9_]{2,})\b/g,(e,t)=>(n.push(...a(t)),e)));return n.filter(e=>!i(e))}let p=F(``),m=F(``),h=F(1),g=F(``),_=F(!0),v=F(!1),y=F(L(s.map(e=>({value:e.value,label:`.`+e.value,checked:!!e.def}))));function b(){return H(y).filter(e=>e.checked).map(e=>e.value)}let x=P(()=>H(y).every(e=>e.checked)),S=F(null),C=F(null),w=F(0),T=F(null),E=F(L([])),D=F(L([])),O=F(!1),k=F(``),ee=F(0),A=F(L([]));function te(){localStorage.setItem(`wc-exts`,JSON.stringify(b()))}function ne(){let e=H(x);I(y,H(y).map(t=>({...t,checked:!e})),!0),te()}function re(){te()}function ie(){return new Set((H(m)||``).split(/[\n,]/).map(e=>e.trim()).filter(Boolean))}function ae(e){let t=ie();t.has(e)||(t.add(e),I(m,[...t].join(`, `),!0),localStorage.setItem(`wc-exclude`,H(m)),H(ue)&&_e(H(fe)),se())}function oe(){localStorage.setItem(`wc-exclude`,H(m)),H(ue)&&_e(H(fe)),se()}function se(){H(O)&&H(k)&&je(H(k))}function ce(){H(S)&&Ae()}function le(){let e=localStorage.getItem(`wc-root`);e&&(I(p,e,!0),I(xe,e,!0));let t=localStorage.getItem(`wc-exclude`);t&&I(m,t,!0);let n=localStorage.getItem(`wc-exts`);if(n)try{let e=JSON.parse(n);I(y,H(y).map(t=>({...t,checked:e.includes(t.value)})),!0)}catch{}}let ue=F(!1),de=F(null),fe=F(``),pe=F(``),me=F(null),he=F(``);function ge(){I(ue,!H(ue)),H(ue)&&_e(H(fe)||H(p)||`/`)}async function _e(e){I(me,null),I(he,`Loading…`);try{let t=await fetch(`/api/browse?all=1&path=`+encodeURIComponent(e)).then(e=>e.json());I(fe,t.current,!0),I(de,t.parent,!0),I(pe,t.current,!0);let n=H(p).trim(),r=(e,t)=>n&&e.startsWith(n+`/`)?e.slice(n.length+1):t,i=ie(),a=(t.dirs||[]).filter(e=>!i.has(r(e.path,e.name))).map(e=>({kind:`dir`,name:e.name,path:e.path,entry:r(e.path,e.name)})),o=b(),s=(t.files||[]).filter(e=>o.some(t=>e.name.endsWith(`.`+t))).filter(e=>!i.has(r(e.path,e.name))).map(e=>({kind:`file`,name:e.name,entry:r(e.path,e.name)})),c=[...a,...s];I(me,c,!0),I(he,c.length?``:`Empty directory`,!0)}catch{I(me,[],!0),I(he,`Cannot read directory`)}}function ve(){H(de)&&_e(H(de))}let ye=F(!1),be=F(null),xe=F(``),Se=F(``),j=F(null),Ce=F(``);function M(){I(ye,!H(ye)),H(ye)&&we(H(xe)||H(p)||`/`)}async function we(e){I(j,null),I(Ce,`Loading…`);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(xe,t.current,!0),I(be,t.parent,!0),I(Se,t.current,!0),I(j,(t.dirs||[]).map(e=>({name:e.name,path:e.path})),!0),I(Ce,H(j).length?``:`No sub-folders`,!0)}catch{I(j,[],!0),I(Ce,`Cannot read directory`)}}function Te(){H(be)&&we(H(be))}function Ee(){I(p,H(xe),!0),localStorage.setItem(`wc-root`,H(xe)),I(ye,!1),I(m,``),localStorage.removeItem(`wc-exclude`),I(fe,H(xe),!0)}let De=F(null),Oe=F(null),ke=F(!1);function Ae(){if(!H(S)||!H(C))return;let e=Math.max(1,H(h)||1),t=[...H(S).entries()].sort((e,t)=>t[1]-e[1]),n=t.filter(([t])=>(H(C).get(t)||new Set).size>=e).slice(0,150);if(!n.length){let n=t.length;I(g,n?`${n} domain word(s) found but none appear in ${e}+ file(s). Lower the "Min files" threshold to 1.`:`No domain words extracted. Try adding more file extensions or a broader folder.`,!0),I(_,!0),I(ke,!1),I(v,!1);return}let r=[...H(S).keys()].filter(t=>(H(C).get(t)||new Set).size>=e).length;I(T,{scanned:H(w),unique:r,shown:n.length},!0);let i=n.slice(0,50),a=i[0][1];I(D,i.map(([e,t])=>({word:e,freq:t,pct:Math.round(t/a*100)})),!0),I(v,!0),I(_,!1);let o=document.documentElement.classList.contains(`dark`),s=o?[`#60a5fa`,`#34d399`,`#f9a8d4`,`#a78bfa`,`#fbbf24`,`#6ee7b7`,`#93c5fd`,`#fb923c`,`#4ade80`,`#f472b6`]:[`#1d4ed8`,`#047857`,`#7c3aed`,`#b45309`,`#be123c`,`#0369a1`,`#4338ca`,`#c2410c`,`#15803d`,`#9333ea`];requestAnimationFrame(()=>{if(!H(De)||!H(Oe))return;let e=H(De),t=H(Oe);e.width=Math.max(400,t.offsetWidth),e.height=Math.max(300,t.offsetHeight),e.style.width=e.width+`px`,e.style.height=e.height+`px`,I(ke,!0);let n=Math.sqrt(e.width*e.height/(800*500)),r=Math.min(220,Math.round(72*n)),c=i.map(([e,t])=>[e,Math.max(12,Math.round(r*t/a))]);window.WordCloud?.(e,{list:c,gridSize:Math.round(4*e.width/1024),fontFamily:`ui-sans-serif, system-ui, sans-serif`,color:()=>s[Math.floor(Math.random()*s.length)],backgroundColor:o?`#030712`:`#ffffff`,rotateRatio:.2,minSize:6,shrinkToFit:!0,click:e=>je(e[0])})})}function je(e){if(!H(C)||!H(S))return;let t=[...H(C).get(e)||[]].sort(),n=H(S).get(e)||0;I(k,e,!0),I(ee,n,!0),I(A,t,!0),I(O,!0)}function Me(){I(O,!1)}async function Ne(){let e=H(p).trim();if(!e){I(g,`Please select a root folder first.`),I(_,!0);return}let t=b();if(!t.length){I(g,`Please select at least one extension.`),I(_,!0);return}I(ye,!1),I(v,!1),I(O,!1),I(g,`Reading files…`),I(_,!0),I(ke,!1);try{let n=H(m).trim(),r=n?n.split(/[\n,]/).map(e=>e.trim()).filter(Boolean):[];localStorage.setItem(`wc-exclude`,n);let i=new URLSearchParams({path:e});t.forEach(e=>i.append(`ext`,e)),r.forEach(e=>i.append(`exclude`,e));let a=await fetch(`/api/wordcloud?`+i);if(!a.ok){I(g,`Error: `+((await a.json()).error||a.statusText));return}let{files:o,fileTexts:s}=await a.json();I(g,`Analyzing ${o} file(s)…`);let c=new Map,l=new Map,u=new Set;I(w,o,!0);for(let{path:e,text:t}of s){let n=(e.split(`.`).pop()||``).toLowerCase();n&&u.add(n);let r=f(t,n),i=new Set;for(let t of r)c.set(t,(c.get(t)||0)+1),i.has(t)||(i.add(t),l.has(t)||l.set(t,new Set),l.get(t).add(e))}I(S,c,!0),I(C,l,!0),I(E,[...u].sort().map(e=>`.`+e),!0),Ae()}catch(e){I(g,`Error: `+e.message)}}let Pe=!1;On(()=>{t.open&&!Pe?(Pe=!0,I(g,`Choose a root folder and click Launch.`),I(_,!0),I(ke,!1),I(v,!1),I(O,!1),I(S,null),I(C,null),I(T,null),I(D,[],!0),I(ye,!1),I(ue,!1),I(h,1),le(),H(p)||fetch(`/api/config`).then(e=>e.json()).then(e=>{e.docsFolder&&(I(p,e.docsFolder,!0),I(xe,e.docsFolder,!0))}).catch(()=>{})):t.open||(Pe=!1)});var Fe=Ur(),Ie=z(Fe),Le=e=>{var n=Pg(),r=R(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2),s=R(o,!0);N(o),N(r);var c=B(r,2),l=R(c),u=R(l),d=R(u,!0);N(u);var f=B(u,2);Ti(f);var b=B(f,2),S=B(R(b)),C=R(S,!0);N(S),N(b);var w=B(b,2),te=R(w,!0);N(w),N(l);var ie=B(l,2),se=R(ie),le=R(se,!0);N(se);var fe=B(se,2);vn(fe);var xe=B(fe,2),Ae=B(R(xe)),Pe=R(Ae,!0);N(Ae),N(xe),N(ie);var Fe=B(ie,2),Ie=e=>{var t=xg(),n=R(t),r=R(n),i=B(r,2),a=R(i,!0);N(i),N(n);var o=B(n,2),s=R(o),c=e=>{var t=_g(),n=R(t,!0);N(t),V(()=>K(n,H(he))),G(e,t)},l=e=>{var t=vg(),n=R(t,!0);N(t),V(()=>{mi(t,1,`px-3 py-3 text-xs ${H(he)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),K(n,H(he))}),G(e,t)},u=e=>{var t=Ur();J(z(t),17,()=>H(me),Yr,(e,t)=>{var n=Ur(),r=z(n),i=e=>{var n=yg(),r=R(n),i=B(R(r),2),a=R(i,!0);N(i),N(r);var o=B(r,2);N(n),V(()=>K(a,H(t).name)),U(`click`,r,()=>_e(H(t).path)),U(`click`,o,()=>ae(H(t).entry)),G(e,n)},a=e=>{var n=bg(),r=R(n),i=B(R(r),2),a=R(i,!0);N(i),N(r);var o=B(r,2);N(n),V(()=>K(a,H(t).name)),U(`click`,o,()=>ae(H(t).entry)),G(e,n)};q(r,e=>{H(t).kind===`dir`?e(i):e(a,-1)}),G(e,n)}),G(e,t)};q(s,e=>{H(me)===null?e(c):H(me).length===0?e(l,1):e(u,-1)}),N(o),N(t),V(()=>{r.disabled=!H(de),K(a,H(pe))}),U(`click`,r,ve),G(e,t)};q(Fe,e=>{H(ue)&&e(Ie)});var Le=B(Fe,2),Re=R(Le),ze=R(Re,!0);N(Re);var Be=B(Re,2),Ve=R(Be);Ti(Ve);var He=B(Ve);N(Be),J(B(Be,2),17,()=>H(y),e=>e.value,(e,t,n)=>{var r=Sg(),i=R(r);Ti(i);var a=B(i);N(r),V(()=>K(a,` ${H(t).label??``}`)),U(`change`,i,re),Mi(i,()=>H(t).checked,e=>H(t).checked=e),G(e,r)}),N(Le);var Ue=B(Le,2),We=e=>{var t=xg(),n=R(t),r=R(n),i=B(r,2),a=R(i,!0);N(i),N(n);var o=B(n,2),s=R(o),c=e=>{var t=_g(),n=R(t,!0);N(t),V(()=>K(n,H(Ce))),G(e,t)},l=e=>{var t=Tg(),n=z(t),r=e=>{var t=vg(),n=R(t,!0);N(t),V(()=>{mi(t,1,`px-3 py-3 text-xs ${H(Ce)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),K(n,H(Ce))}),G(e,t)},i=e=>{var t=Ur();J(z(t),17,()=>H(j),Yr,(e,t)=>{var n=Cg(),r=R(n),i=B(R(r),2),a=R(i,!0);N(i),N(r);var o=B(r,2);N(n),V(()=>K(a,H(t).name)),U(`click`,r,()=>we(H(t).path)),U(`click`,o,()=>ae(H(t).name)),G(e,n)}),G(e,t)};q(n,e=>{H(j).length===0?e(r):e(i,-1)});var a=B(n,2),o=e=>{var t=wg(),n=B(R(t)),r=R(n,!0);N(n),N(t),V(()=>K(r,H(Se))),U(`click`,t,Ee),G(e,t)};q(a,e=>{H(Ce)!==`Cannot read directory`&&e(o)}),G(e,t)};q(s,e=>{H(j)===null?e(c):e(l,-1)}),N(o),N(t),V(()=>{r.disabled=!H(be),K(a,H(Se))}),U(`click`,r,Te),G(e,t)};q(Ue,e=>{H(ye)&&e(We)}),N(c);var Ge=B(c,2),Ke=R(Ge),qe=e=>{var t=kg(),n=R(t),r=R(n),i=e=>{var t=Dg(),n=z(t),r=R(n);N(n);var i=B(n,2),a=R(i);N(i);var o=B(i,2),s=R(o);N(o);var c=B(o,2),l=e=>{var t=Eg(),n=R(t);N(t),V((e,r)=>{Y(t,`title`,e),K(n,`${H(E).length??``} extension${H(E).length>1?`s`:``} found (${r??``})`)},[()=>H(E).join(`, `),()=>H(E).join(`, `)]),G(e,t)};q(c,e=>{H(E).length&&e(l)}),V(()=>{K(r,`${H(T).scanned??``} file(s) scanned`),K(a,`${H(T).unique??``} unique domain words`),K(s,`${H(T).shown??``} shown`)}),G(e,t)};q(r,e=>{H(T)&&e(i)}),N(n);var a=B(n,2),o=R(a),s=R(o,!0);N(o);var c=B(o,2);Ti(c);var l=B(c,2),u=R(l,!0);N(l),N(a);var d=B(a,2),f=R(d,!0);N(d);var p=B(d,2);J(p,21,()=>H(D),Yr,(e,t,n)=>{var r=Og(),i=R(r);i.textContent=n+1;var a=B(i,2),o=R(a),s=R(o),c=R(s,!0);N(s);var l=B(s,2),u=R(l,!0);N(l),N(o);var d=B(o,2),f=R(d);N(d),N(a),N(r),V(()=>{K(c,H(t).word),K(u,H(t).freq),gi(f,`width:${H(t).pct??``}%`)}),U(`click`,r,()=>je(H(t).word)),G(e,r)}),N(p),N(t),V((e,t,n,r,i,a)=>{Y(o,`title`,e),K(s,t),Y(c,`title`,n),Y(l,`title`,r),K(u,i),K(f,a)},[()=>X(`wc.min_files_hint`),()=>X(`wc.min_files_label`),()=>X(`wc.min_files_hint`),()=>X(`wc.apply_hint`),()=>X(`wc.apply_btn`),()=>X(`wc.top_words`)]),ji(c,()=>H(h),e=>I(h,e)),U(`click`,l,ce),G(e,t)};q(Ke,e=>{H(v)&&e(qe)});var Je=B(Ke,2),Ye=R(Je),Xe=e=>{var t=Ag(),n=R(t,!0);N(t),V(()=>K(n,H(g))),G(e,t)};q(Ye,e=>{H(_)&&e(Xe)});var Ze=B(Ye,2);let Qe;Ii(Ze,e=>I(De,e),()=>H(De)),N(Je),Ii(Je,e=>I(Oe,e),()=>H(Oe));var $e=B(Je,2),et=e=>{var t=Ng(),n=R(t),r=R(n),i=R(r);N(r);var a=B(r,2);N(n);var o=B(n,2),s=R(o,!0);N(o);var c=B(o,2),l=R(c),u=e=>{var t=Ur();J(z(t),17,()=>H(A),Yr,(e,t)=>{var n=jg(),r=R(n),i=R(r,!0);N(r);var a=B(r,2);N(n),V(()=>K(i,H(t))),U(`click`,a,()=>ae(H(t))),G(e,n)}),G(e,t)},d=e=>{G(e,Mg())};q(l,e=>{H(A).length?e(u):e(d,-1)}),N(c),N(t),V(e=>{K(i,`${H(k)??``} ×${H(ee)??``}`),K(s,e)},[()=>X(`wc.found_in`)]),U(`click`,a,Me),G(e,t)};q($e,e=>{H(O)&&e(et)}),N(Ge),N(n),V((e,t,n,r,i,o,c,l,u,f)=>{K(a,e),K(s,t),K(d,n),K(C,r),K(te,i),K(le,o),Y(fe,`placeholder`,c),K(Pe,l),K(ze,u),Di(Ve,H(x)),K(He,` ${f??``}`),Qe=mi(Ze,1,``,null,Qe,{hidden:!H(ke)})},[()=>X(`wc.title`),()=>X(`wc.close_btn`),()=>X(`wc.search_root_label`),()=>X(`wc.browse_btn`),()=>X(`wc.launch_btn`),()=>X(`wc.exclude_label`),()=>X(`wc.exclude_placeholder`),()=>X(`wc.browse_btn`),()=>X(`wc.extensions_label`),()=>X(`wc.all_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),ji(f,()=>H(p),e=>I(p,e)),U(`click`,b,M),U(`click`,w,Ne),U(`input`,fe,oe),ji(fe,()=>H(m),e=>I(m,e)),U(`click`,xe,ge),U(`change`,Ve,ne),G(e,n)};q(Ie,e=>{t.open&&e(Le)}),G(e,Fe),Ke()}Nr([`click`,`input`,`change`]);var Ig=W(`<button class="ghost-button"><i class="fa-solid fa-cloud"></i></button> <button title="Toggle dark mode" class="ghost-button" aria-label="Toggle dark mode"> </button>`,1),Lg=W(`<div class="relative hidden sm:block"><input type="search" class="w-56 pl-8 pr-3 py-1.5 text-sm rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500"/> <span class="absolute left-2.5 top-2 text-gray-400 text-sm pointer-events-none">🔍</span></div>`),Rg=W(`<p class="p-8 text-red-500"> </p>`),zg=W(`<div class="h-full flex items-center justify-center p-8"><div class="max-w-md text-center"><div class="text-5xl mb-4 select-none" aria-hidden="true">📚</div> <h2 class="text-xl font-semibold text-gray-700 dark:text-gray-300 mb-2"> </h2> <p class="text-sm text-gray-500 dark:text-gray-500"> </p> <p class="mt-4 text-xs text-gray-400 dark:text-gray-600 font-mono bg-gray-100 dark:bg-gray-800 rounded-lg px-3 py-2 inline-block"> </p> <p class="mt-2 text-xs text-gray-400"> </p></div></div>`),Bg=W(`<div class="app-shell bg-gray-50 text-gray-900 dark:bg-gray-900 dark:text-gray-100"><!> <div class="flex overflow-hidden"><!> <main id="home-content-area" class="flex-1 overflow-y-auto"><!></main></div></div> <!> <!> <!> <!>`,1);function Vg(e,t){Ge(t,!0);let n=F(!1),r=F(!1),i=F(!1),a=F(!1),o=F(null),s=F(!1),c=F(``),l=F(!1),u=F(`Living AI Documentation`),d=F(`YYYY_MM_DD_HH_mm_[Category]_title.md`),f=null;function p(){try{let e=localStorage.getItem(`ld-dark`);if(e!==null)return e===`true`}catch{}return window.matchMedia(`(prefers-color-scheme: dark)`).matches}function m(e){I(l,e,!0),document.documentElement.classList.toggle(`dark`,e)}function h(){m(!H(l));try{localStorage.setItem(`ld-dark`,String(H(l)))}catch{}}On(()=>{let e=document.getElementById(`hljs-dark`),t=document.getElementById(`hljs-light`);if(!e||!t)return;let n=Z.codeBlockLightTheme&&!H(l);e.disabled=n,t.disabled=!n,document.body.classList.toggle(`ld-code-light`,n)});function g(e){let t=e.trim();if(f&&clearTimeout(f),!t){Z.searchQuery=``,Z.searchResults=null;return}Z.searchQuery=t,Z.searchResults=Z.allDocs.filter(e=>e.title.toLowerCase().includes(t.toLowerCase())||e.category.toLowerCase().includes(t.toLowerCase())),f=window.setTimeout(async()=>{try{let e=await am(t);t===Z.searchQuery&&(Z.searchResults=e)}catch{}},350)}let _=F(L([]));function v(e){let t=H(_)[e];t&&(I(_,H(_).slice(0,e),!0),y(t.id,!1,`restore`))}async function y(e,t=!1,n=!1,r=null){if(n===!0&&Z.currentDocId&&Z.currentDocId!==e){let t=H(_).findIndex(t=>t.id===e);if(t!==-1)I(_,H(_).slice(0,t),!0);else{let e=Z.allDocs.find(e=>e.id===Z.currentDocId);I(_,[...H(_),{id:Z.currentDocId,title:e?e.title:Z.currentDocId}],!0)}}else n||I(_,[],!0);Z.currentDocId=e;let i=Z.allDocs.find(t=>t.id===e);if(i&&Z.revealDoc(i),!t){let t=new URL(location.href);t.searchParams.set(`doc`,e),t.hash=r?`#${r}`:``,history.pushState({docId:e,anchor:r||null},``,t)}I(s,!0),I(c,``);try{let t=await tm(e);t.id=e,I(o,t,!0),document.title=t.title,requestAnimationFrame(()=>{let e=document.getElementById(`home-content-area`);if(r){let t=document.getElementById(r);t&&e&&(e.scrollTop+=t.getBoundingClientRect().top-e.getBoundingClientRect().top-80)}else e&&(e.scrollTop=0)})}catch(e){I(c,X(`doc.failed_to_load`)+(e instanceof Error?e.message:String(e)))}finally{I(s,!1)}}async function b(e){if(!H(o))return;let t=H(o).id,n=await fetch(`/api/documents/`+t,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:e})});if(!n.ok)throw Error(await n.text());let r=await tm(t);r.id=t,I(o,r,!0);let i=e.match(/\]\(\s*\.?\/files\/[^)\s]+/g),a={...Z.fileAttachmentCounts};i&&i.length?a[t]=i.length:delete a[t],Z.fileAttachmentCounts=a}async function x(){if(!H(o))return;let e=H(o).id;if(!(await fetch(`/api/documents/`+encodeURIComponent(e),{method:`DELETE`})).ok)return;Z.allDocs=Z.allDocs.filter(t=>t.id!==e),Array.isArray(Z.searchResults)&&(Z.searchResults=Z.searchResults.filter(t=>t.id!==e));let t={...Z.annotationCounts};delete t[e],Z.annotationCounts=t;let n={...Z.fileAttachmentCounts};delete n[e],Z.fileAttachmentCounts=n,Z.currentDocId=null,I(o,null),history.pushState({},``,location.pathname)}async function S(){let[e,t]=await Promise.all([$p(),Qp()]);if(Z.allDocs=e,t.docsFolder)try{Z.allFolderPaths=await em(t.docsFolder)}catch{Z.allFolderPaths=[]}let[n,r,i]=await Promise.all([nm(),rm(),im()]);Z.annotationCounts=n,Z.fileAttachmentCounts=r,Z.docStatuses=i}Bi(async()=>{m(p());let e=await Qp();await da(e.language||`en`),e.title&&(document.title=e.title,I(u,e.title,!0)),e.filenamePattern&&I(d,e.filenamePattern+`.md`),Z.exclusiveFolderExpansion=!!e.exclusiveFolderExpansion,Z.exclusiveCategoryExpansion=!!e.exclusiveCategoryExpansion,Z.codeBlockMaxHeight=typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,Z.imageRoundedCorners=!!e.imageRoundedCorners,Z.imageCentered=!!e.imageCentered,Z.imageBorder=!!e.imageBorder,Z.codeBlockLightTheme=!!e.codeBlockLightTheme,Z.codeBlockMaxHeight>0&&document.documentElement.style.setProperty(`--ld-code-max-h`,Z.codeBlockMaxHeight+`px`),Z.expandedCategories.size===0&&(Z.expandedCategories=new Set([`General`])),await S();let t=new URLSearchParams(location.search).get(`doc`);if(t)y(t,!0,!1,location.hash?location.hash.slice(1):null);else{let e=Z.allDocs.find(e=>e.category===`General`)??Z.allDocs[0];e&&y(e.id,!0)}let n=e=>{let t=e.state?.docId||new URLSearchParams(location.search).get(`doc`),n=e.state?.anchor||(location.hash.length>1?location.hash.slice(1):null);t&&y(t,!0,!1,n)};return window.addEventListener(`popstate`,n),()=>window.removeEventListener(`popstate`,n)});var C=Bg(),w=z(C),T=R(w);la(T,{get title(){return H(u)},subtitle:``,actions:e=>{var t=Ig(),n=z(t),r=B(n,2),i=R(r,!0);N(r),V((e,t)=>{Y(n,`title`,e),Y(n,`aria-label`,t),K(i,H(l)?`☀`:`☾`)},[()=>X(`nav.word_cloud`),()=>X(`nav.word_cloud`)]),U(`click`,n,()=>I(a,!0)),U(`click`,r,h),G(e,t)},children:(e,t)=>{var n=Lg(),r=R(n);Ti(r),Pe(2),N(n),V(e=>{Y(r,`placeholder`,e),Ei(r,Z.searchQuery)},[()=>X(`nav.search_placeholder`)]),U(`input`,r,e=>g(e.target.value)),G(e,n)},$$slots:{actions:!0,default:!0}});var E=B(T,2),D=R(E);jm(D,{onopen:e=>y(e),onsearch:g,onexport:()=>I(i,!0),onnewfolder:()=>I(n,!0),onnewdoc:()=>I(r,!0)});var O=B(D,2),k=R(O),ee=e=>{var t=Ur(),n=z(t),r=e=>{var t=Rg(),n=R(t,!0);N(t),V(()=>K(n,H(c))),G(e,t)},i=e=>{Gh(e,{get doc(){return H(o)},get navHistory(){return H(_)},ongoback:v,onopen:(e,t)=>y(e,!1,!0,t),onsave:b,ondelete:x})};q(n,e=>{H(c)?e(r):e(i,-1)}),G(e,t)},A=e=>{var t=zg(),n=R(t),r=B(R(n),2),i=R(r,!0);N(r);var a=B(r,2),o=R(a,!0);N(a);var s=B(a,2),c=R(s,!0);N(s);var l=B(s,2),u=R(l,!0);N(l),N(n),N(t),V((e,t,n)=>{K(i,e),K(o,t),K(c,H(d)),K(u,n)},[()=>X(`welcome.title`),()=>X(`welcome.hint`),()=>X(`welcome.pattern_hint`)]),G(e,t)};q(k,e=>{H(o)?e(ee):e(A,-1)}),N(O),N(E),N(w);var te=B(w,2);$h(te,{get open(){return H(n)},onclose:()=>I(n,!1),onsuccess:S});var ne=B(te,2);cg(ne,{get open(){return H(r)},onclose:()=>I(r,!1),onsuccess:async e=>{await S(),y(e)}});var re=B(ne,2);gg(re,{get open(){return H(i)},onclose:()=>I(i,!1)}),Fg(B(re,2),{get open(){return H(a)},onclose:()=>I(a,!1)}),G(e,C),Ke()}Nr([`click`,`input`]);var Hg=`modulepreload`,Ug=function(e){return`/`+e},Wg={},Gg=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Ug(t,n),t in Wg)return;Wg[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Hg,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Kg=W(`<div class="flex flex-col h-screen overflow-hidden bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100"><header class="flex items-center gap-1 px-2 h-12 shrink-0 border-b border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 shadow-sm z-10"><button class="tool-btn !w-auto px-2 text-xs font-medium text-gray-500 dark:text-gray-400"> </button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnSidebar" class="tool-btn">☰</button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnCopyDiagramId" class="tool-btn"><svg width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="5" width="8" height="9" rx="1.5"></rect><path d="M3 11V3a1 1 0 0 1 1-1h7"></path></svg></button> <button id="toolSelect" class="tool-btn tool-active"><svg width="11" height="13" viewBox="0 0 11 13" fill="currentColor" stroke="none"><path d="M1 1 L1 12 L4 9 L6.5 13 L8 12.2 L5.5 8.2 L10 8.2 Z"></path></svg></button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="toolBox" class="tool-btn"><svg width="15" height="10" viewBox="0 0 15 10" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="1" y="1" width="13" height="8" rx="1"></rect></svg></button> <button id="toolEllipse" class="tool-btn"><svg width="16" height="10" viewBox="0 0 16 10" fill="none" stroke="currentColor" stroke-width="1.5"><ellipse cx="8" cy="5" rx="7" ry="4"></ellipse></svg></button> <button id="toolDatabase" class="tool-btn"><svg width="12" height="16" viewBox="0 0 12 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><ellipse cx="6" cy="3" rx="5" ry="2"></ellipse><path d="M1 3v10c0 1.1 2.2 2 5 2s5-.9 5-2V3"></path><path d="M11 7.5c0 1.1-2.2 2-5 2s-5-.9-5-2"></path></svg></button> <button id="toolCircle" class="tool-btn"><svg width="13" height="13" viewBox="0 0 13 13" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="6.5" cy="6.5" r="5.5"></circle></svg></button> <button id="toolActor" class="tool-btn"><svg width="12" height="17" viewBox="0 0 12 17" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><circle cx="6" cy="3" r="2.2"></circle><line x1="6" y1="5.2" x2="6" y2="10"></line><line x1="1.5" y1="7.5" x2="10.5" y2="7.5"></line><line x1="6" y1="10" x2="2.5" y2="15"></line><line x1="6" y1="10" x2="9.5" y2="15"></line></svg></button> <button id="toolPostIt" class="tool-btn"><svg width="13" height="13" viewBox="0 0 13 13" fill="none" stroke="currentColor" stroke-width="1.4"><path d="M1 1 H9 L12 4 V12 H1 Z"></path><path d="M9 1 V4 H12" stroke-opacity="0.5"></path></svg></button> <button id="toolTextFree" class="tool-btn" style="font-size:11px; font-weight:600;">T</button> <button id="toolImage" class="tool-btn"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="1" width="12" height="12" rx="1.5"></rect><circle cx="4.5" cy="4.5" r="1.2"></circle><path d="M1 9.5 L4 6.5 L6.5 9 L9 7 L13 10.5"></path></svg></button> <a href="/shape-editor" class="tool-btn">✦</a> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="toolArrow" class="tool-btn">→</button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnDelete" class="tool-btn"><svg width="11" height="11" viewBox="0 0 11 11" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><line x1="1" y1="1" x2="10" y2="10"></line><line x1="10" y1="1" x2="1" y2="10"></line></svg></button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnDiagramDefaults" class="tool-btn"><svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0"></path><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.474l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115z"></path></svg></button> <button id="btnAlign" class="tool-btn"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4"><line x1="0.5" y1="7.5" x2="13.5" y2="7.5"></line><line x1="3.5" y1="0.5" x2="3.5" y2="13.5" stroke-dasharray="1.5 1.5"></line><line x1="10.5" y1="0.5" x2="10.5" y2="13.5" stroke-dasharray="1.5 1.5"></line></svg></button> <button id="btnGrid" class="tool-btn"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.2"><line x1="5" y1="1" x2="5" y2="13"></line><line x1="9" y1="1" x2="9" y2="13"></line><line x1="1" y1="5" x2="13" y2="5"></line><line x1="1" y1="9" x2="13" y2="9"></line><rect x="1" y="1" width="12" height="12" rx="1"></rect></svg></button> <button id="btnEdgeStraight" class="tool-btn"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="2" y1="12" x2="12" y2="2"></line><polyline points="8,2 12,2 12,6"></polyline></svg></button> <button id="btnEvidenceMode" class="tool-btn"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><path d="M4 1.5 H8.5 L11 4 V12.5 H4 Z"></path><path d="M8.5 1.5 V4 H11"></path><path d="M1.5 5.5 H6.5"></path><path d="M1.5 8 H6.5"></path><path d="M1.5 10.5 H5"></path></svg></button> <button id="btnResizeMode" class="tool-btn active-tool"><svg id="icon-resize-corner" width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="1" width="12" height="12" stroke-dasharray="2.5 2"></rect><line x1="4" y1="4" x2="10" y2="10"></line><polyline points="7,10 10,10 10,7"></polyline></svg> <svg id="icon-resize-center" width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="hidden"><rect x="1" y="1" width="12" height="12" stroke-dasharray="2.5 2"></rect><line x1="4" y1="4" x2="10" y2="10"></line><polyline points="4,6.5 4,4 6.5,4"></polyline><polyline points="10,7.5 10,10 7.5,10"></polyline><line x1="10" y1="4" x2="4" y2="10"></line><polyline points="7.5,4 10,4 10,6.5"></polyline><polyline points="4,7.5 4,10 6.5,10"></polyline></svg></button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <input id="diagramTitle" type="text" class="flex-1 min-w-0 px-2 py-1 text-sm bg-transparent border-0 focus:outline-none focus:ring-1 focus:ring-blue-500 rounded text-gray-700 dark:text-gray-300 placeholder:text-gray-400"/> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnZoomOut" class="tool-btn">−</button> <span id="zoomLevel" class="text-xs text-gray-500 dark:text-gray-400 w-10 text-center tabular-nums select-none">100%</span> <button id="btnZoomIn" class="tool-btn">+</button> <button id="btnZoomReset" class="tool-btn">⊡</button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnDark" class="tool-btn"><span id="darkIcon">☽</span></button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnDebug" class="hidden tool-btn text-xs font-mono">dbg</button> <div id="sepDebug" class="hidden w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnExportDrawio" class="tool-btn"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></button> <div class="w-px h-6 bg-gray-200 dark:bg-gray-700 mx-0.5"></div> <button id="btnSave" disabled="" class="px-3 py-1.5 text-xs font-semibold rounded-lg bg-blue-600 hover:bg-blue-700 text-white disabled:opacity-40 disabled:cursor-not-allowed shrink-0 transition-colors"><span> </span></button></header> <div class="flex flex-1 overflow-hidden"><div id="sidebar" class="w-56 shrink-0 border-r border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 flex flex-col overflow-hidden" style="transition: width 0.2s ease"><div class="flex items-center justify-between px-3 py-2 border-b border-gray-200 dark:border-gray-700 shrink-0"><span class="text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider"> </span> <button id="btnNewDiagram" class="text-xs font-medium text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 transition-colors"> </button></div> <div id="diagramList" class="flex-1 overflow-y-auto py-1"></div></div> <div role="separator" aria-orientation="vertical"></div> <div class="relative flex-1 overflow-hidden bg-gray-50 dark:bg-gray-950"><div id="vis-canvas" class="w-full h-full"></div> <div id="customShapeBar" class="hidden"><div id="customShapeBarBody"></div></div> <div id="debugLayer"></div> <div id="evidenceLayer" class="hidden"></div> <div id="stampOverlay" style="position:absolute;inset:0;display:none;z-index:11;cursor:crosshair;"></div> <div id="selectionOverlay"><div id="rh-tl" class="resize-handle" style="top: -5px; left: -5px; cursor: nw-resize"></div> <div id="rh-tr" class="resize-handle" style="top: -5px; right: -5px; cursor: ne-resize"></div> <div id="rh-bl" class="resize-handle" style="bottom: -5px; left: -5px; cursor: sw-resize"></div> <div id="rh-br" class="resize-handle" style="bottom: -5px; right: -5px; cursor: se-resize"></div> <div id="rh-rotate">↻</div> <div id="rh-label-rotate" style="left: 0; top: -28px;"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(25,5,5)"><line x1="2.5" y1="3" x2="7.5" y2="3"></line><line x1="5" y1="3" x2="5" y2="8"></line></g></svg></div></div> <aside id="evidencePanel" class="hidden absolute top-0 right-0 bottom-0 w-80 max-w-[85vw] z-30 bg-gray-50 dark:bg-gray-900 border-l border-gray-200 dark:border-gray-700 shadow-xl flex flex-col"><div class="flex items-center justify-between gap-2 px-4 py-3 border-b border-gray-200 dark:border-gray-700"><h2 id="evidencePanelTitle" class="text-sm font-semibold text-gray-800 dark:text-gray-100"> </h2> <button id="btnEvidenceClose" class="tool-btn !w-7 !h-7">×</button></div> <div id="evidencePanelBody" class="flex-1 overflow-y-auto p-3 space-y-3"></div></aside> <div id="nodePanel" class="float-panel hidden"><button id="btnNodeLock" class="tool-btn !w-6 !h-6 text-sm">🔒</button> <div class="panel-sep"></div> <div id="nodePanelControls" class="contents"><button id="nodeColorSwatch" style="width:1.5rem;height:1.5rem;border-radius:0.25rem;border:2px solid #a8a29e;background:#f5f5f4;cursor:pointer;flex-shrink:0;"></button> <div class="panel-sep"></div> <input id="nodeBgOpacity" type="range" min="0" max="100" step="5" value="100" class="w-16 h-1 accent-orange-500 cursor-pointer"/> <div class="panel-sep"></div> <button id="btnNodeLabelEdit" class="tool-btn !w-6 !h-6">✎</button> <button id="btnNodeLink" class="tool-btn !w-6 !h-6"><svg width="13" height="13" viewBox="0 0 13 13" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 7.5a3.5 3.5 0 0 0 5 0l1.5-1.5a3.5 3.5 0 0 0-5-5L5 2.5"></path><path d="M8 5.5a3.5 3.5 0 0 0-5 0L1.5 7a3.5 3.5 0 0 0 5 5L8 10.5"></path></svg></button> <div class="panel-sep"></div> <button id="btnNodeFontDecrease" class="tool-btn !w-8 !h-6" style="font-size: 10px">Aa−</button> <span id="nodeFontSizeValue" class="inline-flex items-center justify-center min-w-[2.25rem] h-6 px-1 text-[11px] font-mono text-gray-700 dark:text-gray-200 border border-gray-300 dark:border-gray-600 rounded bg-white/80 dark:bg-gray-800/80">13</span> <button id="btnNodeFontIncrease" class="tool-btn !w-8 !h-6" style="font-size: 10px">Aa+</button> <div class="panel-sep"></div> <button id="btnAlignLeft" class="tool-btn !w-6 !h-6"><svg width="12" height="10" viewBox="0 0 12 10" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="1" y1="2" x2="11" y2="2"></line><line x1="1" y1="5" x2="7" y2="5"></line><line x1="1" y1="8" x2="9" y2="8"></line></svg></button> <button id="btnAlignCenter" class="tool-btn !w-6 !h-6"><svg width="12" height="10" viewBox="0 0 12 10" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="1" y1="2" x2="11" y2="2"></line><line x1="2.5" y1="5" x2="9.5" y2="5"></line><line x1="1.5" y1="8" x2="10.5" y2="8"></line></svg></button> <button id="btnAlignRight" class="tool-btn !w-6 !h-6"><svg width="12" height="10" viewBox="0 0 12 10" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="1" y1="2" x2="11" y2="2"></line><line x1="5" y1="5" x2="11" y2="5"></line><line x1="3" y1="8" x2="11" y2="8"></line></svg></button> <div class="panel-sep"></div> <button id="btnValignTop" class="tool-btn !w-6 !h-6"><svg width="10" height="12" viewBox="0 0 10 12" fill="none" stroke="currentColor" stroke-linecap="round"><line x1="1" y1="1.5" x2="9" y2="1.5" stroke-width="2"></line><line x1="1" y1="5" x2="8" y2="5" stroke-width="1.3"></line><line x1="1" y1="8.5" x2="6" y2="8.5" stroke-width="1.3"></line></svg></button> <button id="btnValignMiddle" class="tool-btn !w-6 !h-6"><svg width="10" height="12" viewBox="0 0 10 12" fill="none" stroke="currentColor" stroke-linecap="round"><line x1="1" y1="2.5" x2="8" y2="2.5" stroke-width="1.3"></line><line x1="1" y1="6" x2="9" y2="6" stroke-width="2"></line><line x1="1" y1="9.5" x2="6" y2="9.5" stroke-width="1.3"></line></svg></button> <button id="btnValignBottom" class="tool-btn !w-6 !h-6"><svg width="10" height="12" viewBox="0 0 10 12" fill="none" stroke="currentColor" stroke-linecap="round"><line x1="1" y1="3.5" x2="8" y2="3.5" stroke-width="1.3"></line><line x1="1" y1="7" x2="6" y2="7" stroke-width="1.3"></line><line x1="1" y1="10.5" x2="9" y2="10.5" stroke-width="2"></line></svg></button> <div class="panel-sep"></div> <div id="customShapeLabelPlacementControls" class="hidden"><button class="tool-btn !w-7 !h-6 font-mono text-[10px]" data-label-placement="above">T↑</button> <button class="tool-btn !w-7 !h-6 font-mono text-[10px]" data-label-placement="below">T↓</button> <button class="tool-btn !w-7 !h-6 font-mono text-[10px]" data-label-placement="left">←T</button> <button class="tool-btn !w-7 !h-6 font-mono text-[10px]" data-label-placement="right">T→</button> <button class="tool-btn !w-7 !h-6 font-mono text-[10px]" data-label-placement="center">T□</button> <div class="panel-sep"></div></div> <button id="btnZOrderBack" class="tool-btn !w-7 !h-6"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="5" width="8" height="8" rx="1"></rect><rect x="5" y="1" width="8" height="8" rx="1" stroke-opacity="0.35"></rect></svg></button> <button id="btnZOrderFront" class="tool-btn !w-7 !h-6"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="5" width="8" height="8" rx="1" stroke-opacity="0.35"></rect><rect x="5" y="1" width="8" height="8" rx="1"></rect></svg></button> <div class="panel-sep"></div> <button id="btnStampColor" class="tool-btn !w-7 !h-6"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><path d="M7 2 C7 2 3 6.5 3 9 a4 4 0 0 0 8 0 C11 6.5 7 2 7 2 Z" fill="currentColor" fill-opacity="0.25"></path></svg></button> <button id="btnStampFontSize" class="tool-btn !w-7 !h-6 font-mono text-xs font-bold">Aa</button> <button id="btnStampSize" class="tool-btn !w-7 !h-6"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="6" height="6" rx="0.8" fill="currentColor" fill-opacity="0.25"></rect><path d="M10 2 L12 2 L12 4"></path><path d="M12 2 L9 5"></path><path d="M10 12 L12 12 L12 10"></path><path d="M12 12 L9 9"></path></svg></button> <div class="panel-sep"></div> <button id="btnRotateCCW" class="tool-btn !w-7 !h-6" style="font-size:15px; line-height:1;">↺</button> <button id="btnRotateCW" class="tool-btn !w-7 !h-6" style="font-size:15px; line-height:1;">↻</button> <div class="panel-sep"></div> <button id="btnCopyPng" class="tool-btn !h-6 px-1.5 font-mono text-xs font-semibold flex items-center gap-0.5"><svg width="10" height="10" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="7" x2="5" y2="1"></line><polyline points="2,4 5,1 8,4"></polyline><line x1="1" y1="9" x2="9" y2="9"></line></svg> PNG</button> <div class="panel-sep"></div> <button id="btnGroup" class="tool-btn !w-8 !h-7"><svg width="22" height="14" viewBox="0 0 22 14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"><rect x="0.7" y="1" width="20.6" height="12" rx="2" stroke-dasharray="2.5,1.5"></rect><rect x="4" y="4.5" width="3" height="5" rx="1" fill="currentColor"></rect><rect x="15" y="4.5" width="3" height="5" rx="1" fill="currentColor"></rect></svg></button> <button id="btnUngroup" class="tool-btn !w-8 !h-7"><svg width="26" height="14" viewBox="0 0 26 14" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"><rect x="0.7" y="1" width="9" height="12" rx="2" stroke-dasharray="2.5,1.5"></rect><rect x="3" y="4.5" width="3" height="5" rx="1" fill="currentColor"></rect><rect x="16.3" y="1" width="9" height="12" rx="2" stroke-dasharray="2.5,1.5"></rect><rect x="19" y="4.5" width="3" height="5" rx="1" fill="currentColor"></rect></svg></button> <div class="panel-sep"></div> <button id="btnSaveShapeDefault" class="tool-btn !w-7 !h-6"><svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0"></path><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.474l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115z"></path></svg></button></div></div> <div id="linkPanel" class="float-panel hidden" style="min-width:260px; flex-direction:column; align-items:stretch; gap:0.5rem; padding:0.75rem;"><div class="text-xs font-semibold text-gray-500 dark:text-gray-400 mb-1"> </div> <label class="flex items-center gap-2 text-xs cursor-pointer"><input type="radio" name="linkType" id="linkTypeUrl" value="url" class="accent-orange-500"/> <span> </span></label> <div id="linkUrlRow"><input id="linkUrlInput" type="url" class="w-full text-xs border border-gray-300 dark:border-gray-600 rounded px-2 py-1 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-1 focus:ring-orange-400"/></div> <label class="flex items-center gap-2 text-xs cursor-pointer"><input type="radio" name="linkType" id="linkTypeDiagram" value="diagram" class="accent-orange-500"/> <span> </span></label> <div id="linkDiagramRow" class="hidden"><select id="linkDiagramSelect" class="w-full text-xs border border-gray-300 dark:border-gray-600 rounded px-2 py-1 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-1 focus:ring-orange-400"></select></div> <label class="flex items-center gap-2 text-xs cursor-pointer"><input type="radio" name="linkType" id="linkTypeNew" value="new" class="accent-orange-500"/> <span> </span></label> <div id="linkNewRow" class="hidden"><input id="linkNewName" type="text" class="w-full text-xs border border-gray-300 dark:border-gray-600 rounded px-2 py-1 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-1 focus:ring-orange-400"/></div> <div class="flex gap-1 mt-1"><button id="btnLinkSave" class="flex-1 text-xs bg-orange-500 hover:bg-orange-600 text-white rounded px-2 py-1"> </button> <button id="btnLinkRemove" class="text-xs border border-gray-300 dark:border-gray-600 rounded px-2 py-1 hover:bg-red-50 dark:hover:bg-red-900/20 hover:text-red-600"> </button> <button id="btnLinkCancel" class="text-xs border border-gray-300 dark:border-gray-600 rounded px-2 py-1 hover:bg-gray-100 dark:hover:bg-gray-700">✕</button></div></div> <div id="edgePanel" class="float-panel hidden"><button id="btnEdgeLock" class="tool-btn !w-6 !h-6 text-sm">🔒</button> <div class="panel-sep"></div> <div id="edgePanelControls" class="contents"><button id="edgeBtnNone" class="tool-btn !w-7 !h-6 font-mono text-xs">—</button> <button id="edgeBtnFrom" class="tool-btn !w-7 !h-6 text-xs">←</button> <button id="edgeBtnTo" class="tool-btn !w-7 !h-6 text-xs">→</button> <button id="edgeBtnBoth" class="tool-btn !w-8 !h-6 text-xs">←→</button> <div class="panel-sep"></div> <button id="edgeBtnSolid" class="tool-btn !w-8 !h-6"><svg width="22" height="4" viewBox="0 0 22 4"><line x1="1" y1="2" x2="21" y2="2" stroke="currentColor" stroke-width="2" stroke-linecap="round"></line></svg></button> <button id="edgeBtnDashed" class="tool-btn !w-8 !h-6"><svg width="22" height="4" viewBox="0 0 22 4"><line x1="1" y1="2" x2="21" y2="2" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="4,3"></line></svg></button> <div class="panel-sep"></div> <button id="btnEdgeFontDecrease" class="tool-btn !w-8 !h-6" style="font-size: 10px">Aa−</button> <span id="edgeFontSizeValue" class="inline-flex items-center justify-center min-w-[2.25rem] h-6 px-1 text-[11px] font-mono text-gray-700 dark:text-gray-200 border border-gray-300 dark:border-gray-600 rounded bg-white/80 dark:bg-gray-800/80">11</span> <button id="btnEdgeFontIncrease" class="tool-btn !w-8 !h-6" style="font-size: 10px">Aa+</button> <div class="panel-sep"></div> <button id="btnEdgeLabelEdit" class="tool-btn !w-6 !h-6">✎</button> <button id="btnEdgeLabelWidthReset" class="tool-btn !w-6 !h-6 text-xs">↔</button> <div class="panel-sep"></div> <button id="btnEdgeLabelRotateCCW" class="tool-btn !w-7 !h-6 text-sm">↺</button> <button id="btnEdgeLabelRotateCW" class="tool-btn !w-7 !h-6 text-sm">↻</button> <div class="panel-sep"></div> <button id="btnEdgeLabelOffsetLeft" class="tool-btn !w-6 !h-6 text-sm">←</button> <button id="btnEdgeLabelOffsetRight" class="tool-btn !w-6 !h-6 text-sm">→</button> <button id="btnEdgeLabelOffsetUp" class="tool-btn !w-6 !h-6 text-sm">↑</button> <button id="btnEdgeLabelOffsetDown" class="tool-btn !w-6 !h-6 text-sm">↓</button> <button id="btnEdgeLabelOffsetReset" class="tool-btn !w-6 !h-6 text-xs">⊙</button> <div class="panel-sep"></div> <button id="btnEdgeWidthDecrease" class="tool-btn !w-7 !h-6" style="font-size:10px">W−</button> <button id="btnEdgeWidthIncrease" class="tool-btn !w-7 !h-6" style="font-size:10px">W+</button> <div class="panel-sep"></div> <button id="edgeColorSwatch" style="width:1.5rem;height:1.5rem;border-radius:0.25rem;border:2px solid #a8a29e;background:#a8a29e;cursor:pointer;flex-shrink:0;"></button> <div class="panel-sep"></div> <button id="btnEdgeClearPorts" class="tool-btn !w-8 !h-6 text-xs">⊗</button> <div class="panel-sep"></div> <button id="btnSaveEdgeDefault" class="tool-btn !w-7 !h-6"><svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492M5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0"></path><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.474l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115z"></path></svg></button></div></div> <textarea id="labelInput" class="hidden" rows="1"></textarea> <div id="emptyState" class="absolute inset-0 flex flex-col items-center justify-center text-gray-400 dark:text-gray-600 pointer-events-none select-none"><svg width="52" height="44" viewBox="0 0 52 44" fill="none" stroke="currentColor" stroke-width="1.5" class="mb-3 opacity-50"><rect x="2" y="4" width="18" height="12" rx="2"></rect><rect x="32" y="28" width="18" height="12" rx="2"></rect><line x1="20" y1="10" x2="32" y2="34" stroke-dasharray="4,3"></line><rect x="17" y="16" width="18" height="12" rx="2"></rect><line x1="26" y1="16" x2="26" y2="10" stroke-dasharray="4,3"></line></svg> <p class="text-sm"> </p></div></div></div> <div id="toastContainer"></div> <div id="imageNameModal" style="display:none;position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,0.5);" class="flex items-center justify-center"><div class="bg-white dark:bg-gray-800 rounded-xl shadow-2xl p-6 w-80 flex flex-col gap-3"><p class="text-sm font-semibold text-gray-700 dark:text-gray-200"> </p> <p class="text-xs text-gray-400 dark:text-gray-500">Lettres, chiffres, <code class="bg-gray-100 dark:bg-gray-700 px-0.5 rounded">_</code> et <code class="bg-gray-100 dark:bg-gray-700 px-0.5 rounded">-</code> uniquement.
|
|
148
148
|
Laisser vide pour un nom automatique.</p> <div class="flex items-center gap-1"><input id="imageNameInput" type="text" autocomplete="off" spellcheck="false" class="flex-1 rounded border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700
|
|
149
149
|
text-gray-900 dark:text-gray-100 text-sm px-2 py-1 outline-none focus:ring-2 focus:ring-blue-400"/> <span class="text-xs text-gray-400 dark:text-gray-500 whitespace-nowrap">.png</span></div> <p id="imageNameError" class="text-xs text-red-500 hidden"> </p> <div class="flex gap-2 justify-end"><button id="imageNameCancel" class="px-3 py-1 text-xs rounded border border-gray-300 dark:border-gray-600
|
|
150
|
-
text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"> </button> <button id="imageNameConfirm" class="px-3 py-1 text-xs rounded bg-blue-500 text-white hover:bg-blue-600"> </button></div></div></div></div>`);function qg(e,t){Ge(t,!0),Bi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await da(t);let{initDiagram:r}=await Gg(async()=>{let{initDiagram:e}=await import(`./main-Y0hSGHO-.js`);return{initDiagram:e}},[]);e=r();let i=document.getElementById(`sidebar`),a=parseInt(localStorage.getItem(n)||``,10);i&&Number.isFinite(a)&&(i.style.width=a+`px`)})(),()=>e?.()});let n=`ld-diagram-sidebar-w`,r=F(!1);function i(e){e.preventDefault();let t=document.getElementById(`sidebar`);if(!t)return;let i=e.clientX,a=t.getBoundingClientRect().width;I(r,!0),t.style.transition=`none`,document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`;let o=e=>{let n=Math.max(160,Math.min(480,a+e.clientX-i));t.style.width=n+`px`},s=()=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),document.body.style.cursor=``,document.body.style.userSelect=``,I(r,!1),t.style.transition=``;try{localStorage.setItem(n,String(parseInt(t.style.width,10)))}catch{}};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}var a=Kg(),o=R(a),s=R(o),c=R(s,!0);N(s);var l=B(s,4),u=B(l,4),d=B(u,2),f=B(d,4),p=B(f,2),m=B(p,2),h=B(m,2),g=B(h,2),_=B(g,2),v=B(_,2),y=B(v,2),b=B(y,2),x=B(b,4),S=B(x,4),C=B(S,4),w=B(C,2),T=B(w,2),E=B(T,2),D=B(E,2),O=B(D,2),k=B(O,4),ee=B(k,4),A=B(ee,4),te=B(A,2),ne=B(te,8),re=B(ne,4),ie=B(re,4),ae=R(ie),oe=R(ae,!0);N(ae),N(ie),N(o);var se=B(o,2),ce=R(se),le=R(ce),ue=R(le),de=R(ue,!0);N(ue);var fe=B(ue,2),pe=R(fe,!0);N(fe),N(le),Pe(2),N(ce);var me=B(ce,2),he=B(me,2),ge=B(R(he),10),_e=B(R(ge),8),ve=B(_e,2);N(ge);var ye=B(ge,2),be=R(ye),xe=R(be),Se=R(xe,!0);N(xe);var j=B(xe,2);N(be),Pe(2),N(ye);var Ce=B(ye,2),M=R(Ce),we=B(M,4),Te=R(we),Ee=B(Te,4),De=B(Ee,4),Oe=B(De,2),ke=B(Oe,4),Ae=B(ke,2),je=B(Ae,2),Me=B(je,4),Ne=B(Me,2),Fe=B(Ne,2),Ie=B(Fe,4),Le=B(Ie,2),Re=B(Le,2),ze=B(Re,4),Be=R(ze),Ve=B(Be,2),He=B(Ve,2),Ue=B(He,2),We=B(Ue,2);Pe(2),N(ze);var qe=B(ze,2),Je=B(qe,2),Ye=B(Je,4),Xe=B(Ye,2),Ze=B(Xe,2),Qe=B(Ze,4),$e=B(Qe,2),et=B($e,4),tt=B(et,4),nt=B(tt,2),rt=B(nt,4);N(we),N(Ce);var it=B(Ce,2),at=R(it),ot=R(at,!0);N(at);var st=B(at,2),ct=B(R(st),2),lt=R(ct,!0);N(ct),N(st);var ut=B(st,2),dt=R(ut);N(ut);var ft=B(ut,2),pt=B(R(ft),2),mt=R(pt,!0);N(pt),N(ft);var ht=B(ft,4),gt=B(R(ht),2),_t=R(gt,!0);N(gt),N(ht);var vt=B(ht,2),yt=R(vt);N(vt);var bt=B(vt,2),xt=R(bt),St=R(xt,!0);N(xt);var Ct=B(xt,2),wt=R(Ct,!0);N(Ct),Pe(2),N(bt),N(it);var Tt=B(it,2),Et=R(Tt),Dt=B(Et,4),Ot=R(Dt),kt=B(Ot,2),At=B(kt,2),jt=B(At,2),Mt=B(jt,4),Nt=B(Mt,2),Pt=B(Nt,4),Ft=B(Pt,2),It=B(Ft,2),Lt=B(It,4),Rt=B(Lt,2),zt=B(Rt,4),Bt=B(zt,2),P=B(Bt,4),Vt=B(P,2),Ht=B(Vt,2),Ut=B(Ht,2),Wt=B(Ut,2),Gt=B(Wt,4),Kt=B(Gt,2),qt=B(Kt,4),Jt=B(qt,4),Yt=B(Jt,4);N(Dt),N(Tt);var Xt=B(Tt,2),Zt=B(Xt,2),Qt=B(R(Zt),2),$t=R(Qt,!0);N(Qt),N(Zt),N(he),N(se);var en=B(se,4),tn=R(en),L=R(tn),nn=R(L,!0);N(L);var rn=B(L,4),an=R(rn);Pe(2),N(rn);var on=B(rn,2),sn=R(on,!0);N(on);var cn=B(on,2),ln=R(cn),un=R(ln,!0);N(ln);var dn=B(ln,2),fn=R(dn,!0);N(dn),N(cn),N(tn),N(en),N(a),V((e,t,n,i,a,o,s,ie,ae,se,ce,le,ue,fe,he,ge,ye,be,xe,Ce,we,N,Pe,ze,Ge,Ke,it,at,st,ct,ut,ft,pt,ht,gt,vt,bt,xt,Ct,Tt,Dt,F,Zt,I,Qt,en,tn,L,rn,on,cn,ln,dn,R,z,B,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn,wn,Tn,En,Dn,On,kn,An,jn,Mn,Nn,Pn,V,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir)=>{K(c,e),Y(l,`title`,t),Y(u,`title`,n),Y(d,`title`,i),Y(f,`title`,a),Y(p,`title`,o),Y(m,`title`,s),Y(h,`title`,ie),Y(g,`title`,ae),Y(_,`title`,se),Y(v,`title`,ce),Y(y,`title`,le),Y(b,`title`,ue),Y(x,`title`,fe),Y(S,`title`,he),Y(C,`title`,ge),Y(w,`title`,ye),Y(T,`title`,be),Y(E,`title`,xe),Y(D,`title`,Ce),Y(O,`title`,we),Y(k,`placeholder`,N),Y(ee,`title`,Pe),Y(A,`title`,ze),Y(te,`title`,Ge),Y(ne,`title`,Ke),Y(re,`title`,it),K(oe,at),K(de,st),K(pe,ct),mi(me,1,`w-1 shrink-0 cursor-col-resize select-none transition-colors ${H(r)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),Y(_e,`title`,ut),Y(ve,`title`,ft),K(Se,pt),Y(j,`title`,ht),Y(M,`title`,gt),Y(Te,`title`,vt),Y(Ee,`title`,bt),Y(De,`title`,xt),Y(Oe,`title`,Ct),Y(ke,`title`,Tt),Y(Ae,`title`,Dt),Y(je,`title`,F),Y(Me,`title`,Zt),Y(Ne,`title`,I),Y(Fe,`title`,Qt),Y(Ie,`title`,en),Y(Le,`title`,tn),Y(Re,`title`,L),Y(Be,`title`,rn),Y(Ve,`title`,on),Y(He,`title`,cn),Y(Ue,`title`,ln),Y(We,`title`,dn),Y(qe,`title`,R),Y(Je,`title`,z),Y(Ye,`title`,B),Y(Xe,`title`,pn),Y(Ze,`title`,mn),Y(Qe,`title`,hn),Y($e,`title`,gn),Y(et,`title`,_n),Y(tt,`title`,vn),Y(nt,`title`,yn),Y(rt,`title`,bn),K(ot,xn),K(lt,Sn),Y(dt,`placeholder`,Cn),K(mt,wn),K(_t,Tn),Y(yt,`placeholder`,En),K(St,Dn),K(wt,On),Y(Et,`title`,kn),Y(Ot,`title`,An),Y(kt,`title`,jn),Y(At,`title`,Mn),Y(jt,`title`,Nn),Y(Mt,`title`,Pn),Y(Nt,`title`,V),Y(Pt,`title`,Fn),Y(Ft,`title`,In),Y(It,`title`,Ln),Y(Lt,`title`,Rn),Y(Rt,`title`,zn),Y(zt,`title`,Bn),Y(Bt,`title`,Vn),Y(P,`title`,Hn),Y(Vt,`title`,Un),Y(Ht,`title`,Wn),Y(Ut,`title`,Gn),Y(Wt,`title`,Kn),Y(Gt,`title`,qn),Y(Kt,`title`,Jn),Y(qt,`title`,Yn),Y(Jt,`title`,Xn),Y(Yt,`title`,Zn),Y(Xt,`placeholder`,Qn),K($t,$n),K(nn,er),Y(an,`placeholder`,tr),K(sn,nr),K(un,rr),K(fn,ir)},[()=>X(`diagram.back_btn`),()=>X(`diagram.diagrams_list_title`),()=>X(`diagram.toolbar.copy_mcp_id`),()=>X(`diagram.toolbar.select`),()=>X(`diagram.toolbar.box`),()=>X(`diagram.toolbar.ellipse`),()=>X(`diagram.toolbar.database`),()=>X(`diagram.toolbar.circle`),()=>X(`diagram.toolbar.actor`),()=>X(`diagram.toolbar.postit`),()=>X(`diagram.toolbar.text_free`),()=>X(`diagram.toolbar.image`),()=>X(`diagram.toolbar.shape_editor`),()=>X(`diagram.toolbar.arrow`),()=>X(`diagram.toolbar.delete`),()=>X(`diagram.toolbar.defaults`),()=>X(`diagram.toolbar.align_guides`),()=>X(`diagram.toolbar.grid`),()=>X(`diagram.toolbar.edge_style`),()=>X(`diagram.toolbar.evidence_mode`),()=>X(`diagram.toolbar.resize_corner`),()=>X(`diagram.toolbar.title_placeholder`),()=>X(`diagram.toolbar.zoom_out`),()=>X(`diagram.toolbar.zoom_in`),()=>X(`diagram.toolbar.fit`),()=>X(`diagram.toolbar.debug`),()=>X(`diagram.toolbar.export_drawio`),()=>X(`diagram.toolbar.save`),()=>X(`diagram.sidebar.title`),()=>X(`diagram.sidebar.new_btn`),()=>X(`diagram.selection.rotate_shape`),()=>X(`diagram.selection.rotate_text`),()=>X(`diagram.evidence.panel_title`),()=>X(`diagram.evidence.close`),()=>X(`diagram.node_panel.lock`),()=>X(`diagram.node_panel.color`),()=>X(`diagram.node_panel.bg_opacity`),()=>X(`diagram.node_panel.edit_label`),()=>X(`diagram.node_panel.edit_link`),()=>X(`diagram.node_panel.font_decrease`),()=>X(`diagram.node_panel.font_size_value`),()=>X(`diagram.node_panel.font_increase`),()=>X(`diagram.node_panel.align_left`),()=>X(`diagram.node_panel.align_center`),()=>X(`diagram.node_panel.align_right`),()=>X(`diagram.node_panel.align_top`),()=>X(`diagram.node_panel.align_middle`),()=>X(`diagram.node_panel.align_bottom`),()=>X(`diagram.node_panel.custom_label_above`),()=>X(`diagram.node_panel.custom_label_below`),()=>X(`diagram.node_panel.custom_label_left`),()=>X(`diagram.node_panel.custom_label_right`),()=>X(`diagram.node_panel.custom_label_center`),()=>X(`diagram.node_panel.send_back`),()=>X(`diagram.node_panel.bring_front`),()=>X(`diagram.node_panel.stamp_color`),()=>X(`diagram.node_panel.stamp_font`),()=>X(`diagram.node_panel.stamp_size`),()=>X(`diagram.node_panel.rotate_ccw`),()=>X(`diagram.node_panel.rotate_cw`),()=>X(`diagram.node_panel.copy_png`),()=>X(`diagram.node_panel.group`),()=>X(`diagram.node_panel.ungroup`),()=>X(`diagram.node_panel.save_as_default`),()=>X(`diagram.link_panel.title`),()=>X(`diagram.link_panel.external`),()=>X(`diagram.link_panel.url_placeholder`),()=>X(`diagram.link_panel.existing_diagram`),()=>X(`diagram.link_panel.new_diagram`),()=>X(`diagram.link_panel.diagram_name_placeholder`),()=>X(`diagram.link_panel.save_btn`),()=>X(`diagram.link_panel.remove_btn`),()=>X(`diagram.edge_panel.lock`),()=>X(`diagram.edge_panel.no_arrow`),()=>X(`diagram.edge_panel.arrow_from`),()=>X(`diagram.edge_panel.arrow_to`),()=>X(`diagram.edge_panel.arrow_both`),()=>X(`diagram.edge_panel.solid`),()=>X(`diagram.edge_panel.dashed`),()=>X(`diagram.edge_panel.font_decrease`),()=>X(`diagram.edge_panel.font_size_value`),()=>X(`diagram.edge_panel.font_increase`),()=>X(`diagram.edge_panel.edit_label`),()=>X(`diagram.edge_panel.reset_label_width`),()=>X(`diagram.edge_panel.rotate_label_ccw`),()=>X(`diagram.edge_panel.rotate_label_cw`),()=>X(`diagram.edge_panel.offset_label_left`),()=>X(`diagram.edge_panel.offset_label_right`),()=>X(`diagram.edge_panel.offset_label_up`),()=>X(`diagram.edge_panel.offset_label_down`),()=>X(`diagram.edge_panel.offset_label_reset`),()=>X(`diagram.edge_panel.width_decrease`),()=>X(`diagram.edge_panel.width_increase`),()=>X(`diagram.edge_panel.color`),()=>X(`diagram.edge_panel.clear_ports`),()=>X(`diagram.edge_panel.save_as_default`),()=>X(`diagram.label_input.placeholder`),()=>X(`diagram.empty_state`),()=>X(`diagram.image_modal.title`),()=>X(`diagram.image_modal.placeholder`),()=>X(`diagram.image_modal.error_chars`),()=>X(`diagram.image_modal.cancel_btn`),()=>X(`diagram.image_modal.paste_btn`)]),U(`click`,s,()=>history.back()),U(`mousedown`,me,i),G(e,a),Ke()}Nr([`click`,`mousedown`]),He();var Jg={network:null,nodes:null,edges:null,diagrams:[],currentDiagramId:null,currentTool:`select`,pendingShape:`box`,selectedNodeIds:[],selectedEdgeIds:[],alignGuides:!0,gridEnabled:!0,debugMode:!1,isDirty:!1,sidebarOpen:!0,editingNodeId:null,editingEdgeId:null,resizeDrag:null,rotateDrag:null,labelRotateDrag:null,activeStamp:null,stampTargetIds:[],clipboard:null,canonicalOrder:[],edgesStraight:!1,resizeSymmetric:!1,nodeColorOverrides:{},customShapeLibraries:[],customShapeDefs:new Map,edgeLabelCanvasPos:{},edgeLabelBBox:{},freeArrowFirstPoint:null,exportingPng:!1,evidenceMode:!1};function Yg(){Jg.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var Xg=`custom-shape`,Zg=`custom-shape:`,Qg=[{id:`N`,x:.5,y:0},{id:`NE`,x:1,y:0},{id:`E`,x:1,y:.5},{id:`SE`,x:1,y:1},{id:`S`,x:.5,y:1},{id:`SW`,x:0,y:1},{id:`W`,x:0,y:.5},{id:`NW`,x:0,y:0}];function $g(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function e_(e){return $g(e)?e.slice(13):null}function t_(e){return e&&Jg.customShapeDefs&&Jg.customShapeDefs.get(e)||null}function n_(e){let t=t_(e);return[t&&t.width||65,t&&t.height||65]}function r_(e){let t=t_(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:Qg}function i_(e){let t=t_(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function a_(){try{let e=await fetch(`/api/shape-libraries`);if(!e.ok)throw Error(`shape libraries unavailable`);let t=await e.json(),n=Array.isArray(t.libraries)?t.libraries:[];Jg.customShapeLibraries=n,Jg.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>Jg.customShapeDefs.set(e.id,e))})}catch{Jg.customShapeLibraries=[],Jg.customShapeDefs=new Map}}function o_(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(Jg.customShapeLibraries||[]).flatMap(e=>(e.shapes||[]).filter(e=>e.showInDiagram!==!1).map(t=>({...t,libraryName:e.name})));e.classList.toggle(`hidden`,n.length===0),n.forEach(e=>{let n=document.createElement(`button`);n.type=`button`,n.className=`custom-shape-btn`,n.title=`${e.libraryName||``}${e.libraryName?` · `:``}${e.name}`,n.dataset.customShapeId=e.id;let r=document.createElement(`img`);r.src=e.imageSrc,r.alt=``,r.draggable=!1,n.appendChild(r),n.addEventListener(`click`,()=>{window.dispatchEvent(new CustomEvent(`diagram:setTool`,{detail:{tool:`addNode`,shape:`${Zg}${e.id}`}}))}),t.appendChild(n)})}function s_(){let e={saveState:document.getElementById(`saveState`),librarySelect:document.getElementById(`librarySelect`),libraryName:document.getElementById(`libraryName`),shapeList:document.getElementById(`shapeList`),previewStage:document.getElementById(`previewStage`),previewImage:document.getElementById(`previewImage`),shapeName:document.getElementById(`shapeName`),imageFile:document.getElementById(`imageFile`),shapeWidth:document.getElementById(`shapeWidth`),shapeHeight:document.getElementById(`shapeHeight`),labelPlacement:document.getElementById(`labelPlacement`),shapeShowInDiagram:document.getElementById(`shapeShowInDiagram`),anchorList:document.getElementById(`anchorList`),anchorCount:document.getElementById(`anchorCount`)},t={libraries:[]},n=null,r=null,i=null,a=null,o=e=>`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,s=()=>t.libraries.find(e=>e.id===n)||null,c=()=>s()?.shapes.find(e=>e.id===r)||null,l=e=>Math.max(0,Math.min(1,e)),u=e=>[`below`,`above`,`right`,`left`,`center`].includes(e)?e:`below`,d=e=>String(e??``).replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e]);function f(t){e.saveState.textContent=t,t&&setTimeout(()=>{e.saveState.textContent===t&&(e.saveState.textContent=``)},1800)}async function p(){t=await(await fetch(`/api/shape-libraries`)).json(),Array.isArray(t.libraries)||(t.libraries=[]),t.libraries.length||t.libraries.push({id:o(`lib`),name:`My shapes`,shapes:[]}),n=t.libraries[0].id,r=t.libraries[0].shapes[0]?.id||null,i=c()?structuredClone(c()):h(),g()}async function m(){t=await(await fetch(`/api/shape-libraries`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).json(),f(`Saved`)}function h(){return{id:o(`shape`),name:`New shape`,imageSrc:``,width:65,height:65,labelPlacement:`below`,showInDiagram:!0,anchors:structuredClone(Qg)}}function g(){_(),v(),y()}function _(){e.librarySelect.innerHTML=``,t.libraries.forEach(t=>{let r=document.createElement(`option`);r.value=t.id,r.textContent=t.name,r.selected=t.id===n,e.librarySelect.appendChild(r)}),e.libraryName.value=s()?.name||``}function v(){let t=s();e.shapeList.innerHTML=``,(t?.shapes||[]).forEach(t=>{let n=document.createElement(`button`);n.type=`button`,n.className=`shape-item w-full flex items-center gap-2 px-2 py-1.5 rounded text-sm text-left hover:bg-gray-100 ${t.id===r?`active`:``}`;let a=document.createElement(`img`);a.src=t.imageSrc,a.alt=``,a.className=`w-6 h-6 object-contain shrink-0`;let o=document.createElement(`span`);o.className=`truncate`,o.textContent=t.name,n.append(a,o),n.addEventListener(`click`,()=>{r=t.id,i=structuredClone(t),g()}),e.shapeList.appendChild(n)}),t?.shapes?.length||(e.shapeList.innerHTML=`<p class="text-xs text-gray-400 px-2 py-2">No shape yet.</p>`)}function y(){i||=h(),e.previewStage.style.aspectRatio=`${Math.max(16,Number(i.width)||65)} / ${Math.max(16,Number(i.height)||65)}`,e.previewImage.src=i.imageSrc||``,e.previewImage.style.display=i.imageSrc?`block`:`none`,e.shapeName.value=i.name||``,e.shapeWidth.value=i.width||65,e.shapeHeight.value=i.height||65,e.labelPlacement.value=u(i.labelPlacement),e.shapeShowInDiagram.checked=i.showInDiagram!==!1,b()}function b(){e.previewStage.querySelectorAll(`.anchor-dot`).forEach(e=>e.remove()),e.anchorList.innerHTML=``;let t=i.anchors||[];e.anchorCount.textContent=`${t.length} anchor${t.length>1?`s`:``}`,t.forEach((t,n)=>{let r=document.createElement(`button`);r.type=`button`,r.className=`anchor-dot`,r.style.left=`${t.x*100}%`,r.style.top=`${t.y*100}%`,r.dataset.anchorId=t.id,r.innerHTML=`<span>${t.id}</span>`,r.addEventListener(`pointerdown`,e=>{e.preventDefault(),a=t.id,r.setPointerCapture(e.pointerId)}),e.previewStage.appendChild(r);let o=document.createElement(`div`);o.className=`grid grid-cols-[4.5rem_1fr_1fr_2rem] gap-2 items-center`,o.innerHTML=`
|
|
150
|
+
text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"> </button> <button id="imageNameConfirm" class="px-3 py-1 text-xs rounded bg-blue-500 text-white hover:bg-blue-600"> </button></div></div></div></div>`);function qg(e,t){Ge(t,!0),Bi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await da(t);let{initDiagram:r}=await Gg(async()=>{let{initDiagram:e}=await import(`./main-C46W1H4G.js`);return{initDiagram:e}},[]);e=r();let i=document.getElementById(`sidebar`),a=parseInt(localStorage.getItem(n)||``,10);i&&Number.isFinite(a)&&(i.style.width=a+`px`)})(),()=>e?.()});let n=`ld-diagram-sidebar-w`,r=F(!1);function i(e){e.preventDefault();let t=document.getElementById(`sidebar`);if(!t)return;let i=e.clientX,a=t.getBoundingClientRect().width;I(r,!0),t.style.transition=`none`,document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`;let o=e=>{let n=Math.max(160,Math.min(480,a+e.clientX-i));t.style.width=n+`px`},s=()=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s),document.body.style.cursor=``,document.body.style.userSelect=``,I(r,!1),t.style.transition=``;try{localStorage.setItem(n,String(parseInt(t.style.width,10)))}catch{}};document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s)}var a=Kg(),o=R(a),s=R(o),c=R(s,!0);N(s);var l=B(s,4),u=B(l,4),d=B(u,2),f=B(d,4),p=B(f,2),m=B(p,2),h=B(m,2),g=B(h,2),_=B(g,2),v=B(_,2),y=B(v,2),b=B(y,2),x=B(b,4),S=B(x,4),C=B(S,4),w=B(C,2),T=B(w,2),E=B(T,2),D=B(E,2),O=B(D,2),k=B(O,4),ee=B(k,4),A=B(ee,4),te=B(A,2),ne=B(te,8),re=B(ne,4),ie=B(re,4),ae=R(ie),oe=R(ae,!0);N(ae),N(ie),N(o);var se=B(o,2),ce=R(se),le=R(ce),ue=R(le),de=R(ue,!0);N(ue);var fe=B(ue,2),pe=R(fe,!0);N(fe),N(le),Pe(2),N(ce);var me=B(ce,2),he=B(me,2),ge=B(R(he),10),_e=B(R(ge),8),ve=B(_e,2);N(ge);var ye=B(ge,2),be=R(ye),xe=R(be),Se=R(xe,!0);N(xe);var j=B(xe,2);N(be),Pe(2),N(ye);var Ce=B(ye,2),M=R(Ce),we=B(M,4),Te=R(we),Ee=B(Te,4),De=B(Ee,4),Oe=B(De,2),ke=B(Oe,4),Ae=B(ke,2),je=B(Ae,2),Me=B(je,4),Ne=B(Me,2),Fe=B(Ne,2),Ie=B(Fe,4),Le=B(Ie,2),Re=B(Le,2),ze=B(Re,4),Be=R(ze),Ve=B(Be,2),He=B(Ve,2),Ue=B(He,2),We=B(Ue,2);Pe(2),N(ze);var qe=B(ze,2),Je=B(qe,2),Ye=B(Je,4),Xe=B(Ye,2),Ze=B(Xe,2),Qe=B(Ze,4),$e=B(Qe,2),et=B($e,4),tt=B(et,4),nt=B(tt,2),rt=B(nt,4);N(we),N(Ce);var it=B(Ce,2),at=R(it),ot=R(at,!0);N(at);var st=B(at,2),ct=B(R(st),2),lt=R(ct,!0);N(ct),N(st);var ut=B(st,2),dt=R(ut);N(ut);var ft=B(ut,2),pt=B(R(ft),2),mt=R(pt,!0);N(pt),N(ft);var ht=B(ft,4),gt=B(R(ht),2),_t=R(gt,!0);N(gt),N(ht);var vt=B(ht,2),yt=R(vt);N(vt);var bt=B(vt,2),xt=R(bt),St=R(xt,!0);N(xt);var Ct=B(xt,2),wt=R(Ct,!0);N(Ct),Pe(2),N(bt),N(it);var Tt=B(it,2),Et=R(Tt),Dt=B(Et,4),Ot=R(Dt),kt=B(Ot,2),At=B(kt,2),jt=B(At,2),Mt=B(jt,4),Nt=B(Mt,2),Pt=B(Nt,4),Ft=B(Pt,2),It=B(Ft,2),Lt=B(It,4),Rt=B(Lt,2),zt=B(Rt,4),Bt=B(zt,2),P=B(Bt,4),Vt=B(P,2),Ht=B(Vt,2),Ut=B(Ht,2),Wt=B(Ut,2),Gt=B(Wt,4),Kt=B(Gt,2),qt=B(Kt,4),Jt=B(qt,4),Yt=B(Jt,4);N(Dt),N(Tt);var Xt=B(Tt,2),Zt=B(Xt,2),Qt=B(R(Zt),2),$t=R(Qt,!0);N(Qt),N(Zt),N(he),N(se);var en=B(se,4),tn=R(en),L=R(tn),nn=R(L,!0);N(L);var rn=B(L,4),an=R(rn);Pe(2),N(rn);var on=B(rn,2),sn=R(on,!0);N(on);var cn=B(on,2),ln=R(cn),un=R(ln,!0);N(ln);var dn=B(ln,2),fn=R(dn,!0);N(dn),N(cn),N(tn),N(en),N(a),V((e,t,n,i,a,o,s,ie,ae,se,ce,le,ue,fe,he,ge,ye,be,xe,Ce,we,N,Pe,ze,Ge,Ke,it,at,st,ct,ut,ft,pt,ht,gt,vt,bt,xt,Ct,Tt,Dt,F,Zt,I,Qt,en,tn,L,rn,on,cn,ln,dn,R,z,B,pn,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn,wn,Tn,En,Dn,On,kn,An,jn,Mn,Nn,Pn,V,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir)=>{K(c,e),Y(l,`title`,t),Y(u,`title`,n),Y(d,`title`,i),Y(f,`title`,a),Y(p,`title`,o),Y(m,`title`,s),Y(h,`title`,ie),Y(g,`title`,ae),Y(_,`title`,se),Y(v,`title`,ce),Y(y,`title`,le),Y(b,`title`,ue),Y(x,`title`,fe),Y(S,`title`,he),Y(C,`title`,ge),Y(w,`title`,ye),Y(T,`title`,be),Y(E,`title`,xe),Y(D,`title`,Ce),Y(O,`title`,we),Y(k,`placeholder`,N),Y(ee,`title`,Pe),Y(A,`title`,ze),Y(te,`title`,Ge),Y(ne,`title`,Ke),Y(re,`title`,it),K(oe,at),K(de,st),K(pe,ct),mi(me,1,`w-1 shrink-0 cursor-col-resize select-none transition-colors ${H(r)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),Y(_e,`title`,ut),Y(ve,`title`,ft),K(Se,pt),Y(j,`title`,ht),Y(M,`title`,gt),Y(Te,`title`,vt),Y(Ee,`title`,bt),Y(De,`title`,xt),Y(Oe,`title`,Ct),Y(ke,`title`,Tt),Y(Ae,`title`,Dt),Y(je,`title`,F),Y(Me,`title`,Zt),Y(Ne,`title`,I),Y(Fe,`title`,Qt),Y(Ie,`title`,en),Y(Le,`title`,tn),Y(Re,`title`,L),Y(Be,`title`,rn),Y(Ve,`title`,on),Y(He,`title`,cn),Y(Ue,`title`,ln),Y(We,`title`,dn),Y(qe,`title`,R),Y(Je,`title`,z),Y(Ye,`title`,B),Y(Xe,`title`,pn),Y(Ze,`title`,mn),Y(Qe,`title`,hn),Y($e,`title`,gn),Y(et,`title`,_n),Y(tt,`title`,vn),Y(nt,`title`,yn),Y(rt,`title`,bn),K(ot,xn),K(lt,Sn),Y(dt,`placeholder`,Cn),K(mt,wn),K(_t,Tn),Y(yt,`placeholder`,En),K(St,Dn),K(wt,On),Y(Et,`title`,kn),Y(Ot,`title`,An),Y(kt,`title`,jn),Y(At,`title`,Mn),Y(jt,`title`,Nn),Y(Mt,`title`,Pn),Y(Nt,`title`,V),Y(Pt,`title`,Fn),Y(Ft,`title`,In),Y(It,`title`,Ln),Y(Lt,`title`,Rn),Y(Rt,`title`,zn),Y(zt,`title`,Bn),Y(Bt,`title`,Vn),Y(P,`title`,Hn),Y(Vt,`title`,Un),Y(Ht,`title`,Wn),Y(Ut,`title`,Gn),Y(Wt,`title`,Kn),Y(Gt,`title`,qn),Y(Kt,`title`,Jn),Y(qt,`title`,Yn),Y(Jt,`title`,Xn),Y(Yt,`title`,Zn),Y(Xt,`placeholder`,Qn),K($t,$n),K(nn,er),Y(an,`placeholder`,tr),K(sn,nr),K(un,rr),K(fn,ir)},[()=>X(`diagram.back_btn`),()=>X(`diagram.diagrams_list_title`),()=>X(`diagram.toolbar.copy_mcp_id`),()=>X(`diagram.toolbar.select`),()=>X(`diagram.toolbar.box`),()=>X(`diagram.toolbar.ellipse`),()=>X(`diagram.toolbar.database`),()=>X(`diagram.toolbar.circle`),()=>X(`diagram.toolbar.actor`),()=>X(`diagram.toolbar.postit`),()=>X(`diagram.toolbar.text_free`),()=>X(`diagram.toolbar.image`),()=>X(`diagram.toolbar.shape_editor`),()=>X(`diagram.toolbar.arrow`),()=>X(`diagram.toolbar.delete`),()=>X(`diagram.toolbar.defaults`),()=>X(`diagram.toolbar.align_guides`),()=>X(`diagram.toolbar.grid`),()=>X(`diagram.toolbar.edge_style`),()=>X(`diagram.toolbar.evidence_mode`),()=>X(`diagram.toolbar.resize_corner`),()=>X(`diagram.toolbar.title_placeholder`),()=>X(`diagram.toolbar.zoom_out`),()=>X(`diagram.toolbar.zoom_in`),()=>X(`diagram.toolbar.fit`),()=>X(`diagram.toolbar.debug`),()=>X(`diagram.toolbar.export_drawio`),()=>X(`diagram.toolbar.save`),()=>X(`diagram.sidebar.title`),()=>X(`diagram.sidebar.new_btn`),()=>X(`diagram.selection.rotate_shape`),()=>X(`diagram.selection.rotate_text`),()=>X(`diagram.evidence.panel_title`),()=>X(`diagram.evidence.close`),()=>X(`diagram.node_panel.lock`),()=>X(`diagram.node_panel.color`),()=>X(`diagram.node_panel.bg_opacity`),()=>X(`diagram.node_panel.edit_label`),()=>X(`diagram.node_panel.edit_link`),()=>X(`diagram.node_panel.font_decrease`),()=>X(`diagram.node_panel.font_size_value`),()=>X(`diagram.node_panel.font_increase`),()=>X(`diagram.node_panel.align_left`),()=>X(`diagram.node_panel.align_center`),()=>X(`diagram.node_panel.align_right`),()=>X(`diagram.node_panel.align_top`),()=>X(`diagram.node_panel.align_middle`),()=>X(`diagram.node_panel.align_bottom`),()=>X(`diagram.node_panel.custom_label_above`),()=>X(`diagram.node_panel.custom_label_below`),()=>X(`diagram.node_panel.custom_label_left`),()=>X(`diagram.node_panel.custom_label_right`),()=>X(`diagram.node_panel.custom_label_center`),()=>X(`diagram.node_panel.send_back`),()=>X(`diagram.node_panel.bring_front`),()=>X(`diagram.node_panel.stamp_color`),()=>X(`diagram.node_panel.stamp_font`),()=>X(`diagram.node_panel.stamp_size`),()=>X(`diagram.node_panel.rotate_ccw`),()=>X(`diagram.node_panel.rotate_cw`),()=>X(`diagram.node_panel.copy_png`),()=>X(`diagram.node_panel.group`),()=>X(`diagram.node_panel.ungroup`),()=>X(`diagram.node_panel.save_as_default`),()=>X(`diagram.link_panel.title`),()=>X(`diagram.link_panel.external`),()=>X(`diagram.link_panel.url_placeholder`),()=>X(`diagram.link_panel.existing_diagram`),()=>X(`diagram.link_panel.new_diagram`),()=>X(`diagram.link_panel.diagram_name_placeholder`),()=>X(`diagram.link_panel.save_btn`),()=>X(`diagram.link_panel.remove_btn`),()=>X(`diagram.edge_panel.lock`),()=>X(`diagram.edge_panel.no_arrow`),()=>X(`diagram.edge_panel.arrow_from`),()=>X(`diagram.edge_panel.arrow_to`),()=>X(`diagram.edge_panel.arrow_both`),()=>X(`diagram.edge_panel.solid`),()=>X(`diagram.edge_panel.dashed`),()=>X(`diagram.edge_panel.font_decrease`),()=>X(`diagram.edge_panel.font_size_value`),()=>X(`diagram.edge_panel.font_increase`),()=>X(`diagram.edge_panel.edit_label`),()=>X(`diagram.edge_panel.reset_label_width`),()=>X(`diagram.edge_panel.rotate_label_ccw`),()=>X(`diagram.edge_panel.rotate_label_cw`),()=>X(`diagram.edge_panel.offset_label_left`),()=>X(`diagram.edge_panel.offset_label_right`),()=>X(`diagram.edge_panel.offset_label_up`),()=>X(`diagram.edge_panel.offset_label_down`),()=>X(`diagram.edge_panel.offset_label_reset`),()=>X(`diagram.edge_panel.width_decrease`),()=>X(`diagram.edge_panel.width_increase`),()=>X(`diagram.edge_panel.color`),()=>X(`diagram.edge_panel.clear_ports`),()=>X(`diagram.edge_panel.save_as_default`),()=>X(`diagram.label_input.placeholder`),()=>X(`diagram.empty_state`),()=>X(`diagram.image_modal.title`),()=>X(`diagram.image_modal.placeholder`),()=>X(`diagram.image_modal.error_chars`),()=>X(`diagram.image_modal.cancel_btn`),()=>X(`diagram.image_modal.paste_btn`)]),U(`click`,s,()=>history.back()),U(`mousedown`,me,i),G(e,a),Ke()}Nr([`click`,`mousedown`]),He();var Jg={network:null,nodes:null,edges:null,diagrams:[],currentDiagramId:null,currentTool:`select`,pendingShape:`box`,selectedNodeIds:[],selectedEdgeIds:[],alignGuides:!0,gridEnabled:!0,debugMode:!1,isDirty:!1,sidebarOpen:!0,editingNodeId:null,editingEdgeId:null,resizeDrag:null,rotateDrag:null,labelRotateDrag:null,activeStamp:null,stampTargetIds:[],clipboard:null,canonicalOrder:[],edgesStraight:!1,resizeSymmetric:!1,nodeColorOverrides:{},customShapeLibraries:[],customShapeDefs:new Map,edgeLabelCanvasPos:{},edgeLabelBBox:{},freeArrowFirstPoint:null,exportingPng:!1,evidenceMode:!1};function Yg(){Jg.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var Xg=`custom-shape`,Zg=`custom-shape:`,Qg=[{id:`N`,x:.5,y:0},{id:`NE`,x:1,y:0},{id:`E`,x:1,y:.5},{id:`SE`,x:1,y:1},{id:`S`,x:.5,y:1},{id:`SW`,x:0,y:1},{id:`W`,x:0,y:.5},{id:`NW`,x:0,y:0}];function $g(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function e_(e){return $g(e)?e.slice(13):null}function t_(e){return e&&Jg.customShapeDefs&&Jg.customShapeDefs.get(e)||null}function n_(e){let t=t_(e);return[t&&t.width||65,t&&t.height||65]}function r_(e){let t=t_(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:Qg}function i_(e){let t=t_(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function a_(){try{let e=await fetch(`/api/shape-libraries`);if(!e.ok)throw Error(`shape libraries unavailable`);let t=await e.json(),n=Array.isArray(t.libraries)?t.libraries:[];Jg.customShapeLibraries=n,Jg.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>Jg.customShapeDefs.set(e.id,e))})}catch{Jg.customShapeLibraries=[],Jg.customShapeDefs=new Map}}function o_(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(Jg.customShapeLibraries||[]).flatMap(e=>(e.shapes||[]).filter(e=>e.showInDiagram!==!1).map(t=>({...t,libraryName:e.name})));e.classList.toggle(`hidden`,n.length===0),n.forEach(e=>{let n=document.createElement(`button`);n.type=`button`,n.className=`custom-shape-btn`,n.title=`${e.libraryName||``}${e.libraryName?` · `:``}${e.name}`,n.dataset.customShapeId=e.id;let r=document.createElement(`img`);r.src=e.imageSrc,r.alt=``,r.draggable=!1,n.appendChild(r),n.addEventListener(`click`,()=>{window.dispatchEvent(new CustomEvent(`diagram:setTool`,{detail:{tool:`addNode`,shape:`${Zg}${e.id}`}}))}),t.appendChild(n)})}function s_(){let e={saveState:document.getElementById(`saveState`),librarySelect:document.getElementById(`librarySelect`),libraryName:document.getElementById(`libraryName`),shapeList:document.getElementById(`shapeList`),previewStage:document.getElementById(`previewStage`),previewImage:document.getElementById(`previewImage`),shapeName:document.getElementById(`shapeName`),imageFile:document.getElementById(`imageFile`),shapeWidth:document.getElementById(`shapeWidth`),shapeHeight:document.getElementById(`shapeHeight`),labelPlacement:document.getElementById(`labelPlacement`),shapeShowInDiagram:document.getElementById(`shapeShowInDiagram`),anchorList:document.getElementById(`anchorList`),anchorCount:document.getElementById(`anchorCount`)},t={libraries:[]},n=null,r=null,i=null,a=null,o=e=>`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,s=()=>t.libraries.find(e=>e.id===n)||null,c=()=>s()?.shapes.find(e=>e.id===r)||null,l=e=>Math.max(0,Math.min(1,e)),u=e=>[`below`,`above`,`right`,`left`,`center`].includes(e)?e:`below`,d=e=>String(e??``).replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e]);function f(t){e.saveState.textContent=t,t&&setTimeout(()=>{e.saveState.textContent===t&&(e.saveState.textContent=``)},1800)}async function p(){t=await(await fetch(`/api/shape-libraries`)).json(),Array.isArray(t.libraries)||(t.libraries=[]),t.libraries.length||t.libraries.push({id:o(`lib`),name:`My shapes`,shapes:[]}),n=t.libraries[0].id,r=t.libraries[0].shapes[0]?.id||null,i=c()?structuredClone(c()):h(),g()}async function m(){t=await(await fetch(`/api/shape-libraries`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).json(),f(`Saved`)}function h(){return{id:o(`shape`),name:`New shape`,imageSrc:``,width:65,height:65,labelPlacement:`below`,showInDiagram:!0,anchors:structuredClone(Qg)}}function g(){_(),v(),y()}function _(){e.librarySelect.innerHTML=``,t.libraries.forEach(t=>{let r=document.createElement(`option`);r.value=t.id,r.textContent=t.name,r.selected=t.id===n,e.librarySelect.appendChild(r)}),e.libraryName.value=s()?.name||``}function v(){let t=s();e.shapeList.innerHTML=``,(t?.shapes||[]).forEach(t=>{let n=document.createElement(`button`);n.type=`button`,n.className=`shape-item w-full flex items-center gap-2 px-2 py-1.5 rounded text-sm text-left hover:bg-gray-100 ${t.id===r?`active`:``}`;let a=document.createElement(`img`);a.src=t.imageSrc,a.alt=``,a.className=`w-6 h-6 object-contain shrink-0`;let o=document.createElement(`span`);o.className=`truncate`,o.textContent=t.name,n.append(a,o),n.addEventListener(`click`,()=>{r=t.id,i=structuredClone(t),g()}),e.shapeList.appendChild(n)}),t?.shapes?.length||(e.shapeList.innerHTML=`<p class="text-xs text-gray-400 px-2 py-2">No shape yet.</p>`)}function y(){i||=h(),e.previewStage.style.aspectRatio=`${Math.max(16,Number(i.width)||65)} / ${Math.max(16,Number(i.height)||65)}`,e.previewImage.src=i.imageSrc||``,e.previewImage.style.display=i.imageSrc?`block`:`none`,e.shapeName.value=i.name||``,e.shapeWidth.value=i.width||65,e.shapeHeight.value=i.height||65,e.labelPlacement.value=u(i.labelPlacement),e.shapeShowInDiagram.checked=i.showInDiagram!==!1,b()}function b(){e.previewStage.querySelectorAll(`.anchor-dot`).forEach(e=>e.remove()),e.anchorList.innerHTML=``;let t=i.anchors||[];e.anchorCount.textContent=`${t.length} anchor${t.length>1?`s`:``}`,t.forEach((t,n)=>{let r=document.createElement(`button`);r.type=`button`,r.className=`anchor-dot`,r.style.left=`${t.x*100}%`,r.style.top=`${t.y*100}%`,r.dataset.anchorId=t.id,r.innerHTML=`<span>${t.id}</span>`,r.addEventListener(`pointerdown`,e=>{e.preventDefault(),a=t.id,r.setPointerCapture(e.pointerId)}),e.previewStage.appendChild(r);let o=document.createElement(`div`);o.className=`grid grid-cols-[4.5rem_1fr_1fr_2rem] gap-2 items-center`,o.innerHTML=`
|
|
151
151
|
<input class="field !h-7 text-xs" value="${d(t.id)}">
|
|
152
152
|
<input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.x*100)}">
|
|
153
153
|
<input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.y*100)}">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./index-
|
|
1
|
+
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./index-BMus4TU3.js";var p={select:`toolSelect`,"addNode:box":`toolBox`,"addNode:ellipse":`toolEllipse`,"addNode:database":`toolDatabase`,"addNode:circle":`toolCircle`,"addNode:actor":`toolActor`,"addNode:post-it":`toolPostIt`,"addNode:text-free":`toolTextFree`,"addNode:image":`toolImage`,addEdge:`toolArrow`},m={"c-gray":{bg:`#f5f5f4`,border:`#a8a29e`,font:`#292524`,hbg:`#e7e5e4`,hborder:`#78716c`},"c-blue":{bg:`#dbeafe`,border:`#3b82f6`,font:`#1e40af`,hbg:`#bfdbfe`,hborder:`#2563eb`},"c-green":{bg:`#dcfce7`,border:`#22c55e`,font:`#166534`,hbg:`#bbf7d0`,hborder:`#16a34a`},"c-amber":{bg:`#fef9c3`,border:`#f59e0b`,font:`#78350f`,hbg:`#fef08a`,hborder:`#d97706`},"c-rose":{bg:`#ffe4e6`,border:`#f43f5e`,font:`#881337`,hbg:`#fecdd3`,hborder:`#e11d48`},"c-purple":{bg:`#ede9fe`,border:`#8b5cf6`,font:`#4c1d95`,hbg:`#ddd6fe`,hborder:`#7c3aed`},"c-teal":{bg:`#ccfbf1`,border:`#14b8a6`,font:`#134e4a`,hbg:`#99f6e4`,hborder:`#0d9488`},"c-orange":{bg:`#ffedd5`,border:`#f97316`,font:`#7c2d12`,hbg:`#fed7aa`,hborder:`#ea580c`},"c-cyan":{bg:`#cffafe`,border:`#06b6d4`,font:`#164e63`,hbg:`#a5f3fc`,hborder:`#0891b2`},"c-indigo":{bg:`#e0e7ff`,border:`#6366f1`,font:`#312e81`,hbg:`#c7d2fe`,hborder:`#4f46e5`},"c-pink":{bg:`#fce7f3`,border:`#ec4899`,font:`#831843`,hbg:`#fbcfe8`,hborder:`#db2777`},"c-lime":{bg:`#ecfccb`,border:`#84cc16`,font:`#365314`,hbg:`#d9f99d`,hborder:`#65a30d`},"c-red":{bg:`#fee2e2`,border:`#ef4444`,font:`#7f1d1d`,hbg:`#fecaca`,hborder:`#dc2626`},"c-sky":{bg:`#e0f2fe`,border:`#0ea5e9`,font:`#0c4a6e`,hbg:`#bae6fd`,hborder:`#0284c7`},"c-slate":{bg:`#f1f5f9`,border:`#64748b`,font:`#0f172a`,hbg:`#e2e8f0`,hborder:`#475569`}},h=[`c-gray`,`c-slate`,`c-blue`,`c-sky`,`c-cyan`,`c-teal`,`c-green`,`c-lime`,`c-amber`,`c-orange`,`c-red`,`c-rose`,`c-pink`,`c-purple`,`c-indigo`],g=[`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],_={"c-gray":.667,"c-slate":.488,"c-blue":.645,"c-sky":.518,"c-cyan":.473,"c-teal":.448,"c-green":.489,"c-lime":.496,"c-amber":.57,"c-orange":.578,"c-red":.64,"c-rose":.636,"c-pink":.638,"c-purple":.694,"c-indigo":.71};function v(e,t=.6){let n=parseInt(e.slice(1,3),16)/255,r=parseInt(e.slice(3,5),16)/255,i=parseInt(e.slice(5,7),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2,c=a-o,l=0,u=0;c>0&&(u=s>.5?c/(2-a-o):c/(a+o),l=a===n?((r-i)/c+(r<i?6:0))/6:a===r?((i-n)/c+2)/6:((n-r)/c+4)/6);function d(e,t,n){let r,i,a;if(t===0)r=i=a=n;else{let o=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),s=n<.5?n*(1+t):n+t-n*t,c=2*n-s;r=o(c,s,e+1/3),i=o(c,s,e),a=o(c,s,e-1/3)}return`#`+[r,i,a].map(e=>Math.max(0,Math.min(255,Math.round(e*255))).toString(16).padStart(2,`0`)).join(``)}let f=s*t,p=s*.93,m=f*.89;return{bg:e,border:d(l,u,f),font:s>.5?`#292524`:`#fafaf9`,hbg:d(l,u,Math.min(s,p)),hborder:d(l,u,Math.min(f,m))}}function y(e){return n.nodeColorOverrides[e]||m[e]||m[`c-gray`]}function b(e,t){return typeof e!=`string`||e.charAt(0)!==`#`||e.length!==7?e:`rgba(${parseInt(e.slice(1,3),16)},${parseInt(e.slice(3,5),16)},${parseInt(e.slice(5,7),16)},${t})`}function x(e,t,r,i){let a=n.nodes&&n.nodes.get(t);if(!a||!a.nodeLink)return;let o=r/2-7,s=i/2-7;e.save(),e.fillStyle=a.nodeLink.type===`url`?`#3b82f6`:`#f97316`,e.strokeStyle=`#fff`,e.lineWidth=1,e.beginPath(),e.arc(o,s,7,0,Math.PI*2),e.fill(),e.stroke(),e.strokeStyle=`#fff`,e.lineWidth=1.2,e.lineCap=`round`,e.beginPath(),e.moveTo(o-1.5,s+1.5),e.lineTo(o+1.5,s-1.5),e.moveTo(o-2.5,s-.5),e.lineTo(o-.5,s-2.5),e.moveTo(o+.5,s+2.5),e.lineTo(o+2.5,s+.5),e.stroke(),e.restore()}function S(e,t,n){if(!t)return[``];let r=t.split(` `),i=[],a=``;for(let t of r){let r=a?a+` `+t:t;a&&e.measureText(r).width>n?(i.push(a),a=t):a=r}return a&&i.push(a),i.length?i:[``]}function C(e,t,n,r,i,a,o,s,c){if(!t)return;e.save(),e.font=`${n}px system-ui,-apple-system,sans-serif`,e.fillStyle=r,e.textBaseline=`middle`;let l=0;i===`left`?(e.textAlign=`left`,l=o?-o/2+8:-40):i===`right`?(e.textAlign=`right`,l=o?o/2-8:40):(e.textAlign=`center`,l=0);let u=o?o-16:1/0,d=String(t).split(`
|
|
2
2
|
`).flatMap(t=>S(e,t,u)),f=n*1.3,p;p=o&&s?a===`top`?-(s/2-n/2-8):a===`bottom`?s/2-n/2-8-(d.length-1)*f:-((d.length-1)*f)/2:-((d.length-1)*f)/2,c&&e.rotate(c),d.forEach((t,n)=>e.fillText(t,l,p+n*f)),e.restore()}function w(e,t,n,r,i,a){a=Math.min(a,r/2,i/2),e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.quadraticCurveTo(t+r,n,t+r,n+a),e.lineTo(t+r,n+i-a),e.quadraticCurveTo(t+r,n+i,t+r-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath()}function T(e,t,r,i){let a=n.nodes&&n.nodes.get(e),o=a&&a.colorKey||i||`c-gray`,s=a&&a.bgOpacity,c=typeof s==`number`?Math.max(0,Math.min(1,s)):1,l=y(o),u=c<1?{...l,bg:b(l.bg,c),hbg:b(l.hbg,c)}:l;return{W:a&&a.nodeWidth||t,H:a&&a.nodeHeight||r,rotation:a&&a.rotation||0,labelRotation:a&&a.labelRotation||0,textAlign:a&&a.textAlign||`center`,textValign:a&&a.textValign||`middle`,fontSize:a&&a.fontSize||13,bgOpacity:c,colorKey:o,c:u}}function ee(e){return e?String(e).split(`
|
|
3
3
|
`):[]}function E(e){return[`center`,`below`,`above`,`right`,`left`].includes(e)?e:null}function te(e){return[`above`,`below`,`right`,`left`].includes(e)}function D(e,t,n){let r=`${t}px system-ui,-apple-system,sans-serif`;if(n){let t=n.font;n.font=r;let i=n.measureText(e).width;return n.font=t,i}return typeof document>`u`?String(e).length*t*.58:(D._ctx||=document.createElement(`canvas`).getContext(`2d`),D._ctx.font=r,D._ctx.measureText(e).width)}function ne(t,n,r){let i=e(t&&t.customShapeId),a=t&&t.nodeWidth||i&&i.width||65,o=t&&t.nodeHeight||i&&i.height||65,s=E(t&&t.labelPlacement)||E(i&&i.labelPlacement)||`below`,c=t&&t.fontSize||13,l=ee(n),u=c*1.3;if(!l.length||!te(s))return{placement:s,lines:l,lineH:u,imageOffsetX:0,imageOffsetY:0,labelBlockW:0,labelBlockH:0,totalW:a,totalH:o};let d=Math.max(...l.map(e=>D(e,c,r)))+16,f=l.length*u+8,p=s===`left`||s===`right`,m=p?a+d:Math.max(a,d),h=p?Math.max(o,f):o+f;return{placement:s,lines:l,lineH:u,imageOffsetX:s===`right`?-d/2:s===`left`?d/2:0,imageOffsetY:s===`below`?-f/2:s===`above`?f/2:0,labelBlockW:d,labelBlockH:f,totalW:m,totalH:h}}function re(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,H:c,rotation:l,labelRotation:u,textAlign:d,textValign:f,fontSize:p,c:m}=T(i,100,40,e);return{drawNode(){t.save(),t.translate(n,r),t.rotate(l),t.strokeStyle=a.selected?`#f97316`:m.border,t.fillStyle=a.selected?m.hbg:m.bg,t.lineWidth=1.5,w(t,-s/2,-c/2,s,c,4),t.fill(),t.stroke(),C(t,o,p,m.font,d,f,s,c,u),x(t,i,s,c),t.restore()},nodeDimensions:{width:s,height:c}}}}function ie(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,H:c,rotation:l,labelRotation:u,textAlign:d,textValign:f,fontSize:p,c:m}=T(i,110,50,e);return{drawNode(){t.save(),t.translate(n,r),t.rotate(l),t.strokeStyle=a.selected?`#f97316`:m.border,t.fillStyle=a.selected?m.hbg:m.bg,t.lineWidth=1.5,t.beginPath(),t.ellipse(0,0,s/2,c/2,0,0,Math.PI*2),t.fill(),t.stroke(),C(t,o,p,m.font,d,f,s,c,u),x(t,i,s,c),t.restore()},nodeDimensions:{width:s,height:c}}}}function ae(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,rotation:c,labelRotation:l,textAlign:u,textValign:d,fontSize:f,c:p}=T(i,55,55,e),m=s/2;return{drawNode(){t.save(),t.translate(n,r),t.rotate(c),t.strokeStyle=a.selected?`#f97316`:p.border,t.fillStyle=a.selected?p.hbg:p.bg,t.lineWidth=1.5,t.beginPath(),t.arc(0,0,m,0,Math.PI*2),t.fill(),t.stroke(),C(t,o,f,p.font,u,d,s,s,l),x(t,i,s,s),t.restore()},nodeDimensions:{width:s,height:s}}}}function oe(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,H:c,rotation:l,labelRotation:u,textAlign:d,textValign:f,fontSize:p,c:m}=T(i,50,70,e),h=s/2,g=Math.max(c*.12,6),_=-c/2+g,v=c/2-g;return{drawNode(){t.save(),t.translate(n,r),t.rotate(l),t.strokeStyle=a.selected?`#f97316`:m.border,t.fillStyle=a.selected?m.hbg:m.bg,t.lineWidth=1.5,t.fillRect(-h,_,s,v-_),t.beginPath(),t.ellipse(0,v,h,g,0,0,Math.PI*2),t.fill(),t.stroke(),t.beginPath(),t.moveTo(-h,_),t.lineTo(-h,v),t.moveTo(h,_),t.lineTo(h,v),t.stroke(),t.beginPath(),t.ellipse(0,_,h,g,0,0,Math.PI*2),t.fill(),t.stroke(),C(t,o,p,m.font,d,f,s,c,u),x(t,i,s,c),t.restore()},nodeDimensions:{width:s,height:c}}}}function se(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,H:c,rotation:l,labelRotation:u,textAlign:d,textValign:f,fontSize:p,c:m}=T(i,120,100,e||`c-amber`),h=Math.min(s,c)*.18;return{drawNode(){t.save(),t.translate(n,r),t.rotate(l),t.strokeStyle=a.selected?`#f97316`:m.border,t.fillStyle=a.selected?m.hbg:m.bg,t.lineWidth=1.5,t.beginPath(),t.moveTo(-s/2,-c/2),t.lineTo(s/2-h,-c/2),t.lineTo(s/2,-c/2+h),t.lineTo(s/2,c/2),t.lineTo(-s/2,c/2),t.closePath(),t.fill(),t.stroke(),t.globalAlpha=.3,t.fillStyle=m.border,t.beginPath(),t.moveTo(s/2-h,-c/2),t.lineTo(s/2,-c/2+h),t.lineTo(s/2-h,-c/2+h),t.closePath(),t.fill(),t.globalAlpha=1,t.beginPath(),t.moveTo(s/2-h,-c/2),t.lineTo(s/2-h,-c/2+h),t.lineTo(s/2,-c/2+h),t.stroke(),C(t,o,p,m.font,d,f,s,c,u),x(t,i,s,c),t.restore()},nodeDimensions:{width:s,height:c}}}}function ce(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,H:c,rotation:l,labelRotation:u,textAlign:d,textValign:f,fontSize:p,c:m}=T(i,80,30,e);return{drawNode(){t.save(),t.translate(n,r),t.rotate(l),(a.selected||a.hover)&&(t.strokeStyle=`#f97316`,t.lineWidth=1,t.setLineDash([4,3]),w(t,-s/2,-c/2,s,c,3),t.stroke(),t.setLineDash([])),C(t,o,p,m.font,d,f,s,c,u),x(t,i,s,c),t.restore()},nodeDimensions:{width:s,height:c}}}}var le=30,ue=52;function de(e){return function({ctx:t,x:n,y:r,id:i,state:a,label:o}){let{W:s,H:c,rotation:l,labelRotation:u,fontSize:d,c:f}=T(i,le,ue,e),p=s/le,m=c/ue;return{drawNode(){if(t.save(),t.translate(n,r),t.rotate(l),t.strokeStyle=a.selected?`#f97316`:f.border,t.fillStyle=a.selected?f.hbg:f.bg,t.lineWidth=2,t.lineCap=`round`,t.beginPath(),t.arc(0,-20*m,8*m,0,Math.PI*2),t.fill(),t.stroke(),t.beginPath(),t.moveTo(0,-12*m),t.lineTo(0,8*m),t.stroke(),t.beginPath(),t.moveTo(-13*p,0*m),t.lineTo(13*p,0*m),t.stroke(),t.beginPath(),t.moveTo(0,8*m),t.lineTo(-10*p,24*m),t.stroke(),t.beginPath(),t.moveTo(0,8*m),t.lineTo(10*p,24*m),t.stroke(),o){t.save(),u&&t.rotate(u),t.font=`${d}px system-ui,-apple-system,sans-serif`,t.fillStyle=f.font,t.textAlign=`center`,t.textBaseline=`top`;let e=String(o).split(`
|
|
4
4
|
`),n=d*1.3,r=24*m+4;e.forEach((e,i)=>t.fillText(e,0,r+i*n)),t.restore()}x(t,i,s,c),t.restore()},nodeDimensions:{width:s,height:c}}}}var fe=new Map;function pe(e,t){if(!e)return null;let n=fe.get(e);if(n===`loading`||n===`error`)return null;if(n)return n;fe.set(e,`loading`);let r=new Image;return r.onload=()=>{fe.set(e,r),t&&t()},r.onerror=()=>{fe.set(e,`error`)},r.src=e,null}function me(e){return function({ctx:t,x:r,y:i,id:a,state:o,label:s}){let{W:c,H:l,rotation:u,labelRotation:d,textAlign:f,textValign:p,fontSize:m,c:h}=T(a,160,120,e||`c-gray`),g=n.nodes&&n.nodes.get(a),_=g&&g.imageSrc,v=pe(_,()=>n.network&&n.network.redraw());return{drawNode(){if(t.save(),t.translate(r,i),t.rotate(u),t.strokeStyle=o.selected?`#f97316`:h.border,t.lineWidth=o.selected?2:1,w(t,-c/2,-l/2,c,l,4),t.stroke(),v?(t.save(),w(t,-c/2,-l/2,c,l,4),t.clip(),t.drawImage(v,-c/2,-l/2,c,l),t.restore()):(t.fillStyle=o.selected?h.hbg:h.bg,w(t,-c/2,-l/2,c,l,4),t.fill(),t.fillStyle=h.border,t.font=`${Math.round(Math.min(c,l)*.25)}px system-ui`,t.textAlign=`center`,t.textBaseline=`middle`,t.fillText(_?`…`:`🖼`,0,0)),s){let e=String(s).split(`
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css" disabled />
|
|
16
16
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
|
|
17
17
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
|
|
18
|
-
<script type="module" crossorigin src="/assets/index-
|
|
18
|
+
<script type="module" crossorigin src="/assets/index-BMus4TU3.js"></script>
|
|
19
19
|
<link rel="stylesheet" crossorigin href="/assets/index-Cf_gTBeW.css">
|
|
20
20
|
</head>
|
|
21
21
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "living-ai-documentation",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.17.0",
|
|
4
4
|
"description": "Local Markdown documentation hub with a built-in MCP server — coding agents create ADRs, draw diagrams and detect drift while you code.",
|
|
5
5
|
"main": "dist/src/server.js",
|
|
6
6
|
"bin": {
|