living-ai-documentation 3.18.0 → 3.19.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.
- package/dist/frontend-svelte/assets/{index-COhoX4kH.js → index-CbcEU0-C.js} +2 -2
- package/dist/frontend-svelte/assets/index-naRn8o9U.css +1 -0
- package/dist/frontend-svelte/assets/{main-CCDIOfs_.js → main-BxPG9Mc_.js} +1 -1
- package/dist/frontend-svelte/i18n/en.json +1 -0
- package/dist/frontend-svelte/i18n/fr.json +1 -0
- package/dist/frontend-svelte/index.html +2 -2
- package/package.json +1 -1
- package/dist/frontend-svelte/assets/index--Wi2c37G.css +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
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,ee=1<<22,k=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|=k,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|=k,Qt(a,t)):(a.f&8388608&&(a.f^=k),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(ee|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^=k),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,t,n){Mn(()=>{var r=Cr(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};Pn(()=>{var e=n();wr(e),i&&Re(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}function si(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=si(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function ci(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=si(e))&&(r&&(r+=` `),r+=t);return r}function li(e){return typeof e==`object`?ci(e):e??``}var ui=[...`
|
|
2
2
|
\r\f\xA0\v`];function di(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||ui.includes(r[o-1]))&&(s===r.length||ui.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function fi(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 pi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function mi(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(pi)),i&&c.push(...Object.keys(i).map(pi));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=pi(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+=fi(r)),i&&(n+=fi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function hi(e,t,n,r,i,a){var o=e[ie];if(ke||o!==n||o===void 0){var s=di(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 gi(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 _i(e,t,n,r){var i=e[ae];if(ke||i!==t){var a=mi(t,r);(!ke||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ae]=t}else r&&(Array.isArray(r)?(gi(e,n?.[0],r[0]),gi(e,n?.[1],r[1],`important`)):gi(e,n,r));return r}function vi(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(xi(i));return}for(i of e.options)if(rn(xi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(e.selectedIndex=-1)}function yi(e){var t=new MutationObserver(()=>{vi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Dn(()=>{t.disconnect()})}function bi(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),xi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&xi(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(vi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=xi(s),n(a))}e.__value=a,i=!1}),yi(e)}function xi(e){return`__value`in e?e.__value:e.value}var Si=Symbol(`is custom element`),Ci=Symbol(`is html`),wi=le?`link`:`LINK`,Ti=le?`progress`:`PROGRESS`;function Ei(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 Di(e,t){var n=ki(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Ti)||(e.value=t??``)}function Oi(e,t){var n=ki(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function Y(e,t,n,r){var i=ki(e);ke&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===wi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ne]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ji(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ki(e){return e[re]??={[Si]:e.nodeName.includes(`-`),[Ci]:e.namespaceURI===Ce}}var Ai=new Map;function ji(e){var t=e.getAttribute(`is`)||e.nodeName,n=Ai.get(t);if(n)return n;Ai.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 Mi(e,t,n=t){var r=new WeakSet;Sn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Pi(e)?Fi(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(Pi(e)?Fi(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}Pi(e)&&n===Fi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Ni(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 Pi(e){var t=e.type;return t===`number`||t===`range`}function Fi(e){return e===``?null:+e}function Ii(e,t){return e===t||e?.[A]===t}function Li(e={},t,n,r){var i=Ue.r,a=tr;return Mn(()=>{var o,s;return Pn(()=>{o=s,s=r?.()||[],Cr(()=>{Ii(n(...s),e)||(t(e,...s),o&&Ii(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&&Ii(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Ri(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(()=>{zi(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(()=>{zi(t,r),m(n.a)})}function zi(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function Bi(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 Vi(e){Ue===null&&ue(`onMount`),Ve&&Ue.l!==null?Hi(Ue).m.push(e):On(()=>{let t=Cr(e);if(typeof t==`function`)return t})}function Hi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var Ui=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 Wi(e,t){var n=Ui(),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 Gi=W(`<p class="browser-msg">Loading…</p>`),Ki=W(`<p class="browser-msg browser-msg--error">Cannot read directory</p>`),qi=W(`<p class="browser-msg">Empty directory</p>`),Ji=W(`<button type="button" class="browser-row browser-row--dir"><span>📁</span><span> </span></button>`),Yi=W(`<span class="badge-added">Added</span>`),Xi=W(`<button type="button" class="link-btn">+ Add</button>`),Zi=W(`<div class="browser-row browser-row--file"><span class="browser-row-name"><span>📄</span><span> </span></span> <!></div>`),Qi=W(`<!> <!>`,1),$i=W(`<p class="field-hint" style="font-style:italic">No extra files added yet.</p>`),ea=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>`),ta=W(`<div class="extra-files-list"></div>`),na=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 ra(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},_=na(),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,Gi())},E=e=>{G(e,Ki())},D=e=>{G(e,qi())},O=e=>{var n=Qi(),r=z(n);J(r,17,()=>H(i),Yr,(e,t)=>{var n=Ji(),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=Zi(),i=R(r),a=B(R(i)),o=R(a,!0);N(a),N(i);var s=B(i,2),c=e=>{G(e,Yi())},l=P(()=>t.extraFiles.includes(H(n).path)),u=e=>{var t=Xi();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 ee=B(v,4),k=e=>{G(e,$i())},A=e=>{var n=ta();J(n,21,()=>t.extraFiles,Yr,(e,n,r)=>{var i=ea(),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(ee,e=>{t.extraFiles.length===0?e(k):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 ia=W(`<div class="swatch-wrap"><div class="swatch"></div> <input type="color" class="swatch-input"/></div>`),aa=W(`<div class="edge-swatch-wrap"><div class="edge-swatch"></div> <button type="button" class="remove-swatch-btn">✕</button></div>`),oa=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 sa(e,t){Ge(t,!0);let n=Bi(t,`nodePalette`,15),r=Bi(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=oa(),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=ia(),c=R(s),l=B(c,2);Ei(l),N(s),V(()=>{Y(s,`title`,i[H(t)].label),_i(c,`background:${H(a)??``};border-color:${H(o)??``}`),Di(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=aa(),i=R(r),a=B(i,2);N(r),V(()=>_i(i,`background:${H(t)??``}`)),U(`click`,a,()=>m(n)),G(e,r)}),N(C);var w=B(C,2),T=R(w);Ei(T);var E=B(T,2);N(w),N(b),U(`click`,v,d),U(`click`,S,f),Mi(T,()=>H(c),e=>I(c,e)),U(`click`,E,p),G(e,h),Ke()}Nr([`click`,`input`]);var ca=F(L({}));async function la(e){try{let t=await fetch(`/i18n/${e||`en`}.json`);t.ok&&I(ca,await t.json(),!0)}catch{}}function X(e,t){let n=H(ca)[e]===void 0?e:H(ca)[e];if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{${e}}`,r);return n}var ua=`living-documentation:persistent-toast`,da=2600,fa=900*1e3,pa=new Map;function ma(){return`toast-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function ha(){let e=document.getElementById(`workspaceToastStack`);if(e)return e;document.getElementById(`workspaceToast`)?.remove(),document.getElementById(`workspaceToastIcon`)?.remove(),document.getElementById(`workspaceToastMessage`)?.remove();let t=document.createElement(`div`);return t.id=`workspaceToastStack`,t.className=`workspace-toast-stack`,t.setAttribute(`role`,`status`),t.setAttribute(`aria-live`,`polite`),document.body.append(t),t}function ga(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return typeof t.id==`string`&&typeof t.message==`string`&&[`success`,`error`,`loading`].includes(String(t.state))&&(t.expiresAt===null||typeof t.expiresAt==`number`)&&(t.href===void 0||typeof t.href==`string`)&&(t.linkLabel===void 0||typeof t.linkLabel==`string`)}function _a(){let e=localStorage.getItem(ua);if(!e)return[];try{let t=JSON.parse(e);if(Array.isArray(t))return t.filter(ga);if(typeof t==`object`&&t&&!Array.isArray(t)){let e=t;if(typeof e.message==`string`&&[`success`,`error`,`loading`].includes(String(e.state))&&(e.expiresAt===null||typeof e.expiresAt==`number`))return[{id:ma(),message:e.message,state:e.state,expiresAt:e.expiresAt}]}}catch{return[]}return[]}function va(e){e.length?localStorage.setItem(ua,JSON.stringify(e)):localStorage.removeItem(ua)}function ya(e){let t=pa.get(e);t&&(clearTimeout(t),pa.delete(e))}function ba(e){ya(e);let t=_a().filter(t=>t.id!==e);va(t),wa(t),Ta(t)}function xa(e){return e===`loading`?`⟳`:e===`error`?`!`:`✓`}function Sa(e){let t=Date.now();return e.filter(e=>!e.expiresAt||e.expiresAt>t)}function Ca(e){let t=document.createElement(`div`);t.className=`workspace-toast`,t.dataset.state=e.state,t.dataset.toastId=e.id;let n=document.createElement(`span`);n.className=`toast-icon`,n.setAttribute(`aria-hidden`,`true`),n.textContent=xa(e.state);let r=document.createElement(`div`);r.className=`workspace-toast-body`;let i=document.createElement(`p`);if(i.className=`workspace-toast-message`,i.textContent=e.message,r.append(i),e.href){let t=document.createElement(`a`);t.className=`workspace-toast-link`,t.href=e.href,t.textContent=e.linkLabel||`Open`,r.append(t)}let a=document.createElement(`button`);return a.className=`workspace-toast-close`,a.type=`button`,a.setAttribute(`aria-label`,`Close notification`),a.textContent=`×`,a.addEventListener(`click`,()=>ba(e.id)),t.append(n,r,a),t}function wa(e){let t=ha(),n=Sa(e);t.hidden=n.length===0;let r=new Set(n.map(e=>e.id));for(let e of Array.from(t.querySelectorAll(`[data-toast-id]`)))r.has(e.dataset.toastId??``)||e.remove();for(let e of n){let n=Array.from(t.querySelectorAll(`[data-toast-id]`)).find(t=>t.dataset.toastId===e.id);if(n){let t=n.querySelector(`.workspace-toast-message`);if(t&&t.textContent!==e.message&&(t.textContent=e.message),n.dataset.state!==e.state){n.dataset.state=e.state;let t=n.querySelector(`.toast-icon`);t&&(t.textContent=xa(e.state))}let r=n.querySelector(`.workspace-toast-link`);if(e.href)if(r)r.href=e.href,r.textContent=e.linkLabel||`Open`;else{let t=document.createElement(`a`);t.className=`workspace-toast-link`,t.href=e.href,t.textContent=e.linkLabel||`Open`,n.querySelector(`.workspace-toast-body`)?.append(t)}else r&&r.remove()}else t.append(Ca(e))}n.length!==e.length&&va(n)}function Ta(e){for(let t of pa.keys())e.some(e=>e.id===t)||ya(t);for(let t of e){if(ya(t.id),!t.expiresAt)continue;let e=t.expiresAt-Date.now();if(e<=0){ba(t.id);continue}pa.set(t.id,window.setTimeout(()=>ba(t.id),e))}}function Ea(e){let t=Sa(_a()),n=t.findIndex(t=>t.id===e.id)>=0?t.map(t=>t.id===e.id?e:t):[...t,e];return va(n),wa(n),Ta(n),e.id}function Da(){let e=Sa(_a());va(e),wa(e),Ta(e)}function Oa(e,t=ma()){let n=typeof t==`string`?{id:t}:t;return Ea({id:n.id??ma(),message:e,state:`loading`,expiresAt:Date.now()+fa,href:n.href,linkLabel:n.linkLabel})}function ka(e,t=`success`,n=da,r=ma()){let i=typeof r==`string`?{id:r}:r;return Ea({id:i.id??ma(),message:e,state:t,expiresAt:Date.now()+n,href:i.href,linkLabel:i.linkLabel})}var Aa=`/api/workspace`;async function ja(){try{let e=await fetch(Aa,{headers:{Accept:`application/json`}});if(!e.ok)throw Error(`Workspace load failed with ${e.status}`);return await e.json()}catch(e){return console.warn(`[workspace] load failed`,e),null}}async function Ma(e){try{let t=await fetch(Aa,{method:`PUT`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(`Workspace save failed with ${t.status}`);return await t.json()}catch(e){return console.warn(`[workspace] save failed`,e),null}}async function Na(e){try{return await(await fetch(`${Aa}/list-models`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)})).json()}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Failed to list models`}}}async function Pa(e,t){try{let n=await fetch(`${Aa}/run-agent-stream`,{method:`POST`,headers:{Accept:`application/x-ndjson, application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)});if(!n.ok)return{ok:!1,error:await n.json().then(e=>typeof e?.error==`string`?e.error:`Agent run failed`).catch(()=>`Agent run failed`)};if(!n.body)return{ok:!1,error:`Agent stream is unavailable`};let r=new TextDecoder,i=n.body.getReader(),a=``,o=``,s=``,c=e=>{if(!e.trim())return;let n=JSON.parse(e);t(n),n.type===`final`&&typeof n.content==`string`&&(o=n.content),n.type===`error`&&(s=n.message||`Agent run failed`)};for(;;){let{value:e,done:t}=await i.read();if(t)break;a+=r.decode(e,{stream:!0});let n=a.split(`
|
|
3
3
|
`);a=n.pop()??``;for(let e of n)c(e),await new Promise(e=>setTimeout(e,0))}return a+=r.decode(),c(a),s?{ok:!1,error:s}:o?{ok:!0,content:o}:{ok:!1,error:`Agent did not produce a response`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Agent run failed`}}}async function Fa(e,t,n){try{let r=await fetch(`${Aa}/run-agent-document-stream`,{method:`POST`,headers:{Accept:`application/x-ndjson, application/json`,"Content-Type":`application/json`},body:JSON.stringify({agentId:e,userInput:t})});if(!r.ok)return{ok:!1,error:await r.json().then(e=>typeof e?.error==`string`?e.error:`Agent run failed`).catch(()=>`Agent run failed`)};if(!r.body)return{ok:!1,error:`Agent stream is unavailable`};let i=new TextDecoder,a=r.body.getReader(),o=``,s,c=``,l=!1,u=e=>{if(!e.trim())return;let t=JSON.parse(e);n(t),t.type===`document`&&t.document&&(s=t.document),t.type===`error`&&(c=t.message||`Agent run failed`,l=!0)};for(;;){let{value:e,done:t}=await a.read();if(t)break;o+=i.decode(e,{stream:!0});let n=o.split(`
|
|
4
|
-
`);o=n.pop()??``;for(let e of n)u(e),await new Promise(e=>setTimeout(e,0))}return o+=i.decode(),u(o),s?{ok:s.ok,document:s,error:l?c:void 0}:c?{ok:!1,error:c}:{ok:!1,error:`Agent did not produce a response`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Agent run failed`}}}async function Ia(e){try{let t=await fetch(`${Aa}/test-llm`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)}),n=await t.json();return{...n,ok:t.ok&&n.ok===!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Connection test failed`}}}var La=W(`<p class="agents-dropdown-empty svelte-f11yds"> </p>`),Ra=W(`<span class="agents-item-badge svelte-f11yds"> </span>`),za=W(`<span class="agents-item-badge agents-item-badge--input svelte-f11yds"> </span>`),Ba=W(`<button type="button" role="menuitem"><span class="agents-item-name svelte-f11yds"> </span> <!></button>`),Va=W(`<div class="agents-group svelte-f11yds"><button type="button" class="agents-group-toggle svelte-f11yds"><span class="agents-group-label svelte-f11yds"> </span> <span>›</span></button> <!></div>`),Ha=W(`<div class="agents-backdrop svelte-f11yds"></div> <div class="agents-dropdown svelte-f11yds" role="menu"><!></div>`,1),Ua=W(`<div class="confirm-overlay agents-modal-overlay svelte-f11yds"><section class="confirm-dialog" role="dialog" aria-modal="true"><h2> </h2> <p class="confirm-message"> </p> <div class="field-group" style="margin-top:1rem"><label class="field-label" for="agents-menu-input"> </label> <textarea id="agents-menu-input" class="field-input"></textarea></div> <footer class="confirm-actions"><button class="secondary-button" type="button"> </button> <button class="btn-primary" type="button"> </button></footer></section></div>`),Wa=W(`<button type="button" class="ghost-button" aria-haspopup="true">Agents</button> <!> <!>`,1);function Ga(e,t){Ge(t,!0);let n=600*1e3,r=F(!1),i=F(L([])),a=F(!1),o=F(!1),s=F(L(new Set)),c=F(null),l=F(``),u=F(0),d=F(0),f=null;function p(e){return document.body.appendChild(e),{destroy(){e.parentNode&&e.parentNode.removeChild(e)}}}function m(){if(!f)return;let e=f.getBoundingClientRect();I(u,e.bottom+6),I(d,window.innerWidth-e.right)}function h(e){let t=e.provider;return!(!t||!t.config?.model||!e.config?.systemPrompt||e.config?.requiresUserInput&&!e.config?.userInputDescription?.trim())}async function g(){if(!(H(a)||H(o))){I(o,!0);try{let e=await fetch(`/api/workspace`,{headers:{Accept:`application/json`}});if(!e.ok)return;let t=await e.json(),n=Array.isArray(t.entities)?t.entities:[],r=new Map(n.map(e=>[e.id,e])),o=n.filter(e=>e.kind===`llm`),s=n.filter(e=>e.kind===`agent`).map(e=>({...e,provider:r.get(e.parentId??``)}));I(i,o.map(e=>({llm:e,agents:s.filter(t=>t.parentId===e.id)})).filter(e=>e.agents.length>0),!0),I(a,!0)}catch{}finally{I(o,!1)}}}function _(){H(r)||m(),I(r,!H(r)),H(r)&&g()}function v(e){let t=new Set(H(s));t.has(e)?t.delete(e):t.add(e),I(s,t,!0)}function y(){I(r,!1)}function b(e){h(e)&&(y(),e.config?.requiresUserInput?(I(c,e,!0),I(l,``)):w(e.id,``))}function x(){I(c,null),I(l,``)}async function S(){if(!H(c)||!H(l).trim())return;let e=H(c).id,t=H(l);I(c,null),I(l,``),await w(e,t)}function C(e,t,n){let r=e.turn==null?``:String(e.turn);switch(e.type){case`model_call`:return X(`agents.status.model`,{agent:t,turn:r,model:n});case`tool_call`:return X(`agents.status.tool`,{agent:t,turn:r,tool:e.toolName??``});case`tool_result`:return X(`agents.status.tool_done`,{agent:t,turn:r,tool:e.toolName??``,detail:e.detail??``});case`fallback`:return X(`agents.status.fallback`,{agent:t,turn:r});default:return null}}async function w(e,t){let r=H(i).flatMap(e=>e.agents).find(t=>t.id===e),a=r?.label??``,o=r?.config?.model||r?.provider?.config?.model||``,s=o.includes(`/`)?o.split(`/`).pop()??o:o,c=Oa(`${X(`agents.loading`)} ${a}`.trim()),l=[],u=`${X(`agents.loading`)} ${a}`.trim(),d=!1,f=async()=>{if(!d){for(d=!0;l.length>0;){let e=l.shift();Oa(e,c),u=e,await new Promise(e=>setTimeout(e,750))}d=!1}},p=e=>{e!==(l.length>0?l[l.length-1]:u)&&(l.push(e),f())};try{let r=await Fa(e,t,e=>{let t=C(e,a,s);if(t)p(t);else if(e.type===`final`&&e.content){let t=e.content.replace(/[\n\r]+/g,` `).trim();p(t.length>120?`${t.slice(0,120)}…`:t)}});for(;d||l.length>0;)await new Promise(e=>setTimeout(e,750/2));r.ok&&r.document?(ka(`${X(`agents.success`)} ${r.document.filename}`.trim(),`success`,n,{id:c,href:`/?doc=${encodeURIComponent(r.document.id)}`,linkLabel:X(`agents.open_document`)}),window.dispatchEvent(new CustomEvent(`ld:documents-changed`))):ka(r.error??X(`agents.run_failed`),`error`,n,r.document?.id?{id:c,href:`/?doc=${encodeURIComponent(r.document.id)}`,linkLabel:X(`agents.open_document`)}:c)}catch(e){ka(e instanceof Error?e.message:X(`agents.run_failed`),`error`,n,c)}}var T=Wa(),E=z(T);Li(E,e=>f=e,()=>f);var D=B(E,2),O=e=>{var t=Ha(),n=z(t);oi(n,e=>p?.(e));var r=B(n,2),a=R(r),c=e=>{var t=La(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`common.loading`)]),G(e,t)},l=e=>{var t=La(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`agents.empty`)]),G(e,t)},f=e=>{var t=Ur();J(z(t),17,()=>H(i),Yr,(e,t)=>{let n=P(()=>H(s).has(H(t).llm.id));var r=Va(),i=R(r),a=R(i),o=R(a,!0);N(a);var c=B(a,2);let l;N(i);var u=B(i,2),d=e=>{var n=Ur();J(z(n),17,()=>H(t).agents,Yr,(e,t)=>{let n=P(()=>h(H(t)));var r=Ba();let i;var a=R(r),o=R(a,!0);N(a);var s=B(a,2),c=e=>{var t=Ra(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`agents.not_ready`)]),G(e,t)},l=e=>{var t=za(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`agents.requires_input`)]),G(e,t)};q(s,e=>{H(n)?H(t).config?.requiresUserInput&&e(l,1):e(c)}),N(r),V(()=>{i=hi(r,1,`agents-item svelte-f11yds`,null,i,{"agents-item--disabled":!H(n)}),r.disabled=!H(n),K(o,H(t).label)}),U(`click`,r,()=>b(H(t))),G(e,r)}),G(e,n)};q(u,e=>{H(n)&&e(d)}),N(r),V(()=>{Y(i,`aria-expanded`,H(n)),K(o,H(t).llm.label),l=hi(c,1,`agents-group-chevron svelte-f11yds`,null,l,{"agents-group-chevron--open":H(n)})}),U(`click`,i,()=>v(H(t).llm.id)),G(e,r)}),G(e,t)};q(a,e=>{H(o)?e(c):H(i).length===0?e(l,1):e(f,-1)}),N(r),oi(r,e=>p?.(e)),V(()=>_i(r,`top:${H(u)??``}px;right:${H(d)??``}px`)),U(`click`,n,y),G(e,t)};q(D,e=>{H(r)&&e(O)});var ee=B(D,2),k=e=>{var t=Ua(),n=R(t),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a,!0);N(a);var s=B(a,2),u=R(s),d=R(u,!0);N(u);var f=B(u,2);vn(f),Y(f,`rows`,4),N(s);var m=B(s,2),h=R(m),g=R(h,!0);N(h);var _=B(h,2),v=R(_,!0);N(_),N(m),N(n),N(t),oi(t,e=>p?.(e)),V((e,t,n,r,a,s)=>{K(i,H(c).label),K(o,e),K(d,t),Y(f,`placeholder`,n),K(g,r),_.disabled=a,K(v,s)},[()=>H(c).config?.userInputDescription?.trim()||X(`agents.input_hint`),()=>X(`agents.input_title`),()=>X(`agents.input_hint`),()=>X(`common.cancel`),()=>!H(l).trim(),()=>X(`agents.run`)]),U(`click`,t,e=>{e.target===e.currentTarget&&x()}),Mi(f,()=>H(l),e=>I(l,e)),U(`click`,h,x),U(`click`,_,S),G(e,t)};q(ee,e=>{H(c)&&e(k)}),V(()=>Y(E,`aria-expanded`,H(r))),U(`click`,E,_),G(e,T),Ke()}Nr([`click`]);var Ka=W(`<a class="ghost-button"> </a>`),qa=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 Ja(e,t){Ge(t,!0);let n=Bi(t,`nav`,19,()=>[]),r=window.location.pathname,i=P(()=>[...n(),{label:`Workspace`,href:`/workspace`},{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));function a(e,t){e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState(null,``,t),window.dispatchEvent(new PopStateEvent(`popstate`)))}var o=qa(),s=R(o),c=B(R(s),2),l=R(c),u=R(l,!0);N(l);var d=B(l,2),f=R(d,!0);N(d),N(c),N(s);var p=B(s,2),m=e=>{var n=Ur();ai(z(n),()=>t.children),G(e,n)};q(p,e=>{t.children&&e(m)});var h=B(p,2),g=R(h);J(g,17,()=>H(i),Yr,(e,t)=>{var n=Ka(),r=R(n,!0);N(n),V(()=>{Y(n,`href`,H(t).href),K(r,H(t).label)}),U(`click`,n,e=>a(e,H(t).href)),G(e,n)});var _=B(g,2);Ga(_,{});var v=B(_,2),y=e=>{var n=Ur();ai(z(n),()=>t.actions),G(e,n)};q(v,e=>{t.actions&&e(y)}),N(h),N(o),V(()=>{K(u,t.title),K(f,t.subtitle)}),G(e,o),Ke()}Nr([`click`]);var Ya=W(`<span> </span>`),Xa=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),Za=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>`),Qa=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),$a=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),eo=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),to=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),no=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>`),ro=W(`<li class="llm-host-chip"><span class="llm-host-chip__url"> </span> <button type="button" class="llm-host-chip__remove">×</button></li>`),io=W(`<ul class="llm-host-list"></ul>`),ao=W(`<div class="field-group"><label class="field-label" for="field-llm-host"> </label> <div class="llm-host-add"><input id="field-llm-host" type="text" class="field-input field-input--mono" placeholder="https://api.deepseek.com"/> <button type="button" class="llm-host-btn"> </button></div> <p class="field-hint"> </p> <!></div>`),oo=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 so(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(L([])),S=F(``),C=F(!1);function w(){let e=H(S).trim();if(!e)return;let t;try{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`protocol`);t=n.origin}catch{ce(`Enter a valid http(s) URL, e.g. https://api.deepseek.com`,`error`);return}H(x).includes(t)||I(x,[...H(x),t],!0),I(S,``)}function T(e){I(x,H(x).filter(t=>t!==e),!0)}let E=F(null),D=null,O=F(null),ee=[`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 k(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 A(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 te(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function ne(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:k(e),category:r,title:te(n[3]),match:!0}}else if(t.hasCategory)return{date:null,category:n[1],title:te(n[2]),match:!0}}}if(t.dateOnly){let n=e.match(t.dateOnly);if(n)return{date:k(n[1]),category:`General`,title:te(n[2]),match:!0}}return{date:null,category:`General`,title:e.replace(`.md`,``),match:!1}}let re=P(()=>ee.map(e=>({filename:e,...ne(e,A(H(s)))})));function ie(e){return/^([/\\]|[a-zA-Z]:[\\/]|~)/.test(e)}function ae(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 oe(){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 la(H(o)),I(s,e.filenamePattern||``,!0),I(c,e.docsFolder&&e.sourceRoot?ae(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`],S={"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]||S[t]):t.map(e=>S[e]),!0),I(b,Array.isArray(e.diagramEdgePalette)&&e.diagramEdgePalette.length?[...e.diagramEdgePalette]:[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],!0),I(x,Array.isArray(e.llmModelsNoV1Hosts)?[...e.llmModelsNoV1Hosts]:[],!0),I(C,!!e.debugAgents),H(O).loadBrowse(e.docsFolder||`/`)}catch{ce(`Failed to load configuration.`,`error`)}}async function se(e){e.preventDefault();let t=H(s).trim();if(t){let e=(t.match(/\[Category\]/gi)||[]).length;if(e===0){ce(`Pattern must include [Category].`,`error`);return}if(e>1){ce(`Pattern must include [Category] only once.`,`error`);return}}if(H(c)!==``&&ie(H(c))){ce(`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,llmModelsNoV1Hosts:[...H(x)],debugAgents:H(C)};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());ce(`Settings saved.`,`ok`)}catch(e){ce(`Save failed: `+(e instanceof Error?e.message:String(e)),`error`)}}function ce(e,t){I(E,{text:e,type:t},!0),D&&clearTimeout(D),t===`ok`&&(D=window.setTimeout(()=>{I(E,null)},3e3))}Vi(()=>{oe()});var le=oo(),ue=R(le);{let e=P(()=>X(`admin.title`)),t=P(()=>X(`admin.config.title`));Ja(ue,{get title(){return H(e)},get subtitle(){return H(t)}})}var de=B(ue,2),fe=R(de),pe=R(fe),me=R(pe),he=R(me),ge=R(he),_e=R(ge,!0);N(ge);var ve=B(ge,2),ye=R(ve,!0);N(ve),N(he);var be=B(he,2),xe=R(be),Se=e=>{var t=Ya(),n=R(t,!0);N(t),V(()=>{hi(t,1,`save-msg save-msg--${H(E).type??``}`),K(n,H(E).text)}),G(e,t)};q(xe,e=>{H(E)&&e(Se)});var j=B(xe,2),Ce=R(j,!0);N(j),N(be),N(me),N(pe);var M=B(pe,2),we=R(M);{let e=P(()=>X(`admin.section.general.title`)),t=P(()=>X(`admin.section.general.desc`));Wi(we,{icon:`🌐`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var s=Xa(),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);Ei(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),ee=R(O),k=R(ee,!0);N(ee),ee.value=ee.__value=`system`;var A=B(ee),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(k,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`)]),Mi(S,()=>H(i),e=>I(i,e)),bi(O,()=>H(a),e=>I(a,e)),U(`change`,le,()=>la(H(o))),bi(le,()=>H(o),e=>I(o,e)),G(e,s)},$$slots:{default:!0}})}var Te=B(we,2);{let e=P(()=>X(`admin.section.filename.title`)),t=P(()=>X(`admin.section.filename.desc`));Wi(Te,{icon:`📝`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=Qa(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ei(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(re),Yr,(e,t)=>{var n=Za(),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),hi(l,1,li(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`)]),Mi(o,()=>H(s),e=>I(s,e)),G(e,n)},$$slots:{default:!0}})}var Ee=B(Te,2);{let e=P(()=>X(`admin.section.source.title`)),t=P(()=>X(`admin.section.source.desc`));Wi(Ee,{icon:`📂`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var r=$a(),i=z(r),a=R(i),o=R(a,!0);N(a);var s=B(a,2);Ei(s);var l=B(s,2),u=R(l,!0);N(l),N(i),Li(ra(B(i,2),{get docsFolder(){return H(n)},get extraFiles(){return H(v)},onchange:e=>I(v,e,!0)}),e=>I(O,e,!0),()=>H(O)),V((e,t)=>{K(o,e),K(u,t)},[()=>X(`admin.server_info.source_root`),()=>X(`admin.server_info.source_root_hint`)]),Mi(s,()=>H(c),e=>I(c,e)),G(e,r)},$$slots:{default:!0}})}var De=B(Ee,2);{let e=P(()=>X(`admin.section.sidebar.title`)),t=P(()=>X(`admin.section.sidebar.desc`));Wi(De,{icon:`🗂️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=eo(),r=z(n),i=R(r),a=R(i);Ei(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);Ei(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`)]),Ni(a,()=>H(l),e=>I(l,e)),Ni(m,()=>H(u),e=>I(u,e)),G(e,n)},$$slots:{default:!0}})}var Oe=B(De,2);{let e=P(()=>X(`admin.section.markdown.title`)),t=P(()=>X(`admin.section.markdown.desc`));Wi(Oe,{icon:`✍️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=to(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ei(o);var s=B(o,2),c=R(s,!0);N(s),N(r);var l=B(r,2),u=R(l),_=R(u);Ei(_);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);Ei(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),ee=R(O),k=R(ee);Ei(k);var A=B(k,2),te=R(A,!0);N(A),N(ee);var ne=B(ee,2),re=R(ne,!0);N(ne),N(O);var ie=B(O,2),ae=R(ie),oe=R(ae);Ei(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);Ei(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`)]),Mi(o,()=>H(d),e=>I(d,e)),Ni(_,()=>H(f),e=>I(f,e)),Ni(C,()=>H(p),e=>I(p,e)),Ni(k,()=>H(m),e=>I(m,e)),Ni(oe,()=>H(h),e=>I(h,e)),Ni(pe,()=>H(g),e=>I(g,e)),G(e,n)},$$slots:{default:!0}})}var ke=B(Oe,2);{let e=P(()=>X(`admin.section.files.title`)),t=P(()=>X(`admin.files.description`));Wi(ke,{icon:`📎`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=no(),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`)]),Mi(a,()=>H(_),e=>I(_,e)),G(e,n)},$$slots:{default:!0}})}var Ae=B(ke,2);{let e=P(()=>X(`admin.section.diagram.title`)),t=P(()=>X(`admin.section.diagram.desc`));Wi(Ae,{icon:`🎨`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{sa(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 je=B(Ae,2);{let e=P(()=>X(`admin.section.llm.title`)),t=P(()=>X(`admin.section.llm.desc`));Wi(je,{icon:`🤖`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ao(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a);Ei(o);var s=B(o,2),c=R(s,!0);N(s),N(a);var l=B(a,2),u=R(l,!0);N(l);var d=B(l,2),f=e=>{var t=io();J(t,20,()=>H(x),e=>e,(e,t)=>{var n=ro(),r=R(n),i=R(r,!0);N(r);var a=B(r,2);N(n),V(e=>{K(i,t),Y(a,`aria-label`,e)},[()=>X(`admin.llm.remove`)]),U(`click`,a,()=>T(t)),G(e,n)}),N(t),G(e,t)};q(d,e=>{H(x).length&&e(f)}),N(n),V((e,t,n)=>{K(i,e),K(c,t),K(u,n)},[()=>X(`admin.llm.no_v1_label`),()=>X(`admin.llm.add`),()=>X(`admin.llm.no_v1_hint`)]),U(`keydown`,o,e=>{e.key===`Enter`&&(e.preventDefault(),w())}),Mi(o,()=>H(S),e=>I(S,e)),U(`click`,s,w),G(e,n)},$$slots:{default:!0}})}var Me=B(je,2);{let e=P(()=>X(`admin.section.developer.title`)),t=P(()=>X(`admin.section.developer.desc`));Wi(Me,{icon:`🛠️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=eo(),r=z(n),i=R(r),a=B(R(i),2),o=R(a,!0);N(a),N(i);var s=B(i,2),c=R(s,!0);N(s),N(r);var l=B(r,2),u=R(l),d=R(u);Ei(d);var f=B(d,2),p=R(f,!0);N(f),N(u);var m=B(u,2),h=R(m,!0);N(m),N(l),V((e,t,n,r)=>{K(o,e),K(c,t),K(p,n),K(h,r)},[()=>X(`admin.appearance.debug_label`),()=>X(`admin.appearance.debug_hint`),()=>X(`admin.developer.debug_agents_label`),()=>X(`admin.developer.debug_agents_hint`)]),Ni(d,()=>H(C),e=>I(C,e)),G(e,n)},$$slots:{default:!0}})}N(M),N(fe);var Ne=B(fe,2),Pe=R(Ne),Fe=R(Pe),Ie=B(R(Fe),2),Le=R(Ie),Re=R(Le,!0);N(Le);var ze=B(Le,2),Be=R(ze,!0);N(ze),N(Ie),N(Fe);var Ve=B(Fe,2),He=R(Ve);ii(He,()=>X(`admin.license.body`),!0),N(He);var Ue=B(He,2),We=R(Ue),qe=B(R(We));N(We);var Je=B(We,2),Ye=B(R(Je));N(Je),N(Ue),N(Ve),N(Pe),N(Ne),N(de),N(le),V((e,t,n,r,i,a,o)=>{K(_e,e),K(ye,t),K(Ce,n),K(Re,r),K(Be,i),K(qe,` ${a??``}`),K(Ye,` ${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`,fe,se),G(e,le),Ke()}Nr([`change`,`keydown`,`click`]);var co=W(`<button class="tool-button" type="button"></button>`),lo=W(`<input class="cluster-tag-input"/>`),uo=W(`<button class="cluster-tag-label" type="button"> </button>`),fo=W(`<button class="cluster-tag-add" type="button">+</button>`),po=W(`<button class="cluster-tag-del" type="button">×</button>`),mo=W(`<div class="cluster-tag"><!> <!> <!></div>`),ho=W(`<div class="empty-state"><p>No sub-folders found.</p></div>`),go=W(`<nav class="rail"><button class="tool-button" type="button">⌖</button> <button type="button">⠿</button> <!> <button type="button">☰</button></nav> <canvas id="blueprintCanvas"></canvas> <div class="cluster-overlays"></div> <!>`,1);function _o(e,t){Ge(t,!0);let n=Bi(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,ee=null,k={},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=k[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(){ee===null&&(ee=requestAnimationFrame(Ce))}function Ce(e){ee=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{k=await fetch(`/api/blueprint/positions`).then(e=>e.json())}catch{k={}}}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(k)})},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){let t=[...h].map(e=>f[e]?.folder.path).filter(Boolean);t.length!==0&&(I(te,H(te).map(n=>n.id===e?{...n,members:[...new Set([...n.members,...t])]}:n),!0),Ne(),h.clear(),Pe(),j())}function Le(e,t){I(te,H(te).map(n=>n.id===e?{...n,label:t}:n),!0),Ne(),j()}function Re(e){I(te,H(te).filter(t=>t.id!==e),!0),H(ae)===e&&I(ae,null),Ne(),j()}async function ze(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 Be(e,t){return{x:(e-l)/d,y:(t-u)/d}}function Ve(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 He(e,t,n){return t>=e.x+6&&t<=e.x+6+20&&n>=e.y+6&&n<=e.y+6+20}function Ue(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 We(e){let t=ge(e);x!==t&&await ze(t,!0);let n=f.find(t=>t.folder.path===e);n&&(_e(n),j())}function qe(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}=Be(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=Be(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}=Be(n,r),s=Ve(i,o);s!==p&&(p=s,a.style.cursor=s>=0&&H(c)?`grab`:s>=0?`pointer`:`default`,j())}function Je(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,{x:i,y:o}=Be(n,r),s=Ve(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 Ye(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];k[e.folder.path]={...k[e.folder.path]??{},x:e.x,y:e.y}}je()}else{let r=f[m],{x:a,y:s}=Be(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()):Ue(r,a,s)?t.onopenAdr(r):He(r,a,s)?n()===r.folder.path?t.onclosefilerexplorer():t.onopenexplorer(r):r.folder.hasChildren&&(t.onclosefilerexplorer(),ze(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 Xe(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 Ze(){ve(!0)}function Qe(){let e=x?x.split(`/`).pop():``;t.onopenexplorer({folder:{name:e,path:x,hasChildren:!0},x:0,y:0,w:0,h:0})}function $e(){I(c,!H(c)),H(c)||(h.clear(),Pe(),j()),a.style.cursor=H(c)&&p>=0?`grab`:`default`}Vi(()=>(o=a.getContext(`2d`),window.addEventListener(`resize`,j),Promise.all([Ae(),Me()]).then(async()=>{await ze(``,!1)}),()=>{window.removeEventListener(`resize`,j)}));var et={centerOnBox:_e,loadPath:ze,navigateToFolder:We},tt=go(),nt=z(tt),rt=R(nt),it=B(rt,2);let at;var ot=B(it,2),st=e=>{var t=co();t.textContent=`⬚︎`,V(e=>Y(t,`title`,e),[()=>X(`blueprint.canvas.create_cluster`)]),U(`click`,t,Fe),G(e,t)};q(ot,e=>{H(c)&&e(st)});var ct=B(ot,2);let lt;N(nt);var ut=B(nt,2);Li(ut,e=>a=e,()=>a);var dt=B(ut,2);J(dt,21,()=>H(ie),e=>e.id,(e,t)=>{var n=mo(),r=R(n),i=e=>{var n=lo();Ei(n),_n(n,!0),V(()=>Di(n,H(t).label)),U(`keydown`,n,e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&I(ae,null)}),Mr(`blur`,n,e=>{Le(H(t).id,e.currentTarget.value.trim()||H(t).label),I(ae,null)}),G(e,n)},a=e=>{var n=uo(),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=fo();V(e=>Y(n,`title`,e),[()=>X(`blueprint.cluster.add_selection`)]),U(`click`,n,()=>Ie(H(t).id)),G(e,n)};q(o,e=>{H(c)&&H(re)>0&&e(s)});var l=B(o,2),u=e=>{var n=po();V(e=>Y(n,`title`,e),[()=>X(`blueprint.cluster.delete`)]),U(`click`,n,()=>Re(H(t).id)),G(e,n)};q(l,e=>{H(c)&&e(u)}),N(n),V(()=>_i(n,`left:${H(t).x??``}px; top:${H(t).y??``}px;`)),G(e,n)}),N(dt);var ft=B(dt,2),pt=e=>{G(e,ho())};return q(ft,e=>{H(s)||e(pt)}),V((e,t,r)=>{Y(rt,`title`,e),at=hi(it,1,`tool-button`,null,at,{active:H(c)}),Y(it,`title`,t),lt=hi(ct,1,`tool-button`,null,lt,{active:n()===x}),Y(ct,`title`,r)},[()=>X(`blueprint.canvas.fit_view`),()=>X(`blueprint.canvas.drag_mode`),()=>X(`blueprint.canvas.browse_current`)]),U(`click`,rt,Ze),U(`click`,it,$e),U(`click`,ct,Qe),U(`pointermove`,ut,qe),U(`pointerdown`,ut,Je),U(`pointerup`,ut,Ye),Mr(`wheel`,ut,Xe),G(e,tt),Ke(et)}Nr([`click`,`pointermove`,`pointerdown`,`pointerup`,`keydown`]);var vo=W(`<button class="explorer-breadcrumb-item" type="button">~</button>`),yo=W(`<span class="explorer-breadcrumb-item current">~</span>`),bo=W(`<span class="explorer-breadcrumb-item current"> </span>`),xo=W(`<button class="explorer-breadcrumb-item" type="button"> </button>`),So=W(`<span class="explorer-breadcrumb-sep">/</span> <!>`,1),Co=W(`<div class="explorer-section-label"> </div>`),wo=W(`<button class="explorer-item is-folder" type="button"><span class="explorer-item-icon">📁</span> <span class="explorer-item-name"> </span></button>`),To=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),Eo=W(`<button class="explorer-item is-file" type="button"><span class="explorer-item-icon">📄</span> <span class="explorer-item-name"> </span></button>`),Do=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),Oo=W(`<!> <!>`,1),ko=W(`<p class="file-preview-placeholder"> </p>`),Ao=W(`<p class="file-preview-name"> </p> <p class="file-preview-placeholder"> </p>`,1),jo=W(`<p class="file-preview-name"> </p> <span class="file-preview-binary"> </span>`,1),Mo=W(`<p class="file-preview-name"> </p> <img/>`,1),No=W(`<p class="file-preview-name"> </p> <video controls=""></video>`,3),Po=W(`<span class="file-preview-truncated"> </span>`),Fo=W(`<p class="file-preview-name"> </p> <!> <pre><code> </code></pre>`,1),Io=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 Lo(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(`
|
|
4
|
+
`);o=n.pop()??``;for(let e of n)u(e),await new Promise(e=>setTimeout(e,0))}return o+=i.decode(),u(o),s?{ok:s.ok,document:s,error:l?c:void 0}:c?{ok:!1,error:c}:{ok:!1,error:`Agent did not produce a response`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Agent run failed`}}}async function Ia(e){try{let t=await fetch(`${Aa}/test-llm`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)}),n=await t.json();return{...n,ok:t.ok&&n.ok===!0}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Connection test failed`}}}var La=W(`<p class="agents-dropdown-empty svelte-f11yds"> </p>`),Ra=W(`<span class="agents-item-badge svelte-f11yds"> </span>`),za=W(`<span class="agents-item-badge agents-item-badge--input svelte-f11yds"> </span>`),Ba=W(`<button type="button" role="menuitem"><span class="agents-item-name svelte-f11yds"> </span> <!></button>`),Va=W(`<div class="agents-group svelte-f11yds"><button type="button" class="agents-group-toggle svelte-f11yds"><span class="agents-group-label svelte-f11yds"> </span> <span>›</span></button> <!></div>`),Ha=W(`<div class="agents-backdrop svelte-f11yds"></div> <div class="agents-dropdown svelte-f11yds" role="menu"><!></div>`,1),Ua=W(`<div class="confirm-overlay agents-modal-overlay svelte-f11yds"><section class="confirm-dialog" role="dialog" aria-modal="true"><h2> </h2> <p class="confirm-message"> </p> <div class="field-group" style="margin-top:1rem"><label class="field-label" for="agents-menu-input"> </label> <textarea id="agents-menu-input" class="field-input"></textarea></div> <footer class="confirm-actions"><button class="secondary-button" type="button"> </button> <button class="btn-primary" type="button"> </button></footer></section></div>`),Wa=W(`<button type="button" class="ghost-button" aria-haspopup="true">Agents</button> <!> <!>`,1);function Ga(e,t){Ge(t,!0);let n=600*1e3,r=F(!1),i=F(L([])),a=F(!1),o=F(!1),s=F(L(new Set)),c=F(null),l=F(``),u=F(0),d=F(0),f=null;function p(e){return document.body.appendChild(e),{destroy(){e.parentNode&&e.parentNode.removeChild(e)}}}function m(){if(!f)return;let e=f.getBoundingClientRect();I(u,e.bottom+6),I(d,window.innerWidth-e.right)}function h(e){let t=e.provider;return!(!t||!t.config?.model||!e.config?.systemPrompt||e.config?.requiresUserInput&&!e.config?.userInputDescription?.trim())}async function g(){if(!(H(a)||H(o))){I(o,!0);try{let e=await fetch(`/api/workspace`,{headers:{Accept:`application/json`}});if(!e.ok)return;let t=await e.json(),n=Array.isArray(t.entities)?t.entities:[],r=new Map(n.map(e=>[e.id,e])),o=n.filter(e=>e.kind===`llm`),s=n.filter(e=>e.kind===`agent`).map(e=>({...e,provider:r.get(e.parentId??``)}));I(i,o.map(e=>({llm:e,agents:s.filter(t=>t.parentId===e.id)})).filter(e=>e.agents.length>0),!0),I(a,!0)}catch{}finally{I(o,!1)}}}function _(){H(r)||m(),I(r,!H(r)),H(r)&&g()}function v(e){let t=new Set(H(s));t.has(e)?t.delete(e):t.add(e),I(s,t,!0)}function y(){I(r,!1)}function b(e){h(e)&&(y(),e.config?.requiresUserInput?(I(c,e,!0),I(l,``)):w(e.id,``))}function x(){I(c,null),I(l,``)}async function S(){if(!H(c)||!H(l).trim())return;let e=H(c).id,t=H(l);I(c,null),I(l,``),await w(e,t)}function C(e,t,n){let r=e.turn==null?``:String(e.turn);switch(e.type){case`model_call`:return X(`agents.status.model`,{agent:t,turn:r,model:n});case`tool_call`:return X(`agents.status.tool`,{agent:t,turn:r,tool:e.toolName??``});case`tool_result`:return X(`agents.status.tool_done`,{agent:t,turn:r,tool:e.toolName??``,detail:e.detail??``});case`fallback`:return X(`agents.status.fallback`,{agent:t,turn:r});default:return null}}async function w(e,t){let r=H(i).flatMap(e=>e.agents).find(t=>t.id===e),a=r?.label??``,o=r?.config?.model||r?.provider?.config?.model||``,s=o.includes(`/`)?o.split(`/`).pop()??o:o,c=Oa(`${X(`agents.loading`)} ${a}`.trim()),l=[],u=`${X(`agents.loading`)} ${a}`.trim(),d=!1,f=async()=>{if(!d){for(d=!0;l.length>0;){let e=l.shift();Oa(e,c),u=e,await new Promise(e=>setTimeout(e,750))}d=!1}},p=e=>{e!==(l.length>0?l[l.length-1]:u)&&(l.push(e),f())};try{let r=await Fa(e,t,e=>{let t=C(e,a,s);if(t)p(t);else if(e.type===`final`&&e.content){let t=e.content.replace(/[\n\r]+/g,` `).trim();p(t.length>120?`${t.slice(0,120)}…`:t)}});for(;d||l.length>0;)await new Promise(e=>setTimeout(e,750/2));r.ok&&r.document?(ka(`${X(`agents.success`)} ${r.document.filename}`.trim(),`success`,n,{id:c,href:`/?doc=${encodeURIComponent(r.document.id)}`,linkLabel:X(`agents.open_document`)}),window.dispatchEvent(new CustomEvent(`ld:documents-changed`))):ka(r.error??X(`agents.run_failed`),`error`,n,r.document?.id?{id:c,href:`/?doc=${encodeURIComponent(r.document.id)}`,linkLabel:X(`agents.open_document`)}:c)}catch(e){ka(e instanceof Error?e.message:X(`agents.run_failed`),`error`,n,c)}}var T=Wa(),E=z(T);Li(E,e=>f=e,()=>f);var D=B(E,2),O=e=>{var t=Ha(),n=z(t);oi(n,e=>p?.(e));var r=B(n,2),a=R(r),c=e=>{var t=La(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`common.loading`)]),G(e,t)},l=e=>{var t=La(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`agents.empty`)]),G(e,t)},f=e=>{var t=Ur();J(z(t),17,()=>H(i),Yr,(e,t)=>{let n=P(()=>H(s).has(H(t).llm.id));var r=Va(),i=R(r),a=R(i),o=R(a,!0);N(a);var c=B(a,2);let l;N(i);var u=B(i,2),d=e=>{var n=Ur();J(z(n),17,()=>H(t).agents,Yr,(e,t)=>{let n=P(()=>h(H(t)));var r=Ba();let i;var a=R(r),o=R(a,!0);N(a);var s=B(a,2),c=e=>{var t=Ra(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`agents.not_ready`)]),G(e,t)},l=e=>{var t=za(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`agents.requires_input`)]),G(e,t)};q(s,e=>{H(n)?H(t).config?.requiresUserInput&&e(l,1):e(c)}),N(r),V(()=>{i=hi(r,1,`agents-item svelte-f11yds`,null,i,{"agents-item--disabled":!H(n)}),r.disabled=!H(n),K(o,H(t).label)}),U(`click`,r,()=>b(H(t))),G(e,r)}),G(e,n)};q(u,e=>{H(n)&&e(d)}),N(r),V(()=>{Y(i,`aria-expanded`,H(n)),K(o,H(t).llm.label),l=hi(c,1,`agents-group-chevron svelte-f11yds`,null,l,{"agents-group-chevron--open":H(n)})}),U(`click`,i,()=>v(H(t).llm.id)),G(e,r)}),G(e,t)};q(a,e=>{H(o)?e(c):H(i).length===0?e(l,1):e(f,-1)}),N(r),oi(r,e=>p?.(e)),V(()=>_i(r,`top:${H(u)??``}px;right:${H(d)??``}px`)),U(`click`,n,y),G(e,t)};q(D,e=>{H(r)&&e(O)});var ee=B(D,2),k=e=>{var t=Ua(),n=R(t),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a,!0);N(a);var s=B(a,2),u=R(s),d=R(u,!0);N(u);var f=B(u,2);vn(f),Y(f,`rows`,4),N(s);var m=B(s,2),h=R(m),g=R(h,!0);N(h);var _=B(h,2),v=R(_,!0);N(_),N(m),N(n),N(t),oi(t,e=>p?.(e)),V((e,t,n,r,a,s)=>{K(i,H(c).label),K(o,e),K(d,t),Y(f,`placeholder`,n),K(g,r),_.disabled=a,K(v,s)},[()=>H(c).config?.userInputDescription?.trim()||X(`agents.input_hint`),()=>X(`agents.input_title`),()=>X(`agents.input_hint`),()=>X(`common.cancel`),()=>!H(l).trim(),()=>X(`agents.run`)]),U(`click`,t,e=>{e.target===e.currentTarget&&x()}),Mi(f,()=>H(l),e=>I(l,e)),U(`click`,h,x),U(`click`,_,S),G(e,t)};q(ee,e=>{H(c)&&e(k)}),V(()=>Y(E,`aria-expanded`,H(r))),U(`click`,E,_),G(e,T),Ke()}Nr([`click`]);var Ka=W(`<a class="ghost-button"> </a>`),qa=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 Ja(e,t){Ge(t,!0);let n=Bi(t,`nav`,19,()=>[]),r=window.location.pathname,i=P(()=>[...n(),{label:`Workspace`,href:`/workspace`},{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));function a(e,t){e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState(null,``,t),window.dispatchEvent(new PopStateEvent(`popstate`)))}var o=qa(),s=R(o),c=B(R(s),2),l=R(c),u=R(l,!0);N(l);var d=B(l,2),f=R(d,!0);N(d),N(c),N(s);var p=B(s,2),m=e=>{var n=Ur();ai(z(n),()=>t.children),G(e,n)};q(p,e=>{t.children&&e(m)});var h=B(p,2),g=R(h);J(g,17,()=>H(i),Yr,(e,t)=>{var n=Ka(),r=R(n,!0);N(n),V(()=>{Y(n,`href`,H(t).href),K(r,H(t).label)}),U(`click`,n,e=>a(e,H(t).href)),G(e,n)});var _=B(g,2);Ga(_,{});var v=B(_,2),y=e=>{var n=Ur();ai(z(n),()=>t.actions),G(e,n)};q(v,e=>{t.actions&&e(y)}),N(h),N(o),V(()=>{K(u,t.title),K(f,t.subtitle)}),G(e,o),Ke()}Nr([`click`]);var Ya=W(`<span> </span>`),Xa=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),Za=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>`),Qa=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),$a=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),eo=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),to=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),no=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>`),ro=W(`<li class="llm-host-chip"><span class="llm-host-chip__url"> </span> <button type="button" class="llm-host-chip__remove">×</button></li>`),io=W(`<ul class="llm-host-list"></ul>`),ao=W(`<div class="field-group"><label class="field-label" for="field-llm-host"> </label> <div class="llm-host-add"><input id="field-llm-host" type="text" class="field-input field-input--mono" placeholder="https://api.deepseek.com"/> <button type="button" class="llm-host-btn"> </button></div> <p class="field-hint"> </p> <!></div>`),oo=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 so(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(L([])),S=F(``),C=F(!1);function w(){let e=H(S).trim();if(!e)return;let t;try{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`protocol`);t=n.origin}catch{ce(`Enter a valid http(s) URL, e.g. https://api.deepseek.com`,`error`);return}H(x).includes(t)||I(x,[...H(x),t],!0),I(S,``)}function T(e){I(x,H(x).filter(t=>t!==e),!0)}let E=F(null),D=null,O=F(null),ee=[`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 k(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 A(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 te(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function ne(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:k(e),category:r,title:te(n[3]),match:!0}}else if(t.hasCategory)return{date:null,category:n[1],title:te(n[2]),match:!0}}}if(t.dateOnly){let n=e.match(t.dateOnly);if(n)return{date:k(n[1]),category:`General`,title:te(n[2]),match:!0}}return{date:null,category:`General`,title:e.replace(`.md`,``),match:!1}}let re=P(()=>ee.map(e=>({filename:e,...ne(e,A(H(s)))})));function ie(e){return/^([/\\]|[a-zA-Z]:[\\/]|~)/.test(e)}function ae(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 oe(){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 la(H(o)),I(s,e.filenamePattern||``,!0),I(c,e.docsFolder&&e.sourceRoot?ae(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`],S={"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]||S[t]):t.map(e=>S[e]),!0),I(b,Array.isArray(e.diagramEdgePalette)&&e.diagramEdgePalette.length?[...e.diagramEdgePalette]:[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],!0),I(x,Array.isArray(e.llmModelsNoV1Hosts)?[...e.llmModelsNoV1Hosts]:[],!0),I(C,!!e.debugAgents),H(O).loadBrowse(e.docsFolder||`/`)}catch{ce(`Failed to load configuration.`,`error`)}}async function se(e){e.preventDefault();let t=H(s).trim();if(t){let e=(t.match(/\[Category\]/gi)||[]).length;if(e===0){ce(`Pattern must include [Category].`,`error`);return}if(e>1){ce(`Pattern must include [Category] only once.`,`error`);return}}if(H(c)!==``&&ie(H(c))){ce(`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,llmModelsNoV1Hosts:[...H(x)],debugAgents:H(C)};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());ce(`Settings saved.`,`ok`)}catch(e){ce(`Save failed: `+(e instanceof Error?e.message:String(e)),`error`)}}function ce(e,t){I(E,{text:e,type:t},!0),D&&clearTimeout(D),t===`ok`&&(D=window.setTimeout(()=>{I(E,null)},3e3))}Vi(()=>{oe()});var le=oo(),ue=R(le);{let e=P(()=>X(`admin.title`)),t=P(()=>X(`admin.config.title`));Ja(ue,{get title(){return H(e)},get subtitle(){return H(t)}})}var de=B(ue,2),fe=R(de),pe=R(fe),me=R(pe),he=R(me),ge=R(he),_e=R(ge,!0);N(ge);var ve=B(ge,2),ye=R(ve,!0);N(ve),N(he);var be=B(he,2),xe=R(be),Se=e=>{var t=Ya(),n=R(t,!0);N(t),V(()=>{hi(t,1,`save-msg save-msg--${H(E).type??``}`),K(n,H(E).text)}),G(e,t)};q(xe,e=>{H(E)&&e(Se)});var j=B(xe,2),Ce=R(j,!0);N(j),N(be),N(me),N(pe);var M=B(pe,2),we=R(M);{let e=P(()=>X(`admin.section.general.title`)),t=P(()=>X(`admin.section.general.desc`));Wi(we,{icon:`🌐`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var s=Xa(),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);Ei(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),ee=R(O),k=R(ee,!0);N(ee),ee.value=ee.__value=`system`;var A=B(ee),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(k,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`)]),Mi(S,()=>H(i),e=>I(i,e)),bi(O,()=>H(a),e=>I(a,e)),U(`change`,le,()=>la(H(o))),bi(le,()=>H(o),e=>I(o,e)),G(e,s)},$$slots:{default:!0}})}var Te=B(we,2);{let e=P(()=>X(`admin.section.filename.title`)),t=P(()=>X(`admin.section.filename.desc`));Wi(Te,{icon:`📝`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=Qa(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ei(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(re),Yr,(e,t)=>{var n=Za(),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),hi(l,1,li(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`)]),Mi(o,()=>H(s),e=>I(s,e)),G(e,n)},$$slots:{default:!0}})}var Ee=B(Te,2);{let e=P(()=>X(`admin.section.source.title`)),t=P(()=>X(`admin.section.source.desc`));Wi(Ee,{icon:`📂`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var r=$a(),i=z(r),a=R(i),o=R(a,!0);N(a);var s=B(a,2);Ei(s);var l=B(s,2),u=R(l,!0);N(l),N(i),Li(ra(B(i,2),{get docsFolder(){return H(n)},get extraFiles(){return H(v)},onchange:e=>I(v,e,!0)}),e=>I(O,e,!0),()=>H(O)),V((e,t)=>{K(o,e),K(u,t)},[()=>X(`admin.server_info.source_root`),()=>X(`admin.server_info.source_root_hint`)]),Mi(s,()=>H(c),e=>I(c,e)),G(e,r)},$$slots:{default:!0}})}var De=B(Ee,2);{let e=P(()=>X(`admin.section.sidebar.title`)),t=P(()=>X(`admin.section.sidebar.desc`));Wi(De,{icon:`🗂️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=eo(),r=z(n),i=R(r),a=R(i);Ei(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);Ei(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`)]),Ni(a,()=>H(l),e=>I(l,e)),Ni(m,()=>H(u),e=>I(u,e)),G(e,n)},$$slots:{default:!0}})}var Oe=B(De,2);{let e=P(()=>X(`admin.section.markdown.title`)),t=P(()=>X(`admin.section.markdown.desc`));Wi(Oe,{icon:`✍️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=to(),r=z(n),i=R(r),a=R(i,!0);N(i);var o=B(i,2);Ei(o);var s=B(o,2),c=R(s,!0);N(s),N(r);var l=B(r,2),u=R(l),_=R(u);Ei(_);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);Ei(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),ee=R(O),k=R(ee);Ei(k);var A=B(k,2),te=R(A,!0);N(A),N(ee);var ne=B(ee,2),re=R(ne,!0);N(ne),N(O);var ie=B(O,2),ae=R(ie),oe=R(ae);Ei(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);Ei(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`)]),Mi(o,()=>H(d),e=>I(d,e)),Ni(_,()=>H(f),e=>I(f,e)),Ni(C,()=>H(p),e=>I(p,e)),Ni(k,()=>H(m),e=>I(m,e)),Ni(oe,()=>H(h),e=>I(h,e)),Ni(pe,()=>H(g),e=>I(g,e)),G(e,n)},$$slots:{default:!0}})}var ke=B(Oe,2);{let e=P(()=>X(`admin.section.files.title`)),t=P(()=>X(`admin.files.description`));Wi(ke,{icon:`📎`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=no(),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`)]),Mi(a,()=>H(_),e=>I(_,e)),G(e,n)},$$slots:{default:!0}})}var Ae=B(ke,2);{let e=P(()=>X(`admin.section.diagram.title`)),t=P(()=>X(`admin.section.diagram.desc`));Wi(Ae,{icon:`🎨`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{sa(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 je=B(Ae,2);{let e=P(()=>X(`admin.section.llm.title`)),t=P(()=>X(`admin.section.llm.desc`));Wi(je,{icon:`🤖`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ao(),r=R(n),i=R(r,!0);N(r);var a=B(r,2),o=R(a);Ei(o);var s=B(o,2),c=R(s,!0);N(s),N(a);var l=B(a,2),u=R(l,!0);N(l);var d=B(l,2),f=e=>{var t=io();J(t,20,()=>H(x),e=>e,(e,t)=>{var n=ro(),r=R(n),i=R(r,!0);N(r);var a=B(r,2);N(n),V(e=>{K(i,t),Y(a,`aria-label`,e)},[()=>X(`admin.llm.remove`)]),U(`click`,a,()=>T(t)),G(e,n)}),N(t),G(e,t)};q(d,e=>{H(x).length&&e(f)}),N(n),V((e,t,n)=>{K(i,e),K(c,t),K(u,n)},[()=>X(`admin.llm.no_v1_label`),()=>X(`admin.llm.add`),()=>X(`admin.llm.no_v1_hint`)]),U(`keydown`,o,e=>{e.key===`Enter`&&(e.preventDefault(),w())}),Mi(o,()=>H(S),e=>I(S,e)),U(`click`,s,w),G(e,n)},$$slots:{default:!0}})}var Me=B(je,2);{let e=P(()=>X(`admin.section.developer.title`)),t=P(()=>X(`admin.section.developer.desc`));Wi(Me,{icon:`🛠️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=eo(),r=z(n),i=R(r),a=B(R(i),2),o=R(a,!0);N(a),N(i);var s=B(i,2),c=R(s,!0);N(s),N(r);var l=B(r,2),u=R(l),d=R(u);Ei(d);var f=B(d,2),p=R(f,!0);N(f),N(u);var m=B(u,2),h=R(m,!0);N(m),N(l),V((e,t,n,r)=>{K(o,e),K(c,t),K(p,n),K(h,r)},[()=>X(`admin.appearance.debug_label`),()=>X(`admin.appearance.debug_hint`),()=>X(`admin.developer.debug_agents_label`),()=>X(`admin.developer.debug_agents_hint`)]),Ni(d,()=>H(C),e=>I(C,e)),G(e,n)},$$slots:{default:!0}})}N(M),N(fe);var Ne=B(fe,2),Pe=R(Ne),Fe=R(Pe),Ie=B(R(Fe),2),Le=R(Ie),Re=R(Le,!0);N(Le);var ze=B(Le,2),Be=R(ze,!0);N(ze),N(Ie),N(Fe);var Ve=B(Fe,2),He=R(Ve);ii(He,()=>X(`admin.license.body`),!0),N(He);var Ue=B(He,2),We=R(Ue),qe=B(R(We));N(We);var Je=B(We,2),Ye=B(R(Je));N(Je),N(Ue),N(Ve),N(Pe),N(Ne),N(de),N(le),V((e,t,n,r,i,a,o)=>{K(_e,e),K(ye,t),K(Ce,n),K(Re,r),K(Be,i),K(qe,` ${a??``}`),K(Ye,` ${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`,fe,se),G(e,le),Ke()}Nr([`change`,`keydown`,`click`]);var co=W(`<button class="tool-button" type="button"></button>`),lo=W(`<input class="cluster-tag-input"/>`),uo=W(`<button class="cluster-tag-label" type="button"> </button>`),fo=W(`<button class="cluster-tag-add" type="button">+</button> <button class="cluster-tag-remove" type="button">−</button>`,1),po=W(`<button class="cluster-tag-del" type="button">×</button>`),mo=W(`<div class="cluster-tag"><!> <!> <!></div>`),ho=W(`<div class="empty-state"><p>No sub-folders found.</p></div>`),go=W(`<nav class="rail"><button class="tool-button" type="button">⌖</button> <button type="button">⠿</button> <!> <button type="button">☰</button></nav> <canvas id="blueprintCanvas"></canvas> <div class="cluster-overlays"></div> <!>`,1);function _o(e,t){Ge(t,!0);let n=Bi(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,ee=null,k={},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=k[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(){ee===null&&(ee=requestAnimationFrame(Ce))}function Ce(e){ee=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{k=await fetch(`/api/blueprint/positions`).then(e=>e.json())}catch{k={}}}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(k)})},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){let t=[...h].map(e=>f[e]?.folder.path).filter(Boolean);t.length!==0&&(I(te,H(te).map(n=>n.id===e?{...n,members:[...new Set([...n.members,...t])]}:n),!0),Ne(),h.clear(),Pe(),j())}function Le(e){let t=new Set([...h].map(e=>f[e]?.folder.path).filter(Boolean));t.size!==0&&(I(te,H(te).map(n=>n.id===e?{...n,members:n.members.filter(e=>!t.has(e))}:n).filter(e=>e.members.length>0),!0),!H(te).some(t=>t.id===e)&&H(ae)===e&&I(ae,null),Ne(),h.clear(),Pe(),j())}function Re(e,t){I(te,H(te).map(n=>n.id===e?{...n,label:t}:n),!0),Ne(),j()}function ze(e){I(te,H(te).filter(t=>t.id!==e),!0),H(ae)===e&&I(ae,null),Ne(),j()}async function Be(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 Ve(e,t){return{x:(e-l)/d,y:(t-u)/d}}function He(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 Ue(e,t,n){return t>=e.x+6&&t<=e.x+6+20&&n>=e.y+6&&n<=e.y+6+20}function We(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 qe(e){let t=ge(e);x!==t&&await Be(t,!0);let n=f.find(t=>t.folder.path===e);n&&(_e(n),j())}function Je(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}=Ve(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=Ve(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}=Ve(n,r),s=He(i,o);s!==p&&(p=s,a.style.cursor=s>=0&&H(c)?`grab`:s>=0?`pointer`:`default`,j())}function Ye(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,{x:i,y:o}=Ve(n,r),s=He(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 Xe(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];k[e.folder.path]={...k[e.folder.path]??{},x:e.x,y:e.y}}je()}else{let r=f[m],{x:a,y:s}=Ve(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()):We(r,a,s)?t.onopenAdr(r):Ue(r,a,s)?n()===r.folder.path?t.onclosefilerexplorer():t.onopenexplorer(r):r.folder.hasChildren&&(t.onclosefilerexplorer(),Be(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 Ze(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 Qe(){ve(!0)}function $e(){let e=x?x.split(`/`).pop():``;t.onopenexplorer({folder:{name:e,path:x,hasChildren:!0},x:0,y:0,w:0,h:0})}function et(){I(c,!H(c)),H(c)||(h.clear(),Pe(),j()),a.style.cursor=H(c)&&p>=0?`grab`:`default`}Vi(()=>(o=a.getContext(`2d`),window.addEventListener(`resize`,j),Promise.all([Ae(),Me()]).then(async()=>{await Be(``,!1)}),()=>{window.removeEventListener(`resize`,j)}));var tt={centerOnBox:_e,loadPath:Be,navigateToFolder:qe},nt=go(),rt=z(nt),it=R(rt),at=B(it,2);let ot;var st=B(at,2),ct=e=>{var t=co();t.textContent=`⬚︎`,V(e=>Y(t,`title`,e),[()=>X(`blueprint.canvas.create_cluster`)]),U(`click`,t,Fe),G(e,t)};q(st,e=>{H(c)&&e(ct)});var lt=B(st,2);let ut;N(rt);var dt=B(rt,2);Li(dt,e=>a=e,()=>a);var ft=B(dt,2);J(ft,21,()=>H(ie),e=>e.id,(e,t)=>{var n=mo(),r=R(n),i=e=>{var n=lo();Ei(n),_n(n,!0),V(()=>Di(n,H(t).label)),U(`keydown`,n,e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&I(ae,null)}),Mr(`blur`,n,e=>{Re(H(t).id,e.currentTarget.value.trim()||H(t).label),I(ae,null)}),G(e,n)},a=e=>{var n=uo(),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=fo(),r=z(n),i=B(r,2);V((e,t)=>{Y(r,`title`,e),Y(i,`title`,t)},[()=>X(`blueprint.cluster.add_selection`),()=>X(`blueprint.cluster.remove_selection`)]),U(`click`,r,()=>Ie(H(t).id)),U(`click`,i,()=>Le(H(t).id)),G(e,n)};q(o,e=>{H(c)&&H(re)>0&&e(s)});var l=B(o,2),u=e=>{var n=po();V(e=>Y(n,`title`,e),[()=>X(`blueprint.cluster.delete`)]),U(`click`,n,()=>ze(H(t).id)),G(e,n)};q(l,e=>{H(c)&&e(u)}),N(n),V(()=>_i(n,`left:${H(t).x??``}px; top:${H(t).y??``}px;`)),G(e,n)}),N(ft);var pt=B(ft,2),mt=e=>{G(e,ho())};return q(pt,e=>{H(s)||e(mt)}),V((e,t,r)=>{Y(it,`title`,e),ot=hi(at,1,`tool-button`,null,ot,{active:H(c)}),Y(at,`title`,t),ut=hi(lt,1,`tool-button`,null,ut,{active:n()===x}),Y(lt,`title`,r)},[()=>X(`blueprint.canvas.fit_view`),()=>X(`blueprint.canvas.drag_mode`),()=>X(`blueprint.canvas.browse_current`)]),U(`click`,it,Qe),U(`click`,at,et),U(`click`,lt,$e),U(`pointermove`,dt,Je),U(`pointerdown`,dt,Ye),U(`pointerup`,dt,Xe),Mr(`wheel`,dt,Ze),G(e,nt),Ke(tt)}Nr([`click`,`pointermove`,`pointerdown`,`pointerup`,`keydown`]);var vo=W(`<button class="explorer-breadcrumb-item" type="button">~</button>`),yo=W(`<span class="explorer-breadcrumb-item current">~</span>`),bo=W(`<span class="explorer-breadcrumb-item current"> </span>`),xo=W(`<button class="explorer-breadcrumb-item" type="button"> </button>`),So=W(`<span class="explorer-breadcrumb-sep">/</span> <!>`,1),Co=W(`<div class="explorer-section-label"> </div>`),wo=W(`<button class="explorer-item is-folder" type="button"><span class="explorer-item-icon">📁</span> <span class="explorer-item-name"> </span></button>`),To=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),Eo=W(`<button class="explorer-item is-file" type="button"><span class="explorer-item-icon">📄</span> <span class="explorer-item-name"> </span></button>`),Do=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),Oo=W(`<!> <!>`,1),ko=W(`<p class="file-preview-placeholder"> </p>`),Ao=W(`<p class="file-preview-name"> </p> <p class="file-preview-placeholder"> </p>`,1),jo=W(`<p class="file-preview-name"> </p> <span class="file-preview-binary"> </span>`,1),Mo=W(`<p class="file-preview-name"> </p> <img/>`,1),No=W(`<p class="file-preview-name"> </p> <video controls=""></video>`,3),Po=W(`<span class="file-preview-truncated"> </span>`),Fo=W(`<p class="file-preview-name"> </p> <!> <pre><code> </code></pre>`,1),Io=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 Lo(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(`
|
|
5
5
|
`)),I(s,e,!0),setTimeout(()=>{H(s)===e&&I(s,null)},1800)}catch{}}var g={open:u},_=Io(),v=R(_),y=R(v),b=R(y),x=e=>{var t=vo();U(`click`,t,()=>f(``)),G(e,t)},S=e=>{G(e,yo())};q(b,e=>{H(n)?e(x):e(S,-1)}),J(B(b,2),17,()=>l(H(n)),Yr,(e,t)=>{var n=So(),r=B(z(n),2),i=e=>{var n=bo(),r=R(n,!0);N(n),V(()=>K(r,H(t).name)),G(e,n)},a=e=>{var n=xo(),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=Co(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.explorer.loading`)]),G(e,t)},O=e=>{var t=Co(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.explorer.error`)]),G(e,t)},ee=e=>{var t=Co(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.explorer.empty`)]),G(e,t)},k=e=>{var t=Oo(),n=z(t),a=e=>{var t=To(),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=wo(),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),hi(o,1,`explorer-copy-btn ${H(s)===`folders`?`copied`:``}`),Y(o,`title`,t),hi(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=Do(),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=Eo(),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),hi(o,1,`explorer-copy-btn ${H(s)===`files`?`copied`:``}`),Y(o,`title`,t),hi(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(ee,2):e(k,-1)}),N(T),N(w);var A=B(w,4),te=R(A),ne=R(te),re=e=>{var t=ko(),n=R(t,!0);N(t),V(e=>K(n,e),[()=>X(`blueprint.preview.placeholder`)]),G(e,t)},ie=e=>{var t=Ao(),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=Ao(),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=jo(),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=Mo(),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=No(),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=Fo(),n=z(t),r=R(n,!0);N(n);var i=B(n,2),a=e=>{var t=Po(),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),hi(s,1,li(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 Ro(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function zo(){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(Ro(`ld-hide-categories`))),this.#d=F(L(Ro(`ld-hide-attachments`))),this.#f=F(L(zo())),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}},Bo=`(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}(?:\\|[^\\n]*\\|\\n)\\|[ \\t:|-]*-[ \\t:|-]*\\|(?:\\n\\|[^\\n]*\\|)*`;function Vo(){return Bo}var Ho=new Set([`compact`,`striped`]),Uo=new Set([`bordered`,`borderless`]),Wo=new Set([`bordered`,`borderless`]),Go=new Set([`info`,`success`,`warning`,`danger`,`note`]);function Ko(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`&&Ho.has(i)&&(t=i),e===`style`&&Wo.has(i)&&(n=i),e===`border`&&Uo.has(i)&&(n=i),e===`color`&&Go.has(i)&&(r=i)}return{style:t,border:n,color:r}}function qo(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 Ko(t.match(n)?.[0]||``)}function Jo(e){let t=Ko([e?.style?`<!-- table-style: ${e.style} -->`:``,e?.border?`<!-- table-border: ${e.border} -->`:``,e?.color?`<!-- table-color: ${e.color} -->`:``].filter(Boolean).join(`
|
|
6
6
|
`)),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(`
|
|
7
7
|
`)}function Yo(e){return e.trim().split(`|`).slice(1,-1).map(e=>e.trim())}function Xo(e){let t=Yo(e);return t.length>0&&t.every(e=>/^:?-+:?$/.test(e.replace(/\s+/g,``)))}function Zo(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(`
|
|
@@ -149,7 +149,7 @@ Texte`};case`link`:return{text:Se(`snip-link-text`),textFallback:X(`snippet.link
|
|
|
149
149
|
</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=Ug(),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 ee=B(S,2),k=e=>{var t=Bg(),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=Rg(),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=zg(),r=R(n);Ei(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)}),Ni(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(ee,e=>{H(n)===`html`&&e(k)});var A=B(ee,2),te=e=>{var n=Vg(),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=Hg(),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=Vg(),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),hi(C,1,li(H(n)===`markdown`?y:b)),K(w,t),hi(T,1,li(H(n)===`html`?y:b)),K(E,r),hi(D,1,li(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 Gg=W(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),Kg=W(`<p> </p>`),qg=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>`),Jg=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>`),Yg=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>`),Xg=W(`<label class="flex items-center gap-1.5 text-xs text-gray-700 dark:text-gray-300 cursor-pointer"><input type="checkbox"/> </label>`),Zg=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>`),Qg=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>`),$g=W(`<!> <!>`,1),e_=W(`<div> </div>`),t_=W(`<div> </div> <div> </div> <div> </div> <!>`,1),n_=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>`),r_=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>`),i_=W(`<p class="absolute inset-0 flex items-center justify-center text-gray-400 dark:text-gray-500 text-sm animate-pulse"> </p>`),a_=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>`),o_=W(`<div class="text-gray-400 text-center py-2">—</div>`),s_=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>`),c_=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 l_(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),ee=F(``),k=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(ee)&&je(H(ee))}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(ee,e,!0),I(k,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=c_(),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);Ei(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=Yg(),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=Gg(),n=R(t,!0);N(t),V(()=>K(n,H(he))),G(e,t)},l=e=>{var t=Kg(),n=R(t,!0);N(t),V(()=>{hi(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=qg(),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=Jg(),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);Ei(Ve);var He=B(Ve);N(Be),J(B(Be,2),17,()=>H(y),e=>e.value,(e,t,n)=>{var r=Xg(),i=R(r);Ei(i);var a=B(i);N(r),V(()=>K(a,` ${H(t).label??``}`)),U(`change`,i,re),Ni(i,()=>H(t).checked,e=>H(t).checked=e),G(e,r)}),N(Le);var Ue=B(Le,2),We=e=>{var t=Yg(),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=Gg(),n=R(t,!0);N(t),V(()=>K(n,H(Ce))),G(e,t)},l=e=>{var t=$g(),n=z(t),r=e=>{var t=Kg(),n=R(t,!0);N(t),V(()=>{hi(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=Zg(),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=Qg(),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=r_(),n=R(t),r=R(n),i=e=>{var t=t_(),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=e_(),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);Ei(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=n_(),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),_i(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`)]),Mi(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=i_(),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;Li(Ze,e=>I(De,e),()=>H(De)),N(Je),Li(Je,e=>I(Oe,e),()=>H(Oe));var $e=B(Je,2),et=e=>{var t=s_(),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=a_(),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,o_())};q(l,e=>{H(A).length?e(u):e(d,-1)}),N(c),N(t),V(e=>{K(i,`${H(ee)??``} ×${H(k)??``}`),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),Oi(Ve,H(x)),K(He,` ${f??``}`),Qe=hi(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)}),Mi(f,()=>H(p),e=>I(p,e)),U(`click`,b,M),U(`click`,w,Ne),U(`input`,fe,oe),Mi(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 u_=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),d_=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>`),f_=W(`<p class="p-8 text-red-500"> </p>`),p_=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>`),m_=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 h_(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 Nm(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 km(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 km(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}function x(e){let t=Z.allDocs.find(t=>t.id===e);if(!t)return null;let n=(t.folder||[]).join(`/`),r=e=>(e.folder||[]).join(`/`)===n,i=Z.hideCategories?Z.allDocs.filter(r).slice().sort((e,t)=>(e.filename||``).localeCompare(t.filename||``)):Z.allDocs.filter(e=>r(e)&&e.category===t.category),a=i.findIndex(t=>t.id===e);if(a===-1)return null;let o=i[a+1]??i[a-1];return o?o.id:null}async function S(){if(!H(o))return;let e=H(o).id;if(!(await fetch(`/api/documents/`+encodeURIComponent(e),{method:`DELETE`})).ok)return;let t=x(e);Z.allDocs=Z.allDocs.filter(t=>t.id!==e),Array.isArray(Z.searchResults)&&(Z.searchResults=Z.searchResults.filter(t=>t.id!==e));let n={...Z.annotationCounts};delete n[e],Z.annotationCounts=n;let r={...Z.fileAttachmentCounts};delete r[e],Z.fileAttachmentCounts=r,t?await y(t):(Z.currentDocId=null,I(o,null),history.pushState({},``,location.pathname))}async function C(){let[e,t]=await Promise.all([Dm(),Em()]);if(Z.allDocs=e,t.docsFolder)try{Z.allFolderPaths=await Om(t.docsFolder)}catch{Z.allFolderPaths=[]}let[n,r,i]=await Promise.all([Am(),jm(),Mm()]);Z.annotationCounts=n,Z.fileAttachmentCounts=r,Z.docStatuses=i}Vi(async()=>{m(p());let e=await Em();await la(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 C();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)};window.addEventListener(`popstate`,n);let r=()=>{C()};return window.addEventListener(`ld:documents-changed`,r),()=>{window.removeEventListener(`popstate`,n),window.removeEventListener(`ld:documents-changed`,r)}});var w=m_(),T=z(w),E=R(T);Ja(E,{get title(){return H(u)},subtitle:``,actions:e=>{var t=u_(),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=d_(),r=R(n);Ei(r),Pe(2),N(n),V(e=>{Y(r,`placeholder`,e),Di(r,Z.searchQuery)},[()=>X(`nav.search_placeholder`)]),U(`input`,r,e=>g(e.target.value)),G(e,n)},$$slots:{actions:!0,default:!0}});var D=B(E,2),O=R(D);ah(O,{onopen:e=>y(e),onsearch:g,onexport:()=>I(i,!0),onnewfolder:()=>I(n,!0),onnewdoc:()=>I(r,!0)});var ee=B(O,2),k=R(ee),A=e=>{var t=Ur(),n=z(t),r=e=>{var t=f_(),n=R(t,!0);N(t),V(()=>K(n,H(c))),G(e,t)},i=e=>{yg(e,{get doc(){return H(o)},get navHistory(){return H(_)},ongoback:v,onopen:(e,t)=>y(e,!1,!0,t),onsave:b,ondelete:S})};q(n,e=>{H(c)?e(r):e(i,-1)}),G(e,t)},te=e=>{var t=p_(),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(A):e(te,-1)}),N(ee),N(D),N(T);var ne=B(T,2);Dg(ne,{get open(){return H(n)},onclose:()=>I(n,!1),onsuccess:C});var re=B(ne,2);Ig(re,{get open(){return H(r)},onclose:()=>I(r,!1),onsuccess:async e=>{await C(),y(e)}});var ie=B(re,2);Wg(ie,{get open(){return H(i)},onclose:()=>I(i,!1)}),l_(B(ie,2),{get open(){return H(a)},onclose:()=>I(a,!1)}),G(e,w),Ke()}Nr([`click`,`input`]);var g_=`modulepreload`,__=function(e){return`/`+e},v_={},y_=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=__(t,n),t in v_)return;v_[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`:g_,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)})},b_=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.
|
|
150
150
|
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
|
|
151
151
|
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
|
|
152
|
-
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 x_(e,t){Ge(t,!0),Vi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await la(t);let{initDiagram:r}=await y_(async()=>{let{initDiagram:e}=await import(`./main-CCDIOfs_.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=b_(),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),ee=B(O,4),k=B(ee,4),A=B(k,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(ee,`placeholder`,N),Y(k,`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),hi(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 S_={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 C_(){S_.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var w_=`custom-shape`,T_=`custom-shape:`,E_=[{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 D_(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function O_(e){return D_(e)?e.slice(13):null}function k_(e){return e&&S_.customShapeDefs&&S_.customShapeDefs.get(e)||null}function A_(e){let t=k_(e);return[t&&t.width||65,t&&t.height||65]}function j_(e){let t=k_(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:E_}function M_(e){let t=k_(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function N_(){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:[];S_.customShapeLibraries=n,S_.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>S_.customShapeDefs.set(e.id,e))})}catch{S_.customShapeLibraries=[],S_.customShapeDefs=new Map}}function P_(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(S_.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:`${T_}${e.id}`}}))}),t.appendChild(n)})}function F_(){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(E_)}}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=`
|
|
152
|
+
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 x_(e,t){Ge(t,!0),Vi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await la(t);let{initDiagram:r}=await y_(async()=>{let{initDiagram:e}=await import(`./main-BxPG9Mc_.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=b_(),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),ee=B(O,4),k=B(ee,4),A=B(k,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(ee,`placeholder`,N),Y(k,`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),hi(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 S_={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 C_(){S_.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var w_=`custom-shape`,T_=`custom-shape:`,E_=[{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 D_(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function O_(e){return D_(e)?e.slice(13):null}function k_(e){return e&&S_.customShapeDefs&&S_.customShapeDefs.get(e)||null}function A_(e){let t=k_(e);return[t&&t.width||65,t&&t.height||65]}function j_(e){let t=k_(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:E_}function M_(e){let t=k_(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function N_(){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:[];S_.customShapeLibraries=n,S_.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>S_.customShapeDefs.set(e.id,e))})}catch{S_.customShapeLibraries=[],S_.customShapeDefs=new Map}}function P_(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(S_.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:`${T_}${e.id}`}}))}),t.appendChild(n)})}function F_(){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(E_)}}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=`
|
|
153
153
|
<input class="field !h-7 text-xs" value="${d(t.id)}">
|
|
154
154
|
<input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.x*100)}">
|
|
155
155
|
<input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.y*100)}">
|