living-ai-documentation 3.7.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,148 @@
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,ee=1<<21,te=1<<22,ne=1<<23,O=Symbol(`$state`),re=Symbol(`legacy props`),ie=Symbol(``),ae=Symbol(`attributes`),oe=Symbol(`class`),se=Symbol(`style`),ce=Symbol(`text`),le=Symbol(`form reset`),ue=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},de=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function fe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function pe(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function me(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function he(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function ge(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function _e(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ve(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function ye(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function be(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function xe(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Se(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ce(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var we={},Te=Symbol(`uninitialized`),Ee=`http://www.w3.org/1999/xhtml`,k=`http://www.w3.org/2000/svg`,De=`http://www.w3.org/1998/Math/MathML`;function Oe(){console.warn(`https://svelte.dev/e/derived_inert`)}function ke(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Ae(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function je(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var A=!1;function Me(e){A=e}var j;function Ne(e){if(e===null)throw ke(),we;return j=e}function Pe(){return Ne(fn(j))}function M(e){if(A){if(fn(j)!==null)throw ke(),we;j=e}}function Fe(e=1){if(A){for(var t=e,n=j;t--;)n=fn(n);j=n}}function Ie(e=!0){for(var t=0,n=j;;){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 Le(e){if(!e||e.nodeType!==8)throw ke(),we;return e.data}function Re(e){return e===this.v}function ze(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Be(e){return!ze(e,this.v)}var Ve=!1,He=!1;function Ue(){He=!0}var We=null;function Ge(e){We=e}function Ke(e,t=!1,n){We={p:We,i:!1,c:null,e:null,s:e,x:null,r:tr,l:He&&!t?{s:null,u:null,$:[]}:null}}function qe(e){var t=We,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,We=t.p,e??{}}function Je(){return!He||We!==null&&We.l===null}var Ye=[];function Xe(){var e=Ye;Ye=[],m(e)}function Ze(e){if(Ye.length===0&&!mt){var t=Ye;queueMicrotask(()=>{t===Ye&&Xe()})}Ye.push(e)}function Qe(){for(;Ye.length>0;)Xe()}function $e(e){var t=tr;if(t===null)return Qn.f|=ne,e;if(!(t.f&32768)&&!(t.f&4))throw e;et(e,t)}function et(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 tt=~(_|v|g);function nt(e,t){e.f=e.f&tt|t}function rt(e){e.f&512||e.deps===null?nt(e,g):nt(e,v)}function it(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=D,it(t.deps))}function at(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),it(e.deps),nt(e,g)}var ot=!1,st=!1;function ct(e){var t=st;try{return st=!1,[e(),st]}finally{st=t}}var lt=null,ut=null,N=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(){ut===null?lt=ut=this:(ut.#n=this,this.#t=ut),ut=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)nt(r,_),t(r);for(r of n.m)nt(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),nt(e,_),this.schedule(e);for(let e of this.#d)nt(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(N=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&&N.#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=N;if(this.#a===0&&(this.#c.length===0||s!==null)&&(this.#S(),Ve&&(this.#x(),N=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):Ve&&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),nt(i,_),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),N=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)at(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==Te&&!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(){N=this}deactivate(){N=null,ft=null}flush(){try{ht=!0,N=this,this.#g()}finally{vt=0,pt=null,gt=null,_t=null,ht=!1,N=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=lt;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?(nt(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,Ze(()=>{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(N===null){let t=N=new e;!ht&&!mt&&Ze(()=>{t.#e||t.flush()})}return N}apply(){if(!Ve||!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=lt;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&&(Ve||(Qn===null||!(Qn.f&2))&&!ot))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?lt=t:e.#n=t,t===null?ut=e:t.#t=e,this.linked=!1}}};function xt(e){var t=mt;mt=!0;try{var n;for(e&&(N!==null&&!N.is_fork&&N.flush(),n=e());;){if(Qe(),N===null)return n;N.flush()}}finally{mt=t}}function St(){try{ve()}catch(e){et(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)&&(nt(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){N.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),nt(e,g);for(var n=e.first;n!==null;)Ot(n,t),n=n.next}}function kt(e){nt(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,()=>{Ze(()=>{--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=A?j: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(A){let e=this.#t;Pe();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),A&&(this.#e=j)}#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)),Ze(()=>{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(N))}))}#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(N)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){at(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=We;nr(this.#i),er(this.#i),Ge(this.#i.ctx);try{return bt.ensure(),e()}catch(e){return $e(e),null}finally{nr(t),er(n),Ge(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,Ze(()=>{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;N?.is_fork?(this.#a&&N.skip_effect(this.#a),this.#o&&N.skip_effect(this.#o),this.#s&&N.skip_effect(this.#s),N.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),A&&(Ne(this.#t),Fe(),Ne(Ie()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){je();return}r=!0,i&&Ce(),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){et(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 et(e,this.#i.parent),null}}))};Ze(()=>{var t;try{t=this.transform_error(e)}catch(e){et(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>et(e,this.#i&&this.#i.parent)):o(t)})}};function Pt(e,t,n,r){let i=Je()?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){et(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=>et(e,s)).finally(d)}l?l.then(()=>{c(),f(),It()}):f()}function Ft(){var e=tr,t=Qn,n=We,r=N;return function(i=!0){nr(e),er(t),Ge(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function It(e=!0){nr(null),er(null),Ge(null),e&&N?.deactivate()}function Lt(){var e=tr,t=e.b,n=N,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:We,deps:null,effects:null,equals:Re,f:t,fn:e,reactions:null,rv:0,v:Te,wv:0,parent:tr,ac:null}}var zt=Symbol(`obsolete`);function Bt(e,t,n){let r=tr;r===null&&pe();var i=void 0,a=Xt(Te),o=!Qn,s=new Set;return Nn(()=>{var t=tr,n=h();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ue&&n.reject(e)}).finally(It)}catch(e){n.reject(e),It()}var c=N;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|=ne,Qt(a,t)):(a.f&8388608&&(a.f^=ne),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 Ve||ir(t),t}function Vt(e){let t=Rt(e);return t.equals=Be,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!==Te&&r.f&24576)return Oe(),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(),(!N?.is_fork||e.deps===null)&&(N===null?e.v=t:(N.capture(e,t,!0),dt?.capture(e,t,!0)),e.deps===null))){nt(e,g);return}Xn||(ft===null?rt(e):(En()||N?.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(ue),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:Re,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=Be),He&&n&&We!==null&&We.l!==null&&(We.l.s??=[]).push(r),r}function I(e,t,n=!1){return Qn!==null&&(!$n||Qn.f&131072)&&Je()&&Qn.f&4325394&&(rr===null||!rr.has(e))&&Se(),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&&rt(t)}e.wv=pr(),tn(e,_,n),Je()&&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&&nt(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=Je(),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&&nt(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||O 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)&&be();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(Te,s));r.set(t,e),en(a)}}else I(n,Te),en(a);return!0},get(t,n,i){if(n===O)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]:Te),s)),r.set(n,a)),a!==void 0){var l=H(a);return l===Te?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!==Te)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===O)return!0;var n=r.get(t),i=n!==void 0&&n.v!==Te||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]):Te,s)),r.set(t,n)),H(n)===Te)?!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(Te,s)),r.set(d+``,p)):I(p,Te)}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!==Te;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!==Te});for(var[n,i]of r)i.v!==Te&&!(n in e)&&t.push(n);return t},setPrototypeOf(){xe()}})}function nn(e){try{if(typeof e==`object`&&e&&O in e)return e[O]}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[oe]=void 0,e[ae]=null,e[se]=void 0,e.__e=void 0),d(n)&&(n[ce]=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(!A)return dn(e);var n=dn(j);if(n===null)n=j.appendChild(un());else if(t&&n.nodeType!==3){var r=un();return n?.before(r),Ne(r),r}return t&&gn(n),Ne(n),n}function z(e,t=!1){if(!A){var n=dn(e);return n instanceof Comment&&n.data===``?fn(n):n}if(t){if(j?.nodeType!==3){var r=un();return j?.before(r),Ne(r),r}gn(j)}return j}function B(e,t=1,n=!1){let r=A?j:e;for(var i;t--;)i=r,r=fn(r);if(!A)return r;if(n){if(r?.nodeType!==3){var a=un();return r===null?i?.after(a):r.before(a),Ne(a),a}gn(r)}return Ne(r),r}function pn(e){e.textContent=``}function mn(){return!Ve||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,Ze(()=>{document.activeElement===t&&e.focus()})}}function vn(e){A&&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[le]?.()})},{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[le];i?e[le]=()=>{i(),r(!0)}:e[le]=()=>r(!0),bn()}function Cn(e){tr===null&&(Qn===null&&_e(e),ge()),Xn&&he(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:We,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};N?.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 nt(t,g),t.teardown=e,t}function On(e){Cn(`$effect`);var t=tr.f;if(!Qn&&t&32&&We!==null&&!We.i){var n=We;(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(te|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(ue)});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||(nt(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&&(!Ve||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&&nt(e,g)}return!1}function hr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!Ve&&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?nt(a,_):a.f&1024&&nt(a,v),Dt(a))}}function gr(e){var t=ar,n=or,r=sr,i=Qn,a=rr,o=We,s=$n,c=dr,l=e.f;ar=null,or=0,sr=null,Qn=l&96?null:e,rr=null,Ge(e.ctx),$n=!1,dr=++ur,e.ac!==null&&(xn(()=>{e.ac.abort(ue)}),e.ac=null);try{e.f|=ee;var u=e.fn,d=u();e.f|=x;var f=e.deps,p=N?.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(Je()&&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^=ne),d}catch(e){return $e(e)}finally{e.f^=ee,ar=t,or=n,sr=r,Qn=i,rr=a,Ge(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!==Te&&rt(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)){nt(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(Ve)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===Te)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(O in e)Tr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&O 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`?Ze(()=>{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(A)return zr(j,null),j;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(A)return zr(j,null),j;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(!A){var t=un(e+``);return zr(t,t),t}var n=j;return n.nodeType===3?gn(n):(n.before(n=un()),Ne(n)),zr(n,n),n}function Ur(){if(A)return zr(j,null),j;var e=document.createDocumentFragment(),t=document.createComment(``),n=un();return e.append(t,n),zr(t,n),e}function G(e,t){if(A){var n=tr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=j),Pe();return}e!==null&&e.before(t)}function K(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ce]??=e.nodeValue)&&(e[ce]=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=>{Ke({});var n=We;if(o&&(n.c=o),a&&(r.$$events=a),A&&zr(t,null),l=e(t,r)||{},A&&(tr.nodes.end=j,j===null||j.nodeType!==8||j.data!==`]`))throw ke(),we;qe()},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=N,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 A&&(this.anchor=j),this.#a(n)}};function q(e,t,n=!1){var r;A&&(r=j,Pe());var i=new Jr(e),a=n?C:0;function o(e,t){if(A){var n=Le(r);if(e!==parseInt(n.substring(1))){var a=Ie();Ne(a),i.anchor=a,Me(!1),i.ensure(e,t),Me(!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 $r(e,n,r,a,o,s=null){var c=e,l=new Map;if(n&4){var u=e;c=A?Ne(dn(u)):u.appendChild(un())}A&&Pe();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,ti(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=E,ri(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;A&&Le(c)===`[!`!=(e===0)&&(c=Ie(),Ne(c),Me(!1),t=!0);for(var i=new Set,u=N,v=mn(),y=0;y<e;y+=1){A&&j.nodeType===8&&j.data===`]`&&(c=j,t=!0,Me(!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=ni(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&&me(``,``,``),A&&e>0&&Ne(Ie()),!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&&Me(!0),H(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,A&&(c=j)}function ei(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function ti(e,t,n,r,a){var o=(r&8)!=0,s=t.length,c=e.items,l=ei(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)ri(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),ii(e,d,_),ii(e,_,y),ri(_,y,n),d=_,p=[],m=[],l=ei(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)ri(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);ii(e,S.prev,C.next),ii(e,d,S),ii(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),ri(_,l,n),ii(e,_.prev,_.next),ii(e,_,d===null?e.effect.first:d.next),ii(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=ei(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=ei(_.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=ei(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&&Ze(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function ni(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 ri(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 ii(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function ai(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;A&&(o=Ne(dn(c)))}V(()=>{var e=tr;if(s===(s=t()??``)){A&&Pe();return}if(n&&!A){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(A){for(var a=j.data,l=Pe(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=fn(l);if(l===null)throw ke(),we;zr(j,u),o=Ne(l);return}var d=hn(r?`svg`:i?`math`:`template`,r?k:i?De: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 oi(e,t,...n){var r=new Jr(e);Fn(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},C)}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
+ \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[oe];if(A||o!==n||o===void 0){var s=di(n,r,a);(!A||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[oe]=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[se];if(A||i!==t){var a=mi(t,r);(!A||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[se]=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 Ae();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,N!==null&&r.add(N)}),Mn(()=>{var a=t();if(e===document.activeElement){var o=Ve?dt:N;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=de?`link`:`LINK`,Ti=de?`progress`:`PROGRESS`;function Ei(e){if(A){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;J(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;J(e,`checked`,null),e.checked=r}}};e[le]=n,Ze(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 J(e,t,n,r){var i=ki(e);A&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===wi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ie]=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[ae]??={[Si]:e.nodeName.includes(`-`),[Ci]:e.namespaceURI===Ee}}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),N!==null&&r.add(N),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))}}}),(A&&e.defaultValue!==e.value||Cr(t)==null&&e.value)&&(n(Pi(e)?Fi(e.value):e.value),N!==null&&r.add(N)),Pn(()=>{var n=t();if(e===document.activeElement){var i=Ve?dt:N;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)}),(A&&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?.[O]===t}function Li(e={},t,n,r){var i=We.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=We,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=!He||(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=O in e||re in e;f=o(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=ct(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&ye(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){We===null&&fe(`onMount`),He&&We.l!==null?Hi(We).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);M(a);var s=B(a);M(i);var c=B(i,2),l=R(c,!0);M(c),M(r);var u=B(r,2);oi(R(u),()=>t.children),M(u),M(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){Ke(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);M(x),M(y);var C=B(y,2),w=R(C),T=e=>{G(e,Gi())},E=e=>{G(e,Ki())},D=e=>{G(e,qi())},ee=e=>{var n=Qi(),r=z(n);$r(r,17,()=>H(i),Yr,(e,t)=>{var n=Ji(),r=B(R(n)),i=R(r,!0);M(r),M(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>u(H(t).path)),G(e,n)}),$r(B(r,2),17,()=>H(a),Yr,(e,n)=>{var r=Zi(),i=R(r),a=B(R(i)),o=R(a,!0);M(a),M(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)}),M(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(ee,-1)}),M(C),M(v);var te=B(v,4),ne=e=>{G(e,$i())},O=e=>{var n=ta();$r(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);M(a);var c=B(a,2),u=R(c,!0);M(c);var d=B(c,2);M(i),V(e=>{s.disabled=r===t.extraFiles.length-1,J(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)}),M(n),G(e,n)};return q(te,e=>{t.extraFiles.length===0?e(ne):e(O,-1)}),M(_),V(e=>{b.disabled=!H(r),K(S,e)},[()=>l(H(n))]),U(`click`,b,d),G(e,_),qe(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){Ke(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);M(_);var y=B(_,4);$r(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),M(s),V(()=>{J(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)}),M(y),M(g);var b=B(g,2),x=R(b),S=B(R(x),2);M(x);var C=B(x,4);$r(C,21,r,Yr,(e,t,n)=>{var r=aa(),i=R(r),a=B(i,2);M(r),V(()=>_i(i,`background:${H(t)??``}`)),U(`click`,a,()=>m(n)),G(e,r)}),M(C);var w=B(C,2),T=R(w);Ei(T);var E=B(T,2);M(w),M(b),U(`click`,v,d),U(`click`,S,f),Mi(T,()=>H(c),e=>I(c,e)),U(`click`,E,p),G(e,h),qe()}Nr([`click`,`input`]);var ca=W(`<a class="ghost-button"> </a>`),la=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 ua(e,t){Ke(t,!0);let n=Bi(t,`nav`,19,()=>[]),r=window.location.pathname,i=P(()=>[...n(),{label:`Workspace`,href:`/workspace`},{label:`Agents`,href:`/agents`},{label:`Blueprint`,href:`/blueprint`},{label:`Diagram`,href:`/diagram`},{label:`Files`,href:`/files`},{label:`AI Context`,href:`/context`},{label:`Admin`,href:`/admin`},{label:`Home`,href:`/`}].filter(e=>e.href!==r));var a=la(),o=R(a),s=B(R(o),2),c=R(s),l=R(c,!0);M(c);var u=B(c,2),d=R(u,!0);M(u),M(s),M(o);var f=B(o,2),p=e=>{var n=Ur();oi(z(n),()=>t.children),G(e,n)};q(f,e=>{t.children&&e(p)});var m=B(f,2),h=R(m);$r(h,17,()=>H(i),Yr,(e,t)=>{var n=ca(),r=R(n,!0);M(n),V(()=>{J(n,`href`,H(t).href),K(r,H(t).label)}),G(e,n)});var g=B(h,2),_=e=>{var n=Ur();oi(z(n),()=>t.actions),G(e,n)};q(g,e=>{t.actions&&e(_)}),M(m),M(a),V(()=>{K(l,t.title),K(d,t.subtitle)}),G(e,a),qe()}var da=F(L({}));async function fa(e){try{let t=await fetch(`/i18n/${e||`en`}.json`);t.ok&&I(da,await t.json(),!0)}catch{}}function Y(e,t){let n=H(da)[e]===void 0?e:H(da)[e];if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{${e}}`,r);return n}var pa=W(`<span> </span>`),ma=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),ha=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>`),ga=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),va=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),ya=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),ba=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>`),xa=W(`<div class="field-group"><label class="checkbox-label"><input type="checkbox"/> <span> </span></label> <p class="field-hint checkbox-hint"> </p></div>`),Sa=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 Ca(e,t){Ke(t,!0);let n=F(``),r=F(``),i=F(``),a=F(`system`),o=F(`en`),s=F(``),c=F(``),l=F(!1),u=F(!1),d=F(400),f=F(!1),p=F(!1),m=F(!1),h=F(!1),g=F(!1),_=F(``),v=F(L([])),y=F(L([])),b=F(L([])),x=F(null),S=null,C=F(null),w=[`2024_01_15_09_30_[DevOps]_deploy_pipeline.md`,`2023_11_03_14_45_[Frontend]_react_hooks_guide.md`,`2025_06_20_08_00_meeting_notes.md`,`readme.md`];function T(e){let t=e.split(`_`);return t.length===5?`${t[0]}-${t[1]}-${t[2]}T${t[3]}:${t[4]}`:`${t[0]}-${t[1]}-${t[2]}`}function E(e){e||=`YYYY_MM_DD_HH_mm_[Category]_title`;let t=/YYYY.*MM.*DD/.test(e),n=t&&/HH.*mm/.test(e),r=/\[Category\]/i.test(e),i=n?`(\\d{4}_\\d{2}_\\d{2}(?:_\\d{2}_\\d{2})?)`:`(\\d{4}_\\d{2}_\\d{2})`,a=`\\[([^\\]]+)\\]`,o=t&&r&&e.search(/\[Category\]/i)<e.search(/YYYY/i),s=null,c=null;if(t&&r){let e=o?`${a}_${i}`:`${i}_${a}`;s=RegExp(`^`+e+`_(.+)\\.md$`,`i`),c=RegExp(`^`+i+`_(.+)\\.md$`,`i`)}else t?c=RegExp(`^`+i+`_(.+)\\.md$`,`i`):r&&(s=RegExp(`^\\[([^\\]]+)\\]_(.+)\\.md$`,`i`));return{full:s,dateOnly:c,hasDate:t,hasCategory:r,catBeforeDate:o}}function D(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function ee(e,t){if(t.full){let n=e.match(t.full);if(n){if(t.hasDate&&t.hasCategory){let e=t.catBeforeDate?n[2]:n[1],r=t.catBeforeDate?n[1]:n[2];return{date:T(e),category:r,title:D(n[3]),match:!0}}else if(t.hasCategory)return{date:null,category:n[1],title:D(n[2]),match:!0}}}if(t.dateOnly){let n=e.match(t.dateOnly);if(n)return{date:T(n[1]),category:`General`,title:D(n[2]),match:!0}}return{date:null,category:`General`,title:e.replace(`.md`,``),match:!1}}let te=P(()=>w.map(e=>({filename:e,...ee(e,E(H(s)))})));function ne(e){return/^([/\\]|[a-zA-Z]:[\\/]|~)/.test(e)}function O(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 re(){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 fa(H(o)),I(s,e.filenamePattern||``,!0),I(c,e.docsFolder&&e.sourceRoot?O(e.docsFolder,e.sourceRoot):``,!0),I(l,!!e.exclusiveFolderExpansion),I(u,!!e.exclusiveCategoryExpansion),I(d,typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,!0),I(f,!!e.markdownSoftBreaks),I(p,!!e.imageRoundedCorners),I(m,!!e.imageCentered),I(h,!!e.imageBorder),I(g,!!e.codeBlockLightTheme),I(_,(e.blockedFileExtensions||[]).join(` `),!0),I(v,e.extraFiles||[],!0);let t=[`c-white`,`c-gray`,`c-slate`,`c-blue`,`c-sky`,`c-cyan`,`c-teal`,`c-green`,`c-lime`,`c-amber`,`c-orange`,`c-red`,`c-rose`,`c-pink`,`c-purple`],x={"c-white":`#ffffff`,"c-gray":`#f5f5f4`,"c-slate":`#f1f5f9`,"c-blue":`#dbeafe`,"c-sky":`#e0f2fe`,"c-cyan":`#cffafe`,"c-teal":`#ccfbf1`,"c-green":`#dcfce7`,"c-lime":`#ecfccb`,"c-amber":`#fef9c3`,"c-orange":`#ffedd5`,"c-red":`#fee2e2`,"c-rose":`#ffe4e6`,"c-pink":`#fce7f3`,"c-purple":`#ede9fe`};I(y,Array.isArray(e.diagramNodePalette)&&e.diagramNodePalette.length?t.map((t,n)=>e.diagramNodePalette[n]||x[t]):t.map(e=>x[e]),!0),I(b,Array.isArray(e.diagramEdgePalette)&&e.diagramEdgePalette.length?[...e.diagramEdgePalette]:[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],!0),H(C).loadBrowse(e.docsFolder||`/`)}catch{ae(`Failed to load configuration.`,`error`)}}async function ie(e){e.preventDefault();let t=H(s).trim();if(t){let e=(t.match(/\[Category\]/gi)||[]).length;if(e===0){ae(`Pattern must include [Category].`,`error`);return}if(e>1){ae(`Pattern must include [Category] only once.`,`error`);return}}if(H(c)!==``&&ne(H(c))){ae(`Source root must be a relative path.`,`error`);return}let n=H(_).split(/[\s,]+/).map(e=>e.trim().replace(/^\.+/,``).toLowerCase()).filter(e=>/^[a-z0-9]+$/.test(e)),r={title:H(i),theme:H(a),language:H(o),filenamePattern:t,exclusiveFolderExpansion:H(l),exclusiveCategoryExpansion:H(u),codeBlockMaxHeight:Math.max(0,Math.min(5e3,H(d)||0)),markdownSoftBreaks:H(f),imageRoundedCorners:H(p),imageCentered:H(m),imageBorder:H(h),codeBlockLightTheme:H(g),diagramNodePalette:[...H(y)],diagramEdgePalette:[...H(b)],sourceRoot:H(c)===``?null:H(c),blockedFileExtensions:n};try{let e=await fetch(`/api/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(r)});if(!e.ok)throw Error(await e.text());ae(`Settings saved.`,`ok`)}catch(e){ae(`Save failed: `+(e instanceof Error?e.message:String(e)),`error`)}}function ae(e,t){I(x,{text:e,type:t},!0),S&&clearTimeout(S),t===`ok`&&(S=window.setTimeout(()=>{I(x,null)},3e3))}Vi(()=>{re()});var oe=Sa(),se=R(oe);{let e=P(()=>Y(`admin.title`)),t=P(()=>Y(`admin.config.title`));ua(se,{get title(){return H(e)},get subtitle(){return H(t)}})}var ce=B(se,2),le=R(ce),ue=R(le),de=R(ue),fe=R(de),pe=R(fe),me=R(pe,!0);M(pe);var he=B(pe,2),ge=R(he,!0);M(he),M(fe);var _e=B(fe,2),ve=R(_e),ye=e=>{var t=pa(),n=R(t,!0);M(t),V(()=>{hi(t,1,`save-msg save-msg--${H(x).type??``}`),K(n,H(x).text)}),G(e,t)};q(ve,e=>{H(x)&&e(ye)});var be=B(ve,2),xe=R(be,!0);M(be),M(_e),M(de),M(ue);var Se=B(ue,2),Ce=R(Se);{let e=P(()=>Y(`admin.section.general.title`)),t=P(()=>Y(`admin.section.general.desc`));Wi(Ce,{icon:`🌐`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var s=ma(),c=z(s),l=R(c),u=R(l),d=R(u,!0);M(u);var f=B(u,2),p=R(f,!0);M(f),M(l);var m=B(l,2),h=R(m),g=R(h,!0);M(h);var _=B(h,2),v=R(_,!0);M(_),M(m),M(c);var y=B(c,2),b=R(y),x=R(b,!0);M(b);var S=B(b,2);Ei(S);var C=B(S,2),w=R(C,!0);M(C),M(y);var T=B(y,2),E=R(T),D=R(E,!0);M(E);var ee=B(E,2),te=R(ee),ne=R(te,!0);M(te),te.value=te.__value=`system`;var O=B(te),re=R(O,!0);M(O),O.value=O.__value=`light`;var ie=B(O),ae=R(ie,!0);M(ie),ie.value=ie.__value=`dark`,M(ee);var oe=B(ee,2),se=R(oe,!0);M(oe),M(T);var ce=B(T,2),le=R(ce),ue=R(le,!0);M(le);var de=B(le,2),fe=R(de),pe=R(fe,!0);M(fe),fe.value=fe.__value=`en`;var me=B(fe),he=R(me,!0);M(me),me.value=me.__value=`fr`,M(de);var ge=B(de,2),_e=R(ge,!0);M(ge),M(ce),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),J(S,`placeholder`,a),K(w,o),K(D,s),K(ne,c),K(re,l),K(ae,u),K(se,f),K(ue,m),K(pe,h),K(he,_),K(_e,y)},[()=>Y(`admin.server_info.docs_folder`),()=>Y(`admin.server_info.port`),()=>Y(`admin.appearance.site_title_label`),()=>Y(`admin.appearance.site_title_placeholder`),()=>Y(`admin.appearance.site_title_hint`),()=>Y(`admin.appearance.theme_label`),()=>Y(`admin.appearance.theme_system`),()=>Y(`admin.appearance.theme_light`),()=>Y(`admin.appearance.theme_dark`),()=>Y(`admin.appearance.theme_hint`),()=>Y(`admin.appearance.language_label`),()=>Y(`admin.appearance.language_en`),()=>Y(`admin.appearance.language_fr`),()=>Y(`admin.appearance.language_hint`)]),Mi(S,()=>H(i),e=>I(i,e)),bi(ee,()=>H(a),e=>I(a,e)),U(`change`,de,()=>fa(H(o))),bi(de,()=>H(o),e=>I(o,e)),G(e,s)},$$slots:{default:!0}})}var we=B(Ce,2);{let e=P(()=>Y(`admin.section.filename.title`)),t=P(()=>Y(`admin.section.filename.desc`));Wi(we,{icon:`📝`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ga(),r=z(n),i=R(r),a=R(i,!0);M(i);var o=B(i,2);Ei(o);var c=B(o,2),l=R(c),u=B(l),d=R(u,!0);M(u),M(c),M(r);var f=B(r,2),p=R(f),m=R(p,!0);M(p);var h=B(p,2),g=R(h,!0);M(h);var _=B(h,2);$r(_,21,()=>H(te),Yr,(e,t)=>{var n=ha(),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a),s=R(o),c=R(s,!0);M(s);var l=B(s,2),u=R(l,!0);M(l),M(o);var d=B(o,2),f=R(d),p=R(f,!0);M(f);var m=B(f,2),h=R(m,!0);M(m),M(d);var g=B(d,2),_=R(g),v=R(_,!0);M(_);var y=B(_,2),b=R(y,!0);M(y),M(g),M(a),M(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)},[()=>Y(`admin.pattern.col_date`),()=>H(t).date||Y(`admin.pattern.col_none`),()=>Y(`admin.pattern.col_category`),()=>Y(`admin.pattern.col_title`)]),G(e,n)}),M(_),M(f),V((e,t,n,r,i)=>{K(a,e),J(o,`placeholder`,t),K(l,`${n??``} `),K(d,(H(s)||`YYYY_MM_DD_HH_mm_[Category]_title`)+`.md`),K(m,r),K(g,i)},[()=>Y(`admin.pattern.label`),()=>Y(`admin.pattern.placeholder`),()=>Y(`admin.pattern.hint`),()=>Y(`admin.pattern.preview_title`),()=>Y(`admin.pattern.preview_desc`)]),Mi(o,()=>H(s),e=>I(s,e)),G(e,n)},$$slots:{default:!0}})}var Te=B(we,2);{let e=P(()=>Y(`admin.section.source.title`)),t=P(()=>Y(`admin.section.source.desc`));Wi(Te,{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);M(a);var s=B(a,2);Ei(s);var l=B(s,2),u=R(l,!0);M(l),M(i),Li(ra(B(i,2),{get docsFolder(){return H(n)},get extraFiles(){return H(v)},onchange:e=>I(v,e,!0)}),e=>I(C,e,!0),()=>H(C)),V((e,t)=>{K(o,e),K(u,t)},[()=>Y(`admin.server_info.source_root`),()=>Y(`admin.server_info.source_root_hint`)]),Mi(s,()=>H(c),e=>I(c,e)),G(e,r)},$$slots:{default:!0}})}var Ee=B(Te,2);{let e=P(()=>Y(`admin.section.sidebar.title`)),t=P(()=>Y(`admin.section.sidebar.desc`));Wi(Ee,{icon:`🗂️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=va(),r=z(n),i=R(r),a=R(i);Ei(a);var o=B(a,2),s=R(o,!0);M(o),M(i);var c=B(i,2),d=R(c,!0);M(c),M(r);var f=B(r,2),p=R(f),m=R(p);Ei(m);var h=B(m,2),g=R(h,!0);M(h),M(p);var _=B(p,2),v=R(_,!0);M(_),M(f),V((e,t,n,r)=>{K(s,e),K(d,t),K(g,n),K(v,r)},[()=>Y(`admin.appearance.exclusive_folder_label`),()=>Y(`admin.appearance.exclusive_folder_hint`),()=>Y(`admin.appearance.exclusive_category_label`),()=>Y(`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 k=B(Ee,2);{let e=P(()=>Y(`admin.section.markdown.title`)),t=P(()=>Y(`admin.section.markdown.desc`));Wi(k,{icon:`✍️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ya(),r=z(n),i=R(r),a=R(i,!0);M(i);var o=B(i,2);Ei(o);var s=B(o,2),c=R(s,!0);M(s),M(r);var l=B(r,2),u=R(l),_=R(u);Ei(_);var v=B(_,2),y=R(v,!0);M(v),M(u);var b=B(u,2);ai(b,()=>Y(`admin.appearance.soft_breaks_hint`),!0),M(b),M(l);var x=B(l,2),S=R(x),C=R(S);Ei(C);var w=B(C,2),T=R(w,!0);M(w),M(S);var E=B(S,2),D=R(E,!0);M(E),M(x);var ee=B(x,2),te=R(ee),ne=R(te);Ei(ne);var O=B(ne,2),re=R(O,!0);M(O),M(te);var ie=B(te,2),ae=R(ie,!0);M(ie),M(ee);var oe=B(ee,2),se=R(oe),ce=R(se);Ei(ce);var le=B(ce,2),ue=R(le,!0);M(le),M(se);var de=B(se,2),fe=R(de,!0);M(de),M(oe);var pe=B(oe,2),me=R(pe),he=R(me);Ei(he);var ge=B(he,2),_e=R(ge,!0);M(ge),M(me);var ve=B(me,2),ye=R(ve,!0);M(ve),M(pe),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(re,o),K(ae,s),K(ue,l),K(fe,u),K(_e,d),K(ye,f)},[()=>Y(`admin.appearance.code_max_height_label`),()=>Y(`admin.appearance.code_max_height_hint`),()=>Y(`admin.appearance.soft_breaks_label`),()=>Y(`admin.appearance.image_rounded_label`),()=>Y(`admin.appearance.image_rounded_hint`),()=>Y(`admin.appearance.image_centered_label`),()=>Y(`admin.appearance.image_centered_hint`),()=>Y(`admin.appearance.image_border_label`),()=>Y(`admin.appearance.image_border_hint`),()=>Y(`admin.appearance.code_light_theme_label`),()=>Y(`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(ne,()=>H(m),e=>I(m,e)),Ni(ce,()=>H(h),e=>I(h,e)),Ni(he,()=>H(g),e=>I(g,e)),G(e,n)},$$slots:{default:!0}})}var De=B(k,2);{let e=P(()=>Y(`admin.section.files.title`)),t=P(()=>Y(`admin.files.description`));Wi(De,{icon:`📎`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=ba(),r=R(n),i=R(r,!0);M(r);var a=B(r,2);vn(a),J(a,`rows`,3);var o=B(a,2),s=R(o,!0);M(o),M(n),V((e,t)=>{K(i,e),K(s,t)},[()=>Y(`admin.files.blocked_label`),()=>Y(`admin.files.hint`)]),Mi(a,()=>H(_),e=>I(_,e)),G(e,n)},$$slots:{default:!0}})}var Oe=B(De,2);{let e=P(()=>Y(`admin.section.diagram.title`)),t=P(()=>Y(`admin.section.diagram.desc`));Wi(Oe,{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 ke=B(Oe,2);{let e=P(()=>Y(`admin.section.developer.title`)),t=P(()=>Y(`admin.section.developer.desc`));Wi(ke,{icon:`🛠️`,get title(){return H(e)},get description(){return H(t)},children:(e,t)=>{var n=xa(),r=R(n),i=B(R(r),2),a=R(i,!0);M(i),M(r);var o=B(r,2),s=R(o,!0);M(o),M(n),V((e,t)=>{K(a,e),K(s,t)},[()=>Y(`admin.appearance.debug_label`),()=>Y(`admin.appearance.debug_hint`)]),G(e,n)},$$slots:{default:!0}})}M(Se),M(le);var Ae=B(le,2),je=R(Ae),A=R(je),Me=B(R(A),2),j=R(Me),Ne=R(j,!0);M(j);var Pe=B(j,2),Fe=R(Pe,!0);M(Pe),M(Me),M(A);var Ie=B(A,2),Le=R(Ie);ai(Le,()=>Y(`admin.license.body`),!0),M(Le);var Re=B(Le,2),ze=R(Re),Be=B(R(ze));M(ze);var Ve=B(ze,2),He=B(R(Ve));M(Ve),M(Re),M(Ie),M(je),M(Ae),M(ce),M(oe),V((e,t,n,r,i,a,o)=>{K(me,e),K(ge,t),K(xe,n),K(Ne,r),K(Fe,i),K(Be,` ${a??``}`),K(He,` ${o??``}`)},[()=>Y(`admin.config.title`),()=>Y(`admin.config.description`),()=>Y(`admin.config.save_btn`),()=>Y(`admin.license.title`),()=>Y(`admin.license.subtitle`),()=>Y(`admin.license.linkedin_btn`),()=>Y(`admin.license.npm_btn`)]),Mr(`submit`,le,ie),G(e,oe),qe()}Nr([`change`]);var wa=W(`<div class="empty-state"><p>No sub-folders found.</p></div>`),Ta=W(`<nav class="rail"><button class="tool-button" type="button">⌖</button> <button type="button">⠿</button></nav> <canvas id="blueprintCanvas"></canvas> <!>`,1);function Ea(e,t){Ke(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,ee=0,te=null,ne={},O=null,re=0,ie=0,ae=0,oe=0,se=0,ce=0,le=0,ue=!1;function de(e){let t=0,n=0;return e.map(e=>{let r=ne[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 fe(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 pe(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t):``}function me(e){let t=a.clientWidth,r=a.clientHeight;ve((n()===null?t:t/2)/2-(e.x+e.w/2)*d,r/2-(e.y+e.h/2)*d,d)}function he(e){if(!f.length)return;let{minX:t,minY:n,maxX:r,maxY:i}=fe(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?ve(h,g,c):(l=h,u=g,d=c)}function ge(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;ve(t/2-i*r,n/2-o*r,r)}function _e(e){return e<.5?2*e*e:-1+(4-2*e)*e}function ve(e,t,n){re=l,ie=u,ae=d,oe=e,se=t,ce=n,le=performance.now(),ue=!0,be()}function ye(e){let t=Math.min(1,(e-le)/420),n=_e(t);l=re+(oe-re)*n,u=ie+(se-ie)*n,d=ae+(ce-ae)*n,t>=1&&(ue=!1)}function be(){te===null&&(te=requestAnimationFrame(xe))}function xe(e){te=null,ue&&(ye(e),be());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),Se(n,r),o.translate(l,u),o.scale(d,d);for(let e=0;e<f.length;e++)we(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 Se(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 Ce(e,t,n,r,i){o.beginPath(),o.roundRect(e,t,n,r,i)}function we(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,Ce(a,s,c,l,18),o.fillStyle=f,o.fill(),o.restore(),Ce(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),o.fillStyle=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`,a+10+20+4,s+11);let g=a+18;Te(g,s+l/2-18/2-4,18,t);let _=Math.max(10,Math.min(14,120/u.name.length));o.fillStyle=t?`#fff`:`#f1f5f9`,o.font=`700 ${_}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`middle`,o.textAlign=`left`;let v=c-36-18-8,y=k(u.name,v,_);o.fillText(y,g+18+8,s+l/2),u.hasChildren&&Ee(a+c-22,s+l/2,t)}function Te(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 Ee(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 k(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 De(){try{ne=await fetch(`/api/blueprint/positions`).then(e=>e.json())}catch{ne={}}}function Oe(){O!==null&&clearTimeout(O),O=window.setTimeout(()=>{O=null,fetch(`/api/blueprint/positions`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ne)})},600)}async function ke(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=de(a.folders),I(s,f.length>0),r&&n?(ge(r),setTimeout(()=>he(!0),420*.6)):he(n),be()}catch(e){console.error(`Blueprint load error`,e)}}function Ae(e,t){return{x:(e-l)/d,y:(t-u)/d}}function je(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 A(e,t,n){return t>=e.x+6&&t<=e.x+6+20&&n>=e.y+6&&n<=e.y+6+20}function Me(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 j(e){let t=pe(e);x!==t&&await ke(t,!0);let n=f.find(t=>t.folder.path===e);n&&(me(n),be())}function Ne(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}=Ae(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)}be();return}if(v){b=Ae(n,r),be();return}if(C){let e=n-T,t=r-E;Math.hypot(e,t)>6&&(w=!0),l=D+e,u=ee+t,be();return}let{x:i,y:o}=Ae(n,r),s=je(i,o);s!==p&&(p=s,a.style.cursor=s>=0&&H(c)?`grab`:s>=0?`pointer`:`default`,be())}function Pe(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,{x:i,y:o}=Ae(n,r),s=je(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,ee=u)}function Fe(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];ne[e.folder.path]={...ne[e.folder.path]??{},x:e.x,y:e.y}}Oe()}else{let r=f[m],{x:a,y:s}=Ae(i,o);H(c)&&e.shiftKey?(h.has(m)?h.delete(m):h.add(m),be()):H(c)?(h.clear(),h.add(m),be()):Me(r,a,s)?t.onopenAdr(r):A(r,a,s)?n()===r.folder.path?t.onclosefilerexplorer():t.onopenexplorer(r):r.folder.hasChildren&&(t.onclosefilerexplorer(),ke(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)}be();return}if(C){C=!1;let e=i-T,t=o-E;Math.hypot(e,t)<=6&&H(c)&&(h.clear(),be())}}function Ie(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,be()}function Le(){he(!0)}function Re(){I(c,!H(c)),H(c)||(h.clear(),be()),a.style.cursor=H(c)&&p>=0?`grab`:`default`}Vi(()=>(o=a.getContext(`2d`),window.addEventListener(`resize`,be),De().then(async()=>{await ke(``,!1)}),()=>{window.removeEventListener(`resize`,be)}));var ze={centerOnBox:me,loadPath:ke,navigateToFolder:j},Be=Ta(),Ve=z(Be),He=R(Ve),Ue=B(He,2);let We;M(Ve);var Ge=B(Ve,2);Li(Ge,e=>a=e,()=>a);var Je=B(Ge,2),Ye=e=>{G(e,wa())};return q(Je,e=>{H(s)||e(Ye)}),V((e,t)=>{J(He,`title`,e),We=hi(Ue,1,`tool-button`,null,We,{active:H(c)}),J(Ue,`title`,t)},[()=>Y(`blueprint.canvas.fit_view`),()=>Y(`blueprint.canvas.drag_mode`)]),U(`click`,He,Le),U(`click`,Ue,Re),U(`pointermove`,Ge,Ne),U(`pointerdown`,Ge,Pe),U(`pointerup`,Ge,Fe),Mr(`wheel`,Ge,Ie),G(e,Be),qe(ze)}Nr([`click`,`pointermove`,`pointerdown`,`pointerup`]);var Da=W(`<button class="explorer-breadcrumb-item" type="button">~</button>`),Oa=W(`<span class="explorer-breadcrumb-item current">~</span>`),ka=W(`<span class="explorer-breadcrumb-item current"> </span>`),Aa=W(`<button class="explorer-breadcrumb-item" type="button"> </button>`),ja=W(`<span class="explorer-breadcrumb-sep">/</span> <!>`,1),Ma=W(`<div class="explorer-section-label"> </div>`),Na=W(`<button class="explorer-item is-folder" type="button"><span class="explorer-item-icon">📁</span> <span class="explorer-item-name"> </span></button>`),Pa=W(`<div class="explorer-section-label"> </div> <!>`,1),Fa=W(`<button class="explorer-item is-file" type="button"><span class="explorer-item-icon">📄</span> <span class="explorer-item-name"> </span></button>`),Ia=W(`<!> <!>`,1),La=W(`<p class="file-preview-placeholder"> </p>`),Ra=W(`<p class="file-preview-name"> </p> <p class="file-preview-placeholder"> </p>`,1),za=W(`<p class="file-preview-name"> </p> <span class="file-preview-binary"> </span>`,1),Ba=W(`<p class="file-preview-name"> </p> <img/>`,1),Va=W(`<p class="file-preview-name"> </p> <video controls=""></video>`,3),Ha=W(`<span class="file-preview-truncated"> </span>`),Ua=W(`<p class="file-preview-name"> </p> <!> <pre><code> </code></pre>`,1),Wa=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 Ga(e,t){Ke(t,!0);let n=F(``),r=F(L([])),i=F(L([])),a=F(!1),o=F(!1),s=F(L({status:`idle`}));function c(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 l(e){I(n,e,!0),I(s,{status:`idle`},!0),await u(e)}async function u(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 d(e){t.onnavigate(e),await u(e)}async function f(e,t){I(s,{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(s,{status:`image`,name:t,url:n.url},!0):n.type===`video`?I(s,{status:`video`,name:t,url:n.url},!0):n.type===`binary`?I(s,{status:`binary`,name:t},!0):n.type===`text`&&n.content!==void 0&&(I(s,{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(s,{status:`error`,name:t},!0)}}function p(e){return H(n)?`${H(n)}/${e}`:e}var m={open:l},h=Wa(),g=R(h),_=R(g),v=R(_),y=e=>{var t=Da();U(`click`,t,()=>d(``)),G(e,t)},b=e=>{G(e,Oa())};q(v,e=>{H(n)?e(y):e(b,-1)}),$r(B(v,2),17,()=>c(H(n)),Yr,(e,t)=>{var n=ja(),r=B(z(n),2),i=e=>{var n=ka(),r=R(n,!0);M(n),V(()=>K(r,H(t).name)),G(e,n)},a=e=>{var n=Aa(),r=R(n,!0);M(n),V(()=>K(r,H(t).name)),U(`click`,n,()=>d(H(t).path)),G(e,n)};q(r,e=>{H(t).isLast?e(i):e(a,-1)}),G(e,n)}),M(_);var x=B(_,2);M(g);var S=B(g,2),C=R(S),w=R(C),T=e=>{var t=Ma(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`blueprint.explorer.loading`)]),G(e,t)},E=e=>{var t=Ma(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`blueprint.explorer.error`)]),G(e,t)},D=e=>{var t=Ma(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`blueprint.explorer.empty`)]),G(e,t)},ee=e=>{var t=Ia(),n=z(t),a=e=>{var t=Pa(),n=z(t),i=R(n,!0);M(n),$r(B(n,2),17,()=>H(r),Yr,(e,t)=>{var n=Na(),r=B(R(n),2),i=R(r,!0);M(r),M(n),V(()=>K(i,H(t))),U(`click`,n,()=>d(p(H(t)))),G(e,n)}),V(e=>K(i,e),[()=>Y(`blueprint.explorer.folders`)]),G(e,t)};q(n,e=>{H(r).length&&e(a)});var o=B(n,2),s=e=>{var t=Pa(),n=z(t),r=R(n,!0);M(n),$r(B(n,2),17,()=>H(i),Yr,(e,t)=>{var n=Fa(),r=B(R(n),2),i=R(r,!0);M(r),M(n),V(()=>K(i,H(t))),U(`click`,n,()=>f(p(H(t)),H(t))),G(e,n)}),V(e=>K(r,e),[()=>Y(`blueprint.explorer.files`)]),G(e,t)};q(o,e=>{H(i).length&&e(s)}),G(e,t)};q(w,e=>{H(a)?e(T):H(o)?e(E,1):H(r).length===0&&H(i).length===0?e(D,2):e(ee,-1)}),M(C),M(S);var te=B(S,4),ne=R(te),O=R(ne),re=e=>{var t=La(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`blueprint.preview.placeholder`)]),G(e,t)},ie=e=>{var t=Ra(),n=z(t),r=R(n,!0);M(n);var i=B(n,2),a=R(i,!0);M(i),V(e=>{K(r,H(s).name),K(a,e)},[()=>Y(`blueprint.preview.loading`)]),G(e,t)},ae=e=>{var t=Ra(),n=z(t),r=R(n,!0);M(n);var i=B(n,2),a=R(i,!0);M(i),V(e=>{K(r,H(s).name),K(a,e)},[()=>Y(`blueprint.preview.error`)]),G(e,t)},oe=e=>{var t=za(),n=z(t),r=R(n,!0);M(n);var i=B(n,2),a=R(i,!0);M(i),V(e=>{K(r,H(s).name),K(a,e)},[()=>Y(`blueprint.preview.binary`)]),G(e,t)},se=e=>{var t=Ba(),n=z(t),r=R(n,!0);M(n);var i=B(n,2);V(()=>{K(r,H(s).name),J(i,`src`,H(s).url),J(i,`alt`,H(s).name)}),G(e,t)},ce=e=>{var t=Va(),n=z(t),r=R(n,!0);M(n);var i=B(n,2);V(()=>{K(r,H(s).name),J(i,`src`,H(s).url)}),G(e,t)},le=e=>{var t=Ua(),n=z(t),r=R(n,!0);M(n);var i=B(n,2),a=e=>{var t=Ha(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`blueprint.preview.truncated`)]),G(e,t)};q(i,e=>{H(s).truncated&&e(a)});var o=B(i,2),c=R(o),l=R(c,!0);M(c),M(o),V(()=>{K(r,H(s).name),hi(c,1,li(H(s).language&&H(s).language!==`plaintext`?`language-${H(s).language}`:``)),K(l,H(s).content)}),G(e,t)};return q(O,e=>{H(s).status===`idle`?e(re):H(s).status===`loading`?e(ie,1):H(s).status===`error`?e(ae,2):H(s).status===`binary`?e(oe,3):H(s).status===`image`?e(se,4):H(s).status===`video`?e(ce,5):H(s).status===`text`&&e(le,6)}),M(ne),M(te),M(h),U(`click`,x,function(...e){t.onclose?.apply(this,e)}),G(e,h),qe(m)}Nr([`click`]);function Ka(e,t){if(t.innerHTML=e,t.querySelectorAll(`h1, h2, h3, h4, h5, h6`).forEach(e=>{e.id||=e.textContent.toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}),t.querySelectorAll(`pre code.language-mermaid`).forEach(e=>{let t=e.textContent??``,n=document.createElement(`div`);n.className=`mermaid`,n.textContent=t,e.closest(`pre`).replaceWith(n)}),window.mermaid){let e=t.querySelectorAll(`.mermaid`);e.length&&window.mermaid.run({nodes:e})}window.hljs&&t.querySelectorAll(`pre code`).forEach(e=>{window.hljs.highlightElement(e)}),t.querySelectorAll(`table`).forEach(e=>{if(e.parentElement?.classList.contains(`overflow-x-auto`))return;let t=document.createElement(`div`);t.className=`overflow-x-auto`,e.parentNode.insertBefore(t,e),t.appendChild(e)})}var qa=W(`<button class="bpadr-icon-btn" type="button" title="Edit">✏️</button>`),Ja=W(`<div class="bpadr-read"><div id="bpadrRendered" class="prose prose-gray max-w-none prose-headings:scroll-mt-4 prose-a:text-blue-600 prose-code:before:content-none prose-code:after:content-none prose-pre:bg-[#0d1117] prose-pre:border prose-pre:border-gray-700"></div></div>`),Ya=W(`<form class="bpadr-form"><input type="hidden" name="category"/> <input type="hidden" name="folder"/> <div class="bpadr-field"><label for="adr-title"> </label> <input id="adr-title" type="text" class="bpadr-input"/></div> <div class="bpadr-field bpadr-field-grow"><label for="adr-content"> </label> <textarea id="adr-content" class="bpadr-textarea"></textarea></div> <footer class="bpadr-footer"><button type="button" class="bpadr-btn-ghost"> </button> <button type="submit" class="bpadr-btn-primary"> </button></footer></form>`),Xa=W(`<div class="bpadr-folder-confirm"><p></p> <p class="bpadr-muted"> </p> <footer class="bpadr-footer"><button type="button" class="bpadr-btn-ghost"> </button> <button type="button" class="bpadr-btn-primary"> </button></footer></div>`),Za=W(`<div class="bpadr-overlay"><div class="bpadr-modal"><header class="bpadr-header"><h2 class="bpadr-title"> </h2> <div class="bpadr-header-actions"><!> <button class="bpadr-icon-btn" type="button" title="Close">×</button></div></header> <!></div></div>`);function Qa(e,t){Ke(t,!0);let n=`000_BLUEPRINT`;function r(e){return e.normalize(`NFKD`).replace(/[̀-ͯ]/g,``).toUpperCase().replace(/[^A-Z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`FOLDER`}let i=F(`closed`),a=F(``),o=F(``),s=F(``),c=F(``),l=F(``),u=F(``),d=null,f=null,p=F(null);On(()=>{H(i)===`read`&&H(p)&&H(l)&&Ka(H(l),H(p))});async function m(e){f=e,d=null;let t=r(e.folder.name);if(I(s,t,!0),I(o,e.folder.name,!0),I(c,``),I(l,``),I(a,Y(`blueprint.adr.new_title`,{folder:e.folder.name}),!0),I(i,`form`),!(await fetch(`/api/blueprint/blueprint-folder`).then(e=>e.json())).exists){I(u,n),I(i,`folder-confirm`);return}await h(e,t)}async function h(e,t){let n=await fetch(`/api/blueprint/blueprint-adr?category=${encodeURIComponent(t)}`).then(e=>e.json());if(n.found&&n.doc){d=n.doc.id;let e=await fetch(`/api/documents/${encodeURIComponent(n.doc.id)}`).then(e=>e.json());I(o,e.title,!0),I(c,e.content,!0),I(a,e.title,!0),I(l,e.html,!0),I(i,`read`)}else I(o,e.folder.name,!0),I(c,``),I(i,`form`)}function g(){I(i,`closed`),d=null,f=null}async function _(){await fetch(`/api/blueprint/blueprint-folder`,{method:`POST`}),f&&await h(f,r(f.folder.name))}async function v(e){e.preventDefault();let t={title:H(o).trim()||f?.folder.name||Y(`common.untitled`),category:H(s),folder:n,content:H(c)};if(d){await fetch(`/api/documents/${encodeURIComponent(d)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});let e=await fetch(`/api/documents/${encodeURIComponent(d)}`).then(e=>e.json());I(a,e.title,!0),I(c,e.content,!0),I(l,e.html,!0),I(i,`read`)}else{let e=await fetch(`/api/documents/`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json());d=e.id;let n=await fetch(`/api/documents/${encodeURIComponent(e.id)}`).then(e=>e.json());I(a,n.title,!0),I(c,n.content,!0),I(l,n.html,!0),I(i,`read`)}}var y={open:m},b=Ur(),x=z(b),S=e=>{var t=Za(),r=R(t),l=R(r),f=R(l),m=R(f,!0);M(f);var h=B(f,2),y=R(h),b=e=>{var t=qa();U(`click`,t,()=>I(i,`form`)),G(e,t)};q(y,e=>{H(i)===`read`&&e(b)});var x=B(y,2);M(h),M(l);var S=B(l,2),C=e=>{var t=Ja();Li(R(t),e=>I(p,e),()=>H(p)),M(t),G(e,t)},w=e=>{var t=Ya(),r=R(t);Ei(r);var a=B(r,2);Ei(a),Di(a,n);var l=B(a,2),u=R(l),f=R(u,!0);M(u);var p=B(u,2);Ei(p),M(l);var m=B(l,2),h=R(m),_=R(h,!0);M(h);var y=B(h,2);vn(y),M(m);var b=B(m,2),x=R(b),S=R(x,!0);M(x);var C=B(x,2),w=R(C,!0);M(C),M(b),M(t),V((e,t,n,i)=>{Di(r,H(s)),K(f,e),K(_,t),K(S,n),K(w,i)},[()=>Y(`blueprint.adr.title_label`),()=>Y(`blueprint.adr.content_label`),()=>Y(`common.cancel`),()=>Y(`common.save`)]),Mr(`submit`,t,v),Mi(p,()=>H(o),e=>I(o,e)),Mi(y,()=>H(c),e=>I(c,e)),U(`click`,x,()=>{d?I(i,`read`):g()}),G(e,t)},T=e=>{var t=Xa(),n=R(t);ai(n,()=>Y(`blueprint.adr.folder_missing`,{name:H(u)}),!0),M(n);var r=B(n,2),i=R(r,!0);M(r);var a=B(r,2),o=R(a),s=R(o,!0);M(o);var c=B(o,2),l=R(c,!0);M(c),M(a),M(t),V((e,t,n)=>{K(i,e),K(s,t),K(l,n)},[()=>Y(`blueprint.adr.folder_create_prompt`),()=>Y(`common.cancel`),()=>Y(`blueprint.adr.create_folder_btn`)]),U(`click`,o,g),U(`click`,c,_),G(e,t)};q(S,e=>{H(i)===`read`?e(C):H(i)===`form`?e(w,1):H(i)===`folder-confirm`&&e(T,2)}),M(r),M(t),V(()=>K(m,H(a))),U(`click`,t,e=>{e.target===e.currentTarget&&g()}),U(`click`,x,g),G(e,t)};return q(x,e=>{H(i)!==`closed`&&e(S)}),G(e,b),qe(y)}Nr([`click`]);var $a=W(`<span class="breadcrumb-sep">›</span>`),eo=W(`<span class="breadcrumb-item current"> </span>`),to=W(`<button class="breadcrumb-item" type="button"> </button>`),no=W(`<!> <!>`,1),ro=W(`<nav class="breadcrumb"></nav>`),io=W(`<div class="app-shell"><!> <section class="workspace-shell"><!> <!></section></div> <!>`,1);function ao(e,t){Ke(t,!0),Vi(async()=>{try{await fa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}});let n=F(L([])),r=F(null),i=F(null),a=F(null),o=F(null);function s(e){l(),H(i).loadPath(e,!0)}async function c(e){I(r,e.folder.path,!0),await br(),await H(a).open(e.folder.path)}function l(){I(r,null)}async function u(e){await H(i).navigateToFolder(e)}var d=io(),f=z(d),p=R(f);{let e=P(()=>Y(`blueprint.subtitle`));ua(p,{title:`Blueprint`,get subtitle(){return H(e)},children:(e,t)=>{var r=ro();$r(r,21,()=>H(n),Yr,(e,t,r)=>{var i=no(),a=z(i),o=e=>{G(e,$a())};q(a,e=>{r>0&&e(o)});var c=B(a,2),l=e=>{var n=eo(),r=R(n,!0);M(n),V(()=>K(r,H(t).name)),G(e,n)},u=e=>{var n=to(),r=R(n,!0);M(n),V(()=>K(r,H(t).name)),U(`click`,n,()=>s(H(t).path)),G(e,n)};q(c,e=>{r===H(n).length-1?e(l):e(u,-1)}),G(e,i)}),M(r),G(e,r)},$$slots:{default:!0}})}var m=B(p,2),h=R(m);Li(Ea(h,{get activeExplorerPath(){return H(r)},onbreadcrumbchange:e=>I(n,e,!0),onopenexplorer:c,onclosefilerexplorer:l,onopenAdr:e=>H(o).open(e)}),e=>I(i,e,!0),()=>H(i));var g=B(h,2),_=e=>{Li(Ga(e,{onclose:l,onnavigate:u}),e=>I(a,e,!0),()=>H(a))};q(g,e=>{H(r)!==null&&e(_)}),M(m),M(f),Li(Qa(B(f,2),{}),e=>I(o,e,!0),()=>H(o)),G(e,d),qe()}Nr([`click`]);var oo=`/api/workspace`;async function so(){try{let e=await fetch(oo,{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 co(e){try{let t=await fetch(oo,{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 lo(e){try{return await(await fetch(`${oo}/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 uo(e){try{return await(await fetch(`${oo}/run-agent`,{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:`Agent run failed`}}}async function fo(e){try{let t=await fetch(`${oo}/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 po=164,mo=64,ho=132,go=78,_o=6,vo=24,yo=96,bo=540,xo=780,So=1/2,Co=9999,wo=44,To=255,Eo=178,Do=Math.PI*.7,Oo=Math.PI*1.1,ko=Math.PI*1.45,Ao=Math.PI*1.75,jo=14,Mo=260,No=56,Po=32,Fo=[`pointerdown`,`mousedown`,`click`,`dblclick`,`touchstart`,`wheel`],Io=.35,Lo=2.2,Ro=.0018,zo=4,Bo=46,Vo=4,Ho=44,Uo=360,Wo=300,Go=44,Ko=48,qo=7,Jo=875,Yo=450,Xo=2600,Zo,X,Qo,$o,es,ts,ns,rs,is,as,os,ss,cs,ls,us,ds,fs,ps,ms,hs,gs,_s,vs,ys,bs,xs,Ss,Cs,ws,Ts,Es,Ds=null,Os=null,ks=null,As=null,Z,Q,js,Ms=!1;function Ns(){return Zo=document.getElementById(`workspaceCanvas`),X=Zo.getContext(`2d`),Qo=document.getElementById(`apiStatus`),$o=document.getElementById(`addButton`),es=document.getElementById(`fitButton`),ts=document.getElementById(`testNodeButton`),ns=document.getElementById(`loadModelsButton`),rs=document.getElementById(`closePanelButton`),is=document.getElementById(`deleteNodeButton`),as=document.getElementById(`renameConfirmOverlay`),os=document.getElementById(`renameConfirmMessage`),ss=document.getElementById(`cancelRenameButton`),cs=document.getElementById(`confirmRenameButton`),ls=document.getElementById(`deleteConfirmOverlay`),us=document.getElementById(`deleteConfirmMessage`),ds=document.getElementById(`cancelDeleteButton`),fs=document.getElementById(`confirmDeleteButton`),ps=document.getElementById(`agentRunOverlay`),ms=document.getElementById(`agentRunTitle`),hs=document.getElementById(`agentRunHint`),gs=document.getElementById(`agentRunInputField`),_s=document.getElementById(`agentRunInput`),vs=document.getElementById(`agentRunResult`),ys=document.getElementById(`cancelAgentRunButton`),bs=document.getElementById(`executeAgentRunButton`),xs=document.getElementById(`fallbackPanelHost`),Ss=document.getElementById(`configSurface`),Cs=Ss,ws=document.getElementById(`workspaceToast`),Ts=document.getElementById(`workspaceToastIcon`),Es=document.getElementById(`workspaceToastMessage`),Ds=null,Os=null,ks=null,As=null,Z={name:document.getElementById(`nodeName`),kind:document.getElementById(`nodeKind`),endpoint:document.getElementById(`nodeEndpoint`),token:document.getElementById(`nodeToken`),model:document.getElementById(`nodeModel`),workspaceField:document.getElementById(`agentWorkspaceField`),workspaceFolder:document.getElementById(`nodeWorkspaceFolder`),timeout:document.getElementById(`nodeTimeout`),description:document.getElementById(`nodeDescription`),typeBadge:document.getElementById(`nodeTypeBadge`),llmFields:document.getElementById(`llmFields`),mcpInventory:document.getElementById(`mcpInventory`),agentSection:document.getElementById(`agentSection`),systemPrompt:document.getElementById(`nodeSystemPrompt`),requiresUserInput:document.getElementById(`nodeRequiresUserInput`),userInputDescriptionField:document.getElementById(`agentUserInputDescriptionField`),userInputDescription:document.getElementById(`nodeUserInputDescription`),expectedOutputMarker:document.getElementById(`nodeExpectedOutputMarker`)},Q={entities:Xs([Ys(`root`,`Living AI Documentation`,`system`,null),Ys(`mcp`,`MCP`,`mcp`,`root`)]),selectedId:null,cameraX:0,cameraY:0,zoom:1,isPanning:!1,panStartX:0,panStartY:0,panStartCameraX:0,panStartCameraY:0,didPan:!1,viewAnimationId:null,dpr:window.devicePixelRatio||1,apiMode:`fallback`,lastSaveAt:null,pendingDeleteId:null,panelShiftX:0,saveTimerId:null,isHydrated:!1},Ms=!!Zo.requestPaint&&typeof X.drawElementImage==`function`,Ms?(Q.apiMode=`html-in-canvas`,Qo.textContent=`HTML-in-Canvas active`,Qo.classList.add(`is-live`),Zo.onpaint=Lc):(xs.appendChild(Ss),Qo.textContent=`DOM fallback`,Qo.classList.add(`is-fallback`)),js=new ResizeObserver(([e])=>{let t=e.devicePixelContentBoxSize&&e.devicePixelContentBoxSize[0],n=e.contentRect.width,r=e.contentRect.height;Q.dpr=t?t.inlineSize/n:window.devicePixelRatio||1,Zo.width=t?t.inlineSize:Math.floor(n*Q.dpr),Zo.height=t?t.blockSize:Math.floor(r*Q.dpr),ic(),Kc(!1,!Q.cameraX&&!Q.cameraY),Ic()}),js.observe(Zo,{box:`device-pixel-content-box`}),Ps(),Fs(),$o.addEventListener(`click`,()=>{tc()}),es.addEventListener(`click`,()=>{ic(),Kc(!0,!0),Bs(),Ic()}),Zo.addEventListener(`pointerdown`,e=>{if(e.target!==Zo)return;let t=hl(e),n=nl(t),r=[...Q.entities].reverse().find(e=>cl(e,n));if(r){r.id!==`root`&&gc(r.id);return}Q.isPanning=!0,Q.didPan=!1,Q.panStartX=t.x,Q.panStartY=t.y,Q.panStartCameraX=Q.cameraX,Q.panStartCameraY=Q.cameraY,Zo.classList.add(`is-panning`),Zo.setPointerCapture?.(e.pointerId)}),Zo.addEventListener(`pointermove`,e=>{if(!Q.isPanning)return;let t=hl(e),n=t.x-Q.panStartX,r=t.y-Q.panStartY;Math.hypot(n,r)>zo&&(Q.didPan=!0),Q.cameraX=Q.panStartCameraX+n,Q.cameraY=Q.panStartCameraY+r,Ic()}),Zo.addEventListener(`pointerup`,e=>{Q.isPanning&&(Q.isPanning=!1,Zo.classList.remove(`is-panning`),Zo.releasePointerCapture?.(e.pointerId),!Q.didPan&&Q.selectedId?gc(null):Q.didPan&&Bs())}),Zo.addEventListener(`pointercancel`,e=>{Q.isPanning=!1,Zo.classList.remove(`is-panning`),Zo.releasePointerCapture?.(e.pointerId)}),Zo.addEventListener(`wheel`,e=>{e.target===Zo&&(e.preventDefault(),tl(hl(e),Math.exp(-e.deltaY*Ro)),Bs())},{passive:!1}),Cs.addEventListener(`submit`,e=>{e.preventDefault(),xc(),Q.lastSaveAt=new Date,ic(),Vs(!0),Ic()}),Cs.addEventListener(`input`,e=>{xc(),ic(),e.target===Z.name&&jc()?.kind===`agent`||Bs(),Ic()}),rs.addEventListener(`click`,()=>{gc(null)}),is.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation();let t=Q.selectedId,n=t?Mc(t):null;!n||Nc(t)||_c(n)}),ds.addEventListener(`click`,vc),ls.addEventListener(`click`,e=>{e.target===ls&&vc()}),fs.addEventListener(`click`,()=>{Q.pendingDeleteId&&yc(Q.pendingDeleteId),vc()}),ts.addEventListener(`click`,()=>{if(jc()?.kind===`agent`){wc();return}kc()}),ns.addEventListener(`click`,()=>{Oc()}),Z.name.addEventListener(`blur`,()=>{let e=jc();if(!e||e.kind!==`agent`)return;let t=Z.name.value.trim();if(!t||!Os||!ks||t===Os)return;let n=Qs(t);n!==ks&&(os.textContent=`Renommer le dossier "${ks}" en "${n}" ?`,as.hidden=!1,ss.focus())}),ss.addEventListener(`click`,()=>{as.hidden=!0;let e=jc();e&&Os&&(e.label=Os,Z.name.value=Os,ic(),Ic())}),cs.addEventListener(`click`,()=>{as.hidden=!0;let e=jc();if(!e||!ks)return;e.config.workspaceFolder=ks,Z.workspaceFolder.value=ks;let t=Z.name.value.trim();t&&(Os=t),ks=Qs(t),Bs()}),Z.model.addEventListener(`change`,()=>{ts.disabled=!Z.model.value;let e=jc();e&&(e.config.model=Z.model.value)}),ys.addEventListener(`click`,()=>{Tc()}),bs.addEventListener(`click`,()=>{Ec()}),ps.addEventListener(`click`,e=>{e.target===ps&&Tc()}),Ls(),()=>{js.disconnect(),Q?.saveTimerId&&clearTimeout(Q.saveTimerId),Ds&&clearTimeout(Ds)}}function Ps(){for(let e of Fo)Ss.addEventListener(e,Is),xs.addEventListener(e,Is)}function Fs(){for(let e of Fo)ls.addEventListener(e,Is),as.addEventListener(e,Is),ps.addEventListener(e,Is)}function Is(e){e.stopPropagation()}async function Ls(){let e=await so();e?.entities?.length&&(Q.entities=Rs(e.entities),Q.cameraX=Js(e.camera?.x,Q.cameraX),Q.cameraY=Js(e.camera?.y,Q.cameraY),Q.zoom=rl(Js(e.camera?.zoom,Q.zoom),Io,Lo),Q.lastSaveAt=e.updatedAt?new Date(e.updatedAt):null),Q.isHydrated=!0,ic(),e?.entities?.length||Kc(!1,!0),bc(),Ic()}function Rs(e){let t=e.map(zs).filter(e=>!!e),n=t.some(e=>e.id===`root`),r=t.some(e=>e.id===`mcp`),i=[...n?[]:[Ys(`root`,`Living AI Documentation`,`system`,null)],...t,...r?[]:[Ys(`mcp`,`MCP`,`mcp`,`root`)]],a=new Set(i.map(e=>e.id));return i.map(e=>{let t=e.id===`root`?`system`:e.id===`mcp`?`mcp`:e.kind,n=e.id===`root`?null:e.id===`mcp`?`root`:e.parentId&&a.has(e.parentId)?e.parentId:null;return{...e,kind:t,parentId:n,config:{...Ys(e.id,e.label,t,n).config,...e.config}}})}function zs(e){if(!Gs(e))return null;let t=Ks(e.id),n=Ks(e.label),r=qs(e.kind);if(!t||!n||!r)return null;let i=e.parentId===null?null:Ks(e.parentId),a=Gs(e.config)?e.config:{};return{id:t,label:n,kind:r,parentId:i,x:Js(e.x,0),y:Js(e.y,0),angle:Js(e.angle,0),config:{endpoint:Ks(a.endpoint)||Zs(t,r),token:Ks(a.token),model:Ks(a.model),timeout:Js(a.timeout,180),description:Ks(a.description)||ec(r),workspaceFolder:Ks(a.workspaceFolder)||(r===`agent`?Qs(n):``),systemPrompt:Ks(a.systemPrompt),requiresUserInput:a.requiresUserInput===!0,userInputDescription:Ks(a.userInputDescription),expectedOutputMarker:Ks(a.expectedOutputMarker)}}}function Bs(){Q.isHydrated&&(Q.saveTimerId&&clearTimeout(Q.saveTimerId),Q.saveTimerId=window.setTimeout(()=>{Q.saveTimerId=null,Vs(!1)},Yo))}async function Vs(e=!1){if(!Q.isHydrated)return;Q.saveTimerId&&(clearTimeout(Q.saveTimerId),Q.saveTimerId=null);let t=await co(Ws());t?(Q.entities=Rs(t.entities),Q.lastSaveAt=new Date(t.updatedAt),jc()&&bc(),e&&Us(`Workspace saved`)):e&&Us(`Save failed`)}function Hs(e){Ds&&=(clearTimeout(Ds),null),ws.dataset.state=`loading`,Ts.textContent=`↻`,Es.textContent=e,ws.hidden=!1}function Us(e,t=`success`){Ds&&clearTimeout(Ds),ws.dataset.state=t,Ts.textContent=t===`error`?`✕`:`✓`,Es.textContent=e,ws.hidden=!1,Ds=window.setTimeout(()=>{ws.hidden=!0,Ds=null},Xo)}function Ws(){return{version:1,updatedAt:new Date().toISOString(),entities:Q.entities.map(e=>({id:e.id,label:e.label,kind:e.kind,parentId:e.parentId,x:e.x,y:e.y,angle:e.angle,config:{...e.config}})),camera:{x:Q.cameraX,y:Q.cameraY,zoom:Q.zoom}}}function Gs(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ks(e){return typeof e==`string`?e:``}function qs(e){return e===`system`||e===`llm`||e===`agent`||e===`mcp`?e:null}function Js(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function Ys(e,t,n,r){return{id:e,label:t,kind:n,parentId:r,x:0,y:0,angle:0,config:{endpoint:Zs(e,n),token:``,model:``,timeout:180,description:ec(n),workspaceFolder:n===`agent`?Qs(t):``,systemPrompt:``,requiresUserInput:!1,userInputDescription:``,expectedOutputMarker:``}}}function Xs(e){return e.map(e=>({...e,config:{...e.config}}))}function Zs(e,t){return t===`llm`?`http://localhost:11434`:t===`mcp`?`http://localhost:4321/mcp`:``}function Qs(e){return`AI/WORKSPACE/${$s(e)}`}function $s(e){return e.normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`llm_provider`}function ec(e){let t={system:`Owns the documentation workspace, MCP access, providers, and agent topology.`,llm:`Routes model calls and hosts the agents assigned to this provider.`,agent:`Runs focused automation against documentation, source, or quality signals.`,mcp:`Exposes the local Living Documentation MCP consultation panel to agents.`};return t[e]||t.agent}function tc(){let e=jc(),t=e?.kind===`llm`?e:Mc(e?.parentId);if(e?.kind===`llm`||t?.kind===`llm`){rc(t.id);return}nc()}function nc(){let e=!!Q.selectedId,t=Pc(`root`).filter(e=>e.kind===`llm`).length+1,n=Ys(`provider-${Date.now().toString(36)}`,`LLM Provider ${t}`,`llm`,`root`);Q.entities=[...Q.entities,n],Q.selectedId=n.id,ic(),qc(e,!0,!0),bc(),Bs(),Ic()}function rc(e){let t=!!Q.selectedId,n=Pc(e).filter(e=>e.kind===`agent`).length+1,r=Ys(`agent-${Date.now().toString(36)}`,`Agent ${n}`,`agent`,e);Q.entities=[...Q.entities,r],Q.selectedId=r.id,ic(),qc(t,!0,!0),bc(),Bs(),Ic()}function ic(){let e=Mc(`root`);e.x=0,e.y=0,e.angle=0,ac(e)}function ac(e){let t=Pc(e.id),n=dc(t,ho,To,{spread:Math.PI*2,includeSubtree:!1}),r=new Map(t.map(e=>[e.id,lc(e,n)]));for(let n=0;n<=qo;n+=1)if(oc(e,t,r),sc(),!cc(t,r))return;oc(e,t,r),sc()}function oc(e,t,n){let r=Math.max(1,t.length);t.forEach((t,i)=>{let a=-Math.PI/2+i/r*Math.PI*2,o=n.get(t.id)||To;t.angle=a,t.x=e.x+Math.cos(a)*o,t.y=e.y+Math.sin(a)*o})}function sc(){for(let e of Q.entities.filter(e=>e.kind===`llm`))uc(e)}function cc(e,t){let n=!1;for(let r=0;r<e.length;r+=1)for(let i=r+1;i<e.length;i+=1){let a=e[r],o=e[i];ml(dl(a),dl(o),Go)&&(t.set(a.id,Math.min(Jo,t.get(a.id)+Ko)),t.set(o.id,Math.min(Jo,t.get(o.id)+Ko)),n=!0)}return n}function lc(e,t){if(e.kind!==`llm`)return t;let n=Pc(e.id).length;if(n<=Vo)return t;let r=(n-Vo)*Ho,i=Math.max(0,mc(e)-Wo)*.65;return t+Math.min(Uo,Math.max(r,i))}function uc(e){let t=Pc(e.id);if(!t.length)return;let n=Math.atan2(e.y,e.x),r=fc(t.length),i=dc(t,go,Eo,{spread:r,includeSubtree:!1});t.forEach((a,o)=>{let s=pc(n,r,o,t.length);a.angle=s,a.x=e.x+Math.cos(s)*i,a.y=e.y+Math.sin(s)*i})}function dc(e,t,n,r={}){if(!e.length)return n;let i=!!r.includeSubtree,a=r.spread||Math.PI*2,o=Math.max(...e.map(e=>i?mc(e):hc(e))),s=t+o+Bo;if(e.length===1)return Math.max(n,s);let c=o*2+Bo,l=a>=Math.PI*2-.001?Math.PI*2/e.length:a/(e.length-1),u=c/(2*Math.sin(l/2));return Math.max(n,s,u)}function fc(e){return e<=1?0:e<=2?Do:e<=4?Oo:e<=7?ko:Ao}function pc(e,t,n,r){return r<=1||t===0?e:e-t/2+n/(r-1)*t}function mc(e){if(e.kind!==`llm`)return hc(e);let t=Pc(e.id);return t.length?dc(t,go,Eo,{spread:fc(t.length),includeSubtree:!1})+Math.max(...t.map(e=>hc(e))):go}function hc(e){if(e.kind===`system`)return ho;if(e.kind===`llm`)return go;let{width:t,height:n}=ul(e);return Math.hypot(t/2,n/2)}function gc(e){let t=!!Q.selectedId;Q.selectedId=e;let n=e?Mc(e):null;Os=n?.kind===`agent`?n.label:null,ks=n?.kind===`agent`?n.config.workspaceFolder||Qs(n.label):null,ic(),qc(t,!!e,!0),bc(),Ic()}function _c(e){let t=Fc(e.id),n=Pc(e.id).length,r=t.length?` This node has ${n} direct child${n===1?``:`ren`} and ${t.length} total descendant${t.length===1?``:`s`}; they will also be deleted.`:` This node has no children.`;Q.pendingDeleteId=e.id,us.textContent=`You are about to delete "${e.label}".${r} This action cannot be undone.`,ls.hidden=!1,fs.focus()}function vc(){Q.pendingDeleteId=null,ls.hidden=!0}function yc(e){let t=Mc(e);if(!t||Nc(e))return;let n=t.parentId||`root`,r=!!Q.selectedId,i=new Set([e,...Fc(e)]);Q.entities=Q.entities.filter(e=>!i.has(e.id)),Q.selectedId=Mc(n)?n:null,ic(),qc(r,!!Q.selectedId,!0),bc(),Bs(),Ic()}function bc(){let e=jc(),t=!!e;if(Ss.hidden=!t,xs.hidden=!t||Ms,!e){$o.title=`Add LLM provider`,ts.textContent=`Test`,ts.hidden=!0,ts.disabled=!0;return}Z.name.value=e.label,Z.kind.value=e.kind,Z.endpoint.value=e.config.endpoint,Z.token.value=e.config.token,Cc(e.config.model),Z.workspaceFolder.value=e.config.workspaceFolder,Z.workspaceField.hidden=e.kind!==`agent`,Z.timeout.value=String(e.config.timeout),Z.description.value=e.config.description,Z.typeBadge.textContent=Ac(e.kind),Z.kind.disabled=!0,Z.llmFields.hidden=e.kind===`mcp`||e.kind===`agent`,Z.mcpInventory.hidden=e.kind!==`mcp`,Z.agentSection.hidden=e.kind!==`agent`,Z.systemPrompt.value=e.config.systemPrompt,Z.requiresUserInput.checked=e.config.requiresUserInput,Sc(),Z.userInputDescription.value=e.config.userInputDescription,Z.expectedOutputMarker.value=e.config.expectedOutputMarker,is.hidden=Nc(e.id),ts.textContent=`Test`,ts.hidden=e.kind!==`llm`&&e.kind!==`agent`,ts.disabled=e.kind===`llm`?!e.config.model:e.kind!==`agent`,$o.title=e.kind===`llm`||Mc(e.parentId)?.kind===`llm`?`Add agent`:`Add LLM provider`}function xc(){let e=jc();if(e&&(e.label=Z.name.value.trim()||`Untitled node`,e.kind=Z.kind.value,e.config.endpoint=Z.endpoint.value,e.config.token=Z.token.value,e.config.model=Z.model.value,e.config.timeout=Number(Z.timeout.value||30),e.config.description=Z.description.value,e.config.systemPrompt=Z.systemPrompt.value,e.config.requiresUserInput=Z.requiresUserInput.checked,e.config.userInputDescription=Z.userInputDescription.value,e.config.expectedOutputMarker=Z.expectedOutputMarker.value,Sc(),Z.typeBadge.textContent=Ac(e.kind),e.kind===`llm`))for(let t of Q.entities)t.parentId===e.id&&t.kind===`agent`&&(t.config.model=e.config.model,t.config.timeout=e.config.timeout)}function Sc(){let e=jc()?.kind===`agent`&&Z.requiresUserInput.checked;Z.userInputDescriptionField.hidden=!e,Z.userInputDescription.required=e}function Cc(e){let t=Array.from(Z.model.options).map(e=>e.value);if(e&&!t.includes(e)){Z.model.innerHTML=``;let t=document.createElement(`option`);t.value=e,t.textContent=e,Z.model.appendChild(t)}Z.model.value=e||(t[0]??``)}function wc(){let e=jc();if(!e||e.kind!==`agent`)return;xc();let t=Mc(e.parentId??``);if(!t||t.kind!==`llm`){Us(`No parent LLM found for this agent.`,`error`);return}if(!t.config.model){Us(`Parent LLM has no model selected.`,`error`);return}if(!e.config.systemPrompt.trim()){Us(`Write a system prompt first.`,`error`);return}if(e.config.requiresUserInput&&!e.config.userInputDescription.trim()){Us(`Describe the required user input first.`,`error`);return}As=e.id,ms.textContent=`Test ${e.label}`,hs.textContent=e.config.requiresUserInput?e.config.userInputDescription:`Run this agent with its configured system prompt.`,gs.hidden=!e.config.requiresUserInput,_s.required=e.config.requiresUserInput,_s.value=``,vs.hidden=!0,vs.textContent=``,bs.disabled=!1,bs.textContent=`Run`,ps.hidden=!1,e.config.requiresUserInput?window.setTimeout(()=>_s.focus(),0):window.setTimeout(()=>bs.focus(),0)}function Tc(){ps.hidden=!0,As=null}async function Ec(){if(_s.required&&!_s.value.trim()){_s.reportValidity();return}let e=As?Mc(As):null;if(!e||e.kind!==`agent`){Dc(`error`,`The selected agent is no longer available.`);return}let t=Mc(e.parentId??``);if(!t||t.kind!==`llm`){Dc(`error`,`No parent LLM found for this agent.`);return}bs.disabled=!0,bs.textContent=`Running…`,Dc(`loading`,`Running agent…`);let n=Q.entities.find(e=>e.kind===`mcp`),r=await uo({endpoint:t.config.endpoint,token:t.config.token,model:t.config.model,systemPrompt:e.config.systemPrompt,userInput:_s.value.trim()||void 0,timeout:t.config.timeout,mcpEndpoint:n?.config.endpoint||void 0,expectedOutputMarker:e.config.expectedOutputMarker||void 0});bs.disabled=!1,bs.textContent=`Run`,r.ok&&r.content?(Dc(`success`,r.content),Us(`Agent responded.`,`success`)):(Dc(`error`,r.error??`Agent failed.`),Us(r.error??`Agent failed.`,`error`))}function Dc(e,t){vs.hidden=!1,vs.dataset.state=e,vs.textContent=t}async function Oc(){let e=jc();if(!e||e.kind!==`llm`)return;xc();let t=e.config.endpoint;if(!t){Us(`Set an endpoint first.`);return}ns.classList.add(`loading`),ns.disabled=!0,Z.model.disabled=!0;let n=await lo({endpoint:t,token:e.config.token});if(ns.classList.remove(`loading`),ns.disabled=!1,Z.model.disabled=!1,!n.ok||!n.models?.length){Us(n.error??`No models found.`);return}let r=Z.model.value;Z.model.innerHTML=``;for(let e of n.models){let t=document.createElement(`option`);t.value=e,t.textContent=e,Z.model.appendChild(t)}Z.model.value=n.models.includes(r)?r:n.models[0],e.config.model=Z.model.value,ts.disabled=!Z.model.value,Us(`${n.models.length} model${n.models.length===1?``:`s`} loaded.`),Ic()}async function kc(){let e=jc();if(!e||e.kind!==`llm`)return;xc(),ts.disabled=!0,Hs(`Testing ${e.config.model}…`),Ic();let t=await fo({endpoint:e.config.endpoint,token:e.config.token,model:e.config.model,timeout:e.config.timeout});ts.disabled=!1,t.ok?Us(t.detail??`Connection OK`,`success`):Us(t.error||`Connection failed (${t.status||`no status`})`,`error`),Ic()}function Ac(e){return{system:`System`,llm:`LLM provider`,agent:`Agent`,mcp:`MCP`}[e]||`Node`}function jc(){return Q.selectedId?Mc(Q.selectedId):null}function Mc(e){return Q.entities.find(t=>t.id===e)}function Nc(e){return e===`root`||e===`mcp`}function Pc(e){return Q.entities.filter(t=>t.parentId===e)}function Fc(e){let t=[];for(let n of Pc(e))t.push(n.id,...Fc(n.id));return t}function Ic(){Ms?Zo.requestPaint():requestAnimationFrame(Lc)}function Lc(){let e=Zo.width/Q.dpr,t=Zo.height/Q.dpr;X.reset(),X.setTransform(Q.dpr,0,0,Q.dpr,0,0),X.clearRect(0,0,e,t),X.save(),X.translate(Q.cameraX,Q.cameraY),X.scale(Q.zoom,Q.zoom),Rc(e,t),zc(),X.restore(),Ms&&Gc(e,t)}function Rc(e,t){X.save(),X.lineWidth=1/Q.zoom;let n=nl({x:0,y:0}),r=nl({x:e,y:t}),i=Math.floor(n.x/vo)*vo,a=Math.ceil(r.x/vo)*vo,o=Math.floor(n.y/vo)*vo,s=Math.ceil(r.y/vo)*vo;for(let e=i;e<=a;e+=vo)X.strokeStyle=e%yo===0?`#d7dce5`:`#edf0f4`,yl(e,o,e,s);for(let e=o;e<=s;e+=vo)X.strokeStyle=e%yo===0?`#d7dce5`:`#edf0f4`,yl(i,e,a,e);X.restore()}function zc(){Bc();for(let e of Q.entities)Vc(e)}function Bc(){X.save(),X.strokeStyle=`#111827`,X.lineWidth=2/Q.zoom;for(let e of Q.entities){let t=Mc(e.parentId);if(!t)continue;let n=Math.atan2(e.y-t.y,e.x-t.x),r=il(t,n),i=il(e,n+Math.PI);X.beginPath(),X.moveTo(r.x,r.y),X.lineTo(i.x,i.y),X.stroke()}X.restore()}function Vc(e){if(e.kind===`system`||e.kind===`llm`){Hc(e);return}Uc(e)}function Hc(e){let t=e.id===Q.selectedId,n=e.kind===`system`?ho:go,r=Pc(e.id),i=Math.max(_o,r.length),a=gl(e.x,e.y,n,i);X.save(),X.beginPath(),a.forEach((e,t)=>{t===0?X.moveTo(e.x,e.y):X.lineTo(e.x,e.y)}),X.closePath(),X.fillStyle=t?`#111827`:`#ffffff`,X.strokeStyle=`#0f172a`,X.lineWidth=(t?3:2)/Q.zoom,X.shadowColor=`rgb(15 23 42 / 8%)`,X.shadowBlur=e.kind===`system`?20:14,X.shadowOffsetY=e.kind===`system`?8:5,X.fill(),X.shadowColor=`transparent`,X.stroke(),X.fillStyle=t?`#ffffff`:`#111827`,X.textAlign=`center`,X.textBaseline=`middle`,X.font=e.kind===`system`?`800 21px Inter, system-ui, sans-serif`:`800 16px Inter, system-ui, sans-serif`,vl(e.label,e.x,e.y-8,n*1.32,e.kind===`system`?26:20),Wc(e,t,n),X.restore()}function Uc(e){let t=e.id===Q.selectedId,n=e.kind===`mcp`?116:po,r=e.kind===`mcp`?58:mo;X.save(),_l(e.x-n/2,e.y-r/2,n,r,20),X.fillStyle=t?`#111827`:`#ffffff`,X.strokeStyle=e.kind===`mcp`?`#276ef1`:`#0f172a`,X.lineWidth=(t?3:2)/Q.zoom,X.fill(),X.stroke(),X.fillStyle=t?`#ffffff`:`#111827`,X.font=`760 15px Inter, system-ui, sans-serif`,X.textAlign=`center`,X.textBaseline=`middle`,vl(e.label,e.x,e.y,n*.78,18),Wc(e,t,Math.max(n,r)/2),X.restore()}function Wc(e,t,n){t&&(X.beginPath(),X.arc(e.x+n*.62,e.y-n*.66,5,0,Math.PI*2),X.fillStyle=`#34d399`,X.fill())}function Gc(e,t){if(!jc())return;let n=ll(e),r=Math.min(Co,t-118),i=e-n-24,a=Math.max(24,(t-r)/2);try{let e=X.drawElementImage(Ss,i,a,n,r);Ss.style.transform=e.toString()}catch{Qo.textContent=`Waiting for HTML snapshot`}}function Kc(e,t){let n=Zo.clientWidth,r=Zo.clientHeight,i=jc()?ll(n)+wo:0,a=Math.max(360,n-i),o=Qc(),s=$c(o,a,r),c=t?s:Math.min(Q.zoom,s),l=(o.minX+o.maxX)/2,u=(o.minY+o.maxY)/2,d=a*.5-l*c,f=r*.5-u*c;if(!e||!Q.cameraX||!Q.cameraY){el(),Q.cameraX=d,Q.cameraY=f,Q.zoom=c,Q.panelShiftX=i;return}Q.panelShiftX=i,Zc(d,f,c)}function qc(e,t,n){if(t){if(e){let e=Jc();Q.panelShiftX+=Math.max(0,-e),Xc(e,n)}else{let e=jc();if(e){let t=ll(Zo.clientWidth)+wo,n=(Zo.clientWidth-t)/2-e.x*Q.zoom,r=n-Q.cameraX;Q.panelShiftX=-r,Zc(n,Q.cameraY,Q.zoom)}}return}if(!e)return;let r=Q.panelShiftX;Q.panelShiftX=0,Xc(r,n)}function Jc(){let e=jc();if(!e)return 0;let t=Zo.clientWidth-ll(Zo.clientWidth)-24-Po,n=Yc(e);return n.right<=t?0:t-n.right}function Yc(e){let t=fl(e);return{left:t.left*Q.zoom+Q.cameraX,top:t.top*Q.zoom+Q.cameraY,right:t.right*Q.zoom+Q.cameraX,bottom:t.bottom*Q.zoom+Q.cameraY}}function Xc(e,t){if(el(),!e)return;let n=Q.cameraX+e;if(!t){Q.cameraX=n;return}Zc(n,Q.cameraY,Q.zoom)}function Zc(e,t,n){el();let r=Q.cameraX,i=Q.cameraY,a=Q.zoom,o=performance.now();function s(c){let l=Math.min(1,(c-o)/Mo),u=1-(1-l)**3;Q.cameraX=r+(e-r)*u,Q.cameraY=i+(t-i)*u,Q.zoom=a+(n-a)*u,ic(),Ic(),l<1?Q.viewAnimationId=requestAnimationFrame(s):Q.viewAnimationId=null}Q.viewAnimationId=requestAnimationFrame(s)}function Qc(){return Q.entities.reduce((e,t)=>{let n=hc(t);return{minX:Math.min(e.minX,t.x-n),minY:Math.min(e.minY,t.y-n),maxX:Math.max(e.maxX,t.x+n),maxY:Math.max(e.maxY,t.y+n)}},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0})}function $c(e,t,n){let r=e.maxX-e.minX,i=e.maxY-e.minY;if(!Number.isFinite(r)||!Number.isFinite(i)||r<=0||i<=0)return 1;let a=Math.max(1,t-No*2),o=Math.max(1,n-No*2);return rl(Math.min(1,a/r,o/i),Io,1)}function el(){Q.viewAnimationId&&(cancelAnimationFrame(Q.viewAnimationId),Q.viewAnimationId=null)}function tl(e,t){el();let n=nl(e);Q.zoom=rl(Q.zoom*t,Io,Lo),Q.cameraX=e.x-n.x*Q.zoom,Q.cameraY=e.y-n.y*Q.zoom,Ic()}function nl(e){return{x:(e.x-Q.cameraX)/Q.zoom,y:(e.y-Q.cameraY)/Q.zoom}}function rl(e,t,n){return Math.min(n,Math.max(t,e))}function il(e,t){if(e.kind!==`system`&&e.kind!==`llm`)return sl(e,t);let n=e.kind===`system`?ho:go,r=Pc(e.id);return al(e,n,Math.max(_o,r.length),t)||{x:e.x+Math.cos(t)*n,y:e.y+Math.sin(t)*n}}function al(e,t,n,r){let i={x:Math.cos(r),y:Math.sin(r)},a=gl(e.x,e.y,t,n),o=null;for(let t=0;t<a.length;t+=1){let n=a[t],r=a[(t+1)%a.length],s={x:r.x-n.x,y:r.y-n.y},c={x:n.x-e.x,y:n.y-e.y},l=ol(i,s);if(Math.abs(l)<1e-4)continue;let u=ol(c,s)/l,d=ol(c,i)/l;if(u>=0&&d>=0&&d<=1){let t={x:e.x+i.x*u,y:e.y+i.y*u};(!o||u<o.rayDistance)&&(o={...t,rayDistance:u})}}return o?{x:o.x,y:o.y}:null}function ol(e,t){return e.x*t.y-e.y*t.x}function sl(e,t){let n=ul(e),r=n.width/2,i=n.height/2,a=Math.cos(t),o=Math.sin(t),s=Math.min(Math.abs(r/(a||2**-52)),Math.abs(i/(o||2**-52)));return{x:e.x+a*s,y:e.y+o*s}}function cl(e,t){if(e.kind===`system`||e.kind===`llm`){let n=e.kind===`system`?ho:go;return Math.hypot(t.x-e.x,t.y-e.y)<=n+jo}let{width:n,height:r}=ul(e);return Math.abs(t.x-e.x)<=n/2+jo&&Math.abs(t.y-e.y)<=r/2+jo}function ll(e){return Math.min(xo,Math.max(bo,Math.floor(e*So)))}function ul(e){return e.kind===`mcp`?{width:116,height:58}:{width:po,height:mo}}function dl(e){return[e,...Fc(e.id).map(Mc)].filter(Boolean).map(fl).reduce(pl)}function fl(e){if(e.kind===`system`||e.kind===`llm`){let t=e.kind===`system`?ho:go;return{left:e.x-t,top:e.y-t,right:e.x+t,bottom:e.y+t}}let{width:t,height:n}=ul(e);return{left:e.x-t/2,top:e.y-n/2,right:e.x+t/2,bottom:e.y+n/2}}function pl(e,t){return{left:Math.min(e.left,t.left),top:Math.min(e.top,t.top),right:Math.max(e.right,t.right),bottom:Math.max(e.bottom,t.bottom)}}function ml(e,t,n){return!(e.right+n<t.left||e.left-n>t.right||e.bottom+n<t.top||e.top-n>t.bottom)}function hl(e){let t=Zo.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}}function gl(e,t,n,r){return Array.from({length:r},(i,a)=>{let o=-Math.PI/2+a/r*Math.PI*2;return{x:e+Math.cos(o)*n,y:t+Math.sin(o)*n}})}function _l(e,t,n,r,i){let a=e+n,o=t+r;X.beginPath(),X.moveTo(e+i,t),X.lineTo(a-i,t),X.quadraticCurveTo(a,t,a,t+i),X.lineTo(a,o-i),X.quadraticCurveTo(a,o,a-i,o),X.lineTo(e+i,o),X.quadraticCurveTo(e,o,e,o-i),X.lineTo(e,t+i),X.quadraticCurveTo(e,t,e+i,t),X.closePath()}function vl(e,t,n,r,i){let a=e.split(/\s+/),o=[],s=``;for(let e of a){let t=s?`${s} ${e}`:e;X.measureText(t).width>r&&s?(o.push(s),s=e):s=t}o.push(s);let c=n-(o.length-1)*i/2;o.forEach((e,n)=>{X.fillText(e,t,c+n*i)})}function yl(e,t,n,r){X.beginPath(),X.moveTo(e,t),X.lineTo(n,r),X.stroke()}var bl=W(`<div class="status-row"><span id="apiStatus"></span></div>`),xl=W('<div class="app-shell"><!> <section class="workspace-shell" aria-label="Configuration graph workspace"><nav class="rail" aria-label="Workspace tools"><button id="addButton" class="tool-button primary" type="button" title="Add node">+</button> <button id="fitButton" class="tool-button" type="button" title="Fit view">⌖</button></nav> <canvas id="workspaceCanvas" class="workspace-canvas" layoutsubtree=""><form id="configSurface" class="config-surface" autocomplete="off"><div class="panel-kicker"><span id="nodeTypeBadge">Provider</span> <button id="closePanelButton" class="icon-button close" type="button" title="Close panel">×</button></div> <div class="panel-title-row"><label class="eyebrow" for="nodeName">Node name</label> <input id="nodeName" name="nodeName" class="title-input" type="text"/></div> <div class="form-grid"><label class="field"><span>Kind</span> <select id="nodeKind" name="nodeKind"><option>System</option><option>LLM provider</option><option>Agent</option><option>MCP</option></select></label> <div id="llmFields" class="contents"><label class="field wide"><span>Endpoint</span> <input id="nodeEndpoint" name="nodeEndpoint" type="url" placeholder="http://localhost:11434"/></label> <label class="field wide"><span>API token</span> <input id="nodeToken" name="nodeToken" type="password" placeholder="Optional bearer token"/></label> <div class="field wide model-field-row"><span>Model</span> <div class="model-select-wrap"><select id="nodeModel" name="nodeModel"><option disabled="" selected="">— click ↻ to load models —</option></select> <button id="loadModelsButton" class="icon-button" type="button" title="Load models from endpoint">↻</button></div></div> <label class="field"><span>Timeout</span> <input id="nodeTimeout" name="nodeTimeout" type="number" min="1" max="600" step="1"/></label></div> <label class="field wide"><span>Description</span> <textarea id="nodeDescription" name="nodeDescription" rows="3"></textarea></label></div> <section id="agentSection" class="agent-section" hidden=""><label id="agentWorkspaceField" class="field wide"><span>Workspace folder</span> <input id="nodeWorkspaceFolder" name="nodeWorkspaceFolder" type="text" readonly=""/></label> <label class="field wide"><span>System prompt</span> <textarea id="nodeSystemPrompt" name="nodeSystemPrompt" rows="5" placeholder="You are a helpful assistant…"></textarea></label> <label class="field wide checkbox-field"><input id="nodeRequiresUserInput" name="nodeRequiresUserInput" type="checkbox"/> <span>Require a user input</span></label> <label id="agentUserInputDescriptionField" class="field wide" hidden=""><span>Describe User input</span> <textarea id="nodeUserInputDescription" name="nodeUserInputDescription" rows="3" placeholder="Describe exactly what the user must provide before running this agent."></textarea></label> <label class="field wide"><span>Required output marker</span> <input id="nodeExpectedOutputMarker" name="nodeExpectedOutputMarker" type="text" placeholder="Optional, e.g. ```mermaid"/></label></section> <section id="mcpInventory" class="mcp-inventory" hidden=""><div class="inventory-header"><span>MCP consultation surface</span> <strong>Streamable HTTP</strong></div> <div class="inventory-grid"><article><h2>Tools</h2> <ul><li>list_documents</li><li>read_document</li><li>create_document</li> <li>update_document</li><li>list_diagrams</li><li>read_diagram</li> <li>create_diagram</li><li>list_source_files</li><li>read_source_file</li> <li>search_source</li><li>add_metadata</li><li>refresh_metadata</li> <li>get_accuracy</li><li>review_adr_relevance</li><li>retrodocument_adrs_from_git</li></ul></article> <article><h2>Prompts</h2> <ul><li>audit-adrs-drift</li><li>review-adr-relevance</li> <li>retrodocument-adrs-from-git</li><li>erd</li> <li>feature-workflow</li><li>create-context-diagram</li> <li>create-container-diagram</li><li>document-source-decision</li></ul></article></div></section> <footer class="panel-actions"><div class="panel-actions-left"><button id="testNodeButton" class="secondary-button" type="button">Test</button></div> <div class="panel-actions-right"><button id="deleteNodeButton" class="danger-button" type="button">Delete</button></div></footer></form></canvas> <div id="fallbackPanelHost" class="fallback-panel-host" hidden=""></div></section> <div id="deleteConfirmOverlay" class="confirm-overlay" hidden=""><section class="confirm-dialog" role="dialog" aria-modal="true" aria-labelledby="deleteConfirmTitle"><div><p class="confirm-kicker">Destructive change</p> <h2 id="deleteConfirmTitle">Delete node?</h2> <p id="deleteConfirmMessage" class="confirm-message"></p></div> <footer class="confirm-actions"><button id="cancelDeleteButton" class="secondary-button" type="button">Cancel</button> <button id="confirmDeleteButton" class="danger-button" type="button">Delete</button></footer></section></div> <div id="renameConfirmOverlay" class="confirm-overlay" hidden=""><section class="confirm-dialog" role="dialog" aria-modal="true" aria-labelledby="renameConfirmTitle"><div><p class="confirm-kicker">Renommage de dossier</p> <h2 id="renameConfirmTitle">Renommer le dossier ?</h2> <p id="renameConfirmMessage" class="confirm-message"></p></div> <footer class="confirm-actions"><button id="cancelRenameButton" class="secondary-button" type="button">Annuler</button> <button id="confirmRenameButton" class="primary-button" type="button">Renommer</button></footer></section></div> <div id="agentRunOverlay" class="confirm-overlay" hidden=""><section class="agent-run-dialog" role="dialog" aria-modal="true" aria-labelledby="agentRunTitle"><div><p class="confirm-kicker">Agent test</p> <h2 id="agentRunTitle">Run agent</h2> <p id="agentRunHint" class="confirm-message"></p></div> <label id="agentRunInputField" class="field wide agent-run-input-field"><span>User input</span> <textarea id="agentRunInput" name="agentRunInput" rows="6" placeholder="Document ID, question, or any input for the agent…"></textarea></label> <div id="agentRunResult" class="agent-run-result" hidden=""></div> <footer class="confirm-actions"><button id="cancelAgentRunButton" class="secondary-button" type="button">Close</button> <button id="executeAgentRunButton" class="primary-button" type="button">Run</button></footer></section></div></div> <div id="workspaceToast" class="workspace-toast" role="status" aria-live="polite" hidden=""><span id="workspaceToastIcon" class="toast-icon" aria-hidden="true">✓</span> <span id="workspaceToastMessage">Workspace saved</span></div>',1);function Sl(e,t){Ke(t,!0),Vi(async()=>{try{await fa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}return Ns()});var n=xl(),r=z(n),i=R(r);ua(i,{title:`Living AI Documentation`,subtitle:`Graph-native configuration workspace`,children:(e,t)=>{var n=bl(),r=R(n);hi(r,1,`status-pill `),r.textContent=`Detecting canvas API`,M(n),G(e,n)},$$slots:{default:!0}});var a=B(i,2),o=B(R(a),2),s=R(o),c=B(R(s),4),l=R(c),u=B(R(l),2),d=R(u);d.value=d.__value=`system`;var f=B(d);f.value=f.__value=`llm`;var p=B(f);p.value=p.__value=`agent`;var m=B(p);m.value=m.__value=`mcp`,M(u),M(l);var h=B(l,2),g=B(R(h),4),_=B(R(g),2),v=R(_),y=R(v);y.value=y.__value=``,M(v),Fe(2),M(_),M(g),Fe(2),M(h),Fe(2),M(c),Fe(6),M(s),M(o),Fe(2),M(a),Fe(6),M(r),Fe(2),G(e,n),qe()}var Cl=W(`<p class="confirm-kicker"> </p>`),wl=W(`<p class="confirm-message" id="confirm-modal-message" data-testid="confirm-modal-message"> </p>`),Tl=W(`<p id="confirm-modal-detail" data-testid="confirm-modal-detail" class="bg-amber-50 border border-amber-300 text-amber-800 rounded-lg px-3 py-2 text-sm"> </p>`),El=W(`<div class="confirm-overlay"><section class="confirm-dialog" id="confirm-modal" data-testid="confirm-modal" role="dialog" aria-modal="true"><!> <h2> </h2> <!> <!> <footer class="confirm-actions"><button class="secondary-button" id="confirm-modal-cancel" data-testid="confirm-modal-cancel" type="button"> </button> <button id="confirm-modal-ok" data-testid="confirm-modal-ok" type="button"> </button></footer></section></div>`);function Dl(e,t){Ke(t,!0);let n=F(!1),r=F(L({title:``,confirmLabel:`OK`})),i=null;function a(e){return I(r,e,!0),I(n,!0),new Promise(e=>{i=e})}function o(){I(n,!1),i?.(!0),i=null}function s(){I(n,!1),i?.(!1),i=null}var c={show:a},l=Ur(),u=z(l),d=e=>{var t=El(),n=R(t),i=R(n),a=e=>{var t=Cl(),n=R(t,!0);M(t),V(()=>K(n,H(r).kicker)),G(e,t)};q(i,e=>{H(r).kicker&&e(a)});var c=B(i,2),l=R(c,!0);M(c);var u=B(c,2),d=e=>{var t=wl(),n=R(t,!0);M(t),V(()=>K(n,H(r).message)),G(e,t)};q(u,e=>{H(r).message&&e(d)});var f=B(u,2),p=e=>{var t=Tl(),n=R(t,!0);M(t),V(()=>K(n,H(r).detail)),G(e,t)};q(f,e=>{H(r).detail&&e(p)});var m=B(f,2),h=R(m),g=R(h,!0);M(h);var _=B(h,2),v=R(_,!0);M(_),M(m),M(n),M(t),V(()=>{K(l,H(r).title),K(g,H(r).cancelLabel??`Cancel`),hi(_,1,li(H(r).danger?`danger-button`:`primary-button`)),K(v,H(r).confirmLabel)}),U(`click`,t,e=>{e.target===e.currentTarget&&s()}),U(`click`,h,s),U(`click`,_,o),G(e,t)};return q(u,e=>{H(n)&&e(d)}),G(e,l),qe(c)}Nr([`click`]);var Ol=W(`<p class="files-msg svelte-4q2lov"> </p>`),kl=W(`<p class="files-msg files-msg--error svelte-4q2lov"> </p>`),Al=W(`<p class="files-msg files-msg--empty svelte-4q2lov"> </p>`),jl=W(`<p class="files-row-error svelte-4q2lov"> </p>`),Ml=W(`<li class="files-row svelte-4q2lov"><span class="files-icon svelte-4q2lov">📎</span> <div class="files-info svelte-4q2lov"><a target="_blank" rel="noopener" class="files-name svelte-4q2lov"> </a> <div class="files-meta svelte-4q2lov"><!> </div> <!></div> <div class="files-actions svelte-4q2lov"><button type="button" class="files-btn svelte-4q2lov"> </button> <button type="button" class="files-btn files-btn--danger svelte-4q2lov"> </button></div></li>`),Nl=W(`<ul class="files-list svelte-4q2lov"></ul>`),Pl=W(`<!> <div class="app-shell"><!> <div class="files-page svelte-4q2lov"><!></div></div>`,1);function Fl(e,t){Ke(t,!0);let n=F(null),r=F(L([])),i=F(!0),a=F(``),o=F(L({})),s=F(L({})),c=F(L({}));function l(e){return e<1024?Y(`files.size_bytes`).replace(`{n}`,String(e)):e<1024*1024?Y(`files.size_kb`).replace(`{n}`,(e/1024).toFixed(1)):Y(`files.size_mb`).replace(`{n}`,(e/1024/1024).toFixed(2))}function u(e){if(!e)return``;let t=new Date(e);if(isNaN(t.getTime()))return``;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}async function d(){I(i,!0),I(a,``);try{let e=await fetch(`/api/files`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();I(r,Array.isArray(t.files)?t.files:[],!0)}catch(e){I(a,Y(`files.error_load`)+(e instanceof Error?e.message:String(e)))}finally{I(i,!1)}}function f(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function p(e){let t=document.createElement(`input`);t.type=`file`,t.style.display=`none`,document.body.appendChild(t),t.addEventListener(`change`,async()=>{let r=t.files?.[0];if(t.remove(),r&&await H(n).show({kicker:Y(`files.confirm_replace_title`),title:Y(`files.confirm_replace_message`).replace(`{name}`,e.displayName||e.filename).replace(`{newName}`,r.name),message:Y(`files.confirm_replace_detail`),confirmLabel:Y(`files.replace`),cancelLabel:Y(`common.cancel`),danger:!0})){if(r.size>19922944){I(o,{...H(o),[e.filename]:Y(`files.error_replace`)+`${(r.size/1024/1024).toFixed(1)} MB (max 19 MB)`},!0);return}I(s,{...H(s),[e.filename]:!0},!0),I(o,{...H(o),[e.filename]:``},!0);try{let t=await f(r),n=await fetch(`/api/files/${encodeURIComponent(e.filename)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`HTTP ${n.status}`)}await d()}catch(t){I(o,{...H(o),[e.filename]:Y(`files.error_replace`)+(t instanceof Error?t.message:String(t))},!0)}finally{I(s,{...H(s),[e.filename]:!1},!0)}}}),t.click()}async function m(e){if(await H(n).show({kicker:Y(`files.confirm_delete_title`),title:Y(`files.confirm_delete_message`).replace(`{name}`,e.displayName||e.filename),message:Y(`files.confirm_delete_detail`),confirmLabel:Y(`files.delete`),cancelLabel:Y(`common.cancel`),danger:!0})){I(c,{...H(c),[e.filename]:!0},!0),I(o,{...H(o),[e.filename]:``},!0);try{let t=await fetch(`/api/files/${encodeURIComponent(e.filename)}`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||`HTTP ${t.status}`)}await d()}catch(t){I(o,{...H(o),[e.filename]:Y(`files.error_delete`)+(t instanceof Error?t.message:String(t))},!0)}finally{I(c,{...H(c),[e.filename]:!1},!0)}}}Vi(async()=>{try{await fa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}await d()});var h=Pl(),g=z(h);Li(Dl(g,{}),e=>I(n,e,!0),()=>H(n));var _=B(g,2),v=R(_);{let e=P(()=>Y(`files.title`));ua(v,{get title(){return H(e)},subtitle:``})}var y=B(v,2),b=R(y),x=e=>{var t=Ol(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},S=e=>{var t=kl(),n=R(t,!0);M(t),V(()=>K(n,H(a))),G(e,t)},C=e=>{var t=Al(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`files.empty`)]),G(e,t)},w=e=>{var t=Nl();$r(t,21,()=>H(r),Yr,(e,t)=>{var n=Ml(),r=B(R(n),2),i=R(r),a=R(i,!0);M(i);var d=B(i,2),f=R(d),h=e=>{var n=Hr();V(e=>K(n,`${e??``} ·`),[()=>u(H(t).uploadedAt)]),G(e,n)};q(f,e=>{H(t).uploadedAt&&e(h)});var g=B(f,1,!0);M(d);var _=B(d,2),v=e=>{var n=jl(),r=R(n,!0);M(n),V(()=>K(r,H(o)[H(t).filename])),G(e,n)};q(_,e=>{H(o)[H(t).filename]&&e(v)}),M(r);var y=B(r,2),b=R(y),x=R(b,!0);M(b);var S=B(b,2),C=R(S,!0);M(S),M(y),M(n),V((e,n,r)=>{J(i,`href`,H(t).url),K(a,H(t).displayName||H(t).filename),K(g,e),b.disabled=H(s)[H(t).filename]||H(c)[H(t).filename],K(x,n),S.disabled=H(s)[H(t).filename]||H(c)[H(t).filename],K(C,r)},[()=>l(H(t).size||0),()=>H(s)[H(t).filename]?Y(`files.replacing`):Y(`files.replace`),()=>H(c)[H(t).filename]?Y(`files.deleting`):Y(`files.delete`)]),U(`click`,b,()=>p(H(t))),U(`click`,S,()=>m(H(t))),G(e,n)}),M(t),G(e,t)};q(b,e=>{H(i)?e(x):H(a)?e(S,1):H(r).length===0?e(C,2):e(w,-1)}),M(y),M(_),G(e,h),qe()}Nr([`click`]);var Il=W(`<p class="browser-msg"> </p>`),Ll=W(`<p class="browser-msg browser-msg--error"> </p>`),Rl=W(`<button class="browser-row browser-row--dir"><span class="browser-row-name"> </span></button>`),zl=W(`<span class="badge-added"> </span>`),Bl=W(`<button class="link-btn"> </button>`),Vl=W(`<div class="browser-row browser-row--file"><span class="browser-row-name"> </span> <!></div>`),Hl=W(`<!> <!>`,1),Ul=W(`<div class="file-browser"><div class="file-browser-toolbar"><button class="link-btn"> </button> <span class="file-browser-path"> </span></div> <div class="file-browser-list" data-testid="instruction-browse-list"><!></div></div>`),Wl=W(`<p class="empty-msg svelte-e5jhdq"> </p>`),Gl=W(`<button class="remove-btn"> </button>`),Kl=W(`<div class="instruction-row svelte-e5jhdq"><div class="instruction-info svelte-e5jhdq"><a class="instruction-path svelte-e5jhdq"> </a> <div class="instruction-meta svelte-e5jhdq"> <!></div></div> <div class="instruction-actions svelte-e5jhdq"><span> </span> <!></div></div>`),ql=W(`<div class="section-card svelte-e5jhdq"><div class="section-header svelte-e5jhdq"><span class="section-title svelte-e5jhdq"> </span> <div class="header-actions svelte-e5jhdq"><span class="count-label svelte-e5jhdq"> </span> <button class="secondary-button btn-sm"> </button></div></div> <!> <div class="instruction-list svelte-e5jhdq" data-testid="instruction-list"><!></div></div>`);function Jl(e,t){Ke(t,!0);let n=Bi(t,`items`,27,()=>L([])),r=F(!1),i=F(``),a=F(``),o=F(L([])),s=F(L([])),c=F(!1),l=F(!1),u=P(()=>new Set(n().map(e=>d(e.path))));function d(e){return String(e||``).split(/[/\\]/).pop()||``}function f(e){let t=encodeURIComponent(String(e||``).replace(/\.md$/i,``));return`/?doc=`+encodeURIComponent(t)}function p(e){return Y(`context.root.${e}`)}function m(e){return Y(`context.type.${e}`)}async function h(e){I(c,!0),I(l,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(i,t.current,!0),I(a,t.parent||``,!0),I(o,t.dirs||[],!0),I(s,t.files||[],!0)}catch{I(l,!0)}finally{I(c,!1)}}async function g(){I(r,!H(r)),H(r)&&!H(i)&&await h((await fetch(`/api/context/orientation`).then(e=>e.json()).catch(()=>({}))).sourceRoot||``)}async function _(e){await t.onAdd(e),H(r)&&H(i)&&await h(H(i))}var v=ql(),y=R(v),b=R(y),x=R(b,!0);M(b);var S=B(b,2),C=R(S),w=R(C);M(C);var T=B(C,2),E=R(T,!0);M(T),M(S),M(y);var D=B(y,2),ee=e=>{var t=Ul(),n=R(t),r=R(n),d=R(r,!0);M(r);var f=B(r,2),p=R(f,!0);M(f),M(n);var m=B(n,2),g=R(m),v=e=>{var t=Il(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},y=e=>{var t=Ll(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.cannot_read_dir`)]),G(e,t)},b=e=>{var t=Il(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.empty_dir`)]),G(e,t)},x=e=>{var t=Hl(),n=z(t);$r(n,17,()=>H(o),Yr,(e,t)=>{var n=Rl(),r=R(n),i=R(r);M(r),M(n),V(()=>K(i,`📁 ${H(t).name??``}`)),U(`click`,n,()=>h(H(t).path)),G(e,n)}),$r(B(n,2),17,()=>H(s),Yr,(e,t)=>{var n=Vl(),r=R(n),i=R(r);M(r);var a=B(r,2),o=e=>{var t=zl(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`context.added`)]),G(e,t)},s=P(()=>H(u).has(H(t).name)),c=e=>{var n=Bl(),r=R(n,!0);M(n),V(e=>K(r,e),[()=>Y(`context.add_file_action`)]),U(`click`,n,()=>_(H(t).path)),G(e,n)};q(a,e=>{H(s)?e(o):e(c,-1)}),M(n),V(()=>K(i,`📄 ${H(t).name??``}`)),G(e,n)}),G(e,t)};q(g,e=>{H(c)?e(v):H(l)?e(y,1):!H(o).length&&!H(s).length?e(b,2):e(x,-1)}),M(m),M(t),V(e=>{r.disabled=!H(a),K(d,e),K(p,H(i))},[()=>Y(`common.up`)]),U(`click`,r,()=>H(a)&&h(H(a))),G(e,t)};q(D,e=>{H(r)&&e(ee)});var te=B(D,2),ne=R(te),O=e=>{var t=Wl(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`context.no_instructions`)]),G(e,t)},re=e=>{var r=Ur();$r(z(r),17,n,Yr,(e,n)=>{var r=Kl(),i=R(r),a=R(i),o=R(a,!0);M(a);var s=B(a,2),c=R(s),l=B(c),u=e=>{var t=Hr();V(e=>K(t,`· ${e??``} KB`),[()=>Math.round(H(n).size/1024)]),G(e,t)};q(l,e=>{H(n).size!==null&&e(u)}),M(s),M(i);var h=B(i,2),g=R(h),_=R(g,!0);M(g);var v=B(g,2),y=e=>{var r=Gl(),i=R(r,!0);M(r),V(e=>K(i,e),[()=>Y(`common.remove`)]),U(`click`,r,()=>t.onRemove(d(H(n).path))),G(e,r)};q(v,e=>{H(n).exists&&e(y)}),M(h),M(r),V((e,t,r,i)=>{J(a,`href`,e),K(o,H(n).path),K(c,`${t??``} · ${r??``} `),hi(g,1,li(H(n).exists?`status-ok`:`status-missing`),`svelte-e5jhdq`),K(_,i)},[()=>f(H(n).path),()=>p(H(n).root),()=>m(H(n).type),()=>H(n).exists?Y(`context.exists`):Y(`context.missing`)]),G(e,r)}),G(e,r)};q(ne,e=>{n().length?e(re,-1):e(O)}),M(te),M(v),V((e,t,r)=>{K(x,e),K(w,`${t??``}/${n().length??``}`),K(E,r)},[()=>Y(`context.instructions_title`),()=>n().filter(e=>e.exists).length,()=>H(r)?Y(`context.hide_instruction_browser`):Y(`context.add_instruction_file`)]),U(`click`,T,g),G(e,v),qe()}Nr([`click`]);var Yl=W(`<span class="rules-folder svelte-1r3tey2"> </span>`),Xl=W(`<p class="empty-msg svelte-1r3tey2"> </p>`),Zl=W(`<span class="tag svelte-1r3tey2"> </span>`),Ql=W(`<div class="rule-tags svelte-1r3tey2"></div>`),$l=W(`<div class="rule-applies svelte-1r3tey2"> </div>`),eu=W(`<article class="rule-row svelte-1r3tey2"><div class="rule-top svelte-1r3tey2"><div class="rule-title-wrap svelte-1r3tey2"><h3 class="rule-title svelte-1r3tey2"><a class="rule-link svelte-1r3tey2"> </a></h3> <a class="rule-path svelte-1r3tey2"> </a></div> <span class="severity-badge svelte-1r3tey2"> </span></div> <p class="rule-desc svelte-1r3tey2"> </p> <!> <!></article>`),tu=W(`<div class="rules-layout svelte-1r3tey2"><div class="section-card svelte-1r3tey2"><div class="section-header svelte-1r3tey2"><span class="section-title svelte-1r3tey2" data-testid="rules-title"> </span> <!></div> <div class="rule-list svelte-1r3tey2" data-testid="rule-list"><!></div></div> <div class="section-card aside-card svelte-1r3tey2"><span class="section-title svelte-1r3tey2" data-testid="add-rule-title"> </span> <div class="field-group"><label class="field-label" for="ruleTitle"> </label> <input id="ruleTitle" class="field-input"/></div> <div class="field-group"><label class="field-label" for="ruleSeverity"> </label> <select id="ruleSeverity" class="field-input"><option> </option><option> </option><option> </option></select></div> <div class="field-group"><label class="field-label" for="ruleDescription"> </label> <input id="ruleDescription" class="field-input"/></div> <div class="field-group"><label class="field-label" for="ruleTags"> </label> <input id="ruleTags" class="field-input"/></div> <div class="field-group"><label class="field-label" for="ruleAppliesTo"> </label> <input id="ruleAppliesTo" class="field-input"/></div> <div class="field-group"><label class="field-label" for="ruleBody"> </label> <textarea id="ruleBody" rows="7" class="field-input"></textarea></div> <button class="btn-primary" style="width:100%"> </button></div></div>`);function nu(e,t){Ke(t,!0);let n=Bi(t,`rules`,19,()=>[]),r=Bi(t,`rulesFolder`,3,``),i=F(``),a=F(`guideline`),o=F(``),s=F(``),c=F(``),l=F(``),u=F(!1);function d(e){let t=encodeURIComponent(String(e||``).replace(/\.md$/i,``));return`/?doc=`+encodeURIComponent(t)}function f(e){let t=`context.rule_severity_${e}`,n=Y(t);return n===t?e:n}function p(e){return e.split(`,`).map(e=>e.trim()).filter(Boolean)}async function m(){if(H(i).trim()){I(u,!0);try{await t.onAdd({title:H(i).trim(),severity:H(a),description:H(o).trim(),tags:p(H(s)),appliesTo:p(H(c)),body:H(l).trim()}),I(i,``),I(o,``),I(s,``),I(c,``),I(l,``)}finally{I(u,!1)}}}var h=tu(),g=R(h),_=R(g),v=R(_),y=R(v,!0);M(v);var b=B(v,2),x=e=>{var t=Yl(),n=R(t,!0);M(t),V(()=>K(n,r())),G(e,t)};q(b,e=>{r()&&e(x)}),M(_);var S=B(_,2),C=R(S),w=e=>{var t=Xl(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`context.no_rules`)]),G(e,t)},T=e=>{var t=Ur();$r(z(t),17,n,Yr,(e,t)=>{var n=eu(),r=R(n),i=R(r),a=R(i),o=R(a),s=R(o,!0);M(o),M(a);var c=B(a,2),l=R(c,!0);M(c),M(i);var u=B(i,2),p=R(u,!0);M(u),M(r);var m=B(r,2),h=R(m,!0);M(m);var g=B(m,2),_=e=>{var n=Ql();$r(n,21,()=>H(t).tags,Yr,(e,t)=>{var n=Zl(),r=R(n,!0);M(n),V(()=>K(r,H(t))),G(e,n)}),M(n),G(e,n)};q(g,e=>{H(t).tags?.length&&e(_)});var v=B(g,2),y=e=>{var n=$l(),r=R(n,!0);M(n),V(e=>K(r,e),[()=>H(t).appliesTo.join(`, `)]),G(e,n)};q(v,e=>{H(t).appliesTo?.length&&e(y)}),M(n),V((e,n,r)=>{J(o,`href`,e),K(s,H(t).title),J(c,`href`,n),K(l,H(t).path),K(p,r),K(h,H(t).description)},[()=>d(H(t).path),()=>d(H(t).path),()=>f(H(t).severity)]),G(e,n)}),G(e,t)};q(C,e=>{n().length?e(T,-1):e(w)}),M(S),M(g);var E=B(g,2),D=R(E),ee=R(D,!0);M(D);var te=B(D,2),ne=R(te),O=R(ne,!0);M(ne);var re=B(ne,2);Ei(re),M(te);var ie=B(te,2),ae=R(ie),oe=R(ae,!0);M(ae);var se=B(ae,2),ce=R(se),le=R(ce,!0);M(ce),ce.value=ce.__value=`guideline`;var ue=B(ce),de=R(ue,!0);M(ue),ue.value=ue.__value=`warning`;var fe=B(ue),pe=R(fe,!0);M(fe),fe.value=fe.__value=`required`,M(se),M(ie);var me=B(ie,2),he=R(me),ge=R(he,!0);M(he);var _e=B(he,2);Ei(_e),M(me);var ve=B(me,2),ye=R(ve),be=R(ye,!0);M(ye);var xe=B(ye,2);Ei(xe),M(ve);var Se=B(ve,2),Ce=R(Se),we=R(Ce,!0);M(Ce);var Te=B(Ce,2);Ei(Te),M(Se);var Ee=B(Se,2),k=R(Ee),De=R(k,!0);M(k);var Oe=B(k,2);vn(Oe),M(Ee);var ke=B(Ee,2),Ae=R(ke,!0);M(ke),M(E),M(h),V((e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)=>{K(y,e),K(ee,t),K(O,n),J(re,`placeholder`,r),K(oe,i),K(le,a),K(de,o),K(pe,s),K(ge,c),J(_e,`placeholder`,l),K(be,u),J(xe,`placeholder`,d),K(we,f),J(Te,`placeholder`,p),K(De,m),J(Oe,`placeholder`,h),ke.disabled=g,K(Ae,_)},[()=>Y(`context.rules_title`),()=>Y(`context.add_rule_title`),()=>Y(`context.rule_title_label`),()=>Y(`context.rule_title_placeholder`),()=>Y(`context.rule_severity_label`),()=>Y(`context.rule_severity_guideline`),()=>Y(`context.rule_severity_warning`),()=>Y(`context.rule_severity_required`),()=>Y(`context.rule_description_label`),()=>Y(`context.rule_description_placeholder`),()=>Y(`context.rule_tags_label`),()=>Y(`context.rule_tags_placeholder`),()=>Y(`context.rule_applies_to_label`),()=>Y(`context.rule_applies_to_placeholder`),()=>Y(`context.rule_body_label`),()=>Y(`context.rule_body_placeholder`),()=>H(u)||!H(i).trim(),()=>Y(`context.add_rule_button`)]),Mi(re,()=>H(i),e=>I(i,e)),bi(se,()=>H(a),e=>I(a,e)),Mi(_e,()=>H(o),e=>I(o,e)),Mi(xe,()=>H(s),e=>I(s,e)),Mi(Te,()=>H(c),e=>I(c,e)),Mi(Oe,()=>H(l),e=>I(l,e)),U(`click`,ke,m),G(e,h),qe()}Nr([`click`]);var ru=W(`<p class="empty-msg svelte-1ui2b6s"> </p>`),iu=W(`<p class="mcp-desc svelte-1ui2b6s"> </p>`),au=W(`<div class="mcp-schema-wrap svelte-1ui2b6s"><h4 class="mcp-schema-title svelte-1ui2b6s"> </h4> <pre class="mcp-schema-pre svelte-1ui2b6s"> </pre></div>`),ou=W(`<div class="mcp-result svelte-1ui2b6s" data-testid="mcp-result"></div>`),su=W(`<details class="mcp-detail svelte-1ui2b6s"><summary class="mcp-summary svelte-1ui2b6s"> </summary> <!> <!> <div class="mcp-run-area svelte-1ui2b6s"><label class="mcp-run-label svelte-1ui2b6s"> </label> <textarea rows="4" spellcheck="false" class="field-input mcp-textarea svelte-1ui2b6s" data-testid="mcp-args"></textarea> <div class="mcp-run-footer svelte-1ui2b6s"><span class="mcp-error-text svelte-1ui2b6s" data-testid="mcp-error"> </span> <button class="btn-primary btn-sm"> </button></div> <!></div></details>`),cu=W(`<p class="mcp-arg-desc svelte-1ui2b6s"> </p>`),lu=W(`<li class="mcp-arg-item svelte-1ui2b6s"><div class="mcp-arg-name-row svelte-1ui2b6s"><span class="mcp-arg-name svelte-1ui2b6s"> </span> <span class="mcp-arg-req svelte-1ui2b6s"> </span></div> <!></li>`),uu=W(`<div class="mcp-schema-wrap svelte-1ui2b6s"><h4 class="mcp-schema-title svelte-1ui2b6s"> </h4> <ul class="mcp-args-list svelte-1ui2b6s"></ul></div>`),du=W(`<div class="section-card svelte-1ui2b6s"><div class="section-header svelte-1ui2b6s"><span class="section-title svelte-1ui2b6s" data-testid="mcp-title"> </span> <button class="secondary-button btn-sm"> </button></div> <p class="section-desc svelte-1ui2b6s"> </p> <div class="mcp-info-grid svelte-1ui2b6s"><div class="mcp-info-cell svelte-1ui2b6s"><div class="mcp-info-label svelte-1ui2b6s"> </div> <div> </div></div> <div class="mcp-info-cell svelte-1ui2b6s"><div class="mcp-info-label svelte-1ui2b6s"> </div> <div class="mcp-info-value mono svelte-1ui2b6s"> </div></div> <div class="mcp-info-cell wide svelte-1ui2b6s"><div class="mcp-info-label svelte-1ui2b6s"> </div> <div class="mcp-info-value mono break svelte-1ui2b6s" data-testid="mcp-endpoint"> </div></div></div> <div><div class="subsection-header svelte-1ui2b6s"><span class="subsection-title svelte-1ui2b6s"> </span> <div class="subsection-actions svelte-1ui2b6s"><span class="count-label svelte-1ui2b6s"> </span> <button class="secondary-button btn-sm"> </button></div></div> <div class="mcp-items svelte-1ui2b6s" data-testid="mcp-tool-list"><!></div></div> <div><div class="subsection-header svelte-1ui2b6s"><span class="subsection-title svelte-1ui2b6s"> </span> <div class="subsection-actions svelte-1ui2b6s"><span class="count-label svelte-1ui2b6s"> </span> <button class="secondary-button btn-sm"> </button></div></div> <div class="mcp-items svelte-1ui2b6s" data-testid="mcp-prompt-list"><!></div></div></div>`);function fu(e,t){Ke(t,!0);let n=F(`-`),r=F(!1),i=F(`-`),a=F(`-`),o=F(L([])),s=F(L([])),c=F(!1),l=F(L(new Map)),u=F(L(new Map));function d(e,t){let n=H(e===`tool`?l:u);return n.has(t)||n.set(t,{argsJson:`{}`,running:!1,error:``,resultHtml:``}),n.get(t)}function f(e,t,n){let r=H(e===`tool`?l:u).get(t)??{argsJson:`{}`,running:!1,error:``,resultHtml:``};e===`tool`?I(l,new Map(H(l)).set(t,{...r,...n}),!0):I(u,new Map(H(u)).set(t,{...r,...n}),!0)}function p(e){if(!e||typeof e!=`object`)return null;if(e.type===`string`)return``;if(e.type===`number`||e.type===`integer`)return 0;if(e.type===`boolean`)return!1;if(e.type===`array`)return[];if(e.type===`object`||e.properties){let t={},n=e.properties||{};return(Array.isArray(e.required)?e.required:[]).forEach(e=>{t[e]=p(n[e])??``}),t}return null}function m(e){let t=p(e.inputSchema)??{},n=JSON.stringify(t,null,2);I(l,new Map(H(l)).set(e.name,{argsJson:n,running:!1,error:``,resultHtml:``}),!0)}function h(e){let t={};(e.arguments||[]).forEach(e=>{e.required&&(t[e.name]=``)});let n=JSON.stringify(t,null,2);I(u,new Map(H(u)).set(e.name,{argsJson:n,running:!1,error:``,resultHtml:``}),!0)}function g(e){let t=e.match(/^data:\s*(\{.*\})\s*$/m);if(!t)throw Error(e.slice(0,300)||`No MCP response body`);return JSON.parse(t[1])}async function _(e,t,n){let r=await fetch(`/mcp`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json, text/event-stream`},body:JSON.stringify({jsonrpc:`2.0`,id:e,method:t,params:n})}),i=await r.text();if(!r.ok)throw Error(i||`HTTP ${r.status}`);return g(i)}async function v(){await _(1,`initialize`,{protocolVersion:`2025-03-26`,capabilities:{},clientInfo:{name:`living-ai-documentation-context`,version:`1.0.0`}})}function y(e){return"```json\n"+JSON.stringify(e,null,2).replaceAll("```","`\\`\\`")+"\n```"}function b(e){if(typeof e!=`string`)return y(e);try{return y(JSON.parse(e))}catch{return e}}function x(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return String(e??``);if(e.error)return y(e.error);let t=e.result;return!t||typeof t!=`object`?y(e):Array.isArray(t.messages)?t.messages.map(e=>`${e.role?`[${e.role}]`:``}\n${b(e.content?.text??e.content??e)}`.trim()).join(`
3
+
4
+ `):Array.isArray(t.content)?t.content.map(e=>e&&e.type===`text`&&typeof e.text==`string`?b(e.text):y(e)).join(`
5
+
6
+ `):y(t)}function S(e){if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}}function C(e){let t=e?.result;if(!t||typeof t!=`object`)return e;if(!Array.isArray(t.content))return t;let n=t.content.map(e=>e&&e.type===`text`&&typeof e.text==`string`?S(e.text):e);return n.length===1?n[0]:n}function w(e,t,n){let r=e.description||Y(`context.empty`),i=e.inputSchema||{},a={jsonrpc:`2.0`,method:`tools/call`,params:{name:e.name,arguments:t}},o=C(n),s=typeof o!=`string`;return[`# MCP tool: \`${e.name}\``,``,`## Description`,``,r,``,`## Schéma d'entrée`,``,y(i),``,`## Requête effectuée`,``,y(a),``,`## Résultat`,``,s?y(o):String(o),``].join(`
7
+ `)}function T(e){if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return String(e??``);if(e.error)return JSON.stringify(e.error,null,2);let t=e.result;return t?.isError?(Array.isArray(t.content)?t.content.map(e=>e&&e.type===`text`&&typeof e.text==`string`?e.text:JSON.stringify(e,null,2)).filter(Boolean):[]).join(`
8
+
9
+ `)||JSON.stringify(t,null,2):JSON.stringify(e,null,2)}async function E(e,t,n){let r=await fetch(`/api/context/mcp-result`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,content:t,kind:n})});if(!r.ok)throw Error(await r.text()||`HTTP ${r.status}`);return r.json()}function D(e){let t=encodeURIComponent(String(e||``).replace(/\.md$/i,``));return`/?doc=`+encodeURIComponent(t)}async function ee(e,t){let n=d(e,t),r={};try{r=n.argsJson.trim()?JSON.parse(n.argsJson):{}}catch{f(e,t,{error:Y(`context.mcp_invalid_json`)});return}f(e,t,{running:!0,error:``,resultHtml:`<span class="mcp-running">${Y(`context.mcp_running`)}</span>`});try{await v();let n=e===`tool`?await _(2,`tools/call`,{name:t,arguments:r}):await _(2,`prompts/get`,{name:t,arguments:r});if(n.error||n.result?.isError){let r=T(n);f(e,t,{running:!1,error:Y(`context.mcp_error`),resultHtml:r?`<pre class="mcp-error-pre">${ne(r)}</pre>`:``});return}let i=e===`tool`?H(o).find(e=>e.name===t):null,{path:a}=await E(t,e===`tool`&&i?w(i,r,n):x(n),e),s=D(a);f(e,t,{running:!1,error:``,resultHtml:`<div class="mcp-saved-label">${ne(Y(`context.mcp_saved_to`))}</div>
10
+ <a href="${ne(s)}" target="_blank" rel="noopener" class="mcp-saved-link">📄 ${ne(a)}</a>`})}catch(n){f(e,t,{running:!1,error:n.message||String(n),resultHtml:``})}}async function te(e){let n=H(e===`tool`?o:s);if(!n.length)return;I(c,!0);let r=n.length;try{for(let i=0;i<n.length;i++)t.onStatus(Y(`context.mcp_running_all`).replace(`{current}`,String(i+1)).replace(`{total}`,String(r))),await ee(e,n[i].name);t.onStatus(Y(`context.mcp_done_all`).replace(`{total}`,String(r)))}finally{I(c,!1)}}function ne(e){return String(e??``).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}async function O(){try{let e=await fetch(`/mcp`);if(!e.ok)throw Error(await e.text());let t=await e.json(),c=Array.isArray(t.tools)?t.tools:[],l=Array.isArray(t.prompts)?t.prompts:[];I(n,Y(`context.mcp_available`),!0),I(r,!0),I(i,t.transport||`-`,!0),I(a,t.endpoint||`POST /mcp`,!0),I(o,c,!0),I(s,l,!0),c.forEach(m),l.forEach(h)}catch{I(n,Y(`context.mcp_unavailable`),!0),I(r,!1),I(i,`-`),I(a,`/mcp`),I(o,[],!0),I(s,[],!0)}}var re={load:O},ie=du(),ae=R(ie),oe=R(ae),se=R(oe,!0);M(oe);var ce=B(oe,2),le=R(ce,!0);M(ce),M(ae);var ue=B(ae,2),de=R(ue,!0);M(ue);var fe=B(ue,2),pe=R(fe),me=R(pe),he=R(me,!0);M(me);var ge=B(me,2),_e=R(ge,!0);M(ge),M(pe);var ve=B(pe,2),ye=R(ve),be=R(ye,!0);M(ye);var xe=B(ye,2),Se=R(xe,!0);M(xe),M(ve);var Ce=B(ve,2),we=R(Ce),Te=R(we,!0);M(we);var Ee=B(we,2),k=R(Ee,!0);M(Ee),M(Ce),M(fe);var De=B(fe,2),Oe=R(De),ke=R(Oe),Ae=R(ke,!0);M(ke);var je=B(ke,2),A=R(je),Me=R(A,!0);M(A);var j=B(A,2),Ne=R(j,!0);M(j),M(je),M(Oe);var Pe=B(Oe,2),Fe=R(Pe),Ie=e=>{var t=ru(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`context.mcp_no_tools`)]),G(e,t)},Le=e=>{var t=Ur();$r(z(t),17,()=>H(o),Yr,(e,t)=>{let n=P(()=>H(l).get(H(t).name)??{argsJson:`{}`,running:!1,error:``,resultHtml:``});var r=su(),i=R(r),a=R(i,!0);M(i);var o=B(i,2),s=e=>{var n=iu(),r=R(n,!0);M(n),V(()=>K(r,H(t).description)),G(e,n)};q(o,e=>{H(t).description&&e(s)});var c=B(o,2),u=e=>{var n=au(),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a,!0);M(a),M(n),V((e,t)=>{K(i,e),K(o,t)},[()=>Y(`context.mcp_input_schema`),()=>JSON.stringify(H(t).inputSchema,null,2)]),G(e,n)};q(c,e=>{H(t).inputSchema&&e(u)});var d=B(c,2),p=R(d),m=R(p,!0);M(p);var h=B(p,2);vn(h);var g=B(h,2),_=R(g),v=R(_,!0);M(_);var y=B(_,2),b=R(y,!0);M(y),M(g);var x=B(g,2),S=e=>{var t=ou();ai(t,()=>H(n).resultHtml,!0),M(t),G(e,t)};q(x,e=>{H(n).resultHtml&&e(S)}),M(d),M(r),V((e,r)=>{K(a,H(t).name),K(m,e),Di(h,H(n).argsJson),K(v,H(n).error),y.disabled=H(n).running,K(b,r)},[()=>Y(`context.mcp_request_json`),()=>Y(`context.mcp_run_tool`)]),U(`input`,h,e=>f(`tool`,H(t).name,{argsJson:e.target.value})),U(`click`,y,()=>ee(`tool`,H(t).name)),G(e,r)}),G(e,t)};q(Fe,e=>{H(o).length?e(Le,-1):e(Ie)}),M(Pe),M(De);var Re=B(De,2),ze=R(Re),Be=R(ze),Ve=R(Be,!0);M(Be);var He=B(Be,2),Ue=R(He),We=R(Ue,!0);M(Ue);var Ge=B(Ue,2),Je=R(Ge,!0);M(Ge),M(He),M(ze);var Ye=B(ze,2),Xe=R(Ye),Ze=e=>{var t=ru(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`context.mcp_no_prompts`)]),G(e,t)},Qe=e=>{var t=Ur();$r(z(t),17,()=>H(s),Yr,(e,t)=>{let n=P(()=>H(u).get(H(t).name)??{argsJson:`{}`,running:!1,error:``,resultHtml:``});var r=su(),i=R(r),a=R(i,!0);M(i);var o=B(i,2),s=e=>{var n=iu(),r=R(n,!0);M(n),V(()=>K(r,H(t).description)),G(e,n)};q(o,e=>{H(t).description&&e(s)});var c=B(o,2),l=e=>{var n=uu(),r=R(n),i=R(r,!0);M(r);var a=B(r,2);$r(a,21,()=>H(t).arguments,Yr,(e,t)=>{var n=lu(),r=R(n),i=R(r),a=R(i,!0);M(i);var o=B(i,2),s=R(o,!0);M(o),M(r);var c=B(r,2),l=e=>{var n=cu(),r=R(n,!0);M(n),V(()=>K(r,H(t).description)),G(e,n)};q(c,e=>{H(t).description&&e(l)}),M(n),V(e=>{K(a,H(t).name),K(s,e)},[()=>H(t).required?Y(`context.mcp_required`):Y(`context.mcp_optional`)]),G(e,n)}),M(a),M(n),V(e=>K(i,e),[()=>Y(`context.mcp_arguments`)]),G(e,n)};q(c,e=>{H(t).arguments?.length&&e(l)});var d=B(c,2),p=R(d),m=R(p,!0);M(p);var h=B(p,2);vn(h);var g=B(h,2),_=R(g),v=R(_,!0);M(_);var y=B(_,2),b=R(y,!0);M(y),M(g);var x=B(g,2),S=e=>{var t=ou();ai(t,()=>H(n).resultHtml,!0),M(t),G(e,t)};q(x,e=>{H(n).resultHtml&&e(S)}),M(d),M(r),V((e,r)=>{K(a,H(t).name),K(m,e),Di(h,H(n).argsJson),K(v,H(n).error),y.disabled=H(n).running,K(b,r)},[()=>Y(`context.mcp_request_json`),()=>Y(`context.mcp_get_prompt`)]),U(`input`,h,e=>f(`prompt`,H(t).name,{argsJson:e.target.value})),U(`click`,y,()=>ee(`prompt`,H(t).name)),G(e,r)}),G(e,t)};return q(Xe,e=>{H(s).length?e(Qe,-1):e(Ze)}),M(Ye),M(Re),M(ie),V((e,t,l,u,d,f,p,m,h,g)=>{K(se,e),K(le,t),K(de,l),K(he,u),hi(ge,1,li(H(r)?`mcp-info-value ok`:`mcp-info-value err`),`svelte-1ui2b6s`),K(_e,H(n)),K(be,d),K(Se,H(i)),K(Te,f),K(k,H(a)),K(Ae,p),K(Me,H(o).length),j.disabled=H(c)||!H(o).length,K(Ne,m),K(Ve,h),K(We,H(s).length),Ge.disabled=H(c)||!H(s).length,K(Je,g)},[()=>Y(`context.mcp_title`),()=>Y(`context.mcp_refresh`),()=>Y(`context.mcp_intro`),()=>Y(`context.mcp_status`),()=>Y(`context.mcp_transport`),()=>Y(`context.mcp_endpoint`),()=>Y(`context.mcp_tools`),()=>Y(`context.mcp_run_all_tools`),()=>Y(`context.mcp_prompts`),()=>Y(`context.mcp_get_all_prompts`)]),U(`click`,ce,O),U(`click`,j,()=>te(`tool`)),U(`click`,Ge,()=>te(`prompt`)),G(e,ie),qe(re)}Nr([`click`,`input`]);var pu=W(`<p class="status-text svelte-rpj1e5"> </p>`),mu=W(`<div class="app-shell"><!> <main class="context-scroll svelte-rpj1e5"><div class="context-inner svelte-rpj1e5"><section class="page-intro svelte-rpj1e5"><h2 class="page-title svelte-rpj1e5"> </h2> <p class="page-desc svelte-rpj1e5"> </p> <!></section> <!> <!> <!></div></main></div> <!>`,1);function hu(e,t){Ke(t,!0);let n=F(``),r=F(L([])),i=F(L([])),a=F(``),o=F(null),s=F(null),c=F(null);function l(e){I(n,e,!0)}async function u(){l(Y(`context.loading`));let e=await fetch(`/api/context/orientation`);if(!e.ok)throw Error(await e.text());let t=await e.json();I(o,t,!0),I(r,t.instructions||[],!0),I(i,t.rules||[],!0),I(a,t.rulesFolder||``,!0),l(``)}async function d(e){l(Y(`context.adding_instruction_file`));let t=await fetch(`/api/context/instructions`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})});if(!t.ok)throw Error(await t.text());await u()}async function f(e){if(!await H(s).show({kicker:Y(`context.remove_instruction_title`),title:Y(`context.remove_instruction_title`),message:Y(`context.remove_instruction_message`).replace(`{name}`,e),confirmLabel:Y(`common.remove`),cancelLabel:Y(`common.cancel`)||`Cancel`,danger:!0}))return;l(Y(`context.removing_instruction_file`));let t=await fetch(`/api/context/instructions/`+encodeURIComponent(e),{method:`DELETE`});if(!t.ok)throw Error(await t.text());await u()}async function p(e){l(Y(`context.saving_rule`));let t=await fetch(`/api/context/rules`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await t.text());await u()}Vi(async()=>{try{let e=await fetch(`/api/config`);await fa((e.ok?await e.json():{}).language||`en`)}catch{await fa(`en`)}document.title=Y(`context.title`),await u().catch(e=>l(e.message)),await H(c).load().catch(()=>{})});var m=mu(),h=z(m),g=R(h);ua(g,{get navigate(){return t.navigate}});var _=B(g,2),v=R(_),y=R(v),b=R(y),x=R(b,!0);M(b);var S=B(b,2),C=R(S,!0);M(S);var w=B(S,2),T=e=>{var t=pu(),r=R(t,!0);M(t),V(()=>K(r,H(n))),G(e,t)};q(w,e=>{H(n)&&e(T)}),M(y);var E=B(y,2);Jl(E,{onAdd:d,onRemove:f,get items(){return H(r)},set items(e){I(r,e,!0)}});var D=B(E,2);nu(D,{get rules(){return H(i)},get rulesFolder(){return H(a)},onAdd:p}),Li(fu(B(D,2),{onStatus:l}),e=>I(c,e,!0),()=>H(c)),M(v),M(_),M(h),Li(Dl(B(h,2),{}),e=>I(s,e,!0),()=>H(s)),V((e,t)=>{K(x,e),K(C,t)},[()=>Y(`context.orientation_title`),()=>Y(`context.orientation_intro`)]),G(e,m),qe()}var gu=W(`<p class="agents-msg svelte-lf8l46"> </p>`),_u=W(`<p class="agents-msg agents-msg--error svelte-lf8l46"> </p>`),vu=W(`<p class="agents-msg agents-msg--empty svelte-lf8l46"> </p>`),yu=W(`<button type="button"><span class="agent-name svelte-lf8l46"> </span> <span class="agent-provider svelte-lf8l46"> </span> <span> </span></button>`),bu=W(`<div class="agents-grid svelte-lf8l46"></div>`),xu=W(`<div class="confirm-overlay"><section class="confirm-dialog agent-input-dialog svelte-lf8l46" 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="agent-input"> </label> <textarea id="agent-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>`),Su=W(`<a class="agent-toast-link svelte-lf8l46"> </a>`),Cu=W(`<div><span class="agent-toast-icon svelte-lf8l46"><!></span> <div class="agent-toast-body svelte-lf8l46"><p class="agent-toast-title svelte-lf8l46"> </p> <p class="agent-toast-message svelte-lf8l46"> </p> <!></div> <button class="agent-toast-close svelte-lf8l46" type="button">×</button></div>`),wu=W(`<div class="app-shell"><!> <div class="agents-page svelte-lf8l46"><!> <!> <!></div></div>`);function Tu(e,t){Ke(t,!0);let n=F(L([])),r=F(!0),i=F(``),a=F(null),o=F(``),s=F(`idle`),c=F(``),l=F(``),u=F(null);function d(e){let t=e.provider;return!t||t.kind!==`llm`||!t.config?.model||!e.config?.systemPrompt||e.config?.requiresUserInput&&!e.config?.userInputDescription?.trim()?`not_ready`:e.config?.requiresUserInput?`requires_input`:`ready`}function f(e){return d(e)===`not_ready`}async function p(){I(r,!0),I(i,``);try{let e=await fetch(`/api/workspace`,{headers:{Accept:`application/json`}});if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json(),r=Array.isArray(t.entities)?t.entities:[],i=new Map(r.map(e=>[e.id,e]));I(n,r.filter(e=>e.kind===`agent`).map(e=>({...e,provider:i.get(e.parentId??``)})),!0)}catch(e){I(i,e instanceof Error?e.message:Y(`agents.load_failed`),!0)}finally{I(r,!1)}}function m(e){f(e)||(e.config?.requiresUserInput?(I(a,e,!0),I(o,``)):_(e.id,``))}function h(){I(a,null),I(o,``)}async function g(){if(!H(a))return;let e=H(a).id;I(a,null),await _(e,H(o))}async function _(e,t){let r=H(n).find(t=>t.id===e);I(u,null),I(s,`loading`),I(c,Y(`agents.loading`),!0),I(l,r?.label??``,!0);try{let n=await fetch(`/api/workspace/run-agent-document`,{method:`POST`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({agentId:e,userInput:t})}),r=await n.json();r.document?.id&&I(u,r.document.id,!0),n.ok&&r.ok?(I(s,`success`),I(c,Y(`agents.success`),!0),I(l,r.document?.filename??``,!0)):(I(s,`error`),I(c,Y(`agents.failure`),!0),I(l,r.error??Y(`agents.run_failed`),!0))}catch(e){I(s,`error`),I(c,Y(`agents.failure`),!0),I(l,e instanceof Error?e.message:Y(`agents.run_failed`),!0)}}Vi(async()=>{try{await fa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}await p()});var v=wu(),y=R(v);{let e=P(()=>Y(`agents.title`)),t=P(()=>Y(`agents.subtitle`));ua(y,{get title(){return H(e)},get subtitle(){return H(t)}})}var b=B(y,2),x=R(b),S=e=>{var t=gu(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},C=e=>{var t=_u(),n=R(t,!0);M(t),V(()=>K(n,H(i))),G(e,t)},w=e=>{var t=vu(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`agents.empty`)]),G(e,t)},T=e=>{var t=bu();$r(t,21,()=>H(n),Yr,(e,t)=>{let n=P(()=>d(H(t))),r=P(()=>f(H(t)));var i=yu();let a;var o=R(i),s=R(o,!0);M(o);var c=B(o,2),l=R(c,!0);M(c);var u=B(c,2),p=R(u,!0);M(u),M(i),V((e,o)=>{a=hi(i,1,`agent-card svelte-lf8l46`,null,a,{"agent-card--disabled":H(r)}),i.disabled=H(r),K(s,H(t).label),K(l,e),hi(u,1,`agent-badge agent-badge--${H(n)??``}`,`svelte-lf8l46`),K(p,o)},[()=>H(t).provider?.label??Y(`agents.no_provider`),()=>Y(`agents.${H(n)}`)]),U(`click`,i,()=>m(H(t))),G(e,i)}),M(t),G(e,t)};q(x,e=>{H(r)?e(S):H(i)?e(C,1):H(n).length===0?e(w,2):e(T,-1)});var E=B(x,2),D=e=>{var t=xu(),n=R(t),r=R(n),i=R(r,!0);M(r);var s=B(r,2),c=R(s,!0);M(s);var l=B(s,2),u=R(l),d=R(u,!0);M(u);var f=B(u,2);vn(f),J(f,`rows`,4),M(l);var p=B(l,2),m=R(p),_=R(m,!0);M(m);var v=B(m,2),y=R(v,!0);M(v),M(p),M(n),M(t),V((e,t,n,r,o,s)=>{K(i,H(a).label),K(c,e),K(d,t),J(f,`placeholder`,n),K(_,r),v.disabled=o,K(y,s)},[()=>H(a).config?.userInputDescription?.trim()||Y(`agents.input_hint`),()=>Y(`agents.input_title`),()=>Y(`agents.input_hint`),()=>Y(`common.cancel`),()=>!H(o).trim(),()=>Y(`agents.run`)]),U(`click`,t,e=>{e.target===e.currentTarget&&h()}),Mi(f,()=>H(o),e=>I(o,e)),U(`click`,m,h),U(`click`,v,g),G(e,t)};q(E,e=>{H(a)&&e(D)});var ee=B(E,2),te=e=>{var t=Cu(),n=R(t),r=R(n),i=e=>{G(e,Hr(`⟳`))},a=e=>{G(e,Hr(`✓`))},o=e=>{G(e,Hr(`!`))};q(r,e=>{H(s)===`loading`?e(i):H(s)===`success`?e(a,1):e(o,-1)}),M(n);var d=B(n,2),f=R(d),p=R(f,!0);M(f);var m=B(f,2),h=R(m,!0);M(m);var g=B(m,2),_=e=>{var t=Su(),n=R(t,!0);M(t),V((e,r)=>{J(t,`href`,`/?doc=${e??``}`),K(n,r)},[()=>encodeURIComponent(H(u)),()=>Y(`agents.open_document`)]),G(e,t)};q(g,e=>{H(u)&&e(_)}),M(d);var v=B(d,2);M(t),V(()=>{hi(t,1,`agent-toast agent-toast--${H(s)??``}`,`svelte-lf8l46`),K(p,H(c)),K(h,H(l))}),U(`click`,v,()=>I(s,`idle`)),G(e,t)};q(ee,e=>{H(s)!==`idle`&&e(te)}),M(b),M(v),G(e,v),qe()}Nr([`click`]);function Eu(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function Du(){try{let e=parseInt(localStorage.getItem(`ld-highlight-status`)||`0`,10);return e===1||e===2?e:0}catch{return 0}}var $=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(Eu(`ld-hide-categories`))),this.#d=F(L(Eu(`ld-hide-attachments`))),this.#f=F(L(Du())),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}};async function Ou(){return fetch(`/api/config`).then(e=>e.json())}async function ku(){return fetch(`/api/documents`).then(e=>e.json())}async function Au(e){return fetch(`/api/browse/alldirs?path=`+encodeURIComponent(e)).then(e=>e.json())}async function ju(e){let t=await fetch(`/api/documents/`+e);if(!t.ok)throw Error(t.statusText);return t.json()}async function Mu(){try{let e=await fetch(`/api/annotations`).then(e=>e.json()),t={};for(let[n,r]of Object.entries(e||{})){t[n]=r;try{t[encodeURIComponent(n)]=r}catch{}}return t}catch{return{}}}async function Nu(){try{return await fetch(`/api/documents/file-counts`).then(e=>e.json())}catch{return{}}}async function Pu(){try{return await fetch(`/api/documents/statuses`).then(e=>e.json())}catch{return{}}}async function Fu(e){return fetch(`/api/documents/search?q=`+encodeURIComponent(e)).then(e=>e.json())}function Iu(e,t,n){let r={categories:{},children:{}};for(let t of e){let e=r;for(let n of t.folder||[])e.children[n]||(e.children[n]={categories:{},children:{}}),e=e.children[n];e.categories[t.category]||(e.categories[t.category]=[]),e.categories[t.category].push(t)}if(!n)return r;for(let e of t){let t=e.split(`/`).filter(Boolean),n=r;for(let e of t)n.children[e]||(n.children[e]={categories:{},children:{}}),n=n.children[e]}return r}function Lu(e){let t=Object.values(e.categories).reduce((e,t)=>e+t.length,0);for(let n of Object.values(e.children))t+=Lu(n);return t}function Ru(e,t){let n=0;for(let r of Object.values(e.categories))for(let e of r)t[e.id]>0&&(n+=1);for(let r of Object.values(e.children))n+=Ru(r,t);return n}function zu(e,t){let n=0;for(let r of Object.values(e.categories))for(let e of r)t[e.id]>0&&(n+=1);for(let r of Object.values(e.children))n+=zu(r,t);return n}function Bu(e){return e.replace(/^\d+_/,``).replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Vu(e){return Object.keys(e.children).sort((e,t)=>e.localeCompare(t))}function Hu(e){return Object.keys(e.categories).filter(e=>e!==`General`).sort((e,t)=>e.localeCompare(t))}function Uu(e){return Object.values(e.categories).flat().sort((e,t)=>(e.filename||``).localeCompare(t.filename||``))}var Wu=W(`<span class="inline-flex items-center justify-center w-5 h-5 rounded-full bg-green-500 text-[10px] font-bold text-white border border-green-600 shadow-sm">V</span>`),Gu=W(`<span class="inline-flex items-center justify-center w-5 h-5 rounded-full bg-orange-500 text-[10px] font-bold text-white border border-orange-600 shadow-sm">S</span>`),Ku=W(`<span class="inline-flex items-center justify-center min-w-[1.25rem] h-5 px-1.5 rounded-full bg-yellow-300 dark:bg-yellow-400 text-[10px] font-bold text-yellow-900 border border-yellow-500 shadow-sm"> </span>`),qu=W(`<span class="inline-flex items-center justify-center min-w-[1.25rem] h-5 px-1.5 rounded-full bg-sky-200 dark:bg-sky-300 text-[10px] font-bold text-sky-900 border border-sky-500 shadow-sm"> </span>`),Ju=W(`<div class="text-xs text-gray-400 dark:text-gray-500 mt-0.5"> </div>`),Yu=W(`<button><div class="leading-snug flex items-center justify-between gap-2"><span class="truncate"> </span> <span class="flex items-center gap-1 shrink-0"><!> <!> <!></span></div> <!></button>`),Xu=W(`<span class="inline-flex items-center justify-center min-w-[1.25rem] h-5 px-1.5 rounded-full bg-orange-400 dark:bg-orange-500 text-[10px] font-bold text-white border border-orange-600 shadow-sm"> </span>`),Zu=W(`<span class="inline-flex items-center justify-center min-w-[1.25rem] h-5 px-1.5 rounded-full bg-slate-400 dark:bg-slate-500 text-[10px] font-bold text-white border border-slate-600 shadow-sm"> </span>`),Qu=W(`<div class="pl-2"></div>`),$u=W(`<div class="mb-0.5"><button class="w-full flex items-center justify-between px-3 py-1.5 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider hover:bg-gray-50 dark:hover:bg-gray-800/60 rounded-md transition-colors"><span class="flex items-center gap-2"><span> </span> <!> <!></span> <span class="flex items-center gap-1.5"><span class="font-normal normal-case text-gray-400"> </span> <span>▸</span></span></button> <!></div>`),ed=W(`<div class="pl-3"><!></div>`),td=W(`<div class="mb-1"><button class="w-full flex items-center justify-between px-3 py-1.5 text-xs font-semibold text-violet-600 dark:text-violet-400 uppercase tracking-wider hover:bg-gray-50 dark:hover:bg-gray-800/60 rounded-md transition-colors"><span class="flex items-center gap-2 min-w-0"><span class="truncate"> </span> <!> <!></span> <span class="flex items-center gap-1.5"><span class="font-normal normal-case text-gray-400"> </span> <span>▸</span></span></button> <!></div>`),nd=W(`<!> <!>`,1),rd=W(`<!> <!> <!>`,1);function id(e,t){Ke(t,!0);let n=(e,n=f)=>{let r=P(()=>$.annotationCounts[n().id]||0),i=P(()=>$.fileAttachmentCounts[n().id]||0),a=P(()=>c(n()));var o=Yu(),l=R(o),u=R(l),d=R(u,!0);M(u);var p=B(u,2),m=R(p),h=e=>{var t=Wu();V(e=>J(t,`title`,e),[()=>Y(`sidebar.status_to_validate`)]),G(e,t)},g=e=>{var t=Gu();V(e=>J(t,`title`,e),[()=>Y(`sidebar.status_superseeded`)]),G(e,t)};q(m,e=>{H(a)===`V`?e(h):H(a)===`S`&&e(g,1)});var _=B(m,2),v=e=>{var t=Ku(),n=R(t,!0);M(t),V(e=>{J(t,`title`,e),K(n,H(r))},[()=>s(H(r),`sidebar.annotation_badge`)]),G(e,t)};q(_,e=>{H(r)>0&&!$.markerHidden&&e(v)});var y=B(_,2),b=e=>{var t=qu(),n=R(t,!0);M(t),V(e=>{J(t,`title`,e),K(n,H(i))},[()=>s(H(i),`sidebar.file_attachment_badge`)]),G(e,t)};q(y,e=>{H(i)>0&&!$.hideAttachments&&e(b)}),M(p),M(l);var x=B(l,2),S=e=>{var t=Ju(),r=R(t,!0);M(t),V(()=>K(r,n().formattedDate)),G(e,t)};q(x,e=>{n().formattedDate&&e(S)}),M(o),V(()=>{J(o,`id`,`item-${n().id??``}`),hi(o,1,`doc-item w-full text-left px-3 py-1.5 rounded-md text-sm transition-colors text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800/60 ${n().id===$.currentDocId?`active`:``}`),K(d,n().title)}),U(`click`,o,()=>t.onopen(n().id)),G(e,o)},r=(e,r=f)=>{let i=P(()=>a(r())),o=P(()=>$.expandedCategories.has(H(i))),c=P(()=>t.node.categories[r()]),l=P(()=>H(c).reduce((e,t)=>e+ +($.annotationCounts[t.id]>0),0)),u=P(()=>H(c).reduce((e,t)=>e+ +($.fileAttachmentCounts[t.id]>0),0));var d=$u(),p=R(d),m=R(p),h=R(m),g=R(h,!0);M(h);var _=B(h,2),v=e=>{var t=Xu(),n=R(t,!0);M(t),V(e=>{J(t,`title`,e),K(n,H(l))},[()=>s(H(l),`sidebar.annotated_docs_badge`)]),G(e,t)};q(_,e=>{H(l)>0&&!$.markerHidden&&e(v)});var y=B(_,2),b=e=>{var t=Zu(),n=R(t,!0);M(t),V(e=>{J(t,`title`,e),K(n,H(u))},[()=>s(H(u),`sidebar.file_attached_docs_badge`)]),G(e,t)};q(y,e=>{H(u)>0&&!$.hideAttachments&&e(b)}),M(m);var x=B(m,2),S=R(x),C=R(S,!0);M(S);var w=B(S,2);M(x),M(p);var T=B(p,2),E=e=>{var t=Qu();$r(t,21,()=>H(c),e=>e.id,(e,t)=>{n(e,()=>H(t))}),M(t),G(e,t)};q(T,e=>{H(o)&&e(E)}),M(d),V(()=>{K(g,r()),K(C,H(c).length),hi(w,1,`transition-transform duration-200 ${H(o)?`rotate-90`:``}`)}),U(`click`,p,()=>$.toggleCategory(H(i))),G(e,d)},i=(e,n=f)=>{let r=P(()=>o(n())),i=P(()=>$.expandedFolders.has(H(r))),a=P(()=>t.node.children[n()]),c=P(()=>Lu(H(a))),l=P(()=>Ru(H(a),$.annotationCounts)),u=P(()=>zu(H(a),$.fileAttachmentCounts));var d=td(),p=R(d),m=R(p),h=R(m),g=R(h);M(h);var _=B(h,2),v=e=>{var t=Xu(),n=R(t,!0);M(t),V(e=>{J(t,`title`,e),K(n,H(l))},[()=>s(H(l),`sidebar.annotated_docs_badge`)]),G(e,t)};q(_,e=>{H(l)>0&&!$.markerHidden&&e(v)});var y=B(_,2),b=e=>{var t=Zu(),n=R(t,!0);M(t),V(e=>{J(t,`title`,e),K(n,H(u))},[()=>s(H(u),`sidebar.file_attached_docs_badge`)]),G(e,t)};q(y,e=>{H(u)>0&&!$.hideAttachments&&e(b)}),M(m);var x=B(m,2),S=R(x),C=R(S,!0);M(S);var w=B(S,2);M(x),M(p);var T=B(p,2),E=e=>{var r=ed(),i=R(r);{let e=P(()=>[...t.folderPath,n()]);id(i,{get node(){return H(a)},get folderPath(){return H(e)},get onopen(){return t.onopen}})}M(r),G(e,r)};q(T,e=>{H(i)&&e(E)}),M(d),V(e=>{J(h,`title`,n()),K(g,`📁 ${e??``}`),K(C,H(c)),hi(w,1,`transition-transform duration-200 ${H(i)?`rotate-90`:``}`)},[()=>Bu(n())]),U(`click`,p,()=>$.toggleFolder(H(r))),G(e,d)};function a(e){return[...t.folderPath,e].join(`|`)}function o(e){return[...t.folderPath,e].join(`|`)}function s(e,t){return`${e} ${Y(t)}${e>1?`s`:``}`}function c(e){if(!$.highlightStatusState)return null;let t=String($.docStatuses[e.id]||``).trim().toLowerCase();return t===`to be validated`?`V`:$.highlightStatusState===2&&t===`superseeded`?`S`:null}var l=Ur(),u=z(l),d=e=>{var r=nd(),a=z(r);$r(a,17,()=>Uu(t.node),e=>e.id,(e,t)=>{n(e,()=>H(t))}),$r(B(a,2),16,()=>Vu(t.node),e=>e,(e,t)=>{i(e,()=>t)}),G(e,r)},p=e=>{var n=rd(),a=z(n),o=e=>{r(e,()=>`General`)};q(a,e=>{t.node.categories.General&&e(o)});var s=B(a,2);$r(s,16,()=>Vu(t.node),e=>e,(e,t)=>{i(e,()=>t)}),$r(B(s,2),16,()=>Hu(t.node),e=>e,(e,t)=>{r(e,()=>t)}),G(e,n)};q(u,e=>{$.hideCategories?e(d):e(p,-1)}),G(e,l),qe()}Nr([`click`]);var ad=W(`<p class="px-4 py-8 text-sm text-gray-400 text-center"> </p>`),od=W(`<aside><div class="sticky top-0 z-10 bg-white dark:bg-gray-900 p-3 border-b border-gray-100 dark:border-gray-800"><div class="relative sm:hidden"><input type="search" class="w-full 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> <div class="flex items-center justify-between mt-2 sm:mt-0"><p class="text-xs text-gray-400 dark:text-gray-500"> </p> <div class="flex items-center gap-2"><button><i class="fa-solid fa-certificate"></i></button> <button><i class="fa-solid fa-paperclip"></i></button> <button><i class="fa-solid fa-tags"></i></button> <button class="text-gray-400 hover:text-blue-500 dark:text-gray-500 dark:hover:text-blue-400 transition-colors leading-none"><i class="fa-solid fa-file-export"></i></button> <button class="text-gray-400 hover:text-blue-500 dark:text-gray-500 dark:hover:text-blue-400 transition-colors leading-none"><i class="fa-solid fa-folder-plus"></i></button> <button class="text-gray-400 hover:text-blue-500 dark:text-gray-500 dark:hover:text-blue-400 transition-colors leading-none"><i class="fa-solid fa-file-circle-plus"></i></button></div></div></div> <nav data-testid="category-tree" class="flex-1 py-2 space-y-0.5"><!></nav> <div aria-hidden="true"></div></aside>`);function sd(e,t){Ke(t,!0);let n=P(()=>Iu($.filteredDocs,$.allFolderPaths,!$.searchQuery)),r=P(()=>$.filteredDocs.length),i=P(()=>$.filteredDocs.length===0&&$.allFolderPaths.length===0),a=`ld-sidebar-w`,o=F(null),s=F(!1),c=F(null);On(()=>{let e=parseInt(localStorage.getItem(a)||``,10);Number.isFinite(e)&&I(o,Math.max(200,Math.min(600,e)),!0)});function l(e){e.preventDefault();let t=e.clientX,n=H(c).getBoundingClientRect().width;I(s,!0),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`;let r=e=>{I(o,Math.max(200,Math.min(600,n+e.clientX-t)),!0)},i=()=>{if(document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i),document.body.style.cursor=``,document.body.style.userSelect=``,I(s,!1),H(o)!=null)try{localStorage.setItem(a,String(H(o)))}catch{}};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}var u=od(),d=R(u),f=R(d),p=R(f);Ei(p),Fe(2),M(f);var m=B(f,2),h=R(m),g=R(h);M(h);var _=B(h,2),v=R(_),y=B(v,2),b=B(y,2),x=B(b,2),S=B(x,2),C=B(S,2);M(_),M(m),M(d);var w=B(d,2),T=R(w),E=e=>{var t=ad(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`sidebar.no_docs`)]),G(e,t)},D=e=>{id(e,{get node(){return H(n)},folderPath:[],get onopen(){return t.onopen}})};q(T,e=>{H(i)?e(E):e(D,-1)}),M(w);var ee=B(w,2);M(u),Li(u,e=>I(c,e),()=>H(c)),V((e,t,n,i,a,c,l)=>{hi(u,1,`no-print ${H(o)==null?`w-72`:``} shrink-0 flex flex-col border-r border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 overflow-y-auto relative`),_i(u,H(o)==null?``:`width:${H(o)}px`),J(p,`placeholder`,e),Di(p,$.searchQuery),K(g,`${H(r)??``} document${H(r)===1?``:`s`}`),J(v,`title`,t),hi(v,1,`hover:opacity-80 transition-colors leading-none ${$.highlightStatusState===0?`text-gray-400 dark:text-gray-500`:$.highlightStatusState===1?`text-green-500 dark:text-green-400`:`text-orange-500 dark:text-orange-400`}`),J(y,`title`,n),hi(y,1,`transition-colors leading-none ${$.hideAttachments?`text-gray-400 dark:text-gray-500`:`text-blue-500 dark:text-blue-400`}`),J(b,`title`,i),hi(b,1,`transition-colors leading-none ${$.hideCategories?`text-gray-400 dark:text-gray-500`:`text-blue-500 dark:text-blue-400`}`),J(x,`title`,a),J(S,`title`,c),J(C,`title`,l),hi(ee,1,`absolute top-0 right-[-2px] w-1.5 h-full cursor-col-resize z-20 select-none transition-colors ${H(s)?`bg-blue-500/55`:`hover:bg-blue-500/35`}`)},[()=>Y(`nav.search_mobile_placeholder`),()=>Y(`nav.toggle_status_highlight`),()=>Y(`nav.toggle_attachments`),()=>Y(`nav.toggle_categories`),()=>Y(`nav.export`),()=>Y(`nav.new_folder`),()=>Y(`nav.new_document`)]),U(`input`,p,e=>t.onsearch(e.target.value)),U(`click`,v,()=>$.cycleHighlightStatus()),U(`click`,y,()=>$.toggleHideAttachments()),U(`click`,b,()=>$.toggleHideCategories()),U(`click`,x,function(...e){t.onexport?.apply(this,e)}),U(`click`,S,function(...e){t.onnewfolder?.apply(this,e)}),U(`click`,C,function(...e){t.onnewdoc?.apply(this,e)}),U(`mousedown`,ee,l),G(e,u),qe()}Nr([`input`,`click`,`mousedown`]);var cd=`(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}(?:\\|[^\\n]*\\|\\n)\\|[ \\t:|-]*-[ \\t:|-]*\\|(?:\\n\\|[^\\n]*\\|)*`;function ld(){return cd}var ud=new Set([`compact`,`striped`]),dd=new Set([`bordered`,`borderless`]),fd=new Set([`bordered`,`borderless`]),pd=new Set([`info`,`success`,`warning`,`danger`,`note`]);function md(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`&&ud.has(i)&&(t=i),e===`style`&&fd.has(i)&&(n=i),e===`border`&&dd.has(i)&&(n=i),e===`color`&&pd.has(i)&&(r=i)}return{style:t,border:n,color:r}}function hd(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 md(t.match(n)?.[0]||``)}function gd(e){let t=md([e?.style?`<!-- table-style: ${e.style} -->`:``,e?.border?`<!-- table-border: ${e.border} -->`:``,e?.color?`<!-- table-color: ${e.color} -->`:``].filter(Boolean).join(`
11
+ `)),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(`
12
+ `)}function _d(e){return e.trim().split(`|`).slice(1,-1).map(e=>e.trim())}function vd(e){let t=_d(e);return t.length>0&&t.every(e=>/^:?-+:?$/.test(e.replace(/\s+/g,``)))}function yd(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(`
13
+ `).filter(e=>/^\|.*\|$/.test(e.trim()));return t.length>=2&&/^\|.*\|$/.test(t[0].trim())&&vd(t[1])}function bd(e){let t=e.replace(/^(`{3,})[^\n]*$([\s\S]*?)^\1[ \t]*$/gm,e=>`
14
+ `.repeat((e.match(/\n/g)??[]).length));return t=t.replace(/^:::compare[ \t]*\n([\s\S]*?)^:::[ \t]*$/gm,e=>`
15
+ `.repeat((e.match(/\n/g)??[]).length)),t}function xd(e){if(typeof e!=`string`)return[];let t=bd(e),n=[],r=RegExp(`((?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3})(\\|[^\\n]*\\|\\n\\|[ \\t:|-]*-[ \\t:|-]*\\|)`,`g`),i;for(;i=r.exec(t);)n.push(md(i[1]||``));return n}var Sd={note:`info`,tip:`success`,caution:`warning`,danger:`error`},Cd=new Set([`info`,`success`,`warning`,`error`,...Object.keys(Sd)]);function wd(e){return Sd[e]??e}var Td=/^<!--\s*quote-type:\s*([a-z][a-z0-9_-]*)\s*-->$/,Ed=/^<!--\s*quote-title:\s*(.+?)\s*-->$/,Dd=/^<!--\s*quote-icon\s*-->$/;function Od(){return`(?:<!--\\s*quote-(?:type|title|icon)[^\\n]*-->\\n+){0,3}>[ \\t][^\\n]*(?:\\n[ \\t]*>.*)*`}function kd(e){if(typeof e!=`string`)return[];let t=[],n=e.split(`
16
+ `),r=null,i=null,a=!1,o=!1,s=!1,c=``,l=0,u=!1;for(let e of n){let n=e.trimEnd();if(/^:::compare[ \t]*$/.test(n)){u=!0,o=!1,r=null,i=null,a=!1;continue}if(u){/^:::[ \t]*$/.test(n)&&(u=!1);continue}let d=/^(`{3,}|~{3,})/.exec(n);if(d){let e=d[1][0],t=d[1].length;if(!s){s=!0,c=e,l=t,o=!1,r=null,i=null,a=!1;continue}else if(e===c&&t>=l&&/^[`~]+[ \t]*$/.test(n)){s=!1,c=``,l=0;continue}}if(s)continue;let f=n.match(Td);if(f){let e=f[1];r=Cd.has(e)?wd(e):null;continue}let p=n.match(Ed);if(p){i=p[1];continue}if(Dd.test(n)){a=!0;continue}if(n.startsWith(`>`)){o||=(t.push({type:r,title:i,icon:a}),r=null,i=null,a=!1,!0);continue}o=!1,n.trim()!==``&&(r=null,i=null,a=!1)}return t}var Ad={info:`<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>`,success:`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"/></svg>`,warning:`<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/></svg>`,error:`<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"/></svg>`};function jd(e){return Ad[wd(e??``)]??Ad.info}var Md=`<svg viewBox="0 0 16 16" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="5" width="8" height="9" rx="1.5"/><path d="M3 11V3a1 1 0 0 1 1-1h7"/></svg>`,Nd=`<svg viewBox="0 0 16 16" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8.5 6.5 12 13 4.5"/></svg>`;function Pd(e,t,n){e.innerHTML=t,Fd(e,n.content),Id(e),Rd(e,n.content),zd(e),e.querySelectorAll(`h1, h2, h3, h4, h5, h6`).forEach(e=>{e.id||=(e.textContent||``).toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}),e.querySelectorAll(`pre code.language-mermaid`).forEach(e=>{let t=e.textContent||``,n=document.createElement(`div`);n.className=`mermaid my-4`,n.textContent=t,e.closest(`pre`)?.replaceWith(n)}),window.mermaid&&e.querySelector(`.mermaid`)&&window.mermaid.run({nodes:e.querySelectorAll(`.mermaid`)}),e.querySelectorAll(`pre code`).forEach(e=>{window.hljs?.highlightElement(e)}),Ld(e,n.t),Bd(e,n.codeBlockMaxHeight,n.t),e.querySelectorAll(`a[href]`).forEach(e=>{let t=e.getAttribute(`href`),r=t&&t.match(/[?&]doc=([^&#]+)/);if(!r)return;let i=t.indexOf(`#`),a=i===-1?null:t.slice(i+1);e.addEventListener(`click`,e=>{e.preventDefault(),n.onDocLink(decodeURIComponent(r[1]),a)})}),e.querySelectorAll(`a[href^="#"]`).forEach(e=>{let t=e.getAttribute(`href`);!t||t.length<2||e.addEventListener(`click`,e=>{e.preventDefault(),n.onAnchor(t.slice(1))})}),e.querySelectorAll(`table`).forEach(e=>{let t=document.createElement(`div`);t.className=`overflow-x-auto`,e.parentNode?.insertBefore(t,e),t.appendChild(e)})}function Fd(e,t){let n=xd(typeof t==`string`?t:``);Array.from(e.querySelectorAll(`table`)).filter(e=>!e.closest(`.ld-compare-render`)).forEach((e,t)=>{let r=n[t];r&&(r.style&&(e.classList.add(`table-style-${r.style}`),e.dataset.tableStyle=r.style),r.border&&(e.classList.add(`table-border-${r.border}`),e.dataset.tableBorder=r.border),r.color&&(e.classList.add(`table-color-${r.color}`),e.dataset.tableColor=r.color))})}function Id(e){e.querySelectorAll(`table th, table td`).forEach(e=>{(e.textContent||``).trim()===``&&(e.textContent=`\xA0`)})}function Ld(e,t){let n=t(`doc.code_copy`)||`Copy`,r=t(`doc.code_copied`)||`Copied!`;e.querySelectorAll(`pre`).forEach(e=>{let t=e.querySelector(`code`);if(!t||e.querySelector(`.ld-code-copy`))return;let i=document.createElement(`button`);i.type=`button`,i.className=`ld-code-copy`,i.title=n,i.setAttribute(`aria-label`,n),i.innerHTML=Md,i.addEventListener(`click`,async e=>{e.preventDefault(),e.stopPropagation();try{await navigator.clipboard.writeText(t.innerText)}catch{let e=document.createElement(`textarea`);e.value=t.innerText,e.style.position=`fixed`,e.style.opacity=`0`,document.body.appendChild(e),e.select();try{document.execCommand(`copy`)}catch{}document.body.removeChild(e)}i.classList.add(`ld-copied`),i.title=r,i.innerHTML=Nd,setTimeout(()=>{i.classList.remove(`ld-copied`),i.title=n,i.innerHTML=Md},1500)}),e.appendChild(i)})}function Rd(e,t){let n=kd(typeof t==`string`?t:``);Array.from(e.querySelectorAll(`blockquote`)).filter(e=>!e.closest(`.ld-compare-render`)).forEach((e,t)=>{let r=n[t];if(!r||!r.type&&!r.title&&!r.icon)return;e.classList.add(`ld-callout`),r.type&&e.classList.add(`ld-callout-${r.type}`);let i=r.icon,a=typeof r.title==`string`&&r.title.trim()!==``;if(i&&!a){let t=e.querySelector(`p`),n=document.createElement(`span`);n.className=`ld-callout-icon ld-callout-icon-inline`,n.innerHTML=jd(r.type),t?t.insertBefore(n,t.firstChild):e.insertBefore(n,e.firstChild);return}if(!i&&!a)return;let o=document.createElement(`div`);if(o.className=`ld-callout-header`,i){let e=document.createElement(`span`);e.className=`ld-callout-icon`,e.innerHTML=jd(r.type),o.appendChild(e)}if(a){let e=document.createElement(`span`);e.className=`ld-callout-title`,e.textContent=r.title,o.appendChild(e)}e.insertBefore(o,e.firstChild)})}function zd(e){e.querySelectorAll(`.ld-compare-render[data-compare-source]`).forEach(e=>{let t=e.dataset.compareSource??``;if(!t)return;let n=decodeURIComponent(t),r=xd(n);e.querySelectorAll(`table`).forEach((e,t)=>{let n=r[t];if(!n)return;let i=e;n.style&&(i.classList.add(`table-style-${n.style}`),i.dataset.tableStyle=n.style),n.border&&(i.classList.add(`table-border-${n.border}`),i.dataset.tableBorder=n.border),n.color&&(i.classList.add(`table-color-${n.color}`),i.dataset.tableColor=n.color)});let i=kd(n);e.querySelectorAll(`blockquote`).forEach((e,t)=>{let n=i[t];if(!n||!n.type&&!n.title&&!n.icon)return;e.classList.add(`ld-callout`),n.type&&e.classList.add(`ld-callout-${n.type}`);let r=n.icon,a=typeof n.title==`string`&&n.title.trim()!==``;if(r&&!a){let t=e.querySelector(`p`),r=document.createElement(`span`);r.className=`ld-callout-icon ld-callout-icon-inline`,r.innerHTML=jd(n.type),t?t.insertBefore(r,t.firstChild):e.insertBefore(r,e.firstChild);return}if(!r&&!a)return;let o=document.createElement(`div`);if(o.className=`ld-callout-header`,r){let e=document.createElement(`span`);e.className=`ld-callout-icon`,e.innerHTML=jd(n.type),o.appendChild(e)}if(a){let e=document.createElement(`span`);e.className=`ld-callout-title`,e.textContent=n.title,o.appendChild(e)}e.insertBefore(o,e.firstChild)})})}function Bd(e,t,n){if(typeof t!=`number`||t<=0)return;let r=n(`doc.code_show_more`)||`▾ Show more`,i=n(`doc.code_show_less`)||`▴ Show less`;e.querySelectorAll(`pre`).forEach(e=>{if(!e.querySelector(`code`)||e.scrollHeight<=t+8)return;e.classList.add(`ld-collapsible`);let n=document.createElement(`button`);n.type=`button`,n.className=`ld-code-toggle`,n.textContent=r,n.addEventListener(`click`,t=>{t.preventDefault(),n.textContent=e.classList.toggle(`ld-expanded`)?i:r}),e.appendChild(n)})}var Vd=`background:rgba(250,204,21,0.5);border-radius:2px;cursor:pointer;padding:0 1px;`;function Hd(e,t,n){e.querySelectorAll(`mark[data-annotation-id]`).forEach(e=>{let t=e.parentNode;t.replaceChild(document.createTextNode(e.textContent||``),e),t.normalize()});for(let n of t)Wd(e,n);e.querySelectorAll(`mark[data-annotation-id]`).forEach(e=>{(e.textContent||``).trim()||e.remove()}),n&&Ud(e,!1)}function Ud(e,t){e.querySelectorAll(`mark[data-annotation-id]`).forEach(e=>{let n=e;n.style.background=t?`rgba(250,204,21,0.5)`:`transparent`,n.style.cursor=t?`pointer`:`default`,n.style.pointerEvents=t?`auto`:`none`})}function Wd(e,t){let n=(t.selectedText||``).replace(/\s+/g,` `).trim(),r=(t.contextBefore||``).replace(/\s+/g,` `).trim(),i=(t.contextAfter||``).replace(/\s+/g,` `).trim();if(!n)return;let a=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),o=e=>e.split(/\s+/).filter(Boolean).map(a).join(`\\s+`),s=e.textContent||``,c=o(n),l=null;if(r||i){let e=(r?o(r)+`\\s*`:``)+`(`+c+`)`+(i?`\\s*`+o(i):``);try{l=new RegExp(e,`d`).exec(s)}catch{}}if(!l)try{l=RegExp(`(`+c+`)`,`d`).exec(s)}catch{return}let u=l&&l.indices;if(!l||!u||!u[1])return;let[d,f]=u[1],p=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),m=[],h=0;for(;p.nextNode();){let e=p.currentNode,t=e.nodeValue.length,n=h,r=h+t;if(h=r,r<=d)continue;if(n>=f)break;let i=Math.max(0,d-n),a=Math.min(t,f-n);i<a&&m.push({node:e,start:i,end:a})}for(let{node:e,start:n,end:r}of m){let i=e;n>0&&n<i.nodeValue.length&&(i=i.splitText(n));let a=r-n;a>0&&a<i.nodeValue.length&&i.splitText(a);let o=document.createElement(`mark`);o.setAttribute(`data-annotation-id`,t.id),o.setAttribute(`style`,Vd),i.parentNode.insertBefore(o,i),o.appendChild(i)}}var Gd=W(`<div class="fixed z-50 w-80 bg-yellow-50 dark:bg-yellow-900/80 border-2 border-yellow-300 dark:border-yellow-600 rounded-xl shadow-2xl p-4 flex flex-col gap-3"><div class="text-xs font-semibold text-yellow-700 dark:text-yellow-300 flex items-center gap-2"><span>✎</span><span> </span></div> <div class="text-xs text-yellow-800 dark:text-yellow-200 bg-yellow-100 dark:bg-yellow-800/50 rounded px-2 py-1 italic max-h-16 overflow-y-auto border border-yellow-200 dark:border-yellow-700"> </div> <textarea rows="4" class="w-full text-sm rounded-lg border border-yellow-300 dark:border-yellow-600 bg-white dark:bg-yellow-950 text-gray-900 dark:text-gray-100 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-yellow-400 resize-none"></textarea> <div class="flex justify-end gap-2"><button class="text-sm px-3 py-1.5 rounded-lg border border-yellow-300 dark:border-yellow-600 text-yellow-700 dark:text-yellow-300 hover:bg-yellow-100 dark:hover:bg-yellow-800 transition-colors"> </button> <button class="text-sm px-4 py-1.5 rounded-lg bg-yellow-400 hover:bg-yellow-500 dark:bg-yellow-600 dark:hover:bg-yellow-500 text-yellow-900 dark:text-white font-semibold transition-colors"> </button></div></div>`),Kd=W(`<div class="text-xs font-semibold text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-900/30 border border-red-200 dark:border-red-700 rounded px-2 py-1"> </div>`),qd=W(`<div class="fixed z-50 w-80 bg-yellow-50 dark:bg-yellow-900/80 border-2 border-yellow-300 dark:border-yellow-600 rounded-xl shadow-2xl p-4 flex flex-col gap-2"><div class="text-xs font-semibold text-yellow-700 dark:text-yellow-300 flex items-center gap-2"><span>✎</span><span class="font-normal text-yellow-600 dark:text-yellow-400"> </span></div> <!> <div class="text-sm text-gray-800 dark:text-gray-100 whitespace-pre-wrap max-h-48 overflow-y-auto"> </div> <div class="flex justify-end pt-1 border-t border-yellow-200 dark:border-yellow-700"><button class="text-xs px-3 py-1.5 rounded-lg border border-red-200 dark:border-red-700 text-red-500 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/40 transition-colors flex items-center gap-1"> </button></div></div>`),Jd=W(`<div class="fixed z-50 w-72 bg-white dark:bg-gray-900 border border-red-200 dark:border-red-700 rounded-xl shadow-2xl p-4 flex flex-col gap-3"><p class="text-sm text-gray-700 dark:text-gray-200"> </p> <div class="flex justify-end gap-2"><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"> </button> <button class="text-sm px-4 py-1.5 rounded-lg bg-red-500 hover:bg-red-600 text-white font-semibold transition-colors"> </button></div></div>`),Yd=W(`<button> </button>`),Xd=W(`<div class="fixed top-14 right-0 w-10 flex flex-col items-center py-2 gap-2 z-40 overflow-y-auto" style="max-height: calc(100vh - 3.5rem)"></div>`),Zd=W(`<!> <!> <!> <!>`,1);function Qd(e,t){Ke(t,!0);let n=F(L([])),r=F(null),i=F(``),a=F(null),o=F(null),s=F(L([])),c=null;Vi(()=>{let e=document.getElementById(`home-content-area`);if(!e)return;let t=()=>{c&&clearTimeout(c),I(a,null)};return e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)});function l(e,t,n=320,r=260){let i=window.innerWidth,a=window.innerHeight,o=e;return o+n>i-16&&(o=i-n-16),o<8&&(o=8),{x:o,y:Math.min(t,a-r)}}async function u(e){I(n,[],!0);try{I(n,await fetch(`/api/annotations/`+encodeURIComponent(e)).then(e=>e.json()),!0)}catch{I(n,[],!0)}d()}function d(){t.contentEl&&(Hd(t.contentEl,H(n),$.markerHidden),f())}On(()=>{t.contentEl&&Ud(t.contentEl,!$.markerHidden)});function f(){if(!t.contentEl){I(s,[],!0);return}I(s,H(n).map(e=>({id:e.id,note:e.note.length>60?e.note.slice(0,60)+`…`:e.note,orphan:!t.contentEl.querySelector(`mark[data-annotation-id="${e.id}"]`)})),!0)}function p(){if(!$.markerActive||H(r)||!t.contentEl)return;let e=window.getSelection();if(!e||e.isCollapsed||!e.toString().trim()||!t.contentEl.contains(e.anchorNode))return;let n=e.getRangeAt(0),a=document.createRange();a.selectNodeContents(t.contentEl),a.setEnd(n.startContainer,n.startOffset);let o=a.toString().length,s=n.toString(),c=t.contentEl.textContent||``,u=e=>e.replace(/\s+/g,` `).trim(),d=u(s),f=u(c.slice(Math.max(0,o-30),o)),p=u(c.slice(o+s.length,o+s.length+30)),m=n.getBoundingClientRect(),h=l(m.left,m.bottom+8);I(r,{x:h.x,y:h.y,preview:d.length>120?d.slice(0,120)+`…`:d,selectedText:d,contextBefore:f,contextAfter:p},!0),I(i,``)}function m(){I(r,null),window.getSelection()?.removeAllRanges()}async function h(){if(!H(r)||!t.docId)return;let e=H(i).trim();if(e)try{let i=await fetch(`/api/annotations/`+encodeURIComponent(t.docId),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({selectedText:H(r).selectedText,contextBefore:H(r).contextBefore,contextAfter:H(r).contextAfter,note:e})}).then(e=>e.json());I(n,[...H(n),i],!0),m(),d(),$.annotationCounts={...$.annotationCounts,[t.docId]:($.annotationCounts[t.docId]||0)+1}}catch{}}On(()=>{if(!t.contentEl)return;let e=t.contentEl,r=e=>{let t=e.target.closest(`mark[data-annotation-id]`);if(!t)return;let r=H(n).find(e=>e.id===t.dataset.annotationId);r&&g(r,t)},i=e=>{let t=e;t.target.closest(`mark[data-annotation-id]`)&&(t.relatedTarget&&t.relatedTarget.closest?.(`mark[data-annotation-id]`)||_())};return e.addEventListener(`mouseover`,r),e.addEventListener(`mouseout`,i),()=>{e.removeEventListener(`mouseover`,r),e.removeEventListener(`mouseout`,i)}});function g(e,n){c&&clearTimeout(c);let r=!t.contentEl?.querySelector(`mark[data-annotation-id="${e.id}"]`),i=n.getBoundingClientRect(),o=l(i.left,i.bottom+8);I(a,{ann:e,x:o.x,y:o.y,orphan:r},!0)}function _(){c=window.setTimeout(()=>{I(a,null)},1500)}function v(){H(a)&&(I(o,{id:H(a).ann.id,x:H(a).x,y:H(a).y},!0),I(a,null))}async function y(){if(!H(o)||!t.docId)return;let e=H(o).id;try{await fetch(`/api/annotations/${encodeURIComponent(t.docId)}/${e}`,{method:`DELETE`}),I(n,H(n).filter(t=>t.id!==e),!0),I(o,null),d();let r=($.annotationCounts[t.docId]||0)-1,i={...$.annotationCounts};r<=0?delete i[t.docId]:i[t.docId]=r,$.annotationCounts=i}catch{}}function b(e,t){return e.getBoundingClientRect().top+t.scrollTop-t.getBoundingClientRect().top}function x(e,t){let n=e.parentElement;for(;n&&n!==t;)n.tagName===`DETAILS`&&(n.open=!0),n=n.parentElement}function S(e,r){let i=t.contentEl?.querySelector(`mark[data-annotation-id="${e}"]`),o=document.getElementById(`home-content-area`);if(i&&o){if(H(a)?.ann.id===e){c&&clearTimeout(c);return}x(i,o),o.scrollTo({top:b(i,o)-o.clientHeight/2,behavior:`smooth`})}else{let t=H(n).find(t=>t.id===e);t&&g(t,r.currentTarget)}}function C(e,r){c&&clearTimeout(c);let i=H(n).find(t=>t.id===e);if(!i)return;let a=t.contentEl?.querySelector(`mark[data-annotation-id="${e}"]`),o=document.getElementById(`home-content-area`);if(!a||!o){g(i,r.currentTarget);return}x(a,o),o.scrollTo({top:b(a,o)-o.clientHeight/2,behavior:`smooth`});let s,l=()=>{clearTimeout(s),s=window.setTimeout(()=>{o.removeEventListener(`scroll`,l),g(i,a)},80)};o.addEventListener(`scroll`,l),s=window.setTimeout(()=>{o.removeEventListener(`scroll`,l),g(i,a)},600)}function w(e){let t=H(a)?.ann.id===e.id;return e.orphan?t?`#b91c1c`:`#ef4444`:t?`#f97316`:`#facc15`}function T(e){return new Date(e).toLocaleDateString(`fr-FR`,{day:`2-digit`,month:`short`,year:`numeric`})}var E={load:u,apply:d},D=Zd();Mr(`mouseup`,an,p);var ee=z(D),te=e=>{var t=Gd(),n=R(t),a=B(R(n)),o=R(a,!0);M(a),M(n);var s=B(n,2),c=R(s,!0);M(s);var l=B(s,2);vn(l),_n(l,!0);var u=B(l,2),d=R(u),f=R(d,!0);M(d);var p=B(d,2),g=R(p,!0);M(p),M(u),M(t),V((e,n,i,a)=>{_i(t,`left:${H(r).x??``}px;top:${H(r).y??``}px`),K(o,e),K(c,H(r).preview),J(l,`placeholder`,n),K(f,i),K(g,a)},[()=>Y(`annotation.title`),()=>Y(`annotation.placeholder`),()=>Y(`common.cancel`),()=>Y(`annotation.save_btn`)]),Mi(l,()=>H(i),e=>I(i,e)),U(`click`,d,m),U(`click`,p,h),G(e,t)};q(ee,e=>{H(r)&&e(te)});var ne=B(ee,2),O=e=>{var t=qd(),n=R(t),r=B(R(n)),i=R(r,!0);M(r),M(n);var o=B(n,2),s=e=>{var t=Kd(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`annotation.orphan`)]),G(e,t)};q(o,e=>{H(a).orphan&&e(s)});var l=B(o,2),u=R(l,!0);M(l);var d=B(l,2),f=R(d),p=R(f,!0);M(f),M(d),M(t),V((e,n)=>{_i(t,`left:${H(a).x??``}px;top:${H(a).y??``}px`),K(i,e),K(u,H(a).ann.note),K(p,n)},[()=>T(H(a).ann.createdAt),()=>Y(`annotation.delete_btn`)]),Mr(`mouseenter`,t,()=>{c&&clearTimeout(c)}),Mr(`mouseleave`,t,_),U(`click`,f,v),G(e,t)};q(ne,e=>{H(a)&&e(O)});var re=B(ne,2),ie=e=>{var t=Jd(),n=R(t),r=R(n,!0);M(n);var i=B(n,2),a=R(i),s=R(a,!0);M(a);var c=B(a,2),l=R(c,!0);M(c),M(i),M(t),V((e,n,i)=>{_i(t,`left:${H(o).x??``}px;top:${H(o).y??``}px`),K(r,e),K(s,n),K(l,i)},[()=>Y(`annotation.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`annotation.confirm_btn`)]),U(`click`,a,()=>I(o,null)),U(`click`,c,y),G(e,t)};q(re,e=>{H(o)&&e(ie)});var ae=B(re,2),oe=e=>{var t=Xd();$r(t,21,()=>H(s),e=>e.id,(e,t)=>{var n=Yd(),r=R(n,!0);M(n),V((e,i)=>{J(n,`title`,e),hi(n,1,`w-8 h-8 rounded border-2 shadow text-xs flex items-center justify-center transition-colors shrink-0 ${H(t).orphan?`border-red-600 text-white`:`border-yellow-500`}`),_i(n,`background:${i??``}`),K(r,H(t).orphan?`⚠`:`✎`)},[()=>H(t).orphan?`${Y(`annotation.orphan`)}\n\n${H(t).note}`:H(t).note,()=>w(H(t))]),U(`click`,n,e=>S(H(t).id,e)),Mr(`mouseenter`,n,e=>C(H(t).id,e)),Mr(`mouseleave`,n,_),G(e,n)}),M(t),G(e,t)};return q(ae,e=>{H(s).length>0&&!$.markerHidden&&e(oe)}),G(e,D),qe(E)}Nr([`click`]);var $d=`#dc2626`,ef=`#eab308`,tf=`#16a34a`;function nf(e){let t=Math.max(0,Math.min(1,e))*100;return t>80?tf:t>=60?ef:t>=40?`#f97316`:$d}function rf(e){let t=Math.max(0,Math.min(1,e))*100;return t>=100?tf:t<30?$d:t<60?`linear-gradient(to right, ${$d} 0%, ${$d} 60%, ${ef} 100%)`:t<80?`linear-gradient(to right, ${$d} 0%, ${ef} 40%, ${ef} 100%)`:`linear-gradient(to right, ${ef} 0%, ${tf} 40%, ${tf} 100%)`}var af=new class{#e;get report(){return H(this.#e)}set report(e){I(this.#e,e,!0)}constructor(){this.#e=F(null)}async load(e){if(!e)return this.report=null,null;try{let t=await fetch(`/api/metadata/`+encodeURIComponent(e));if(!t.ok)throw Error(t.statusText);this.report=await t.json()}catch{this.report=null}return this.report}async refresh(e){let t=await fetch(`/api/metadata/`+encodeURIComponent(e)+`/refresh`,{method:`POST`});if(!t.ok)throw Error(t.statusText);this.report=await t.json()}async addPath(e,t){let n=await fetch(`/api/metadata/`+encodeURIComponent(e),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||n.statusText)}this.report=await n.json()}async removePath(e,t){let n=await fetch(`/api/metadata/`+encodeURIComponent(e),{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t})});if(!n.ok)throw Error(n.statusText);this.report=await n.json()}},of=W(`<div data-testid="accuracy-gauge" class="no-print mt-5 flex items-center gap-3 mr-auto w-full sm:w-80 cursor-pointer select-none"><span class="text-xs text-gray-500 dark:text-gray-400 shrink-0"> </span> <div class="flex-1 h-4 rounded-full bg-gray-200 dark:bg-gray-700 overflow-hidden"><div class="h-full w-full transition-all"></div></div> <span data-testid="accuracy-gauge-value" class="text-xs font-semibold shrink-0 tabular-nums"> </span></div>`);function sf(e,t){Ke(t,!0);let n=P(()=>af.report),r=P(()=>H(n)?Math.round(H(n).accuracy*100):0),i=P(()=>H(n)?Y(`accuracy.tooltip`).replace(`{unchanged}`,String(H(n).unchanged)).replace(`{modified}`,String(H(n).modified)).replace(`{missing}`,String(H(n).missing)).replace(`{total}`,String(H(n).total)):``);var a=Ur(),o=z(a),s=e=>{var a=of(),o=R(a),s=R(o,!0);M(o);var c=B(o,2),l=R(c);M(c);var u=B(c,2),d=R(u);M(u),M(a),V((e,t,n)=>{J(a,`title`,H(i)),K(s,e),_i(l,`background:${t??``}`),_i(u,`color:${n??``}`),K(d,`${H(r)??``}%`)},[()=>Y(`accuracy.label`),()=>rf(H(n).accuracy),()=>nf(H(n).accuracy)]),U(`click`,a,function(...e){t.onopen?.apply(this,e)}),G(e,a)};q(o,e=>{H(n)&&H(n).total>0&&e(s)}),G(e,a),qe()}Nr([`click`]);var cf=/^(\s*(?:\*\*status:\*\*|status:)\s*).+?\s*$/im;function lf(e){if(typeof e!=`string`)return null;let t=e.match(/^---\s*\n([\s\S]*?)\n---/);if(!t)return null;let n=t[1].match(/^\s*(?:\*\*status:\*\*|status:)\s*(.+?)\s*$/im);return n?n[1].trim():null}function uf(e,t){return e.replace(cf,`$1${t}`)}function df(e){return/%5BWORKLOG%5D/i.test(e)}var ff=W(`<div data-testid="metadata-readonly-banner" class="text-xs text-amber-800 dark:text-amber-200 bg-amber-50 dark:bg-amber-900/30 border-l-4 border-amber-500 rounded-r px-3 py-2"> </div>`),pf=W(`<div class="px-3 py-4 text-center text-xs text-gray-400"> </div>`),mf=W(`<span class="inline-flex items-center gap-1 text-xs font-semibold px-2 py-0.5 rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><i class="fa-solid fa-check"></i> </span>`),hf=W(`<span class="inline-flex items-center gap-1 text-xs font-semibold px-2 py-0.5 rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300"><i class="fa-solid fa-triangle-exclamation"></i> </span>`),gf=W(`<span class="inline-flex items-center gap-1 text-xs font-semibold px-2 py-0.5 rounded-full bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300"><i class="fa-solid fa-circle-xmark"></i> </span>`),_f=W(`<button class="metadata-row-remove text-xs px-2 py-1 rounded-lg border border-red-200 dark:border-red-700 text-red-500 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/40 transition-colors"><i class="fa-solid fa-trash"></i></button>`),vf=W(`<div class="flex items-center gap-2 px-3 py-2 border-b border-gray-100 dark:border-gray-800"><div class="flex-1 min-w-0"><div class="text-sm font-mono truncate text-gray-800 dark:text-gray-200"> </div></div> <!> <!></div>`),yf=W(`<div class="flex items-center gap-2 flex-wrap"><button data-testid="metadata-add-btn" class="text-sm px-3 py-1.5 rounded-lg border border-blue-200 dark:border-blue-700 text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30 transition-colors"><i class="fa-solid fa-plus"></i> </button> <button data-testid="metadata-refresh-btn" 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"><i class="fa-solid fa-arrows-rotate"></i> </button></div>`),bf=W(`<div class="px-3 py-2 text-xs text-gray-400"> </div>`),xf=W(`<div class="px-3 py-2 text-xs text-red-500"> </div>`),Sf=W(`<button class="w-full text-left px-3 py-1.5 text-sm hover:bg-gray-50 dark:hover:bg-gray-800 flex items-center gap-2"><i class="fa-solid fa-folder text-yellow-500"></i> <span class="truncate"> </span></button>`),Cf=W(`<button class="w-full text-left px-3 py-1.5 text-sm hover:bg-blue-50 dark:hover:bg-blue-900/30 flex items-center gap-2"><i class="fa-solid fa-file text-gray-400"></i> <span class="truncate"> </span> <i class="fa-solid fa-plus ml-auto text-blue-500 text-xs"></i></button>`),wf=W(`<!> <!>`,1),Tf=W(`<div class="border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden text-sm"><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"> </button> <span class="text-xs text-gray-500 dark:text-gray-400 font-mono truncate flex-1"> </span></div> <div class="max-h-56 overflow-y-auto divide-y divide-gray-100 dark:divide-gray-800"><!></div></div>`),Ef=W(`<p class="text-xs text-red-500"> </p>`),Df=W(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/50"><div data-testid="metadata-modal" class="bg-white dark:bg-gray-900 rounded-xl shadow-xl w-full max-w-2xl mx-4 p-6 space-y-4"><div class="flex items-start justify-between gap-4"><div><h3 class="text-base font-semibold text-gray-900 dark:text-gray-50"><i class="fa-solid fa-code-compare mr-1"></i> </h3> <p class="text-xs text-gray-500 dark:text-gray-400 mt-1"> </p></div> <button class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors"><i class="fa-solid fa-xmark text-lg"></i></button></div> <div class="text-xs text-gray-600 dark:text-gray-300 bg-gray-50 dark:bg-gray-800 rounded-lg px-3 py-2"></div> <!> <div data-testid="metadata-list" class="border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden"><div class="max-h-64 overflow-y-auto"><!></div></div> <!> <!> <!> <div class="flex justify-end"><button class="text-sm px-4 py-2 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"> </button></div></div></div>`);function Of(e,t){Ke(t,!0);let n=P(()=>af.report),r=P(()=>lf(t.content)===`SuperSeeded`),i=F(``),a=F(!1),o=F(!1),s=F(``),c=F(null),l=F(L([])),u=F(L([])),d=F(!1),f=F(``);On(()=>{t.open||(I(o,!1),I(s,``),I(i,``))});function p(e){I(i,Y(`common.error_prefix`)+e),setTimeout(()=>{I(i,``)},5e3)}function m(){return!H(n)||H(n).total===0?``:`<span class="font-semibold">${Math.round(H(n).accuracy*100)}%</span> · ${H(n).unchanged}/${H(n).total} ${Y(`metadata.status.unchanged`)} · ${H(n).modified} ${Y(`metadata.status.modified`)} · ${H(n).missing} ${Y(`metadata.status.missing`)}`}async function h(){I(a,!0);try{await af.refresh(t.docId)}catch(e){p(e instanceof Error?e.message:String(e))}finally{I(a,!1)}}async function g(e){try{await af.removePath(t.docId,e),H(o)&&y(H(s))}catch(e){p(e instanceof Error?e.message:String(e))}}async function _(e){try{await af.addPath(t.docId,e),H(o)&&y(H(s))}catch(e){p(e instanceof Error?e.message:String(e))}}function v(){I(o,!H(o)),H(o)&&y(``)}async function y(e){I(d,!0),I(f,``);try{let t=await fetch(`/api/browse-source?path=`+encodeURIComponent(e||``));if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||t.statusText)}let r=await t.json();I(s,r.current||``,!0),I(c,r.parent,!0),I(l,r.dirs||[],!0);let i=new Set((H(n)?.items||[]).map(e=>e.path));I(u,(r.files||[]).filter(e=>!i.has(e.path)),!0)}catch(e){I(f,e instanceof Error?e.message:String(e),!0)}finally{I(d,!1)}}function b(){H(c)!==null&&y(H(c))}var x=Ur(),S=z(x),C=e=>{var p=Df(),x=R(p),S=R(x),C=R(S),w=R(C),T=B(R(w));M(w);var E=B(w,2),D=R(E,!0);M(E),M(C);var ee=B(C,2);M(S);var te=B(S,2);ai(te,m,!0),M(te);var ne=B(te,2),O=e=>{var t=ff(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`metadata.readonly_banner`)]),G(e,t)};q(ne,e=>{H(r)&&e(O)});var re=B(ne,2),ie=R(re),ae=R(ie),oe=e=>{var t=pf(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`metadata.empty`)]),G(e,t)},se=e=>{var t=Ur();$r(z(t),17,()=>H(n).items,e=>e.path,(e,t)=>{var n=vf(),i=R(n),a=R(i),o=R(a,!0);M(a),M(i);var s=B(i,2),c=e=>{var t=mf(),n=B(R(t));M(t),V(e=>K(n,` ${e??``}`),[()=>Y(`metadata.status.unchanged`)]),G(e,t)},l=e=>{var t=hf(),n=B(R(t));M(t),V(e=>K(n,` ${e??``}`),[()=>Y(`metadata.status.modified`)]),G(e,t)},u=e=>{var t=gf(),n=B(R(t));M(t),V(e=>K(n,` ${e??``}`),[()=>Y(`metadata.status.missing`)]),G(e,t)};q(s,e=>{H(t).status===`unchanged`?e(c):H(t).status===`modified`?e(l,1):e(u,-1)});var d=B(s,2),f=e=>{var n=_f();V(e=>J(n,`title`,e),[()=>Y(`metadata.remove`)]),U(`click`,n,()=>g(H(t).path)),G(e,n)};q(d,e=>{H(r)||e(f)}),M(n),V(()=>{J(a,`title`,H(t).path),K(o,H(t).path)}),G(e,n)}),G(e,t)};q(ae,e=>{!H(n)||H(n).items.length===0?e(oe):e(se,-1)}),M(ie),M(re);var ce=B(re,2),le=e=>{var t=yf(),n=R(t),r=B(R(n));M(n);var i=B(n,2),o=B(R(i));M(i),M(t),V((e,t)=>{K(r,` ${e??``}`),i.disabled=H(a),K(o,` ${t??``}`)},[()=>Y(`metadata.add`),()=>Y(`metadata.refresh`)]),U(`click`,n,v),U(`click`,i,h),G(e,t)};q(ce,e=>{H(r)||e(le)});var ue=B(ce,2),de=e=>{var t=Tf(),n=R(t),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a,!0);M(a),M(n);var p=B(n,2),m=R(p),h=e=>{var t=bf(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},g=e=>{var t=xf(),n=R(t,!0);M(t),V(()=>K(n,H(f))),G(e,t)},v=e=>{var t=bf(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.empty_dir`)]),G(e,t)},x=e=>{var t=wf(),n=z(t);$r(n,17,()=>H(l),e=>e.path,(e,t)=>{var n=Sf(),r=B(R(n),2),i=R(r,!0);M(r),M(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>y(H(t).path)),G(e,n)}),$r(B(n,2),17,()=>H(u),e=>e.path,(e,t)=>{var n=Cf(),r=B(R(n),2),i=R(r,!0);M(r),Fe(2),M(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>_(H(t).path)),G(e,n)}),G(e,t)};q(m,e=>{H(d)?e(h):H(f)?e(g,1):H(l).length===0&&H(u).length===0?e(v,2):e(x,-1)}),M(p),M(t),V(e=>{r.disabled=H(c)===null,K(i,e),K(o,H(s)?`/`+H(s):`/ (sourceRoot)`)},[()=>Y(`common.up`)]),U(`click`,r,b),G(e,t)};q(ue,e=>{H(o)&&e(de)});var fe=B(ue,2),pe=e=>{var t=Ef(),n=R(t,!0);M(t),V(()=>K(n,H(i))),G(e,t)};q(fe,e=>{H(i)&&e(pe)});var me=B(fe,2),he=R(me),ge=R(he,!0);M(he),M(me),M(x),M(p),V((e,t,n,r)=>{K(T,` ${e??``}`),K(D,t),J(ee,`title`,n),K(ge,r)},[()=>Y(`metadata.title`),()=>Y(`metadata.subtitle`),()=>Y(`common.close`),()=>Y(`common.close`)]),U(`click`,p,e=>{e.target===e.currentTarget&&t.onclose()}),U(`click`,ee,function(...e){t.onclose?.apply(this,e)}),U(`click`,he,function(...e){t.onclose?.apply(this,e)}),G(e,p)};q(S,e=>{t.open&&e(C)}),G(e,x),qe()}Nr([`click`]);var kf=[`heading`,`collapsible`,`link`,`doc-link`,`anchor-link`,`anchor-doc-link`,`ordered-list`,`unordered-list`,`code-block`,`blockquote`,`image`,`table`,`tree`,`diagram`,`colored-section`,`colored-text`,`emojis`,`attachment`,`compare`],Af={"heading-1":`heading`,"heading-2":`heading`,"heading-3":`heading`,"heading-4":`heading`};function jf(e){return Af[e]||e}var Mf={"heading-1":`fa-solid fa-heading`,"heading-2":`fa-solid fa-heading`,"heading-3":`fa-solid fa-heading`,"heading-4":`fa-solid fa-heading`,separator:`fa-solid fa-minus`,collapsible:`fa-solid fa-caret-right`,"unordered-list":`fa-solid fa-list-ul`,"ordered-list":`fa-solid fa-list-ol`,tree:`fa-solid fa-folder-tree`,"colored-text":`fa-solid fa-highlighter`,"colored-section":`fa-solid fa-fill-drip`,blockquote:`fa-solid fa-quote-right`,"code-block":`fa-solid fa-code`,table:`fa-solid fa-table-cells`,link:`fa-solid fa-link`,"doc-link":`fa-solid fa-file-lines`,"anchor-link":`fa-solid fa-anchor`,"anchor-doc-link":`fa-solid fa-anchor`,image:`fa-solid fa-image`,diagram:`fa-solid fa-diagram-project`,emojis:`fa-solid fa-face-smile`,attachment:`fa-solid fa-paperclip`,"local-search":`fa-solid fa-magnifying-glass`,compare:`fa-solid fa-table-columns`},Nf=[{key:`structure`,labelKey:`snippet.picker_cat_structure`,types:[`heading-1`,`heading-2`,`heading-3`,`heading-4`,`separator`,`collapsible`]},{key:`lists-code-data`,labelKey:`snippet.picker_cat_lists_code_data`,types:[`unordered-list`,`ordered-list`,`tree`,`code-block`,`table`,`diagram`]},{key:`rich-text`,labelKey:`snippet.picker_cat_rich_text`,types:[`colored-text`,`colored-section`,`blockquote`,`emojis`,`local-search`,`compare`]},{key:`links-media`,labelKey:`snippet.picker_cat_links_media`,types:[`link`,`doc-link`,`anchor-link`,`anchor-doc-link`,`image`,`attachment`]}],Pf={blueLight:{card:`border-sky-200 dark:border-sky-800 bg-sky-50 dark:bg-sky-950/40 hover:bg-sky-100 dark:hover:bg-sky-900/50 hover:border-sky-300 dark:hover:border-sky-700`,icon:`text-sky-700 dark:text-sky-300`},blue:{card:`border-blue-200 dark:border-blue-800 bg-blue-50 dark:bg-blue-950/40 hover:bg-blue-100 dark:hover:bg-blue-900/50 hover:border-blue-300 dark:hover:border-blue-700`,icon:`text-blue-700 dark:text-blue-300`},blueDark:{card:`border-indigo-200 dark:border-indigo-800 bg-indigo-50 dark:bg-indigo-950/40 hover:bg-indigo-100 dark:hover:bg-indigo-900/50 hover:border-indigo-300 dark:hover:border-indigo-700`,icon:`text-indigo-700 dark:text-indigo-300`},blueDarker:{card:`border-blue-300 dark:border-blue-700 bg-blue-100 dark:bg-blue-900/50 hover:bg-blue-200 dark:hover:bg-blue-800/60 hover:border-blue-400 dark:hover:border-blue-600`,icon:`text-blue-900 dark:text-blue-100`},gray:{card:`border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700 hover:border-gray-300 dark:hover:border-gray-600`,icon:`text-gray-700 dark:text-gray-200`},violet:{card:`border-violet-200 dark:border-violet-800 bg-violet-50 dark:bg-violet-950/40 hover:bg-violet-100 dark:hover:bg-violet-900/50 hover:border-violet-300 dark:hover:border-violet-700`,icon:`text-violet-700 dark:text-violet-300`},green:{card:`border-emerald-200 dark:border-emerald-800 bg-emerald-50 dark:bg-emerald-950/40 hover:bg-emerald-100 dark:hover:bg-emerald-900/50 hover:border-emerald-300 dark:hover:border-emerald-700`,icon:`text-emerald-700 dark:text-emerald-300`},greenDark:{card:`border-green-300 dark:border-green-700 bg-green-100 dark:bg-green-900/50 hover:bg-green-200 dark:hover:bg-green-800/60 hover:border-green-400 dark:hover:border-green-600`,icon:`text-green-900 dark:text-green-100`},teal:{card:`border-teal-200 dark:border-teal-800 bg-teal-50 dark:bg-teal-950/40 hover:bg-teal-100 dark:hover:bg-teal-900/50 hover:border-teal-300 dark:hover:border-teal-700`,icon:`text-teal-700 dark:text-teal-300`},dark:{card:`border-slate-300 dark:border-slate-600 bg-slate-100 dark:bg-slate-800 hover:bg-slate-200 dark:hover:bg-slate-700 hover:border-slate-400 dark:hover:border-slate-500`,icon:`text-slate-900 dark:text-slate-100`},orange:{card:`border-orange-200 dark:border-orange-800 bg-orange-50 dark:bg-orange-950/40 hover:bg-orange-100 dark:hover:bg-orange-900/50 hover:border-orange-300 dark:hover:border-orange-700`,icon:`text-orange-700 dark:text-orange-300`},orangeLight:{card:`border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/40 hover:bg-amber-100 dark:hover:bg-amber-900/50 hover:border-amber-300 dark:hover:border-amber-700`,icon:`text-amber-700 dark:text-amber-300`},orangeDark:{card:`border-orange-300 dark:border-orange-700 bg-orange-100 dark:bg-orange-900/50 hover:bg-orange-200 dark:hover:bg-orange-800/60 hover:border-orange-400 dark:hover:border-orange-600`,icon:`text-orange-900 dark:text-orange-100`},red:{card:`border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950/40 hover:bg-red-100 dark:hover:bg-red-900/50 hover:border-red-300 dark:hover:border-red-700`,icon:`text-red-700 dark:text-red-300`},pink:{card:`border-pink-200 dark:border-pink-800 bg-pink-50 dark:bg-pink-950/40 hover:bg-pink-100 dark:hover:bg-pink-900/50 hover:border-pink-300 dark:hover:border-pink-700`,icon:`text-pink-700 dark:text-pink-300`},amber:{card:`border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/40 hover:bg-amber-100 dark:hover:bg-amber-900/50 hover:border-amber-300 dark:hover:border-amber-700`,icon:`text-amber-700 dark:text-amber-300`},yellow:{card:`border-yellow-300 dark:border-yellow-700 bg-yellow-100 dark:bg-yellow-900/50 hover:bg-yellow-200 dark:hover:bg-yellow-800/60 hover:border-yellow-400 dark:hover:border-yellow-600`,icon:`text-yellow-700 dark:text-yellow-200`},indigo:{card:`border-indigo-200 dark:border-indigo-800 bg-indigo-50 dark:bg-indigo-950/40 hover:bg-indigo-100 dark:hover:bg-indigo-900/50 hover:border-indigo-300 dark:hover:border-indigo-700`,icon:`text-indigo-700 dark:text-indigo-300`},cyan:{card:`border-cyan-200 dark:border-cyan-800 bg-cyan-50 dark:bg-cyan-950/40 hover:bg-cyan-100 dark:hover:bg-cyan-900/50 hover:border-cyan-300 dark:hover:border-cyan-700`,icon:`text-cyan-700 dark:text-cyan-300`}},Ff={"heading-1":`blueLight`,"heading-2":`blue`,"heading-3":`blueDark`,"heading-4":`blueDarker`,separator:`gray`,collapsible:`dark`,"unordered-list":`green`,"ordered-list":`greenDark`,tree:`cyan`,"code-block":`dark`,table:`orange`,diagram:`red`,"colored-text":`pink`,"colored-section":`violet`,blockquote:`gray`,link:`orangeLight`,"doc-link":`orange`,"anchor-link":`orangeDark`,"anchor-doc-link":`orangeDark`,image:`amber`,attachment:`orange`,emojis:`yellow`,"local-search":`cyan`,compare:`teal`},If={"heading-1":`snippet.heading_1`,"heading-2":`snippet.heading_2`,"heading-3":`snippet.heading_3`,"heading-4":`snippet.heading_4`,separator:`snippet.separator`,collapsible:`snippet.collapsible`,"unordered-list":`snippet.bullet_list`,"ordered-list":`snippet.numbered_list`,tree:`snippet.tree`,"colored-text":`snippet.colored_text`,"colored-section":`snippet.colored_section`,blockquote:`snippet.blockquote`,"code-block":`snippet.code_block`,table:`snippet.table`,link:`snippet.link`,"doc-link":`snippet.link_doc`,"anchor-link":`snippet.link_anchor`,"anchor-doc-link":`snippet.link_doc_anchor`,image:`snippet.image`,diagram:`snippet.diagram`,emojis:`snippet.emojis`,attachment:`snippet.attachment`,"local-search":`snippet.local_search`,compare:`snippet.compare`},Lf={info:{bg:`#eff6ff`,border:`#3b82f6`,text:`#1e3a5f`},success:{bg:`#f0fdf4`,border:`#22c55e`,text:`#14532d`},warning:{bg:`#fffbeb`,border:`#f59e0b`,text:`#451a03`},danger:{bg:`#fef2f2`,border:`#ef4444`,text:`#450a0a`},note:{bg:`#f5f3ff`,border:`#8b5cf6`,text:`#2e1065`},neutral:{bg:`#f9fafb`,border:`#6b7280`,text:`#111827`}},Rf=[{label:`snippet.emoji_cat_smileys`,emojis:[{e:`😀`,t:`grin grinning smile sourire happy heureux`},{e:`😃`,t:`smiley joy joie sourire happy`},{e:`😄`,t:`smile sourire happy heureux joie`},{e:`😁`,t:`beaming grin sourire dents`},{e:`😆`,t:`laugh rire lol`},{e:`😅`,t:`sweat transpire rire nerveux`},{e:`🤣`,t:`rofl lol mdr rire`},{e:`😂`,t:`joy larmes tears rire lol`},{e:`🙂`,t:`slight smile sourire`},{e:`🙃`,t:`upside renverse inverse`},{e:`😉`,t:`wink clin oeil`},{e:`😊`,t:`blush rougir sourire`},{e:`😇`,t:`angel ange halo innocent`},{e:`🥰`,t:`love amour coeur heart smile`},{e:`😍`,t:`heart eyes amoureux love amour`},{e:`🤩`,t:`star stars etoile wow`},{e:`😘`,t:`kiss bisou`},{e:`😋`,t:`yum miam savoureux langue`},{e:`😛`,t:`tongue langue`},{e:`😜`,t:`wink tongue langue clin`},{e:`🤪`,t:`crazy fou zany`},{e:`😝`,t:`tongue langue squinting`},{e:`🤗`,t:`hug calin embrasser`},{e:`🤔`,t:`think reflexion reflechir pense`},{e:`🤨`,t:`raised brow sourcil suspicious`},{e:`😐`,t:`neutral neutre`},{e:`😑`,t:`expressionless impassible`},{e:`😒`,t:`unamused decu blase`},{e:`🙄`,t:`roll eyes yeux ciel`},{e:`😬`,t:`grimace`},{e:`😌`,t:`relieved soulage`},{e:`😔`,t:`pensive pensif triste sad`},{e:`😪`,t:`sleepy sommeil fatigue`},{e:`😴`,t:`sleep dormir zzz`},{e:`🤤`,t:`drool bave`},{e:`😷`,t:`mask masque malade`},{e:`🤒`,t:`sick malade fever fievre`},{e:`🤕`,t:`hurt blesse bandage`},{e:`🤢`,t:`nausea nausee`},{e:`🤮`,t:`vomit vomir malade`},{e:`🤧`,t:`sneeze eternue rhume`},{e:`🥵`,t:`hot chaud transpire`},{e:`🥶`,t:`cold froid gele`},{e:`🥴`,t:`woozy ivre`},{e:`😵`,t:`dizzy dead mort vertige`},{e:`🤯`,t:`explode tete mind blown`},{e:`🤠`,t:`cowboy chapeau`},{e:`🥳`,t:`party fete anniversaire birthday`},{e:`😎`,t:`cool sunglasses lunettes`},{e:`🤓`,t:`nerd geek`},{e:`🧐`,t:`monocle curious`},{e:`😕`,t:`confused confus`},{e:`😟`,t:`worried inquiet`},{e:`🙁`,t:`frown triste`},{e:`☹️`,t:`sad triste frown`},{e:`😮`,t:`surprised surpris open mouth`},{e:`😯`,t:`hushed`},{e:`😲`,t:`astonished etonne`},{e:`😳`,t:`flushed gene rougeur`},{e:`🥺`,t:`pleading supplier chien`},{e:`😦`,t:`frown open mouth`},{e:`😧`,t:`anguish angoisse`},{e:`😨`,t:`fear peur`},{e:`😰`,t:`anxious anxieux stress`},{e:`😥`,t:`sad disappointed decu`},{e:`😢`,t:`cry pleurer larme`},{e:`😭`,t:`cry pleurer loud bawling`},{e:`😱`,t:`scream cri peur horror`},{e:`😖`,t:`confounded`},{e:`😣`,t:`persevere effort`},{e:`😞`,t:`disappointed decu`},{e:`😓`,t:`sweat transpire fatigue`},{e:`😩`,t:`weary fatigue las`},{e:`😫`,t:`tired fatigue`},{e:`🥱`,t:`yawn baille`},{e:`😤`,t:`triumph huff vapeur nez`},{e:`😠`,t:`angry colere fache`},{e:`😡`,t:`rage colere rouge`},{e:`🤬`,t:`curse insulte jure`},{e:`😈`,t:`devil diable smiling`},{e:`👿`,t:`imp diable`},{e:`💀`,t:`skull mort death crane`},{e:`☠️`,t:`crossbones pirate mort death`},{e:`💩`,t:`poop caca merde`},{e:`🤡`,t:`clown`},{e:`👻`,t:`ghost fantome`},{e:`👽`,t:`alien extraterrestre`},{e:`🤖`,t:`robot ia ai`},{e:`🎃`,t:`pumpkin halloween citrouille`},{e:`😺`,t:`cat chat`},{e:`😸`,t:`cat chat grin`},{e:`😹`,t:`cat chat joy`},{e:`😻`,t:`cat chat love amour heart`},{e:`😼`,t:`cat chat wry`},{e:`😽`,t:`cat chat kiss`},{e:`🙀`,t:`cat chat fear peur`},{e:`😿`,t:`cat chat cry pleurer`},{e:`😾`,t:`cat chat angry colere`}]},{label:`snippet.emoji_cat_gestures`,emojis:[{e:`👍`,t:`thumbs up pouce ok bien like`},{e:`👎`,t:`thumbs down pouce bas dislike`},{e:`👌`,t:`ok parfait`},{e:`✌️`,t:`victory victoire peace paix`},{e:`🤞`,t:`fingers crossed doigts croises`},{e:`🤟`,t:`love you`},{e:`🤘`,t:`rock horns metal cornes`},{e:`🤙`,t:`call appelle hang loose`},{e:`👈`,t:`left gauche pointing`},{e:`👉`,t:`right droite pointing`},{e:`👆`,t:`up haut pointing`},{e:`👇`,t:`down bas pointing`},{e:`☝️`,t:`one index up haut`},{e:`✋`,t:`stop hand main raised`},{e:`🤚`,t:`back hand main`},{e:`🖐️`,t:`hand main splayed`},{e:`🖖`,t:`vulcan spock star trek`},{e:`👋`,t:`wave bonjour hello salut goodbye`},{e:`🤝`,t:`handshake accord deal poignee`},{e:`🙏`,t:`pray priere merci thanks please`},{e:`💪`,t:`muscle fort biceps strong`},{e:`🦾`,t:`mechanical arm bras prothese`},{e:`👏`,t:`clap applaud bravo applaudir`},{e:`🙌`,t:`raise hands hourra celebrate`},{e:`👐`,t:`open hands`},{e:`🤲`,t:`palms up paumes`},{e:`🤜`,t:`fist poing right`},{e:`🤛`,t:`fist poing left`},{e:`✊`,t:`fist poing leve`},{e:`👊`,t:`fist punch poing frapper`},{e:`🤏`,t:`pinch petit small`},{e:`🤌`,t:`italian pinched`},{e:`🖕`,t:`middle finger doigt honneur`},{e:`✍️`,t:`write ecrire hand main`},{e:`🦶`,t:`foot pied`},{e:`🦵`,t:`leg jambe`},{e:`👂`,t:`ear oreille`},{e:`🦻`,t:`ear hearing appareil auditif`},{e:`👃`,t:`nose nez`},{e:`🧠`,t:`brain cerveau mind`},{e:`👀`,t:`eyes yeux regarder`},{e:`👁️`,t:`eye oeil`},{e:`👄`,t:`mouth bouche`},{e:`👅`,t:`tongue langue`},{e:`🦷`,t:`tooth dent`},{e:`🫀`,t:`heart anatomic coeur organe`},{e:`🫁`,t:`lungs poumons`}]},{label:`snippet.emoji_cat_hearts`,emojis:[{e:`❤️`,t:`heart coeur red rouge love amour`},{e:`🧡`,t:`orange heart coeur`},{e:`💛`,t:`yellow heart coeur jaune`},{e:`💚`,t:`green heart coeur vert`},{e:`💙`,t:`blue heart coeur bleu`},{e:`💜`,t:`purple heart coeur violet`},{e:`🖤`,t:`black heart coeur noir`},{e:`🤍`,t:`white heart coeur blanc`},{e:`🤎`,t:`brown heart coeur marron`},{e:`💔`,t:`broken heart coeur brise rupture`},{e:`❤️‍🔥`,t:`heart fire feu passion`},{e:`❤️‍🩹`,t:`heart mending coeur reparation`},{e:`💖`,t:`sparkling heart coeur brillant`},{e:`💕`,t:`two hearts coeurs`},{e:`💘`,t:`arrow heart cupid cupidon`},{e:`💝`,t:`ribbon heart cadeau`},{e:`💞`,t:`revolving hearts coeurs`},{e:`💟`,t:`heart decoration`},{e:`💌`,t:`love letter lettre enveloppe`},{e:`💋`,t:`kiss mark bisou levres`},{e:`❣️`,t:`heart exclamation`},{e:`💯`,t:`hundred 100 cent perfect parfait`},{e:`✨`,t:`sparkles etincelles magic magique brillant`},{e:`⭐`,t:`star etoile`},{e:`🌟`,t:`glowing star etoile`},{e:`💫`,t:`dizzy star vertige etoile`},{e:`🔥`,t:`fire feu hot flamme`},{e:`💥`,t:`boom explosion collision`},{e:`⚡`,t:`lightning eclair thunder tonnerre fast`},{e:`💢`,t:`anger colere symbol`},{e:`💨`,t:`dash vent wind fast vitesse`},{e:`💦`,t:`drops gouttes sweat eau`},{e:`💤`,t:`zzz sleep dormir sommeil`},{e:`🕳️`,t:`hole trou`},{e:`💭`,t:`thought pensee bulle`},{e:`🗯️`,t:`right anger bubble`},{e:`💬`,t:`speech bulle dialogue chat`}]},{label:`snippet.emoji_cat_objects`,emojis:[{e:`💻`,t:`laptop ordinateur computer portable`},{e:`🖥️`,t:`desktop computer ordinateur bureau`},{e:`⌨️`,t:`keyboard clavier`},{e:`🖱️`,t:`mouse souris`},{e:`💾`,t:`floppy disquette save sauvegarder`},{e:`💿`,t:`disk cd optical`},{e:`📀`,t:`dvd`},{e:`📱`,t:`phone mobile telephone smartphone`},{e:`📲`,t:`phone call mobile incoming`},{e:`☎️`,t:`telephone vintage`},{e:`📞`,t:`receiver combine phone`},{e:`📟`,t:`pager`},{e:`📠`,t:`fax`},{e:`🔋`,t:`battery batterie pile`},{e:`🔌`,t:`plug prise electrique`},{e:`💡`,t:`bulb idee idea light lumiere ampoule`},{e:`🔦`,t:`flashlight torche lampe`},{e:`🕯️`,t:`candle bougie`},{e:`📷`,t:`camera appareil photo`},{e:`📸`,t:`camera flash photo`},{e:`📹`,t:`video camera`},{e:`🎥`,t:`movie film cinema camera`},{e:`🎞️`,t:`film reel pellicule`},{e:`📽️`,t:`projector projecteur`},{e:`⏰`,t:`alarm reveil clock horloge`},{e:`⏱️`,t:`stopwatch chrono chronometre`},{e:`⏲️`,t:`timer minuteur`},{e:`🕰️`,t:`mantel clock horloge`},{e:`⌛`,t:`hourglass sablier done`},{e:`⏳`,t:`hourglass sablier flow running`},{e:`📡`,t:`satellite antenne`},{e:`🔭`,t:`telescope astronomie`},{e:`🔬`,t:`microscope science`},{e:`💊`,t:`pill pilule medicine medicament`},{e:`💉`,t:`syringe seringue injection vaccin`},{e:`🩹`,t:`bandage pansement`},{e:`🩺`,t:`stethoscope medecin`},{e:`🧪`,t:`tube eprouvette chimie chemistry`},{e:`🧬`,t:`dna adn gene`},{e:`🔍`,t:`search magnify loupe rechercher find left`},{e:`🔎`,t:`search magnify loupe rechercher find right`},{e:`🗝️`,t:`key cle old`},{e:`🔑`,t:`key cle`},{e:`🔐`,t:`lock key cle cadenas`},{e:`🔒`,t:`lock cadenas verrouille secure`},{e:`🔓`,t:`unlock cadenas ouvert`},{e:`🛡️`,t:`shield bouclier protection`},{e:`🔨`,t:`hammer marteau`},{e:`⚒️`,t:`tools outils hammer pick`},{e:`🛠️`,t:`tools outils hammer wrench`},{e:`🔧`,t:`wrench cle anglaise`},{e:`🔩`,t:`nut bolt ecrou`},{e:`⚙️`,t:`gear settings parametres engrenage config`},{e:`🪛`,t:`screwdriver tournevis`},{e:`🪝`,t:`hook crochet`},{e:`🧰`,t:`toolbox caisse outils`},{e:`🧲`,t:`magnet aimant`},{e:`🧱`,t:`brick brique`},{e:`⛏️`,t:`pick pioche`},{e:`🪓`,t:`axe hache`}]},{label:`snippet.emoji_cat_office`,emojis:[{e:`📝`,t:`memo note ecrire write`},{e:`✏️`,t:`pencil crayon`},{e:`🖊️`,t:`pen stylo bille`},{e:`🖋️`,t:`fountain pen stylo plume`},{e:`🖌️`,t:`paintbrush pinceau`},{e:`🖍️`,t:`crayon feutre`},{e:`📐`,t:`triangle ruler equerre`},{e:`📏`,t:`ruler regle`},{e:`📎`,t:`paperclip trombone attach`},{e:`🖇️`,t:`linked paperclips trombones`},{e:`📌`,t:`pushpin punaise`},{e:`📍`,t:`pin location lieu`},{e:`✂️`,t:`scissors ciseaux cut couper`},{e:`🗂️`,t:`card index dividers onglets`},{e:`📁`,t:`folder dossier`},{e:`📂`,t:`open folder dossier ouvert`},{e:`🗃️`,t:`card box boite fiches`},{e:`🗄️`,t:`file cabinet archive armoire`},{e:`📋`,t:`clipboard presse papier`},{e:`📃`,t:`page curl document`},{e:`📄`,t:`document page`},{e:`📜`,t:`scroll parchemin`},{e:`📰`,t:`newspaper journal presse`},{e:`🗞️`,t:`rolled newspaper journal`},{e:`📓`,t:`notebook carnet cahier`},{e:`📔`,t:`notebook decorated carnet`},{e:`📒`,t:`ledger registre`},{e:`📕`,t:`book rouge red ferme`},{e:`📗`,t:`book vert green`},{e:`📘`,t:`book bleu blue`},{e:`📙`,t:`book orange`},{e:`📚`,t:`books livres bibliotheque`},{e:`📖`,t:`open book livre ouvert`},{e:`🔖`,t:`bookmark marque page signet`},{e:`🏷️`,t:`label tag etiquette`},{e:`💼`,t:`briefcase mallette attache case business`},{e:`🗒️`,t:`spiral note notepad`},{e:`🗓️`,t:`spiral calendar calendrier`},{e:`📅`,t:`calendar calendrier date`},{e:`📆`,t:`tear off calendar calendrier`},{e:`🗑️`,t:`trash poubelle delete supprimer can`},{e:`🪣`,t:`bucket seau`},{e:`📦`,t:`package colis box boite`},{e:`📫`,t:`mailbox boite lettres closed flag up`},{e:`📪`,t:`mailbox boite lettres closed flag down`},{e:`📬`,t:`mailbox open boite lettres flag up`},{e:`📭`,t:`mailbox open boite lettres flag down`},{e:`📮`,t:`postbox boite aux lettres`},{e:`✉️`,t:`envelope enveloppe`},{e:`📧`,t:`email courriel mail at`},{e:`📨`,t:`email incoming recu`},{e:`📩`,t:`email arrow envoi`},{e:`📤`,t:`outbox envoyer sent`},{e:`📥`,t:`inbox recevoir`},{e:`📊`,t:`bar chart graphique barres histogramme`},{e:`📈`,t:`chart up tendance hausse croissance`},{e:`📉`,t:`chart down baisse decroissance`}]},{label:`snippet.emoji_cat_symbols`,emojis:[{e:`🆕`,t:`new nouveau nouvelle brand fresh neuf`},{e:`♻️`,t:`existing existant existante recycle recycler reuse reutiliser`},{e:`✅`,t:`check ok valide coche green`},{e:`☑️`,t:`check ballot case`},{e:`✔️`,t:`check coche mark`},{e:`❌`,t:`cross error erreur red rouge croix ko`},{e:`✖️`,t:`multiply multiplier cross`},{e:`❎`,t:`cross square button`},{e:`⚠️`,t:`warning attention danger`},{e:`ℹ️`,t:`info information`},{e:`❓`,t:`question red interrogation`},{e:`❔`,t:`question white interrogation`},{e:`❗`,t:`exclamation important red`},{e:`❕`,t:`exclamation white`},{e:`‼️`,t:`double exclamation`},{e:`⁉️`,t:`exclamation question`},{e:`🚀`,t:`rocket fusee launch lancer`},{e:`🎉`,t:`party popper tada fete celebration`},{e:`🎊`,t:`confetti ball fete`},{e:`🏆`,t:`trophy trophee winner`},{e:`🥇`,t:`gold medal medaille or first`},{e:`🥈`,t:`silver medal medaille argent second`},{e:`🥉`,t:`bronze medal medaille third`},{e:`🏅`,t:`medal medaille sports`},{e:`🎖️`,t:`military medal medaille`},{e:`🎯`,t:`target cible dart`},{e:`🎁`,t:`gift cadeau present`},{e:`🔔`,t:`bell cloche notify notification`},{e:`🔕`,t:`bell off muted silence`},{e:`📢`,t:`loudspeaker annonce public`},{e:`📣`,t:`megaphone porte voix`},{e:`📯`,t:`postal horn cor`},{e:`➕`,t:`plus add heavy`},{e:`➖`,t:`minus moins heavy`},{e:`➗`,t:`divide division`},{e:`♾️`,t:`infinity infini`},{e:`💲`,t:`dollar sign dollars money argent`},{e:`💱`,t:`currency exchange change devise`},{e:`©️`,t:`copyright`},{e:`®️`,t:`registered`},{e:`™️`,t:`trademark marque`},{e:`↔️`,t:`left right arrow fleche horizontal`},{e:`↕️`,t:`up down arrow fleche vertical`},{e:`↖️`,t:`up left arrow fleche`},{e:`↗️`,t:`up right arrow fleche`},{e:`↘️`,t:`down right arrow fleche`},{e:`↙️`,t:`down left arrow fleche`},{e:`⬅️`,t:`left arrow fleche gauche`},{e:`➡️`,t:`right arrow fleche droite`},{e:`⬆️`,t:`up arrow fleche haut`},{e:`⬇️`,t:`down arrow fleche bas`},{e:`🔃`,t:`clockwise vertical arrows`},{e:`🔄`,t:`counterclockwise arrows reload refresh recharger`},{e:`🔁`,t:`repeat loop boucle`},{e:`🔂`,t:`repeat single once`},{e:`🔀`,t:`shuffle melange random`},{e:`🔼`,t:`up button triangle`},{e:`🔽`,t:`down button triangle`},{e:`⏫`,t:`fast up double triangle`},{e:`⏬`,t:`fast down double triangle`},{e:`⏪`,t:`rewind back`},{e:`⏩`,t:`fast forward avance`},{e:`⏭️`,t:`next track suivant`},{e:`⏮️`,t:`previous track precedent`},{e:`⏯️`,t:`play pause`},{e:`▶️`,t:`play lecture`},{e:`⏸️`,t:`pause`},{e:`⏹️`,t:`stop`},{e:`⏺️`,t:`record enregistrer`},{e:`⏏️`,t:`eject ejecter`},{e:`🎵`,t:`music note musique`},{e:`🎶`,t:`music notes musique`},{e:`🔈`,t:`speaker low bas`},{e:`🔉`,t:`speaker medium moyen`},{e:`🔊`,t:`speaker loud fort haut son sound`},{e:`🔇`,t:`muted mute silence`},{e:`📶`,t:`signal antenne bars`},{e:`🛜`,t:`wireless wifi`},{e:`🔗`,t:`link lien chain`},{e:`⛓️`,t:`chains chaine`},{e:`🏁`,t:`finish flag checkered fin arrivee`},{e:`🚩`,t:`flag drapeau triangular`},{e:`🏳️`,t:`white flag drapeau blanc`},{e:`🏴`,t:`black flag drapeau noir`},{e:`🏳️‍🌈`,t:`rainbow lgbt pride drapeau arc en ciel`},{e:`🏳️‍⚧️`,t:`trans drapeau transgender`},{e:`🏴‍☠️`,t:`pirate drapeau jolly roger`}]}],zf=[`1. Élément 1`,`2. Élément 2`,` 1. Sous-élément 2.1`,` 2. Sous-élément 2.2`,`3. Élément 3`,` 1. Sous-élément 3.1`,` 1. Sous-sous-élément 3.1.1`].join(`
17
+ `),Bf=[`- Élément 1`,`- Élément 2`,` - Sous-élément 2.1`,` - Sous-élément 2.2`,`- Élément 3`,` - Sous-élément 3.1`,` - Sous-sous-élément 3.1.1`].join(`
18
+ `);function Vf(){return zf}function Hf(){return Bf}function Uf(){return/^1\. .*(?:\n(?![ \t]*$)(?:\d+\. .*| {3,}.*|(?!(?:[-*+] |#{1,6}\s|>|```|~~~|\|)).+))*/gm}function Wf(){return/^[-*+] .*(?:\n(?![ \t]*$)(?:[-*+] .*| {2,}.*|(?!(?:\d+\. |#{1,6}\s|>|```|~~~|\|)).+))*/gm}function Gf(e){return/^1\. /.test((e||``).trim())}function Kf(e){return/^[-*+] /.test((e||``).trim())}function qf(e){return(e||``).split(`
19
+ `).filter(e=>e.trim())}function Jf(e){let t=e||Vf();if(/^\s*\d+\.\s+/m.test(t))return qf(t).join(`
20
+ `);let n=new Map;return qf(t).map(e=>{let t=e.match(/^\s*/)[0],r=e.trim();if(/^[-*+]\s+/.test(r))return`${t}${r}`;let i=t.length;for(let e of Array.from(n.keys()))e>i&&n.delete(e);let a=(n.get(i)||0)+1;return n.set(i,a),`${t}${a}. ${r}`}).join(`
21
+ `)}function Yf(e){let t=e||Hf();return/^\s*[-*+]\s+/m.test(t)?qf(t).join(`
22
+ `):qf(t).map(e=>`${e.match(/^\s*/)[0]}- ${e.trim()}`).join(`
23
+ `)}function Xf(e,t){return e||t}function Zf(e){return`<details>\n<summary>${Xf(e.summary,e.summaryFallback)}</summary>\n\n${e.body&&e.body.trim()!==``?e.body:e.bodyFallback}\n\n</details>`}function Qf(e){let t=Xf(e.text,e.textFallback);return`<a href="${Xf(e.url,`https://...`)}" target="_blank">${t}</a>`}function $f(e){return`[${Xf(e.text,e.title||e.docId)}](?doc=${encodeURIComponent(e.docId)})`}function ep(e){return`[${Xf(e.text,e.textFallback)}](#${Xf(e.anchor,e.anchorFallback)})`}function tp(e){let t=Xf(e.text,e.textFallback),n=Xf(e.anchor,e.anchorFallback);return`[${t}](?doc=${encodeURIComponent(e.docId)}#${n})`}function np(e){let t=`\`\`\`${e.lang||``}\n${Xf(e.code,`// code ici`)}\n\`\`\``;return e.inlineIndent?t.split(`
24
+ `).map(t=>e.inlineIndent+t).join(`
25
+ `):t}function rp(e){let t=Xf(e.content,`Citation ici
26
+
27
+ — Auteur`).split(`
28
+ `).map(e=>e.trim()?`> ${e}`:`>`).join(`
29
+ `),n=[];return e.type&&n.push(`<!-- quote-type: ${e.type} -->`),e.title&&n.push(`<!-- quote-title: ${e.title} -->`),e.icon&&n.push(`<!-- quote-icon -->`),n.length>0?n.join(`
30
+ `)+`
31
+ `+t:t}function ip(e,t){let n=Number(e.slice(-1)),r=Xf(t.text&&t.text.trim(),t.fallback);return`${`#`.repeat(n)} ${r}`}function ap(e){return`![${Xf(e.alt,`image`)}](${Xf(e.url,`./images/mon-image.png`)})`}function op(e){let t=gd({style:e.style||``,border:e.bordered?`bordered`:``,color:e.color||``});return(t?t+`
32
+ `:``)+e.markdown}function sp(e){return`[![${e.label}](./images/${e.imageName})](/diagram?id=${e.id})`}function cp(e){return`<span style="color:${e.color.border};">${e.content}</span>`}function lp(e){return`<div style="background:${e.color.bg};border-left:4px solid ${e.color.border};color:${e.color.text};padding:1rem 1.25rem;border-radius:0.375rem;margin:1rem 0;">\n\n${e.content}\n\n</div>`}function up(e,t){switch(e){case`collapsible`:return Zf(t);case`link`:return Qf(t);case`doc-link`:return $f(t);case`anchor-link`:return ep(t);case`anchor-doc-link`:return tp(t);case`ordered-list`:return Jf(t.content);case`unordered-list`:return Yf(t.content);case`code-block`:return np(t);case`blockquote`:return rp(t);case`separator`:return`
33
+ ---
34
+ `;case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return ip(e,t);case`image`:return ap(t);case`table`:return op(t);case`tree`:return t.markdown;case`diagram`:return sp(t);case`colored-text`:return cp(t);case`colored-section`:return lp(t);case`emojis`:return t.value;case`local-search`:return`<div data-ld-local-search></div>`;case`compare`:return`:::compare\n${t.content||``}\n:::`;default:return``}}function dp(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}var fp=2,pp=2,mp=1,hp=1,gp=`snip-table-context-menu`;function _p(e){return{data:[],onPreview:e}}function vp(e){e.data=[Array.from({length:pp},(e,t)=>`En-tête ${t+1}`),Array(pp).fill(``)];let t=document.getElementById(`snip-table-style`);t&&(t.value=``);let n=document.getElementById(`snip-table-bordered`);n&&(n.checked=!1);let r=document.getElementById(`snip-table-color`);r&&(r.value=``),Ap(e)}function yp(e){for(e.data.length||(e.data=Array.from({length:fp},(e,t)=>Array.from({length:pp},(e,n)=>t===0?`En-tête ${n+1}`:``)));e.data.length<mp;)e.data.push([]);let t=Math.max(hp,...e.data.map(e=>e.length));e.data.forEach(e=>{for(;e.length<t;)e.push(``)})}function bp(e,t,n=!1){queueMicrotask(()=>{let r=document.querySelector(`#snip-table-grid input[data-tr="${e}"][data-tc="${t}"]`);if(r)if(r.focus({preventScroll:!0}),n)r.select();else{let e=r.value.length;r.setSelectionRange(e,e)}})}function xp(e,t){yp(e);let n=e.data[0]?.length??hp;e.data.forEach(e=>e.push(``)),Ap(e),bp(t,n)}function Sp(e,t,n=!1){yp(e);let r=e.data.length,i=e.data[0]?.length??hp;e.data.push(Array(i).fill(``)),Ap(e),bp(r,Math.max(0,Math.min(t,i-1)),n)}function Cp(e,t,n,r=!1){yp(e);let i=e.data.length,a=e.data[0]?.length??hp,o=Math.max(0,Math.min(t,i-1)),s=n;s=Math.max(0,Math.min(s,a-1)),bp(o,s,r)}function wp(e,t){Dp(),yp(e);let n=e.data[0]?.length??hp;n<=hp||(e.data.forEach(e=>e.splice(t,1)),Ap(e),bp(0,Math.max(0,Math.min(t,n-2))))}function Tp(e,t){if(Dp(),yp(e),e.data.length<=mp)return;let n=e.data[0]?.length??hp;e.data.splice(t,1),Ap(e),bp(Math.max(0,Math.min(t,e.data.length-1)),Math.min(n-1,0))}function Ep(e,t,n){Dp();let r=Number(t.dataset.tr),i=Number(t.dataset.tc),a=e.data.length,o=e.data[0]?.length??hp;if(n.key===`Tab`){if(n.preventDefault(),n.shiftKey){i>0?Cp(e,r,i-1,!0):r>0?Cp(e,r-1,o-1,!0):Cp(e,r,i,!0);return}i<o-1?Cp(e,r,i+1,!0):r<a-1?Cp(e,r+1,0,!0):Sp(e,0,!0);return}if(n.key===`ArrowUp`){n.preventDefault(),Cp(e,r-1,i);return}if(n.key===`ArrowDown`){n.preventDefault(),r<a-1?Cp(e,r+1,i):Sp(e,i);return}if(n.key===`ArrowLeft`){n.preventDefault(),Cp(e,r,i-1);return}n.key===`ArrowRight`&&(n.preventDefault(),i<o-1?Cp(e,r,i+1):xp(e,r))}function Dp(){document.getElementById(gp)?.remove()}function Op(e,t,n){n.preventDefault(),Dp(),yp(e);let r=Number(t.dataset.tr),i=Number(t.dataset.tc),a=e.data.length>mp,o=(e.data[0]?.length??hp)>hp,s=document.createElement(`div`);s.id=gp,s.className=`fixed z-[80] min-w-44 overflow-hidden rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 shadow-lg text-sm`,s.style.left=`${n.clientX}px`,s.style.top=`${n.clientY}px`;let c=document.createElement(`button`);c.type=`button`,c.textContent=Y(`snippet.table_delete_row`),c.disabled=!a,c.className=`block w-full px-3 py-2 text-left text-gray-700 dark:text-gray-100 hover:bg-red-50 dark:hover:bg-red-900/30 disabled:opacity-40 disabled:hover:bg-transparent`,c.addEventListener(`click`,()=>Tp(e,r)),s.appendChild(c);let l=document.createElement(`button`);l.type=`button`,l.textContent=Y(`snippet.table_delete_column`),l.disabled=!o,l.className=`block w-full px-3 py-2 text-left text-gray-700 dark:text-gray-100 hover:bg-red-50 dark:hover:bg-red-900/30 disabled:opacity-40 disabled:hover:bg-transparent`,l.addEventListener(`click`,()=>wp(e,i)),s.appendChild(l),document.body.appendChild(s),window.setTimeout(()=>{document.addEventListener(`click`,Dp,{once:!0})},0)}function kp(){let e=document.getElementById(`snip-table-style`)?.value,t=document.getElementById(`snip-table-bordered`)?.checked,n=document.getElementById(`snip-table-color`)?.value;return[`ld-table-edit-table`,`w-full`,`table-fixed`,`border-collapse`,e?`table-style-${e}`:``,t?`table-border-bordered`:``,n?`table-color-${n}`:``].filter(Boolean).join(` `)}function Ap(e){yp(e);let t=e.data.length,n=e.data[0]?.length??0,r=document.getElementById(`snip-table-rows`);r&&(r.textContent=String(t));let i=document.getElementById(`snip-table-cols`);i&&(i.textContent=String(n));let a=`ld-table-edit-input block w-full min-w-[160px] bg-transparent border-0 rounded-none focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500`,o=`${a} font-semibold`,s=`${a}`,c=`<div class="ld-table-editor min-w-full overflow-x-auto rounded-md bg-white dark:bg-gray-950">`;c+=`<table class="${kp()}"><tbody>`;for(let r=0;r<t;r++){c+=`<tr>`;for(let t=0;t<n;t++){let n=r===0?o:s;c+=`<td><input type="text" value="${dp(e.data[r][t])}" data-tr="${r}" data-tc="${t}" class="${n}" /></td>`}c+=`</tr>`}c+=`</tbody></table></div>`;let l=document.getElementById(`snip-table-grid`);l&&(l.innerHTML=c,l.querySelectorAll(`input[data-tr]`).forEach(t=>{t.addEventListener(`input`,()=>{let n=Number(t.dataset.tr),r=Number(t.dataset.tc);e.data[n][r]=t.value,e.onPreview()}),t.addEventListener(`keydown`,n=>Ep(e,t,n)),t.addEventListener(`contextmenu`,n=>Op(e,t,n)),t.addEventListener(`mouseup`,n=>{n.button===2&&Op(e,t,n)})})),e.onPreview()}function jp(e){let t=e.data;if(!t.length||!t[0]?.length)return``;let n=t[0].length,r=Array(n).fill(3);t.forEach(e=>{e.forEach((e,t)=>{r[t]=Math.max(r[t],e.length)})});let i=e=>`| `+e.map((e,t)=>e.padEnd(r[t])).join(` | `)+` |`,a=`| `+r.map(e=>`-`.repeat(e)).join(` | `)+` |`;return[i(t[0]),a,...t.slice(1).map(i)].join(`
35
+ `)}function Mp(e){let t=hd(e),n=e.split(`
36
+ `).filter(e=>/^\|.*\|$/.test(e.trim())).filter(e=>!vd(e)).map(_d),r=n.length?Math.max(...n.map(e=>e.length)):0;return n.forEach(e=>{for(;e.length<r;)e.push(``)}),{attrs:t,rows:n}}function Np(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function Pp(e){return{items:[],onPreview:e}}function Fp(e){e.items=[{name:`dossier/`,depth:0},{name:`fichier.md`,depth:1}],Ip(e)}function Ip(e){let t=`text-xs px-1.5 py-1 rounded border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-30 disabled:cursor-not-allowed transition-colors`,n=document.getElementById(`snip-tree-list`);n&&(n.innerHTML=e.items.map((e,n)=>`
37
+ <div class="flex items-center gap-1">
38
+ <button data-tree-indent="${n}" data-tree-delta="-1" ${e.depth===0?`disabled`:``} class="${t}" title="Désindenter">←</button>
39
+ <button data-tree-indent="${n}" data-tree-delta="1" class="${t}" title="Indenter">→</button>
40
+ <span class="text-xs text-gray-300 dark:text-gray-600 font-mono w-4 shrink-0 text-center">${e.depth>0?e.depth:``}</span>
41
+ <input type="text" value="${Np(e.name)}" data-tree-name="${n}"
42
+ class="flex-1 px-2 py-1 text-xs rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-1 focus:ring-blue-500 font-mono" />
43
+ <button data-tree-remove="${n}" class="${t}" title="Supprimer">×</button>
44
+ </div>`).join(``),n.querySelectorAll(`button[data-tree-indent]`).forEach(t=>{t.addEventListener(`click`,()=>Lp(e,Number(t.dataset.treeIndent),Number(t.dataset.treeDelta)))}),n.querySelectorAll(`input[data-tree-name]`).forEach(t=>{t.addEventListener(`input`,()=>{e.items[Number(t.dataset.treeName)].name=t.value,e.onPreview()})}),n.querySelectorAll(`button[data-tree-remove]`).forEach(t=>{t.addEventListener(`click`,()=>zp(e,Number(t.dataset.treeRemove)))}),e.onPreview())}function Lp(e,t,n){e.items[t].depth=Math.max(0,e.items[t].depth+n),Ip(e)}function Rp(e){let t=e.items.length?e.items[e.items.length-1].depth:0;e.items.push({name:``,depth:t}),Ip(e)}function zp(e,t){e.items.splice(t,1),Ip(e)}function Bp(e){let t=e.items;if(!t.length)return"```text\n(vide)\n```";let n=[];for(let e=0;e<t.length;e++){let{name:r,depth:i}=t[e];if(i===0){n.push(r);continue}let a=``;for(let n=0;n<i-1;n++){let r=!1;for(let i=e+1;i<t.length;i++)if(t[i].depth<=n+1){r=t[i].depth===n+1;break}a+=r?`│ `:` `}let o=!0;for(let n=e+1;n<t.length&&!(t[n].depth<i);n++)if(t[n].depth===i){o=!1;break}n.push(a+(o?`└── `:`├── `)+r)}return"```text\n"+n.join(`
45
+ `)+"\n```"}function Vp(e){return{items:e.replace(/^```text\n/,``).replace(/\n```$/,``).split(`
46
+ `).map(e=>{let t=e.match(/^((?:│ | )*)(?:├── |└── )([\s\S]+)$/);return t?{name:t[2],depth:t[1].length/4+1}:{name:e,depth:0}})}}function Hp(e,t){if(!t)return e;let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return e.replace(RegExp(`^`+n,`gm`),``)}function Up(e){let t=e.match(/<summary>([\s\S]*?)<\/summary>/i),n=e.match(/<details\b[^>]*>[\s\S]*?<\/summary>\s*\n?([\s\S]*?)\s*<\/details>\s*$/i);return{summary:t?t[1].trim():void 0,body:n?n[1].trim():``}}function Wp(e){let t=e.match(/^\[([\s\S]*?)\]\(([\s\S]*?)\)$/);return t?{text:t[1],url:t[2]}:{}}function Gp(e){let t=e.match(/^\[([\s\S]*?)\]\(\?doc=([\s\S]*?)\)$/);return t?{text:t[1],docId:decodeURIComponent(t[2])}:{}}function Kp(e){let t=e.match(/^\[([\s\S]*?)\]\(#([\s\S]*?)\)$/);return t?{text:t[1],anchor:t[2]}:{}}function qp(e){let t=e.match(/^\[([\s\S]*?)\]\(\?doc=([\s\S]*?)#([\s\S]*?)\)$/);return t?{text:t[1],docId:decodeURIComponent(t[2]),anchor:t[3]}:{}}function Jp(e,t={}){let n=e.match(/^```[ \t]*([^\n]*)\n([\s\S]*?)\n[ \t]*```$/);return n?{lang:n[1].trim(),code:Hp(n[2],t.inlineIndent||``)}:{lang:``,code:``}}var Yp=/^<!--\s*quote-type:\s*([a-z][a-z0-9_-]*)\s*-->$/,Xp=/^<!--\s*quote-title:\s*(.+?)\s*-->$/,Zp=/^<!--\s*quote-icon\s*-->$/,Qp={note:`info`,tip:`success`,caution:`warning`,danger:`error`};function $p(e){let t=e.split(`
47
+ `),n=``,r=``,i=!1,a=[],o=!1;for(let e of t){if(!o){let t=e.match(Yp);if(t){n=Qp[t[1]]??t[1];continue}let a=e.match(Xp);if(a){r=a[1];continue}if(Zp.test(e)){i=!0;continue}if(e.trim()===``)continue;o=!0}a.push(e.replace(/^>\s?/,``))}return{type:n,title:r,icon:i,content:a.join(`
48
+ `)}}function em(e){let t=e.match(/^!\[([\s\S]*?)\]\(([\s\S]*?)\)$/);return t?{alt:t[1],url:t[2]}:{}}function tm(e,t){let n=Number(e.slice(-1)),r=t.match(RegExp(`^#{${n}}\\s+(.+)$`));return{text:r?r[1].trim():``}}function nm(e){let t=e.match(/^<span\s[^>]*color:([^;>"]+)[^>]*>([\s\S]*)<\/span>$/);return t?{color:t[1].trim(),content:t[2]}:{}}function rm(e){let t=e.match(/border-left:[^;]*solid\s+(#[0-9a-fA-F]{6})/),n=e.match(/^<div[^>]*>\n\n([\s\S]*?)\n\n<\/div>$/);return{borderColor:t?t[1]:void 0,content:n?n[1]:void 0}}function im(e,t,n={}){let r=(t||``).trim();switch(e){case`collapsible`:return Up(r);case`link`:return Wp(r);case`doc-link`:return Gp(r);case`anchor-link`:return Kp(r);case`anchor-doc-link`:return qp(r);case`ordered-list`:case`unordered-list`:return{content:r};case`code-block`:return Jp(r,n);case`blockquote`:return $p(r);case`image`:return em(r);case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return tm(e,r);case`table`:return Mp(r);case`tree`:return Vp(r);case`colored-text`:return nm(r);case`colored-section`:return rm(r);case`compare`:{let e=r.match(/^:::compare[ \t]*\n([\s\S]*?)\n?:::[ \t]*$/);return{content:e?e[1]:``}}default:return{}}}function am(e){let t=(e||``).trim();if(/^\[.*?\]\(\?doc=.+#.+\)$/.test(t))return`anchor-doc-link`;if(/^\[.*?\]\(\?doc=.+\)$/.test(t))return`doc-link`;if(/^\[.*?\]\(#.+\)$/.test(t))return`anchor-link`;if(/^!\[.*?\]\(.*?\)$/.test(t))return`image`;if(/^\[.*?\]\(.*?\)$/.test(t))return`link`;if(/^<details[\s>]/i.test(t))return`collapsible`;if(/^<span\s[^>]*color:[^>]*>[\s\S]*<\/span>$/.test(t))return`colored-text`;if(/^<div\s[^>]*border-left[^>]*>/.test(t))return`colored-section`;if(/^```text\n/.test(t)&&/[├└│]/.test(t))return`tree`;if(/^:::compare[ \t]*\n/.test(t))return`compare`;if(/^```/.test(t))return`code-block`;if(yd(t))return`table`;if(/^<!--\s*quote-(?:type|title|icon)/.test(t)||/^> /.test(t))return`blockquote`;let n=/^(#{1,4}) [^\n]+$/.exec(t);return n?`heading-${n[1].length}`:/^(---|\n---\n)$/.test(t)?`separator`:Gf(t)?`ordered-list`:Kf(t)?`unordered-list`:null}var om=W(`<div id="snippets-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/50"><div id="snippet-modal-card" class="bg-white dark:bg-gray-900 rounded-xl shadow-xl w-full max-w-6xl mx-4 p-6 space-y-5 max-h-[90vh] overflow-y-auto"><h3 class="text-base font-semibold text-gray-900 dark:text-gray-50"><span id="snippet-modal-title"> </span></h3> <div id="snippet-detect-msg" class="hidden rounded-lg px-3 py-2 text-xs"></div> <div id="snippet-picker" class="hidden space-y-4"><input id="snippet-picker-search" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/> <div id="snippet-picker-categories" class="space-y-4 max-h-[60vh] overflow-y-auto pr-1"></div> <div id="snippet-picker-no-results" class="hidden text-center text-sm text-gray-500 dark:text-gray-400 py-4"> </div></div> <button type="button" id="snippet-picker-back" class="hidden inline-flex items-center gap-2 text-xs font-medium text-blue-700 dark:text-blue-300 hover:underline"><i class="fa-solid fa-arrow-left" aria-hidden="true"></i> <span> </span></button> <div id="snippet-type-wrapper" class="hidden space-y-1.5"><label for="snippet-type" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <select id="snippet-type" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"><option selected=""> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option></select></div> <div id="snip-panel-heading" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-heading-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-heading-content" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div></div> <div id="snip-panel-collapsible" class="space-y-3"><div class="space-y-1.5"><label for="snip-collapsible-summary" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-collapsible-summary" type="text" value="Details" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="snip-collapsible-body" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-collapsible-body" rows="6" class="w-full px-3 py-2 text-sm font-mono rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></textarea></div></div> <div id="snip-panel-link" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-link-text" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-link-text" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="snip-link-url" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-link-url" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div></div> <div id="snip-panel-doc-link" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-doc-select" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <select id="snip-doc-select" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></select></div> <div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"><span> </span> <span class="font-normal text-gray-400"> </span></label> <input id="snip-doc-link-text" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div></div> <div id="snip-panel-anchor-link" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-anchor-text" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-anchor-text" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"><span> </span> <span class="font-normal text-gray-400"> </span></label> <select id="snip-anchor-id" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></select></div></div> <div id="snip-panel-anchor-doc-link" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-anchor-doc-select" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <select id="snip-anchor-doc-select" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></select></div> <div class="space-y-1.5"><label for="snip-anchor-doc-text" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-anchor-doc-text" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"><span> </span> <span class="font-normal text-gray-400"> </span></label> <select id="snip-anchor-doc-id" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></select></div></div> <div id="snip-panel-ordered-list" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-ordered-list-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-ordered-list-content" rows="10" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-y leading-relaxed"></textarea></div></div> <div id="snip-panel-unordered-list" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-unordered-list-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-unordered-list-content" rows="10" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-y leading-relaxed"></textarea></div></div> <div id="snip-panel-code-block" class="hidden space-y-3"><div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"><span> </span> <span class="font-normal text-gray-400"> </span></label> <input id="snip-code-lang" type="text" placeholder="javascript" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="snip-code-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-code-content" rows="12" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-y font-mono leading-relaxed"></textarea></div></div> <div id="snip-panel-blockquote" class="hidden space-y-3"><div class="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-blockquote-type" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-blockquote-type" class="text-xs rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 px-2 py-1"><option> </option><option> </option><option> </option><option> </option><option> </option></select></div> <label class="flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"><input id="snip-blockquote-icon" type="checkbox" class="rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500"/> <span> </span></label></div> <div class="space-y-1.5"><label for="snip-blockquote-title" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-blockquote-title" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="snip-blockquote-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-blockquote-content" rows="6" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-y leading-relaxed"></textarea></div></div> <div id="snip-panel-image" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-image-alt" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-image-alt" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="snip-image-url" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-image-url" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div></div> <div id="snip-panel-table" class="hidden space-y-3"><div class="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-table-style" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-table-style" class="text-xs rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 px-2 py-1"><option> </option><option> </option><option> </option></select></div> <label class="flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"><input id="snip-table-bordered" type="checkbox" class="rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500"/> <span> </span></label> <div class="flex items-center gap-2"><label for="snip-table-color" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-table-color" class="text-xs rounded border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 px-2 py-1"><option> </option><option> </option><option> </option><option> </option><option> </option><option> </option></select></div> <p id="snip-table-hint" class="text-xs text-gray-400 dark:text-gray-500 ml-auto"> </p></div> <div id="snip-table-grid" class="overflow-x-auto"></div></div> <div id="snip-panel-tree" class="hidden space-y-2"><p class="text-xs text-gray-400 dark:text-gray-500"> </p> <div id="snip-tree-list" class="space-y-1"></div> <button class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors w-full"> </button></div> <div id="snip-panel-diagram" class="hidden space-y-3"><div class="flex gap-4 text-sm"><label class="flex items-center gap-2 cursor-pointer"><input type="radio" name="snip-diag-mode" id="snip-diag-mode-existing" value="existing" checked=""/> <span class="text-gray-700 dark:text-gray-300"> </span></label> <label class="flex items-center gap-2 cursor-pointer"><input type="radio" name="snip-diag-mode" id="snip-diag-mode-new" value="new"/> <span class="text-gray-700 dark:text-gray-300"> </span></label></div> <div id="snip-diag-existing-section" class="space-y-1.5"><label for="snip-diag-select" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <select id="snip-diag-select" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></select></div> <div id="snip-diag-new-section" class="hidden space-y-1.5"><label for="snip-diag-new-name" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-diag-new-name" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="snip-diag-img-name" class="block text-xs font-medium text-gray-500 dark:text-gray-400"><span> </span> <span class="font-normal text-gray-400"> </span></label> <input id="snip-diag-img-name" type="text" placeholder="diagram.png" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 font-mono focus:outline-none focus:ring-2 focus:ring-blue-500"/></div></div> <div id="snip-panel-colored-section" class="hidden space-y-3"><div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex flex-wrap gap-2"><button type="button" data-color-swatch="info" class="w-7 h-7 rounded-full border-2 border-blue-400 bg-blue-100 ring-2 ring-transparent hover:ring-blue-400 transition-all color-swatch-btn selected-swatch"></button> <button type="button" data-color-swatch="success" class="w-7 h-7 rounded-full border-2 border-green-400 bg-green-100 ring-2 ring-transparent hover:ring-green-400 transition-all color-swatch-btn"></button> <button type="button" data-color-swatch="warning" class="w-7 h-7 rounded-full border-2 border-amber-400 bg-amber-100 ring-2 ring-transparent hover:ring-amber-400 transition-all color-swatch-btn"></button> <button type="button" data-color-swatch="danger" class="w-7 h-7 rounded-full border-2 border-red-400 bg-red-100 ring-2 ring-transparent hover:ring-red-400 transition-all color-swatch-btn"></button> <button type="button" data-color-swatch="note" class="w-7 h-7 rounded-full border-2 border-purple-400 bg-purple-100 ring-2 ring-transparent hover:ring-purple-400 transition-all color-swatch-btn"></button> <button type="button" data-color-swatch="neutral" class="w-7 h-7 rounded-full border-2 border-gray-400 bg-gray-100 ring-2 ring-transparent hover:ring-gray-400 transition-all color-swatch-btn"></button></div></div> <div class="space-y-1.5"><label for="snip-colored-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-colored-content" rows="4" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-y font-mono"></textarea></div></div> <div id="snip-panel-colored-text" class="hidden space-y-3"><div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex flex-wrap gap-2"><button type="button" data-color-text-swatch="info" class="w-7 h-7 rounded-full border-2 border-blue-500 bg-blue-500 ring-2 ring-transparent hover:ring-blue-400 transition-all color-text-swatch-btn selected-text-swatch"></button> <button type="button" data-color-text-swatch="success" class="w-7 h-7 rounded-full border-2 border-green-500 bg-green-500 ring-2 ring-transparent hover:ring-green-400 transition-all color-text-swatch-btn"></button> <button type="button" data-color-text-swatch="warning" class="w-7 h-7 rounded-full border-2 border-amber-500 bg-amber-500 ring-2 ring-transparent hover:ring-amber-400 transition-all color-text-swatch-btn"></button> <button type="button" data-color-text-swatch="danger" class="w-7 h-7 rounded-full border-2 border-red-500 bg-red-500 ring-2 ring-transparent hover:ring-red-400 transition-all color-text-swatch-btn"></button> <button type="button" data-color-text-swatch="note" class="w-7 h-7 rounded-full border-2 border-purple-500 bg-purple-500 ring-2 ring-transparent hover:ring-purple-400 transition-all color-text-swatch-btn"></button> <button type="button" data-color-text-swatch="neutral" class="w-7 h-7 rounded-full border-2 border-gray-500 bg-gray-500 ring-2 ring-transparent hover:ring-gray-400 transition-all color-text-swatch-btn"></button></div></div> <div class="space-y-1.5"><label for="snip-colored-text-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-colored-text-content" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div></div> <div id="snip-panel-emojis" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-emoji-string" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex gap-1"><input id="snip-emoji-string" type="text" class="flex-1 px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/> <button type="button" id="snip-emoji-clear" class="px-3 py-2 text-xs rounded-lg border border-gray-300 dark:border-gray-600 hover:bg-gray-100 dark:hover:bg-gray-700"> </button></div></div> <div class="space-y-1.5"><input id="snip-emoji-search" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div id="snip-emoji-grid" class="space-y-2 max-h-64 overflow-y-auto border border-gray-200 dark:border-gray-700 rounded-lg p-2 bg-white dark:bg-gray-900"></div></div> <div id="snip-panel-attachment" class="hidden space-y-3"><div class="rounded-lg bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 px-3 py-3 text-sm text-blue-900 dark:text-blue-100 space-y-2"><p></p> <p class="text-xs text-blue-700 dark:text-blue-300"></p></div></div> <div id="snip-panel-compare" class="hidden space-y-3"><div class="space-y-1.5"><label for="snip-compare-content" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <textarea id="snip-compare-content" rows="6" class="w-full px-3 py-2 text-sm font-mono rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"></textarea></div></div> <div id="snippet-preview-wrap" class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <pre id="snippet-preview" class="text-xs bg-gray-100 dark:bg-gray-800 rounded-lg px-3 py-2 overflow-x-auto text-gray-700 dark:text-gray-300 whitespace-pre-wrap"></pre></div> <div class="flex justify-end gap-3 pt-1"><button id="snippet-delete-btn" class="hidden text-sm px-4 py-2 mr-auto rounded-lg border border-red-200 dark:border-red-800 text-red-700 dark:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/30 transition-colors"> </button> <button class="text-sm px-4 py-2 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"> </button> <button id="snippet-submit-btn" class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"> </button></div></div></div>`),sm=W(`<!> <!>`,1);function cm(e,t){Ke(t,!0);let n=Bi(t,`editor`,7),r=Bi(t,`mode`,3,`insert`),i=Bi(t,`content`,3,``),a=Bi(t,`range`,3,null),o=Bi(t,`insertPos`,3,0),s=Bi(t,`onsave`,3,void 0),c=0,l=0,u=``,d=F(null),f=`info`,p=`info`,m=_p(()=>k()),h=Pp(()=>k());function g(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function _(e){return document.getElementById(e)}function v(e){if(!e)return``;let t=e.split(/\s+/);return t.length>1&&!/^[\p{L}\p{N}]/u.test(t[0])?t.slice(1).join(` `):e}function y(e){let t=If[e];return v(t?Y(t):e)}function b(){let e=_(`snippet-picker-categories`);if(e){e.innerHTML=``;for(let t of Nf){let n=document.createElement(`section`);n.dataset.snippetCategory=t.key,n.className=`space-y-2`;let r=document.createElement(`h3`);r.className=`text-[11px] font-semibold uppercase tracking-wider text-gray-500 dark:text-gray-400`,r.textContent=Y(t.labelKey),n.appendChild(r);let i=document.createElement(`div`);i.className=`grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-7 xl:grid-cols-8 gap-2`;for(let e of t.types){let t=Pf[Ff[e]||`indigo`]||Pf.indigo,n=document.createElement(`button`);n.type=`button`,n.dataset.snippetType=e,n.className=`snippet-card min-h-[76px] flex flex-col items-center justify-center gap-2 p-2 rounded-lg border text-gray-800 dark:text-gray-100 transition-colors `+t.card,n.onclick=()=>E(e);let r=document.createElement(`i`);r.className=(Mf[e]||`fa-solid fa-puzzle-piece`)+` text-xl `+t.icon,r.setAttribute(`aria-hidden`,`true`),n.appendChild(r);let a=document.createElement(`span`);a.className=`text-xs font-medium text-center leading-tight`,a.textContent=y(e),n.appendChild(a),i.appendChild(n)}n.appendChild(i),e.appendChild(n)}}}function x(){b(),_(`snippet-picker`)?.classList.remove(`hidden`),_(`snippet-picker-back`)?.classList.add(`hidden`),_(`snippet-submit-btn`)?.classList.add(`hidden`),kf.forEach(e=>_(`snip-panel-`+e)?.classList.add(`hidden`)),_(`snippet-preview-wrap`)?.classList.add(`hidden`);let e=_(`snippet-picker-search`);e&&(e.value=``,C(``),setTimeout(()=>e.focus(),50))}function S(e=!0){_(`snippet-picker`)?.classList.add(`hidden`),_(`snippet-submit-btn`)?.classList.remove(`hidden`),_(`snippet-picker-back`)?.classList.toggle(`hidden`,!e)}function C(e){let t=_(`snippet-picker-categories`);if(!t)return;let n=(e||``).toLowerCase().trim(),r=0;t.querySelectorAll(`[data-snippet-category]`).forEach(e=>{let t=0;e.querySelectorAll(`[data-snippet-type]`).forEach(e=>{let r=(e.querySelector(`span`)?.textContent||``).toLowerCase(),i=!n||r.includes(n);e.classList.toggle(`hidden`,!i),i&&(t+=1)}),e.classList.toggle(`hidden`,t===0),r+=t}),_(`snippet-picker-no-results`)?.classList.toggle(`hidden`,r>0)}function w(){let e=_(`snippet-picker-search`);C(e?e.value:``)}function T(e){if(e.key===`Enter`){e.preventDefault();let t=document.querySelector(`#snippet-picker-categories [data-snippet-type]:not(.hidden)`);t&&E(t.dataset.snippetType)}}function E(e){let t=_(`snippet-type`);t&&(t.value=e),ye(),S()}function D(){x()}let ee=!1;function te(e){return`<button type="button" data-emoji="${e.e}" title="${e.t.split(` `).slice(0,3).join(`, `)}" class="emoji-btn w-7 h-7 text-lg rounded hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center justify-center">${e.e}</button>`}function ne(){return Rf.map(e=>`
49
+ <div>
50
+ <div class="text-xs font-semibold text-gray-500 dark:text-gray-400 mb-1 px-1">${Y(e.label)}</div>
51
+ <div class="flex flex-wrap gap-1">
52
+ ${e.emojis.map(te).join(``)}
53
+ </div>
54
+ </div>
55
+ `).join(``)}function O(e){let t=e.toLowerCase().trim(),n=[];for(let r of Rf)for(let i of r.emojis)(i.t.includes(t)||i.e===e)&&n.push(i);return n.length===0?`<div class="text-xs text-gray-400 dark:text-gray-600 px-1 py-2">${Y(`snippet.emoji_no_results`)}</div>`:`<div class="flex flex-wrap gap-1">${n.map(te).join(``)}</div>`}function re(){let e=_(`snip-emoji-grid`);if(!e)return;e.innerHTML=ne(),ee||=(e.addEventListener(`click`,e=>{let t=e.target.closest(`.emoji-btn`);t&&t.dataset.emoji&&ae(t.dataset.emoji)}),_(`snip-emoji-search`)?.addEventListener(`input`,e=>ie(e.target.value)),!0);let t=_(`snip-emoji-search`);t&&(t.value=``),k()}function ie(e){let t=_(`snip-emoji-grid`);if(!t)return;let n=(e||``).trim();t.innerHTML=n.length<2?ne():O(n)}function ae(e){let t=_(`snip-emoji-string`);t&&(t.value+=e,k())}function oe(){let e=_(`snip-emoji-string`);e&&(e.value=``,k())}let se={info:`ring-blue-400`,success:`ring-green-400`,warning:`ring-amber-400`,danger:`ring-red-400`,note:`ring-purple-400`,neutral:`ring-gray-400`};function ce(e){document.querySelectorAll(`.color-swatch-btn`).forEach(e=>{e.classList.remove(`selected-swatch`,`ring-offset-2`)}),e.classList.add(`selected-swatch`,`ring-offset-2`);let t=e.getAttribute(`data-color-swatch`)||`info`;e.classList.add(se[t]||`ring-blue-400`),f=t,k()}function le(e){document.querySelectorAll(`.color-text-swatch-btn`).forEach(e=>{e.classList.remove(`selected-text-swatch`,`ring-offset-2`)}),e.classList.add(`selected-text-swatch`,`ring-offset-2`);let t=e.getAttribute(`data-color-text-swatch`)||`info`;e.classList.add(se[t]||`ring-blue-400`),p=t,k()}function ue(e){return Lf[e]||Lf.info}function de(e){return e.replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/`([^`]+)`/g,`$1`).replace(/\*\*([^*]+)\*\*/g,`$1`).replace(/__([^_]+)__/g,`$1`).replace(/(^|[^*])\*([^*]+)\*(?!\*)/g,`$1$2`).replace(/(^|[^_])_([^_]+)_(?!_)/g,`$1$2`).trim()}function fe(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}function pe(e){let t=[],n=(e||``).split(`
56
+ `),r=!1;for(let e of n){if(/^```/.test(e)){r=!r;continue}if(r)continue;let n=e.match(/^(#{1,6})\s+(.+?)\s*#*\s*$/);if(!n)continue;let i=de(n[2]),a=fe(i);a&&t.push({level:n[1].length,text:i,slug:a})}return t}function me(){return pe(n()?n().value:``)}function he(e,t,n){if(e){if(t.length===0){e.innerHTML=`<option value="" disabled selected>${Y(n)}</option>`;return}e.innerHTML=t.map(e=>{let t=`· `.repeat(Math.max(0,e.level-1));return`<option value="${g(e.slug)}">${g(t+e.text)}</option>`}).join(``)}}function ge(){he(_(`snip-anchor-id`),me(),`snippet.link_anchor_no_headings`)}async function _e(){let e=_(`snip-anchor-doc-select`),t=_(`snip-anchor-doc-id`);if(!e||!t)return;let n=e.value;if(!n){he(t,[],`snippet.link_anchor_no_headings`),k();return}t.innerHTML=`<option value="" disabled selected>${Y(`common.loading`)}</option>`;try{he(t,pe((await fetch(`/api/documents/`+encodeURIComponent(n)).then(e=>{if(!e.ok)throw Error(e.statusText);return e.json()})).content||``),`snippet.link_anchor_no_headings`)}catch{he(t,[],`snippet.link_anchor_no_headings`)}k()}function ve(e,t){let n=_(e);n&&n.value.trim()===``&&(n.value=t)}function ye(){let e=_(`snippet-type`).value,t=jf(e);kf.forEach(e=>_(`snip-panel-`+e)?.classList.toggle(`hidden`,e!==t)),_(`snippet-preview-wrap`)?.classList.toggle(`hidden`,e===`attachment`||e===`table`||e===`code-block`||e===`blockquote`||e===`ordered-list`||e===`unordered-list`||e===`colored-section`||e===`colored-text`||e===`tree`||e===`collapsible`||e.startsWith(`heading-`)),e===`table`?vp(m):e===`tree`?Fp(h):e===`diagram`?be():e===`emojis`?re():e===`attachment`||(e===`ordered-list`?ve(`snip-ordered-list-content`,Vf()):e===`unordered-list`&&ve(`snip-unordered-list-content`,Hf()),k())}async function be(){let e=[];try{e=await fetch(`/api/diagrams`).then(e=>e.json())}catch{e=[]}let t=_(`snip-diag-select`);t&&(t.innerHTML=e.length?e.map(e=>`<option value="${g(e.id)}">${g(e.title)}</option>`).join(``):`<option value="" disabled>${Y(`snippet.diagram_no_diagrams`)}</option>`);let n=$.currentDocId&&$.allDocs.find(e=>e.id===$.currentDocId),r=n&&n.title||``,i=r.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_|_$/g,``),a=_(`snip-diag-img-name`);a&&(a.value=i?i+`.png`:`diagram.png`);let o=_(`snip-diag-new-name`);o&&(o.value=r?r+` Diagram`:``);let s=_(`snip-diag-mode-existing`);s&&(s.checked=!0),xe()}function xe(){let e=_(`snip-diag-mode-new`)?.checked??!1;_(`snip-diag-existing-section`)?.classList.toggle(`hidden`,e),_(`snip-diag-new-section`)?.classList.toggle(`hidden`,!e),Se(),k()}function Se(){let e=_(`snip-diag-mode-new`)?.checked??!1,t=``;if(e)t=_(`snip-diag-new-name`)?.value.trim()||``;else{let e=_(`snip-diag-select`);t=e?.options[e.selectedIndex]?.text??``}let n=t.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_|_$/g,``),r=_(`snip-diag-img-name`);r&&(r.value=n?n+`.png`:`diagram.png`)}function Ce(e,t){return e.options[e.selectedIndex]?.text||t}function we(e){return _(e)?.value??``}function Te(e){switch(e){case`collapsible`:return{summary:we(`snip-collapsible-summary`),summaryFallback:Y(`snippet.collapsible_summary_value`),body:we(`snip-collapsible-body`),bodyFallback:`## Titre
57
+
58
+ Texte`};case`link`:return{text:we(`snip-link-text`),textFallback:Y(`snippet.link_text_placeholder`),url:we(`snip-link-url`)};case`doc-link`:{let e=_(`snip-doc-select`);return{docId:e.value,title:Ce(e,e.value),text:we(`snip-doc-link-text`)}}case`anchor-link`:return{text:we(`snip-anchor-text`),textFallback:Y(`snippet.link_section_placeholder`),anchor:we(`snip-anchor-id`),anchorFallback:Y(`snippet.link_anchor_placeholder`)};case`anchor-doc-link`:return{docId:_(`snip-anchor-doc-select`).value,text:we(`snip-anchor-doc-text`),textFallback:Y(`snippet.link_section_placeholder`),anchor:we(`snip-anchor-doc-id`),anchorFallback:Y(`snippet.link_anchor_placeholder`)};case`ordered-list`:return{content:we(`snip-ordered-list-content`)};case`unordered-list`:return{content:we(`snip-unordered-list-content`)};case`code-block`:return{lang:we(`snip-code-lang`),code:we(`snip-code-content`),inlineIndent:u};case`blockquote`:{let e=_(`snip-blockquote-icon`);return{type:we(`snip-blockquote-type`),title:we(`snip-blockquote-title`),icon:!!(e&&e.checked),content:we(`snip-blockquote-content`)}}case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return{text:we(`snip-heading-content`),fallback:Y(`snippet.heading_text_placeholder`)||`Titre`};case`image`:return{alt:we(`snip-image-alt`),url:we(`snip-image-url`)};case`table`:{let e=_(`snip-table-bordered`);return{markdown:jp(m),style:we(`snip-table-style`),bordered:!!(e&&e.checked),color:we(`snip-table-color`)}}case`tree`:return{markdown:Bp(h)};case`diagram`:{let e=_(`snip-diag-mode-new`)?.checked??!1,t=we(`snip-diag-img-name`).trim()||`diagram.png`;if(e)return{id:`d`+Date.now(),label:we(`snip-diag-new-name`).trim()||`Diagram`,imageName:t};let n=_(`snip-diag-select`);return{id:n.value,label:Ce(n,`Diagram`),imageName:t}}case`colored-text`:return{color:ue(p),content:we(`snip-colored-text-content`)||Y(`snippet.colored_text_content_placeholder`)};case`colored-section`:return{color:ue(f),content:we(`snip-colored-content`)||Y(`snippet.colored_section_content_placeholder`)};case`emojis`:return{value:we(`snip-emoji-string`)};case`compare`:return{content:we(`snip-compare-content`)};default:return{}}}function Ee(){let e=_(`snippet-type`).value;return up(e,Te(e))}function k(){let e=_(`snippet-preview`);e&&(e.textContent=Ee())}function De(){Ap(m)}function Oe(){let e=we(`snip-blockquote-type`),t=_(`snip-blockquote-icon`),n=_(`snip-blockquote-title`),r=new Set([`info`,`success`,`warning`,`error`].map(e=>Y(`snippet.blockquote_default_title_${e}`)).filter(Boolean)),i=n?n.value.trim():``,a=i===``||r.has(i);e?(t&&(t.checked=!0),n&&a&&(n.value=Y(`snippet.blockquote_default_title_${e}`)||e)):(t&&(t.checked=!1),n&&r.has(i)&&(n.value=``)),k()}function ke(){t.onclose()}function Ae(e){if(!n())return;let t=c,r=l,i=n().value.slice(0,t),a=n().value.slice(r);n().value=i+e+a,n().selectionStart=n().selectionEnd=t+e.length,n().dispatchEvent(new Event(`input`,{bubbles:!0})),n().focus()}async function je(){let e=_(`snippet-type`).value;if(r()===`inline-edit`&&(e===`diagram`||e===`attachment`)||r()===`inline-insert`&&e===`attachment`)return;if(e===`diagram`){await j();return}if(e===`attachment`){await Me();return}let t=Ee();if(r()===`inline-edit`){let e=i().slice(0,c)+t+i().slice(l);try{s()&&await s()(e)}catch(e){alert(Y(`snippet.inline_save_failed`)+(e instanceof Error?e.message:String(e)))}ke();return}if(r()===`inline-insert`){let e=i().slice(0,c),n=i().slice(c),r=e.length===0||/\n\n$/.test(e)?``:e.endsWith(`
59
+ `)?`
60
+ `:`
61
+
62
+ `,a=n.length===0||/^\n\n/.test(n)?``:n.startsWith(`
63
+ `)?`
64
+ `:`
65
+
66
+ `,o=r+t+a;try{s()&&await s()(e+o+n)}catch(e){alert(Y(`snippet.inline_insert_failed`)+(e instanceof Error?e.message:String(e)))}ke();return}Ae(t),ke()}async function A(){if(r()!==`inline-edit`||!await H(d).show({title:Y(`snippet.inline_delete_title`),message:Y(`snippet.inline_delete_message`),confirmLabel:Y(`snippet.inline_delete_confirm_btn`),cancelLabel:Y(`common.cancel`),danger:!0}))return;let e=c,t=l;try{s()&&await s()(i().slice(0,e)+i().slice(t))}catch(e){alert(Y(`snippet.inline_delete_failed`)+(e instanceof Error?e.message:String(e)))}ke()}async function Me(){if(!n())return;let e=document.createElement(`input`);e.type=`file`,e.onchange=async()=>{let t=e.files?.[0];if(!t)return;let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(String(r.result)),r.onerror=()=>n(r.error),r.readAsDataURL(t)});try{let e=await fetch(`/api/files/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:n,name:t.name})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||e.statusText)}let r=await e.json(),i=r.url||``;Ae(`[📎 ${r.originalName||r.filename||t.name}](${i})`)}catch(e){alert(Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)))}ke()},e.click()}async function j(){let e=_(`snip-diag-mode-new`)?.checked??!1,t=we(`snip-diag-img-name`).trim()||`diagram.png`,a,o;if(e){a=`d`+Date.now(),o=we(`snip-diag-new-name`).trim()||`Diagram`;try{await fetch(`/api/diagrams/${a}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:o,nodes:[],edges:[]})})}catch(e){alert(Y(`error.create_diagram`)+(e instanceof Error?e.message:String(e)));return}}else{let e=_(`snip-diag-select`);a=e.value,o=e.options[e.selectedIndex]?.text||`Diagram`}let l=`[![${o}](./images/${t})](/diagram?id=${a})`;if(r()===`inline-insert`){let e=i().slice(0,c),t=i().slice(c),n=e.length===0||/\n\n$/.test(e)?``:e.endsWith(`
67
+ `)?`
68
+ `:`
69
+
70
+ `,r=t.length===0||/^\n\n/.test(t)?``:t.startsWith(`
71
+ `)?`
72
+ `:`
73
+
74
+ `,a=e+n+l+r+t;try{s()&&await s()(a)}catch(e){alert(Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)));return}}else if(Ae(l),$.currentDocId&&n())try{await fetch(`/api/documents/`+$.currentDocId,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({content:n().value})})}catch(e){alert(Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)));return}ke(),window.location.href=`/diagram?id=${a}&img=${encodeURIComponent(t)}`}function Ne(e,t){if(Array.from(e.options).some(e=>e.value===t))return;let n=document.createElement(`option`);n.value=t,n.textContent=t,e.insertBefore(n,e.firstChild)}function Pe(e,t){for(let n of Array.from(e.options))if(n.value===t){e.value=n.value;return}}function Ie(e){let t=Object.entries(Lf).find(([,t])=>t.border===e);return t?t[0]:null}function Le(e){e&&(p=e,document.querySelectorAll(`.color-text-swatch-btn`).forEach(e=>{e.classList.remove(`selected-text-swatch`,`ring-offset-2`)}),document.querySelector(`[data-color-text-swatch="${p}"]`)?.classList.add(`selected-text-swatch`,`ring-offset-2`))}function Re(e){e&&(f=e,document.querySelectorAll(`.color-swatch-btn`).forEach(e=>{e.classList.remove(`selected-swatch`,`ring-offset-2`)}),document.querySelector(`[data-color-swatch="${f}"]`)?.classList.add(`selected-swatch`,`ring-offset-2`))}function ze(e,t){let n=im(t,e,{inlineIndent:u});switch(t){case`collapsible`:n.summary!==void 0&&Be(`snip-collapsible-summary`,n.summary),Be(`snip-collapsible-body`,n.body||``);break;case`link`:n.text!==void 0&&(Be(`snip-link-text`,n.text),Be(`snip-link-url`,n.url));break;case`doc-link`:if(n.docId!==void 0){let e=_(`snip-doc-select`);Pe(e,n.docId);let t=e.options[e.selectedIndex]?.text??``;Be(`snip-doc-link-text`,n.text===t?``:n.text)}break;case`anchor-link`:if(n.anchor!==void 0){Be(`snip-anchor-text`,n.text);let e=_(`snip-anchor-id`);Ne(e,n.anchor),e.value=n.anchor}break;case`anchor-doc-link`:n.docId!==void 0&&(Pe(_(`snip-anchor-doc-select`),n.docId),Be(`snip-anchor-doc-text`,n.text),_e().then(()=>{let e=_(`snip-anchor-doc-id`);e&&(Ne(e,n.anchor),e.value=n.anchor,k())}));break;case`ordered-list`:Be(`snip-ordered-list-content`,n.content);break;case`unordered-list`:Be(`snip-unordered-list-content`,n.content);break;case`code-block`:Be(`snip-code-lang`,n.lang),Be(`snip-code-content`,n.code);break;case`blockquote`:{Be(`snip-blockquote-type`,n.type||``),Be(`snip-blockquote-title`,n.title||``);let e=_(`snip-blockquote-icon`);e&&(e.checked=!!n.icon),Be(`snip-blockquote-content`,n.content);break}case`image`:n.alt!==void 0&&(Be(`snip-image-alt`,n.alt),Be(`snip-image-url`,n.url));break;case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:Be(`snip-heading-content`,n.text);break;case`table`:{Be(`snip-table-style`,n.attrs.style||``);let e=_(`snip-table-bordered`);e&&(e.checked=n.attrs.border===`bordered`),Be(`snip-table-color`,n.attrs.color||``),m.data=n.rows,Ap(m);break}case`tree`:h.items=n.items,Ip(h);break;case`colored-text`:n.color!==void 0&&(Le(Ie(n.color)),Be(`snip-colored-text-content`,n.content));break;case`colored-section`:n.borderColor&&Re(Ie(n.borderColor)),n.content!==void 0&&Be(`snip-colored-content`,n.content);break;case`compare`:Be(`snip-compare-content`,n.content||``);break}k()}function Be(e,t){let n=_(e);n&&(n.value=t??``)}function Ve(){let e=$.allDocs.map(e=>`<option value="${g(e.id)}">${g(e.title)}</option>`).join(``),t=_(`snip-doc-select`);t&&(t.innerHTML=e);let n=_(`snip-anchor-doc-select`);n&&(n.innerHTML=e),ge(),_e()}function He(){let e=r()===`inline-edit`,t=_(`snippet-modal-title`);if(t){let n=`snippet.modal_title`;e?n=`snippet.inline_modal_title`:r()===`inline-insert`&&(n=`snippet.inline_insert_modal_title`),t.textContent=Y(n)}let n=_(`snippet-submit-btn`);n&&(n.textContent=Y(e?`snippet.inline_save_btn`:`snippet.insert_btn`));let i=_(`snippet-type`);i&&(i.disabled=e,i.classList.toggle(`cursor-not-allowed`,e),i.classList.toggle(`opacity-70`,e));let a=_(`snippet-delete-btn`);a&&a.classList.toggle(`hidden`,!e);let o=_(`snippet-modal-card`);o&&(o.classList.toggle(`max-w-6xl`,!e),o.classList.toggle(`max-w-5xl`,e))}let Ue=!1;On(()=>{t.open&&!Ue?(Ue=!0,u=``,r()===`inline-edit`&&a()?(c=a().start,l=a().end,u=a().indent||``):r()===`inline-insert`?c=l=Math.max(0,Math.min(i().length,Number(o())||0)):n()&&(c=n().selectionStart,l=n().selectionEnd),f=`info`,p=`info`,queueMicrotask(()=>{if(He(),Ve(),r()===`inline-edit`&&a()){let e=i().slice(c,l),t=_(`snippet-type`);t&&(t.value=a().type),ye(),ze(e,a().type),S(!1),a().type===`table`&&a().tableFocusCell&&bp(a().tableFocusCell.row,a().tableFocusCell.col,!0)}else if(r()===`inline-insert`)x();else{let e=n()?n().value.slice(c,l):``,t=e?am(e):null;if(t){let n=_(`snippet-type`);n&&(n.value=t),ye(),ze(e,t),S()}else x()}})):t.open||(Ue=!1)});var We=sm(),Ge=z(We),Je=e=>{var t=om(),n=R(t),r=R(n),i=R(r),a=R(i,!0);M(i),M(r);var o=B(r,4),s=R(o),c=B(s,4),l=R(c,!0);M(c),M(o);var u=B(o,2),d=B(R(u),2),f=R(d,!0);M(d),M(u);var p=B(u,2),m=R(p),g=R(m,!0);M(m);var _=B(m,2),v=R(_),y=R(v,!0);M(v),v.value=v.__value=`diagram`;var b=B(v),x=R(b,!0);M(b),b.value=b.__value=`heading-1`;var S=B(b),C=R(S,!0);M(S),S.value=S.__value=`heading-2`;var E=B(S),ee=R(E,!0);M(E),E.value=E.__value=`heading-3`;var te=B(E),ne=R(te,!0);M(te),te.value=te.__value=`heading-4`;var O=B(te),re=R(O,!0);M(O),O.value=O.__value=`collapsible`;var ie=B(O),ae=R(ie,!0);M(ie),ie.value=ie.__value=`link`;var se=B(ie),ue=R(se,!0);M(se),se.value=se.__value=`doc-link`;var de=B(se),fe=R(de,!0);M(de),de.value=de.__value=`anchor-link`;var pe=B(de),me=R(pe,!0);M(pe),pe.value=pe.__value=`anchor-doc-link`;var he=B(pe),ge=R(he,!0);M(he),he.value=he.__value=`ordered-list`;var ve=B(he),be=R(ve,!0);M(ve),ve.value=ve.__value=`unordered-list`;var Ce=B(ve),we=R(Ce,!0);M(Ce),Ce.value=Ce.__value=`code-block`;var Te=B(Ce),Ee=R(Te,!0);M(Te),Te.value=Te.__value=`blockquote`;var Ae=B(Te),Me=R(Ae,!0);M(Ae),Ae.value=Ae.__value=`separator`;var j=B(Ae),Ne=R(j,!0);M(j),j.value=j.__value=`image`;var Pe=B(j),Ie=R(Pe,!0);M(Pe),Pe.value=Pe.__value=`table`;var Le=B(Pe),Re=R(Le,!0);M(Le),Le.value=Le.__value=`tree`;var ze=B(Le),Be=R(ze,!0);M(ze),ze.value=ze.__value=`colored-section`;var Ve=B(ze),He=R(Ve,!0);M(Ve),Ve.value=Ve.__value=`colored-text`;var Ue=B(Ve),We=R(Ue,!0);M(Ue),Ue.value=Ue.__value=`emojis`;var Ge=B(Ue),Ke=R(Ge,!0);M(Ge),Ge.value=Ge.__value=`attachment`;var qe=B(Ge),Je=R(qe,!0);M(qe),qe.value=qe.__value=`local-search`;var Ye=B(qe),Xe=R(Ye,!0);M(Ye),Ye.value=Ye.__value=`compare`,M(_),M(p);var Ze=B(p,2),Qe=R(Ze),$e=R(Qe),et=R($e,!0);M($e);var tt=B($e,2);M(Qe),M(Ze);var nt=B(Ze,2),rt=R(nt),it=R(rt),at=R(it,!0);M(it);var ot=B(it,2);M(rt);var st=B(rt,2),ct=R(st),lt=R(ct,!0);M(ct);var ut=B(ct,2);M(st),M(nt);var N=B(nt,2),dt=R(N),ft=R(dt),pt=R(ft,!0);M(ft);var mt=B(ft,2);M(dt);var ht=B(dt,2),gt=R(ht),_t=R(gt,!0);M(gt);var vt=B(gt,2);M(ht),M(N);var yt=B(N,2),bt=R(yt),xt=R(bt),St=R(xt,!0);M(xt);var Ct=B(xt,2);M(bt);var wt=B(bt,2),Tt=R(wt),Et=R(Tt),Dt=R(Et,!0);M(Et);var Ot=B(Et,2),kt=R(Ot,!0);M(Ot),M(Tt);var At=B(Tt,2);M(wt),M(yt);var jt=B(yt,2),Mt=R(jt),Nt=R(Mt),Pt=R(Nt,!0);M(Nt);var Ft=B(Nt,2);M(Mt);var It=B(Mt,2),Lt=R(It),Rt=R(Lt),zt=R(Rt,!0);M(Rt);var Bt=B(Rt,2),P=R(Bt,!0);M(Bt),M(Lt);var Vt=B(Lt,2);M(It),M(jt);var Ht=B(jt,2),Ut=R(Ht),Wt=R(Ut),Gt=R(Wt,!0);M(Wt);var Kt=B(Wt,2);M(Ut);var qt=B(Ut,2),Jt=R(qt),Yt=R(Jt,!0);M(Jt);var Xt=B(Jt,2);M(qt);var F=B(qt,2),Zt=R(F),I=R(Zt),Qt=R(I,!0);M(I);var $t=B(I,2),en=R($t,!0);M($t),M(Zt);var tn=B(Zt,2);M(F),M(Ht);var L=B(Ht,2),nn=R(L),rn=R(nn),an=R(rn,!0);M(rn);var on=B(rn,2);M(nn),M(L);var sn=B(L,2),cn=R(sn),ln=R(cn),un=R(ln,!0);M(ln);var dn=B(ln,2);M(cn),M(sn);var fn=B(sn,2),z=R(fn),pn=R(z),mn=R(pn),hn=R(mn,!0);M(mn);var gn=B(mn,2),_n=R(gn,!0);M(gn),M(pn);var vn=B(pn,2);M(z);var yn=B(z,2),bn=R(yn),xn=R(bn,!0);M(bn);var Sn=B(bn,2);M(yn),M(fn);var Cn=B(fn,2),wn=R(Cn),Tn=R(wn),En=R(Tn),Dn=R(En,!0);M(En);var On=B(En,2),kn=R(On),An=R(kn,!0);M(kn),kn.value=kn.__value=``;var jn=B(kn),Mn=R(jn,!0);M(jn),jn.value=jn.__value=`info`;var Nn=B(jn),Pn=R(Nn,!0);M(Nn),Nn.value=Nn.__value=`success`;var Fn=B(Nn),In=R(Fn,!0);M(Fn),Fn.value=Fn.__value=`warning`;var Ln=B(Fn),Rn=R(Ln,!0);M(Ln),Ln.value=Ln.__value=`error`,M(On),M(Tn);var zn=B(Tn,2),Bn=R(zn),Vn=B(Bn,2),Hn=R(Vn,!0);M(Vn),M(zn),M(wn);var Un=B(wn,2),Wn=R(Un),Gn=R(Wn,!0);M(Wn);var Kn=B(Wn,2);M(Un);var qn=B(Un,2),Jn=R(qn),Yn=R(Jn,!0);M(Jn);var Xn=B(Jn,2);M(qn),M(Cn);var Zn=B(Cn,2),Qn=R(Zn),$n=R(Qn),er=R($n,!0);M($n);var tr=B($n,2);M(Qn);var nr=B(Qn,2),rr=R(nr),ir=R(rr,!0);M(rr);var ar=B(rr,2);M(nr),M(Zn);var or=B(Zn,2),sr=R(or),cr=R(sr),lr=R(cr),ur=R(lr,!0);M(lr);var dr=B(lr,2),fr=R(dr),pr=R(fr,!0);M(fr),fr.value=fr.__value=``;var mr=B(fr),hr=R(mr,!0);M(mr),mr.value=mr.__value=`compact`;var gr=B(mr),_r=R(gr,!0);M(gr),gr.value=gr.__value=`striped`,M(dr),M(cr);var vr=B(cr,2),yr=R(vr),br=B(yr,2),H=R(br,!0);M(br),M(vr);var xr=B(vr,2),Sr=R(xr),Cr=R(Sr,!0);M(Sr);var wr=B(Sr,2),Tr=R(wr),Er=R(Tr,!0);M(Tr),Tr.value=Tr.__value=``;var Dr=B(Tr),Or=R(Dr,!0);M(Dr),Dr.value=Dr.__value=`info`;var kr=B(Dr),Ar=R(kr,!0);M(kr),kr.value=kr.__value=`success`;var jr=B(kr),Mr=R(jr,!0);M(jr),jr.value=jr.__value=`warning`;var Nr=B(jr),Pr=R(Nr,!0);M(Nr),Nr.value=Nr.__value=`danger`;var Fr=B(Nr),Ir=R(Fr,!0);M(Fr),Fr.value=Fr.__value=`note`,M(wr),M(xr);var Lr=B(xr,2),Rr=R(Lr,!0);M(Lr),M(sr),Fe(2),M(or);var zr=B(or,2),W=R(zr),Br=R(W,!0);M(W);var Vr=B(W,4),Hr=R(Vr,!0);M(Vr),M(zr);var Ur=B(zr,2),Wr=R(Ur),Gr=R(Wr),Kr=R(Gr);Ei(Kr);var qr=B(Kr,2),Jr=R(qr,!0);M(qr),M(Gr);var q=B(Gr,2),Yr=R(q),Xr=B(Yr,2),Zr=R(Xr,!0);M(Xr),M(q),M(Wr);var Qr=B(Wr,2),$r=R(Qr),ei=R($r,!0);M($r);var ti=B($r,2);M(Qr);var ni=B(Qr,2),ri=R(ni),ii=R(ri,!0);M(ri);var oi=B(ri,2);M(ni);var si=B(ni,2),ci=R(si),li=R(ci),ui=R(li,!0);M(li);var di=B(li,2),fi=R(di,!0);M(di),M(ci);var pi=B(ci,2);M(si),M(Ur);var mi=B(Ur,2),hi=R(mi),gi=R(hi),_i=R(gi,!0);M(gi);var vi=B(gi,2),yi=R(vi),bi=B(yi,2),xi=B(bi,2),Si=B(xi,2),Ci=B(Si,2),wi=B(Ci,2);M(vi),M(hi);var Ti=B(hi,2),Di=R(Ti),Oi=R(Di,!0);M(Di);var ki=B(Di,2);M(Ti),M(mi);var Ai=B(mi,2),ji=R(Ai),Mi=R(ji),Ni=R(Mi,!0);M(Mi);var Pi=B(Mi,2),Fi=R(Pi),Ii=B(Fi,2),Li=B(Ii,2),Ri=B(Li,2),zi=B(Ri,2),Bi=B(zi,2);M(Pi),M(ji);var Vi=B(ji,2),Hi=R(Vi),Ui=R(Hi,!0);M(Hi);var Wi=B(Hi,2);M(Vi),M(Ai);var Gi=B(Ai,2),Ki=R(Gi),qi=R(Ki),Ji=R(qi,!0);M(qi);var Yi=B(qi,2),Xi=R(Yi),Zi=B(Xi,2),Qi=R(Zi,!0);M(Zi),M(Yi),M(Ki);var $i=B(Ki,2),ea=R($i);M($i),Fe(2),M(Gi);var ta=B(Gi,2),na=R(ta),ra=R(na);ai(ra,()=>Y(`snippet.attachment_help`),!0),M(ra);var ia=B(ra,2);ai(ia,()=>Y(`snippet.attachment_alt`),!0),M(ia),M(na),M(ta);var aa=B(ta,2),oa=R(aa),sa=R(oa),ca=R(sa,!0);M(sa);var la=B(sa,2);M(oa),M(aa);var ua=B(aa,2),da=R(ua),fa=R(da,!0);M(da),Fe(2),M(ua);var pa=B(ua,2),ma=R(pa),ha=R(ma,!0);M(ma);var ga=B(ma,2),_a=R(ga,!0);M(ga);var va=B(ga,2),ya=R(va,!0);M(va),M(pa),M(n),M(t),V((e,t,n,r,i,o,c,u,d,p,m,h,_,v,b,S,w,T,E,D,te,O,ie,oe,se,ce,le,de,pe,he,_e,ve,ye,xe,Se,Ce,Te,k,De,Oe,ke,Ae,je,A,j,Pe,M,Fe,Le,ze,Ve,Ue,Ge,qe,Ye,Ze,Qe,$e,nt,rt,it,ot,st,ct,N,dt,ft,ht,gt,yt,bt,xt,Ct,wt,Tt,Et,Ot,At,jt,Mt,Nt,It,Lt,Rt,Bt,Vt,Ht,Ut,Wt,Kt,qt,Jt,F,Zt,I,$t,tn,L,nn,rn,sn,cn,ln,fn,R,z,B,pn,mn,gn,vn,yn,bn,Cn,wn,Tn,En,On,kn,jn,Nn,V,Fn,Ln,zn,Bn,Vn,Un,Wn,qn,Jn,Zn,Qn,$n)=>{K(a,e),J(s,`placeholder`,t),K(l,n),K(f,r),K(g,i),K(y,o),K(x,c),K(C,u),K(ee,d),K(ne,p),K(re,m),K(ae,h),K(ue,_),K(fe,v),K(me,b),K(ge,S),K(be,w),K(we,T),K(Ee,E),K(Me,D),K(Ne,te),K(Ie,O),K(Re,ie),K(Be,oe),K(He,se),K(We,ce),K(Ke,le),K(Je,de),K(Xe,pe),K(et,he),J(tt,`placeholder`,_e),K(at,ve),K(lt,ye),J(ut,`placeholder`,xe),K(pt,Se),J(mt,`placeholder`,Ce),K(_t,Te),J(vt,`placeholder`,k),K(St,De),K(Dt,Oe),K(kt,ke),K(Pt,Ae),J(Ft,`placeholder`,je),K(zt,A),K(P,j),K(Gt,Pe),K(Yt,M),J(Xt,`placeholder`,Fe),K(Qt,Le),K(en,ze),K(an,Ve),J(on,`placeholder`,Ue),K(un,Ge),J(dn,`placeholder`,qe),K(hn,Ye),K(_n,Ze),K(xn,Qe),J(Sn,`placeholder`,$e),K(Dn,nt),K(An,rt),K(Mn,it),K(Pn,ot),K(In,st),K(Rn,ct),K(Hn,N),K(Gn,dt),J(Kn,`placeholder`,ft),K(Yn,ht),J(Xn,`placeholder`,gt),K(er,yt),J(tr,`placeholder`,bt),K(ir,xt),J(ar,`placeholder`,Ct),K(ur,wt),K(pr,Tt),K(hr,Et),K(_r,Ot),K(H,At),K(Cr,jt),K(Er,Mt),K(Or,Nt),K(Ar,It),K(Mr,Lt),K(Pr,Rt),K(Ir,Bt),K(Rr,Vt),K(Br,Ht),K(Hr,Ut),K(Jr,Wt),K(Zr,Kt),K(ei,qt),K(ii,Jt),J(oi,`placeholder`,F),K(ui,Zt),K(fi,I),K(_i,$t),J(yi,`title`,tn),J(yi,`aria-label`,L),J(bi,`title`,nn),J(bi,`aria-label`,rn),J(xi,`title`,sn),J(xi,`aria-label`,cn),J(Si,`title`,ln),J(Si,`aria-label`,fn),J(Ci,`title`,R),J(Ci,`aria-label`,z),J(wi,`title`,B),J(wi,`aria-label`,pn),K(Oi,mn),J(ki,`placeholder`,gn),K(Ni,vn),J(Fi,`title`,yn),J(Fi,`aria-label`,bn),J(Ii,`title`,Cn),J(Ii,`aria-label`,wn),J(Li,`title`,Tn),J(Li,`aria-label`,En),J(Ri,`title`,On),J(Ri,`aria-label`,kn),J(zi,`title`,jn),J(zi,`aria-label`,Nn),J(Bi,`title`,V),J(Bi,`aria-label`,Fn),K(Ui,Ln),J(Wi,`placeholder`,zn),K(Ji,Bn),K(Qi,Vn),J(ea,`placeholder`,Un),K(ca,Wn),J(la,`placeholder`,qn),K(fa,Jn),K(ha,Zn),K(_a,Qn),K(ya,$n)},[()=>Y(`snippet.modal_title`),()=>Y(`snippet.picker_search_placeholder`),()=>Y(`snippet.picker_no_results`),()=>Y(`snippet.picker_back`),()=>Y(`snippet.type_label`),()=>Y(`snippet.diagram`),()=>Y(`snippet.heading_1`),()=>Y(`snippet.heading_2`),()=>Y(`snippet.heading_3`),()=>Y(`snippet.heading_4`),()=>Y(`snippet.collapsible`),()=>Y(`snippet.link`),()=>Y(`snippet.link_doc`),()=>Y(`snippet.link_anchor`),()=>Y(`snippet.link_doc_anchor`),()=>Y(`snippet.numbered_list`),()=>Y(`snippet.bullet_list`),()=>Y(`snippet.code_block`),()=>Y(`snippet.blockquote`),()=>Y(`snippet.separator`),()=>Y(`snippet.image`),()=>Y(`snippet.table`),()=>Y(`snippet.tree`),()=>Y(`snippet.colored_section`),()=>Y(`snippet.colored_text`),()=>Y(`snippet.emojis`),()=>Y(`snippet.attachment`),()=>Y(`snippet.local_search`),()=>Y(`snippet.compare`),()=>Y(`snippet.heading_text_label`),()=>Y(`snippet.heading_text_placeholder`),()=>Y(`snippet.collapsible_summary_label`),()=>Y(`snippet.collapsible_body_label`),()=>Y(`snippet.collapsible_body_placeholder`),()=>Y(`snippet.link_text_label`),()=>Y(`snippet.link_text_placeholder`),()=>Y(`snippet.link_url_label`),()=>Y(`snippet.link_url_placeholder`),()=>Y(`snippet.link_doc_label`),()=>Y(`snippet.link_text_label`),()=>Y(`snippet.link_doc_text_hint`),()=>Y(`snippet.link_text_label`),()=>Y(`snippet.link_section_placeholder`),()=>Y(`snippet.link_anchor_label`),()=>Y(`snippet.link_anchor_select_hint`),()=>Y(`snippet.link_target_doc_label`),()=>Y(`snippet.link_text_label`),()=>Y(`snippet.link_section_placeholder`),()=>Y(`snippet.link_anchor_label`),()=>Y(`snippet.link_anchor_select_hint`),()=>Y(`snippet.ordered_list_content_label`),()=>Y(`snippet.ordered_list_content_placeholder`),()=>Y(`snippet.unordered_list_content_label`),()=>Y(`snippet.unordered_list_content_placeholder`),()=>Y(`snippet.code_lang_label`),()=>Y(`snippet.code_lang_hint`),()=>Y(`snippet.code_content_label`),()=>Y(`snippet.code_content_placeholder`),()=>Y(`snippet.blockquote_type_label`),()=>Y(`snippet.blockquote_type_none`),()=>Y(`snippet.blockquote_type_info`),()=>Y(`snippet.blockquote_type_success`),()=>Y(`snippet.blockquote_type_warning`),()=>Y(`snippet.blockquote_type_error`),()=>Y(`snippet.blockquote_icon_label`),()=>Y(`snippet.blockquote_title_label`),()=>Y(`snippet.blockquote_title_placeholder`),()=>Y(`snippet.blockquote_content_label`),()=>Y(`snippet.blockquote_content_placeholder`),()=>Y(`snippet.image_alt_label`),()=>Y(`snippet.image_alt_placeholder`),()=>Y(`snippet.image_url_label`),()=>Y(`snippet.image_src_placeholder`),()=>Y(`snippet.table_style_label`),()=>Y(`snippet.table_style_default`),()=>Y(`snippet.table_style_compact`),()=>Y(`snippet.table_style_striped`),()=>Y(`snippet.table_border_label`),()=>Y(`snippet.table_color_label`),()=>Y(`snippet.table_color_default`),()=>Y(`snippet.table_color_info`),()=>Y(`snippet.table_color_success`),()=>Y(`snippet.table_color_warning`),()=>Y(`snippet.table_color_danger`),()=>Y(`snippet.table_color_note`),()=>Y(`snippet.table_keyboard_hint`),()=>Y(`snippet.tree_hint`),()=>Y(`snippet.tree_add_btn`),()=>Y(`snippet.diagram_existing`),()=>Y(`snippet.diagram_new`),()=>Y(`snippet.diagram_select_label`),()=>Y(`snippet.diagram_name_label`),()=>Y(`snippet.diagram_name_placeholder`),()=>Y(`snippet.diag_img_label`),()=>Y(`snippet.diag_img_saved_hint`),()=>Y(`snippet.colored_section_color_label`),()=>Y(`snippet.colored_section_swatch_info`),()=>Y(`snippet.colored_section_swatch_info`),()=>Y(`snippet.colored_section_swatch_success`),()=>Y(`snippet.colored_section_swatch_success`),()=>Y(`snippet.colored_section_swatch_warning`),()=>Y(`snippet.colored_section_swatch_warning`),()=>Y(`snippet.colored_section_swatch_danger`),()=>Y(`snippet.colored_section_swatch_danger`),()=>Y(`snippet.colored_section_swatch_note`),()=>Y(`snippet.colored_section_swatch_note`),()=>Y(`snippet.colored_section_swatch_neutral`),()=>Y(`snippet.colored_section_swatch_neutral`),()=>Y(`snippet.colored_section_content_label`),()=>Y(`snippet.colored_section_content_placeholder`),()=>Y(`snippet.colored_text_color_label`),()=>Y(`snippet.colored_section_swatch_info`),()=>Y(`snippet.colored_section_swatch_info`),()=>Y(`snippet.colored_section_swatch_success`),()=>Y(`snippet.colored_section_swatch_success`),()=>Y(`snippet.colored_section_swatch_warning`),()=>Y(`snippet.colored_section_swatch_warning`),()=>Y(`snippet.colored_section_swatch_danger`),()=>Y(`snippet.colored_section_swatch_danger`),()=>Y(`snippet.colored_section_swatch_note`),()=>Y(`snippet.colored_section_swatch_note`),()=>Y(`snippet.colored_section_swatch_neutral`),()=>Y(`snippet.colored_section_swatch_neutral`),()=>Y(`snippet.colored_text_content_label`),()=>Y(`snippet.colored_text_content_placeholder`),()=>Y(`snippet.emoji_selected_label`),()=>Y(`snippet.emoji_clear_btn`),()=>Y(`snippet.emoji_search_placeholder`),()=>Y(`snippet.compare_content_label`),()=>Y(`snippet.compare_content_placeholder`),()=>Y(`snippet.markdown_preview_label`),()=>Y(`snippet.inline_delete_btn`),()=>Y(`common.cancel`),()=>Y(`snippet.insert_btn`)]),U(`click`,t,e=>{e.target===e.currentTarget&&ke()}),U(`input`,s,w),U(`keydown`,s,T),U(`click`,u,D),U(`change`,_,ye),U(`input`,tt,k),U(`input`,ot,k),U(`input`,ut,k),U(`input`,mt,k),U(`input`,vt,k),U(`change`,Ct,k),U(`input`,At,k),U(`input`,Ft,k),U(`change`,Vt,k),U(`change`,Kt,_e),U(`input`,Xt,k),U(`change`,tn,k),U(`input`,on,k),U(`input`,dn,k),U(`input`,vn,k),U(`input`,Sn,k),U(`change`,On,Oe),U(`change`,Bn,k),U(`input`,Kn,k),U(`input`,Xn,k),U(`input`,tr,k),U(`input`,ar,k),U(`change`,dr,De),U(`change`,yr,De),U(`change`,wr,De),U(`click`,Vr,()=>Rp(h)),U(`change`,Kr,xe),U(`change`,Yr,xe),U(`change`,ti,()=>{Se(),k()}),U(`input`,oi,()=>{Se(),k()}),U(`input`,pi,k),U(`click`,yi,e=>ce(e.currentTarget)),U(`click`,bi,e=>ce(e.currentTarget)),U(`click`,xi,e=>ce(e.currentTarget)),U(`click`,Si,e=>ce(e.currentTarget)),U(`click`,Ci,e=>ce(e.currentTarget)),U(`click`,wi,e=>ce(e.currentTarget)),U(`input`,ki,k),U(`click`,Fi,e=>le(e.currentTarget)),U(`click`,Ii,e=>le(e.currentTarget)),U(`click`,Li,e=>le(e.currentTarget)),U(`click`,Ri,e=>le(e.currentTarget)),U(`click`,zi,e=>le(e.currentTarget)),U(`click`,Bi,e=>le(e.currentTarget)),U(`input`,Wi,k),U(`input`,Xi,k),U(`click`,Zi,oe),U(`input`,la,k),U(`click`,ma,A),U(`click`,ga,ke),U(`click`,va,je),G(e,t)};q(Ge,e=>{t.open&&e(Je)}),Li(Dl(B(Ge,2),{}),e=>I(d,e,!0),()=>H(d)),G(e,We),qe()}Nr([`click`,`input`,`keydown`,`change`]);function lm(e){let t=``,n=[],r=!0;for(let i=0;i<e.length;i++){let a=e[i].normalize(`NFD`);for(let e=0;e<a.length;e++){let o=a.charCodeAt(e);if(!(o>=768&&o<=879))if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122){let e=o>=65&&o<=90?o+32:o;t+=String.fromCharCode(e),n.push(i),r=!1}else r||=(t+=` `,n.push(i),!0)}}return n.push(e.length),t.endsWith(` `)&&(t=t.slice(0,-1),n.splice(n.length-2,1)),{normalized:t,map:n}}function um(e){return lm(e).normalized}function dm(e,t,n){if(e===t)return 0;let r=e.length,i=t.length;if(Math.abs(r-i)>n)return n+1;let a=null,o=Array(i+1),s=Array(i+1);for(let e=0;e<=i;e++)o[e]=e;for(let c=1;c<=r;c++){s[0]=c;let r=c;for(let n=1;n<=i;n++){let i=e.charCodeAt(c-1)===t.charCodeAt(n-1)?0:1,l=Math.min(o[n]+1,s[n-1]+1,o[n-1]+i);c>1&&n>1&&e.charCodeAt(c-1)===t.charCodeAt(n-2)&&e.charCodeAt(c-2)===t.charCodeAt(n-1)&&(l=Math.min(l,a[n-2]+1)),s[n]=l,l<r&&(r=l)}if(r>n)return n+1;a=o,o=s,s=Array(i+1)}return o[i]}function fm(e){return e>=7?2:+(e>=4)}function pm(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function mm(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function hm(e,t,n){t.innerHTML=``,t.classList.add(`hidden`);let r=e.querySelectorAll(`[data-ld-local-search]`);if(!r.length)return;r.forEach(e=>e.remove());let i=(()=>{let t=new Set;return um(e.textContent||``).split(` `).forEach(e=>{e.length>=3&&t.add(e)}),Array.from(t)})(),a=n(`local_search.placeholder`)||`Search in this document…`,o=n(`local_search.clear`)||`Clear`,s=document.createElement(`div`);s.className=`no-print mt-4 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 overflow-hidden`,s.innerHTML=`
75
+ <div class="flex items-center gap-2 px-3 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50">
76
+ <span class="text-gray-400 select-none" aria-hidden="true">🔎</span>
77
+ <input type="text" id="ld-local-search-input" autocomplete="off"
78
+ class="flex-1 bg-transparent border-0 text-sm text-gray-700 dark:text-gray-300 placeholder:text-gray-400 focus:outline-none focus:ring-0"
79
+ placeholder="${pm(a)}" />
80
+ <button type="button" id="ld-local-search-clear"
81
+ class="hidden text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 shrink-0 px-1"
82
+ title="${pm(o)}" aria-label="${pm(o)}">✕</button>
83
+ </div>
84
+ <div id="ld-local-search-results" class="hidden">
85
+ <div id="ld-local-search-title" class="px-3 py-1.5 text-xs font-medium text-gray-500 dark:text-gray-400 border-b border-gray-100 dark:border-gray-800"></div>
86
+ <ol id="ld-local-search-list" class="max-h-40 overflow-y-auto divide-y divide-gray-100 dark:divide-gray-800 list-none m-0 p-0"></ol>
87
+ </div>`,t.appendChild(s),t.classList.remove(`hidden`);let c=s.querySelector(`#ld-local-search-input`),l=s.querySelector(`#ld-local-search-clear`),u=s.querySelector(`#ld-local-search-results`),d=s.querySelector(`#ld-local-search-title`),f=s.querySelector(`#ld-local-search-list`),p=null;function m(){e.querySelectorAll(`mark.ld-local-mark`).forEach(e=>{let t=e.parentNode;for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}),e.normalize()}function h(e,t){let n=new Set;t.includes(e)&&n.add(e);let r=fm(e.length);if(r===0)return n;let a=e[0];for(let t of i)t!==e&&(Math.abs(t.length-e.length)>r||e.length>=3&&t[0]!==a||dm(e,t,r)<=r&&n.add(t));return n}function g(t){if(m(),!t){u.classList.add(`hidden`),l.classList.add(`hidden`),f.innerHTML=``;return}l.classList.remove(`hidden`);let r=um(t),i=r.split(` `).filter(Boolean);if(!i.length){u.classList.add(`hidden`);return}let a=um(e.textContent||``),o=i.map(e=>h(e,a));if(!o.some(e=>e.size>0)){d.textContent=n(`local_search.no_results`)||`No matches found.`,f.innerHTML=``,u.classList.remove(`hidden`);return}let s=new Set;o.forEach((e,t)=>{e.forEach(e=>{let n=e===i[t];s.add(n?e:`\\b`+mm(e)+`\\b`)})});let c=Array.from(s).sort((e,t)=>t.length-e.length),p=RegExp(`(`+c.map(e=>e.startsWith(`\\b`)?e:mm(e)).join(`|`)+`)`,`g`),g=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){return e.parentElement&&e.parentElement.closest(`mark`)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),v=[];for(;g.nextNode();)v.push(g.currentNode);let y=0,b=new Map;v.forEach(e=>{let t=e.textContent||``,{normalized:n,map:r}=lm(t);if(!n)return;let i=[],a;for(p.lastIndex=0;(a=p.exec(n))!==null;){if(a[0].length===0){p.lastIndex++;continue}i.push({start:a.index,end:a.index+a[0].length,term:a[0]})}if(!i.length)return;let s=e.parentElement?.closest(`p, li, td, h1, h2, h3, h4, h5, h6, pre, blockquote`)||e.parentElement,c=``,l=0;i.forEach(e=>{let n=r[e.start],i=r[e.end];if(!(n<l)&&(c+=pm(t.slice(l,n)),c+=`<mark class="ld-local-mark" id="ld-local-match-${y++}">${pm(t.slice(n,i))}</mark>`,l=i,s)){b.has(s)||b.set(s,new Set);let t=b.get(s);o.forEach((n,r)=>{n.has(e.term)&&t.add(r)})}}),c+=pm(t.slice(l));let u=document.createElement(`span`);u.innerHTML=c,e.parentNode.replaceChild(u,e)});let x=i.length,S=[];for(let[e,t]of b.entries())t.size===x&&S.push(e);let C;if(S.length>0){let t=new Set(S);C=Array.from(e.querySelectorAll(`mark.ld-local-mark`)).filter(e=>{let n=e.closest(`p, li, td, h1, h2, h3, h4, h5, h6, pre, blockquote`)||e.parentElement;return t.has(n)})}else C=Array.from(e.querySelectorAll(`mark.ld-local-mark`));if(!C.length){d.textContent=n(`local_search.no_results`)||`No matches found.`,f.innerHTML=``,u.classList.remove(`hidden`);return}d.textContent=(C.length===1?n(`local_search.count_singular`)||`{count} match`:n(`local_search.count_plural`)||`{count} matches`).replace(`{count}`,String(C.length)),f.innerHTML=C.map((e,t)=>{let n=e.closest(`p, li, td, h1, h2, h3, h4, h5, h6, pre, blockquote`)||e.parentElement,i=(n?n.textContent||``:e.textContent||``).trim(),a=um(i),s=-1;for(let e of o)for(let t of e){let e=a.indexOf(t);e>=0&&(s<0||e<s)&&(s=e)}s<0&&(s=a.indexOf(r.split(` `)[0])),s<0&&(s=0);let c=Math.max(0,s-40),l=Math.min(i.length,s+80),u=(c>0?`…`:``)+i.slice(c,l)+(l<i.length?`…`:``);return`<li><button type="button" data-target="${e.id}" class="ld-local-item w-full text-left px-3 py-1.5 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors text-xs"><span class="text-gray-400 font-mono mr-2">${t+1}.</span>${pm(u)}</button></li>`}).join(``),u.classList.remove(`hidden`),f.querySelectorAll(`.ld-local-item`).forEach(e=>{e.addEventListener(`click`,()=>_(e.dataset.target))})}function _(t){let n=document.getElementById(t),r=document.getElementById(`home-content-area`);if(!n||!r)return;let i=n.parentElement;for(;i&&i!==r;)i.tagName===`DETAILS`&&!i.open&&(i.open=!0),i=i.parentElement;e.querySelectorAll(`mark.ld-local-mark.ld-local-active`).forEach(e=>e.classList.remove(`ld-local-active`)),n.classList.add(`ld-local-active`),f.querySelectorAll(`.ld-local-item`).forEach(e=>{e.classList.toggle(`ld-local-item-active`,e.dataset.target===t)});let a=document.querySelector(`#home-doc-view header`),o=a?a.getBoundingClientRect().height:0,s=n.getBoundingClientRect().top,c=r.getBoundingClientRect().top,l=o+(r.clientHeight-o)/3;r.scrollTop+=s-c-l}c.addEventListener(`input`,()=>{p&&clearTimeout(p),p=window.setTimeout(()=>g(c.value.trim()),250)}),l.addEventListener(`click`,()=>{c.value=``,g(``),c.focus()}),c.addEventListener(`keydown`,e=>{e.key===`Escape`&&(c.value=``,g(``),c.blur())})}var gm=e=>e.normalize(`NFC`).normalize(`NFD`).replace(/[̀-ͯ]/g,``).toLowerCase();function _m(e,t){let n=gm(t);if(!n)return[];let r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),i=[];for(;r.nextNode();)i.push(r.currentNode);let a=0;i.forEach(e=>{let t=(e.textContent||``).normalize(`NFC`),r=gm(t);if(!r.includes(n))return;let i=``,o=0;for(;o<=r.length;){let e=r.indexOf(n,o);if(e===-1){i+=t.slice(o);break}i+=t.slice(o,e),i+=`<mark id="match-${a++}">${t.slice(e,e+n.length)}</mark>`,o=e+n.length}let s=document.createElement(`span`);s.innerHTML=i,e.parentNode.replaceChild(s,e)});let o=[];return e.querySelectorAll(`mark[id^='match-']`).forEach(e=>{let r=((e.closest(`p, li, td, h1, h2, h3, h4, h5, h6, pre`)||e.parentElement).textContent||``).trim(),i=gm(r).indexOf(n),a=Math.max(0,i-40),s=Math.min(r.length,i+t.length+40),c=(a>0?`…`:``)+r.slice(a,s)+(s<r.length?`…`:``);o.push({id:e.id,snippet:c})}),o}function vm(e){let t=document.getElementById(e),n=document.getElementById(`home-content-area`);if(!t||!n)return;let r=t.parentElement;for(;r&&r!==n;)r.tagName===`DETAILS`&&!r.open&&(r.open=!0),r=r.parentElement;document.querySelectorAll(`mark.match-active`).forEach(e=>e.classList.remove(`match-active`)),t.classList.add(`match-active`);let i=document.querySelector(`#home-doc-view header`),a=i?i.getBoundingClientRect().height:0,o=t.getBoundingClientRect().top,s=n.getBoundingClientRect().top,c=a+(n.clientHeight-a)/3;n.scrollTop+=o-s-c}var ym=new Set([`anchor-doc-link`,`doc-link`,`anchor-link`,`image`,`link`,`collapsible`,`colored-text`,`colored-section`,`tree`,`code-block`,`table`,`blockquote`,`separator`,`ordered-list`,`unordered-list`,`heading-1`,`heading-2`,`heading-3`,`heading-4`,`compare`]),bm={table:{labelKey:`snippet.inline_edit_btn_table`,iconClass:`fa-solid fa-table-cells`},"code-block":{labelKey:`snippet.inline_edit_btn_code_block`,iconClass:`fa-solid fa-code`},blockquote:{labelKey:`snippet.inline_edit_btn_blockquote`,iconClass:`fa-solid fa-quote-right`},"ordered-list":{labelKey:`snippet.inline_edit_btn_ordered_list`,iconClass:`fa-solid fa-list-ol`},"unordered-list":{labelKey:`snippet.inline_edit_btn_unordered_list`,iconClass:`fa-solid fa-list-ul`},tree:{labelKey:`snippet.inline_edit_btn_tree`,iconClass:`fa-solid fa-folder-tree`},"colored-section":{labelKey:`snippet.inline_edit_btn_colored_section`,iconClass:`fa-solid fa-fill-drip`},"colored-text":{labelKey:`snippet.inline_edit_btn_colored_text`,iconClass:`fa-solid fa-highlighter`},collapsible:{labelKey:`snippet.inline_edit_btn_collapsible`,iconClass:`fa-solid fa-caret-right`},link:{labelKey:`snippet.inline_edit_btn_link`,iconClass:`fa-solid fa-link`},"doc-link":{labelKey:`snippet.inline_edit_btn_doc_link`,iconClass:`fa-solid fa-file-lines`},"anchor-link":{labelKey:`snippet.inline_edit_btn_anchor_link`,iconClass:`fa-solid fa-anchor`},"anchor-doc-link":{labelKey:`snippet.inline_edit_btn_anchor_doc_link`,iconClass:`fa-solid fa-anchor`},image:{labelKey:`snippet.inline_edit_btn_image`,iconClass:`fa-solid fa-image`},separator:{labelKey:`snippet.inline_edit_btn_separator`,iconClass:`fa-solid fa-minus`},"heading-1":{labelKey:`snippet.inline_edit_btn_heading_1`,iconClass:`fa-solid fa-heading`},"heading-2":{labelKey:`snippet.inline_edit_btn_heading_2`,iconClass:`fa-solid fa-heading`},"heading-3":{labelKey:`snippet.inline_edit_btn_heading_3`,iconClass:`fa-solid fa-heading`},"heading-4":{labelKey:`snippet.inline_edit_btn_heading_4`,iconClass:`fa-solid fa-heading`},compare:{labelKey:`snippet.inline_edit_btn_compare`,iconClass:`fa-solid fa-table-columns`}};function xm(e){return bm[e]||{labelKey:`snippet.inline_edit_btn`,iconClass:`fa-solid fa-pen-to-square`}}var Sm={table:`snippet.inline_delete_btn_table`,"code-block":`snippet.inline_delete_btn_code_block`,blockquote:`snippet.inline_delete_btn_blockquote`,"ordered-list":`snippet.inline_delete_btn_ordered_list`,"unordered-list":`snippet.inline_delete_btn_unordered_list`,tree:`snippet.inline_delete_btn_tree`,"colored-section":`snippet.inline_delete_btn_colored_section`,"colored-text":`snippet.inline_delete_btn_colored_text`,collapsible:`snippet.inline_delete_btn_collapsible`,link:`snippet.inline_delete_btn_link`,"doc-link":`snippet.inline_delete_btn_doc_link`,"anchor-link":`snippet.inline_delete_btn_anchor_link`,"anchor-doc-link":`snippet.inline_delete_btn_anchor_doc_link`,image:`snippet.inline_delete_btn_image`,separator:`snippet.inline_delete_btn_separator`,"heading-1":`snippet.inline_delete_btn_heading_1`,"heading-2":`snippet.inline_delete_btn_heading_2`,"heading-3":`snippet.inline_delete_btn_heading_3`,"heading-4":`snippet.inline_delete_btn_heading_4`,compare:`snippet.inline_delete_btn_compare`};function Cm(e){return{labelKey:Sm[e]||`snippet.inline_delete_btn`,iconClass:`fa-solid fa-trash`}}var wm=[{types:[`collapsible`],selector:`details`},{types:[`colored-section`],selector:`div[style*="border-left"]`},{types:[`colored-text`],selector:`span[style*="color"]`},{types:[`tree`,`code-block`],selector:`pre`},{types:[`table`],selector:`table`},{types:[`blockquote`],selector:`blockquote`},{types:[`separator`],selector:`hr`},{types:[`ordered-list`],selector:`ol`},{types:[`unordered-list`],selector:`ul`},{types:[`heading-1`],selector:`h1`},{types:[`heading-2`],selector:`h2`},{types:[`heading-3`],selector:`h3`},{types:[`heading-4`],selector:`h4`},{types:[`image`],selector:`img`},{types:[`compare`],selector:`.ld-compare`},{types:[`anchor-doc-link`,`doc-link`,`anchor-link`,`link`],selector:`a[href]`}],Tm=null;function Em(e,t){return e.start===t.start&&e.end===t.end?!0:e.start>=t.start&&e.end<=t.end||t.start>=e.start&&t.end<=e.end?!1:e.start<t.end&&t.start<e.end}function Dm(e,t,n){if(!n||!n.trim())return;let r=am(n);if(!r||!ym.has(r))return;let i=t+n.length,a={start:t,end:i,type:r};e.some(e=>!!(Em(e,a)||(e.type===`code-block`||e.type===`compare`)&&t>=e.start&&i<=e.end))||e.push(a)}function Om(e,t,n,r=0){let i;for(;i=n.exec(t);){let t=i[r];Dm(e,i.index+(r>0?i[0].indexOf(t):0),t),i[0].length===0&&(n.lastIndex+=1)}}function km(e,t){let n=t;for(;n>0&&e[n-1]!==`
88
+ `;)--n;let r=e.slice(n,t);return/^[ \t]+$/.test(r)?r:``}function Am(e,t){let n=/^:::compare[ \t]*\n[\s\S]*?^:::[ \t]*$/gm,r;for(;r=n.exec(t);){let t=r[0];if(!t.trim()){t.length===0&&(n.lastIndex+=1);continue}let i=r.index,a={start:i,end:i+t.length,type:`compare`};e.some(e=>Em(e,a))||e.push(a)}}function jm(e,t){let n=/```[\s\S]*?```/g,r;for(;r=n.exec(t);){let i=r[0];if(!i.trim()){i.length===0&&(n.lastIndex+=1);continue}let a=am(i);if(!a||!ym.has(a))continue;let o=km(t,r.index),s={start:r.index-o.length,end:r.index+i.length,type:a,indent:o};e.some(e=>Em(e,s))||e.push(s)}}function Mm(e){let t=[];Om(t,e,/<details[\s\S]*?<\/details>/gi),Om(t,e,/<div\b[^>]*border-left[^>]*>[\s\S]*?<\/div>/gi),Am(t,e),jm(t,e),Om(t,e,/(?:^|\n\n)(#{1,4} [^\n]+)/g,1),Om(t,e,/<span\b[^>]*color:[^>]*>[\s\S]*?<\/span>/gi),Om(t,e,RegExp(`(?:^|\\n)((`+ld()+`))`,`g`),1),Om(t,e,RegExp(`(?:^|\\n)((`+Od()+`))`,`g`),1),Om(t,e,Uf()),Om(t,e,Wf()),Om(t,e,/!\[[^\]\n]*\]\([^)]+\)/g),Om(t,e,/\[[^\]\n]+\]\([^)]+\)/g);let n=e.match(/^---\s*\n[\s\S]*?\n---/);return Om(t,e,/^---$/gm),t.filter(e=>e.type===`separator`?!n||e.start>n[0].length:!0).sort((e,t)=>e.start-t.start)}function Nm(e,t){return Array.from(e.querySelectorAll(t)).filter(e=>!e.parentElement.closest(`ol, ul`))}function Pm(e,t){e.querySelectorAll(`[data-inline-snippet-index]`).forEach(e=>{e.removeAttribute(`data-inline-snippet-index`),e.classList.remove(`ld-inline-snippet-target`)});for(let{types:n,selector:r}of wm){let i=t.filter(e=>n.includes(e.type));if(!i.length)continue;let a=r===`ol`||r===`ul`?Nm(e,r):Array.from(e.querySelectorAll(r)).filter(e=>!e.closest(`.ld-compare-render`)),o=Math.min(i.length,a.length);for(let e=0;e<o;e+=1)a[e].dataset.inlineSnippetIndex=String(t.indexOf(i[e])),a[e].classList.add(`ld-inline-snippet-target`)}}function Fm(){Tm&&=(Tm.remove(),null)}function Im(e,t){Fm();let n=Array.isArray(t)?t:[t],r=n[0]||{},i=document.createElement(`div`);i.id=`inline-snippet-popup`,r.dataAction&&(i.dataset.action=r.dataAction),r.dataType&&(i.dataset.snippetType=r.dataType),i.className=`fixed z-50 flex flex-col rounded-lg border border-blue-200 dark:border-blue-800 bg-white dark:bg-gray-900 shadow-lg p-1`,i.style.position=`fixed`,i.style.display=`flex`,i.style.flexDirection=`column`,i.style.width=`max-content`,i.style.zIndex=`50`;for(let e of n){let t=e.dataAction===`delete`,n=document.createElement(`button`);n.type=`button`,e.dataAction&&(n.dataset.action=e.dataAction),n.className=`inline-flex items-center gap-2 rounded-md px-3 py-2 text-sm font-semibold `+(t?`text-red-700 dark:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/30`:`text-blue-700 dark:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/30`);let r=document.createElement(`i`);r.className=e.iconClass,r.setAttribute(`aria-hidden`,`true`);let a=document.createElement(`span`);a.textContent=Y(e.labelKey),n.append(r,a),n.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),Fm(),e.onActivate()}),i.appendChild(n)}document.body.appendChild(i);let a=i.getBoundingClientRect(),o=Math.min(window.innerWidth-a.width-8,Math.max(8,e.clientX)),s=Math.max(8,e.clientY-a.height-8);i.style.left=`${o}px`,i.style.top=`${s}px`,Tm=i}function Lm(e,t){let n=t instanceof Element?t:null;for(;n&&n.parentElement&&n.parentElement!==e;)n=n.parentElement;return!n||n===e||n.parentElement!==e?null:n}function Rm(e,t){let n=e?.closest(`th, td`);if(!n||!t.contains(n))return null;let r=n.closest(`tr`);if(!r)return null;let i=Array.from(t.querySelectorAll(`tr`)).indexOf(r),a=Array.from(r.children).indexOf(n);return i<0||a<0?null:{row:i,col:a}}function zm(e,t){if(typeof t!=`number`)return null;let n=Array.from(e.children);if(!n.length)return null;let r=null,i=null;for(let e of n){let n=e.getBoundingClientRect();if(n.bottom<t)r=e;else if(n.top>t)i||=e;else return e}return r||i}function Bm(e,t,n){if(t.matches(`[data-inline-snippet-index]`)){let e=n[Number(t.dataset.inlineSnippetIndex)];if(e)return e.end}let r=null,i=Array.from(t.querySelectorAll(`[data-inline-snippet-index]`));if(i.length>0){let e=-1;for(let t of i){let r=n[Number(t.dataset.inlineSnippetIndex)];r&&r.end>e&&(e=r.end)}e>=0&&(r=e)}else{let n=(t.textContent||``).trim();if(n){let t=n.split(`
89
+ `)[0].trim().slice(0,60);if(t){let n=e.indexOf(t);n>=0&&(r=n)}}}if(r===null)return null;let a=e.indexOf(`
90
+
91
+ `,r);return a>=0?a:e.length}function Vm(e,t,n){if(t.matches(`[data-inline-snippet-index]`)){let e=n[Number(t.dataset.inlineSnippetIndex)];if(e)return e.start}let r=Array.from(t.querySelectorAll(`[data-inline-snippet-index]`));if(r.length>0){let e=1/0;for(let t of r){let r=n[Number(t.dataset.inlineSnippetIndex)];r&&r.start<e&&(e=r.start)}if(e<1/0)return e}let i=(t.textContent||``).trim();if(i){let t=i.split(`
92
+ `)[0].trim().slice(0,60);if(t){let n=e.indexOf(t);if(n>=0)return n}}return null}function Hm(e,t,n,r,i){let a=Lm(t,n)||zm(t,i);if(!a)return e.length;let o=Bm(e,a,r);if(o!==null)return o;let s=a.previousElementSibling;for(;s;){let t=Bm(e,s,r);if(t!==null){let n=e.indexOf(`
93
+
94
+ `,t+1);return n>=0?n:e.length}s=s.previousElementSibling}let c=a.nextElementSibling;for(;c;){let t=Vm(e,c,r);if(t!==null){let n=e.lastIndexOf(`
95
+
96
+ `,t);return n>=0?n:0}c=c.nextElementSibling}return e.length}function Um(e,t,n){if(!e||typeof t!=`string`)return()=>{};let r=Mm(t);Pm(e,r);let i=i=>{let a=i.target?.closest(`[data-inline-snippet-index]`);if(a&&e.contains(a)){let e=r[Number(a.dataset.inlineSnippetIndex)];if(!e)return;i.preventDefault();let t=xm(e.type),o=Cm(e.type);Im(i,[{iconClass:t.iconClass,labelKey:t.labelKey,dataAction:`edit`,dataType:e.type,onActivate:()=>n.onEdit(e)},{iconClass:o.iconClass,labelKey:o.labelKey,dataAction:`delete`,dataType:e.type,onActivate:()=>n.onDelete(e)}]);return}if(!e.contains(i.target))return;let o=Hm(t,e,i.target,r,i.clientY);o!==null&&(i.preventDefault(),Im(i,{iconClass:`fa-solid fa-plus`,labelKey:`snippet.inline_insert_btn`,dataAction:`insert`,onActivate:()=>n.onInsert(o)}))};e.addEventListener(`contextmenu`,i);let a=t=>{let i=t.target?.closest(`[data-inline-snippet-index]`);if(!i||!e.contains(i))return;let a=r[Number(i.dataset.inlineSnippetIndex)];!a||a.type!==`table`||(t.preventDefault(),t.stopPropagation(),Fm(),n.onEdit({...a,tableFocusCell:Rm(t.target,i)||void 0}))};e.addEventListener(`dblclick`,a);let o=e.closest(`#home-content-area`)||e.closest(`main`),s=null;o&&(s=r=>{r.defaultPrevented||e.offsetParent!==null&&(r.target?.closest(`textarea, input, [data-inline-snippet-index]`)||e.contains(r.target)||(r.preventDefault(),Im(r,{iconClass:`fa-solid fa-plus`,labelKey:`snippet.inline_insert_btn`,dataAction:`insert`,onActivate:()=>n.onInsert(t.length)})))},o.addEventListener(`contextmenu`,s));let c=e=>{Tm&&!Tm.contains(e.target)&&Fm()},l=e=>{e.key===`Escape`&&Fm()};return document.addEventListener(`click`,c),document.addEventListener(`keydown`,l),()=>{e.removeEventListener(`contextmenu`,i),e.removeEventListener(`dblclick`,a),o&&s&&o.removeEventListener(`contextmenu`,s),document.removeEventListener(`click`,c),document.removeEventListener(`keydown`,l),Fm(),e.querySelectorAll(`[data-inline-snippet-index]`).forEach(e=>{e.removeAttribute(`data-inline-snippet-index`),e.classList.remove(`ld-inline-snippet-target`)})}}var Wm=W(`<span class="inline-block text-xs font-semibold px-2.5 py-0.5 rounded-full bg-violet-100 text-violet-700 dark:bg-violet-900/40 dark:text-violet-300"> </span>`),Gm=W(`<span class="text-xs text-gray-400 dark:text-gray-500"> </span>`),Km=W(`<span> </span>`),qm=W(`<div data-testid="edit-actions" class="flex items-center gap-2"><!> <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"> </button> <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"> </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"> </button></div>`),Jm=W(`<button data-testid="validate-btn" class="no-print text-sm px-3 py-1.5 rounded-lg border border-green-700 bg-green-600 text-white font-semibold hover:bg-green-700 transition-colors"><i class="fa-solid fa-check" style="margin-right:4px"></i> </button>`),Ym=Vr(`<g><line x1="8" y1="8" x2="92" y2="92" stroke="currentColor" stroke-width="8" stroke-linecap="round"></line><line x1="92" y1="8" x2="8" y2="92" stroke="currentColor" stroke-width="8" stroke-linecap="round"></line></g>`),Xm=W(`<div data-testid="view-actions" class="flex items-center gap-2"><!> <button><svg width="18" height="18" viewBox="0 0 100 100" fill="none" style="display:inline-block;vertical-align:middle;margin-right:4px"><rect x="28" y="10" width="44" height="52" rx="6" transform="rotate(40 50 50)" stroke="currentColor" stroke-width="6"></rect><rect x="52" y="8" width="22" height="30" rx="6" transform="rotate(40 50 50)" stroke="currentColor" stroke-width="6"></rect><polygon points="28,60 10,80 30,80 38,72" stroke="currentColor" stroke-width="5" stroke-linejoin="round"></polygon><polygon points="28,48 19,70 36,75 55,70" stroke="currentColor" stroke-width="5" stroke-linejoin="round"></polygon><line x1="10" y1="90" x2="72" y2="90" stroke="currentColor" stroke-width="6" stroke-linecap="round"></line><!></svg> </button> <button class="no-print 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-200 dark:hover:bg-gray-700 transition-colors"> </button> <button class="no-print 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-200 dark:hover:bg-gray-700 transition-colors"><i class="fa-solid fa-link"></i> </button> <button data-testid="metadata-btn" class="no-print 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-200 dark:hover:bg-gray-700 transition-colors"><i class="fa-solid fa-code-compare"></i> </button> <button class="no-print 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-200 dark:hover:bg-gray-700 transition-colors"><i class="fa-solid fa-file-pen"></i> </button> <button class="no-print text-sm px-3 py-1.5 rounded-lg border border-red-200 dark:border-red-700 text-red-500 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/40 transition-colors"><i class="fa-solid fa-trash"></i> </button> <button><i class="fa-solid fa-list-ul"></i></button></div>`),Zm=W(`<span class="text-gray-300 dark:text-gray-600 mx-1">·</span>`),Qm=W(`<!> <button class="text-blue-600 dark:text-blue-400 hover:underline"> </button>`,1),$m=W(`<div class="no-print mt-2 flex flex-wrap gap-1 text-xs"></div>`),eh=W(`<li><button class="w-full text-left px-3 py-1.5 hover:bg-yellow-100 dark:hover:bg-yellow-900/30 transition-colors"><span class="text-yellow-600 dark:text-yellow-500 font-mono text-xs mr-2"> </span><span class="text-xs"> </span></button></li>`),th=W(`<div class="mt-4 rounded-lg bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 text-sm text-yellow-800 dark:text-yellow-300 overflow-hidden"><div class="px-3 py-2 font-medium border-b border-yellow-200 dark:border-yellow-800"> </div> <ol class="max-h-40 overflow-y-auto divide-y divide-yellow-100 dark:divide-yellow-900/40 list-none m-0 p-0"></ol></div>`),nh=W(`<textarea id="doc-editor" data-testid="doc-editor" spellcheck="false" class="w-full min-h-[70vh] px-4 py-3 text-sm font-mono leading-relaxed rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 resize-y"></textarea>`),rh=W(`<div id="doc-content" data-testid="doc-content"></div>`),ih=W(`<li class="m-0 p-0"><a class="block text-xs text-gray-500 dark:text-gray-400 hover:text-blue-600 dark:hover:text-blue-400 hover:underline py-0.5 leading-snug transition-colors truncate"> </a></li>`),ah=W(`<div></div> <aside class="no-print shrink-0 sticky self-start overflow-y-auto py-8 pr-4 pl-3 ld-toc-aside"><p class="text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500 mb-3"> </p> <nav><ul class="space-y-1 list-none m-0 p-0"></ul></nav></aside>`,1),oh=W(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/50"><div class="bg-white dark:bg-gray-900 rounded-xl shadow-xl w-full max-w-sm mx-4 p-6 space-y-5"><h3 class="text-base font-semibold text-gray-900 dark:text-gray-50"> </h3> <div class="space-y-1.5"><label for="img-paste-name" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> <span class="font-normal text-gray-400"> </span></label> <div class="flex items-center gap-2"><input id="img-paste-name" type="text" class="flex-1 px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 font-mono focus:outline-none focus:ring-2 focus:ring-blue-500"/> <span class="text-xs text-gray-400 shrink-0"> </span></div></div> <div class="flex justify-end gap-3 pt-1"><button class="text-sm px-4 py-2 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"> </button> <button class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"> </button></div></div></div>`),sh=W(`<div class="fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4"><div class="w-full max-w-sm bg-white dark:bg-gray-900 border border-red-200 dark:border-red-700 rounded-xl shadow-2xl p-5 flex flex-col gap-3"><p class="text-sm text-gray-700 dark:text-gray-200"> </p> <p class="text-xs text-gray-500 dark:text-gray-400 italic truncate"> </p> <div class="flex justify-end gap-2 mt-2"><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"> </button> <button class="text-sm px-4 py-1.5 rounded-lg bg-red-500 hover:bg-red-600 text-white font-semibold transition-colors"> </button></div></div></div>`),ch=W(`<div class="fixed inset-0 z-50 bg-black/90 flex items-center justify-center cursor-pointer"><img class="max-w-full max-h-full object-contain select-none"/> <button class="absolute top-4 right-4 text-white/70 hover:text-white text-2xl leading-none">×</button></div>`),lh=W(`<header id="home-doc-header" class="sticky top-0 z-10 bg-gray-50 dark:bg-gray-950 px-6 pt-8 pb-6 border-b border-gray-300 dark:border-gray-800"><div class="flex items-start gap-4 flex-wrap"><div class="shrink min-w-0"><div class="flex items-center gap-2 mb-2 flex-wrap"><span class="flex items-center gap-2 flex-wrap"><!> <span class="inline-block text-xs font-semibold px-2.5 py-0.5 rounded-full bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300"> </span></span> <!></div> <div class="flex items-center gap-2"><h1 data-testid="doc-title" class="min-w-0 text-2xl font-bold text-gray-900 dark:text-gray-50 leading-tight"> </h1> <button type="button" data-testid="copy-doc-id-btn"><i aria-hidden="true"></i></button></div></div> <div class="flex items-center gap-2 flex-wrap ml-auto"><!></div></div> <!> <!> <!> <div class="hidden no-print"></div></header> <div class="flex min-h-full items-start"><article id="home-doc-view" data-testid="doc-view" class="flex-1 min-w-0 px-6 pt-8 pb-8"><!></article> <!></div> <!> <!> <!> <!> <!> <!> <!>`,1);function uh(e,t){Ke(t,!0);let n=Bi(t,`navHistory`,19,()=>[]),r=F(null),i=F(null),a=F(null),o=F(null),s=F(!1),c=F(!1),l=F(`insert`),u=F(null),d=F(0),f=null;Vi(()=>{let e=window;return e.openSnippetsModal=()=>{I(l,`insert`),I(c,!0)},e.openSnippetsModalForInlineInsert=e=>{I(l,`inline-insert`),I(d,Math.max(0,Number(e)||0),!0),I(c,!0)},()=>{delete e.openSnippetsModal,delete e.openSnippetsModalForInlineInsert}});let p=F(null),m=F(L([])),h=``,g=P(()=>H(m).length?Y(H(m).length===1?`search.notice_singular`:`search.notice_plural`).replace(`{count}`,String(H(m).length)).replace(`{query}`,$.searchQuery):``),_=P(()=>lf(t.doc.content)),v=P(()=>(H(_)||``).toUpperCase()===`TO BE VALIDATED`),y=F(!1),b=F(``),x=F(null),S=F(!1),C=F(!1),w=F(!1),T=F(!1),E=F(``),D=F(`png`),ee=null,te=0,ne=0,O=F(null),re=F(``),ie=/[̀-ͯ]/g;function ae(e){return(e||``).normalize(`NFD`).replace(ie,``).toLowerCase().replace(/[^a-z0-9]/g,`_`)}function oe(e){let t=document.getElementById(`home-content-area`),n=document.getElementById(e);if(!t||!n)return;let r=document.querySelector(`#home-doc-view header`),i=r?r.getBoundingClientRect().height:0;t.scrollTop+=n.getBoundingClientRect().top-t.getBoundingClientRect().top-i-8}On(()=>{let e=t.doc.id,n=$.searchQuery;if(f?.(),f=null,H(y)||!H(r))return;Pd(H(r),t.doc.html,{content:t.doc.content,codeBlockMaxHeight:$.codeBlockMaxHeight,t:Y,onDocLink:(e,n)=>t.onopen(e,n),onAnchor:oe});let i=typeof n==`string`&&n.toLowerCase().startsWith(`metadata://`);I(m,n&&!i?_m(H(r),n):[],!0),H(p)&&hm(H(r),H(p),Y),f=Um(H(r),t.doc.content,{onEdit:e=>{I(l,`inline-edit`),I(u,e,!0),I(c,!0)},onInsert:e=>{I(l,`inline-insert`),I(d,e,!0),I(c,!0)},onDelete:async e=>{await H(o).show({title:Y(`snippet.inline_delete_title`),message:Y(`snippet.inline_delete_message`),confirmLabel:Y(`snippet.inline_delete_confirm_btn`),cancelLabel:Y(`common.cancel`),danger:!0})&&await t.onsave(t.doc.content.slice(0,e.start)+t.doc.content.slice(e.end))}}),e===h?H(a)?.apply():(h=e,H(a)?.load(e),af.load(e)),I(le,Array.from(H(r).querySelectorAll(`h1,h2,h3,h4,h5,h6`)).map(e=>({id:e.id,text:e.textContent?.trim()??``,level:parseInt(e.tagName[1])})).filter(e=>e.id&&e.text),!0)});async function se(){let e=1;try{let n=await af.load(t.doc.id);n&&typeof n.accuracy==`number`&&(e=n.accuracy)}catch{}let n=Math.round(e*100),r=n<100,i=df(t.doc.id),a=Y(i?`doc.validate_worklog_message`:`doc.validate_message`),s=r?Y(`doc.validate_detail_low_accuracy`).replace(`{accuracy}`,n+`%`):void 0;if(!await H(o).show({title:Y(`doc.validate_title`),message:a,detail:s,confirmLabel:Y(`doc.validate_confirm`),cancelLabel:Y(`common.cancel`)}))return;let c=uf(t.doc.content,i?`Done`:`Accepted`);if(c!==t.doc.content)try{await t.onsave(c),r&&await fetch(`/api/metadata/`+encodeURIComponent(t.doc.id)+`/refresh`,{method:`POST`}),await af.load(t.doc.id),$.docStatuses={...$.docStatuses,[t.doc.id]:i?`Done`:`Accepted`}}catch(e){I(x,{text:Y(`doc.validate_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}}On(()=>{try{I(S,localStorage.getItem(`ld-full-width`)===`1`)}catch{}});let ce=F(!1),le=F(L([])),ue=P(()=>H(ce)&&H(le).length>0),de=`ld-toc-w`,fe=F(!1),pe=F(null),me=F(null),he=F(0);On(()=>{if(!H(me))return;let e=new ResizeObserver(()=>{I(he,H(me).offsetHeight,!0)});return e.observe(H(me)),I(he,H(me).offsetHeight,!0),()=>e.disconnect()});function ge(e){if(e.preventDefault(),!H(pe))return;let t=e.clientX,n=H(pe).getBoundingClientRect().width;I(fe,!0),H(pe).style.transition=`none`,document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`;let r=e=>{let r=Math.max(160,Math.min(400,n-(e.clientX-t)));H(pe).style.width=r+`px`},i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i),document.body.style.cursor=``,document.body.style.userSelect=``,I(fe,!1),H(pe).style.transition=``;try{localStorage.setItem(de,String(parseInt(H(pe).style.width,10)))}catch{}};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}On(()=>{try{I(ce,localStorage.getItem(`ld-toc-open`)===`1`)}catch{}try{let e=parseInt(localStorage.getItem(de)||``,10);H(pe)&&e>=160&&e<=400&&(H(pe).style.width=e+`px`)}catch{}});function _e(){I(ce,!H(ce));try{localStorage.setItem(`ld-toc-open`,H(ce)?`1`:`0`)}catch{}}function ve(e){let t=document.getElementById(e),n=document.getElementById(`home-content-area`),r=document.getElementById(`home-doc-header`);if(!t||!n)return;let i=t.parentElement;for(;i&&i!==n;)i.tagName===`DETAILS`&&(i.open=!0),i=i.parentElement;let a=r?r.getBoundingClientRect().height:0,o=t.getBoundingClientRect().top-n.getBoundingClientRect().top+n.scrollTop;n.scrollTo({top:o-a-16,behavior:`smooth`})}function ye(){I(b,t.doc.content,!0),I(y,!0),I(x,null),requestAnimationFrame(()=>H(i)?.focus())}function be(){I(y,!1),I(x,null)}async function xe(){I(x,{text:Y(`doc.saving`),cls:`text-gray-400`},!0);try{await t.onsave(H(b)),I(y,!1),I(x,null)}catch(e){I(x,{text:Y(`error.save`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}}function Se(e){let t=Array.from(e.clipboardData?.items??[]).find(e=>e.type.startsWith(`image/`));if(t){e.preventDefault(),te=H(i).selectionStart,ne=H(i).selectionEnd,I(D,t.type.split(`/`)[1].replace(`jpeg`,`jpg`)||`png`,!0);let n=t.getAsFile();if(!n)return;ee=n,I(E,ae(Date.now().toString()),!0),I(T,!0);return}let n=Array.from(e.clipboardData?.files??[]).filter(e=>!e.type.startsWith(`image/`));if(n.length){e.preventDefault();let t=H(i).selectionStart,r=H(i).selectionEnd;(async()=>{for(let e of n)await k(e,t,r)})()}}function Ce(e){let t=Array.from(e.dataTransfer?.files??[]).filter(e=>!e.type.startsWith(`image/`));if(!t.length)return;e.preventDefault(),e.stopPropagation();let n=H(i).selectionStart,r=H(i).selectionEnd;(async()=>{for(let e of t)await k(e,n,r)})()}function we(e){e.dataTransfer?.types?.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)}function Te(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function Ee(e,t,n){let r=H(b).slice(0,t),a=H(b).slice(n);I(b,r+e+a),requestAnimationFrame(()=>{H(i).selectionStart=H(i).selectionEnd=t+e.length,H(i).focus()})}async function k(e,t,n){if(e.size>19922944){I(x,{text:Y(`doc.file_too_large`)+` (${(e.size/1024/1024).toFixed(1)} MB, max 19 MB)`,cls:`text-red-500 dark:text-red-400`},!0);return}I(x,{text:Y(`doc.uploading_file`),cls:`text-gray-400`},!0);try{let r=await Te(e),i=await fetch(`/api/files/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:r,name:e.name})});if(!i.ok){let e=``;try{e=(await i.json()).error||``}catch{e=await i.text()}throw Error(e||`HTTP ${i.status}`)}let{url:a,originalName:o}=await i.json();Ee(`[📎 ${o||e.name}](${a})`,t,n),I(x,null)}catch(e){I(x,{text:Y(`doc.file_upload_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}}function De(){I(T,!1),ee=null}async function Oe(){let e=ae(H(E))||Date.now().toString();if(I(T,!1),ee){I(x,{text:Y(`doc.uploading_image`),cls:`text-gray-400`},!0);try{let t=await Te(ee),n=await fetch(`/api/images/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:t,ext:H(D),name:e})});if(!n.ok)throw Error(await n.text());let{filename:r}=await n.json();Ee(`![image](/images/${r})`,te,ne),I(x,null)}catch(e){I(x,{text:Y(`doc.image_upload_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}finally{ee=null}}}async function ke(){try{await navigator.clipboard.writeText(location.href)}catch{}}async function Ae(){try{await navigator.clipboard.writeText(decodeURIComponent(t.doc.id)),I(w,!0),setTimeout(()=>I(w,!1),1800)}catch{}}function je(){window.print()}function A(e){let t=e.target.closest(`img`);!t||!e.shiftKey||(e.preventDefault(),e.stopPropagation(),I(O,t.src,!0),I(re,t.alt||``,!0))}function Me(e){e.key===`Escape`&&H(O)&&I(O,null)}var j=lh();Mr(`keydown`,an,Me);var Ne=z(j),Pe=R(Ne),Fe=R(Pe),Ie=R(Fe),Le=R(Ie),Re=R(Le);$r(Re,17,()=>t.doc.folder||[],Yr,(e,t)=>{var n=Wm(),r=R(n,!0);M(n),V(e=>{J(n,`title`,H(t)),K(r,e)},[()=>Bu(H(t))]),G(e,n)});var ze=B(Re,2),Be=R(ze,!0);M(ze),M(Le);var Ve=B(Le,2),He=e=>{var n=Gm(),r=R(n,!0);M(n),V(()=>K(r,t.doc.formattedDate)),G(e,n)};q(Ve,e=>{t.doc.formattedDate&&e(He)}),M(Ie);var Ue=B(Ie,2),We=R(Ue),Ge=R(We,!0);M(We);var Je=B(We,2),Ye=R(Je);M(Je),M(Ue),M(Fe);var Xe=B(Fe,2),Ze=R(Xe),Qe=e=>{var t=qm(),n=R(t),r=e=>{var t=Km(),n=R(t,!0);M(t),V(()=>{hi(t,1,`text-xs ${H(x).cls??``}`),K(n,H(x).text)}),G(e,t)};q(n,e=>{H(x)&&e(r)});var i=B(n,2),a=R(i,!0);M(i);var o=B(i,2),s=R(o,!0);M(o);var u=B(o,2),d=R(u,!0);M(u),M(t),V((e,t,n,r)=>{K(a,e),J(o,`title`,t),K(s,n),K(d,r)},[()=>Y(`common.cancel`),()=>Y(`doc.snippets`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),U(`click`,i,be),U(`click`,o,()=>{I(l,`insert`),I(c,!0)}),U(`click`,u,xe),G(e,t)},$e=e=>{let t=P(()=>$.markerActive?`#fef08a`:`#bfdbfe`),n=P(()=>$.markerActive?`#fef08a`:`#93c5fd`),r=P(()=>$.markerActive?`#fde047`:`#93c5fd`);var i=Xm(),a=R(i),o=e=>{var t=Jm(),n=B(R(t),1,!0);M(t),V((e,r)=>{J(t,`title`,e),K(n,r)},[()=>Y(`doc.validate_mode`),()=>Y(`doc.validate_btn`)]),U(`click`,t,se),G(e,t)};q(a,e=>{H(v)&&e(o)});var c=B(a,2),l=R(c),u=R(l),d=B(u),f=B(d),p=B(f),m=B(p,2),h=e=>{G(e,Ym())};q(m,e=>{$.markerHidden&&e(h)}),M(l);var g=B(l,1,!0);M(c);var _=B(c,2),y=R(_);M(_);var b=B(_,2),x=B(R(b));M(b);var S=B(b,2),w=B(R(S));M(S);var T=B(S,2),E=B(R(T));M(T);var D=B(T,2),ee=B(R(D));M(D);var te=B(D,2);M(i),V((e,i,a,o,s,l,m,h,v,C,ne,O,re)=>{J(c,`title`,e),hi(c,1,`no-print text-sm px-3 py-1.5 rounded-lg border transition-colors ${$.markerActive?`border-yellow-400 bg-yellow-100 dark:bg-yellow-900/40 text-yellow-700 dark:text-yellow-300`:`border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700`}`),J(u,`fill`,H(t)),J(d,`fill`,H(n)),J(f,`fill`,H(r)),J(p,`fill`,H(r)),K(g,i),J(_,`title`,a),K(y,`📄 ${o??``}`),J(b,`title`,s),K(x,` ${l??``}`),J(S,`title`,m),K(w,` ${h??``}`),J(T,`title`,v),K(E,` ${C??``}`),J(D,`title`,ne),K(ee,` ${O??``}`),J(te,`title`,re),hi(te,1,`no-print text-sm px-3 py-1.5 rounded-lg border transition-colors ${H(ce)?`border-blue-400 bg-blue-50 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400`:`border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700`}`)},[()=>Y(`doc.marker_mode`),()=>Y(`doc.marker_btn`),()=>Y(`doc.export_pdf`),()=>Y(`doc.export_pdf_btn`),()=>Y(`doc.copy_link`),()=>Y(`doc.copy_link_btn`),()=>Y(`metadata.button_title`),()=>Y(`metadata.button`),()=>Y(`doc.edit`),()=>Y(`doc.edit_btn`),()=>Y(`doc.delete`),()=>Y(`doc.delete_btn`),()=>Y(`doc.toc_toggle`)]),U(`click`,c,()=>$.toggleMarker()),U(`click`,_,je),U(`click`,b,ke),U(`click`,S,()=>I(s,!0)),U(`click`,T,ye),U(`click`,D,()=>I(C,!0)),U(`click`,te,_e),G(e,i)};q(Ze,e=>{H(y)?e(Qe):e($e,-1)}),M(Xe),M(Pe);var et=B(Pe,2),tt=e=>{sf(e,{onopen:()=>I(s,!0)})};q(et,e=>{H(y)||e(tt)});var nt=B(et,2),rt=e=>{var r=$m();$r(r,21,n,Yr,(e,n,r)=>{var i=Qm(),a=z(i),o=e=>{G(e,Zm())};q(a,e=>{r>0&&e(o)});var s=B(a,2),c=R(s);M(s),V(()=>K(c,`← ${H(n).title??``}`)),U(`click`,s,()=>t.ongoback?.(r)),G(e,i)}),M(r),G(e,r)};q(nt,e=>{!H(y)&&n().length&&e(rt)});var it=B(nt,2),at=e=>{var t=th(),n=R(t),r=R(n,!0);M(n);var i=B(n,2);$r(i,23,()=>H(m),e=>e.id,(e,t,n)=>{var r=eh(),i=R(r),a=R(i),o=R(a);M(a);var s=B(a),c=R(s,!0);M(s),M(i),M(r),V(()=>{K(o,`${H(n)+1}.`),K(c,H(t).snippet)}),U(`click`,i,()=>vm(H(t).id)),G(e,r)}),M(i),M(t),V(()=>K(r,H(g))),G(e,t)};q(it,e=>{!H(y)&&H(m).length&&$.searchQuery&&e(at)}),Li(B(it,2),e=>I(p,e),()=>H(p)),M(Ne),Li(Ne,e=>I(me,e),()=>H(me));var ot=B(Ne,2),st=R(ot),ct=R(st),lt=e=>{var t=nh();vn(t),Li(t,e=>I(i,e),()=>H(i)),Mr(`paste`,t,Se),Mr(`drop`,t,Ce),Mr(`dragover`,t,we),Mi(t,()=>H(b),e=>I(b,e)),G(e,t)},ut=e=>{var t=rh();Li(t,e=>I(r,e),()=>H(r)),V(()=>hi(t,1,`prose prose-gray dark:prose-invert max-w-none prose-headings:scroll-mt-4 prose-headings:font-semibold prose-h1:text-[2.1875rem] prose-h2:text-[1.8125rem] prose-h3:text-[1.5rem] prose-h4:text-[1.25rem] prose-a:text-blue-600 dark:prose-a:text-blue-400 prose-code:before:content-none prose-code:after:content-none ${$.codeBlockLightTheme?`prose-pre:bg-[#f6f8fa] prose-pre:text-gray-800 prose-pre:border prose-pre:border-gray-200 prose-pre:rounded-lg dark:prose-pre:bg-[#0d1117] dark:prose-pre:text-gray-100 dark:prose-pre:border-gray-700`:`prose-pre:bg-[#0d1117] prose-pre:border prose-pre:border-gray-700`} ${$.imageRoundedCorners?`[&_img]:rounded-xl`:``} ${$.imageCentered?`[&_img]:mx-auto [&_img]:block`:``} ${$.imageBorder?`[&_img]:[box-shadow:0_0_0_1px_rgba(0,0,0,0.10),0_4px_12px_rgba(0,0,0,0.04)] dark:[&_img]:[box-shadow:0_0_0_1px_rgba(255,255,255,0.08),0_4px_12px_rgba(255,255,255,0.25)]`:``}`)),U(`click`,t,A),G(e,t)};q(ct,e=>{H(y)?e(lt):e(ut,-1)}),M(st);var N=B(st,2),dt=e=>{var t=ah(),n=z(t),r=B(n,2),i=R(r),a=R(i,!0);M(i);var o=B(i,2),s=R(o);$r(s,21,()=>H(le),Yr,(e,t)=>{var n=ih(),r=R(n),i=R(r,!0);M(r),M(n),V(()=>{_i(n,`padding-left: ${(H(t).level-1)*.75}rem`),J(r,`href`,`#${H(t).id??``}`),J(r,`title`,H(t).text),K(i,H(t).text)}),U(`mousedown`,r,e=>e.preventDefault()),U(`click`,r,e=>{e.preventDefault(),ve(H(t).id)}),G(e,n)}),M(s),M(o),M(r),Li(r,e=>I(pe,e),()=>H(pe)),V(e=>{hi(n,1,`no-print w-1 shrink-0 self-stretch cursor-col-resize select-none transition-colors ${H(fe)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),_i(r,`width: 224px; top: ${H(he)??``}px; max-height: calc(100vh - ${H(he)??``}px)`),K(a,e)},[()=>Y(`doc.toc_title`)]),U(`mousedown`,n,ge),G(e,t)};q(N,e=>{H(ue)&&e(dt)}),M(ot);var ft=B(ot,2);Li(Qd(ft,{get contentEl(){return H(r)},get docId(){return t.doc.id}}),e=>I(a,e,!0),()=>H(a));var pt=B(ft,2);Of(pt,{get open(){return H(s)},get docId(){return t.doc.id},get content(){return t.doc.content},onclose:()=>I(s,!1)});var mt=B(pt,2);cm(mt,{get open(){return H(c)},get editor(){return H(i)},get mode(){return H(l)},get content(){return t.doc.content},get range(){return H(u)},get insertPos(){return H(d)},get onsave(){return t.onsave},onclose:()=>I(c,!1)});var ht=B(mt,2);Li(Dl(ht,{}),e=>I(o,e,!0),()=>H(o));var gt=B(ht,2),_t=e=>{var t=oh(),n=R(t),r=R(n),i=R(r);M(r);var a=B(r,2),o=R(a),s=R(o),c=B(s),l=R(c,!0);M(c),M(o);var u=B(o,2),d=R(u);Ei(d);var f=B(d,2),p=R(f);M(f),M(u),M(a);var m=B(a,2),h=R(m),g=R(h,!0);M(h);var _=B(h,2),v=R(_,!0);M(_),M(m),M(n),M(t),V((e,t,n,r,a)=>{K(i,`🖼️ ${e??``}`),K(s,`${t??``} `),K(l,n),Di(d,H(E)),K(p,`.${H(D)??``}`),K(g,r),K(v,a)},[()=>Y(`modal.img_paste.title`),()=>Y(`modal.img_paste.filename_label`),()=>Y(`modal.img_paste.saved_hint`),()=>Y(`common.cancel`),()=>Y(`modal.img_paste.paste_btn`)]),U(`input`,d,e=>I(E,ae(e.target.value),!0)),U(`click`,h,De),U(`click`,_,Oe),G(e,t)};q(gt,e=>{H(T)&&e(_t)});var vt=B(gt,2),yt=e=>{var n=sh(),r=R(n),i=R(r),a=R(i,!0);M(i);var o=B(i,2),s=R(o,!0);M(o);var c=B(o,2),l=R(c),u=R(l,!0);M(l);var d=B(l,2),f=R(d,!0);M(d),M(c),M(r),M(n),V((e,n,r)=>{K(a,e),K(s,t.doc.title),K(u,n),K(f,r)},[()=>Y(`doc.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`doc.confirm_delete_btn`)]),U(`click`,n,e=>{e.target===e.currentTarget&&I(C,!1)}),U(`click`,l,()=>I(C,!1)),U(`click`,d,async()=>{I(C,!1),await t.ondelete()}),G(e,n)};q(vt,e=>{H(C)&&e(yt)});var bt=B(vt,2),xt=e=>{var t=ch(),n=R(t),r=B(n,2);M(t),V(()=>{J(n,`src`,H(O)),J(n,`alt`,H(re))}),U(`click`,t,()=>I(O,null)),U(`click`,n,e=>e.stopPropagation()),U(`click`,r,()=>I(O,null)),G(e,t)};q(bt,e=>{H(O)&&e(xt)}),V(e=>{K(Be,t.doc.category),K(Ge,t.doc.title),J(Je,`title`,e),hi(Je,1,`no-print inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-gray-200 text-gray-500 transition-colors hover:bg-gray-50 hover:text-blue-600 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-blue-400 ${H(w)?`text-green-600 dark:text-green-400`:``}`),hi(Ye,1,`fa-${H(w)?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`doc.copy_mcp_id`)]),U(`click`,Je,Ae),G(e,j),qe()}Nr([`click`,`mousedown`,`input`]);var dh=W(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),fh=W(`<p class="px-3 py-3 text-xs text-red-400 text-center"> </p>`),ph=W(`<p class="px-3 py-3 text-xs text-gray-400 text-center"> </p>`),mh=W(`<button class="w-full flex items-center gap-2 px-3 py-2 text-sm text-left hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><span class="text-gray-400 shrink-0">&#128193;</span> <span class="truncate text-gray-700 dark:text-gray-300"> </span></button>`),hh=W(`<div class="border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden text-sm"><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"> </button> <span class="text-xs text-gray-500 dark:text-gray-400 font-mono truncate flex-1"> </span></div> <div class="max-h-40 overflow-y-auto divide-y divide-gray-100 dark:divide-gray-800"><!></div></div>`),gh=W(`<p class="text-xs text-red-500"> </p>`),_h=W(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/50"><div class="bg-white dark:bg-gray-900 rounded-xl shadow-xl w-full max-w-md mx-4 p-6 space-y-4"><h3 class="text-base font-semibold text-gray-900 dark:text-gray-50"><svg width="16" height="16" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="inline-block mr-1 align-text-bottom"><path d="M2 5a2 2 0 012-2h3.586a1 1 0 01.707.293L9.707 4.707A1 1 0 0010.414 5H16a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V5z" stroke="currentColor" stroke-width="1.5" fill="none"></path><line x1="10" y1="8" x2="10" y2="14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></line><line x1="7" y1="11" x2="13" y2="11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></line></svg> <span> </span></h3> <div class="space-y-1.5"><label for="new-folder-name" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="new-folder-name" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex items-center gap-2"><span class="flex-1 text-sm text-gray-600 dark:text-gray-300 font-mono truncate"> </span> <button class="text-xs px-2 py-1.5 rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors shrink-0"> </button></div> <!></div> <div class="space-y-1"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <p class="text-xs font-mono text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-800 rounded-lg px-3 py-2 truncate"> </p></div> <!> <div class="flex justify-end gap-3 pt-1"><button class="text-sm px-4 py-2 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"> </button> <button class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"> </button></div></div></div>`);function vh(e,t){Ke(t,!0);let n=F(``),r=F(null),i=F(null),a=F(``),o=F(``),s=F(`/ (root)`),c=F(!1),l=F(``),u=F(L([])),d=F(!1),f=F(!1),p=F(``),m=F(!1),h=F(null),g=!1;On(()=>{t.open&&!g?(g=!0,_()):t.open||(g=!1)});async function _(){try{I(n,(await fetch(`/api/config`).then(e=>e.json())).docsFolder||``,!0)}catch{I(n,``)}let e=``;if($.currentDocId){let t=decodeURIComponent($.currentDocId);if(!t.startsWith(`/`)){let n=t.split(`/`);n.length>1&&(e=n.slice(0,-1).join(`/`))}}I(a,e?H(n)+`/`+e:H(n),!0),I(r,H(a),!0),I(i,null),I(o,``),I(s,e?`/`+e:`/ (root)`,!0),I(c,!1),I(p,``),I(m,!1),setTimeout(()=>H(h)?.focus(),50)}let v=P(()=>{let e=H(o).trim();if(!e)return Y(`modal.new_folder.enter_name`);let t=H(a)||H(n),r=t.startsWith(H(n))?t.slice(H(n).length).replace(/^\//,``):``;return(r?r+`/`:``)+e});function y(){I(c,!H(c)),H(c)&&b(H(r)||H(n))}async function b(e){I(d,!0),I(f,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(r,t.current,!0),I(i,t.parent,!0),I(a,t.current,!0),I(l,t.current,!0),I(s,(t.current.startsWith(H(n)+`/`)?t.current.slice(H(n).length):t.current===H(n)?``:t.current)||`/ (root)`,!0),I(u,t.dirs||[],!0)}catch{I(f,!0),I(u,[],!0)}finally{I(d,!1)}}let x=P(()=>H(r)===H(n));function S(){H(i)&&b(H(i))}async function C(){let e=H(o).trim();if(I(p,``),!e){I(p,Y(`modal.new_folder.error_empty`),!0);return}if(!/^[a-zA-Z0-9_\-. ]+$/.test(e)){I(p,Y(`modal.new_folder.error_invalid_chars`),!0);return}let r=H(a)||H(n);if(r===H(n)&&(e===`files`||e===`images`)){I(p,Y(`modal.new_folder.error_reserved`),!0);return}let i=r.endsWith(`/`)?r+e:r+`/`+e;I(m,!0);try{let e=await fetch(`/api/browse/mkdir`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:i})});if(!e.ok)throw Error(await e.text());t.onclose(),t.onsuccess()}catch(e){I(m,!1),I(p,Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)))}}var w=Ur(),T=z(w),E=e=>{var n=_h(),r=R(n),i=R(r),a=B(R(i),2),g=R(a,!0);M(a),M(i);var _=B(i,2),w=R(_),T=R(w,!0);M(w);var E=B(w,2);Ei(E),Li(E,e=>I(h,e),()=>H(h)),M(_);var D=B(_,2),ee=R(D),te=R(ee,!0);M(ee);var ne=B(ee,2),O=R(ne),re=R(O,!0);M(O);var ie=B(O,2),ae=R(ie,!0);M(ie),M(ne);var oe=B(ne,2),se=e=>{var t=hh(),n=R(t),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a,!0);M(a),M(n);var s=B(n,2),c=R(s),p=e=>{var t=dh(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},m=e=>{var t=fh(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`modal.new_folder.error_loading`)]),G(e,t)},h=e=>{var t=ph(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`modal.new_folder.no_subfolders`)]),G(e,t)},g=e=>{var t=Ur();$r(z(t),17,()=>H(u),e=>e.path,(e,t)=>{var n=mh(),r=B(R(n),2),i=R(r,!0);M(r),M(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>b(H(t).path)),G(e,n)}),G(e,t)};q(c,e=>{H(d)?e(p):H(f)?e(m,1):H(u).length===0?e(h,2):e(g,-1)}),M(s),M(t),V(e=>{r.disabled=H(x),K(i,e),K(o,H(l))},[()=>Y(`common.up`)]),U(`click`,r,S),G(e,t)};q(oe,e=>{H(c)&&e(se)}),M(D);var ce=B(D,2),le=R(ce),ue=R(le,!0);M(le);var de=B(le,2),fe=R(de,!0);M(de),M(ce);var pe=B(ce,2),me=e=>{var t=gh(),n=R(t,!0);M(t),V(()=>K(n,H(p))),G(e,t)};q(pe,e=>{H(p)&&e(me)});var he=B(pe,2),ge=R(he),_e=R(ge,!0);M(ge);var ve=B(ge,2),ye=R(ve,!0);M(ve),M(he),M(r),M(n),V((e,t,n,r,i,a,o,c)=>{K(g,e),K(T,t),J(E,`placeholder`,n),K(te,r),K(re,H(s)),K(ae,i),K(ue,a),K(fe,H(v)),K(_e,o),ve.disabled=H(m),K(ye,c)},[()=>Y(`modal.new_folder.title`),()=>Y(`modal.new_folder.name_label`),()=>Y(`modal.new_folder.name_placeholder`),()=>Y(`modal.new_folder.location_label`),()=>Y(`modal.new_folder.browse_btn`),()=>Y(`modal.new_folder.will_be_created`),()=>Y(`common.cancel`),()=>H(m)?Y(`modal.new_folder.creating_btn`):Y(`modal.new_folder.create_btn`)]),U(`click`,n,e=>{e.target===e.currentTarget&&t.onclose()}),Mi(E,()=>H(o),e=>I(o,e)),U(`click`,ie,y),U(`click`,ge,function(...e){t.onclose?.apply(this,e)}),U(`click`,ve,C),G(e,n)};q(T,e=>{t.open&&e(E)}),G(e,w),qe()}Nr([`click`]);var yh=W(`<option></option>`),bh=W(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),xh=W(`<p class="px-3 py-4 text-xs text-red-400 text-center"> </p>`),Sh=W(`<p class="px-3 py-3 text-xs text-gray-400 text-center"> </p>`),Ch=W(`<button class="w-full flex items-center gap-2 px-3 py-2 text-sm text-left hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><span class="text-gray-400 shrink-0">&#128193;</span> <span class="text-gray-700 dark:text-gray-300 truncate"> </span></button>`),wh=W(`<div class="border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden"><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"> </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-40 overflow-y-auto"><!></div> <div class="border-t border-gray-200 dark:border-gray-700 flex items-center gap-2 px-3 py-2 bg-gray-50 dark:bg-gray-800/50"><input type="text" class="flex-1 px-2 py-1 text-xs rounded border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-1 focus:ring-blue-400"/> <button class="text-xs px-2 py-1 rounded bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors shrink-0"> </button></div></div>`),Th=W(`<p class="text-xs text-red-500"> </p>`),Eh=W(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/50"><div class="bg-white dark:bg-gray-900 rounded-xl shadow-xl w-full max-w-lg mx-4 p-6 space-y-4"><h3 class="text-base font-semibold text-gray-900 dark:text-gray-50">&#10133; <span> </span></h3> <div class="space-y-1.5"><label for="new-doc-title" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="new-doc-title" type="text" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/></div> <div class="space-y-1.5"><label for="new-doc-category" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="new-doc-category" type="text" list="new-doc-category-options" autocomplete="off" placeholder="GENERAL" class="w-full px-3 py-2 text-sm rounded-lg border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500"/> <datalist id="new-doc-category-options"></datalist></div> <div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex items-center gap-2"><span class="flex-1 px-3 py-2 text-xs rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-500 dark:text-gray-400 font-mono truncate"> </span> <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">&#128193; <span> </span></button></div> <!></div> <div class="space-y-1.5"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <p class="text-xs bg-gray-100 dark:bg-gray-800 rounded-lg px-3 py-2 font-mono text-gray-600 dark:text-gray-300 break-all"> </p></div> <!> <div class="flex justify-end gap-3 pt-1"><button class="text-sm px-4 py-2 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"> </button> <button class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"> </button></div></div></div>`);function Dh(e,t){Ke(t,!0);let n=F(``),r=F(`YYYY_MM_DD_HH_mm_[Category]_title`),i=F(null),a=F(null),o=F(``),s=F(``),c=F(``),l=F(`/ (root)`),u=F(!1),d=F(``),f=F(L([])),p=F(!1),m=F(!1),h=F(``),g=F(L([])),_=F(``),v=F(!1),y=F(null);function b(e){return(e||``).normalize(`NFD`).replace(/[̀-ͯ]/g,``).toUpperCase().replace(/[^A-Z0-9_-]/g,``)}function x(e){let t=H(n);return e===t?``:e.startsWith(t+`/`)?e.slice(t.length+1):e}let S=!1;On(()=>{t.open&&!S?(S=!0,C()):t.open||(S=!1)});async function C(){try{let e=await fetch(`/api/config`).then(e=>e.json());I(n,e.docsFolder||``,!0),I(r,e.filenamePattern||`YYYY_MM_DD_HH_mm_[Category]_title`,!0)}catch{I(n,``),I(r,`YYYY_MM_DD_HH_mm_[Category]_title`)}let e=$.currentDocId&&$.allDocs.find(e=>e.id===$.currentDocId),t=b(e&&e.category||`General`)||`GENERAL`,d=``;if($.currentDocId){let e=decodeURIComponent($.currentDocId);if(!e.startsWith(`/`)){let t=e.split(`/`);t.length>1&&(d=t.slice(0,-1).join(`/`))}}let f=d?H(n)+`/`+d:``;I(o,d,!0),I(i,f||null,!0),I(a,null),w(),I(s,``),I(c,t,!0),I(l,d?`/`+d:`/ (root)`,!0),I(u,!1),I(h,``),I(_,``),I(v,!1),setTimeout(()=>H(y)?.focus(),50)}function w(){let e=new Set;($.allDocs||[]).forEach(t=>{let n=b(t.category||``);n&&e.add(n)}),I(g,Array.from(e).sort((e,t)=>e.localeCompare(t)),!0)}function T(){let e=b(H(c));H(c)!==e&&I(c,e,!0)}let E=P(()=>{let e=H(s).trim();if(!e)return Y(`modal.new_doc.title_placeholder`);let t=b(H(c))||`GENERAL`,n=new Date,i=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,`0`),l=String(n.getDate()).padStart(2,`0`),u=String(n.getHours()).padStart(2,`0`),d=String(n.getMinutes()).padStart(2,`0`),f=e.toLowerCase().replace(/\s+/g,`_`).replace(/[^a-z0-9_]/g,``).replace(/_+/g,`_`).replace(/^_|_$/g,``)||`document`,p=H(r).replace(`YYYY`,String(i)).replace(`MM`,a).replace(`DD`,l).replace(`HH`,u).replace(`mm`,d).replace(/\[Category\]/i,`[${t}]`).replace(/(?<![a-z0-9])(?:title_words|title)(?![a-z0-9])/i,f)+`.md`;return H(o)?H(o)+`/`+p:p});function D(){I(u,!H(u)),H(u)&&ee(H(i)||H(n))}async function ee(e){I(p,!0),I(m,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(i,t.current,!0),I(a,t.parent,!0),I(o,x(t.current),!0),I(d,t.current,!0),I(l,H(o)?`/`+H(o):`/ (root)`,!0),I(f,t.dirs||[],!0)}catch{I(m,!0),I(f,[],!0)}finally{I(p,!1)}}let te=P(()=>H(i)===H(n));function ne(){H(i)!==H(n)&&H(a)&&ee(H(a))}function O(){let e=H(h).trim();if(!e)return;let t=H(i)||H(n);if(t===H(n)&&(e===`files`||e===`images`)){I(_,Y(`modal.new_folder.error_reserved`),!0);return}I(_,``);let r=(x(t)?x(t)+`/`:``)+e;I(o,r),I(l,`/`+r),I(h,``)}async function re(){let e=H(s).trim(),n=b(H(c))||`GENERAL`;if(!e){I(_,Y(`modal.new_doc.error_empty_title`),!0);return}I(_,``),I(v,!0);try{let r=await fetch(`/api/documents`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:e,category:n,folder:H(o)})});if(!r.ok){let e=await r.json();throw Error(e.error||`Creation failed`)}let i=await r.json();t.onclose(),t.onsuccess(i.id)}catch(e){I(_,Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e))),I(v,!1)}}function ie(e){e.key===`Enter`&&re(),e.key===`Escape`&&t.onclose()}var ae=Ur(),oe=z(ae),se=e=>{var n=Eh(),r=R(n),i=R(r),a=B(R(i)),o=R(a,!0);M(a),M(i);var b=B(i,2),x=R(b),S=R(x,!0);M(x);var C=B(x,2);Ei(C),Li(C,e=>I(y,e),()=>H(y)),M(b);var w=B(b,2),ae=R(w),oe=R(ae,!0);M(ae);var se=B(ae,2);Ei(se);var ce=B(se,2);$r(ce,20,()=>H(g),e=>e,(e,t)=>{var n=yh(),r={};V(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),G(e,n)}),M(ce),M(w);var le=B(w,2),ue=R(le),de=R(ue,!0);M(ue);var fe=B(ue,2),pe=R(fe),me=R(pe,!0);M(pe);var he=B(pe,2),ge=B(R(he)),_e=R(ge,!0);M(ge),M(he),M(fe);var ve=B(fe,2),ye=e=>{var t=wh(),n=R(t),r=R(n),i=R(r);M(r);var a=B(r,2),o=R(a,!0);M(a),M(n);var s=B(n,2),c=R(s),l=e=>{var t=bh(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},u=e=>{var t=xh(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.cannot_read_dir`)]),G(e,t)},g=e=>{var t=Sh(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`modal.new_doc.no_subfolders`)]),G(e,t)},_=e=>{var t=Ur();$r(z(t),17,()=>H(f),e=>e.path,(e,t)=>{var n=Ch(),r=B(R(n),2),i=R(r,!0);M(r),M(n),V(()=>K(i,H(t).name)),U(`click`,n,()=>ee(H(t).path)),G(e,n)}),G(e,t)};q(c,e=>{H(p)?e(l):H(m)?e(u,1):H(f).length===0?e(g,2):e(_,-1)}),M(s);var v=B(s,2),y=R(v);Ei(y);var b=B(y,2),x=R(b,!0);M(b),M(v),M(t),V((e,t,n)=>{r.disabled=H(te),K(i,`↑ ${e??``}`),K(o,H(d)),J(y,`placeholder`,t),K(x,n)},[()=>Y(`common.up`),()=>Y(`modal.new_doc.new_folder_placeholder`),()=>Y(`modal.new_doc.create_folder_btn`)]),U(`click`,r,ne),U(`keydown`,y,e=>{e.key===`Enter`&&O()}),Mi(y,()=>H(h),e=>I(h,e)),U(`click`,b,O),G(e,t)};q(ve,e=>{H(u)&&e(ye)}),M(le);var be=B(le,2),xe=R(be),Se=R(xe,!0);M(xe);var Ce=B(xe,2),we=R(Ce,!0);M(Ce),M(be);var Te=B(be,2),Ee=e=>{var t=Th(),n=R(t,!0);M(t),V(()=>K(n,H(_))),G(e,t)};q(Te,e=>{H(_)&&e(Ee)});var k=B(Te,2),De=R(k),Oe=R(De,!0);M(De);var ke=B(De,2),Ae=R(ke,!0);M(ke),M(k),M(r),M(n),V((e,t,n,r,i,a,s,c,u)=>{K(o,e),K(S,t),J(C,`placeholder`,n),K(oe,r),K(de,i),K(me,H(l)),K(_e,a),K(Se,s),K(we,H(E)),K(Oe,c),ke.disabled=H(v),K(Ae,u)},[()=>Y(`modal.new_doc.title`),()=>Y(`modal.new_doc.title_label`),()=>Y(`modal.new_doc.title_placeholder`),()=>Y(`modal.new_doc.category_label`),()=>Y(`modal.new_doc.location_label`),()=>Y(`modal.new_doc.browse_btn`),()=>Y(`modal.new_doc.filename_label`),()=>Y(`common.cancel`),()=>H(v)?Y(`modal.new_folder.creating_btn`):Y(`common.create`)]),U(`click`,n,e=>{e.target===e.currentTarget&&t.onclose()}),U(`keydown`,C,ie),Mi(C,()=>H(s),e=>I(s,e)),U(`input`,se,T),U(`keydown`,se,ie),Mi(se,()=>H(c),e=>I(c,e)),U(`click`,he,D),U(`click`,De,function(...e){t.onclose?.apply(this,e)}),U(`click`,ke,re),G(e,n)};q(oe,e=>{t.open&&e(se)}),G(e,ae),qe()}Nr([`click`,`keydown`,`input`]);var Oh=W(`<p class="text-sm text-gray-400 py-2"> </p>`),kh=W(`<p class="text-sm text-red-500"> </p>`),Ah=W(`<label class="flex items-center gap-3 px-1 py-1.5 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer"><input type="checkbox" class="w-4 h-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 focus:ring-blue-500"/> <span class="text-sm text-gray-700 dark:text-gray-300"> </span></label>`),jh=W(`<div><div class="max-h-48 overflow-y-auto space-y-0.5 border border-gray-200 dark:border-gray-700 rounded-lg p-2"><!></div></div>`),Mh=W(`<div><p class="text-xs text-gray-500 dark:text-gray-400"> </p> <div class="flex justify-end gap-3 pt-2"><button class="text-sm px-4 py-2 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"> </button> <button class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"> </button></div></div>`),Nh=W(`<div><p class="text-xs text-gray-500 dark:text-gray-400"> </p> <div class="flex justify-end gap-3 pt-2"><button class="text-sm px-4 py-2 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"> </button> <button class="text-sm px-4 py-2 rounded-lg border border-blue-500 text-blue-600 dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 font-semibold transition-colors"> </button> <button class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"> </button></div></div>`),Ph=W(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/50"><div class="bg-white dark:bg-gray-900 rounded-xl shadow-xl w-full max-w-sm mx-4 p-6 space-y-4"><h3 class="text-base font-semibold text-gray-900 dark:text-gray-50"><i class="fa-solid fa-file-export mr-2 text-blue-500"></i> <span> </span></h3> <div class="flex gap-0 border-b border-gray-200 dark:border-gray-700"><button> </button> <button> </button> <button> </button></div> <!> <!> <!> <!></div></div>`);function Fh(e,t){Ke(t,!0);let n=F(`markdown`),r=!1,i=F(!1),a=F(!1),o=F(L([])),s=F(L({})),c=F(!1),l=F(!1),u=F(!1),d=F(!1),f=!1;On(()=>{t.open&&!f?(f=!0,I(n,`markdown`),r=!1,I(o,[],!0),I(s,{},!0)):t.open||(f=!1)});function p(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function m(e){I(n,e,!0),e===`html`&&h()}async function h(){if(!r){I(i,!0),I(a,!1);try{let e=await fetch(`/api/documents`).then(e=>e.json()),t=new Set;e.forEach(e=>t.add(e.folder?.[0]??e.category??`General`)),I(o,[...t].sort((e,t)=>e===`General`?-1:t===`General`?1:e.localeCompare(t)),!0),r=!0}catch{I(a,!0)}finally{I(i,!1)}}}async function g(){I(c,!0);try{let e=await fetch(`/api/export/markdown`,{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!e.ok)throw Error(await e.text());let n=await e.blob(),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`export-markdown.zip`,i.click(),URL.revokeObjectURL(r),t.onclose()}catch(e){alert(Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)))}finally{I(c,!1)}}async function _(e){let n=H(o).filter(e=>H(s)[e]);if(n.length){I(e===`confluence`?u:l,!0);try{let r=await fetch(`/api/export/html`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folders:n,mode:e})});if(!r.ok)throw Error(await r.text());let i=await r.blob(),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=`export-${e}.zip`,o.click(),URL.revokeObjectURL(a),t.onclose()}catch(e){alert(Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)))}finally{I(u,!1),I(l,!1)}}}async function v(){I(d,!0);try{let e=$.allDocs&&$.allDocs.length?$.allDocs:await fetch(`/api/documents`).then(e=>e.json()),n={};for(let t=0;t<e.length;t+=5){let r=e.slice(t,t+5),i=await Promise.all(r.map(e=>fetch(`/api/documents/`+e.id).then(e=>e.ok?e.json():null).catch(()=>null)));for(let r of i)r&&(n[r.id??e[t]?.id]=r);r.forEach((e,t)=>{i[t]&&(n[e.id]=i[t])})}function r(e){let t={categories:{},children:{}};for(let n of e){let e=t;for(let t of n.folder||[])e.children[t]||(e.children[t]={categories:{},children:{}}),e=e.children[t];e.categories[n.category]||(e.categories[n.category]=[]),e.categories[n.category].push(n)}return t}function i(e){let t=[];e.categories.General&&t.push(...e.categories.General);let n=Object.keys(e.children).sort((e,t)=>e.localeCompare(t));for(let r of n)t.push(...i(e.children[r]));let r=Object.keys(e.categories).filter(e=>e!==`General`).sort((e,t)=>e.localeCompare(t));for(let n of r)t.push(...e.categories[n]);return t}function a(e){return e.replace(/^\d+_/,``).replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function o(e,t){let n=``,r=t*1.25,i=(e,i)=>{let a=t===0&&e===`General`?`General`:e;n+=`<li style="margin-left:${r}rem;margin-top:${t===0?`0.75`:`0.4`}rem;">`,n+=`<span style="font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:#6b7280;">${a}</span>`,n+=`<ul style="margin:0.2rem 0 0 0;padding:0;list-style:none;">`;for(let e of i)n+=`<li style="margin-left:${r+.75}rem;padding:0.15rem 0;">`,n+=`<a href="#doc-${e.id}" style="color:#1d4ed8;text-decoration:none;font-size:0.875rem;">${p(e.title)}</a>`,e.formattedDate&&(n+=`<span style="color:#9ca3af;font-size:0.7rem;margin-left:0.5rem;">${p(e.formattedDate)}</span>`),n+=`</li>`;n+=`</ul></li>`};e.categories.General&&i(`General`,e.categories.General);let s=Object.keys(e.children).sort((e,t)=>e.localeCompare(t));for(let i of s)n+=`<li style="margin-left:${r}rem;margin-top:0.75rem;">`,n+=`<span style="font-size:0.7rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:#7c3aed;">&#128193; ${a(i)}</span>`,n+=`<ul style="margin:0.2rem 0 0 0;padding:0;list-style:none;">`,n+=o(e.children[i],t+1),n+=`</ul></li>`;let c=Object.keys(e.categories).filter(e=>e!==`General`).sort((e,t)=>e.localeCompare(t));for(let t of c)i(t,e.categories[t]);return n}function s(e){return e.replace(/href="[^"]*\?doc=([^"&#]+)(?:#[^"]*)?"/g,(e,t)=>`href="#doc-${t}"`)}let c=p(document.title||`Living Documentation`),l=r(e),u=i(l),d=`<!DOCTYPE html>
97
+ <html>
98
+ <head>
99
+ <meta charset="UTF-8">
100
+ <title>${c} — Export PDF</title>
101
+ <script src="https://cdn.tailwindcss.com?plugins=typography"><\/script>
102
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css">
103
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"><\/script>
104
+ <style>
105
+ body { font-family: system-ui,sans-serif; max-width: 860px; margin: 0 auto; padding: 2rem; color: #111827; background: #fff; }
106
+ .prose pre { border-radius: 0.5rem; }
107
+ .prose img { max-width: 100%; }
108
+ @media print {
109
+ body { padding: 0; }
110
+ a { color: #1d4ed8; text-decoration: underline; }
111
+ }
112
+ </style>
113
+ </head>
114
+ <body>
115
+ <div style="text-align:center;margin-bottom:3rem;padding-bottom:2rem;border-bottom:3px solid #e5e7eb;page-break-after:avoid;">
116
+ <h1 style="font-size:2rem;font-weight:900;color:#111827;margin:0;">${c}</h1>
117
+ </div>
118
+ ${`
119
+ <div style="page-break-after:always;">
120
+ <h2 style="font-size:1.25rem;font-weight:700;color:#111827;margin-bottom:1.5rem;padding-bottom:0.5rem;border-bottom:2px solid #e5e7eb;">${Y(`pdf.toc_title`)}</h2>
121
+ <ul style="list-style:none;padding:0;margin:0;">
122
+ ${o(l,0)}
123
+ </ul>
124
+ </div>`}
125
+ ${u.map((e,t)=>{let r=n[e.id];if(!r)return``;let i=s(r.html),o=`${Array.isArray(e.folder)?e.folder.map(e=>p(a(e))).join(` › `)+` › `:``}${p(e.category)}${e.formattedDate?` · `+p(e.formattedDate):``}`;return`${t>0?`<div style="page-break-before:always;height:0;"></div>`:``}
126
+ <section id="doc-${e.id}" style="padding:2rem 0;">
127
+ <div style="border-bottom:2px solid #e5e7eb;padding-bottom:0.75rem;margin-bottom:1.5rem;">
128
+ <div style="font-size:0.7rem;color:#6b7280;margin-bottom:0.25rem;">${o}</div>
129
+ <h1 style="font-size:1.75rem;font-weight:800;color:#111827;margin:0;">${p(e.title)}</h1>
130
+ </div>
131
+ <div class="prose max-w-none">${i}</div>
132
+ </section>`}).join(`
133
+ `)}
134
+ <script>
135
+ document.querySelectorAll('pre code').forEach(b => hljs.highlightElement(b));
136
+ setTimeout(() => window.print(), 800);
137
+ <\/script>
138
+ </body>
139
+ </html>`,f=window.open(``,`_blank`);if(!f){alert(Y(`error.pdf_popup`));return}f.document.write(d),f.document.close(),t.onclose()}catch(e){alert(Y(`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=Ph(),f=R(r),p=R(f),h=B(R(p),2),x=R(h,!0);M(h),M(p);var S=B(p,2),C=R(S),w=R(C,!0);M(C);var T=B(C,2),E=R(T,!0);M(T);var D=B(T,2),ee=R(D,!0);M(D),M(S);var te=B(S,2),ne=e=>{var t=jh(),n=R(t),r=R(n),c=e=>{var t=Oh(),n=R(t,!0);M(t),V(e=>K(n,e),[()=>Y(`common.loading`)]),G(e,t)},l=e=>{var t=kh(),n=R(t);M(t),V(e=>K(n,`${e??``}failed to load folders`),[()=>Y(`common.error_prefix`)]),G(e,t)},u=e=>{var t=Ur();$r(z(t),16,()=>H(o),e=>e,(e,t)=>{var n=Ah(),r=R(n);Ei(r);var i,a=B(r,2),o=R(a,!0);M(a),M(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)}),M(n),M(t),G(e,t)};q(te,e=>{H(n)===`html`&&e(ne)});var O=B(te,2),re=e=>{var n=Mh(),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a),s=R(o,!0);M(o);var l=B(o,2),u=R(l,!0);M(l),M(a),M(n),V((e,t,n)=>{K(i,e),K(s,t),l.disabled=H(c),K(u,n)},[()=>Y(`modal.export.markdown_hint`),()=>Y(`common.cancel`),()=>H(c)?`⏳`:Y(`modal.export.markdown_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),U(`click`,l,g),G(e,n)};q(O,e=>{H(n)===`markdown`&&e(re)});var ie=B(O,2),ae=e=>{var n=Nh(),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a),s=R(o,!0);M(o);var c=B(o,2),d=R(c,!0);M(c);var f=B(c,2),p=R(f,!0);M(f),M(a),M(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)},[()=>Y(`modal.export_html.hint`),()=>Y(`common.cancel`),()=>H(l)?`⏳`:Y(`modal.export_html.notion_btn`),()=>H(u)?`⏳`:Y(`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(ie,e=>{H(n)===`html`&&e(ae)});var oe=B(ie,2),se=e=>{var n=Mh(),r=R(n),i=R(r,!0);M(r);var a=B(r,2),o=R(a),s=R(o,!0);M(o);var c=B(o,2),l=R(c,!0);M(c),M(a),M(n),V((e,t,n)=>{K(i,e),K(s,t),c.disabled=H(d),K(l,n)},[()=>Y(`modal.export.pdf_hint`),()=>Y(`common.cancel`),()=>H(d)?`⏳`:Y(`modal.export.pdf_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),U(`click`,c,v),G(e,n)};q(oe,e=>{H(n)===`pdf`&&e(se)}),M(f),M(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(ee,i)},[()=>Y(`modal.export.title`),()=>Y(`modal.export.tab_markdown`),()=>Y(`modal.export.tab_html`),()=>Y(`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),qe()}Nr([`click`]);var Ih=W(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),Lh=W(`<p> </p>`),Rh=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">&#128193;</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>`),zh=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">&#128196;</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>`),Bh=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">&#8593; 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>`),Vh=W(`<label class="flex items-center gap-1.5 text-xs text-gray-700 dark:text-gray-300 cursor-pointer"><input type="checkbox"/> </label>`),Hh=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">&#128193;</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>`),Uh=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">&#10003; Select: <span class="font-mono"> </span></button>`),Wh=W(`<!> <!>`,1),Gh=W(`<div> </div>`),Kh=W(`<div> </div> <div> </div> <div> </div> <!>`,1),qh=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>`),Jh=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>`),Yh=W(`<p class="absolute inset-0 flex items-center justify-center text-gray-400 dark:text-gray-500 text-sm animate-pulse"> </p>`),Xh=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>`),Zh=W(`<div class="text-gray-400 text-center py-2">—</div>`),Qh=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>`),$h=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">&#128193; <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">&#128193; <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 eg(e,t){Ke(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([])),ee=F(!1),te=F(``),ne=F(0),O=F(L([]));function re(){localStorage.setItem(`wc-exts`,JSON.stringify(b()))}function ie(){let e=H(x);I(y,H(y).map(t=>({...t,checked:!e})),!0),re()}function ae(){re()}function oe(){return new Set((H(m)||``).split(/[\n,]/).map(e=>e.trim()).filter(Boolean))}function se(e){let t=oe();t.has(e)||(t.add(e),I(m,[...t].join(`, `),!0),localStorage.setItem(`wc-exclude`,H(m)),H(fe)&&ye(H(me)),le())}function ce(){localStorage.setItem(`wc-exclude`,H(m)),H(fe)&&ye(H(me)),le()}function le(){H(ee)&&H(te)&&j(H(te))}function ue(){H(S)&&Me()}function de(){let e=localStorage.getItem(`wc-root`);e&&(I(p,e,!0),I(Ce,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 fe=F(!1),pe=F(null),me=F(``),he=F(``),ge=F(null),_e=F(``);function ve(){I(fe,!H(fe)),H(fe)&&ye(H(me)||H(p)||`/`)}async function ye(e){I(ge,null),I(_e,`Loading…`);try{let t=await fetch(`/api/browse?all=1&path=`+encodeURIComponent(e)).then(e=>e.json());I(me,t.current,!0),I(pe,t.parent,!0),I(he,t.current,!0);let n=H(p).trim(),r=(e,t)=>n&&e.startsWith(n+`/`)?e.slice(n.length+1):t,i=oe(),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(ge,c,!0),I(_e,c.length?``:`Empty directory`,!0)}catch{I(ge,[],!0),I(_e,`Cannot read directory`)}}function be(){H(pe)&&ye(H(pe))}let xe=F(!1),Se=F(null),Ce=F(``),we=F(``),Te=F(null),Ee=F(``);function k(){I(xe,!H(xe)),H(xe)&&De(H(Ce)||H(p)||`/`)}async function De(e){I(Te,null),I(Ee,`Loading…`);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());I(Ce,t.current,!0),I(Se,t.parent,!0),I(we,t.current,!0),I(Te,(t.dirs||[]).map(e=>({name:e.name,path:e.path})),!0),I(Ee,H(Te).length?``:`No sub-folders`,!0)}catch{I(Te,[],!0),I(Ee,`Cannot read directory`)}}function Oe(){H(Se)&&De(H(Se))}function ke(){I(p,H(Ce),!0),localStorage.setItem(`wc-root`,H(Ce)),I(xe,!1),I(m,``),localStorage.removeItem(`wc-exclude`),I(me,H(Ce),!0)}let Ae=F(null),je=F(null),A=F(!1);function Me(){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(A,!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(Ae)||!H(je))return;let e=H(Ae),t=H(je);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(A,!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=>j(e[0])})})}function j(e){if(!H(C)||!H(S))return;let t=[...H(C).get(e)||[]].sort(),n=H(S).get(e)||0;I(te,e,!0),I(ne,n,!0),I(O,t,!0),I(ee,!0)}function Ne(){I(ee,!1)}async function Pe(){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(xe,!1),I(v,!1),I(ee,!1),I(g,`Reading files…`),I(_,!0),I(A,!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),Me()}catch(e){I(g,`Error: `+e.message)}}let Fe=!1;On(()=>{t.open&&!Fe?(Fe=!0,I(g,`Choose a root folder and click Launch.`),I(_,!0),I(A,!1),I(v,!1),I(ee,!1),I(S,null),I(C,null),I(T,null),I(D,[],!0),I(xe,!1),I(fe,!1),I(h,1),de(),H(p)||fetch(`/api/config`).then(e=>e.json()).then(e=>{e.docsFolder&&(I(p,e.docsFolder,!0),I(Ce,e.docsFolder,!0))}).catch(()=>{})):t.open||(Fe=!1)});var Ie=Ur(),Le=z(Ie),Re=e=>{var n=$h(),r=R(n),i=R(r),a=R(i,!0);M(i);var o=B(i,2),s=R(o,!0);M(o),M(r);var c=B(r,2),l=R(c),u=R(l),d=R(u,!0);M(u);var f=B(u,2);Ei(f);var b=B(f,2),S=B(R(b)),C=R(S,!0);M(S),M(b);var w=B(b,2),re=R(w,!0);M(w),M(l);var oe=B(l,2),le=R(oe),de=R(le,!0);M(le);var me=B(le,2);vn(me);var Ce=B(me,2),Me=B(R(Ce)),Fe=R(Me,!0);M(Me),M(Ce),M(oe);var Ie=B(oe,2),Le=e=>{var t=Bh(),n=R(t),r=R(n),i=B(r,2),a=R(i,!0);M(i),M(n);var o=B(n,2),s=R(o),c=e=>{var t=Ih(),n=R(t,!0);M(t),V(()=>K(n,H(_e))),G(e,t)},l=e=>{var t=Lh(),n=R(t,!0);M(t),V(()=>{hi(t,1,`px-3 py-3 text-xs ${H(_e)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),K(n,H(_e))}),G(e,t)},u=e=>{var t=Ur();$r(z(t),17,()=>H(ge),Yr,(e,t)=>{var n=Ur(),r=z(n),i=e=>{var n=Rh(),r=R(n),i=B(R(r),2),a=R(i,!0);M(i),M(r);var o=B(r,2);M(n),V(()=>K(a,H(t).name)),U(`click`,r,()=>ye(H(t).path)),U(`click`,o,()=>se(H(t).entry)),G(e,n)},a=e=>{var n=zh(),r=R(n),i=B(R(r),2),a=R(i,!0);M(i),M(r);var o=B(r,2);M(n),V(()=>K(a,H(t).name)),U(`click`,o,()=>se(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(ge)===null?e(c):H(ge).length===0?e(l,1):e(u,-1)}),M(o),M(t),V(()=>{r.disabled=!H(pe),K(a,H(he))}),U(`click`,r,be),G(e,t)};q(Ie,e=>{H(fe)&&e(Le)});var Re=B(Ie,2),ze=R(Re),Be=R(ze,!0);M(ze);var Ve=B(ze,2),He=R(Ve);Ei(He);var Ue=B(He);M(Ve),$r(B(Ve,2),17,()=>H(y),e=>e.value,(e,t,n)=>{var r=Vh(),i=R(r);Ei(i);var a=B(i);M(r),V(()=>K(a,` ${H(t).label??``}`)),U(`change`,i,ae),Ni(i,()=>H(t).checked,e=>H(t).checked=e),G(e,r)}),M(Re);var We=B(Re,2),Ge=e=>{var t=Bh(),n=R(t),r=R(n),i=B(r,2),a=R(i,!0);M(i),M(n);var o=B(n,2),s=R(o),c=e=>{var t=Ih(),n=R(t,!0);M(t),V(()=>K(n,H(Ee))),G(e,t)},l=e=>{var t=Wh(),n=z(t),r=e=>{var t=Lh(),n=R(t,!0);M(t),V(()=>{hi(t,1,`px-3 py-3 text-xs ${H(Ee)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),K(n,H(Ee))}),G(e,t)},i=e=>{var t=Ur();$r(z(t),17,()=>H(Te),Yr,(e,t)=>{var n=Hh(),r=R(n),i=B(R(r),2),a=R(i,!0);M(i),M(r);var o=B(r,2);M(n),V(()=>K(a,H(t).name)),U(`click`,r,()=>De(H(t).path)),U(`click`,o,()=>se(H(t).name)),G(e,n)}),G(e,t)};q(n,e=>{H(Te).length===0?e(r):e(i,-1)});var a=B(n,2),o=e=>{var t=Uh(),n=B(R(t)),r=R(n,!0);M(n),M(t),V(()=>K(r,H(we))),U(`click`,t,ke),G(e,t)};q(a,e=>{H(Ee)!==`Cannot read directory`&&e(o)}),G(e,t)};q(s,e=>{H(Te)===null?e(c):e(l,-1)}),M(o),M(t),V(()=>{r.disabled=!H(Se),K(a,H(we))}),U(`click`,r,Oe),G(e,t)};q(We,e=>{H(xe)&&e(Ge)}),M(c);var Ke=B(c,2),qe=R(Ke),Je=e=>{var t=Jh(),n=R(t),r=R(n),i=e=>{var t=Kh(),n=z(t),r=R(n);M(n);var i=B(n,2),a=R(i);M(i);var o=B(i,2),s=R(o);M(o);var c=B(o,2),l=e=>{var t=Gh(),n=R(t);M(t),V((e,r)=>{J(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)}),M(n);var a=B(n,2),o=R(a),s=R(o,!0);M(o);var c=B(o,2);Ei(c);var l=B(c,2),u=R(l,!0);M(l),M(a);var d=B(a,2),f=R(d,!0);M(d);var p=B(d,2);$r(p,21,()=>H(D),Yr,(e,t,n)=>{var r=qh(),i=R(r);i.textContent=n+1;var a=B(i,2),o=R(a),s=R(o),c=R(s,!0);M(s);var l=B(s,2),u=R(l,!0);M(l),M(o);var d=B(o,2),f=R(d);M(d),M(a),M(r),V(()=>{K(c,H(t).word),K(u,H(t).freq),_i(f,`width:${H(t).pct??``}%`)}),U(`click`,r,()=>j(H(t).word)),G(e,r)}),M(p),M(t),V((e,t,n,r,i,a)=>{J(o,`title`,e),K(s,t),J(c,`title`,n),J(l,`title`,r),K(u,i),K(f,a)},[()=>Y(`wc.min_files_hint`),()=>Y(`wc.min_files_label`),()=>Y(`wc.min_files_hint`),()=>Y(`wc.apply_hint`),()=>Y(`wc.apply_btn`),()=>Y(`wc.top_words`)]),Mi(c,()=>H(h),e=>I(h,e)),U(`click`,l,ue),G(e,t)};q(qe,e=>{H(v)&&e(Je)});var Ye=B(qe,2),Xe=R(Ye),Ze=e=>{var t=Yh(),n=R(t,!0);M(t),V(()=>K(n,H(g))),G(e,t)};q(Xe,e=>{H(_)&&e(Ze)});var Qe=B(Xe,2);let $e;Li(Qe,e=>I(Ae,e),()=>H(Ae)),M(Ye),Li(Ye,e=>I(je,e),()=>H(je));var et=B(Ye,2),tt=e=>{var t=Qh(),n=R(t),r=R(n),i=R(r);M(r);var a=B(r,2);M(n);var o=B(n,2),s=R(o,!0);M(o);var c=B(o,2),l=R(c),u=e=>{var t=Ur();$r(z(t),17,()=>H(O),Yr,(e,t)=>{var n=Xh(),r=R(n),i=R(r,!0);M(r);var a=B(r,2);M(n),V(()=>K(i,H(t))),U(`click`,a,()=>se(H(t))),G(e,n)}),G(e,t)},d=e=>{G(e,Zh())};q(l,e=>{H(O).length?e(u):e(d,-1)}),M(c),M(t),V(e=>{K(i,`${H(te)??``} ×${H(ne)??``}`),K(s,e)},[()=>Y(`wc.found_in`)]),U(`click`,a,Ne),G(e,t)};q(et,e=>{H(ee)&&e(tt)}),M(Ke),M(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(re,i),K(de,o),J(me,`placeholder`,c),K(Fe,l),K(Be,u),Oi(He,H(x)),K(Ue,` ${f??``}`),$e=hi(Qe,1,``,null,$e,{hidden:!H(A)})},[()=>Y(`wc.title`),()=>Y(`wc.close_btn`),()=>Y(`wc.search_root_label`),()=>Y(`wc.browse_btn`),()=>Y(`wc.launch_btn`),()=>Y(`wc.exclude_label`),()=>Y(`wc.exclude_placeholder`),()=>Y(`wc.browse_btn`),()=>Y(`wc.extensions_label`),()=>Y(`wc.all_btn`)]),U(`click`,o,function(...e){t.onclose?.apply(this,e)}),Mi(f,()=>H(p),e=>I(p,e)),U(`click`,b,k),U(`click`,w,Pe),U(`input`,me,ce),Mi(me,()=>H(m),e=>I(m,e)),U(`click`,Ce,ve),U(`change`,He,ie),G(e,n)};q(Le,e=>{t.open&&e(Re)}),G(e,Ie),qe()}Nr([`click`,`input`,`change`]);var tg=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),ng=W(`<div class="relative hidden sm:block"><input type="search" class="w-56 pl-8 pr-3 py-1.5 text-sm rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500"/> <span class="absolute left-2.5 top-2 text-gray-400 text-sm pointer-events-none">🔍</span></div>`),rg=W(`<p class="p-8 text-red-500"> </p>`),ig=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>`),ag=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 og(e,t){Ke(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=$.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){$.searchQuery=``,$.searchResults=null;return}$.searchQuery=t,$.searchResults=$.allDocs.filter(e=>e.title.toLowerCase().includes(t.toLowerCase())||e.category.toLowerCase().includes(t.toLowerCase())),f=window.setTimeout(async()=>{try{let e=await Fu(t);t===$.searchQuery&&($.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&&$.currentDocId&&$.currentDocId!==e){let t=H(_).findIndex(t=>t.id===e);if(t!==-1)I(_,H(_).slice(0,t),!0);else{let e=$.allDocs.find(e=>e.id===$.currentDocId);I(_,[...H(_),{id:$.currentDocId,title:e?e.title:$.currentDocId}],!0)}}else n||I(_,[],!0);$.currentDocId=e;let i=$.allDocs.find(t=>t.id===e);if(i&&$.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 ju(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,Y(`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 ju(t);r.id=t,I(o,r,!0);let i=e.match(/\]\(\s*\.?\/files\/[^)\s]+/g),a={...$.fileAttachmentCounts};i&&i.length?a[t]=i.length:delete a[t],$.fileAttachmentCounts=a}async function x(){if(!H(o))return;let e=H(o).id;if(!(await fetch(`/api/documents/`+encodeURIComponent(e),{method:`DELETE`})).ok)return;$.allDocs=$.allDocs.filter(t=>t.id!==e),Array.isArray($.searchResults)&&($.searchResults=$.searchResults.filter(t=>t.id!==e));let t={...$.annotationCounts};delete t[e],$.annotationCounts=t;let n={...$.fileAttachmentCounts};delete n[e],$.fileAttachmentCounts=n,$.currentDocId=null,I(o,null),history.pushState({},``,location.pathname)}async function S(){let[e,t]=await Promise.all([ku(),Ou()]);if($.allDocs=e,t.docsFolder)try{$.allFolderPaths=await Au(t.docsFolder)}catch{$.allFolderPaths=[]}let[n,r,i]=await Promise.all([Mu(),Nu(),Pu()]);$.annotationCounts=n,$.fileAttachmentCounts=r,$.docStatuses=i}Vi(async()=>{m(p());let e=await Ou();await fa(e.language||`en`),e.title&&(document.title=e.title,I(u,e.title,!0)),e.filenamePattern&&I(d,e.filenamePattern+`.md`),$.exclusiveFolderExpansion=!!e.exclusiveFolderExpansion,$.exclusiveCategoryExpansion=!!e.exclusiveCategoryExpansion,$.codeBlockMaxHeight=typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,$.imageRoundedCorners=!!e.imageRoundedCorners,$.imageCentered=!!e.imageCentered,$.imageBorder=!!e.imageBorder,$.codeBlockLightTheme=!!e.codeBlockLightTheme,$.codeBlockMaxHeight>0&&document.documentElement.style.setProperty(`--ld-code-max-h`,$.codeBlockMaxHeight+`px`),$.expandedCategories.size===0&&($.expandedCategories=new Set([`General`])),await S();let t=new URLSearchParams(location.search).get(`doc`);if(t)y(t,!0,!1,location.hash?location.hash.slice(1):null);else{let e=$.allDocs.find(e=>e.category===`General`)??$.allDocs[0];e&&y(e.id,!0)}let n=e=>{let t=e.state?.docId||new URLSearchParams(location.search).get(`doc`),n=e.state?.anchor||(location.hash.length>1?location.hash.slice(1):null);t&&y(t,!0,!1,n)};return window.addEventListener(`popstate`,n),()=>window.removeEventListener(`popstate`,n)});var C=ag(),w=z(C),T=R(w);ua(T,{get title(){return H(u)},subtitle:``,actions:e=>{var t=tg(),n=z(t),r=B(n,2),i=R(r,!0);M(r),V((e,t)=>{J(n,`title`,e),J(n,`aria-label`,t),K(i,H(l)?`☀`:`☾`)},[()=>Y(`nav.word_cloud`),()=>Y(`nav.word_cloud`)]),U(`click`,n,()=>I(a,!0)),U(`click`,r,h),G(e,t)},children:(e,t)=>{var n=ng(),r=R(n);Ei(r),Fe(2),M(n),V(e=>{J(r,`placeholder`,e),Di(r,$.searchQuery)},[()=>Y(`nav.search_placeholder`)]),U(`input`,r,e=>g(e.target.value)),G(e,n)},$$slots:{actions:!0,default:!0}});var E=B(T,2),D=R(E);sd(D,{onopen:e=>y(e),onsearch:g,onexport:()=>I(i,!0),onnewfolder:()=>I(n,!0),onnewdoc:()=>I(r,!0)});var ee=B(D,2),te=R(ee),ne=e=>{var t=Ur(),n=z(t),r=e=>{var t=rg(),n=R(t,!0);M(t),V(()=>K(n,H(c))),G(e,t)},i=e=>{uh(e,{get doc(){return H(o)},get navHistory(){return H(_)},ongoback:v,onopen:(e,t)=>y(e,!1,!0,t),onsave:b,ondelete:x})};q(n,e=>{H(c)?e(r):e(i,-1)}),G(e,t)},O=e=>{var t=ig(),n=R(t),r=B(R(n),2),i=R(r,!0);M(r);var a=B(r,2),o=R(a,!0);M(a);var s=B(a,2),c=R(s,!0);M(s);var l=B(s,2),u=R(l,!0);M(l),M(n),M(t),V((e,t,n)=>{K(i,e),K(o,t),K(c,H(d)),K(u,n)},[()=>Y(`welcome.title`),()=>Y(`welcome.hint`),()=>Y(`welcome.pattern_hint`)]),G(e,t)};q(te,e=>{H(o)?e(ne):e(O,-1)}),M(ee),M(E),M(w);var re=B(w,2);vh(re,{get open(){return H(n)},onclose:()=>I(n,!1),onsuccess:S});var ie=B(re,2);Dh(ie,{get open(){return H(r)},onclose:()=>I(r,!1),onsuccess:async e=>{await S(),y(e)}});var ae=B(ie,2);Fh(ae,{get open(){return H(i)},onclose:()=>I(i,!1)}),eg(B(ae,2),{get open(){return H(a)},onclose:()=>I(a,!1)}),G(e,C),qe()}Nr([`click`,`input`]);var sg=`modulepreload`,cg=function(e){return`/`+e},lg={},ug=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=cg(t,n),t in lg)return;lg[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`:sg,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)})},dg=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.
140
+ 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
141
+ 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
142
+ 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 fg(e,t){Ke(t,!0),Vi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await fa(t);let{initDiagram:r}=await ug(async()=>{let{initDiagram:e}=await import(`./main-DmBPi0xy.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=dg(),o=R(a),s=R(o),c=R(s,!0);M(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),ee=B(D,2),te=B(ee,4),ne=B(te,4),O=B(ne,4),re=B(O,2),ie=B(re,8),ae=B(ie,4),oe=B(ae,4),se=R(oe),ce=R(se,!0);M(se),M(oe),M(o);var le=B(o,2),ue=R(le),de=R(ue),fe=R(de),pe=R(fe,!0);M(fe);var me=B(fe,2),he=R(me,!0);M(me),M(de),Fe(2),M(ue);var ge=B(ue,2),_e=B(ge,2),ve=B(R(_e),10),ye=B(R(ve),8),be=B(ye,2);M(ve);var xe=B(ve,2),Se=R(xe),Ce=R(Se),we=R(Ce,!0);M(Ce);var Te=B(Ce,2);M(Se),Fe(2),M(xe);var Ee=B(xe,2),k=R(Ee),De=B(k,4),Oe=R(De),ke=B(Oe,4),Ae=B(ke,4),je=B(Ae,2),A=B(je,4),Me=B(A,2),j=B(Me,2),Ne=B(j,4),Pe=B(Ne,2),Ie=B(Pe,2),Le=B(Ie,4),Re=B(Le,2),ze=B(Re,2),Be=B(ze,4),Ve=R(Be),He=B(Ve,2),Ue=B(He,2),We=B(Ue,2),Ge=B(We,2);Fe(2),M(Be);var Je=B(Be,2),Ye=B(Je,2),Xe=B(Ye,4),Ze=B(Xe,2),Qe=B(Ze,2),$e=B(Qe,4),et=B($e,2),tt=B(et,4),nt=B(tt,4),rt=B(nt,2),it=B(rt,4);M(De),M(Ee);var at=B(Ee,2),ot=R(at),st=R(ot,!0);M(ot);var ct=B(ot,2),lt=B(R(ct),2),ut=R(lt,!0);M(lt),M(ct);var N=B(ct,2),dt=R(N);M(N);var ft=B(N,2),pt=B(R(ft),2),mt=R(pt,!0);M(pt),M(ft);var ht=B(ft,4),gt=B(R(ht),2),_t=R(gt,!0);M(gt),M(ht);var vt=B(ht,2),yt=R(vt);M(vt);var bt=B(vt,2),xt=R(bt),St=R(xt,!0);M(xt);var Ct=B(xt,2),wt=R(Ct,!0);M(Ct),Fe(2),M(bt),M(at);var Tt=B(at,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);M(Dt),M(Tt);var Xt=B(Tt,2),Zt=B(Xt,2),Qt=B(R(Zt),2),$t=R(Qt,!0);M(Qt),M(Zt),M(_e),M(le);var en=B(le,4),tn=R(en),L=R(tn),nn=R(L,!0);M(L);var rn=B(L,4),an=R(rn);Fe(2),M(rn);var on=B(rn,2),sn=R(on,!0);M(on);var cn=B(on,2),ln=R(cn),un=R(ln,!0);M(ln);var dn=B(ln,2),fn=R(dn,!0);M(dn),M(cn),M(tn),M(en),M(a),V((e,t,n,i,a,o,s,oe,se,le,ue,de,fe,me,_e,ve,xe,Se,Ce,Ee,De,M,Fe,Be,Ke,qe,at,ot,ct,lt,N,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),J(l,`title`,t),J(u,`title`,n),J(d,`title`,i),J(f,`title`,a),J(p,`title`,o),J(m,`title`,s),J(h,`title`,oe),J(g,`title`,se),J(_,`title`,le),J(v,`title`,ue),J(y,`title`,de),J(b,`title`,fe),J(x,`title`,me),J(S,`title`,_e),J(C,`title`,ve),J(w,`title`,xe),J(T,`title`,Se),J(E,`title`,Ce),J(D,`title`,Ee),J(ee,`title`,De),J(te,`placeholder`,M),J(ne,`title`,Fe),J(O,`title`,Be),J(re,`title`,Ke),J(ie,`title`,qe),J(ae,`title`,at),K(ce,ot),K(pe,ct),K(he,lt),hi(ge,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`}`),J(ye,`title`,N),J(be,`title`,ft),K(we,pt),J(Te,`title`,ht),J(k,`title`,gt),J(Oe,`title`,vt),J(ke,`title`,bt),J(Ae,`title`,xt),J(je,`title`,Ct),J(A,`title`,Tt),J(Me,`title`,Dt),J(j,`title`,F),J(Ne,`title`,Zt),J(Pe,`title`,I),J(Ie,`title`,Qt),J(Le,`title`,en),J(Re,`title`,tn),J(ze,`title`,L),J(Ve,`title`,rn),J(He,`title`,on),J(Ue,`title`,cn),J(We,`title`,ln),J(Ge,`title`,dn),J(Je,`title`,R),J(Ye,`title`,z),J(Xe,`title`,B),J(Ze,`title`,pn),J(Qe,`title`,mn),J($e,`title`,hn),J(et,`title`,gn),J(tt,`title`,_n),J(nt,`title`,vn),J(rt,`title`,yn),J(it,`title`,bn),K(st,xn),K(ut,Sn),J(dt,`placeholder`,Cn),K(mt,wn),K(_t,Tn),J(yt,`placeholder`,En),K(St,Dn),K(wt,On),J(Et,`title`,kn),J(Ot,`title`,An),J(kt,`title`,jn),J(At,`title`,Mn),J(jt,`title`,Nn),J(Mt,`title`,Pn),J(Nt,`title`,V),J(Pt,`title`,Fn),J(Ft,`title`,In),J(It,`title`,Ln),J(Lt,`title`,Rn),J(Rt,`title`,zn),J(zt,`title`,Bn),J(Bt,`title`,Vn),J(P,`title`,Hn),J(Vt,`title`,Un),J(Ht,`title`,Wn),J(Ut,`title`,Gn),J(Wt,`title`,Kn),J(Gt,`title`,qn),J(Kt,`title`,Jn),J(qt,`title`,Yn),J(Jt,`title`,Xn),J(Yt,`title`,Zn),J(Xt,`placeholder`,Qn),K($t,$n),K(nn,er),J(an,`placeholder`,tr),K(sn,nr),K(un,rr),K(fn,ir)},[()=>Y(`diagram.back_btn`),()=>Y(`diagram.diagrams_list_title`),()=>Y(`diagram.toolbar.copy_mcp_id`),()=>Y(`diagram.toolbar.select`),()=>Y(`diagram.toolbar.box`),()=>Y(`diagram.toolbar.ellipse`),()=>Y(`diagram.toolbar.database`),()=>Y(`diagram.toolbar.circle`),()=>Y(`diagram.toolbar.actor`),()=>Y(`diagram.toolbar.postit`),()=>Y(`diagram.toolbar.text_free`),()=>Y(`diagram.toolbar.image`),()=>Y(`diagram.toolbar.shape_editor`),()=>Y(`diagram.toolbar.arrow`),()=>Y(`diagram.toolbar.delete`),()=>Y(`diagram.toolbar.defaults`),()=>Y(`diagram.toolbar.align_guides`),()=>Y(`diagram.toolbar.grid`),()=>Y(`diagram.toolbar.edge_style`),()=>Y(`diagram.toolbar.evidence_mode`),()=>Y(`diagram.toolbar.resize_corner`),()=>Y(`diagram.toolbar.title_placeholder`),()=>Y(`diagram.toolbar.zoom_out`),()=>Y(`diagram.toolbar.zoom_in`),()=>Y(`diagram.toolbar.fit`),()=>Y(`diagram.toolbar.debug`),()=>Y(`diagram.toolbar.export_drawio`),()=>Y(`diagram.toolbar.save`),()=>Y(`diagram.sidebar.title`),()=>Y(`diagram.sidebar.new_btn`),()=>Y(`diagram.selection.rotate_shape`),()=>Y(`diagram.selection.rotate_text`),()=>Y(`diagram.evidence.panel_title`),()=>Y(`diagram.evidence.close`),()=>Y(`diagram.node_panel.lock`),()=>Y(`diagram.node_panel.color`),()=>Y(`diagram.node_panel.bg_opacity`),()=>Y(`diagram.node_panel.edit_label`),()=>Y(`diagram.node_panel.edit_link`),()=>Y(`diagram.node_panel.font_decrease`),()=>Y(`diagram.node_panel.font_size_value`),()=>Y(`diagram.node_panel.font_increase`),()=>Y(`diagram.node_panel.align_left`),()=>Y(`diagram.node_panel.align_center`),()=>Y(`diagram.node_panel.align_right`),()=>Y(`diagram.node_panel.align_top`),()=>Y(`diagram.node_panel.align_middle`),()=>Y(`diagram.node_panel.align_bottom`),()=>Y(`diagram.node_panel.custom_label_above`),()=>Y(`diagram.node_panel.custom_label_below`),()=>Y(`diagram.node_panel.custom_label_left`),()=>Y(`diagram.node_panel.custom_label_right`),()=>Y(`diagram.node_panel.custom_label_center`),()=>Y(`diagram.node_panel.send_back`),()=>Y(`diagram.node_panel.bring_front`),()=>Y(`diagram.node_panel.stamp_color`),()=>Y(`diagram.node_panel.stamp_font`),()=>Y(`diagram.node_panel.stamp_size`),()=>Y(`diagram.node_panel.rotate_ccw`),()=>Y(`diagram.node_panel.rotate_cw`),()=>Y(`diagram.node_panel.copy_png`),()=>Y(`diagram.node_panel.group`),()=>Y(`diagram.node_panel.ungroup`),()=>Y(`diagram.node_panel.save_as_default`),()=>Y(`diagram.link_panel.title`),()=>Y(`diagram.link_panel.external`),()=>Y(`diagram.link_panel.url_placeholder`),()=>Y(`diagram.link_panel.existing_diagram`),()=>Y(`diagram.link_panel.new_diagram`),()=>Y(`diagram.link_panel.diagram_name_placeholder`),()=>Y(`diagram.link_panel.save_btn`),()=>Y(`diagram.link_panel.remove_btn`),()=>Y(`diagram.edge_panel.lock`),()=>Y(`diagram.edge_panel.no_arrow`),()=>Y(`diagram.edge_panel.arrow_from`),()=>Y(`diagram.edge_panel.arrow_to`),()=>Y(`diagram.edge_panel.arrow_both`),()=>Y(`diagram.edge_panel.solid`),()=>Y(`diagram.edge_panel.dashed`),()=>Y(`diagram.edge_panel.font_decrease`),()=>Y(`diagram.edge_panel.font_size_value`),()=>Y(`diagram.edge_panel.font_increase`),()=>Y(`diagram.edge_panel.edit_label`),()=>Y(`diagram.edge_panel.reset_label_width`),()=>Y(`diagram.edge_panel.rotate_label_ccw`),()=>Y(`diagram.edge_panel.rotate_label_cw`),()=>Y(`diagram.edge_panel.offset_label_left`),()=>Y(`diagram.edge_panel.offset_label_right`),()=>Y(`diagram.edge_panel.offset_label_up`),()=>Y(`diagram.edge_panel.offset_label_down`),()=>Y(`diagram.edge_panel.offset_label_reset`),()=>Y(`diagram.edge_panel.width_decrease`),()=>Y(`diagram.edge_panel.width_increase`),()=>Y(`diagram.edge_panel.color`),()=>Y(`diagram.edge_panel.clear_ports`),()=>Y(`diagram.edge_panel.save_as_default`),()=>Y(`diagram.label_input.placeholder`),()=>Y(`diagram.empty_state`),()=>Y(`diagram.image_modal.title`),()=>Y(`diagram.image_modal.placeholder`),()=>Y(`diagram.image_modal.error_chars`),()=>Y(`diagram.image_modal.cancel_btn`),()=>Y(`diagram.image_modal.paste_btn`)]),U(`click`,s,()=>history.back()),U(`mousedown`,ge,i),G(e,a),qe()}Nr([`click`,`mousedown`]),Ue();var pg={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 mg(){pg.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var hg=`custom-shape`,gg=`custom-shape:`,_g=[{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 vg(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function yg(e){return vg(e)?e.slice(13):null}function bg(e){return e&&pg.customShapeDefs&&pg.customShapeDefs.get(e)||null}function xg(e){let t=bg(e);return[t&&t.width||65,t&&t.height||65]}function Sg(e){let t=bg(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:_g}function Cg(e){let t=bg(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function wg(){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:[];pg.customShapeLibraries=n,pg.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>pg.customShapeDefs.set(e.id,e))})}catch{pg.customShapeLibraries=[],pg.customShapeDefs=new Map}}function Tg(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(pg.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:`${gg}${e.id}`}}))}),t.appendChild(n)})}function Eg(){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=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[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(_g)}}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=`
143
+ <input class="field !h-7 text-xs" value="${d(t.id)}">
144
+ <input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.x*100)}">
145
+ <input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.y*100)}">
146
+ <button class="btn btn-danger !h-7 !px-0">×</button>
147
+ `;let[s,c,u]=o.querySelectorAll(`input`);s.addEventListener(`input`,()=>{t.id=s.value.trim()||`p${n+1}`,b()}),c.addEventListener(`input`,()=>{t.x=l(Number(c.value)/100),b()}),u.addEventListener(`input`,()=>{t.y=l(Number(u.value)/100),b()}),o.querySelector(`button`).addEventListener(`click`,()=>{i.anchors=i.anchors.filter(e=>e!==t),b()}),e.anchorList.appendChild(o)})}function x(t,n){let r=e.previewStage.getBoundingClientRect();t.x=l((n.clientX-r.left)/r.width),t.y=l((n.clientY-r.top)/r.height)}let S=[],C=(e,t,n,r)=>{e.addEventListener(t,n,r),S.push(()=>e.removeEventListener(t,n,r))};return C(e.previewStage,`pointermove`,e=>{if(!a||!i)return;let t=i.anchors.find(e=>e.id===a);t&&(x(t,e),b())}),C(window,`pointerup`,()=>{a=null}),C(e.previewStage,`click`,e=>{if(e.target.closest(`.anchor-dot`)||a||!i)return;let t={id:`p${(i.anchors||[]).length+1}`,x:.5,y:.5};x(t,e),i.anchors=[...i.anchors||[],t],b()}),C(document.getElementById(`btnAddLibrary`),`click`,async()=>{let e={id:o(`lib`),name:`New library`,shapes:[]};t.libraries.push(e),n=e.id,r=null,i=h(),g(),await m()}),C(e.librarySelect,`change`,()=>{n=e.librarySelect.value,r=s()?.shapes[0]?.id||null,i=c()?structuredClone(c()):h(),g()}),C(e.libraryName,`change`,async()=>{let t=s();t&&(t.name=e.libraryName.value.trim()||t.name,_(),await m())}),C(document.getElementById(`btnNewShape`),`click`,()=>{r=null,i=h(),g()}),C(document.getElementById(`btnDeleteShape`),`click`,async()=>{let e=s();!e||!r||(e.shapes=e.shapes.filter(e=>e.id!==r),r=e.shapes[0]?.id||null,i=c()?structuredClone(c()):h(),g(),await m())}),C(document.getElementById(`btnDefaultAnchors`),`click`,()=>{i.anchors=structuredClone(_g),b()}),C(document.getElementById(`btnClearAnchors`),`click`,()=>{i.anchors=[],b()}),C(document.getElementById(`btnSaveShape`),`click`,async()=>{let t=s();if(!t||!i||!i.imageSrc)return;i.name=e.shapeName.value.trim()||`Untitled shape`,i.width=Math.max(16,Math.min(1200,Math.round(Number(e.shapeWidth.value)||65))),i.height=Math.max(16,Math.min(1200,Math.round(Number(e.shapeHeight.value)||65))),i.labelPlacement=u(e.labelPlacement.value),i.showInDiagram=e.shapeShowInDiagram.checked;let n=t.shapes.findIndex(e=>e.id===i.id);n>=0?t.shapes[n]=structuredClone(i):t.shapes.push(structuredClone(i)),r=i.id,g(),await m()}),[`shapeName`,`shapeWidth`,`shapeHeight`,`labelPlacement`,`shapeShowInDiagram`].forEach(t=>{C(document.getElementById(t),`input`,()=>{i.name=e.shapeName.value,i.width=Number(e.shapeWidth.value)||65,i.height=Number(e.shapeHeight.value)||65,i.labelPlacement=u(e.labelPlacement.value),i.showInDiagram=e.shapeShowInDiagram.checked})}),C(e.imageFile,`change`,async()=>{let t=e.imageFile.files&&e.imageFile.files[0];if(!t||!i)return;let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsDataURL(t)}),r=(t.name.split(`.`).pop()||`png`).toLowerCase().replace(/[^a-z0-9]/g,``)||`png`,a=t.name.replace(/\.[^.]+$/,``).slice(0,60),o=await(await fetch(`/api/images/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:n,ext:r,name:a})})).json();i.imageSrc=`/images/${o.filename}`,(!e.shapeName.value||e.shapeName.value===`New shape`)&&(i.name=a||i.name),y()}),p(),()=>{S.forEach(e=>e()),S.length=0}}var Dg=W(`<div class="ld-shape-editor h-screen overflow-hidden bg-gray-50 text-gray-900"><header class="h-12 border-b border-gray-200 bg-white flex items-center gap-2 px-3"><button class="btn">← Back</button> <h1 class="text-sm font-semibold">Shape editor</h1> <span id="saveState" class="ml-auto text-xs text-gray-500"></span></header> <main class="h-[calc(100vh-3rem)] grid grid-cols-[17rem_1fr] overflow-hidden"><aside class="border-r border-gray-200 bg-white flex flex-col min-h-0"><div class="p-3 border-b border-gray-200 space-y-2"><label class="block text-xs font-semibold text-gray-500">Library</label> <div class="flex gap-2"><select id="librarySelect" class="field flex-1"></select> <button id="btnAddLibrary" class="btn">+</button></div> <input id="libraryName" class="field w-full" placeholder="Library name"/></div> <div class="p-3 border-b border-gray-200 flex gap-2"><button id="btnNewShape" class="btn btn-primary flex-1">New shape</button> <button id="btnDeleteShape" class="btn btn-danger">Delete</button></div> <div id="shapeList" class="flex-1 overflow-y-auto p-2 space-y-1"></div></aside> <section class="min-w-0 min-h-0 overflow-y-auto p-5"><div class="grid grid-cols-[minmax(20rem,34rem)_minmax(20rem,1fr)] gap-5 items-start"><div class="space-y-3"><div id="previewStage"><img id="previewImage" alt=""/></div> <p class="text-xs text-gray-500">Click on the image to add an anchor. Drag anchors to refine their
148
+ position.</p></div> <div class="space-y-4"><div class="grid grid-cols-2 gap-3"><label class="space-y-1"><span class="block text-xs font-semibold text-gray-500">Shape name</span> <input id="shapeName" class="field w-full" placeholder="Shape name"/></label> <label class="space-y-1"><span class="block text-xs font-semibold text-gray-500">Image / SVG</span> <input id="imageFile" type="file" accept="image/*,.svg" class="block w-full text-sm"/></label> <label class="space-y-1"><span class="block text-xs font-semibold text-gray-500">Width</span> <input id="shapeWidth" type="number" min="16" max="1200" class="field w-full"/></label> <label class="space-y-1"><span class="block text-xs font-semibold text-gray-500">Height</span> <input id="shapeHeight" type="number" min="16" max="1200" class="field w-full"/></label> <label class="space-y-1 col-span-2"><span class="block text-xs font-semibold text-gray-500">Text placement</span> <select id="labelPlacement" class="field w-full"><option> </option><option> </option><option> </option><option> </option><option> </option></select></label> <label class="col-span-2 flex items-start gap-2 rounded-md border border-gray-200 bg-white px-2 py-2 text-sm"><input id="shapeShowInDiagram" type="checkbox" class="mt-0.5 h-4 w-4 rounded border-gray-300 text-blue-600"/> <span class="space-y-0.5"><span class="block font-semibold text-gray-700"> </span> <span class="block text-xs text-gray-500"> </span></span></label></div> <div class="flex flex-wrap gap-2"><button id="btnDefaultAnchors" class="btn">Use 8 default anchors</button> <button id="btnClearAnchors" class="btn">Clear anchors</button> <button id="btnSaveShape" class="btn btn-primary">Save shape</button></div> <div><div class="flex items-center justify-between mb-2"><h2 class="text-xs font-semibold uppercase tracking-wide text-gray-500">Anchors</h2> <span id="anchorCount" class="text-xs text-gray-500"></span></div> <div id="anchorList" class="space-y-1"></div></div></div></div></section></main></div>`);function Og(e,t){Ke(t,!1),Vi(async()=>{try{await fa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{await fa(`en`)}return Eg()}),Ri();var n=Dg(),r=R(n),i=R(r);Fe(4),M(r);var a=B(r,2),o=B(R(a),2),s=R(o),c=B(R(s),2),l=R(c),u=B(R(l),8),d=B(R(u),2),f=R(d),p=R(f,!0);M(f),f.value=f.__value=`below`;var m=B(f),h=R(m,!0);M(m),m.value=m.__value=`above`;var g=B(m),_=R(g,!0);M(g),g.value=g.__value=`right`;var v=B(g),y=R(v,!0);M(v),v.value=v.__value=`left`;var b=B(v),x=R(b,!0);M(b),b.value=b.__value=`center`,M(d),M(u);var S=B(u,2),C=B(R(S),2),w=R(C),T=R(w,!0);M(w);var E=B(w,2),D=R(E,!0);M(E),M(C),M(S),M(l),Fe(4),M(c),M(s),M(o),M(a),M(n),V((e,t,n,r,i,a,o)=>{K(p,e),K(h,t),K(_,n),K(y,r),K(x,i),K(T,a),K(D,o)},[()=>Y(`shape_editor.label_placement.below`),()=>Y(`shape_editor.label_placement.above`),()=>Y(`shape_editor.label_placement.right`),()=>Y(`shape_editor.label_placement.left`),()=>Y(`shape_editor.label_placement.center`),()=>Y(`shape_editor.show_in_diagram_label`),()=>Y(`shape_editor.show_in_diagram_hint`)]),U(`click`,i,()=>history.back()),G(e,n),qe()}Nr([`click`]);var kg=W(`<p style="padding:2rem"> </p>`);function Ag(e,t){Ke(t,!0);function n(e){return e.length>1?e.replace(/\/+$/,``):e}let r=F(L(n(window.location.pathname)));window.addEventListener(`popstate`,()=>{I(r,n(window.location.pathname),!0)}),On(()=>{H(r)===`/blueprint`?document.documentElement.setAttribute(`data-blueprint`,``):document.documentElement.removeAttribute(`data-blueprint`)});function i(e){history.pushState(null,``,e),I(r,n(e),!0)}var a=Ur(),o=z(a),s=e=>{Ca(e,{navigate:i})},c=e=>{ao(e,{})},l=e=>{Sl(e,{})},u=e=>{Fl(e,{})},d=e=>{hu(e,{navigate:i})},f=e=>{Tu(e,{})},p=e=>{fg(e,{})},m=e=>{Og(e,{})},h=e=>{og(e,{})},g=e=>{var t=kg(),n=R(t);M(t),V(()=>K(n,`Route "${H(r)??``}" — not yet migrated.`)),G(e,t)};q(o,e=>{H(r)===`/admin`?e(s):H(r)===`/blueprint`?e(c,1):H(r)===`/workspace`?e(l,2):H(r)===`/files`?e(u,3):H(r)===`/context`?e(d,4):H(r)===`/agents`?e(f,5):H(r)===`/diagram`?e(p,6):H(r)===`/shape-editor`?e(m,7):H(r)===`/`?e(h,8):e(g,-1)}),G(e,a),qe()}Wr(Ag,{target:document.getElementById(`app`)});export{bg as a,wg as c,pg as d,fa as f,xg as i,Tg as l,yg as n,Cg as o,Y as p,Sg as r,vg as s,hg as t,mg as u};