living-ai-documentation 3.44.0 → 3.45.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.
@@ -2,67 +2,69 @@ import e from"https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
2
2
  \r\f\xA0\v`];function fi(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||di.includes(r[o-1]))&&(s===r.length||di.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function pi(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 mi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function hi(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(mi)),i&&c.push(...Object.keys(i).map(mi));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=mi(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+=pi(r)),i&&(n+=pi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function gi(e,t,n,r,i,a){var o=e[A];if(je||o!==n||o===void 0){var s=fi(n,r,a);(!je||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[A]=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 _i(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 vi(e,t,n,r){var i=e[ae];if(je||i!==t){var a=hi(t,r);(!je||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ae]=t}else r&&(Array.isArray(r)?(_i(e,n?.[0],r[0]),_i(e,n?.[1],r[1],`important`)):_i(e,n,r));return r}function yi(e,n,r=!1){if(e.multiple){if(n==null)return;if(!t(n))return ke();for(var i of e.options)i.selected=n.includes(Si(i));return}for(i of e.options)if(an(Si(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(e.selectedIndex=-1)}function bi(e){var t=new MutationObserver(()=>{yi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),On(()=>{t.disconnect()})}function xi(e,t,n=t){var r=new WeakSet,i=!0;Cn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Si);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Si(o)}n(a),e.__value=a,Ot!==null&&r.add(Ot)}),Nn(()=>{var a=t();if(e===document.activeElement){var o=He?kt:Ot;if(r.has(o))return}if(yi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Si(s),n(a))}e.__value=a,i=!1}),bi(e)}function Si(e){return`__value`in e?e.__value:e.value}var Ci=Symbol(`is custom element`),wi=Symbol(`is html`),Ti=le?`link`:`LINK`,Ei=le?`progress`:`PROGRESS`;function Di(e){if(je){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[se]=n,Qe(n),xn()}}function Oi(e,t){var n=Ai(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Ei)||(e.value=t??``)}function ki(e,t){var n=Ai(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function J(e,t,n,r){var i=Ai(e);je&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Ti)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[re]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Mi(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Ai(e){return e[ie]??={[Ci]:e.nodeName.includes(`-`),[wi]:e.namespaceURI===we}}var ji=new Map;function Mi(e){var t=e.getAttribute(`is`)||e.nodeName,n=ji.get(t);if(n)return n;ji.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 Ni(e,t,n=t){var r=new WeakSet;Cn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ri(e)?zi(a):a,n(a),Ot!==null&&r.add(Ot),await xr(),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))}}}),(je&&e.defaultValue!==e.value||wr(t)==null&&e.value)&&(n(Ri(e)?zi(e.value):e.value),Ot!==null&&r.add(Ot)),Fn(()=>{var n=t();if(e===document.activeElement){var i=He?kt:Ot;if(r.has(i))return}Ri(e)&&n===zi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}var Pi=new Set;function Fi(e,t,n,r,i=r){var a=n.getAttribute(`type`)===`checkbox`,o=e;let s=!1;if(t!==null)for(var c of t)o=o[c]??=[];o.push(n),Cn(n,`change`,()=>{var e=n.__value;a&&(e=Li(o,e,n.checked)),i(e)},()=>i(a?[]:null)),Fn(()=>{var e=r();if(je&&n.defaultChecked!==n.checked){s=!0;return}a?(e||=[],n.checked=e.includes(n.__value)):n.checked=an(n.__value,e)}),On(()=>{var e=o.indexOf(n);e!==-1&&o.splice(e,1)}),Pi.has(o)||(Pi.add(o),Qe(()=>{o.sort((e,t)=>e.compareDocumentPosition(t)===4?-1:1),Pi.delete(o)})),Qe(()=>{if(s){var e=a?Li(o,e,n.checked):o.find(e=>e.checked)?.__value;i(e)}})}function Ii(e,t,n=t){Cn(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(je&&e.defaultChecked!==e.checked||wr(t)==null)&&n(e.checked),Fn(()=>{e.checked=!!t()})}function Li(e,t,n){for(var r=new Set,i=0;i<e.length;i+=1)e[i].checked&&r.add(e[i].__value);return n||r.delete(t),Array.from(r)}function Ri(e){var t=e.type;return t===`number`||t===`range`}function zi(e){return e===``?null:+e}function Bi(e,t){return e===t||e?.[te]===t}function Vi(e={},t,n,r){var i=Ge.r,a=nr;return Nn(()=>{var o,s;return Fn(()=>{o=s,s=r?.()||[],wr(()=>{Bi(n(...s),e)||(t(e,...s),o&&Bi(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&&Bi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Hi(e=!1){let t=Ge,n=t.l.u;if(!n)return;let r=()=>Tr(t.s);if(e){let e=0,n={},i=_t(()=>{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=()=>V(i)}n.b.length&&jn(()=>{Ui(t,r),m(n.b)}),kn(()=>{let e=wr(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&kn(()=>{Ui(t,r),m(n.a)})}function Ui(e,t){if(e.l.s)for(let t of e.l.s)V(t);t()}function Wi(e,t,n,r){var i=!Ue||(n&2)!=0,a=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=_t(r),V(u)):(l&&(l=!1,c=s?wr(r):r),c);let f;if(a){var p=te in e||ne 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&&_e(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?_t:bt)(()=>(v=!1,g()));a&&V(y);var b=nr;return(function(e,t){if(arguments.length>0){let n=t?V(y):i&&a?I(e):e;return F(y,n),v=!0,c!==void 0&&(c=n),e}return Zn&&v||b.f&16384?y.v:V(y)})}function Gi(e){Ge===null&&ue(`onMount`),Ue&&Ge.l!==null?Ki(Ge).m.push(e):kn(()=>{let t=wr(e);if(typeof t==`function`)return t})}function Ki(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var qi=U(`<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 Ji(e,t){var n=qi(),r=L(n),i=L(r),a=L(i),o=L(a,!0);j(a);var s=z(a);j(i);var c=z(i,2),l=L(c,!0);j(c),j(r);var u=z(r,2);oi(L(u),()=>t.children),j(u),j(n),B(()=>{G(o,t.icon),G(s,` ${t.title??``}`),G(l,t.description)}),W(e,n)}var Yi=U(`<p class="browser-msg">Loading…</p>`),Xi=U(`<p class="browser-msg browser-msg--error">Cannot read directory</p>`),Zi=U(`<p class="browser-msg">Empty directory</p>`),Qi=U(`<button type="button" class="browser-row browser-row--dir"><span>📁</span><span> </span></button>`),$i=U(`<span class="badge-added">Added</span>`),ea=U(`<button type="button" class="link-btn">+ Add</button>`),ta=U(`<div class="browser-row browser-row--file"><span class="browser-row-name"><span>📄</span><span> </span></span> <!></div>`),na=U(`<!> <!>`,1),ra=U(`<p class="field-hint" style="font-style:italic">No extra files added yet.</p>`),ia=U(`<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>`),aa=U(`<div class="extra-files-list"></div>`),oa=U(`<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 sa(e,t){qe(t,!0);let n=P(``),r=P(null),i=P(I([])),a=P(I([])),o=P(!1),s=P(!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){F(o,!0),F(s,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(n,t.current,!0),F(r,t.parent,!0),F(i,t.dirs,!0),F(a,t.files,!0)}catch{F(s,!0)}finally{F(o,!1)}}function d(){V(r)&&u(V(r))}async function f(e){if(t.extraFiles.includes(e))return;let r=[...t.extraFiles,e];await h(r),t.onchange(r),u(V(n))}async function p(e){let r=t.extraFiles.filter(t=>t!==e);await h(r),t.onchange(r),u(V(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},_=oa(),v=z(L(_),4),y=L(v),b=L(y),x=z(b,2),S=L(x,!0);j(x),j(y);var C=z(y,2),w=L(C),T=e=>{W(e,Yi())},E=e=>{W(e,Xi())},D=e=>{W(e,Zi())},ee=e=>{var n=na(),r=R(n);q(r,17,()=>V(i),Xr,(e,t)=>{var n=Qi(),r=z(L(n)),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>u(V(t).path)),W(e,n)}),q(z(r,2),17,()=>V(a),Xr,(e,n)=>{var r=ta(),i=L(r),a=z(L(i)),o=L(a,!0);j(a),j(i);var s=z(i,2),c=e=>{W(e,$i())},l=N(()=>t.extraFiles.includes(V(n).path)),u=e=>{var t=ea();H(`click`,t,()=>f(V(n).path)),W(e,t)};K(s,e=>{V(l)?e(c):e(u,-1)}),j(r),B(()=>G(o,V(n).name)),W(e,r)}),W(e,n)};K(w,e=>{V(o)?e(T):V(s)?e(E,1):V(i).length===0&&V(a).length===0?e(D,2):e(ee,-1)}),j(C),j(v);var O=z(v,4),k=e=>{W(e,ra())},te=e=>{var n=aa();q(n,21,()=>t.extraFiles,Xr,(e,n,r)=>{var i=ia(),a=L(i),o=L(a);o.disabled=r===0;var s=z(o,2);j(a);var c=z(a,2),u=L(c,!0);j(c);var d=z(c,2);j(i),B(e=>{s.disabled=r===t.extraFiles.length-1,J(c,`title`,V(n)),G(u,e)},[()=>l(V(n))]),H(`click`,o,()=>m(r,-1)),H(`click`,s,()=>m(r,1)),H(`click`,d,()=>p(V(n))),W(e,i)}),j(n),W(e,n)};return K(O,e=>{t.extraFiles.length===0?e(k):e(te,-1)}),j(_),B(e=>{b.disabled=!V(r),G(S,e)},[()=>l(V(n))]),H(`click`,b,d),W(e,_),Je(g)}Pr([`click`]);var ca=U(`<div class="swatch-wrap"><div class="swatch"></div> <input type="color" class="swatch-input"/></div>`),la=U(`<div class="edge-swatch-wrap"><div class="edge-swatch"></div> <button type="button" class="remove-swatch-btn">✕</button></div>`),ua=U(`<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 da(e,t){qe(t,!0);let n=Wi(t,`nodePalette`,15),r=Wi(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=P(`#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=V(c).toLowerCase();r().includes(e)||r([...r(),e])}function m(e){r().length<=1||r(r().filter((t,n)=>n!==e))}var h=ua(),g=R(h),_=L(g),v=z(L(_),2);j(_);var y=z(_,4);q(y,21,()=>o,Xr,(e,t,r)=>{let a=N(()=>n()[r]||i[V(t)].bg),o=N(()=>u(V(t),V(a)));var s=ca(),c=L(s),l=z(c,2);Di(l),j(s),B(()=>{J(s,`title`,i[V(t)].label),vi(c,`background:${V(a)??``};border-color:${V(o)??``}`),Oi(l,V(a))}),H(`input`,l,e=>{n(n()[r]=e.target.value.toLowerCase(),!0)}),W(e,s)}),j(y),j(g);var b=z(g,2),x=L(b),S=z(L(x),2);j(x);var C=z(x,4);q(C,21,r,Xr,(e,t,n)=>{var r=la(),i=L(r),a=z(i,2);j(r),B(()=>vi(i,`background:${V(t)??``}`)),H(`click`,a,()=>m(n)),W(e,r)}),j(C);var w=z(C,2),T=L(w);Di(T);var E=z(T,2);j(w),j(b),H(`click`,v,d),H(`click`,S,f),Ni(T,()=>V(c),e=>F(c,e)),H(`click`,E,p),W(e,h),Je()}Pr([`click`,`input`]);var fa=P(I({}));async function pa(e){try{let t=await fetch(`/i18n/${e||`en`}.json`);t.ok&&F(fa,await t.json(),!0)}catch{}}function Y(e,t){let n=V(fa)[e]===void 0?e:V(fa)[e];if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{${e}}`,r);return n}var ma=`living-documentation:persistent-toast`,ha=2600,ga=900*1e3,_a=new Map;function va(){return`toast-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function ya(){let e=document.getElementById(`workspaceToastStack`);if(e)return e;document.getElementById(`workspaceToast`)?.remove(),document.getElementById(`workspaceToastIcon`)?.remove(),document.getElementById(`workspaceToastMessage`)?.remove();let t=document.createElement(`div`);return t.id=`workspaceToastStack`,t.className=`workspace-toast-stack`,t.setAttribute(`role`,`status`),t.setAttribute(`aria-live`,`polite`),document.body.append(t),t}function ba(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return typeof t.id==`string`&&typeof t.message==`string`&&[`success`,`error`,`loading`].includes(String(t.state))&&(t.expiresAt===null||typeof t.expiresAt==`number`)&&(t.href===void 0||typeof t.href==`string`)&&(t.linkLabel===void 0||typeof t.linkLabel==`string`)}function xa(){let e=localStorage.getItem(ma);if(!e)return[];try{let t=JSON.parse(e);if(Array.isArray(t))return t.filter(ba);if(typeof t==`object`&&t&&!Array.isArray(t)){let e=t;if(typeof e.message==`string`&&[`success`,`error`,`loading`].includes(String(e.state))&&(e.expiresAt===null||typeof e.expiresAt==`number`))return[{id:va(),message:e.message,state:e.state,expiresAt:e.expiresAt}]}}catch{return[]}return[]}function Sa(e){e.length?localStorage.setItem(ma,JSON.stringify(e)):localStorage.removeItem(ma)}function Ca(e){let t=_a.get(e);t&&(clearTimeout(t),_a.delete(e))}function wa(e){Ca(e);let t=xa().filter(t=>t.id!==e);Sa(t),Oa(t),ka(t)}function Ta(e){return e===`loading`?`⟳`:e===`error`?`!`:`✓`}function Ea(e){let t=Date.now();return e.filter(e=>!e.expiresAt||e.expiresAt>t)}function Da(e){let t=document.createElement(`div`);t.className=`workspace-toast`,t.dataset.state=e.state,t.dataset.toastId=e.id;let n=document.createElement(`span`);n.className=`toast-icon`,n.setAttribute(`aria-hidden`,`true`),n.textContent=Ta(e.state);let r=document.createElement(`div`);r.className=`workspace-toast-body`;let i=document.createElement(`p`);if(i.className=`workspace-toast-message`,i.textContent=e.message,r.append(i),e.href){let t=document.createElement(`a`);t.className=`workspace-toast-link`,t.href=e.href,t.textContent=e.linkLabel||`Open`,r.append(t)}let a=document.createElement(`button`);return a.className=`workspace-toast-close`,a.type=`button`,a.setAttribute(`aria-label`,`Close notification`),a.textContent=`×`,a.addEventListener(`click`,()=>wa(e.id)),t.append(n,r,a),t}function Oa(e){let t=ya(),n=Ea(e);t.hidden=n.length===0;let r=new Set(n.map(e=>e.id));for(let e of Array.from(t.querySelectorAll(`[data-toast-id]`)))r.has(e.dataset.toastId??``)||e.remove();for(let e of n){let n=Array.from(t.querySelectorAll(`[data-toast-id]`)).find(t=>t.dataset.toastId===e.id);if(n){let t=n.querySelector(`.workspace-toast-message`);if(t&&t.textContent!==e.message&&(t.textContent=e.message),n.dataset.state!==e.state){n.dataset.state=e.state;let t=n.querySelector(`.toast-icon`);t&&(t.textContent=Ta(e.state))}let r=n.querySelector(`.workspace-toast-link`);if(e.href)if(r)r.href=e.href,r.textContent=e.linkLabel||`Open`;else{let t=document.createElement(`a`);t.className=`workspace-toast-link`,t.href=e.href,t.textContent=e.linkLabel||`Open`,n.querySelector(`.workspace-toast-body`)?.append(t)}else r&&r.remove()}else t.append(Da(e))}n.length!==e.length&&Sa(n)}function ka(e){for(let t of _a.keys())e.some(e=>e.id===t)||Ca(t);for(let t of e){if(Ca(t.id),!t.expiresAt)continue;let e=t.expiresAt-Date.now();if(e<=0){wa(t.id);continue}_a.set(t.id,window.setTimeout(()=>wa(t.id),e))}}function Aa(e){let t=Ea(xa()),n=t.findIndex(t=>t.id===e.id)>=0?t.map(t=>t.id===e.id?e:t):[...t,e];return Sa(n),Oa(n),ka(n),e.id}function ja(){let e=Ea(xa());Sa(e),Oa(e),ka(e)}function Ma(e,t=va()){let n=typeof t==`string`?{id:t}:t;return Aa({id:n.id??va(),message:e,state:`loading`,expiresAt:Date.now()+ga,href:n.href,linkLabel:n.linkLabel})}function Na(e,t=`success`,n=ha,r=va()){let i=typeof r==`string`?{id:r}:r;return Aa({id:i.id??va(),message:e,state:t,expiresAt:Date.now()+n,href:i.href,linkLabel:i.linkLabel})}var Pa=`/api/workspace`;async function Fa(){try{let e=await fetch(Pa,{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 Ia(e){try{let t=await fetch(Pa,{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 La(e){try{return await(await fetch(`${Pa}/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 Ra(e){try{return await(await fetch(`${Pa}/mcp-inventory`,{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 MCP inventory`}}}async function za(e,t){try{let n=await fetch(`${Pa}/run-agent-stream`,{method:`POST`,headers:{Accept:`application/x-ndjson, application/json`,"Content-Type":`application/json`},body:JSON.stringify(e)});if(!n.ok)return{ok:!1,error:await n.json().then(e=>typeof e?.error==`string`?e.error:`Agent run failed`).catch(()=>`Agent run failed`)};if(!n.body)return{ok:!1,error:`Agent stream is unavailable`};let r=new TextDecoder,i=n.body.getReader(),a=``,o=``,s=``,c=e=>{if(!e.trim())return;let n=JSON.parse(e);t(n),n.type===`final`&&typeof n.content==`string`&&(o=n.content),n.type===`error`&&(s=n.message||`Agent run failed`)};for(;;){let{value:e,done:t}=await i.read();if(t)break;a+=r.decode(e,{stream:!0});let n=a.split(`
3
3
  `);a=n.pop()??``;for(let e of n)c(e),await new Promise(e=>setTimeout(e,0))}return a+=r.decode(),c(a),s?{ok:!1,error:s}:o?{ok:!0,content:o}:{ok:!1,error:`Agent did not produce a response`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Agent run failed`}}}async function Ba(e,t,n){try{let r=await fetch(`${Pa}/run-agent-document-stream`,{method:`POST`,headers:{Accept:`application/x-ndjson, application/json`,"Content-Type":`application/json`},body:JSON.stringify({agentId:e,userInput:t})});if(!r.ok)return{ok:!1,error:await r.json().then(e=>typeof e?.error==`string`?e.error:`Agent run failed`).catch(()=>`Agent run failed`)};if(!r.body)return{ok:!1,error:`Agent stream is unavailable`};let i=new TextDecoder,a=r.body.getReader(),o=``,s,c=``,l=!1,u=e=>{if(!e.trim())return;let t=JSON.parse(e);n(t),t.type===`document`&&t.document&&(s=t.document),t.type===`error`&&(c=t.message||`Agent run failed`,l=!0)};for(;;){let{value:e,done:t}=await a.read();if(t)break;o+=i.decode(e,{stream:!0});let n=o.split(`
4
4
  `);o=n.pop()??``;for(let e of n)u(e),await new Promise(e=>setTimeout(e,0))}return o+=i.decode(),u(o),s?{ok:s.ok,document:s,error:l?c:void 0}:c?{ok:!1,error:c}:{ok:!1,error:`Agent did not produce a response`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:`Agent run failed`}}}async function Va(e){try{let t=await fetch(`${Pa}/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 Ha=U(`<p class="agents-dropdown-empty svelte-f11yds"> </p>`),Ua=U(`<span class="agents-item-badge svelte-f11yds"> </span>`),Wa=U(`<span class="agents-item-badge agents-item-badge--input svelte-f11yds"> </span>`),Ga=U(`<button type="button" role="menuitem"><span class="agents-item-name svelte-f11yds"> </span> <!></button>`),Ka=U(`<div class="agents-group svelte-f11yds"><button type="button" class="agents-group-toggle svelte-f11yds"><span class="agents-group-label svelte-f11yds"> </span> <span>›</span></button> <!></div>`),qa=U(`<div class="agents-backdrop svelte-f11yds"></div> <div class="agents-dropdown svelte-f11yds" role="menu"><!></div>`,1),Ja=U(`<div class="confirm-overlay agents-modal-overlay svelte-f11yds"><section class="confirm-dialog" role="dialog" aria-modal="true"><h2> </h2> <p class="confirm-message"> </p> <div class="field-group" style="margin-top:1rem"><label class="field-label" for="agents-menu-input"> </label> <textarea id="agents-menu-input" class="field-input"></textarea></div> <footer class="confirm-actions"><button class="secondary-button" type="button"> </button> <button class="btn-primary" type="button"> </button></footer></section></div>`),Ya=U(`<button type="button" class="ghost-button" aria-haspopup="true">Agents</button> <!> <!>`,1);function Xa(e,t){qe(t,!0);let n=600*1e3,r=P(!1),i=P(I([])),a=P(!1),o=P(!1),s=P(I(new Set)),c=P(null),l=P(``),u=P(0),d=P(0),f=null;function p(e){return document.body.appendChild(e),{destroy(){e.parentNode&&e.parentNode.removeChild(e)}}}function m(){if(!f)return;let e=f.getBoundingClientRect();F(u,e.bottom+6),F(d,window.innerWidth-e.right)}function h(e){let t=e.provider;return!(!t||!t.config?.model||!e.config?.systemPrompt||e.config?.requiresUserInput&&!e.config?.userInputDescription?.trim())}async function g(){if(!(V(a)||V(o))){F(o,!0);try{let e=await fetch(`/api/workspace`,{headers:{Accept:`application/json`}});if(!e.ok)return;let t=await e.json(),n=Array.isArray(t.entities)?t.entities:[],r=new Map(n.map(e=>[e.id,e])),o=n.filter(e=>e.kind===`llm`),s=n.filter(e=>e.kind===`agent`).map(e=>({...e,provider:r.get(e.parentId??``)}));F(i,o.map(e=>({llm:e,agents:s.filter(t=>t.parentId===e.id)})).filter(e=>e.agents.length>0),!0),F(a,!0)}catch{}finally{F(o,!1)}}}function _(){V(r)||m(),F(r,!V(r)),V(r)&&g()}function v(e){let t=new Set(V(s));t.has(e)?t.delete(e):t.add(e),F(s,t,!0)}function y(){F(r,!1)}function b(e){h(e)&&(y(),e.config?.requiresUserInput?(F(c,e,!0),F(l,``)):w(e.id,``))}function x(){F(c,null),F(l,``)}async function S(){if(!V(c)||!V(l).trim())return;let e=V(c).id,t=V(l);F(c,null),F(l,``),await w(e,t)}function C(e,t,n){let r=e.turn==null?``:String(e.turn);switch(e.type){case`model_call`:return Y(`agents.status.model`,{agent:t,turn:r,model:n});case`tool_call`:return Y(`agents.status.tool`,{agent:t,turn:r,tool:e.toolName??``});case`tool_result`:return Y(`agents.status.tool_done`,{agent:t,turn:r,tool:e.toolName??``,detail:e.detail??``});case`fallback`:return Y(`agents.status.fallback`,{agent:t,turn:r});default:return null}}async function w(e,t){let r=V(i).flatMap(e=>e.agents).find(t=>t.id===e),a=r?.label??``,o=r?.config?.model||r?.provider?.config?.model||``,s=o.includes(`/`)?o.split(`/`).pop()??o:o,c=Ma(`${Y(`agents.loading`)} ${a}`.trim()),l=[],u=`${Y(`agents.loading`)} ${a}`.trim(),d=!1,f=async()=>{if(!d){for(d=!0;l.length>0;){let e=l.shift();Ma(e,c),u=e,await new Promise(e=>setTimeout(e,750))}d=!1}},p=e=>{e!==(l.length>0?l[l.length-1]:u)&&(l.push(e),f())};try{let r=await Ba(e,t,e=>{let t=C(e,a,s);if(t)p(t);else if(e.type===`final`&&e.content){let t=e.content.replace(/[\n\r]+/g,` `).trim();p(t.length>120?`${t.slice(0,120)}…`:t)}});for(;d||l.length>0;)await new Promise(e=>setTimeout(e,750/2));r.ok&&r.document?(Na(`${Y(`agents.success`)} ${r.document.filename}`.trim(),`success`,n,{id:c,href:`/?doc=${encodeURIComponent(r.document.id)}`,linkLabel:Y(`agents.open_document`)}),window.dispatchEvent(new CustomEvent(`ld:documents-changed`))):Na(r.error??Y(`agents.run_failed`),`error`,n,r.document?.id?{id:c,href:`/?doc=${encodeURIComponent(r.document.id)}`,linkLabel:Y(`agents.open_document`)}:c)}catch(e){Na(e instanceof Error?e.message:Y(`agents.run_failed`),`error`,n,c)}}var T=Ya(),E=R(T);Vi(E,e=>f=e,()=>f);var D=z(E,2),ee=e=>{var t=qa(),n=R(t);si(n,e=>p?.(e));var r=z(n,2),a=L(r),c=e=>{var t=Ha(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},l=e=>{var t=Ha(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`agents.empty`)]),W(e,t)},f=e=>{var t=Wr();q(R(t),17,()=>V(i),Xr,(e,t)=>{let n=N(()=>V(s).has(V(t).llm.id));var r=Ka(),i=L(r),a=L(i),o=L(a,!0);j(a);var c=z(a,2);let l;j(i);var u=z(i,2),d=e=>{var n=Wr();q(R(n),17,()=>V(t).agents,Xr,(e,t)=>{let n=N(()=>h(V(t)));var r=Ga();let i;var a=L(r),o=L(a,!0);j(a);var s=z(a,2),c=e=>{var t=Ua(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`agents.not_ready`)]),W(e,t)},l=e=>{var t=Wa(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`agents.requires_input`)]),W(e,t)};K(s,e=>{V(n)?V(t).config?.requiresUserInput&&e(l,1):e(c)}),j(r),B(()=>{i=gi(r,1,`agents-item svelte-f11yds`,null,i,{"agents-item--disabled":!V(n)}),r.disabled=!V(n),G(o,V(t).label)}),H(`click`,r,()=>b(V(t))),W(e,r)}),W(e,n)};K(u,e=>{V(n)&&e(d)}),j(r),B(()=>{J(i,`aria-expanded`,V(n)),G(o,V(t).llm.label),l=gi(c,1,`agents-group-chevron svelte-f11yds`,null,l,{"agents-group-chevron--open":V(n)})}),H(`click`,i,()=>v(V(t).llm.id)),W(e,r)}),W(e,t)};K(a,e=>{V(o)?e(c):V(i).length===0?e(l,1):e(f,-1)}),j(r),si(r,e=>p?.(e)),B(()=>vi(r,`top:${V(u)??``}px;right:${V(d)??``}px`)),H(`click`,n,y),W(e,t)};K(D,e=>{V(r)&&e(ee)});var O=z(D,2),k=e=>{var t=Ja(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var s=z(a,2),u=L(s),d=L(u,!0);j(u);var f=z(u,2);yn(f),J(f,`rows`,4),j(s);var m=z(s,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=L(_,!0);j(_),j(m),j(n),j(t),si(t,e=>p?.(e)),B((e,t,n,r,a,s)=>{G(i,V(c).label),G(o,e),G(d,t),J(f,`placeholder`,n),G(g,r),_.disabled=a,G(v,s)},[()=>V(c).config?.userInputDescription?.trim()||Y(`agents.input_hint`),()=>Y(`agents.input_title`),()=>Y(`agents.input_hint`),()=>Y(`common.cancel`),()=>!V(l).trim(),()=>Y(`agents.run`)]),H(`click`,t,e=>{e.target===e.currentTarget&&x()}),Ni(f,()=>V(l),e=>F(l,e)),H(`click`,h,x),H(`click`,_,S),W(e,t)};K(O,e=>{V(c)&&e(k)}),B(()=>J(E,`aria-expanded`,V(r))),H(`click`,E,_),W(e,T),Je()}Pr([`click`]);var Za=U(`<a class="ghost-button"> </a>`),Qa=U(`<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 $a(e,t){qe(t,!0);let n=Wi(t,`nav`,19,()=>[]),r=window.location.pathname,i=N(()=>[...n(),{label:`Workspace`,href:`/workspace`},{label:`Blueprint`,href:`/blueprint`},{label:`Diagram`,href:`/diagram`},{label:`Files`,href:`/files`},{label:`Survival Kit`,href:`/survival-kit`},{label:`AI Context`,href:`/context`},{label:`Admin`,href:`/admin`},{label:`Home`,href:`/`}].filter(e=>e.href!==r));function a(e,t){e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),history.pushState(null,``,t),window.dispatchEvent(new PopStateEvent(`popstate`)))}var o=Qa(),s=L(o),c=z(L(s),2),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d,!0);j(d),j(c),j(s);var p=z(s,2),m=e=>{var n=Wr();oi(R(n),()=>t.children),W(e,n)};K(p,e=>{t.children&&e(m)});var h=z(p,2),g=L(h);q(g,17,()=>V(i),Xr,(e,t)=>{var n=Za(),r=L(n,!0);j(n),B(()=>{J(n,`href`,V(t).href),G(r,V(t).label)}),H(`click`,n,e=>a(e,V(t).href)),W(e,n)});var _=z(g,2);Xa(_,{});var v=z(_,2),y=e=>{var n=Wr();oi(R(n),()=>t.actions),W(e,n)};K(v,e=>{t.actions&&e(y)}),j(h),j(o),B(()=>{G(u,t.title),G(f,t.subtitle)}),W(e,o),Je()}Pr([`click`]);var eo=U(`<span> </span>`),to=U(`<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),no=U(`<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>`),ro=U(`<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),io=U(`<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),ao=U(`<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),oo=U(`<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),so=U(`<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>`),co=U(`<li class="llm-host-chip"><span class="llm-host-chip__url"> </span> <button type="button" class="llm-host-chip__remove">×</button></li>`),lo=U(`<ul class="llm-host-list"></ul>`),uo=U(`<div class="field-group"><label class="field-label" for="field-llm-host"> </label> <div class="llm-host-add"><input id="field-llm-host" type="text" class="field-input field-input--mono" placeholder="https://api.deepseek.com"/> <button type="button" class="llm-host-btn"> </button></div> <p class="field-hint"> </p> <!></div>`),fo=U(`<div class="field-group"><label class="field-label" for="field-git-push-every"> </label> <input id="field-git-push-every" type="number" min="1" max="1000" step="1" class="field-input"/> <p class="field-hint"> </p></div>`),po=U(`<div class="field-group"><label class="field-label" for="field-git-commit-message"> </label> <input id="field-git-commit-message" type="text" class="field-input field-input--mono" placeholder="docs: update living documentation"/> <p class="field-hint"> </p></div> <fieldset class="git-push-field"><legend> </legend> <label class="radio-card"><input type="radio" name="gitPushMode"/> <span><strong> </strong> <small> </small></span></label> <label class="radio-card"><input type="radio" name="gitPushMode"/> <span><strong> </strong> <small> </small></span></label></fieldset> <!>`,1),mo=U(`<fieldset class="git-mode-field"><legend> </legend> <label class="radio-card"><input type="radio" name="gitMode"/> <span><strong> </strong> <small> </small></span></label> <label class="radio-card"><input type="radio" name="gitMode"/> <span><strong> </strong> <small> </small></span></label> <label class="radio-card"><input type="radio" name="gitMode"/> <span><strong> </strong> <small> </small></span></label></fieldset> <!>`,1),ho=U(`<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 id="git-integration" class="admin-anchor"><!></div> <!></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 go(e,t){qe(t,!0);let n=[],r=[],i=P(``),a=P(``),o=P(``),s=P(`system`),c=P(`en`),l=P(``),u=P(``),d=P(!1),f=P(!1),p=P(400),m=P(!1),h=P(!1),g=P(!1),_=P(!1),v=P(!1),y=P(``),b=P(I([])),x=P(I([])),S=P(I([])),C=P(I([])),w=P(``),T=P(!1),E=P(`unconfigured`),D=P(`never`),ee=P(1),O=P(`docs: update living documentation`);function k(){let e=V(w).trim();if(!e)return;let t;try{let n=new URL(e);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw Error(`protocol`);t=n.origin}catch{me(`Enter a valid http(s) URL, e.g. https://api.deepseek.com`,`error`);return}V(C).includes(t)||F(C,[...V(C),t],!0),F(w,``)}function te(e){F(C,V(C).filter(t=>t!==e),!0)}let ne=P(null),re=null,ie=P(null),A=[`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 ae(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 oe(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 se(e){return e.split(`_`).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)}function ce(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:ae(e),category:r,title:se(n[3]),match:!0}}else if(t.hasCategory)return{date:null,category:n[1],title:se(n[2]),match:!0}}}if(t.dateOnly){let n=e.match(t.dateOnly);if(n)return{date:ae(n[1]),category:`General`,title:se(n[2]),match:!0}}return{date:null,category:`General`,title:e.replace(`.md`,``),match:!1}}let le=N(()=>A.map(e=>({filename:e,...ce(e,oe(V(l)))})));function ue(e){return/^([/\\]|[a-zA-Z]:[\\/]|~)/.test(e)}function de(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 fe(){try{let e=await fetch(`/api/config`).then(e=>e.json());F(i,e.docsFolder||``,!0),F(a,e.port||``,!0),F(o,e.title||``,!0),F(s,e.theme||`system`,!0),F(c,e.language||`en`,!0),await pa(V(c)),F(l,e.filenamePattern||``,!0),F(u,e.docsFolder&&e.sourceRoot?de(e.docsFolder,e.sourceRoot):``,!0),F(d,!!e.exclusiveFolderExpansion),F(f,!!e.exclusiveCategoryExpansion),F(p,typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,!0),F(m,!!e.markdownSoftBreaks),F(h,!!e.imageRoundedCorners),F(g,!!e.imageCentered),F(_,!!e.imageBorder),F(v,!!e.codeBlockLightTheme),F(y,(e.blockedFileExtensions||[]).join(` `),!0),F(b,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`],n={"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`};F(x,Array.isArray(e.diagramNodePalette)&&e.diagramNodePalette.length?t.map((t,r)=>e.diagramNodePalette[r]||n[t]):t.map(e=>n[e]),!0),F(S,Array.isArray(e.diagramEdgePalette)&&e.diagramEdgePalette.length?[...e.diagramEdgePalette]:[`#ffffff`,`#a8a29e`,`#374151`,`#3b82f6`,`#14b8a6`,`#22c55e`,`#f97316`,`#ef4444`,`#a855f7`],!0),F(C,Array.isArray(e.llmModelsNoV1Hosts)?[...e.llmModelsNoV1Hosts]:[],!0),F(T,!!e.debugAgents);let r=e.gitIntegration||{};F(E,r.mode===`disabled`||r.mode===`enabled`?r.mode:`unconfigured`,!0),F(D,r.pushMode===`everyNCommits`?`everyNCommits`:`never`,!0),F(ee,typeof r.pushEveryCommits==`number`?r.pushEveryCommits:1,!0),F(O,typeof r.commitMessage==`string`&&r.commitMessage.trim()?r.commitMessage:`docs: update living documentation`,!0),V(ie).loadBrowse(e.docsFolder||`/`)}catch{me(`Failed to load configuration.`,`error`)}}async function pe(e){e.preventDefault();let t=V(l).trim();if(t){let e=(t.match(/\[Category\]/gi)||[]).length;if(e===0){me(`Pattern must include [Category].`,`error`);return}if(e>1){me(`Pattern must include [Category] only once.`,`error`);return}}if(V(u)!==``&&ue(V(u))){me(`Source root must be a relative path.`,`error`);return}let n=V(y).split(/[\s,]+/).map(e=>e.trim().replace(/^\.+/,``).toLowerCase()).filter(e=>/^[a-z0-9]+$/.test(e)),r={title:V(o),theme:V(s),language:V(c),filenamePattern:t,exclusiveFolderExpansion:V(d),exclusiveCategoryExpansion:V(f),codeBlockMaxHeight:Math.max(0,Math.min(5e3,V(p)||0)),markdownSoftBreaks:V(m),imageRoundedCorners:V(h),imageCentered:V(g),imageBorder:V(_),codeBlockLightTheme:V(v),diagramNodePalette:[...V(x)],diagramEdgePalette:[...V(S)],sourceRoot:V(u)===``?null:V(u),blockedFileExtensions:n,llmModelsNoV1Hosts:[...V(C)],debugAgents:V(T),gitIntegration:{mode:V(E),pushMode:V(D),pushEveryCommits:Math.max(1,Math.min(1e3,V(ee)||1)),commitMessage:V(O).trim()||`docs: update living documentation`}};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());me(`Settings saved.`,`ok`)}catch(e){me(`Save failed: `+(e instanceof Error?e.message:String(e)),`error`)}}function me(e,t){F(ne,{text:e,type:t},!0),re&&clearTimeout(re),t===`ok`&&(re=window.setTimeout(()=>{F(ne,null)},3e3))}async function he(){let e=window.location.hash.slice(1);e&&(await xr(),requestAnimationFrame(()=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})}))}Gi(()=>{fe(),he();let e=()=>{he()};return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)});var ge=ho(),_e=L(ge);{let e=N(()=>Y(`admin.title`)),t=N(()=>Y(`admin.config.title`));$a(_e,{get title(){return V(e)},get subtitle(){return V(t)}})}var ve=z(_e,2),ye=L(ve),be=L(ye),xe=L(be),Se=L(xe),Ce=L(Se),we=L(Ce,!0);j(Ce);var Te=z(Ce,2),Ee=L(Te,!0);j(Te),j(Se);var De=z(Se,2),Oe=L(De),ke=e=>{var t=eo(),n=L(t,!0);j(t),B(()=>{gi(t,1,`save-msg save-msg--${V(ne).type??``}`),G(n,V(ne).text)}),W(e,t)};K(Oe,e=>{V(ne)&&e(ke)});var Ae=z(Oe,2),je=L(Ae,!0);j(Ae),j(De),j(xe),j(be);var Me=z(be,2),Ne=L(Me);{let e=N(()=>Y(`admin.section.general.title`)),t=N(()=>Y(`admin.section.general.desc`));Ji(Ne,{icon:`🌐`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=to(),r=R(n),l=L(r),u=L(l),d=L(u,!0);j(u);var f=z(u,2),p=L(f,!0);j(f),j(l);var m=z(l,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=L(_,!0);j(_),j(m),j(r);var y=z(r,2),b=L(y),x=L(b,!0);j(b);var S=z(b,2);Di(S);var C=z(S,2),w=L(C,!0);j(C),j(y);var T=z(y,2),E=L(T),D=L(E,!0);j(E);var ee=z(E,2),O=L(ee),k=L(O,!0);j(O),O.value=O.__value=`system`;var te=z(O),ne=L(te,!0);j(te),te.value=te.__value=`light`;var re=z(te),ie=L(re,!0);j(re),re.value=re.__value=`dark`,j(ee);var A=z(ee,2),ae=L(A,!0);j(A),j(T);var oe=z(T,2),se=L(oe),ce=L(se,!0);j(se);var le=z(se,2),ue=L(le),de=L(ue,!0);j(ue),ue.value=ue.__value=`en`;var fe=z(ue),pe=L(fe,!0);j(fe),fe.value=fe.__value=`fr`,j(le);var me=z(le,2),he=L(me,!0);j(me),j(oe),B((e,t,n,r,o,s,c,l,u,f,m,h,_,y)=>{G(d,e),G(p,V(i)||`—`),G(g,t),G(v,V(a)||`—`),G(x,n),J(S,`placeholder`,r),G(w,o),G(D,s),G(k,c),G(ne,l),G(ie,u),G(ae,f),G(ce,m),G(de,h),G(pe,_),G(he,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`)]),Ni(S,()=>V(o),e=>F(o,e)),xi(ee,()=>V(s),e=>F(s,e)),H(`change`,le,()=>pa(V(c))),xi(le,()=>V(c),e=>F(c,e)),W(e,n)},$$slots:{default:!0}})}var Pe=z(Ne,2);{let e=N(()=>Y(`admin.section.filename.title`)),t=N(()=>Y(`admin.section.filename.desc`));Ji(Pe,{icon:`📝`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=ro(),r=R(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2);Di(o);var s=z(o,2),c=L(s),u=z(c),d=L(u,!0);j(u),j(s),j(r);var f=z(r,2),p=L(f),m=L(p,!0);j(p);var h=z(p,2),g=L(h,!0);j(h);var _=z(h,2);q(_,21,()=>V(le),Xr,(e,t)=>{var n=no(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(o);var d=z(o,2),f=L(d),p=L(f,!0);j(f);var m=z(f,2),h=L(m,!0);j(m),j(d);var g=z(d,2),_=L(g),v=L(_,!0);j(_);var y=z(_,2),b=L(y,!0);j(y),j(g),j(a),j(n),B((e,n,r,a)=>{G(i,V(t).filename),G(c,e),gi(l,1,ui(V(t).date?`pattern-value--date`:`pattern-value--none`)),G(u,n),G(p,r),G(h,V(t).category),G(v,a),G(b,V(t).title)},[()=>Y(`admin.pattern.col_date`),()=>V(t).date||Y(`admin.pattern.col_none`),()=>Y(`admin.pattern.col_category`),()=>Y(`admin.pattern.col_title`)]),W(e,n)}),j(_),j(f),B((e,t,n,r,i)=>{G(a,e),J(o,`placeholder`,t),G(c,`${n??``} `),G(d,(V(l)||`YYYY_MM_DD_HH_mm_[Category]_title`)+`.md`),G(m,r),G(g,i)},[()=>Y(`admin.pattern.label`),()=>Y(`admin.pattern.placeholder`),()=>Y(`admin.pattern.hint`),()=>Y(`admin.pattern.preview_title`),()=>Y(`admin.pattern.preview_desc`)]),Ni(o,()=>V(l),e=>F(l,e)),W(e,n)},$$slots:{default:!0}})}var Fe=z(Pe,2);{let e=N(()=>Y(`admin.section.source.title`)),t=N(()=>Y(`admin.section.source.desc`));Ji(Fe,{icon:`📂`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=io(),r=R(n),a=L(r),o=L(a,!0);j(a);var s=z(a,2);Di(s);var c=z(s,2),l=L(c,!0);j(c),j(r),Vi(sa(z(r,2),{get docsFolder(){return V(i)},get extraFiles(){return V(b)},onchange:e=>F(b,e,!0)}),e=>F(ie,e,!0),()=>V(ie)),B((e,t)=>{G(o,e),G(l,t)},[()=>Y(`admin.server_info.source_root`),()=>Y(`admin.server_info.source_root_hint`)]),Ni(s,()=>V(u),e=>F(u,e)),W(e,n)},$$slots:{default:!0}})}var Ie=z(Fe,2);{let e=N(()=>Y(`admin.section.sidebar.title`)),t=N(()=>Y(`admin.section.sidebar.desc`));Ji(Ie,{icon:`🗂️`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=ao(),r=R(n),i=L(r),a=L(i);Di(a);var o=z(a,2),s=L(o,!0);j(o),j(i);var c=z(i,2),l=L(c,!0);j(c),j(r);var u=z(r,2),p=L(u),m=L(p);Di(m);var h=z(m,2),g=L(h,!0);j(h),j(p);var _=z(p,2),v=L(_,!0);j(_),j(u),B((e,t,n,r)=>{G(s,e),G(l,t),G(g,n),G(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`)]),Ii(a,()=>V(d),e=>F(d,e)),Ii(m,()=>V(f),e=>F(f,e)),W(e,n)},$$slots:{default:!0}})}var Le=z(Ie,2);{let e=N(()=>Y(`admin.section.markdown.title`)),t=N(()=>Y(`admin.section.markdown.desc`));Ji(Le,{icon:`✍️`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=oo(),r=R(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2);Di(o);var s=z(o,2),c=L(s,!0);j(s),j(r);var l=z(r,2),u=L(l),d=L(u);Di(d);var f=z(d,2),y=L(f,!0);j(f),j(u);var b=z(u,2);ai(b,()=>Y(`admin.appearance.soft_breaks_hint`),!0),j(b),j(l);var x=z(l,2),S=L(x),C=L(S);Di(C);var w=z(C,2),T=L(w,!0);j(w),j(S);var E=z(S,2),D=L(E,!0);j(E),j(x);var ee=z(x,2),O=L(ee),k=L(O);Di(k);var te=z(k,2),ne=L(te,!0);j(te),j(O);var re=z(O,2),ie=L(re,!0);j(re),j(ee);var A=z(ee,2),ae=L(A),oe=L(ae);Di(oe);var se=z(oe,2),ce=L(se,!0);j(se),j(ae);var le=z(ae,2),ue=L(le,!0);j(le),j(A);var de=z(A,2),fe=L(de),pe=L(fe);Di(pe);var me=z(pe,2),he=L(me,!0);j(me),j(fe);var ge=z(fe,2),_e=L(ge,!0);j(ge),j(de),B((e,t,n,r,i,o,s,l,u,d,f)=>{G(a,e),G(c,t),G(y,n),G(T,r),G(D,i),G(ne,o),G(ie,s),G(ce,l),G(ue,u),G(he,d),G(_e,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`)]),Ni(o,()=>V(p),e=>F(p,e)),Ii(d,()=>V(m),e=>F(m,e)),Ii(C,()=>V(h),e=>F(h,e)),Ii(k,()=>V(g),e=>F(g,e)),Ii(oe,()=>V(_),e=>F(_,e)),Ii(pe,()=>V(v),e=>F(v,e)),W(e,n)},$$slots:{default:!0}})}var Re=z(Le,2);{let e=N(()=>Y(`admin.section.files.title`)),t=N(()=>Y(`admin.files.description`));Ji(Re,{icon:`📎`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=so(),r=L(n),i=L(r,!0);j(r);var a=z(r,2);yn(a),J(a,`rows`,3);var o=z(a,2),s=L(o,!0);j(o),j(n),B((e,t)=>{G(i,e),G(s,t)},[()=>Y(`admin.files.blocked_label`),()=>Y(`admin.files.hint`)]),Ni(a,()=>V(y),e=>F(y,e)),W(e,n)},$$slots:{default:!0}})}var ze=z(Re,2);{let e=N(()=>Y(`admin.section.diagram.title`)),t=N(()=>Y(`admin.section.diagram.desc`));Ji(ze,{icon:`🎨`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{da(e,{get nodePalette(){return V(x)},set nodePalette(e){F(x,e,!0)},get edgePalette(){return V(S)},set edgePalette(e){F(S,e,!0)}})},$$slots:{default:!0}})}var Be=z(ze,2);{let e=N(()=>Y(`admin.section.llm.title`)),t=N(()=>Y(`admin.section.llm.desc`));Ji(Be,{icon:`🤖`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=uo(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a);Di(o);var s=z(o,2),c=L(s,!0);j(s),j(a);var l=z(a,2),u=L(l,!0);j(l);var d=z(l,2),f=e=>{var t=lo();q(t,20,()=>V(C),e=>e,(e,t)=>{var n=co(),r=L(n),i=L(r,!0);j(r);var a=z(r,2);j(n),B(e=>{G(i,t),J(a,`aria-label`,e)},[()=>Y(`admin.llm.remove`)]),H(`click`,a,()=>te(t)),W(e,n)}),j(t),W(e,t)};K(d,e=>{V(C).length&&e(f)}),j(n),B((e,t,n)=>{G(i,e),G(c,t),G(u,n)},[()=>Y(`admin.llm.no_v1_label`),()=>Y(`admin.llm.add`),()=>Y(`admin.llm.no_v1_hint`)]),H(`keydown`,o,e=>{e.key===`Enter`&&(e.preventDefault(),k())}),Ni(o,()=>V(w),e=>F(w,e)),H(`click`,s,k),W(e,n)},$$slots:{default:!0}})}var Ve=z(Be,2),He=L(Ve);{let e=N(()=>Y(`admin.section.git.title`)),t=N(()=>Y(`admin.section.git.desc`));Ji(He,{icon:`⑂`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var i=mo(),a=R(i),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c);Di(l),l.value=l.__value=`unconfigured`;var u=z(l,2),d=L(u),f=L(d,!0);j(d);var p=z(d,2),m=L(p,!0);j(p),j(u),j(c);var h=z(c,2),g=L(h);Di(g),g.value=g.__value=`disabled`;var _=z(g,2),v=L(_),y=L(v,!0);j(v);var b=z(v,2),x=L(b,!0);j(b),j(_),j(h);var S=z(h,2),C=L(S);Di(C),C.value=C.__value=`enabled`;var w=z(C,2),T=L(w),k=L(T,!0);j(T);var te=z(T,2),ne=L(te,!0);j(te),j(w),j(S),j(a);var re=z(a,2),ie=e=>{var t=po(),n=R(t),i=L(n),a=L(i,!0);j(i);var o=z(i,2);Di(o);var s=z(o,2),c=L(s,!0);j(s),j(n);var l=z(n,2),u=L(l),d=L(u,!0);j(u);var f=z(u,2),p=L(f);Di(p),p.value=p.__value=`never`;var m=z(p,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=L(_,!0);j(_),j(m),j(f);var y=z(f,2),b=L(y);Di(b),b.value=b.__value=`everyNCommits`;var x=z(b,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2),T=L(w,!0);j(w),j(x),j(y),j(l);var E=z(l,2),k=e=>{var t=fo(),n=L(t),r=L(n,!0);j(n);var i=z(n,2);Di(i);var a=z(i,2),o=L(a,!0);j(a),j(t),B((e,t)=>{G(r,e),G(o,t)},[()=>Y(`admin.git.push_every_commits_label`),()=>Y(`admin.git.push_every_commits_hint`)]),Ni(i,()=>V(ee),e=>F(ee,e)),W(e,t)};K(E,e=>{V(D)===`everyNCommits`&&e(k)}),B((e,t,n,r,i,o,s)=>{G(a,e),G(c,t),G(d,n),G(g,r),G(v,i),G(C,o),G(T,s)},[()=>Y(`admin.git.commit_message_label`),()=>Y(`admin.git.commit_message_hint`),()=>Y(`admin.git.push_label`),()=>Y(`admin.git.push_never`),()=>Y(`admin.git.push_never_hint`),()=>Y(`admin.git.push_every`),()=>Y(`admin.git.push_every_hint`)]),Ni(o,()=>V(O),e=>F(O,e)),Fi(r,[],p,()=>V(D),e=>F(D,e)),Fi(r,[],b,()=>V(D),e=>F(D,e)),W(e,t)};K(re,e=>{V(E)===`enabled`&&e(ie)}),B((e,t,n,r,i,a,o)=>{G(s,e),G(f,t),G(m,n),G(y,r),G(x,i),G(k,a),G(ne,o)},[()=>Y(`admin.git.mode_label`),()=>Y(`admin.git.mode_unconfigured`),()=>Y(`admin.git.mode_unconfigured_hint`),()=>Y(`admin.git.mode_disabled`),()=>Y(`admin.git.mode_disabled_hint`),()=>Y(`admin.git.mode_enabled`),()=>Y(`admin.git.mode_enabled_hint`)]),Fi(n,[],l,()=>V(E),e=>F(E,e)),Fi(n,[],g,()=>V(E),e=>F(E,e)),Fi(n,[],C,()=>V(E),e=>F(E,e)),W(e,i)},$$slots:{default:!0}})}j(Ve);var Ue=z(Ve,2);{let e=N(()=>Y(`admin.section.developer.title`)),t=N(()=>Y(`admin.section.developer.desc`));Ji(Ue,{icon:`🛠️`,get title(){return V(e)},get description(){return V(t)},children:(e,t)=>{var n=ao(),r=R(n),i=L(r),a=z(L(i),2),o=L(a,!0);j(a),j(i);var s=z(i,2),c=L(s,!0);j(s),j(r);var l=z(r,2),u=L(l),d=L(u);Di(d);var f=z(d,2),p=L(f,!0);j(f),j(u);var m=z(u,2),h=L(m,!0);j(m),j(l),B((e,t,n,r)=>{G(o,e),G(c,t),G(p,n),G(h,r)},[()=>Y(`admin.appearance.debug_label`),()=>Y(`admin.appearance.debug_hint`),()=>Y(`admin.developer.debug_agents_label`),()=>Y(`admin.developer.debug_agents_hint`)]),Ii(d,()=>V(T),e=>F(T,e)),W(e,n)},$$slots:{default:!0}})}j(Me),j(ye);var We=z(ye,2),Ge=L(We),Ke=L(Ge),Ye=z(L(Ke),2),Xe=L(Ye),Ze=L(Xe,!0);j(Xe);var Qe=z(Xe,2),$e=L(Qe,!0);j(Qe),j(Ye),j(Ke);var et=z(Ke,2),tt=L(et);ai(tt,()=>Y(`admin.license.body`),!0),j(tt);var nt=z(tt,2),M=L(nt),rt=z(L(M));j(M);var it=z(M,2),at=z(L(it));j(it),j(nt),j(et),j(Ge),j(We),j(ve),j(ge),B((e,t,n,r,i,a,o)=>{G(we,e),G(Ee,t),G(je,n),G(Ze,r),G($e,i),G(rt,` ${a??``}`),G(at,` ${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`)]),Nr(`submit`,ye,pe),W(e,ge),Je()}Pr([`change`,`keydown`,`click`]);var _o=U(`<button class="tool-button" type="button"></button>`),vo=U(`<input class="cluster-tag-input"/>`),yo=U(`<button class="cluster-tag-label" type="button"> </button>`),bo=U(`<button class="cluster-tag-add" type="button">+</button> <button class="cluster-tag-remove" type="button">−</button>`,1),xo=U(`<button class="cluster-tag-del" type="button">×</button>`),So=U(`<div class="cluster-tag"><!> <!> <!></div>`),Co=U(`<div class="empty-state"><p>No sub-folders found.</p></div>`),wo=U(`<nav class="rail"><button class="tool-button" type="button">⌖</button> <button type="button">⠿</button> <!> <button type="button">☰</button></nav> <canvas id="blueprintCanvas"></canvas> <div class="cluster-overlays"></div> <!>`,1);function To(e,t){qe(t,!0);let n=Wi(t,`activeExplorerPath`,3,null),r=`#64748b`,i=`#3b82f6`,a,o,s=P(!0),c=P(!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=P(``),S=!1,C=!1,w=!1,T=0,E=0,D=0,ee=0,O=null,k={},te=null,ne=P(I([])),re=null,ie=P(0),A=P(I([])),ae=P(null),oe=0,se=0,ce=0,le=0,ue=0,de=0,fe=0,pe=!1;function me(e){let t=0,n=0;return e.map(e=>{let r=k[e.path],i=r?r.x:t*240,a=r?r.y:n*150;return r||(t++,t>=4&&(t=0,n++)),{folder:e,x:i,y:a,w:200,h:110}})}function he(e){if(!e.length)return{minX:0,minY:0,maxX:0,maxY:0};let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x+a.w),i=Math.max(i,a.y+a.h);return{minX:t,minY:n,maxX:r,maxY:i}}function ge(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t):``}function _e(e){let t=a.clientWidth,r=a.clientHeight;xe((n()===null?t:t/2)/2-(e.x+e.w/2)*d,r/2-(e.y+e.h/2)*d,d)}function ve(e){if(!f.length)return;let{minX:t,minY:n,maxX:r,maxY:i}=he(f),o=a.clientWidth,s=a.clientHeight,c=Math.min((o-160)/Math.max(1,r-t),(s-160)/Math.max(1,i-n),1.4),p=(t+r)/2,m=(n+i)/2,h=o/2-p*c,g=s/2-m*c;e?xe(h,g,c):(l=h,u=g,d=c)}function ye(e){let t=a.clientWidth,n=a.clientHeight,r=Math.min((t-160)/e.w,(n-160)/e.h,1.6),i=e.x+e.w/2,o=e.y+e.h/2;xe(t/2-i*r,n/2-o*r,r)}function be(e){return e<.5?2*e*e:-1+(4-2*e)*e}function xe(e,t,n){oe=l,se=u,ce=d,le=e,ue=t,de=n,fe=performance.now(),pe=!0,Ce()}function Se(e){let t=Math.min(1,(e-fe)/420),n=be(t);l=oe+(le-oe)*n,u=se+(ue-se)*n,d=ce+(de-ce)*n,t>=1&&(pe=!1)}function Ce(){O===null&&(O=requestAnimationFrame(we))}function we(e){O=null,pe&&(Se(e),Ce());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),Ee(n,r),o.translate(l,u),o.scale(d,d),Te();for(let e=0;e<f.length;e++)Oe(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 Te(){let e=[];for(let t of V(ne)){let n=f.filter(e=>t.members.includes(e.folder.path));if(n.length===0)continue;let{minX:r,minY:i,maxX:a,maxY:s}=he(n),c=r-24,p=i-24,m=a-r+48,h=s-i+48;o.save(),o.strokeStyle=`#a78bfa`,o.globalAlpha=.55,o.lineWidth=1.5/d,o.setLineDash([8/d,6/d]),De(c,p,m,h,18),o.stroke(),o.restore(),e.push({id:t.id,label:t.label,x:l+c*d+10*d,y:u+p*d})}F(A,e,!0)}function Ee(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 De(e,t,n,r,i){o.beginPath(),o.roundRect(e,t,n,r,i)}function Oe(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,De(a,s,c,l,18),o.fillStyle=f,o.fill(),o.restore(),De(a,s,c,l,18),o.strokeStyle=m,o.lineWidth=h/d,o.stroke(),o.fillStyle=p?`#60a5fa`:t?`#94a3b8`:`rgba(255,255,255,0.3)`,o.font=`${20*.7}px sans-serif`,o.textBaseline=`top`,o.textAlign=`left`,o.fillText(`☰`,a+10,s+10);let g=e.folder.hasDoc===!0,_=a+10+20+4;o.fillStyle=g?t?`#34d399`:`#10b981`:t?`#a78bfa`:`rgba(167,139,250,0.4)`,o.font=`bold ${20*.65}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`top`,o.textAlign=`left`,o.fillText(`D`,_,s+11),g||(o.font=`bold ${20*.5}px Inter, ui-sans-serif, sans-serif`,o.fillText(`+`,_+20*.6,s+7));let v=a+18;ke(v,s+l/2-18/2-4,18,t);let y=Math.max(10,Math.min(14,120/u.name.length));o.fillStyle=t?`#fff`:`#f1f5f9`,o.font=`700 ${y}px Inter, ui-sans-serif, sans-serif`,o.textBaseline=`middle`,o.textAlign=`left`;let b=c-36-18-8,x=je(u.name,b,y);o.fillText(x,v+18+8,s+l/2),u.hasChildren&&Ae(a+c-22,s+l/2,t)}function ke(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 Ae(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 je(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 Me(){try{k=await fetch(`/api/blueprint/positions`).then(e=>e.json())}catch{k={}}}function Ne(){te!==null&&clearTimeout(te),te=window.setTimeout(()=>{te=null,fetch(`/api/blueprint/positions`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(k)})},600)}async function Pe(){try{let e=await fetch(`/api/blueprint/clusters`).then(e=>e.json());F(ne,Array.isArray(e)?e:[],!0)}catch{F(ne,[],!0)}}function Fe(){re!==null&&clearTimeout(re),re=window.setTimeout(()=>{re=null,fetch(`/api/blueprint/clusters`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(V(ne))})},600)}function Ie(){F(ie,h.size,!0)}function Le(){let e=[...h].map(e=>f[e]?.folder.path).filter(Boolean);if(e.length===0)return;let t=`cl_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,7)}`;F(ne,[...V(ne),{id:t,label:Y(`blueprint.cluster.default_label`),members:e}],!0),Fe(),h.clear(),Ie(),Ce()}function Re(e){let t=[...h].map(e=>f[e]?.folder.path).filter(Boolean);t.length!==0&&(F(ne,V(ne).map(n=>n.id===e?{...n,members:[...new Set([...n.members,...t])]}:n),!0),Fe(),h.clear(),Ie(),Ce())}function ze(e){let t=new Set([...h].map(e=>f[e]?.folder.path).filter(Boolean));t.size!==0&&(F(ne,V(ne).map(n=>n.id===e?{...n,members:n.members.filter(e=>!t.has(e))}:n).filter(e=>e.members.length>0),!0),!V(ne).some(t=>t.id===e)&&V(ae)===e&&F(ae,null),Fe(),h.clear(),Ie(),Ce())}function Be(e,t){F(ne,V(ne).map(n=>n.id===e?{...n,label:t}:n),!0),Fe(),Ce()}function Ve(e){F(ne,V(ne).filter(t=>t.id!==e),!0),V(ae)===e&&F(ae,null),Fe(),Ce()}async function He(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),F(x,e,!0),f=me(a.folders),F(s,f.length>0),r&&n?(ye(r),setTimeout(()=>ve(!0),420*.6)):ve(n),Ce()}catch(e){console.error(`Blueprint load error`,e)}}function Ue(e,t){return{x:(e-l)/d,y:(t-u)/d}}function We(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 Ge(e,t,n){return t>=e.x+6&&t<=e.x+6+20&&n>=e.y+6&&n<=e.y+6+20}function Ke(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 Ye(e){let t=ge(e);V(x)!==t&&await He(t,!0);let n=f.find(t=>t.folder.path===e);n&&(_e(n),Ce())}function Xe(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;if(S&&m>=0&&V(c)){let{x:e,y:t}=Ue(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)}Ce();return}if(v){b=Ue(n,r),Ce();return}if(C){let e=n-T,t=r-E;Math.hypot(e,t)>6&&(w=!0),l=D+e,u=ee+t,Ce();return}let{x:i,y:o}=Ue(n,r),s=We(i,o);s!==p&&(p=s,a.style.cursor=s>=0&&V(c)?`grab`:s>=0?`pointer`:`default`,Ce())}function Ze(e){let t=a.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,{x:i,y:o}=Ue(n,r),s=We(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,V(c)&&(a.style.cursor=`grabbing`)):V(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 Qe(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=V(c)?`grab`:`pointer`,w){let e=h.has(m)&&h.size>1?[...h]:[m];for(let t of e){let e=f[t];k[e.folder.path]={...k[e.folder.path]??{},x:e.x,y:e.y}}Ne()}else{let r=f[m],{x:a,y:s}=Ue(i,o);V(c)&&e.shiftKey?(h.has(m)?h.delete(m):h.add(m),Ie(),Ce()):V(c)?(h.clear(),h.add(m),Ie(),Ce()):Ke(r,a,s)?t.onopenAdr(r):Ge(r,a,s)?n()===r.folder.path?t.onclosefilerexplorer():t.onopenexplorer(r):r.folder.hasChildren&&(t.onclosefilerexplorer(),He(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)}Ie(),Ce();return}if(C){C=!1;let e=i-T,t=o-E;Math.hypot(e,t)<=6&&V(c)&&(h.clear(),Ie(),Ce())}}function $e(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,Ce()}function et(){ve(!0)}function tt(){let e=V(x)?V(x).split(`/`).pop():``;t.onopenexplorer({folder:{name:e,path:V(x),hasChildren:!0},x:0,y:0,w:0,h:0})}function nt(){F(c,!V(c)),V(c)||(h.clear(),Ie(),Ce()),a.style.cursor=V(c)&&p>=0?`grab`:`default`}Gi(()=>(o=a.getContext(`2d`),window.addEventListener(`resize`,Ce),Promise.all([Me(),Pe()]).then(async()=>{await He(``,!1)}),()=>{window.removeEventListener(`resize`,Ce)}));var M={centerOnBox:_e,loadPath:He,navigateToFolder:Ye},rt=wo(),it=R(rt),at=L(it),ot=z(at,2);let st;var ct=z(ot,2),lt=e=>{var t=_o();t.textContent=`⬚︎`,B(e=>J(t,`title`,e),[()=>Y(`blueprint.canvas.create_cluster`)]),H(`click`,t,Le),W(e,t)};K(ct,e=>{V(c)&&e(lt)});var ut=z(ct,2);let dt;j(it);var ft=z(it,2);Vi(ft,e=>a=e,()=>a);var pt=z(ft,2);q(pt,21,()=>V(A),e=>e.id,(e,t)=>{var n=So(),r=L(n),i=e=>{var n=vo();Di(n),vn(n,!0),B(()=>Oi(n,V(t).label)),H(`keydown`,n,e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&F(ae,null)}),Nr(`blur`,n,e=>{Be(V(t).id,e.currentTarget.value.trim()||V(t).label),F(ae,null)}),W(e,n)},a=e=>{var n=yo(),r=L(n,!0);j(n),B((e,t)=>{J(n,`title`,e),G(r,t)},[()=>Y(`blueprint.cluster.rename`),()=>V(t).label||Y(`blueprint.cluster.default_label`)]),H(`click`,n,()=>F(ae,V(t).id,!0)),W(e,n)};K(r,e=>{V(ae)===V(t).id?e(i):e(a,-1)});var o=z(r,2),s=e=>{var n=bo(),r=R(n),i=z(r,2);B((e,t)=>{J(r,`title`,e),J(i,`title`,t)},[()=>Y(`blueprint.cluster.add_selection`),()=>Y(`blueprint.cluster.remove_selection`)]),H(`click`,r,()=>Re(V(t).id)),H(`click`,i,()=>ze(V(t).id)),W(e,n)};K(o,e=>{V(c)&&V(ie)>0&&e(s)});var l=z(o,2),u=e=>{var n=xo();B(e=>J(n,`title`,e),[()=>Y(`blueprint.cluster.delete`)]),H(`click`,n,()=>Ve(V(t).id)),W(e,n)};K(l,e=>{V(c)&&e(u)}),j(n),B(()=>vi(n,`left:${V(t).x??``}px; top:${V(t).y??``}px;`)),W(e,n)}),j(pt);var mt=z(pt,2),ht=e=>{W(e,Co())};return K(mt,e=>{V(s)||e(ht)}),B((e,t,r)=>{J(at,`title`,e),st=gi(ot,1,`tool-button`,null,st,{active:V(c)}),J(ot,`title`,t),dt=gi(ut,1,`tool-button`,null,dt,{active:n()===V(x)}),J(ut,`title`,r)},[()=>Y(`blueprint.canvas.fit_view`),()=>Y(`blueprint.canvas.drag_mode`),()=>Y(`blueprint.canvas.browse_current`)]),H(`click`,at,et),H(`click`,ot,nt),H(`click`,ut,tt),H(`pointermove`,ft,Xe),H(`pointerdown`,ft,Ze),H(`pointerup`,ft,Qe),Nr(`wheel`,ft,$e),W(e,rt),Je(M)}Pr([`click`,`pointermove`,`pointerdown`,`pointerup`,`keydown`]);var Eo=U(`<button class="explorer-breadcrumb-item" type="button">~</button>`),Do=U(`<span class="explorer-breadcrumb-item current">~</span>`),Oo=U(`<span class="explorer-breadcrumb-item current"> </span>`),ko=U(`<button class="explorer-breadcrumb-item" type="button"> </button>`),Ao=U(`<span class="explorer-breadcrumb-sep">/</span> <!>`,1),jo=U(`<div class="explorer-section-label"> </div>`),Mo=U(`<button class="explorer-item is-folder" type="button"><span class="explorer-item-icon">📁</span> <span class="explorer-item-name"> </span></button>`),No=U(`<div class="explorer-section-label with-action"><span> </span> <button type="button" data-testid="copy-blueprint-folders"><i aria-hidden="true"></i></button></div> <!>`,1),Po=U(`<button class="explorer-item is-file" type="button"><span class="explorer-item-icon">📄</span> <span class="explorer-item-name"> </span></button>`),Fo=U(`<div class="explorer-section-label with-action"><span> </span> <button type="button" data-testid="copy-blueprint-files"><i aria-hidden="true"></i></button></div> <!>`,1),Io=U(`<!> <!>`,1),Lo=U(`<p class="file-preview-placeholder"> </p>`),Ro=U(`<p class="file-preview-name"> </p> <p class="file-preview-placeholder"> </p>`,1),zo=U(`<p class="file-preview-name"> </p> <span class="file-preview-binary"> </span>`,1),Bo=U(`<p class="file-preview-name"> </p> <img/>`,1),Vo=U(`<p class="file-preview-name"> </p> <video controls=""></video>`,3),Ho=U(`<span class="file-preview-truncated"> </span>`),Uo=U(`<p class="file-preview-name"> </p> <!> <pre><code> </code></pre>`,1),Wo=U(`<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 Go(e,t){qe(t,!0);let n=P(``),r=P(I([])),i=P(I([])),a=P(!1),o=P(!1),s=P(null),c=P(I({status:`idle`}));function l(e){return e?e.split(`/`).map((e,t,n)=>({name:e,path:n.slice(0,t+1).join(`/`),isLast:t===n.length-1})):[]}async function u(e){F(n,e,!0),F(c,{status:`idle`},!0),await d(e)}async function d(e){F(n,e,!0),F(a,!0),F(o,!1);try{let t=await fetch(`/api/blueprint/files?path=${encodeURIComponent(e)}`).then(e=>e.json());F(r,t.folders,!0),F(i,t.files,!0)}catch{F(o,!0),F(r,[],!0),F(i,[],!0)}finally{F(a,!1)}}async function f(e){t.onnavigate(e),await d(e)}async function p(e,t){F(c,{status:`loading`,name:t},!0);try{let n=await fetch(`/api/blueprint/file-content?path=${encodeURIComponent(e)}`).then(e=>e.json());n.type===`image`?F(c,{status:`image`,name:t,url:n.url},!0):n.type===`video`?F(c,{status:`video`,name:t,url:n.url},!0):n.type===`binary`?F(c,{status:`binary`,name:t},!0):n.type===`text`&&n.content!==void 0&&(F(c,{status:`text`,name:t,content:n.content,language:n.language,truncated:n.truncated},!0),setTimeout(()=>{let e=document.querySelector(`.file-preview code`);e&&window.hljs&&(window.hljs.highlightElement(e),window.hljs.lineNumbersBlock&&window.hljs.lineNumbersBlock(e))},0))}catch{F(c,{status:`error`,name:t},!0)}}function m(e){return V(n)?`${V(n)}/${e}`:e}async function h(e,t){if(t.length)try{await navigator.clipboard.writeText(t.join(`
5
- `)),F(s,e,!0),setTimeout(()=>{V(s)===e&&F(s,null)},1800)}catch{}}var g={open:u},_=Wo(),v=L(_),y=L(v),b=L(y),x=e=>{var t=Eo();H(`click`,t,()=>f(``)),W(e,t)},S=e=>{W(e,Do())};K(b,e=>{V(n)?e(x):e(S,-1)}),q(z(b,2),17,()=>l(V(n)),Xr,(e,t)=>{var n=Ao(),r=z(R(n),2),i=e=>{var n=Oo(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),W(e,n)},a=e=>{var n=ko(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),H(`click`,n,()=>f(V(t).path)),W(e,n)};K(r,e=>{V(t).isLast?e(i):e(a,-1)}),W(e,n)}),j(y);var C=z(y,2);j(v);var w=z(v,2),T=L(w),E=L(T),D=e=>{var t=jo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.explorer.loading`)]),W(e,t)},ee=e=>{var t=jo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.explorer.error`)]),W(e,t)},O=e=>{var t=jo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.explorer.empty`)]),W(e,t)},k=e=>{var t=Io(),n=R(t),a=e=>{var t=No(),n=R(t),i=L(n),a=L(i,!0);j(i);var o=z(i,2),c=L(o);j(o),j(n),q(z(n,2),17,()=>V(r),Xr,(e,t)=>{var n=Mo(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t))),H(`click`,n,()=>f(m(V(t)))),W(e,n)}),B((e,t)=>{G(a,e),gi(o,1,`explorer-copy-btn ${V(s)===`folders`?`copied`:``}`),J(o,`title`,t),gi(c,1,`fa-${V(s)===`folders`?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`blueprint.explorer.folders`),()=>Y(`blueprint.explorer.copy_folders`)]),H(`click`,o,()=>h(`folders`,V(r))),W(e,t)};K(n,e=>{V(r).length&&e(a)});var o=z(n,2),c=e=>{var t=Fo(),n=R(t),r=L(n),a=L(r,!0);j(r);var o=z(r,2),c=L(o);j(o),j(n),q(z(n,2),17,()=>V(i),Xr,(e,t)=>{var n=Po(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t))),H(`click`,n,()=>p(m(V(t)),V(t))),W(e,n)}),B((e,t)=>{G(a,e),gi(o,1,`explorer-copy-btn ${V(s)===`files`?`copied`:``}`),J(o,`title`,t),gi(c,1,`fa-${V(s)===`files`?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`blueprint.explorer.files`),()=>Y(`blueprint.explorer.copy_files`)]),H(`click`,o,()=>h(`files`,V(i))),W(e,t)};K(o,e=>{V(i).length&&e(c)}),W(e,t)};K(E,e=>{V(a)?e(D):V(o)?e(ee,1):V(r).length===0&&V(i).length===0?e(O,2):e(k,-1)}),j(T),j(w);var te=z(w,4),ne=L(te),re=L(ne),ie=e=>{var t=Lo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.preview.placeholder`)]),W(e,t)},A=e=>{var t=Ro(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,V(c).name),G(a,e)},[()=>Y(`blueprint.preview.loading`)]),W(e,t)},ae=e=>{var t=Ro(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,V(c).name),G(a,e)},[()=>Y(`blueprint.preview.error`)]),W(e,t)},oe=e=>{var t=zo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,V(c).name),G(a,e)},[()=>Y(`blueprint.preview.binary`)]),W(e,t)},se=e=>{var t=Bo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2);B(()=>{G(r,V(c).name),J(i,`src`,V(c).url),J(i,`alt`,V(c).name)}),W(e,t)},ce=e=>{var t=Vo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2);B(()=>{G(r,V(c).name),J(i,`src`,V(c).url)}),W(e,t)},le=e=>{var t=Uo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=e=>{var t=Ho(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.preview.truncated`)]),W(e,t)};K(i,e=>{V(c).truncated&&e(a)});var o=z(i,2),s=L(o),l=L(s,!0);j(s),j(o),B(()=>{G(r,V(c).name),gi(s,1,ui(V(c).language&&V(c).language!==`plaintext`?`language-${V(c).language}`:``)),G(l,V(c).content)}),W(e,t)};return K(re,e=>{V(c).status===`idle`?e(ie):V(c).status===`loading`?e(A,1):V(c).status===`error`?e(ae,2):V(c).status===`binary`?e(oe,3):V(c).status===`image`?e(se,4):V(c).status===`video`?e(ce,5):V(c).status===`text`&&e(le,6)}),j(ne),j(te),j(_),H(`click`,C,function(...e){t.onclose?.apply(this,e)}),W(e,_),Je(g)}Pr([`click`]);function Ko(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function qo(){try{let e=parseInt(localStorage.getItem(`ld-highlight-status`)||`0`,10);return e===1||e===2?e:0}catch{return 0}}var X=new class{#e=P(I([]));get allDocs(){return V(this.#e)}set allDocs(e){F(this.#e,e,!0)}#t=P(I([]));get allFolderPaths(){return V(this.#t)}set allFolderPaths(e){F(this.#t,e,!0)}#n=P(I({}));get annotationCounts(){return V(this.#n)}set annotationCounts(e){F(this.#n,e,!0)}#r=P(I({}));get fileAttachmentCounts(){return V(this.#r)}set fileAttachmentCounts(e){F(this.#r,e,!0)}#i=P(I({}));get docStatuses(){return V(this.#i)}set docStatuses(e){F(this.#i,e,!0)}#a=P(null);get currentDocId(){return V(this.#a)}set currentDocId(e){F(this.#a,e,!0)}#o=P(``);get searchQuery(){return V(this.#o)}set searchQuery(e){F(this.#o,e,!0)}#s=P(null);get searchResults(){return V(this.#s)}set searchResults(e){F(this.#s,e,!0)}#c=P(I(new Set));get expandedCategories(){return V(this.#c)}set expandedCategories(e){F(this.#c,e,!0)}#l=P(I(new Set));get expandedFolders(){return V(this.#l)}set expandedFolders(e){F(this.#l,e,!0)}#u=P(I(Ko(`ld-hide-categories`)));get hideCategories(){return V(this.#u)}set hideCategories(e){F(this.#u,e,!0)}#d=P(I(Ko(`ld-hide-attachments`)));get hideAttachments(){return V(this.#d)}set hideAttachments(e){F(this.#d,e,!0)}#f=P(I(qo()));get highlightStatusState(){return V(this.#f)}set highlightStatusState(e){F(this.#f,e,!0)}#p=P(!1);get exclusiveFolderExpansion(){return V(this.#p)}set exclusiveFolderExpansion(e){F(this.#p,e,!0)}#m=P(!1);get exclusiveCategoryExpansion(){return V(this.#m)}set exclusiveCategoryExpansion(e){F(this.#m,e,!0)}#h=P(400);get codeBlockMaxHeight(){return V(this.#h)}set codeBlockMaxHeight(e){F(this.#h,e,!0)}#g=P(!1);get imageRoundedCorners(){return V(this.#g)}set imageRoundedCorners(e){F(this.#g,e,!0)}#_=P(!1);get imageCentered(){return V(this.#_)}set imageCentered(e){F(this.#_,e,!0)}#v=P(!1);get imageBorder(){return V(this.#v)}set imageBorder(e){F(this.#v,e,!0)}#y=P(!1);get codeBlockLightTheme(){return V(this.#y)}set codeBlockLightTheme(e){F(this.#y,e,!0)}#b=P(`normal`);get markerState(){return V(this.#b)}set markerState(e){F(this.#b,e,!0)}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}},Jo=`(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}`,Yo=`\\|[^\\n]*\\|\\n\\|[ \\t:|-]*-[ \\t:|-]*\\|`,Xo=Jo+`(?:\\|[^\\n]*\\|\\n)\\|[ \\t:|-]*-[ \\t:|-]*\\|(?:\\n\\|[^\\n]*\\|)*`;function Zo(){return Xo}var Qo=new Set([`compact`,`striped`]),$o=new Set([`bordered`,`borderless`]),es=new Set([`bordered`,`borderless`]),ts=new Set([`info`,`success`,`warning`,`danger`,`note`]);function ns(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`&&Qo.has(i)&&(t=i),e===`style`&&es.has(i)&&(n=i),e===`border`&&$o.has(i)&&(n=i),e===`color`&&ts.has(i)&&(r=i)}return{style:t,border:n,color:r}}function rs(e){let t=typeof e==`string`?e.trim():``,n=RegExp(`^${Jo}`);return ns(t.match(n)?.[0]||``)}function is(e){let t=ns([e?.style?`<!-- table-style: ${e.style} -->`:``,e?.border?`<!-- table-border: ${e.border} -->`:``,e?.color?`<!-- table-color: ${e.color} -->`:``].filter(Boolean).join(`
5
+ `)),F(s,e,!0),setTimeout(()=>{V(s)===e&&F(s,null)},1800)}catch{}}var g={open:u},_=Wo(),v=L(_),y=L(v),b=L(y),x=e=>{var t=Eo();H(`click`,t,()=>f(``)),W(e,t)},S=e=>{W(e,Do())};K(b,e=>{V(n)?e(x):e(S,-1)}),q(z(b,2),17,()=>l(V(n)),Xr,(e,t)=>{var n=Ao(),r=z(R(n),2),i=e=>{var n=Oo(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),W(e,n)},a=e=>{var n=ko(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),H(`click`,n,()=>f(V(t).path)),W(e,n)};K(r,e=>{V(t).isLast?e(i):e(a,-1)}),W(e,n)}),j(y);var C=z(y,2);j(v);var w=z(v,2),T=L(w),E=L(T),D=e=>{var t=jo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.explorer.loading`)]),W(e,t)},ee=e=>{var t=jo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.explorer.error`)]),W(e,t)},O=e=>{var t=jo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.explorer.empty`)]),W(e,t)},k=e=>{var t=Io(),n=R(t),a=e=>{var t=No(),n=R(t),i=L(n),a=L(i,!0);j(i);var o=z(i,2),c=L(o);j(o),j(n),q(z(n,2),17,()=>V(r),Xr,(e,t)=>{var n=Mo(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t))),H(`click`,n,()=>f(m(V(t)))),W(e,n)}),B((e,t)=>{G(a,e),gi(o,1,`explorer-copy-btn ${V(s)===`folders`?`copied`:``}`),J(o,`title`,t),gi(c,1,`fa-${V(s)===`folders`?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`blueprint.explorer.folders`),()=>Y(`blueprint.explorer.copy_folders`)]),H(`click`,o,()=>h(`folders`,V(r))),W(e,t)};K(n,e=>{V(r).length&&e(a)});var o=z(n,2),c=e=>{var t=Fo(),n=R(t),r=L(n),a=L(r,!0);j(r);var o=z(r,2),c=L(o);j(o),j(n),q(z(n,2),17,()=>V(i),Xr,(e,t)=>{var n=Po(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t))),H(`click`,n,()=>p(m(V(t)),V(t))),W(e,n)}),B((e,t)=>{G(a,e),gi(o,1,`explorer-copy-btn ${V(s)===`files`?`copied`:``}`),J(o,`title`,t),gi(c,1,`fa-${V(s)===`files`?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`blueprint.explorer.files`),()=>Y(`blueprint.explorer.copy_files`)]),H(`click`,o,()=>h(`files`,V(i))),W(e,t)};K(o,e=>{V(i).length&&e(c)}),W(e,t)};K(E,e=>{V(a)?e(D):V(o)?e(ee,1):V(r).length===0&&V(i).length===0?e(O,2):e(k,-1)}),j(T),j(w);var te=z(w,4),ne=L(te),re=L(ne),ie=e=>{var t=Lo(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.preview.placeholder`)]),W(e,t)},A=e=>{var t=Ro(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,V(c).name),G(a,e)},[()=>Y(`blueprint.preview.loading`)]),W(e,t)},ae=e=>{var t=Ro(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,V(c).name),G(a,e)},[()=>Y(`blueprint.preview.error`)]),W(e,t)},oe=e=>{var t=zo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,V(c).name),G(a,e)},[()=>Y(`blueprint.preview.binary`)]),W(e,t)},se=e=>{var t=Bo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2);B(()=>{G(r,V(c).name),J(i,`src`,V(c).url),J(i,`alt`,V(c).name)}),W(e,t)},ce=e=>{var t=Vo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2);B(()=>{G(r,V(c).name),J(i,`src`,V(c).url)}),W(e,t)},le=e=>{var t=Uo(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=e=>{var t=Ho(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`blueprint.preview.truncated`)]),W(e,t)};K(i,e=>{V(c).truncated&&e(a)});var o=z(i,2),s=L(o),l=L(s,!0);j(s),j(o),B(()=>{G(r,V(c).name),gi(s,1,ui(V(c).language&&V(c).language!==`plaintext`?`language-${V(c).language}`:``)),G(l,V(c).content)}),W(e,t)};return K(re,e=>{V(c).status===`idle`?e(ie):V(c).status===`loading`?e(A,1):V(c).status===`error`?e(ae,2):V(c).status===`binary`?e(oe,3):V(c).status===`image`?e(se,4):V(c).status===`video`?e(ce,5):V(c).status===`text`&&e(le,6)}),j(ne),j(te),j(_),H(`click`,C,function(...e){t.onclose?.apply(this,e)}),W(e,_),Je(g)}Pr([`click`]);function Ko(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}function qo(){try{let e=parseInt(localStorage.getItem(`ld-highlight-status`)||`0`,10);return e===1||e===2?e:0}catch{return 0}}var X=new class{#e=P(I([]));get allDocs(){return V(this.#e)}set allDocs(e){F(this.#e,e,!0)}#t=P(I([]));get allFolderPaths(){return V(this.#t)}set allFolderPaths(e){F(this.#t,e,!0)}#n=P(I({}));get annotationCounts(){return V(this.#n)}set annotationCounts(e){F(this.#n,e,!0)}#r=P(I({}));get fileAttachmentCounts(){return V(this.#r)}set fileAttachmentCounts(e){F(this.#r,e,!0)}#i=P(I({}));get docStatuses(){return V(this.#i)}set docStatuses(e){F(this.#i,e,!0)}#a=P(null);get currentDocId(){return V(this.#a)}set currentDocId(e){F(this.#a,e,!0)}#o=P(``);get searchQuery(){return V(this.#o)}set searchQuery(e){F(this.#o,e,!0)}#s=P(null);get searchResults(){return V(this.#s)}set searchResults(e){F(this.#s,e,!0)}#c=P(I(new Set));get expandedCategories(){return V(this.#c)}set expandedCategories(e){F(this.#c,e,!0)}#l=P(I(new Set));get expandedFolders(){return V(this.#l)}set expandedFolders(e){F(this.#l,e,!0)}#u=P(I(Ko(`ld-hide-categories`)));get hideCategories(){return V(this.#u)}set hideCategories(e){F(this.#u,e,!0)}#d=P(I(Ko(`ld-hide-attachments`)));get hideAttachments(){return V(this.#d)}set hideAttachments(e){F(this.#d,e,!0)}#f=P(I(qo()));get highlightStatusState(){return V(this.#f)}set highlightStatusState(e){F(this.#f,e,!0)}#p=P(!1);get exclusiveFolderExpansion(){return V(this.#p)}set exclusiveFolderExpansion(e){F(this.#p,e,!0)}#m=P(!1);get exclusiveCategoryExpansion(){return V(this.#m)}set exclusiveCategoryExpansion(e){F(this.#m,e,!0)}#h=P(400);get codeBlockMaxHeight(){return V(this.#h)}set codeBlockMaxHeight(e){F(this.#h,e,!0)}#g=P(!1);get imageRoundedCorners(){return V(this.#g)}set imageRoundedCorners(e){F(this.#g,e,!0)}#_=P(!1);get imageCentered(){return V(this.#_)}set imageCentered(e){F(this.#_,e,!0)}#v=P(!1);get imageBorder(){return V(this.#v)}set imageBorder(e){F(this.#v,e,!0)}#y=P(!1);get codeBlockLightTheme(){return V(this.#y)}set codeBlockLightTheme(e){F(this.#y,e,!0)}#b=P(`normal`);get markerState(){return V(this.#b)}set markerState(e){F(this.#b,e,!0)}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}},Jo=`(?:<!--\\s*table-(?:style|border|color):\\s*[a-z][a-z0-9_-]*\\s*-->\\n+){0,3}`,Yo=`\\|[^\\n]*\\|\\n\\|[ \\t:|-]*-[ \\t:|-]*\\|`,Xo=Jo+`(?:\\|[^\\n]*\\|\\n)\\|[ \\t:|-]*-[ \\t:|-]*\\|(?:\\n\\|[^\\n]*\\|)*`;function Zo(){return Xo}var Qo=new Set([`compact`,`striped`]),$o=new Set([`bordered`,`borderless`]),es=new Set([`bordered`,`borderless`]),ts=new Set([`info`,`success`,`warning`,`danger`,`note`]);function ns(e){let t=null,n=null,r=null;for(let i of(e||``).matchAll(/<!--\s*table-(style|border|color):\s*([a-z][a-z0-9_-]*)\s*-->/g)){let[,e,a]=i;e===`style`&&Qo.has(a)&&(t=a),e===`style`&&es.has(a)&&(n=a),e===`border`&&$o.has(a)&&(n=a),e===`color`&&ts.has(a)&&(r=a)}return{style:t,border:n,color:r}}function rs(e){let t=typeof e==`string`?e.trim():``,n=RegExp(`^${Jo}`);return ns(t.match(n)?.[0]||``)}function is(e){let t=ns([e?.style?`<!-- table-style: ${e.style} -->`:``,e?.border?`<!-- table-border: ${e.border} -->`:``,e?.color?`<!-- table-color: ${e.color} -->`:``].filter(Boolean).join(`
6
6
  `)),n=[];return t.style&&n.push(`<!-- table-style: ${t.style} -->`),t.border===`bordered`&&n.push(`<!-- table-border: bordered -->`),t.color&&n.push(`<!-- table-color: ${t.color} -->`),n.join(`
7
7
  `)}function as(e){return e.trim().split(`|`).slice(1,-1).map(e=>e.trim())}function os(e){let t=as(e);return t.length>0&&t.every(e=>/^:?-+:?$/.test(e.replace(/\s+/g,``)))}function ss(e){let t=(typeof e==`string`?e.trim():``).replace(RegExp(`^${Jo}`),``).split(`
8
8
  `).filter(e=>/^\|.*\|$/.test(e.trim()));return t.length>=2&&/^\|.*\|$/.test(t[0].trim())&&os(t[1])}function cs(e){let t=e.replace(/^(`{3,})[^\n]*$([\s\S]*?)^\1[ \t]*$/gm,e=>`
9
9
  `.repeat((e.match(/\n/g)??[]).length));return t=t.replace(/^:::compare[ \t]*\n([\s\S]*?)^:::[ \t]*$/gm,e=>`
10
- `.repeat((e.match(/\n/g)??[]).length)),t}function ls(e){if(typeof e!=`string`)return[];let t=cs(e),n=[],r=RegExp(`(${Jo})(${Yo})`,`g`),i;for(;i=r.exec(t);)n.push(ns(i[1]||``));return n}var us={note:`info`,tip:`success`,caution:`warning`,danger:`error`},ds=new Set([`info`,`success`,`warning`,`error`,...Object.keys(us)]);function fs(e){return us[e]??e}var ps=/^<!--\s*quote-type:\s*([a-z][a-z0-9_-]*)\s*-->$/,ms=/^<!--\s*quote-title:\s*(.+?)\s*-->$/,hs=/^<!--\s*quote-icon\s*-->$/,gs=`(?:<!--\\s*quote-(?:type|title|icon)[^\\n]*-->\\n+){0,3}`,_s=`>[ \\t][^\\n]*(?:\\n[ \\t]*>.*)*`;function vs(){return gs+_s}function ys(e){if(typeof e!=`string`)return[];let t=[],n=e.split(`
11
- `),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(ps);if(f){let e=f[1];r=ds.has(e)?fs(e):null;continue}let p=n.match(ms);if(p){i=p[1];continue}if(hs.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 bs={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 xs(e){return bs[fs(e??``)]??bs.info}var Ss=new Set([`full`,`3/4`,`2/3`,`1/2`,`1/3`,`1/4`]),Cs=new Set([`left`,`center`,`right`]),ws=`(?:<!--\\s*image-(?:width|align):\\s*[^\\n]+?\\s*-->\\n+){0,2}`,Ts=`!\\[[^\\]\\n]*\\]\\([^\\n)]+\\)`;function Es(){return ws+Ts}function Ds(e){let t=null,n=null,r=/<!--\s*image-(width|align):\s*([^\s]+)\s*-->/g,i;for(;i=r.exec(e||``);){let[,e,r]=i;e===`width`&&Ss.has(r)&&(t=r),e===`align`&&Cs.has(r)&&(n=r)}return{width:t,align:n}}function Os(e){return Ds((typeof e==`string`?e.trim():``).match(RegExp(`^${ws}`))?.[0]||``)}function ks(e){let t=Ds([e.width?`<!-- image-width: ${e.width} -->`:``,e.align?`<!-- image-align: ${e.align} -->`:``].filter(Boolean).join(`
10
+ `.repeat((e.match(/\n/g)??[]).length)),t}function ls(e){return e.replace(/^\s{0,3}(?:> ?)+/gm,``)}function us(e){if(typeof e!=`string`)return[];let t=cs(ls(e)),n=[],r=RegExp(`(${Jo})(${Yo})`,`g`);for(let e of t.matchAll(r))n.push(ns(e[1]||``));return n}var ds={note:`info`,tip:`success`,caution:`warning`,danger:`error`},fs=new Set([`info`,`success`,`warning`,`error`,...Object.keys(ds)]);function ps(e){return ds[e]??e}var ms=/^<!--\s*quote-type:\s*([a-z][a-z0-9_-]*)\s*-->$/,hs=/^<!--\s*quote-title:\s*(.+?)\s*-->$/,gs=/^<!--\s*quote-icon\s*-->$/,_s=`(?:<!--\\s*quote-(?:type|title|icon)[^\\n]*-->\\n+){0,3}`,vs=`>[ \\t][^\\n]*(?:\\n[ \\t]*>.*)*`;function ys(){return _s+vs}function bs(e){if(typeof e!=`string`)return[];let t=[],n=e.split(`
11
+ `),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(ms);if(f){let e=f[1];r=fs.has(e)?ps(e):null;continue}let p=n.match(hs);if(p){i=p[1];continue}if(gs.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 xs={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 Ss(e){return xs[ps(e??``)]??xs.info}var Cs=new Set([`full`,`3/4`,`2/3`,`1/2`,`1/3`,`1/4`]),ws=new Set([`left`,`center`,`right`]),Ts=`(?:<!--\\s*image-(?:width|align):\\s*[^\\n]+?\\s*-->\\n+){0,2}`,Es=`!\\[[^\\]\\n]*\\]\\([^\\n)]+\\)`;function Ds(){return Ts+Es}function Os(e){let t=null,n=null;for(let r of(e||``).matchAll(/<!--\s*image-(width|align):\s*([^\s]+)\s*-->/g)){let[,e,i]=r;e===`width`&&Cs.has(i)&&(t=i),e===`align`&&ws.has(i)&&(n=i)}return{width:t,align:n}}function ks(e){return Os((typeof e==`string`?e.trim():``).match(RegExp(`^${Ts}`))?.[0]||``)}function As(e){let t=Os([e.width?`<!-- image-width: ${e.width} -->`:``,e.align?`<!-- image-align: ${e.align} -->`:``].filter(Boolean).join(`
12
12
  `)),n=[];return t.width&&n.push(`<!-- image-width: ${t.width} -->`),t.align&&n.push(`<!-- image-align: ${t.align} -->`),n.join(`
13
- `)}function As(e){let t=e.replace(/^(`{3,}|~{3,})[^\n]*$([\s\S]*?)^\1[ \t]*$/gm,e=>`
13
+ `)}function js(e){let t=e.replace(/^(`{3,}|~{3,})[^\n]*$([\s\S]*?)^\1[ \t]*$/gm,e=>`
14
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 js(e){if(typeof e!=`string`)return[];let t=As(e),n=[],r=RegExp(`(${ws})(${Ts})`,`g`),i;for(;i=r.exec(t);)n.push(Ds(i[1]||``));return n}function Ms(e){return{full:`ld-image-width-full`,"3/4":`ld-image-width-three-quarters`,"2/3":`ld-image-width-two-thirds`,"1/2":`ld-image-width-half`,"1/3":`ld-image-width-third`,"1/4":`ld-image-width-quarter`}[e]}var Ns=new Set([`full`,`3/4`,`2/3`,`1/2`,`1/3`,`1/4`]),Ps=new Set([`left`,`center`,`right`]),Fs=`[ \\t]*<!--\\s*(?:code|mermaid)-(?:width|align):\\s*[^\\n]+?\\s*-->[ \\t]*\\n`,Is="[ \\t]*```[^\\n]*\\n[\\s\\S]*?^[ \\t]*```[ \\t]*";function Ls(){return`(?:${Fs}){0,2}${Is}`}function Rs(e){return e.trim().toLowerCase()===`mermaid`?`mermaid`:`code`}function zs(e,t){return t?e.split(`
15
+ `.repeat((e.match(/\n/g)??[]).length)),t}function Ms(e){if(typeof e!=`string`)return[];let t=js(e),n=[],r=RegExp(`(${Ts})(${Es})`,`g`);for(let e of t.matchAll(r))n.push(Os(e[1]||``));return n}function Ns(e){return{full:`ld-image-width-full`,"3/4":`ld-image-width-three-quarters`,"2/3":`ld-image-width-two-thirds`,"1/2":`ld-image-width-half`,"1/3":`ld-image-width-third`,"1/4":`ld-image-width-quarter`}[e]}var Ps=new Set([`full`,`3/4`,`2/3`,`1/2`,`1/3`,`1/4`]),Fs=new Set([`left`,`center`,`right`]),Is=`[ \\t]*<!--\\s*(?:code|mermaid)-(?:width|align):\\s*[^\\n]+?\\s*-->[ \\t]*\\n`,Ls="[ \\t]*```[^\\n]*\\n[\\s\\S]*?^[ \\t]*```[ \\t]*";function Rs(){return`(?:${Is}){0,2}${Ls}`}function zs(e){return e.trim().toLowerCase()===`mermaid`?`mermaid`:`code`}function Bs(e,t){return t?e.split(`
16
16
  `).map(e=>e.startsWith(t)?e.slice(t.length):e).join(`
17
- `):e}function Bs(e,t=``){return zs(e.trimEnd(),t).trim()}function Vs(e){return e.replace(/^(?:[ \t]*<!--\s*(?:code|mermaid)-(?:width|align):\s*[^\n]+?\s*-->[ \t]*\n){0,2}/,``)}function Hs(e){let t=e.trim(),n=Rs(Vs(t).match(/^```[ \t]*([^\n]*)/)?.[1]??``),r=null,i=null,a=/<!--\s*(code|mermaid)-(width|align):\s*([^\s]+)\s*-->/g,o;for(;o=a.exec(t);){let[,e,t,a]=o;e===n&&(t===`width`&&Ns.has(a)&&(r=a),t===`align`&&Ps.has(a)&&(i=a))}return{kind:n,width:r,align:i}}function Us(e){let t=Rs(e.language||``),n=Ns.has(e.width)?e.width:null,r=Ps.has(e.align)?e.align:null,i=[];return n&&i.push(`<!-- ${t}-width: ${n} -->`),r&&i.push(`<!-- ${t}-align: ${r} -->`),i.join(`
18
- `)}function Ws(e){return e.replace(/^:::compare[ \t]*\n[\s\S]*?^:::[ \t]*$/gm,e=>`
19
- `.repeat((e.match(/\n/g)??[]).length))}function Gs(e){if(typeof e!=`string`)return[];let t=[],n=RegExp(`^${Ls()}`,`gm`),r,i=Ws(e);for(;r=n.exec(i);)t.push(Hs(r[0])),r[0].length===0&&(n.lastIndex+=1);return t}function Ks(e,t){return`ld-${e}-width-${{full:`full`,"3/4":`three-quarters`,"2/3":`two-thirds`,"1/2":`half`,"1/3":`third`,"1/4":`quarter`}[t]}`}var qs=`<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>`,Js=`<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 Ys(e,t,n){e.innerHTML=t,Zs(e,n.content),Qs(e),dc(e,n.content),$s(e,n.content),fc(e),cc(e);let r=Gs(n.content),i=0;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`).forEach(e=>{let t=e.closest(`.ld-compare-render`)?null:r[i++],n=e.closest(`pre`);if(!e.classList.contains(`language-mermaid`)){n&&t&&Xs(n,t);return}let a=e.textContent||``,o=document.createElement(`div`);o.className=`mermaid my-4`,o.textContent=a,t&&Xs(o,t),n?.replaceWith(o)}),window.mermaid&&e.querySelector(`.mermaid`)&&window.mermaid.run({nodes:e.querySelectorAll(`.mermaid`)}),e.querySelectorAll(`pre code`).forEach(e=>{window.hljs?.highlightElement(e)}),uc(e,n.t),pc(e,n.codeBlockMaxHeight,n.t),e.querySelectorAll(`a[href]`).forEach(e=>{let t=e.getAttribute(`href`),r=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 Xs(e,t){t.width&&(e.classList.add(Ks(t.kind,t.width)),e.dataset.codeBlockWidth=t.width),t.align&&(e.classList.add(`ld-${t.kind}-align-${t.align}`),e.dataset.codeBlockAlign=t.align)}function Zs(e,t){let n=ls(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 Qs(e){e.querySelectorAll(`table th, table td`).forEach(e=>{(e.textContent||``).trim()===``&&(e.textContent=`\xA0`)})}function $s(e,t){let n=js(typeof t==`string`?t:``);Array.from(e.querySelectorAll(`img`)).filter(e=>!e.closest(`.ld-compare-render`)).forEach((e,t)=>{let r=n[t];r&&(r.width&&(e.classList.add(Ms(r.width)),e.dataset.imageWidth=r.width),r.align&&(e.classList.add(`ld-image-align-${r.align}`),e.dataset.imageAlign=r.align))})}var ec=/^\s*layout-columns\b/i,tc=/^\s*col\s*$/i,nc=/^\s*\/layout-columns\s*$/i,rc=new Set([`top`,`center`,`bottom`,`stretch`]),ic=new Set([`left`,`center`,`right`,`justify`]),ac=new Set([`sm`,`md`,`lg`]);function oc(e){let t=e.trim().replace(/^layout-columns\s*:?\s*/i,``),n={ratio:null,valign:null,textAlign:null,gap:null};for(let e of t.split(`|`)){let t=e.trim();if(!t)continue;let r=t.match(/^([\w-]+)\s*:\s*(.+)$/);if(r){let e=r[1].toLowerCase(),t=r[2].trim().toLowerCase();e===`vertical-align`&&rc.has(t)?n.valign=t:e===`text-align`&&ic.has(t)?n.textAlign=t:e===`gap`&&ac.has(t)?n.gap=t:e===`ratio`&&(n.ratio=t.replace(/\s+/g,``))}else/^\d+(\s*\/\s*\d+)*$/.test(t)&&(n.ratio=t.replace(/\s+/g,``))}return n}function sc(e,t){let n=`repeat(${t}, minmax(0, 1fr))`;if(!e)return n;if(e.includes(`/`)){let r=e.split(`/`).map(e=>parseInt(e,10));return r.length===t&&r.every(e=>Number.isFinite(e)&&e>0)?r.map(e=>`${e}fr`).join(` `):n}let r=parseInt(e,10);return Number.isFinite(r)&&r>0?`repeat(${r}, minmax(0, 1fr))`:n}function cc(e){let t=[];e.childNodes.forEach(e=>{e.nodeType===Node.COMMENT_NODE&&ec.test(e.data)&&t.push(e)});for(let n of t){let t=oc(n.data),r=[],i=null;for(let e=n.nextSibling;e;e=e.nextSibling){if(e.nodeType===Node.COMMENT_NODE&&nc.test(e.data)){i=e;break}r.push(e)}if(!i)continue;let a=[],o=null;for(let e of r){if(e.nodeType===Node.COMMENT_NODE&&tc.test(e.data)){o=[],a.push(o);continue}if(!o){if(e.nodeType===Node.TEXT_NODE&&!(e.textContent||``).trim())continue;o=[],a.push(o)}o.push(e)}if(a.length===0)continue;let s=document.createElement(`div`);s.className=`ld-columns`,t.valign&&s.classList.add(`ld-valign-${t.valign}`),t.textAlign&&s.classList.add(`ld-text-${t.textAlign}`),t.gap&&s.classList.add(`ld-gap-${t.gap}`),s.style.gridTemplateColumns=sc(t.ratio,a.length);for(let e of a){let t=document.createElement(`div`);t.className=`ld-column`;for(let n of e)t.appendChild(n);s.appendChild(t)}e.insertBefore(s,n),n.remove(),i.remove();for(let t of r)t.parentNode===e&&t.remove()}}function lc(e){let t=document.createElement(`div`);return t.innerHTML=e,cc(t),t.innerHTML}function uc(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=qs,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=Js,setTimeout(()=>{i.classList.remove(`ld-copied`),i.title=n,i.innerHTML=qs},1500)}),e.appendChild(i)})}function dc(e,t){let n=ys(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=xs(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=xs(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 fc(e){e.querySelectorAll(`.ld-compare-render[data-compare-source]`).forEach(e=>{let t=e.dataset.compareSource??``;if(!t)return;let n=decodeURIComponent(t),r=ls(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=ys(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=xs(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=xs(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 pc(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 mc=[`heading`,`collapsible`,`link`,`doc-link`,`anchor-link`,`anchor-doc-link`,`ordered-list`,`unordered-list`,`code-block`,`blockquote`,`image`,`table`,`tree`,`mermaid`,`diagram`,`colored-section`,`colored-text`,`emojis`,`attachment`,`compare`,`columns`],hc={"heading-1":`heading`,"heading-2":`heading`,"heading-3":`heading`,"heading-4":`heading`};function gc(e){return hc[e]||e}var _c={"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`,mermaid:`fa-solid fa-chart-pie`,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`,columns:`fa-solid fa-table-columns`},vc=[{key:`structure`,labelKey:`snippet.picker_cat_structure`,types:[`heading-1`,`heading-2`,`heading-3`,`heading-4`,`separator`,`collapsible`,`columns`,`unordered-list`,`ordered-list`,`table`]},{key:`lists-code-data`,labelKey:`snippet.picker_cat_lists_code_data`,types:[`tree`,`code-block`,`mermaid`,`diagram`,`compare`]},{key:`rich-text`,labelKey:`snippet.picker_cat_rich_text`,types:[`colored-text`,`colored-section`,`blockquote`,`emojis`,`local-search`]},{key:`links-media`,labelKey:`snippet.picker_cat_links_media`,types:[`link`,`doc-link`,`anchor-link`,`anchor-doc-link`,`image`,`attachment`]}],yc={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`}},bc={"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`,mermaid:`teal`,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`,columns:`teal`},xc={"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`,mermaid:`snippet.mermaid`,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`,columns:`snippet.columns`},Sc={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`}},Cc=[{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`}]}],wc=[`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(`
20
- `),Tc=[`- É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(`
21
- `);function Ec(){return wc}function Dc(){return Tc}function Oc(){return/^1\. .*(?:\n(?![ \t]*$)(?:\d+\. .*| {3,}.*|(?!(?:[-*+] |#{1,6}\s|>|```|~~~|\|)).+))*/gm}function kc(){return/^[-*+] .*(?:\n(?![ \t]*$)(?:[-*+] .*| {2,}.*|(?!(?:\d+\. |#{1,6}\s|>|```|~~~|\|)).+))*/gm}function Ac(e){return/^1\. /.test((e||``).trim())}function jc(e){return/^[-*+] /.test((e||``).trim())}function Mc(e){return(e||``).split(`
22
- `).filter(e=>e.trim())}function Nc(e){let t=e||Ec();if(/^\s*\d+\.\s+/m.test(t))return Mc(t).join(`
23
- `);let n=new Map;return Mc(t).map(e=>{let t=e.match(/^\s*/)?.[0],r=e.trim();if(/^[-*+]\s+/.test(r))return`${t}${r}`;let i=t?.length||0;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(`
24
- `)}function Pc(e){let t=e||Dc();return/^\s*[-*+]\s+/m.test(t)?Mc(t).join(`
25
- `):Mc(t).map(e=>`${e.match(/^\s*/)?.[0]}- ${e.trim()}`).join(`
26
- `)}function Fc(e,t){return e||t}function Ic(e){return e.replace(/\s+/g,` `).trim()}var Lc=100,Rc=6,zc=4;function Bc(e){return`<details>\n<summary>${Fc(e.summary,e.summaryFallback)}</summary>\n\n${e.body&&e.body.trim()!==``?e.body:e.bodyFallback}\n\n</details>`}function Vc(e){let t=Fc(e.text,e.textFallback);return`<a href="${Fc(e.url,`https://...`)}" target="_blank">${t}</a>`}function Hc(e){return`[${Fc(e.text,e.title||e.docId)}](?doc=${encodeURIComponent(e.docId)})`}function Uc(e){return`[${Fc(e.text,e.textFallback)}](#${Fc(e.anchor,e.anchorFallback)})`}function Wc(e){let t=Fc(e.text,e.textFallback),n=Fc(e.anchor,e.anchorFallback);return`[${t}](?doc=${encodeURIComponent(e.docId)}#${n})`}function Gc(e){let t=e.lang||``,n=Fc(e.code,`// code ici`),r=Us({language:t,width:e.width,align:e.align}),i=`\`\`\`${t}\n${n}\n\`\`\``,a=r?`${r}\n${i}`:i;return e.inlineIndent?a.split(`
17
+ `):e}function Vs(e,t=``){return Bs(e.trimEnd(),t).trim()}function Hs(e){return e.replace(/^(?:[ \t]*<!--\s*(?:code|mermaid)-(?:width|align):\s*[^\n]+?\s*-->[ \t]*\n){0,2}/,``)}function Us(e){let t=e.trim(),n=zs(Hs(t).match(/^```[ \t]*([^\n]*)/)?.[1]??``),r=null,i=null;for(let e of t.matchAll(/<!--\s*(code|mermaid)-(width|align):\s*([^\s]+)\s*-->/g)){let[,t,a,o]=e;t===n&&(a===`width`&&Ps.has(o)&&(r=o),a===`align`&&Fs.has(o)&&(i=o))}return{kind:n,width:r,align:i}}function Ws(e){let t=zs(e.language||``),n=Ps.has(e.width)?e.width:null,r=Fs.has(e.align)?e.align:null,i=[];return n&&i.push(`<!-- ${t}-width: ${n} -->`),r&&i.push(`<!-- ${t}-align: ${r} -->`),i.join(`
18
+ `)}function Gs(e){return e.replace(/^:::compare[ \t]*\n[\s\S]*?^:::[ \t]*$/gm,e=>`
19
+ `.repeat((e.match(/\n/g)??[]).length))}function Ks(e){if(typeof e!=`string`)return[];let t=[],n=RegExp(`^${Rs()}`,`gm`),r=Gs(e);for(let e of r.matchAll(n))t.push(Us(e[0]));return t}function qs(e,t){return`ld-${e}-width-${{full:`full`,"3/4":`three-quarters`,"2/3":`two-thirds`,"1/2":`half`,"1/3":`third`,"1/4":`quarter`}[t]}`}var Js=`<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>`,Ys=`<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 Xs(e,t,n){e.innerHTML=t,Qs(e,n.content),$s(e),fc(e,n.content),ec(e,n.content),pc(e),lc(e);let r=Ks(n.content),i=0;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`).forEach(e=>{let t=e.closest(`.ld-compare-render`)?null:r[i++],n=e.closest(`pre`);if(!e.classList.contains(`language-mermaid`)){n&&t&&Zs(n,t);return}let a=e.textContent||``,o=document.createElement(`div`);o.className=`mermaid my-4`,o.textContent=a,t&&Zs(o,t),n?.replaceWith(o)}),window.mermaid&&e.querySelector(`.mermaid`)&&window.mermaid.run({nodes:e.querySelectorAll(`.mermaid`)}),e.querySelectorAll(`pre code`).forEach(e=>{window.hljs?.highlightElement(e)}),dc(e,n.t),mc(e,n.codeBlockMaxHeight,n.t),e.querySelectorAll(`a[href]`).forEach(e=>{let t=e.getAttribute(`href`),r=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 Zs(e,t){t.width&&(e.classList.add(qs(t.kind,t.width)),e.dataset.codeBlockWidth=t.width),t.align&&(e.classList.add(`ld-${t.kind}-align-${t.align}`),e.dataset.codeBlockAlign=t.align)}function Qs(e,t){let n=us(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 $s(e){e.querySelectorAll(`table th, table td`).forEach(e=>{(e.textContent||``).trim()===``&&(e.textContent=`\xA0`)})}function ec(e,t){let n=Ms(typeof t==`string`?t:``);Array.from(e.querySelectorAll(`img`)).filter(e=>!e.closest(`.ld-compare-render`)).forEach((e,t)=>{let r=n[t];r&&(r.width&&(e.classList.add(Ns(r.width)),e.dataset.imageWidth=r.width),r.align&&(e.classList.add(`ld-image-align-${r.align}`),e.dataset.imageAlign=r.align))})}var tc=/^\s*layout-columns\b/i,nc=/^\s*col\s*$/i,rc=/^\s*\/layout-columns\s*$/i,ic=new Set([`top`,`center`,`bottom`,`stretch`]),ac=new Set([`left`,`center`,`right`,`justify`]),oc=new Set([`sm`,`md`,`lg`]);function sc(e){let t=e.trim().replace(/^layout-columns\s*:?\s*/i,``),n={ratio:null,valign:null,textAlign:null,gap:null};for(let e of t.split(`|`)){let t=e.trim();if(!t)continue;let r=t.match(/^([\w-]+)\s*:\s*(.+)$/);if(r){let e=r[1].toLowerCase(),t=r[2].trim().toLowerCase();e===`vertical-align`&&ic.has(t)?n.valign=t:e===`text-align`&&ac.has(t)?n.textAlign=t:e===`gap`&&oc.has(t)?n.gap=t:e===`ratio`&&(n.ratio=t.replace(/\s+/g,``))}else/^\d+(\s*\/\s*\d+)*$/.test(t)&&(n.ratio=t.replace(/\s+/g,``))}return n}function cc(e,t){let n=`repeat(${t}, minmax(0, 1fr))`;if(!e)return n;if(e.includes(`/`)){let r=e.split(`/`).map(e=>parseInt(e,10));return r.length===t&&r.every(e=>Number.isFinite(e)&&e>0)?r.map(e=>`${e}fr`).join(` `):n}let r=parseInt(e,10);return Number.isFinite(r)&&r>0?`repeat(${r}, minmax(0, 1fr))`:n}function lc(e){let t=[];e.childNodes.forEach(e=>{e.nodeType===Node.COMMENT_NODE&&tc.test(e.data)&&t.push(e)});for(let n of t){let t=sc(n.data),r=[],i=null;for(let e=n.nextSibling;e;e=e.nextSibling){if(e.nodeType===Node.COMMENT_NODE&&rc.test(e.data)){i=e;break}r.push(e)}if(!i)continue;let a=[],o=null;for(let e of r){if(e.nodeType===Node.COMMENT_NODE&&nc.test(e.data)){o=[],a.push(o);continue}if(!o){if(e.nodeType===Node.TEXT_NODE&&!(e.textContent||``).trim())continue;o=[],a.push(o)}o.push(e)}if(a.length===0)continue;let s=document.createElement(`div`);s.className=`ld-columns`,t.valign&&s.classList.add(`ld-valign-${t.valign}`),t.textAlign&&s.classList.add(`ld-text-${t.textAlign}`),t.gap&&s.classList.add(`ld-gap-${t.gap}`),s.style.gridTemplateColumns=cc(t.ratio,a.length);for(let e of a){let t=document.createElement(`div`);t.className=`ld-column`;for(let n of e)t.appendChild(n);s.appendChild(t)}e.insertBefore(s,n),n.remove(),i.remove();for(let t of r)t.parentNode===e&&t.remove()}}function uc(e){let t=document.createElement(`div`);return t.innerHTML=e,lc(t),t.innerHTML}function dc(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=Js,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=Ys,setTimeout(()=>{i.classList.remove(`ld-copied`),i.title=n,i.innerHTML=Js},1500)}),e.appendChild(i)})}function fc(e,t){let n=bs(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=Ss(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=Ss(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 pc(e){e.querySelectorAll(`.ld-compare-render[data-compare-source]`).forEach(e=>{let t=e.dataset.compareSource??``;if(!t)return;let n=decodeURIComponent(t),r=us(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=bs(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=Ss(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=Ss(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 mc(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 hc=[`heading`,`collapsible`,`link`,`doc-link`,`anchor-link`,`anchor-doc-link`,`ordered-list`,`unordered-list`,`code-block`,`blockquote`,`image`,`table`,`tree`,`mermaid`,`diagram`,`colored-section`,`colored-text`,`emojis`,`attachment`,`compare`,`columns`],gc={"heading-1":`heading`,"heading-2":`heading`,"heading-3":`heading`,"heading-4":`heading`};function _c(e){return gc[e]||e}var vc={"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`,mermaid:`fa-solid fa-chart-pie`,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`,columns:`fa-solid fa-table-columns`},yc=[{key:`structure`,labelKey:`snippet.picker_cat_structure`,types:[`heading-1`,`heading-2`,`heading-3`,`heading-4`,`separator`,`collapsible`,`columns`,`unordered-list`,`ordered-list`,`table`]},{key:`lists-code-data`,labelKey:`snippet.picker_cat_lists_code_data`,types:[`tree`,`code-block`,`mermaid`,`diagram`,`compare`]},{key:`rich-text`,labelKey:`snippet.picker_cat_rich_text`,types:[`colored-text`,`colored-section`,`blockquote`,`emojis`,`local-search`]},{key:`links-media`,labelKey:`snippet.picker_cat_links_media`,types:[`link`,`doc-link`,`anchor-link`,`anchor-doc-link`,`image`,`attachment`]}],bc={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`}},xc={"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`,mermaid:`teal`,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`,columns:`teal`},Sc={"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`,mermaid:`snippet.mermaid`,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`,columns:`snippet.columns`},Cc={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`}},wc=[{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`}]}],Tc=[`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(`
20
+ `),Ec=[`- É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(`
21
+ `);function Dc(){return Tc}function Oc(){return Ec}function kc(){return/^1\. .*(?:\n(?![ \t]*$)(?:\d+\. .*| {3,}.*|(?!(?:[-*+] |#{1,6}\s|>|```|~~~|\|)).+))*/gm}function Ac(){return/^[-*+] .*(?:\n(?![ \t]*$)(?:[-*+] .*| {2,}.*|(?!(?:\d+\. |#{1,6}\s|>|```|~~~|\|)).+))*/gm}function jc(e){return/^1\. /.test((e||``).trim())}function Mc(e){return/^[-*+] /.test((e||``).trim())}function Nc(e){return(e||``).split(`
22
+ `).filter(e=>e.trim())}function Pc(e){let t=e||Dc();if(/^\s*\d+\.\s+/m.test(t))return Nc(t).join(`
23
+ `);let n=new Map;return Nc(t).map(e=>{let t=e.match(/^\s*/)?.[0],r=e.trim();if(/^[-*+]\s+/.test(r))return`${t}${r}`;let i=t?.length||0;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(`
24
+ `)}function Fc(e){let t=e||Oc();return/^\s*[-*+]\s+/m.test(t)?Nc(t).join(`
25
+ `):Nc(t).map(e=>`${e.match(/^\s*/)?.[0]}- ${e.trim()}`).join(`
26
+ `)}function Ic(e,t){return e||t}function Lc(e){return e.replace(/\s+/g,` `).trim()}var Rc=100,zc=6,Bc=4;function Vc(e){return`<details>\n<summary>${Ic(e.summary,e.summaryFallback)}</summary>\n\n${e.body&&e.body.trim()!==``?e.body:e.bodyFallback}\n\n</details>`}function Hc(e){let t=Ic(e.text,e.textFallback);return`<a href="${Ic(e.url,`https://...`)}" target="_blank">${t}</a>`}function Uc(e){return`[${Ic(e.text,e.title||e.docId)}](?doc=${encodeURIComponent(e.docId)})`}function Wc(e){return`[${Ic(e.text,e.textFallback)}](#${Ic(e.anchor,e.anchorFallback)})`}function Gc(e){let t=Ic(e.text,e.textFallback),n=Ic(e.anchor,e.anchorFallback);return`[${t}](?doc=${encodeURIComponent(e.docId)}#${n})`}function Kc(e){let t=e.lang||``,n=Ic(e.code,`// code ici`),r=Ws({language:t,width:e.width,align:e.align}),i=`\`\`\`${t}\n${n}\n\`\`\``,a=r?`${r}\n${i}`:i;return e.inlineIndent?a.split(`
27
27
  `).map(t=>e.inlineIndent+t).join(`
28
- `):a}function Kc(e){let t=Fc(e.content,`Citation ici
28
+ `):a}function qc(e){let t=Ic(e.content,`Citation ici
29
29
 
30
30
  — Auteur`).split(`
31
31
  `).map(e=>e.trim()?`> ${e}`:`>`).join(`
32
32
  `),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(`
33
- `)}\n${t}`:t}function qc(e,t){let n=Number(e.slice(-1)),r=Fc(t.text?.trim(),t.fallback);return`${`#`.repeat(n)} ${r}`}function Jc(e){let t=Fc(e.alt,`image`),n=Fc(e.url,`./images/mon-image.png`),r=ks({width:e.width,align:e.align}),i=`![${t}](${n})`;return r?`${r}\n${i}`:i}function Yc(e){let t=is({style:e.style||``,border:e.bordered?`bordered`:``,color:e.color||``});return(t?`${t}\n`:``)+e.markdown}function Xc(e){return`[![${e.label}](./images/${e.imageName})](/diagram?id=${e.id})`}function Zc(e){let t=e.kind||`pie`;if(t===`timeline`){let t=Ic(e.timelineTitle||e.timelineTitleFallback||`DOCUMENTATION ROADMAP`),n=new Map;return(e.timelineItems||[]).forEach((t,r)=>{let i=Ic(t.period||`${e.timelinePeriodFallback||`Period`} ${r+1}`),a=Ic(t.event||`${e.timelineEventFallback||`Event`} ${r+1}`);n.set(i,[...n.get(i)||[],a])}),`\`\`\`mermaid\ntimeline\n title ${t}\n${[...n.entries()].map(([e,t])=>` ${e} : ${t.join(` : `)}`).join(`
34
- `)}\n\`\`\``}if(t===`tree-view`)return`\`\`\`mermaid\ntreeView-beta\n${(e.treeItems||[]).map((t,n)=>{let r=Number(t.level),i=Number.isFinite(r)?Math.min(Rc,Math.max(0,r)):0,a=` `.repeat((i+1)*zc),o=Ic(t.label||`${e.treeLabelFallback||`Node`} ${n+1}`),s=Ic(t.decorator||``),c=Ic(t.note||``);return`${a}${o}${s?` ${s}`:``}${c?` ## ${c}`:``}`}).join(`
35
- `)}\n\`\`\``;if(t===`sequence`)return`\`\`\`mermaid\nsequenceDiagram\n${(e.sequenceItems||[]).map((t,n)=>{let r=Ic(t.to||`${e.sequenceActorFallback||`Participant`} ${n+1}`),i=Ic(t.message||`${e.sequenceMessageFallback||`Message`} ${n+1}`);return t.type===`note`?` Note ${Ic(t.notePosition||`right of`)} ${r}: ${i}`:` ${Ic(t.from||`${e.sequenceActorFallback||`Participant`} ${n+1}`)} ${Ic(t.arrow||`->>`)} ${r}: ${i}`}).join(`
36
- `)}\n\`\`\``;if(t!==`pie`)return"```mermaid\n```\n";let n=Ic(e.pieTitle||e.title||e.pieTitleFallback||e.titleFallback||`DOC WORKFLOW`),r=Lc;return`\`\`\`mermaid\npie title ${n}\n${(e.pieItems||e.items||[]).map((t,n)=>{let i=(t.label||`${e.pieItemLabelFallback||e.itemLabelFallback||`Item`} ${n+1}`).trim().replace(/"/g,`\\"`),a=Number(t.value),o=Math.min(r,Number.isFinite(a)?Math.max(0,a):0);return r-=o,` "${i}" : ${o}`}).join(`
37
- `)}\n\`\`\``}function Qc(e){return`<span style="color:${e.color.border};">${e.content}</span>`}function $c(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 el(e){let t=Math.max(2,Math.min(6,Math.round(Number(e.columns))||2)),n=[];e.ratio?.trim()&&n.push(e.ratio.trim()),e.verticalAlign&&e.verticalAlign!==`center`&&n.push(`vertical-align: ${e.verticalAlign}`),e.textAlign&&n.push(`text-align: ${e.textAlign}`),e.gap&&e.gap!==`md`&&n.push(`gap: ${e.gap}`);let r=n.length?`<!-- layout-columns: ${n.join(` | `)} -->`:`<!-- layout-columns -->`,i=[];for(let n=1;n<=t;n+=1)i.push(`<!-- col -->\n\n${e.bodyFallback} ${n}`);return`${r}\n\n${i.join(`
33
+ `)}\n${t}`:t}function Jc(e,t){let n=Number(e.slice(-1)),r=Ic(t.text?.trim(),t.fallback);return`${`#`.repeat(n)} ${r}`}function Yc(e){let t=Ic(e.alt,`image`),n=Ic(e.url,`./images/mon-image.png`),r=As({width:e.width,align:e.align}),i=`![${t}](${n})`;return r?`${r}\n${i}`:i}function Xc(e){let t=is({style:e.style||``,border:e.bordered?`bordered`:``,color:e.color||``}),n=(t?`${t}\n`:``)+e.markdown;return e.inlineIndent?n.split(`
34
+ `).map(t=>e.inlineIndent+t).join(`
35
+ `):n}function Zc(e){return`[![${e.label}](./images/${e.imageName})](/diagram?id=${e.id})`}function Qc(e){let t=e.kind||`pie`;if(t===`timeline`){let t=Lc(e.timelineTitle||e.timelineTitleFallback||`DOCUMENTATION ROADMAP`),n=new Map;return(e.timelineItems||[]).forEach((t,r)=>{let i=Lc(t.period||`${e.timelinePeriodFallback||`Period`} ${r+1}`),a=Lc(t.event||`${e.timelineEventFallback||`Event`} ${r+1}`);n.set(i,[...n.get(i)||[],a])}),`\`\`\`mermaid\ntimeline\n title ${t}\n${[...n.entries()].map(([e,t])=>` ${e} : ${t.join(` : `)}`).join(`
36
+ `)}\n\`\`\``}if(t===`tree-view`)return`\`\`\`mermaid\ntreeView-beta\n${(e.treeItems||[]).map((t,n)=>{let r=Number(t.level),i=Number.isFinite(r)?Math.min(zc,Math.max(0,r)):0,a=` `.repeat((i+1)*Bc),o=Lc(t.label||`${e.treeLabelFallback||`Node`} ${n+1}`),s=Lc(t.decorator||``),c=Lc(t.note||``);return`${a}${o}${s?` ${s}`:``}${c?` ## ${c}`:``}`}).join(`
37
+ `)}\n\`\`\``;if(t===`sequence`)return`\`\`\`mermaid\nsequenceDiagram\n${(e.sequenceItems||[]).map((t,n)=>{let r=Lc(t.to||`${e.sequenceActorFallback||`Participant`} ${n+1}`),i=Lc(t.message||`${e.sequenceMessageFallback||`Message`} ${n+1}`);return t.type===`note`?` Note ${Lc(t.notePosition||`right of`)} ${r}: ${i}`:` ${Lc(t.from||`${e.sequenceActorFallback||`Participant`} ${n+1}`)} ${Lc(t.arrow||`->>`)} ${r}: ${i}`}).join(`
38
+ `)}\n\`\`\``;if(t!==`pie`)return"```mermaid\n```\n";let n=Lc(e.pieTitle||e.title||e.pieTitleFallback||e.titleFallback||`DOC WORKFLOW`),r=Rc;return`\`\`\`mermaid\npie title ${n}\n${(e.pieItems||e.items||[]).map((t,n)=>{let i=(t.label||`${e.pieItemLabelFallback||e.itemLabelFallback||`Item`} ${n+1}`).trim().replace(/"/g,`\\"`),a=Number(t.value),o=Math.min(r,Number.isFinite(a)?Math.max(0,a):0);return r-=o,` "${i}" : ${o}`}).join(`
39
+ `)}\n\`\`\``}function $c(e){return`<span style="color:${e.color.border};">${e.content}</span>`}function el(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 tl(e){let t=Math.max(2,Math.min(6,Math.round(Number(e.columns))||2)),n=[];e.ratio?.trim()&&n.push(e.ratio.trim()),e.verticalAlign&&e.verticalAlign!==`center`&&n.push(`vertical-align: ${e.verticalAlign}`),e.textAlign&&n.push(`text-align: ${e.textAlign}`),e.gap&&e.gap!==`md`&&n.push(`gap: ${e.gap}`);let r=n.length?`<!-- layout-columns: ${n.join(` | `)} -->`:`<!-- layout-columns -->`,i=[];for(let n=1;n<=t;n+=1)i.push(`<!-- col -->\n\n${e.bodyFallback} ${n}`);return`${r}\n\n${i.join(`
38
40
 
39
- `)}\n\n<!-- /layout-columns -->`}function tl(e,t){switch(e){case`collapsible`:return Bc(t);case`link`:return Vc(t);case`doc-link`:return Hc(t);case`anchor-link`:return Uc(t);case`anchor-doc-link`:return Wc(t);case`ordered-list`:return Nc(t.content);case`unordered-list`:return Pc(t.content);case`code-block`:return Gc(t);case`blockquote`:return Kc(t);case`separator`:return`
41
+ `)}\n\n<!-- /layout-columns -->`}function nl(e,t){switch(e){case`collapsible`:return Vc(t);case`link`:return Hc(t);case`doc-link`:return Uc(t);case`anchor-link`:return Wc(t);case`anchor-doc-link`:return Gc(t);case`ordered-list`:return Pc(t.content);case`unordered-list`:return Fc(t.content);case`code-block`:return Kc(t);case`blockquote`:return qc(t);case`separator`:return`
40
42
  ---
41
- `;case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return qc(e,t);case`image`:return Jc(t);case`table`:return Yc(t);case`tree`:return t.markdown;case`diagram`:return Xc(t);case`mermaid`:return Zc(t);case`colored-text`:return Qc(t);case`colored-section`:return $c(t);case`emojis`:return t.value;case`local-search`:return`<div data-ld-local-search></div>`;case`compare`:return`:::compare\n${t.content||``}\n:::`;case`columns`:return el(t);default:return``}}function nl(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}var rl=2,il=2,al=1,ol=1,sl=`snip-table-context-menu`;function cl(e){return{data:[],onPreview:e}}function ll(e){e.data=[Array.from({length:il},(e,t)=>`En-tête ${t+1}`),Array(il).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=``),xl(e)}function ul(e){for(e.data.length||(e.data=Array.from({length:rl},(e,t)=>Array.from({length:il},(e,n)=>t===0?`En-tête ${n+1}`:``)));e.data.length<al;)e.data.push([]);let t=Math.max(ol,...e.data.map(e=>e.length));e.data.forEach(e=>{for(;e.length<t;)e.push(``)})}function dl(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 fl(e,t){ul(e);let n=e.data[0]?.length??ol;e.data.forEach(e=>e.push(``)),xl(e),dl(t,n)}function pl(e,t,n=!1){ul(e);let r=e.data.length,i=e.data[0]?.length??ol;e.data.push(Array(i).fill(``)),xl(e),dl(r,Math.max(0,Math.min(t,i-1)),n)}function ml(e,t,n,r=!1){ul(e);let i=e.data.length,a=e.data[0]?.length??ol,o=Math.max(0,Math.min(t,i-1)),s=n;s=Math.max(0,Math.min(s,a-1)),dl(o,s,r)}function hl(e,t){vl(),ul(e);let n=e.data[0]?.length??ol;n<=ol||(e.data.forEach(e=>e.splice(t,1)),xl(e),dl(0,Math.max(0,Math.min(t,n-2))))}function gl(e,t){if(vl(),ul(e),e.data.length<=al)return;let n=e.data[0]?.length??ol;e.data.splice(t,1),xl(e),dl(Math.max(0,Math.min(t,e.data.length-1)),Math.min(n-1,0))}function _l(e,t,n){vl();let r=Number(t.dataset.tr),i=Number(t.dataset.tc),a=e.data.length,o=e.data[0]?.length??ol;if(n.key===`Tab`){if(n.preventDefault(),n.shiftKey){i>0?ml(e,r,i-1,!0):r>0?ml(e,r-1,o-1,!0):ml(e,r,i,!0);return}i<o-1?ml(e,r,i+1,!0):r<a-1?ml(e,r+1,0,!0):pl(e,0,!0);return}if(n.key===`ArrowUp`){n.preventDefault(),ml(e,r-1,i);return}if(n.key===`ArrowDown`){n.preventDefault(),r<a-1?ml(e,r+1,i):pl(e,i);return}if(n.key===`ArrowLeft`){n.preventDefault(),ml(e,r,i-1);return}n.key===`ArrowRight`&&(n.preventDefault(),i<o-1?ml(e,r,i+1):fl(e,r))}function vl(){document.getElementById(sl)?.remove()}function yl(e,t,n){n.preventDefault(),vl(),ul(e);let r=Number(t.dataset.tr),i=Number(t.dataset.tc),a=e.data.length>al,o=(e.data[0]?.length??ol)>ol,s=document.createElement(`div`);s.id=sl,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`,()=>gl(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`,()=>hl(e,i)),s.appendChild(l),document.body.appendChild(s),window.setTimeout(()=>{document.addEventListener(`click`,vl,{once:!0})},0)}function bl(){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 xl(e){ul(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="${bl()}"><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="${nl(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=>_l(e,t,n)),t.addEventListener(`contextmenu`,n=>yl(e,t,n)),t.addEventListener(`mouseup`,n=>{n.button===2&&yl(e,t,n)})})),e.onPreview()}function Sl(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(`
42
- `)}function Cl(e){let t=rs(e),n=e.split(`
43
- `).filter(e=>/^\|.*\|$/.test(e.trim())).filter(e=>!os(e)).map(as),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 wl(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function Tl(e){return{items:[],onPreview:e}}function El(e){e.items=[{name:`dossier/`,depth:0},{name:`fichier.md`,depth:1}],Dl(e)}function Dl(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)=>`
43
+ `;case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return Jc(e,t);case`image`:return Yc(t);case`table`:return Xc(t);case`tree`:return t.markdown;case`diagram`:return Zc(t);case`mermaid`:return Qc(t);case`colored-text`:return $c(t);case`colored-section`:return el(t);case`emojis`:return t.value;case`local-search`:return`<div data-ld-local-search></div>`;case`compare`:return`:::compare\n${t.content||``}\n:::`;case`columns`:return tl(t);default:return``}}function rl(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}var il=2,al=2,ol=1,sl=1,cl=`snip-table-context-menu`;function ll(e){return{data:[],onPreview:e}}function ul(e){e.data=[Array.from({length:al},(e,t)=>`En-tête ${t+1}`),Array(al).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=``),Sl(e)}function dl(e){for(e.data.length||(e.data=Array.from({length:il},(e,t)=>Array.from({length:al},(e,n)=>t===0?`En-tête ${n+1}`:``)));e.data.length<ol;)e.data.push([]);let t=Math.max(sl,...e.data.map(e=>e.length));e.data.forEach(e=>{for(;e.length<t;)e.push(``)})}function fl(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 pl(e,t){dl(e);let n=e.data[0]?.length??sl;e.data.forEach(e=>{e.push(``)}),Sl(e),fl(t,n)}function ml(e,t,n=!1){dl(e);let r=e.data.length,i=e.data[0]?.length??sl;e.data.push(Array(i).fill(``)),Sl(e),fl(r,Math.max(0,Math.min(t,i-1)),n)}function hl(e,t,n,r=!1){dl(e);let i=e.data.length,a=e.data[0]?.length??sl,o=Math.max(0,Math.min(t,i-1)),s=n;s=Math.max(0,Math.min(s,a-1)),fl(o,s,r)}function gl(e,t){yl(),dl(e);let n=e.data[0]?.length??sl;n<=sl||(e.data.forEach(e=>{e.splice(t,1)}),Sl(e),fl(0,Math.max(0,Math.min(t,n-2))))}function _l(e,t){if(yl(),dl(e),e.data.length<=ol)return;let n=e.data[0]?.length??sl;e.data.splice(t,1),Sl(e),fl(Math.max(0,Math.min(t,e.data.length-1)),Math.min(n-1,0))}function vl(e,t,n){yl();let r=Number(t.dataset.tr),i=Number(t.dataset.tc),a=e.data.length,o=e.data[0]?.length??sl;if(n.key===`Tab`){if(n.preventDefault(),n.shiftKey){i>0?hl(e,r,i-1,!0):r>0?hl(e,r-1,o-1,!0):hl(e,r,i,!0);return}i<o-1?hl(e,r,i+1,!0):r<a-1?hl(e,r+1,0,!0):ml(e,0,!0);return}if(n.key===`ArrowUp`){n.preventDefault(),hl(e,r-1,i);return}if(n.key===`ArrowDown`){n.preventDefault(),r<a-1?hl(e,r+1,i):ml(e,i);return}if(n.key===`ArrowLeft`){n.preventDefault(),hl(e,r,i-1);return}n.key===`ArrowRight`&&(n.preventDefault(),i<o-1?hl(e,r,i+1):pl(e,r))}function yl(){document.getElementById(cl)?.remove()}function bl(e,t,n){n.preventDefault(),yl(),dl(e);let r=Number(t.dataset.tr),i=Number(t.dataset.tc),a=e.data.length>ol,o=(e.data[0]?.length??sl)>sl,s=document.createElement(`div`);s.id=cl,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`,()=>_l(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`,()=>gl(e,i)),s.appendChild(l),document.body.appendChild(s),window.setTimeout(()=>{document.addEventListener(`click`,yl,{once:!0})},0)}function xl(){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 Sl(e){dl(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="${xl()}"><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="${rl(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=>vl(e,t,n)),t.addEventListener(`contextmenu`,n=>bl(e,t,n)),t.addEventListener(`mouseup`,n=>{n.button===2&&bl(e,t,n)})})),e.onPreview()}function Cl(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(`
44
+ `)}function wl(e){let t=e.replace(/^\s{0,3}(?:> ?)+/gm,``),n=rs(t),r=t.split(`
45
+ `).filter(e=>/^\|.*\|$/.test(e.trim())).filter(e=>!os(e)).map(as),i=r.length?Math.max(...r.map(e=>e.length)):0;return r.forEach(e=>{for(;e.length<i;)e.push(``)}),{attrs:n,rows:r}}function Tl(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function El(e){return{items:[],onPreview:e}}function Dl(e){e.items=[{name:`dossier/`,depth:0},{name:`fichier.md`,depth:1}],Ol(e)}function Ol(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)=>`
44
46
  <div class="flex items-center gap-1">
45
47
  <button data-tree-indent="${n}" data-tree-delta="-1" ${e.depth===0?`disabled`:``} class="${t}" title="Désindenter">←</button>
46
48
  <button data-tree-indent="${n}" data-tree-delta="1" class="${t}" title="Indenter">→</button>
47
49
  <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>
48
- <input type="text" value="${wl(e.name)}" data-tree-name="${n}"
50
+ <input type="text" value="${Tl(e.name)}" data-tree-name="${n}"
49
51
  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" />
50
52
  <button data-tree-remove="${n}" class="${t}" title="Supprimer">×</button>
51
- </div>`).join(``),n.querySelectorAll(`button[data-tree-indent]`).forEach(t=>{t.addEventListener(`click`,()=>Ol(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`,()=>Al(e,Number(t.dataset.treeRemove)))}),e.onPreview())}function Ol(e,t,n){e.items[t].depth=Math.max(0,e.items[t].depth+n),Dl(e)}function kl(e){let t=e.items.length?e.items[e.items.length-1].depth:0;e.items.push({name:``,depth:t}),Dl(e)}function Al(e,t){e.items.splice(t,1),Dl(e)}function jl(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(`
52
- `)}\n\`\`\``}function Ml(e){return{items:e.replace(/^```text\n/,``).replace(/\n```$/,``).split(`
53
- `).map(e=>{let t=e.match(/^((?:│ {3}| {4})*)(?:├── |└── )([\s\S]+)$/);return t?{name:t[2],depth:t[1].length/4+1}:{name:e,depth:0}})}}function Nl(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 Pl(e){let t=e.match(/^\[([\s\S]*?)\]\(([\s\S]*?)\)$/);return t?{text:t[1],url:t[2]}:{}}function Fl(e){let t=e.match(/^\[([\s\S]*?)\]\(\?doc=([\s\S]*?)\)$/);return t?{text:t[1],docId:decodeURIComponent(t[2])}:{}}function Il(e){let t=e.match(/^\[([\s\S]*?)\]\(#([\s\S]*?)\)$/);return t?{text:t[1],anchor:t[2]}:{}}function Ll(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 Rl(e,t={}){let n=Bs(e,t.inlineIndent||``),r=Hs(n),i=Vs(n).match(/^```[ \t]*([^\n]*)\n([\s\S]*?)\n[ \t]*```$/);return i?{lang:i[1].trim(),code:i[2],width:r.width||``,align:r.align||``}:{lang:``,code:``,width:``,align:``}}var zl=/^<!--\s*quote-type:\s*([a-z][a-z0-9_-]*)\s*-->$/,Bl=/^<!--\s*quote-title:\s*(.+?)\s*-->$/,Vl=/^<!--\s*quote-icon\s*-->$/,Hl={note:`info`,tip:`success`,caution:`warning`,danger:`error`};function Ul(e){let t=e.split(`
54
- `),n=``,r=``,i=!1,a=[],o=!1;for(let e of t){if(!o){let t=e.match(zl);if(t){n=Hl[t[1]]??t[1];continue}let a=e.match(Bl);if(a){r=a[1];continue}if(Vl.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(`
55
- `)}}function Wl(e){let t=Os(e),n=e.match(/!\[([^\]\n]*?)\]\(([^\n]+?)\)\s*$/);return n?{alt:n[1],url:n[2],width:t.width||``,align:t.align||``}:{width:t.width||``,align:t.align||``}}function Gl(e,t){let n=Number(e.slice(-1)),r=t.match(RegExp(`^#{${n}}\\s+(.+)$`));return{text:r?r[1].trim():``}}function Kl(e){let t=e.match(/^<span\s[^>]*color:([^;>"]+)[^>]*>([\s\S]*)<\/span>$/);return t?{color:t[1].trim(),content:t[2]}:{}}function ql(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 Jl(e,t,n={}){let r=(t||``).trim();switch(e){case`collapsible`:return Nl(r);case`link`:return Pl(r);case`doc-link`:return Fl(r);case`anchor-link`:return Il(r);case`anchor-doc-link`:return Ll(r);case`ordered-list`:case`unordered-list`:return{content:r};case`code-block`:return Rl(t||``,n);case`blockquote`:return Ul(r);case`image`:return Wl(r);case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return Gl(e,r);case`table`:return Cl(r);case`tree`:return Ml(r);case`colored-text`:return Kl(r);case`colored-section`:return ql(r);case`compare`:{let e=r.match(/^:::compare[ \t]*\n([\s\S]*?)\n?:::[ \t]*$/);return{content:e?e[1]:``}}default:return{}}}function Yl(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(/^<!--\s*image-(?:width|align):/.test(t)||/^!\[.*?\]\(.*?\)$/.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(/^<!--\s*(?:code|mermaid)-(?:width|align):/.test(t)||/^```/.test(t))return`code-block`;if(ss(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`:Ac(t)?`ordered-list`:jc(t)?`unordered-list`:null}var Xl=U(`<p class="confirm-kicker"> </p>`),Zl=U(`<p class="confirm-message" id="confirm-modal-message" data-testid="confirm-modal-message"> </p>`),Ql=U(`<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>`),$l=U(`<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 eu(e,t){qe(t,!0);let n=P(!1),r=P(I({title:``,confirmLabel:`OK`})),i=null;function a(e){return F(r,e,!0),F(n,!0),new Promise(e=>{i=e})}function o(){F(n,!1),i?.(!0),i=null}function s(){F(n,!1),i?.(!1),i=null}var c={show:a},l=Wr(),u=R(l),d=e=>{var t=$l(),n=L(t),i=L(n),a=e=>{var t=Xl(),n=L(t,!0);j(t),B(()=>G(n,V(r).kicker)),W(e,t)};K(i,e=>{V(r).kicker&&e(a)});var c=z(i,2),l=L(c,!0);j(c);var u=z(c,2),d=e=>{var t=Zl(),n=L(t,!0);j(t),B(()=>G(n,V(r).message)),W(e,t)};K(u,e=>{V(r).message&&e(d)});var f=z(u,2),p=e=>{var t=Ql(),n=L(t,!0);j(t),B(()=>G(n,V(r).detail)),W(e,t)};K(f,e=>{V(r).detail&&e(p)});var m=z(f,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=L(_,!0);j(_),j(m),j(n),j(t),B(()=>{G(l,V(r).title),G(g,V(r).cancelLabel??`Cancel`),gi(_,1,ui(V(r).danger?`danger-button`:`primary-button`)),G(v,V(r).confirmLabel)}),H(`click`,t,e=>{e.target===e.currentTarget&&s()}),H(`click`,h,s),H(`click`,_,o),W(e,t)};return K(u,e=>{V(n)&&e(d)}),W(e,l),Je(c)}Pr([`click`]);var tu=U(`<div class="grid grid-cols-[minmax(0,1fr)_7rem_auto] gap-2 items-center"><input 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"/> <input type="number" min="0" step="1" placeholder="0" 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),nu=U(`<div class="grid grid-cols-[8rem_minmax(0,1fr)_auto] gap-2 items-center"><input 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"/> <input 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),ru=U(`<div class="grid grid-cols-[5rem_minmax(0,1.2fr)_minmax(0,1fr)_minmax(0,1fr)_auto] gap-2 items-center"><input type="number" min="0" step="1" placeholder="0" 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"/> <input 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"/> <input 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"/> <input 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),iu=U(`<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"><option> </option><option> </option><option> </option></select>`),au=U(`<input 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"/>`),ou=U(`<div class="grid grid-cols-[7rem_minmax(0,1fr)_7rem_minmax(0,1fr)_minmax(0,1.4fr)_auto] gap-2 items-center"><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"><option> </option><option> </option></select> <!> <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 disabled:opacity-40"><option>-&gt;&gt;</option><option>--&gt;&gt;</option><option>--x</option><option>-x</option><option>--&gt;</option><option>-&gt;</option></select> <input 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"/> <input 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),su=U(`<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><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="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-code-width" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-code-width" 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><option> </option></select></div> <div class="flex items-center gap-2"><label for="snip-code-align" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-code-align" 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></select></div></div> <p class="text-xs text-gray-400 dark:text-gray-500"> </p> <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-mermaid" class="hidden space-y-4"><div class="space-y-1.5"><label for="snip-mermaid-type" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <select id="snip-mermaid-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> </option><option> </option><option> </option><option> </option></select></div> <div id="snip-mermaid-pie-builder"><div class="space-y-1.5"><label for="snip-mermaid-pie-title" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-mermaid-pie-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-2"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button></div> <div class="space-y-2"></div></div></div> <div id="snip-mermaid-timeline-builder"><div class="space-y-1.5"><label for="snip-mermaid-timeline-title" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-mermaid-timeline-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-2"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button></div> <div class="space-y-2"></div></div></div> <div id="snip-mermaid-tree-builder"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button></div> <div class="space-y-2"></div></div> <div id="snip-mermaid-sequence-builder"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex items-center gap-2"><button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-note-sticky mr-1" aria-hidden="true"></i> </button></div></div> <div class="space-y-2"></div></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="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-image-width" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-image-width" 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><option> </option></select></div> <div class="flex items-center gap-2"><label for="snip-image-align" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-image-align" 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></select></div></div> <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-columns" class="hidden space-y-3"><div class="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-columns-count" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-count" 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>2</option><option>3</option><option>4</option></select></div> <div class="flex items-center gap-2"><label for="snip-columns-valign" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-valign" 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></select></div> <div class="flex items-center gap-2"><label for="snip-columns-text" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-text" 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> <div class="flex items-center gap-2"><label for="snip-columns-gap" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-gap" 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 selected=""> </option><option> </option></select></div></div> <div class="space-y-1.5"><label for="snip-columns-ratio" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-columns-ratio" 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> <p class="text-xs text-gray-400 dark:text-gray-500"> </p></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>`),cu=U(`<!> <!>`,1);function lu(e,t){qe(t,!0);let n=Wi(t,`editor`,7),r=Wi(t,`mode`,3,`insert`),i=Wi(t,`content`,3,``),a=Wi(t,`range`,3,null),o=Wi(t,`insertPos`,3,0),s=Wi(t,`onsave`,3,void 0),c=0,l=0,u=``,d=P(null),f=`info`,p=`info`,m=P(`pie`),h=1,g=P(I([])),_=1,v=P(I([])),y=1,b=P(I([])),x=1,S=P(I([])),C=[{labelKey:`snippet.mermaid_pie_default_item_1`,value:`50`},{labelKey:`snippet.mermaid_pie_default_item_2`,value:`30`},{labelKey:`snippet.mermaid_pie_default_item_3`,value:`20`}],w=[{period:`2023`,eventKey:`snippet.mermaid_timeline_default_event_1`},{period:`2024`,eventKey:`snippet.mermaid_timeline_default_event_2`},{period:`2024`,eventKey:`snippet.mermaid_timeline_default_event_3`},{period:`2025`,eventKey:`snippet.mermaid_timeline_default_event_4`},{period:`2026`,eventKey:`snippet.mermaid_timeline_default_event_5`}],T=[{level:`0`,labelKey:`snippet.mermaid_tree_default_label_1`,decorator:``,noteKey:``},{level:`1`,labelKey:`snippet.mermaid_tree_default_label_2`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_2`},{level:`2`,labelKey:`snippet.mermaid_tree_default_label_3`,decorator:`:::highlight`,noteKey:`snippet.mermaid_tree_default_note_3`},{level:`2`,labelKey:`snippet.mermaid_tree_default_label_4`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_4`},{level:`1`,labelKey:`snippet.mermaid_tree_default_label_5`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_5`},{level:`1`,labelKey:`snippet.mermaid_tree_default_label_6`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_6`}],E=[{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_1`,arrow:`->>`,toKey:`snippet.mermaid_sequence_default_actor_2`,messageKey:`snippet.mermaid_sequence_default_message_1`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_2`,arrow:`-->>`,toKey:`snippet.mermaid_sequence_default_actor_3`,messageKey:`snippet.mermaid_sequence_default_message_2`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_3`,arrow:`--x`,toKey:`snippet.mermaid_sequence_default_actor_1`,messageKey:`snippet.mermaid_sequence_default_message_3`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_2`,arrow:`-x`,toKey:`snippet.mermaid_sequence_default_actor_3`,messageKey:`snippet.mermaid_sequence_default_message_4`,notePosition:`right of`},{type:`note`,fromKey:``,arrow:`->>`,toKey:`snippet.mermaid_sequence_default_actor_3`,messageKey:`snippet.mermaid_sequence_default_note_1`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_3`,arrow:`-->`,toKey:`snippet.mermaid_sequence_default_actor_1`,messageKey:`snippet.mermaid_sequence_default_message_5`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_1`,arrow:`->`,toKey:`snippet.mermaid_sequence_default_actor_2`,messageKey:`snippet.mermaid_sequence_default_message_6`,notePosition:`right of`}],D=cl(()=>M()),ee=Tl(()=>M());function O(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function k(e){return document.getElementById(e)}function te(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 ne(e){let t=xc[e];return te(t?Y(t):e)}function re(){let e=k(`snippet-picker-categories`);if(e){e.innerHTML=``;for(let t of vc){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-6 gap-2`;for(let e of t.types){let t=yc[bc[e]||`indigo`]||yc.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=()=>ce(e);let r=document.createElement(`i`);r.className=(_c[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=ne(e),n.appendChild(a),i.appendChild(n)}n.appendChild(i),e.appendChild(n)}}}function ie(){re(),k(`snippet-picker`)?.classList.remove(`hidden`),k(`snippet-picker-back`)?.classList.add(`hidden`),k(`snippet-submit-btn`)?.classList.add(`hidden`),mc.forEach(e=>k(`snip-panel-`+e)?.classList.add(`hidden`)),k(`snippet-preview-wrap`)?.classList.add(`hidden`);let e=k(`snippet-picker-search`);e&&(e.value=``,ae(``),setTimeout(()=>e.focus(),50))}function A(e=!0){k(`snippet-picker`)?.classList.add(`hidden`),k(`snippet-submit-btn`)?.classList.remove(`hidden`),k(`snippet-picker-back`)?.classList.toggle(`hidden`,!e)}function ae(e){let t=k(`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}),k(`snippet-picker-no-results`)?.classList.toggle(`hidden`,r>0)}function oe(){let e=k(`snippet-picker-search`);ae(e?e.value:``)}function se(e){if(e.key===`Enter`){e.preventDefault();let t=document.querySelector(`#snippet-picker-categories [data-snippet-type]:not(.hidden)`);t&&ce(t.dataset.snippetType)}}function ce(e){let t=k(`snippet-type`);t&&(t.value=e),Ae(),A()}function le(){ie()}let ue=!1;function de(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 fe(){return Cc.map(e=>`
53
+ </div>`).join(``),n.querySelectorAll(`button[data-tree-indent]`).forEach(t=>{t.addEventListener(`click`,()=>kl(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`,()=>jl(e,Number(t.dataset.treeRemove)))}),e.onPreview())}function kl(e,t,n){e.items[t].depth=Math.max(0,e.items[t].depth+n),Ol(e)}function Al(e){let t=e.items.length?e.items[e.items.length-1].depth:0;e.items.push({name:``,depth:t}),Ol(e)}function jl(e,t){e.items.splice(t,1),Ol(e)}function Ml(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(`
54
+ `)}\n\`\`\``}function Nl(e){return{items:e.replace(/^```text\n/,``).replace(/\n```$/,``).split(`
55
+ `).map(e=>{let t=e.match(/^((?:│ {3}| {4})*)(?:├── |└── )([\s\S]+)$/);return t?{name:t[2],depth:t[1].length/4+1}:{name:e,depth:0}})}}function Pl(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 Fl(e){let t=e.match(/^\[([\s\S]*?)\]\(([\s\S]*?)\)$/);return t?{text:t[1],url:t[2]}:{}}function Il(e){let t=e.match(/^\[([\s\S]*?)\]\(\?doc=([\s\S]*?)\)$/);return t?{text:t[1],docId:decodeURIComponent(t[2])}:{}}function Ll(e){let t=e.match(/^\[([\s\S]*?)\]\(#([\s\S]*?)\)$/);return t?{text:t[1],anchor:t[2]}:{}}function Rl(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 zl(e,t={}){let n=Vs(e,t.inlineIndent||``),r=Us(n),i=Hs(n).match(/^```[ \t]*([^\n]*)\n([\s\S]*?)\n[ \t]*```$/);return i?{lang:i[1].trim(),code:i[2],width:r.width||``,align:r.align||``}:{lang:``,code:``,width:``,align:``}}var Bl=/^<!--\s*quote-type:\s*([a-z][a-z0-9_-]*)\s*-->$/,Vl=/^<!--\s*quote-title:\s*(.+?)\s*-->$/,Hl=/^<!--\s*quote-icon\s*-->$/,Ul={note:`info`,tip:`success`,caution:`warning`,danger:`error`};function Wl(e){let t=e.split(`
56
+ `),n=``,r=``,i=!1,a=[],o=!1;for(let e of t){if(!o){let t=e.match(Bl);if(t){n=Ul[t[1]]??t[1];continue}let a=e.match(Vl);if(a){r=a[1];continue}if(Hl.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(`
57
+ `)}}function Gl(e){let t=ks(e),n=e.match(/!\[([^\]\n]*?)\]\(([^\n]+?)\)\s*$/);return n?{alt:n[1],url:n[2],width:t.width||``,align:t.align||``}:{width:t.width||``,align:t.align||``}}function Kl(e,t){let n=Number(e.slice(-1)),r=t.match(RegExp(`^#{${n}}\\s+(.+)$`));return{text:r?r[1].trim():``}}function ql(e){let t=e.match(/^<span\s[^>]*color:([^;>"]+)[^>]*>([\s\S]*)<\/span>$/);return t?{color:t[1].trim(),content:t[2]}:{}}function Jl(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 Yl(e,t,n={}){let r=(t||``).trim();switch(e){case`collapsible`:return Pl(r);case`link`:return Fl(r);case`doc-link`:return Il(r);case`anchor-link`:return Ll(r);case`anchor-doc-link`:return Rl(r);case`ordered-list`:case`unordered-list`:return{content:r};case`code-block`:return zl(t||``,n);case`blockquote`:return Wl(r);case`image`:return Gl(r);case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return Kl(e,r);case`table`:return wl(r);case`tree`:return Nl(r);case`colored-text`:return ql(r);case`colored-section`:return Jl(r);case`compare`:{let e=r.match(/^:::compare[ \t]*\n([\s\S]*?)\n?:::[ \t]*$/);return{content:e?e[1]:``}}default:return{}}}function Xl(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(/^<!--\s*image-(?:width|align):/.test(t)||/^!\[.*?\]\(.*?\)$/.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(/^<!--\s*(?:code|mermaid)-(?:width|align):/.test(t)||/^```/.test(t))return`code-block`;if(ss(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`:jc(t)?`ordered-list`:Mc(t)?`unordered-list`:null}var Zl=U(`<p class="confirm-kicker"> </p>`),Ql=U(`<p class="confirm-message" id="confirm-modal-message" data-testid="confirm-modal-message"> </p>`),$l=U(`<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>`),eu=U(`<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 tu(e,t){qe(t,!0);let n=P(!1),r=P(I({title:``,confirmLabel:`OK`})),i=null;function a(e){return F(r,e,!0),F(n,!0),new Promise(e=>{i=e})}function o(){F(n,!1),i?.(!0),i=null}function s(){F(n,!1),i?.(!1),i=null}var c={show:a},l=Wr(),u=R(l),d=e=>{var t=eu(),n=L(t),i=L(n),a=e=>{var t=Zl(),n=L(t,!0);j(t),B(()=>G(n,V(r).kicker)),W(e,t)};K(i,e=>{V(r).kicker&&e(a)});var c=z(i,2),l=L(c,!0);j(c);var u=z(c,2),d=e=>{var t=Ql(),n=L(t,!0);j(t),B(()=>G(n,V(r).message)),W(e,t)};K(u,e=>{V(r).message&&e(d)});var f=z(u,2),p=e=>{var t=$l(),n=L(t,!0);j(t),B(()=>G(n,V(r).detail)),W(e,t)};K(f,e=>{V(r).detail&&e(p)});var m=z(f,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=L(_,!0);j(_),j(m),j(n),j(t),B(()=>{G(l,V(r).title),G(g,V(r).cancelLabel??`Cancel`),gi(_,1,ui(V(r).danger?`danger-button`:`primary-button`)),G(v,V(r).confirmLabel)}),H(`click`,t,e=>{e.target===e.currentTarget&&s()}),H(`click`,h,s),H(`click`,_,o),W(e,t)};return K(u,e=>{V(n)&&e(d)}),W(e,l),Je(c)}Pr([`click`]);var nu=U(`<div class="grid grid-cols-[minmax(0,1fr)_7rem_auto] gap-2 items-center"><input 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"/> <input type="number" min="0" step="1" placeholder="0" 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),ru=U(`<div class="grid grid-cols-[8rem_minmax(0,1fr)_auto] gap-2 items-center"><input 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"/> <input 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),iu=U(`<div class="grid grid-cols-[5rem_minmax(0,1.2fr)_minmax(0,1fr)_minmax(0,1fr)_auto] gap-2 items-center"><input type="number" min="0" step="1" placeholder="0" 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"/> <input 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"/> <input 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"/> <input 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),au=U(`<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"><option> </option><option> </option><option> </option></select>`),ou=U(`<input 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"/>`),su=U(`<div class="grid grid-cols-[7rem_minmax(0,1fr)_7rem_minmax(0,1fr)_minmax(0,1.4fr)_auto] gap-2 items-center"><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"><option> </option><option> </option></select> <!> <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 disabled:opacity-40"><option>-&gt;&gt;</option><option>--&gt;&gt;</option><option>--x</option><option>-x</option><option>--&gt;</option><option>-&gt;</option></select> <input 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"/> <input 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"/> <button type="button" class="w-9 h-9 inline-flex items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-40 disabled:pointer-events-none"><i class="fa-solid fa-trash" aria-hidden="true"></i></button></div>`),cu=U(`<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><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="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-code-width" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-code-width" 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><option> </option></select></div> <div class="flex items-center gap-2"><label for="snip-code-align" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-code-align" 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></select></div></div> <p class="text-xs text-gray-400 dark:text-gray-500"> </p> <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-mermaid" class="hidden space-y-4"><div class="space-y-1.5"><label for="snip-mermaid-type" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <select id="snip-mermaid-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> </option><option> </option><option> </option><option> </option></select></div> <div id="snip-mermaid-pie-builder"><div class="space-y-1.5"><label for="snip-mermaid-pie-title" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-mermaid-pie-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-2"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button></div> <div class="space-y-2"></div></div></div> <div id="snip-mermaid-timeline-builder"><div class="space-y-1.5"><label for="snip-mermaid-timeline-title" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-mermaid-timeline-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-2"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button></div> <div class="space-y-2"></div></div></div> <div id="snip-mermaid-tree-builder"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button></div> <div class="space-y-2"></div></div> <div id="snip-mermaid-sequence-builder"><div class="flex items-center justify-between gap-3"><label class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <div class="flex items-center gap-2"><button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-plus mr-1" aria-hidden="true"></i> </button> <button type="button" class="text-xs px-3 py-1.5 rounded-lg border border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"><i class="fa-solid fa-note-sticky mr-1" aria-hidden="true"></i> </button></div></div> <div class="space-y-2"></div></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="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-image-width" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-image-width" 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><option> </option></select></div> <div class="flex items-center gap-2"><label for="snip-image-align" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-image-align" 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></select></div></div> <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-columns" class="hidden space-y-3"><div class="flex items-center gap-5 flex-wrap"><div class="flex items-center gap-2"><label for="snip-columns-count" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-count" 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>2</option><option>3</option><option>4</option></select></div> <div class="flex items-center gap-2"><label for="snip-columns-valign" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-valign" 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></select></div> <div class="flex items-center gap-2"><label for="snip-columns-text" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-text" 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> <div class="flex items-center gap-2"><label for="snip-columns-gap" class="text-xs text-gray-500 dark:text-gray-400"> </label> <select id="snip-columns-gap" 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 selected=""> </option><option> </option></select></div></div> <div class="space-y-1.5"><label for="snip-columns-ratio" class="block text-xs font-medium text-gray-500 dark:text-gray-400"> </label> <input id="snip-columns-ratio" 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> <p class="text-xs text-gray-400 dark:text-gray-500"> </p></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>`),lu=U(`<!> <!>`,1);function uu(e,t){qe(t,!0);let n=Wi(t,`editor`,7),r=Wi(t,`mode`,3,`insert`),i=Wi(t,`content`,3,``),a=Wi(t,`range`,3,null),o=Wi(t,`insertPos`,3,0),s=Wi(t,`onsave`,3,void 0),c=0,l=0,u=``,d=P(null),f=`info`,p=`info`,m=P(`pie`),h=1,g=P(I([])),_=1,v=P(I([])),y=1,b=P(I([])),x=1,S=P(I([])),C=[{labelKey:`snippet.mermaid_pie_default_item_1`,value:`50`},{labelKey:`snippet.mermaid_pie_default_item_2`,value:`30`},{labelKey:`snippet.mermaid_pie_default_item_3`,value:`20`}],w=[{period:`2023`,eventKey:`snippet.mermaid_timeline_default_event_1`},{period:`2024`,eventKey:`snippet.mermaid_timeline_default_event_2`},{period:`2024`,eventKey:`snippet.mermaid_timeline_default_event_3`},{period:`2025`,eventKey:`snippet.mermaid_timeline_default_event_4`},{period:`2026`,eventKey:`snippet.mermaid_timeline_default_event_5`}],T=[{level:`0`,labelKey:`snippet.mermaid_tree_default_label_1`,decorator:``,noteKey:``},{level:`1`,labelKey:`snippet.mermaid_tree_default_label_2`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_2`},{level:`2`,labelKey:`snippet.mermaid_tree_default_label_3`,decorator:`:::highlight`,noteKey:`snippet.mermaid_tree_default_note_3`},{level:`2`,labelKey:`snippet.mermaid_tree_default_label_4`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_4`},{level:`1`,labelKey:`snippet.mermaid_tree_default_label_5`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_5`},{level:`1`,labelKey:`snippet.mermaid_tree_default_label_6`,decorator:``,noteKey:`snippet.mermaid_tree_default_note_6`}],E=[{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_1`,arrow:`->>`,toKey:`snippet.mermaid_sequence_default_actor_2`,messageKey:`snippet.mermaid_sequence_default_message_1`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_2`,arrow:`-->>`,toKey:`snippet.mermaid_sequence_default_actor_3`,messageKey:`snippet.mermaid_sequence_default_message_2`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_3`,arrow:`--x`,toKey:`snippet.mermaid_sequence_default_actor_1`,messageKey:`snippet.mermaid_sequence_default_message_3`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_2`,arrow:`-x`,toKey:`snippet.mermaid_sequence_default_actor_3`,messageKey:`snippet.mermaid_sequence_default_message_4`,notePosition:`right of`},{type:`note`,fromKey:``,arrow:`->>`,toKey:`snippet.mermaid_sequence_default_actor_3`,messageKey:`snippet.mermaid_sequence_default_note_1`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_3`,arrow:`-->`,toKey:`snippet.mermaid_sequence_default_actor_1`,messageKey:`snippet.mermaid_sequence_default_message_5`,notePosition:`right of`},{type:`message`,fromKey:`snippet.mermaid_sequence_default_actor_1`,arrow:`->`,toKey:`snippet.mermaid_sequence_default_actor_2`,messageKey:`snippet.mermaid_sequence_default_message_6`,notePosition:`right of`}],D=ll(()=>M()),ee=El(()=>M());function O(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function k(e){return document.getElementById(e)}function te(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 ne(e){let t=Sc[e];return te(t?Y(t):e)}function re(){let e=k(`snippet-picker-categories`);if(e){e.innerHTML=``;for(let t of yc){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-6 gap-2`;for(let e of t.types){let t=bc[xc[e]||`indigo`]||bc.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=()=>ce(e);let r=document.createElement(`i`);r.className=(vc[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=ne(e),n.appendChild(a),i.appendChild(n)}n.appendChild(i),e.appendChild(n)}}}function ie(){re(),k(`snippet-picker`)?.classList.remove(`hidden`),k(`snippet-picker-back`)?.classList.add(`hidden`),k(`snippet-submit-btn`)?.classList.add(`hidden`),hc.forEach(e=>k(`snip-panel-`+e)?.classList.add(`hidden`)),k(`snippet-preview-wrap`)?.classList.add(`hidden`);let e=k(`snippet-picker-search`);e&&(e.value=``,ae(``),setTimeout(()=>e.focus(),50))}function A(e=!0){k(`snippet-picker`)?.classList.add(`hidden`),k(`snippet-submit-btn`)?.classList.remove(`hidden`),k(`snippet-picker-back`)?.classList.toggle(`hidden`,!e)}function ae(e){let t=k(`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}),k(`snippet-picker-no-results`)?.classList.toggle(`hidden`,r>0)}function oe(){let e=k(`snippet-picker-search`);ae(e?e.value:``)}function se(e){if(e.key===`Enter`){e.preventDefault();let t=document.querySelector(`#snippet-picker-categories [data-snippet-type]:not(.hidden)`);t&&ce(t.dataset.snippetType)}}function ce(e){let t=k(`snippet-type`);t&&(t.value=e),Ae(),A()}function le(){ie()}let ue=!1;function de(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 fe(){return wc.map(e=>`
56
58
  <div>
57
59
  <div class="text-xs font-semibold text-gray-500 dark:text-gray-400 mb-1 px-1">${Y(e.label)}</div>
58
60
  <div class="flex flex-wrap gap-1">
59
61
  ${e.emojis.map(de).join(``)}
60
62
  </div>
61
63
  </div>
62
- `).join(``)}function pe(e){let t=e.toLowerCase().trim(),n=[];for(let r of Cc)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(de).join(``)}</div>`}function me(){let e=k(`snip-emoji-grid`);if(!e)return;e.innerHTML=fe(),ue||=(e.addEventListener(`click`,e=>{let t=e.target.closest(`.emoji-btn`);t&&t.dataset.emoji&&ge(t.dataset.emoji)}),k(`snip-emoji-search`)?.addEventListener(`input`,e=>he(e.target.value)),!0);let t=k(`snip-emoji-search`);t&&(t.value=``),M()}function he(e){let t=k(`snip-emoji-grid`);if(!t)return;let n=(e||``).trim();t.innerHTML=n.length<2?fe():pe(n)}function ge(e){let t=k(`snip-emoji-string`);t&&(t.value+=e,M())}function _e(){let e=k(`snip-emoji-string`);e&&(e.value=``,M())}let ve={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 ye(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(ve[t]||`ring-blue-400`),f=t,M()}function be(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(ve[t]||`ring-blue-400`),p=t,M()}function xe(e){return Sc[e]||Sc.info}function Se(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 Ce(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}function we(e){let t=[],n=(e||``).split(`
63
- `),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=Se(n[2]),a=Ce(i);a&&t.push({level:n[1].length,text:i,slug:a})}return t}function Te(){return we(n()?n().value:``)}function Ee(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="${O(e.slug)}">${O(t+e.text)}</option>`}).join(``)}}function De(){Ee(k(`snip-anchor-id`),Te(),`snippet.link_anchor_no_headings`)}async function Oe(){let e=k(`snip-anchor-doc-select`),t=k(`snip-anchor-doc-id`);if(!e||!t)return;let n=e.value;if(!n){Ee(t,[],`snippet.link_anchor_no_headings`),M();return}t.innerHTML=`<option value="" disabled selected>${Y(`common.loading`)}</option>`;try{Ee(t,we((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{Ee(t,[],`snippet.link_anchor_no_headings`)}M()}function ke(e,t){let n=k(e);n&&n.value.trim()===``&&(n.value=t)}function Ae(){let e=k(`snippet-type`).value,t=gc(e);mc.forEach(e=>k(`snip-panel-`+e)?.classList.toggle(`hidden`,e!==t)),k(`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`?ll(D):e===`tree`?El(ee):e===`mermaid`?Re():e===`diagram`?je():e===`emojis`?me():e===`attachment`||(e===`ordered-list`?ke(`snip-ordered-list-content`,Ec()):e===`unordered-list`&&ke(`snip-unordered-list-content`,Dc()),M())}async function je(){let e=[];try{e=await fetch(`/api/diagrams`).then(e=>e.json())}catch{e=[]}let t=k(`snip-diag-select`);t&&(t.innerHTML=e.length?e.map(e=>`<option value="${O(e.id)}">${O(e.title)}</option>`).join(``):`<option value="" disabled>${Y(`snippet.diagram_no_diagrams`)}</option>`);let n=X.currentDocId&&X.allDocs.find(e=>e.id===X.currentDocId),r=n&&n.title||``,i=r.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_|_$/g,``),a=k(`snip-diag-img-name`);a&&(a.value=i?i+`.png`:`diagram.png`);let o=k(`snip-diag-new-name`);o&&(o.value=r?r+` Diagram`:``);let s=k(`snip-diag-mode-existing`);s&&(s.checked=!0),Me()}function Me(){let e=k(`snip-diag-mode-new`)?.checked??!1;k(`snip-diag-existing-section`)?.classList.toggle(`hidden`,e),k(`snip-diag-new-section`)?.classList.toggle(`hidden`,!e),Ne(),M()}function Ne(){let e=k(`snip-diag-mode-new`)?.checked??!1,t=``;if(e)t=k(`snip-diag-new-name`)?.value.trim()||``;else{let e=k(`snip-diag-select`);t=e?.options[e.selectedIndex]?.text??``}let n=t.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_|_$/g,``),r=k(`snip-diag-img-name`);r&&(r.value=n?n+`.png`:`diagram.png`)}function Pe(){return Y(`snippet.mermaid_pie_default_title`)||`DOC WORKFLOW`}function Fe(){return Y(`snippet.mermaid_timeline_default_title`)||`DOCUMENTATION ROADMAP`}function Le(){F(m,`pie`),h=1,F(g,C.map(e=>({id:h++,label:Y(e.labelKey),value:e.value})),!0),_=1,F(v,w.map(e=>({id:_++,period:e.period,event:Y(e.eventKey)})),!0),y=1,F(b,T.map(e=>({id:y++,level:e.level,label:Y(e.labelKey),decorator:e.decorator,note:e.noteKey?Y(e.noteKey):``})),!0),x=1,F(S,E.map(e=>({id:x++,type:e.type,from:e.fromKey?Y(e.fromKey):``,arrow:e.arrow,to:Y(e.toKey),message:Y(e.messageKey),notePosition:e.notePosition})),!0)}function Re(){let e=k(`snip-mermaid-type`);e&&(e.value=V(m));let t=k(`snip-mermaid-pie-title`);t&&!t.value.trim()&&(t.value=Pe());let n=k(`snip-mermaid-timeline-title`);n&&!n.value.trim()&&(n.value=Fe()),M()}function ze(){F(m,et(`snip-mermaid-type`)||`pie`,!0),M()}function Be(){F(g,[...V(g),{id:h++,label:``,value:`0`}],!0),M()}function Ve(e,t){let n=V(g).reduce((t,n)=>{if(n.id===e)return t;let r=Number(n.value);return t+(Number.isFinite(r)?Math.max(0,r):0)},0),r=Math.max(0,100-n),i=Number(t.value),a=Number.isFinite(i)?Math.min(r,Math.max(0,i)):0;F(g,V(g).map(t=>t.id===e?{...t,value:String(a)}:t),!0),t.value=String(a),M()}function He(e){V(g).length<=1||(F(g,V(g).filter(t=>t.id!==e),!0),M())}function Ue(){F(v,[...V(v),{id:_++,period:``,event:``}],!0),M()}function We(e){V(v).length<=1||(F(v,V(v).filter(t=>t.id!==e),!0),M())}function Ge(){F(b,[...V(b),{id:y++,level:`1`,label:``,decorator:``,note:``}],!0),M()}function Ke(e,t){let n=Number(t.value),r=Number.isFinite(n)?Math.min(6,Math.max(0,n)):0;F(b,V(b).map(t=>t.id===e?{...t,level:String(r)}:t),!0),t.value=String(r),M()}function Ye(e){V(b).length<=1||(F(b,V(b).filter(t=>t.id!==e),!0),M())}function Xe(){F(S,[...V(S),{id:x++,type:`message`,from:``,arrow:`->>`,to:``,message:``,notePosition:`right of`}],!0),M()}function Ze(){F(S,[...V(S),{id:x++,type:`note`,from:``,arrow:`->>`,to:``,message:``,notePosition:`right of`}],!0),M()}function Qe(e){V(S).length<=1||(F(S,V(S).filter(t=>t.id!==e),!0),M())}function $e(e,t){return e.options[e.selectedIndex]?.text||t}function et(e){return k(e)?.value??``}function tt(e){switch(e){case`collapsible`:return{summary:et(`snip-collapsible-summary`),summaryFallback:Y(`snippet.collapsible_summary_value`),body:et(`snip-collapsible-body`),bodyFallback:`## Titre
64
+ `).join(``)}function pe(e){let t=e.toLowerCase().trim(),n=[];for(let r of wc)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(de).join(``)}</div>`}function me(){let e=k(`snip-emoji-grid`);if(!e)return;e.innerHTML=fe(),ue||=(e.addEventListener(`click`,e=>{let t=e.target.closest(`.emoji-btn`);t&&t.dataset.emoji&&ge(t.dataset.emoji)}),k(`snip-emoji-search`)?.addEventListener(`input`,e=>he(e.target.value)),!0);let t=k(`snip-emoji-search`);t&&(t.value=``),M()}function he(e){let t=k(`snip-emoji-grid`);if(!t)return;let n=(e||``).trim();t.innerHTML=n.length<2?fe():pe(n)}function ge(e){let t=k(`snip-emoji-string`);t&&(t.value+=e,M())}function _e(){let e=k(`snip-emoji-string`);e&&(e.value=``,M())}let ve={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 ye(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(ve[t]||`ring-blue-400`),f=t,M()}function be(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(ve[t]||`ring-blue-400`),p=t,M()}function xe(e){return Cc[e]||Cc.info}function Se(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 Ce(e){return e.toLowerCase().replace(/[^\w\s-]/g,``).trim().replace(/\s+/g,`-`)}function we(e){let t=[],n=(e||``).split(`
65
+ `),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=Se(n[2]),a=Ce(i);a&&t.push({level:n[1].length,text:i,slug:a})}return t}function Te(){return we(n()?n().value:``)}function Ee(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="${O(e.slug)}">${O(t+e.text)}</option>`}).join(``)}}function De(){Ee(k(`snip-anchor-id`),Te(),`snippet.link_anchor_no_headings`)}async function Oe(){let e=k(`snip-anchor-doc-select`),t=k(`snip-anchor-doc-id`);if(!e||!t)return;let n=e.value;if(!n){Ee(t,[],`snippet.link_anchor_no_headings`),M();return}t.innerHTML=`<option value="" disabled selected>${Y(`common.loading`)}</option>`;try{Ee(t,we((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{Ee(t,[],`snippet.link_anchor_no_headings`)}M()}function ke(e,t){let n=k(e);n&&n.value.trim()===``&&(n.value=t)}function Ae(){let e=k(`snippet-type`).value,t=_c(e);hc.forEach(e=>k(`snip-panel-`+e)?.classList.toggle(`hidden`,e!==t)),k(`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`?ul(D):e===`tree`?Dl(ee):e===`mermaid`?Re():e===`diagram`?je():e===`emojis`?me():e===`attachment`||(e===`ordered-list`?ke(`snip-ordered-list-content`,Dc()):e===`unordered-list`&&ke(`snip-unordered-list-content`,Oc()),M())}async function je(){let e=[];try{e=await fetch(`/api/diagrams`).then(e=>e.json())}catch{e=[]}let t=k(`snip-diag-select`);t&&(t.innerHTML=e.length?e.map(e=>`<option value="${O(e.id)}">${O(e.title)}</option>`).join(``):`<option value="" disabled>${Y(`snippet.diagram_no_diagrams`)}</option>`);let n=X.currentDocId&&X.allDocs.find(e=>e.id===X.currentDocId),r=n&&n.title||``,i=r.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_|_$/g,``),a=k(`snip-diag-img-name`);a&&(a.value=i?i+`.png`:`diagram.png`);let o=k(`snip-diag-new-name`);o&&(o.value=r?r+` Diagram`:``);let s=k(`snip-diag-mode-existing`);s&&(s.checked=!0),Me()}function Me(){let e=k(`snip-diag-mode-new`)?.checked??!1;k(`snip-diag-existing-section`)?.classList.toggle(`hidden`,e),k(`snip-diag-new-section`)?.classList.toggle(`hidden`,!e),Ne(),M()}function Ne(){let e=k(`snip-diag-mode-new`)?.checked??!1,t=``;if(e)t=k(`snip-diag-new-name`)?.value.trim()||``;else{let e=k(`snip-diag-select`);t=e?.options[e.selectedIndex]?.text??``}let n=t.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_|_$/g,``),r=k(`snip-diag-img-name`);r&&(r.value=n?n+`.png`:`diagram.png`)}function Pe(){return Y(`snippet.mermaid_pie_default_title`)||`DOC WORKFLOW`}function Fe(){return Y(`snippet.mermaid_timeline_default_title`)||`DOCUMENTATION ROADMAP`}function Le(){F(m,`pie`),h=1,F(g,C.map(e=>({id:h++,label:Y(e.labelKey),value:e.value})),!0),_=1,F(v,w.map(e=>({id:_++,period:e.period,event:Y(e.eventKey)})),!0),y=1,F(b,T.map(e=>({id:y++,level:e.level,label:Y(e.labelKey),decorator:e.decorator,note:e.noteKey?Y(e.noteKey):``})),!0),x=1,F(S,E.map(e=>({id:x++,type:e.type,from:e.fromKey?Y(e.fromKey):``,arrow:e.arrow,to:Y(e.toKey),message:Y(e.messageKey),notePosition:e.notePosition})),!0)}function Re(){let e=k(`snip-mermaid-type`);e&&(e.value=V(m));let t=k(`snip-mermaid-pie-title`);t&&!t.value.trim()&&(t.value=Pe());let n=k(`snip-mermaid-timeline-title`);n&&!n.value.trim()&&(n.value=Fe()),M()}function ze(){F(m,et(`snip-mermaid-type`)||`pie`,!0),M()}function Be(){F(g,[...V(g),{id:h++,label:``,value:`0`}],!0),M()}function Ve(e,t){let n=V(g).reduce((t,n)=>{if(n.id===e)return t;let r=Number(n.value);return t+(Number.isFinite(r)?Math.max(0,r):0)},0),r=Math.max(0,100-n),i=Number(t.value),a=Number.isFinite(i)?Math.min(r,Math.max(0,i)):0;F(g,V(g).map(t=>t.id===e?{...t,value:String(a)}:t),!0),t.value=String(a),M()}function He(e){V(g).length<=1||(F(g,V(g).filter(t=>t.id!==e),!0),M())}function Ue(){F(v,[...V(v),{id:_++,period:``,event:``}],!0),M()}function We(e){V(v).length<=1||(F(v,V(v).filter(t=>t.id!==e),!0),M())}function Ge(){F(b,[...V(b),{id:y++,level:`1`,label:``,decorator:``,note:``}],!0),M()}function Ke(e,t){let n=Number(t.value),r=Number.isFinite(n)?Math.min(6,Math.max(0,n)):0;F(b,V(b).map(t=>t.id===e?{...t,level:String(r)}:t),!0),t.value=String(r),M()}function Ye(e){V(b).length<=1||(F(b,V(b).filter(t=>t.id!==e),!0),M())}function Xe(){F(S,[...V(S),{id:x++,type:`message`,from:``,arrow:`->>`,to:``,message:``,notePosition:`right of`}],!0),M()}function Ze(){F(S,[...V(S),{id:x++,type:`note`,from:``,arrow:`->>`,to:``,message:``,notePosition:`right of`}],!0),M()}function Qe(e){V(S).length<=1||(F(S,V(S).filter(t=>t.id!==e),!0),M())}function $e(e,t){return e.options[e.selectedIndex]?.text||t}function et(e){return k(e)?.value??``}function tt(e){switch(e){case`collapsible`:return{summary:et(`snip-collapsible-summary`),summaryFallback:Y(`snippet.collapsible_summary_value`),body:et(`snip-collapsible-body`),bodyFallback:`## Titre
64
66
 
65
- Texte`};case`link`:return{text:et(`snip-link-text`),textFallback:Y(`snippet.link_text_placeholder`),url:et(`snip-link-url`)};case`doc-link`:{let e=k(`snip-doc-select`);return{docId:e.value,title:$e(e,e.value),text:et(`snip-doc-link-text`)}}case`anchor-link`:return{text:et(`snip-anchor-text`),textFallback:Y(`snippet.link_section_placeholder`),anchor:et(`snip-anchor-id`),anchorFallback:Y(`snippet.link_anchor_placeholder`)};case`anchor-doc-link`:return{docId:k(`snip-anchor-doc-select`).value,text:et(`snip-anchor-doc-text`),textFallback:Y(`snippet.link_section_placeholder`),anchor:et(`snip-anchor-doc-id`),anchorFallback:Y(`snippet.link_anchor_placeholder`)};case`ordered-list`:return{content:et(`snip-ordered-list-content`)};case`unordered-list`:return{content:et(`snip-unordered-list-content`)};case`code-block`:return{lang:et(`snip-code-lang`),code:et(`snip-code-content`),width:et(`snip-code-width`),align:et(`snip-code-align`),inlineIndent:u};case`blockquote`:{let e=k(`snip-blockquote-icon`);return{type:et(`snip-blockquote-type`),title:et(`snip-blockquote-title`),icon:!!(e&&e.checked),content:et(`snip-blockquote-content`)}}case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return{text:et(`snip-heading-content`),fallback:Y(`snippet.heading_text_placeholder`)||`Titre`};case`image`:return{alt:et(`snip-image-alt`),url:et(`snip-image-url`),width:et(`snip-image-width`),align:et(`snip-image-align`)};case`table`:{let e=k(`snip-table-bordered`);return{markdown:Sl(D),style:et(`snip-table-style`),bordered:!!(e&&e.checked),color:et(`snip-table-color`)}}case`tree`:return{markdown:jl(ee)};case`diagram`:{let e=k(`snip-diag-mode-new`)?.checked??!1,t=et(`snip-diag-img-name`).trim()||`diagram.png`;if(e)return{id:`d`+Date.now(),label:et(`snip-diag-new-name`).trim()||`Diagram`,imageName:t};let n=k(`snip-diag-select`);return{id:n.value,label:$e(n,`Diagram`),imageName:t}}case`mermaid`:return{kind:et(`snip-mermaid-type`),pieTitle:et(`snip-mermaid-pie-title`),pieTitleFallback:Pe(),pieItems:V(g),pieItemLabelFallback:Y(`snippet.mermaid_pie_item_fallback`),timelineTitle:et(`snip-mermaid-timeline-title`),timelineTitleFallback:Fe(),timelineItems:V(v),timelinePeriodFallback:Y(`snippet.mermaid_timeline_period_fallback`),timelineEventFallback:Y(`snippet.mermaid_timeline_event_fallback`),treeItems:V(b),treeLabelFallback:Y(`snippet.mermaid_tree_label_fallback`),sequenceItems:V(S),sequenceActorFallback:Y(`snippet.mermaid_sequence_actor_fallback`),sequenceMessageFallback:Y(`snippet.mermaid_sequence_message_fallback`)};case`colored-text`:return{color:xe(p),content:et(`snip-colored-text-content`)||Y(`snippet.colored_text_content_placeholder`)};case`colored-section`:return{color:xe(f),content:et(`snip-colored-content`)||Y(`snippet.colored_section_content_placeholder`)};case`emojis`:return{value:et(`snip-emoji-string`)};case`compare`:return{content:et(`snip-compare-content`)};case`columns`:return{columns:Number(et(`snip-columns-count`))||2,ratio:et(`snip-columns-ratio`),verticalAlign:et(`snip-columns-valign`),textAlign:et(`snip-columns-text`),gap:et(`snip-columns-gap`),bodyFallback:Y(`snippet.columns_body_fallback`)};default:return{}}}function nt(){let e=k(`snippet-type`).value;return tl(e,tt(e))}function M(){let e=k(`snippet-preview`);e&&(e.textContent=nt())}function rt(){xl(D)}function it(){let e=et(`snip-blockquote-type`),t=k(`snip-blockquote-icon`),n=k(`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=``)),M()}function at(){t.onclose()}function ot(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 st(){let e=k(`snippet-type`).value;if(r()===`inline-edit`&&(e===`diagram`||e===`attachment`)||r()===`inline-insert`&&e===`attachment`)return;if(e===`diagram`){await ut();return}if(e===`attachment`){await lt();return}let t=nt();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)))}at();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(`
67
+ Texte`};case`link`:return{text:et(`snip-link-text`),textFallback:Y(`snippet.link_text_placeholder`),url:et(`snip-link-url`)};case`doc-link`:{let e=k(`snip-doc-select`);return{docId:e.value,title:$e(e,e.value),text:et(`snip-doc-link-text`)}}case`anchor-link`:return{text:et(`snip-anchor-text`),textFallback:Y(`snippet.link_section_placeholder`),anchor:et(`snip-anchor-id`),anchorFallback:Y(`snippet.link_anchor_placeholder`)};case`anchor-doc-link`:return{docId:k(`snip-anchor-doc-select`).value,text:et(`snip-anchor-doc-text`),textFallback:Y(`snippet.link_section_placeholder`),anchor:et(`snip-anchor-doc-id`),anchorFallback:Y(`snippet.link_anchor_placeholder`)};case`ordered-list`:return{content:et(`snip-ordered-list-content`)};case`unordered-list`:return{content:et(`snip-unordered-list-content`)};case`code-block`:return{lang:et(`snip-code-lang`),code:et(`snip-code-content`),width:et(`snip-code-width`),align:et(`snip-code-align`),inlineIndent:u};case`blockquote`:{let e=k(`snip-blockquote-icon`);return{type:et(`snip-blockquote-type`),title:et(`snip-blockquote-title`),icon:!!(e&&e.checked),content:et(`snip-blockquote-content`)}}case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:return{text:et(`snip-heading-content`),fallback:Y(`snippet.heading_text_placeholder`)||`Titre`};case`image`:return{alt:et(`snip-image-alt`),url:et(`snip-image-url`),width:et(`snip-image-width`),align:et(`snip-image-align`)};case`table`:{let e=k(`snip-table-bordered`);return{markdown:Cl(D),style:et(`snip-table-style`),bordered:!!(e&&e.checked),color:et(`snip-table-color`),inlineIndent:u}}case`tree`:return{markdown:Ml(ee)};case`diagram`:{let e=k(`snip-diag-mode-new`)?.checked??!1,t=et(`snip-diag-img-name`).trim()||`diagram.png`;if(e)return{id:`d`+Date.now(),label:et(`snip-diag-new-name`).trim()||`Diagram`,imageName:t};let n=k(`snip-diag-select`);return{id:n.value,label:$e(n,`Diagram`),imageName:t}}case`mermaid`:return{kind:et(`snip-mermaid-type`),pieTitle:et(`snip-mermaid-pie-title`),pieTitleFallback:Pe(),pieItems:V(g),pieItemLabelFallback:Y(`snippet.mermaid_pie_item_fallback`),timelineTitle:et(`snip-mermaid-timeline-title`),timelineTitleFallback:Fe(),timelineItems:V(v),timelinePeriodFallback:Y(`snippet.mermaid_timeline_period_fallback`),timelineEventFallback:Y(`snippet.mermaid_timeline_event_fallback`),treeItems:V(b),treeLabelFallback:Y(`snippet.mermaid_tree_label_fallback`),sequenceItems:V(S),sequenceActorFallback:Y(`snippet.mermaid_sequence_actor_fallback`),sequenceMessageFallback:Y(`snippet.mermaid_sequence_message_fallback`)};case`colored-text`:return{color:xe(p),content:et(`snip-colored-text-content`)||Y(`snippet.colored_text_content_placeholder`)};case`colored-section`:return{color:xe(f),content:et(`snip-colored-content`)||Y(`snippet.colored_section_content_placeholder`)};case`emojis`:return{value:et(`snip-emoji-string`)};case`compare`:return{content:et(`snip-compare-content`)};case`columns`:return{columns:Number(et(`snip-columns-count`))||2,ratio:et(`snip-columns-ratio`),verticalAlign:et(`snip-columns-valign`),textAlign:et(`snip-columns-text`),gap:et(`snip-columns-gap`),bodyFallback:Y(`snippet.columns_body_fallback`)};default:return{}}}function nt(){let e=k(`snippet-type`).value;return nl(e,tt(e))}function M(){let e=k(`snippet-preview`);e&&(e.textContent=nt())}function rt(){Sl(D)}function it(){let e=et(`snip-blockquote-type`),t=k(`snip-blockquote-icon`),n=k(`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=``)),M()}function at(){t.onclose()}function ot(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 st(){let e=k(`snippet-type`).value;if(r()===`inline-edit`&&(e===`diagram`||e===`attachment`)||r()===`inline-insert`&&e===`attachment`)return;if(e===`diagram`){await ut();return}if(e===`attachment`){await lt();return}let t=nt();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)))}at();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(`
66
68
  `)?`
67
69
  `:`
68
70
 
@@ -78,15 +80,15 @@ Texte`};case`link`:return{text:et(`snip-link-text`),textFallback:Y(`snippet.link
78
80
  `)?`
79
81
  `:`
80
82
 
81
- `,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(ot(l),X.currentDocId&&n())try{await fetch(`/api/documents/`+X.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}at(),window.location.href=`/diagram?id=${a}&img=${encodeURIComponent(t)}`}function dt(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 ft(e,t){for(let n of Array.from(e.options))if(n.value===t){e.value=n.value;return}}function pt(e){let t=Object.entries(Sc).find(([,t])=>t.border===e);return t?t[0]:null}function mt(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 ht(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 gt(e,t){let n=Jl(t,e,{inlineIndent:u});switch(t){case`collapsible`:n.summary!==void 0&&_t(`snip-collapsible-summary`,n.summary),_t(`snip-collapsible-body`,n.body||``);break;case`link`:n.text!==void 0&&(_t(`snip-link-text`,n.text),_t(`snip-link-url`,n.url));break;case`doc-link`:if(n.docId!==void 0){let e=k(`snip-doc-select`);ft(e,n.docId);let t=e.options[e.selectedIndex]?.text??``;_t(`snip-doc-link-text`,n.text===t?``:n.text)}break;case`anchor-link`:if(n.anchor!==void 0){_t(`snip-anchor-text`,n.text);let e=k(`snip-anchor-id`);dt(e,n.anchor),e.value=n.anchor}break;case`anchor-doc-link`:n.docId!==void 0&&(ft(k(`snip-anchor-doc-select`),n.docId),_t(`snip-anchor-doc-text`,n.text),Oe().then(()=>{let e=k(`snip-anchor-doc-id`);e&&(dt(e,n.anchor),e.value=n.anchor,M())}));break;case`ordered-list`:_t(`snip-ordered-list-content`,n.content);break;case`unordered-list`:_t(`snip-unordered-list-content`,n.content);break;case`code-block`:_t(`snip-code-lang`,n.lang),_t(`snip-code-content`,n.code),_t(`snip-code-width`,n.width||``),_t(`snip-code-align`,n.align||``);break;case`blockquote`:{_t(`snip-blockquote-type`,n.type||``),_t(`snip-blockquote-title`,n.title||``);let e=k(`snip-blockquote-icon`);e&&(e.checked=!!n.icon),_t(`snip-blockquote-content`,n.content);break}case`image`:n.alt!==void 0&&(_t(`snip-image-alt`,n.alt),_t(`snip-image-url`,n.url)),_t(`snip-image-width`,n.width||``),_t(`snip-image-align`,n.align||``);break;case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:_t(`snip-heading-content`,n.text);break;case`table`:{_t(`snip-table-style`,n.attrs.style||``);let e=k(`snip-table-bordered`);e&&(e.checked=n.attrs.border===`bordered`),_t(`snip-table-color`,n.attrs.color||``),D.data=n.rows,xl(D);break}case`tree`:ee.items=n.items,Dl(ee);break;case`colored-text`:n.color!==void 0&&(mt(pt(n.color)),_t(`snip-colored-text-content`,n.content));break;case`colored-section`:n.borderColor&&ht(pt(n.borderColor)),n.content!==void 0&&_t(`snip-colored-content`,n.content);break;case`compare`:_t(`snip-compare-content`,n.content||``);break}M()}function _t(e,t){let n=k(e);n&&(n.value=t??``)}function vt(){let e=X.allDocs.map(e=>`<option value="${O(e.id)}">${O(e.title)}</option>`).join(``),t=k(`snip-doc-select`);t&&(t.innerHTML=e);let n=k(`snip-anchor-doc-select`);n&&(n.innerHTML=e),De(),Oe()}function yt(){let e=r()===`inline-edit`,t=k(`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=k(`snippet-submit-btn`);n&&(n.textContent=Y(e?`snippet.inline_save_btn`:`snippet.insert_btn`));let i=k(`snippet-type`);i&&(i.disabled=e,i.classList.toggle(`cursor-not-allowed`,e),i.classList.toggle(`opacity-70`,e));let a=k(`snippet-delete-btn`);a&&a.classList.toggle(`hidden`,!e);let o=k(`snippet-modal-card`);o&&(o.classList.toggle(`max-w-6xl`,!e),o.classList.toggle(`max-w-5xl`,e))}let N=!1;kn(()=>{t.open&&!N?(N=!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`,Le(),queueMicrotask(()=>{if(yt(),vt(),r()===`inline-edit`&&a()){let e=i().slice(c,l),t=k(`snippet-type`);t&&(t.value=a().type),Ae(),gt(e,a().type),A(!1),a().type===`table`&&a().tableFocusCell&&dl(a().tableFocusCell.row,a().tableFocusCell.col,!0)}else if(r()===`inline-insert`)ie();else{let e=n()?n().value.slice(c,l):``,t=e?Yl(e):null;if(t){let n=k(`snippet-type`);n&&(n.value=t),Ae(),gt(e,t),A()}else ie()}})):t.open||(N=!1)});var bt=cu(),xt=R(bt),St=e=>{var t=su(),n=L(t),r=L(n),i=L(r),a=L(i,!0);j(i),j(r);var o=z(r,4),s=L(o),c=z(s,4),l=L(c,!0);j(c),j(o);var u=z(o,2),d=z(L(u),2),f=L(d,!0);j(d),j(u);var p=z(u,2),h=L(p),_=L(h,!0);j(h);var y=z(h,2),x=L(y),C=L(x,!0);j(x),x.value=x.__value=`diagram`;var w=z(x),T=L(w,!0);j(w),w.value=w.__value=`heading-1`;var E=z(w),D=L(E,!0);j(E),E.value=E.__value=`heading-2`;var O=z(E),k=L(O,!0);j(O),O.value=O.__value=`heading-3`;var te=z(O),ne=L(te,!0);j(te),te.value=te.__value=`heading-4`;var re=z(te),ie=L(re,!0);j(re),re.value=re.__value=`collapsible`;var A=z(re),ae=L(A,!0);j(A),A.value=A.__value=`link`;var ce=z(A),ue=L(ce,!0);j(ce),ce.value=ce.__value=`doc-link`;var de=z(ce),fe=L(de,!0);j(de),de.value=de.__value=`anchor-link`;var pe=z(de),me=L(pe,!0);j(pe),pe.value=pe.__value=`anchor-doc-link`;var he=z(pe),ge=L(he,!0);j(he),he.value=he.__value=`ordered-list`;var ve=z(he),xe=L(ve,!0);j(ve),ve.value=ve.__value=`unordered-list`;var Se=z(ve),Ce=L(Se,!0);j(Se),Se.value=Se.__value=`code-block`;var we=z(Se),Te=L(we,!0);j(we),we.value=we.__value=`mermaid`;var Ee=z(we),De=L(Ee,!0);j(Ee),Ee.value=Ee.__value=`blockquote`;var ke=z(Ee),je=L(ke,!0);j(ke),ke.value=ke.__value=`separator`;var Le=z(ke),Re=L(Le,!0);j(Le),Le.value=Le.__value=`image`;var qe=z(Le),Je=L(qe,!0);j(qe),qe.value=qe.__value=`table`;var $e=z(qe),et=L($e,!0);j($e),$e.value=$e.__value=`tree`;var tt=z($e),nt=L(tt,!0);j(tt),tt.value=tt.__value=`colored-section`;var ot=z(tt),lt=L(ot,!0);j(ot),ot.value=ot.__value=`colored-text`;var ut=z(ot),dt=L(ut,!0);j(ut),ut.value=ut.__value=`emojis`;var ft=z(ut),pt=L(ft,!0);j(ft),ft.value=ft.__value=`attachment`;var mt=z(ft),ht=L(mt,!0);j(mt),mt.value=mt.__value=`local-search`;var gt=z(mt),_t=L(gt,!0);j(gt),gt.value=gt.__value=`compare`;var vt=z(gt),yt=L(vt,!0);j(vt),vt.value=vt.__value=`columns`,j(y),j(p);var N=z(p,2),bt=L(N),xt=L(bt),St=L(xt,!0);j(xt);var Ct=z(xt,2);j(bt),j(N);var wt=z(N,2),Tt=L(wt),Et=L(Tt),Dt=L(Et,!0);j(Et);var Ot=z(Et,2);j(Tt);var kt=z(Tt,2),At=L(kt),jt=L(At,!0);j(At);var Mt=z(At,2);j(kt),j(wt);var Nt=z(wt,2),Pt=L(Nt),Ft=L(Pt),It=L(Ft,!0);j(Ft);var Lt=z(Ft,2);j(Pt);var Rt=z(Pt,2),zt=L(Rt),Bt=L(zt,!0);j(zt);var Vt=z(zt,2);j(Rt),j(Nt);var Ht=z(Nt,2),Ut=L(Ht),Wt=L(Ut),Gt=L(Wt,!0);j(Wt);var Kt=z(Wt,2);j(Ut);var qt=z(Ut,2),Jt=L(qt),Yt=L(Jt),Xt=L(Yt,!0);j(Yt);var Zt=z(Yt,2),P=L(Zt,!0);j(Zt),j(Jt);var Qt=z(Jt,2);j(qt),j(Ht);var $t=z(Ht,2),en=L($t),tn=L(en),nn=L(tn,!0);j(tn);var I=z(tn,2);j(en);var rn=z(en,2),an=L(rn),on=L(an),sn=L(on,!0);j(on);var cn=z(on,2),ln=L(cn,!0);j(cn),j(an);var un=z(an,2);j(rn),j($t);var dn=z($t,2),fn=L(dn),pn=L(fn),R=L(pn,!0);j(pn);var mn=z(pn,2);j(fn);var hn=z(fn,2),gn=L(hn),_n=L(gn,!0);j(gn);var vn=z(gn,2);j(hn);var yn=z(hn,2),bn=L(yn),xn=L(bn),Sn=L(xn,!0);j(xn);var Cn=z(xn,2),wn=L(Cn,!0);j(Cn),j(bn);var Tn=z(bn,2);j(yn),j(dn);var En=z(dn,2),Dn=L(En),On=L(Dn),kn=L(On,!0);j(On);var An=z(On,2);j(Dn),j(En);var jn=z(En,2),Mn=L(jn),Nn=L(Mn),Pn=L(Nn,!0);j(Nn);var Fn=z(Nn,2);j(Mn),j(jn);var In=z(jn,2),Ln=L(In),Rn=L(Ln),zn=L(Rn),Bn=L(zn,!0);j(zn);var Vn=z(zn,2),Hn=L(Vn,!0);j(Vn),j(Rn);var Un=z(Rn,2);j(Ln);var Wn=z(Ln,2),Gn=L(Wn),Kn=L(Gn),qn=L(Kn,!0);j(Kn);var Jn=z(Kn,2),Yn=L(Jn),Xn=L(Yn,!0);j(Yn),Yn.value=Yn.__value=``;var Zn=z(Yn),Qn=L(Zn,!0);j(Zn),Zn.value=Zn.__value=`full`;var $n=z(Zn),er=L($n,!0);j($n),$n.value=$n.__value=`3/4`;var tr=z($n),nr=L(tr,!0);j(tr),tr.value=tr.__value=`2/3`;var rr=z(tr),ir=L(rr,!0);j(rr),rr.value=rr.__value=`1/2`;var ar=z(rr),or=L(ar,!0);j(ar),ar.value=ar.__value=`1/3`;var sr=z(ar),cr=L(sr,!0);j(sr),sr.value=sr.__value=`1/4`,j(Jn),j(Gn);var lr=z(Gn,2),ur=L(lr),dr=L(ur,!0);j(ur);var fr=z(ur,2),pr=L(fr),mr=L(pr,!0);j(pr),pr.value=pr.__value=``;var hr=z(pr),gr=L(hr,!0);j(hr),hr.value=hr.__value=`left`;var _r=z(hr),vr=L(_r,!0);j(_r),_r.value=_r.__value=`center`;var yr=z(_r),br=L(yr,!0);j(yr),yr.value=yr.__value=`right`,j(fr),j(lr),j(Wn);var xr=z(Wn,2),Sr=L(xr,!0);j(xr);var Cr=z(xr,2),wr=L(Cr),Tr=L(wr,!0);j(wr);var Er=z(wr,2);j(Cr),j(In);var Dr=z(In,2),Or=L(Dr),kr=L(Or),Ar=L(kr,!0);j(kr);var jr=z(kr,2),Mr=L(jr),Nr=L(Mr,!0);j(Mr),Mr.value=Mr.__value=`pie`;var Pr=z(Mr),Fr=L(Pr,!0);j(Pr),Pr.value=Pr.__value=`timeline`;var Ir=z(Pr),Lr=L(Ir,!0);j(Ir),Ir.value=Ir.__value=`tree-view`;var Rr=z(Ir),zr=L(Rr,!0);j(Rr),Rr.value=Rr.__value=`sequence`,j(jr),j(Or);var Br=z(Or,2);let U;var Vr=L(Br),Hr=L(Vr),Ur=L(Hr,!0);j(Hr);var Wr=z(Hr,2);Di(Wr),j(Vr);var Gr=z(Vr,2),Kr=L(Gr),qr=L(Kr),Jr=L(qr,!0);j(qr);var Yr=z(qr,2),Xr=z(L(Yr));j(Yr),j(Kr);var Zr=z(Kr,2);q(Zr,23,()=>V(g),e=>e.id,(e,t,n)=>{var r=tu(),i=L(r);Di(i);var a=z(i,2);Di(a);var o=z(a,2);j(r),B((e,n,r,s,c)=>{J(i,`aria-label`,e),J(i,`placeholder`,n),Oi(a,V(t).value),J(a,`aria-label`,r),J(o,`title`,s),J(o,`aria-label`,c),o.disabled=V(g).length<=1},[()=>`${Y(`snippet.mermaid_pie_item_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_pie_item_label_placeholder`),()=>`${Y(`snippet.mermaid_pie_item_value`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_pie_remove_item`),()=>Y(`snippet.mermaid_pie_remove_item`)]),H(`input`,i,M),Ni(i,()=>V(t).label,e=>V(t).label=e),H(`input`,a,e=>Ve(V(t).id,e.currentTarget)),H(`click`,o,()=>He(V(t).id)),W(e,r)}),j(Zr),j(Gr),j(Br);var Qr=z(Br,2);let $r;var ei=L(Qr),ti=L(ei),ni=L(ti,!0);j(ti);var ri=z(ti,2);Di(ri),j(ei);var ii=z(ei,2),oi=L(ii),si=L(oi),ci=L(si,!0);j(si);var li=z(si,2),ui=z(L(li));j(li),j(oi);var di=z(oi,2);q(di,23,()=>V(v),e=>e.id,(e,t,n)=>{var r=nu(),i=L(r);Di(i);var a=z(i,2);Di(a);var o=z(a,2);j(r),B((e,t,n,r,s,c)=>{J(i,`aria-label`,e),J(i,`placeholder`,t),J(a,`aria-label`,n),J(a,`placeholder`,r),J(o,`title`,s),J(o,`aria-label`,c),o.disabled=V(v).length<=1},[()=>`${Y(`snippet.mermaid_timeline_period_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_timeline_period_placeholder`),()=>`${Y(`snippet.mermaid_timeline_event_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_timeline_event_placeholder`),()=>Y(`snippet.mermaid_timeline_remove_item`),()=>Y(`snippet.mermaid_timeline_remove_item`)]),H(`input`,i,M),Ni(i,()=>V(t).period,e=>V(t).period=e),H(`input`,a,M),Ni(a,()=>V(t).event,e=>V(t).event=e),H(`click`,o,()=>We(V(t).id)),W(e,r)}),j(di),j(ii),j(Qr);var fi=z(Qr,2);let pi;var mi=L(fi),hi=L(mi),_i=L(hi,!0);j(hi);var vi=z(hi,2),yi=z(L(vi));j(vi),j(mi);var bi=z(mi,2);q(bi,23,()=>V(b),e=>e.id,(e,t,n)=>{var r=ru(),i=L(r);Di(i),J(i,`max`,6);var a=z(i,2);Di(a);var o=z(a,2);Di(o);var s=z(o,2);Di(s);var c=z(s,2);j(r),B((e,n,r,l,u,d,f,p,m)=>{Oi(i,V(t).level),J(i,`aria-label`,e),J(a,`aria-label`,n),J(a,`placeholder`,r),J(o,`aria-label`,l),J(o,`placeholder`,u),J(s,`aria-label`,d),J(s,`placeholder`,f),J(c,`title`,p),J(c,`aria-label`,m),c.disabled=V(b).length<=1},[()=>`${Y(`snippet.mermaid_tree_level_label`)} ${V(n)+1}`,()=>`${Y(`snippet.mermaid_tree_label_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_tree_label_placeholder`),()=>`${Y(`snippet.mermaid_tree_decorator_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_tree_decorator_placeholder`),()=>`${Y(`snippet.mermaid_tree_note_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_tree_note_placeholder`),()=>Y(`snippet.mermaid_tree_remove_item`),()=>Y(`snippet.mermaid_tree_remove_item`)]),H(`input`,i,e=>Ke(V(t).id,e.currentTarget)),H(`input`,a,M),Ni(a,()=>V(t).label,e=>V(t).label=e),H(`input`,o,M),Ni(o,()=>V(t).decorator,e=>V(t).decorator=e),H(`input`,s,M),Ni(s,()=>V(t).note,e=>V(t).note=e),H(`click`,c,()=>Ye(V(t).id)),W(e,r)}),j(bi),j(fi);var Si=z(fi,2);let Ci;var wi=L(Si),Ti=L(wi),Ei=L(Ti,!0);j(Ti);var ki=z(Ti,2),Ai=L(ki),ji=z(L(Ai));j(Ai);var Mi=z(Ai,2),Pi=z(L(Mi));j(Mi),j(ki),j(wi);var Fi=z(wi,2);q(Fi,23,()=>V(S),e=>e.id,(e,t,n)=>{var r=ou(),i=L(r),a=L(i),o=L(a,!0);j(a),a.value=a.__value=`message`;var s=z(a),c=L(s,!0);j(s),s.value=s.__value=`note`,j(i);var l=z(i,2),u=e=>{var r=iu(),i=L(r),a=L(i,!0);j(i),i.value=i.__value=`left of`;var o=z(i),s=L(o,!0);j(o),o.value=o.__value=`right of`;var c=z(o),l=L(c,!0);j(c),c.value=c.__value=`over`,j(r),B((e,t,n,i)=>{J(r,`aria-label`,e),G(a,t),G(s,n),G(l,i)},[()=>`${Y(`snippet.mermaid_sequence_note_position_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_note_left`),()=>Y(`snippet.mermaid_sequence_note_right`),()=>Y(`snippet.mermaid_sequence_note_over`)]),H(`change`,r,M),xi(r,()=>V(t).notePosition,e=>V(t).notePosition=e),W(e,r)},d=e=>{var r=au();Di(r),B((e,t)=>{J(r,`aria-label`,e),J(r,`placeholder`,t)},[()=>`${Y(`snippet.mermaid_sequence_from_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_from_placeholder`)]),H(`input`,r,M),Ni(r,()=>V(t).from,e=>V(t).from=e),W(e,r)};K(l,e=>{V(t).type===`note`?e(u):e(d,-1)});var f=z(l,2),p=L(f);p.value=p.__value=`->>`;var m=z(p);m.value=m.__value=`-->>`;var h=z(m);h.value=h.__value=`--x`;var g=z(h);g.value=g.__value=`-x`;var _=z(g);_.value=_.__value=`-->`;var v=z(_);v.value=v.__value=`->`,j(f);var y=z(f,2);Di(y);var b=z(y,2);Di(b);var x=z(b,2);j(r),B((e,n,r,a,s,l,u,d,p,m)=>{J(i,`aria-label`,e),G(o,n),G(c,r),J(f,`aria-label`,a),f.disabled=V(t).type===`note`,J(y,`aria-label`,s),J(y,`placeholder`,l),J(b,`aria-label`,u),J(b,`placeholder`,d),J(x,`title`,p),J(x,`aria-label`,m),x.disabled=V(S).length<=1},[()=>`${Y(`snippet.mermaid_sequence_type_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_type_message`),()=>Y(`snippet.mermaid_sequence_type_note`),()=>`${Y(`snippet.mermaid_sequence_arrow_label`)} ${V(n)+1}`,()=>`${Y(`snippet.mermaid_sequence_to_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_to_placeholder`),()=>`${Y(`snippet.mermaid_sequence_message_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_message_placeholder`),()=>Y(`snippet.mermaid_sequence_remove_item`),()=>Y(`snippet.mermaid_sequence_remove_item`)]),H(`change`,i,M),xi(i,()=>V(t).type,e=>V(t).type=e),H(`change`,f,M),xi(f,()=>V(t).arrow,e=>V(t).arrow=e),H(`input`,y,M),Ni(y,()=>V(t).to,e=>V(t).to=e),H(`input`,b,M),Ni(b,()=>V(t).message,e=>V(t).message=e),H(`click`,x,()=>Qe(V(t).id)),W(e,r)}),j(Fi),j(Si),j(Dr);var Ii=z(Dr,2),Li=L(Ii),Ri=L(Li),zi=L(Ri),Bi=L(zi,!0);j(zi);var Vi=z(zi,2),Hi=L(Vi),Ui=L(Hi,!0);j(Hi),Hi.value=Hi.__value=``;var Wi=z(Hi),Gi=L(Wi,!0);j(Wi),Wi.value=Wi.__value=`info`;var Ki=z(Wi),qi=L(Ki,!0);j(Ki),Ki.value=Ki.__value=`success`;var Ji=z(Ki),Yi=L(Ji,!0);j(Ji),Ji.value=Ji.__value=`warning`;var Xi=z(Ji),Zi=L(Xi,!0);j(Xi),Xi.value=Xi.__value=`error`,j(Vi),j(Ri);var Qi=z(Ri,2),$i=L(Qi),ea=z($i,2),ta=L(ea,!0);j(ea),j(Qi),j(Li);var na=z(Li,2),ra=L(na),ia=L(ra,!0);j(ra);var aa=z(ra,2);j(na);var oa=z(na,2),sa=L(oa),ca=L(sa,!0);j(sa);var la=z(sa,2);j(oa),j(Ii);var ua=z(Ii,2),da=L(ua),fa=L(da),pa=L(fa),ma=L(pa,!0);j(pa);var ha=z(pa,2),ga=L(ha),_a=L(ga,!0);j(ga),ga.value=ga.__value=``;var va=z(ga),ya=L(va,!0);j(va),va.value=va.__value=`full`;var ba=z(va),xa=L(ba,!0);j(ba),ba.value=ba.__value=`3/4`;var Sa=z(ba),Ca=L(Sa,!0);j(Sa),Sa.value=Sa.__value=`2/3`;var wa=z(Sa),Ta=L(wa,!0);j(wa),wa.value=wa.__value=`1/2`;var Ea=z(wa),Da=L(Ea,!0);j(Ea),Ea.value=Ea.__value=`1/3`;var Oa=z(Ea),ka=L(Oa,!0);j(Oa),Oa.value=Oa.__value=`1/4`,j(ha),j(fa);var Aa=z(fa,2),ja=L(Aa),Ma=L(ja,!0);j(ja);var Na=z(ja,2),Pa=L(Na),Fa=L(Pa,!0);j(Pa),Pa.value=Pa.__value=``;var Ia=z(Pa),La=L(Ia,!0);j(Ia),Ia.value=Ia.__value=`left`;var Ra=z(Ia),za=L(Ra,!0);j(Ra),Ra.value=Ra.__value=`center`;var Ba=z(Ra),Va=L(Ba,!0);j(Ba),Ba.value=Ba.__value=`right`,j(Na),j(Aa),j(da);var Ha=z(da,2),Ua=L(Ha),Wa=L(Ua,!0);j(Ua);var Ga=z(Ua,2);j(Ha);var Ka=z(Ha,2),qa=L(Ka),Ja=L(qa,!0);j(qa);var Ya=z(qa,2);j(Ka),j(ua);var Xa=z(ua,2),Za=L(Xa),Qa=L(Za),$a=L(Qa),eo=L($a,!0);j($a);var to=z($a,2),no=L(to);no.value=no.__value=`2`;var ro=z(no);ro.value=ro.__value=`3`;var io=z(ro);io.value=io.__value=`4`,j(to),j(Qa);var ao=z(Qa,2),oo=L(ao),so=L(oo,!0);j(oo);var co=z(oo,2),lo=L(co),uo=L(lo,!0);j(lo),lo.value=lo.__value=`center`;var fo=z(lo),po=L(fo,!0);j(fo),fo.value=fo.__value=`top`;var mo=z(fo),ho=L(mo,!0);j(mo),mo.value=mo.__value=`bottom`;var go=z(mo),_o=L(go,!0);j(go),go.value=go.__value=`stretch`,j(co),j(ao);var vo=z(ao,2),yo=L(vo),bo=L(yo,!0);j(yo);var xo=z(yo,2),So=L(xo),Co=L(So,!0);j(So),So.value=So.__value=``;var wo=z(So),To=L(wo,!0);j(wo),wo.value=wo.__value=`left`;var Eo=z(wo),Do=L(Eo,!0);j(Eo),Eo.value=Eo.__value=`center`;var Oo=z(Eo),ko=L(Oo,!0);j(Oo),Oo.value=Oo.__value=`right`;var Ao=z(Oo),jo=L(Ao,!0);j(Ao),Ao.value=Ao.__value=`justify`,j(xo),j(vo);var Mo=z(vo,2),No=L(Mo),Po=L(No,!0);j(No);var Fo=z(No,2),Io=L(Fo),Lo=L(Io,!0);j(Io),Io.value=Io.__value=`sm`;var Ro=z(Io),zo=L(Ro,!0);j(Ro),Ro.value=Ro.__value=`md`;var Bo=z(Ro),Vo=L(Bo,!0);j(Bo),Bo.value=Bo.__value=`lg`,j(Fo),j(Mo),j(Za);var Ho=z(Za,2),Uo=L(Ho),Wo=L(Uo,!0);j(Uo);var Go=z(Uo,2);j(Ho);var Ko=z(Ho,2),qo=L(Ko,!0);j(Ko),j(Xa);var X=z(Xa,2),Jo=L(X),Yo=L(Jo),Xo=L(Yo),Zo=L(Xo,!0);j(Xo);var Qo=z(Xo,2),$o=L(Qo),es=L($o,!0);j($o),$o.value=$o.__value=``;var ts=z($o),ns=L(ts,!0);j(ts),ts.value=ts.__value=`compact`;var rs=z(ts),is=L(rs,!0);j(rs),rs.value=rs.__value=`striped`,j(Qo),j(Yo);var as=z(Yo,2),os=L(as),ss=z(os,2),cs=L(ss,!0);j(ss),j(as);var ls=z(as,2),us=L(ls),ds=L(us,!0);j(us);var fs=z(us,2),ps=L(fs),ms=L(ps,!0);j(ps),ps.value=ps.__value=``;var hs=z(ps),gs=L(hs,!0);j(hs),hs.value=hs.__value=`info`;var _s=z(hs),vs=L(_s,!0);j(_s),_s.value=_s.__value=`success`;var ys=z(_s),bs=L(ys,!0);j(ys),ys.value=ys.__value=`warning`;var xs=z(ys),Ss=L(xs,!0);j(xs),xs.value=xs.__value=`danger`;var Cs=z(xs),ws=L(Cs,!0);j(Cs),Cs.value=Cs.__value=`note`,j(fs),j(ls);var Ts=z(ls,2),Es=L(Ts,!0);j(Ts),j(Jo),Ie(2),j(X);var Ds=z(X,2),Os=L(Ds),ks=L(Os,!0);j(Os);var As=z(Os,4),js=L(As,!0);j(As),j(Ds);var Ms=z(Ds,2),Ns=L(Ms),Ps=L(Ns),Fs=L(Ps);Di(Fs);var Is=z(Fs,2),Ls=L(Is,!0);j(Is),j(Ps);var Rs=z(Ps,2),zs=L(Rs),Bs=z(zs,2),Vs=L(Bs,!0);j(Bs),j(Rs),j(Ns);var Hs=z(Ns,2),Us=L(Hs),Ws=L(Us,!0);j(Us);var Gs=z(Us,2);j(Hs);var Ks=z(Hs,2),qs=L(Ks),Js=L(qs,!0);j(qs);var Ys=z(qs,2);j(Ks);var Xs=z(Ks,2),Zs=L(Xs),Qs=L(Zs),$s=L(Qs,!0);j(Qs);var ec=z(Qs,2),tc=L(ec,!0);j(ec),j(Zs);var nc=z(Zs,2);j(Xs),j(Ms);var rc=z(Ms,2),ic=L(rc),ac=L(ic),oc=L(ac,!0);j(ac);var sc=z(ac,2),cc=L(sc),lc=z(cc,2),uc=z(lc,2),dc=z(uc,2),fc=z(dc,2),pc=z(fc,2);j(sc),j(ic);var mc=z(ic,2),hc=L(mc),gc=L(hc,!0);j(hc);var _c=z(hc,2);j(mc),j(rc);var vc=z(rc,2),yc=L(vc),bc=L(yc),xc=L(bc,!0);j(bc);var Sc=z(bc,2),Cc=L(Sc),wc=z(Cc,2),Tc=z(wc,2),Ec=z(Tc,2),Dc=z(Ec,2),Oc=z(Dc,2);j(Sc),j(yc);var kc=z(yc,2),Ac=L(kc),jc=L(Ac,!0);j(Ac);var Mc=z(Ac,2);j(kc),j(vc);var Nc=z(vc,2),Pc=L(Nc),Fc=L(Pc),Ic=L(Fc,!0);j(Fc);var Lc=z(Fc,2),Rc=L(Lc),zc=z(Rc,2),Bc=L(zc,!0);j(zc),j(Lc),j(Pc);var Vc=z(Pc,2),Hc=L(Vc);j(Vc),Ie(2),j(Nc);var Uc=z(Nc,2),Wc=L(Uc),Gc=L(Wc);ai(Gc,()=>Y(`snippet.attachment_help`),!0),j(Gc);var Kc=z(Gc,2);ai(Kc,()=>Y(`snippet.attachment_alt`),!0),j(Kc),j(Wc),j(Uc);var qc=z(Uc,2),Jc=L(qc),Yc=L(Jc),Xc=L(Yc,!0);j(Yc);var Zc=z(Yc,2);j(Jc),j(qc);var Qc=z(qc,2),$c=L(Qc),el=L($c,!0);j($c),Ie(2),j(Qc);var tl=z(Qc,2),nl=L(tl),rl=L(nl,!0);j(nl);var il=z(nl,2),al=L(il,!0);j(il);var ol=z(il,2),sl=L(ol,!0);j(ol),j(tl),j(n),j(t),B((e,t,n,r,i,o,c,u,d,p,h,g,v,y,b,x,S,w,E,ee,O,te,re,A,oe,se,ce,le,de,pe,he,_e,ve,ye,be,Se,we,Ee,Oe,ke,Ae,Me,Ne,Pe,Fe,j,Ie,Le,ze,Be,Ve,He,Ue,We,Ge,Ke,qe,Ye,Xe,Ze,Qe,$e,tt,M,rt,it,at,ot,st,ct,ut,ft,mt,gt,vt,N,bt,xt,wt,Tt,Et,Ot,kt,At,Nt,Pt,Ft,Rt,zt,Ht,Ut,Wt,Kt,qt,Jt,Yt,Zt,Qt,F,$t,en,tn,rn,an,on,cn,un,dn,fn,pn,L,z,mn,hn,gn,yn,bn,xn,Cn,Tn,En,Dn,On,jn,Mn,Nn,B,In,Ln,Rn,zn,Vn,Un,Wn,Gn,Kn,Jn,Yn,Zn,$n,tr,rr,ar,sr,lr,ur,fr,pr,hr,_r,yr,xr,Cr,wr,Dr,Or,kr,jr,Mr,H,Pr,Ir,Rr,Vr,Hr,W,Gr,Kr,qr,Yr,K,Zr,q,ei,ti,ii,ai,oi,si,li,di,mi,hi,vi,bi,xi,wi,Ti,Di,ki,Ai,Mi,Ni,Fi,Ii,Li,Ri,zi,Vi,Hi,Wi,Ki)=>{G(a,e),J(s,`placeholder`,t),G(l,n),G(f,r),G(_,i),G(C,o),G(T,c),G(D,u),G(k,d),G(ne,p),G(ie,h),G(ae,g),G(ue,v),G(fe,y),G(me,b),G(ge,x),G(xe,S),G(Ce,w),G(Te,E),G(De,ee),G(je,O),G(Re,te),G(Je,re),G(et,A),G(nt,oe),G(lt,se),G(dt,ce),G(pt,le),G(ht,de),G(_t,pe),G(yt,he),G(St,_e),J(Ct,`placeholder`,ve),G(Dt,ye),G(jt,be),J(Mt,`placeholder`,Se),G(It,we),J(Lt,`placeholder`,Ee),G(Bt,Oe),J(Vt,`placeholder`,ke),G(Gt,Ae),G(Xt,Me),G(P,Ne),G(nn,Pe),J(I,`placeholder`,Fe),G(sn,j),G(ln,Ie),G(R,Le),G(_n,ze),J(vn,`placeholder`,Be),G(Sn,Ve),G(wn,He),G(kn,Ue),J(An,`placeholder`,We),G(Pn,Ge),J(Fn,`placeholder`,Ke),G(Bn,qe),G(Hn,Ye),G(qn,Xe),G(Xn,Ze),G(Qn,Qe),G(er,$e),G(nr,tt),G(ir,M),G(or,rt),G(cr,it),G(dr,at),G(mr,ot),G(gr,st),G(vr,ct),G(br,ut),G(Sr,ft),G(Tr,mt),J(Er,`placeholder`,gt),G(Ar,vt),G(Nr,N),G(Fr,bt),G(Lr,xt),G(zr,wt),U=gi(Br,1,`space-y-3`,null,U,{hidden:V(m)!==`pie`}),G(Ur,Tt),Oi(Wr,Et),J(Wr,`placeholder`,Ot),G(Jr,kt),G(Xr,` ${At??``}`),$r=gi(Qr,1,`space-y-3`,null,$r,{hidden:V(m)!==`timeline`}),G(ni,Nt),Oi(ri,Pt),J(ri,`placeholder`,Ft),G(ci,Rt),G(ui,` ${zt??``}`),pi=gi(fi,1,`space-y-3`,null,pi,{hidden:V(m)!==`tree-view`}),G(_i,Ht),G(yi,` ${Ut??``}`),Ci=gi(Si,1,`space-y-3`,null,Ci,{hidden:V(m)!==`sequence`}),G(Ei,Wt),G(ji,` ${Kt??``}`),G(Pi,` ${qt??``}`),G(Bi,Jt),G(Ui,Yt),G(Gi,Zt),G(qi,Qt),G(Yi,F),G(Zi,$t),G(ta,en),G(ia,tn),J(aa,`placeholder`,rn),G(ca,an),J(la,`placeholder`,on),G(ma,cn),G(_a,un),G(ya,dn),G(xa,fn),G(Ca,pn),G(Ta,L),G(Da,z),G(ka,mn),G(Ma,hn),G(Fa,gn),G(La,yn),G(za,bn),G(Va,xn),G(Wa,Cn),J(Ga,`placeholder`,Tn),G(Ja,En),J(Ya,`placeholder`,Dn),G(eo,On),G(so,jn),G(uo,Mn),G(po,Nn),G(ho,B),G(_o,In),G(bo,Ln),G(Co,Rn),G(To,zn),G(Do,Vn),G(ko,Un),G(jo,Wn),G(Po,Gn),G(Lo,Kn),G(zo,Jn),G(Vo,Yn),G(Wo,Zn),J(Go,`placeholder`,$n),G(qo,tr),G(Zo,rr),G(es,ar),G(ns,sr),G(is,lr),G(cs,ur),G(ds,fr),G(ms,pr),G(gs,hr),G(vs,_r),G(bs,yr),G(Ss,xr),G(ws,Cr),G(Es,wr),G(ks,Dr),G(js,Or),G(Ls,kr),G(Vs,jr),G(Ws,Mr),G(Js,H),J(Ys,`placeholder`,Pr),G($s,Ir),G(tc,Rr),G(oc,Vr),J(cc,`title`,Hr),J(cc,`aria-label`,W),J(lc,`title`,Gr),J(lc,`aria-label`,Kr),J(uc,`title`,qr),J(uc,`aria-label`,Yr),J(dc,`title`,K),J(dc,`aria-label`,Zr),J(fc,`title`,q),J(fc,`aria-label`,ei),J(pc,`title`,ti),J(pc,`aria-label`,ii),G(gc,ai),J(_c,`placeholder`,oi),G(xc,si),J(Cc,`title`,li),J(Cc,`aria-label`,di),J(wc,`title`,mi),J(wc,`aria-label`,hi),J(Tc,`title`,vi),J(Tc,`aria-label`,bi),J(Ec,`title`,xi),J(Ec,`aria-label`,wi),J(Dc,`title`,Ti),J(Dc,`aria-label`,Di),J(Oc,`title`,ki),J(Oc,`aria-label`,Ai),G(jc,Mi),J(Mc,`placeholder`,Ni),G(Ic,Fi),G(Bc,Ii),J(Hc,`placeholder`,Li),G(Xc,Ri),J(Zc,`placeholder`,zi),G(el,Vi),G(rl,Hi),G(al,Wi),G(sl,Ki)},[()=>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.mermaid`),()=>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.columns`),()=>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_width_label`),()=>Y(`snippet.code_width_default`),()=>Y(`snippet.code_width_full`),()=>Y(`snippet.code_width_three_quarters`),()=>Y(`snippet.code_width_two_thirds`),()=>Y(`snippet.code_width_half`),()=>Y(`snippet.code_width_third`),()=>Y(`snippet.code_width_quarter`),()=>Y(`snippet.code_align_label`),()=>Y(`snippet.code_align_default`),()=>Y(`snippet.code_align_left`),()=>Y(`snippet.code_align_center`),()=>Y(`snippet.code_align_right`),()=>Y(`snippet.code_layout_hint`),()=>Y(`snippet.code_content_label`),()=>Y(`snippet.code_content_placeholder`),()=>Y(`snippet.mermaid_builder_type_label`),()=>Y(`snippet.mermaid_type_pie`),()=>Y(`snippet.mermaid_type_timeline`),()=>Y(`snippet.mermaid_type_tree_view`),()=>Y(`snippet.mermaid_type_sequence`),()=>Y(`snippet.mermaid_pie_title_label`),()=>Pe(),()=>Y(`snippet.mermaid_pie_title_placeholder`),()=>Y(`snippet.mermaid_pie_items_label`),()=>Y(`snippet.mermaid_pie_add_item`),()=>Y(`snippet.mermaid_timeline_title_label`),()=>Fe(),()=>Y(`snippet.mermaid_timeline_title_placeholder`),()=>Y(`snippet.mermaid_timeline_items_label`),()=>Y(`snippet.mermaid_timeline_add_item`),()=>Y(`snippet.mermaid_tree_items_label`),()=>Y(`snippet.mermaid_tree_add_item`),()=>Y(`snippet.mermaid_sequence_items_label`),()=>Y(`snippet.mermaid_sequence_add_message`),()=>Y(`snippet.mermaid_sequence_add_note`),()=>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_width_label`),()=>Y(`snippet.image_width_default`),()=>Y(`snippet.image_width_full`),()=>Y(`snippet.image_width_three_quarters`),()=>Y(`snippet.image_width_two_thirds`),()=>Y(`snippet.image_width_half`),()=>Y(`snippet.image_width_third`),()=>Y(`snippet.image_width_quarter`),()=>Y(`snippet.image_align_label`),()=>Y(`snippet.image_align_default`),()=>Y(`snippet.image_align_left`),()=>Y(`snippet.image_align_center`),()=>Y(`snippet.image_align_right`),()=>Y(`snippet.image_alt_label`),()=>Y(`snippet.image_alt_placeholder`),()=>Y(`snippet.image_url_label`),()=>Y(`snippet.image_src_placeholder`),()=>Y(`snippet.columns_count_label`),()=>Y(`snippet.columns_valign_label`),()=>Y(`snippet.columns_valign_center`),()=>Y(`snippet.columns_valign_top`),()=>Y(`snippet.columns_valign_bottom`),()=>Y(`snippet.columns_valign_stretch`),()=>Y(`snippet.columns_text_label`),()=>Y(`snippet.columns_text_default`),()=>Y(`snippet.columns_text_left`),()=>Y(`snippet.columns_text_center`),()=>Y(`snippet.columns_text_right`),()=>Y(`snippet.columns_text_justify`),()=>Y(`snippet.columns_gap_label`),()=>Y(`snippet.columns_gap_sm`),()=>Y(`snippet.columns_gap_md`),()=>Y(`snippet.columns_gap_lg`),()=>Y(`snippet.columns_ratio_label`),()=>Y(`snippet.columns_ratio_placeholder`),()=>Y(`snippet.columns_hint`),()=>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`)]),H(`click`,t,e=>{e.target===e.currentTarget&&at()}),H(`input`,s,oe),H(`keydown`,s,se),H(`click`,u,le),H(`change`,y,Ae),H(`input`,Ct,M),H(`input`,Ot,M),H(`input`,Mt,M),H(`input`,Lt,M),H(`input`,Vt,M),H(`change`,Kt,M),H(`input`,Qt,M),H(`input`,I,M),H(`change`,un,M),H(`change`,mn,Oe),H(`input`,vn,M),H(`change`,Tn,M),H(`input`,An,M),H(`input`,Fn,M),H(`input`,Un,M),H(`change`,Jn,M),H(`change`,fr,M),H(`input`,Er,M),H(`change`,jr,ze),xi(jr,()=>V(m),e=>F(m,e)),H(`input`,Wr,M),H(`click`,Yr,Be),H(`input`,ri,M),H(`click`,li,Ue),H(`click`,vi,Ge),H(`click`,Ai,Xe),H(`click`,Mi,Ze),H(`change`,Vi,it),H(`change`,$i,M),H(`input`,aa,M),H(`input`,la,M),H(`change`,ha,M),H(`change`,Na,M),H(`input`,Ga,M),H(`input`,Ya,M),H(`change`,to,M),H(`change`,co,M),H(`change`,xo,M),H(`change`,Fo,M),H(`input`,Go,M),H(`change`,Qo,rt),H(`change`,os,rt),H(`change`,fs,rt),H(`click`,As,()=>kl(ee)),H(`change`,Fs,Me),H(`change`,zs,Me),H(`change`,Gs,()=>{Ne(),M()}),H(`input`,Ys,()=>{Ne(),M()}),H(`input`,nc,M),H(`click`,cc,e=>ye(e.currentTarget)),H(`click`,lc,e=>ye(e.currentTarget)),H(`click`,uc,e=>ye(e.currentTarget)),H(`click`,dc,e=>ye(e.currentTarget)),H(`click`,fc,e=>ye(e.currentTarget)),H(`click`,pc,e=>ye(e.currentTarget)),H(`input`,_c,M),H(`click`,Cc,e=>be(e.currentTarget)),H(`click`,wc,e=>be(e.currentTarget)),H(`click`,Tc,e=>be(e.currentTarget)),H(`click`,Ec,e=>be(e.currentTarget)),H(`click`,Dc,e=>be(e.currentTarget)),H(`click`,Oc,e=>be(e.currentTarget)),H(`input`,Mc,M),H(`input`,Rc,M),H(`click`,zc,_e),H(`input`,Zc,M),H(`click`,nl,ct),H(`click`,il,at),H(`click`,ol,st),W(e,t)};K(xt,e=>{t.open&&e(St)}),Vi(eu(z(xt,2),{}),e=>F(d,e,!0),()=>V(d)),W(e,bt),Je()}Pr([`click`,`input`,`keydown`,`change`]);var uu=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`]),du={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 fu(e){return du[e]||{labelKey:`snippet.inline_edit_btn`,iconClass:`fa-solid fa-pen-to-square`}}var pu={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 mu(e){return{labelKey:pu[e]||`snippet.inline_delete_btn`,iconClass:`fa-solid fa-trash`}}var hu=[{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, .mermaid`},{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]`}],gu=null;function _u(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 vu(e,t,n){if(!n?.trim())return;let r=Yl(n);if(!r||!uu.has(r))return;let i=t+n.length,a={start:t,end:i,type:r};e.some(e=>!!(_u(e,a)||(e.type===`code-block`||e.type===`compare`)&&t>=e.start&&i<=e.end))||e.push(a)}function yu(e,t,n,r=0){let i;for(;i=n.exec(t);){let t=i[r];vu(e,i.index+(r>0?i[0].indexOf(t):0),t),i[0].length===0&&(n.lastIndex+=1)}}function bu(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=>_u(e,a))||e.push(a)}}function xu(e,t){let n=RegExp(`^${Ls()}`,`gm`),r;for(;r=n.exec(t);){let t=r[0];if(!t.trim()){t.length===0&&(n.lastIndex+=1);continue}let i=Yl(t);if(!i||!uu.has(i))continue;let a=t.match(/^([ \t]*)(?:<!--|```)/)?.[1]||``,o=r.index,s={start:o,end:o+t.length,type:i,indent:a};e.some(e=>_u(e,s))||e.push(s)}}function Su(e){let t=[];yu(t,e,/<details[\s\S]*?<\/details>/gi),yu(t,e,/<div\b[^>]*border-left[^>]*>[\s\S]*?<\/div>/gi),bu(t,e),xu(t,e),yu(t,e,/(?:^|\n\n)(#{1,4} [^\n]+)/g,1),yu(t,e,/<span\b[^>]*color:[^>]*>[\s\S]*?<\/span>/gi),yu(t,e,RegExp(`(?:^|\\n)((${Zo()}))`,`g`),1),yu(t,e,RegExp(`(?:^|\\n)((${vs()}))`,`g`),1),yu(t,e,Oc()),yu(t,e,kc()),yu(t,e,RegExp(`(?:^|\\n)((${Es()}))`,`g`),1),yu(t,e,/\[[^\]\n]+\]\([^)]+\)/g);let n=e.match(/^---\s*\n[\s\S]*?\n---/);return yu(t,e,/^---$/gm),t.filter(e=>e.type===`separator`?!n||e.start>n[0].length:!0).sort((e,t)=>e.start-t.start)}function Cu(e,t){return Array.from(e.querySelectorAll(t)).filter(e=>!e.parentElement?.closest(`ol, ul`))}function wu(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 hu){let i=t.filter(e=>n.includes(e.type));if(!i.length)continue;let a=r===`ol`||r===`ul`?Cu(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 Tu(){gu&&=(gu.remove(),null)}function Eu(e,t){Tu();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(),Tu(),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`,gu=i}function Du(e,t){let n=t instanceof Element?t:null;for(;n?.parentElement&&n.parentElement!==e;)n=n.parentElement;return!n||n===e||n.parentElement!==e?null:n}function Ou(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 ku(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 Au(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(`
83
+ `,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(ot(l),X.currentDocId&&n())try{await fetch(`/api/documents/`+X.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}at(),window.location.href=`/diagram?id=${a}&img=${encodeURIComponent(t)}`}function dt(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 ft(e,t){for(let n of Array.from(e.options))if(n.value===t){e.value=n.value;return}}function pt(e){let t=Object.entries(Cc).find(([,t])=>t.border===e);return t?t[0]:null}function mt(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 ht(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 gt(e,t){let n=Yl(t,e,{inlineIndent:u});switch(t){case`collapsible`:n.summary!==void 0&&_t(`snip-collapsible-summary`,n.summary),_t(`snip-collapsible-body`,n.body||``);break;case`link`:n.text!==void 0&&(_t(`snip-link-text`,n.text),_t(`snip-link-url`,n.url));break;case`doc-link`:if(n.docId!==void 0){let e=k(`snip-doc-select`);ft(e,n.docId);let t=e.options[e.selectedIndex]?.text??``;_t(`snip-doc-link-text`,n.text===t?``:n.text)}break;case`anchor-link`:if(n.anchor!==void 0){_t(`snip-anchor-text`,n.text);let e=k(`snip-anchor-id`);dt(e,n.anchor),e.value=n.anchor}break;case`anchor-doc-link`:n.docId!==void 0&&(ft(k(`snip-anchor-doc-select`),n.docId),_t(`snip-anchor-doc-text`,n.text),Oe().then(()=>{let e=k(`snip-anchor-doc-id`);e&&(dt(e,n.anchor),e.value=n.anchor,M())}));break;case`ordered-list`:_t(`snip-ordered-list-content`,n.content);break;case`unordered-list`:_t(`snip-unordered-list-content`,n.content);break;case`code-block`:_t(`snip-code-lang`,n.lang),_t(`snip-code-content`,n.code),_t(`snip-code-width`,n.width||``),_t(`snip-code-align`,n.align||``);break;case`blockquote`:{_t(`snip-blockquote-type`,n.type||``),_t(`snip-blockquote-title`,n.title||``);let e=k(`snip-blockquote-icon`);e&&(e.checked=!!n.icon),_t(`snip-blockquote-content`,n.content);break}case`image`:n.alt!==void 0&&(_t(`snip-image-alt`,n.alt),_t(`snip-image-url`,n.url)),_t(`snip-image-width`,n.width||``),_t(`snip-image-align`,n.align||``);break;case`heading-1`:case`heading-2`:case`heading-3`:case`heading-4`:_t(`snip-heading-content`,n.text);break;case`table`:{_t(`snip-table-style`,n.attrs.style||``);let e=k(`snip-table-bordered`);e&&(e.checked=n.attrs.border===`bordered`),_t(`snip-table-color`,n.attrs.color||``),D.data=n.rows,Sl(D);break}case`tree`:ee.items=n.items,Ol(ee);break;case`colored-text`:n.color!==void 0&&(mt(pt(n.color)),_t(`snip-colored-text-content`,n.content));break;case`colored-section`:n.borderColor&&ht(pt(n.borderColor)),n.content!==void 0&&_t(`snip-colored-content`,n.content);break;case`compare`:_t(`snip-compare-content`,n.content||``);break}M()}function _t(e,t){let n=k(e);n&&(n.value=t??``)}function vt(){let e=X.allDocs.map(e=>`<option value="${O(e.id)}">${O(e.title)}</option>`).join(``),t=k(`snip-doc-select`);t&&(t.innerHTML=e);let n=k(`snip-anchor-doc-select`);n&&(n.innerHTML=e),De(),Oe()}function yt(){let e=r()===`inline-edit`,t=k(`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=k(`snippet-submit-btn`);n&&(n.textContent=Y(e?`snippet.inline_save_btn`:`snippet.insert_btn`));let i=k(`snippet-type`);i&&(i.disabled=e,i.classList.toggle(`cursor-not-allowed`,e),i.classList.toggle(`opacity-70`,e));let a=k(`snippet-delete-btn`);a&&a.classList.toggle(`hidden`,!e);let o=k(`snippet-modal-card`);o&&(o.classList.toggle(`max-w-6xl`,!e),o.classList.toggle(`max-w-5xl`,e))}let N=!1;kn(()=>{t.open&&!N?(N=!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`,Le(),queueMicrotask(()=>{if(yt(),vt(),r()===`inline-edit`&&a()){let e=i().slice(c,l),t=k(`snippet-type`);t&&(t.value=a().type),Ae(),gt(e,a().type),A(!1),a().type===`table`&&a().tableFocusCell&&fl(a().tableFocusCell.row,a().tableFocusCell.col,!0)}else if(r()===`inline-insert`)ie();else{let e=n()?n().value.slice(c,l):``,t=e?Xl(e):null;if(t){let n=k(`snippet-type`);n&&(n.value=t),Ae(),gt(e,t),A()}else ie()}})):t.open||(N=!1)});var bt=lu(),xt=R(bt),St=e=>{var t=cu(),n=L(t),r=L(n),i=L(r),a=L(i,!0);j(i),j(r);var o=z(r,4),s=L(o),c=z(s,4),l=L(c,!0);j(c),j(o);var u=z(o,2),d=z(L(u),2),f=L(d,!0);j(d),j(u);var p=z(u,2),h=L(p),_=L(h,!0);j(h);var y=z(h,2),x=L(y),C=L(x,!0);j(x),x.value=x.__value=`diagram`;var w=z(x),T=L(w,!0);j(w),w.value=w.__value=`heading-1`;var E=z(w),D=L(E,!0);j(E),E.value=E.__value=`heading-2`;var O=z(E),k=L(O,!0);j(O),O.value=O.__value=`heading-3`;var te=z(O),ne=L(te,!0);j(te),te.value=te.__value=`heading-4`;var re=z(te),ie=L(re,!0);j(re),re.value=re.__value=`collapsible`;var A=z(re),ae=L(A,!0);j(A),A.value=A.__value=`link`;var ce=z(A),ue=L(ce,!0);j(ce),ce.value=ce.__value=`doc-link`;var de=z(ce),fe=L(de,!0);j(de),de.value=de.__value=`anchor-link`;var pe=z(de),me=L(pe,!0);j(pe),pe.value=pe.__value=`anchor-doc-link`;var he=z(pe),ge=L(he,!0);j(he),he.value=he.__value=`ordered-list`;var ve=z(he),xe=L(ve,!0);j(ve),ve.value=ve.__value=`unordered-list`;var Se=z(ve),Ce=L(Se,!0);j(Se),Se.value=Se.__value=`code-block`;var we=z(Se),Te=L(we,!0);j(we),we.value=we.__value=`mermaid`;var Ee=z(we),De=L(Ee,!0);j(Ee),Ee.value=Ee.__value=`blockquote`;var ke=z(Ee),je=L(ke,!0);j(ke),ke.value=ke.__value=`separator`;var Le=z(ke),Re=L(Le,!0);j(Le),Le.value=Le.__value=`image`;var qe=z(Le),Je=L(qe,!0);j(qe),qe.value=qe.__value=`table`;var $e=z(qe),et=L($e,!0);j($e),$e.value=$e.__value=`tree`;var tt=z($e),nt=L(tt,!0);j(tt),tt.value=tt.__value=`colored-section`;var ot=z(tt),lt=L(ot,!0);j(ot),ot.value=ot.__value=`colored-text`;var ut=z(ot),dt=L(ut,!0);j(ut),ut.value=ut.__value=`emojis`;var ft=z(ut),pt=L(ft,!0);j(ft),ft.value=ft.__value=`attachment`;var mt=z(ft),ht=L(mt,!0);j(mt),mt.value=mt.__value=`local-search`;var gt=z(mt),_t=L(gt,!0);j(gt),gt.value=gt.__value=`compare`;var vt=z(gt),yt=L(vt,!0);j(vt),vt.value=vt.__value=`columns`,j(y),j(p);var N=z(p,2),bt=L(N),xt=L(bt),St=L(xt,!0);j(xt);var Ct=z(xt,2);j(bt),j(N);var wt=z(N,2),Tt=L(wt),Et=L(Tt),Dt=L(Et,!0);j(Et);var Ot=z(Et,2);j(Tt);var kt=z(Tt,2),At=L(kt),jt=L(At,!0);j(At);var Mt=z(At,2);j(kt),j(wt);var Nt=z(wt,2),Pt=L(Nt),Ft=L(Pt),It=L(Ft,!0);j(Ft);var Lt=z(Ft,2);j(Pt);var Rt=z(Pt,2),zt=L(Rt),Bt=L(zt,!0);j(zt);var Vt=z(zt,2);j(Rt),j(Nt);var Ht=z(Nt,2),Ut=L(Ht),Wt=L(Ut),Gt=L(Wt,!0);j(Wt);var Kt=z(Wt,2);j(Ut);var qt=z(Ut,2),Jt=L(qt),Yt=L(Jt),Xt=L(Yt,!0);j(Yt);var Zt=z(Yt,2),P=L(Zt,!0);j(Zt),j(Jt);var Qt=z(Jt,2);j(qt),j(Ht);var $t=z(Ht,2),en=L($t),tn=L(en),nn=L(tn,!0);j(tn);var I=z(tn,2);j(en);var rn=z(en,2),an=L(rn),on=L(an),sn=L(on,!0);j(on);var cn=z(on,2),ln=L(cn,!0);j(cn),j(an);var un=z(an,2);j(rn),j($t);var dn=z($t,2),fn=L(dn),pn=L(fn),R=L(pn,!0);j(pn);var mn=z(pn,2);j(fn);var hn=z(fn,2),gn=L(hn),_n=L(gn,!0);j(gn);var vn=z(gn,2);j(hn);var yn=z(hn,2),bn=L(yn),xn=L(bn),Sn=L(xn,!0);j(xn);var Cn=z(xn,2),wn=L(Cn,!0);j(Cn),j(bn);var Tn=z(bn,2);j(yn),j(dn);var En=z(dn,2),Dn=L(En),On=L(Dn),kn=L(On,!0);j(On);var An=z(On,2);j(Dn),j(En);var jn=z(En,2),Mn=L(jn),Nn=L(Mn),Pn=L(Nn,!0);j(Nn);var Fn=z(Nn,2);j(Mn),j(jn);var In=z(jn,2),Ln=L(In),Rn=L(Ln),zn=L(Rn),Bn=L(zn,!0);j(zn);var Vn=z(zn,2),Hn=L(Vn,!0);j(Vn),j(Rn);var Un=z(Rn,2);j(Ln);var Wn=z(Ln,2),Gn=L(Wn),Kn=L(Gn),qn=L(Kn,!0);j(Kn);var Jn=z(Kn,2),Yn=L(Jn),Xn=L(Yn,!0);j(Yn),Yn.value=Yn.__value=``;var Zn=z(Yn),Qn=L(Zn,!0);j(Zn),Zn.value=Zn.__value=`full`;var $n=z(Zn),er=L($n,!0);j($n),$n.value=$n.__value=`3/4`;var tr=z($n),nr=L(tr,!0);j(tr),tr.value=tr.__value=`2/3`;var rr=z(tr),ir=L(rr,!0);j(rr),rr.value=rr.__value=`1/2`;var ar=z(rr),or=L(ar,!0);j(ar),ar.value=ar.__value=`1/3`;var sr=z(ar),cr=L(sr,!0);j(sr),sr.value=sr.__value=`1/4`,j(Jn),j(Gn);var lr=z(Gn,2),ur=L(lr),dr=L(ur,!0);j(ur);var fr=z(ur,2),pr=L(fr),mr=L(pr,!0);j(pr),pr.value=pr.__value=``;var hr=z(pr),gr=L(hr,!0);j(hr),hr.value=hr.__value=`left`;var _r=z(hr),vr=L(_r,!0);j(_r),_r.value=_r.__value=`center`;var yr=z(_r),br=L(yr,!0);j(yr),yr.value=yr.__value=`right`,j(fr),j(lr),j(Wn);var xr=z(Wn,2),Sr=L(xr,!0);j(xr);var Cr=z(xr,2),wr=L(Cr),Tr=L(wr,!0);j(wr);var Er=z(wr,2);j(Cr),j(In);var Dr=z(In,2),Or=L(Dr),kr=L(Or),Ar=L(kr,!0);j(kr);var jr=z(kr,2),Mr=L(jr),Nr=L(Mr,!0);j(Mr),Mr.value=Mr.__value=`pie`;var Pr=z(Mr),Fr=L(Pr,!0);j(Pr),Pr.value=Pr.__value=`timeline`;var Ir=z(Pr),Lr=L(Ir,!0);j(Ir),Ir.value=Ir.__value=`tree-view`;var Rr=z(Ir),zr=L(Rr,!0);j(Rr),Rr.value=Rr.__value=`sequence`,j(jr),j(Or);var Br=z(Or,2);let U;var Vr=L(Br),Hr=L(Vr),Ur=L(Hr,!0);j(Hr);var Wr=z(Hr,2);Di(Wr),j(Vr);var Gr=z(Vr,2),Kr=L(Gr),qr=L(Kr),Jr=L(qr,!0);j(qr);var Yr=z(qr,2),Xr=z(L(Yr));j(Yr),j(Kr);var Zr=z(Kr,2);q(Zr,23,()=>V(g),e=>e.id,(e,t,n)=>{var r=nu(),i=L(r);Di(i);var a=z(i,2);Di(a);var o=z(a,2);j(r),B((e,n,r,s,c)=>{J(i,`aria-label`,e),J(i,`placeholder`,n),Oi(a,V(t).value),J(a,`aria-label`,r),J(o,`title`,s),J(o,`aria-label`,c),o.disabled=V(g).length<=1},[()=>`${Y(`snippet.mermaid_pie_item_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_pie_item_label_placeholder`),()=>`${Y(`snippet.mermaid_pie_item_value`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_pie_remove_item`),()=>Y(`snippet.mermaid_pie_remove_item`)]),H(`input`,i,M),Ni(i,()=>V(t).label,e=>V(t).label=e),H(`input`,a,e=>Ve(V(t).id,e.currentTarget)),H(`click`,o,()=>He(V(t).id)),W(e,r)}),j(Zr),j(Gr),j(Br);var Qr=z(Br,2);let $r;var ei=L(Qr),ti=L(ei),ni=L(ti,!0);j(ti);var ri=z(ti,2);Di(ri),j(ei);var ii=z(ei,2),oi=L(ii),si=L(oi),ci=L(si,!0);j(si);var li=z(si,2),ui=z(L(li));j(li),j(oi);var di=z(oi,2);q(di,23,()=>V(v),e=>e.id,(e,t,n)=>{var r=ru(),i=L(r);Di(i);var a=z(i,2);Di(a);var o=z(a,2);j(r),B((e,t,n,r,s,c)=>{J(i,`aria-label`,e),J(i,`placeholder`,t),J(a,`aria-label`,n),J(a,`placeholder`,r),J(o,`title`,s),J(o,`aria-label`,c),o.disabled=V(v).length<=1},[()=>`${Y(`snippet.mermaid_timeline_period_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_timeline_period_placeholder`),()=>`${Y(`snippet.mermaid_timeline_event_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_timeline_event_placeholder`),()=>Y(`snippet.mermaid_timeline_remove_item`),()=>Y(`snippet.mermaid_timeline_remove_item`)]),H(`input`,i,M),Ni(i,()=>V(t).period,e=>V(t).period=e),H(`input`,a,M),Ni(a,()=>V(t).event,e=>V(t).event=e),H(`click`,o,()=>We(V(t).id)),W(e,r)}),j(di),j(ii),j(Qr);var fi=z(Qr,2);let pi;var mi=L(fi),hi=L(mi),_i=L(hi,!0);j(hi);var vi=z(hi,2),yi=z(L(vi));j(vi),j(mi);var bi=z(mi,2);q(bi,23,()=>V(b),e=>e.id,(e,t,n)=>{var r=iu(),i=L(r);Di(i),J(i,`max`,6);var a=z(i,2);Di(a);var o=z(a,2);Di(o);var s=z(o,2);Di(s);var c=z(s,2);j(r),B((e,n,r,l,u,d,f,p,m)=>{Oi(i,V(t).level),J(i,`aria-label`,e),J(a,`aria-label`,n),J(a,`placeholder`,r),J(o,`aria-label`,l),J(o,`placeholder`,u),J(s,`aria-label`,d),J(s,`placeholder`,f),J(c,`title`,p),J(c,`aria-label`,m),c.disabled=V(b).length<=1},[()=>`${Y(`snippet.mermaid_tree_level_label`)} ${V(n)+1}`,()=>`${Y(`snippet.mermaid_tree_label_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_tree_label_placeholder`),()=>`${Y(`snippet.mermaid_tree_decorator_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_tree_decorator_placeholder`),()=>`${Y(`snippet.mermaid_tree_note_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_tree_note_placeholder`),()=>Y(`snippet.mermaid_tree_remove_item`),()=>Y(`snippet.mermaid_tree_remove_item`)]),H(`input`,i,e=>Ke(V(t).id,e.currentTarget)),H(`input`,a,M),Ni(a,()=>V(t).label,e=>V(t).label=e),H(`input`,o,M),Ni(o,()=>V(t).decorator,e=>V(t).decorator=e),H(`input`,s,M),Ni(s,()=>V(t).note,e=>V(t).note=e),H(`click`,c,()=>Ye(V(t).id)),W(e,r)}),j(bi),j(fi);var Si=z(fi,2);let Ci;var wi=L(Si),Ti=L(wi),Ei=L(Ti,!0);j(Ti);var ki=z(Ti,2),Ai=L(ki),ji=z(L(Ai));j(Ai);var Mi=z(Ai,2),Pi=z(L(Mi));j(Mi),j(ki),j(wi);var Fi=z(wi,2);q(Fi,23,()=>V(S),e=>e.id,(e,t,n)=>{var r=su(),i=L(r),a=L(i),o=L(a,!0);j(a),a.value=a.__value=`message`;var s=z(a),c=L(s,!0);j(s),s.value=s.__value=`note`,j(i);var l=z(i,2),u=e=>{var r=au(),i=L(r),a=L(i,!0);j(i),i.value=i.__value=`left of`;var o=z(i),s=L(o,!0);j(o),o.value=o.__value=`right of`;var c=z(o),l=L(c,!0);j(c),c.value=c.__value=`over`,j(r),B((e,t,n,i)=>{J(r,`aria-label`,e),G(a,t),G(s,n),G(l,i)},[()=>`${Y(`snippet.mermaid_sequence_note_position_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_note_left`),()=>Y(`snippet.mermaid_sequence_note_right`),()=>Y(`snippet.mermaid_sequence_note_over`)]),H(`change`,r,M),xi(r,()=>V(t).notePosition,e=>V(t).notePosition=e),W(e,r)},d=e=>{var r=ou();Di(r),B((e,t)=>{J(r,`aria-label`,e),J(r,`placeholder`,t)},[()=>`${Y(`snippet.mermaid_sequence_from_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_from_placeholder`)]),H(`input`,r,M),Ni(r,()=>V(t).from,e=>V(t).from=e),W(e,r)};K(l,e=>{V(t).type===`note`?e(u):e(d,-1)});var f=z(l,2),p=L(f);p.value=p.__value=`->>`;var m=z(p);m.value=m.__value=`-->>`;var h=z(m);h.value=h.__value=`--x`;var g=z(h);g.value=g.__value=`-x`;var _=z(g);_.value=_.__value=`-->`;var v=z(_);v.value=v.__value=`->`,j(f);var y=z(f,2);Di(y);var b=z(y,2);Di(b);var x=z(b,2);j(r),B((e,n,r,a,s,l,u,d,p,m)=>{J(i,`aria-label`,e),G(o,n),G(c,r),J(f,`aria-label`,a),f.disabled=V(t).type===`note`,J(y,`aria-label`,s),J(y,`placeholder`,l),J(b,`aria-label`,u),J(b,`placeholder`,d),J(x,`title`,p),J(x,`aria-label`,m),x.disabled=V(S).length<=1},[()=>`${Y(`snippet.mermaid_sequence_type_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_type_message`),()=>Y(`snippet.mermaid_sequence_type_note`),()=>`${Y(`snippet.mermaid_sequence_arrow_label`)} ${V(n)+1}`,()=>`${Y(`snippet.mermaid_sequence_to_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_to_placeholder`),()=>`${Y(`snippet.mermaid_sequence_message_label`)} ${V(n)+1}`,()=>Y(`snippet.mermaid_sequence_message_placeholder`),()=>Y(`snippet.mermaid_sequence_remove_item`),()=>Y(`snippet.mermaid_sequence_remove_item`)]),H(`change`,i,M),xi(i,()=>V(t).type,e=>V(t).type=e),H(`change`,f,M),xi(f,()=>V(t).arrow,e=>V(t).arrow=e),H(`input`,y,M),Ni(y,()=>V(t).to,e=>V(t).to=e),H(`input`,b,M),Ni(b,()=>V(t).message,e=>V(t).message=e),H(`click`,x,()=>Qe(V(t).id)),W(e,r)}),j(Fi),j(Si),j(Dr);var Ii=z(Dr,2),Li=L(Ii),Ri=L(Li),zi=L(Ri),Bi=L(zi,!0);j(zi);var Vi=z(zi,2),Hi=L(Vi),Ui=L(Hi,!0);j(Hi),Hi.value=Hi.__value=``;var Wi=z(Hi),Gi=L(Wi,!0);j(Wi),Wi.value=Wi.__value=`info`;var Ki=z(Wi),qi=L(Ki,!0);j(Ki),Ki.value=Ki.__value=`success`;var Ji=z(Ki),Yi=L(Ji,!0);j(Ji),Ji.value=Ji.__value=`warning`;var Xi=z(Ji),Zi=L(Xi,!0);j(Xi),Xi.value=Xi.__value=`error`,j(Vi),j(Ri);var Qi=z(Ri,2),$i=L(Qi),ea=z($i,2),ta=L(ea,!0);j(ea),j(Qi),j(Li);var na=z(Li,2),ra=L(na),ia=L(ra,!0);j(ra);var aa=z(ra,2);j(na);var oa=z(na,2),sa=L(oa),ca=L(sa,!0);j(sa);var la=z(sa,2);j(oa),j(Ii);var ua=z(Ii,2),da=L(ua),fa=L(da),pa=L(fa),ma=L(pa,!0);j(pa);var ha=z(pa,2),ga=L(ha),_a=L(ga,!0);j(ga),ga.value=ga.__value=``;var va=z(ga),ya=L(va,!0);j(va),va.value=va.__value=`full`;var ba=z(va),xa=L(ba,!0);j(ba),ba.value=ba.__value=`3/4`;var Sa=z(ba),Ca=L(Sa,!0);j(Sa),Sa.value=Sa.__value=`2/3`;var wa=z(Sa),Ta=L(wa,!0);j(wa),wa.value=wa.__value=`1/2`;var Ea=z(wa),Da=L(Ea,!0);j(Ea),Ea.value=Ea.__value=`1/3`;var Oa=z(Ea),ka=L(Oa,!0);j(Oa),Oa.value=Oa.__value=`1/4`,j(ha),j(fa);var Aa=z(fa,2),ja=L(Aa),Ma=L(ja,!0);j(ja);var Na=z(ja,2),Pa=L(Na),Fa=L(Pa,!0);j(Pa),Pa.value=Pa.__value=``;var Ia=z(Pa),La=L(Ia,!0);j(Ia),Ia.value=Ia.__value=`left`;var Ra=z(Ia),za=L(Ra,!0);j(Ra),Ra.value=Ra.__value=`center`;var Ba=z(Ra),Va=L(Ba,!0);j(Ba),Ba.value=Ba.__value=`right`,j(Na),j(Aa),j(da);var Ha=z(da,2),Ua=L(Ha),Wa=L(Ua,!0);j(Ua);var Ga=z(Ua,2);j(Ha);var Ka=z(Ha,2),qa=L(Ka),Ja=L(qa,!0);j(qa);var Ya=z(qa,2);j(Ka),j(ua);var Xa=z(ua,2),Za=L(Xa),Qa=L(Za),$a=L(Qa),eo=L($a,!0);j($a);var to=z($a,2),no=L(to);no.value=no.__value=`2`;var ro=z(no);ro.value=ro.__value=`3`;var io=z(ro);io.value=io.__value=`4`,j(to),j(Qa);var ao=z(Qa,2),oo=L(ao),so=L(oo,!0);j(oo);var co=z(oo,2),lo=L(co),uo=L(lo,!0);j(lo),lo.value=lo.__value=`center`;var fo=z(lo),po=L(fo,!0);j(fo),fo.value=fo.__value=`top`;var mo=z(fo),ho=L(mo,!0);j(mo),mo.value=mo.__value=`bottom`;var go=z(mo),_o=L(go,!0);j(go),go.value=go.__value=`stretch`,j(co),j(ao);var vo=z(ao,2),yo=L(vo),bo=L(yo,!0);j(yo);var xo=z(yo,2),So=L(xo),Co=L(So,!0);j(So),So.value=So.__value=``;var wo=z(So),To=L(wo,!0);j(wo),wo.value=wo.__value=`left`;var Eo=z(wo),Do=L(Eo,!0);j(Eo),Eo.value=Eo.__value=`center`;var Oo=z(Eo),ko=L(Oo,!0);j(Oo),Oo.value=Oo.__value=`right`;var Ao=z(Oo),jo=L(Ao,!0);j(Ao),Ao.value=Ao.__value=`justify`,j(xo),j(vo);var Mo=z(vo,2),No=L(Mo),Po=L(No,!0);j(No);var Fo=z(No,2),Io=L(Fo),Lo=L(Io,!0);j(Io),Io.value=Io.__value=`sm`;var Ro=z(Io),zo=L(Ro,!0);j(Ro),Ro.value=Ro.__value=`md`;var Bo=z(Ro),Vo=L(Bo,!0);j(Bo),Bo.value=Bo.__value=`lg`,j(Fo),j(Mo),j(Za);var Ho=z(Za,2),Uo=L(Ho),Wo=L(Uo,!0);j(Uo);var Go=z(Uo,2);j(Ho);var Ko=z(Ho,2),qo=L(Ko,!0);j(Ko),j(Xa);var X=z(Xa,2),Jo=L(X),Yo=L(Jo),Xo=L(Yo),Zo=L(Xo,!0);j(Xo);var Qo=z(Xo,2),$o=L(Qo),es=L($o,!0);j($o),$o.value=$o.__value=``;var ts=z($o),ns=L(ts,!0);j(ts),ts.value=ts.__value=`compact`;var rs=z(ts),is=L(rs,!0);j(rs),rs.value=rs.__value=`striped`,j(Qo),j(Yo);var as=z(Yo,2),os=L(as),ss=z(os,2),cs=L(ss,!0);j(ss),j(as);var ls=z(as,2),us=L(ls),ds=L(us,!0);j(us);var fs=z(us,2),ps=L(fs),ms=L(ps,!0);j(ps),ps.value=ps.__value=``;var hs=z(ps),gs=L(hs,!0);j(hs),hs.value=hs.__value=`info`;var _s=z(hs),vs=L(_s,!0);j(_s),_s.value=_s.__value=`success`;var ys=z(_s),bs=L(ys,!0);j(ys),ys.value=ys.__value=`warning`;var xs=z(ys),Ss=L(xs,!0);j(xs),xs.value=xs.__value=`danger`;var Cs=z(xs),ws=L(Cs,!0);j(Cs),Cs.value=Cs.__value=`note`,j(fs),j(ls);var Ts=z(ls,2),Es=L(Ts,!0);j(Ts),j(Jo),Ie(2),j(X);var Ds=z(X,2),Os=L(Ds),ks=L(Os,!0);j(Os);var As=z(Os,4),js=L(As,!0);j(As),j(Ds);var Ms=z(Ds,2),Ns=L(Ms),Ps=L(Ns),Fs=L(Ps);Di(Fs);var Is=z(Fs,2),Ls=L(Is,!0);j(Is),j(Ps);var Rs=z(Ps,2),zs=L(Rs),Bs=z(zs,2),Vs=L(Bs,!0);j(Bs),j(Rs),j(Ns);var Hs=z(Ns,2),Us=L(Hs),Ws=L(Us,!0);j(Us);var Gs=z(Us,2);j(Hs);var Ks=z(Hs,2),qs=L(Ks),Js=L(qs,!0);j(qs);var Ys=z(qs,2);j(Ks);var Xs=z(Ks,2),Zs=L(Xs),Qs=L(Zs),$s=L(Qs,!0);j(Qs);var ec=z(Qs,2),tc=L(ec,!0);j(ec),j(Zs);var nc=z(Zs,2);j(Xs),j(Ms);var rc=z(Ms,2),ic=L(rc),ac=L(ic),oc=L(ac,!0);j(ac);var sc=z(ac,2),cc=L(sc),lc=z(cc,2),uc=z(lc,2),dc=z(uc,2),fc=z(dc,2),pc=z(fc,2);j(sc),j(ic);var mc=z(ic,2),hc=L(mc),gc=L(hc,!0);j(hc);var _c=z(hc,2);j(mc),j(rc);var vc=z(rc,2),yc=L(vc),bc=L(yc),xc=L(bc,!0);j(bc);var Sc=z(bc,2),Cc=L(Sc),wc=z(Cc,2),Tc=z(wc,2),Ec=z(Tc,2),Dc=z(Ec,2),Oc=z(Dc,2);j(Sc),j(yc);var kc=z(yc,2),Ac=L(kc),jc=L(Ac,!0);j(Ac);var Mc=z(Ac,2);j(kc),j(vc);var Nc=z(vc,2),Pc=L(Nc),Fc=L(Pc),Ic=L(Fc,!0);j(Fc);var Lc=z(Fc,2),Rc=L(Lc),zc=z(Rc,2),Bc=L(zc,!0);j(zc),j(Lc),j(Pc);var Vc=z(Pc,2),Hc=L(Vc);j(Vc),Ie(2),j(Nc);var Uc=z(Nc,2),Wc=L(Uc),Gc=L(Wc);ai(Gc,()=>Y(`snippet.attachment_help`),!0),j(Gc);var Kc=z(Gc,2);ai(Kc,()=>Y(`snippet.attachment_alt`),!0),j(Kc),j(Wc),j(Uc);var qc=z(Uc,2),Jc=L(qc),Yc=L(Jc),Xc=L(Yc,!0);j(Yc);var Zc=z(Yc,2);j(Jc),j(qc);var Qc=z(qc,2),$c=L(Qc),el=L($c,!0);j($c),Ie(2),j(Qc);var tl=z(Qc,2),nl=L(tl),rl=L(nl,!0);j(nl);var il=z(nl,2),al=L(il,!0);j(il);var ol=z(il,2),sl=L(ol,!0);j(ol),j(tl),j(n),j(t),B((e,t,n,r,i,o,c,u,d,p,h,g,v,y,b,x,S,w,E,ee,O,te,re,A,oe,se,ce,le,de,pe,he,_e,ve,ye,be,Se,we,Ee,Oe,ke,Ae,Me,Ne,Pe,Fe,j,Ie,Le,ze,Be,Ve,He,Ue,We,Ge,Ke,qe,Ye,Xe,Ze,Qe,$e,tt,M,rt,it,at,ot,st,ct,ut,ft,mt,gt,vt,N,bt,xt,wt,Tt,Et,Ot,kt,At,Nt,Pt,Ft,Rt,zt,Ht,Ut,Wt,Kt,qt,Jt,Yt,Zt,Qt,F,$t,en,tn,rn,an,on,cn,un,dn,fn,pn,L,z,mn,hn,gn,yn,bn,xn,Cn,Tn,En,Dn,On,jn,Mn,Nn,B,In,Ln,Rn,zn,Vn,Un,Wn,Gn,Kn,Jn,Yn,Zn,$n,tr,rr,ar,sr,lr,ur,fr,pr,hr,_r,yr,xr,Cr,wr,Dr,Or,kr,jr,Mr,H,Pr,Ir,Rr,Vr,Hr,W,Gr,Kr,qr,Yr,K,Zr,q,ei,ti,ii,ai,oi,si,li,di,mi,hi,vi,bi,xi,wi,Ti,Di,ki,Ai,Mi,Ni,Fi,Ii,Li,Ri,zi,Vi,Hi,Wi,Ki)=>{G(a,e),J(s,`placeholder`,t),G(l,n),G(f,r),G(_,i),G(C,o),G(T,c),G(D,u),G(k,d),G(ne,p),G(ie,h),G(ae,g),G(ue,v),G(fe,y),G(me,b),G(ge,x),G(xe,S),G(Ce,w),G(Te,E),G(De,ee),G(je,O),G(Re,te),G(Je,re),G(et,A),G(nt,oe),G(lt,se),G(dt,ce),G(pt,le),G(ht,de),G(_t,pe),G(yt,he),G(St,_e),J(Ct,`placeholder`,ve),G(Dt,ye),G(jt,be),J(Mt,`placeholder`,Se),G(It,we),J(Lt,`placeholder`,Ee),G(Bt,Oe),J(Vt,`placeholder`,ke),G(Gt,Ae),G(Xt,Me),G(P,Ne),G(nn,Pe),J(I,`placeholder`,Fe),G(sn,j),G(ln,Ie),G(R,Le),G(_n,ze),J(vn,`placeholder`,Be),G(Sn,Ve),G(wn,He),G(kn,Ue),J(An,`placeholder`,We),G(Pn,Ge),J(Fn,`placeholder`,Ke),G(Bn,qe),G(Hn,Ye),G(qn,Xe),G(Xn,Ze),G(Qn,Qe),G(er,$e),G(nr,tt),G(ir,M),G(or,rt),G(cr,it),G(dr,at),G(mr,ot),G(gr,st),G(vr,ct),G(br,ut),G(Sr,ft),G(Tr,mt),J(Er,`placeholder`,gt),G(Ar,vt),G(Nr,N),G(Fr,bt),G(Lr,xt),G(zr,wt),U=gi(Br,1,`space-y-3`,null,U,{hidden:V(m)!==`pie`}),G(Ur,Tt),Oi(Wr,Et),J(Wr,`placeholder`,Ot),G(Jr,kt),G(Xr,` ${At??``}`),$r=gi(Qr,1,`space-y-3`,null,$r,{hidden:V(m)!==`timeline`}),G(ni,Nt),Oi(ri,Pt),J(ri,`placeholder`,Ft),G(ci,Rt),G(ui,` ${zt??``}`),pi=gi(fi,1,`space-y-3`,null,pi,{hidden:V(m)!==`tree-view`}),G(_i,Ht),G(yi,` ${Ut??``}`),Ci=gi(Si,1,`space-y-3`,null,Ci,{hidden:V(m)!==`sequence`}),G(Ei,Wt),G(ji,` ${Kt??``}`),G(Pi,` ${qt??``}`),G(Bi,Jt),G(Ui,Yt),G(Gi,Zt),G(qi,Qt),G(Yi,F),G(Zi,$t),G(ta,en),G(ia,tn),J(aa,`placeholder`,rn),G(ca,an),J(la,`placeholder`,on),G(ma,cn),G(_a,un),G(ya,dn),G(xa,fn),G(Ca,pn),G(Ta,L),G(Da,z),G(ka,mn),G(Ma,hn),G(Fa,gn),G(La,yn),G(za,bn),G(Va,xn),G(Wa,Cn),J(Ga,`placeholder`,Tn),G(Ja,En),J(Ya,`placeholder`,Dn),G(eo,On),G(so,jn),G(uo,Mn),G(po,Nn),G(ho,B),G(_o,In),G(bo,Ln),G(Co,Rn),G(To,zn),G(Do,Vn),G(ko,Un),G(jo,Wn),G(Po,Gn),G(Lo,Kn),G(zo,Jn),G(Vo,Yn),G(Wo,Zn),J(Go,`placeholder`,$n),G(qo,tr),G(Zo,rr),G(es,ar),G(ns,sr),G(is,lr),G(cs,ur),G(ds,fr),G(ms,pr),G(gs,hr),G(vs,_r),G(bs,yr),G(Ss,xr),G(ws,Cr),G(Es,wr),G(ks,Dr),G(js,Or),G(Ls,kr),G(Vs,jr),G(Ws,Mr),G(Js,H),J(Ys,`placeholder`,Pr),G($s,Ir),G(tc,Rr),G(oc,Vr),J(cc,`title`,Hr),J(cc,`aria-label`,W),J(lc,`title`,Gr),J(lc,`aria-label`,Kr),J(uc,`title`,qr),J(uc,`aria-label`,Yr),J(dc,`title`,K),J(dc,`aria-label`,Zr),J(fc,`title`,q),J(fc,`aria-label`,ei),J(pc,`title`,ti),J(pc,`aria-label`,ii),G(gc,ai),J(_c,`placeholder`,oi),G(xc,si),J(Cc,`title`,li),J(Cc,`aria-label`,di),J(wc,`title`,mi),J(wc,`aria-label`,hi),J(Tc,`title`,vi),J(Tc,`aria-label`,bi),J(Ec,`title`,xi),J(Ec,`aria-label`,wi),J(Dc,`title`,Ti),J(Dc,`aria-label`,Di),J(Oc,`title`,ki),J(Oc,`aria-label`,Ai),G(jc,Mi),J(Mc,`placeholder`,Ni),G(Ic,Fi),G(Bc,Ii),J(Hc,`placeholder`,Li),G(Xc,Ri),J(Zc,`placeholder`,zi),G(el,Vi),G(rl,Hi),G(al,Wi),G(sl,Ki)},[()=>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.mermaid`),()=>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.columns`),()=>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_width_label`),()=>Y(`snippet.code_width_default`),()=>Y(`snippet.code_width_full`),()=>Y(`snippet.code_width_three_quarters`),()=>Y(`snippet.code_width_two_thirds`),()=>Y(`snippet.code_width_half`),()=>Y(`snippet.code_width_third`),()=>Y(`snippet.code_width_quarter`),()=>Y(`snippet.code_align_label`),()=>Y(`snippet.code_align_default`),()=>Y(`snippet.code_align_left`),()=>Y(`snippet.code_align_center`),()=>Y(`snippet.code_align_right`),()=>Y(`snippet.code_layout_hint`),()=>Y(`snippet.code_content_label`),()=>Y(`snippet.code_content_placeholder`),()=>Y(`snippet.mermaid_builder_type_label`),()=>Y(`snippet.mermaid_type_pie`),()=>Y(`snippet.mermaid_type_timeline`),()=>Y(`snippet.mermaid_type_tree_view`),()=>Y(`snippet.mermaid_type_sequence`),()=>Y(`snippet.mermaid_pie_title_label`),()=>Pe(),()=>Y(`snippet.mermaid_pie_title_placeholder`),()=>Y(`snippet.mermaid_pie_items_label`),()=>Y(`snippet.mermaid_pie_add_item`),()=>Y(`snippet.mermaid_timeline_title_label`),()=>Fe(),()=>Y(`snippet.mermaid_timeline_title_placeholder`),()=>Y(`snippet.mermaid_timeline_items_label`),()=>Y(`snippet.mermaid_timeline_add_item`),()=>Y(`snippet.mermaid_tree_items_label`),()=>Y(`snippet.mermaid_tree_add_item`),()=>Y(`snippet.mermaid_sequence_items_label`),()=>Y(`snippet.mermaid_sequence_add_message`),()=>Y(`snippet.mermaid_sequence_add_note`),()=>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_width_label`),()=>Y(`snippet.image_width_default`),()=>Y(`snippet.image_width_full`),()=>Y(`snippet.image_width_three_quarters`),()=>Y(`snippet.image_width_two_thirds`),()=>Y(`snippet.image_width_half`),()=>Y(`snippet.image_width_third`),()=>Y(`snippet.image_width_quarter`),()=>Y(`snippet.image_align_label`),()=>Y(`snippet.image_align_default`),()=>Y(`snippet.image_align_left`),()=>Y(`snippet.image_align_center`),()=>Y(`snippet.image_align_right`),()=>Y(`snippet.image_alt_label`),()=>Y(`snippet.image_alt_placeholder`),()=>Y(`snippet.image_url_label`),()=>Y(`snippet.image_src_placeholder`),()=>Y(`snippet.columns_count_label`),()=>Y(`snippet.columns_valign_label`),()=>Y(`snippet.columns_valign_center`),()=>Y(`snippet.columns_valign_top`),()=>Y(`snippet.columns_valign_bottom`),()=>Y(`snippet.columns_valign_stretch`),()=>Y(`snippet.columns_text_label`),()=>Y(`snippet.columns_text_default`),()=>Y(`snippet.columns_text_left`),()=>Y(`snippet.columns_text_center`),()=>Y(`snippet.columns_text_right`),()=>Y(`snippet.columns_text_justify`),()=>Y(`snippet.columns_gap_label`),()=>Y(`snippet.columns_gap_sm`),()=>Y(`snippet.columns_gap_md`),()=>Y(`snippet.columns_gap_lg`),()=>Y(`snippet.columns_ratio_label`),()=>Y(`snippet.columns_ratio_placeholder`),()=>Y(`snippet.columns_hint`),()=>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`)]),H(`click`,t,e=>{e.target===e.currentTarget&&at()}),H(`input`,s,oe),H(`keydown`,s,se),H(`click`,u,le),H(`change`,y,Ae),H(`input`,Ct,M),H(`input`,Ot,M),H(`input`,Mt,M),H(`input`,Lt,M),H(`input`,Vt,M),H(`change`,Kt,M),H(`input`,Qt,M),H(`input`,I,M),H(`change`,un,M),H(`change`,mn,Oe),H(`input`,vn,M),H(`change`,Tn,M),H(`input`,An,M),H(`input`,Fn,M),H(`input`,Un,M),H(`change`,Jn,M),H(`change`,fr,M),H(`input`,Er,M),H(`change`,jr,ze),xi(jr,()=>V(m),e=>F(m,e)),H(`input`,Wr,M),H(`click`,Yr,Be),H(`input`,ri,M),H(`click`,li,Ue),H(`click`,vi,Ge),H(`click`,Ai,Xe),H(`click`,Mi,Ze),H(`change`,Vi,it),H(`change`,$i,M),H(`input`,aa,M),H(`input`,la,M),H(`change`,ha,M),H(`change`,Na,M),H(`input`,Ga,M),H(`input`,Ya,M),H(`change`,to,M),H(`change`,co,M),H(`change`,xo,M),H(`change`,Fo,M),H(`input`,Go,M),H(`change`,Qo,rt),H(`change`,os,rt),H(`change`,fs,rt),H(`click`,As,()=>Al(ee)),H(`change`,Fs,Me),H(`change`,zs,Me),H(`change`,Gs,()=>{Ne(),M()}),H(`input`,Ys,()=>{Ne(),M()}),H(`input`,nc,M),H(`click`,cc,e=>ye(e.currentTarget)),H(`click`,lc,e=>ye(e.currentTarget)),H(`click`,uc,e=>ye(e.currentTarget)),H(`click`,dc,e=>ye(e.currentTarget)),H(`click`,fc,e=>ye(e.currentTarget)),H(`click`,pc,e=>ye(e.currentTarget)),H(`input`,_c,M),H(`click`,Cc,e=>be(e.currentTarget)),H(`click`,wc,e=>be(e.currentTarget)),H(`click`,Tc,e=>be(e.currentTarget)),H(`click`,Ec,e=>be(e.currentTarget)),H(`click`,Dc,e=>be(e.currentTarget)),H(`click`,Oc,e=>be(e.currentTarget)),H(`input`,Mc,M),H(`input`,Rc,M),H(`click`,zc,_e),H(`input`,Zc,M),H(`click`,nl,ct),H(`click`,il,at),H(`click`,ol,st),W(e,t)};K(xt,e=>{t.open&&e(St)}),Vi(tu(z(xt,2),{}),e=>F(d,e,!0),()=>V(d)),W(e,bt),Je()}Pr([`click`,`input`,`keydown`,`change`]);var du=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`]),fu={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 pu(e){return fu[e]||{labelKey:`snippet.inline_edit_btn`,iconClass:`fa-solid fa-pen-to-square`}}var mu={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 hu(e){return{labelKey:mu[e]||`snippet.inline_delete_btn`,iconClass:`fa-solid fa-trash`}}var gu=[{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, .mermaid`},{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]`}],_u=null;function vu(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 yu(e,t,n){if(!n?.trim())return;let r=Xl(n);if(!r||!du.has(r))return;let i=t+n.length,a={start:t,end:i,type:r};e.some(e=>!!(vu(e,a)||(e.type===`code-block`||e.type===`compare`)&&t>=e.start&&i<=e.end))||e.push(a)}function bu(e,t,n,r=0){for(let i of t.matchAll(n)){let t=i[r];yu(e,i.index+(r>0?i[0].indexOf(t):0),t)}}function xu(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=>vu(e,a))||e.push(a)}}function Su(e,t){let n=RegExp(`^${Rs()}`,`gm`),r;for(;r=n.exec(t);){let t=r[0];if(!t.trim()){t.length===0&&(n.lastIndex+=1);continue}let i=Xl(t);if(!i||!du.has(i))continue;let a=t.match(/^([ \t]*)(?:<!--|```)/)?.[1]||``,o=r.index,s={start:o,end:o+t.length,type:i,indent:a};e.some(e=>vu(e,s))||e.push(s)}}function Cu(e,t){let n=`(?:>[ \\t]?)+`,r=RegExp(`(?:^${n}<!--\\s*table-(?:style|border|color):[^\\n]*-->\\n)*^${n}\\|[^\\n]*\\|\\n${n}\\|[ \\t:|-]*-[ \\t:|-]*\\|(?:\\n${n}\\|[^\\n]*\\|)*`,`gm`);for(let n of t.matchAll(r)){let t=n[0],r=t.match(/^(?:>[ \t]?)+/)?.[0]??`> `,i=n.index,a=i+t.length,o={start:i,end:a,type:`table`,indent:r};e.some(e=>!!(vu(e,o)||(e.type===`code-block`||e.type===`compare`)&&i>=e.start&&a<=e.end))||e.push(o)}}function wu(e){let t=[];bu(t,e,/<details[\s\S]*?<\/details>/gi),bu(t,e,/<div\b[^>]*border-left[^>]*>[\s\S]*?<\/div>/gi),xu(t,e),Su(t,e),bu(t,e,/(?:^|\n\n)(#{1,4} [^\n]+)/g,1),bu(t,e,/<span\b[^>]*color:[^>]*>[\s\S]*?<\/span>/gi),bu(t,e,RegExp(`(?:^|\\n)((${Zo()}))`,`g`),1),Cu(t,e),bu(t,e,RegExp(`(?:^|\\n)((${ys()}))`,`g`),1),bu(t,e,kc()),bu(t,e,Ac()),bu(t,e,RegExp(`(?:^|\\n)((${Ds()}))`,`g`),1),bu(t,e,/\[[^\]\n]+\]\([^)]+\)/g);let n=e.match(/^---\s*\n[\s\S]*?\n---/);return bu(t,e,/^---$/gm),t.filter(e=>e.type===`separator`?!n||e.start>n[0].length:!0).sort((e,t)=>e.start-t.start)}function Tu(e,t){return Array.from(e.querySelectorAll(t)).filter(e=>!e.parentElement?.closest(`ol, ul`))}function Eu(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 gu){let i=t.filter(e=>n.includes(e.type));if(!i.length)continue;let a=r===`ol`||r===`ul`?Tu(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 Du(){_u&&=(_u.remove(),null)}function Ou(e,t){Du();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(),Du(),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`,_u=i}function ku(e,t){let n=t instanceof Element?t:null;for(;n?.parentElement&&n.parentElement!==e;)n=n.parentElement;return!n||n===e||n.parentElement!==e?null:n}function Au(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 ju(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 Mu(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(`
82
84
  `)[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(`
83
85
 
84
- `,r);return a>=0?a:e.length}function ju(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(`
85
- `)[0].trim().slice(0,60);if(t){let n=e.indexOf(t);if(n>=0)return n}}return null}function Mu(e,t,n,r,i){let a=Du(t,n)||ku(t,i);if(!a)return e.length;let o=Au(e,a,r);if(o!==null)return o;let s=a.previousElementSibling;for(;s;){let t=Au(e,s,r);if(t!==null){let n=e.indexOf(`
86
+ `,r);return a>=0?a:e.length}function Nu(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(`
87
+ `)[0].trim().slice(0,60);if(t){let n=e.indexOf(t);if(n>=0)return n}}return null}function Pu(e,t,n,r,i){let a=ku(t,n)||ju(t,i);if(!a)return e.length;let o=Mu(e,a,r);if(o!==null)return o;let s=a.previousElementSibling;for(;s;){let t=Mu(e,s,r);if(t!==null){let n=e.indexOf(`
86
88
 
87
- `,t+1);return n>=0?n:e.length}s=s.previousElementSibling}let c=a.nextElementSibling;for(;c;){let t=ju(e,c,r);if(t!==null){let n=e.lastIndexOf(`
89
+ `,t+1);return n>=0?n:e.length}s=s.previousElementSibling}let c=a.nextElementSibling;for(;c;){let t=Nu(e,c,r);if(t!==null){let n=e.lastIndexOf(`
88
90
 
89
- `,t);return n>=0?n:0}c=c.nextElementSibling}return e.length}function Nu(e,t,n){if(!e||typeof t!=`string`)return()=>{};let r=Su(t);wu(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=fu(e.type),o=mu(e.type);Eu(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=Mu(t,e,i.target,r,i.clientY);o!==null&&(i.preventDefault(),Eu(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?.type===`table`&&(t.preventDefault(),t.stopPropagation(),Tu(),n.onEdit({...a,tableFocusCell:Ou(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(),Eu(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=>{gu&&!gu.contains(e.target)&&Tu()},l=e=>{e.key===`Escape`&&Tu()};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),Tu(),e.querySelectorAll(`[data-inline-snippet-index]`).forEach(e=>{e.removeAttribute(`data-inline-snippet-index`),e.classList.remove(`ld-inline-snippet-target`)})}}var Pu=U(`<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>`),Fu=U(`<div id="doc-content" data-testid="doc-content"></div>`),Iu=U(`<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>`),Lu=U(`<div data-testid="content-lightbox" class="fixed inset-0 z-50 bg-white flex items-center justify-center cursor-pointer p-4"><img data-testid="lightbox-image" class="max-w-full max-h-full object-contain select-none"/> <button class="absolute top-4 right-4 text-gray-500 hover:text-gray-950 text-2xl leading-none">×</button></div>`),Ru=U(`<!> <!> <!> <!>`,1);function zu(e,t){qe(t,!0);let n=Wi(t,`onopen`,3,()=>{}),r=Wi(t,`onanchor`,3,D),i=Wi(t,`onconfirmdelete`,3,void 0),a=Wi(t,`oncontentwired`,3,void 0),o=Wi(t,`rewireSignal`,3,void 0),s=Wi(t,`editing`,15,!1),c=Wi(t,`saveMsg`,15,null),l=P(null),u=P(null),d=P(``),f=null,p=P(!1),m=P(`insert`),h=P(null),g=P(0),_=P(!1),v=P(``),y=P(`png`),b=null,x=0,S=0,C=P(null),w=P(``),T=/[̀-ͯ]/g;function E(e){return(e||``).normalize(`NFD`).replace(T,``).toLowerCase().replace(/[^a-z0-9]/g,`_`)}function D(e){document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})}Gi(()=>{let e=window;return e.openSnippetsModal=()=>{F(m,`insert`),F(p,!0)},e.openSnippetsModalForInlineInsert=e=>{F(m,`inline-insert`),F(g,Math.max(0,Number(e)||0),!0),F(p,!0)},()=>{delete e.openSnippetsModal,delete e.openSnippetsModalForInlineInsert}}),kn(()=>{if(o(),t.html,t.content,f?.(),f=null,!(s()||!V(l)))return Ys(V(l),t.html,{content:t.content,codeBlockMaxHeight:X.codeBlockMaxHeight,t:Y,onDocLink:(e,t)=>n()(e,t),onAnchor:r()}),f=Nu(V(l),t.content,{onEdit:e=>{F(m,`inline-edit`),F(h,e,!0),F(p,!0)},onInsert:e=>{F(m,`inline-insert`),F(g,e,!0),F(p,!0)},onDelete:async e=>{(i()?await i()():confirm(Y(`snippet.inline_delete_message`)))&&await t.onsave(t.content.slice(0,e.start)+t.content.slice(e.end))}}),a()?.(V(l)),()=>{f?.(),f=null}});function ee(){F(d,t.content,!0),s(!0),c(null),requestAnimationFrame(()=>V(u)?.focus())}function O(){s(!1),c(null)}async function k(){c({text:Y(`doc.saving`),cls:`text-gray-400`});try{await t.onsave(V(d)),s(!1),c(null)}catch(e){c({text:Y(`error.save`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`})}}function te(){F(m,`insert`),F(p,!0)}function ne(){return s()}function re(e){let t=Array.from(e.clipboardData?.items??[]).find(e=>e.type.startsWith(`image/`));if(t){e.preventDefault(),x=V(u).selectionStart,S=V(u).selectionEnd,F(y,t.type.split(`/`)[1].replace(`jpeg`,`jpg`)||`png`,!0);let n=t.getAsFile();if(!n)return;b=n,F(v,E(Date.now().toString()),!0),F(_,!0);return}let n=Array.from(e.clipboardData?.files??[]).filter(e=>!e.type.startsWith(`image/`));if(n.length){e.preventDefault();let t=V(u).selectionStart,r=V(u).selectionEnd;(async()=>{for(let e of n)await se(e,t,r)})()}}function ie(e){let t=Array.from(e.dataTransfer?.files??[]).filter(e=>!e.type.startsWith(`image/`));if(!t.length)return;e.preventDefault(),e.stopPropagation();let n=V(u).selectionStart,r=V(u).selectionEnd;(async()=>{for(let e of t)await se(e,n,r)})()}function A(e){e.dataTransfer?.types?.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)}function ae(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function oe(e,t,n){let r=V(d).slice(0,t),i=V(d).slice(n);F(d,r+e+i),requestAnimationFrame(()=>{V(u).selectionStart=V(u).selectionEnd=t+e.length,V(u).focus()})}async function se(e,n,r){if(e.size>19922944){c({text:Y(`doc.file_too_large`)+` (${(e.size/1024/1024).toFixed(1)} MB, max 19 MB)`,cls:`text-red-500 dark:text-red-400`});return}c({text:Y(`doc.uploading_file`),cls:`text-gray-400`});try{let i=await ae(e),a=await fetch(`/api/files/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:i,name:e.name,documentId:t.docId})});if(!a.ok){let e=``;try{e=(await a.json()).error||``}catch{e=await a.text()}throw Error(e||`HTTP ${a.status}`)}let{url:o,originalName:s}=await a.json();oe(`[📎 ${s||e.name}](${o})`,n,r),c(null)}catch(e){c({text:Y(`doc.file_upload_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`})}}function ce(){F(_,!1),b=null}async function le(){let e=E(V(v))||Date.now().toString();if(F(_,!1),b){c({text:Y(`doc.uploading_image`),cls:`text-gray-400`});try{let t=await ae(b),n=await fetch(`/api/images/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:t,ext:V(y),name:e})});if(!n.ok)throw Error(await n.text());let{filename:r}=await n.json();oe(`![image](/images/${r})`,x,S),c(null)}catch(e){c({text:Y(`doc.image_upload_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`})}finally{b=null}}}function ue(){F(C,null),F(w,``)}function de(e){if(!e.shiftKey&&!e.metaKey)return;let t=e.target,n=t.closest(`img`),r=t.closest(`.mermaid`)?.querySelector(`svg`);if(!n&&!r)return;if(e.preventDefault(),e.stopPropagation(),n){F(C,n.src,!0),F(w,n.alt||``,!0);return}let i=new XMLSerializer().serializeToString(r);F(C,`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`),F(w,Y(`doc.mermaid_diagram_alt`),!0)}function fe(e){e.key===`Escape`&&V(C)&&ue()}var pe={enterEdit:ee,cancelEdit:O,save:k,openSnippets:te,isEditing:ne},me=Ru();Nr(`keydown`,on,fe);var he=R(me),ge=e=>{var t=Pu();yn(t),Vi(t,e=>F(u,e),()=>V(u)),Nr(`paste`,t,re),Nr(`drop`,t,ie),Nr(`dragover`,t,A),Ni(t,()=>V(d),e=>F(d,e)),W(e,t)},_e=e=>{var t=Fu();Vi(t,e=>F(l,e),()=>V(l)),B(()=>gi(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 ${X.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`} ${X.imageRoundedCorners?`[&_img]:rounded-xl`:``} ${X.imageCentered?`[&_img]:mx-auto [&_img]:block`:``} ${X.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)]`:``}`)),H(`click`,t,de),W(e,t)};K(he,e=>{s()?e(ge):e(_e,-1)});var ve=z(he,2);lu(ve,{get open(){return V(p)},get editor(){return V(u)},get mode(){return V(m)},get docId(){return t.docId},get content(){return t.content},get range(){return V(h)},get insertPos(){return V(g)},get onsave(){return t.onsave},onclose:()=>F(p,!1)});var ye=z(ve,2),be=e=>{var t=Iu(),n=L(t),r=L(n),i=L(r);j(r);var a=z(r,2),o=L(a),s=L(o),c=z(s),l=L(c,!0);j(c),j(o);var u=z(o,2),d=L(u);Di(d);var f=z(d,2),p=L(f);j(f),j(u),j(a);var m=z(a,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),b=L(_,!0);j(_),j(m),j(n),j(t),B((e,t,n,r,a)=>{G(i,`🖼️ ${e??``}`),G(s,`${t??``} `),G(l,n),Oi(d,V(v)),G(p,`.${V(y)??``}`),G(g,r),G(b,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`)]),H(`input`,d,e=>F(v,E(e.target.value),!0)),H(`click`,h,ce),H(`click`,_,le),W(e,t)};K(ye,e=>{V(_)&&e(be)});var xe=z(ye,2),Se=e=>{var t=Lu(),n=L(t),r=z(n,2);j(t),B(()=>{J(n,`src`,V(C)),J(n,`alt`,V(w))}),H(`click`,t,ue),H(`click`,n,e=>e.stopPropagation()),H(`click`,r,ue),W(e,t)};return K(xe,e=>{V(C)&&e(Se)}),W(e,me),Je(pe)}Pr([`click`,`input`]);var Bu=U(`<span> </span> <code> </code>`,1),Vu=U(`<button type="button" data-testid="bp-copy-doc-id"><i aria-hidden="true"></i></button>`),Hu=U(`<button class="bpadr-icon-btn" data-testid="bp-edit" type="button">✏️</button> <button class="bpadr-icon-btn" data-testid="bp-delete" type="button">🗑️</button>`,1),Uu=U(`<span> </span>`),Wu=U(`<footer class="bpadr-footer bpadr-doc-footer"><!> <button type="button" class="bpadr-btn-ghost" data-testid="bp-cancel"> </button> <button type="button" class="bpadr-btn-ghost" data-testid="bp-snippets"> </button> <button type="button" class="bpadr-btn-primary" data-testid="bp-save"> </button></footer>`),Gu=U(`<div class="bpadr-read"><!></div> <!>`,1),Ku=U(`<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="button" data-testid="bp-form-snippets" class="bpadr-btn-ghost"> </button> <button type="submit" class="bpadr-btn-primary"> </button></footer></form> <!>`,1),qu=U(`<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>`),Ju=U(`<div class="bpadr-overlay"><div class="bpadr-modal"><header class="bpadr-header"><div class="bpadr-title-row"><h2 class="bpadr-title"><!></h2> <!></div> <div class="bpadr-header-actions"><!> <button class="bpadr-icon-btn" type="button" title="Close">×</button></div></header> <!></div></div>`),Yu=U(`<div class="fixed inset-0 z-[60] flex items-center justify-center bg-black/50 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 type="button" data-testid="bp-delete-cancel" 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 type="button" data-testid="bp-delete-confirm" 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>`),Xu=U(`<!> <!>`,1);function Zu(e,t){qe(t,!0);let n=Wi(t,`onchanged`,3,()=>{}),r=`001_BLUEPRINT`;function i(e){return e.normalize(`NFKD`).replace(/[̀-ͯ]/g,``).toUpperCase().replace(/[^A-Z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`FOLDER`}function a(e){return`/${(e.folder.path||e.folder.name).replace(/^\/+|\/+$/g,``)||e.folder.name}`}let o=P(`closed`),s=P(``),c=P(``),l=P(``),u=P(``),d=P(``),f=P(``),p=P(``),m=P(``),h=P(null),g=P(null),_=P(null),v=P(!1),y=P(null),b=P(null),x=P(!1),S=P(!1),C=P(!1);async function w(e){F(g,e,!0),F(h,null),F(v,!1),F(y,null);let t=i(e.folder.name);if(F(l,t,!0),F(c,e.folder.name,!0),F(u,``),F(d,``),F(f,``),F(m,a(e),!0),F(s,Y(`blueprint.adr.new_title`,{folder:e.folder.name}),!0),F(o,`form`),!(await fetch(`/api/blueprint/blueprint-folder`).then(e=>e.json())).exists){F(p,r),F(o,`folder-confirm`);return}await E(e,t)}async function T(e){return fetch(`/api/documents/${encodeURIComponent(e)}`).then(e=>e.json())}async function E(e,t){let n=await fetch(`/api/blueprint/blueprint-adr?category=${encodeURIComponent(t)}`).then(e=>e.json());if(n.found&&n.doc){F(h,n.doc.id,!0);let e=await T(n.doc.id);F(c,e.title,!0),F(d,e.content,!0),F(f,e.html,!0),F(s,e.title,!0),F(v,!1),F(o,`doc`)}else F(c,e.folder.name,!0),F(u,``),F(o,`form`)}function D(){F(o,`closed`),F(v,!1),F(h,null),F(g,null),F(m,``),F(C,!1)}async function ee(){if(V(h))try{await navigator.clipboard.writeText(decodeURIComponent(V(h))),F(C,!0),setTimeout(()=>F(C,!1),1800)}catch{}}async function O(){await fetch(`/api/blueprint/blueprint-folder`,{method:`POST`}),V(g)&&await E(V(g),i(V(g).folder.name))}async function k(e){if(!V(h))return;await fetch(`/api/documents/${encodeURIComponent(V(h))}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:V(c).trim()||V(g)?.folder.name||Y(`common.untitled`),category:V(l),folder:r,content:e})});let t=await T(V(h));F(s,t.title,!0),F(d,t.content,!0),F(f,t.html,!0)}async function te(e){e.preventDefault();let t={title:V(c).trim()||V(g)?.folder.name||Y(`common.untitled`),category:V(l),folder:r},i=await fetch(`/api/documents/`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json());F(h,i.id,!0);let a=await T(i.id);F(s,a.title,!0),F(d,a.content,!0),F(f,a.html,!0),F(v,!1),F(o,`doc`),n()()}async function ne(){F(S,!1),V(h)&&(await fetch(`/api/documents/${encodeURIComponent(V(h))}`,{method:`DELETE`}),D(),n()())}var re={open:w},ie=Xu(),A=R(ie),ae=e=>{var t=Ju(),n=L(t),i=L(n),a=L(i),g=L(a),w=L(g),T=e=>{var t=Bu(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,e),G(a,V(m))},[()=>Y(`blueprint.adr.folder_title`)]),W(e,t)},E=e=>{var t=Ur();B(()=>G(t,V(s))),W(e,t)};K(w,e=>{V(m)?e(T):e(E,-1)}),j(g);var ne=z(g,2),re=e=>{var t=Vu(),n=L(t);j(t),B(e=>{J(t,`title`,e),gi(t,1,`bpadr-copy-btn ${V(C)?`copied`:``}`),gi(n,1,`fa-${V(C)?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`doc.copy_mcp_id`)]),H(`click`,t,ee),W(e,t)};K(ne,e=>{V(h)&&e(re)}),j(a);var ie=z(a,2),A=L(ie),ae=e=>{var t=Hu(),n=R(t),r=z(n,2);B((e,t)=>{J(n,`title`,e),J(r,`title`,t)},[()=>Y(`doc.edit`),()=>Y(`doc.delete`)]),H(`click`,n,()=>V(_).enterEdit()),H(`click`,r,()=>F(S,!0)),W(e,t)};K(A,e=>{V(o)===`doc`&&!V(v)&&e(ae)});var oe=z(A,2);j(ie),j(i);var se=z(i,2),ce=e=>{var t=Gu(),n=R(t),r=L(n);{let e=N(()=>V(h)??``);Vi(zu(r,{get docId(){return V(e)},get content(){return V(d)},get html(){return V(f)},onsave:k,get editing(){return V(v)},set editing(e){F(v,e,!0)},get saveMsg(){return V(y)},set saveMsg(e){F(y,e,!0)}}),e=>F(_,e,!0),()=>V(_))}j(n);var i=z(n,2),a=e=>{var t=Wu(),n=L(t),r=e=>{var t=Uu(),n=L(t,!0);j(t),B(()=>{gi(t,1,`text-xs ${V(y).cls??``}`),G(n,V(y).text)}),W(e,t)};K(n,e=>{V(y)&&e(r)});var i=z(n,2),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o);var c=z(o,2),l=L(c,!0);j(c),j(t),B((e,t,n)=>{G(a,e),G(s,t),G(l,n)},[()=>Y(`common.cancel`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),H(`click`,i,()=>V(_).cancelEdit()),H(`click`,o,()=>V(_).openSnippets()),H(`click`,c,()=>V(_).save()),W(e,t)};K(i,e=>{V(v)&&e(a)}),W(e,t)},le=e=>{var t=Ku(),n=R(t),i=L(n);Di(i);var a=z(i,2);Di(a),Oi(a,r);var s=z(a,2),d=L(s),f=L(d,!0);j(d);var p=z(d,2);Di(p),j(s);var m=z(s,2),g=L(m),_=L(g,!0);j(g);var v=z(g,2);yn(v),Vi(v,e=>F(b,e),()=>V(b)),j(m);var y=z(m,2),S=L(y),C=L(S,!0);j(S);var w=z(S,2),T=L(w,!0);j(w);var E=z(w,2),ee=L(E,!0);j(E),j(y),j(n),lu(z(n,2),{get open(){return V(x)},get editor(){return V(b)},mode:`insert`,get content(){return V(u)},onclose:()=>F(x,!1)}),B((e,t,n,r,a)=>{Oi(i,V(l)),G(f,e),G(_,t),G(C,n),G(T,r),G(ee,a)},[()=>Y(`blueprint.adr.title_label`),()=>Y(`blueprint.adr.content_label`),()=>Y(`common.cancel`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),Nr(`submit`,n,te),Ni(p,()=>V(c),e=>F(c,e)),Ni(v,()=>V(u),e=>F(u,e)),H(`click`,S,()=>{V(h)?F(o,`doc`):D()}),H(`click`,w,()=>F(x,!0)),W(e,t)},ue=e=>{var t=qu(),n=L(t);ai(n,()=>Y(`blueprint.adr.folder_missing`,{name:V(p)}),!0),j(n);var r=z(n,2),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c,!0);j(c),j(a),j(t),B((e,t,n)=>{G(i,e),G(s,t),G(l,n)},[()=>Y(`blueprint.adr.folder_create_prompt`),()=>Y(`common.cancel`),()=>Y(`blueprint.adr.create_folder_btn`)]),H(`click`,o,D),H(`click`,c,O),W(e,t)};K(se,e=>{V(o)===`doc`?e(ce):V(o)===`form`?e(le,1):V(o)===`folder-confirm`&&e(ue,2)}),j(n),j(t),H(`click`,t,e=>{e.target===e.currentTarget&&D()}),H(`click`,oe,D),W(e,t)};K(A,e=>{V(o)!==`closed`&&e(ae)});var oe=z(A,2),se=e=>{var t=Yu(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var c=z(a,2),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d,!0);j(d),j(c),j(n),j(t),B((e,t,n)=>{G(i,e),G(o,V(s)),G(u,t),G(f,n)},[()=>Y(`doc.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`doc.confirm_delete_btn`)]),H(`click`,t,e=>{e.target===e.currentTarget&&F(S,!1)}),H(`click`,l,()=>F(S,!1)),H(`click`,d,ne),W(e,t)};return K(oe,e=>{V(S)&&e(se)}),W(e,ie),Je(re)}Pr([`click`]);var Qu=U(`<span class="breadcrumb-sep">›</span>`),$u=U(`<span class="breadcrumb-item current"> </span>`),ed=U(`<button class="breadcrumb-item" type="button"> </button>`),td=U(`<!> <!>`,1),nd=U(`<nav class="breadcrumb"></nav>`),rd=U(`<div class="app-shell"><!> <section class="workspace-shell"><!> <!></section></div> <!>`,1);function id(e,t){qe(t,!0),Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}});let n=P(I([])),r=P(null),i=P(null),a=P(null),o=P(null);function s(e){l(),V(i).loadPath(e,!0)}async function c(e){F(r,e.folder.path,!0),await xr(),await V(a).open(e.folder.path)}function l(){F(r,null)}async function u(e){await V(i).navigateToFolder(e)}var d=rd(),f=R(d),p=L(f);{let e=N(()=>Y(`blueprint.subtitle`));$a(p,{title:`Blueprint`,get subtitle(){return V(e)},children:(e,t)=>{var r=nd();q(r,21,()=>V(n),Xr,(e,t,r)=>{var i=td(),a=R(i),o=e=>{W(e,Qu())};K(a,e=>{r>0&&e(o)});var c=z(a,2),l=e=>{var n=$u(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),W(e,n)},u=e=>{var n=ed(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),H(`click`,n,()=>s(V(t).path)),W(e,n)};K(c,e=>{r===V(n).length-1?e(l):e(u,-1)}),W(e,i)}),j(r),W(e,r)},$$slots:{default:!0}})}var m=z(p,2),h=L(m);Vi(To(h,{get activeExplorerPath(){return V(r)},onbreadcrumbchange:e=>F(n,e,!0),onopenexplorer:c,onclosefilerexplorer:l,onopenAdr:e=>V(o).open(e)}),e=>F(i,e,!0),()=>V(i));var g=z(h,2),_=e=>{Vi(Go(e,{onclose:l,onnavigate:u}),e=>F(a,e,!0),()=>V(a))};K(g,e=>{V(r)!==null&&e(_)}),j(m),j(f),Vi(Zu(z(f,2),{onchanged:()=>V(i).loadPath(V(n).at(-1)?.path??``,!1)}),e=>F(o,e,!0),()=>V(o)),W(e,d),Je()}Pr([`click`]);var ad=164,od=64,sd=132,cd=78,ld=6,ud=24,dd=96,fd=540,pd=780,md=1/2,hd=9999,gd=44,_d=255,vd=178,yd=Math.PI*.7,bd=Math.PI*1.1,xd=Math.PI*1.45,Sd=Math.PI*1.75,Cd=14,wd=260,Td=56,Ed=32,Dd=[`pointerdown`,`mousedown`,`click`,`dblclick`,`touchstart`,`wheel`],Od=.35,kd=2.2,Ad=.0018,jd=4,Md=46,Nd=4,Pd=44,Fd=360,Id=300,Ld=44,Rd=48,zd=7,Bd=875,Vd=450,Hd=600*1e3,Ud,Z,Wd,Gd,Kd,qd,Jd,Yd,Xd,Zd,Qd,$d,ef,tf,nf,rf,af,of,sf,cf,lf,uf,df,ff,pf,mf,hf,gf,_f=null,vf=null,yf=null,Q,$,bf,xf=!1;function Sf(){return Ud=document.getElementById(`workspaceCanvas`),Z=Ud.getContext(`2d`),Wd=document.getElementById(`apiStatus`),Gd=document.getElementById(`addButton`),Kd=document.getElementById(`fitButton`),qd=document.getElementById(`testNodeButton`),Jd=document.getElementById(`loadModelsButton`),Yd=document.getElementById(`closePanelButton`),Xd=document.getElementById(`deleteNodeButton`),Zd=document.getElementById(`renameConfirmOverlay`),Qd=document.getElementById(`renameConfirmMessage`),$d=document.getElementById(`cancelRenameButton`),ef=document.getElementById(`confirmRenameButton`),tf=document.getElementById(`deleteConfirmOverlay`),nf=document.getElementById(`deleteConfirmMessage`),rf=document.getElementById(`cancelDeleteButton`),af=document.getElementById(`confirmDeleteButton`),of=document.getElementById(`agentRunOverlay`),sf=document.getElementById(`agentRunTitle`),cf=document.getElementById(`agentRunHint`),lf=document.getElementById(`agentRunInputField`),uf=document.getElementById(`agentRunInput`),df=document.getElementById(`agentRunResult`),ff=document.getElementById(`cancelAgentRunButton`),pf=document.getElementById(`executeAgentRunButton`),mf=document.getElementById(`fallbackPanelHost`),hf=document.getElementById(`configSurface`),gf=hf,_f=null,vf=null,yf=null,Q={name:document.getElementById(`nodeName`),kind:document.getElementById(`nodeKind`),providerIdField:document.getElementById(`providerIdField`),providerId:document.getElementById(`nodeProviderId`),copyProviderId:document.getElementById(`copyProviderIdButton`),endpoint:document.getElementById(`nodeEndpoint`),token:document.getElementById(`nodeToken`),model:document.getElementById(`nodeModel`),providerTypeChat:document.getElementById(`nodeProviderTypeChat`),providerTypeImage:document.getElementById(`nodeProviderTypeImage`),toolModeField:document.getElementById(`toolModeField`),toolModeTools:document.getElementById(`nodeToolModeTools`),toolModeChat:document.getElementById(`nodeToolModeChat`),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`),mcpInventoryStatus:document.getElementById(`mcpInventoryStatus`),mcpToolsList:document.getElementById(`mcpToolsList`),mcpPromptsList:document.getElementById(`mcpPromptsList`),agentSection:document.getElementById(`agentSection`),agentProvider:document.getElementById(`nodeAgentProvider`),systemPrompt:document.getElementById(`nodeSystemPrompt`),requiresUserInput:document.getElementById(`nodeRequiresUserInput`),userInputDescriptionField:document.getElementById(`agentUserInputDescriptionField`),userInputDescription:document.getElementById(`nodeUserInputDescription`),expectedOutputMarker:document.getElementById(`nodeExpectedOutputMarker`)},$={entities:Hf([Vf(`root`,`Living AI Documentation`,`system`,null),Vf(`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,panelDirty:!1,isHydrated:!1},xf=!!Ud.requestPaint&&typeof Z.drawElementImage==`function`,xf?($.apiMode=`html-in-canvas`,Wd.textContent=`HTML-in-Canvas active`,Wd.classList.add(`is-live`),Ud.onpaint=Kp):(mf.appendChild(hf),Wd.textContent=`DOM fallback`,Wd.classList.add(`is-fallback`)),bf=new ResizeObserver(([e])=>{let t=e.devicePixelContentBoxSize?.[0],n=e.contentRect.width,r=e.contentRect.height;$.dpr=t?t.inlineSize/n:window.devicePixelRatio||1,Ud.width=t?t.inlineSize:Math.floor(n*$.dpr),Ud.height=t?t.blockSize:Math.floor(r*$.dpr),Xf(),nm(!1,!$.cameraX&&!$.cameraY),Gp()}),bf.observe(Ud,{box:`device-pixel-content-box`}),Cf(),wf(),Gd.addEventListener(`click`,()=>{qf()}),Kd.addEventListener(`click`,()=>{Xf(),nm(!0,!0),kf(),Gp()}),Ud.addEventListener(`pointerdown`,e=>{if(e.target!==Ud)return;let t=Tm(e),n=fm(t),r=[...$.entities].reverse().find(e=>vm(e,n));if(r){r.id!==`root`&&cp(r.id);return}$.isPanning=!0,$.didPan=!1,$.panStartX=t.x,$.panStartY=t.y,$.panStartCameraX=$.cameraX,$.panStartCameraY=$.cameraY,Ud.classList.add(`is-panning`),Ud.setPointerCapture?.(e.pointerId)}),Ud.addEventListener(`pointermove`,e=>{if(!$.isPanning)return;let t=Tm(e),n=t.x-$.panStartX,r=t.y-$.panStartY;Math.hypot(n,r)>jd&&($.didPan=!0),$.cameraX=$.panStartCameraX+n,$.cameraY=$.panStartCameraY+r,Gp()}),Ud.addEventListener(`pointerup`,e=>{$.isPanning&&($.isPanning=!1,Ud.classList.remove(`is-panning`),Ud.releasePointerCapture?.(e.pointerId),!$.didPan&&$.selectedId?cp(null):$.didPan&&kf())}),Ud.addEventListener(`pointercancel`,e=>{$.isPanning=!1,Ud.classList.remove(`is-panning`),Ud.releasePointerCapture?.(e.pointerId)}),Ud.addEventListener(`wheel`,e=>{e.target===Ud&&(e.preventDefault(),dm(Tm(e),Math.exp(-e.deltaY*Ad)),kf())},{passive:!1}),gf.addEventListener(`submit`,e=>{e.preventDefault(),gp(),$.lastSaveAt=new Date,Xf(),jf(!0),Gp()}),gf.addEventListener(`input`,()=>{gp(),Xf(),$.panelDirty=!0,Gp()}),Yd.addEventListener(`click`,()=>{cp(null)}),Xd.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation();let t=$.selectedId,n=t?Vp(t):null;!n||Hp(t)||lp(n)}),rf.addEventListener(`click`,up),tf.addEventListener(`click`,e=>{e.target===tf&&up()}),af.addEventListener(`click`,()=>{$.pendingDeleteId&&dp($.pendingDeleteId),up()}),qd.addEventListener(`click`,()=>{if(Bp()?.kind===`agent`){Sp();return}Fp()}),Jd.addEventListener(`click`,()=>{Pp()}),Q.copyProviderId.addEventListener(`click`,()=>{Lp()}),Q.name.addEventListener(`blur`,()=>{if(Bp()?.kind!==`agent`)return;let e=Q.name.value.trim();if(!e||!_f||!vf||e===_f)return;let t=Wf(e);t!==vf&&(Qd.textContent=`Renommer le dossier "${vf}" en "${t}" ?`,Zd.hidden=!1,$d.focus())}),$d.addEventListener(`click`,()=>{Zd.hidden=!0;let e=Bp();e&&_f&&(e.label=_f,Q.name.value=_f,Xf(),Gp())}),ef.addEventListener(`click`,()=>{Zd.hidden=!0;let e=Bp();if(!e||!vf)return;e.config.workspaceFolder=vf,Q.workspaceFolder.value=vf;let t=Q.name.value.trim();t&&(_f=t),vf=Wf(t),kf()}),Q.model.addEventListener(`change`,()=>{qd.disabled=!Q.model.value;let e=Bp();e&&(e.config.model=Q.model.value)}),Q.agentProvider.addEventListener(`change`,()=>{vp(Q.agentProvider.value)}),ff.addEventListener(`click`,()=>{Cp()}),pf.addEventListener(`click`,()=>{wp()}),of.addEventListener(`click`,e=>{e.target===of&&Cp()}),Ef(),()=>{Af(),bf.disconnect(),$?.saveTimerId&&clearTimeout($.saveTimerId)}}function Cf(){for(let e of Dd)hf.addEventListener(e,Tf),mf.addEventListener(e,Tf)}function wf(){for(let e of Dd)tf.addEventListener(e,Tf),Zd.addEventListener(e,Tf),of.addEventListener(e,Tf)}function Tf(e){e.stopPropagation()}async function Ef(){let e=await Fa();e?.entities?.length&&($.entities=Df(e.entities),$.cameraX=Bf(e.camera?.x,$.cameraX),$.cameraY=Bf(e.camera?.y,$.cameraY),$.zoom=pm(Bf(e.camera?.zoom,$.zoom),Od,kd),$.lastSaveAt=e.updatedAt?new Date(e.updatedAt):null),$.isHydrated=!0,Xf(),e?.entities?.length||nm(!1,!0),hp(),Gp()}function Df(e){let t=e.map(Of).filter(e=>!!e),n=t.some(e=>e.id===`root`),r=t.some(e=>e.id===`mcp`),i=[...n?[]:[Vf(`root`,`Living AI Documentation`,`system`,null)],...t,...r?[]:[Vf(`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:{...Vf(e.id,e.label,t,n).config,...e.config}}})}function Of(e){if(!Ff(e))return null;let t=If(e.id),n=If(e.label),r=Lf(e.kind);if(!t||!n||!r)return null;let i=e.parentId===null?null:If(e.parentId),a=Ff(e.config)?e.config:{};return{id:t,label:n,kind:r,parentId:i,x:Bf(e.x,0),y:Bf(e.y,0),angle:Bf(e.angle,0),config:{endpoint:If(a.endpoint)||Uf(t,r),token:If(a.token),model:If(a.model),providerType:zf(a.providerType),toolMode:Rf(a.toolMode),timeout:Bf(a.timeout,180),description:If(a.description)||Kf(r),workspaceFolder:If(a.workspaceFolder)||(r===`agent`?Wf(n):``),systemPrompt:If(a.systemPrompt),requiresUserInput:a.requiresUserInput===!0,userInputDescription:If(a.userInputDescription),expectedOutputMarker:If(a.expectedOutputMarker)}}}function kf(){$.isHydrated&&($.saveTimerId&&clearTimeout($.saveTimerId),$.saveTimerId=window.setTimeout(()=>{$.saveTimerId=null,jf(!1)},Vd))}function Af(){$.panelDirty&&jf(!1)}async function jf(e=!1){if(!$.isHydrated)return;$.panelDirty=!1,$.saveTimerId&&(clearTimeout($.saveTimerId),$.saveTimerId=null);let t=$.selectedId&&document.activeElement===Q.token&&jp(Q.token.value)?{entityId:$.selectedId,value:Q.token.value,selectionStart:Q.token.selectionStart,selectionEnd:Q.token.selectionEnd}:null,n=await Ia(Pf());if(n){if($.entities=Df(n.entities),t&&$.selectedId===t.entityId){let e=Bp();e?.kind===`llm`&&(e.config.token=t.value)}$.lastSaveAt=new Date(n.updatedAt),Bp()&&!gf.contains(document.activeElement)&&hp(),t&&$.selectedId===t.entityId&&(Q.token.value=t.value,Q.token.setSelectionRange(t.selectionStart,t.selectionEnd)),e&&Nf(`Workspace saved`)}else e&&Nf(`Save failed`)}function Mf(e,t){return Ma(e,t)}function Nf(e,t=`success`,n,r){return Na(e,t,n,r)}function Pf(){return{version:1,updatedAt:new Date().toISOString(),entities:$.entities.map(e=>{let t={...e.config,token:Mp(e.config.token)};return{id:e.id,label:e.label,kind:e.kind,parentId:e.parentId,x:e.x,y:e.y,angle:e.angle,config:t}}),camera:{x:$.cameraX,y:$.cameraY,zoom:$.zoom}}}function Ff(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function If(e){return typeof e==`string`?e:``}function Lf(e){return e===`system`||e===`llm`||e===`agent`||e===`mcp`?e:null}function Rf(e){return e===`chat`?`chat`:`tools`}function zf(e){return e===`image`?`image`:`chat`}function Bf(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function Vf(e,t,n,r){return{id:e,label:t,kind:n,parentId:r,x:0,y:0,angle:0,config:{endpoint:Uf(e,n),token:``,model:``,providerType:`chat`,toolMode:`tools`,timeout:180,description:Kf(n),workspaceFolder:n===`agent`?Wf(t):``,systemPrompt:``,requiresUserInput:!1,userInputDescription:``,expectedOutputMarker:``}}}function Hf(e){return e.map(e=>({...e,config:{...e.config}}))}function Uf(e,t){return t===`llm`?`http://localhost:11434`:t===`mcp`?`http://localhost:4321/mcp`:``}function Wf(e){return`AI/WORKSPACE/${Gf(e)}`}function Gf(e){return e.normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`llm_provider`}function Kf(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 qf(){let e=Bp(),t=e?.kind===`llm`?e:Vp(e?.parentId);if(t?.kind===`llm`&&t.config.providerType!==`image`){Yf(t.id);return}Jf()}function Jf(){let e=!!$.selectedId,t=Up(`root`).filter(e=>e.kind===`llm`).length+1,n=Vf(`provider-${Date.now().toString(36)}`,`LLM Provider ${t}`,`llm`,`root`);$.entities=[...$.entities,n],$.selectedId=n.id,Xf(),rm(e,!0,!0),hp(),kf(),Gp()}function Yf(e){let t=!!$.selectedId,n=Up(e).filter(e=>e.kind===`agent`).length+1,r=Vf(`agent-${Date.now().toString(36)}`,`Agent ${n}`,`agent`,e);$.entities=[...$.entities,r],$.selectedId=r.id,Xf(),rm(t,!0,!0),hp(),kf(),Gp()}function Xf(){let e=Vp(`root`);e.x=0,e.y=0,e.angle=0,Zf(e)}function Zf(e){let t=Up(e.id),n=rp(t,sd,_d,{spread:Math.PI*2,includeSubtree:!1}),r=new Map(t.map(e=>[e.id,tp(e,n)]));for(let n=0;n<=zd;n+=1)if(Qf(e,t,r),$f(),!ep(t,r))return;Qf(e,t,r),$f()}function Qf(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)||_d;t.angle=a,t.x=e.x+Math.cos(a)*o,t.y=e.y+Math.sin(a)*o})}function $f(){for(let e of $.entities.filter(e=>e.kind===`llm`))np(e)}function ep(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];wm(xm(a),xm(o),Ld)&&(t.set(a.id,Math.min(Bd,t.get(a.id)+Rd)),t.set(o.id,Math.min(Bd,t.get(o.id)+Rd)),n=!0)}return n}function tp(e,t){if(e.kind!==`llm`)return t;let n=Up(e.id).length;if(n<=Nd)return t;let r=(n-Nd)*Pd,i=Math.max(0,op(e)-Id)*.65;return t+Math.min(Fd,Math.max(r,i))}function np(e){let t=Up(e.id);if(!t.length)return;let n=Math.atan2(e.y,e.x),r=ip(t.length),i=rp(t,cd,vd,{spread:r,includeSubtree:!1});t.forEach((a,o)=>{let s=ap(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 rp(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?op(e):sp(e))),s=t+o+Md;if(e.length===1)return Math.max(n,s);let c=o*2+Md,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 ip(e){return e<=1?0:e<=2?yd:e<=4?bd:e<=7?xd:Sd}function ap(e,t,n,r){return r<=1||t===0?e:e-t/2+n/(r-1)*t}function op(e){if(e.kind!==`llm`)return sp(e);let t=Up(e.id);return t.length?rp(t,cd,vd,{spread:ip(t.length),includeSubtree:!1})+Math.max(...t.map(e=>sp(e))):cd}function sp(e){if(e.kind===`system`)return sd;if(e.kind===`llm`)return cd;let{width:t,height:n}=bm(e);return Math.hypot(t/2,n/2)}function cp(e){e!==$.selectedId&&Af();let t=!!$.selectedId;$.selectedId=e;let n=e?Vp(e):null;_f=n?.kind===`agent`?n.label:null,vf=n?.kind===`agent`?n.config.workspaceFolder||Wf(n.label):null,Xf(),rm(t,!!e,!0),hp(),Gp()}function lp(e){let t=Wp(e.id),n=Up(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.`;$.pendingDeleteId=e.id,nf.textContent=`You are about to delete "${e.label}".${r} This action cannot be undone.`,tf.hidden=!1,af.focus()}function up(){$.pendingDeleteId=null,tf.hidden=!0}function dp(e){let t=Vp(e);if(!t||Hp(e))return;let n=t.parentId||`root`,r=!!$.selectedId,i=new Set([e,...Wp(e)]);$.entities=$.entities.filter(e=>!i.has(e.id)),$.selectedId=Vp(n)?n:null,Xf(),rm(r,!!$.selectedId,!0),hp(),kf(),Gp()}var fp=0;async function pp(e){let t=++fp,n=e.config.endpoint.trim(),r=Q.mcpInventoryStatus;if(Q.mcpToolsList.replaceChildren(),Q.mcpPromptsList.replaceChildren(),!n){r.hidden=!1,r.textContent=`Set an endpoint to load the MCP tools and prompts.`;return}r.hidden=!1,r.textContent=`Loading MCP tools and prompts…`;let i=await Ra({endpoint:n});if(t===fp){if(!i.ok){r.hidden=!1,r.textContent=i.error?`Failed to load MCP inventory: ${i.error}`:`Failed to load MCP inventory.`;return}r.hidden=!0,mp(Q.mcpToolsList,i.tools??[],`No tools exposed.`),mp(Q.mcpPromptsList,i.prompts??[],`No prompts exposed.`)}}function mp(e,t,n){if(e.replaceChildren(),t.length===0){let t=document.createElement(`li`);t.className=`inventory-empty`,t.textContent=n,e.appendChild(t);return}for(let n of t){let t=document.createElement(`li`);t.textContent=n,e.appendChild(t)}}function hp(){let e=Bp(),t=!!e;if(hf.hidden=!t,mf.hidden=!t||xf,!e){Gd.title=`Add LLM provider`,qd.textContent=`Test`,qd.hidden=!0,qd.disabled=!0;return}Q.name.value=e.label,Q.kind.value=e.kind,Q.providerId.value=e.kind===`llm`?e.id:``,Q.endpoint.value=e.config.endpoint,Q.token.value=e.config.token,xp(e.config.model),Q.providerTypeChat.checked=e.config.providerType!==`image`,Q.providerTypeImage.checked=e.config.providerType===`image`,Q.toolModeTools.checked=e.config.toolMode!==`chat`,Q.toolModeChat.checked=e.config.toolMode===`chat`,Q.workspaceFolder.value=e.config.workspaceFolder,Q.workspaceField.hidden=e.kind!==`agent`,Q.timeout.value=String(e.config.timeout),Q.description.value=e.config.description,Q.typeBadge.textContent=zp(e),Q.kind.disabled=!0,Q.llmFields.hidden=e.kind===`mcp`||e.kind===`agent`,bp(e),Q.mcpInventory.hidden=e.kind!==`mcp`,e.kind===`mcp`?pp(e):fp+=1,Q.agentSection.hidden=e.kind!==`agent`,e.kind===`agent`&&_p(e),Q.systemPrompt.value=e.config.systemPrompt,Q.requiresUserInput.checked=e.config.requiresUserInput,yp(),Q.userInputDescription.value=e.config.userInputDescription,Q.expectedOutputMarker.value=e.config.expectedOutputMarker,Xd.hidden=Hp(e.id),qd.textContent=`Test`,qd.hidden=e.kind!==`llm`&&e.kind!==`agent`,qd.disabled=e.kind===`llm`?!e.config.model:e.kind!==`agent`;let n=e.kind===`llm`?e:Vp(e.parentId);Gd.title=n?.kind===`llm`&&n.config.providerType!==`image`?`Add agent`:`Add LLM provider`}function gp(){let e=Bp();if(e&&(e.label=Q.name.value.trim()||`Untitled node`,e.kind=Q.kind.value,e.config.endpoint=Q.endpoint.value,e.config.token=Q.token.value,e.config.model=Q.model.value,e.config.providerType=Q.providerTypeImage.checked?`image`:`chat`,e.config.toolMode=Q.toolModeChat.checked?`chat`:`tools`,e.config.timeout=Number(Q.timeout.value||30),e.config.description=Q.description.value,e.config.systemPrompt=Q.systemPrompt.value,e.config.requiresUserInput=Q.requiresUserInput.checked,e.config.userInputDescription=Q.userInputDescription.value,e.config.expectedOutputMarker=Q.expectedOutputMarker.value,yp(),bp(e),Q.typeBadge.textContent=zp(e),e.kind===`llm`))for(let t of $.entities)t.parentId===e.id&&t.kind===`agent`&&(t.config.model=e.config.model,t.config.timeout=e.config.timeout)}function _p(e){let t=Q.agentProvider;t.innerHTML=``;let n=$.entities.filter(e=>e.kind===`llm`&&e.config.providerType!==`image`);for(let e of n){let n=document.createElement(`option`);n.value=e.id,n.textContent=e.label,t.appendChild(n)}t.value=e.parentId??``}function vp(e){let t=Bp();if(t?.kind!==`agent`)return;let n=Vp(e);n?.kind===`llm`&&t.parentId!==e&&(t.parentId=e,t.config.model=n.config.model,t.config.timeout=n.config.timeout,Xf(),kf(),Gp())}function yp(){let e=Bp()?.kind===`agent`&&Q.requiresUserInput.checked;Q.userInputDescriptionField.hidden=!e,Q.userInputDescription.required=e}function bp(e){let t=e.kind===`llm`,n=e.config.providerType===`image`;Q.providerIdField.hidden=!t,Q.toolModeField.hidden=!t||n,Jd.title=n?`Load image models from endpoint`:`Load chat models from endpoint`,qd.title=n?`Test image provider configuration`:`Test chat provider configuration`}function xp(e){let t=Array.from(Q.model.options).map(e=>e.value);if(e&&!t.includes(e)){Q.model.innerHTML=``;let t=document.createElement(`option`);t.value=e,t.textContent=e,Q.model.appendChild(t)}Q.model.value=e||(t[0]??``)}function Sp(){let e=Bp();if(e?.kind!==`agent`)return;gp();let t=Vp(e.parentId??``);if(t?.kind!==`llm`){Nf(`No parent LLM found for this agent.`,`error`);return}if(!t.config.model){Nf(`Parent LLM has no model selected.`,`error`);return}if(!e.config.systemPrompt.trim()){Nf(`Write a system prompt first.`,`error`);return}if(e.config.requiresUserInput&&!e.config.userInputDescription.trim()){Nf(`Describe the required user input first.`,`error`);return}yf=e.id,sf.textContent=`Test ${e.label}`,cf.textContent=e.config.requiresUserInput?e.config.userInputDescription:`Run this agent with its configured system prompt.`,lf.hidden=!e.config.requiresUserInput,uf.required=e.config.requiresUserInput,uf.value=``,df.hidden=!0,df.textContent=``,pf.disabled=!1,pf.textContent=`Run`,of.hidden=!1,e.config.requiresUserInput?window.setTimeout(()=>uf.focus(),0):window.setTimeout(()=>pf.focus(),0)}function Cp(){of.hidden=!0,yf=null}async function wp(){if(uf.required&&!uf.value.trim()){uf.reportValidity();return}let e=yf?Vp(yf):null;if(e?.kind!==`agent`){kp(`error`,`The selected agent is no longer available.`);return}let t=Vp(e.parentId??``);if(t?.kind!==`llm`){kp(`error`,`No parent LLM found for this agent.`);return}pf.disabled=!0,pf.textContent=`Running…`;let n=Mf(`Running agent…`);Ep();let r=$.entities.find(e=>e.kind===`mcp`),i=!1,a=await za({providerId:t.id,endpoint:t.config.endpoint,model:t.config.model,systemPrompt:e.config.systemPrompt,userInput:uf.value.trim()||void 0,timeout:t.config.timeout,mcpEndpoint:t.config.toolMode===`chat`?void 0:r?.config.endpoint||void 0,toolMode:t.config.toolMode,expectedOutputMarker:e.config.expectedOutputMarker||void 0},e=>{e.type===`error`&&(i=!0),e.type!==`final`&&e.type!==`error`&&Mf(Tp(e),n),Dp(e)});pf.disabled=!1,pf.textContent=`Run`,a.ok&&a.content?(Op(a.content),Nf(`Agent responded. Result saved in AI/WORKSPACE.`,`success`,Hd,n)):(i||Dp({type:`error`,message:a.error??`Agent failed.`}),df.dataset.state=`error`,Nf(a.error??`Agent failed.`,`error`,Hd,n))}function Tp(e){return e.type===`tool_call`&&e.toolName?`Agent tool call: ${e.toolName}`:e.type===`tool_result`&&e.toolName?`Agent tool result: ${e.toolName}`:`Agent: ${e.message}`}function Ep(){df.hidden=!1,df.dataset.state=`loading`,df.textContent=``,Dp({type:`status`,message:`Preparing agent request`})}function Dp(e){df.hidden=!1,e.type===`error`&&(df.dataset.state=`error`);let t=document.createElement(`div`);t.className=`agent-run-event agent-run-event-${e.type.replace(`_`,`-`)}`;let n=document.createElement(`span`);n.className=`agent-run-event-dot`,n.setAttribute(`aria-hidden`,`true`);let r=document.createElement(`div`);r.className=`agent-run-event-body`;let i=document.createElement(`p`);i.className=`agent-run-event-title`,i.textContent=e.message,r.appendChild(i);let a=[];if(e.turn&&a.push(`Turn ${e.turn}`),e.toolName&&a.push(e.toolName),e.detail&&a.push(e.detail),a.length){let e=document.createElement(`p`);e.className=`agent-run-event-meta`,e.textContent=a.join(` · `),r.appendChild(e)}t.append(n,r),df.appendChild(t),df.scrollTop=df.scrollHeight}function Op(e){df.dataset.state=`success`;let t=document.createElement(`section`);t.className=`agent-run-final`;let n=document.createElement(`h3`);n.textContent=`Final response`;let r=document.createElement(`pre`);r.textContent=e,t.append(n,r),df.appendChild(t),df.scrollTop=df.scrollHeight}function kp(e,t){df.hidden=!1,df.dataset.state=e,df.textContent=t}var Ap=/^(?:env:[A-Za-z_][A-Za-z0-9_]*|\$\{[A-Za-z_][A-Za-z0-9_]*\})$/;function jp(e){let t=e.trim();return t!==``&&!Ap.test(t)}function Mp(e){let t=e.trim();return jp(t)?``:t}var Np=`API token must reference an environment variable, e.g. env:LLM_API_KEY`;async function Pp(){let e=Bp();if(e?.kind!==`llm`)return;gp();let t=e.config.endpoint;if(!t){Nf(`Set an endpoint first.`);return}if(jp(e.config.token)){Nf(Np);return}Jd.classList.add(`loading`),Jd.disabled=!0,Q.model.disabled=!0;let n=await La({endpoint:t,token:e.config.token,providerType:e.config.providerType});if(Jd.classList.remove(`loading`),Jd.disabled=!1,Q.model.disabled=!1,!n.ok||!n.models?.length){Nf(n.error??`No models found.`);return}let r=Q.model.value;Q.model.innerHTML=``;for(let e of n.models){let t=document.createElement(`option`);t.value=e,t.textContent=e,Q.model.appendChild(t)}Q.model.value=n.models.includes(r)?r:n.models[0],e.config.model=Q.model.value,qd.disabled=!Q.model.value,Nf(`${n.models.length} model${n.models.length===1?``:`s`} loaded.`),Gp()}async function Fp(){let e=Bp();if(e?.kind!==`llm`)return;if(gp(),jp(e.config.token)){Nf(Np);return}qd.disabled=!0,Mf(`Testing ${e.config.model}…`),Gp();let t=e.config.providerType===`image`?await Ip(e):await Va({endpoint:e.config.endpoint,token:e.config.token,model:e.config.model,timeout:e.config.timeout});qd.disabled=!1,t.ok?Nf(t.detail??`Connection OK`,`success`):Nf(t.error||`Connection failed (${t.status||`no status`})`,`error`),Gp()}async function Ip(e){let t=await La({endpoint:e.config.endpoint,token:e.config.token,providerType:`image`});if(!t.ok)return{ok:!1,error:t.error??`Image provider test failed`};let n=e.config.model.trim();return n&&t.models?.length&&!t.models.includes(n)?{ok:!1,error:`Image models loaded, but "${n}" was not found.`}:{ok:!0,detail:`${t.models?.length??0} image model${t.models?.length===1?``:`s`} available`}}async function Lp(){let e=Bp();if(e?.kind===`llm`)try{await navigator.clipboard.writeText(e.id),Nf(`Provider ID copied`,`success`)}catch{Q.providerId.select(),Nf(`Provider ID selected`,`success`)}}function Rp(e){return{system:`System`,llm:`LLM provider`,agent:`Agent`,mcp:`MCP`}[e]||`Node`}function zp(e){return e.kind===`llm`&&e.config.providerType===`image`?`Image provider`:Rp(e.kind)}function Bp(){return $.selectedId?Vp($.selectedId):null}function Vp(e){return $.entities.find(t=>t.id===e)}function Hp(e){return e===`root`||e===`mcp`}function Up(e){return $.entities.filter(t=>t.parentId===e)}function Wp(e){let t=[];for(let n of Up(e))t.push(n.id,...Wp(n.id));return t}function Gp(){xf?Ud.requestPaint():requestAnimationFrame(Kp)}function Kp(){let e=Ud.width/$.dpr,t=Ud.height/$.dpr;Z.reset(),Z.setTransform($.dpr,0,0,$.dpr,0,0),Z.clearRect(0,0,e,t),Z.save(),Z.translate($.cameraX,$.cameraY),Z.scale($.zoom,$.zoom),qp(e,t),Jp(),Z.restore(),xf&&tm(e,t)}function qp(e,t){Z.save(),Z.lineWidth=1/$.zoom;let n=fm({x:0,y:0}),r=fm({x:e,y:t}),i=Math.floor(n.x/ud)*ud,a=Math.ceil(r.x/ud)*ud,o=Math.floor(n.y/ud)*ud,s=Math.ceil(r.y/ud)*ud;for(let e=i;e<=a;e+=ud)Z.strokeStyle=e%dd===0?`#d7dce5`:`#edf0f4`,km(e,o,e,s);for(let e=o;e<=s;e+=ud)Z.strokeStyle=e%dd===0?`#d7dce5`:`#edf0f4`,km(i,e,a,e);Z.restore()}function Jp(){Yp();for(let e of $.entities)Xp(e)}function Yp(){Z.save(),Z.lineWidth=2/$.zoom;for(let e of $.entities){let t=Vp(e.parentId);if(!t)continue;let n=Math.atan2(e.y-t.y,e.x-t.x),r=mm(t,n),i=mm(e,n+Math.PI);Z.strokeStyle=$p(e).connection,Z.beginPath(),Z.moveTo(r.x,r.y),Z.lineTo(i.x,i.y),Z.stroke()}Z.restore()}function Xp(e){if(e.kind===`system`||e.kind===`llm`){Zp(e);return}Qp(e)}function Zp(e){let t=e.id===$.selectedId,n=$p(e),r=e.kind===`system`?sd:cd,i=Up(e.id),a=Math.max(ld,i.length),o=Em(e.x,e.y,r,a);Z.save(),Z.beginPath(),o.forEach((e,t)=>{t===0?Z.moveTo(e.x,e.y):Z.lineTo(e.x,e.y)}),Z.closePath(),Z.fillStyle=t?n.selectedFill:n.fill,Z.strokeStyle=t?n.selectedStroke:n.stroke,Z.lineWidth=(t?3:2)/$.zoom,Z.shadowColor=n.shadow,Z.shadowBlur=e.kind===`system`?20:14,Z.shadowOffsetY=e.kind===`system`?8:5,Z.fill(),Z.shadowColor=`transparent`,Z.stroke(),Z.fillStyle=t?n.selectedText:n.text,Z.textAlign=`center`,Z.textBaseline=`middle`,Z.font=e.kind===`system`?`800 21px Inter, system-ui, sans-serif`:`800 16px Inter, system-ui, sans-serif`,Om(e.label,e.x,e.y-8,r*1.32,e.kind===`system`?26:20),em(e,t,r),Z.restore()}function Qp(e){let t=e.id===$.selectedId,n=$p(e),r=e.kind===`mcp`?116:ad,i=e.kind===`mcp`?58:od;Z.save(),Dm(e.x-r/2,e.y-i/2,r,i,20),Z.fillStyle=t?n.selectedFill:n.fill,Z.strokeStyle=t?n.selectedStroke:n.stroke,Z.lineWidth=(t?3:2)/$.zoom,Z.shadowColor=n.shadow,Z.shadowBlur=10,Z.shadowOffsetY=4,Z.fill(),Z.shadowColor=`transparent`,Z.stroke(),Z.fillStyle=t?n.selectedText:n.text,Z.font=`760 15px Inter, system-ui, sans-serif`,Z.textAlign=`center`,Z.textBaseline=`middle`,Om(e.label,e.x,e.y,r*.78,18),em(e,t,Math.max(r,i)/2),Z.restore()}function $p(e){if(e.kind===`system`)return{fill:`#111827`,stroke:`#111827`,selectedFill:`#111827`,selectedStroke:`#111827`,text:`#ffffff`,selectedText:`#ffffff`,shadow:`rgb(17 24 39 / 18%)`,connection:`#475569`};if(e.kind===`llm`&&e.config.providerType===`image`)return{fill:`#facc15`,stroke:`#ca8a04`,selectedFill:`#eab308`,selectedStroke:`#a16207`,text:`#111827`,selectedText:`#111827`,shadow:`rgb(250 204 21 / 22%)`,connection:`#ca8a04`};if(e.kind===`llm`&&e.config.toolMode===`chat`)return{fill:`#f472b6`,stroke:`#db2777`,selectedFill:`#ec4899`,selectedStroke:`#be185d`,text:`#500724`,selectedText:`#500724`,shadow:`rgb(244 114 182 / 20%)`,connection:`#db2777`};if(e.kind===`llm`)return{fill:`#f97316`,stroke:`#ea580c`,selectedFill:`#fb923c`,selectedStroke:`#c2410c`,text:`#431407`,selectedText:`#431407`,shadow:`rgb(249 115 22 / 20%)`,connection:`#ea580c`};if(e.kind===`mcp`)return{fill:`#64748b`,stroke:`#475569`,selectedFill:`#475569`,selectedStroke:`#334155`,text:`#ffffff`,selectedText:`#ffffff`,shadow:`rgb(100 116 139 / 18%)`,connection:`#64748b`};if(e.kind===`agent`){let t=Vp(e.parentId);return t?.kind===`llm`&&t.config.toolMode===`chat`?{fill:`#f9a8d4`,stroke:`#f472b6`,selectedFill:`#ec4899`,selectedStroke:`#db2777`,text:`#111827`,selectedText:`#111827`,shadow:`rgb(244 114 182 / 18%)`,connection:`#f472b6`}:{fill:`#fdba74`,stroke:`#f97316`,selectedFill:`#fb923c`,selectedStroke:`#ea580c`,text:`#111827`,selectedText:`#111827`,shadow:`rgb(249 115 22 / 18%)`,connection:`#f97316`}}return{fill:`#ffffff`,stroke:`#0f172a`,selectedFill:`#111827`,selectedStroke:`#0f172a`,text:`#111827`,selectedText:`#ffffff`,shadow:`rgb(15 23 42 / 8%)`,connection:`#111827`}}function em(e,t,n){t&&(Z.beginPath(),Z.arc(e.x+n*.62,e.y-n*.66,5,0,Math.PI*2),Z.fillStyle=`#34d399`,Z.fill())}function tm(e,t){if(!Bp())return;let n=ym(e),r=Math.min(hd,t-118),i=e-n-24,a=Math.max(24,(t-r)/2);try{let e=Z.drawElementImage(hf,i,a,n,r);hf.style.transform=e.toString()}catch{Wd.textContent=`Waiting for HTML snapshot`}}function nm(e,t){let n=Ud.clientWidth,r=Ud.clientHeight,i=Bp()?ym(n)+gd:0,a=Math.max(360,n-i),o=cm(),s=lm(o,a,r),c=t?s:Math.min($.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||!$.cameraX||!$.cameraY){um(),$.cameraX=d,$.cameraY=f,$.zoom=c,$.panelShiftX=i;return}$.panelShiftX=i,sm(d,f,c)}function rm(e,t,n){if(t){if(e){let e=im();$.panelShiftX+=Math.max(0,-e),om(e,n)}else{let e=Bp();if(e){let t=ym(Ud.clientWidth)+gd,n=(Ud.clientWidth-t)/2-e.x*$.zoom,r=n-$.cameraX;$.panelShiftX=-r,sm(n,$.cameraY,$.zoom)}}return}if(!e)return;let r=$.panelShiftX;$.panelShiftX=0,om(r,n)}function im(){let e=Bp();if(!e)return 0;let t=Ud.clientWidth-ym(Ud.clientWidth)-24-Ed,n=am(e);return n.right<=t?0:t-n.right}function am(e){let t=Sm(e);return{left:t.left*$.zoom+$.cameraX,top:t.top*$.zoom+$.cameraY,right:t.right*$.zoom+$.cameraX,bottom:t.bottom*$.zoom+$.cameraY}}function om(e,t){if(um(),!e)return;let n=$.cameraX+e;if(!t){$.cameraX=n;return}sm(n,$.cameraY,$.zoom)}function sm(e,t,n){um();let r=$.cameraX,i=$.cameraY,a=$.zoom,o=performance.now();function s(c){let l=Math.min(1,(c-o)/wd),u=1-(1-l)**3;$.cameraX=r+(e-r)*u,$.cameraY=i+(t-i)*u,$.zoom=a+(n-a)*u,Xf(),Gp(),l<1?$.viewAnimationId=requestAnimationFrame(s):$.viewAnimationId=null}$.viewAnimationId=requestAnimationFrame(s)}function cm(){return $.entities.reduce((e,t)=>{let n=sp(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 lm(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-Td*2),o=Math.max(1,n-Td*2);return pm(Math.min(1,a/r,o/i),Od,1)}function um(){$.viewAnimationId&&(cancelAnimationFrame($.viewAnimationId),$.viewAnimationId=null)}function dm(e,t){um();let n=fm(e);$.zoom=pm($.zoom*t,Od,kd),$.cameraX=e.x-n.x*$.zoom,$.cameraY=e.y-n.y*$.zoom,Gp()}function fm(e){return{x:(e.x-$.cameraX)/$.zoom,y:(e.y-$.cameraY)/$.zoom}}function pm(e,t,n){return Math.min(n,Math.max(t,e))}function mm(e,t){if(e.kind!==`system`&&e.kind!==`llm`)return _m(e,t);let n=e.kind===`system`?sd:cd,r=Up(e.id);return hm(e,n,Math.max(ld,r.length),t)||{x:e.x+Math.cos(t)*n,y:e.y+Math.sin(t)*n}}function hm(e,t,n,r){let i={x:Math.cos(r),y:Math.sin(r)},a=Em(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=gm(i,s);if(Math.abs(l)<1e-4)continue;let u=gm(c,s)/l,d=gm(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 gm(e,t){return e.x*t.y-e.y*t.x}function _m(e,t){let n=bm(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 vm(e,t){if(e.kind===`system`||e.kind===`llm`){let n=e.kind===`system`?sd:cd;return Math.hypot(t.x-e.x,t.y-e.y)<=n+Cd}let{width:n,height:r}=bm(e);return Math.abs(t.x-e.x)<=n/2+Cd&&Math.abs(t.y-e.y)<=r/2+Cd}function ym(e){return Math.min(pd,Math.max(fd,Math.floor(e*md)))}function bm(e){return e.kind===`mcp`?{width:116,height:58}:{width:ad,height:od}}function xm(e){return[e,...Wp(e.id).map(Vp)].filter(Boolean).map(Sm).reduce(Cm)}function Sm(e){if(e.kind===`system`||e.kind===`llm`){let t=e.kind===`system`?sd:cd;return{left:e.x-t,top:e.y-t,right:e.x+t,bottom:e.y+t}}let{width:t,height:n}=bm(e);return{left:e.x-t/2,top:e.y-n/2,right:e.x+t/2,bottom:e.y+n/2}}function Cm(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 wm(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 Tm(e){let t=Ud.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}}function Em(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 Dm(e,t,n,r,i){let a=e+n,o=t+r;Z.beginPath(),Z.moveTo(e+i,t),Z.lineTo(a-i,t),Z.quadraticCurveTo(a,t,a,t+i),Z.lineTo(a,o-i),Z.quadraticCurveTo(a,o,a-i,o),Z.lineTo(e+i,o),Z.quadraticCurveTo(e,o,e,o-i),Z.lineTo(e,t+i),Z.quadraticCurveTo(e,t,e+i,t),Z.closePath()}function Om(e,t,n,r,i){let a=e.split(/\s+/),o=[],s=``;for(let e of a){let t=s?`${s} ${e}`:e;Z.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)=>{Z.fillText(e,t,c+n*i)})}function km(e,t,n,r){Z.beginPath(),Z.moveTo(e,t),Z.lineTo(n,r),Z.stroke()}var Am=U(`<div class="status-row"><span id="apiStatus"></span></div>`),jm=U('<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"><div id="providerIdField" class="field wide"><span>Provider ID</span> <div class="model-select-wrap"><input id="nodeProviderId" name="nodeProviderId" type="text" readonly=""/> <button id="copyProviderIdButton" class="icon-button" type="button" title="Copy provider ID">⧉</button></div> <small class="field-note">Technical node id. Use it when a tool or agent workflow needs to reference this provider, for example as <code>imageProviderId</code> with <code>generate_image</code>.</small></div> <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="text" autocomplete="off" spellcheck="false" placeholder="env:LLM_API_KEY"/> <small class="field-note">Reference an environment variable only — <code>env:VAR_NAME</code> (or <code>&#123;VAR_NAME&#125;</code>). The secret is read from the server environment at request time; literal tokens are not stored (the workspace file is tracked by git).</small></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> <fieldset class="field wide tool-mode-field"><legend>Provider type</legend> <label class="radio-card"><input id="nodeProviderTypeChat" name="nodeProviderType" type="radio" value="chat"/> <span><strong>Chat completion</strong> <small>Uses OpenAI-compatible <code>/chat/completions</code>.</small></span></label> <label class="radio-card"><input id="nodeProviderTypeImage" name="nodeProviderType" type="radio" value="image"/> <span><strong>Image generation</strong> <small>Used by <code>generate_image</code> with the provider id above.</small></span></label></fieldset> <fieldset id="toolModeField" class="field wide tool-mode-field"><legend>Tool calling</legend> <label class="radio-card"><input id="nodeToolModeTools" name="nodeToolMode" type="radio" value="tools"/> <span><strong>Allow MCP tools</strong> <small>Agents can send OpenAI-compatible <code>tools</code> payloads.</small></span></label> <label class="radio-card"><input id="nodeToolModeChat" name="nodeToolMode" type="radio" value="chat"/> <span><strong>Chat only</strong> <small>Agents never send tools, even when an MCP endpoint exists.</small></span></label></fieldset> <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="agentProviderField" class="field wide"><span>LLM provider</span> <select id="nodeAgentProvider" name="nodeAgentProvider"></select> <small class="field-note">Move this agent to another LLM provider. It inherits the target provider\'s model and timeout.</small></label> <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> <p id="mcpInventoryStatus" class="inventory-status" hidden=""></p> <div class="inventory-grid"><article><h2>Tools</h2> <ul id="mcpToolsList"></ul></article> <article><h2>Prompts</h2> <ul id="mcpPromptsList"></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>');function Mm(e,t){qe(t,!0),Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}return Sf()});var n=jm(),r=L(n);$a(r,{title:`Living AI Documentation`,subtitle:`Graph-native configuration workspace`,children:(e,t)=>{var n=Am(),r=L(n);gi(r,1,`status-pill `),r.textContent=`Detecting canvas API`,j(n),W(e,n)},$$slots:{default:!0}});var i=z(r,2),a=z(L(i),2),o=L(a),s=z(L(o),4),c=L(s),l=z(L(c),2),u=L(l);u.value=u.__value=`system`;var d=z(u);d.value=d.__value=`llm`;var f=z(d);f.value=f.__value=`agent`;var p=z(f);p.value=p.__value=`mcp`,j(l),j(c);var m=z(c,2),h=z(L(m),6),g=z(L(h),2),_=L(g),v=L(_);v.value=v.__value=``,j(_),Ie(2),j(g),j(h),Ie(6),j(m),Ie(2),j(s),Ie(6),j(o),j(a),Ie(2),j(i),Ie(6),j(n),W(e,n),Je()}var Nm=U(`<p class="files-msg svelte-4q2lov"> </p>`),Pm=U(`<p class="files-msg files-msg--error svelte-4q2lov"> </p>`),Fm=U(`<p class="files-msg files-msg--empty svelte-4q2lov"> </p>`),Im=U(`<option> </option>`),Lm=U(`<div class="files-toolbar svelte-4q2lov"><label for="files-folder-filter" class="svelte-4q2lov"> </label> <select id="files-folder-filter" data-testid="files-folder-filter" class="svelte-4q2lov"><option> </option><!></select></div>`),Rm=U(`<span class="files-folder svelte-4q2lov"> </span> ·`,1),zm=U(`<p class="files-row-error svelte-4q2lov"> </p>`),Bm=U(`<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>`),Vm=U(`<ul class="files-list svelte-4q2lov"></ul>`),Hm=U(`<!> <!>`,1),Um=U(`<!> <div class="app-shell"><!> <div class="files-page svelte-4q2lov"><!></div></div>`,1);function Wm(e,t){qe(t,!0);let n=P(null),r=P(I([])),i=P(I([])),a=P(``),o=P(!0),s=P(``),c=P(I({})),l=P(I({})),u=P(I({})),d=N(()=>V(a)?V(r).filter(e=>e.folder===V(a)||e.folder.startsWith(V(a)+`/`)):V(r));function f(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 p(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 m(){F(o,!0),F(s,``);try{let e=await fetch(`/api/files`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();F(r,Array.isArray(t.files)?t.files:[],!0),F(i,Array.isArray(t.folders)?t.folders:[],!0),V(a)&&!V(i).includes(V(a))&&F(a,``)}catch(e){F(s,Y(`files.error_load`)+(e instanceof Error?e.message:String(e)))}finally{F(o,!1)}}function h(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function g(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 V(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){F(c,{...V(c),[e.filename]:Y(`files.error_replace`)+`${(r.size/1024/1024).toFixed(1)} MB (max 19 MB)`},!0);return}F(l,{...V(l),[e.filename]:!0},!0),F(c,{...V(c),[e.filename]:``},!0);try{let t=await h(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 m()}catch(t){F(c,{...V(c),[e.filename]:Y(`files.error_replace`)+(t instanceof Error?t.message:String(t))},!0)}finally{F(l,{...V(l),[e.filename]:!1},!0)}}}),t.click()}async function _(e){if(await V(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})){F(u,{...V(u),[e.filename]:!0},!0),F(c,{...V(c),[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 m()}catch(t){F(c,{...V(c),[e.filename]:Y(`files.error_delete`)+(t instanceof Error?t.message:String(t))},!0)}finally{F(u,{...V(u),[e.filename]:!1},!0)}}}Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}await m()});var v=Um(),y=R(v);Vi(eu(y,{}),e=>F(n,e,!0),()=>V(n));var b=z(y,2),x=L(b);{let e=N(()=>Y(`files.title`));$a(x,{get title(){return V(e)},subtitle:``})}var S=z(x,2),C=L(S),w=e=>{var t=Nm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},T=e=>{var t=Pm(),n=L(t,!0);j(t),B(()=>G(n,V(s))),W(e,t)},E=e=>{var t=Fm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`files.empty`)]),W(e,t)},D=e=>{var t=Hm(),n=R(t),r=e=>{var t=Lm(),n=L(t),r=L(n,!0);j(n);var o=z(n,2),s=L(o),c=L(s,!0);j(s),s.value=s.__value=``,q(z(s),16,()=>V(i),e=>e,(e,t)=>{var n=Im(),r=L(n,!0);j(n);var i={};B(()=>{G(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),W(e,n)}),j(o);var l;bi(o),j(t),B((e,t)=>{G(r,e),G(c,t),l!==(l=V(a))&&(o.value=(o.__value=V(a))??``,yi(o,V(a)))},[()=>Y(`files.filter_label`),()=>Y(`files.filter_all`)]),H(`change`,o,e=>F(a,e.target.value,!0)),W(e,t)};K(n,e=>{V(i).length>0&&e(r)});var o=z(n,2),s=e=>{var t=Fm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`files.empty_filter`)]),W(e,t)},m=e=>{var t=Vm();q(t,21,()=>V(d),Xr,(e,t)=>{var n=Bm(),r=z(L(n),2),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o),d=e=>{var n=Rm(),r=R(n),i=L(r,!0);j(r),Ie(),B(()=>G(i,V(t).folder)),W(e,n)};K(s,e=>{V(t).folder&&e(d)});var m=z(s),h=e=>{var n=Ur();B(e=>G(n,`${e??``} ·`),[()=>p(V(t).uploadedAt)]),W(e,n)};K(m,e=>{V(t).uploadedAt&&e(h)});var v=z(m,1,!0);j(o);var y=z(o,2),b=e=>{var n=zm(),r=L(n,!0);j(n),B(()=>G(r,V(c)[V(t).filename])),W(e,n)};K(y,e=>{V(c)[V(t).filename]&&e(b)}),j(r);var x=z(r,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2),T=L(w,!0);j(w),j(x),j(n),B((e,n,r)=>{J(i,`href`,V(t).url),G(a,V(t).displayName||V(t).filename),G(v,e),S.disabled=V(l)[V(t).filename]||V(u)[V(t).filename],G(C,n),w.disabled=V(l)[V(t).filename]||V(u)[V(t).filename],G(T,r)},[()=>f(V(t).size||0),()=>V(l)[V(t).filename]?Y(`files.replacing`):Y(`files.replace`),()=>V(u)[V(t).filename]?Y(`files.deleting`):Y(`files.delete`)]),H(`click`,S,()=>g(V(t))),H(`click`,w,()=>_(V(t))),W(e,n)}),j(t),W(e,t)};K(o,e=>{V(d).length===0?e(s):e(m,-1)}),W(e,t)};K(C,e=>{V(o)?e(w):V(s)?e(T,1):V(r).length===0?e(E,2):e(D,-1)}),j(S),j(b),W(e,v),Je()}Pr([`change`,`click`]);var Gm=U(`<p class="browser-msg"> </p>`),Km=U(`<p class="browser-msg browser-msg--error"> </p>`),qm=U(`<button class="browser-row browser-row--dir"><span class="browser-row-name"> </span></button>`),Jm=U(`<span class="badge-added"> </span>`),Ym=U(`<button class="link-btn"> </button>`),Xm=U(`<div class="browser-row browser-row--file"><span class="browser-row-name"> </span> <!></div>`),Zm=U(`<!> <!>`,1),Qm=U(`<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>`),$m=U(`<p class="empty-msg svelte-e5jhdq"> </p>`),eh=U(`<button class="remove-btn"> </button>`),th=U(`<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>`),nh=U(`<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 rh(e,t){qe(t,!0);let n=Wi(t,`items`,27,()=>I([])),r=P(!1),i=P(``),a=P(``),o=P(I([])),s=P(I([])),c=P(!1),l=P(!1),u=N(()=>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){F(c,!0),F(l,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(i,t.current,!0),F(a,t.parent||``,!0),F(o,t.dirs||[],!0),F(s,t.files||[],!0)}catch{F(l,!0)}finally{F(c,!1)}}async function g(){F(r,!V(r)),V(r)&&!V(i)&&await h((await fetch(`/api/context/orientation`).then(e=>e.json()).catch(()=>({}))).sourceRoot||``)}async function _(e){await t.onAdd(e),V(r)&&V(i)&&await h(V(i))}var v=nh(),y=L(v),b=L(y),x=L(b,!0);j(b);var S=z(b,2),C=L(S),w=L(C);j(C);var T=z(C,2),E=L(T,!0);j(T),j(S),j(y);var D=z(y,2),ee=e=>{var t=Qm(),n=L(t),r=L(n),d=L(r,!0);j(r);var f=z(r,2),p=L(f,!0);j(f),j(n);var m=z(n,2),g=L(m),v=e=>{var t=Gm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},y=e=>{var t=Km(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.cannot_read_dir`)]),W(e,t)},b=e=>{var t=Gm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.empty_dir`)]),W(e,t)},x=e=>{var t=Zm(),n=R(t);q(n,17,()=>V(o),Xr,(e,t)=>{var n=qm(),r=L(n),i=L(r);j(r),j(n),B(()=>G(i,`📁 ${V(t).name??``}`)),H(`click`,n,()=>h(V(t).path)),W(e,n)}),q(z(n,2),17,()=>V(s),Xr,(e,t)=>{var n=Xm(),r=L(n),i=L(r);j(r);var a=z(r,2),o=e=>{var t=Jm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.added`)]),W(e,t)},s=N(()=>V(u).has(V(t).name)),c=e=>{var n=Ym(),r=L(n,!0);j(n),B(e=>G(r,e),[()=>Y(`context.add_file_action`)]),H(`click`,n,()=>_(V(t).path)),W(e,n)};K(a,e=>{V(s)?e(o):e(c,-1)}),j(n),B(()=>G(i,`📄 ${V(t).name??``}`)),W(e,n)}),W(e,t)};K(g,e=>{V(c)?e(v):V(l)?e(y,1):!V(o).length&&!V(s).length?e(b,2):e(x,-1)}),j(m),j(t),B(e=>{r.disabled=!V(a),G(d,e),G(p,V(i))},[()=>Y(`common.up`)]),H(`click`,r,()=>V(a)&&h(V(a))),W(e,t)};K(D,e=>{V(r)&&e(ee)});var O=z(D,2),k=L(O),te=e=>{var t=$m(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.no_instructions`)]),W(e,t)},ne=e=>{var r=Wr();q(R(r),17,n,Xr,(e,n)=>{var r=th(),i=L(r),a=L(i),o=L(a,!0);j(a);var s=z(a,2),c=L(s),l=z(c),u=e=>{var t=Ur();B(e=>G(t,`· ${e??``} KB`),[()=>Math.round(V(n).size/1024)]),W(e,t)};K(l,e=>{V(n).size!==null&&e(u)}),j(s),j(i);var h=z(i,2),g=L(h),_=L(g,!0);j(g);var v=z(g,2),y=e=>{var r=eh(),i=L(r,!0);j(r),B(e=>G(i,e),[()=>Y(`common.remove`)]),H(`click`,r,()=>t.onRemove(d(V(n).path))),W(e,r)};K(v,e=>{V(n).exists&&e(y)}),j(h),j(r),B((e,t,r,i)=>{J(a,`href`,e),G(o,V(n).path),G(c,`${t??``} · ${r??``} `),gi(g,1,ui(V(n).exists?`status-ok`:`status-missing`),`svelte-e5jhdq`),G(_,i)},[()=>f(V(n).path),()=>p(V(n).root),()=>m(V(n).type),()=>V(n).exists?Y(`context.exists`):Y(`context.missing`)]),W(e,r)}),W(e,r)};K(k,e=>{n().length?e(ne,-1):e(te)}),j(O),j(v),B((e,t,r)=>{G(x,e),G(w,`${t??``}/${n().length??``}`),G(E,r)},[()=>Y(`context.instructions_title`),()=>n().filter(e=>e.exists).length,()=>V(r)?Y(`context.hide_instruction_browser`):Y(`context.add_instruction_file`)]),H(`click`,T,g),W(e,v),Je()}Pr([`click`]);var ih=U(`<span class="rules-folder svelte-1r3tey2"> </span>`),ah=U(`<p class="empty-msg svelte-1r3tey2"> </p>`),oh=U(`<span class="tag svelte-1r3tey2"> </span>`),sh=U(`<div class="rule-tags svelte-1r3tey2"></div>`),ch=U(`<div class="rule-applies svelte-1r3tey2"> </div>`),lh=U(`<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>`),uh=U(`<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 dh(e,t){qe(t,!0);let n=Wi(t,`rules`,19,()=>[]),r=Wi(t,`rulesFolder`,3,``),i=P(``),a=P(`guideline`),o=P(``),s=P(``),c=P(``),l=P(``),u=P(!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(V(i).trim()){F(u,!0);try{await t.onAdd({title:V(i).trim(),severity:V(a),description:V(o).trim(),tags:p(V(s)),appliesTo:p(V(c)),body:V(l).trim()}),F(i,``),F(o,``),F(s,``),F(c,``),F(l,``)}finally{F(u,!1)}}}var h=uh(),g=L(h),_=L(g),v=L(_),y=L(v,!0);j(v);var b=z(v,2),x=e=>{var t=ih(),n=L(t,!0);j(t),B(()=>G(n,r())),W(e,t)};K(b,e=>{r()&&e(x)}),j(_);var S=z(_,2),C=L(S),w=e=>{var t=ah(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.no_rules`)]),W(e,t)},T=e=>{var t=Wr();q(R(t),17,n,Xr,(e,t)=>{var n=lh(),r=L(n),i=L(r),a=L(i),o=L(a),s=L(o,!0);j(o),j(a);var c=z(a,2),l=L(c,!0);j(c),j(i);var u=z(i,2),p=L(u,!0);j(u),j(r);var m=z(r,2),h=L(m,!0);j(m);var g=z(m,2),_=e=>{var n=sh();q(n,21,()=>V(t).tags,Xr,(e,t)=>{var n=oh(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(n),W(e,n)};K(g,e=>{V(t).tags?.length&&e(_)});var v=z(g,2),y=e=>{var n=ch(),r=L(n,!0);j(n),B(e=>G(r,e),[()=>V(t).appliesTo.join(`, `)]),W(e,n)};K(v,e=>{V(t).appliesTo?.length&&e(y)}),j(n),B((e,n,r)=>{J(o,`href`,e),G(s,V(t).title),J(c,`href`,n),G(l,V(t).path),G(p,r),G(h,V(t).description)},[()=>d(V(t).path),()=>d(V(t).path),()=>f(V(t).severity)]),W(e,n)}),W(e,t)};K(C,e=>{n().length?e(T,-1):e(w)}),j(S),j(g);var E=z(g,2),D=L(E),ee=L(D,!0);j(D);var O=z(D,2),k=L(O),te=L(k,!0);j(k);var ne=z(k,2);Di(ne),j(O);var re=z(O,2),ie=L(re),A=L(ie,!0);j(ie);var ae=z(ie,2),oe=L(ae),se=L(oe,!0);j(oe),oe.value=oe.__value=`guideline`;var ce=z(oe),le=L(ce,!0);j(ce),ce.value=ce.__value=`warning`;var ue=z(ce),de=L(ue,!0);j(ue),ue.value=ue.__value=`required`,j(ae),j(re);var fe=z(re,2),pe=L(fe),me=L(pe,!0);j(pe);var he=z(pe,2);Di(he),j(fe);var ge=z(fe,2),_e=L(ge),ve=L(_e,!0);j(_e);var ye=z(_e,2);Di(ye),j(ge);var be=z(ge,2),xe=L(be),Se=L(xe,!0);j(xe);var Ce=z(xe,2);Di(Ce),j(be);var we=z(be,2),Te=L(we),Ee=L(Te,!0);j(Te);var De=z(Te,2);yn(De),j(we);var Oe=z(we,2),ke=L(Oe,!0);j(Oe),j(E),j(h),B((e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)=>{G(y,e),G(ee,t),G(te,n),J(ne,`placeholder`,r),G(A,i),G(se,a),G(le,o),G(de,s),G(me,c),J(he,`placeholder`,l),G(ve,u),J(ye,`placeholder`,d),G(Se,f),J(Ce,`placeholder`,p),G(Ee,m),J(De,`placeholder`,h),Oe.disabled=g,G(ke,_)},[()=>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`),()=>V(u)||!V(i).trim(),()=>Y(`context.add_rule_button`)]),Ni(ne,()=>V(i),e=>F(i,e)),xi(ae,()=>V(a),e=>F(a,e)),Ni(he,()=>V(o),e=>F(o,e)),Ni(ye,()=>V(s),e=>F(s,e)),Ni(Ce,()=>V(c),e=>F(c,e)),Ni(De,()=>V(l),e=>F(l,e)),H(`click`,Oe,m),W(e,h),Je()}Pr([`click`]);var fh=U(`<p class="empty-msg svelte-1ui2b6s"> </p>`),ph=U(`<p class="mcp-desc svelte-1ui2b6s"> </p>`),mh=U(`<div class="mcp-schema-wrap svelte-1ui2b6s"><h4 class="mcp-schema-title svelte-1ui2b6s"> </h4> <pre class="mcp-schema-pre svelte-1ui2b6s"> </pre></div>`),hh=U(`<div class="mcp-result svelte-1ui2b6s" data-testid="mcp-result"></div>`),gh=U(`<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>`),_h=U(`<p class="mcp-arg-desc svelte-1ui2b6s"> </p>`),vh=U(`<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>`),yh=U(`<div class="mcp-schema-wrap svelte-1ui2b6s"><h4 class="mcp-schema-title svelte-1ui2b6s"> </h4> <ul class="mcp-args-list svelte-1ui2b6s"></ul></div>`),bh=U(`<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 xh(e,t){qe(t,!0);let n=P(`-`),r=P(!1),i=P(`-`),a=P(`-`),o=P(I([])),s=P(I([])),c=P(!1),l=P(I(new Map)),u=P(I(new Map));function d(e,t){let n=V(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=V(e===`tool`?l:u).get(t)??{argsJson:`{}`,running:!1,error:``,resultHtml:``};e===`tool`?F(l,new Map(V(l)).set(t,{...r,...n}),!0):F(u,new Map(V(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);F(l,new Map(V(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);F(u,new Map(V(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(`
91
+ `,t);return n>=0?n:0}c=c.nextElementSibling}return e.length}function Fu(e,t,n){if(!e||typeof t!=`string`)return()=>{};let r=wu(t);Eu(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=pu(e.type),o=hu(e.type);Ou(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=Pu(t,e,i.target,r,i.clientY);o!==null&&(i.preventDefault(),Ou(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?.type===`table`&&(t.preventDefault(),t.stopPropagation(),Du(),n.onEdit({...a,tableFocusCell:Au(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(),Ou(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=>{_u&&!_u.contains(e.target)&&Du()},l=e=>{e.key===`Escape`&&Du()};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),Du(),e.querySelectorAll(`[data-inline-snippet-index]`).forEach(e=>{e.removeAttribute(`data-inline-snippet-index`),e.classList.remove(`ld-inline-snippet-target`)})}}var Iu=U(`<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>`),Lu=U(`<div id="doc-content" data-testid="doc-content"></div>`),Ru=U(`<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>`),zu=U(`<div data-testid="content-lightbox" class="fixed inset-0 z-50 bg-white flex items-center justify-center cursor-pointer p-4"><img data-testid="lightbox-image" class="max-w-full max-h-full object-contain select-none"/> <button class="absolute top-4 right-4 text-gray-500 hover:text-gray-950 text-2xl leading-none">×</button></div>`),Bu=U(`<!> <!> <!> <!>`,1);function Vu(e,t){qe(t,!0);let n=Wi(t,`onopen`,3,()=>{}),r=Wi(t,`onanchor`,3,D),i=Wi(t,`onconfirmdelete`,3,void 0),a=Wi(t,`oncontentwired`,3,void 0),o=Wi(t,`rewireSignal`,3,void 0),s=Wi(t,`editing`,15,!1),c=Wi(t,`saveMsg`,15,null),l=P(null),u=P(null),d=P(``),f=null,p=P(!1),m=P(`insert`),h=P(null),g=P(0),_=P(!1),v=P(``),y=P(`png`),b=null,x=0,S=0,C=P(null),w=P(``),T=/[̀-ͯ]/g;function E(e){return(e||``).normalize(`NFD`).replace(T,``).toLowerCase().replace(/[^a-z0-9]/g,`_`)}function D(e){document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})}Gi(()=>{let e=window;return e.openSnippetsModal=()=>{F(m,`insert`),F(p,!0)},e.openSnippetsModalForInlineInsert=e=>{F(m,`inline-insert`),F(g,Math.max(0,Number(e)||0),!0),F(p,!0)},()=>{delete e.openSnippetsModal,delete e.openSnippetsModalForInlineInsert}}),kn(()=>{if(o(),t.html,t.content,f?.(),f=null,!(s()||!V(l)))return Xs(V(l),t.html,{content:t.content,codeBlockMaxHeight:X.codeBlockMaxHeight,t:Y,onDocLink:(e,t)=>n()(e,t),onAnchor:r()}),f=Fu(V(l),t.content,{onEdit:e=>{F(m,`inline-edit`),F(h,e,!0),F(p,!0)},onInsert:e=>{F(m,`inline-insert`),F(g,e,!0),F(p,!0)},onDelete:async e=>{(i()?await i()():confirm(Y(`snippet.inline_delete_message`)))&&await t.onsave(t.content.slice(0,e.start)+t.content.slice(e.end))}}),a()?.(V(l)),()=>{f?.(),f=null}});function ee(){F(d,t.content,!0),s(!0),c(null),requestAnimationFrame(()=>V(u)?.focus())}function O(){s(!1),c(null)}async function k(){c({text:Y(`doc.saving`),cls:`text-gray-400`});try{await t.onsave(V(d)),s(!1),c(null)}catch(e){c({text:Y(`error.save`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`})}}function te(){F(m,`insert`),F(p,!0)}function ne(){return s()}function re(e){let t=Array.from(e.clipboardData?.items??[]).find(e=>e.type.startsWith(`image/`));if(t){e.preventDefault(),x=V(u).selectionStart,S=V(u).selectionEnd,F(y,t.type.split(`/`)[1].replace(`jpeg`,`jpg`)||`png`,!0);let n=t.getAsFile();if(!n)return;b=n,F(v,E(Date.now().toString()),!0),F(_,!0);return}let n=Array.from(e.clipboardData?.files??[]).filter(e=>!e.type.startsWith(`image/`));if(n.length){e.preventDefault();let t=V(u).selectionStart,r=V(u).selectionEnd;(async()=>{for(let e of n)await se(e,t,r)})()}}function ie(e){let t=Array.from(e.dataTransfer?.files??[]).filter(e=>!e.type.startsWith(`image/`));if(!t.length)return;e.preventDefault(),e.stopPropagation();let n=V(u).selectionStart,r=V(u).selectionEnd;(async()=>{for(let e of t)await se(e,n,r)})()}function A(e){e.dataTransfer?.types?.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)}function ae(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function oe(e,t,n){let r=V(d).slice(0,t),i=V(d).slice(n);F(d,r+e+i),requestAnimationFrame(()=>{V(u).selectionStart=V(u).selectionEnd=t+e.length,V(u).focus()})}async function se(e,n,r){if(e.size>19922944){c({text:Y(`doc.file_too_large`)+` (${(e.size/1024/1024).toFixed(1)} MB, max 19 MB)`,cls:`text-red-500 dark:text-red-400`});return}c({text:Y(`doc.uploading_file`),cls:`text-gray-400`});try{let i=await ae(e),a=await fetch(`/api/files/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:i,name:e.name,documentId:t.docId})});if(!a.ok){let e=``;try{e=(await a.json()).error||``}catch{e=await a.text()}throw Error(e||`HTTP ${a.status}`)}let{url:o,originalName:s}=await a.json();oe(`[📎 ${s||e.name}](${o})`,n,r),c(null)}catch(e){c({text:Y(`doc.file_upload_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`})}}function ce(){F(_,!1),b=null}async function le(){let e=E(V(v))||Date.now().toString();if(F(_,!1),b){c({text:Y(`doc.uploading_image`),cls:`text-gray-400`});try{let t=await ae(b),n=await fetch(`/api/images/upload`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({data:t,ext:V(y),name:e})});if(!n.ok)throw Error(await n.text());let{filename:r}=await n.json();oe(`![image](/images/${r})`,x,S),c(null)}catch(e){c({text:Y(`doc.image_upload_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`})}finally{b=null}}}function ue(){F(C,null),F(w,``)}function de(e){if(!e.shiftKey&&!e.metaKey)return;let t=e.target,n=t.closest(`img`),r=t.closest(`.mermaid`)?.querySelector(`svg`);if(!n&&!r)return;if(e.preventDefault(),e.stopPropagation(),n){F(C,n.src,!0),F(w,n.alt||``,!0);return}let i=new XMLSerializer().serializeToString(r);F(C,`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`),F(w,Y(`doc.mermaid_diagram_alt`),!0)}function fe(e){e.key===`Escape`&&V(C)&&ue()}var pe={enterEdit:ee,cancelEdit:O,save:k,openSnippets:te,isEditing:ne},me=Bu();Nr(`keydown`,on,fe);var he=R(me),ge=e=>{var t=Iu();yn(t),Vi(t,e=>F(u,e),()=>V(u)),Nr(`paste`,t,re),Nr(`drop`,t,ie),Nr(`dragover`,t,A),Ni(t,()=>V(d),e=>F(d,e)),W(e,t)},_e=e=>{var t=Lu();Vi(t,e=>F(l,e),()=>V(l)),B(()=>gi(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 ${X.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`} ${X.imageRoundedCorners?`[&_img]:rounded-xl`:``} ${X.imageCentered?`[&_img]:mx-auto [&_img]:block`:``} ${X.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)]`:``}`)),H(`click`,t,de),W(e,t)};K(he,e=>{s()?e(ge):e(_e,-1)});var ve=z(he,2);uu(ve,{get open(){return V(p)},get editor(){return V(u)},get mode(){return V(m)},get docId(){return t.docId},get content(){return t.content},get range(){return V(h)},get insertPos(){return V(g)},get onsave(){return t.onsave},onclose:()=>F(p,!1)});var ye=z(ve,2),be=e=>{var t=Ru(),n=L(t),r=L(n),i=L(r);j(r);var a=z(r,2),o=L(a),s=L(o),c=z(s),l=L(c,!0);j(c),j(o);var u=z(o,2),d=L(u);Di(d);var f=z(d,2),p=L(f);j(f),j(u),j(a);var m=z(a,2),h=L(m),g=L(h,!0);j(h);var _=z(h,2),b=L(_,!0);j(_),j(m),j(n),j(t),B((e,t,n,r,a)=>{G(i,`🖼️ ${e??``}`),G(s,`${t??``} `),G(l,n),Oi(d,V(v)),G(p,`.${V(y)??``}`),G(g,r),G(b,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`)]),H(`input`,d,e=>F(v,E(e.target.value),!0)),H(`click`,h,ce),H(`click`,_,le),W(e,t)};K(ye,e=>{V(_)&&e(be)});var xe=z(ye,2),Se=e=>{var t=zu(),n=L(t),r=z(n,2);j(t),B(()=>{J(n,`src`,V(C)),J(n,`alt`,V(w))}),H(`click`,t,ue),H(`click`,n,e=>e.stopPropagation()),H(`click`,r,ue),W(e,t)};return K(xe,e=>{V(C)&&e(Se)}),W(e,me),Je(pe)}Pr([`click`,`input`]);var Hu=U(`<span> </span> <code> </code>`,1),Uu=U(`<button type="button" data-testid="bp-copy-doc-id"><i aria-hidden="true"></i></button>`),Wu=U(`<button class="bpadr-icon-btn" data-testid="bp-edit" type="button">✏️</button> <button class="bpadr-icon-btn" data-testid="bp-delete" type="button">🗑️</button>`,1),Gu=U(`<span> </span>`),Ku=U(`<footer class="bpadr-footer bpadr-doc-footer"><!> <button type="button" class="bpadr-btn-ghost" data-testid="bp-cancel"> </button> <button type="button" class="bpadr-btn-ghost" data-testid="bp-snippets"> </button> <button type="button" class="bpadr-btn-primary" data-testid="bp-save"> </button></footer>`),qu=U(`<div class="bpadr-read"><!></div> <!>`,1),Ju=U(`<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="button" data-testid="bp-form-snippets" class="bpadr-btn-ghost"> </button> <button type="submit" class="bpadr-btn-primary"> </button></footer></form> <!>`,1),Yu=U(`<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>`),Xu=U(`<div class="bpadr-overlay"><div class="bpadr-modal"><header class="bpadr-header"><div class="bpadr-title-row"><h2 class="bpadr-title"><!></h2> <!></div> <div class="bpadr-header-actions"><!> <button class="bpadr-icon-btn" type="button" title="Close">×</button></div></header> <!></div></div>`),Zu=U(`<div class="fixed inset-0 z-[60] flex items-center justify-center bg-black/50 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 type="button" data-testid="bp-delete-cancel" 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 type="button" data-testid="bp-delete-confirm" 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>`),Qu=U(`<!> <!>`,1);function $u(e,t){qe(t,!0);let n=Wi(t,`onchanged`,3,()=>{}),r=`001_BLUEPRINT`;function i(e){return e.normalize(`NFKD`).replace(/[̀-ͯ]/g,``).toUpperCase().replace(/[^A-Z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`FOLDER`}function a(e){return`/${(e.folder.path||e.folder.name).replace(/^\/+|\/+$/g,``)||e.folder.name}`}let o=P(`closed`),s=P(``),c=P(``),l=P(``),u=P(``),d=P(``),f=P(``),p=P(``),m=P(``),h=P(null),g=P(null),_=P(null),v=P(!1),y=P(null),b=P(null),x=P(!1),S=P(!1),C=P(!1);async function w(e){F(g,e,!0),F(h,null),F(v,!1),F(y,null);let t=i(e.folder.name);if(F(l,t,!0),F(c,e.folder.name,!0),F(u,``),F(d,``),F(f,``),F(m,a(e),!0),F(s,Y(`blueprint.adr.new_title`,{folder:e.folder.name}),!0),F(o,`form`),!(await fetch(`/api/blueprint/blueprint-folder`).then(e=>e.json())).exists){F(p,r),F(o,`folder-confirm`);return}await E(e,t)}async function T(e){return fetch(`/api/documents/${encodeURIComponent(e)}`).then(e=>e.json())}async function E(e,t){let n=await fetch(`/api/blueprint/blueprint-adr?category=${encodeURIComponent(t)}`).then(e=>e.json());if(n.found&&n.doc){F(h,n.doc.id,!0);let e=await T(n.doc.id);F(c,e.title,!0),F(d,e.content,!0),F(f,e.html,!0),F(s,e.title,!0),F(v,!1),F(o,`doc`)}else F(c,e.folder.name,!0),F(u,``),F(o,`form`)}function D(){F(o,`closed`),F(v,!1),F(h,null),F(g,null),F(m,``),F(C,!1)}async function ee(){if(V(h))try{await navigator.clipboard.writeText(decodeURIComponent(V(h))),F(C,!0),setTimeout(()=>F(C,!1),1800)}catch{}}async function O(){await fetch(`/api/blueprint/blueprint-folder`,{method:`POST`}),V(g)&&await E(V(g),i(V(g).folder.name))}async function k(e){if(!V(h))return;await fetch(`/api/documents/${encodeURIComponent(V(h))}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:V(c).trim()||V(g)?.folder.name||Y(`common.untitled`),category:V(l),folder:r,content:e})});let t=await T(V(h));F(s,t.title,!0),F(d,t.content,!0),F(f,t.html,!0)}async function te(e){e.preventDefault();let t={title:V(c).trim()||V(g)?.folder.name||Y(`common.untitled`),category:V(l),folder:r},i=await fetch(`/api/documents/`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json());F(h,i.id,!0);let a=await T(i.id);F(s,a.title,!0),F(d,a.content,!0),F(f,a.html,!0),F(v,!1),F(o,`doc`),n()()}async function ne(){F(S,!1),V(h)&&(await fetch(`/api/documents/${encodeURIComponent(V(h))}`,{method:`DELETE`}),D(),n()())}var re={open:w},ie=Qu(),A=R(ie),ae=e=>{var t=Xu(),n=L(t),i=L(n),a=L(i),g=L(a),w=L(g),T=e=>{var t=Hu(),n=R(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i,!0);j(i),B(e=>{G(r,e),G(a,V(m))},[()=>Y(`blueprint.adr.folder_title`)]),W(e,t)},E=e=>{var t=Ur();B(()=>G(t,V(s))),W(e,t)};K(w,e=>{V(m)?e(T):e(E,-1)}),j(g);var ne=z(g,2),re=e=>{var t=Uu(),n=L(t);j(t),B(e=>{J(t,`title`,e),gi(t,1,`bpadr-copy-btn ${V(C)?`copied`:``}`),gi(n,1,`fa-${V(C)?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`doc.copy_mcp_id`)]),H(`click`,t,ee),W(e,t)};K(ne,e=>{V(h)&&e(re)}),j(a);var ie=z(a,2),A=L(ie),ae=e=>{var t=Wu(),n=R(t),r=z(n,2);B((e,t)=>{J(n,`title`,e),J(r,`title`,t)},[()=>Y(`doc.edit`),()=>Y(`doc.delete`)]),H(`click`,n,()=>V(_).enterEdit()),H(`click`,r,()=>F(S,!0)),W(e,t)};K(A,e=>{V(o)===`doc`&&!V(v)&&e(ae)});var oe=z(A,2);j(ie),j(i);var se=z(i,2),ce=e=>{var t=qu(),n=R(t),r=L(n);{let e=N(()=>V(h)??``);Vi(Vu(r,{get docId(){return V(e)},get content(){return V(d)},get html(){return V(f)},onsave:k,get editing(){return V(v)},set editing(e){F(v,e,!0)},get saveMsg(){return V(y)},set saveMsg(e){F(y,e,!0)}}),e=>F(_,e,!0),()=>V(_))}j(n);var i=z(n,2),a=e=>{var t=Ku(),n=L(t),r=e=>{var t=Gu(),n=L(t,!0);j(t),B(()=>{gi(t,1,`text-xs ${V(y).cls??``}`),G(n,V(y).text)}),W(e,t)};K(n,e=>{V(y)&&e(r)});var i=z(n,2),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o);var c=z(o,2),l=L(c,!0);j(c),j(t),B((e,t,n)=>{G(a,e),G(s,t),G(l,n)},[()=>Y(`common.cancel`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),H(`click`,i,()=>V(_).cancelEdit()),H(`click`,o,()=>V(_).openSnippets()),H(`click`,c,()=>V(_).save()),W(e,t)};K(i,e=>{V(v)&&e(a)}),W(e,t)},le=e=>{var t=Ju(),n=R(t),i=L(n);Di(i);var a=z(i,2);Di(a),Oi(a,r);var s=z(a,2),d=L(s),f=L(d,!0);j(d);var p=z(d,2);Di(p),j(s);var m=z(s,2),g=L(m),_=L(g,!0);j(g);var v=z(g,2);yn(v),Vi(v,e=>F(b,e),()=>V(b)),j(m);var y=z(m,2),S=L(y),C=L(S,!0);j(S);var w=z(S,2),T=L(w,!0);j(w);var E=z(w,2),ee=L(E,!0);j(E),j(y),j(n),uu(z(n,2),{get open(){return V(x)},get editor(){return V(b)},mode:`insert`,get content(){return V(u)},onclose:()=>F(x,!1)}),B((e,t,n,r,a)=>{Oi(i,V(l)),G(f,e),G(_,t),G(C,n),G(T,r),G(ee,a)},[()=>Y(`blueprint.adr.title_label`),()=>Y(`blueprint.adr.content_label`),()=>Y(`common.cancel`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),Nr(`submit`,n,te),Ni(p,()=>V(c),e=>F(c,e)),Ni(v,()=>V(u),e=>F(u,e)),H(`click`,S,()=>{V(h)?F(o,`doc`):D()}),H(`click`,w,()=>F(x,!0)),W(e,t)},ue=e=>{var t=Yu(),n=L(t);ai(n,()=>Y(`blueprint.adr.folder_missing`,{name:V(p)}),!0),j(n);var r=z(n,2),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c,!0);j(c),j(a),j(t),B((e,t,n)=>{G(i,e),G(s,t),G(l,n)},[()=>Y(`blueprint.adr.folder_create_prompt`),()=>Y(`common.cancel`),()=>Y(`blueprint.adr.create_folder_btn`)]),H(`click`,o,D),H(`click`,c,O),W(e,t)};K(se,e=>{V(o)===`doc`?e(ce):V(o)===`form`?e(le,1):V(o)===`folder-confirm`&&e(ue,2)}),j(n),j(t),H(`click`,t,e=>{e.target===e.currentTarget&&D()}),H(`click`,oe,D),W(e,t)};K(A,e=>{V(o)!==`closed`&&e(ae)});var oe=z(A,2),se=e=>{var t=Zu(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var c=z(a,2),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d,!0);j(d),j(c),j(n),j(t),B((e,t,n)=>{G(i,e),G(o,V(s)),G(u,t),G(f,n)},[()=>Y(`doc.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`doc.confirm_delete_btn`)]),H(`click`,t,e=>{e.target===e.currentTarget&&F(S,!1)}),H(`click`,l,()=>F(S,!1)),H(`click`,d,ne),W(e,t)};return K(oe,e=>{V(S)&&e(se)}),W(e,ie),Je(re)}Pr([`click`]);var ed=U(`<span class="breadcrumb-sep">›</span>`),td=U(`<span class="breadcrumb-item current"> </span>`),nd=U(`<button class="breadcrumb-item" type="button"> </button>`),rd=U(`<!> <!>`,1),id=U(`<nav class="breadcrumb"></nav>`),ad=U(`<div class="app-shell"><!> <section class="workspace-shell"><!> <!></section></div> <!>`,1);function od(e,t){qe(t,!0),Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}});let n=P(I([])),r=P(null),i=P(null),a=P(null),o=P(null);function s(e){l(),V(i).loadPath(e,!0)}async function c(e){F(r,e.folder.path,!0),await xr(),await V(a).open(e.folder.path)}function l(){F(r,null)}async function u(e){await V(i).navigateToFolder(e)}var d=ad(),f=R(d),p=L(f);{let e=N(()=>Y(`blueprint.subtitle`));$a(p,{title:`Blueprint`,get subtitle(){return V(e)},children:(e,t)=>{var r=id();q(r,21,()=>V(n),Xr,(e,t,r)=>{var i=rd(),a=R(i),o=e=>{W(e,ed())};K(a,e=>{r>0&&e(o)});var c=z(a,2),l=e=>{var n=td(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),W(e,n)},u=e=>{var n=nd(),r=L(n,!0);j(n),B(()=>G(r,V(t).name)),H(`click`,n,()=>s(V(t).path)),W(e,n)};K(c,e=>{r===V(n).length-1?e(l):e(u,-1)}),W(e,i)}),j(r),W(e,r)},$$slots:{default:!0}})}var m=z(p,2),h=L(m);Vi(To(h,{get activeExplorerPath(){return V(r)},onbreadcrumbchange:e=>F(n,e,!0),onopenexplorer:c,onclosefilerexplorer:l,onopenAdr:e=>V(o).open(e)}),e=>F(i,e,!0),()=>V(i));var g=z(h,2),_=e=>{Vi(Go(e,{onclose:l,onnavigate:u}),e=>F(a,e,!0),()=>V(a))};K(g,e=>{V(r)!==null&&e(_)}),j(m),j(f),Vi($u(z(f,2),{onchanged:()=>V(i).loadPath(V(n).at(-1)?.path??``,!1)}),e=>F(o,e,!0),()=>V(o)),W(e,d),Je()}Pr([`click`]);var sd=164,cd=64,ld=132,ud=78,dd=6,fd=24,pd=96,md=540,hd=780,gd=1/2,_d=9999,vd=44,yd=255,bd=178,xd=Math.PI*.7,Sd=Math.PI*1.1,Cd=Math.PI*1.45,wd=Math.PI*1.75,Td=14,Ed=260,Dd=56,Od=32,kd=[`pointerdown`,`mousedown`,`click`,`dblclick`,`touchstart`,`wheel`],Ad=.35,jd=2.2,Md=.0018,Nd=4,Pd=46,Fd=4,Id=44,Ld=360,Rd=300,zd=44,Bd=48,Vd=7,Hd=875,Ud=450,Wd=600*1e3,Gd,Z,Kd,qd,Jd,Yd,Xd,Zd,Qd,$d,ef,tf,nf,rf,af,of,sf,cf,lf,uf,df,ff,pf,mf,hf,gf,_f,vf,yf=null,bf=null,xf=null,Q,$,Sf,Cf=!1;function wf(){return Gd=document.getElementById(`workspaceCanvas`),Z=Gd.getContext(`2d`),Kd=document.getElementById(`apiStatus`),qd=document.getElementById(`addButton`),Jd=document.getElementById(`fitButton`),Yd=document.getElementById(`testNodeButton`),Xd=document.getElementById(`loadModelsButton`),Zd=document.getElementById(`closePanelButton`),Qd=document.getElementById(`deleteNodeButton`),$d=document.getElementById(`renameConfirmOverlay`),ef=document.getElementById(`renameConfirmMessage`),tf=document.getElementById(`cancelRenameButton`),nf=document.getElementById(`confirmRenameButton`),rf=document.getElementById(`deleteConfirmOverlay`),af=document.getElementById(`deleteConfirmMessage`),of=document.getElementById(`cancelDeleteButton`),sf=document.getElementById(`confirmDeleteButton`),cf=document.getElementById(`agentRunOverlay`),lf=document.getElementById(`agentRunTitle`),uf=document.getElementById(`agentRunHint`),df=document.getElementById(`agentRunInputField`),ff=document.getElementById(`agentRunInput`),pf=document.getElementById(`agentRunResult`),mf=document.getElementById(`cancelAgentRunButton`),hf=document.getElementById(`executeAgentRunButton`),gf=document.getElementById(`fallbackPanelHost`),_f=document.getElementById(`configSurface`),vf=_f,yf=null,bf=null,xf=null,Q={name:document.getElementById(`nodeName`),kind:document.getElementById(`nodeKind`),providerIdField:document.getElementById(`providerIdField`),providerId:document.getElementById(`nodeProviderId`),copyProviderId:document.getElementById(`copyProviderIdButton`),endpoint:document.getElementById(`nodeEndpoint`),token:document.getElementById(`nodeToken`),model:document.getElementById(`nodeModel`),providerTypeChat:document.getElementById(`nodeProviderTypeChat`),providerTypeImage:document.getElementById(`nodeProviderTypeImage`),toolModeField:document.getElementById(`toolModeField`),toolModeTools:document.getElementById(`nodeToolModeTools`),toolModeChat:document.getElementById(`nodeToolModeChat`),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`),mcpInventoryStatus:document.getElementById(`mcpInventoryStatus`),mcpToolsList:document.getElementById(`mcpToolsList`),mcpPromptsList:document.getElementById(`mcpPromptsList`),agentSection:document.getElementById(`agentSection`),agentProvider:document.getElementById(`nodeAgentProvider`),systemPrompt:document.getElementById(`nodeSystemPrompt`),requiresUserInput:document.getElementById(`nodeRequiresUserInput`),userInputDescriptionField:document.getElementById(`agentUserInputDescriptionField`),userInputDescription:document.getElementById(`nodeUserInputDescription`),expectedOutputMarker:document.getElementById(`nodeExpectedOutputMarker`)},$={entities:Wf([Uf(`root`,`Living AI Documentation`,`system`,null),Uf(`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,panelDirty:!1,isHydrated:!1},Cf=!!Gd.requestPaint&&typeof Z.drawElementImage==`function`,Cf?($.apiMode=`html-in-canvas`,Kd.textContent=`HTML-in-Canvas active`,Kd.classList.add(`is-live`),Gd.onpaint=Jp):(gf.appendChild(_f),Kd.textContent=`DOM fallback`,Kd.classList.add(`is-fallback`)),Sf=new ResizeObserver(([e])=>{let t=e.devicePixelContentBoxSize?.[0],n=e.contentRect.width,r=e.contentRect.height;$.dpr=t?t.inlineSize/n:window.devicePixelRatio||1,Gd.width=t?t.inlineSize:Math.floor(n*$.dpr),Gd.height=t?t.blockSize:Math.floor(r*$.dpr),Qf(),im(!1,!$.cameraX&&!$.cameraY),qp()}),Sf.observe(Gd,{box:`device-pixel-content-box`}),Tf(),Ef(),qd.addEventListener(`click`,()=>{Yf()}),Jd.addEventListener(`click`,()=>{Qf(),im(!0,!0),jf(),qp()}),Gd.addEventListener(`pointerdown`,e=>{if(e.target!==Gd)return;let t=Dm(e),n=mm(t),r=[...$.entities].reverse().find(e=>bm(e,n));if(r){r.id!==`root`&&up(r.id);return}$.isPanning=!0,$.didPan=!1,$.panStartX=t.x,$.panStartY=t.y,$.panStartCameraX=$.cameraX,$.panStartCameraY=$.cameraY,Gd.classList.add(`is-panning`),Gd.setPointerCapture?.(e.pointerId)}),Gd.addEventListener(`pointermove`,e=>{if(!$.isPanning)return;let t=Dm(e),n=t.x-$.panStartX,r=t.y-$.panStartY;Math.hypot(n,r)>Nd&&($.didPan=!0),$.cameraX=$.panStartCameraX+n,$.cameraY=$.panStartCameraY+r,qp()}),Gd.addEventListener(`pointerup`,e=>{$.isPanning&&($.isPanning=!1,Gd.classList.remove(`is-panning`),Gd.releasePointerCapture?.(e.pointerId),!$.didPan&&$.selectedId?up(null):$.didPan&&jf())}),Gd.addEventListener(`pointercancel`,e=>{$.isPanning=!1,Gd.classList.remove(`is-panning`),Gd.releasePointerCapture?.(e.pointerId)}),Gd.addEventListener(`wheel`,e=>{e.target===Gd&&(e.preventDefault(),pm(Dm(e),Math.exp(-e.deltaY*Md)),jf())},{passive:!1}),vf.addEventListener(`submit`,e=>{e.preventDefault(),vp(),$.lastSaveAt=new Date,Qf(),Nf(!0),qp()}),vf.addEventListener(`input`,()=>{vp(),Qf(),$.panelDirty=!0,qp()}),Zd.addEventListener(`click`,()=>{up(null)}),Qd.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation();let t=$.selectedId,n=t?Up(t):null;!n||Wp(t)||dp(n)}),of.addEventListener(`click`,fp),rf.addEventListener(`click`,e=>{e.target===rf&&fp()}),sf.addEventListener(`click`,()=>{$.pendingDeleteId&&pp($.pendingDeleteId),fp()}),Yd.addEventListener(`click`,()=>{if(Hp()?.kind===`agent`){wp();return}Lp()}),Xd.addEventListener(`click`,()=>{Ip()}),Q.copyProviderId.addEventListener(`click`,()=>{zp()}),Q.name.addEventListener(`blur`,()=>{if(Hp()?.kind!==`agent`)return;let e=Q.name.value.trim();if(!e||!yf||!bf||e===yf)return;let t=Kf(e);t!==bf&&(ef.textContent=`Renommer le dossier "${bf}" en "${t}" ?`,$d.hidden=!1,tf.focus())}),tf.addEventListener(`click`,()=>{$d.hidden=!0;let e=Hp();e&&yf&&(e.label=yf,Q.name.value=yf,Qf(),qp())}),nf.addEventListener(`click`,()=>{$d.hidden=!0;let e=Hp();if(!e||!bf)return;e.config.workspaceFolder=bf,Q.workspaceFolder.value=bf;let t=Q.name.value.trim();t&&(yf=t),bf=Kf(t),jf()}),Q.model.addEventListener(`change`,()=>{Yd.disabled=!Q.model.value;let e=Hp();e&&(e.config.model=Q.model.value)}),Q.agentProvider.addEventListener(`change`,()=>{bp(Q.agentProvider.value)}),mf.addEventListener(`click`,()=>{Tp()}),hf.addEventListener(`click`,()=>{Ep()}),cf.addEventListener(`click`,e=>{e.target===cf&&Tp()}),Of(),()=>{Mf(),Sf.disconnect(),$?.saveTimerId&&clearTimeout($.saveTimerId)}}function Tf(){for(let e of kd)_f.addEventListener(e,Df),gf.addEventListener(e,Df)}function Ef(){for(let e of kd)rf.addEventListener(e,Df),$d.addEventListener(e,Df),cf.addEventListener(e,Df)}function Df(e){e.stopPropagation()}async function Of(){let e=await Fa();e?.entities?.length&&($.entities=kf(e.entities),$.cameraX=Hf(e.camera?.x,$.cameraX),$.cameraY=Hf(e.camera?.y,$.cameraY),$.zoom=hm(Hf(e.camera?.zoom,$.zoom),Ad,jd),$.lastSaveAt=e.updatedAt?new Date(e.updatedAt):null),$.isHydrated=!0,Qf(),e?.entities?.length||im(!1,!0),_p(),qp()}function kf(e){let t=e.map(Af).filter(e=>!!e),n=t.some(e=>e.id===`root`),r=t.some(e=>e.id===`mcp`),i=[...n?[]:[Uf(`root`,`Living AI Documentation`,`system`,null)],...t,...r?[]:[Uf(`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:{...Uf(e.id,e.label,t,n).config,...e.config}}})}function Af(e){if(!Lf(e))return null;let t=Rf(e.id),n=Rf(e.label),r=zf(e.kind);if(!t||!n||!r)return null;let i=e.parentId===null?null:Rf(e.parentId),a=Lf(e.config)?e.config:{};return{id:t,label:n,kind:r,parentId:i,x:Hf(e.x,0),y:Hf(e.y,0),angle:Hf(e.angle,0),config:{endpoint:Rf(a.endpoint)||Gf(t,r),token:Rf(a.token),model:Rf(a.model),providerType:Vf(a.providerType),toolMode:Bf(a.toolMode),timeout:Hf(a.timeout,180),description:Rf(a.description)||Jf(r),workspaceFolder:Rf(a.workspaceFolder)||(r===`agent`?Kf(n):``),systemPrompt:Rf(a.systemPrompt),requiresUserInput:a.requiresUserInput===!0,userInputDescription:Rf(a.userInputDescription),expectedOutputMarker:Rf(a.expectedOutputMarker)}}}function jf(){$.isHydrated&&($.saveTimerId&&clearTimeout($.saveTimerId),$.saveTimerId=window.setTimeout(()=>{$.saveTimerId=null,Nf(!1)},Ud))}function Mf(){$.panelDirty&&Nf(!1)}async function Nf(e=!1){if(!$.isHydrated)return;$.panelDirty=!1,$.saveTimerId&&(clearTimeout($.saveTimerId),$.saveTimerId=null);let t=$.selectedId&&document.activeElement===Q.token&&Np(Q.token.value)?{entityId:$.selectedId,value:Q.token.value,selectionStart:Q.token.selectionStart,selectionEnd:Q.token.selectionEnd}:null,n=await Ia(If());if(n){if($.entities=kf(n.entities),t&&$.selectedId===t.entityId){let e=Hp();e?.kind===`llm`&&(e.config.token=t.value)}$.lastSaveAt=new Date(n.updatedAt),Hp()&&!vf.contains(document.activeElement)&&_p(),t&&$.selectedId===t.entityId&&(Q.token.value=t.value,Q.token.setSelectionRange(t.selectionStart,t.selectionEnd)),e&&Ff(`Workspace saved`)}else e&&Ff(`Save failed`)}function Pf(e,t){return Ma(e,t)}function Ff(e,t=`success`,n,r){return Na(e,t,n,r)}function If(){return{version:1,updatedAt:new Date().toISOString(),entities:$.entities.map(e=>{let t={...e.config,token:Pp(e.config.token)};return{id:e.id,label:e.label,kind:e.kind,parentId:e.parentId,x:e.x,y:e.y,angle:e.angle,config:t}}),camera:{x:$.cameraX,y:$.cameraY,zoom:$.zoom}}}function Lf(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Rf(e){return typeof e==`string`?e:``}function zf(e){return e===`system`||e===`llm`||e===`agent`||e===`mcp`?e:null}function Bf(e){return e===`chat`?`chat`:`tools`}function Vf(e){return e===`image`?`image`:`chat`}function Hf(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function Uf(e,t,n,r){return{id:e,label:t,kind:n,parentId:r,x:0,y:0,angle:0,config:{endpoint:Gf(e,n),token:``,model:``,providerType:`chat`,toolMode:`tools`,timeout:180,description:Jf(n),workspaceFolder:n===`agent`?Kf(t):``,systemPrompt:``,requiresUserInput:!1,userInputDescription:``,expectedOutputMarker:``}}}function Wf(e){return e.map(e=>({...e,config:{...e.config}}))}function Gf(e,t){return t===`llm`?`http://localhost:11434`:t===`mcp`?`http://localhost:4321/mcp`:``}function Kf(e){return`AI/WORKSPACE/${qf(e)}`}function qf(e){return e.normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`llm_provider`}function Jf(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 Yf(){let e=Hp(),t=e?.kind===`llm`?e:Up(e?.parentId);if(t?.kind===`llm`&&t.config.providerType!==`image`){Zf(t.id);return}Xf()}function Xf(){let e=!!$.selectedId,t=Gp(`root`).filter(e=>e.kind===`llm`).length+1,n=Uf(`provider-${Date.now().toString(36)}`,`LLM Provider ${t}`,`llm`,`root`);$.entities=[...$.entities,n],$.selectedId=n.id,Qf(),am(e,!0,!0),_p(),jf(),qp()}function Zf(e){let t=!!$.selectedId,n=Gp(e).filter(e=>e.kind===`agent`).length+1,r=Uf(`agent-${Date.now().toString(36)}`,`Agent ${n}`,`agent`,e);$.entities=[...$.entities,r],$.selectedId=r.id,Qf(),am(t,!0,!0),_p(),jf(),qp()}function Qf(){let e=Up(`root`);e.x=0,e.y=0,e.angle=0,$f(e)}function $f(e){let t=Gp(e.id),n=ap(t,ld,yd,{spread:Math.PI*2,includeSubtree:!1}),r=new Map(t.map(e=>[e.id,rp(e,n)]));for(let n=0;n<=Vd;n+=1)if(ep(e,t,r),tp(),!np(t,r))return;ep(e,t,r),tp()}function ep(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)||yd;t.angle=a,t.x=e.x+Math.cos(a)*o,t.y=e.y+Math.sin(a)*o})}function tp(){for(let e of $.entities.filter(e=>e.kind===`llm`))ip(e)}function np(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];Em(Cm(a),Cm(o),zd)&&(t.set(a.id,Math.min(Hd,t.get(a.id)+Bd)),t.set(o.id,Math.min(Hd,t.get(o.id)+Bd)),n=!0)}return n}function rp(e,t){if(e.kind!==`llm`)return t;let n=Gp(e.id).length;if(n<=Fd)return t;let r=(n-Fd)*Id,i=Math.max(0,cp(e)-Rd)*.65;return t+Math.min(Ld,Math.max(r,i))}function ip(e){let t=Gp(e.id);if(!t.length)return;let n=Math.atan2(e.y,e.x),r=op(t.length),i=ap(t,ud,bd,{spread:r,includeSubtree:!1});t.forEach((a,o)=>{let s=sp(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 ap(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?cp(e):lp(e))),s=t+o+Pd;if(e.length===1)return Math.max(n,s);let c=o*2+Pd,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 op(e){return e<=1?0:e<=2?xd:e<=4?Sd:e<=7?Cd:wd}function sp(e,t,n,r){return r<=1||t===0?e:e-t/2+n/(r-1)*t}function cp(e){if(e.kind!==`llm`)return lp(e);let t=Gp(e.id);return t.length?ap(t,ud,bd,{spread:op(t.length),includeSubtree:!1})+Math.max(...t.map(e=>lp(e))):ud}function lp(e){if(e.kind===`system`)return ld;if(e.kind===`llm`)return ud;let{width:t,height:n}=Sm(e);return Math.hypot(t/2,n/2)}function up(e){e!==$.selectedId&&Mf();let t=!!$.selectedId;$.selectedId=e;let n=e?Up(e):null;yf=n?.kind===`agent`?n.label:null,bf=n?.kind===`agent`?n.config.workspaceFolder||Kf(n.label):null,Qf(),am(t,!!e,!0),_p(),qp()}function dp(e){let t=Kp(e.id),n=Gp(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.`;$.pendingDeleteId=e.id,af.textContent=`You are about to delete "${e.label}".${r} This action cannot be undone.`,rf.hidden=!1,sf.focus()}function fp(){$.pendingDeleteId=null,rf.hidden=!0}function pp(e){let t=Up(e);if(!t||Wp(e))return;let n=t.parentId||`root`,r=!!$.selectedId,i=new Set([e,...Kp(e)]);$.entities=$.entities.filter(e=>!i.has(e.id)),$.selectedId=Up(n)?n:null,Qf(),am(r,!!$.selectedId,!0),_p(),jf(),qp()}var mp=0;async function hp(e){let t=++mp,n=e.config.endpoint.trim(),r=Q.mcpInventoryStatus;if(Q.mcpToolsList.replaceChildren(),Q.mcpPromptsList.replaceChildren(),!n){r.hidden=!1,r.textContent=`Set an endpoint to load the MCP tools and prompts.`;return}r.hidden=!1,r.textContent=`Loading MCP tools and prompts…`;let i=await Ra({endpoint:n});if(t===mp){if(!i.ok){r.hidden=!1,r.textContent=i.error?`Failed to load MCP inventory: ${i.error}`:`Failed to load MCP inventory.`;return}r.hidden=!0,gp(Q.mcpToolsList,i.tools??[],`No tools exposed.`),gp(Q.mcpPromptsList,i.prompts??[],`No prompts exposed.`)}}function gp(e,t,n){if(e.replaceChildren(),t.length===0){let t=document.createElement(`li`);t.className=`inventory-empty`,t.textContent=n,e.appendChild(t);return}for(let n of t){let t=document.createElement(`li`);t.textContent=n,e.appendChild(t)}}function _p(){let e=Hp(),t=!!e;if(_f.hidden=!t,gf.hidden=!t||Cf,!e){qd.title=`Add LLM provider`,Yd.textContent=`Test`,Yd.hidden=!0,Yd.disabled=!0;return}Q.name.value=e.label,Q.kind.value=e.kind,Q.providerId.value=e.kind===`llm`?e.id:``,Q.endpoint.value=e.config.endpoint,Q.token.value=e.config.token,Cp(e.config.model),Q.providerTypeChat.checked=e.config.providerType!==`image`,Q.providerTypeImage.checked=e.config.providerType===`image`,Q.toolModeTools.checked=e.config.toolMode!==`chat`,Q.toolModeChat.checked=e.config.toolMode===`chat`,Q.workspaceFolder.value=e.config.workspaceFolder,Q.workspaceField.hidden=e.kind!==`agent`,Q.timeout.value=String(e.config.timeout),Q.description.value=e.config.description,Q.typeBadge.textContent=Vp(e),Q.kind.disabled=!0,Q.llmFields.hidden=e.kind===`mcp`||e.kind===`agent`,Sp(e),Q.mcpInventory.hidden=e.kind!==`mcp`,e.kind===`mcp`?hp(e):mp+=1,Q.agentSection.hidden=e.kind!==`agent`,e.kind===`agent`&&yp(e),Q.systemPrompt.value=e.config.systemPrompt,Q.requiresUserInput.checked=e.config.requiresUserInput,xp(),Q.userInputDescription.value=e.config.userInputDescription,Q.expectedOutputMarker.value=e.config.expectedOutputMarker,Qd.hidden=Wp(e.id),Yd.textContent=`Test`,Yd.hidden=e.kind!==`llm`&&e.kind!==`agent`,Yd.disabled=e.kind===`llm`?!e.config.model:e.kind!==`agent`;let n=e.kind===`llm`?e:Up(e.parentId);qd.title=n?.kind===`llm`&&n.config.providerType!==`image`?`Add agent`:`Add LLM provider`}function vp(){let e=Hp();if(e&&(e.label=Q.name.value.trim()||`Untitled node`,e.kind=Q.kind.value,e.config.endpoint=Q.endpoint.value,e.config.token=Q.token.value,e.config.model=Q.model.value,e.config.providerType=Q.providerTypeImage.checked?`image`:`chat`,e.config.toolMode=Q.toolModeChat.checked?`chat`:`tools`,e.config.timeout=Number(Q.timeout.value||30),e.config.description=Q.description.value,e.config.systemPrompt=Q.systemPrompt.value,e.config.requiresUserInput=Q.requiresUserInput.checked,e.config.userInputDescription=Q.userInputDescription.value,e.config.expectedOutputMarker=Q.expectedOutputMarker.value,xp(),Sp(e),Q.typeBadge.textContent=Vp(e),e.kind===`llm`))for(let t of $.entities)t.parentId===e.id&&t.kind===`agent`&&(t.config.model=e.config.model,t.config.timeout=e.config.timeout)}function yp(e){let t=Q.agentProvider;t.innerHTML=``;let n=$.entities.filter(e=>e.kind===`llm`&&e.config.providerType!==`image`);for(let e of n){let n=document.createElement(`option`);n.value=e.id,n.textContent=e.label,t.appendChild(n)}t.value=e.parentId??``}function bp(e){let t=Hp();if(t?.kind!==`agent`)return;let n=Up(e);n?.kind===`llm`&&t.parentId!==e&&(t.parentId=e,t.config.model=n.config.model,t.config.timeout=n.config.timeout,Qf(),jf(),qp())}function xp(){let e=Hp()?.kind===`agent`&&Q.requiresUserInput.checked;Q.userInputDescriptionField.hidden=!e,Q.userInputDescription.required=e}function Sp(e){let t=e.kind===`llm`,n=e.config.providerType===`image`;Q.providerIdField.hidden=!t,Q.toolModeField.hidden=!t||n,Xd.title=n?`Load image models from endpoint`:`Load chat models from endpoint`,Yd.title=n?`Test image provider configuration`:`Test chat provider configuration`}function Cp(e){let t=Array.from(Q.model.options).map(e=>e.value);if(e&&!t.includes(e)){Q.model.innerHTML=``;let t=document.createElement(`option`);t.value=e,t.textContent=e,Q.model.appendChild(t)}Q.model.value=e||(t[0]??``)}function wp(){let e=Hp();if(e?.kind!==`agent`)return;vp();let t=Up(e.parentId??``);if(t?.kind!==`llm`){Ff(`No parent LLM found for this agent.`,`error`);return}if(!t.config.model){Ff(`Parent LLM has no model selected.`,`error`);return}if(!e.config.systemPrompt.trim()){Ff(`Write a system prompt first.`,`error`);return}if(e.config.requiresUserInput&&!e.config.userInputDescription.trim()){Ff(`Describe the required user input first.`,`error`);return}xf=e.id,lf.textContent=`Test ${e.label}`,uf.textContent=e.config.requiresUserInput?e.config.userInputDescription:`Run this agent with its configured system prompt.`,df.hidden=!e.config.requiresUserInput,ff.required=e.config.requiresUserInput,ff.value=``,pf.hidden=!0,pf.textContent=``,hf.disabled=!1,hf.textContent=`Run`,cf.hidden=!1,e.config.requiresUserInput?window.setTimeout(()=>ff.focus(),0):window.setTimeout(()=>hf.focus(),0)}function Tp(){cf.hidden=!0,xf=null}async function Ep(){if(ff.required&&!ff.value.trim()){ff.reportValidity();return}let e=xf?Up(xf):null;if(e?.kind!==`agent`){jp(`error`,`The selected agent is no longer available.`);return}let t=Up(e.parentId??``);if(t?.kind!==`llm`){jp(`error`,`No parent LLM found for this agent.`);return}hf.disabled=!0,hf.textContent=`Running…`;let n=Pf(`Running agent…`);Op();let r=$.entities.find(e=>e.kind===`mcp`),i=!1,a=await za({providerId:t.id,endpoint:t.config.endpoint,model:t.config.model,systemPrompt:e.config.systemPrompt,userInput:ff.value.trim()||void 0,timeout:t.config.timeout,mcpEndpoint:t.config.toolMode===`chat`?void 0:r?.config.endpoint||void 0,toolMode:t.config.toolMode,expectedOutputMarker:e.config.expectedOutputMarker||void 0},e=>{e.type===`error`&&(i=!0),e.type!==`final`&&e.type!==`error`&&Pf(Dp(e),n),kp(e)});hf.disabled=!1,hf.textContent=`Run`,a.ok&&a.content?(Ap(a.content),Ff(`Agent responded. Result saved in AI/WORKSPACE.`,`success`,Wd,n)):(i||kp({type:`error`,message:a.error??`Agent failed.`}),pf.dataset.state=`error`,Ff(a.error??`Agent failed.`,`error`,Wd,n))}function Dp(e){return e.type===`tool_call`&&e.toolName?`Agent tool call: ${e.toolName}`:e.type===`tool_result`&&e.toolName?`Agent tool result: ${e.toolName}`:`Agent: ${e.message}`}function Op(){pf.hidden=!1,pf.dataset.state=`loading`,pf.textContent=``,kp({type:`status`,message:`Preparing agent request`})}function kp(e){pf.hidden=!1,e.type===`error`&&(pf.dataset.state=`error`);let t=document.createElement(`div`);t.className=`agent-run-event agent-run-event-${e.type.replace(`_`,`-`)}`;let n=document.createElement(`span`);n.className=`agent-run-event-dot`,n.setAttribute(`aria-hidden`,`true`);let r=document.createElement(`div`);r.className=`agent-run-event-body`;let i=document.createElement(`p`);i.className=`agent-run-event-title`,i.textContent=e.message,r.appendChild(i);let a=[];if(e.turn&&a.push(`Turn ${e.turn}`),e.toolName&&a.push(e.toolName),e.detail&&a.push(e.detail),a.length){let e=document.createElement(`p`);e.className=`agent-run-event-meta`,e.textContent=a.join(` · `),r.appendChild(e)}t.append(n,r),pf.appendChild(t),pf.scrollTop=pf.scrollHeight}function Ap(e){pf.dataset.state=`success`;let t=document.createElement(`section`);t.className=`agent-run-final`;let n=document.createElement(`h3`);n.textContent=`Final response`;let r=document.createElement(`pre`);r.textContent=e,t.append(n,r),pf.appendChild(t),pf.scrollTop=pf.scrollHeight}function jp(e,t){pf.hidden=!1,pf.dataset.state=e,pf.textContent=t}var Mp=/^(?:env:[A-Za-z_][A-Za-z0-9_]*|\$\{[A-Za-z_][A-Za-z0-9_]*\})$/;function Np(e){let t=e.trim();return t!==``&&!Mp.test(t)}function Pp(e){let t=e.trim();return Np(t)?``:t}var Fp=`API token must reference an environment variable, e.g. env:LLM_API_KEY`;async function Ip(){let e=Hp();if(e?.kind!==`llm`)return;vp();let t=e.config.endpoint;if(!t){Ff(`Set an endpoint first.`);return}if(Np(e.config.token)){Ff(Fp);return}Xd.classList.add(`loading`),Xd.disabled=!0,Q.model.disabled=!0;let n=await La({endpoint:t,token:e.config.token,providerType:e.config.providerType});if(Xd.classList.remove(`loading`),Xd.disabled=!1,Q.model.disabled=!1,!n.ok||!n.models?.length){Ff(n.error??`No models found.`);return}let r=Q.model.value;Q.model.innerHTML=``;for(let e of n.models){let t=document.createElement(`option`);t.value=e,t.textContent=e,Q.model.appendChild(t)}Q.model.value=n.models.includes(r)?r:n.models[0],e.config.model=Q.model.value,Yd.disabled=!Q.model.value,Ff(`${n.models.length} model${n.models.length===1?``:`s`} loaded.`),qp()}async function Lp(){let e=Hp();if(e?.kind!==`llm`)return;if(vp(),Np(e.config.token)){Ff(Fp);return}Yd.disabled=!0,Pf(`Testing ${e.config.model}…`),qp();let t=e.config.providerType===`image`?await Rp(e):await Va({endpoint:e.config.endpoint,token:e.config.token,model:e.config.model,timeout:e.config.timeout});Yd.disabled=!1,t.ok?Ff(t.detail??`Connection OK`,`success`):Ff(t.error||`Connection failed (${t.status||`no status`})`,`error`),qp()}async function Rp(e){let t=await La({endpoint:e.config.endpoint,token:e.config.token,providerType:`image`});if(!t.ok)return{ok:!1,error:t.error??`Image provider test failed`};let n=e.config.model.trim();return n&&t.models?.length&&!t.models.includes(n)?{ok:!1,error:`Image models loaded, but "${n}" was not found.`}:{ok:!0,detail:`${t.models?.length??0} image model${t.models?.length===1?``:`s`} available`}}async function zp(){let e=Hp();if(e?.kind===`llm`)try{await navigator.clipboard.writeText(e.id),Ff(`Provider ID copied`,`success`)}catch{Q.providerId.select(),Ff(`Provider ID selected`,`success`)}}function Bp(e){return{system:`System`,llm:`LLM provider`,agent:`Agent`,mcp:`MCP`}[e]||`Node`}function Vp(e){return e.kind===`llm`&&e.config.providerType===`image`?`Image provider`:Bp(e.kind)}function Hp(){return $.selectedId?Up($.selectedId):null}function Up(e){return $.entities.find(t=>t.id===e)}function Wp(e){return e===`root`||e===`mcp`}function Gp(e){return $.entities.filter(t=>t.parentId===e)}function Kp(e){let t=[];for(let n of Gp(e))t.push(n.id,...Kp(n.id));return t}function qp(){Cf?Gd.requestPaint():requestAnimationFrame(Jp)}function Jp(){let e=Gd.width/$.dpr,t=Gd.height/$.dpr;Z.reset(),Z.setTransform($.dpr,0,0,$.dpr,0,0),Z.clearRect(0,0,e,t),Z.save(),Z.translate($.cameraX,$.cameraY),Z.scale($.zoom,$.zoom),Yp(e,t),Xp(),Z.restore(),Cf&&rm(e,t)}function Yp(e,t){Z.save(),Z.lineWidth=1/$.zoom;let n=mm({x:0,y:0}),r=mm({x:e,y:t}),i=Math.floor(n.x/fd)*fd,a=Math.ceil(r.x/fd)*fd,o=Math.floor(n.y/fd)*fd,s=Math.ceil(r.y/fd)*fd;for(let e=i;e<=a;e+=fd)Z.strokeStyle=e%pd===0?`#d7dce5`:`#edf0f4`,jm(e,o,e,s);for(let e=o;e<=s;e+=fd)Z.strokeStyle=e%pd===0?`#d7dce5`:`#edf0f4`,jm(i,e,a,e);Z.restore()}function Xp(){Zp();for(let e of $.entities)Qp(e)}function Zp(){Z.save(),Z.lineWidth=2/$.zoom;for(let e of $.entities){let t=Up(e.parentId);if(!t)continue;let n=Math.atan2(e.y-t.y,e.x-t.x),r=gm(t,n),i=gm(e,n+Math.PI);Z.strokeStyle=tm(e).connection,Z.beginPath(),Z.moveTo(r.x,r.y),Z.lineTo(i.x,i.y),Z.stroke()}Z.restore()}function Qp(e){if(e.kind===`system`||e.kind===`llm`){$p(e);return}em(e)}function $p(e){let t=e.id===$.selectedId,n=tm(e),r=e.kind===`system`?ld:ud,i=Gp(e.id),a=Math.max(dd,i.length),o=Om(e.x,e.y,r,a);Z.save(),Z.beginPath(),o.forEach((e,t)=>{t===0?Z.moveTo(e.x,e.y):Z.lineTo(e.x,e.y)}),Z.closePath(),Z.fillStyle=t?n.selectedFill:n.fill,Z.strokeStyle=t?n.selectedStroke:n.stroke,Z.lineWidth=(t?3:2)/$.zoom,Z.shadowColor=n.shadow,Z.shadowBlur=e.kind===`system`?20:14,Z.shadowOffsetY=e.kind===`system`?8:5,Z.fill(),Z.shadowColor=`transparent`,Z.stroke(),Z.fillStyle=t?n.selectedText:n.text,Z.textAlign=`center`,Z.textBaseline=`middle`,Z.font=e.kind===`system`?`800 21px Inter, system-ui, sans-serif`:`800 16px Inter, system-ui, sans-serif`,Am(e.label,e.x,e.y-8,r*1.32,e.kind===`system`?26:20),nm(e,t,r),Z.restore()}function em(e){let t=e.id===$.selectedId,n=tm(e),r=e.kind===`mcp`?116:sd,i=e.kind===`mcp`?58:cd;Z.save(),km(e.x-r/2,e.y-i/2,r,i,20),Z.fillStyle=t?n.selectedFill:n.fill,Z.strokeStyle=t?n.selectedStroke:n.stroke,Z.lineWidth=(t?3:2)/$.zoom,Z.shadowColor=n.shadow,Z.shadowBlur=10,Z.shadowOffsetY=4,Z.fill(),Z.shadowColor=`transparent`,Z.stroke(),Z.fillStyle=t?n.selectedText:n.text,Z.font=`760 15px Inter, system-ui, sans-serif`,Z.textAlign=`center`,Z.textBaseline=`middle`,Am(e.label,e.x,e.y,r*.78,18),nm(e,t,Math.max(r,i)/2),Z.restore()}function tm(e){if(e.kind===`system`)return{fill:`#111827`,stroke:`#111827`,selectedFill:`#111827`,selectedStroke:`#111827`,text:`#ffffff`,selectedText:`#ffffff`,shadow:`rgb(17 24 39 / 18%)`,connection:`#475569`};if(e.kind===`llm`&&e.config.providerType===`image`)return{fill:`#facc15`,stroke:`#ca8a04`,selectedFill:`#eab308`,selectedStroke:`#a16207`,text:`#111827`,selectedText:`#111827`,shadow:`rgb(250 204 21 / 22%)`,connection:`#ca8a04`};if(e.kind===`llm`&&e.config.toolMode===`chat`)return{fill:`#f472b6`,stroke:`#db2777`,selectedFill:`#ec4899`,selectedStroke:`#be185d`,text:`#500724`,selectedText:`#500724`,shadow:`rgb(244 114 182 / 20%)`,connection:`#db2777`};if(e.kind===`llm`)return{fill:`#f97316`,stroke:`#ea580c`,selectedFill:`#fb923c`,selectedStroke:`#c2410c`,text:`#431407`,selectedText:`#431407`,shadow:`rgb(249 115 22 / 20%)`,connection:`#ea580c`};if(e.kind===`mcp`)return{fill:`#64748b`,stroke:`#475569`,selectedFill:`#475569`,selectedStroke:`#334155`,text:`#ffffff`,selectedText:`#ffffff`,shadow:`rgb(100 116 139 / 18%)`,connection:`#64748b`};if(e.kind===`agent`){let t=Up(e.parentId);return t?.kind===`llm`&&t.config.toolMode===`chat`?{fill:`#f9a8d4`,stroke:`#f472b6`,selectedFill:`#ec4899`,selectedStroke:`#db2777`,text:`#111827`,selectedText:`#111827`,shadow:`rgb(244 114 182 / 18%)`,connection:`#f472b6`}:{fill:`#fdba74`,stroke:`#f97316`,selectedFill:`#fb923c`,selectedStroke:`#ea580c`,text:`#111827`,selectedText:`#111827`,shadow:`rgb(249 115 22 / 18%)`,connection:`#f97316`}}return{fill:`#ffffff`,stroke:`#0f172a`,selectedFill:`#111827`,selectedStroke:`#0f172a`,text:`#111827`,selectedText:`#ffffff`,shadow:`rgb(15 23 42 / 8%)`,connection:`#111827`}}function nm(e,t,n){t&&(Z.beginPath(),Z.arc(e.x+n*.62,e.y-n*.66,5,0,Math.PI*2),Z.fillStyle=`#34d399`,Z.fill())}function rm(e,t){if(!Hp())return;let n=xm(e),r=Math.min(_d,t-118),i=e-n-24,a=Math.max(24,(t-r)/2);try{let e=Z.drawElementImage(_f,i,a,n,r);_f.style.transform=e.toString()}catch{Kd.textContent=`Waiting for HTML snapshot`}}function im(e,t){let n=Gd.clientWidth,r=Gd.clientHeight,i=Hp()?xm(n)+vd:0,a=Math.max(360,n-i),o=um(),s=dm(o,a,r),c=t?s:Math.min($.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||!$.cameraX||!$.cameraY){fm(),$.cameraX=d,$.cameraY=f,$.zoom=c,$.panelShiftX=i;return}$.panelShiftX=i,lm(d,f,c)}function am(e,t,n){if(t){if(e){let e=om();$.panelShiftX+=Math.max(0,-e),cm(e,n)}else{let e=Hp();if(e){let t=xm(Gd.clientWidth)+vd,n=(Gd.clientWidth-t)/2-e.x*$.zoom,r=n-$.cameraX;$.panelShiftX=-r,lm(n,$.cameraY,$.zoom)}}return}if(!e)return;let r=$.panelShiftX;$.panelShiftX=0,cm(r,n)}function om(){let e=Hp();if(!e)return 0;let t=Gd.clientWidth-xm(Gd.clientWidth)-24-Od,n=sm(e);return n.right<=t?0:t-n.right}function sm(e){let t=wm(e);return{left:t.left*$.zoom+$.cameraX,top:t.top*$.zoom+$.cameraY,right:t.right*$.zoom+$.cameraX,bottom:t.bottom*$.zoom+$.cameraY}}function cm(e,t){if(fm(),!e)return;let n=$.cameraX+e;if(!t){$.cameraX=n;return}lm(n,$.cameraY,$.zoom)}function lm(e,t,n){fm();let r=$.cameraX,i=$.cameraY,a=$.zoom,o=performance.now();function s(c){let l=Math.min(1,(c-o)/Ed),u=1-(1-l)**3;$.cameraX=r+(e-r)*u,$.cameraY=i+(t-i)*u,$.zoom=a+(n-a)*u,Qf(),qp(),l<1?$.viewAnimationId=requestAnimationFrame(s):$.viewAnimationId=null}$.viewAnimationId=requestAnimationFrame(s)}function um(){return $.entities.reduce((e,t)=>{let n=lp(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 dm(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-Dd*2),o=Math.max(1,n-Dd*2);return hm(Math.min(1,a/r,o/i),Ad,1)}function fm(){$.viewAnimationId&&(cancelAnimationFrame($.viewAnimationId),$.viewAnimationId=null)}function pm(e,t){fm();let n=mm(e);$.zoom=hm($.zoom*t,Ad,jd),$.cameraX=e.x-n.x*$.zoom,$.cameraY=e.y-n.y*$.zoom,qp()}function mm(e){return{x:(e.x-$.cameraX)/$.zoom,y:(e.y-$.cameraY)/$.zoom}}function hm(e,t,n){return Math.min(n,Math.max(t,e))}function gm(e,t){if(e.kind!==`system`&&e.kind!==`llm`)return ym(e,t);let n=e.kind===`system`?ld:ud,r=Gp(e.id);return _m(e,n,Math.max(dd,r.length),t)||{x:e.x+Math.cos(t)*n,y:e.y+Math.sin(t)*n}}function _m(e,t,n,r){let i={x:Math.cos(r),y:Math.sin(r)},a=Om(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=vm(i,s);if(Math.abs(l)<1e-4)continue;let u=vm(c,s)/l,d=vm(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 vm(e,t){return e.x*t.y-e.y*t.x}function ym(e,t){let n=Sm(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 bm(e,t){if(e.kind===`system`||e.kind===`llm`){let n=e.kind===`system`?ld:ud;return Math.hypot(t.x-e.x,t.y-e.y)<=n+Td}let{width:n,height:r}=Sm(e);return Math.abs(t.x-e.x)<=n/2+Td&&Math.abs(t.y-e.y)<=r/2+Td}function xm(e){return Math.min(hd,Math.max(md,Math.floor(e*gd)))}function Sm(e){return e.kind===`mcp`?{width:116,height:58}:{width:sd,height:cd}}function Cm(e){return[e,...Kp(e.id).map(Up)].filter(Boolean).map(wm).reduce(Tm)}function wm(e){if(e.kind===`system`||e.kind===`llm`){let t=e.kind===`system`?ld:ud;return{left:e.x-t,top:e.y-t,right:e.x+t,bottom:e.y+t}}let{width:t,height:n}=Sm(e);return{left:e.x-t/2,top:e.y-n/2,right:e.x+t/2,bottom:e.y+n/2}}function Tm(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 Em(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 Dm(e){let t=Gd.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}}function Om(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 km(e,t,n,r,i){let a=e+n,o=t+r;Z.beginPath(),Z.moveTo(e+i,t),Z.lineTo(a-i,t),Z.quadraticCurveTo(a,t,a,t+i),Z.lineTo(a,o-i),Z.quadraticCurveTo(a,o,a-i,o),Z.lineTo(e+i,o),Z.quadraticCurveTo(e,o,e,o-i),Z.lineTo(e,t+i),Z.quadraticCurveTo(e,t,e+i,t),Z.closePath()}function Am(e,t,n,r,i){let a=e.split(/\s+/),o=[],s=``;for(let e of a){let t=s?`${s} ${e}`:e;Z.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)=>{Z.fillText(e,t,c+n*i)})}function jm(e,t,n,r){Z.beginPath(),Z.moveTo(e,t),Z.lineTo(n,r),Z.stroke()}var Mm=U(`<div class="status-row"><span id="apiStatus"></span></div>`),Nm=U('<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"><div id="providerIdField" class="field wide"><span>Provider ID</span> <div class="model-select-wrap"><input id="nodeProviderId" name="nodeProviderId" type="text" readonly=""/> <button id="copyProviderIdButton" class="icon-button" type="button" title="Copy provider ID">⧉</button></div> <small class="field-note">Technical node id. Use it when a tool or agent workflow needs to reference this provider, for example as <code>imageProviderId</code> with <code>generate_image</code>.</small></div> <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="text" autocomplete="off" spellcheck="false" placeholder="env:LLM_API_KEY"/> <small class="field-note">Reference an environment variable only — <code>env:VAR_NAME</code> (or <code>&#123;VAR_NAME&#125;</code>). The secret is read from the server environment at request time; literal tokens are not stored (the workspace file is tracked by git).</small></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> <fieldset class="field wide tool-mode-field"><legend>Provider type</legend> <label class="radio-card"><input id="nodeProviderTypeChat" name="nodeProviderType" type="radio" value="chat"/> <span><strong>Chat completion</strong> <small>Uses OpenAI-compatible <code>/chat/completions</code>.</small></span></label> <label class="radio-card"><input id="nodeProviderTypeImage" name="nodeProviderType" type="radio" value="image"/> <span><strong>Image generation</strong> <small>Used by <code>generate_image</code> with the provider id above.</small></span></label></fieldset> <fieldset id="toolModeField" class="field wide tool-mode-field"><legend>Tool calling</legend> <label class="radio-card"><input id="nodeToolModeTools" name="nodeToolMode" type="radio" value="tools"/> <span><strong>Allow MCP tools</strong> <small>Agents can send OpenAI-compatible <code>tools</code> payloads.</small></span></label> <label class="radio-card"><input id="nodeToolModeChat" name="nodeToolMode" type="radio" value="chat"/> <span><strong>Chat only</strong> <small>Agents never send tools, even when an MCP endpoint exists.</small></span></label></fieldset> <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="agentProviderField" class="field wide"><span>LLM provider</span> <select id="nodeAgentProvider" name="nodeAgentProvider"></select> <small class="field-note">Move this agent to another LLM provider. It inherits the target provider\'s model and timeout.</small></label> <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> <p id="mcpInventoryStatus" class="inventory-status" hidden=""></p> <div class="inventory-grid"><article><h2>Tools</h2> <ul id="mcpToolsList"></ul></article> <article><h2>Prompts</h2> <ul id="mcpPromptsList"></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>');function Pm(e,t){qe(t,!0),Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}return wf()});var n=Nm(),r=L(n);$a(r,{title:`Living AI Documentation`,subtitle:`Graph-native configuration workspace`,children:(e,t)=>{var n=Mm(),r=L(n);gi(r,1,`status-pill `),r.textContent=`Detecting canvas API`,j(n),W(e,n)},$$slots:{default:!0}});var i=z(r,2),a=z(L(i),2),o=L(a),s=z(L(o),4),c=L(s),l=z(L(c),2),u=L(l);u.value=u.__value=`system`;var d=z(u);d.value=d.__value=`llm`;var f=z(d);f.value=f.__value=`agent`;var p=z(f);p.value=p.__value=`mcp`,j(l),j(c);var m=z(c,2),h=z(L(m),6),g=z(L(h),2),_=L(g),v=L(_);v.value=v.__value=``,j(_),Ie(2),j(g),j(h),Ie(6),j(m),Ie(2),j(s),Ie(6),j(o),j(a),Ie(2),j(i),Ie(6),j(n),W(e,n),Je()}var Fm=U(`<p class="files-msg svelte-4q2lov"> </p>`),Im=U(`<p class="files-msg files-msg--error svelte-4q2lov"> </p>`),Lm=U(`<p class="files-msg files-msg--empty svelte-4q2lov"> </p>`),Rm=U(`<option> </option>`),zm=U(`<div class="files-toolbar svelte-4q2lov"><label for="files-folder-filter" class="svelte-4q2lov"> </label> <select id="files-folder-filter" data-testid="files-folder-filter" class="svelte-4q2lov"><option> </option><!></select></div>`),Bm=U(`<span class="files-folder svelte-4q2lov"> </span> ·`,1),Vm=U(`<p class="files-row-error svelte-4q2lov"> </p>`),Hm=U(`<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>`),Um=U(`<ul class="files-list svelte-4q2lov"></ul>`),Wm=U(`<!> <!>`,1),Gm=U(`<!> <div class="app-shell"><!> <div class="files-page svelte-4q2lov"><!></div></div>`,1);function Km(e,t){qe(t,!0);let n=P(null),r=P(I([])),i=P(I([])),a=P(``),o=P(!0),s=P(``),c=P(I({})),l=P(I({})),u=P(I({})),d=N(()=>V(a)?V(r).filter(e=>e.folder===V(a)||e.folder.startsWith(V(a)+`/`)):V(r));function f(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 p(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 m(){F(o,!0),F(s,``);try{let e=await fetch(`/api/files`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();F(r,Array.isArray(t.files)?t.files:[],!0),F(i,Array.isArray(t.folders)?t.folders:[],!0),V(a)&&!V(i).includes(V(a))&&F(a,``)}catch(e){F(s,Y(`files.error_load`)+(e instanceof Error?e.message:String(e)))}finally{F(o,!1)}}function h(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function g(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 V(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){F(c,{...V(c),[e.filename]:Y(`files.error_replace`)+`${(r.size/1024/1024).toFixed(1)} MB (max 19 MB)`},!0);return}F(l,{...V(l),[e.filename]:!0},!0),F(c,{...V(c),[e.filename]:``},!0);try{let t=await h(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 m()}catch(t){F(c,{...V(c),[e.filename]:Y(`files.error_replace`)+(t instanceof Error?t.message:String(t))},!0)}finally{F(l,{...V(l),[e.filename]:!1},!0)}}}),t.click()}async function _(e){if(await V(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})){F(u,{...V(u),[e.filename]:!0},!0),F(c,{...V(c),[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 m()}catch(t){F(c,{...V(c),[e.filename]:Y(`files.error_delete`)+(t instanceof Error?t.message:String(t))},!0)}finally{F(u,{...V(u),[e.filename]:!1},!0)}}}Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}await m()});var v=Gm(),y=R(v);Vi(tu(y,{}),e=>F(n,e,!0),()=>V(n));var b=z(y,2),x=L(b);{let e=N(()=>Y(`files.title`));$a(x,{get title(){return V(e)},subtitle:``})}var S=z(x,2),C=L(S),w=e=>{var t=Fm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},T=e=>{var t=Im(),n=L(t,!0);j(t),B(()=>G(n,V(s))),W(e,t)},E=e=>{var t=Lm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`files.empty`)]),W(e,t)},D=e=>{var t=Wm(),n=R(t),r=e=>{var t=zm(),n=L(t),r=L(n,!0);j(n);var o=z(n,2),s=L(o),c=L(s,!0);j(s),s.value=s.__value=``,q(z(s),16,()=>V(i),e=>e,(e,t)=>{var n=Rm(),r=L(n,!0);j(n);var i={};B(()=>{G(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),W(e,n)}),j(o);var l;bi(o),j(t),B((e,t)=>{G(r,e),G(c,t),l!==(l=V(a))&&(o.value=(o.__value=V(a))??``,yi(o,V(a)))},[()=>Y(`files.filter_label`),()=>Y(`files.filter_all`)]),H(`change`,o,e=>F(a,e.target.value,!0)),W(e,t)};K(n,e=>{V(i).length>0&&e(r)});var o=z(n,2),s=e=>{var t=Lm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`files.empty_filter`)]),W(e,t)},m=e=>{var t=Um();q(t,21,()=>V(d),Xr,(e,t)=>{var n=Hm(),r=z(L(n),2),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o),d=e=>{var n=Bm(),r=R(n),i=L(r,!0);j(r),Ie(),B(()=>G(i,V(t).folder)),W(e,n)};K(s,e=>{V(t).folder&&e(d)});var m=z(s),h=e=>{var n=Ur();B(e=>G(n,`${e??``} ·`),[()=>p(V(t).uploadedAt)]),W(e,n)};K(m,e=>{V(t).uploadedAt&&e(h)});var v=z(m,1,!0);j(o);var y=z(o,2),b=e=>{var n=Vm(),r=L(n,!0);j(n),B(()=>G(r,V(c)[V(t).filename])),W(e,n)};K(y,e=>{V(c)[V(t).filename]&&e(b)}),j(r);var x=z(r,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2),T=L(w,!0);j(w),j(x),j(n),B((e,n,r)=>{J(i,`href`,V(t).url),G(a,V(t).displayName||V(t).filename),G(v,e),S.disabled=V(l)[V(t).filename]||V(u)[V(t).filename],G(C,n),w.disabled=V(l)[V(t).filename]||V(u)[V(t).filename],G(T,r)},[()=>f(V(t).size||0),()=>V(l)[V(t).filename]?Y(`files.replacing`):Y(`files.replace`),()=>V(u)[V(t).filename]?Y(`files.deleting`):Y(`files.delete`)]),H(`click`,S,()=>g(V(t))),H(`click`,w,()=>_(V(t))),W(e,n)}),j(t),W(e,t)};K(o,e=>{V(d).length===0?e(s):e(m,-1)}),W(e,t)};K(C,e=>{V(o)?e(w):V(s)?e(T,1):V(r).length===0?e(E,2):e(D,-1)}),j(S),j(b),W(e,v),Je()}Pr([`change`,`click`]);var qm=U(`<p class="browser-msg"> </p>`),Jm=U(`<p class="browser-msg browser-msg--error"> </p>`),Ym=U(`<button class="browser-row browser-row--dir"><span class="browser-row-name"> </span></button>`),Xm=U(`<span class="badge-added"> </span>`),Zm=U(`<button class="link-btn"> </button>`),Qm=U(`<div class="browser-row browser-row--file"><span class="browser-row-name"> </span> <!></div>`),$m=U(`<!> <!>`,1),eh=U(`<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>`),th=U(`<p class="empty-msg svelte-e5jhdq"> </p>`),nh=U(`<button class="remove-btn"> </button>`),rh=U(`<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>`),ih=U(`<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 ah(e,t){qe(t,!0);let n=Wi(t,`items`,27,()=>I([])),r=P(!1),i=P(``),a=P(``),o=P(I([])),s=P(I([])),c=P(!1),l=P(!1),u=N(()=>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){F(c,!0),F(l,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(i,t.current,!0),F(a,t.parent||``,!0),F(o,t.dirs||[],!0),F(s,t.files||[],!0)}catch{F(l,!0)}finally{F(c,!1)}}async function g(){F(r,!V(r)),V(r)&&!V(i)&&await h((await fetch(`/api/context/orientation`).then(e=>e.json()).catch(()=>({}))).sourceRoot||``)}async function _(e){await t.onAdd(e),V(r)&&V(i)&&await h(V(i))}var v=ih(),y=L(v),b=L(y),x=L(b,!0);j(b);var S=z(b,2),C=L(S),w=L(C);j(C);var T=z(C,2),E=L(T,!0);j(T),j(S),j(y);var D=z(y,2),ee=e=>{var t=eh(),n=L(t),r=L(n),d=L(r,!0);j(r);var f=z(r,2),p=L(f,!0);j(f),j(n);var m=z(n,2),g=L(m),v=e=>{var t=qm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},y=e=>{var t=Jm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.cannot_read_dir`)]),W(e,t)},b=e=>{var t=qm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.empty_dir`)]),W(e,t)},x=e=>{var t=$m(),n=R(t);q(n,17,()=>V(o),Xr,(e,t)=>{var n=Ym(),r=L(n),i=L(r);j(r),j(n),B(()=>G(i,`📁 ${V(t).name??``}`)),H(`click`,n,()=>h(V(t).path)),W(e,n)}),q(z(n,2),17,()=>V(s),Xr,(e,t)=>{var n=Qm(),r=L(n),i=L(r);j(r);var a=z(r,2),o=e=>{var t=Xm(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.added`)]),W(e,t)},s=N(()=>V(u).has(V(t).name)),c=e=>{var n=Zm(),r=L(n,!0);j(n),B(e=>G(r,e),[()=>Y(`context.add_file_action`)]),H(`click`,n,()=>_(V(t).path)),W(e,n)};K(a,e=>{V(s)?e(o):e(c,-1)}),j(n),B(()=>G(i,`📄 ${V(t).name??``}`)),W(e,n)}),W(e,t)};K(g,e=>{V(c)?e(v):V(l)?e(y,1):!V(o).length&&!V(s).length?e(b,2):e(x,-1)}),j(m),j(t),B(e=>{r.disabled=!V(a),G(d,e),G(p,V(i))},[()=>Y(`common.up`)]),H(`click`,r,()=>V(a)&&h(V(a))),W(e,t)};K(D,e=>{V(r)&&e(ee)});var O=z(D,2),k=L(O),te=e=>{var t=th(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.no_instructions`)]),W(e,t)},ne=e=>{var r=Wr();q(R(r),17,n,Xr,(e,n)=>{var r=rh(),i=L(r),a=L(i),o=L(a,!0);j(a);var s=z(a,2),c=L(s),l=z(c),u=e=>{var t=Ur();B(e=>G(t,`· ${e??``} KB`),[()=>Math.round(V(n).size/1024)]),W(e,t)};K(l,e=>{V(n).size!==null&&e(u)}),j(s),j(i);var h=z(i,2),g=L(h),_=L(g,!0);j(g);var v=z(g,2),y=e=>{var r=nh(),i=L(r,!0);j(r),B(e=>G(i,e),[()=>Y(`common.remove`)]),H(`click`,r,()=>t.onRemove(d(V(n).path))),W(e,r)};K(v,e=>{V(n).exists&&e(y)}),j(h),j(r),B((e,t,r,i)=>{J(a,`href`,e),G(o,V(n).path),G(c,`${t??``} · ${r??``} `),gi(g,1,ui(V(n).exists?`status-ok`:`status-missing`),`svelte-e5jhdq`),G(_,i)},[()=>f(V(n).path),()=>p(V(n).root),()=>m(V(n).type),()=>V(n).exists?Y(`context.exists`):Y(`context.missing`)]),W(e,r)}),W(e,r)};K(k,e=>{n().length?e(ne,-1):e(te)}),j(O),j(v),B((e,t,r)=>{G(x,e),G(w,`${t??``}/${n().length??``}`),G(E,r)},[()=>Y(`context.instructions_title`),()=>n().filter(e=>e.exists).length,()=>V(r)?Y(`context.hide_instruction_browser`):Y(`context.add_instruction_file`)]),H(`click`,T,g),W(e,v),Je()}Pr([`click`]);var oh=U(`<span class="rules-folder svelte-1r3tey2"> </span>`),sh=U(`<p class="empty-msg svelte-1r3tey2"> </p>`),ch=U(`<span class="tag svelte-1r3tey2"> </span>`),lh=U(`<div class="rule-tags svelte-1r3tey2"></div>`),uh=U(`<div class="rule-applies svelte-1r3tey2"> </div>`),dh=U(`<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>`),fh=U(`<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 ph(e,t){qe(t,!0);let n=Wi(t,`rules`,19,()=>[]),r=Wi(t,`rulesFolder`,3,``),i=P(``),a=P(`guideline`),o=P(``),s=P(``),c=P(``),l=P(``),u=P(!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(V(i).trim()){F(u,!0);try{await t.onAdd({title:V(i).trim(),severity:V(a),description:V(o).trim(),tags:p(V(s)),appliesTo:p(V(c)),body:V(l).trim()}),F(i,``),F(o,``),F(s,``),F(c,``),F(l,``)}finally{F(u,!1)}}}var h=fh(),g=L(h),_=L(g),v=L(_),y=L(v,!0);j(v);var b=z(v,2),x=e=>{var t=oh(),n=L(t,!0);j(t),B(()=>G(n,r())),W(e,t)};K(b,e=>{r()&&e(x)}),j(_);var S=z(_,2),C=L(S),w=e=>{var t=sh(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.no_rules`)]),W(e,t)},T=e=>{var t=Wr();q(R(t),17,n,Xr,(e,t)=>{var n=dh(),r=L(n),i=L(r),a=L(i),o=L(a),s=L(o,!0);j(o),j(a);var c=z(a,2),l=L(c,!0);j(c),j(i);var u=z(i,2),p=L(u,!0);j(u),j(r);var m=z(r,2),h=L(m,!0);j(m);var g=z(m,2),_=e=>{var n=lh();q(n,21,()=>V(t).tags,Xr,(e,t)=>{var n=ch(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(n),W(e,n)};K(g,e=>{V(t).tags?.length&&e(_)});var v=z(g,2),y=e=>{var n=uh(),r=L(n,!0);j(n),B(e=>G(r,e),[()=>V(t).appliesTo.join(`, `)]),W(e,n)};K(v,e=>{V(t).appliesTo?.length&&e(y)}),j(n),B((e,n,r)=>{J(o,`href`,e),G(s,V(t).title),J(c,`href`,n),G(l,V(t).path),G(p,r),G(h,V(t).description)},[()=>d(V(t).path),()=>d(V(t).path),()=>f(V(t).severity)]),W(e,n)}),W(e,t)};K(C,e=>{n().length?e(T,-1):e(w)}),j(S),j(g);var E=z(g,2),D=L(E),ee=L(D,!0);j(D);var O=z(D,2),k=L(O),te=L(k,!0);j(k);var ne=z(k,2);Di(ne),j(O);var re=z(O,2),ie=L(re),A=L(ie,!0);j(ie);var ae=z(ie,2),oe=L(ae),se=L(oe,!0);j(oe),oe.value=oe.__value=`guideline`;var ce=z(oe),le=L(ce,!0);j(ce),ce.value=ce.__value=`warning`;var ue=z(ce),de=L(ue,!0);j(ue),ue.value=ue.__value=`required`,j(ae),j(re);var fe=z(re,2),pe=L(fe),me=L(pe,!0);j(pe);var he=z(pe,2);Di(he),j(fe);var ge=z(fe,2),_e=L(ge),ve=L(_e,!0);j(_e);var ye=z(_e,2);Di(ye),j(ge);var be=z(ge,2),xe=L(be),Se=L(xe,!0);j(xe);var Ce=z(xe,2);Di(Ce),j(be);var we=z(be,2),Te=L(we),Ee=L(Te,!0);j(Te);var De=z(Te,2);yn(De),j(we);var Oe=z(we,2),ke=L(Oe,!0);j(Oe),j(E),j(h),B((e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)=>{G(y,e),G(ee,t),G(te,n),J(ne,`placeholder`,r),G(A,i),G(se,a),G(le,o),G(de,s),G(me,c),J(he,`placeholder`,l),G(ve,u),J(ye,`placeholder`,d),G(Se,f),J(Ce,`placeholder`,p),G(Ee,m),J(De,`placeholder`,h),Oe.disabled=g,G(ke,_)},[()=>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`),()=>V(u)||!V(i).trim(),()=>Y(`context.add_rule_button`)]),Ni(ne,()=>V(i),e=>F(i,e)),xi(ae,()=>V(a),e=>F(a,e)),Ni(he,()=>V(o),e=>F(o,e)),Ni(ye,()=>V(s),e=>F(s,e)),Ni(Ce,()=>V(c),e=>F(c,e)),Ni(De,()=>V(l),e=>F(l,e)),H(`click`,Oe,m),W(e,h),Je()}Pr([`click`]);var mh=U(`<p class="empty-msg svelte-1ui2b6s"> </p>`),hh=U(`<p class="mcp-desc svelte-1ui2b6s"> </p>`),gh=U(`<div class="mcp-schema-wrap svelte-1ui2b6s"><h4 class="mcp-schema-title svelte-1ui2b6s"> </h4> <pre class="mcp-schema-pre svelte-1ui2b6s"> </pre></div>`),_h=U(`<div class="mcp-result svelte-1ui2b6s" data-testid="mcp-result"></div>`),vh=U(`<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>`),yh=U(`<p class="mcp-arg-desc svelte-1ui2b6s"> </p>`),bh=U(`<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>`),xh=U(`<div class="mcp-schema-wrap svelte-1ui2b6s"><h4 class="mcp-schema-title svelte-1ui2b6s"> </h4> <ul class="mcp-args-list svelte-1ui2b6s"></ul></div>`),Sh=U(`<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 Ch(e,t){qe(t,!0);let n=P(`-`),r=P(!1),i=P(`-`),a=P(`-`),o=P(I([])),s=P(I([])),c=P(!1),l=P(I(new Map)),u=P(I(new Map));function d(e,t){let n=V(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=V(e===`tool`?l:u).get(t)??{argsJson:`{}`,running:!1,error:``,resultHtml:``};e===`tool`?F(l,new Map(V(l)).set(t,{...r,...n}),!0):F(u,new Map(V(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);F(l,new Map(V(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);F(u,new Map(V(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(`
90
92
 
91
93
  `):Array.isArray(t.content)?t.content.map(e=>e&&e.type===`text`&&typeof e.text==`string`?b(e.text):y(e)).join(`
92
94
 
@@ -94,26 +96,26 @@ Texte`};case`link`:return{text:et(`snip-link-text`),textFallback:Y(`snippet.link
94
96
  `)}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(`
95
97
 
96
98
  `)||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">${k(r)}</pre>`:``});return}let i=e===`tool`?V(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">${k(Y(`context.mcp_saved_to`))}</div>
97
- <a href="${k(s)}" target="_blank" rel="noopener" class="mcp-saved-link">📄 ${k(a)}</a>`})}catch(n){f(e,t,{running:!1,error:n.message||String(n),resultHtml:``})}}async function O(e){let n=V(e===`tool`?o:s);if(!n.length)return;F(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{F(c,!1)}}function k(e){return String(e??``).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}async function te(){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:[];F(n,Y(`context.mcp_available`),!0),F(r,!0),F(i,t.transport||`-`,!0),F(a,t.endpoint||`POST /mcp`,!0),F(o,c,!0),F(s,l,!0),c.forEach(m),l.forEach(h)}catch{F(n,Y(`context.mcp_unavailable`),!0),F(r,!1),F(i,`-`),F(a,`/mcp`),F(o,[],!0),F(s,[],!0)}}var ne={load:te},re=bh(),ie=L(re),A=L(ie),ae=L(A,!0);j(A);var oe=z(A,2),se=L(oe,!0);j(oe),j(ie);var ce=z(ie,2),le=L(ce,!0);j(ce);var ue=z(ce,2),de=L(ue),fe=L(de),pe=L(fe,!0);j(fe);var me=z(fe,2),he=L(me,!0);j(me),j(de);var ge=z(de,2),_e=L(ge),ve=L(_e,!0);j(_e);var ye=z(_e,2),be=L(ye,!0);j(ye),j(ge);var xe=z(ge,2),Se=L(xe),Ce=L(Se,!0);j(Se);var we=z(Se,2),Te=L(we,!0);j(we),j(xe),j(ue);var Ee=z(ue,2),De=L(Ee),Oe=L(De),ke=L(Oe,!0);j(Oe);var Ae=z(Oe,2),je=L(Ae),Me=L(je,!0);j(je);var Ne=z(je,2),Pe=L(Ne,!0);j(Ne),j(Ae),j(De);var Fe=z(De,2),Ie=L(Fe),Le=e=>{var t=fh(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.mcp_no_tools`)]),W(e,t)},Re=e=>{var t=Wr();q(R(t),17,()=>V(o),Xr,(e,t)=>{let n=N(()=>V(l).get(V(t).name)??{argsJson:`{}`,running:!1,error:``,resultHtml:``});var r=gh(),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=e=>{var n=ph(),r=L(n,!0);j(n),B(()=>G(r,V(t).description)),W(e,n)};K(o,e=>{V(t).description&&e(s)});var c=z(o,2),u=e=>{var n=mh(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n),B((e,t)=>{G(i,e),G(o,t)},[()=>Y(`context.mcp_input_schema`),()=>JSON.stringify(V(t).inputSchema,null,2)]),W(e,n)};K(c,e=>{V(t).inputSchema&&e(u)});var d=z(c,2),p=L(d),m=L(p,!0);j(p);var h=z(p,2);yn(h);var g=z(h,2),_=L(g),v=L(_,!0);j(_);var y=z(_,2),b=L(y,!0);j(y),j(g);var x=z(g,2),S=e=>{var t=hh();ai(t,()=>V(n).resultHtml,!0),j(t),W(e,t)};K(x,e=>{V(n).resultHtml&&e(S)}),j(d),j(r),B((e,r)=>{G(a,V(t).name),G(m,e),Oi(h,V(n).argsJson),G(v,V(n).error),y.disabled=V(n).running,G(b,r)},[()=>Y(`context.mcp_request_json`),()=>Y(`context.mcp_run_tool`)]),H(`input`,h,e=>f(`tool`,V(t).name,{argsJson:e.target.value})),H(`click`,y,()=>ee(`tool`,V(t).name)),W(e,r)}),W(e,t)};K(Ie,e=>{V(o).length?e(Re,-1):e(Le)}),j(Fe),j(Ee);var ze=z(Ee,2),Be=L(ze),Ve=L(Be),He=L(Ve,!0);j(Ve);var Ue=z(Ve,2),We=L(Ue),Ge=L(We,!0);j(We);var Ke=z(We,2),Ye=L(Ke,!0);j(Ke),j(Ue),j(Be);var Xe=z(Be,2),Ze=L(Xe),Qe=e=>{var t=fh(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.mcp_no_prompts`)]),W(e,t)},$e=e=>{var t=Wr();q(R(t),17,()=>V(s),Xr,(e,t)=>{let n=N(()=>V(u).get(V(t).name)??{argsJson:`{}`,running:!1,error:``,resultHtml:``});var r=gh(),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=e=>{var n=ph(),r=L(n,!0);j(n),B(()=>G(r,V(t).description)),W(e,n)};K(o,e=>{V(t).description&&e(s)});var c=z(o,2),l=e=>{var n=yh(),r=L(n),i=L(r,!0);j(r);var a=z(r,2);q(a,21,()=>V(t).arguments,Xr,(e,t)=>{var n=vh(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var c=z(r,2),l=e=>{var n=_h(),r=L(n,!0);j(n),B(()=>G(r,V(t).description)),W(e,n)};K(c,e=>{V(t).description&&e(l)}),j(n),B(e=>{G(a,V(t).name),G(s,e)},[()=>V(t).required?Y(`context.mcp_required`):Y(`context.mcp_optional`)]),W(e,n)}),j(a),j(n),B(e=>G(i,e),[()=>Y(`context.mcp_arguments`)]),W(e,n)};K(c,e=>{V(t).arguments?.length&&e(l)});var d=z(c,2),p=L(d),m=L(p,!0);j(p);var h=z(p,2);yn(h);var g=z(h,2),_=L(g),v=L(_,!0);j(_);var y=z(_,2),b=L(y,!0);j(y),j(g);var x=z(g,2),S=e=>{var t=hh();ai(t,()=>V(n).resultHtml,!0),j(t),W(e,t)};K(x,e=>{V(n).resultHtml&&e(S)}),j(d),j(r),B((e,r)=>{G(a,V(t).name),G(m,e),Oi(h,V(n).argsJson),G(v,V(n).error),y.disabled=V(n).running,G(b,r)},[()=>Y(`context.mcp_request_json`),()=>Y(`context.mcp_get_prompt`)]),H(`input`,h,e=>f(`prompt`,V(t).name,{argsJson:e.target.value})),H(`click`,y,()=>ee(`prompt`,V(t).name)),W(e,r)}),W(e,t)};return K(Ze,e=>{V(s).length?e($e,-1):e(Qe)}),j(Xe),j(ze),j(re),B((e,t,l,u,d,f,p,m,h,g)=>{G(ae,e),G(se,t),G(le,l),G(pe,u),gi(me,1,ui(V(r)?`mcp-info-value ok`:`mcp-info-value err`),`svelte-1ui2b6s`),G(he,V(n)),G(ve,d),G(be,V(i)),G(Ce,f),G(Te,V(a)),G(ke,p),G(Me,V(o).length),Ne.disabled=V(c)||!V(o).length,G(Pe,m),G(He,h),G(Ge,V(s).length),Ke.disabled=V(c)||!V(s).length,G(Ye,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`)]),H(`click`,oe,te),H(`click`,Ne,()=>O(`tool`)),H(`click`,Ke,()=>O(`prompt`)),W(e,re),Je(ne)}Pr([`click`,`input`]);var Sh=U(`<p class="status-text svelte-rpj1e5"> </p>`),Ch=U(`<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 wh(e,t){qe(t,!0);let n=P(``),r=P(I([])),i=P(I([])),a=P(``),o=P(null),s=P(null),c=P(null);function l(e){F(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();F(o,t,!0),F(r,t.instructions||[],!0),F(i,t.rules||[],!0),F(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 V(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()}Gi(async()=>{try{let e=await fetch(`/api/config`);await pa((e.ok?await e.json():{}).language||`en`)}catch{await pa(`en`)}document.title=Y(`context.title`),await u().catch(e=>l(e.message)),await V(c).load().catch(()=>{})});var m=Ch(),h=R(m),g=L(h);$a(g,{get navigate(){return t.navigate}});var _=z(g,2),v=L(_),y=L(v),b=L(y),x=L(b,!0);j(b);var S=z(b,2),C=L(S,!0);j(S);var w=z(S,2),T=e=>{var t=Sh(),r=L(t,!0);j(t),B(()=>G(r,V(n))),W(e,t)};K(w,e=>{V(n)&&e(T)}),j(y);var E=z(y,2);rh(E,{onAdd:d,onRemove:f,get items(){return V(r)},set items(e){F(r,e,!0)}});var D=z(E,2);dh(D,{get rules(){return V(i)},get rulesFolder(){return V(a)},onAdd:p}),Vi(xh(z(D,2),{onStatus:l}),e=>F(c,e,!0),()=>V(c)),j(v),j(_),j(h),Vi(eu(z(h,2),{}),e=>F(s,e,!0),()=>V(s)),B((e,t)=>{G(x,e),G(C,t)},[()=>Y(`context.orientation_title`),()=>Y(`context.orientation_intro`)]),W(e,m),Je()}async function Th(){return fetch(`/api/config`).then(e=>e.json())}async function Eh(){return fetch(`/api/documents`).then(e=>e.json())}async function Dh(e){return fetch(`/api/browse/alldirs?path=${encodeURIComponent(e)}`).then(e=>e.json())}async function Oh(e){let t=await fetch(`/api/documents/${e}`);if(!t.ok)throw Error(t.statusText);return t.json()}async function kh(){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 Ah(){try{return await fetch(`/api/documents/file-counts`).then(e=>e.json())}catch{return{}}}async function jh(){try{return await fetch(`/api/documents/statuses`).then(e=>e.json())}catch{return{}}}async function Mh(e){return fetch(`/api/documents/search?q=${encodeURIComponent(e)}`).then(e=>e.json())}function Nh(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 Ph(e){let t=Object.values(e.categories).reduce((e,t)=>e+t.length,0);for(let n of Object.values(e.children))t+=Ph(n);return t}function Fh(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+=Fh(r,t);return n}function Ih(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+=Ih(r,t);return n}function Lh(e){return e.replace(/^\d+_/,``).replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Rh(e){return Object.keys(e.children).sort((e,t)=>e.localeCompare(t))}function zh(e){return Object.keys(e.categories).filter(e=>e!==`General`).sort((e,t)=>e.localeCompare(t))}function Bh(e){return Object.values(e.categories).flat().sort((e,t)=>(e.filename||``).localeCompare(t.filename||``))}var Vh=U(`<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>`),Hh=U(`<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>`),Uh=U(`<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>`),Wh=U(`<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>`),Gh=U(`<div class="text-xs text-gray-400 dark:text-gray-500 mt-0.5"> </div>`),Kh=U(`<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>`),qh=U(`<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>`),Jh=U(`<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>`),Yh=U(`<div class="pl-2"></div>`),Xh=U(`<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>`),Zh=U(`<div class="pl-3"><!></div>`),Qh=U(`<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>`),$h=U(`<!> <!>`,1),eg=U(`<!> <!> <!>`,1);function tg(e,t){qe(t,!0);let n=(e,n=f)=>{let r=N(()=>X.annotationCounts[n().id]||0),i=N(()=>X.fileAttachmentCounts[n().id]||0),a=N(()=>c(n()));var o=Kh(),l=L(o),u=L(l),d=L(u,!0);j(u);var p=z(u,2),m=L(p),h=e=>{var t=Vh();B(e=>J(t,`title`,e),[()=>Y(`sidebar.status_to_validate`)]),W(e,t)},g=e=>{var t=Hh();B(e=>J(t,`title`,e),[()=>Y(`sidebar.status_superseeded`)]),W(e,t)};K(m,e=>{V(a)===`V`?e(h):V(a)===`S`&&e(g,1)});var _=z(m,2),v=e=>{var t=Uh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(r))},[()=>s(V(r),`sidebar.annotation_badge`)]),W(e,t)};K(_,e=>{V(r)>0&&!X.markerHidden&&e(v)});var y=z(_,2),b=e=>{var t=Wh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(i))},[()=>s(V(i),`sidebar.file_attachment_badge`)]),W(e,t)};K(y,e=>{V(i)>0&&!X.hideAttachments&&e(b)}),j(p),j(l);var x=z(l,2),S=e=>{var t=Gh(),r=L(t,!0);j(t),B(()=>G(r,n().formattedDate)),W(e,t)};K(x,e=>{n().formattedDate&&e(S)}),j(o),B(()=>{J(o,`id`,`item-${n().id??``}`),gi(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===X.currentDocId?`active`:``}`),G(d,n().title)}),H(`click`,o,()=>t.onopen(n().id)),W(e,o)},r=(e,r=f)=>{let i=N(()=>a(r())),o=N(()=>X.expandedCategories.has(V(i))),c=N(()=>t.node.categories[r()]),l=N(()=>V(c).reduce((e,t)=>e+ +(X.annotationCounts[t.id]>0),0)),u=N(()=>V(c).reduce((e,t)=>e+ +(X.fileAttachmentCounts[t.id]>0),0));var d=Xh(),p=L(d),m=L(p),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=e=>{var t=qh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(l))},[()=>s(V(l),`sidebar.annotated_docs_badge`)]),W(e,t)};K(_,e=>{V(l)>0&&!X.markerHidden&&e(v)});var y=z(_,2),b=e=>{var t=Jh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(u))},[()=>s(V(u),`sidebar.file_attached_docs_badge`)]),W(e,t)};K(y,e=>{V(u)>0&&!X.hideAttachments&&e(b)}),j(m);var x=z(m,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2);j(x),j(p);var T=z(p,2),E=e=>{var t=Yh();q(t,21,()=>V(c),e=>e.id,(e,t)=>{n(e,()=>V(t))}),j(t),W(e,t)};K(T,e=>{V(o)&&e(E)}),j(d),B(()=>{G(g,r()),G(C,V(c).length),gi(w,1,`transition-transform duration-200 ${V(o)?`rotate-90`:``}`)}),H(`click`,p,()=>X.toggleCategory(V(i))),W(e,d)},i=(e,n=f)=>{let r=N(()=>o(n())),i=N(()=>X.expandedFolders.has(V(r))),a=N(()=>t.node.children[n()]),c=N(()=>Ph(V(a))),l=N(()=>Fh(V(a),X.annotationCounts)),u=N(()=>Ih(V(a),X.fileAttachmentCounts));var d=Qh(),p=L(d),m=L(p),h=L(m),g=L(h);j(h);var _=z(h,2),v=e=>{var t=qh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(l))},[()=>s(V(l),`sidebar.annotated_docs_badge`)]),W(e,t)};K(_,e=>{V(l)>0&&!X.markerHidden&&e(v)});var y=z(_,2),b=e=>{var t=Jh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(u))},[()=>s(V(u),`sidebar.file_attached_docs_badge`)]),W(e,t)};K(y,e=>{V(u)>0&&!X.hideAttachments&&e(b)}),j(m);var x=z(m,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2);j(x),j(p);var T=z(p,2),E=e=>{var r=Zh(),i=L(r);{let e=N(()=>[...t.folderPath,n()]);tg(i,{get node(){return V(a)},get folderPath(){return V(e)},get onopen(){return t.onopen}})}j(r),W(e,r)};K(T,e=>{V(i)&&e(E)}),j(d),B(e=>{J(h,`title`,n()),G(g,`📁 ${e??``}`),G(C,V(c)),gi(w,1,`transition-transform duration-200 ${V(i)?`rotate-90`:``}`)},[()=>Lh(n())]),H(`click`,p,()=>X.toggleFolder(V(r))),W(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(!X.highlightStatusState)return null;let t=String(X.docStatuses[e.id]||``).trim().toLowerCase();return t===`to be validated`?`V`:X.highlightStatusState===2&&t===`superseeded`?`S`:null}var l=Wr(),u=R(l),d=e=>{var r=$h(),a=R(r);q(a,17,()=>Bh(t.node),e=>e.id,(e,t)=>{n(e,()=>V(t))}),q(z(a,2),16,()=>Rh(t.node),e=>e,(e,t)=>{i(e,()=>t)}),W(e,r)},p=e=>{var n=eg(),a=R(n),o=e=>{r(e,()=>`General`)};K(a,e=>{t.node.categories.General&&e(o)});var s=z(a,2);q(s,16,()=>Rh(t.node),e=>e,(e,t)=>{i(e,()=>t)}),q(z(s,2),16,()=>zh(t.node),e=>e,(e,t)=>{r(e,()=>t)}),W(e,n)};K(u,e=>{X.hideCategories?e(d):e(p,-1)}),W(e,l),Je()}Pr([`click`]);var ng=U(`<p class="px-4 py-8 text-sm text-gray-400 text-center"> </p>`),rg=U(`<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 ig(e,t){qe(t,!0);let n=N(()=>Nh(X.filteredDocs,X.allFolderPaths,!X.searchQuery)),r=N(()=>X.filteredDocs.length),i=N(()=>X.filteredDocs.length===0&&X.allFolderPaths.length===0),a=`ld-sidebar-w`,o=P(null),s=P(!1),c=P(null);kn(()=>{let e=parseInt(localStorage.getItem(a)||``,10);Number.isFinite(e)&&F(o,Math.max(200,Math.min(600,e)),!0)});function l(e){e.preventDefault();let t=e.clientX,n=V(c).getBoundingClientRect().width;F(s,!0),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`;let r=e=>{F(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=``,F(s,!1),V(o)!=null)try{localStorage.setItem(a,String(V(o)))}catch{}};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}var u=rg(),d=L(u),f=L(d),p=L(f);Di(p),Ie(2),j(f);var m=z(f,2),h=L(m),g=L(h);j(h);var _=z(h,2),v=L(_),y=z(v,2),b=z(y,2),x=z(b,2),S=z(x,2),C=z(S,2);j(_),j(m),j(d);var w=z(d,2),T=L(w),E=e=>{var t=ng(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`sidebar.no_docs`)]),W(e,t)},D=e=>{tg(e,{get node(){return V(n)},folderPath:[],get onopen(){return t.onopen}})};K(T,e=>{V(i)?e(E):e(D,-1)}),j(w);var ee=z(w,2);j(u),Vi(u,e=>F(c,e),()=>V(c)),B((e,t,n,i,a,c,l)=>{gi(u,1,`no-print ${V(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`),vi(u,V(o)==null?``:`width:${V(o)}px`),J(p,`placeholder`,e),Oi(p,X.searchQuery),G(g,`${V(r)??``} document${V(r)===1?``:`s`}`),J(v,`title`,t),gi(v,1,`hover:opacity-80 transition-colors leading-none ${X.highlightStatusState===0?`text-gray-400 dark:text-gray-500`:X.highlightStatusState===1?`text-green-500 dark:text-green-400`:`text-orange-500 dark:text-orange-400`}`),J(y,`title`,n),gi(y,1,`transition-colors leading-none ${X.hideAttachments?`text-gray-400 dark:text-gray-500`:`text-blue-500 dark:text-blue-400`}`),J(b,`title`,i),gi(b,1,`transition-colors leading-none ${X.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),gi(ee,1,`absolute top-0 right-[-2px] w-1.5 h-full cursor-col-resize z-20 select-none transition-colors ${V(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`)]),H(`input`,p,e=>t.onsearch(e.target.value)),H(`click`,v,()=>X.cycleHighlightStatus()),H(`click`,y,()=>X.toggleHideAttachments()),H(`click`,b,()=>X.toggleHideCategories()),H(`click`,x,function(...e){t.onexport?.apply(this,e)}),H(`click`,S,function(...e){t.onnewfolder?.apply(this,e)}),H(`click`,C,function(...e){t.onnewdoc?.apply(this,e)}),H(`mousedown`,ee,l),W(e,u),Je()}Pr([`input`,`click`,`mousedown`]);var ag=`background:rgba(250,204,21,0.5);border-radius:2px;cursor:pointer;padding:0 1px;`;function og(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)cg(e,n);e.querySelectorAll(`mark[data-annotation-id]`).forEach(e=>{(e.textContent||``).trim()||e.remove()}),n&&sg(e,!1)}function sg(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 cg(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?.[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`,ag),i.parentNode?.insertBefore(o,i),o.appendChild(i)}}var lg=U(`<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>`),ug=U(`<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>`),dg=U(`<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>`),fg=U(`<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>`),pg=U(`<button> </button>`),mg=U(`<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>`),hg=U(`<!> <!> <!> <!>`,1);function gg(e,t){qe(t,!0);let n=P(I([])),r=P(null),i=P(``),a=P(null),o=P(null),s=P(I([])),c=null;Gi(()=>{let e=document.getElementById(`home-content-area`);if(!e)return;let t=()=>{c&&clearTimeout(c),F(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){F(n,[],!0);try{F(n,await fetch(`/api/annotations/`+encodeURIComponent(e)).then(e=>e.json()),!0)}catch{F(n,[],!0)}d()}function d(){t.contentEl&&(og(t.contentEl,V(n),X.markerHidden),f())}kn(()=>{t.contentEl&&sg(t.contentEl,!X.markerHidden)});function f(){if(!t.contentEl){F(s,[],!0);return}F(s,V(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(!X.markerActive||V(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);F(r,{x:h.x,y:h.y,preview:d.length>120?d.slice(0,120)+`…`:d,selectedText:d,contextBefore:f,contextAfter:p},!0),F(i,``)}function m(){F(r,null),window.getSelection()?.removeAllRanges()}async function h(){if(!V(r)||!t.docId)return;let e=V(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:V(r).selectedText,contextBefore:V(r).contextBefore,contextAfter:V(r).contextAfter,note:e})}).then(e=>e.json());F(n,[...V(n),i],!0),m(),d(),X.annotationCounts={...X.annotationCounts,[t.docId]:(X.annotationCounts[t.docId]||0)+1}}catch{}}kn(()=>{if(!t.contentEl)return;let e=t.contentEl,r=e=>{let t=e.target.closest(`mark[data-annotation-id]`);if(!t)return;let r=V(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);F(a,{ann:e,x:o.x,y:o.y,orphan:r},!0)}function _(){c=window.setTimeout(()=>{F(a,null)},1500)}function v(){V(a)&&(F(o,{id:V(a).ann.id,x:V(a).x,y:V(a).y},!0),F(a,null))}async function y(){if(!V(o)||!t.docId)return;let e=V(o).id;try{await fetch(`/api/annotations/${encodeURIComponent(t.docId)}/${e}`,{method:`DELETE`}),F(n,V(n).filter(t=>t.id!==e),!0),F(o,null),d();let r=(X.annotationCounts[t.docId]||0)-1,i={...X.annotationCounts};r<=0?delete i[t.docId]:i[t.docId]=r,X.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(V(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=V(n).find(t=>t.id===e);t&&g(t,r.currentTarget)}}function C(e,r){c&&clearTimeout(c);let i=V(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=V(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=hg();Nr(`mouseup`,on,p);var ee=R(D),O=e=>{var t=lg(),n=L(t),a=z(L(n)),o=L(a,!0);j(a),j(n);var s=z(n,2),c=L(s,!0);j(s);var l=z(s,2);yn(l),vn(l,!0);var u=z(l,2),d=L(u),f=L(d,!0);j(d);var p=z(d,2),g=L(p,!0);j(p),j(u),j(t),B((e,n,i,a)=>{vi(t,`left:${V(r).x??``}px;top:${V(r).y??``}px`),G(o,e),G(c,V(r).preview),J(l,`placeholder`,n),G(f,i),G(g,a)},[()=>Y(`annotation.title`),()=>Y(`annotation.placeholder`),()=>Y(`common.cancel`),()=>Y(`annotation.save_btn`)]),Ni(l,()=>V(i),e=>F(i,e)),H(`click`,d,m),H(`click`,p,h),W(e,t)};K(ee,e=>{V(r)&&e(O)});var k=z(ee,2),te=e=>{var t=dg(),n=L(t),r=z(L(n)),i=L(r,!0);j(r),j(n);var o=z(n,2),s=e=>{var t=ug(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`annotation.orphan`)]),W(e,t)};K(o,e=>{V(a).orphan&&e(s)});var l=z(o,2),u=L(l,!0);j(l);var d=z(l,2),f=L(d),p=L(f,!0);j(f),j(d),j(t),B((e,n)=>{vi(t,`left:${V(a).x??``}px;top:${V(a).y??``}px`),G(i,e),G(u,V(a).ann.note),G(p,n)},[()=>T(V(a).ann.createdAt),()=>Y(`annotation.delete_btn`)]),Nr(`mouseenter`,t,()=>{c&&clearTimeout(c)}),Nr(`mouseleave`,t,_),H(`click`,f,v),W(e,t)};K(k,e=>{V(a)&&e(te)});var ne=z(k,2),re=e=>{var t=fg(),n=L(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i),s=L(a,!0);j(a);var c=z(a,2),l=L(c,!0);j(c),j(i),j(t),B((e,n,i)=>{vi(t,`left:${V(o).x??``}px;top:${V(o).y??``}px`),G(r,e),G(s,n),G(l,i)},[()=>Y(`annotation.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`annotation.confirm_btn`)]),H(`click`,a,()=>F(o,null)),H(`click`,c,y),W(e,t)};K(ne,e=>{V(o)&&e(re)});var ie=z(ne,2),A=e=>{var t=mg();q(t,21,()=>V(s),e=>e.id,(e,t)=>{var n=pg(),r=L(n,!0);j(n),B((e,i)=>{J(n,`title`,e),gi(n,1,`w-8 h-8 rounded border-2 shadow text-xs flex items-center justify-center transition-colors shrink-0 ${V(t).orphan?`border-red-600 text-white`:`border-yellow-500`}`),vi(n,`background:${i??``}`),G(r,V(t).orphan?`⚠`:`✎`)},[()=>V(t).orphan?`${Y(`annotation.orphan`)}\n\n${V(t).note}`:V(t).note,()=>w(V(t))]),H(`click`,n,e=>S(V(t).id,e)),Nr(`mouseenter`,n,e=>C(V(t).id,e)),Nr(`mouseleave`,n,_),W(e,n)}),j(t),W(e,t)};return K(ie,e=>{V(s).length>0&&!X.markerHidden&&e(A)}),W(e,D),Je(E)}Pr([`click`]);var _g=`#dc2626`,vg=`#eab308`,yg=`#16a34a`;function bg(e){let t=Math.max(0,Math.min(1,e))*100;return t>80?yg:t>=60?vg:t>=40?`#f97316`:_g}function xg(e){let t=Math.max(0,Math.min(1,e))*100;return t>=100?yg:t<30?_g:t<60?`linear-gradient(to right, ${_g} 0%, ${_g} 60%, ${vg} 100%)`:t<80?`linear-gradient(to right, ${_g} 0%, ${vg} 40%, ${vg} 100%)`:`linear-gradient(to right, ${vg} 0%, ${yg} 40%, ${yg} 100%)`}var Sg=new class{#e=P(null);get report(){return V(this.#e)}set report(e){F(this.#e,e,!0)}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()}},Cg=U(`<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 wg(e,t){qe(t,!0);let n=N(()=>Sg.report),r=N(()=>V(n)?Math.round(V(n).accuracy*100):0),i=N(()=>V(n)?Y(`accuracy.tooltip`).replace(`{unchanged}`,String(V(n).unchanged)).replace(`{modified}`,String(V(n).modified)).replace(`{missing}`,String(V(n).missing)).replace(`{total}`,String(V(n).total)):``);var a=Wr(),o=R(a),s=e=>{var a=Cg(),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c);j(c);var u=z(c,2),d=L(u);j(u),j(a),B((e,t,n)=>{J(a,`title`,V(i)),G(s,e),vi(l,`background:${t??``}`),vi(u,`color:${n??``}`),G(d,`${V(r)??``}%`)},[()=>Y(`accuracy.label`),()=>xg(V(n).accuracy),()=>bg(V(n).accuracy)]),H(`click`,a,function(...e){t.onopen?.apply(this,e)}),W(e,a)};K(o,e=>{V(n)&&V(n).total>0&&e(s)}),W(e,a),Je()}Pr([`click`]);var Tg=/^(\s*(?:\*\*status:\*\*|status:)\s*).+?\s*$/im;function Eg(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 Dg(e,t){return e.replace(Tg,`$1${t}`)}function Og(e){return/%5BWORKLOG%5D/i.test(e)}var kg=U(`<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>`),Ag=U(`<div class="px-3 py-4 text-center text-xs text-gray-400"> </div>`),jg=U(`<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>`),Mg=U(`<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>`),Ng=U(`<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>`),Pg=U(`<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>`),Fg=U(`<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>`),Ig=U(`<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>`),Lg=U(`<div class="px-3 py-2 text-xs text-gray-400"> </div>`),Rg=U(`<div class="px-3 py-2 text-xs text-red-500"> </div>`),zg=U(`<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>`),Bg=U(`<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>`),Vg=U(`<!> <!>`,1),Hg=U(`<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>`),Ug=U(`<p class="text-xs text-red-500"> </p>`),Wg=U(`<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 Gg(e,t){qe(t,!0);let n=N(()=>Sg.report),r=N(()=>Eg(t.content)===`SuperSeeded`),i=P(``),a=P(!1),o=P(!1),s=P(``),c=P(null),l=P(I([])),u=P(I([])),d=P(!1),f=P(``);kn(()=>{t.open||(F(o,!1),F(s,``),F(i,``))});function p(e){F(i,Y(`common.error_prefix`)+e),setTimeout(()=>{F(i,``)},5e3)}function m(){return!V(n)||V(n).total===0?``:`<span class="font-semibold">${Math.round(V(n).accuracy*100)}%</span> · ${V(n).unchanged}/${V(n).total} ${Y(`metadata.status.unchanged`)} · ${V(n).modified} ${Y(`metadata.status.modified`)} · ${V(n).missing} ${Y(`metadata.status.missing`)}`}async function h(){F(a,!0);try{await Sg.refresh(t.docId)}catch(e){p(e instanceof Error?e.message:String(e))}finally{F(a,!1)}}async function g(e){try{await Sg.removePath(t.docId,e),V(o)&&y(V(s))}catch(e){p(e instanceof Error?e.message:String(e))}}async function _(e){try{await Sg.addPath(t.docId,e),V(o)&&y(V(s))}catch(e){p(e instanceof Error?e.message:String(e))}}function v(){F(o,!V(o)),V(o)&&y(``)}async function y(e){F(d,!0),F(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();F(s,r.current||``,!0),F(c,r.parent,!0),F(l,r.dirs||[],!0);let i=new Set((V(n)?.items||[]).map(e=>e.path));F(u,(r.files||[]).filter(e=>!i.has(e.path)),!0)}catch(e){F(f,e instanceof Error?e.message:String(e),!0)}finally{F(d,!1)}}function b(){V(c)!==null&&y(V(c))}var x=Wr(),S=R(x),C=e=>{var p=Wg(),x=L(p),S=L(x),C=L(S),w=L(C),T=z(L(w));j(w);var E=z(w,2),D=L(E,!0);j(E),j(C);var ee=z(C,2);j(S);var O=z(S,2);ai(O,m,!0),j(O);var k=z(O,2),te=e=>{var t=kg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`metadata.readonly_banner`)]),W(e,t)};K(k,e=>{V(r)&&e(te)});var ne=z(k,2),re=L(ne),ie=L(re),A=e=>{var t=Ag(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`metadata.empty`)]),W(e,t)},ae=e=>{var t=Wr();q(R(t),17,()=>V(n).items,e=>e.path,(e,t)=>{var n=Fg(),i=L(n),a=L(i),o=L(a,!0);j(a),j(i);var s=z(i,2),c=e=>{var t=jg(),n=z(L(t));j(t),B(e=>G(n,` ${e??``}`),[()=>Y(`metadata.status.unchanged`)]),W(e,t)},l=e=>{var t=Mg(),n=z(L(t));j(t),B(e=>G(n,` ${e??``}`),[()=>Y(`metadata.status.modified`)]),W(e,t)},u=e=>{var t=Ng(),n=z(L(t));j(t),B(e=>G(n,` ${e??``}`),[()=>Y(`metadata.status.missing`)]),W(e,t)};K(s,e=>{V(t).status===`unchanged`?e(c):V(t).status===`modified`?e(l,1):e(u,-1)});var d=z(s,2),f=e=>{var n=Pg();B(e=>J(n,`title`,e),[()=>Y(`metadata.remove`)]),H(`click`,n,()=>g(V(t).path)),W(e,n)};K(d,e=>{V(r)||e(f)}),j(n),B(()=>{J(a,`title`,V(t).path),G(o,V(t).path)}),W(e,n)}),W(e,t)};K(ie,e=>{!V(n)||V(n).items.length===0?e(A):e(ae,-1)}),j(re),j(ne);var oe=z(ne,2),se=e=>{var t=Ig(),n=L(t),r=z(L(n));j(n);var i=z(n,2),o=z(L(i));j(i),j(t),B((e,t)=>{G(r,` ${e??``}`),i.disabled=V(a),G(o,` ${t??``}`)},[()=>Y(`metadata.add`),()=>Y(`metadata.refresh`)]),H(`click`,n,v),H(`click`,i,h),W(e,t)};K(oe,e=>{V(r)||e(se)});var ce=z(oe,2),le=e=>{var t=Hg(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n);var p=z(n,2),m=L(p),h=e=>{var t=Lg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},g=e=>{var t=Rg(),n=L(t,!0);j(t),B(()=>G(n,V(f))),W(e,t)},v=e=>{var t=Lg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.empty_dir`)]),W(e,t)},x=e=>{var t=Vg(),n=R(t);q(n,17,()=>V(l),e=>e.path,(e,t)=>{var n=zg(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>y(V(t).path)),W(e,n)}),q(z(n,2),17,()=>V(u),e=>e.path,(e,t)=>{var n=Bg(),r=z(L(n),2),i=L(r,!0);j(r),Ie(2),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>_(V(t).path)),W(e,n)}),W(e,t)};K(m,e=>{V(d)?e(h):V(f)?e(g,1):V(l).length===0&&V(u).length===0?e(v,2):e(x,-1)}),j(p),j(t),B(e=>{r.disabled=V(c)===null,G(i,e),G(o,V(s)?`/`+V(s):`/ (sourceRoot)`)},[()=>Y(`common.up`)]),H(`click`,r,b),W(e,t)};K(ce,e=>{V(o)&&e(le)});var ue=z(ce,2),de=e=>{var t=Ug(),n=L(t,!0);j(t),B(()=>G(n,V(i))),W(e,t)};K(ue,e=>{V(i)&&e(de)});var fe=z(ue,2),pe=L(fe),me=L(pe,!0);j(pe),j(fe),j(x),j(p),B((e,t,n,r)=>{G(T,` ${e??``}`),G(D,t),J(ee,`title`,n),G(me,r)},[()=>Y(`metadata.title`),()=>Y(`metadata.subtitle`),()=>Y(`common.close`),()=>Y(`common.close`)]),H(`click`,p,e=>{e.target===e.currentTarget&&t.onclose()}),H(`click`,ee,function(...e){t.onclose?.apply(this,e)}),H(`click`,pe,function(...e){t.onclose?.apply(this,e)}),W(e,p)};K(S,e=>{t.open&&e(C)}),W(e,x),Je()}Pr([`click`]);var Kg=U(`<div class="text-xs font-medium text-amber-700 dark:text-amber-300"> </div>`),qg=U(`<div> </div>`),Jg=U(`<button type="button"><div class="flex items-center gap-2 font-semibold text-gray-800 dark:text-gray-100"><span class="font-mono text-blue-600 dark:text-blue-400"> </span> <span class="truncate"> </span></div> <div class="mt-1 text-gray-500 dark:text-gray-400"> </div></button>`),Yg=U(`<div class="mt-3 flex gap-2 overflow-x-auto pb-1"></div>`),Xg=U(`<p class="mt-3 text-sm text-gray-500 dark:text-gray-400"> </p>`),Zg=U(`<div class="flex h-full items-center justify-center text-sm text-gray-500 dark:text-gray-400"> </div>`),Qg=U(`<div class="m-5 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-950/30 dark:text-red-300"> </div>`),$g=U(`<div class="mx-5 mt-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-2 text-sm text-amber-800 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-200"> </div>`),e_=U(`<button type="button" class="mt-0.5 inline-flex h-7 w-8 items-center justify-center rounded-md border border-blue-200 bg-white font-mono text-sm font-bold text-blue-600 transition-colors hover:bg-blue-50 disabled:cursor-wait disabled:opacity-50 dark:border-blue-800 dark:bg-gray-950 dark:text-blue-300 dark:hover:bg-blue-950/40"> </button>`),t_=U(`<div><span> </span> <pre class="m-0 whitespace-pre-wrap break-words px-2 py-0.5 font-mono"> </pre></div> <div class="flex items-start justify-center border-r border-gray-200 bg-gray-50 px-1 py-0.5 dark:border-gray-800 dark:bg-gray-900/70"><!></div> <div><span> </span> <pre class="m-0 whitespace-pre-wrap break-words px-2 py-0.5 font-mono"> </pre></div>`,1),n_=U(`<!> <div class="h-full overflow-auto p-5"><div class="grid min-w-[980px] grid-cols-[minmax(0,1fr)_3.25rem_minmax(0,1fr)] overflow-hidden rounded-lg border border-gray-200 text-xs dark:border-gray-800"><div class="border-b border-r border-gray-200 bg-gray-100 px-3 py-2 font-semibold text-gray-700 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-200"> </div> <div class="border-b border-r border-gray-200 bg-gray-100 px-2 py-2 text-center font-semibold text-gray-400 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-500"></div> <div class="border-b border-gray-200 bg-gray-100 px-3 py-2 font-semibold text-gray-700 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-200"> </div> <!></div></div>`,1),r_=U(`<div data-testid="versions-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"><div class="flex h-[90vh] w-full max-w-7xl flex-col overflow-hidden rounded-xl border border-gray-200 bg-white shadow-2xl dark:border-gray-700 dark:bg-gray-950"><header class="flex shrink-0 items-start justify-between gap-4 border-b border-gray-200 px-5 py-4 dark:border-gray-800"><div><h2 class="text-lg font-semibold text-gray-900 dark:text-gray-50"><i class="fa-solid fa-code-branch mr-2"></i> </h2> <p class="mt-1 text-xs text-gray-500 dark:text-gray-400"> </p></div> <button type="button" class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm text-gray-600 transition-colors hover:bg-gray-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-gray-800"><i class="fa-solid fa-xmark"></i></button></header> <div class="shrink-0 border-b border-gray-200 px-5 py-3 dark:border-gray-800"><div class="flex flex-wrap items-end gap-3"><label class="text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400"> <input type="number" class="mt-1 block w-28 rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-800 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100"/></label> <button type="button" class="rounded-lg bg-blue-600 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-blue-700 disabled:opacity-50"><i class="fa-solid fa-arrows-rotate mr-1"></i> </button> <button type="button" class="rounded-lg bg-green-600 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-green-700 disabled:cursor-not-allowed disabled:opacity-50"><i class="fa-solid fa-floppy-disk mr-1"></i> </button> <div class="text-xs text-gray-500 dark:text-gray-400"> </div> <!> <!></div> <!></div> <section class="min-h-0 flex-1 overflow-hidden"><!></section></div></div>`);function i_(e,t){qe(t,!0);let n=3650,r=P(30),i=P(30),a=P(!1),o=P(``),s=P(null),c=P(null),l=P(null),u=P(``),d=``,f=P(``),p=P(!1),m=N(()=>V(l)?.headContent??t.content),h=N(()=>V(f)),g=N(()=>V(f)!==V(m)),_=N(()=>T(V(l)?.baseContent??``,V(h))),v=N(()=>V(_).rows),y=N(()=>V(l)?.baseContent!==null&&V(l)?.baseContent!==void 0);kn(()=>{t.docId,F(f,t.content,!0)});function b(e){return Number.isFinite(e)?Math.max(1,Math.min(n,Math.floor(e))):30}function x(e){return e.length?e.replace(/\r\n/g,`
99
+ <a href="${k(s)}" target="_blank" rel="noopener" class="mcp-saved-link">📄 ${k(a)}</a>`})}catch(n){f(e,t,{running:!1,error:n.message||String(n),resultHtml:``})}}async function O(e){let n=V(e===`tool`?o:s);if(!n.length)return;F(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{F(c,!1)}}function k(e){return String(e??``).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}async function te(){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:[];F(n,Y(`context.mcp_available`),!0),F(r,!0),F(i,t.transport||`-`,!0),F(a,t.endpoint||`POST /mcp`,!0),F(o,c,!0),F(s,l,!0),c.forEach(m),l.forEach(h)}catch{F(n,Y(`context.mcp_unavailable`),!0),F(r,!1),F(i,`-`),F(a,`/mcp`),F(o,[],!0),F(s,[],!0)}}var ne={load:te},re=Sh(),ie=L(re),A=L(ie),ae=L(A,!0);j(A);var oe=z(A,2),se=L(oe,!0);j(oe),j(ie);var ce=z(ie,2),le=L(ce,!0);j(ce);var ue=z(ce,2),de=L(ue),fe=L(de),pe=L(fe,!0);j(fe);var me=z(fe,2),he=L(me,!0);j(me),j(de);var ge=z(de,2),_e=L(ge),ve=L(_e,!0);j(_e);var ye=z(_e,2),be=L(ye,!0);j(ye),j(ge);var xe=z(ge,2),Se=L(xe),Ce=L(Se,!0);j(Se);var we=z(Se,2),Te=L(we,!0);j(we),j(xe),j(ue);var Ee=z(ue,2),De=L(Ee),Oe=L(De),ke=L(Oe,!0);j(Oe);var Ae=z(Oe,2),je=L(Ae),Me=L(je,!0);j(je);var Ne=z(je,2),Pe=L(Ne,!0);j(Ne),j(Ae),j(De);var Fe=z(De,2),Ie=L(Fe),Le=e=>{var t=mh(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.mcp_no_tools`)]),W(e,t)},Re=e=>{var t=Wr();q(R(t),17,()=>V(o),Xr,(e,t)=>{let n=N(()=>V(l).get(V(t).name)??{argsJson:`{}`,running:!1,error:``,resultHtml:``});var r=vh(),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=e=>{var n=hh(),r=L(n,!0);j(n),B(()=>G(r,V(t).description)),W(e,n)};K(o,e=>{V(t).description&&e(s)});var c=z(o,2),u=e=>{var n=gh(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n),B((e,t)=>{G(i,e),G(o,t)},[()=>Y(`context.mcp_input_schema`),()=>JSON.stringify(V(t).inputSchema,null,2)]),W(e,n)};K(c,e=>{V(t).inputSchema&&e(u)});var d=z(c,2),p=L(d),m=L(p,!0);j(p);var h=z(p,2);yn(h);var g=z(h,2),_=L(g),v=L(_,!0);j(_);var y=z(_,2),b=L(y,!0);j(y),j(g);var x=z(g,2),S=e=>{var t=_h();ai(t,()=>V(n).resultHtml,!0),j(t),W(e,t)};K(x,e=>{V(n).resultHtml&&e(S)}),j(d),j(r),B((e,r)=>{G(a,V(t).name),G(m,e),Oi(h,V(n).argsJson),G(v,V(n).error),y.disabled=V(n).running,G(b,r)},[()=>Y(`context.mcp_request_json`),()=>Y(`context.mcp_run_tool`)]),H(`input`,h,e=>f(`tool`,V(t).name,{argsJson:e.target.value})),H(`click`,y,()=>ee(`tool`,V(t).name)),W(e,r)}),W(e,t)};K(Ie,e=>{V(o).length?e(Re,-1):e(Le)}),j(Fe),j(Ee);var ze=z(Ee,2),Be=L(ze),Ve=L(Be),He=L(Ve,!0);j(Ve);var Ue=z(Ve,2),We=L(Ue),Ge=L(We,!0);j(We);var Ke=z(We,2),Ye=L(Ke,!0);j(Ke),j(Ue),j(Be);var Xe=z(Be,2),Ze=L(Xe),Qe=e=>{var t=mh(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`context.mcp_no_prompts`)]),W(e,t)},$e=e=>{var t=Wr();q(R(t),17,()=>V(s),Xr,(e,t)=>{let n=N(()=>V(u).get(V(t).name)??{argsJson:`{}`,running:!1,error:``,resultHtml:``});var r=vh(),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=e=>{var n=hh(),r=L(n,!0);j(n),B(()=>G(r,V(t).description)),W(e,n)};K(o,e=>{V(t).description&&e(s)});var c=z(o,2),l=e=>{var n=xh(),r=L(n),i=L(r,!0);j(r);var a=z(r,2);q(a,21,()=>V(t).arguments,Xr,(e,t)=>{var n=bh(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var c=z(r,2),l=e=>{var n=yh(),r=L(n,!0);j(n),B(()=>G(r,V(t).description)),W(e,n)};K(c,e=>{V(t).description&&e(l)}),j(n),B(e=>{G(a,V(t).name),G(s,e)},[()=>V(t).required?Y(`context.mcp_required`):Y(`context.mcp_optional`)]),W(e,n)}),j(a),j(n),B(e=>G(i,e),[()=>Y(`context.mcp_arguments`)]),W(e,n)};K(c,e=>{V(t).arguments?.length&&e(l)});var d=z(c,2),p=L(d),m=L(p,!0);j(p);var h=z(p,2);yn(h);var g=z(h,2),_=L(g),v=L(_,!0);j(_);var y=z(_,2),b=L(y,!0);j(y),j(g);var x=z(g,2),S=e=>{var t=_h();ai(t,()=>V(n).resultHtml,!0),j(t),W(e,t)};K(x,e=>{V(n).resultHtml&&e(S)}),j(d),j(r),B((e,r)=>{G(a,V(t).name),G(m,e),Oi(h,V(n).argsJson),G(v,V(n).error),y.disabled=V(n).running,G(b,r)},[()=>Y(`context.mcp_request_json`),()=>Y(`context.mcp_get_prompt`)]),H(`input`,h,e=>f(`prompt`,V(t).name,{argsJson:e.target.value})),H(`click`,y,()=>ee(`prompt`,V(t).name)),W(e,r)}),W(e,t)};return K(Ze,e=>{V(s).length?e($e,-1):e(Qe)}),j(Xe),j(ze),j(re),B((e,t,l,u,d,f,p,m,h,g)=>{G(ae,e),G(se,t),G(le,l),G(pe,u),gi(me,1,ui(V(r)?`mcp-info-value ok`:`mcp-info-value err`),`svelte-1ui2b6s`),G(he,V(n)),G(ve,d),G(be,V(i)),G(Ce,f),G(Te,V(a)),G(ke,p),G(Me,V(o).length),Ne.disabled=V(c)||!V(o).length,G(Pe,m),G(He,h),G(Ge,V(s).length),Ke.disabled=V(c)||!V(s).length,G(Ye,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`)]),H(`click`,oe,te),H(`click`,Ne,()=>O(`tool`)),H(`click`,Ke,()=>O(`prompt`)),W(e,re),Je(ne)}Pr([`click`,`input`]);var wh=U(`<p class="status-text svelte-rpj1e5"> </p>`),Th=U(`<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 Eh(e,t){qe(t,!0);let n=P(``),r=P(I([])),i=P(I([])),a=P(``),o=P(null),s=P(null),c=P(null);function l(e){F(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();F(o,t,!0),F(r,t.instructions||[],!0),F(i,t.rules||[],!0),F(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 V(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()}Gi(async()=>{try{let e=await fetch(`/api/config`);await pa((e.ok?await e.json():{}).language||`en`)}catch{await pa(`en`)}document.title=Y(`context.title`),await u().catch(e=>l(e.message)),await V(c).load().catch(()=>{})});var m=Th(),h=R(m),g=L(h);$a(g,{get navigate(){return t.navigate}});var _=z(g,2),v=L(_),y=L(v),b=L(y),x=L(b,!0);j(b);var S=z(b,2),C=L(S,!0);j(S);var w=z(S,2),T=e=>{var t=wh(),r=L(t,!0);j(t),B(()=>G(r,V(n))),W(e,t)};K(w,e=>{V(n)&&e(T)}),j(y);var E=z(y,2);ah(E,{onAdd:d,onRemove:f,get items(){return V(r)},set items(e){F(r,e,!0)}});var D=z(E,2);ph(D,{get rules(){return V(i)},get rulesFolder(){return V(a)},onAdd:p}),Vi(Ch(z(D,2),{onStatus:l}),e=>F(c,e,!0),()=>V(c)),j(v),j(_),j(h),Vi(tu(z(h,2),{}),e=>F(s,e,!0),()=>V(s)),B((e,t)=>{G(x,e),G(C,t)},[()=>Y(`context.orientation_title`),()=>Y(`context.orientation_intro`)]),W(e,m),Je()}async function Dh(){return fetch(`/api/config`).then(e=>e.json())}async function Oh(){return fetch(`/api/documents`).then(e=>e.json())}async function kh(e){return fetch(`/api/browse/alldirs?path=${encodeURIComponent(e)}`).then(e=>e.json())}async function Ah(e){let t=await fetch(`/api/documents/${e}`);if(!t.ok)throw Error(t.statusText);return t.json()}async function jh(){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 Mh(){try{return await fetch(`/api/documents/file-counts`).then(e=>e.json())}catch{return{}}}async function Nh(){try{return await fetch(`/api/documents/statuses`).then(e=>e.json())}catch{return{}}}async function Ph(e){return fetch(`/api/documents/search?q=${encodeURIComponent(e)}`).then(e=>e.json())}function Fh(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 Ih(e){let t=Object.values(e.categories).reduce((e,t)=>e+t.length,0);for(let n of Object.values(e.children))t+=Ih(n);return t}function Lh(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+=Lh(r,t);return n}function Rh(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+=Rh(r,t);return n}function zh(e){return e.replace(/^\d+_/,``).replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Bh(e){return Object.keys(e.children).sort((e,t)=>e.localeCompare(t))}function Vh(e){return Object.keys(e.categories).filter(e=>e!==`General`).sort((e,t)=>e.localeCompare(t))}function Hh(e){return Object.values(e.categories).flat().sort((e,t)=>(e.filename||``).localeCompare(t.filename||``))}var Uh=U(`<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>`),Wh=U(`<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>`),Gh=U(`<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>`),Kh=U(`<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>`),qh=U(`<div class="text-xs text-gray-400 dark:text-gray-500 mt-0.5"> </div>`),Jh=U(`<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>`),Yh=U(`<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>`),Xh=U(`<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>`),Zh=U(`<div class="pl-2"></div>`),Qh=U(`<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>`),$h=U(`<div class="pl-3"><!></div>`),eg=U(`<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>`),tg=U(`<!> <!>`,1),ng=U(`<!> <!> <!>`,1);function rg(e,t){qe(t,!0);let n=(e,n=f)=>{let r=N(()=>X.annotationCounts[n().id]||0),i=N(()=>X.fileAttachmentCounts[n().id]||0),a=N(()=>c(n()));var o=Jh(),l=L(o),u=L(l),d=L(u,!0);j(u);var p=z(u,2),m=L(p),h=e=>{var t=Uh();B(e=>J(t,`title`,e),[()=>Y(`sidebar.status_to_validate`)]),W(e,t)},g=e=>{var t=Wh();B(e=>J(t,`title`,e),[()=>Y(`sidebar.status_superseeded`)]),W(e,t)};K(m,e=>{V(a)===`V`?e(h):V(a)===`S`&&e(g,1)});var _=z(m,2),v=e=>{var t=Gh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(r))},[()=>s(V(r),`sidebar.annotation_badge`)]),W(e,t)};K(_,e=>{V(r)>0&&!X.markerHidden&&e(v)});var y=z(_,2),b=e=>{var t=Kh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(i))},[()=>s(V(i),`sidebar.file_attachment_badge`)]),W(e,t)};K(y,e=>{V(i)>0&&!X.hideAttachments&&e(b)}),j(p),j(l);var x=z(l,2),S=e=>{var t=qh(),r=L(t,!0);j(t),B(()=>G(r,n().formattedDate)),W(e,t)};K(x,e=>{n().formattedDate&&e(S)}),j(o),B(()=>{J(o,`id`,`item-${n().id??``}`),gi(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===X.currentDocId?`active`:``}`),G(d,n().title)}),H(`click`,o,()=>t.onopen(n().id)),W(e,o)},r=(e,r=f)=>{let i=N(()=>a(r())),o=N(()=>X.expandedCategories.has(V(i))),c=N(()=>t.node.categories[r()]),l=N(()=>V(c).reduce((e,t)=>e+ +(X.annotationCounts[t.id]>0),0)),u=N(()=>V(c).reduce((e,t)=>e+ +(X.fileAttachmentCounts[t.id]>0),0));var d=Qh(),p=L(d),m=L(p),h=L(m),g=L(h,!0);j(h);var _=z(h,2),v=e=>{var t=Yh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(l))},[()=>s(V(l),`sidebar.annotated_docs_badge`)]),W(e,t)};K(_,e=>{V(l)>0&&!X.markerHidden&&e(v)});var y=z(_,2),b=e=>{var t=Xh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(u))},[()=>s(V(u),`sidebar.file_attached_docs_badge`)]),W(e,t)};K(y,e=>{V(u)>0&&!X.hideAttachments&&e(b)}),j(m);var x=z(m,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2);j(x),j(p);var T=z(p,2),E=e=>{var t=Zh();q(t,21,()=>V(c),e=>e.id,(e,t)=>{n(e,()=>V(t))}),j(t),W(e,t)};K(T,e=>{V(o)&&e(E)}),j(d),B(()=>{G(g,r()),G(C,V(c).length),gi(w,1,`transition-transform duration-200 ${V(o)?`rotate-90`:``}`)}),H(`click`,p,()=>X.toggleCategory(V(i))),W(e,d)},i=(e,n=f)=>{let r=N(()=>o(n())),i=N(()=>X.expandedFolders.has(V(r))),a=N(()=>t.node.children[n()]),c=N(()=>Ih(V(a))),l=N(()=>Lh(V(a),X.annotationCounts)),u=N(()=>Rh(V(a),X.fileAttachmentCounts));var d=eg(),p=L(d),m=L(p),h=L(m),g=L(h);j(h);var _=z(h,2),v=e=>{var t=Yh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(l))},[()=>s(V(l),`sidebar.annotated_docs_badge`)]),W(e,t)};K(_,e=>{V(l)>0&&!X.markerHidden&&e(v)});var y=z(_,2),b=e=>{var t=Xh(),n=L(t,!0);j(t),B(e=>{J(t,`title`,e),G(n,V(u))},[()=>s(V(u),`sidebar.file_attached_docs_badge`)]),W(e,t)};K(y,e=>{V(u)>0&&!X.hideAttachments&&e(b)}),j(m);var x=z(m,2),S=L(x),C=L(S,!0);j(S);var w=z(S,2);j(x),j(p);var T=z(p,2),E=e=>{var r=$h(),i=L(r);{let e=N(()=>[...t.folderPath,n()]);rg(i,{get node(){return V(a)},get folderPath(){return V(e)},get onopen(){return t.onopen}})}j(r),W(e,r)};K(T,e=>{V(i)&&e(E)}),j(d),B(e=>{J(h,`title`,n()),G(g,`📁 ${e??``}`),G(C,V(c)),gi(w,1,`transition-transform duration-200 ${V(i)?`rotate-90`:``}`)},[()=>zh(n())]),H(`click`,p,()=>X.toggleFolder(V(r))),W(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(!X.highlightStatusState)return null;let t=String(X.docStatuses[e.id]||``).trim().toLowerCase();return t===`to be validated`?`V`:X.highlightStatusState===2&&t===`superseeded`?`S`:null}var l=Wr(),u=R(l),d=e=>{var r=tg(),a=R(r);q(a,17,()=>Hh(t.node),e=>e.id,(e,t)=>{n(e,()=>V(t))}),q(z(a,2),16,()=>Bh(t.node),e=>e,(e,t)=>{i(e,()=>t)}),W(e,r)},p=e=>{var n=ng(),a=R(n),o=e=>{r(e,()=>`General`)};K(a,e=>{t.node.categories.General&&e(o)});var s=z(a,2);q(s,16,()=>Bh(t.node),e=>e,(e,t)=>{i(e,()=>t)}),q(z(s,2),16,()=>Vh(t.node),e=>e,(e,t)=>{r(e,()=>t)}),W(e,n)};K(u,e=>{X.hideCategories?e(d):e(p,-1)}),W(e,l),Je()}Pr([`click`]);var ig=U(`<p class="px-4 py-8 text-sm text-gray-400 text-center"> </p>`),ag=U(`<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 og(e,t){qe(t,!0);let n=N(()=>Fh(X.filteredDocs,X.allFolderPaths,!X.searchQuery)),r=N(()=>X.filteredDocs.length),i=N(()=>X.filteredDocs.length===0&&X.allFolderPaths.length===0),a=`ld-sidebar-w`,o=P(null),s=P(!1),c=P(null);kn(()=>{let e=parseInt(localStorage.getItem(a)||``,10);Number.isFinite(e)&&F(o,Math.max(200,Math.min(600,e)),!0)});function l(e){e.preventDefault();let t=e.clientX,n=V(c).getBoundingClientRect().width;F(s,!0),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`;let r=e=>{F(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=``,F(s,!1),V(o)!=null)try{localStorage.setItem(a,String(V(o)))}catch{}};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}var u=ag(),d=L(u),f=L(d),p=L(f);Di(p),Ie(2),j(f);var m=z(f,2),h=L(m),g=L(h);j(h);var _=z(h,2),v=L(_),y=z(v,2),b=z(y,2),x=z(b,2),S=z(x,2),C=z(S,2);j(_),j(m),j(d);var w=z(d,2),T=L(w),E=e=>{var t=ig(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`sidebar.no_docs`)]),W(e,t)},D=e=>{rg(e,{get node(){return V(n)},folderPath:[],get onopen(){return t.onopen}})};K(T,e=>{V(i)?e(E):e(D,-1)}),j(w);var ee=z(w,2);j(u),Vi(u,e=>F(c,e),()=>V(c)),B((e,t,n,i,a,c,l)=>{gi(u,1,`no-print ${V(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`),vi(u,V(o)==null?``:`width:${V(o)}px`),J(p,`placeholder`,e),Oi(p,X.searchQuery),G(g,`${V(r)??``} document${V(r)===1?``:`s`}`),J(v,`title`,t),gi(v,1,`hover:opacity-80 transition-colors leading-none ${X.highlightStatusState===0?`text-gray-400 dark:text-gray-500`:X.highlightStatusState===1?`text-green-500 dark:text-green-400`:`text-orange-500 dark:text-orange-400`}`),J(y,`title`,n),gi(y,1,`transition-colors leading-none ${X.hideAttachments?`text-gray-400 dark:text-gray-500`:`text-blue-500 dark:text-blue-400`}`),J(b,`title`,i),gi(b,1,`transition-colors leading-none ${X.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),gi(ee,1,`absolute top-0 right-[-2px] w-1.5 h-full cursor-col-resize z-20 select-none transition-colors ${V(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`)]),H(`input`,p,e=>t.onsearch(e.target.value)),H(`click`,v,()=>X.cycleHighlightStatus()),H(`click`,y,()=>X.toggleHideAttachments()),H(`click`,b,()=>X.toggleHideCategories()),H(`click`,x,function(...e){t.onexport?.apply(this,e)}),H(`click`,S,function(...e){t.onnewfolder?.apply(this,e)}),H(`click`,C,function(...e){t.onnewdoc?.apply(this,e)}),H(`mousedown`,ee,l),W(e,u),Je()}Pr([`input`,`click`,`mousedown`]);var sg=`background:rgba(250,204,21,0.5);border-radius:2px;cursor:pointer;padding:0 1px;`;function cg(e,t,n){e.querySelectorAll(`mark[data-annotation-id]`).forEach(e=>{let t=e.parentNode;t&&(t.replaceChild(document.createTextNode(e.textContent||``),e),t.normalize())});for(let n of t)ug(e,n);e.querySelectorAll(`mark[data-annotation-id]`).forEach(e=>{(e.textContent||``).trim()||e.remove()}),n&&lg(e,!1)}function lg(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 ug(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?.[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`,sg),i.parentNode?.insertBefore(o,i),o.appendChild(i)}}var dg=U(`<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>`),fg=U(`<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>`),pg=U(`<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>`),mg=U(`<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>`),hg=U(`<button> </button>`),gg=U(`<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>`),_g=U(`<!> <!> <!> <!>`,1);function vg(e,t){qe(t,!0);let n=P(I([])),r=P(null),i=P(``),a=P(null),o=P(null),s=P(I([])),c=null;Gi(()=>{let e=document.getElementById(`home-content-area`);if(!e)return;let t=()=>{c&&clearTimeout(c),F(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){F(n,[],!0);try{F(n,await fetch(`/api/annotations/`+encodeURIComponent(e)).then(e=>e.json()),!0)}catch{F(n,[],!0)}d()}function d(){t.contentEl&&(cg(t.contentEl,V(n),X.markerHidden),f())}kn(()=>{t.contentEl&&lg(t.contentEl,!X.markerHidden)});function f(){if(!t.contentEl){F(s,[],!0);return}F(s,V(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(!X.markerActive||V(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);F(r,{x:h.x,y:h.y,preview:d.length>120?d.slice(0,120)+`…`:d,selectedText:d,contextBefore:f,contextAfter:p},!0),F(i,``)}function m(){F(r,null),window.getSelection()?.removeAllRanges()}async function h(){if(!V(r)||!t.docId)return;let e=V(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:V(r).selectedText,contextBefore:V(r).contextBefore,contextAfter:V(r).contextAfter,note:e})}).then(e=>e.json());F(n,[...V(n),i],!0),m(),d(),X.annotationCounts={...X.annotationCounts,[t.docId]:(X.annotationCounts[t.docId]||0)+1}}catch{}}kn(()=>{if(!t.contentEl)return;let e=t.contentEl,r=e=>{let t=e.target.closest(`mark[data-annotation-id]`);if(!t)return;let r=V(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);F(a,{ann:e,x:o.x,y:o.y,orphan:r},!0)}function _(){c=window.setTimeout(()=>{F(a,null)},1500)}function v(){V(a)&&(F(o,{id:V(a).ann.id,x:V(a).x,y:V(a).y},!0),F(a,null))}async function y(){if(!V(o)||!t.docId)return;let e=V(o).id;try{await fetch(`/api/annotations/${encodeURIComponent(t.docId)}/${e}`,{method:`DELETE`}),F(n,V(n).filter(t=>t.id!==e),!0),F(o,null),d();let r=(X.annotationCounts[t.docId]||0)-1,i={...X.annotationCounts};r<=0?delete i[t.docId]:i[t.docId]=r,X.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(V(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=V(n).find(t=>t.id===e);t&&g(t,r.currentTarget)}}function C(e,r){c&&clearTimeout(c);let i=V(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=V(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=_g();Nr(`mouseup`,on,p);var ee=R(D),O=e=>{var t=dg(),n=L(t),a=z(L(n)),o=L(a,!0);j(a),j(n);var s=z(n,2),c=L(s,!0);j(s);var l=z(s,2);yn(l),vn(l,!0);var u=z(l,2),d=L(u),f=L(d,!0);j(d);var p=z(d,2),g=L(p,!0);j(p),j(u),j(t),B((e,n,i,a)=>{vi(t,`left:${V(r).x??``}px;top:${V(r).y??``}px`),G(o,e),G(c,V(r).preview),J(l,`placeholder`,n),G(f,i),G(g,a)},[()=>Y(`annotation.title`),()=>Y(`annotation.placeholder`),()=>Y(`common.cancel`),()=>Y(`annotation.save_btn`)]),Ni(l,()=>V(i),e=>F(i,e)),H(`click`,d,m),H(`click`,p,h),W(e,t)};K(ee,e=>{V(r)&&e(O)});var k=z(ee,2),te=e=>{var t=pg(),n=L(t),r=z(L(n)),i=L(r,!0);j(r),j(n);var o=z(n,2),s=e=>{var t=fg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`annotation.orphan`)]),W(e,t)};K(o,e=>{V(a).orphan&&e(s)});var l=z(o,2),u=L(l,!0);j(l);var d=z(l,2),f=L(d),p=L(f,!0);j(f),j(d),j(t),B((e,n)=>{vi(t,`left:${V(a).x??``}px;top:${V(a).y??``}px`),G(i,e),G(u,V(a).ann.note),G(p,n)},[()=>T(V(a).ann.createdAt),()=>Y(`annotation.delete_btn`)]),Nr(`mouseenter`,t,()=>{c&&clearTimeout(c)}),Nr(`mouseleave`,t,_),H(`click`,f,v),W(e,t)};K(k,e=>{V(a)&&e(te)});var ne=z(k,2),re=e=>{var t=mg(),n=L(t),r=L(n,!0);j(n);var i=z(n,2),a=L(i),s=L(a,!0);j(a);var c=z(a,2),l=L(c,!0);j(c),j(i),j(t),B((e,n,i)=>{vi(t,`left:${V(o).x??``}px;top:${V(o).y??``}px`),G(r,e),G(s,n),G(l,i)},[()=>Y(`annotation.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`annotation.confirm_btn`)]),H(`click`,a,()=>F(o,null)),H(`click`,c,y),W(e,t)};K(ne,e=>{V(o)&&e(re)});var ie=z(ne,2),A=e=>{var t=gg();q(t,21,()=>V(s),e=>e.id,(e,t)=>{var n=hg(),r=L(n,!0);j(n),B((e,i)=>{J(n,`title`,e),gi(n,1,`w-8 h-8 rounded border-2 shadow text-xs flex items-center justify-center transition-colors shrink-0 ${V(t).orphan?`border-red-600 text-white`:`border-yellow-500`}`),vi(n,`background:${i??``}`),G(r,V(t).orphan?`⚠`:`✎`)},[()=>V(t).orphan?`${Y(`annotation.orphan`)}\n\n${V(t).note}`:V(t).note,()=>w(V(t))]),H(`click`,n,e=>S(V(t).id,e)),Nr(`mouseenter`,n,e=>C(V(t).id,e)),Nr(`mouseleave`,n,_),W(e,n)}),j(t),W(e,t)};return K(ie,e=>{V(s).length>0&&!X.markerHidden&&e(A)}),W(e,D),Je(E)}Pr([`click`]);var yg=`#dc2626`,bg=`#eab308`,xg=`#16a34a`;function Sg(e){let t=Math.max(0,Math.min(1,e))*100;return t>80?xg:t>=60?bg:t>=40?`#f97316`:yg}function Cg(e){let t=Math.max(0,Math.min(1,e))*100;return t>=100?xg:t<30?yg:t<60?`linear-gradient(to right, ${yg} 0%, ${yg} 60%, ${bg} 100%)`:t<80?`linear-gradient(to right, ${yg} 0%, ${bg} 40%, ${bg} 100%)`:`linear-gradient(to right, ${bg} 0%, ${xg} 40%, ${xg} 100%)`}var wg=new class{#e=P(null);get report(){return V(this.#e)}set report(e){F(this.#e,e,!0)}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()}},Tg=U(`<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 Eg(e,t){qe(t,!0);let n=N(()=>wg.report),r=N(()=>V(n)?Math.round(V(n).accuracy*100):0),i=N(()=>V(n)?Y(`accuracy.tooltip`).replace(`{unchanged}`,String(V(n).unchanged)).replace(`{modified}`,String(V(n).modified)).replace(`{missing}`,String(V(n).missing)).replace(`{total}`,String(V(n).total)):``);var a=Wr(),o=R(a),s=e=>{var a=Tg(),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c);j(c);var u=z(c,2),d=L(u);j(u),j(a),B((e,t,n)=>{J(a,`title`,V(i)),G(s,e),vi(l,`background:${t??``}`),vi(u,`color:${n??``}`),G(d,`${V(r)??``}%`)},[()=>Y(`accuracy.label`),()=>Cg(V(n).accuracy),()=>Sg(V(n).accuracy)]),H(`click`,a,function(...e){t.onopen?.apply(this,e)}),W(e,a)};K(o,e=>{V(n)&&V(n).total>0&&e(s)}),W(e,a),Je()}Pr([`click`]);var Dg=/^(\s*(?:\*\*status:\*\*|status:)\s*).+?\s*$/im;function Og(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 kg(e,t){return e.replace(Dg,`$1${t}`)}function Ag(e){return/%5BWORKLOG%5D/i.test(e)}var jg=U(`<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>`),Mg=U(`<div class="px-3 py-4 text-center text-xs text-gray-400"> </div>`),Ng=U(`<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>`),Pg=U(`<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>`),Fg=U(`<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>`),Ig=U(`<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>`),Lg=U(`<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>`),Rg=U(`<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>`),zg=U(`<div class="px-3 py-2 text-xs text-gray-400"> </div>`),Bg=U(`<div class="px-3 py-2 text-xs text-red-500"> </div>`),Vg=U(`<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>`),Hg=U(`<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>`),Ug=U(`<!> <!>`,1),Wg=U(`<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>`),Gg=U(`<p class="text-xs text-red-500"> </p>`),Kg=U(`<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 qg(e,t){qe(t,!0);let n=N(()=>wg.report),r=N(()=>Og(t.content)===`SuperSeeded`),i=P(``),a=P(!1),o=P(!1),s=P(``),c=P(null),l=P(I([])),u=P(I([])),d=P(!1),f=P(``);kn(()=>{t.open||(F(o,!1),F(s,``),F(i,``))});function p(e){F(i,Y(`common.error_prefix`)+e),setTimeout(()=>{F(i,``)},5e3)}function m(){return!V(n)||V(n).total===0?``:`<span class="font-semibold">${Math.round(V(n).accuracy*100)}%</span> · ${V(n).unchanged}/${V(n).total} ${Y(`metadata.status.unchanged`)} · ${V(n).modified} ${Y(`metadata.status.modified`)} · ${V(n).missing} ${Y(`metadata.status.missing`)}`}async function h(){F(a,!0);try{await wg.refresh(t.docId)}catch(e){p(e instanceof Error?e.message:String(e))}finally{F(a,!1)}}async function g(e){try{await wg.removePath(t.docId,e),V(o)&&y(V(s))}catch(e){p(e instanceof Error?e.message:String(e))}}async function _(e){try{await wg.addPath(t.docId,e),V(o)&&y(V(s))}catch(e){p(e instanceof Error?e.message:String(e))}}function v(){F(o,!V(o)),V(o)&&y(``)}async function y(e){F(d,!0),F(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();F(s,r.current||``,!0),F(c,r.parent,!0),F(l,r.dirs||[],!0);let i=new Set((V(n)?.items||[]).map(e=>e.path));F(u,(r.files||[]).filter(e=>!i.has(e.path)),!0)}catch(e){F(f,e instanceof Error?e.message:String(e),!0)}finally{F(d,!1)}}function b(){V(c)!==null&&y(V(c))}var x=Wr(),S=R(x),C=e=>{var p=Kg(),x=L(p),S=L(x),C=L(S),w=L(C),T=z(L(w));j(w);var E=z(w,2),D=L(E,!0);j(E),j(C);var ee=z(C,2);j(S);var O=z(S,2);ai(O,m,!0),j(O);var k=z(O,2),te=e=>{var t=jg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`metadata.readonly_banner`)]),W(e,t)};K(k,e=>{V(r)&&e(te)});var ne=z(k,2),re=L(ne),ie=L(re),A=e=>{var t=Mg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`metadata.empty`)]),W(e,t)},ae=e=>{var t=Wr();q(R(t),17,()=>V(n).items,e=>e.path,(e,t)=>{var n=Lg(),i=L(n),a=L(i),o=L(a,!0);j(a),j(i);var s=z(i,2),c=e=>{var t=Ng(),n=z(L(t));j(t),B(e=>G(n,` ${e??``}`),[()=>Y(`metadata.status.unchanged`)]),W(e,t)},l=e=>{var t=Pg(),n=z(L(t));j(t),B(e=>G(n,` ${e??``}`),[()=>Y(`metadata.status.modified`)]),W(e,t)},u=e=>{var t=Fg(),n=z(L(t));j(t),B(e=>G(n,` ${e??``}`),[()=>Y(`metadata.status.missing`)]),W(e,t)};K(s,e=>{V(t).status===`unchanged`?e(c):V(t).status===`modified`?e(l,1):e(u,-1)});var d=z(s,2),f=e=>{var n=Ig();B(e=>J(n,`title`,e),[()=>Y(`metadata.remove`)]),H(`click`,n,()=>g(V(t).path)),W(e,n)};K(d,e=>{V(r)||e(f)}),j(n),B(()=>{J(a,`title`,V(t).path),G(o,V(t).path)}),W(e,n)}),W(e,t)};K(ie,e=>{!V(n)||V(n).items.length===0?e(A):e(ae,-1)}),j(re),j(ne);var oe=z(ne,2),se=e=>{var t=Rg(),n=L(t),r=z(L(n));j(n);var i=z(n,2),o=z(L(i));j(i),j(t),B((e,t)=>{G(r,` ${e??``}`),i.disabled=V(a),G(o,` ${t??``}`)},[()=>Y(`metadata.add`),()=>Y(`metadata.refresh`)]),H(`click`,n,v),H(`click`,i,h),W(e,t)};K(oe,e=>{V(r)||e(se)});var ce=z(oe,2),le=e=>{var t=Wg(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n);var p=z(n,2),m=L(p),h=e=>{var t=zg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},g=e=>{var t=Bg(),n=L(t,!0);j(t),B(()=>G(n,V(f))),W(e,t)},v=e=>{var t=zg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.empty_dir`)]),W(e,t)},x=e=>{var t=Ug(),n=R(t);q(n,17,()=>V(l),e=>e.path,(e,t)=>{var n=Vg(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>y(V(t).path)),W(e,n)}),q(z(n,2),17,()=>V(u),e=>e.path,(e,t)=>{var n=Hg(),r=z(L(n),2),i=L(r,!0);j(r),Ie(2),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>_(V(t).path)),W(e,n)}),W(e,t)};K(m,e=>{V(d)?e(h):V(f)?e(g,1):V(l).length===0&&V(u).length===0?e(v,2):e(x,-1)}),j(p),j(t),B(e=>{r.disabled=V(c)===null,G(i,e),G(o,V(s)?`/`+V(s):`/ (sourceRoot)`)},[()=>Y(`common.up`)]),H(`click`,r,b),W(e,t)};K(ce,e=>{V(o)&&e(le)});var ue=z(ce,2),de=e=>{var t=Gg(),n=L(t,!0);j(t),B(()=>G(n,V(i))),W(e,t)};K(ue,e=>{V(i)&&e(de)});var fe=z(ue,2),pe=L(fe),me=L(pe,!0);j(pe),j(fe),j(x),j(p),B((e,t,n,r)=>{G(T,` ${e??``}`),G(D,t),J(ee,`title`,n),G(me,r)},[()=>Y(`metadata.title`),()=>Y(`metadata.subtitle`),()=>Y(`common.close`),()=>Y(`common.close`)]),H(`click`,p,e=>{e.target===e.currentTarget&&t.onclose()}),H(`click`,ee,function(...e){t.onclose?.apply(this,e)}),H(`click`,pe,function(...e){t.onclose?.apply(this,e)}),W(e,p)};K(S,e=>{t.open&&e(C)}),W(e,x),Je()}Pr([`click`]);var Jg=U(`<div class="text-xs font-medium text-amber-700 dark:text-amber-300"> </div>`),Yg=U(`<div> </div>`),Xg=U(`<button type="button"><div class="flex items-center gap-2 font-semibold text-gray-800 dark:text-gray-100"><span class="font-mono text-blue-600 dark:text-blue-400"> </span> <span class="truncate"> </span></div> <div class="mt-1 text-gray-500 dark:text-gray-400"> </div></button>`),Zg=U(`<div class="mt-3 flex gap-2 overflow-x-auto pb-1"></div>`),Qg=U(`<p class="mt-3 text-sm text-gray-500 dark:text-gray-400"> </p>`),$g=U(`<div class="flex h-full items-center justify-center text-sm text-gray-500 dark:text-gray-400"> </div>`),e_=U(`<div class="m-5 rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-950/30 dark:text-red-300"> </div>`),t_=U(`<div class="mx-5 mt-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-2 text-sm text-amber-800 dark:border-amber-800 dark:bg-amber-950/30 dark:text-amber-200"> </div>`),n_=U(`<button type="button" class="mt-0.5 inline-flex h-7 w-8 items-center justify-center rounded-md border border-blue-200 bg-white font-mono text-sm font-bold text-blue-600 transition-colors hover:bg-blue-50 disabled:cursor-wait disabled:opacity-50 dark:border-blue-800 dark:bg-gray-950 dark:text-blue-300 dark:hover:bg-blue-950/40"> </button>`),r_=U(`<div><span> </span> <pre class="m-0 whitespace-pre-wrap break-words px-2 py-0.5 font-mono"> </pre></div> <div class="flex items-start justify-center border-r border-gray-200 bg-gray-50 px-1 py-0.5 dark:border-gray-800 dark:bg-gray-900/70"><!></div> <div><span> </span> <pre class="m-0 whitespace-pre-wrap break-words px-2 py-0.5 font-mono"> </pre></div>`,1),i_=U(`<!> <div class="h-full overflow-auto p-5"><div class="grid min-w-[980px] grid-cols-[minmax(0,1fr)_3.25rem_minmax(0,1fr)] overflow-hidden rounded-lg border border-gray-200 text-xs dark:border-gray-800"><div class="border-b border-r border-gray-200 bg-gray-100 px-3 py-2 font-semibold text-gray-700 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-200"> </div> <div class="border-b border-r border-gray-200 bg-gray-100 px-2 py-2 text-center font-semibold text-gray-400 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-500"></div> <div class="border-b border-gray-200 bg-gray-100 px-3 py-2 font-semibold text-gray-700 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-200"> </div> <!></div></div>`,1),a_=U(`<div data-testid="versions-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"><div class="flex h-[90vh] w-full max-w-7xl flex-col overflow-hidden rounded-xl border border-gray-200 bg-white shadow-2xl dark:border-gray-700 dark:bg-gray-950"><header class="flex shrink-0 items-start justify-between gap-4 border-b border-gray-200 px-5 py-4 dark:border-gray-800"><div><h2 class="text-lg font-semibold text-gray-900 dark:text-gray-50"><i class="fa-solid fa-code-branch mr-2"></i> </h2> <p class="mt-1 text-xs text-gray-500 dark:text-gray-400"> </p></div> <button type="button" class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm text-gray-600 transition-colors hover:bg-gray-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-gray-800"><i class="fa-solid fa-xmark"></i></button></header> <div class="shrink-0 border-b border-gray-200 px-5 py-3 dark:border-gray-800"><div class="flex flex-wrap items-end gap-3"><label class="text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400"> <input type="number" class="mt-1 block w-28 rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-800 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100"/></label> <button type="button" class="rounded-lg bg-blue-600 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-blue-700 disabled:opacity-50"><i class="fa-solid fa-arrows-rotate mr-1"></i> </button> <button type="button" class="rounded-lg bg-green-600 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-green-700 disabled:cursor-not-allowed disabled:opacity-50"><i class="fa-solid fa-floppy-disk mr-1"></i> </button> <div class="text-xs text-gray-500 dark:text-gray-400"> </div> <!> <!></div> <!></div> <section class="min-h-0 flex-1 overflow-hidden"><!></section></div></div>`);function o_(e,t){qe(t,!0);let n=3650,r=P(30),i=P(30),a=P(!1),o=P(``),s=P(null),c=P(null),l=P(null),u=P(``),d=``,f=P(``),p=P(!1),m=N(()=>V(l)?.headContent??t.content),h=N(()=>V(f)),g=N(()=>V(f)!==V(m)),_=N(()=>T(V(l)?.baseContent??``,V(h))),v=N(()=>V(_).rows),y=N(()=>V(l)?.baseContent!==null&&V(l)?.baseContent!==void 0);kn(()=>{t.docId,F(f,t.content,!0)});function b(e){return Number.isFinite(e)?Math.max(1,Math.min(n,Math.floor(e))):30}function x(e){return e.length?e.replace(/\r\n/g,`
98
100
  `).split(`
99
101
  `):[]}function S(){return{text:``,lineNumber:null,kind:`empty`}}function C(e,t){let n=[],r=[],i=Math.max(e.length,t.length);for(let a=0;a<i;a+=1){let i=e[a],o=t[a];if(i===o)n.push({left:{text:i??``,lineNumber:i===void 0?null:a+1,kind:i===void 0?`empty`:`context`},right:{text:o??``,lineNumber:o===void 0?null:a+1,kind:o===void 0?`empty`:`context`},hunkId:null,showApply:!1});else{let e={id:r.length,oldStart:a,oldDeleteCount:i===void 0?0:1,newStart:a,newDeleteCount:o===void 0?0:1,oldLines:i===void 0?[]:[i],newLines:o===void 0?[]:[o]};r.push(e),n.push({left:i===void 0?S():{text:i,lineNumber:a+1,kind:`removed`},right:o===void 0?S():{text:o,lineNumber:a+1,kind:`added`},hunkId:e.id,showApply:!0})}}return{rows:n,hunks:r}}function w(e,t,n){let r=n.filter(e=>e.kind===`removed`),i=n.filter(e=>e.kind===`added`),a={id:t.length,oldStart:r[0]?r[0].oldLine-1:i[0]?.oldIndex??0,oldDeleteCount:r.length,newStart:i[0]?i[0].newLine-1:r[0]?.newIndex??0,newDeleteCount:i.length,oldLines:r.map(e=>e.text),newLines:i.map(e=>e.text)};t.push(a);let o=Math.max(r.length,i.length);for(let t=0;t<o;t+=1){let n=r[t],o=i[t];e.push({left:n?{text:n.text,lineNumber:n.oldLine,kind:`removed`}:S(),right:o?{text:o.text,lineNumber:o.newLine,kind:`added`}:S(),hunkId:a.id,showApply:t===0})}}function T(e,t){let n=x(e),r=x(t);if(n.length*r.length>4e6)return C(n,r);let i=r.length+1,a=new Uint32Array((n.length+1)*i);for(let e=n.length-1;e>=0;--e)for(let t=r.length-1;t>=0;--t){let o=e*i+t;a[o]=n[e]===r[t]?a[(e+1)*i+t+1]+1:Math.max(a[(e+1)*i+t],a[e*i+t+1])}let o=[],s=0,c=0;for(;s<n.length||c<r.length;)s<n.length&&c<r.length&&n[s]===r[c]?(o.push({kind:`context`,oldText:n[s],newText:r[c],oldLine:s+1,newLine:c+1}),s+=1,c+=1):c<r.length&&(s===n.length||a[s*i+c+1]>=a[(s+1)*i+c])?(o.push({kind:`added`,text:r[c],newLine:c+1,oldIndex:s}),c+=1):s<n.length&&(o.push({kind:`removed`,text:n[s],oldLine:s+1,newIndex:c}),s+=1);let l=[],u=[],d=[];for(let e of o)e.kind===`context`?(d.length&&(w(l,u,d),d=[]),l.push({left:{text:e.oldText,lineNumber:e.oldLine,kind:`context`},right:{text:e.newText,lineNumber:e.newLine,kind:`context`},hunkId:null,showApply:!1})):d.push(e);return d.length&&w(l,u,d),{rows:l,hunks:u}}function E(e){return e===`added`?`bg-green-50 text-green-900 dark:bg-green-950/40 dark:text-green-100`:e===`removed`?`bg-red-50 text-red-900 dark:bg-red-950/40 dark:text-red-100`:e===`empty`?`bg-gray-50 dark:bg-gray-900/60`:`bg-white text-gray-800 dark:bg-gray-950 dark:text-gray-200`}function D(e){return e===`added`?`bg-green-100 text-green-700 dark:bg-green-950 dark:text-green-300`:e===`removed`?`bg-red-100 text-red-700 dark:bg-red-950 dark:text-red-300`:`bg-gray-100 text-gray-400 dark:bg-gray-900 dark:text-gray-500`}function ee(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function O(e){return V(u)===e||V(l)?.baseRef===e}function k(e){return e===null?null:V(_).hunks.find(t=>t.id===e)||null}async function te(e){if(V(c)!==null)return;let n=x(V(f)||t.content);if(n.slice(e.newStart,e.newStart+e.newDeleteCount).join(`
100
102
  `)!==e.newLines.join(`
101
103
  `)){F(s,{text:Y(`versions.apply_stale`),cls:`text-red-600 dark:text-red-400`},!0);return}F(c,e.id,!0),F(s,null);try{F(f,[...n.slice(0,e.newStart),...e.oldLines,...n.slice(e.newStart+e.newDeleteCount)].join(`
102
- `),!0),F(s,{text:Y(`versions.apply_success`),cls:`text-green-600 dark:text-green-400`},!0)}catch(e){F(s,{text:Y(`versions.apply_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-600 dark:text-red-400`},!0)}finally{F(c,null)}}async function ne(){if(!(!V(g)||V(p))){F(p,!0),F(s,null);try{await t.onsave(V(f)),d=``,await A(V(u)),F(s,{text:Y(`versions.save_success`),cls:`text-green-600 dark:text-green-400`},!0)}catch(e){F(s,{text:Y(`versions.save_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-600 dark:text-red-400`},!0)}finally{F(p,!1)}}}function re(){F(f,t.content,!0),F(s,null),F(c,null),F(p,!1)}function ie(){re(),t.onclose()}async function A(e=V(u)){let n=b(V(i)),r=`${t.docId}:${n}:${e||`default`}`;if(!t.open||V(a)||r===d)return;F(a,!0),F(o,``);let c=V(g);c||F(s,null);try{let i=new URLSearchParams({documentId:t.docId,sinceDays:String(n)});e&&i.set(`baseRef`,e);let a=await fetch(`/api/git/document-versions?${i.toString()}`),o=await a.json();if(!a.ok||!o.ok)throw Error(o.message||o.error||Y(`versions.load_failed`));let s=o;F(l,s,!0),F(u,s.baseRef,!0),c||F(f,s.headContent??t.content,!0),d=r}catch(e){F(o,e instanceof Error?e.message:String(e),!0),F(l,null),d=``}finally{F(a,!1)}}function ae(){F(i,b(Number(V(r))),!0),F(r,V(i),!0),F(u,``),d=``,A(``)}function oe(e){F(u,e,!0),d=``,A(e)}kn(()=>{if(!t.open){re(),d=``,F(u,``);return}t.docId,V(i),A()});var se=Wr(),ce=R(se),le=e=>{var t=r_(),i=L(t),u=L(i),d=L(u),f=L(d),m=z(L(f),1,!0);j(f);var h=z(f,2),_=L(h,!0);j(h),j(d);var b=z(d,2);j(u);var x=z(u,2),S=L(x),C=L(S),w=L(C),T=z(w);Di(T),J(T,`min`,1),J(T,`max`,n),j(C);var re=z(C,2),A=z(L(re),1,!0);j(re);var se=z(re,2),ce=z(L(se),1,!0);j(se);var le=z(se,2),ue=L(le,!0);j(le);var de=z(le,2),fe=e=>{var t=Kg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.unsaved_changes`)]),W(e,t)};K(de,e=>{V(g)&&e(fe)});var pe=z(de,2),me=e=>{var t=qg(),n=L(t,!0);j(t),B(()=>{gi(t,1,`text-xs font-medium ${V(s).cls??``}`),G(n,V(s).text)}),W(e,t)};K(pe,e=>{V(s)&&e(me)}),j(S);var he=z(S,2),ge=e=>{var t=Yg();q(t,21,()=>V(l).commits,e=>e.hash,(e,t)=>{var n=Jg(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var c=z(r,2),l=L(c);j(c),j(n),B((e,r,i)=>{J(n,`title`,e),gi(n,1,`min-w-64 rounded-lg border px-3 py-2 text-left text-xs transition-colors ${r??``}`),G(a,V(t).shortHash),G(s,V(t).subject),G(l,`${i??``} · ${V(t).author??``}`)},[()=>Y(`versions.select_commit`).replace(`{hash}`,V(t).shortHash),()=>O(V(t).hash)?`border-blue-500 bg-blue-50 ring-2 ring-blue-500/30 dark:border-blue-400 dark:bg-blue-950/40`:`border-gray-200 bg-gray-50 hover:border-blue-300 hover:bg-blue-50/70 dark:border-gray-700 dark:bg-gray-900 dark:hover:border-blue-700 dark:hover:bg-blue-950/30`,()=>ee(V(t).date)]),H(`click`,n,()=>oe(V(t).hash)),W(e,n)}),j(t),W(e,t)},_e=e=>{var t=Xg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.no_commits`)]),W(e,t)};K(he,e=>{V(l)?.commits?.length?e(ge):V(l)&&!V(a)&&e(_e,1)}),j(x);var ve=z(x,2),ye=L(ve),be=e=>{var t=Zg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},xe=e=>{var t=Qg(),n=L(t,!0);j(t),B(()=>G(n,V(o))),W(e,t)},Se=e=>{var t=n_(),n=R(t),r=e=>{var t=$g(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.no_head_content`)]),W(e,t)};K(n,e=>{V(y)||e(r)});var i=z(n,2),a=L(i),o=L(a),s=L(o,!0);j(o);var u=z(o,4),d=L(u,!0);j(u),q(z(u,2),17,()=>V(v),Xr,(e,t)=>{var n=t_(),r=R(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var l=z(r,2),u=L(l),d=e=>{let n=N(()=>k(V(t).hunkId));var r=Wr(),i=R(r),a=e=>{var t=e_(),r=L(t,!0);j(t),B(e=>{t.disabled=V(c)!==null,J(t,`title`,e),G(r,V(c)===V(n).id?`...`:`<`)},[()=>Y(`versions.apply_hunk`)]),H(`click`,t,()=>te(V(n))),W(e,t)};K(i,e=>{V(n)&&e(a)}),W(e,r)};K(u,e=>{V(t).showApply&&e(d)}),j(l);var f=z(l,2),p=L(f),m=L(p,!0);j(p);var h=z(p,2),g=L(h,!0);j(h),j(f),B((e,n,o,c)=>{gi(r,1,`grid grid-cols-[4rem_1fr] border-r border-gray-200 font-mono leading-5 dark:border-gray-800 ${e??``}`),gi(i,1,`select-none px-2 py-0.5 text-right ${n??``}`),G(a,V(t).right.lineNumber??``),G(s,V(t).right.text),gi(f,1,`grid grid-cols-[4rem_1fr] font-mono leading-5 ${o??``}`),gi(p,1,`select-none px-2 py-0.5 text-right ${c??``}`),G(m,V(t).left.lineNumber??``),G(g,V(t).left.text)},[()=>E(V(t).right.kind),()=>D(V(t).right.kind),()=>E(V(t).left.kind),()=>D(V(t).left.kind)]),W(e,n)}),j(a),j(i),B((e,t)=>{G(s,e),G(d,t)},[()=>Y(V(g)?`versions.right_title_draft`:`versions.right_title`),()=>Y(`versions.left_title`).replace(`{ref}`,V(l).baseRef)]),W(e,t)},Ce=e=>{var t=Zg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.path_pending`)]),W(e,t)};K(ye,e=>{V(a)?e(be):V(o)?e(xe,1):V(l)?e(Se,2):e(Ce,-1)}),j(ve),j(i),j(t),B((e,t,n,r,i,o,s)=>{G(m,e),G(_,t),J(b,`title`,n),G(w,`${r??``} `),re.disabled=V(a),G(A,i),se.disabled=!V(g)||V(p)||V(a),G(ce,o),G(ue,s)},[()=>Y(`versions.title`),()=>V(l)?.relativePath||Y(`versions.path_pending`),()=>Y(`common.close`),()=>Y(`versions.period_label`),()=>Y(`versions.refresh`),()=>V(p)?Y(`versions.saving`):Y(`common.save`),()=>Y(`versions.base_ref`).replace(`{ref}`,V(l)?.baseRef||`HEAD`)]),H(`click`,t,e=>{e.target===e.currentTarget&&ie()}),H(`click`,b,ie),Ni(T,()=>V(r),e=>F(r,e)),H(`click`,re,ae),H(`click`,se,ne),W(e,t)};K(ce,e=>{t.open&&e(le)}),W(e,se),Je()}Pr([`click`]);function a_(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 o_(e){return a_(e).normalized}function s_(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 c_(e){return e>=7?2:+(e>=4)}function l_(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function u_(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function d_(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 o_(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=`
104
+ `),!0),F(s,{text:Y(`versions.apply_success`),cls:`text-green-600 dark:text-green-400`},!0)}catch(e){F(s,{text:Y(`versions.apply_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-600 dark:text-red-400`},!0)}finally{F(c,null)}}async function ne(){if(!(!V(g)||V(p))){F(p,!0),F(s,null);try{await t.onsave(V(f)),d=``,await A(V(u)),F(s,{text:Y(`versions.save_success`),cls:`text-green-600 dark:text-green-400`},!0)}catch(e){F(s,{text:Y(`versions.save_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-600 dark:text-red-400`},!0)}finally{F(p,!1)}}}function re(){F(f,t.content,!0),F(s,null),F(c,null),F(p,!1)}function ie(){re(),t.onclose()}async function A(e=V(u)){let n=b(V(i)),r=`${t.docId}:${n}:${e||`default`}`;if(!t.open||V(a)||r===d)return;F(a,!0),F(o,``);let c=V(g);c||F(s,null);try{let i=new URLSearchParams({documentId:t.docId,sinceDays:String(n)});e&&i.set(`baseRef`,e);let a=await fetch(`/api/git/document-versions?${i.toString()}`),o=await a.json();if(!a.ok||!o.ok)throw Error(o.message||o.error||Y(`versions.load_failed`));let s=o;F(l,s,!0),F(u,s.baseRef,!0),c||F(f,s.headContent??t.content,!0),d=r}catch(e){F(o,e instanceof Error?e.message:String(e),!0),F(l,null),d=``}finally{F(a,!1)}}function ae(){F(i,b(Number(V(r))),!0),F(r,V(i),!0),F(u,``),d=``,A(``)}function oe(e){F(u,e,!0),d=``,A(e)}kn(()=>{if(!t.open){re(),d=``,F(u,``);return}t.docId,V(i),A()});var se=Wr(),ce=R(se),le=e=>{var t=a_(),i=L(t),u=L(i),d=L(u),f=L(d),m=z(L(f),1,!0);j(f);var h=z(f,2),_=L(h,!0);j(h),j(d);var b=z(d,2);j(u);var x=z(u,2),S=L(x),C=L(S),w=L(C),T=z(w);Di(T),J(T,`min`,1),J(T,`max`,n),j(C);var re=z(C,2),A=z(L(re),1,!0);j(re);var se=z(re,2),ce=z(L(se),1,!0);j(se);var le=z(se,2),ue=L(le,!0);j(le);var de=z(le,2),fe=e=>{var t=Jg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.unsaved_changes`)]),W(e,t)};K(de,e=>{V(g)&&e(fe)});var pe=z(de,2),me=e=>{var t=Yg(),n=L(t,!0);j(t),B(()=>{gi(t,1,`text-xs font-medium ${V(s).cls??``}`),G(n,V(s).text)}),W(e,t)};K(pe,e=>{V(s)&&e(me)}),j(S);var he=z(S,2),ge=e=>{var t=Zg();q(t,21,()=>V(l).commits,e=>e.hash,(e,t)=>{var n=Xg(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var c=z(r,2),l=L(c);j(c),j(n),B((e,r,i)=>{J(n,`title`,e),gi(n,1,`min-w-64 rounded-lg border px-3 py-2 text-left text-xs transition-colors ${r??``}`),G(a,V(t).shortHash),G(s,V(t).subject),G(l,`${i??``} · ${V(t).author??``}`)},[()=>Y(`versions.select_commit`).replace(`{hash}`,V(t).shortHash),()=>O(V(t).hash)?`border-blue-500 bg-blue-50 ring-2 ring-blue-500/30 dark:border-blue-400 dark:bg-blue-950/40`:`border-gray-200 bg-gray-50 hover:border-blue-300 hover:bg-blue-50/70 dark:border-gray-700 dark:bg-gray-900 dark:hover:border-blue-700 dark:hover:bg-blue-950/30`,()=>ee(V(t).date)]),H(`click`,n,()=>oe(V(t).hash)),W(e,n)}),j(t),W(e,t)},_e=e=>{var t=Qg(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.no_commits`)]),W(e,t)};K(he,e=>{V(l)?.commits?.length?e(ge):V(l)&&!V(a)&&e(_e,1)}),j(x);var ve=z(x,2),ye=L(ve),be=e=>{var t=$g(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},xe=e=>{var t=e_(),n=L(t,!0);j(t),B(()=>G(n,V(o))),W(e,t)},Se=e=>{var t=i_(),n=R(t),r=e=>{var t=t_(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.no_head_content`)]),W(e,t)};K(n,e=>{V(y)||e(r)});var i=z(n,2),a=L(i),o=L(a),s=L(o,!0);j(o);var u=z(o,4),d=L(u,!0);j(u),q(z(u,2),17,()=>V(v),Xr,(e,t)=>{var n=r_(),r=R(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var l=z(r,2),u=L(l),d=e=>{let n=N(()=>k(V(t).hunkId));var r=Wr(),i=R(r),a=e=>{var t=n_(),r=L(t,!0);j(t),B(e=>{t.disabled=V(c)!==null,J(t,`title`,e),G(r,V(c)===V(n).id?`...`:`<`)},[()=>Y(`versions.apply_hunk`)]),H(`click`,t,()=>te(V(n))),W(e,t)};K(i,e=>{V(n)&&e(a)}),W(e,r)};K(u,e=>{V(t).showApply&&e(d)}),j(l);var f=z(l,2),p=L(f),m=L(p,!0);j(p);var h=z(p,2),g=L(h,!0);j(h),j(f),B((e,n,o,c)=>{gi(r,1,`grid grid-cols-[4rem_1fr] border-r border-gray-200 font-mono leading-5 dark:border-gray-800 ${e??``}`),gi(i,1,`select-none px-2 py-0.5 text-right ${n??``}`),G(a,V(t).right.lineNumber??``),G(s,V(t).right.text),gi(f,1,`grid grid-cols-[4rem_1fr] font-mono leading-5 ${o??``}`),gi(p,1,`select-none px-2 py-0.5 text-right ${c??``}`),G(m,V(t).left.lineNumber??``),G(g,V(t).left.text)},[()=>E(V(t).right.kind),()=>D(V(t).right.kind),()=>E(V(t).left.kind),()=>D(V(t).left.kind)]),W(e,n)}),j(a),j(i),B((e,t)=>{G(s,e),G(d,t)},[()=>Y(V(g)?`versions.right_title_draft`:`versions.right_title`),()=>Y(`versions.left_title`).replace(`{ref}`,V(l).baseRef)]),W(e,t)},Ce=e=>{var t=$g(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`versions.path_pending`)]),W(e,t)};K(ye,e=>{V(a)?e(be):V(o)?e(xe,1):V(l)?e(Se,2):e(Ce,-1)}),j(ve),j(i),j(t),B((e,t,n,r,i,o,s)=>{G(m,e),G(_,t),J(b,`title`,n),G(w,`${r??``} `),re.disabled=V(a),G(A,i),se.disabled=!V(g)||V(p)||V(a),G(ce,o),G(ue,s)},[()=>Y(`versions.title`),()=>V(l)?.relativePath||Y(`versions.path_pending`),()=>Y(`common.close`),()=>Y(`versions.period_label`),()=>Y(`versions.refresh`),()=>V(p)?Y(`versions.saving`):Y(`common.save`),()=>Y(`versions.base_ref`).replace(`{ref}`,V(l)?.baseRef||`HEAD`)]),H(`click`,t,e=>{e.target===e.currentTarget&&ie()}),H(`click`,b,ie),Ni(T,()=>V(r),e=>F(r,e)),H(`click`,re,ae),H(`click`,se,ne),W(e,t)};K(ce,e=>{t.open&&e(le)}),W(e,se),Je()}Pr([`click`]);function s_(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 c_(e){return s_(e).normalized}function l_(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 u_(e){return e>=7?2:+(e>=4)}function d_(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function f_(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function p_(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 c_(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=`
103
105
  <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">
104
106
  <span class="text-gray-400 select-none" aria-hidden="true">🔎</span>
105
107
  <input type="text" id="ld-local-search-input" autocomplete="off"
106
108
  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"
107
- placeholder="${l_(a)}" />
109
+ placeholder="${d_(a)}" />
108
110
  <button type="button" id="ld-local-search-clear"
109
111
  class="hidden text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 shrink-0 px-1"
110
- title="${l_(o)}" aria-label="${l_(o)}">✕</button>
112
+ title="${d_(o)}" aria-label="${d_(o)}">✕</button>
111
113
  </div>
112
114
  <div id="ld-local-search-results" class="hidden">
113
115
  <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>
114
116
  <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>
115
- </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=c_(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||s_(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=o_(t),i=r.split(` `).filter(Boolean);if(!i.length){u.classList.add(`hidden`);return}let a=o_(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${u_(e)}\\b`)})});let c=Array.from(s).sort((e,t)=>t.length-e.length),p=RegExp(`(${c.map(e=>e.startsWith(`\\b`)?e:u_(e)).join(`|`)})`,`g`),g=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){return 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}=a_(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+=l_(t.slice(l,n)),c+=`<mark class="ld-local-mark" id="ld-local-match-${y++}">${l_(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+=l_(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=o_(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>${l_(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 f_={codeLabel:`Code block.`,imageLabel:`Image: {alt}.`,diagramLabel:`Diagram.`,tableLabel:`Table.`,readCode:!1},p_=new Set([`H1`,`H2`,`H3`,`H4`,`H5`,`H6`]);function m_(e){return e.classList.contains(`mermaid`)||e.querySelector(`.mermaid`)!==null}function h_(e){let t=[],n=/[^.!?…\n]*(?:[.!?…]+|\n+|$)/g,r;for(;(r=n.exec(e))!==null;){if(r[0].length===0){if(n.lastIndex>=e.length)break;n.lastIndex++;continue}let i=r[0],a=i.length-i.trimStart().length,o=i.trim();if(o){let e=r.index+a;t.push({text:o,start:e,end:e+o.length})}if(n.lastIndex>=e.length)break}return t}function g_(e,t){let n=(e.textContent??``).replace(/\s+/g,` `).trim();if(!n)return null;let r=h_(n);return{type:t,el:e,spokenText:n,sentences:r.length?r:[{text:n,start:0,end:n.length}],highlightWhole:!1}}function __(e,t,n){let r=n.trim();return r?{type:t,el:e,spokenText:r,sentences:[{text:r,start:0,end:r.length}],highlightWhole:!0}:null}function v_(e,t,n){for(let r of Array.from(e.children)){let e=r.tagName;if(m_(r)){y_(n,__(r,`diagram`,t.diagramLabel));continue}if(e===`PRE`||e===`DIV`&&r.querySelector(`:scope > pre`)){y_(n,t.readCode?g_(r,`code`):__(r,`code`,t.codeLabel));continue}if(e===`TABLE`){y_(n,__(r,`table`,t.tableLabel));continue}if(e===`IMG`||e===`FIGURE`&&r.querySelector(`img`)){let i=(e===`IMG`?r:r.querySelector(`img`))?.getAttribute(`alt`)?.trim()??``;y_(n,__(r,`image`,t.imageLabel.includes(`{alt}`)?i?t.imageLabel.replace(`{alt}`,i):t.imageLabel.replace(/:?\s*\{alt\}/,``).trim()||`Image.`:t.imageLabel));continue}if(p_.has(e)){y_(n,g_(r,`heading`));continue}if(e===`P`){y_(n,g_(r,`paragraph`));continue}if(e===`LI`){y_(n,g_(r,`list-item`));continue}if(e===`BLOCKQUOTE`){r.querySelector(`:scope > p, :scope > ul, :scope > ol`)?v_(r,t,n):y_(n,g_(r,`quote`));continue}if(e===`UL`||e===`OL`||e===`DIV`||e===`SECTION`||e===`DETAILS`){v_(r,t,n);continue}}}function y_(e,t){t&&e.push(t)}function b_(e,t={}){let n={...f_,...t},r=[];return v_(e,n,r),r}var x_=`tts-sentence`;function S_(){if(typeof document>`u`||document.getElementById(`tts-highlight-style`))return;let e=document.createElement(`style`);e.id=`tts-highlight-style`,e.textContent=`::highlight(${x_}){background-color:rgba(250,204,21,0.45);color:inherit;}.dark ::highlight(${x_}){background-color:rgba(250,204,21,0.35);}`,document.head.appendChild(e)}function C_(e,t,n){let r=[],i=!0,a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),o=a.nextNode();for(;o;){let e=o.data;for(let t=0;t<e.length;t++)/\s/.test(e[t])?i||=(r.push({node:o,offset:t}),!0):(r.push({node:o,offset:t}),i=!1);o=a.nextNode()}if(t>=r.length)return null;let s=r[t],c=document.createRange();if(c.setStart(s.node,s.offset),n<r.length){let e=r[n];c.setEnd(e.node,e.offset)}else{let e=r[r.length-1];c.setEnd(e.node,e.offset+1)}return c}var w_=new class{#e=P(`idle`);get status(){return V(this.#e)}set status(e){F(this.#e,e,!0)}#t=P(-1);get index(){return V(this.#t)}set index(e){F(this.#t,e,!0)}#n=P(0);get total(){return V(this.#n)}set total(e){F(this.#n,e,!0)}#r=P(null);get error(){return V(this.#r)}set error(e){F(this.#r,e,!0)}units=[];ctx=null;source=null;cache=new Map;token=0;voice;speed;language=`en`;fallbackEl=null;get active(){return this.status===`playing`||this.status===`paused`||this.status===`loading`}async start(e,t={}){this.stop();let{voice:n,speed:r,language:i,...a}=t;this.voice=n,this.speed=r,this.language=i??`en`;let o=b_(e,a);if(this.units=o.flatMap(e=>e.highlightWhole?[{seg:e,text:e.spokenText,start:0,end:e.spokenText.length,whole:!0}]:e.sentences.map(t=>({seg:e,text:t.text,start:t.start,end:t.end,whole:!1}))),this.total=this.units.length,this.units.length===0)return;this.ctx=new AudioContext,this.error=null;let s=++this.token;this.status=`loading`,await this.playFrom(0,s)}async playFrom(e,t){if(t!==this.token)return;if(e>=this.units.length){this.stop();return}this.index=e,this.highlight(this.units[e]);let n;try{n=await this.audioFor(e)}catch(e){if(t!==this.token)return;this.error=e instanceof Error?e.message:String(e),this.stop(!1);return}if(t!==this.token||!this.ctx)return;this.prefetch(e+1);let r=this.ctx.createBufferSource();r.buffer=n,r.connect(this.ctx.destination),r.onended=()=>{t===this.token&&(this.source=null,this.playFrom(e+1,t))},this.source=r,this.status=`playing`,r.start()}audioFor(e){let t=this.cache.get(e);return t||(t=this.fetchAudio(this.units[e].text),this.cache.set(e,t)),t}prefetch(e){e<this.units.length&&!this.cache.has(e)&&this.cache.set(e,this.fetchAudio(this.units[e].text).catch(e=>Promise.reject(e)))}async fetchAudio(e){let t=await fetch(`/api/tts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,voice:this.voice,speed:this.speed,language:this.language})});if(!t.ok){let e=`HTTP ${t.status}`;try{e=(await t.json()).error||e}catch{}throw Error(e)}let n=await t.arrayBuffer();return this.ctx?.decodeAudioData(n)}pause(){this.status===`playing`&&this.ctx&&(this.ctx.suspend(),this.status=`paused`)}resume(){this.status===`paused`&&this.ctx&&(this.ctx.resume(),this.status=`playing`)}toggle(){this.status===`playing`?this.pause():this.status===`paused`&&this.resume()}stop(e=!0){if(this.token++,this.source){try{this.source.onended=null,this.source.stop()}catch{}this.source=null}this.ctx&&=(this.ctx.close(),null),this.cache.clear(),this.clearHighlight(),this.status=`idle`,this.index=-1,this.total=0,e&&(this.error=null)}highlight(e){S_(),this.clearHighlight();let t=typeof CSS<`u`&&`highlights`in CSS&&typeof Highlight<`u`;if(t&&!e.whole){let t=C_(e.seg.el,e.start,e.end);t?CSS.highlights.set(x_,new Highlight(t)):this.fallbackHighlight(e.seg.el)}else if(t){let t=document.createRange();t.selectNodeContents(e.seg.el),CSS.highlights.set(x_,new Highlight(t))}else this.fallbackHighlight(e.seg.el);e.seg.el.scrollIntoView({block:`center`,behavior:`smooth`})}fallbackHighlight(e){e.classList.add(`tts-active`),this.fallbackEl=e}clearHighlight(){typeof CSS<`u`&&`highlights`in CSS&&CSS.highlights.delete(x_),this.fallbackEl&&=(this.fallbackEl.classList.remove(`tts-active`),null)}},T_=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/,E_=/^(\s*(?:\*\*)?(?:language|lang|locale|langue)(?:\*\*)?\s*:\s*(?:\*\*)?\s*)(.+?)\s*$/i;function D_(e){let t=(e??``).trim().toLowerCase();return t?t===`en`||t.startsWith(`en-`)||t===`english`||t===`anglais`?`en`:t===`fr`||t.startsWith(`fr-`)||t===`french`||t===`francais`||t===`français`?`fr`:null:null}function O_(e){let t=e.match(T_)?.[1];if(!t)return null;for(let e of t.split(/\r?\n/)){let t=e.match(E_);if(t)return D_(t[2])}return null}function k_(e,t){let n=e.match(T_);if(!n)return`---\n**language:** ${t}\n---\n\n${e}`;let r=n[0],i=n[1].split(/\r?\n/),a=i.findIndex(e=>E_.test(e));if(a>=0)i[a]=i[a].replace(E_,`$1${t}`);else{let e=i.findIndex(e=>/^\s*(?:\*\*)?date(?:\*\*)?\s*:\s*(?:\*\*)?/i.test(e)),n=e>=0?e+1:i.length;i.splice(n,0,`**language:** ${t}`)}return`---\n${i.join(`
116
- `)}\n---\n`+e.slice(r.length)}var A_=e=>e.normalize(`NFC`).normalize(`NFD`).replace(/[̀-ͯ]/g,``).toLowerCase();function j_(e,t){let n=A_(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=A_(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=A_(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 M_(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 N_=U(`<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>`),P_=U(`<span class="text-xs text-gray-400 dark:text-gray-500"> </span>`),F_=U(`<span> </span>`),I_=U(`<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>`),L_=U(`<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>`),R_=U(`<button data-testid="tts-toggle" class="no-print text-sm px-3 py-1.5 rounded-lg border border-blue-300 dark:border-blue-700 bg-blue-50 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400 hover:bg-blue-100 dark:hover:bg-blue-900/50 transition-colors"><i></i></button> <button data-testid="tts-stop" 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-stop"></i></button>`,1),z_=U(`<button data-testid="tts-play" 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-headphones" style="margin-right:4px"></i> </button>`),B_=Hr(`<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>`),V_=U(`<button data-testid="versions-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-branch"></i> </button>`),H_=U(`<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 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>`),U_=U(`<span class="text-gray-300 dark:text-gray-600 mx-1">·</span>`),W_=U(`<!> <button class="text-blue-600 dark:text-blue-400 hover:underline"> </button>`,1),G_=U(`<div class="no-print mt-2 flex flex-wrap gap-1 text-xs"></div>`),K_=U(`<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>`),q_=U(`<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>`),J_=U(`<div data-testid="tts-error" class="mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-300"> </div>`),Y_=U(`<li class="m-0 p-0"><button type="button" class="block w-full text-left bg-transparent border-0 cursor-pointer 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"> </button></li>`),X_=U(`<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),Z_=U(`<div data-testid="tts-language-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"><div class="w-full max-w-sm rounded-xl border border-gray-200 bg-white p-5 shadow-2xl dark:border-gray-700 dark:bg-gray-900"><h2 class="text-base font-semibold text-gray-900 dark:text-gray-50"> </h2> <p class="mt-2 text-sm text-gray-600 dark:text-gray-300"> </p> <div class="mt-4 grid grid-cols-2 gap-2"><button type="button" data-testid="tts-language-en" class="rounded-lg border border-gray-200 px-3 py-2 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800"> </button> <button type="button" data-testid="tts-language-fr" class="rounded-lg border border-gray-200 px-3 py-2 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800"> </button></div> <div class="mt-3 flex justify-end"><button type="button" class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm text-gray-600 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-gray-800"> </button></div></div></div>`),Q_=U(`<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>`),$_=U(`<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 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> <!> <h1 data-testid="doc-title" class="min-w-0 text-xs font-normal 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 ev(e,t){qe(t,!0);let n=Wi(t,`navHistory`,19,()=>[]),r=P(null),i=P(null),a=P(null),o=P(null),s=P(!1),c=P(!1),l=P(!1),u=P(null),d=P(I([])),f=``,p=N(()=>V(d).length?Y(V(d).length===1?`search.notice_singular`:`search.notice_plural`).replace(`{count}`,String(V(d).length)).replace(`{query}`,X.searchQuery):``),m=N(()=>Eg(t.doc.content)),h=N(()=>(V(m)||``).toUpperCase()===`TO BE VALIDATED`),g=P(!1),_=P(null),v=P(!1),y=P(!1),b=P(!1),x=P(!1),S=P(!1);async function C(){try{let e=await(await fetch(`/api/git/status`)).json();F(l,e.mode===`enabled`&&e.ok===!0,!0)}catch{F(l,!1)}}kn(()=>{t.doc.id,C()});function w(e,t){let n=document.getElementById(`home-content-area`);if(!n)return;let r=document.getElementById(`home-doc-header`),i=r?r.getBoundingClientRect().height:0,a=e.getBoundingClientRect().top-n.getBoundingClientRect().top+n.scrollTop;n.scrollTo({top:Math.max(0,a-i-16),behavior:t?`smooth`:`auto`})}function T(e){let t=document.getElementById(e);t&&w(t,!1)}function E(e){F(r,e,!0);let n=t.doc.id,i=X.searchQuery,o=typeof i==`string`&&i.toLowerCase().startsWith(`metadata://`);F(d,i&&!o?j_(e,i):[],!0),V(u)&&d_(e,V(u),Y),n===f?V(a)?.apply():(f=n,V(a)?.load(n),Sg.load(n)),F(k,Array.from(e.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)}function D(){return V(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})}async function ee(){let e=1;try{let n=await Sg.load(t.doc.id);n&&typeof n.accuracy==`number`&&(e=n.accuracy)}catch{}let n=Math.round(e*100),r=n<100,i=Og(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 V(o).show({title:Y(`doc.validate_title`),message:a,detail:s,confirmLabel:Y(`doc.validate_confirm`),cancelLabel:Y(`common.cancel`)}))return;let c=Dg(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 Sg.load(t.doc.id),X.docStatuses={...X.docStatuses,[t.doc.id]:i?`Done`:`Accepted`}}catch(e){F(_,{text:Y(`doc.validate_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}}kn(()=>{try{F(v,localStorage.getItem(`ld-full-width`)===`1`)}catch{}});let O=P(!1),k=P(I([])),te=N(()=>V(O)&&V(k).length>0),ne=`ld-toc-w`,re=P(!1),ie=P(null),A=P(null),ae=P(0);kn(()=>{if(!V(A))return;let e=new ResizeObserver(()=>{F(ae,V(A).offsetHeight,!0)});return e.observe(V(A)),F(ae,V(A).offsetHeight,!0),()=>e.disconnect()});function oe(e){if(e.preventDefault(),!V(ie))return;let t=e.clientX,n=V(ie).getBoundingClientRect().width;F(re,!0),V(ie).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)));V(ie).style.width=r+`px`},i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i),document.body.style.cursor=``,document.body.style.userSelect=``,F(re,!1),V(ie).style.transition=``;try{localStorage.setItem(ne,String(parseInt(V(ie).style.width,10)))}catch{}};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}kn(()=>{try{F(O,localStorage.getItem(`ld-toc-open`)===`1`)}catch{}try{let e=parseInt(localStorage.getItem(ne)||``,10);V(ie)&&e>=160&&e<=400&&(V(ie).style.width=e+`px`)}catch{}});function se(){F(O,!V(O));try{localStorage.setItem(`ld-toc-open`,V(O)?`1`:`0`)}catch{}}function ce(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=!0),r=r.parentElement;w(t,!0)}async function le(){try{await navigator.clipboard.writeText(decodeURIComponent(t.doc.id)),F(b,!0),setTimeout(()=>F(b,!1),1800)}catch{}}function ue(){window.print()}function de(e){V(r)&&w_.start(V(r),{language:e,codeLabel:Y(`tts.code_label`),imageLabel:Y(`tts.image_label`),diagramLabel:Y(`tts.diagram_label`),tableLabel:Y(`tts.table_label`)})}function fe(){let e=O_(t.doc.content);if(!e){F(x,!0);return}de(e)}async function pe(e){F(S,!0);try{let n=k_(t.doc.content,e);n!==t.doc.content&&await t.onsave(n),F(x,!1),de(e)}catch(e){F(_,{text:Y(`tts.language_save_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}finally{F(S,!1)}}kn(()=>(t.doc.id,V(g),()=>{F(x,!1),w_.stop()}));var me=$_(),he=R(me),ge=L(he),_e=L(ge),ve=L(_e),ye=L(ve),be=L(ye);q(be,17,()=>t.doc.folder||[],Xr,(e,t)=>{var n=N_(),r=L(n,!0);j(n),B(e=>{J(n,`title`,V(t)),G(r,e)},[()=>Lh(V(t))]),W(e,n)});var xe=z(be,2),Se=L(xe,!0);j(xe),j(ye);var Ce=z(ye,2),we=e=>{var n=P_(),r=L(n,!0);j(n),B(()=>G(r,t.doc.formattedDate)),W(e,n)};K(Ce,e=>{t.doc.formattedDate&&e(we)});var Te=z(Ce,2),Ee=L(Te,!0);j(Te);var De=z(Te,2),Oe=L(De);j(De),j(ve),j(_e);var ke=z(_e,2),Ae=L(ke),je=e=>{var t=I_(),n=L(t),r=e=>{var t=F_(),n=L(t,!0);j(t),B(()=>{gi(t,1,`text-xs ${V(_).cls??``}`),G(n,V(_).text)}),W(e,t)};K(n,e=>{V(_)&&e(r)});var a=z(n,2),o=L(a,!0);j(a);var s=z(a,2),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(t),B((e,t,n,r)=>{G(o,e),J(s,`title`,t),G(c,n),G(u,r)},[()=>Y(`common.cancel`),()=>Y(`doc.snippets`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),H(`click`,a,()=>V(i).cancelEdit()),H(`click`,s,()=>V(i).openSnippets()),H(`click`,l,()=>V(i).save()),W(e,t)},Me=e=>{let t=N(()=>X.markerActive?`#fef08a`:`#bfdbfe`),n=N(()=>X.markerActive?`#fef08a`:`#93c5fd`),r=N(()=>X.markerActive?`#fde047`:`#93c5fd`);var a=H_(),o=L(a),u=e=>{var t=L_(),n=z(L(t),1,!0);j(t),B((e,r)=>{J(t,`title`,e),G(n,r)},[()=>Y(`doc.validate_mode`),()=>Y(`doc.validate_btn`)]),H(`click`,t,ee),W(e,t)};K(o,e=>{V(h)&&e(u)});var d=z(o,2),f=e=>{var t=R_(),n=R(t),r=L(n);j(n);var i=z(n,2);B((e,t)=>{J(n,`title`,e),gi(r,1,`fa-solid ${w_.status===`playing`?`fa-pause`:`fa-play`}`),J(i,`title`,t)},[()=>w_.status===`playing`?Y(`tts.pause`):Y(`tts.resume`),()=>Y(`tts.stop`)]),H(`click`,n,()=>w_.toggle()),H(`click`,i,()=>w_.stop()),W(e,t)},p=e=>{var t=z_(),n=z(L(t),1,!0);j(t),B((e,r)=>{J(t,`title`,e),G(n,r)},[()=>Y(`tts.play`),()=>Y(`tts.play_btn`)]),H(`click`,t,fe),W(e,t)};K(d,e=>{w_.active?e(f):e(p,-1)});var m=z(d,2),g=L(m),_=L(g),v=z(_),b=z(v),x=z(b),S=z(x,2),C=e=>{W(e,B_())};K(S,e=>{X.markerHidden&&e(C)}),j(g);var w=z(g,1,!0);j(m);var T=z(m,2),E=L(T);j(T);var D=z(T,2),k=z(L(D));j(D);var te=z(D,2),ne=e=>{var t=V_(),n=z(L(t));j(t),B((e,r)=>{J(t,`title`,e),G(n,` ${r??``}`)},[()=>Y(`versions.button_title`),()=>Y(`versions.button`)]),H(`click`,t,()=>F(c,!0)),W(e,t)};K(te,e=>{V(l)&&e(ne)});var re=z(te,2),ie=z(L(re));j(re);var A=z(re,2),ae=z(L(A));j(A);var oe=z(A,2);j(a),B((e,i,a,o,s,c,l,u,d,f,p)=>{J(m,`title`,e),gi(m,1,`no-print text-sm px-3 py-1.5 rounded-lg border transition-colors ${X.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(_,`fill`,V(t)),J(v,`fill`,V(n)),J(b,`fill`,V(r)),J(x,`fill`,V(r)),G(w,i),J(T,`title`,a),G(E,`📄 ${o??``}`),J(D,`title`,s),G(k,` ${c??``}`),J(re,`title`,l),G(ie,` ${u??``}`),J(A,`title`,d),G(ae,` ${f??``}`),J(oe,`title`,p),gi(oe,1,`no-print text-sm px-3 py-1.5 rounded-lg border transition-colors ${V(O)?`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(`metadata.button_title`),()=>Y(`metadata.button`),()=>Y(`doc.edit`),()=>Y(`doc.edit_btn`),()=>Y(`doc.delete`),()=>Y(`doc.delete_btn`),()=>Y(`doc.toc_toggle`)]),H(`click`,m,()=>X.toggleMarker()),H(`click`,T,ue),H(`click`,D,()=>F(s,!0)),H(`click`,re,()=>V(i).enterEdit()),H(`click`,A,()=>F(y,!0)),H(`click`,oe,se),W(e,a)};K(Ae,e=>{V(g)?e(je):e(Me,-1)}),j(ke),j(ge);var Ne=z(ge,2),Pe=e=>{wg(e,{onopen:()=>F(s,!0)})};K(Ne,e=>{V(g)||e(Pe)});var Fe=z(Ne,2),Ie=e=>{var r=G_();q(r,21,n,Xr,(e,n,r)=>{var i=W_(),a=R(i),o=e=>{W(e,U_())};K(a,e=>{r>0&&e(o)});var s=z(a,2),c=L(s);j(s),B(()=>G(c,`← ${V(n).title??``}`)),H(`click`,s,()=>t.ongoback?.(r)),W(e,i)}),j(r),W(e,r)};K(Fe,e=>{!V(g)&&n().length&&e(Ie)});var Le=z(Fe,2),Re=e=>{var t=q_(),n=L(t),r=L(n,!0);j(n);var i=z(n,2);q(i,23,()=>V(d),e=>e.id,(e,t,n)=>{var r=K_(),i=L(r),a=L(i),o=L(a);j(a);var s=z(a),c=L(s,!0);j(s),j(i),j(r),B(()=>{G(o,`${V(n)+1}.`),G(c,V(t).snippet)}),H(`click`,i,()=>M_(V(t).id)),W(e,r)}),j(i),j(t),B(()=>G(r,V(p))),W(e,t)};K(Le,e=>{!V(g)&&V(d).length&&X.searchQuery&&e(Re)});var ze=z(Le,2),Be=e=>{var t=J_(),n=L(t,!0);j(t),B(()=>G(n,w_.error)),W(e,t)};K(ze,e=>{!V(g)&&w_.error&&e(Be)}),Vi(z(ze,2),e=>F(u,e),()=>V(u)),j(he),Vi(he,e=>F(A,e),()=>V(A));var Ve=z(he,2),He=L(Ve);Vi(zu(L(He),{get docId(){return t.doc.id},get content(){return t.doc.content},get html(){return t.doc.html},get onsave(){return t.onsave},get onopen(){return t.onopen},onanchor:T,onconfirmdelete:D,oncontentwired:E,get rewireSignal(){return X.searchQuery},get editing(){return V(g)},set editing(e){F(g,e,!0)},get saveMsg(){return V(_)},set saveMsg(e){F(_,e,!0)}}),e=>F(i,e,!0),()=>V(i)),j(He);var Ue=z(He,2),We=e=>{var t=X_(),n=R(t),r=z(n,2),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o);q(s,21,()=>V(k),Xr,(e,t)=>{var n=Y_(),r=L(n),i=L(r,!0);j(r),j(n),B(()=>{vi(n,`padding-left: ${(V(t).level-1)*.75}rem`),J(r,`title`,V(t).text),G(i,V(t).text)}),H(`click`,r,()=>ce(V(t).id)),W(e,n)}),j(s),j(o),j(r),Vi(r,e=>F(ie,e),()=>V(ie)),B(e=>{gi(n,1,`no-print w-1 shrink-0 self-stretch cursor-col-resize select-none transition-colors ${V(re)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),vi(r,`width: 224px; top: ${V(ae)??``}px; min-height: calc(100vh - ${V(ae)??``}px); max-height: calc(100vh - ${V(ae)??``}px)`),G(a,e)},[()=>Y(`doc.toc_title`)]),H(`mousedown`,n,oe),W(e,t)};K(Ue,e=>{V(te)&&e(We)}),j(Ve);var Ge=z(Ve,2);Vi(gg(Ge,{get contentEl(){return V(r)},get docId(){return t.doc.id}}),e=>F(a,e,!0),()=>V(a));var Ke=z(Ge,2);Gg(Ke,{get open(){return V(s)},get docId(){return t.doc.id},get content(){return t.doc.content},onclose:()=>F(s,!1)});var Ye=z(Ke,2);i_(Ye,{get open(){return V(c)},get docId(){return t.doc.id},get content(){return t.doc.content},get onsave(){return t.onsave},onclose:()=>F(c,!1)});var Xe=z(Ye,2);Vi(eu(Xe,{}),e=>F(o,e,!0),()=>V(o));var Ze=z(Xe,2),Qe=e=>{var t=Z_(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var s=z(a,2),c=L(s),l=L(c,!0);j(c);var u=z(c,2),d=L(u,!0);j(u),j(s);var f=z(s,2),p=L(f),m=L(p,!0);j(p),j(f),j(n),j(t),B((e,t,n,r,a)=>{G(i,e),G(o,t),c.disabled=V(S),G(l,n),u.disabled=V(S),G(d,r),p.disabled=V(S),G(m,a)},[()=>Y(`tts.language_title`),()=>Y(`tts.language_message`),()=>Y(`tts.language_en`),()=>Y(`tts.language_fr`),()=>Y(`common.cancel`)]),H(`click`,t,e=>{e.target===e.currentTarget&&!V(S)&&F(x,!1)}),H(`click`,c,()=>pe(`en`)),H(`click`,u,()=>pe(`fr`)),H(`click`,p,()=>F(x,!1)),W(e,t)};K(Ze,e=>{V(x)&&e(Qe)});var $e=z(Ze,2),et=e=>{var n=Q_(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o);var c=z(o,2),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d,!0);j(d),j(c),j(r),j(n),B((e,n,r)=>{G(a,e),G(s,t.doc.title),G(u,n),G(f,r)},[()=>Y(`doc.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`doc.confirm_delete_btn`)]),H(`click`,n,e=>{e.target===e.currentTarget&&F(y,!1)}),H(`click`,l,()=>F(y,!1)),H(`click`,d,async()=>{F(y,!1),await t.ondelete()}),W(e,n)};K($e,e=>{V(y)&&e(et)}),B(e=>{G(Se,t.doc.category),G(Ee,t.doc.title),J(De,`title`,e),gi(De,1,`no-print inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md border border-gray-200 text-xs 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 ${V(b)?`text-green-600 dark:text-green-400`:``}`),gi(Oe,1,`fa-${V(b)?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`doc.copy_mcp_id`)]),H(`click`,De,le),W(e,me),Je()}Pr([`click`,`mousedown`]);var tv=/[\u0300-\u036f]/g,nv=/[^a-zA-Z0-9_.-]+/g;function rv(e){return(e||``).normalize(`NFD`).replace(tv,``).trim().replace(nv,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)}var iv=U(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),av=U(`<p class="px-3 py-3 text-xs text-red-400 text-center"> </p>`),ov=U(`<p class="px-3 py-3 text-xs text-gray-400 text-center"> </p>`),sv=U(`<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>`),cv=U(`<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>`),lv=U(`<p class="text-xs text-red-500"> </p>`),uv=U(`<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 dv(e,t){qe(t,!0);let n=P(``),r=P(null),i=P(null),a=P(``),o=P(``),s=P(`/ (root)`),c=P(!1),l=P(``),u=P(I([])),d=P(!1),f=P(!1),p=P(``),m=P(!1),h=P(null),g=!1;kn(()=>{t.open&&!g?(g=!0,_()):t.open||(g=!1)});async function _(){try{F(n,(await fetch(`/api/config`).then(e=>e.json())).docsFolder||``,!0)}catch{F(n,``)}let e=``;if(X.currentDocId){let t=decodeURIComponent(X.currentDocId);if(!t.startsWith(`/`)){let n=t.split(`/`);n.length>1&&(e=n.slice(0,-1).join(`/`))}}F(a,e?V(n)+`/`+e:V(n),!0),F(r,V(a),!0),F(i,null),F(o,``),F(s,e?`/`+e:`/ (root)`,!0),F(c,!1),F(p,``),F(m,!1),setTimeout(()=>V(h)?.focus(),50)}let v=N(()=>{let e=rv(V(o));if(!e)return Y(`modal.new_folder.enter_name`);let t=V(a)||V(n),r=t.startsWith(V(n))?t.slice(V(n).length).replace(/^\//,``):``;return(r?r+`/`:``)+e});function y(e){let t=e.currentTarget,n=rv(t.value);t.value!==n&&(t.value=n),V(o)!==n&&F(o,n,!0)}function b(){F(c,!V(c)),V(c)&&x(V(r)||V(n))}async function x(e){F(d,!0),F(f,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(r,t.current,!0),F(i,t.parent,!0),F(a,t.current,!0),F(l,t.current,!0),F(s,(t.current.startsWith(V(n)+`/`)?t.current.slice(V(n).length):t.current===V(n)?``:t.current)||`/ (root)`,!0),F(u,t.dirs||[],!0)}catch{F(f,!0),F(u,[],!0)}finally{F(d,!1)}}let S=N(()=>V(r)===V(n));function C(){V(i)&&x(V(i))}async function w(){let e=rv(V(o));if(F(p,``),!e){F(p,Y(`modal.new_folder.error_empty`),!0);return}if(!/^[a-zA-Z0-9_.-]+$/.test(e)){F(p,Y(`modal.new_folder.error_invalid_chars`),!0);return}let r=V(a)||V(n);if(r===V(n)&&(e===`files`||e===`images`)){F(p,Y(`modal.new_folder.error_reserved`),!0);return}let i=r.endsWith(`/`)?r+e:r+`/`+e;F(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){F(m,!1),F(p,Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)))}}var T=Wr(),E=R(T),D=e=>{var n=uv(),r=L(n),i=L(r),a=z(L(i),2),g=L(a,!0);j(a),j(i);var _=z(i,2),T=L(_),E=L(T,!0);j(T);var D=z(T,2);Di(D),Vi(D,e=>F(h,e),()=>V(h)),j(_);var ee=z(_,2),O=L(ee),k=L(O,!0);j(O);var te=z(O,2),ne=L(te),re=L(ne,!0);j(ne);var ie=z(ne,2),A=L(ie,!0);j(ie),j(te);var ae=z(te,2),oe=e=>{var t=cv(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n);var s=z(n,2),c=L(s),p=e=>{var t=iv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},m=e=>{var t=av(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`modal.new_folder.error_loading`)]),W(e,t)},h=e=>{var t=ov(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`modal.new_folder.no_subfolders`)]),W(e,t)},g=e=>{var t=Wr();q(R(t),17,()=>V(u),e=>e.path,(e,t)=>{var n=sv(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>x(V(t).path)),W(e,n)}),W(e,t)};K(c,e=>{V(d)?e(p):V(f)?e(m,1):V(u).length===0?e(h,2):e(g,-1)}),j(s),j(t),B(e=>{r.disabled=V(S),G(i,e),G(o,V(l))},[()=>Y(`common.up`)]),H(`click`,r,C),W(e,t)};K(ae,e=>{V(c)&&e(oe)}),j(ee);var se=z(ee,2),ce=L(se),le=L(ce,!0);j(ce);var ue=z(ce,2),de=L(ue,!0);j(ue),j(se);var fe=z(se,2),pe=e=>{var t=lv(),n=L(t,!0);j(t),B(()=>G(n,V(p))),W(e,t)};K(fe,e=>{V(p)&&e(pe)});var me=z(fe,2),he=L(me),ge=L(he,!0);j(he);var _e=z(he,2),ve=L(_e,!0);j(_e),j(me),j(r),j(n),B((e,t,n,r,i,a,o,c)=>{G(g,e),G(E,t),J(D,`placeholder`,n),G(k,r),G(re,V(s)),G(A,i),G(le,a),G(de,V(v)),G(ge,o),_e.disabled=V(m),G(ve,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`),()=>V(m)?Y(`modal.new_folder.creating_btn`):Y(`modal.new_folder.create_btn`)]),H(`click`,n,e=>{e.target===e.currentTarget&&t.onclose()}),H(`input`,D,y),Ni(D,()=>V(o),e=>F(o,e)),H(`click`,ie,b),H(`click`,he,function(...e){t.onclose?.apply(this,e)}),H(`click`,_e,w),W(e,n)};K(E,e=>{t.open&&e(D)}),W(e,T),Je()}Pr([`click`,`input`]);var fv=U(`<option></option>`),pv=U(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),mv=U(`<p class="px-3 py-4 text-xs text-red-400 text-center"> </p>`),hv=U(`<p class="px-3 py-3 text-xs text-gray-400 text-center"> </p>`),gv=U(`<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>`),_v=U(`<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>`),vv=U(`<p class="text-xs text-red-500"> </p>`),yv=U(`<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 bv(e,t){qe(t,!0);let n=P(``),r=P(`YYYY_MM_DD_HH_mm_[Category]_title`),i=P(null),a=P(null),o=P(``),s=P(``),c=P(``),l=P(`/ (root)`),u=P(!1),d=P(``),f=P(I([])),p=P(!1),m=P(!1),h=P(``),g=P(I([])),_=P(``),v=P(!1),y=P(null);function b(e){return(e||``).normalize(`NFD`).replace(/[̀-ͯ]/g,``).toUpperCase().replace(/[^A-Z0-9_-]/g,``)}function x(e){let t=V(n);return e===t?``:e.startsWith(t+`/`)?e.slice(t.length+1):e}let S=!1;kn(()=>{t.open&&!S?(S=!0,C()):t.open||(S=!1)});async function C(){try{let e=await fetch(`/api/config`).then(e=>e.json());F(n,e.docsFolder||``,!0),F(r,e.filenamePattern||`YYYY_MM_DD_HH_mm_[Category]_title`,!0)}catch{F(n,``),F(r,`YYYY_MM_DD_HH_mm_[Category]_title`)}let e=X.currentDocId&&X.allDocs.find(e=>e.id===X.currentDocId),t=b(e&&e.category||`General`)||`GENERAL`,d=``;if(X.currentDocId){let e=decodeURIComponent(X.currentDocId);if(!e.startsWith(`/`)){let t=e.split(`/`);t.length>1&&(d=t.slice(0,-1).join(`/`))}}let f=d?V(n)+`/`+d:``;F(o,d,!0),F(i,f||null,!0),F(a,null),w(),F(s,``),F(c,t,!0),F(l,d?`/`+d:`/ (root)`,!0),F(u,!1),F(h,``),F(_,``),F(v,!1),setTimeout(()=>V(y)?.focus(),50)}function w(){let e=new Set;(X.allDocs||[]).forEach(t=>{let n=b(t.category||``);n&&e.add(n)}),F(g,Array.from(e).sort((e,t)=>e.localeCompare(t)),!0)}function T(){let e=b(V(c));V(c)!==e&&F(c,e,!0)}function E(e){let t=e.currentTarget,n=rv(t.value);t.value!==n&&(t.value=n),V(h)!==n&&F(h,n,!0)}let D=N(()=>{let e=V(s).trim();if(!e)return Y(`modal.new_doc.title_placeholder`);let t=b(V(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=V(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 V(o)?V(o)+`/`+p:p});function ee(){F(u,!V(u)),V(u)&&O(V(i)||V(n))}async function O(e){F(p,!0),F(m,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(i,t.current,!0),F(a,t.parent,!0),F(o,x(t.current),!0),F(d,t.current,!0),F(l,V(o)?`/`+V(o):`/ (root)`,!0),F(f,t.dirs||[],!0)}catch{F(m,!0),F(f,[],!0)}finally{F(p,!1)}}let k=N(()=>V(i)===V(n));function te(){V(i)!==V(n)&&V(a)&&O(V(a))}function ne(){let e=rv(V(h));if(!e)return;let t=V(i)||V(n);if(t===V(n)&&(e===`files`||e===`images`)){F(_,Y(`modal.new_folder.error_reserved`),!0);return}F(_,``);let r=(x(t)?x(t)+`/`:``)+e;F(o,r),F(l,`/`+r),F(h,``)}async function re(){let e=V(s).trim(),n=b(V(c))||`GENERAL`;if(!e){F(_,Y(`modal.new_doc.error_empty_title`),!0);return}F(_,``),F(v,!0);try{let r=await fetch(`/api/documents`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:e,category:n,folder:V(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){F(_,Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e))),F(v,!1)}}function ie(e){e.key===`Enter`&&re(),e.key===`Escape`&&t.onclose()}var A=Wr(),ae=R(A),oe=e=>{var n=yv(),r=L(n),i=L(r),a=z(L(i)),o=L(a,!0);j(a),j(i);var b=z(i,2),x=L(b),S=L(x,!0);j(x);var C=z(x,2);Di(C),Vi(C,e=>F(y,e),()=>V(y)),j(b);var w=z(b,2),A=L(w),ae=L(A,!0);j(A);var oe=z(A,2);Di(oe);var se=z(oe,2);q(se,20,()=>V(g),e=>e,(e,t)=>{var n=fv(),r={};B(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),W(e,n)}),j(se),j(w);var ce=z(w,2),le=L(ce),ue=L(le,!0);j(le);var de=z(le,2),fe=L(de),pe=L(fe,!0);j(fe);var me=z(fe,2),he=z(L(me)),ge=L(he,!0);j(he),j(me),j(de);var _e=z(de,2),ve=e=>{var t=_v(),n=L(t),r=L(n),i=L(r);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n);var s=z(n,2),c=L(s),l=e=>{var t=pv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},u=e=>{var t=mv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.cannot_read_dir`)]),W(e,t)},g=e=>{var t=hv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`modal.new_doc.no_subfolders`)]),W(e,t)},_=e=>{var t=Wr();q(R(t),17,()=>V(f),e=>e.path,(e,t)=>{var n=gv(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>O(V(t).path)),W(e,n)}),W(e,t)};K(c,e=>{V(p)?e(l):V(m)?e(u,1):V(f).length===0?e(g,2):e(_,-1)}),j(s);var v=z(s,2),y=L(v);Di(y);var b=z(y,2),x=L(b,!0);j(b),j(v),j(t),B((e,t,n)=>{r.disabled=V(k),G(i,`↑ ${e??``}`),G(o,V(d)),J(y,`placeholder`,t),G(x,n)},[()=>Y(`common.up`),()=>Y(`modal.new_doc.new_folder_placeholder`),()=>Y(`modal.new_doc.create_folder_btn`)]),H(`click`,r,te),H(`input`,y,E),H(`keydown`,y,e=>{e.key===`Enter`&&ne()}),Ni(y,()=>V(h),e=>F(h,e)),H(`click`,b,ne),W(e,t)};K(_e,e=>{V(u)&&e(ve)}),j(ce);var ye=z(ce,2),be=L(ye),xe=L(be,!0);j(be);var Se=z(be,2),Ce=L(Se,!0);j(Se),j(ye);var we=z(ye,2),Te=e=>{var t=vv(),n=L(t,!0);j(t),B(()=>G(n,V(_))),W(e,t)};K(we,e=>{V(_)&&e(Te)});var Ee=z(we,2),De=L(Ee),Oe=L(De,!0);j(De);var ke=z(De,2),Ae=L(ke,!0);j(ke),j(Ee),j(r),j(n),B((e,t,n,r,i,a,s,c,u)=>{G(o,e),G(S,t),J(C,`placeholder`,n),G(ae,r),G(ue,i),G(pe,V(l)),G(ge,a),G(xe,s),G(Ce,V(D)),G(Oe,c),ke.disabled=V(v),G(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`),()=>V(v)?Y(`modal.new_folder.creating_btn`):Y(`common.create`)]),H(`click`,n,e=>{e.target===e.currentTarget&&t.onclose()}),H(`keydown`,C,ie),Ni(C,()=>V(s),e=>F(s,e)),H(`input`,oe,T),H(`keydown`,oe,ie),Ni(oe,()=>V(c),e=>F(c,e)),H(`click`,me,ee),H(`click`,De,function(...e){t.onclose?.apply(this,e)}),H(`click`,ke,re),W(e,n)};K(ae,e=>{t.open&&e(oe)}),W(e,A),Je()}Pr([`click`,`keydown`,`input`]);var xv=U(`<p class="text-sm text-gray-400 py-2"> </p>`),Sv=U(`<p class="text-sm text-red-500"> </p>`),Cv=U(`<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>`),wv=U(`<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>`),Tv=U(`<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>`),Ev=U(`<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>`),Dv=U(`<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 Ov(e,t){qe(t,!0);let n=P(`markdown`),r=!1,i=P(!1),a=P(!1),o=P(I([])),s=P(I({})),c=P(!1),l=P(!1),u=P(!1),d=P(!1),f=!1;kn(()=>{t.open&&!f?(f=!0,F(n,`markdown`),r=!1,F(o,[],!0),F(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){F(n,e,!0),e===`html`&&h()}async function h(){if(!r){F(i,!0),F(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`)),F(o,[...t].sort((e,t)=>e===`General`?-1:t===`General`?1:e.localeCompare(t)),!0),r=!0}catch{F(a,!0)}finally{F(i,!1)}}}async function g(){F(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{F(c,!1)}}async function _(e){let n=V(o).filter(e=>V(s)[e]);if(n.length){F(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{F(u,!1),F(l,!1)}}}async function v(){F(d,!0);try{let e=X.allDocs&&X.allDocs.length?X.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>
117
+ </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=u_(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||l_(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=c_(t),i=r.split(` `).filter(Boolean);if(!i.length){u.classList.add(`hidden`);return}let a=c_(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${f_(e)}\\b`)})});let c=Array.from(s).sort((e,t)=>t.length-e.length),p=RegExp(`(${c.map(e=>e.startsWith(`\\b`)?e:f_(e)).join(`|`)})`,`g`),g=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){return 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}=s_(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+=d_(t.slice(l,n)),c+=`<mark class="ld-local-mark" id="ld-local-match-${y++}">${d_(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+=d_(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=c_(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>${d_(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 m_={codeLabel:`Code block.`,imageLabel:`Image: {alt}.`,diagramLabel:`Diagram.`,tableLabel:`Table.`,readCode:!1},h_=new Set([`H1`,`H2`,`H3`,`H4`,`H5`,`H6`]);function g_(e){return e.classList.contains(`mermaid`)||e.querySelector(`.mermaid`)!==null}function __(e){let t=[];for(let n of e.matchAll(/[^.!?…\n]*(?:[.!?…]+|\n+|$)/g)){let e=n[0];if(e.length===0)continue;let r=e.length-e.trimStart().length,i=e.trim();if(i){let e=n.index+r;t.push({text:i,start:e,end:e+i.length})}}return t}function v_(e,t){let n=(e.textContent??``).replace(/\s+/g,` `).trim();if(!n)return null;let r=__(n);return{type:t,el:e,spokenText:n,sentences:r.length?r:[{text:n,start:0,end:n.length}],highlightWhole:!1}}function y_(e,t,n){let r=n.trim();return r?{type:t,el:e,spokenText:r,sentences:[{text:r,start:0,end:r.length}],highlightWhole:!0}:null}function b_(e,t,n){for(let r of Array.from(e.children)){let e=r.tagName;if(g_(r)){x_(n,y_(r,`diagram`,t.diagramLabel));continue}if(e===`PRE`||e===`DIV`&&r.querySelector(`:scope > pre`)){x_(n,t.readCode?v_(r,`code`):y_(r,`code`,t.codeLabel));continue}if(e===`TABLE`){x_(n,y_(r,`table`,t.tableLabel));continue}if(e===`IMG`||e===`FIGURE`&&r.querySelector(`img`)){let i=(e===`IMG`?r:r.querySelector(`img`))?.getAttribute(`alt`)?.trim()??``;x_(n,y_(r,`image`,t.imageLabel.includes(`{alt}`)?i?t.imageLabel.replace(`{alt}`,i):t.imageLabel.replace(/:?\s*\{alt\}/,``).trim()||`Image.`:t.imageLabel));continue}if(h_.has(e)){x_(n,v_(r,`heading`));continue}if(e===`P`){x_(n,v_(r,`paragraph`));continue}if(e===`LI`){x_(n,v_(r,`list-item`));continue}if(e===`BLOCKQUOTE`){r.querySelector(`:scope > p, :scope > ul, :scope > ol`)?b_(r,t,n):x_(n,v_(r,`quote`));continue}if(e===`UL`||e===`OL`||e===`DIV`||e===`SECTION`||e===`DETAILS`){b_(r,t,n);continue}}}function x_(e,t){t&&e.push(t)}function S_(e,t={}){let n={...m_,...t},r=[];return b_(e,n,r),r}var C_=`tts-sentence`;function w_(){if(typeof document>`u`||document.getElementById(`tts-highlight-style`))return;let e=document.createElement(`style`);e.id=`tts-highlight-style`,e.textContent=`::highlight(${C_}){background-color:rgba(250,204,21,0.45);color:inherit;}.dark ::highlight(${C_}){background-color:rgba(250,204,21,0.35);}`,document.head.appendChild(e)}function T_(e,t,n){let r=[],i=!0,a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),o=a.nextNode();for(;o;){let e=o.data;for(let t=0;t<e.length;t++)/\s/.test(e[t])?i||=(r.push({node:o,offset:t}),!0):(r.push({node:o,offset:t}),i=!1);o=a.nextNode()}if(t>=r.length)return null;let s=r[t],c=document.createRange();if(c.setStart(s.node,s.offset),n<r.length){let e=r[n];c.setEnd(e.node,e.offset)}else{let e=r[r.length-1];c.setEnd(e.node,e.offset+1)}return c}var E_=new class{#e=P(`idle`);get status(){return V(this.#e)}set status(e){F(this.#e,e,!0)}#t=P(-1);get index(){return V(this.#t)}set index(e){F(this.#t,e,!0)}#n=P(0);get total(){return V(this.#n)}set total(e){F(this.#n,e,!0)}#r=P(null);get error(){return V(this.#r)}set error(e){F(this.#r,e,!0)}units=[];ctx=null;source=null;cache=new Map;token=0;voice;speed;language=`en`;fallbackEl=null;get active(){return this.status===`playing`||this.status===`paused`||this.status===`loading`}async start(e,t={}){this.stop();let{voice:n,speed:r,language:i,...a}=t;this.voice=n,this.speed=r,this.language=i??`en`;let o=S_(e,a);if(this.units=o.flatMap(e=>e.highlightWhole?[{seg:e,text:e.spokenText,start:0,end:e.spokenText.length,whole:!0}]:e.sentences.map(t=>({seg:e,text:t.text,start:t.start,end:t.end,whole:!1}))),this.total=this.units.length,this.units.length===0)return;this.ctx=new AudioContext,this.error=null;let s=++this.token;this.status=`loading`,await this.playFrom(0,s)}async playFrom(e,t){if(t!==this.token)return;if(e>=this.units.length){this.stop();return}this.index=e,this.highlight(this.units[e]);let n;try{n=await this.audioFor(e)}catch(e){if(t!==this.token)return;this.error=e instanceof Error?e.message:String(e),this.stop(!1);return}if(t!==this.token||!this.ctx)return;this.prefetch(e+1);let r=this.ctx.createBufferSource();r.buffer=n,r.connect(this.ctx.destination),r.onended=()=>{t===this.token&&(this.source=null,this.playFrom(e+1,t))},this.source=r,this.status=`playing`,r.start()}audioFor(e){let t=this.cache.get(e);return t||(t=this.fetchAudio(this.units[e].text),this.cache.set(e,t)),t}prefetch(e){e<this.units.length&&!this.cache.has(e)&&this.cache.set(e,this.fetchAudio(this.units[e].text).catch(e=>Promise.reject(e)))}async fetchAudio(e){let t=await fetch(`/api/tts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,voice:this.voice,speed:this.speed,language:this.language})});if(!t.ok){let e=`HTTP ${t.status}`;try{e=(await t.json()).error||e}catch{}throw Error(e)}let n=await t.arrayBuffer();return this.ctx?.decodeAudioData(n)}pause(){this.status===`playing`&&this.ctx&&(this.ctx.suspend(),this.status=`paused`)}resume(){this.status===`paused`&&this.ctx&&(this.ctx.resume(),this.status=`playing`)}toggle(){this.status===`playing`?this.pause():this.status===`paused`&&this.resume()}stop(e=!0){if(this.token++,this.source){try{this.source.onended=null,this.source.stop()}catch{}this.source=null}this.ctx&&=(this.ctx.close(),null),this.cache.clear(),this.clearHighlight(),this.status=`idle`,this.index=-1,this.total=0,e&&(this.error=null)}highlight(e){w_(),this.clearHighlight();let t=typeof CSS<`u`&&`highlights`in CSS&&typeof Highlight<`u`;if(t&&!e.whole){let t=T_(e.seg.el,e.start,e.end);t?CSS.highlights.set(C_,new Highlight(t)):this.fallbackHighlight(e.seg.el)}else if(t){let t=document.createRange();t.selectNodeContents(e.seg.el),CSS.highlights.set(C_,new Highlight(t))}else this.fallbackHighlight(e.seg.el);e.seg.el.scrollIntoView({block:`center`,behavior:`smooth`})}fallbackHighlight(e){e.classList.add(`tts-active`),this.fallbackEl=e}clearHighlight(){typeof CSS<`u`&&`highlights`in CSS&&CSS.highlights.delete(C_),this.fallbackEl&&=(this.fallbackEl.classList.remove(`tts-active`),null)}},D_=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/,O_=/^(\s*(?:\*\*)?(?:language|lang|locale|langue)(?:\*\*)?\s*:\s*(?:\*\*)?\s*)(.+?)\s*$/i;function k_(e){let t=(e??``).trim().toLowerCase();return t?t===`en`||t.startsWith(`en-`)||t===`english`||t===`anglais`?`en`:t===`fr`||t.startsWith(`fr-`)||t===`french`||t===`francais`||t===`français`?`fr`:null:null}function A_(e){let t=e.match(D_)?.[1];if(!t)return null;for(let e of t.split(/\r?\n/)){let t=e.match(O_);if(t)return k_(t[2])}return null}function j_(e,t){let n=e.match(D_);if(!n)return`---\n**language:** ${t}\n---\n\n${e}`;let r=n[0],i=n[1].split(/\r?\n/),a=i.findIndex(e=>O_.test(e));if(a>=0)i[a]=i[a].replace(O_,`$1${t}`);else{let e=i.findIndex(e=>/^\s*(?:\*\*)?date(?:\*\*)?\s*:\s*(?:\*\*)?/i.test(e)),n=e>=0?e+1:i.length;i.splice(n,0,`**language:** ${t}`)}return`---\n${i.join(`
118
+ `)}\n---\n`+e.slice(r.length)}var M_=e=>e.normalize(`NFC`).normalize(`NFD`).replace(/[̀-ͯ]/g,``).toLowerCase();function N_(e,t){let n=M_(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=M_(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=M_(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 P_(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 F_=U(`<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>`),I_=U(`<span class="text-xs text-gray-400 dark:text-gray-500"> </span>`),L_=U(`<span> </span>`),R_=U(`<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>`),z_=U(`<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>`),B_=U(`<button data-testid="tts-toggle" class="no-print text-sm px-3 py-1.5 rounded-lg border border-blue-300 dark:border-blue-700 bg-blue-50 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400 hover:bg-blue-100 dark:hover:bg-blue-900/50 transition-colors"><i></i></button> <button data-testid="tts-stop" 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-stop"></i></button>`,1),V_=U(`<button data-testid="tts-play" 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-headphones" style="margin-right:4px"></i> </button>`),H_=Hr(`<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>`),U_=U(`<button data-testid="versions-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-branch"></i> </button>`),W_=U(`<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 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>`),G_=U(`<span class="text-gray-300 dark:text-gray-600 mx-1">·</span>`),K_=U(`<!> <button class="text-blue-600 dark:text-blue-400 hover:underline"> </button>`,1),q_=U(`<div class="no-print mt-2 flex flex-wrap gap-1 text-xs"></div>`),J_=U(`<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>`),Y_=U(`<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>`),X_=U(`<div data-testid="tts-error" class="mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-300"> </div>`),Z_=U(`<li class="m-0 p-0"><button type="button" class="block w-full text-left bg-transparent border-0 cursor-pointer 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"> </button></li>`),Q_=U(`<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),$_=U(`<div data-testid="tts-language-modal" class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"><div class="w-full max-w-sm rounded-xl border border-gray-200 bg-white p-5 shadow-2xl dark:border-gray-700 dark:bg-gray-900"><h2 class="text-base font-semibold text-gray-900 dark:text-gray-50"> </h2> <p class="mt-2 text-sm text-gray-600 dark:text-gray-300"> </p> <div class="mt-4 grid grid-cols-2 gap-2"><button type="button" data-testid="tts-language-en" class="rounded-lg border border-gray-200 px-3 py-2 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800"> </button> <button type="button" data-testid="tts-language-fr" class="rounded-lg border border-gray-200 px-3 py-2 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:text-gray-200 dark:hover:bg-gray-800"> </button></div> <div class="mt-3 flex justify-end"><button type="button" class="rounded-lg border border-gray-200 px-3 py-1.5 text-sm text-gray-600 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:text-gray-300 dark:hover:bg-gray-800"> </button></div></div></div>`),ev=U(`<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>`),tv=U(`<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 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> <!> <h1 data-testid="doc-title" class="min-w-0 text-xs font-normal 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 nv(e,t){qe(t,!0);let n=Wi(t,`navHistory`,19,()=>[]),r=P(null),i=P(null),a=P(null),o=P(null),s=P(!1),c=P(!1),l=P(!1),u=P(null),d=P(I([])),f=``,p=N(()=>V(d).length?Y(V(d).length===1?`search.notice_singular`:`search.notice_plural`).replace(`{count}`,String(V(d).length)).replace(`{query}`,X.searchQuery):``),m=N(()=>Og(t.doc.content)),h=N(()=>(V(m)||``).toUpperCase()===`TO BE VALIDATED`),g=P(!1),_=P(null),v=P(!1),y=P(!1),b=P(!1),x=P(!1),S=P(!1);async function C(){try{let e=await(await fetch(`/api/git/status`)).json();F(l,e.mode===`enabled`&&e.ok===!0,!0)}catch{F(l,!1)}}kn(()=>{t.doc.id,C()});function w(e,t){let n=document.getElementById(`home-content-area`);if(!n)return;let r=document.getElementById(`home-doc-header`),i=r?r.getBoundingClientRect().height:0,a=e.getBoundingClientRect().top-n.getBoundingClientRect().top+n.scrollTop;n.scrollTo({top:Math.max(0,a-i-16),behavior:t?`smooth`:`auto`})}function T(e){let t=document.getElementById(e);t&&w(t,!1)}function E(e){F(r,e,!0);let n=t.doc.id,i=X.searchQuery,o=typeof i==`string`&&i.toLowerCase().startsWith(`metadata://`);F(d,i&&!o?N_(e,i):[],!0),V(u)&&p_(e,V(u),Y),n===f?V(a)?.apply():(f=n,V(a)?.load(n),wg.load(n)),F(k,Array.from(e.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)}function D(){return V(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})}async function ee(){let e=1;try{let n=await wg.load(t.doc.id);n&&typeof n.accuracy==`number`&&(e=n.accuracy)}catch{}let n=Math.round(e*100),r=n<100,i=Ag(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 V(o).show({title:Y(`doc.validate_title`),message:a,detail:s,confirmLabel:Y(`doc.validate_confirm`),cancelLabel:Y(`common.cancel`)}))return;let c=kg(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 wg.load(t.doc.id),X.docStatuses={...X.docStatuses,[t.doc.id]:i?`Done`:`Accepted`}}catch(e){F(_,{text:Y(`doc.validate_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}}kn(()=>{try{F(v,localStorage.getItem(`ld-full-width`)===`1`)}catch{}});let O=P(!1),k=P(I([])),te=N(()=>V(O)&&V(k).length>0),ne=`ld-toc-w`,re=P(!1),ie=P(null),A=P(null),ae=P(0);kn(()=>{if(!V(A))return;let e=new ResizeObserver(()=>{F(ae,V(A).offsetHeight,!0)});return e.observe(V(A)),F(ae,V(A).offsetHeight,!0),()=>e.disconnect()});function oe(e){if(e.preventDefault(),!V(ie))return;let t=e.clientX,n=V(ie).getBoundingClientRect().width;F(re,!0),V(ie).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)));V(ie).style.width=r+`px`},i=()=>{document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i),document.body.style.cursor=``,document.body.style.userSelect=``,F(re,!1),V(ie).style.transition=``;try{localStorage.setItem(ne,String(parseInt(V(ie).style.width,10)))}catch{}};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}kn(()=>{try{F(O,localStorage.getItem(`ld-toc-open`)===`1`)}catch{}try{let e=parseInt(localStorage.getItem(ne)||``,10);V(ie)&&e>=160&&e<=400&&(V(ie).style.width=e+`px`)}catch{}});function se(){F(O,!V(O));try{localStorage.setItem(`ld-toc-open`,V(O)?`1`:`0`)}catch{}}function ce(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=!0),r=r.parentElement;w(t,!0)}async function le(){try{await navigator.clipboard.writeText(decodeURIComponent(t.doc.id)),F(b,!0),setTimeout(()=>F(b,!1),1800)}catch{}}function ue(){window.print()}function de(e){V(r)&&E_.start(V(r),{language:e,codeLabel:Y(`tts.code_label`),imageLabel:Y(`tts.image_label`),diagramLabel:Y(`tts.diagram_label`),tableLabel:Y(`tts.table_label`)})}function fe(){let e=A_(t.doc.content);if(!e){F(x,!0);return}de(e)}async function pe(e){F(S,!0);try{let n=j_(t.doc.content,e);n!==t.doc.content&&await t.onsave(n),F(x,!1),de(e)}catch(e){F(_,{text:Y(`tts.language_save_failed`)+(e instanceof Error?e.message:String(e)),cls:`text-red-500 dark:text-red-400`},!0)}finally{F(S,!1)}}kn(()=>(t.doc.id,V(g),()=>{F(x,!1),E_.stop()}));var me=tv(),he=R(me),ge=L(he),_e=L(ge),ve=L(_e),ye=L(ve),be=L(ye);q(be,17,()=>t.doc.folder||[],Xr,(e,t)=>{var n=F_(),r=L(n,!0);j(n),B(e=>{J(n,`title`,V(t)),G(r,e)},[()=>zh(V(t))]),W(e,n)});var xe=z(be,2),Se=L(xe,!0);j(xe),j(ye);var Ce=z(ye,2),we=e=>{var n=I_(),r=L(n,!0);j(n),B(()=>G(r,t.doc.formattedDate)),W(e,n)};K(Ce,e=>{t.doc.formattedDate&&e(we)});var Te=z(Ce,2),Ee=L(Te,!0);j(Te);var De=z(Te,2),Oe=L(De);j(De),j(ve),j(_e);var ke=z(_e,2),Ae=L(ke),je=e=>{var t=R_(),n=L(t),r=e=>{var t=L_(),n=L(t,!0);j(t),B(()=>{gi(t,1,`text-xs ${V(_).cls??``}`),G(n,V(_).text)}),W(e,t)};K(n,e=>{V(_)&&e(r)});var a=z(n,2),o=L(a,!0);j(a);var s=z(a,2),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(t),B((e,t,n,r)=>{G(o,e),J(s,`title`,t),G(c,n),G(u,r)},[()=>Y(`common.cancel`),()=>Y(`doc.snippets`),()=>Y(`doc.snippets_btn`),()=>Y(`common.save`)]),H(`click`,a,()=>V(i).cancelEdit()),H(`click`,s,()=>V(i).openSnippets()),H(`click`,l,()=>V(i).save()),W(e,t)},Me=e=>{let t=N(()=>X.markerActive?`#fef08a`:`#bfdbfe`),n=N(()=>X.markerActive?`#fef08a`:`#93c5fd`),r=N(()=>X.markerActive?`#fde047`:`#93c5fd`);var a=W_(),o=L(a),u=e=>{var t=z_(),n=z(L(t),1,!0);j(t),B((e,r)=>{J(t,`title`,e),G(n,r)},[()=>Y(`doc.validate_mode`),()=>Y(`doc.validate_btn`)]),H(`click`,t,ee),W(e,t)};K(o,e=>{V(h)&&e(u)});var d=z(o,2),f=e=>{var t=B_(),n=R(t),r=L(n);j(n);var i=z(n,2);B((e,t)=>{J(n,`title`,e),gi(r,1,`fa-solid ${E_.status===`playing`?`fa-pause`:`fa-play`}`),J(i,`title`,t)},[()=>E_.status===`playing`?Y(`tts.pause`):Y(`tts.resume`),()=>Y(`tts.stop`)]),H(`click`,n,()=>E_.toggle()),H(`click`,i,()=>E_.stop()),W(e,t)},p=e=>{var t=V_(),n=z(L(t),1,!0);j(t),B((e,r)=>{J(t,`title`,e),G(n,r)},[()=>Y(`tts.play`),()=>Y(`tts.play_btn`)]),H(`click`,t,fe),W(e,t)};K(d,e=>{E_.active?e(f):e(p,-1)});var m=z(d,2),g=L(m),_=L(g),v=z(_),b=z(v),x=z(b),S=z(x,2),C=e=>{W(e,H_())};K(S,e=>{X.markerHidden&&e(C)}),j(g);var w=z(g,1,!0);j(m);var T=z(m,2),E=L(T);j(T);var D=z(T,2),k=z(L(D));j(D);var te=z(D,2),ne=e=>{var t=U_(),n=z(L(t));j(t),B((e,r)=>{J(t,`title`,e),G(n,` ${r??``}`)},[()=>Y(`versions.button_title`),()=>Y(`versions.button`)]),H(`click`,t,()=>F(c,!0)),W(e,t)};K(te,e=>{V(l)&&e(ne)});var re=z(te,2),ie=z(L(re));j(re);var A=z(re,2),ae=z(L(A));j(A);var oe=z(A,2);j(a),B((e,i,a,o,s,c,l,u,d,f,p)=>{J(m,`title`,e),gi(m,1,`no-print text-sm px-3 py-1.5 rounded-lg border transition-colors ${X.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(_,`fill`,V(t)),J(v,`fill`,V(n)),J(b,`fill`,V(r)),J(x,`fill`,V(r)),G(w,i),J(T,`title`,a),G(E,`📄 ${o??``}`),J(D,`title`,s),G(k,` ${c??``}`),J(re,`title`,l),G(ie,` ${u??``}`),J(A,`title`,d),G(ae,` ${f??``}`),J(oe,`title`,p),gi(oe,1,`no-print text-sm px-3 py-1.5 rounded-lg border transition-colors ${V(O)?`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(`metadata.button_title`),()=>Y(`metadata.button`),()=>Y(`doc.edit`),()=>Y(`doc.edit_btn`),()=>Y(`doc.delete`),()=>Y(`doc.delete_btn`),()=>Y(`doc.toc_toggle`)]),H(`click`,m,()=>X.toggleMarker()),H(`click`,T,ue),H(`click`,D,()=>F(s,!0)),H(`click`,re,()=>V(i).enterEdit()),H(`click`,A,()=>F(y,!0)),H(`click`,oe,se),W(e,a)};K(Ae,e=>{V(g)?e(je):e(Me,-1)}),j(ke),j(ge);var Ne=z(ge,2),Pe=e=>{Eg(e,{onopen:()=>F(s,!0)})};K(Ne,e=>{V(g)||e(Pe)});var Fe=z(Ne,2),Ie=e=>{var r=q_();q(r,21,n,Xr,(e,n,r)=>{var i=K_(),a=R(i),o=e=>{W(e,G_())};K(a,e=>{r>0&&e(o)});var s=z(a,2),c=L(s);j(s),B(()=>G(c,`← ${V(n).title??``}`)),H(`click`,s,()=>t.ongoback?.(r)),W(e,i)}),j(r),W(e,r)};K(Fe,e=>{!V(g)&&n().length&&e(Ie)});var Le=z(Fe,2),Re=e=>{var t=Y_(),n=L(t),r=L(n,!0);j(n);var i=z(n,2);q(i,23,()=>V(d),e=>e.id,(e,t,n)=>{var r=J_(),i=L(r),a=L(i),o=L(a);j(a);var s=z(a),c=L(s,!0);j(s),j(i),j(r),B(()=>{G(o,`${V(n)+1}.`),G(c,V(t).snippet)}),H(`click`,i,()=>P_(V(t).id)),W(e,r)}),j(i),j(t),B(()=>G(r,V(p))),W(e,t)};K(Le,e=>{!V(g)&&V(d).length&&X.searchQuery&&e(Re)});var ze=z(Le,2),Be=e=>{var t=X_(),n=L(t,!0);j(t),B(()=>G(n,E_.error)),W(e,t)};K(ze,e=>{!V(g)&&E_.error&&e(Be)}),Vi(z(ze,2),e=>F(u,e),()=>V(u)),j(he),Vi(he,e=>F(A,e),()=>V(A));var Ve=z(he,2),He=L(Ve);Vi(Vu(L(He),{get docId(){return t.doc.id},get content(){return t.doc.content},get html(){return t.doc.html},get onsave(){return t.onsave},get onopen(){return t.onopen},onanchor:T,onconfirmdelete:D,oncontentwired:E,get rewireSignal(){return X.searchQuery},get editing(){return V(g)},set editing(e){F(g,e,!0)},get saveMsg(){return V(_)},set saveMsg(e){F(_,e,!0)}}),e=>F(i,e,!0),()=>V(i)),j(He);var Ue=z(He,2),We=e=>{var t=Q_(),n=R(t),r=z(n,2),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o);q(s,21,()=>V(k),Xr,(e,t)=>{var n=Z_(),r=L(n),i=L(r,!0);j(r),j(n),B(()=>{vi(n,`padding-left: ${(V(t).level-1)*.75}rem`),J(r,`title`,V(t).text),G(i,V(t).text)}),H(`click`,r,()=>ce(V(t).id)),W(e,n)}),j(s),j(o),j(r),Vi(r,e=>F(ie,e),()=>V(ie)),B(e=>{gi(n,1,`no-print w-1 shrink-0 self-stretch cursor-col-resize select-none transition-colors ${V(re)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),vi(r,`width: 224px; top: ${V(ae)??``}px; min-height: calc(100vh - ${V(ae)??``}px); max-height: calc(100vh - ${V(ae)??``}px)`),G(a,e)},[()=>Y(`doc.toc_title`)]),H(`mousedown`,n,oe),W(e,t)};K(Ue,e=>{V(te)&&e(We)}),j(Ve);var Ge=z(Ve,2);Vi(vg(Ge,{get contentEl(){return V(r)},get docId(){return t.doc.id}}),e=>F(a,e,!0),()=>V(a));var Ke=z(Ge,2);qg(Ke,{get open(){return V(s)},get docId(){return t.doc.id},get content(){return t.doc.content},onclose:()=>F(s,!1)});var Ye=z(Ke,2);o_(Ye,{get open(){return V(c)},get docId(){return t.doc.id},get content(){return t.doc.content},get onsave(){return t.onsave},onclose:()=>F(c,!1)});var Xe=z(Ye,2);Vi(tu(Xe,{}),e=>F(o,e,!0),()=>V(o));var Ze=z(Xe,2),Qe=e=>{var t=$_(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var s=z(a,2),c=L(s),l=L(c,!0);j(c);var u=z(c,2),d=L(u,!0);j(u),j(s);var f=z(s,2),p=L(f),m=L(p,!0);j(p),j(f),j(n),j(t),B((e,t,n,r,a)=>{G(i,e),G(o,t),c.disabled=V(S),G(l,n),u.disabled=V(S),G(d,r),p.disabled=V(S),G(m,a)},[()=>Y(`tts.language_title`),()=>Y(`tts.language_message`),()=>Y(`tts.language_en`),()=>Y(`tts.language_fr`),()=>Y(`common.cancel`)]),H(`click`,t,e=>{e.target===e.currentTarget&&!V(S)&&F(x,!1)}),H(`click`,c,()=>pe(`en`)),H(`click`,u,()=>pe(`fr`)),H(`click`,p,()=>F(x,!1)),W(e,t)};K(Ze,e=>{V(x)&&e(Qe)});var $e=z(Ze,2),et=e=>{var n=ev(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o);var c=z(o,2),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d,!0);j(d),j(c),j(r),j(n),B((e,n,r)=>{G(a,e),G(s,t.doc.title),G(u,n),G(f,r)},[()=>Y(`doc.confirm_delete`),()=>Y(`common.cancel`),()=>Y(`doc.confirm_delete_btn`)]),H(`click`,n,e=>{e.target===e.currentTarget&&F(y,!1)}),H(`click`,l,()=>F(y,!1)),H(`click`,d,async()=>{F(y,!1),await t.ondelete()}),W(e,n)};K($e,e=>{V(y)&&e(et)}),B(e=>{G(Se,t.doc.category),G(Ee,t.doc.title),J(De,`title`,e),gi(De,1,`no-print inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md border border-gray-200 text-xs 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 ${V(b)?`text-green-600 dark:text-green-400`:``}`),gi(Oe,1,`fa-${V(b)?`solid fa-check`:`regular fa-copy`}`)},[()=>Y(`doc.copy_mcp_id`)]),H(`click`,De,le),W(e,me),Je()}Pr([`click`,`mousedown`]);var rv=/[\u0300-\u036f]/g,iv=/[^a-zA-Z0-9_.-]+/g;function av(e){return(e||``).normalize(`NFD`).replace(rv,``).trim().replace(iv,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``)}var ov=U(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),sv=U(`<p class="px-3 py-3 text-xs text-red-400 text-center"> </p>`),cv=U(`<p class="px-3 py-3 text-xs text-gray-400 text-center"> </p>`),lv=U(`<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>`),uv=U(`<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>`),dv=U(`<p class="text-xs text-red-500"> </p>`),fv=U(`<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 pv(e,t){qe(t,!0);let n=P(``),r=P(null),i=P(null),a=P(``),o=P(``),s=P(`/ (root)`),c=P(!1),l=P(``),u=P(I([])),d=P(!1),f=P(!1),p=P(``),m=P(!1),h=P(null),g=!1;kn(()=>{t.open&&!g?(g=!0,_()):t.open||(g=!1)});async function _(){try{F(n,(await fetch(`/api/config`).then(e=>e.json())).docsFolder||``,!0)}catch{F(n,``)}let e=``;if(X.currentDocId){let t=decodeURIComponent(X.currentDocId);if(!t.startsWith(`/`)){let n=t.split(`/`);n.length>1&&(e=n.slice(0,-1).join(`/`))}}F(a,e?V(n)+`/`+e:V(n),!0),F(r,V(a),!0),F(i,null),F(o,``),F(s,e?`/`+e:`/ (root)`,!0),F(c,!1),F(p,``),F(m,!1),setTimeout(()=>V(h)?.focus(),50)}let v=N(()=>{let e=av(V(o));if(!e)return Y(`modal.new_folder.enter_name`);let t=V(a)||V(n),r=t.startsWith(V(n))?t.slice(V(n).length).replace(/^\//,``):``;return(r?r+`/`:``)+e});function y(e){let t=e.currentTarget,n=av(t.value);t.value!==n&&(t.value=n),V(o)!==n&&F(o,n,!0)}function b(){F(c,!V(c)),V(c)&&x(V(r)||V(n))}async function x(e){F(d,!0),F(f,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(r,t.current,!0),F(i,t.parent,!0),F(a,t.current,!0),F(l,t.current,!0),F(s,(t.current.startsWith(V(n)+`/`)?t.current.slice(V(n).length):t.current===V(n)?``:t.current)||`/ (root)`,!0),F(u,t.dirs||[],!0)}catch{F(f,!0),F(u,[],!0)}finally{F(d,!1)}}let S=N(()=>V(r)===V(n));function C(){V(i)&&x(V(i))}async function w(){let e=av(V(o));if(F(p,``),!e){F(p,Y(`modal.new_folder.error_empty`),!0);return}if(!/^[a-zA-Z0-9_.-]+$/.test(e)){F(p,Y(`modal.new_folder.error_invalid_chars`),!0);return}let r=V(a)||V(n);if(r===V(n)&&(e===`files`||e===`images`)){F(p,Y(`modal.new_folder.error_reserved`),!0);return}let i=r.endsWith(`/`)?r+e:r+`/`+e;F(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){F(m,!1),F(p,Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e)))}}var T=Wr(),E=R(T),D=e=>{var n=fv(),r=L(n),i=L(r),a=z(L(i),2),g=L(a,!0);j(a),j(i);var _=z(i,2),T=L(_),E=L(T,!0);j(T);var D=z(T,2);Di(D),Vi(D,e=>F(h,e),()=>V(h)),j(_);var ee=z(_,2),O=L(ee),k=L(O,!0);j(O);var te=z(O,2),ne=L(te),re=L(ne,!0);j(ne);var ie=z(ne,2),A=L(ie,!0);j(ie),j(te);var ae=z(te,2),oe=e=>{var t=uv(),n=L(t),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n);var s=z(n,2),c=L(s),p=e=>{var t=ov(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},m=e=>{var t=sv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`modal.new_folder.error_loading`)]),W(e,t)},h=e=>{var t=cv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`modal.new_folder.no_subfolders`)]),W(e,t)},g=e=>{var t=Wr();q(R(t),17,()=>V(u),e=>e.path,(e,t)=>{var n=lv(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>x(V(t).path)),W(e,n)}),W(e,t)};K(c,e=>{V(d)?e(p):V(f)?e(m,1):V(u).length===0?e(h,2):e(g,-1)}),j(s),j(t),B(e=>{r.disabled=V(S),G(i,e),G(o,V(l))},[()=>Y(`common.up`)]),H(`click`,r,C),W(e,t)};K(ae,e=>{V(c)&&e(oe)}),j(ee);var se=z(ee,2),ce=L(se),le=L(ce,!0);j(ce);var ue=z(ce,2),de=L(ue,!0);j(ue),j(se);var fe=z(se,2),pe=e=>{var t=dv(),n=L(t,!0);j(t),B(()=>G(n,V(p))),W(e,t)};K(fe,e=>{V(p)&&e(pe)});var me=z(fe,2),he=L(me),ge=L(he,!0);j(he);var _e=z(he,2),ve=L(_e,!0);j(_e),j(me),j(r),j(n),B((e,t,n,r,i,a,o,c)=>{G(g,e),G(E,t),J(D,`placeholder`,n),G(k,r),G(re,V(s)),G(A,i),G(le,a),G(de,V(v)),G(ge,o),_e.disabled=V(m),G(ve,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`),()=>V(m)?Y(`modal.new_folder.creating_btn`):Y(`modal.new_folder.create_btn`)]),H(`click`,n,e=>{e.target===e.currentTarget&&t.onclose()}),H(`input`,D,y),Ni(D,()=>V(o),e=>F(o,e)),H(`click`,ie,b),H(`click`,he,function(...e){t.onclose?.apply(this,e)}),H(`click`,_e,w),W(e,n)};K(E,e=>{t.open&&e(D)}),W(e,T),Je()}Pr([`click`,`input`]);var mv=U(`<option></option>`),hv=U(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),gv=U(`<p class="px-3 py-4 text-xs text-red-400 text-center"> </p>`),_v=U(`<p class="px-3 py-3 text-xs text-gray-400 text-center"> </p>`),vv=U(`<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>`),yv=U(`<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>`),bv=U(`<p class="text-xs text-red-500"> </p>`),xv=U(`<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 Sv(e,t){qe(t,!0);let n=P(``),r=P(`YYYY_MM_DD_HH_mm_[Category]_title`),i=P(null),a=P(null),o=P(``),s=P(``),c=P(``),l=P(`/ (root)`),u=P(!1),d=P(``),f=P(I([])),p=P(!1),m=P(!1),h=P(``),g=P(I([])),_=P(``),v=P(!1),y=P(null);function b(e){return(e||``).normalize(`NFD`).replace(/[̀-ͯ]/g,``).toUpperCase().replace(/[^A-Z0-9_-]/g,``)}function x(e){let t=V(n);return e===t?``:e.startsWith(t+`/`)?e.slice(t.length+1):e}let S=!1;kn(()=>{t.open&&!S?(S=!0,C()):t.open||(S=!1)});async function C(){try{let e=await fetch(`/api/config`).then(e=>e.json());F(n,e.docsFolder||``,!0),F(r,e.filenamePattern||`YYYY_MM_DD_HH_mm_[Category]_title`,!0)}catch{F(n,``),F(r,`YYYY_MM_DD_HH_mm_[Category]_title`)}let e=X.currentDocId&&X.allDocs.find(e=>e.id===X.currentDocId),t=b(e&&e.category||`General`)||`GENERAL`,d=``;if(X.currentDocId){let e=decodeURIComponent(X.currentDocId);if(!e.startsWith(`/`)){let t=e.split(`/`);t.length>1&&(d=t.slice(0,-1).join(`/`))}}let f=d?V(n)+`/`+d:``;F(o,d,!0),F(i,f||null,!0),F(a,null),w(),F(s,``),F(c,t,!0),F(l,d?`/`+d:`/ (root)`,!0),F(u,!1),F(h,``),F(_,``),F(v,!1),setTimeout(()=>V(y)?.focus(),50)}function w(){let e=new Set;(X.allDocs||[]).forEach(t=>{let n=b(t.category||``);n&&e.add(n)}),F(g,Array.from(e).sort((e,t)=>e.localeCompare(t)),!0)}function T(){let e=b(V(c));V(c)!==e&&F(c,e,!0)}function E(e){let t=e.currentTarget,n=av(t.value);t.value!==n&&(t.value=n),V(h)!==n&&F(h,n,!0)}let D=N(()=>{let e=V(s).trim();if(!e)return Y(`modal.new_doc.title_placeholder`);let t=b(V(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=V(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 V(o)?V(o)+`/`+p:p});function ee(){F(u,!V(u)),V(u)&&O(V(i)||V(n))}async function O(e){F(p,!0),F(m,!1);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(i,t.current,!0),F(a,t.parent,!0),F(o,x(t.current),!0),F(d,t.current,!0),F(l,V(o)?`/`+V(o):`/ (root)`,!0),F(f,t.dirs||[],!0)}catch{F(m,!0),F(f,[],!0)}finally{F(p,!1)}}let k=N(()=>V(i)===V(n));function te(){V(i)!==V(n)&&V(a)&&O(V(a))}function ne(){let e=av(V(h));if(!e)return;let t=V(i)||V(n);if(t===V(n)&&(e===`files`||e===`images`)){F(_,Y(`modal.new_folder.error_reserved`),!0);return}F(_,``);let r=(x(t)?x(t)+`/`:``)+e;F(o,r),F(l,`/`+r),F(h,``)}async function re(){let e=V(s).trim(),n=b(V(c))||`GENERAL`;if(!e){F(_,Y(`modal.new_doc.error_empty_title`),!0);return}F(_,``),F(v,!0);try{let r=await fetch(`/api/documents`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:e,category:n,folder:V(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){F(_,Y(`common.error_prefix`)+(e instanceof Error?e.message:String(e))),F(v,!1)}}function ie(e){e.key===`Enter`&&re(),e.key===`Escape`&&t.onclose()}var A=Wr(),ae=R(A),oe=e=>{var n=xv(),r=L(n),i=L(r),a=z(L(i)),o=L(a,!0);j(a),j(i);var b=z(i,2),x=L(b),S=L(x,!0);j(x);var C=z(x,2);Di(C),Vi(C,e=>F(y,e),()=>V(y)),j(b);var w=z(b,2),A=L(w),ae=L(A,!0);j(A);var oe=z(A,2);Di(oe);var se=z(oe,2);q(se,20,()=>V(g),e=>e,(e,t)=>{var n=mv(),r={};B(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),W(e,n)}),j(se),j(w);var ce=z(w,2),le=L(ce),ue=L(le,!0);j(le);var de=z(le,2),fe=L(de),pe=L(fe,!0);j(fe);var me=z(fe,2),he=z(L(me)),ge=L(he,!0);j(he),j(me),j(de);var _e=z(de,2),ve=e=>{var t=yv(),n=L(t),r=L(n),i=L(r);j(r);var a=z(r,2),o=L(a,!0);j(a),j(n);var s=z(n,2),c=L(s),l=e=>{var t=hv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},u=e=>{var t=gv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.cannot_read_dir`)]),W(e,t)},g=e=>{var t=_v(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`modal.new_doc.no_subfolders`)]),W(e,t)},_=e=>{var t=Wr();q(R(t),17,()=>V(f),e=>e.path,(e,t)=>{var n=vv(),r=z(L(n),2),i=L(r,!0);j(r),j(n),B(()=>G(i,V(t).name)),H(`click`,n,()=>O(V(t).path)),W(e,n)}),W(e,t)};K(c,e=>{V(p)?e(l):V(m)?e(u,1):V(f).length===0?e(g,2):e(_,-1)}),j(s);var v=z(s,2),y=L(v);Di(y);var b=z(y,2),x=L(b,!0);j(b),j(v),j(t),B((e,t,n)=>{r.disabled=V(k),G(i,`↑ ${e??``}`),G(o,V(d)),J(y,`placeholder`,t),G(x,n)},[()=>Y(`common.up`),()=>Y(`modal.new_doc.new_folder_placeholder`),()=>Y(`modal.new_doc.create_folder_btn`)]),H(`click`,r,te),H(`input`,y,E),H(`keydown`,y,e=>{e.key===`Enter`&&ne()}),Ni(y,()=>V(h),e=>F(h,e)),H(`click`,b,ne),W(e,t)};K(_e,e=>{V(u)&&e(ve)}),j(ce);var ye=z(ce,2),be=L(ye),xe=L(be,!0);j(be);var Se=z(be,2),Ce=L(Se,!0);j(Se),j(ye);var we=z(ye,2),Te=e=>{var t=bv(),n=L(t,!0);j(t),B(()=>G(n,V(_))),W(e,t)};K(we,e=>{V(_)&&e(Te)});var Ee=z(we,2),De=L(Ee),Oe=L(De,!0);j(De);var ke=z(De,2),Ae=L(ke,!0);j(ke),j(Ee),j(r),j(n),B((e,t,n,r,i,a,s,c,u)=>{G(o,e),G(S,t),J(C,`placeholder`,n),G(ae,r),G(ue,i),G(pe,V(l)),G(ge,a),G(xe,s),G(Ce,V(D)),G(Oe,c),ke.disabled=V(v),G(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`),()=>V(v)?Y(`modal.new_folder.creating_btn`):Y(`common.create`)]),H(`click`,n,e=>{e.target===e.currentTarget&&t.onclose()}),H(`keydown`,C,ie),Ni(C,()=>V(s),e=>F(s,e)),H(`input`,oe,T),H(`keydown`,oe,ie),Ni(oe,()=>V(c),e=>F(c,e)),H(`click`,me,ee),H(`click`,De,function(...e){t.onclose?.apply(this,e)}),H(`click`,ke,re),W(e,n)};K(ae,e=>{t.open&&e(oe)}),W(e,A),Je()}Pr([`click`,`keydown`,`input`]);var Cv=U(`<p class="text-sm text-gray-400 py-2"> </p>`),wv=U(`<p class="text-sm text-red-500"> </p>`),Tv=U(`<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>`),Ev=U(`<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>`),Dv=U(`<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>`),Ov=U(`<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>`),kv=U(`<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 Av(e,t){qe(t,!0);let n=P(`markdown`),r=!1,i=P(!1),a=P(!1),o=P(I([])),s=P(I({})),c=P(!1),l=P(!1),u=P(!1),d=P(!1),f=!1;kn(()=>{t.open&&!f?(f=!0,F(n,`markdown`),r=!1,F(o,[],!0),F(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){F(n,e,!0),e===`html`&&h()}async function h(){if(!r){F(i,!0),F(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`)),F(o,[...t].sort((e,t)=>e===`General`?-1:t===`General`?1:e.localeCompare(t)),!0),r=!0}catch{F(a,!0)}finally{F(i,!1)}}}async function g(){F(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{F(c,!1)}}async function _(e){let n=V(o).filter(e=>V(s)[e]);if(n.length){F(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{F(u,!1),F(l,!1)}}}async function v(){F(d,!0);try{let e=X.allDocs&&X.allDocs.length?X.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>
117
119
  <html>
118
120
  <head>
119
121
  <meta charset="UTF-8">
@@ -153,7 +155,7 @@ Texte`};case`link`:return{text:et(`snip-link-text`),textFallback:Y(`snippet.link
153
155
  ${o(l,0)}
154
156
  </ul>
155
157
  </div>`}
156
- ${u.map((e,t)=>{let r=n[e.id];if(!r)return``;let i=s(lc(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>`:``}
158
+ ${u.map((e,t)=>{let r=n[e.id];if(!r)return``;let i=s(uc(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>`:``}
157
159
  <section id="doc-${e.id}" style="padding:2rem 0;">
158
160
  <div style="border-bottom:2px solid #e5e7eb;padding-bottom:0.75rem;margin-bottom:1.5rem;">
159
161
  <div style="font-size:0.7rem;color:#6b7280;margin-bottom:0.25rem;">${o}</div>
@@ -167,17 +169,17 @@ Texte`};case`link`:return{text:et(`snip-link-text`),textFallback:Y(`snippet.link
167
169
  setTimeout(() => window.print(), 800);
168
170
  <\/script>
169
171
  </body>
170
- </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{F(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=Wr(),S=R(x),C=e=>{var r=Dv(),f=L(r),p=L(f),h=z(L(p),2),x=L(h,!0);j(h),j(p);var S=z(p,2),C=L(S),w=L(C,!0);j(C);var T=z(C,2),E=L(T,!0);j(T);var D=z(T,2),ee=L(D,!0);j(D),j(S);var O=z(S,2),k=e=>{var t=wv(),n=L(t),r=L(n),c=e=>{var t=xv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},l=e=>{var t=Sv(),n=L(t);j(t),B(e=>G(n,`${e??``}failed to load folders`),[()=>Y(`common.error_prefix`)]),W(e,t)},u=e=>{var t=Wr();q(R(t),16,()=>V(o),e=>e,(e,t)=>{var n=Cv(),r=L(n);Di(r);var i,a=z(r,2),o=L(a,!0);j(a),j(n),B(()=>{i!==(i=t)&&(r.value=(r.__value=t)??``),G(o,t)}),Ii(r,()=>V(s)[t],e=>V(s)[t]=e),W(e,n)}),W(e,t)};K(r,e=>{V(i)?e(c):V(a)?e(l,1):e(u,-1)}),j(n),j(t),W(e,t)};K(O,e=>{V(n)===`html`&&e(k)});var te=z(O,2),ne=e=>{var n=Tv(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var l=z(o,2),u=L(l,!0);j(l),j(a),j(n),B((e,t,n)=>{G(i,e),G(s,t),l.disabled=V(c),G(u,n)},[()=>Y(`modal.export.markdown_hint`),()=>Y(`common.cancel`),()=>V(c)?`⏳`:Y(`modal.export.markdown_btn`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),H(`click`,l,g),W(e,n)};K(te,e=>{V(n)===`markdown`&&e(ne)});var re=z(te,2),ie=e=>{var n=Ev(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2),d=L(c,!0);j(c);var f=z(c,2),p=L(f,!0);j(f),j(a),j(n),B((e,t,n,r)=>{G(i,e),G(s,t),c.disabled=V(l),G(d,n),f.disabled=V(u),G(p,r)},[()=>Y(`modal.export_html.hint`),()=>Y(`common.cancel`),()=>V(l)?`⏳`:Y(`modal.export_html.notion_btn`),()=>V(u)?`⏳`:Y(`modal.export_html.confluence_btn`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),H(`click`,c,()=>_(`notion`)),H(`click`,f,()=>_(`confluence`)),W(e,n)};K(re,e=>{V(n)===`html`&&e(ie)});var A=z(re,2),ae=e=>{var n=Tv(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c,!0);j(c),j(a),j(n),B((e,t,n)=>{G(i,e),G(s,t),c.disabled=V(d),G(l,n)},[()=>Y(`modal.export.pdf_hint`),()=>Y(`common.cancel`),()=>V(d)?`⏳`:Y(`modal.export.pdf_btn`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),H(`click`,c,v),W(e,n)};K(A,e=>{V(n)===`pdf`&&e(ae)}),j(f),j(r),B((e,t,r,i)=>{G(x,e),gi(C,1,ui(V(n)===`markdown`?y:b)),G(w,t),gi(T,1,ui(V(n)===`html`?y:b)),G(E,r),gi(D,1,ui(V(n)===`pdf`?y:b)),G(ee,i)},[()=>Y(`modal.export.title`),()=>Y(`modal.export.tab_markdown`),()=>Y(`modal.export.tab_html`),()=>Y(`modal.export.tab_pdf`)]),H(`click`,r,e=>{e.target===e.currentTarget&&t.onclose()}),H(`click`,C,()=>m(`markdown`)),H(`click`,T,()=>m(`html`)),H(`click`,D,()=>m(`pdf`)),W(e,r)};K(S,e=>{t.open&&e(C)}),W(e,x),Je()}Pr([`click`]);var kv=U(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),Av=U(`<p> </p>`),jv=U(`<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>`),Mv=U(`<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>`),Nv=U(`<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>`),Pv=U(`<label class="flex items-center gap-1.5 text-xs text-gray-700 dark:text-gray-300 cursor-pointer"><input type="checkbox"/> </label>`),Fv=U(`<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>`),Iv=U(`<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>`),Lv=U(`<!> <!>`,1),Rv=U(`<div> </div>`),zv=U(`<div> </div> <div> </div> <div> </div> <!>`,1),Bv=U(`<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>`),Vv=U(`<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>`),Hv=U(`<p class="absolute inset-0 flex items-center justify-center text-gray-400 dark:text-gray-500 text-sm animate-pulse"> </p>`),Uv=U(`<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>`),Wv=U(`<div class="text-gray-400 text-center py-2">—</div>`),Gv=U(`<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>`),Kv=U(`<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 qv(e,t){qe(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=P(``),m=P(``),h=P(1),g=P(``),_=P(!0),v=P(!1),y=P(I(s.map(e=>({value:e.value,label:`.`+e.value,checked:!!e.def}))));function b(){return V(y).filter(e=>e.checked).map(e=>e.value)}let x=N(()=>V(y).every(e=>e.checked)),S=P(null),C=P(null),w=P(0),T=P(null),E=P(I([])),D=P(I([])),ee=P(!1),O=P(``),k=P(0),te=P(I([]));function ne(){localStorage.setItem(`wc-exts`,JSON.stringify(b()))}function re(){let e=V(x);F(y,V(y).map(t=>({...t,checked:!e})),!0),ne()}function ie(){ne()}function A(){return new Set((V(m)||``).split(/[\n,]/).map(e=>e.trim()).filter(Boolean))}function ae(e){let t=A();t.has(e)||(t.add(e),F(m,[...t].join(`, `),!0),localStorage.setItem(`wc-exclude`,V(m)),V(ue)&&_e(V(fe)),se())}function oe(){localStorage.setItem(`wc-exclude`,V(m)),V(ue)&&_e(V(fe)),se()}function se(){V(ee)&&V(O)&&Ne(V(O))}function ce(){V(S)&&Me()}function le(){let e=localStorage.getItem(`wc-root`);e&&(F(p,e,!0),F(xe,e,!0));let t=localStorage.getItem(`wc-exclude`);t&&F(m,t,!0);let n=localStorage.getItem(`wc-exts`);if(n)try{let e=JSON.parse(n);F(y,V(y).map(t=>({...t,checked:e.includes(t.value)})),!0)}catch{}}let ue=P(!1),de=P(null),fe=P(``),pe=P(``),me=P(null),he=P(``);function ge(){F(ue,!V(ue)),V(ue)&&_e(V(fe)||V(p)||`/`)}async function _e(e){F(me,null),F(he,`Loading…`);try{let t=await fetch(`/api/browse?all=1&path=`+encodeURIComponent(e)).then(e=>e.json());F(fe,t.current,!0),F(de,t.parent,!0),F(pe,t.current,!0);let n=V(p).trim(),r=(e,t)=>n&&e.startsWith(n+`/`)?e.slice(n.length+1):t,i=A(),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];F(me,c,!0),F(he,c.length?``:`Empty directory`,!0)}catch{F(me,[],!0),F(he,`Cannot read directory`)}}function ve(){V(de)&&_e(V(de))}let ye=P(!1),be=P(null),xe=P(``),Se=P(``),Ce=P(null),we=P(``);function Te(){F(ye,!V(ye)),V(ye)&&Ee(V(xe)||V(p)||`/`)}async function Ee(e){F(Ce,null),F(we,`Loading…`);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(xe,t.current,!0),F(be,t.parent,!0),F(Se,t.current,!0),F(Ce,(t.dirs||[]).map(e=>({name:e.name,path:e.path})),!0),F(we,V(Ce).length?``:`No sub-folders`,!0)}catch{F(Ce,[],!0),F(we,`Cannot read directory`)}}function De(){V(be)&&Ee(V(be))}function Oe(){F(p,V(xe),!0),localStorage.setItem(`wc-root`,V(xe)),F(ye,!1),F(m,``),localStorage.removeItem(`wc-exclude`),F(fe,V(xe),!0)}let ke=P(null),Ae=P(null),je=P(!1);function Me(){if(!V(S)||!V(C))return;let e=Math.max(1,V(h)||1),t=[...V(S).entries()].sort((e,t)=>t[1]-e[1]),n=t.filter(([t])=>(V(C).get(t)||new Set).size>=e).slice(0,150);if(!n.length){let n=t.length;F(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),F(_,!0),F(je,!1),F(v,!1);return}let r=[...V(S).keys()].filter(t=>(V(C).get(t)||new Set).size>=e).length;F(T,{scanned:V(w),unique:r,shown:n.length},!0);let i=n.slice(0,50),a=i[0][1];F(D,i.map(([e,t])=>({word:e,freq:t,pct:Math.round(t/a*100)})),!0),F(v,!0),F(_,!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(!V(ke)||!V(Ae))return;let e=V(ke),t=V(Ae);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`,F(je,!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=>Ne(e[0])})})}function Ne(e){if(!V(C)||!V(S))return;let t=[...V(C).get(e)||[]].sort(),n=V(S).get(e)||0;F(O,e,!0),F(k,n,!0),F(te,t,!0),F(ee,!0)}function Pe(){F(ee,!1)}async function Fe(){let e=V(p).trim();if(!e){F(g,`Please select a root folder first.`),F(_,!0);return}let t=b();if(!t.length){F(g,`Please select at least one extension.`),F(_,!0);return}F(ye,!1),F(v,!1),F(ee,!1),F(g,`Reading files…`),F(_,!0),F(je,!1);try{let n=V(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){F(g,`Error: `+((await a.json()).error||a.statusText));return}let{files:o,fileTexts:s}=await a.json();F(g,`Analyzing ${o} file(s)…`);let c=new Map,l=new Map,u=new Set;F(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))}F(S,c,!0),F(C,l,!0),F(E,[...u].sort().map(e=>`.`+e),!0),Me()}catch(e){F(g,`Error: `+e.message)}}let Ie=!1;kn(()=>{t.open&&!Ie?(Ie=!0,F(g,`Choose a root folder and click Launch.`),F(_,!0),F(je,!1),F(v,!1),F(ee,!1),F(S,null),F(C,null),F(T,null),F(D,[],!0),F(ye,!1),F(ue,!1),F(h,1),le(),V(p)||fetch(`/api/config`).then(e=>e.json()).then(e=>{e.docsFolder&&(F(p,e.docsFolder,!0),F(xe,e.docsFolder,!0))}).catch(()=>{})):t.open||(Ie=!1)});var Le=Wr(),Re=R(Le),ze=e=>{var n=Kv(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var c=z(r,2),l=L(c),u=L(l),d=L(u,!0);j(u);var f=z(u,2);Di(f);var b=z(f,2),S=z(L(b)),C=L(S,!0);j(S),j(b);var w=z(b,2),ne=L(w,!0);j(w),j(l);var A=z(l,2),se=L(A),le=L(se,!0);j(se);var fe=z(se,2);yn(fe);var xe=z(fe,2),Me=z(L(xe)),Ie=L(Me,!0);j(Me),j(xe),j(A);var Le=z(A,2),Re=e=>{var t=Nv(),n=L(t),r=L(n),i=z(r,2),a=L(i,!0);j(i),j(n);var o=z(n,2),s=L(o),c=e=>{var t=kv(),n=L(t,!0);j(t),B(()=>G(n,V(he))),W(e,t)},l=e=>{var t=Av(),n=L(t,!0);j(t),B(()=>{gi(t,1,`px-3 py-3 text-xs ${V(he)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),G(n,V(he))}),W(e,t)},u=e=>{var t=Wr();q(R(t),17,()=>V(me),Xr,(e,t)=>{var n=Wr(),r=R(n),i=e=>{var n=jv(),r=L(n),i=z(L(r),2),a=L(i,!0);j(i),j(r);var o=z(r,2);j(n),B(()=>G(a,V(t).name)),H(`click`,r,()=>_e(V(t).path)),H(`click`,o,()=>ae(V(t).entry)),W(e,n)},a=e=>{var n=Mv(),r=L(n),i=z(L(r),2),a=L(i,!0);j(i),j(r);var o=z(r,2);j(n),B(()=>G(a,V(t).name)),H(`click`,o,()=>ae(V(t).entry)),W(e,n)};K(r,e=>{V(t).kind===`dir`?e(i):e(a,-1)}),W(e,n)}),W(e,t)};K(s,e=>{V(me)===null?e(c):V(me).length===0?e(l,1):e(u,-1)}),j(o),j(t),B(()=>{r.disabled=!V(de),G(a,V(pe))}),H(`click`,r,ve),W(e,t)};K(Le,e=>{V(ue)&&e(Re)});var ze=z(Le,2),Be=L(ze),Ve=L(Be,!0);j(Be);var He=z(Be,2),Ue=L(He);Di(Ue);var We=z(Ue);j(He),q(z(He,2),17,()=>V(y),e=>e.value,(e,t,n)=>{var r=Pv(),i=L(r);Di(i);var a=z(i);j(r),B(()=>G(a,` ${V(t).label??``}`)),H(`change`,i,ie),Ii(i,()=>V(t).checked,e=>V(t).checked=e),W(e,r)}),j(ze);var Ge=z(ze,2),Ke=e=>{var t=Nv(),n=L(t),r=L(n),i=z(r,2),a=L(i,!0);j(i),j(n);var o=z(n,2),s=L(o),c=e=>{var t=kv(),n=L(t,!0);j(t),B(()=>G(n,V(we))),W(e,t)},l=e=>{var t=Lv(),n=R(t),r=e=>{var t=Av(),n=L(t,!0);j(t),B(()=>{gi(t,1,`px-3 py-3 text-xs ${V(we)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),G(n,V(we))}),W(e,t)},i=e=>{var t=Wr();q(R(t),17,()=>V(Ce),Xr,(e,t)=>{var n=Fv(),r=L(n),i=z(L(r),2),a=L(i,!0);j(i),j(r);var o=z(r,2);j(n),B(()=>G(a,V(t).name)),H(`click`,r,()=>Ee(V(t).path)),H(`click`,o,()=>ae(V(t).name)),W(e,n)}),W(e,t)};K(n,e=>{V(Ce).length===0?e(r):e(i,-1)});var a=z(n,2),o=e=>{var t=Iv(),n=z(L(t)),r=L(n,!0);j(n),j(t),B(()=>G(r,V(Se))),H(`click`,t,Oe),W(e,t)};K(a,e=>{V(we)!==`Cannot read directory`&&e(o)}),W(e,t)};K(s,e=>{V(Ce)===null?e(c):e(l,-1)}),j(o),j(t),B(()=>{r.disabled=!V(be),G(a,V(Se))}),H(`click`,r,De),W(e,t)};K(Ge,e=>{V(ye)&&e(Ke)}),j(c);var qe=z(c,2),Je=L(qe),Ye=e=>{var t=Vv(),n=L(t),r=L(n),i=e=>{var t=zv(),n=R(t),r=L(n);j(n);var i=z(n,2),a=L(i);j(i);var o=z(i,2),s=L(o);j(o);var c=z(o,2),l=e=>{var t=Rv(),n=L(t);j(t),B((e,r)=>{J(t,`title`,e),G(n,`${V(E).length??``} extension${V(E).length>1?`s`:``} found (${r??``})`)},[()=>V(E).join(`, `),()=>V(E).join(`, `)]),W(e,t)};K(c,e=>{V(E).length&&e(l)}),B(()=>{G(r,`${V(T).scanned??``} file(s) scanned`),G(a,`${V(T).unique??``} unique domain words`),G(s,`${V(T).shown??``} shown`)}),W(e,t)};K(r,e=>{V(T)&&e(i)}),j(n);var a=z(n,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2);Di(c);var l=z(c,2),u=L(l,!0);j(l),j(a);var d=z(a,2),f=L(d,!0);j(d);var p=z(d,2);q(p,21,()=>V(D),Xr,(e,t,n)=>{var r=Bv(),i=L(r);i.textContent=n+1;var a=z(i,2),o=L(a),s=L(o),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(o);var d=z(o,2),f=L(d);j(d),j(a),j(r),B(()=>{G(c,V(t).word),G(u,V(t).freq),vi(f,`width:${V(t).pct??``}%`)}),H(`click`,r,()=>Ne(V(t).word)),W(e,r)}),j(p),j(t),B((e,t,n,r,i,a)=>{J(o,`title`,e),G(s,t),J(c,`title`,n),J(l,`title`,r),G(u,i),G(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`)]),Ni(c,()=>V(h),e=>F(h,e)),H(`click`,l,ce),W(e,t)};K(Je,e=>{V(v)&&e(Ye)});var Xe=z(Je,2),Ze=L(Xe),Qe=e=>{var t=Hv(),n=L(t,!0);j(t),B(()=>G(n,V(g))),W(e,t)};K(Ze,e=>{V(_)&&e(Qe)});var $e=z(Ze,2);let et;Vi($e,e=>F(ke,e),()=>V(ke)),j(Xe),Vi(Xe,e=>F(Ae,e),()=>V(Ae));var tt=z(Xe,2),nt=e=>{var t=Gv(),n=L(t),r=L(n),i=L(r);j(r);var a=z(r,2);j(n);var o=z(n,2),s=L(o,!0);j(o);var c=z(o,2),l=L(c),u=e=>{var t=Wr();q(R(t),17,()=>V(te),Xr,(e,t)=>{var n=Uv(),r=L(n),i=L(r,!0);j(r);var a=z(r,2);j(n),B(()=>G(i,V(t))),H(`click`,a,()=>ae(V(t))),W(e,n)}),W(e,t)},d=e=>{W(e,Wv())};K(l,e=>{V(te).length?e(u):e(d,-1)}),j(c),j(t),B(e=>{G(i,`${V(O)??``} ×${V(k)??``}`),G(s,e)},[()=>Y(`wc.found_in`)]),H(`click`,a,Pe),W(e,t)};K(tt,e=>{V(ee)&&e(nt)}),j(qe),j(n),B((e,t,n,r,i,o,c,l,u,f)=>{G(a,e),G(s,t),G(d,n),G(C,r),G(ne,i),G(le,o),J(fe,`placeholder`,c),G(Ie,l),G(Ve,u),ki(Ue,V(x)),G(We,` ${f??``}`),et=gi($e,1,``,null,et,{hidden:!V(je)})},[()=>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`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),Ni(f,()=>V(p),e=>F(p,e)),H(`click`,b,Te),H(`click`,w,Fe),H(`input`,fe,oe),Ni(fe,()=>V(m),e=>F(m,e)),H(`click`,xe,ge),H(`change`,Ue,re),W(e,n)};K(Re,e=>{t.open&&e(ze)}),W(e,Le),Je()}Pr([`click`,`input`,`change`]);var Jv=U(`<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),Yv=U(`<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>`),Xv=U(`<p class="p-8 text-red-500"> </p>`),Zv=U(`<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>`),Qv=U(`<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 $v(e,t){qe(t,!0);let n=P(!1),r=P(!1),i=P(!1),a=P(!1),o=P(null),s=P(!1),c=P(``),l=P(!1),u=P(`Living AI Documentation`),d=P(`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){F(l,e,!0),document.documentElement.classList.toggle(`dark`,e)}function h(){m(!V(l));try{localStorage.setItem(`ld-dark`,String(V(l)))}catch{}}kn(()=>{let e=document.getElementById(`hljs-dark`),t=document.getElementById(`hljs-light`);if(!e||!t)return;let n=X.codeBlockLightTheme&&!V(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){X.searchQuery=``,X.searchResults=null;return}X.searchQuery=t,X.searchResults=X.allDocs.filter(e=>e.title.toLowerCase().includes(t.toLowerCase())||e.category.toLowerCase().includes(t.toLowerCase())),f=window.setTimeout(async()=>{try{let e=await Mh(t);t===X.searchQuery&&(X.searchResults=e)}catch{}},350)}let _=P(I([]));function v(e){let t=V(_)[e];t&&(F(_,V(_).slice(0,e),!0),y(t.id,!1,`restore`))}async function y(e,t=!1,n=!1,r=null){if(n===!0&&X.currentDocId&&X.currentDocId!==e){let t=V(_).findIndex(t=>t.id===e);if(t!==-1)F(_,V(_).slice(0,t),!0);else{let e=X.allDocs.find(e=>e.id===X.currentDocId);F(_,[...V(_),{id:X.currentDocId,title:e?e.title:X.currentDocId}],!0)}}else n||F(_,[],!0);X.currentDocId=e;let i=X.allDocs.find(t=>t.id===e);if(i&&X.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)}F(s,!0),F(c,``);try{let t=await Oh(e);t.id=e,F(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){F(c,Y(`doc.failed_to_load`)+(e instanceof Error?e.message:String(e)))}finally{F(s,!1)}}async function b(e){if(!V(o))return;let t=V(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 Oh(t);r.id=t,F(o,r,!0);let i=e.match(/\]\(\s*\.?\/files\/[^)\s]+/g),a={...X.fileAttachmentCounts};i&&i.length?a[t]=i.length:delete a[t],X.fileAttachmentCounts=a}function x(e){let t=X.allDocs.find(t=>t.id===e);if(!t)return null;let n=(t.folder||[]).join(`/`),r=e=>(e.folder||[]).join(`/`)===n,i=X.hideCategories?X.allDocs.filter(r).slice().sort((e,t)=>(e.filename||``).localeCompare(t.filename||``)):X.allDocs.filter(e=>r(e)&&e.category===t.category),a=i.findIndex(t=>t.id===e);if(a===-1)return null;let o=i[a+1]??i[a-1];return o?o.id:null}async function S(){if(!V(o))return;let e=V(o).id;if(!(await fetch(`/api/documents/`+encodeURIComponent(e),{method:`DELETE`})).ok)return;let t=x(e);X.allDocs=X.allDocs.filter(t=>t.id!==e),Array.isArray(X.searchResults)&&(X.searchResults=X.searchResults.filter(t=>t.id!==e));let n={...X.annotationCounts};delete n[e],X.annotationCounts=n;let r={...X.fileAttachmentCounts};delete r[e],X.fileAttachmentCounts=r,t?await y(t):(X.currentDocId=null,F(o,null),history.pushState({},``,location.pathname))}async function C(){let[e,t]=await Promise.all([Eh(),Th()]);if(X.allDocs=e,t.docsFolder)try{X.allFolderPaths=await Dh(t.docsFolder)}catch{X.allFolderPaths=[]}let[n,r,i]=await Promise.all([kh(),Ah(),jh()]);X.annotationCounts=n,X.fileAttachmentCounts=r,X.docStatuses=i}Gi(async()=>{m(p());let e=await Th();await pa(e.language||`en`),e.title&&(document.title=e.title,F(u,e.title,!0)),e.filenamePattern&&F(d,e.filenamePattern+`.md`),X.exclusiveFolderExpansion=!!e.exclusiveFolderExpansion,X.exclusiveCategoryExpansion=!!e.exclusiveCategoryExpansion,X.codeBlockMaxHeight=typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,X.imageRoundedCorners=!!e.imageRoundedCorners,X.imageCentered=!!e.imageCentered,X.imageBorder=!!e.imageBorder,X.codeBlockLightTheme=!!e.codeBlockLightTheme,X.codeBlockMaxHeight>0&&document.documentElement.style.setProperty(`--ld-code-max-h`,X.codeBlockMaxHeight+`px`),X.expandedCategories.size===0&&(X.expandedCategories=new Set([`DOCUMENTATION`,`General`])),await C();let t=new URLSearchParams(location.search).get(`doc`);if(t)y(t,!0,!1,location.hash?location.hash.slice(1):null);else{let e=X.allDocs.find(e=>e.category===`DOCUMENTATION`)??X.allDocs.find(e=>e.category===`General`)??X.allDocs[0];e&&y(e.id,!0)}let n=e=>{let t=e.state?.docId||new URLSearchParams(location.search).get(`doc`),n=e.state?.anchor||(location.hash.length>1?location.hash.slice(1):null);t&&y(t,!0,!1,n)};window.addEventListener(`popstate`,n);let r=()=>{C()};return window.addEventListener(`ld:documents-changed`,r),()=>{window.removeEventListener(`popstate`,n),window.removeEventListener(`ld:documents-changed`,r)}});var w=Qv(),T=R(w),E=L(T);$a(E,{get title(){return V(u)},subtitle:``,actions:e=>{var t=Jv(),n=R(t),r=z(n,2),i=L(r,!0);j(r),B((e,t)=>{J(n,`title`,e),J(n,`aria-label`,t),G(i,V(l)?`☀`:`☾`)},[()=>Y(`nav.word_cloud`),()=>Y(`nav.word_cloud`)]),H(`click`,n,()=>F(a,!0)),H(`click`,r,h),W(e,t)},children:(e,t)=>{var n=Yv(),r=L(n);Di(r),Ie(2),j(n),B(e=>{J(r,`placeholder`,e),Oi(r,X.searchQuery)},[()=>Y(`nav.search_placeholder`)]),H(`input`,r,e=>g(e.target.value)),W(e,n)},$$slots:{actions:!0,default:!0}});var D=z(E,2),ee=L(D);ig(ee,{onopen:e=>y(e),onsearch:g,onexport:()=>F(i,!0),onnewfolder:()=>F(n,!0),onnewdoc:()=>F(r,!0)});var O=z(ee,2),k=L(O),te=e=>{var t=Wr(),n=R(t),r=e=>{var t=Xv(),n=L(t,!0);j(t),B(()=>G(n,V(c))),W(e,t)},i=e=>{ev(e,{get doc(){return V(o)},get navHistory(){return V(_)},ongoback:v,onopen:(e,t)=>y(e,!1,!0,t),onsave:b,ondelete:S})};K(n,e=>{V(c)?e(r):e(i,-1)}),W(e,t)},ne=e=>{var t=Zv(),n=L(t),r=z(L(n),2),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var s=z(a,2),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(n),j(t),B((e,t,n)=>{G(i,e),G(o,t),G(c,V(d)),G(u,n)},[()=>Y(`welcome.title`),()=>Y(`welcome.hint`),()=>Y(`welcome.pattern_hint`)]),W(e,t)};K(k,e=>{V(o)?e(te):e(ne,-1)}),j(O),j(D),j(T);var re=z(T,2);dv(re,{get open(){return V(n)},onclose:()=>F(n,!1),onsuccess:C});var ie=z(re,2);bv(ie,{get open(){return V(r)},onclose:()=>F(r,!1),onsuccess:async e=>{await C(),y(e)}});var A=z(ie,2);Ov(A,{get open(){return V(i)},onclose:()=>F(i,!1)}),qv(z(A,2),{get open(){return V(a)},onclose:()=>F(a,!1)}),W(e,w),Je()}Pr([`click`,`input`]);var ey=`modulepreload`,ty=function(e){return`/`+e},ny={},ry=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}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=ty(t,n),t=s(t),t in ny)return;ny[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:ey,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.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)})},iy=U(`<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.
172
+ </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{F(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=Wr(),S=R(x),C=e=>{var r=kv(),f=L(r),p=L(f),h=z(L(p),2),x=L(h,!0);j(h),j(p);var S=z(p,2),C=L(S),w=L(C,!0);j(C);var T=z(C,2),E=L(T,!0);j(T);var D=z(T,2),ee=L(D,!0);j(D),j(S);var O=z(S,2),k=e=>{var t=Ev(),n=L(t),r=L(n),c=e=>{var t=Cv(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},l=e=>{var t=wv(),n=L(t);j(t),B(e=>G(n,`${e??``}failed to load folders`),[()=>Y(`common.error_prefix`)]),W(e,t)},u=e=>{var t=Wr();q(R(t),16,()=>V(o),e=>e,(e,t)=>{var n=Tv(),r=L(n);Di(r);var i,a=z(r,2),o=L(a,!0);j(a),j(n),B(()=>{i!==(i=t)&&(r.value=(r.__value=t)??``),G(o,t)}),Ii(r,()=>V(s)[t],e=>V(s)[t]=e),W(e,n)}),W(e,t)};K(r,e=>{V(i)?e(c):V(a)?e(l,1):e(u,-1)}),j(n),j(t),W(e,t)};K(O,e=>{V(n)===`html`&&e(k)});var te=z(O,2),ne=e=>{var n=Dv(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var l=z(o,2),u=L(l,!0);j(l),j(a),j(n),B((e,t,n)=>{G(i,e),G(s,t),l.disabled=V(c),G(u,n)},[()=>Y(`modal.export.markdown_hint`),()=>Y(`common.cancel`),()=>V(c)?`⏳`:Y(`modal.export.markdown_btn`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),H(`click`,l,g),W(e,n)};K(te,e=>{V(n)===`markdown`&&e(ne)});var re=z(te,2),ie=e=>{var n=Ov(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2),d=L(c,!0);j(c);var f=z(c,2),p=L(f,!0);j(f),j(a),j(n),B((e,t,n,r)=>{G(i,e),G(s,t),c.disabled=V(l),G(d,n),f.disabled=V(u),G(p,r)},[()=>Y(`modal.export_html.hint`),()=>Y(`common.cancel`),()=>V(l)?`⏳`:Y(`modal.export_html.notion_btn`),()=>V(u)?`⏳`:Y(`modal.export_html.confluence_btn`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),H(`click`,c,()=>_(`notion`)),H(`click`,f,()=>_(`confluence`)),W(e,n)};K(re,e=>{V(n)===`html`&&e(ie)});var A=z(re,2),ae=e=>{var n=Dv(),r=L(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2),l=L(c,!0);j(c),j(a),j(n),B((e,t,n)=>{G(i,e),G(s,t),c.disabled=V(d),G(l,n)},[()=>Y(`modal.export.pdf_hint`),()=>Y(`common.cancel`),()=>V(d)?`⏳`:Y(`modal.export.pdf_btn`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),H(`click`,c,v),W(e,n)};K(A,e=>{V(n)===`pdf`&&e(ae)}),j(f),j(r),B((e,t,r,i)=>{G(x,e),gi(C,1,ui(V(n)===`markdown`?y:b)),G(w,t),gi(T,1,ui(V(n)===`html`?y:b)),G(E,r),gi(D,1,ui(V(n)===`pdf`?y:b)),G(ee,i)},[()=>Y(`modal.export.title`),()=>Y(`modal.export.tab_markdown`),()=>Y(`modal.export.tab_html`),()=>Y(`modal.export.tab_pdf`)]),H(`click`,r,e=>{e.target===e.currentTarget&&t.onclose()}),H(`click`,C,()=>m(`markdown`)),H(`click`,T,()=>m(`html`)),H(`click`,D,()=>m(`pdf`)),W(e,r)};K(S,e=>{t.open&&e(C)}),W(e,x),Je()}Pr([`click`]);var jv=U(`<p class="px-3 py-4 text-xs text-gray-400 text-center"> </p>`),Mv=U(`<p> </p>`),Nv=U(`<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>`),Pv=U(`<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>`),Fv=U(`<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>`),Iv=U(`<label class="flex items-center gap-1.5 text-xs text-gray-700 dark:text-gray-300 cursor-pointer"><input type="checkbox"/> </label>`),Lv=U(`<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>`),Rv=U(`<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>`),zv=U(`<!> <!>`,1),Bv=U(`<div> </div>`),Vv=U(`<div> </div> <div> </div> <div> </div> <!>`,1),Hv=U(`<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>`),Uv=U(`<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>`),Wv=U(`<p class="absolute inset-0 flex items-center justify-center text-gray-400 dark:text-gray-500 text-sm animate-pulse"> </p>`),Gv=U(`<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>`),Kv=U(`<div class="text-gray-400 text-center py-2">—</div>`),qv=U(`<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>`),Jv=U(`<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 Yv(e,t){qe(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=P(``),m=P(``),h=P(1),g=P(``),_=P(!0),v=P(!1),y=P(I(s.map(e=>({value:e.value,label:`.`+e.value,checked:!!e.def}))));function b(){return V(y).filter(e=>e.checked).map(e=>e.value)}let x=N(()=>V(y).every(e=>e.checked)),S=P(null),C=P(null),w=P(0),T=P(null),E=P(I([])),D=P(I([])),ee=P(!1),O=P(``),k=P(0),te=P(I([]));function ne(){localStorage.setItem(`wc-exts`,JSON.stringify(b()))}function re(){let e=V(x);F(y,V(y).map(t=>({...t,checked:!e})),!0),ne()}function ie(){ne()}function A(){return new Set((V(m)||``).split(/[\n,]/).map(e=>e.trim()).filter(Boolean))}function ae(e){let t=A();t.has(e)||(t.add(e),F(m,[...t].join(`, `),!0),localStorage.setItem(`wc-exclude`,V(m)),V(ue)&&_e(V(fe)),se())}function oe(){localStorage.setItem(`wc-exclude`,V(m)),V(ue)&&_e(V(fe)),se()}function se(){V(ee)&&V(O)&&Ne(V(O))}function ce(){V(S)&&Me()}function le(){let e=localStorage.getItem(`wc-root`);e&&(F(p,e,!0),F(xe,e,!0));let t=localStorage.getItem(`wc-exclude`);t&&F(m,t,!0);let n=localStorage.getItem(`wc-exts`);if(n)try{let e=JSON.parse(n);F(y,V(y).map(t=>({...t,checked:e.includes(t.value)})),!0)}catch{}}let ue=P(!1),de=P(null),fe=P(``),pe=P(``),me=P(null),he=P(``);function ge(){F(ue,!V(ue)),V(ue)&&_e(V(fe)||V(p)||`/`)}async function _e(e){F(me,null),F(he,`Loading…`);try{let t=await fetch(`/api/browse?all=1&path=`+encodeURIComponent(e)).then(e=>e.json());F(fe,t.current,!0),F(de,t.parent,!0),F(pe,t.current,!0);let n=V(p).trim(),r=(e,t)=>n&&e.startsWith(n+`/`)?e.slice(n.length+1):t,i=A(),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];F(me,c,!0),F(he,c.length?``:`Empty directory`,!0)}catch{F(me,[],!0),F(he,`Cannot read directory`)}}function ve(){V(de)&&_e(V(de))}let ye=P(!1),be=P(null),xe=P(``),Se=P(``),Ce=P(null),we=P(``);function Te(){F(ye,!V(ye)),V(ye)&&Ee(V(xe)||V(p)||`/`)}async function Ee(e){F(Ce,null),F(we,`Loading…`);try{let t=await fetch(`/api/browse?path=`+encodeURIComponent(e)).then(e=>e.json());F(xe,t.current,!0),F(be,t.parent,!0),F(Se,t.current,!0),F(Ce,(t.dirs||[]).map(e=>({name:e.name,path:e.path})),!0),F(we,V(Ce).length?``:`No sub-folders`,!0)}catch{F(Ce,[],!0),F(we,`Cannot read directory`)}}function De(){V(be)&&Ee(V(be))}function Oe(){F(p,V(xe),!0),localStorage.setItem(`wc-root`,V(xe)),F(ye,!1),F(m,``),localStorage.removeItem(`wc-exclude`),F(fe,V(xe),!0)}let ke=P(null),Ae=P(null),je=P(!1);function Me(){if(!V(S)||!V(C))return;let e=Math.max(1,V(h)||1),t=[...V(S).entries()].sort((e,t)=>t[1]-e[1]),n=t.filter(([t])=>(V(C).get(t)||new Set).size>=e).slice(0,150);if(!n.length){let n=t.length;F(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),F(_,!0),F(je,!1),F(v,!1);return}let r=[...V(S).keys()].filter(t=>(V(C).get(t)||new Set).size>=e).length;F(T,{scanned:V(w),unique:r,shown:n.length},!0);let i=n.slice(0,50),a=i[0][1];F(D,i.map(([e,t])=>({word:e,freq:t,pct:Math.round(t/a*100)})),!0),F(v,!0),F(_,!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(!V(ke)||!V(Ae))return;let e=V(ke),t=V(Ae);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`,F(je,!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=>Ne(e[0])})})}function Ne(e){if(!V(C)||!V(S))return;let t=[...V(C).get(e)||[]].sort(),n=V(S).get(e)||0;F(O,e,!0),F(k,n,!0),F(te,t,!0),F(ee,!0)}function Pe(){F(ee,!1)}async function Fe(){let e=V(p).trim();if(!e){F(g,`Please select a root folder first.`),F(_,!0);return}let t=b();if(!t.length){F(g,`Please select at least one extension.`),F(_,!0);return}F(ye,!1),F(v,!1),F(ee,!1),F(g,`Reading files…`),F(_,!0),F(je,!1);try{let n=V(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){F(g,`Error: `+((await a.json()).error||a.statusText));return}let{files:o,fileTexts:s}=await a.json();F(g,`Analyzing ${o} file(s)…`);let c=new Map,l=new Map,u=new Set;F(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))}F(S,c,!0),F(C,l,!0),F(E,[...u].sort().map(e=>`.`+e),!0),Me()}catch(e){F(g,`Error: `+e.message)}}let Ie=!1;kn(()=>{t.open&&!Ie?(Ie=!0,F(g,`Choose a root folder and click Launch.`),F(_,!0),F(je,!1),F(v,!1),F(ee,!1),F(S,null),F(C,null),F(T,null),F(D,[],!0),F(ye,!1),F(ue,!1),F(h,1),le(),V(p)||fetch(`/api/config`).then(e=>e.json()).then(e=>{e.docsFolder&&(F(p,e.docsFolder,!0),F(xe,e.docsFolder,!0))}).catch(()=>{})):t.open||(Ie=!1)});var Le=Wr(),Re=R(Le),ze=e=>{var n=Jv(),r=L(n),i=L(r),a=L(i,!0);j(i);var o=z(i,2),s=L(o,!0);j(o),j(r);var c=z(r,2),l=L(c),u=L(l),d=L(u,!0);j(u);var f=z(u,2);Di(f);var b=z(f,2),S=z(L(b)),C=L(S,!0);j(S),j(b);var w=z(b,2),ne=L(w,!0);j(w),j(l);var A=z(l,2),se=L(A),le=L(se,!0);j(se);var fe=z(se,2);yn(fe);var xe=z(fe,2),Me=z(L(xe)),Ie=L(Me,!0);j(Me),j(xe),j(A);var Le=z(A,2),Re=e=>{var t=Fv(),n=L(t),r=L(n),i=z(r,2),a=L(i,!0);j(i),j(n);var o=z(n,2),s=L(o),c=e=>{var t=jv(),n=L(t,!0);j(t),B(()=>G(n,V(he))),W(e,t)},l=e=>{var t=Mv(),n=L(t,!0);j(t),B(()=>{gi(t,1,`px-3 py-3 text-xs ${V(he)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),G(n,V(he))}),W(e,t)},u=e=>{var t=Wr();q(R(t),17,()=>V(me),Xr,(e,t)=>{var n=Wr(),r=R(n),i=e=>{var n=Nv(),r=L(n),i=z(L(r),2),a=L(i,!0);j(i),j(r);var o=z(r,2);j(n),B(()=>G(a,V(t).name)),H(`click`,r,()=>_e(V(t).path)),H(`click`,o,()=>ae(V(t).entry)),W(e,n)},a=e=>{var n=Pv(),r=L(n),i=z(L(r),2),a=L(i,!0);j(i),j(r);var o=z(r,2);j(n),B(()=>G(a,V(t).name)),H(`click`,o,()=>ae(V(t).entry)),W(e,n)};K(r,e=>{V(t).kind===`dir`?e(i):e(a,-1)}),W(e,n)}),W(e,t)};K(s,e=>{V(me)===null?e(c):V(me).length===0?e(l,1):e(u,-1)}),j(o),j(t),B(()=>{r.disabled=!V(de),G(a,V(pe))}),H(`click`,r,ve),W(e,t)};K(Le,e=>{V(ue)&&e(Re)});var ze=z(Le,2),Be=L(ze),Ve=L(Be,!0);j(Be);var He=z(Be,2),Ue=L(He);Di(Ue);var We=z(Ue);j(He),q(z(He,2),17,()=>V(y),e=>e.value,(e,t,n)=>{var r=Iv(),i=L(r);Di(i);var a=z(i);j(r),B(()=>G(a,` ${V(t).label??``}`)),H(`change`,i,ie),Ii(i,()=>V(t).checked,e=>V(t).checked=e),W(e,r)}),j(ze);var Ge=z(ze,2),Ke=e=>{var t=Fv(),n=L(t),r=L(n),i=z(r,2),a=L(i,!0);j(i),j(n);var o=z(n,2),s=L(o),c=e=>{var t=jv(),n=L(t,!0);j(t),B(()=>G(n,V(we))),W(e,t)},l=e=>{var t=zv(),n=R(t),r=e=>{var t=Mv(),n=L(t,!0);j(t),B(()=>{gi(t,1,`px-3 py-3 text-xs ${V(we)===`Cannot read directory`?`text-red-400`:`text-gray-400`} text-center`),G(n,V(we))}),W(e,t)},i=e=>{var t=Wr();q(R(t),17,()=>V(Ce),Xr,(e,t)=>{var n=Lv(),r=L(n),i=z(L(r),2),a=L(i,!0);j(i),j(r);var o=z(r,2);j(n),B(()=>G(a,V(t).name)),H(`click`,r,()=>Ee(V(t).path)),H(`click`,o,()=>ae(V(t).name)),W(e,n)}),W(e,t)};K(n,e=>{V(Ce).length===0?e(r):e(i,-1)});var a=z(n,2),o=e=>{var t=Rv(),n=z(L(t)),r=L(n,!0);j(n),j(t),B(()=>G(r,V(Se))),H(`click`,t,Oe),W(e,t)};K(a,e=>{V(we)!==`Cannot read directory`&&e(o)}),W(e,t)};K(s,e=>{V(Ce)===null?e(c):e(l,-1)}),j(o),j(t),B(()=>{r.disabled=!V(be),G(a,V(Se))}),H(`click`,r,De),W(e,t)};K(Ge,e=>{V(ye)&&e(Ke)}),j(c);var qe=z(c,2),Je=L(qe),Ye=e=>{var t=Uv(),n=L(t),r=L(n),i=e=>{var t=Vv(),n=R(t),r=L(n);j(n);var i=z(n,2),a=L(i);j(i);var o=z(i,2),s=L(o);j(o);var c=z(o,2),l=e=>{var t=Bv(),n=L(t);j(t),B((e,r)=>{J(t,`title`,e),G(n,`${V(E).length??``} extension${V(E).length>1?`s`:``} found (${r??``})`)},[()=>V(E).join(`, `),()=>V(E).join(`, `)]),W(e,t)};K(c,e=>{V(E).length&&e(l)}),B(()=>{G(r,`${V(T).scanned??``} file(s) scanned`),G(a,`${V(T).unique??``} unique domain words`),G(s,`${V(T).shown??``} shown`)}),W(e,t)};K(r,e=>{V(T)&&e(i)}),j(n);var a=z(n,2),o=L(a),s=L(o,!0);j(o);var c=z(o,2);Di(c);var l=z(c,2),u=L(l,!0);j(l),j(a);var d=z(a,2),f=L(d,!0);j(d);var p=z(d,2);q(p,21,()=>V(D),Xr,(e,t,n)=>{var r=Hv(),i=L(r);i.textContent=n+1;var a=z(i,2),o=L(a),s=L(o),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(o);var d=z(o,2),f=L(d);j(d),j(a),j(r),B(()=>{G(c,V(t).word),G(u,V(t).freq),vi(f,`width:${V(t).pct??``}%`)}),H(`click`,r,()=>Ne(V(t).word)),W(e,r)}),j(p),j(t),B((e,t,n,r,i,a)=>{J(o,`title`,e),G(s,t),J(c,`title`,n),J(l,`title`,r),G(u,i),G(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`)]),Ni(c,()=>V(h),e=>F(h,e)),H(`click`,l,ce),W(e,t)};K(Je,e=>{V(v)&&e(Ye)});var Xe=z(Je,2),Ze=L(Xe),Qe=e=>{var t=Wv(),n=L(t,!0);j(t),B(()=>G(n,V(g))),W(e,t)};K(Ze,e=>{V(_)&&e(Qe)});var $e=z(Ze,2);let et;Vi($e,e=>F(ke,e),()=>V(ke)),j(Xe),Vi(Xe,e=>F(Ae,e),()=>V(Ae));var tt=z(Xe,2),nt=e=>{var t=qv(),n=L(t),r=L(n),i=L(r);j(r);var a=z(r,2);j(n);var o=z(n,2),s=L(o,!0);j(o);var c=z(o,2),l=L(c),u=e=>{var t=Wr();q(R(t),17,()=>V(te),Xr,(e,t)=>{var n=Gv(),r=L(n),i=L(r,!0);j(r);var a=z(r,2);j(n),B(()=>G(i,V(t))),H(`click`,a,()=>ae(V(t))),W(e,n)}),W(e,t)},d=e=>{W(e,Kv())};K(l,e=>{V(te).length?e(u):e(d,-1)}),j(c),j(t),B(e=>{G(i,`${V(O)??``} ×${V(k)??``}`),G(s,e)},[()=>Y(`wc.found_in`)]),H(`click`,a,Pe),W(e,t)};K(tt,e=>{V(ee)&&e(nt)}),j(qe),j(n),B((e,t,n,r,i,o,c,l,u,f)=>{G(a,e),G(s,t),G(d,n),G(C,r),G(ne,i),G(le,o),J(fe,`placeholder`,c),G(Ie,l),G(Ve,u),ki(Ue,V(x)),G(We,` ${f??``}`),et=gi($e,1,``,null,et,{hidden:!V(je)})},[()=>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`)]),H(`click`,o,function(...e){t.onclose?.apply(this,e)}),Ni(f,()=>V(p),e=>F(p,e)),H(`click`,b,Te),H(`click`,w,Fe),H(`input`,fe,oe),Ni(fe,()=>V(m),e=>F(m,e)),H(`click`,xe,ge),H(`change`,Ue,re),W(e,n)};K(Re,e=>{t.open&&e(ze)}),W(e,Le),Je()}Pr([`click`,`input`,`change`]);var Xv=U(`<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),Zv=U(`<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>`),Qv=U(`<p class="p-8 text-red-500"> </p>`),$v=U(`<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>`),ey=U(`<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 ty(e,t){qe(t,!0);let n=P(!1),r=P(!1),i=P(!1),a=P(!1),o=P(null),s=P(!1),c=P(``),l=P(!1),u=P(`Living AI Documentation`),d=P(`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){F(l,e,!0),document.documentElement.classList.toggle(`dark`,e)}function h(){m(!V(l));try{localStorage.setItem(`ld-dark`,String(V(l)))}catch{}}kn(()=>{let e=document.getElementById(`hljs-dark`),t=document.getElementById(`hljs-light`);if(!e||!t)return;let n=X.codeBlockLightTheme&&!V(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){X.searchQuery=``,X.searchResults=null;return}X.searchQuery=t,X.searchResults=X.allDocs.filter(e=>e.title.toLowerCase().includes(t.toLowerCase())||e.category.toLowerCase().includes(t.toLowerCase())),f=window.setTimeout(async()=>{try{let e=await Ph(t);t===X.searchQuery&&(X.searchResults=e)}catch{}},350)}let _=P(I([]));function v(e){let t=V(_)[e];t&&(F(_,V(_).slice(0,e),!0),y(t.id,!1,`restore`))}async function y(e,t=!1,n=!1,r=null){if(n===!0&&X.currentDocId&&X.currentDocId!==e){let t=V(_).findIndex(t=>t.id===e);if(t!==-1)F(_,V(_).slice(0,t),!0);else{let e=X.allDocs.find(e=>e.id===X.currentDocId);F(_,[...V(_),{id:X.currentDocId,title:e?e.title:X.currentDocId}],!0)}}else n||F(_,[],!0);X.currentDocId=e;let i=X.allDocs.find(t=>t.id===e);if(i&&X.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)}F(s,!0),F(c,``);try{let t=await Ah(e);t.id=e,F(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){F(c,Y(`doc.failed_to_load`)+(e instanceof Error?e.message:String(e)))}finally{F(s,!1)}}async function b(e){if(!V(o))return;let t=V(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 Ah(t);r.id=t,F(o,r,!0);let i=e.match(/\]\(\s*\.?\/files\/[^)\s]+/g),a={...X.fileAttachmentCounts};i&&i.length?a[t]=i.length:delete a[t],X.fileAttachmentCounts=a}function x(e){let t=X.allDocs.find(t=>t.id===e);if(!t)return null;let n=(t.folder||[]).join(`/`),r=e=>(e.folder||[]).join(`/`)===n,i=X.hideCategories?X.allDocs.filter(r).slice().sort((e,t)=>(e.filename||``).localeCompare(t.filename||``)):X.allDocs.filter(e=>r(e)&&e.category===t.category),a=i.findIndex(t=>t.id===e);if(a===-1)return null;let o=i[a+1]??i[a-1];return o?o.id:null}async function S(){if(!V(o))return;let e=V(o).id;if(!(await fetch(`/api/documents/`+encodeURIComponent(e),{method:`DELETE`})).ok)return;let t=x(e);X.allDocs=X.allDocs.filter(t=>t.id!==e),Array.isArray(X.searchResults)&&(X.searchResults=X.searchResults.filter(t=>t.id!==e));let n={...X.annotationCounts};delete n[e],X.annotationCounts=n;let r={...X.fileAttachmentCounts};delete r[e],X.fileAttachmentCounts=r,t?await y(t):(X.currentDocId=null,F(o,null),history.pushState({},``,location.pathname))}async function C(){let[e,t]=await Promise.all([Oh(),Dh()]);if(X.allDocs=e,t.docsFolder)try{X.allFolderPaths=await kh(t.docsFolder)}catch{X.allFolderPaths=[]}let[n,r,i]=await Promise.all([jh(),Mh(),Nh()]);X.annotationCounts=n,X.fileAttachmentCounts=r,X.docStatuses=i}Gi(async()=>{m(p());let e=await Dh();await pa(e.language||`en`),e.title&&(document.title=e.title,F(u,e.title,!0)),e.filenamePattern&&F(d,e.filenamePattern+`.md`),X.exclusiveFolderExpansion=!!e.exclusiveFolderExpansion,X.exclusiveCategoryExpansion=!!e.exclusiveCategoryExpansion,X.codeBlockMaxHeight=typeof e.codeBlockMaxHeight==`number`?e.codeBlockMaxHeight:400,X.imageRoundedCorners=!!e.imageRoundedCorners,X.imageCentered=!!e.imageCentered,X.imageBorder=!!e.imageBorder,X.codeBlockLightTheme=!!e.codeBlockLightTheme,X.codeBlockMaxHeight>0&&document.documentElement.style.setProperty(`--ld-code-max-h`,X.codeBlockMaxHeight+`px`),X.expandedCategories.size===0&&(X.expandedCategories=new Set([`DOCUMENTATION`,`General`])),await C();let t=new URLSearchParams(location.search).get(`doc`);if(t)y(t,!0,!1,location.hash?location.hash.slice(1):null);else{let e=X.allDocs.find(e=>e.category===`DOCUMENTATION`)??X.allDocs.find(e=>e.category===`General`)??X.allDocs[0];e&&y(e.id,!0)}let n=e=>{let t=e.state?.docId||new URLSearchParams(location.search).get(`doc`),n=e.state?.anchor||(location.hash.length>1?location.hash.slice(1):null);t&&y(t,!0,!1,n)};window.addEventListener(`popstate`,n);let r=()=>{C()};return window.addEventListener(`ld:documents-changed`,r),()=>{window.removeEventListener(`popstate`,n),window.removeEventListener(`ld:documents-changed`,r)}});var w=ey(),T=R(w),E=L(T);$a(E,{get title(){return V(u)},subtitle:``,actions:e=>{var t=Xv(),n=R(t),r=z(n,2),i=L(r,!0);j(r),B((e,t)=>{J(n,`title`,e),J(n,`aria-label`,t),G(i,V(l)?`☀`:`☾`)},[()=>Y(`nav.word_cloud`),()=>Y(`nav.word_cloud`)]),H(`click`,n,()=>F(a,!0)),H(`click`,r,h),W(e,t)},children:(e,t)=>{var n=Zv(),r=L(n);Di(r),Ie(2),j(n),B(e=>{J(r,`placeholder`,e),Oi(r,X.searchQuery)},[()=>Y(`nav.search_placeholder`)]),H(`input`,r,e=>g(e.target.value)),W(e,n)},$$slots:{actions:!0,default:!0}});var D=z(E,2),ee=L(D);og(ee,{onopen:e=>y(e),onsearch:g,onexport:()=>F(i,!0),onnewfolder:()=>F(n,!0),onnewdoc:()=>F(r,!0)});var O=z(ee,2),k=L(O),te=e=>{var t=Wr(),n=R(t),r=e=>{var t=Qv(),n=L(t,!0);j(t),B(()=>G(n,V(c))),W(e,t)},i=e=>{nv(e,{get doc(){return V(o)},get navHistory(){return V(_)},ongoback:v,onopen:(e,t)=>y(e,!1,!0,t),onsave:b,ondelete:S})};K(n,e=>{V(c)?e(r):e(i,-1)}),W(e,t)},ne=e=>{var t=$v(),n=L(t),r=z(L(n),2),i=L(r,!0);j(r);var a=z(r,2),o=L(a,!0);j(a);var s=z(a,2),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(n),j(t),B((e,t,n)=>{G(i,e),G(o,t),G(c,V(d)),G(u,n)},[()=>Y(`welcome.title`),()=>Y(`welcome.hint`),()=>Y(`welcome.pattern_hint`)]),W(e,t)};K(k,e=>{V(o)?e(te):e(ne,-1)}),j(O),j(D),j(T);var re=z(T,2);pv(re,{get open(){return V(n)},onclose:()=>F(n,!1),onsuccess:C});var ie=z(re,2);Sv(ie,{get open(){return V(r)},onclose:()=>F(r,!1),onsuccess:async e=>{await C(),y(e)}});var A=z(ie,2);Av(A,{get open(){return V(i)},onclose:()=>F(i,!1)}),Yv(z(A,2),{get open(){return V(a)},onclose:()=>F(a,!1)}),W(e,w),Je()}Pr([`click`,`input`]);var ny=`modulepreload`,ry=function(e){return`/`+e},iy={},ay=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}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=ry(t,n),t=s(t),t in iy)return;iy[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:ny,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.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)})},oy=U(`<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.
171
173
  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
172
174
  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
173
- 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 ay(e,t){qe(t,!0),Gi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await pa(t);let{initDiagram:r}=await ry(async()=>{let{initDiagram:e}=await import(`./main-DE-kkMqh.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=P(!1);function i(e){e.preventDefault();let t=document.getElementById(`sidebar`);if(!t)return;let i=e.clientX,a=t.getBoundingClientRect().width;F(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=``,F(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=iy(),o=L(a),s=L(o),c=L(s,!0);j(s);var l=z(s,4),u=z(l,4),d=z(u,2),f=z(d,4),p=z(f,2),m=z(p,2),h=z(m,2),g=z(h,2),_=z(g,2),v=z(_,2),y=z(v,2),b=z(y,2),x=z(b,4),S=z(x,4),C=z(S,4),w=z(C,2),T=z(w,2),E=z(T,2),D=z(E,2),ee=z(D,2),O=z(ee,4),k=z(O,4),te=z(k,4),ne=z(te,2),re=z(ne,8),ie=z(re,4),A=z(ie,4),ae=L(A),oe=L(ae,!0);j(ae),j(A),j(o);var se=z(o,2),ce=L(se),le=L(ce),ue=L(le),de=L(ue,!0);j(ue);var fe=z(ue,2),pe=L(fe,!0);j(fe),j(le),Ie(2),j(ce);var me=z(ce,2),he=z(me,2),ge=z(L(he),10),_e=z(L(ge),8),ve=z(_e,2);j(ge);var ye=z(ge,2),be=L(ye),xe=L(be),Se=L(xe,!0);j(xe);var Ce=z(xe,2);j(be),Ie(2),j(ye);var we=z(ye,2),Te=L(we),Ee=z(Te,4),De=L(Ee),Oe=z(De,4),ke=z(Oe,4),Ae=z(ke,2),je=z(Ae,4),Me=z(je,2),Ne=z(Me,2),Pe=z(Ne,4),Fe=z(Pe,2),Le=z(Fe,2),Re=z(Le,4),ze=z(Re,2),Be=z(ze,2),Ve=z(Be,4),He=L(Ve),Ue=z(He,2),We=z(Ue,2),Ge=z(We,2),Ke=z(Ge,2);Ie(2),j(Ve);var Ye=z(Ve,2),Xe=z(Ye,2),Ze=z(Xe,4),Qe=z(Ze,2),$e=z(Qe,2),et=z($e,4),tt=z(et,2),nt=z(tt,4),M=z(nt,4),rt=z(M,2),it=z(rt,4);j(Ee),j(we);var at=z(we,2),ot=L(at),st=L(ot,!0);j(ot);var ct=z(ot,2),lt=z(L(ct),2),ut=L(lt,!0);j(lt),j(ct);var dt=z(ct,2),ft=L(dt);j(dt);var pt=z(dt,2),mt=z(L(pt),2),ht=L(mt,!0);j(mt),j(pt);var gt=z(pt,4),_t=z(L(gt),2),vt=L(_t,!0);j(_t),j(gt);var yt=z(gt,2),N=L(yt);j(yt);var bt=z(yt,2),xt=L(bt),St=L(xt,!0);j(xt);var Ct=z(xt,2),wt=L(Ct,!0);j(Ct),Ie(2),j(bt),j(at);var Tt=z(at,2),Et=L(Tt),Dt=z(Et,4),Ot=L(Dt),kt=z(Ot,2),At=z(kt,2),jt=z(At,2),Mt=z(jt,4),Nt=z(Mt,2),Pt=z(Nt,4),Ft=z(Pt,2),It=z(Ft,2),Lt=z(It,4),Rt=z(Lt,2),zt=z(Rt,4),Bt=z(zt,2),Vt=z(Bt,4),Ht=z(Vt,2),Ut=z(Ht,2),Wt=z(Ut,2),Gt=z(Wt,2),Kt=z(Gt,4),qt=z(Kt,2),Jt=z(qt,4),Yt=z(Jt,4),Xt=z(Yt,4);j(Dt),j(Tt);var Zt=z(Tt,2),Qt=z(Zt,2),$t=z(L(Qt),2),en=L($t,!0);j($t),j(Qt),j(he),j(se);var tn=z(se,4),nn=L(tn),I=L(nn),rn=L(I,!0);j(I);var an=z(I,4),on=L(an);Ie(2),j(an);var sn=z(an,2),cn=L(sn,!0);j(sn);var ln=z(sn,2),un=L(ln),dn=L(un,!0);j(un);var fn=z(un,2),pn=L(fn,!0);j(fn),j(ln),j(nn),j(tn),j(a),B((e,t,n,i,a,o,s,A,ae,se,ce,le,ue,fe,he,ge,ye,be,xe,we,Ee,j,Ie,Ve,qe,Je,at,ot,ct,lt,dt,pt,mt,gt,_t,yt,bt,xt,Ct,Tt,Dt,P,Qt,F,$t,tn,nn,I,an,sn,ln,un,fn,L,R,z,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn,wn,Tn,En,Dn,On,kn,An,jn,Mn,Nn,Pn,Fn,B,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar)=>{G(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`,A),J(g,`title`,ae),J(_,`title`,se),J(v,`title`,ce),J(y,`title`,le),J(b,`title`,ue),J(x,`title`,fe),J(S,`title`,he),J(C,`title`,ge),J(w,`title`,ye),J(T,`title`,be),J(E,`title`,xe),J(D,`title`,we),J(ee,`title`,Ee),J(O,`placeholder`,j),J(k,`title`,Ie),J(te,`title`,Ve),J(ne,`title`,qe),J(re,`title`,Je),J(ie,`title`,at),G(oe,ot),G(de,ct),G(pe,lt),gi(me,1,`w-1 shrink-0 cursor-col-resize select-none transition-colors ${V(r)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),J(_e,`title`,dt),J(ve,`title`,pt),G(Se,mt),J(Ce,`title`,gt),J(Te,`title`,_t),J(De,`title`,yt),J(Oe,`title`,bt),J(ke,`title`,xt),J(Ae,`title`,Ct),J(je,`title`,Tt),J(Me,`title`,Dt),J(Ne,`title`,P),J(Pe,`title`,Qt),J(Fe,`title`,F),J(Le,`title`,$t),J(Re,`title`,tn),J(ze,`title`,nn),J(Be,`title`,I),J(He,`title`,an),J(Ue,`title`,sn),J(We,`title`,ln),J(Ge,`title`,un),J(Ke,`title`,fn),J(Ye,`title`,L),J(Xe,`title`,R),J(Ze,`title`,z),J(Qe,`title`,mn),J($e,`title`,hn),J(et,`title`,gn),J(tt,`title`,_n),J(nt,`title`,vn),J(M,`title`,yn),J(rt,`title`,bn),J(it,`title`,xn),G(st,Sn),G(ut,Cn),J(ft,`placeholder`,wn),G(ht,Tn),G(vt,En),J(N,`placeholder`,Dn),G(St,On),G(wt,kn),J(Et,`title`,An),J(Ot,`title`,jn),J(kt,`title`,Mn),J(At,`title`,Nn),J(jt,`title`,Pn),J(Mt,`title`,Fn),J(Nt,`title`,B),J(Pt,`title`,In),J(Ft,`title`,Ln),J(It,`title`,Rn),J(Lt,`title`,zn),J(Rt,`title`,Bn),J(zt,`title`,Vn),J(Bt,`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,`title`,Qn),J(Zt,`placeholder`,$n),G(en,er),G(rn,tr),J(on,`placeholder`,nr),G(cn,rr),G(dn,ir),G(pn,ar)},[()=>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`)]),H(`click`,s,()=>history.back()),H(`mousedown`,me,i),W(e,a),Je()}Pr([`click`,`mousedown`]),We();var oy={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 sy(){oy.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var cy=`custom-shape`,ly=`custom-shape:`,uy=[{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 dy(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function fy(e){return dy(e)?e.slice(13):null}function py(e){return e&&oy.customShapeDefs&&oy.customShapeDefs.get(e)||null}function my(e){let t=py(e);return[t&&t.width||65,t&&t.height||65]}function hy(e){let t=py(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:uy}function gy(e){let t=py(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function _y(){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:[];oy.customShapeLibraries=n,oy.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>oy.customShapeDefs.set(e.id,e))})}catch{oy.customShapeLibraries=[],oy.customShapeDefs=new Map}}function vy(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(oy.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:`${ly}${e.id}`}}))}),t.appendChild(n)})}function yy(){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(uy)}}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=`
175
+ 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 sy(e,t){qe(t,!0),Gi(()=>{let e;return(async()=>{let t=`en`;try{t=(await fetch(`/api/config`).then(e=>e.json())).language||`en`}catch{}await pa(t);let{initDiagram:r}=await ay(async()=>{let{initDiagram:e}=await import(`./main-D_JCdmkS.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=P(!1);function i(e){e.preventDefault();let t=document.getElementById(`sidebar`);if(!t)return;let i=e.clientX,a=t.getBoundingClientRect().width;F(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=``,F(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=oy(),o=L(a),s=L(o),c=L(s,!0);j(s);var l=z(s,4),u=z(l,4),d=z(u,2),f=z(d,4),p=z(f,2),m=z(p,2),h=z(m,2),g=z(h,2),_=z(g,2),v=z(_,2),y=z(v,2),b=z(y,2),x=z(b,4),S=z(x,4),C=z(S,4),w=z(C,2),T=z(w,2),E=z(T,2),D=z(E,2),ee=z(D,2),O=z(ee,4),k=z(O,4),te=z(k,4),ne=z(te,2),re=z(ne,8),ie=z(re,4),A=z(ie,4),ae=L(A),oe=L(ae,!0);j(ae),j(A),j(o);var se=z(o,2),ce=L(se),le=L(ce),ue=L(le),de=L(ue,!0);j(ue);var fe=z(ue,2),pe=L(fe,!0);j(fe),j(le),Ie(2),j(ce);var me=z(ce,2),he=z(me,2),ge=z(L(he),10),_e=z(L(ge),8),ve=z(_e,2);j(ge);var ye=z(ge,2),be=L(ye),xe=L(be),Se=L(xe,!0);j(xe);var Ce=z(xe,2);j(be),Ie(2),j(ye);var we=z(ye,2),Te=L(we),Ee=z(Te,4),De=L(Ee),Oe=z(De,4),ke=z(Oe,4),Ae=z(ke,2),je=z(Ae,4),Me=z(je,2),Ne=z(Me,2),Pe=z(Ne,4),Fe=z(Pe,2),Le=z(Fe,2),Re=z(Le,4),ze=z(Re,2),Be=z(ze,2),Ve=z(Be,4),He=L(Ve),Ue=z(He,2),We=z(Ue,2),Ge=z(We,2),Ke=z(Ge,2);Ie(2),j(Ve);var Ye=z(Ve,2),Xe=z(Ye,2),Ze=z(Xe,4),Qe=z(Ze,2),$e=z(Qe,2),et=z($e,4),tt=z(et,2),nt=z(tt,4),M=z(nt,4),rt=z(M,2),it=z(rt,4);j(Ee),j(we);var at=z(we,2),ot=L(at),st=L(ot,!0);j(ot);var ct=z(ot,2),lt=z(L(ct),2),ut=L(lt,!0);j(lt),j(ct);var dt=z(ct,2),ft=L(dt);j(dt);var pt=z(dt,2),mt=z(L(pt),2),ht=L(mt,!0);j(mt),j(pt);var gt=z(pt,4),_t=z(L(gt),2),vt=L(_t,!0);j(_t),j(gt);var yt=z(gt,2),N=L(yt);j(yt);var bt=z(yt,2),xt=L(bt),St=L(xt,!0);j(xt);var Ct=z(xt,2),wt=L(Ct,!0);j(Ct),Ie(2),j(bt),j(at);var Tt=z(at,2),Et=L(Tt),Dt=z(Et,4),Ot=L(Dt),kt=z(Ot,2),At=z(kt,2),jt=z(At,2),Mt=z(jt,4),Nt=z(Mt,2),Pt=z(Nt,4),Ft=z(Pt,2),It=z(Ft,2),Lt=z(It,4),Rt=z(Lt,2),zt=z(Rt,4),Bt=z(zt,2),Vt=z(Bt,4),Ht=z(Vt,2),Ut=z(Ht,2),Wt=z(Ut,2),Gt=z(Wt,2),Kt=z(Gt,4),qt=z(Kt,2),Jt=z(qt,4),Yt=z(Jt,4),Xt=z(Yt,4);j(Dt),j(Tt);var Zt=z(Tt,2),Qt=z(Zt,2),$t=z(L(Qt),2),en=L($t,!0);j($t),j(Qt),j(he),j(se);var tn=z(se,4),nn=L(tn),I=L(nn),rn=L(I,!0);j(I);var an=z(I,4),on=L(an);Ie(2),j(an);var sn=z(an,2),cn=L(sn,!0);j(sn);var ln=z(sn,2),un=L(ln),dn=L(un,!0);j(un);var fn=z(un,2),pn=L(fn,!0);j(fn),j(ln),j(nn),j(tn),j(a),B((e,t,n,i,a,o,s,A,ae,se,ce,le,ue,fe,he,ge,ye,be,xe,we,Ee,j,Ie,Ve,qe,Je,at,ot,ct,lt,dt,pt,mt,gt,_t,yt,bt,xt,Ct,Tt,Dt,P,Qt,F,$t,tn,nn,I,an,sn,ln,un,fn,L,R,z,mn,hn,gn,_n,vn,yn,bn,xn,Sn,Cn,wn,Tn,En,Dn,On,kn,An,jn,Mn,Nn,Pn,Fn,B,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar)=>{G(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`,A),J(g,`title`,ae),J(_,`title`,se),J(v,`title`,ce),J(y,`title`,le),J(b,`title`,ue),J(x,`title`,fe),J(S,`title`,he),J(C,`title`,ge),J(w,`title`,ye),J(T,`title`,be),J(E,`title`,xe),J(D,`title`,we),J(ee,`title`,Ee),J(O,`placeholder`,j),J(k,`title`,Ie),J(te,`title`,Ve),J(ne,`title`,qe),J(re,`title`,Je),J(ie,`title`,at),G(oe,ot),G(de,ct),G(pe,lt),gi(me,1,`w-1 shrink-0 cursor-col-resize select-none transition-colors ${V(r)?`bg-blue-500/60`:`bg-transparent hover:bg-blue-500/40`}`),J(_e,`title`,dt),J(ve,`title`,pt),G(Se,mt),J(Ce,`title`,gt),J(Te,`title`,_t),J(De,`title`,yt),J(Oe,`title`,bt),J(ke,`title`,xt),J(Ae,`title`,Ct),J(je,`title`,Tt),J(Me,`title`,Dt),J(Ne,`title`,P),J(Pe,`title`,Qt),J(Fe,`title`,F),J(Le,`title`,$t),J(Re,`title`,tn),J(ze,`title`,nn),J(Be,`title`,I),J(He,`title`,an),J(Ue,`title`,sn),J(We,`title`,ln),J(Ge,`title`,un),J(Ke,`title`,fn),J(Ye,`title`,L),J(Xe,`title`,R),J(Ze,`title`,z),J(Qe,`title`,mn),J($e,`title`,hn),J(et,`title`,gn),J(tt,`title`,_n),J(nt,`title`,vn),J(M,`title`,yn),J(rt,`title`,bn),J(it,`title`,xn),G(st,Sn),G(ut,Cn),J(ft,`placeholder`,wn),G(ht,Tn),G(vt,En),J(N,`placeholder`,Dn),G(St,On),G(wt,kn),J(Et,`title`,An),J(Ot,`title`,jn),J(kt,`title`,Mn),J(At,`title`,Nn),J(jt,`title`,Pn),J(Mt,`title`,Fn),J(Nt,`title`,B),J(Pt,`title`,In),J(Ft,`title`,Ln),J(It,`title`,Rn),J(Lt,`title`,zn),J(Rt,`title`,Bn),J(zt,`title`,Vn),J(Bt,`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,`title`,Qn),J(Zt,`placeholder`,$n),G(en,er),G(rn,tr),J(on,`placeholder`,nr),G(cn,rr),G(dn,ir),G(pn,ar)},[()=>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`)]),H(`click`,s,()=>history.back()),H(`mousedown`,me,i),W(e,a),Je()}Pr([`click`,`mousedown`]),We();var cy={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 ly(){cy.isDirty=!0,document.getElementById(`btnSave`).disabled=!1}var uy=`custom-shape`,dy=`custom-shape:`,fy=[{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 py(e){return typeof e==`string`&&e.startsWith(`custom-shape:`)}function my(e){return py(e)?e.slice(13):null}function hy(e){return e&&cy.customShapeDefs&&cy.customShapeDefs.get(e)||null}function gy(e){let t=hy(e);return[t&&t.width||65,t&&t.height||65]}function _y(e){let t=hy(e);return t&&Array.isArray(t.anchors)&&t.anchors.length?t.anchors:fy}function vy(e){let t=hy(e);return t&&[`center`,`below`,`above`,`right`,`left`].includes(t.labelPlacement)?t.labelPlacement:`below`}async function yy(){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:[];cy.customShapeLibraries=n,cy.customShapeDefs=new Map,n.forEach(e=>{(e.shapes||[]).forEach(e=>cy.customShapeDefs.set(e.id,e))})}catch{cy.customShapeLibraries=[],cy.customShapeDefs=new Map}}function by(){let e=document.getElementById(`customShapeBar`),t=document.getElementById(`customShapeBarBody`);if(!e||!t)return;t.innerHTML=``;let n=(cy.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:`${dy}${e.id}`}}))}),t.appendChild(n)})}function xy(){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(fy)}}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=`
174
176
  <input class="field !h-7 text-xs" value="${d(t.id)}">
175
177
  <input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.x*100)}">
176
178
  <input class="field !h-7 text-xs" type="number" min="0" max="100" step="1" value="${Math.round(t.y*100)}">
177
179
  <button class="btn btn-danger !h-7 !px-0">×</button>
178
- `;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(uy),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 by=U(`<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
179
- 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 xy(e,t){qe(t,!1),Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{await pa(`en`)}return yy()}),Hi();var n=by(),r=L(n),i=L(r);Ie(4),j(r);var a=z(r,2),o=z(L(a),2),s=L(o),c=z(L(s),2),l=L(c),u=z(L(l),8),d=z(L(u),2),f=L(d),p=L(f,!0);j(f),f.value=f.__value=`below`;var m=z(f),h=L(m,!0);j(m),m.value=m.__value=`above`;var g=z(m),_=L(g,!0);j(g),g.value=g.__value=`right`;var v=z(g),y=L(v,!0);j(v),v.value=v.__value=`left`;var b=z(v),x=L(b,!0);j(b),b.value=b.__value=`center`,j(d),j(u);var S=z(u,2),C=z(L(S),2),w=L(C),T=L(w,!0);j(w);var E=z(w,2),D=L(E,!0);j(E),j(C),j(S),j(l),Ie(4),j(c),j(s),j(o),j(a),j(n),B((e,t,n,r,i,a,o)=>{G(p,e),G(h,t),G(_,n),G(y,r),G(x,i),G(T,a),G(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`)]),H(`click`,i,()=>history.back()),W(e,n),Je()}Pr([`click`]);var Sy=I({tasks:[],notes:[],links:[]}),Cy=!1,wy=null;async function Ty(){try{let e=await fetch(`/api/survival-kit`);if(e.ok){let t=await e.json();Sy.tasks=Array.isArray(t.tasks)?t.tasks:[],Sy.notes=Array.isArray(t.notes)?t.notes:[],Sy.links=Array.isArray(t.links)?t.links:[]}}catch{}finally{Cy=!0}}async function Ey(){try{await fetch(`/api/survival-kit`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tasks:Sy.tasks,notes:Sy.notes,links:Sy.links})})}catch{}}function Dy(){Cy&&(wy&&clearTimeout(wy),wy=setTimeout(()=>{wy=null,Ey()},400))}var Oy=U(`<button type="button"> </button>`),ky=U(`<p class="sk-empty svelte-lo2xyl"> </p>`),Ay=U(`<div><button type="button" aria-label="toggle"></button> <span class="sk-task-text svelte-lo2xyl"> </span> <span class="sk-task-tag svelte-lo2xyl"> </span> <button type="button" class="sk-task-del svelte-lo2xyl">✕</button></div>`),jy=U(`<div class="sk-panel-head"><h2 class="sk-panel-title"> <span class="sk-accent">.</span></h2> <p class="sk-panel-sub"> </p></div> <div class="sk-add-bar svelte-lo2xyl"><input type="text" class="svelte-lo2xyl"/> <select class="svelte-lo2xyl"><option> </option><option> </option><option> </option></select> <button type="button" class="sk-add-btn svelte-lo2xyl">+</button></div> <div class="sk-filters svelte-lo2xyl"></div> <div class="sk-tasks svelte-lo2xyl"><!></div>`,1);function My(e,t){qe(t,!0);let n=P(``),r=P(`normal`),i=P(`all`),a=[{key:`all`,label:()=>Y(`survival.tasks_filter_all`)},{key:`todo`,label:()=>Y(`survival.tasks_filter_todo`)},{key:`done`,label:()=>Y(`survival.tasks_filter_done`)},{key:`urgent`,label:()=>Y(`survival.tasks_filter_urgent`)},{key:`normal`,label:()=>Y(`survival.tasks_filter_normal`)},{key:`later`,label:()=>Y(`survival.tasks_filter_later`)}];function o(e){return Y(`survival.tasks_priority_${e}`)}let s=N(()=>Sy.tasks.filter(e=>V(i)===`todo`?!e.done:V(i)===`done`?e.done:V(i)===`urgent`||V(i)===`normal`||V(i)===`later`?e.priority===V(i):!0));function c(){let e=V(n).trim();e&&(Sy.tasks.unshift({id:Date.now(),text:e,priority:V(r),done:!1}),F(n,``),Dy())}function l(e){let t=Sy.tasks.find(t=>t.id===e);t&&(t.done=!t.done),Dy()}function u(e){Sy.tasks=Sy.tasks.filter(t=>t.id!==e),Dy()}var d=jy(),f=R(d),p=L(f),m=L(p,!0);Ie(),j(p);var h=z(p,2),g=L(h,!0);j(h),j(f);var _=z(f,2),v=L(_);Di(v);var y=z(v,2),b=L(y),x=L(b,!0);j(b),b.value=b.__value=`normal`;var S=z(b),C=L(S,!0);j(S),S.value=S.__value=`urgent`;var w=z(S),T=L(w,!0);j(w),w.value=w.__value=`later`,j(y);var E=z(y,2);j(_);var D=z(_,2);q(D,21,()=>a,Xr,(e,t)=>{var n=Oy();let r;var a=L(n,!0);j(n),B(e=>{r=gi(n,1,`svelte-lo2xyl`,null,r,{active:V(i)===V(t).key}),G(a,e)},[()=>V(t).label()]),H(`click`,n,()=>F(i,V(t).key,!0)),W(e,n)}),j(D);var ee=z(D,2),O=L(ee),k=e=>{var t=ky(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`survival.tasks_empty`)]),W(e,t)},te=e=>{var t=Wr();q(R(t),17,()=>V(s),e=>e.id,(e,t)=>{var n=Ay();let r;var i=L(n);let a;var s=z(i,2),c=L(s,!0);j(s);var d=z(s,2),f=L(d,!0);j(d);var p=z(d,2);j(n),B((e,o)=>{r=gi(n,1,`sk-task sk-task--${V(t).priority??``}`,`svelte-lo2xyl`,r,{done:V(t).done}),a=gi(i,1,`sk-check svelte-lo2xyl`,null,a,{checked:V(t).done}),G(c,V(t).text),G(f,e),J(p,`title`,o)},[()=>o(V(t).priority),()=>Y(`survival.tasks_delete_title`)]),H(`click`,i,()=>l(V(t).id)),H(`click`,p,()=>u(V(t).id)),W(e,n)}),W(e,t)};K(O,e=>{V(s).length===0?e(k):e(te,-1)}),j(ee),B((e,t,n,r,i,a)=>{G(m,e),G(g,t),J(v,`placeholder`,n),G(x,r),G(C,i),G(T,a)},[()=>Y(`survival.tasks_title`),()=>Y(`survival.tasks_subtitle`),()=>Y(`survival.tasks_input_placeholder`),()=>Y(`survival.tasks_priority_normal`),()=>Y(`survival.tasks_priority_urgent`),()=>Y(`survival.tasks_priority_later`)]),H(`keydown`,v,e=>e.key===`Enter`&&c()),Ni(v,()=>V(n),e=>F(n,e)),xi(y,()=>V(r),e=>F(r,e)),H(`click`,E,c),W(e,d),Je()}Pr([`keydown`,`click`]);var Ny=[`t-green`,`t-violet`,`t-amber`,`t-sky`,`t-rose`,`t-teal`],Py=U(`<div class="sk-modal-backdrop svelte-1rcj86" role="presentation"><div class="sk-modal svelte-1rcj86" role="dialog" aria-modal="true"><h3 class="sk-modal-title svelte-1rcj86"> </h3> <div class="sk-modal-body svelte-1rcj86"><!></div> <div class="sk-modal-actions svelte-1rcj86"><button type="button" class="sk-btn svelte-1rcj86"> </button> <button type="button"> </button></div></div></div>`);function Fy(e,t){qe(t,!0);let n=Wi(t,`open`,3,!1),r=Wi(t,`title`,3,``),i=Wi(t,`confirmLabel`,19,()=>Y(`common.save`)),a=Wi(t,`danger`,3,!1);function o(e){e.target===e.currentTarget&&t.onClose()}function s(e){e.key===`Escape`&&t.onClose()}var c=Wr(),l=R(c),u=e=>{var n=Py(),c=L(n),l=L(c),u=L(l,!0);j(l);var d=z(l,2);oi(L(d),()=>t.children),j(d);var f=z(d,2),p=L(f),m=L(p,!0);j(p);var h=z(p,2);let g;var _=L(h,!0);j(h),j(f),j(c),j(n),B(e=>{G(u,r()),G(m,e),g=gi(h,1,`sk-btn sk-btn--primary svelte-1rcj86`,null,g,{"sk-btn--danger":a()}),G(_,i())},[()=>Y(`common.cancel`)]),H(`click`,n,o),H(`keydown`,n,s),H(`click`,p,function(...e){t.onClose?.apply(this,e)}),H(`click`,h,function(...e){t.onConfirm?.apply(this,e)}),W(e,n)};K(l,e=>{n()&&e(u)}),W(e,c),Je()}Pr([`click`,`keydown`]);var Iy=U(`<p class="sk-empty svelte-hpbata"> </p>`),Ly=U(`<strong> </strong>`),Ry=U(`<p> </p>`),zy=U(`<div class="sk-pre-wrap svelte-hpbata"><pre> </pre> <button type="button" class="sk-copy svelte-hpbata"> </button></div>`),By=U(`<li> </li>`),Vy=U(`<ul></ul>`),Hy=U(`<th> </th>`),Uy=U(`<td> </td>`),Wy=U(`<tr></tr>`),Gy=U(`<div class="sk-table-wrap svelte-hpbata"><table><thead><tr></tr></thead><tbody></tbody></table></div>`),Ky=U(`<div class="sk-bloc svelte-hpbata"><div class="sk-bloc-content svelte-hpbata"><!></div> <div class="sk-bloc-actions svelte-hpbata"><button type="button" class="sk-mini svelte-hpbata">✎</button> <button type="button" class="sk-mini sk-mini--del svelte-hpbata">✕</button></div></div>`),qy=U(`<div><div class="sk-note-head svelte-hpbata"><h3 class="svelte-hpbata"> </h3> <div class="sk-note-actions svelte-hpbata"><button type="button" class="sk-mini svelte-hpbata">✎</button> <button type="button" class="sk-mini sk-mini--del svelte-hpbata">✕</button></div> <button type="button" class="sk-toggle svelte-hpbata" aria-label="toggle"><svg viewBox="0 0 10 6" width="10" height="6"><path d="M1 1 L5 5 L9 1" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div> <div class="sk-note-body svelte-hpbata"><!> <div class="sk-note-foot svelte-hpbata"><button type="button" class="sk-add-bloc svelte-hpbata"> </button></div></div></div>`),Jy=U(`<option> </option>`),Yy=U(`<label for="sk-note-titre"> </label> <input id="sk-note-titre" type="text"/> <label for="sk-note-color"> </label> <select id="sk-note-color"></select>`,1),Xy=U(`<input id="sk-bloc-content" type="text"/>`),Zy=U(`<textarea id="sk-bloc-content" rows="6"></textarea>`),Qy=U(`<label for="sk-bloc-type"> </label> <select id="sk-bloc-type"><option> </option><option> </option><option> </option><option> </option><option> </option></select> <label for="sk-bloc-content"> </label> <!>`,1),$y=U(`<div class="sk-panel-head"><h2 class="sk-panel-title"> <span class="sk-accent">.</span></h2> <p class="sk-panel-sub"> </p></div> <div class="sk-toolbar svelte-hpbata"><button type="button" class="sk-tool svelte-hpbata"> </button> <button type="button" class="sk-tool svelte-hpbata"> </button> <button type="button" class="sk-tool sk-tool--add svelte-hpbata"> </button></div> <div><!> <!></div> <!> <!>`,1);function eb(e,t){qe(t,!0);let n=P(!1),r=P(I({})),i=P(null),a=P(!1),o=P(-1),s=P(``),c=P(`t-green`),l=P(!1),u=P(-1),d=P(-1),f=P(`p`),p=P(``),m={"t-green":`survival.color_green`,"t-violet":`survival.color_violet`,"t-amber":`survival.color_amber`,"t-sky":`survival.color_sky`,"t-rose":`survival.color_rose`,"t-teal":`survival.color_teal`},h=N(()=>Sy.notes.length>0&&Sy.notes.every(e=>V(r)[e.id]));function g(e){V(r)[e]=!V(r)[e]}function _(){if(V(h))F(r,{},!0);else{let e={};Sy.notes.forEach(t=>e[t.id]=!0),F(r,e,!0)}}function v(){F(o,-1),F(s,``),F(c,`t-green`),F(a,!0)}function y(e){F(o,e,!0),F(s,Sy.notes[e].titre,!0),F(c,Sy.notes[e].theme,!0),F(a,!0)}function b(){let e=V(s).trim();if(e){if(V(o)===-1){let t=Date.now();Sy.notes.push({id:t,theme:V(c),titre:e,blocs:[]}),V(r)[t]=!0}else Sy.notes[V(o)].titre=e,Sy.notes[V(o)].theme=V(c);Dy(),F(a,!1)}}async function x(e){await t.confirmDelete(Y(`survival.confirm_del_note_title`),Y(`survival.confirm_del_note_msg`))&&(Sy.notes.splice(e,1),Dy())}function S(e){return e.type===`ul`?e.items.join(`
180
+ `;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(fy),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 Sy=U(`<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
181
+ 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 Cy(e,t){qe(t,!1),Gi(async()=>{try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{await pa(`en`)}return xy()}),Hi();var n=Sy(),r=L(n),i=L(r);Ie(4),j(r);var a=z(r,2),o=z(L(a),2),s=L(o),c=z(L(s),2),l=L(c),u=z(L(l),8),d=z(L(u),2),f=L(d),p=L(f,!0);j(f),f.value=f.__value=`below`;var m=z(f),h=L(m,!0);j(m),m.value=m.__value=`above`;var g=z(m),_=L(g,!0);j(g),g.value=g.__value=`right`;var v=z(g),y=L(v,!0);j(v),v.value=v.__value=`left`;var b=z(v),x=L(b,!0);j(b),b.value=b.__value=`center`,j(d),j(u);var S=z(u,2),C=z(L(S),2),w=L(C),T=L(w,!0);j(w);var E=z(w,2),D=L(E,!0);j(E),j(C),j(S),j(l),Ie(4),j(c),j(s),j(o),j(a),j(n),B((e,t,n,r,i,a,o)=>{G(p,e),G(h,t),G(_,n),G(y,r),G(x,i),G(T,a),G(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`)]),H(`click`,i,()=>history.back()),W(e,n),Je()}Pr([`click`]);var wy=I({tasks:[],notes:[],links:[]}),Ty=!1,Ey=null;async function Dy(){try{let e=await fetch(`/api/survival-kit`);if(e.ok){let t=await e.json();wy.tasks=Array.isArray(t.tasks)?t.tasks:[],wy.notes=Array.isArray(t.notes)?t.notes:[],wy.links=Array.isArray(t.links)?t.links:[]}}catch{}finally{Ty=!0}}async function Oy(){try{await fetch(`/api/survival-kit`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tasks:wy.tasks,notes:wy.notes,links:wy.links})})}catch{}}function ky(){Ty&&(Ey&&clearTimeout(Ey),Ey=setTimeout(()=>{Ey=null,Oy()},400))}var Ay=U(`<button type="button"> </button>`),jy=U(`<p class="sk-empty svelte-lo2xyl"> </p>`),My=U(`<div><button type="button" aria-label="toggle"></button> <span class="sk-task-text svelte-lo2xyl"> </span> <span class="sk-task-tag svelte-lo2xyl"> </span> <button type="button" class="sk-task-del svelte-lo2xyl">✕</button></div>`),Ny=U(`<div class="sk-panel-head"><h2 class="sk-panel-title"> <span class="sk-accent">.</span></h2> <p class="sk-panel-sub"> </p></div> <div class="sk-add-bar svelte-lo2xyl"><input type="text" class="svelte-lo2xyl"/> <select class="svelte-lo2xyl"><option> </option><option> </option><option> </option></select> <button type="button" class="sk-add-btn svelte-lo2xyl">+</button></div> <div class="sk-filters svelte-lo2xyl"></div> <div class="sk-tasks svelte-lo2xyl"><!></div>`,1);function Py(e,t){qe(t,!0);let n=P(``),r=P(`normal`),i=P(`all`),a=[{key:`all`,label:()=>Y(`survival.tasks_filter_all`)},{key:`todo`,label:()=>Y(`survival.tasks_filter_todo`)},{key:`done`,label:()=>Y(`survival.tasks_filter_done`)},{key:`urgent`,label:()=>Y(`survival.tasks_filter_urgent`)},{key:`normal`,label:()=>Y(`survival.tasks_filter_normal`)},{key:`later`,label:()=>Y(`survival.tasks_filter_later`)}];function o(e){return Y(`survival.tasks_priority_${e}`)}let s=N(()=>wy.tasks.filter(e=>V(i)===`todo`?!e.done:V(i)===`done`?e.done:V(i)===`urgent`||V(i)===`normal`||V(i)===`later`?e.priority===V(i):!0));function c(){let e=V(n).trim();e&&(wy.tasks.unshift({id:Date.now(),text:e,priority:V(r),done:!1}),F(n,``),ky())}function l(e){let t=wy.tasks.find(t=>t.id===e);t&&(t.done=!t.done),ky()}function u(e){wy.tasks=wy.tasks.filter(t=>t.id!==e),ky()}var d=Ny(),f=R(d),p=L(f),m=L(p,!0);Ie(),j(p);var h=z(p,2),g=L(h,!0);j(h),j(f);var _=z(f,2),v=L(_);Di(v);var y=z(v,2),b=L(y),x=L(b,!0);j(b),b.value=b.__value=`normal`;var S=z(b),C=L(S,!0);j(S),S.value=S.__value=`urgent`;var w=z(S),T=L(w,!0);j(w),w.value=w.__value=`later`,j(y);var E=z(y,2);j(_);var D=z(_,2);q(D,21,()=>a,Xr,(e,t)=>{var n=Ay();let r;var a=L(n,!0);j(n),B(e=>{r=gi(n,1,`svelte-lo2xyl`,null,r,{active:V(i)===V(t).key}),G(a,e)},[()=>V(t).label()]),H(`click`,n,()=>F(i,V(t).key,!0)),W(e,n)}),j(D);var ee=z(D,2),O=L(ee),k=e=>{var t=jy(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`survival.tasks_empty`)]),W(e,t)},te=e=>{var t=Wr();q(R(t),17,()=>V(s),e=>e.id,(e,t)=>{var n=My();let r;var i=L(n);let a;var s=z(i,2),c=L(s,!0);j(s);var d=z(s,2),f=L(d,!0);j(d);var p=z(d,2);j(n),B((e,o)=>{r=gi(n,1,`sk-task sk-task--${V(t).priority??``}`,`svelte-lo2xyl`,r,{done:V(t).done}),a=gi(i,1,`sk-check svelte-lo2xyl`,null,a,{checked:V(t).done}),G(c,V(t).text),G(f,e),J(p,`title`,o)},[()=>o(V(t).priority),()=>Y(`survival.tasks_delete_title`)]),H(`click`,i,()=>l(V(t).id)),H(`click`,p,()=>u(V(t).id)),W(e,n)}),W(e,t)};K(O,e=>{V(s).length===0?e(k):e(te,-1)}),j(ee),B((e,t,n,r,i,a)=>{G(m,e),G(g,t),J(v,`placeholder`,n),G(x,r),G(C,i),G(T,a)},[()=>Y(`survival.tasks_title`),()=>Y(`survival.tasks_subtitle`),()=>Y(`survival.tasks_input_placeholder`),()=>Y(`survival.tasks_priority_normal`),()=>Y(`survival.tasks_priority_urgent`),()=>Y(`survival.tasks_priority_later`)]),H(`keydown`,v,e=>e.key===`Enter`&&c()),Ni(v,()=>V(n),e=>F(n,e)),xi(y,()=>V(r),e=>F(r,e)),H(`click`,E,c),W(e,d),Je()}Pr([`keydown`,`click`]);var Fy=[`t-green`,`t-violet`,`t-amber`,`t-sky`,`t-rose`,`t-teal`],Iy=U(`<div class="sk-modal-backdrop svelte-1rcj86" role="presentation"><div class="sk-modal svelte-1rcj86" role="dialog" aria-modal="true"><h3 class="sk-modal-title svelte-1rcj86"> </h3> <div class="sk-modal-body svelte-1rcj86"><!></div> <div class="sk-modal-actions svelte-1rcj86"><button type="button" class="sk-btn svelte-1rcj86"> </button> <button type="button"> </button></div></div></div>`);function Ly(e,t){qe(t,!0);let n=Wi(t,`open`,3,!1),r=Wi(t,`title`,3,``),i=Wi(t,`confirmLabel`,19,()=>Y(`common.save`)),a=Wi(t,`danger`,3,!1);function o(e){e.target===e.currentTarget&&t.onClose()}function s(e){e.key===`Escape`&&t.onClose()}var c=Wr(),l=R(c),u=e=>{var n=Iy(),c=L(n),l=L(c),u=L(l,!0);j(l);var d=z(l,2);oi(L(d),()=>t.children),j(d);var f=z(d,2),p=L(f),m=L(p,!0);j(p);var h=z(p,2);let g;var _=L(h,!0);j(h),j(f),j(c),j(n),B(e=>{G(u,r()),G(m,e),g=gi(h,1,`sk-btn sk-btn--primary svelte-1rcj86`,null,g,{"sk-btn--danger":a()}),G(_,i())},[()=>Y(`common.cancel`)]),H(`click`,n,o),H(`keydown`,n,s),H(`click`,p,function(...e){t.onClose?.apply(this,e)}),H(`click`,h,function(...e){t.onConfirm?.apply(this,e)}),W(e,n)};K(l,e=>{n()&&e(u)}),W(e,c),Je()}Pr([`click`,`keydown`]);var Ry=U(`<p class="sk-empty svelte-hpbata"> </p>`),zy=U(`<strong> </strong>`),By=U(`<p> </p>`),Vy=U(`<div class="sk-pre-wrap svelte-hpbata"><pre> </pre> <button type="button" class="sk-copy svelte-hpbata"> </button></div>`),Hy=U(`<li> </li>`),Uy=U(`<ul></ul>`),Wy=U(`<th> </th>`),Gy=U(`<td> </td>`),Ky=U(`<tr></tr>`),qy=U(`<div class="sk-table-wrap svelte-hpbata"><table><thead><tr></tr></thead><tbody></tbody></table></div>`),Jy=U(`<div class="sk-bloc svelte-hpbata"><div class="sk-bloc-content svelte-hpbata"><!></div> <div class="sk-bloc-actions svelte-hpbata"><button type="button" class="sk-mini svelte-hpbata">✎</button> <button type="button" class="sk-mini sk-mini--del svelte-hpbata">✕</button></div></div>`),Yy=U(`<div><div class="sk-note-head svelte-hpbata"><h3 class="svelte-hpbata"> </h3> <div class="sk-note-actions svelte-hpbata"><button type="button" class="sk-mini svelte-hpbata">✎</button> <button type="button" class="sk-mini sk-mini--del svelte-hpbata">✕</button></div> <button type="button" class="sk-toggle svelte-hpbata" aria-label="toggle"><svg viewBox="0 0 10 6" width="10" height="6"><path d="M1 1 L5 5 L9 1" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div> <div class="sk-note-body svelte-hpbata"><!> <div class="sk-note-foot svelte-hpbata"><button type="button" class="sk-add-bloc svelte-hpbata"> </button></div></div></div>`),Xy=U(`<option> </option>`),Zy=U(`<label for="sk-note-titre"> </label> <input id="sk-note-titre" type="text"/> <label for="sk-note-color"> </label> <select id="sk-note-color"></select>`,1),Qy=U(`<input id="sk-bloc-content" type="text"/>`),$y=U(`<textarea id="sk-bloc-content" rows="6"></textarea>`),eb=U(`<label for="sk-bloc-type"> </label> <select id="sk-bloc-type"><option> </option><option> </option><option> </option><option> </option><option> </option></select> <label for="sk-bloc-content"> </label> <!>`,1),tb=U(`<div class="sk-panel-head"><h2 class="sk-panel-title"> <span class="sk-accent">.</span></h2> <p class="sk-panel-sub"> </p></div> <div class="sk-toolbar svelte-hpbata"><button type="button" class="sk-tool svelte-hpbata"> </button> <button type="button" class="sk-tool svelte-hpbata"> </button> <button type="button" class="sk-tool sk-tool--add svelte-hpbata"> </button></div> <div><!> <!></div> <!> <!>`,1);function nb(e,t){qe(t,!0);let n=P(!1),r=P(I({})),i=P(null),a=P(!1),o=P(-1),s=P(``),c=P(`t-green`),l=P(!1),u=P(-1),d=P(-1),f=P(`p`),p=P(``),m={"t-green":`survival.color_green`,"t-violet":`survival.color_violet`,"t-amber":`survival.color_amber`,"t-sky":`survival.color_sky`,"t-rose":`survival.color_rose`,"t-teal":`survival.color_teal`},h=N(()=>wy.notes.length>0&&wy.notes.every(e=>V(r)[e.id]));function g(e){V(r)[e]=!V(r)[e]}function _(){if(V(h))F(r,{},!0);else{let e={};wy.notes.forEach(t=>e[t.id]=!0),F(r,e,!0)}}function v(){F(o,-1),F(s,``),F(c,`t-green`),F(a,!0)}function y(e){F(o,e,!0),F(s,wy.notes[e].titre,!0),F(c,wy.notes[e].theme,!0),F(a,!0)}function b(){let e=V(s).trim();if(e){if(V(o)===-1){let t=Date.now();wy.notes.push({id:t,theme:V(c),titre:e,blocs:[]}),V(r)[t]=!0}else wy.notes[V(o)].titre=e,wy.notes[V(o)].theme=V(c);ky(),F(a,!1)}}async function x(e){await t.confirmDelete(Y(`survival.confirm_del_note_title`),Y(`survival.confirm_del_note_msg`))&&(wy.notes.splice(e,1),ky())}function S(e){return e.type===`ul`?e.items.join(`
180
182
  `):e.type===`table`?[e.headers.join(` | `),...e.rows.map(e=>e.join(` | `))].join(`
181
- `):e.content}function C(e){F(u,e,!0),F(d,-1),F(f,`p`),F(p,``),F(l,!0)}function w(e,t){F(u,e,!0),F(d,t,!0);let n=Sy.notes[e].blocs[t];F(f,n.type,!0),F(p,S(n),!0),F(l,!0)}function T(){let e=V(p);if(!e.trim())return null;if(V(f)===`ul`){let t=e.split(`
183
+ `):e.content}function C(e){F(u,e,!0),F(d,-1),F(f,`p`),F(p,``),F(l,!0)}function w(e,t){F(u,e,!0),F(d,t,!0);let n=wy.notes[e].blocs[t];F(f,n.type,!0),F(p,S(n),!0),F(l,!0)}function T(){let e=V(p);if(!e.trim())return null;if(V(f)===`ul`){let t=e.split(`
182
184
  `).map(e=>e.trim()).filter(Boolean);return t.length?{type:`ul`,items:t}:null}if(V(f)===`table`){let t=e.split(`
183
- `).map(e=>e.trim()).filter(Boolean);return t.length?{type:`table`,headers:t[0].split(`|`).map(e=>e.trim()),rows:t.slice(1).map(e=>e.split(`|`).map(e=>e.trim()))}:null}return{type:V(f),content:e}}function E(){let e=T();e&&(V(d)===-1?Sy.notes[V(u)].blocs.push(e):Sy.notes[V(u)].blocs[V(d)]=e,Dy(),F(l,!1))}async function D(e,n){await t.confirmDelete(Y(`survival.confirm_del_bloc_title`),Y(`survival.irreversible`))&&(Sy.notes[e].blocs.splice(n,1),Dy())}async function ee(e,t){try{await navigator.clipboard.writeText(e),F(i,t,!0),setTimeout(()=>F(i,V(i)===t?null:V(i),!0),1500)}catch{}}let O=N(()=>V(f)===`ul`?Y(`survival.modal_bloc_placeholder_ul`):V(f)===`pre`?Y(`survival.modal_bloc_placeholder_pre`):V(f)===`table`?Y(`survival.modal_bloc_placeholder_table`):V(f)===`b`?Y(`survival.modal_bloc_placeholder_b`):Y(`survival.modal_bloc_placeholder_p`));var k=$y(),te=R(k),ne=L(te),re=L(ne,!0);Ie(),j(ne);var ie=z(ne,2),A=L(ie,!0);j(ie),j(te);var ae=z(te,2),oe=L(ae),se=L(oe,!0);j(oe);var ce=z(oe,2),le=L(ce,!0);j(ce);var ue=z(ce,2),de=L(ue,!0);j(ue),j(ae);var fe=z(ae,2);let pe;var me=L(fe),he=e=>{var t=Iy(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`survival.notes_empty`)]),W(e,t)};K(me,e=>{Sy.notes.length===0&&e(he)}),q(z(me,2),19,()=>Sy.notes,e=>e.id,(e,t,n)=>{let a=N(()=>!V(r)[V(t).id]);var o=qy();let s;var c=L(o),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d),p=z(f,2);j(d);var m=z(d,2);j(c);var h=z(c,2),_=L(h);q(_,17,()=>V(t).blocs,Xr,(e,r,a)=>{var o=Ky(),s=L(o),c=L(s),l=e=>{var t=Ly(),n=L(t,!0);j(t),B(()=>G(n,V(r).content)),W(e,t)},u=e=>{var t=Ry(),n=L(t,!0);j(t),B(()=>G(n,V(r).content)),W(e,t)},d=e=>{let n=N(()=>`${V(t).id}-${a}`);var o=zy(),s=L(o),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(o),B(e=>{G(c,V(r).content),G(u,e)},[()=>V(i)===V(n)?Y(`survival.notes_btn_copied`):Y(`survival.notes_btn_copy`)]),H(`click`,l,()=>ee(V(r).content,V(n))),W(e,o)},f=e=>{var t=Vy();q(t,21,()=>V(r).items,Xr,(e,t)=>{var n=By(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(t),W(e,t)},p=e=>{var t=Gy(),n=L(t),i=L(n),a=L(i);q(a,21,()=>V(r).headers,Xr,(e,t)=>{var n=Hy(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(a),j(i);var o=z(i);q(o,21,()=>V(r).rows,Xr,(e,t)=>{var n=Wy();q(n,21,()=>V(t),Xr,(e,t)=>{var n=Uy(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(n),W(e,n)}),j(o),j(n),j(t),W(e,t)};K(c,e=>{V(r).type===`b`?e(l):V(r).type===`p`?e(u,1):V(r).type===`pre`?e(d,2):V(r).type===`ul`?e(f,3):V(r).type===`table`&&e(p,4)}),j(s);var m=z(s,2),h=L(m),g=z(h,2);j(m),j(o),H(`click`,h,()=>w(V(n),a)),H(`click`,g,()=>D(V(n),a)),W(e,o)});var v=z(_,2),b=L(v),S=L(b,!0);j(b),j(v),j(h),j(o),B(e=>{s=gi(o,1,`sk-note ${V(t).theme??``}`,`svelte-hpbata`,s,{collapsed:V(a)}),G(u,V(t).titre),G(S,e)},[()=>Y(`survival.notes_btn_add_bloc`)]),H(`click`,f,()=>y(V(n))),H(`click`,p,()=>x(V(n))),H(`click`,m,()=>g(V(t).id)),H(`click`,b,()=>C(V(n))),W(e,o)}),j(fe);var ge=z(fe,2);{let e=N(()=>V(o)===-1?Y(`survival.modal_note_title`):Y(`survival.modal_edit_note_title`)),t=N(()=>V(o)===-1?Y(`common.create`):Y(`common.save`));Fy(ge,{get open(){return V(a)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:b,onClose:()=>F(a,!1),children:(e,t)=>{var n=Yy(),r=R(n),i=L(r,!0);j(r);var a=z(r,2);Di(a);var o=z(a,2),l=L(o,!0);j(o);var u=z(o,2);q(u,21,()=>Ny,Xr,(e,t)=>{var n=Jy(),r=L(n,!0);j(n);var i={};B(e=>{G(r,e),i!==(i=V(t))&&(n.value=(n.__value=V(t))??``)},[()=>Y(m[V(t)])]),W(e,n)}),j(u),B((e,t,n)=>{G(i,e),J(a,`placeholder`,t),G(l,n)},[()=>Y(`survival.modal_note_label_title`),()=>Y(`survival.modal_note_placeholder`),()=>Y(`survival.modal_label_color`)]),H(`keydown`,a,e=>e.key===`Enter`&&b()),Ni(a,()=>V(s),e=>F(s,e)),xi(u,()=>V(c),e=>F(c,e)),W(e,n)},$$slots:{default:!0}})}var _e=z(ge,2);{let e=N(()=>V(d)===-1?Y(`survival.modal_bloc_new`):Y(`survival.modal_bloc_edit`)),t=N(()=>Y(`common.save`));Fy(_e,{get open(){return V(l)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:E,onClose:()=>F(l,!1),children:(e,t)=>{var n=Qy(),r=R(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o),o.value=o.__value=`b`;var c=z(o),l=L(c,!0);j(c),c.value=c.__value=`p`;var u=z(c),d=L(u,!0);j(u),u.value=u.__value=`pre`;var m=z(u),h=L(m,!0);j(m),m.value=m.__value=`ul`;var g=z(m),_=L(g,!0);j(g),g.value=g.__value=`table`,j(a);var v=z(a,2),y=L(v,!0);j(v);var b=z(v,2),x=e=>{var t=Xy();Di(t),B(()=>J(t,`placeholder`,V(O))),H(`keydown`,t,e=>e.key===`Enter`&&E()),Ni(t,()=>V(p),e=>F(p,e)),W(e,t)},S=e=>{var t=Zy();yn(t),B(()=>J(t,`placeholder`,V(O))),Ni(t,()=>V(p),e=>F(p,e)),W(e,t)};K(b,e=>{V(f)===`b`?e(x):e(S,-1)}),B((e,t,n,r,a,o,c)=>{G(i,e),G(s,t),G(l,n),G(d,r),G(h,a),G(_,o),G(y,c)},[()=>Y(`survival.modal_bloc_label_type`),()=>Y(`survival.modal_bloc_type_b`),()=>Y(`survival.modal_bloc_type_p`),()=>Y(`survival.modal_bloc_type_pre`),()=>Y(`survival.modal_bloc_type_ul`),()=>Y(`survival.modal_bloc_type_table`),()=>Y(`survival.modal_bloc_label_content`)]),xi(a,()=>V(f),e=>F(f,e)),W(e,n)},$$slots:{default:!0}})}B((e,t,r,i,a)=>{G(re,e),G(A,t),G(se,r),G(le,i),G(de,a),pe=gi(fe,1,`sk-notes svelte-hpbata`,null,pe,{"edit-mode":V(n)})},[()=>Y(`survival.notes_title`),()=>Y(`survival.notes_subtitle`),()=>V(n)?Y(`survival.btn_read_mode`):Y(`survival.btn_edit_mode`),()=>V(h)?Y(`survival.btn_collapse_all`):Y(`survival.btn_expand_all`),()=>Y(`survival.notes_btn_add`)]),H(`click`,oe,()=>F(n,!V(n))),H(`click`,ce,_),H(`click`,ue,v),W(e,k),Je()}Pr([`click`,`keydown`]);var tb=U(`<p class="sk-empty svelte-1j811iq"> </p>`),nb=U(`<span class="sk-link-desc svelte-1j811iq"> </span>`),rb=U(`<a target="_blank" rel="noopener" class="sk-link svelte-1j811iq"><span class="sk-link-text svelte-1j811iq"><span class="sk-link-name svelte-1j811iq"> </span><!></span> <span class="sk-arrow svelte-1j811iq">↗</span> <span class="sk-link-actions svelte-1j811iq"><button type="button" class="sk-mini svelte-1j811iq">✎</button> <button type="button" class="sk-mini sk-mini--del svelte-1j811iq">✕</button></span></a>`),ib=U(`<section><div class="sk-cat-head svelte-1j811iq"><h3 class="svelte-1j811iq"> </h3> <div class="sk-cat-actions svelte-1j811iq"><button type="button" class="sk-mini svelte-1j811iq">+</button> <button type="button" class="sk-mini sk-mini--del svelte-1j811iq">✕</button></div> <button type="button" class="sk-toggle svelte-1j811iq" aria-label="toggle"><svg viewBox="0 0 10 6" width="10" height="6"><path d="M1 1 L5 5 L9 1" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div> <div class="sk-links svelte-1j811iq"></div></section>`),ab=U(`<option> </option>`),ob=U(`<label for="sk-cat-name"> </label> <input id="sk-cat-name" type="text"/> <label for="sk-cat-color"> </label> <select id="sk-cat-color"></select>`,1),sb=U(`<label for="sk-link-nom"> </label> <input id="sk-link-nom" type="text"/> <label for="sk-link-desc"> </label> <input id="sk-link-desc" type="text"/> <label for="sk-link-url"> </label> <input id="sk-link-url" type="text" placeholder="https://…"/>`,1),cb=U(`<div class="sk-panel-head"><h2 class="sk-panel-title"> <span class="sk-accent">.</span></h2> <p class="sk-panel-sub"> </p></div> <div class="sk-toolbar svelte-1j811iq"><button type="button" class="sk-tool svelte-1j811iq"> </button> <button type="button" class="sk-tool svelte-1j811iq"> </button> <button type="button" class="sk-tool sk-tool--add svelte-1j811iq"> </button></div> <div><!> <!></div> <!> <!>`,1);function lb(e,t){qe(t,!0);let n=P(!1),r=P(I({})),i=P(!1),a=P(``),o=P(`t-green`),s=P(!1),c=P(-1),l=P(-1),u=P(``),d=P(``),f=P(``),p={"t-green":`survival.color_green`,"t-violet":`survival.color_violet`,"t-amber":`survival.color_amber`,"t-sky":`survival.color_sky`,"t-rose":`survival.color_rose`,"t-teal":`survival.color_teal`},m=N(()=>Sy.links.length>0&&Sy.links.every(e=>V(r)[e.titre]));function h(e){V(r)[e]=!V(r)[e]}function g(){if(V(m))F(r,{},!0);else{let e={};Sy.links.forEach(t=>e[t.titre]=!0),F(r,e,!0)}}function _(){F(a,``),F(o,`t-green`),F(i,!0)}function v(){let e=V(a).trim();e&&(Sy.links.push({theme:V(o),titre:e,liens:[]}),Dy(),F(i,!1))}async function y(e){Sy.links[e],await t.confirmDelete(Y(`survival.confirm_del_cat_title`),Y(`survival.confirm_del_cat_msg`))&&(Sy.links.splice(e,1),Dy())}function b(e){F(c,e,!0),F(l,-1),F(u,``),F(d,``),F(f,``),F(s,!0)}function x(e,t,n){e.preventDefault();let r=Sy.links[t].liens[n];F(c,t,!0),F(l,n,!0),F(u,r.nom,!0),F(d,r.desc,!0),F(f,r.url,!0),F(s,!0)}function S(){let e=V(u).trim(),t=V(f).trim();if(!e||!t)return;let n={nom:e,desc:V(d).trim(),url:t};V(l)===-1?Sy.links[V(c)].liens.push(n):Sy.links[V(c)].liens[V(l)]=n,Dy(),F(s,!1)}async function C(e,n,r){e.preventDefault(),await t.confirmDelete(Y(`survival.confirm_del_link_title`),Y(`survival.irreversible`))&&(Sy.links[n].liens.splice(r,1),Dy())}var w=cb(),T=R(w),E=L(T),D=L(E,!0);Ie(),j(E);var ee=z(E,2),O=L(ee,!0);j(ee),j(T);var k=z(T,2),te=L(k),ne=L(te,!0);j(te);var re=z(te,2),ie=L(re,!0);j(re);var A=z(re,2),ae=L(A,!0);j(A),j(k);var oe=z(k,2);let se;var ce=L(oe),le=e=>{var t=tb(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`survival.links_empty`)]),W(e,t)};K(ce,e=>{Sy.links.length===0&&e(le)}),q(z(ce,2),19,()=>Sy.links,(e,t)=>e.titre+t,(e,t,n)=>{let i=N(()=>!V(r)[V(t).titre]);var a=ib();let o;var s=L(a),c=L(s),l=L(c,!0);j(c);var u=z(c,2),d=L(u),f=z(d,2);j(u);var p=z(u,2);j(s);var m=z(s,2);q(m,21,()=>V(t).liens,Xr,(e,t,r)=>{var i=rb(),a=L(i),o=L(a),s=L(o,!0);j(o);var c=z(o),l=e=>{var n=nb(),r=L(n);j(n),B(()=>G(r,`— ${V(t).desc??``}`)),W(e,n)};K(c,e=>{V(t).desc&&e(l)}),j(a);var u=z(a,4),d=L(u),f=z(d,2);j(u),j(i),B((e,n)=>{J(i,`href`,V(t).url),G(s,V(t).nom),J(d,`title`,e),J(f,`title`,n)},[()=>Y(`survival.links_edit_link_title`),()=>Y(`survival.links_del_link_title`)]),H(`click`,d,e=>x(e,V(n),r)),H(`click`,f,e=>C(e,V(n),r)),W(e,i)}),j(m),j(a),B((e,n)=>{o=gi(a,1,`sk-cat ${V(t).theme??``}`,`svelte-1j811iq`,o,{collapsed:V(i)}),G(l,V(t).titre),J(d,`title`,e),J(f,`title`,n)},[()=>Y(`survival.links_add_link_title`),()=>Y(`survival.links_del_cat_title`)]),H(`click`,d,()=>b(V(n))),H(`click`,f,()=>y(V(n))),H(`click`,p,()=>h(V(t).titre)),W(e,a)}),j(oe);var ue=z(oe,2);{let e=N(()=>Y(`survival.modal_cat_title`)),t=N(()=>Y(`common.add`));Fy(ue,{get open(){return V(i)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:v,onClose:()=>F(i,!1),children:(e,t)=>{var n=ob(),r=R(n),i=L(r,!0);j(r);var s=z(r,2);Di(s);var c=z(s,2),l=L(c,!0);j(c);var u=z(c,2);q(u,21,()=>Ny,Xr,(e,t)=>{var n=ab(),r=L(n,!0);j(n);var i={};B(e=>{G(r,e),i!==(i=V(t))&&(n.value=(n.__value=V(t))??``)},[()=>Y(p[V(t)])]),W(e,n)}),j(u),B((e,t,n)=>{G(i,e),J(s,`placeholder`,t),G(l,n)},[()=>Y(`survival.modal_cat_label_name`),()=>Y(`survival.modal_cat_placeholder_name`),()=>Y(`survival.modal_label_color`)]),H(`keydown`,s,e=>e.key===`Enter`&&v()),Ni(s,()=>V(a),e=>F(a,e)),xi(u,()=>V(o),e=>F(o,e)),W(e,n)},$$slots:{default:!0}})}var de=z(ue,2);{let e=N(()=>V(l)===-1?Y(`survival.modal_link_title`):Y(`survival.modal_edit_link_title`)),t=N(()=>V(l)===-1?Y(`common.add`):Y(`common.save`));Fy(de,{get open(){return V(s)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:S,onClose:()=>F(s,!1),children:(e,t)=>{var n=sb(),r=R(n),i=L(r,!0);j(r);var a=z(r,2);Di(a);var o=z(a,2),s=L(o,!0);j(o);var c=z(o,2);Di(c);var l=z(c,2),p=L(l,!0);j(l);var m=z(l,2);Di(m),B((e,t,n,r,o)=>{G(i,e),J(a,`placeholder`,t),G(s,n),J(c,`placeholder`,r),G(p,o)},[()=>Y(`survival.modal_link_label_name`),()=>Y(`survival.modal_link_placeholder_name`),()=>Y(`survival.modal_link_label_desc`),()=>Y(`survival.modal_link_placeholder_desc`),()=>Y(`survival.modal_link_label_url`)]),Ni(a,()=>V(u),e=>F(u,e)),Ni(c,()=>V(d),e=>F(d,e)),H(`keydown`,m,e=>e.key===`Enter`&&S()),Ni(m,()=>V(f),e=>F(f,e)),W(e,n)},$$slots:{default:!0}})}B((e,t,r,i,a)=>{G(D,e),G(O,t),G(ne,r),G(ie,i),G(ae,a),se=gi(oe,1,`sk-cats svelte-1j811iq`,null,se,{"edit-mode":V(n)})},[()=>Y(`survival.links_title`),()=>Y(`survival.links_subtitle`),()=>V(n)?Y(`survival.btn_read_mode`):Y(`survival.btn_edit_mode`),()=>V(m)?Y(`survival.btn_collapse_all`):Y(`survival.btn_expand_all`),()=>Y(`survival.links_btn_add_cat`)]),H(`click`,te,()=>F(n,!V(n))),H(`click`,re,g),H(`click`,A,_),W(e,w),Je()}Pr([`click`,`keydown`]);var ub=U(`<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),db=U(`<p class="sk-loading svelte-ha6eja"> </p>`),fb=U(`<div class="sk-grid svelte-ha6eja"><section class="sk-col svelte-ha6eja"><div class="sk-inner svelte-ha6eja"><!></div></section> <section class="sk-col svelte-ha6eja"><div class="sk-inner svelte-ha6eja"><!></div></section> <section class="sk-col svelte-ha6eja"><div class="sk-inner svelte-ha6eja"><!></div></section></div>`),pb=U(`<!> <div class="app-shell sk-root svelte-ha6eja"><div class="sk-menu-trigger svelte-ha6eja" role="presentation"></div> <div><!></div> <!></div> <!>`,1);function mb(e,t){qe(t,!0);let n=P(null),r=P(!1),i=P(!1),a=P(!1),o=P(!1);function s(e){F(o,e<=(V(o)?84:10))}kn(()=>{let e=e=>s(e.clientY);return window.addEventListener(`mousemove`,e),()=>window.removeEventListener(`mousemove`,e)});async function c(e,t){return V(n).show({title:e,message:t,confirmLabel:Y(`survival.irreversible_delete`),cancelLabel:Y(`common.cancel`),danger:!0})}function l(e){F(i,e,!0),document.documentElement.classList.toggle(`dark`,e)}function u(){let e=!1;try{let t=localStorage.getItem(`ld-dark`);e=t===null?window.matchMedia(`(prefers-color-scheme: dark)`).matches:t===`true`}catch{}l(e)}function d(){l(!V(i));try{localStorage.setItem(`ld-dark`,String(V(i)))}catch{}}Gi(async()=>{u();try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}await Ty(),F(r,!0)});var f=pb(),p=R(f);Vi(eu(p,{}),e=>F(n,e,!0),()=>V(n));var m=z(p,2),h=L(m),g=z(h,2);let _;var v=L(g);{let e=e=>{var t=ub(),n=R(t),r=z(n,2),o=L(r,!0);j(r),B((e,t)=>{J(n,`title`,e),J(n,`aria-label`,t),G(o,V(i)?`☀`:`☾`)},[()=>Y(`nav.word_cloud`),()=>Y(`nav.word_cloud`)]),H(`click`,n,()=>F(a,!0)),H(`click`,r,d),W(e,t)},t=N(()=>Y(`survival.title`)),n=N(()=>Y(`survival.subtitle`));$a(v,{get title(){return V(t)},get subtitle(){return V(n)},actions:e,$$slots:{actions:!0}})}j(g);var y=z(g,2),b=e=>{var t=db(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},x=e=>{var t=fb(),n=L(t),r=L(n);My(L(r),{}),j(r),j(n);var i=z(n,2),a=L(i);eb(L(a),{confirmDelete:c}),j(a),j(i);var o=z(i,2),s=L(o);lb(L(s),{confirmDelete:c}),j(s),j(o),j(t),W(e,t)};K(y,e=>{V(r)?e(x,-1):e(b)}),j(m),qv(z(m,2),{get open(){return V(a)},onclose:()=>F(a,!1)}),B(()=>_=gi(g,1,`sk-menu-drawer svelte-ha6eja`,null,_,{revealed:V(o)})),Nr(`mouseenter`,h,()=>F(o,!0)),W(e,f),Je()}Pr([`click`]);var hb=`git-integration-config`,gb=`git-integration-status`,_b=`git-integration-save`,vb=`/admin#git-integration`,yb=120*1e3,bb=!1,xb=!1;function Sb(e){let t=Date.parse(e);return Number.isFinite(t)&&Date.now()-t<yb}function Cb(e){let t=e.toLowerCase();return t.includes(`cannot lock ref 'head'`)&&t.includes(`but expected`)?`un autre commit a modifié HEAD pendant l'autocommit. Réessayez l'enregistrement.`:e}async function wb(){if(!bb){bb=!0;try{let e=await fetch(`/api/git/status`,{cache:`no-store`});if(!e.ok)return;let t=await e.json();if(t.mode===`unconfigured`){Na(`Veuillez configurer l'intégration Git dans la page Admin.`,`error`,600*1e3,{id:hb,href:vb,linkLabel:`Admin`}),wa(gb),wa(_b);return}if(wa(hb),t.mode===`disabled`){wa(gb),wa(_b);return}if(!t.ok){Na(`Intégration Git : ${t.message}`,`error`,600*1e3,{id:gb,href:vb,linkLabel:`Admin`});return}if(t.dirtyOutsideDocsCount>0){let e=t.docsFolder?.trim()||`docsFolder`;Na(`Git : ${t.dirtyOutsideDocsCount} changement(s) hors ${e} seront ignorés par Living Documentation.`,`error`,600*1e3,gb)}else wa(gb);let n=t.lastSave;n&&Sb(n.timestamp)&&(n.error||n.warning)?Na(`Git : ${Cb(n.error||n.warning||``)}`,`error`,600*1e3,{id:_b,href:vb,linkLabel:`Admin`}):wa(_b)}catch{}finally{bb=!1}}}function Tb(){if(xb)return;xb=!0;let e=window.fetch.bind(window);window.fetch=async(t,n)=>{let r=await e(t,n),i=typeof t==`string`?t:t instanceof URL?t.toString():t.url;return(n?.method||(t instanceof Request?t.method:`GET`)).toUpperCase()!==`GET`&&!i.includes(`/api/git/`)&&(i.startsWith(`/api/`)||i.startsWith(`/mcp`)||i.startsWith(window.location.origin))&&window.setTimeout(()=>void wb(),80),r}}var Eb=U(`<p style="padding:2rem"> </p>`);function Db(e,t){qe(t,!0);function n(e){return e.length>1?e.replace(/\/+$/,``):e}let r=new Set([`/`,`/admin`,`/workspace`,`/blueprint`,`/diagram`,`/shape-editor`,`/context`,`/files`,`/survival-kit`]),i=P(I(n(window.location.pathname)));function a(e){let t=new URL(e,window.location.href),r=n(t.pathname),a=`${r}${t.search}${t.hash}`;if(a===`${window.location.pathname}${window.location.search}${window.location.hash}`){ja();return}history.pushState(null,``,a),F(i,r,!0),ja(),wb(),window.dispatchEvent(new PopStateEvent(`popstate`))}function o(e){if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;if(!(t instanceof HTMLAnchorElement)||t.target||t.hasAttribute(`download`))return;let i=new URL(t.href,window.location.href);if(i.origin!==window.location.origin)return;let o=n(i.pathname);r.has(o)&&(e.preventDefault(),a(`${o}${i.search}${i.hash}`))}Gi(()=>(ja(),Tb(),wb(),document.addEventListener(`click`,o,!0),()=>{document.removeEventListener(`click`,o,!0)})),window.addEventListener(`popstate`,()=>{F(i,n(window.location.pathname),!0),ja(),wb()}),kn(()=>{V(i)===`/blueprint`?document.documentElement.setAttribute(`data-blueprint`,``):document.documentElement.removeAttribute(`data-blueprint`)});function s(e){a(e)}var c=Wr(),l=R(c),u=e=>{go(e,{navigate:s})},d=e=>{id(e,{})},f=e=>{Mm(e,{})},p=e=>{Wm(e,{})},m=e=>{wh(e,{navigate:s})},h=e=>{ay(e,{})},g=e=>{xy(e,{})},_=e=>{mb(e,{})},v=e=>{$v(e,{})},y=e=>{var t=Eb(),n=L(t);j(t),B(()=>G(n,`Route "${V(i)??``}" — not yet migrated.`)),W(e,t)};K(l,e=>{V(i)===`/admin`?e(u):V(i)===`/blueprint`?e(d,1):V(i)===`/workspace`?e(f,2):V(i)===`/files`?e(p,3):V(i)===`/context`?e(m,4):V(i)===`/diagram`?e(h,5):V(i)===`/shape-editor`?e(g,6):V(i)===`/survival-kit`?e(_,7):V(i)===`/`?e(v,8):e(y,-1)}),W(e,c),Je()}ja(),Gr(Db,{target:document.getElementById(`app`)});export{py as a,_y as c,oy as d,pa as f,my as i,vy as l,fy as n,gy as o,Y as p,hy as r,dy as s,cy as t,sy as u};
185
+ `).map(e=>e.trim()).filter(Boolean);return t.length?{type:`table`,headers:t[0].split(`|`).map(e=>e.trim()),rows:t.slice(1).map(e=>e.split(`|`).map(e=>e.trim()))}:null}return{type:V(f),content:e}}function E(){let e=T();e&&(V(d)===-1?wy.notes[V(u)].blocs.push(e):wy.notes[V(u)].blocs[V(d)]=e,ky(),F(l,!1))}async function D(e,n){await t.confirmDelete(Y(`survival.confirm_del_bloc_title`),Y(`survival.irreversible`))&&(wy.notes[e].blocs.splice(n,1),ky())}async function ee(e,t){try{await navigator.clipboard.writeText(e),F(i,t,!0),setTimeout(()=>F(i,V(i)===t?null:V(i),!0),1500)}catch{}}let O=N(()=>V(f)===`ul`?Y(`survival.modal_bloc_placeholder_ul`):V(f)===`pre`?Y(`survival.modal_bloc_placeholder_pre`):V(f)===`table`?Y(`survival.modal_bloc_placeholder_table`):V(f)===`b`?Y(`survival.modal_bloc_placeholder_b`):Y(`survival.modal_bloc_placeholder_p`));var k=tb(),te=R(k),ne=L(te),re=L(ne,!0);Ie(),j(ne);var ie=z(ne,2),A=L(ie,!0);j(ie),j(te);var ae=z(te,2),oe=L(ae),se=L(oe,!0);j(oe);var ce=z(oe,2),le=L(ce,!0);j(ce);var ue=z(ce,2),de=L(ue,!0);j(ue),j(ae);var fe=z(ae,2);let pe;var me=L(fe),he=e=>{var t=Ry(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`survival.notes_empty`)]),W(e,t)};K(me,e=>{wy.notes.length===0&&e(he)}),q(z(me,2),19,()=>wy.notes,e=>e.id,(e,t,n)=>{let a=N(()=>!V(r)[V(t).id]);var o=Yy();let s;var c=L(o),l=L(c),u=L(l,!0);j(l);var d=z(l,2),f=L(d),p=z(f,2);j(d);var m=z(d,2);j(c);var h=z(c,2),_=L(h);q(_,17,()=>V(t).blocs,Xr,(e,r,a)=>{var o=Jy(),s=L(o),c=L(s),l=e=>{var t=zy(),n=L(t,!0);j(t),B(()=>G(n,V(r).content)),W(e,t)},u=e=>{var t=By(),n=L(t,!0);j(t),B(()=>G(n,V(r).content)),W(e,t)},d=e=>{let n=N(()=>`${V(t).id}-${a}`);var o=Vy(),s=L(o),c=L(s,!0);j(s);var l=z(s,2),u=L(l,!0);j(l),j(o),B(e=>{G(c,V(r).content),G(u,e)},[()=>V(i)===V(n)?Y(`survival.notes_btn_copied`):Y(`survival.notes_btn_copy`)]),H(`click`,l,()=>ee(V(r).content,V(n))),W(e,o)},f=e=>{var t=Uy();q(t,21,()=>V(r).items,Xr,(e,t)=>{var n=Hy(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(t),W(e,t)},p=e=>{var t=qy(),n=L(t),i=L(n),a=L(i);q(a,21,()=>V(r).headers,Xr,(e,t)=>{var n=Wy(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(a),j(i);var o=z(i);q(o,21,()=>V(r).rows,Xr,(e,t)=>{var n=Ky();q(n,21,()=>V(t),Xr,(e,t)=>{var n=Gy(),r=L(n,!0);j(n),B(()=>G(r,V(t))),W(e,n)}),j(n),W(e,n)}),j(o),j(n),j(t),W(e,t)};K(c,e=>{V(r).type===`b`?e(l):V(r).type===`p`?e(u,1):V(r).type===`pre`?e(d,2):V(r).type===`ul`?e(f,3):V(r).type===`table`&&e(p,4)}),j(s);var m=z(s,2),h=L(m),g=z(h,2);j(m),j(o),H(`click`,h,()=>w(V(n),a)),H(`click`,g,()=>D(V(n),a)),W(e,o)});var v=z(_,2),b=L(v),S=L(b,!0);j(b),j(v),j(h),j(o),B(e=>{s=gi(o,1,`sk-note ${V(t).theme??``}`,`svelte-hpbata`,s,{collapsed:V(a)}),G(u,V(t).titre),G(S,e)},[()=>Y(`survival.notes_btn_add_bloc`)]),H(`click`,f,()=>y(V(n))),H(`click`,p,()=>x(V(n))),H(`click`,m,()=>g(V(t).id)),H(`click`,b,()=>C(V(n))),W(e,o)}),j(fe);var ge=z(fe,2);{let e=N(()=>V(o)===-1?Y(`survival.modal_note_title`):Y(`survival.modal_edit_note_title`)),t=N(()=>V(o)===-1?Y(`common.create`):Y(`common.save`));Ly(ge,{get open(){return V(a)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:b,onClose:()=>F(a,!1),children:(e,t)=>{var n=Zy(),r=R(n),i=L(r,!0);j(r);var a=z(r,2);Di(a);var o=z(a,2),l=L(o,!0);j(o);var u=z(o,2);q(u,21,()=>Fy,Xr,(e,t)=>{var n=Xy(),r=L(n,!0);j(n);var i={};B(e=>{G(r,e),i!==(i=V(t))&&(n.value=(n.__value=V(t))??``)},[()=>Y(m[V(t)])]),W(e,n)}),j(u),B((e,t,n)=>{G(i,e),J(a,`placeholder`,t),G(l,n)},[()=>Y(`survival.modal_note_label_title`),()=>Y(`survival.modal_note_placeholder`),()=>Y(`survival.modal_label_color`)]),H(`keydown`,a,e=>e.key===`Enter`&&b()),Ni(a,()=>V(s),e=>F(s,e)),xi(u,()=>V(c),e=>F(c,e)),W(e,n)},$$slots:{default:!0}})}var _e=z(ge,2);{let e=N(()=>V(d)===-1?Y(`survival.modal_bloc_new`):Y(`survival.modal_bloc_edit`)),t=N(()=>Y(`common.save`));Ly(_e,{get open(){return V(l)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:E,onClose:()=>F(l,!1),children:(e,t)=>{var n=eb(),r=R(n),i=L(r,!0);j(r);var a=z(r,2),o=L(a),s=L(o,!0);j(o),o.value=o.__value=`b`;var c=z(o),l=L(c,!0);j(c),c.value=c.__value=`p`;var u=z(c),d=L(u,!0);j(u),u.value=u.__value=`pre`;var m=z(u),h=L(m,!0);j(m),m.value=m.__value=`ul`;var g=z(m),_=L(g,!0);j(g),g.value=g.__value=`table`,j(a);var v=z(a,2),y=L(v,!0);j(v);var b=z(v,2),x=e=>{var t=Qy();Di(t),B(()=>J(t,`placeholder`,V(O))),H(`keydown`,t,e=>e.key===`Enter`&&E()),Ni(t,()=>V(p),e=>F(p,e)),W(e,t)},S=e=>{var t=$y();yn(t),B(()=>J(t,`placeholder`,V(O))),Ni(t,()=>V(p),e=>F(p,e)),W(e,t)};K(b,e=>{V(f)===`b`?e(x):e(S,-1)}),B((e,t,n,r,a,o,c)=>{G(i,e),G(s,t),G(l,n),G(d,r),G(h,a),G(_,o),G(y,c)},[()=>Y(`survival.modal_bloc_label_type`),()=>Y(`survival.modal_bloc_type_b`),()=>Y(`survival.modal_bloc_type_p`),()=>Y(`survival.modal_bloc_type_pre`),()=>Y(`survival.modal_bloc_type_ul`),()=>Y(`survival.modal_bloc_type_table`),()=>Y(`survival.modal_bloc_label_content`)]),xi(a,()=>V(f),e=>F(f,e)),W(e,n)},$$slots:{default:!0}})}B((e,t,r,i,a)=>{G(re,e),G(A,t),G(se,r),G(le,i),G(de,a),pe=gi(fe,1,`sk-notes svelte-hpbata`,null,pe,{"edit-mode":V(n)})},[()=>Y(`survival.notes_title`),()=>Y(`survival.notes_subtitle`),()=>V(n)?Y(`survival.btn_read_mode`):Y(`survival.btn_edit_mode`),()=>V(h)?Y(`survival.btn_collapse_all`):Y(`survival.btn_expand_all`),()=>Y(`survival.notes_btn_add`)]),H(`click`,oe,()=>F(n,!V(n))),H(`click`,ce,_),H(`click`,ue,v),W(e,k),Je()}Pr([`click`,`keydown`]);var rb=U(`<p class="sk-empty svelte-1j811iq"> </p>`),ib=U(`<span class="sk-link-desc svelte-1j811iq"> </span>`),ab=U(`<a target="_blank" rel="noopener" class="sk-link svelte-1j811iq"><span class="sk-link-text svelte-1j811iq"><span class="sk-link-name svelte-1j811iq"> </span><!></span> <span class="sk-arrow svelte-1j811iq">↗</span> <span class="sk-link-actions svelte-1j811iq"><button type="button" class="sk-mini svelte-1j811iq">✎</button> <button type="button" class="sk-mini sk-mini--del svelte-1j811iq">✕</button></span></a>`),ob=U(`<section><div class="sk-cat-head svelte-1j811iq"><h3 class="svelte-1j811iq"> </h3> <div class="sk-cat-actions svelte-1j811iq"><button type="button" class="sk-mini svelte-1j811iq">+</button> <button type="button" class="sk-mini sk-mini--del svelte-1j811iq">✕</button></div> <button type="button" class="sk-toggle svelte-1j811iq" aria-label="toggle"><svg viewBox="0 0 10 6" width="10" height="6"><path d="M1 1 L5 5 L9 1" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></div> <div class="sk-links svelte-1j811iq"></div></section>`),sb=U(`<option> </option>`),cb=U(`<label for="sk-cat-name"> </label> <input id="sk-cat-name" type="text"/> <label for="sk-cat-color"> </label> <select id="sk-cat-color"></select>`,1),lb=U(`<label for="sk-link-nom"> </label> <input id="sk-link-nom" type="text"/> <label for="sk-link-desc"> </label> <input id="sk-link-desc" type="text"/> <label for="sk-link-url"> </label> <input id="sk-link-url" type="text" placeholder="https://…"/>`,1),ub=U(`<div class="sk-panel-head"><h2 class="sk-panel-title"> <span class="sk-accent">.</span></h2> <p class="sk-panel-sub"> </p></div> <div class="sk-toolbar svelte-1j811iq"><button type="button" class="sk-tool svelte-1j811iq"> </button> <button type="button" class="sk-tool svelte-1j811iq"> </button> <button type="button" class="sk-tool sk-tool--add svelte-1j811iq"> </button></div> <div><!> <!></div> <!> <!>`,1);function db(e,t){qe(t,!0);let n=P(!1),r=P(I({})),i=P(!1),a=P(``),o=P(`t-green`),s=P(!1),c=P(-1),l=P(-1),u=P(``),d=P(``),f=P(``),p={"t-green":`survival.color_green`,"t-violet":`survival.color_violet`,"t-amber":`survival.color_amber`,"t-sky":`survival.color_sky`,"t-rose":`survival.color_rose`,"t-teal":`survival.color_teal`},m=N(()=>wy.links.length>0&&wy.links.every(e=>V(r)[e.titre]));function h(e){V(r)[e]=!V(r)[e]}function g(){if(V(m))F(r,{},!0);else{let e={};wy.links.forEach(t=>e[t.titre]=!0),F(r,e,!0)}}function _(){F(a,``),F(o,`t-green`),F(i,!0)}function v(){let e=V(a).trim();e&&(wy.links.push({theme:V(o),titre:e,liens:[]}),ky(),F(i,!1))}async function y(e){wy.links[e],await t.confirmDelete(Y(`survival.confirm_del_cat_title`),Y(`survival.confirm_del_cat_msg`))&&(wy.links.splice(e,1),ky())}function b(e){F(c,e,!0),F(l,-1),F(u,``),F(d,``),F(f,``),F(s,!0)}function x(e,t,n){e.preventDefault();let r=wy.links[t].liens[n];F(c,t,!0),F(l,n,!0),F(u,r.nom,!0),F(d,r.desc,!0),F(f,r.url,!0),F(s,!0)}function S(){let e=V(u).trim(),t=V(f).trim();if(!e||!t)return;let n={nom:e,desc:V(d).trim(),url:t};V(l)===-1?wy.links[V(c)].liens.push(n):wy.links[V(c)].liens[V(l)]=n,ky(),F(s,!1)}async function C(e,n,r){e.preventDefault(),await t.confirmDelete(Y(`survival.confirm_del_link_title`),Y(`survival.irreversible`))&&(wy.links[n].liens.splice(r,1),ky())}var w=ub(),T=R(w),E=L(T),D=L(E,!0);Ie(),j(E);var ee=z(E,2),O=L(ee,!0);j(ee),j(T);var k=z(T,2),te=L(k),ne=L(te,!0);j(te);var re=z(te,2),ie=L(re,!0);j(re);var A=z(re,2),ae=L(A,!0);j(A),j(k);var oe=z(k,2);let se;var ce=L(oe),le=e=>{var t=rb(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`survival.links_empty`)]),W(e,t)};K(ce,e=>{wy.links.length===0&&e(le)}),q(z(ce,2),19,()=>wy.links,(e,t)=>e.titre+t,(e,t,n)=>{let i=N(()=>!V(r)[V(t).titre]);var a=ob();let o;var s=L(a),c=L(s),l=L(c,!0);j(c);var u=z(c,2),d=L(u),f=z(d,2);j(u);var p=z(u,2);j(s);var m=z(s,2);q(m,21,()=>V(t).liens,Xr,(e,t,r)=>{var i=ab(),a=L(i),o=L(a),s=L(o,!0);j(o);var c=z(o),l=e=>{var n=ib(),r=L(n);j(n),B(()=>G(r,`— ${V(t).desc??``}`)),W(e,n)};K(c,e=>{V(t).desc&&e(l)}),j(a);var u=z(a,4),d=L(u),f=z(d,2);j(u),j(i),B((e,n)=>{J(i,`href`,V(t).url),G(s,V(t).nom),J(d,`title`,e),J(f,`title`,n)},[()=>Y(`survival.links_edit_link_title`),()=>Y(`survival.links_del_link_title`)]),H(`click`,d,e=>x(e,V(n),r)),H(`click`,f,e=>C(e,V(n),r)),W(e,i)}),j(m),j(a),B((e,n)=>{o=gi(a,1,`sk-cat ${V(t).theme??``}`,`svelte-1j811iq`,o,{collapsed:V(i)}),G(l,V(t).titre),J(d,`title`,e),J(f,`title`,n)},[()=>Y(`survival.links_add_link_title`),()=>Y(`survival.links_del_cat_title`)]),H(`click`,d,()=>b(V(n))),H(`click`,f,()=>y(V(n))),H(`click`,p,()=>h(V(t).titre)),W(e,a)}),j(oe);var ue=z(oe,2);{let e=N(()=>Y(`survival.modal_cat_title`)),t=N(()=>Y(`common.add`));Ly(ue,{get open(){return V(i)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:v,onClose:()=>F(i,!1),children:(e,t)=>{var n=cb(),r=R(n),i=L(r,!0);j(r);var s=z(r,2);Di(s);var c=z(s,2),l=L(c,!0);j(c);var u=z(c,2);q(u,21,()=>Fy,Xr,(e,t)=>{var n=sb(),r=L(n,!0);j(n);var i={};B(e=>{G(r,e),i!==(i=V(t))&&(n.value=(n.__value=V(t))??``)},[()=>Y(p[V(t)])]),W(e,n)}),j(u),B((e,t,n)=>{G(i,e),J(s,`placeholder`,t),G(l,n)},[()=>Y(`survival.modal_cat_label_name`),()=>Y(`survival.modal_cat_placeholder_name`),()=>Y(`survival.modal_label_color`)]),H(`keydown`,s,e=>e.key===`Enter`&&v()),Ni(s,()=>V(a),e=>F(a,e)),xi(u,()=>V(o),e=>F(o,e)),W(e,n)},$$slots:{default:!0}})}var de=z(ue,2);{let e=N(()=>V(l)===-1?Y(`survival.modal_link_title`):Y(`survival.modal_edit_link_title`)),t=N(()=>V(l)===-1?Y(`common.add`):Y(`common.save`));Ly(de,{get open(){return V(s)},get title(){return V(e)},get confirmLabel(){return V(t)},onConfirm:S,onClose:()=>F(s,!1),children:(e,t)=>{var n=lb(),r=R(n),i=L(r,!0);j(r);var a=z(r,2);Di(a);var o=z(a,2),s=L(o,!0);j(o);var c=z(o,2);Di(c);var l=z(c,2),p=L(l,!0);j(l);var m=z(l,2);Di(m),B((e,t,n,r,o)=>{G(i,e),J(a,`placeholder`,t),G(s,n),J(c,`placeholder`,r),G(p,o)},[()=>Y(`survival.modal_link_label_name`),()=>Y(`survival.modal_link_placeholder_name`),()=>Y(`survival.modal_link_label_desc`),()=>Y(`survival.modal_link_placeholder_desc`),()=>Y(`survival.modal_link_label_url`)]),Ni(a,()=>V(u),e=>F(u,e)),Ni(c,()=>V(d),e=>F(d,e)),H(`keydown`,m,e=>e.key===`Enter`&&S()),Ni(m,()=>V(f),e=>F(f,e)),W(e,n)},$$slots:{default:!0}})}B((e,t,r,i,a)=>{G(D,e),G(O,t),G(ne,r),G(ie,i),G(ae,a),se=gi(oe,1,`sk-cats svelte-1j811iq`,null,se,{"edit-mode":V(n)})},[()=>Y(`survival.links_title`),()=>Y(`survival.links_subtitle`),()=>V(n)?Y(`survival.btn_read_mode`):Y(`survival.btn_edit_mode`),()=>V(m)?Y(`survival.btn_collapse_all`):Y(`survival.btn_expand_all`),()=>Y(`survival.links_btn_add_cat`)]),H(`click`,te,()=>F(n,!V(n))),H(`click`,re,g),H(`click`,A,_),W(e,w),Je()}Pr([`click`,`keydown`]);var fb=U(`<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),pb=U(`<p class="sk-loading svelte-ha6eja"> </p>`),mb=U(`<div class="sk-grid svelte-ha6eja"><section class="sk-col svelte-ha6eja"><div class="sk-inner svelte-ha6eja"><!></div></section> <section class="sk-col svelte-ha6eja"><div class="sk-inner svelte-ha6eja"><!></div></section> <section class="sk-col svelte-ha6eja"><div class="sk-inner svelte-ha6eja"><!></div></section></div>`),hb=U(`<!> <div class="app-shell sk-root svelte-ha6eja"><div class="sk-menu-trigger svelte-ha6eja" role="presentation"></div> <div><!></div> <!></div> <!>`,1);function gb(e,t){qe(t,!0);let n=P(null),r=P(!1),i=P(!1),a=P(!1),o=P(!1);function s(e){F(o,e<=(V(o)?84:10))}kn(()=>{let e=e=>s(e.clientY);return window.addEventListener(`mousemove`,e),()=>window.removeEventListener(`mousemove`,e)});async function c(e,t){return V(n).show({title:e,message:t,confirmLabel:Y(`survival.irreversible_delete`),cancelLabel:Y(`common.cancel`),danger:!0})}function l(e){F(i,e,!0),document.documentElement.classList.toggle(`dark`,e)}function u(){let e=!1;try{let t=localStorage.getItem(`ld-dark`);e=t===null?window.matchMedia(`(prefers-color-scheme: dark)`).matches:t===`true`}catch{}l(e)}function d(){l(!V(i));try{localStorage.setItem(`ld-dark`,String(V(i)))}catch{}}Gi(async()=>{u();try{await pa((await fetch(`/api/config`).then(e=>e.json())).language||`en`)}catch{}await Dy(),F(r,!0)});var f=hb(),p=R(f);Vi(tu(p,{}),e=>F(n,e,!0),()=>V(n));var m=z(p,2),h=L(m),g=z(h,2);let _;var v=L(g);{let e=e=>{var t=fb(),n=R(t),r=z(n,2),o=L(r,!0);j(r),B((e,t)=>{J(n,`title`,e),J(n,`aria-label`,t),G(o,V(i)?`☀`:`☾`)},[()=>Y(`nav.word_cloud`),()=>Y(`nav.word_cloud`)]),H(`click`,n,()=>F(a,!0)),H(`click`,r,d),W(e,t)},t=N(()=>Y(`survival.title`)),n=N(()=>Y(`survival.subtitle`));$a(v,{get title(){return V(t)},get subtitle(){return V(n)},actions:e,$$slots:{actions:!0}})}j(g);var y=z(g,2),b=e=>{var t=pb(),n=L(t,!0);j(t),B(e=>G(n,e),[()=>Y(`common.loading`)]),W(e,t)},x=e=>{var t=mb(),n=L(t),r=L(n);Py(L(r),{}),j(r),j(n);var i=z(n,2),a=L(i);nb(L(a),{confirmDelete:c}),j(a),j(i);var o=z(i,2),s=L(o);db(L(s),{confirmDelete:c}),j(s),j(o),j(t),W(e,t)};K(y,e=>{V(r)?e(x,-1):e(b)}),j(m),Yv(z(m,2),{get open(){return V(a)},onclose:()=>F(a,!1)}),B(()=>_=gi(g,1,`sk-menu-drawer svelte-ha6eja`,null,_,{revealed:V(o)})),Nr(`mouseenter`,h,()=>F(o,!0)),W(e,f),Je()}Pr([`click`]);var _b=`git-integration-config`,vb=`git-integration-status`,yb=`git-integration-save`,bb=`/admin#git-integration`,xb=120*1e3,Sb=!1,Cb=!1;function wb(e){let t=Date.parse(e);return Number.isFinite(t)&&Date.now()-t<xb}function Tb(e){let t=e.toLowerCase();return t.includes(`cannot lock ref 'head'`)&&t.includes(`but expected`)?`un autre commit a modifié HEAD pendant l'autocommit. Réessayez l'enregistrement.`:e}async function Eb(){if(!Sb){Sb=!0;try{let e=await fetch(`/api/git/status`,{cache:`no-store`});if(!e.ok)return;let t=await e.json();if(t.mode===`unconfigured`){Na(`Veuillez configurer l'intégration Git dans la page Admin.`,`error`,600*1e3,{id:_b,href:bb,linkLabel:`Admin`}),wa(vb),wa(yb);return}if(wa(_b),t.mode===`disabled`){wa(vb),wa(yb);return}if(!t.ok){Na(`Intégration Git : ${t.message}`,`error`,600*1e3,{id:vb,href:bb,linkLabel:`Admin`});return}if(t.dirtyOutsideDocsCount>0){let e=t.docsFolder?.trim()||`docsFolder`;Na(`Git : ${t.dirtyOutsideDocsCount} changement(s) hors ${e} seront ignorés par Living Documentation.`,`error`,600*1e3,vb)}else wa(vb);let n=t.lastSave;n&&wb(n.timestamp)&&(n.error||n.warning)?Na(`Git : ${Tb(n.error||n.warning||``)}`,`error`,600*1e3,{id:yb,href:bb,linkLabel:`Admin`}):wa(yb)}catch{}finally{Sb=!1}}}function Db(){if(Cb)return;Cb=!0;let e=window.fetch.bind(window);window.fetch=async(t,n)=>{let r=await e(t,n),i=typeof t==`string`?t:t instanceof URL?t.toString():t.url;return(n?.method||(t instanceof Request?t.method:`GET`)).toUpperCase()!==`GET`&&!i.includes(`/api/git/`)&&(i.startsWith(`/api/`)||i.startsWith(`/mcp`)||i.startsWith(window.location.origin))&&window.setTimeout(()=>void Eb(),80),r}}var Ob=U(`<p style="padding:2rem"> </p>`);function kb(e,t){qe(t,!0);function n(e){return e.length>1?e.replace(/\/+$/,``):e}let r=new Set([`/`,`/admin`,`/workspace`,`/blueprint`,`/diagram`,`/shape-editor`,`/context`,`/files`,`/survival-kit`]),i=P(I(n(window.location.pathname)));function a(e){let t=new URL(e,window.location.href),r=n(t.pathname),a=`${r}${t.search}${t.hash}`;if(a===`${window.location.pathname}${window.location.search}${window.location.hash}`){ja();return}history.pushState(null,``,a),F(i,r,!0),ja(),Eb(),window.dispatchEvent(new PopStateEvent(`popstate`))}function o(e){if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;if(!(t instanceof HTMLAnchorElement)||t.target||t.hasAttribute(`download`))return;let i=new URL(t.href,window.location.href);if(i.origin!==window.location.origin)return;let o=n(i.pathname);r.has(o)&&(e.preventDefault(),a(`${o}${i.search}${i.hash}`))}Gi(()=>(ja(),Db(),Eb(),document.addEventListener(`click`,o,!0),()=>{document.removeEventListener(`click`,o,!0)})),window.addEventListener(`popstate`,()=>{F(i,n(window.location.pathname),!0),ja(),Eb()}),kn(()=>{V(i)===`/blueprint`?document.documentElement.setAttribute(`data-blueprint`,``):document.documentElement.removeAttribute(`data-blueprint`)});function s(e){a(e)}var c=Wr(),l=R(c),u=e=>{go(e,{navigate:s})},d=e=>{od(e,{})},f=e=>{Pm(e,{})},p=e=>{Km(e,{})},m=e=>{Eh(e,{navigate:s})},h=e=>{sy(e,{})},g=e=>{Cy(e,{})},_=e=>{gb(e,{})},v=e=>{ty(e,{})},y=e=>{var t=Ob(),n=L(t);j(t),B(()=>G(n,`Route "${V(i)??``}" — not yet migrated.`)),W(e,t)};K(l,e=>{V(i)===`/admin`?e(u):V(i)===`/blueprint`?e(d,1):V(i)===`/workspace`?e(f,2):V(i)===`/files`?e(p,3):V(i)===`/context`?e(m,4):V(i)===`/diagram`?e(h,5):V(i)===`/shape-editor`?e(g,6):V(i)===`/survival-kit`?e(_,7):V(i)===`/`?e(v,8):e(y,-1)}),W(e,c),Je()}ja(),Gr(kb,{target:document.getElementById(`app`)});export{hy as a,yy as c,cy as d,pa as f,gy as i,by as l,my as n,vy as o,Y as p,_y as r,py as s,uy as t,ly as u};