@justyork/repo-mind 0.7.1 → 0.7.2

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.
Files changed (58) hide show
  1. package/package.json +1 -1
  2. package/ui/dist/assets/{arc-B9D1Pvqi.js → arc-C1R_fyW-.js} +1 -1
  3. package/ui/dist/assets/{architectureDiagram-3BPJPVTR-Bvug0Ca5.js → architectureDiagram-3BPJPVTR-CcuF3FYc.js} +1 -1
  4. package/ui/dist/assets/{blockDiagram-GPEHLZMM-Ckmilsu4.js → blockDiagram-GPEHLZMM-BZJKe3Ei.js} +1 -1
  5. package/ui/dist/assets/{c4Diagram-AAUBKEIU-BT9pbmn0.js → c4Diagram-AAUBKEIU-D_0fRNGS.js} +1 -1
  6. package/ui/dist/assets/channel-BlWnHbuq.js +1 -0
  7. package/ui/dist/assets/{chunk-2J33WTMH-dgxq-Xfu.js → chunk-2J33WTMH-0LcH4vIA.js} +1 -1
  8. package/ui/dist/assets/{chunk-4BX2VUAB-DmM9cIh_.js → chunk-4BX2VUAB-DU1h67AD.js} +1 -1
  9. package/ui/dist/assets/{chunk-55IACEB6-DsB88bPS.js → chunk-55IACEB6-BCx7dyYV.js} +1 -1
  10. package/ui/dist/assets/{chunk-727SXJPM-BYuDClxC.js → chunk-727SXJPM-CRO5yOrB.js} +1 -1
  11. package/ui/dist/assets/{chunk-AQP2D5EJ-RO0Jvaof.js → chunk-AQP2D5EJ-BayHdr67.js} +1 -1
  12. package/ui/dist/assets/{chunk-FMBD7UC4-DqY1unJF.js → chunk-FMBD7UC4-CJemLien.js} +1 -1
  13. package/ui/dist/assets/{chunk-ND2GUHAM-BAURH6-3.js → chunk-ND2GUHAM-B_z-tw44.js} +1 -1
  14. package/ui/dist/assets/{chunk-QZHKN3VN-BiCWufLo.js → chunk-QZHKN3VN-D40rAh_S.js} +1 -1
  15. package/ui/dist/assets/classDiagram-4FO5ZUOK-D3OdfPqd.js +1 -0
  16. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-D3OdfPqd.js +1 -0
  17. package/ui/dist/assets/{cose-bilkent-S5V4N54A-Bol8tJZ0.js → cose-bilkent-S5V4N54A-Cqthtrrq.js} +1 -1
  18. package/ui/dist/assets/{dagre-BM42HDAG-ziNCIqra.js → dagre-BM42HDAG-CrxsyXEa.js} +1 -1
  19. package/ui/dist/assets/{diagram-2AECGRRQ-Dh2G8IOg.js → diagram-2AECGRRQ-DTYA7Rrn.js} +1 -1
  20. package/ui/dist/assets/{diagram-5GNKFQAL-C_26Fq9O.js → diagram-5GNKFQAL-CXs7RV13.js} +1 -1
  21. package/ui/dist/assets/{diagram-KO2AKTUF-CPS1B4bk.js → diagram-KO2AKTUF-Bf8EeV_S.js} +1 -1
  22. package/ui/dist/assets/{diagram-LMA3HP47-DoL5Nx28.js → diagram-LMA3HP47-C2XWB0cI.js} +1 -1
  23. package/ui/dist/assets/{diagram-OG6HWLK6-DOy-TY5D.js → diagram-OG6HWLK6-BNMXob9h.js} +1 -1
  24. package/ui/dist/assets/{erDiagram-TEJ5UH35-C2whsoWw.js → erDiagram-TEJ5UH35-CnSczOvb.js} +1 -1
  25. package/ui/dist/assets/{flowDiagram-I6XJVG4X-D7-1XdVh.js → flowDiagram-I6XJVG4X-DwZBJ2fr.js} +1 -1
  26. package/ui/dist/assets/{ganttDiagram-6RSMTGT7-Dduumk4v.js → ganttDiagram-6RSMTGT7-rxwvD8xn.js} +1 -1
  27. package/ui/dist/assets/{gitGraphDiagram-PVQCEYII-CJfZihUe.js → gitGraphDiagram-PVQCEYII-DjJPiQ2K.js} +1 -1
  28. package/ui/dist/assets/{graph-CFkZObJQ.js → graph-D_tIaE_I.js} +1 -1
  29. package/ui/dist/assets/{infoDiagram-5YYISTIA-B8IsGW31.js → infoDiagram-5YYISTIA-BHgtQpBK.js} +1 -1
  30. package/ui/dist/assets/{ishikawaDiagram-YF4QCWOH-CwaI1VjO.js → ishikawaDiagram-YF4QCWOH-BZ38ndde.js} +1 -1
  31. package/ui/dist/assets/{journeyDiagram-JHISSGLW-jo8e3Vri.js → journeyDiagram-JHISSGLW-CNaZf5VN.js} +1 -1
  32. package/ui/dist/assets/{kanban-definition-UN3LZRKU-DsFcvv5g.js → kanban-definition-UN3LZRKU-4h1Jmt_X.js} +1 -1
  33. package/ui/dist/assets/{main-DEdNYNxf.js → main-BeHrzLrS.js} +54 -55
  34. package/ui/dist/assets/{mermaid.core-CIyMeT5H.js → mermaid.core-BZZdRyuR.js} +4 -4
  35. package/ui/dist/assets/{mindmap-definition-RKZ34NQL-Bl3ML0fg.js → mindmap-definition-RKZ34NQL-DG_NciLX.js} +1 -1
  36. package/ui/dist/assets/{pieDiagram-4H26LBE5-rCj5-rCc.js → pieDiagram-4H26LBE5-B9FyPCLY.js} +1 -1
  37. package/ui/dist/assets/{quadrantDiagram-W4KKPZXB-tF5l8Pj1.js → quadrantDiagram-W4KKPZXB-B89WFfQu.js} +1 -1
  38. package/ui/dist/assets/{requirementDiagram-4Y6WPE33-CtAsbYzh.js → requirementDiagram-4Y6WPE33-BYHKePgB.js} +1 -1
  39. package/ui/dist/assets/{sankeyDiagram-5OEKKPKP-CYgylTyv.js → sankeyDiagram-5OEKKPKP-BW6YuBQM.js} +1 -1
  40. package/ui/dist/assets/{sequenceDiagram-3UESZ5HK-D2FeAk8O.js → sequenceDiagram-3UESZ5HK-BnojqKwf.js} +1 -1
  41. package/ui/dist/assets/{stateDiagram-AJRCARHV-BhNt372S.js → stateDiagram-AJRCARHV-C_x9t2o6.js} +1 -1
  42. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-CBZx8gKT.js +1 -0
  43. package/ui/dist/assets/theme-CFHWfrn1.css +1 -0
  44. package/ui/dist/assets/{timeline-definition-PNZ67QCA-DYrj-JqE.js → timeline-definition-PNZ67QCA-CI8Ngfzv.js} +1 -1
  45. package/ui/dist/assets/{vennDiagram-CIIHVFJN-DAdImqHv.js → vennDiagram-CIIHVFJN-CPRKGc2P.js} +1 -1
  46. package/ui/dist/assets/{visual-editor-BHZk1CI4.js → visual-editor-DUVPRlY3.js} +1 -1
  47. package/ui/dist/assets/{wardley-L42UT6IY-BfiflBRy.js → wardley-L42UT6IY-CZY42jFT.js} +1 -1
  48. package/ui/dist/assets/{wardleyDiagram-YWT4CUSO-5HZM-go9.js → wardleyDiagram-YWT4CUSO-CGKyWKnw.js} +1 -1
  49. package/ui/dist/assets/{xychartDiagram-2RQKCTM6-ozNCw5n2.js → xychartDiagram-2RQKCTM6-Cq-onAc3.js} +1 -1
  50. package/ui/dist/favicon.svg +8 -0
  51. package/ui/dist/graph.html +4 -3
  52. package/ui/dist/index.html +4 -3
  53. package/ui/dist/assets/channel-TAOLyHdK.js +0 -1
  54. package/ui/dist/assets/classDiagram-4FO5ZUOK-0RJZpoIN.js +0 -1
  55. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-0RJZpoIN.js +0 -1
  56. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-hesflu-P.js +0 -1
  57. package/ui/dist/assets/theme-CgUWrIXo.css +0 -1
  58. /package/ui/dist/assets/{theme-DBoBdw62.js → theme-DS1fBM5L.js} +0 -0
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visual-editor-BHZk1CI4.js","assets/editor-CTtDusro.js","assets/theme-DBoBdw62.js","assets/theme-CgUWrIXo.css","assets/mermaid.core-CIyMeT5H.js","assets/transform-BwXaE9hv.js"])))=>i.map(i=>d[i]);
2
- import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f as At,u as Rt,h as Ht,i as Nt,o as Ze,j as Ft,m as It,k as Wt,n as _t,q as Ut,r as Re,t as Ot,v as Bt,w as jt,x as Kt,y as U,z as He,A as J,B as zt}from"./theme-DBoBdw62.js";import{m as et}from"./editor-CTtDusro.js";const Vt={"wiki-page":"Wiki",adr:"ADR","feature-spec":"Feature specs","glossary-term":"Glossary","open-question":"Open questions","agent-instruction":"Agent instructions"},Ne="folder:";function pe(e){if(e.startsWith(Ne)){const t=e.slice(Ne.length);return t==="__root__"?"General":t.split(/[-_/]/).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}return Vt[e]??e}function Gt(e,t){var $,b,C,k;e.className="workspace-main workspace-dashboard",e.innerHTML=`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visual-editor-DUVPRlY3.js","assets/editor-CTtDusro.js","assets/theme-DS1fBM5L.js","assets/theme-CFHWfrn1.css","assets/mermaid.core-BZZdRyuR.js","assets/transform-BwXaE9hv.js"])))=>i.map(i=>d[i]);
2
+ import{p as Pt,s as Ct,e as Tt,g as qt,a as Dt,l as G,b as Mt,c as xt,d as de,f as At,u as Rt,h as Ht,i as Nt,o as Ze,j as Ft,m as It,k as Wt,n as _t,q as Ut,r as Ae,t as Ot,v as Bt,w as jt,x as Kt,y as U,z as Re,A as J,B as zt}from"./theme-DS1fBM5L.js";import{m as et}from"./editor-CTtDusro.js";const Vt={"wiki-page":"Wiki",adr:"ADR","feature-spec":"Feature specs","glossary-term":"Glossary","open-question":"Open questions","agent-instruction":"Agent instructions"},He="folder:";function ue(e){if(e.startsWith(He)){const t=e.slice(He.length);return t==="__root__"?"General":t.split(/[-_/]/).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}return Vt[e]??e}function Gt(e,t){var L,v,T,k;e.className="workspace-main workspace-dashboard",e.innerHTML=`
3
3
  <div class="dashboard-header">
4
4
  <h1 class="doc-title">Health &amp; publish</h1>
5
5
  <div class="workspace-actions">
@@ -22,17 +22,17 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
22
22
  <h2>Publish queue</h2>
23
23
  <ul id="dash-queue" class="queue-list"></ul>
24
24
  </div>
25
- `;const n=e.querySelector("#dash-check"),r=e.querySelector("#dash-links"),i=e.querySelector("#dash-unprepared"),l=e.querySelector("#dash-queue");function d(a){const p=a.ok?"check-ok":"check-fail",s=a.ok?"All checks passed":`${a.violations.length} issue(s)`;let o=`
25
+ `;const n=e.querySelector("#dash-check"),r=e.querySelector("#dash-links"),i=e.querySelector("#dash-unprepared"),l=e.querySelector("#dash-queue");function d(o){const p=o.ok?"check-ok":"check-fail",s=o.ok?"All checks passed":`${o.violations.length} issue(s)`;let a=`
26
26
  <h2>Schema check</h2>
27
27
  <p class="check-status ${p}">${s}</p>
28
- `;if(a.violations.length>0){o+='<ul class="violation-list">';for(const c of a.violations)o+=`<li><code>${R(c.path)}</code> — ${R(c.message)}</li>`;o+="</ul>"}if(a.warnings.length>0){o+='<h3 class="warnings-title">Warnings</h3><ul class="warning-list">';for(const c of a.warnings)o+=`<li>${R(c)}</li>`;o+="</ul>"}n.innerHTML=o}function u(a){let p=`
28
+ `;if(o.violations.length>0){a+='<ul class="violation-list">';for(const u of o.violations)a+=`<li><code>${R(u.path)}</code> — ${R(u.message)}</li>`;a+="</ul>"}if(o.warnings.length>0){a+='<h3 class="warnings-title">Warnings</h3><ul class="warning-list">';for(const u of o.warnings)a+=`<li>${R(u)}</li>`;a+="</ul>"}n.innerHTML=a}function c(o){let p=`
29
29
  <h2>Link health</h2>
30
30
  <div class="link-health-stats">
31
- <div class="link-health-stat"><span class="link-health-value">${a.orphanCount}</span> orphans</div>
32
- <div class="link-health-stat"><span class="link-health-value">${a.brokenCount}</span> broken</div>
33
- <div class="link-health-stat"><span class="link-health-value">${a.oneWayCount}</span> one-way</div>
31
+ <div class="link-health-stat"><span class="link-health-value">${o.orphanCount}</span> orphans</div>
32
+ <div class="link-health-stat"><span class="link-health-value">${o.brokenCount}</span> broken</div>
33
+ <div class="link-health-stat"><span class="link-health-value">${o.oneWayCount}</span> one-way</div>
34
34
  </div>
35
- `;if(a.brokenTargets.length>0){p+='<h3 class="warnings-title">Broken targets</h3><ul class="warning-list">';for(const s of a.brokenTargets)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}if(a.orphanSlugs.length>0){p+='<h3 class="warnings-title">Orphan pages</h3><ul class="warning-list">';for(const s of a.orphanSlugs)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}r.innerHTML=p}function y(a){var p;if(i.innerHTML="",a.length===0){i.innerHTML='<li class="placeholder">All docs have frontmatter</li>';return}for(const s of a){const o=document.createElement("li");o.className="queue-item",o.innerHTML=`
35
+ `;if(o.brokenTargets.length>0){p+='<h3 class="warnings-title">Broken targets</h3><ul class="warning-list">';for(const s of o.brokenTargets)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}if(o.orphanSlugs.length>0){p+='<h3 class="warnings-title">Orphan pages</h3><ul class="warning-list">';for(const s of o.orphanSlugs)p+=`<li><code>${R(s)}</code></li>`;p+="</ul>"}r.innerHTML=p}function y(o){var p;if(i.innerHTML="",o.length===0){i.innerHTML='<li class="placeholder">All docs have frontmatter</li>';return}for(const s of o){const a=document.createElement("li");a.className="queue-item",a.innerHTML=`
36
36
  <div class="queue-main">
37
37
  <div class="queue-title">${R(s.relativePath)}</div>
38
38
  <div class="meta">${R(s.suggestedType)} · slug: ${R(s.suggestedSlug)}</div>
@@ -40,16 +40,16 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
40
40
  <div class="queue-actions">
41
41
  <button type="button" class="btn-primary btn-sm" data-action="prepare">Add frontmatter</button>
42
42
  </div>
43
- `,(p=o.querySelector('[data-action="prepare"]'))==null||p.addEventListener("click",()=>{xt(s.relativePath,s.suggestedType).then(({result:c})=>{t.onNotify(`Prepared: ${c.slug}`),h()}).catch(c=>{t.onNotify(c instanceof Error?c.message:"Prepare failed",!0)})}),i.appendChild(o)}}function w(a){var p,s;if(l.innerHTML="",a.length===0){l.innerHTML='<li class="placeholder">No drafts in queue</li>';return}for(const o of a){const c=document.createElement("li");c.className="queue-item",c.innerHTML=`
43
+ `,(p=a.querySelector('[data-action="prepare"]'))==null||p.addEventListener("click",()=>{xt(s.relativePath,s.suggestedType).then(({result:u})=>{t.onNotify(`Prepared: ${u.slug}`),h()}).catch(u=>{t.onNotify(u instanceof Error?u.message:"Prepare failed",!0)})}),i.appendChild(a)}}function b(o){var p,s;if(l.innerHTML="",o.length===0){l.innerHTML='<li class="placeholder">No drafts in queue</li>';return}for(const a of o){const u=document.createElement("li");u.className="queue-item",u.innerHTML=`
44
44
  <div class="queue-main">
45
- <div class="queue-title">${R(o.title||o.slug)}</div>
46
- <div class="meta">${R(o.slug)} · ${R(o.type)}</div>
45
+ <div class="queue-title">${R(a.title||a.slug)}</div>
46
+ <div class="meta">${R(a.slug)} · ${R(a.type)}</div>
47
47
  </div>
48
48
  <div class="queue-actions">
49
49
  <button type="button" class="btn-ghost btn-sm" data-action="edit">Edit</button>
50
50
  <button type="button" class="btn-primary btn-sm" data-action="publish">Publish</button>
51
51
  </div>
52
- `,(p=c.querySelector('[data-action="edit"]'))==null||p.addEventListener("click",()=>{t.onOpenDraft(o)}),(s=c.querySelector('[data-action="publish"]'))==null||s.addEventListener("click",()=>{de(o.id).then(({result:m})=>{t.onPublished(m.path),h()}).catch(m=>{t.onNotify(m instanceof Error?m.message:"Publish failed",!0)})}),l.appendChild(c)}}async function h(){try{const[a,p,{drafts:s},{files:o}]=await Promise.all([Tt(),Dt(),G(),Mt()]);d(a),u(p),y(o),w(s)}catch(a){n.innerHTML=`<p class="check-status check-fail">${R(a instanceof Error?a.message:"Failed to load")}</p>`}}return($=e.querySelector("#dash-refresh"))==null||$.addEventListener("click",()=>{h()}),(b=e.querySelector("#dash-prepare-all"))==null||b.addEventListener("click",()=>{Pt().then(({result:a})=>{t.onNotify(`Prepared ${a.prepared.length} file(s)`),h()}).catch(a=>{t.onNotify(a instanceof Error?a.message:"Prepare all failed",!0)})}),(C=e.querySelector("#dash-sync-links"))==null||C.addEventListener("click",()=>{Ct().then(({result:a})=>{const p=a.files.filter(s=>s.changed).length;t.onNotify(`Synced links in ${p} file(s)`),h()}).catch(a=>{t.onNotify(a instanceof Error?a.message:"Sync links failed",!0)})}),(k=e.querySelector("#dash-export"))==null||k.addEventListener("click",()=>{qt().then(({path:a})=>{t.onNotify(`Exported ${a}`)}).catch(a=>{t.onNotify(a instanceof Error?a.message:"Export failed",!0)})}),h(),{refresh:h}}function R(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}const tt="repomind-page-info-hidden";function M(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ne(){try{const e=localStorage.getItem(tt);return e===null?!0:e==="true"}catch{return!0}}function nt(e){try{localStorage.setItem(tt,e?"true":"false")}catch{}}function Jt(e){return e.map((t,n)=>{const r=n>0?'<span class="crumb-sep">›</span>':"";return t.current?`${r}<span class="crumb current">${M(t.label)}</span>`:t.crumbId?`${r}<button type="button" class="crumb" data-crumb="${M(t.crumbId)}">${M(t.label)}</button>`:`${r}<span class="crumb">${M(t.label)}</span>`}).join("")}function fe(e,t){const n=t.focusMode??ne();e.className=t.rootClass??"workspace-main",e.innerHTML=`
52
+ `,(p=u.querySelector('[data-action="edit"]'))==null||p.addEventListener("click",()=>{t.onOpenDraft(a)}),(s=u.querySelector('[data-action="publish"]'))==null||s.addEventListener("click",()=>{de(a.id).then(({result:w})=>{t.onPublished(w.path),h()}).catch(w=>{t.onNotify(w instanceof Error?w.message:"Publish failed",!0)})}),l.appendChild(u)}}async function h(){try{const[o,p,{drafts:s},{files:a}]=await Promise.all([qt(),Dt(),G(),Mt()]);d(o),c(p),y(a),b(s)}catch(o){n.innerHTML=`<p class="check-status check-fail">${R(o instanceof Error?o.message:"Failed to load")}</p>`}}return(L=e.querySelector("#dash-refresh"))==null||L.addEventListener("click",()=>{h()}),(v=e.querySelector("#dash-prepare-all"))==null||v.addEventListener("click",()=>{Pt().then(({result:o})=>{t.onNotify(`Prepared ${o.prepared.length} file(s)`),h()}).catch(o=>{t.onNotify(o instanceof Error?o.message:"Prepare all failed",!0)})}),(T=e.querySelector("#dash-sync-links"))==null||T.addEventListener("click",()=>{Ct().then(({result:o})=>{const p=o.files.filter(s=>s.changed).length;t.onNotify(`Synced links in ${p} file(s)`),h()}).catch(o=>{t.onNotify(o instanceof Error?o.message:"Sync links failed",!0)})}),(k=e.querySelector("#dash-export"))==null||k.addEventListener("click",()=>{Tt().then(({path:o})=>{t.onNotify(`Exported ${o}`)}).catch(o=>{t.onNotify(o instanceof Error?o.message:"Export failed",!0)})}),h(),{refresh:h}}function R(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}const tt="repomind-page-info-hidden";function D(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ne(){try{const e=localStorage.getItem(tt);return e===null?!0:e==="true"}catch{return!0}}function nt(e){try{localStorage.setItem(tt,e?"true":"false")}catch{}}function Jt(e){return e.map((t,n)=>{const r=n>0?'<span class="crumb-sep">›</span>':"";return t.current?`${r}<span class="crumb current">${D(t.label)}</span>`:t.crumbId?`${r}<button type="button" class="crumb" data-crumb="${D(t.crumbId)}">${D(t.label)}</button>`:`${r}<span class="crumb">${D(t.label)}</span>`}).join("")}function pe(e,t){const n=t.focusMode??ne();e.className=t.rootClass??"workspace-main",e.innerHTML=`
53
53
  <nav class="breadcrumb" aria-label="Breadcrumb">
54
54
  ${Jt(t.breadcrumbs)}
55
55
  </nav>
@@ -63,11 +63,11 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
63
63
  </article>
64
64
  <aside class="page-info">${t.railHtml}</aside>
65
65
  </div>
66
- `;const r=e.querySelector(".page-layout");return{pageLayout:r,bodySlot:e.querySelector(".page-body-slot"),railSlot:e.querySelector(".page-info"),setFocusMode(i){r.classList.toggle("page-layout--focus",i),nt(i)}}}function ge(e,t,n){const r=e.querySelector("#toggle-focus"),i=e.querySelector(".page-layout");!r||!i||(i.classList.toggle("page-layout--focus",t),r.setAttribute("aria-pressed",String(t)),r.textContent=t?"Show info":"Hide info",r.addEventListener("click",()=>{const l=!i.classList.contains("page-layout--focus");i.classList.toggle("page-layout--focus",l),nt(l),r.setAttribute("aria-pressed",String(l)),r.textContent=l?"Show info":"Hide info"}))}function Xt(e,t){e.querySelectorAll(".breadcrumb [data-crumb]").forEach(n=>{n.addEventListener("click",()=>{const r=n.dataset.crumb;r&&t[r]&&t[r]()})})}const rt=/\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/g;function st(e,t){const n=e.trim(),r=((t==null?void 0:t.trim())||n).trim();return{display:n,slug:r}}function nr(e,t){const n=e.trim(),r=(t??n).trim();return r===n?`[[${n}]]`:`[[${n}|${r}]]`}function Yt(e){const t=[];for(const n of e.matchAll(rt)){const{slug:r}=st(n[1]??"",n[2]);r&&t.push(r)}return t}function Qt(e){return Yt(e)}function Zt(e,t){const n=t.find(l=>l.slug===e);if(n)return n.slug;const r=e.toLowerCase(),i=t.find(l=>l.title.toLowerCase()===r);return(i==null?void 0:i.slug)??null}function en(e,t,n){const r=new Set(t),i=[];for(const l of Qt(e)){const d=Zt(l,n);!d||r.has(d)||i.includes(d)||i.push(d)}return i}function tn(e,t,n){const r=e.toLowerCase();if(!r)return 1;const i=t.toLowerCase(),l=n.toLowerCase();return i.startsWith(r)||l.startsWith(r)?3:i.includes(r)||l.includes(r)?2:0}function nn(e,t,n=12){return t.map(r=>({doc:r,score:tn(e,r.slug,r.title)})).filter(r=>r.score>0).sort((r,i)=>i.score-r.score||r.doc.slug.localeCompare(i.doc.slug)).slice(0,n).map(r=>r.doc)}const rn=["adr","feature-spec","glossary-term","open-question","agent-instruction","wiki-page"],sn=["draft","proposed","accepted","superseded"];function at(e){return`
66
+ `;const r=e.querySelector(".page-layout");return{pageLayout:r,bodySlot:e.querySelector(".page-body-slot"),railSlot:e.querySelector(".page-info"),setFocusMode(i){r.classList.toggle("page-layout--focus",i),nt(i)}}}function fe(e,t,n){const r=e.querySelector("#toggle-focus"),i=e.querySelector(".page-layout");!r||!i||(i.classList.toggle("page-layout--focus",t),r.setAttribute("aria-pressed",String(t)),r.textContent=t?"Show info":"Hide info",r.addEventListener("click",()=>{const l=!i.classList.contains("page-layout--focus");i.classList.toggle("page-layout--focus",l),nt(l),r.setAttribute("aria-pressed",String(l)),r.textContent=l?"Show info":"Hide info"}))}function Xt(e,t){e.querySelectorAll(".breadcrumb [data-crumb]").forEach(n=>{n.addEventListener("click",()=>{const r=n.dataset.crumb;r&&t[r]&&t[r]()})})}const rt=/\[\[([^\]|]+)(?:\|([^\]]+))?\]\]/g;function st(e,t){const n=e.trim(),r=((t==null?void 0:t.trim())||n).trim();return{display:n,slug:r}}function nr(e,t){const n=e.trim(),r=(t??n).trim();return r===n?`[[${n}]]`:`[[${n}|${r}]]`}function Yt(e){const t=[];for(const n of e.matchAll(rt)){const{slug:r}=st(n[1]??"",n[2]);r&&t.push(r)}return t}function Qt(e){return Yt(e)}function Zt(e,t){const n=t.find(l=>l.slug===e);if(n)return n.slug;const r=e.toLowerCase(),i=t.find(l=>l.title.toLowerCase()===r);return(i==null?void 0:i.slug)??null}function en(e,t,n){const r=new Set(t),i=[];for(const l of Qt(e)){const d=Zt(l,n);!d||r.has(d)||i.includes(d)||i.push(d)}return i}function tn(e,t,n){const r=e.toLowerCase();if(!r)return 1;const i=t.toLowerCase(),l=n.toLowerCase();return i.startsWith(r)||l.startsWith(r)?3:i.includes(r)||l.includes(r)?2:0}function nn(e,t,n=12){return t.map(r=>({doc:r,score:tn(e,r.slug,r.title)})).filter(r=>r.score>0).sort((r,i)=>i.score-r.score||r.doc.slug.localeCompare(i.doc.slug)).slice(0,n).map(r=>r.doc)}const rn=["adr","feature-spec","glossary-term","open-question","agent-instruction","wiki-page"],sn=["draft","proposed","accepted","superseded"];function at(e){return`
67
67
  <h2 class="page-info-title">Page properties</h2>
68
68
  <div class="workspace-badges editor-badges">
69
69
  <span class="badge badge-draft">draft</span>
70
- ${e.forkedFrom?`<span class="badge">fork: ${M(e.forkedFrom)}</span>`:""}
70
+ ${e.forkedFrom?`<span class="badge">fork: ${D(e.forkedFrom)}</span>`:""}
71
71
  </div>
72
72
  <div class="props-section">
73
73
  <div class="props-label">Status</div>
@@ -100,10 +100,10 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
100
100
  <input id="ed-related-input" class="props-add-input" placeholder="Add related slug…" autocomplete="off" />
101
101
  <div id="ed-related-menu" class="props-dropdown hidden" role="listbox"></div>
102
102
  </div>
103
- `}function an(e,t,n,r){const i=e.querySelector("#ed-slug"),l=e.querySelector("#ed-slug-hint"),d=e.querySelector("#ed-status-chip"),u=e.querySelector("#ed-status-menu"),y=e.querySelector("#ed-type-chip"),w=e.querySelector("#ed-type-menu"),h=e.querySelector("#ed-catalog-hint"),$=e.querySelector("#ed-tags-chips"),b=e.querySelector("#ed-tags-input"),C=e.querySelector("#ed-related-chips"),k=e.querySelector("#ed-related-input"),a=e.querySelector("#ed-related-menu");let p=[...t.tags],s=[...t.related],o=t.status,c=t.type;i.value=t.slug,t.forkedFrom&&(i.readOnly=!0,i.title="Slug is fixed for edits of an existing published page",l.textContent=`Locked while editing published page (${t.forkedFrom})`,l.classList.remove("hidden")),L(),D(),f(),E();function m(){r()}function L(){d.textContent=o,d.className=`status-chip props-chip-trigger status-${o}`,u.innerHTML=sn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function D(){y.textContent=c,h.textContent=pe(c),w.innerHTML=rn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function f(){$.innerHTML=p.map(S=>`<span class="tag-chip props-removable-chip">${M(S)}<button type="button" class="chip-remove" data-tag="${M(S)}" aria-label="Remove tag">×</button></span>`).join(""),$.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.tag;p=p.filter(T=>T!==g),f(),m()})})}function E(){C.innerHTML=s.map(S=>`<span class="related-chip props-removable-chip">${M(S)}<button type="button" class="chip-remove" data-slug="${M(S)}" aria-label="Remove related">×</button></span>`).join(""),C.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.slug;s=s.filter(T=>T!==g),E(),m()})})}function P(){u.classList.add("hidden"),w.classList.add("hidden"),a.classList.add("hidden")}d.addEventListener("click",()=>{u.classList.toggle("hidden")||(w.classList.add("hidden"),a.classList.add("hidden"))}),u.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(o=g.dataset.value??o,L(),u.classList.add("hidden"),m())}),y.addEventListener("click",()=>{w.classList.toggle("hidden")||(u.classList.add("hidden"),a.classList.add("hidden"))}),w.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(c=g.dataset.value??c,D(),w.classList.add("hidden"),m())}),i.addEventListener("input",m),b.addEventListener("keydown",S=>{if(S.key!=="Enter"&&S.key!==",")return;S.preventDefault();const g=b.value.trim().replace(/,$/,"");if(!g||p.includes(g)){b.value="";return}p.push(g),b.value="",f(),m()});function q(S){const g=nn(S,n).filter(T=>!s.includes(T.slug));if(g.length===0){a.classList.add("hidden");return}a.innerHTML=g.map(T=>`<button type="button" class="props-dropdown-item" data-slug="${M(T.slug)}" role="option">
104
- <span class="wikilink-option-slug">${M(T.slug)}</span>
105
- <span class="wikilink-option-title">${M(T.title)}</span>
106
- </button>`).join(""),a.classList.remove("hidden")}return k.addEventListener("input",()=>{q(k.value.trim())}),k.addEventListener("keydown",S=>{if(S.key==="Enter"){S.preventDefault();const g=k.value.trim();g&&!s.includes(g)&&(s.push(g),k.value="",E(),a.classList.add("hidden"),m())}}),a.addEventListener("mousedown",S=>{S.preventDefault();const g=S.target.closest("[data-slug]");if(!g)return;const T=g.dataset.slug??"";T&&!s.includes(T)&&(s.push(T),k.value="",E(),a.classList.add("hidden"),m())}),document.addEventListener("click",S=>{const g=S.target;!d.contains(g)&&!u.contains(g)&&!y.contains(g)&&!w.contains(g)&&!k.contains(g)&&!a.contains(g)&&P()}),{getState:()=>({slug:i.value.trim(),type:c,status:o,tags:[...p],related:[...s]}),setRelated(S){s=[...new Set(S)],E(),m()}}}const on="modulepreload",ln=function(e){return"/"+e},Fe={},it=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let d=function(w){return Promise.all(w.map(h=>Promise.resolve(h).then($=>({status:"fulfilled",value:$}),$=>({status:"rejected",reason:$}))))};document.getElementsByTagName("link");const u=document.querySelector("meta[property=csp-nonce]"),y=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));i=d(n.map(w=>{if(w=ln(w),w in Fe)return;Fe[w]=!0;const h=w.endsWith(".css"),$=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${w}"]${$}`))return;const b=document.createElement("link");if(b.rel=h?"stylesheet":on,h||(b.as="script"),b.crossOrigin="",b.href=w,y&&b.setAttribute("nonce",y),document.head.appendChild(b),h)return new Promise((C,k)=>{b.addEventListener("load",C),b.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${w}`)))})}))}function l(d){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=d,window.dispatchEvent(u),!u.defaultPrevented)throw d}return i.then(d=>{for(const u of d||[])u.status==="rejected"&&l(u.reason);return t().catch(l)})};let I=null,K=null;function ot(e,t,n,r,i=[]){var Se,Ee,Le,ke,$e,Pe,Ce,qe,Te,De,Me,xe;const l=i.map(v=>({slug:v.slug,title:v.title}));let d=null,u=n.body;const y=e.querySelector("#ed-title"),w=e.querySelector("#ed-save-status"),h=t.bodySlot.querySelector("#ed-visual-canvas"),$=document.createElement("div");$.id="publish-modal",$.className="modal hidden",$.innerHTML=`
103
+ `}function an(e,t,n,r){const i=e.querySelector("#ed-slug"),l=e.querySelector("#ed-slug-hint"),d=e.querySelector("#ed-status-chip"),c=e.querySelector("#ed-status-menu"),y=e.querySelector("#ed-type-chip"),b=e.querySelector("#ed-type-menu"),h=e.querySelector("#ed-catalog-hint"),L=e.querySelector("#ed-tags-chips"),v=e.querySelector("#ed-tags-input"),T=e.querySelector("#ed-related-chips"),k=e.querySelector("#ed-related-input"),o=e.querySelector("#ed-related-menu");let p=[...t.tags],s=[...t.related],a=t.status,u=t.type;i.value=t.slug,t.forkedFrom&&(i.readOnly=!0,i.title="Slug is fixed for edits of an existing published page",l.textContent=`Locked while editing published page (${t.forkedFrom})`,l.classList.remove("hidden")),P(),M(),f(),E();function w(){r()}function P(){d.textContent=a,d.className=`status-chip props-chip-trigger status-${a}`,c.innerHTML=sn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function M(){y.textContent=u,h.textContent=ue(u),b.innerHTML=rn.map(S=>`<button type="button" class="props-dropdown-item" data-value="${S}" role="option">${S}</button>`).join("")}function f(){L.innerHTML=p.map(S=>`<span class="tag-chip props-removable-chip">${D(S)}<button type="button" class="chip-remove" data-tag="${D(S)}" aria-label="Remove tag">×</button></span>`).join(""),L.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.tag;p=p.filter(q=>q!==g),f(),w()})})}function E(){T.innerHTML=s.map(S=>`<span class="related-chip props-removable-chip">${D(S)}<button type="button" class="chip-remove" data-slug="${D(S)}" aria-label="Remove related">×</button></span>`).join(""),T.querySelectorAll(".chip-remove").forEach(S=>{S.addEventListener("click",()=>{const g=S.dataset.slug;s=s.filter(q=>q!==g),E(),w()})})}function $(){c.classList.add("hidden"),b.classList.add("hidden"),o.classList.add("hidden")}d.addEventListener("click",()=>{c.classList.toggle("hidden")||(b.classList.add("hidden"),o.classList.add("hidden"))}),c.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(a=g.dataset.value??a,P(),c.classList.add("hidden"),w())}),y.addEventListener("click",()=>{b.classList.toggle("hidden")||(c.classList.add("hidden"),o.classList.add("hidden"))}),b.addEventListener("click",S=>{const g=S.target.closest("[data-value]");g&&(u=g.dataset.value??u,M(),b.classList.add("hidden"),w())}),i.addEventListener("input",w),v.addEventListener("keydown",S=>{if(S.key!=="Enter"&&S.key!==",")return;S.preventDefault();const g=v.value.trim().replace(/,$/,"");if(!g||p.includes(g)){v.value="";return}p.push(g),v.value="",f(),w()});function C(S){const g=nn(S,n).filter(q=>!s.includes(q.slug));if(g.length===0){o.classList.add("hidden");return}o.innerHTML=g.map(q=>`<button type="button" class="props-dropdown-item" data-slug="${D(q.slug)}" role="option">
104
+ <span class="wikilink-option-slug">${D(q.slug)}</span>
105
+ <span class="wikilink-option-title">${D(q.title)}</span>
106
+ </button>`).join(""),o.classList.remove("hidden")}return k.addEventListener("input",()=>{C(k.value.trim())}),k.addEventListener("keydown",S=>{if(S.key==="Enter"){S.preventDefault();const g=k.value.trim();g&&!s.includes(g)&&(s.push(g),k.value="",E(),o.classList.add("hidden"),w())}}),o.addEventListener("mousedown",S=>{S.preventDefault();const g=S.target.closest("[data-slug]");if(!g)return;const q=g.dataset.slug??"";q&&!s.includes(q)&&(s.push(q),k.value="",E(),o.classList.add("hidden"),w())}),document.addEventListener("click",S=>{const g=S.target;!d.contains(g)&&!c.contains(g)&&!y.contains(g)&&!b.contains(g)&&!k.contains(g)&&!o.contains(g)&&$()}),{getState:()=>({slug:i.value.trim(),type:u,status:a,tags:[...p],related:[...s]}),setRelated(S){s=[...new Set(S)],E(),w()}}}const on="modulepreload",ln=function(e){return"/"+e},Ne={},it=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let d=function(b){return Promise.all(b.map(h=>Promise.resolve(h).then(L=>({status:"fulfilled",value:L}),L=>({status:"rejected",reason:L}))))};document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),y=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));i=d(n.map(b=>{if(b=ln(b),b in Ne)return;Ne[b]=!0;const h=b.endsWith(".css"),L=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${b}"]${L}`))return;const v=document.createElement("link");if(v.rel=h?"stylesheet":on,h||(v.as="script"),v.crossOrigin="",v.href=b,y&&v.setAttribute("nonce",y),document.head.appendChild(v),h)return new Promise((T,k)=>{v.addEventListener("load",T),v.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${b}`)))})}))}function l(d){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=d,window.dispatchEvent(c),!c.defaultPrevented)throw d}return i.then(d=>{for(const c of d||[])c.status==="rejected"&&l(c.reason);return t().catch(l)})};let I=null,K=null;function ot(e,t,n,r,i=[]){var we,Se,Ee,Le,ke,$e,Pe,Ce,Te,qe,De,Me;const l=i.map(m=>({slug:m.slug,title:m.title}));let d=null,c=n.body;const y=e.querySelector("#ed-title"),b=e.querySelector("#ed-save-status"),h=t.bodySlot.querySelector("#ed-visual-canvas"),L=document.createElement("div");L.id="publish-modal",L.className="modal hidden",L.innerHTML=`
107
107
  <div class="modal-card modal-card-wide">
108
108
  <p>Publish to git as markdown?</p>
109
109
  <code id="publish-target"></code>
@@ -121,7 +121,7 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
121
121
  <button type="button" id="publish-cancel" class="btn-ghost">Cancel</button>
122
122
  </div>
123
123
  </div>
124
- `,e.appendChild($);const b=document.createElement("div");b.id="view-md-modal",b.className="modal hidden",b.innerHTML=`
124
+ `,e.appendChild(L);const v=document.createElement("div");v.id="view-md-modal",v.className="modal hidden",v.innerHTML=`
125
125
  <div class="modal-card modal-card-wide">
126
126
  <h3 class="modal-title">Markdown source</h3>
127
127
  <pre id="view-md-content" class="md-source"></pre>
@@ -130,7 +130,7 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
130
130
  <button type="button" id="view-md-close" class="btn-ghost">Close</button>
131
131
  </div>
132
132
  </div>
133
- `,e.appendChild(b);const C=e.querySelector("#ed-publish-menu");y.value=n.title;const k=an(t.railSlot,{slug:n.slug,type:n.type,status:n.status,tags:n.tags,related:n.related},l,()=>m());it(async()=>{const{mountVisualEditor:v}=await import("./visual-editor-BHZk1CI4.js");return{mountVisualEditor:v}},__vite__mapDeps([0,1,2,3])).then(({mountVisualEditor:v})=>{d=v(h,{initialMarkdown:n.body,docCandidates:l,onBodyChange:()=>m(),onError:r.onError})});let a=[];function p(){return(d==null?void 0:d.getMarkdownBody())??u}function s(){const v=k.getState();return{title:y.value,slug:v.slug,type:v.type,status:v.status,tags:v.tags,related:v.related,body:p()}}function o(v){w.textContent=v}async function c(){o("Saving…");const v=s();u=v.body,await Rt(n.id,v),o("Saved")}function m(){I&&clearTimeout(I),I=setTimeout(()=>{I=null,K=c().catch(v=>{o(""),r.onError(v instanceof Error?v.message:"Autosave failed")})},800)}async function L(){I&&(clearTimeout(I),I=null,K=c().catch(v=>{throw o(""),r.onError(v instanceof Error?v.message:"Autosave failed"),v})),K&&(await K,K=null)}y.addEventListener("input",()=>m()),y.addEventListener("change",()=>m());function D(){const v=e.querySelector("#publish-related"),x=e.querySelector("#publish-related-prompt"),_=e.querySelector("#publish-related-list"),H=k.getState();if(a=en(p(),H.related,l),a.length===0){v.classList.add("hidden");return}x.textContent=`Add ${a.length} body link(s) to related?`,_.innerHTML=a.map(ae=>{var Ae;const kt=((Ae=l.find($t=>$t.slug===ae))==null?void 0:Ae.title)??ae;return`<li><code>${M(ae)}</code> — ${M(kt)}</li>`}).join(""),v.classList.remove("hidden")}function f(){var x;if(a.length===0)return;const v=k.getState();k.setRelated([...new Set([...v.related,...a])]),a=[],(x=e.querySelector("#publish-related"))==null||x.classList.add("hidden")}(Se=e.querySelector("#publish-related-apply"))==null||Se.addEventListener("click",()=>{f()}),(Ee=e.querySelector("#publish-related-skip"))==null||Ee.addEventListener("click",()=>{var v;a=[],(v=e.querySelector("#publish-related"))==null||v.classList.add("hidden")});let E=null,P=null;function q(){$.classList.add("hidden"),E&&(document.removeEventListener("keydown",E),E=null)}function S(){$.classList.remove("hidden"),E||(E=v=>{v.key==="Escape"&&q()},document.addEventListener("keydown",E))}function g(){b.classList.add("hidden")}function T(){const v=b.querySelector("#view-md-content");v.textContent=p(),b.classList.remove("hidden")}async function se(){await L(),S(),D();const v=e.querySelector("#publish-target"),x=e.querySelector("#publish-diff"),_=k.getState();v.textContent=`docs/.../${_.slug}.md`,x.textContent="Loading diff…";try{const H=await Ht(n.id);H.targetPath&&(v.textContent=H.targetPath),x.textContent=H.diff}catch(H){x.textContent=H instanceof Error?H.message:"Diff unavailable"}}async function Lt(){const v=e.querySelector("#ed-publish");v.setAttribute("aria-busy","true"),v.disabled=!0;try{await L();const{result:x}=await de(n.id);r.onPublished(x.path)}finally{v.removeAttribute("aria-busy"),v.disabled=!1}}(Le=e.querySelector("#ed-publish"))==null||Le.addEventListener("click",()=>{Lt().catch(v=>{r.onError(v instanceof Error?v.message:"Publish failed")})}),(ke=e.querySelector("#ed-publish-review"))==null||ke.addEventListener("click",()=>{C.classList.add("hidden"),se().catch(v=>{r.onError(v instanceof Error?v.message:"Failed to prepare publish")})}),($e=e.querySelector("#ed-publish-menu-btn"))==null||$e.addEventListener("click",()=>{var x;const v=C.classList.toggle("hidden");(x=e.querySelector("#ed-publish-menu-btn"))==null||x.setAttribute("aria-expanded",v?"false":"true")});const be=v=>{var _,H;const x=v.target;!C.contains(x)&&!((_=e.querySelector("#ed-publish-menu-btn"))!=null&&_.contains(x))&&(C.classList.add("hidden"),(H=e.querySelector("#ed-publish-menu-btn"))==null||H.setAttribute("aria-expanded","false"))};document.addEventListener("click",be),(Pe=e.querySelector("#ed-view-md"))==null||Pe.addEventListener("click",()=>{T()}),(Ce=b.querySelector("#view-md-close"))==null||Ce.addEventListener("click",()=>{g()}),b.addEventListener("click",v=>{v.target===b&&g()}),(qe=b.querySelector("#view-md-copy"))==null||qe.addEventListener("click",()=>{navigator.clipboard.writeText(p()).catch(v=>{r.onError(v instanceof Error?v.message:"Copy failed")})}),(Te=e.querySelector("#publish-cancel"))==null||Te.addEventListener("click",()=>{q()}),$.addEventListener("click",v=>{v.target===$&&q()}),(De=e.querySelector("#publish-confirm"))==null||De.addEventListener("click",()=>{(async()=>{await L();const{result:v}=await de(n.id);q(),r.onPublished(v.path)})().catch(v=>{r.onError(v instanceof Error?v.message:"Publish failed")})});const we=()=>{d==null||d.destroy(),r.onClosed()};return(Me=e.querySelector("#ed-close"))==null||Me.addEventListener("click",we),(xe=e.querySelector("#ed-discard"))==null||xe.addEventListener("click",()=>{confirm("Discard this draft?")&&(d==null||d.destroy(),At(n.id).then(()=>r.onDeleted()).catch(v=>{r.onError(v instanceof Error?v.message:"Delete failed")}))}),P=v=>{v.key==="Escape"&&$.classList.contains("hidden")&&b.classList.contains("hidden")&&we()},document.addEventListener("keydown",P),{destroy:()=>{d==null||d.destroy(),document.removeEventListener("click",be),P&&document.removeEventListener("keydown",P),q(),g(),$.remove(),b.remove()}}}function lt(e,t){const n=(t==null?void 0:t.showDiscard)??!0;return`
133
+ `,e.appendChild(v);const T=e.querySelector("#ed-publish-menu");y.value=n.title;const k=an(t.railSlot,{slug:n.slug,type:n.type,status:n.status,tags:n.tags,related:n.related},l,()=>w());it(async()=>{const{mountVisualEditor:m}=await import("./visual-editor-DUVPRlY3.js");return{mountVisualEditor:m}},__vite__mapDeps([0,1,2,3])).then(({mountVisualEditor:m})=>{d=m(h,{initialMarkdown:n.body,docCandidates:l,onBodyChange:()=>w(),onError:r.onError})});let o=[];function p(){return(d==null?void 0:d.getMarkdownBody())??c}function s(){const m=k.getState();return{title:y.value,slug:m.slug,type:m.type,status:m.status,tags:m.tags,related:m.related,body:p()}}function a(m){b.textContent=m}async function u(){a("Saving…");const m=s();c=m.body,await Rt(n.id,m),a("Saved")}function w(){I&&clearTimeout(I),I=setTimeout(()=>{I=null,K=u().catch(m=>{a(""),r.onError(m instanceof Error?m.message:"Autosave failed")})},800)}async function P(){I&&(clearTimeout(I),I=null,K=u().catch(m=>{throw a(""),r.onError(m instanceof Error?m.message:"Autosave failed"),m})),K&&(await K,K=null)}y.addEventListener("input",()=>w()),y.addEventListener("change",()=>w());function M(){const m=e.querySelector("#publish-related"),x=e.querySelector("#publish-related-prompt"),_=e.querySelector("#publish-related-list"),H=k.getState();if(o=en(p(),H.related,l),o.length===0){m.classList.add("hidden");return}x.textContent=`Add ${o.length} body link(s) to related?`,_.innerHTML=o.map(ae=>{var xe;const kt=((xe=l.find($t=>$t.slug===ae))==null?void 0:xe.title)??ae;return`<li><code>${D(ae)}</code> — ${D(kt)}</li>`}).join(""),m.classList.remove("hidden")}function f(){var x;if(o.length===0)return;const m=k.getState();k.setRelated([...new Set([...m.related,...o])]),o=[],(x=e.querySelector("#publish-related"))==null||x.classList.add("hidden")}(we=e.querySelector("#publish-related-apply"))==null||we.addEventListener("click",()=>{f()}),(Se=e.querySelector("#publish-related-skip"))==null||Se.addEventListener("click",()=>{var m;o=[],(m=e.querySelector("#publish-related"))==null||m.classList.add("hidden")});let E=null,$=null;function C(){L.classList.add("hidden"),E&&(document.removeEventListener("keydown",E),E=null)}function S(){L.classList.remove("hidden"),E||(E=m=>{m.key==="Escape"&&C()},document.addEventListener("keydown",E))}function g(){v.classList.add("hidden")}function q(){const m=v.querySelector("#view-md-content");m.textContent=p(),v.classList.remove("hidden")}async function se(){await P(),S(),M();const m=e.querySelector("#publish-target"),x=e.querySelector("#publish-diff"),_=k.getState();m.textContent=`docs/.../${_.slug}.md`,x.textContent="Loading diff…";try{const H=await Ht(n.id);H.targetPath&&(m.textContent=H.targetPath),x.textContent=H.diff}catch(H){x.textContent=H instanceof Error?H.message:"Diff unavailable"}}async function Lt(){const m=e.querySelector("#ed-publish");m.setAttribute("aria-busy","true"),m.disabled=!0;try{await P();const{result:x}=await de(n.id);r.onPublished(x.path)}finally{m.removeAttribute("aria-busy"),m.disabled=!1}}(Ee=e.querySelector("#ed-publish"))==null||Ee.addEventListener("click",()=>{Lt().catch(m=>{r.onError(m instanceof Error?m.message:"Publish failed")})}),(Le=e.querySelector("#ed-publish-review"))==null||Le.addEventListener("click",()=>{T.classList.add("hidden"),se().catch(m=>{r.onError(m instanceof Error?m.message:"Failed to prepare publish")})}),(ke=e.querySelector("#ed-publish-menu-btn"))==null||ke.addEventListener("click",()=>{var x;const m=T.classList.toggle("hidden");(x=e.querySelector("#ed-publish-menu-btn"))==null||x.setAttribute("aria-expanded",m?"false":"true")});const ye=m=>{var _,H;const x=m.target;!T.contains(x)&&!((_=e.querySelector("#ed-publish-menu-btn"))!=null&&_.contains(x))&&(T.classList.add("hidden"),(H=e.querySelector("#ed-publish-menu-btn"))==null||H.setAttribute("aria-expanded","false"))};document.addEventListener("click",ye),($e=e.querySelector("#ed-view-md"))==null||$e.addEventListener("click",()=>{q()}),(Pe=v.querySelector("#view-md-close"))==null||Pe.addEventListener("click",()=>{g()}),v.addEventListener("click",m=>{m.target===v&&g()}),(Ce=v.querySelector("#view-md-copy"))==null||Ce.addEventListener("click",()=>{navigator.clipboard.writeText(p()).catch(m=>{r.onError(m instanceof Error?m.message:"Copy failed")})}),(Te=e.querySelector("#publish-cancel"))==null||Te.addEventListener("click",()=>{C()}),L.addEventListener("click",m=>{m.target===L&&C()}),(qe=e.querySelector("#publish-confirm"))==null||qe.addEventListener("click",()=>{(async()=>{await P();const{result:m}=await de(n.id);C(),r.onPublished(m.path)})().catch(m=>{r.onError(m instanceof Error?m.message:"Publish failed")})});const be=()=>{d==null||d.destroy(),r.onClosed()};return(De=e.querySelector("#ed-close"))==null||De.addEventListener("click",be),(Me=e.querySelector("#ed-discard"))==null||Me.addEventListener("click",()=>{confirm("Discard this draft?")&&(d==null||d.destroy(),At(n.id).then(()=>r.onDeleted()).catch(m=>{r.onError(m instanceof Error?m.message:"Delete failed")}))}),$=m=>{m.key==="Escape"&&L.classList.contains("hidden")&&v.classList.contains("hidden")&&be()},document.addEventListener("keydown",$),{destroy:()=>{d==null||d.destroy(),document.removeEventListener("click",ye),$&&document.removeEventListener("keydown",$),C(),g(),L.remove(),v.remove()}}}function lt(e,t){const n=(t==null?void 0:t.showDiscard)??!0;return`
134
134
  <div class="editor-action-bar">
135
135
  <span class="editing-badge" aria-hidden="true">Editing</span>
136
136
  <span id="ed-save-status" class="save-status" aria-live="polite"></span>
@@ -153,20 +153,20 @@ import{p as Pt,s as Ct,e as qt,g as Tt,a as Dt,l as G,b as Mt,c as xt,d as de,f
153
153
  ${n?'<button type="button" id="ed-discard" class="btn-ghost btn-sm btn-danger-text">Discard</button>':""}
154
154
  </div>
155
155
  </div>
156
- `}function Ie(e,t,n,r=[]){const i=ne(),l=fe(e,{rootClass:"workspace-main workspace-editor",breadcrumbs:[{label:"Knowledge"},{label:"Drafts"},{label:t.title||t.slug,current:!0}],titleHtml:'<input id="ed-title" class="title-input doc-title" type="text" placeholder="Document title" />',actionsHtml:lt(i),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:t.forked_from}),focusMode:i});return ge(e,i),ot(e,l,t,n,r)}function dn(e){if(!e)return null;if(e.startsWith("?slug=")||e.startsWith("/?slug=")){const t=e.includes("?")?e.slice(e.indexOf("?")):e,n=new URLSearchParams(t).get("slug");return(n==null?void 0:n.trim())||null}try{const n=new URL(e,"http://local").searchParams.get("slug");return(n==null?void 0:n.trim())||null}catch{return null}}function he(e){var t,n;return((n=(t=e.split("#")[0])==null?void 0:t.split("?")[0])==null?void 0:n.trim())??""}function dt(e){const t=e.replace(/\\/g,"/").replace(/^\/+/,"");return t?t.toLowerCase().endsWith(".md")?t:`${t}.md`:""}function cn(e,t){const n=he(t);if(!n||n.startsWith("http://")||n.startsWith("https://")||n.startsWith("mailto:")||n.startsWith("#"))return null;const r=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",i=n.replace(/\\/g,"/").split("/"),l=r?r.split("/"):[];for(const d of i)if(!(!d||d===".")){if(d===".."){if(l.length===0)return null;l.pop();continue}l.push(d)}return dt(l.join("/"))}function un(e){let t=he(e).replace(/\\/g,"/");return!t||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("mailto:")||t.startsWith("#")||(t.startsWith("/")&&(t=t.slice(1)),t.startsWith("docs/")&&(t=t.slice(5)),!t)?null:dt(t)}function pn(e,t){const n=t.get(e);if(n)return n;const r=e.toLowerCase();for(const[i,l]of t.entries())if(i.toLowerCase()===r)return l;return null}function fn(e,t,n){const r=dn(t);if(r){for(const l of n.values())if(l===r)return r;return null}const i=[cn(e,t),un(t)].filter(l=>!!l);for(const l of i){const d=pn(l,n);if(d)return d}return null}const gn=[".png",".jpg",".jpeg",".gif",".webp",".svg"];function We(e){const t=e.toLowerCase();return gn.some(n=>t.endsWith(n))}function hn(e,t){const n=he(t);if(!n||n.startsWith("http://")||n.startsWith("https://")||n.startsWith("mailto:")||n.startsWith("#")||n.startsWith("data:"))return null;let r=n.replace(/\\/g,"/");if(r.startsWith("/")&&(r=r.slice(1)),r.startsWith("docs/")?r=r.slice(5):r="",r&&!r.split("/").includes("..")&&We(r))return r;const i=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",l=n.replace(/\\/g,"/").split("/"),d=i?i.split("/"):[];for(const y of l)if(!(!y||y===".")){if(y===".."){if(d.length===0)return null;d.pop();continue}d.push(y)}const u=d.join("/");return u&&We(u)?u:null}function mn(e,t){const n=hn(e,t);return n?`/api/assets/${n.split("/").map(encodeURIComponent).join("/")}`:null}let _e=null;async function vn(e){const t=e.querySelectorAll("pre.mermaid");if(t.length===0)return;const n=document.documentElement.dataset.theme==="dark"?"dark":"default",r=await it(()=>import("./mermaid.core-CIyMeT5H.js").then(i=>i.ba),__vite__mapDeps([4,5,1]));_e!==n&&(r.default.initialize({startOnLoad:!1,theme:n,securityLevel:"loose"}),_e=n);try{await r.default.run({nodes:[...t]})}catch{for(const i of t)if(!i.closest(".mermaid-error")){const l=i.parentElement;l==null||l.classList.add("mermaid-error")}}}let Ue=!1,W=null;function O(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function yn(e){return e.replace(rt,(t,n,r)=>{const{display:i,slug:l}=st(n,r),d=encodeURIComponent(l);return`[${i}](#wikilink:${d})`})}function bn(){Ue||(et.use({gfm:!0,renderer:{code({text:e,lang:t}){return t==="mermaid"?`<div class="mermaid-wrapper"><pre class="mermaid">${O(e.trim())}</pre></div>
156
+ `}function Fe(e,t,n,r=[]){const i=ne(),l=pe(e,{rootClass:"workspace-main workspace-editor",breadcrumbs:[{label:"Knowledge"},{label:"Drafts"},{label:t.title||t.slug,current:!0}],titleHtml:'<input id="ed-title" class="title-input doc-title" type="text" placeholder="Document title" />',actionsHtml:lt(i),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:t.forked_from}),focusMode:i});return fe(e,i),ot(e,l,t,n,r)}function dn(e){if(!e)return null;if(e.startsWith("?slug=")||e.startsWith("/?slug=")){const t=e.includes("?")?e.slice(e.indexOf("?")):e,n=new URLSearchParams(t).get("slug");return(n==null?void 0:n.trim())||null}try{const n=new URL(e,"http://local").searchParams.get("slug");return(n==null?void 0:n.trim())||null}catch{return null}}function ge(e){var t,n;return((n=(t=e.split("#")[0])==null?void 0:t.split("?")[0])==null?void 0:n.trim())??""}function dt(e){const t=e.replace(/\\/g,"/").replace(/^\/+/,"");return t?t.toLowerCase().endsWith(".md")?t:`${t}.md`:""}function cn(e,t){const n=ge(t);if(!n||n.startsWith("http://")||n.startsWith("https://")||n.startsWith("mailto:")||n.startsWith("#"))return null;const r=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",i=n.replace(/\\/g,"/").split("/"),l=r?r.split("/"):[];for(const d of i)if(!(!d||d===".")){if(d===".."){if(l.length===0)return null;l.pop();continue}l.push(d)}return dt(l.join("/"))}function un(e){let t=ge(e).replace(/\\/g,"/");return!t||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("mailto:")||t.startsWith("#")||(t.startsWith("/")&&(t=t.slice(1)),t.startsWith("docs/")&&(t=t.slice(5)),!t)?null:dt(t)}function pn(e,t){const n=t.get(e);if(n)return n;const r=e.toLowerCase();for(const[i,l]of t.entries())if(i.toLowerCase()===r)return l;return null}function fn(e,t,n){const r=dn(t);if(r){for(const l of n.values())if(l===r)return r;return null}const i=[cn(e,t),un(t)].filter(l=>!!l);for(const l of i){const d=pn(l,n);if(d)return d}return null}const gn=[".png",".jpg",".jpeg",".gif",".webp",".svg"];function Ie(e){const t=e.toLowerCase();return gn.some(n=>t.endsWith(n))}function hn(e,t){const n=ge(t);if(!n||n.startsWith("http://")||n.startsWith("https://")||n.startsWith("mailto:")||n.startsWith("#")||n.startsWith("data:"))return null;let r=n.replace(/\\/g,"/");if(r.startsWith("/")&&(r=r.slice(1)),r.startsWith("docs/")?r=r.slice(5):r="",r&&!r.split("/").includes("..")&&Ie(r))return r;const i=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"",l=n.replace(/\\/g,"/").split("/"),d=i?i.split("/"):[];for(const y of l)if(!(!y||y===".")){if(y===".."){if(d.length===0)return null;d.pop();continue}d.push(y)}const c=d.join("/");return c&&Ie(c)?c:null}function mn(e,t){const n=hn(e,t);return n?`/api/assets/${n.split("/").map(encodeURIComponent).join("/")}`:null}let We=null;async function vn(e){const t=e.querySelectorAll("pre.mermaid");if(t.length===0)return;const n=document.documentElement.dataset.theme==="dark"?"dark":"default",r=await it(()=>import("./mermaid.core-BZZdRyuR.js").then(i=>i.ba),__vite__mapDeps([4,5,1]));We!==n&&(r.default.initialize({startOnLoad:!1,theme:n,securityLevel:"loose"}),We=n);try{await r.default.run({nodes:[...t]})}catch{for(const i of t)if(!i.closest(".mermaid-error")){const l=i.parentElement;l==null||l.classList.add("mermaid-error")}}}let _e=!1,W=null;function O(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function yn(e){return e.replace(rt,(t,n,r)=>{const{display:i,slug:l}=st(n,r),d=encodeURIComponent(l);return`[${i}](#wikilink:${d})`})}function bn(){_e||(et.use({gfm:!0,renderer:{code({text:e,lang:t}){return t==="mermaid"?`<div class="mermaid-wrapper"><pre class="mermaid">${O(e.trim())}</pre></div>
157
157
  `:!1},list(e){if(!e.items.some(l=>l.task))return!1;const n=e.ordered?"ol":"ul",r=e.ordered&&e.start!==1&&e.start!=null?` start="${e.start}"`:"";let i="";for(const l of e.items)i+=this.listitem(l);return`<${n} class="contains-task-list"${r}>
158
158
  ${i}</${n}>
159
159
  `},listitem(e){if(!e.task)return!1;const t=`<input type="checkbox" class="task-list-item-checkbox"${e.checked?" checked":""} disabled>`,n=this.parser.parse(e.tokens,!!e.loose).trim();return`<li class="task-list-item"><label class="task-list-item-label">${t}<span class="task-list-item-content">${n}</span></label></li>
160
- `},image({href:e,text:t,title:n}){if(!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:"))return!1;if(W){const r=mn(W.docRelativePath,e);if(r){const i=O(t||n||"");return`<img src="${O(r)}" alt="${i}" loading="lazy" class="markdown-image">`}}return!1},link({href:e,text:t}){if(e!=null&&e.startsWith("#wikilink:")){const n=decodeURIComponent(e.slice(10));return`<a href="#" class="wikilink" data-slug="${O(n)}">${t}</a>`}if(W&&e){const n=fn(W.docRelativePath,e,W.slugByRelative);if(n)return`<a href="#" class="wikilink" data-slug="${O(n)}">${t}</a>`}return e!=null&&e.startsWith("http://")||e!=null&&e.startsWith("https://")?`<a href="${O(e)}" target="_blank" rel="noopener noreferrer">${t}</a>`:e!=null&&e.startsWith("mailto:")||e!=null&&e.startsWith("#")?!1:e?`<a href="#" class="md-link-unresolved" title="Link not in docs index">${t}</a>`:!1}}}),Ue=!0)}function wn(e,t){bn(),W=t??null;try{return et.parse(yn(e),{async:!1})}finally{W=null}}const me="slug",ct="path",Sn="draft";function ve(){const e=new URLSearchParams(window.location.search).get(me);return e!=null&&e.trim()?e.trim():null}function En(){const e=new URLSearchParams(window.location.search).get(ct);return e!=null&&e.trim()?e.trim().replace(/\\/g,"/"):null}function Ln(){const e=new URLSearchParams(window.location.search).get(Sn);return e!=null&&e.trim()?e.trim():null}function kn(){const e=new URL(window.location.href),t=e.pathname;if(t==="/"||t==="/index.html")return;const n=ve();e.pathname="/",history.replaceState(n?{slug:n}:{},"",e)}function ut(){const e=new URL(window.location.href);return e.pathname="/",e}function $n(e){const t=ut();return t.search="",t.searchParams.set(me,e),t.toString()}function Pn(e,t="push"){const n=ut();n.searchParams.delete(ct),n.searchParams.set(me,e);const r={slug:e};t==="replace"?history.replaceState(r,"",n):history.pushState(r,"",n)}function Cn(e){const t=()=>{e(ve())};return window.addEventListener("popstate",t),()=>window.removeEventListener("popstate",t)}function qn(e,t){if(t==="json")try{const n=JSON.parse(e);return JSON.stringify(n,null,2)}catch{return e}return e}function Tn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Dn(e,t){const n=qn(e,t);return`<pre class="structured-preview ${t==="json"?"structured-preview--json":"structured-preview--yaml"}"><code>${Tn(n)}</code></pre>`}let V=null;function re(){V==null||V.destroy(),V=null}function Mn(e,t){const n=typeof t.status=="string"?t.status:"",r=typeof t.type=="string"?t.type:"",i=typeof t.domain=="string"?t.domain:"",l=Array.isArray(t.tags)?t.tags.filter(y=>typeof y=="string"):[],d=Array.isArray(t.related)?t.related.filter(y=>typeof y=="string"):[],u=e.contentKind??"markdown";return`
160
+ `},image({href:e,text:t,title:n}){if(!e||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:"))return!1;if(W){const r=mn(W.docRelativePath,e);if(r){const i=O(t||n||"");return`<img src="${O(r)}" alt="${i}" loading="lazy" class="markdown-image">`}}return!1},link({href:e,text:t}){if(e!=null&&e.startsWith("#wikilink:")){const n=decodeURIComponent(e.slice(10));return`<a href="#" class="wikilink" data-slug="${O(n)}">${t}</a>`}if(W&&e){const n=fn(W.docRelativePath,e,W.slugByRelative);if(n)return`<a href="#" class="wikilink" data-slug="${O(n)}">${t}</a>`}return e!=null&&e.startsWith("http://")||e!=null&&e.startsWith("https://")?`<a href="${O(e)}" target="_blank" rel="noopener noreferrer">${t}</a>`:e!=null&&e.startsWith("mailto:")||e!=null&&e.startsWith("#")?!1:e?`<a href="#" class="md-link-unresolved" title="Link not in docs index">${t}</a>`:!1}}}),_e=!0)}function wn(e,t){bn(),W=t??null;try{return et.parse(yn(e),{async:!1})}finally{W=null}}const he="slug",ct="path",Sn="draft";function me(){const e=new URLSearchParams(window.location.search).get(he);return e!=null&&e.trim()?e.trim():null}function En(){const e=new URLSearchParams(window.location.search).get(ct);return e!=null&&e.trim()?e.trim().replace(/\\/g,"/"):null}function Ln(){const e=new URLSearchParams(window.location.search).get(Sn);return e!=null&&e.trim()?e.trim():null}function kn(){const e=new URL(window.location.href),t=e.pathname;if(t==="/"||t==="/index.html")return;const n=me();e.pathname="/",history.replaceState(n?{slug:n}:{},"",e)}function ut(){const e=new URL(window.location.href);return e.pathname="/",e}function $n(e){const t=ut();return t.search="",t.searchParams.set(he,e),t.toString()}function Pn(e,t="push"){const n=ut();n.searchParams.delete(ct),n.searchParams.set(he,e);const r={slug:e};t==="replace"?history.replaceState(r,"",n):history.pushState(r,"",n)}function Cn(e){const t=()=>{e(me())};return window.addEventListener("popstate",t),()=>window.removeEventListener("popstate",t)}function Tn(e,t){if(t==="json")try{const n=JSON.parse(e);return JSON.stringify(n,null,2)}catch{return e}return e}function qn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Dn(e,t){const n=Tn(e,t);return`<pre class="structured-preview ${t==="json"?"structured-preview--json":"structured-preview--yaml"}"><code>${qn(n)}</code></pre>`}let V=null;function re(){V==null||V.destroy(),V=null}function Mn(e,t){const n=typeof t.status=="string"?t.status:"",r=typeof t.type=="string"?t.type:"",i=typeof t.domain=="string"?t.domain:"",l=Array.isArray(t.tags)?t.tags.filter(y=>typeof y=="string"):[],d=Array.isArray(t.related)?t.related.filter(y=>typeof y=="string"):[],c=e.contentKind??"markdown";return`
161
161
  <h2 class="page-info-title">Page info</h2>
162
162
  <dl class="info-list">
163
- <dt>Status</dt><dd><span class="status-chip status-${M(n)}">${M(n)}</span></dd>
164
- <dt>Type</dt><dd>${M(r)}</dd>
165
- ${i?`<dt>Domain</dt><dd>${M(i)}</dd>`:""}
166
- <dt>Format</dt><dd>${M(u)}</dd>
167
- ${l.length>0?`<dt>Tags</dt><dd>${l.map(y=>`<span class="tag-chip">${M(y)}</span>`).join(" ")}</dd>`:""}
163
+ <dt>Status</dt><dd><span class="status-chip status-${D(n)}">${D(n)}</span></dd>
164
+ <dt>Type</dt><dd>${D(r)}</dd>
165
+ ${i?`<dt>Domain</dt><dd>${D(i)}</dd>`:""}
166
+ <dt>Format</dt><dd>${D(c)}</dd>
167
+ ${l.length>0?`<dt>Tags</dt><dd>${l.map(y=>`<span class="tag-chip">${D(y)}</span>`).join(" ")}</dd>`:""}
168
168
  </dl>
169
- ${d.length>0?`<div class="info-block"><div class="info-block-label">Related</div>${d.map(y=>`<button type="button" class="related-chip" data-slug="${M(y)}">${M(y)}</button>`).join("")}</div>`:""}
169
+ ${d.length>0?`<div class="info-block"><div class="info-block-label">Related</div>${d.map(y=>`<button type="button" class="related-chip" data-slug="${D(y)}">${D(y)}</button>`).join("")}</div>`:""}
170
170
  <div class="info-tabs tabs">
171
171
  <button class="tab active" data-tab="frontmatter">Frontmatter</button>
172
172
  <button class="tab" data-tab="agent">Agent JSON</button>
@@ -174,9 +174,9 @@ ${i}</${n}>
174
174
  <div id="tab-frontmatter" class="tab-panel active"></div>
175
175
  <div id="tab-agent" class="tab-panel"></div>
176
176
  <footer class="page-info-footer">
177
- <code id="doc-path">${M(e.path??"")}</code>
177
+ <code id="doc-path">${D(e.path??"")}</code>
178
178
  </footer>
179
- `}function xn(e){e.querySelectorAll(".info-tabs .tab").forEach(t=>{t.addEventListener("click",()=>{var r;const n=t.dataset.tab;e.querySelectorAll(".info-tabs .tab").forEach(i=>i.classList.remove("active")),e.querySelectorAll(".page-info .tab-panel").forEach(i=>i.classList.remove("active")),t.classList.add("active"),(r=e.querySelector(`#tab-${n}`))==null||r.classList.add("active")})})}function Oe(e){e.querySelectorAll(".related-chip").forEach(t=>{t.addEventListener("click",()=>{const n=t.dataset.slug;n&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:n}}))})})}function pt(e,t,n){return[{label:"Knowledge",crumbId:"root"},{label:pe(n),crumbId:"catalog"},{label:t,current:!0}]}function ft(e,t,n,r){re();const i=t.frontmatter??{},l=typeof i.title=="string"?i.title:t.slug??"",d=typeof i.type=="string"?i.type:"",u=ne(),y=fe(e,{rootClass:"workspace-main workspace-editor workspace-page",breadcrumbs:pt(t,l,d),titleHtml:'<input id="ed-title" class="title-input doc-title" type="text" placeholder="Document title" />',actionsHtml:lt(u,{showDiscard:!0}),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:n.forked_from}),focusMode:u});ge(e,u),V=ot(e,y,n,{onPublished:w=>{(async()=>{var h;if(await r.onPublished(w),(h=r.onDraftsChanged)==null||h.call(r),t.slug){const $=await r.onReloadDoc(t.slug);B(e,$,r)}})()},onClosed:()=>{(async()=>{var w;if((w=r.onDraftsChanged)==null||w.call(r),t.slug)try{const h=await r.onReloadDoc(t.slug);B(e,h,r)}catch(h){r.onError(h instanceof Error?h.message:"Failed to reload page")}})()},onDeleted:()=>{var w;(w=r.onDraftsChanged)==null||w.call(r),t.slug&&r.onReloadDoc(t.slug).then(h=>B(e,h,r),()=>B(e,t,r))},onError:r.onError},r.docIndex)}function B(e,t,n){var p,s,o;re();const r=t.frontmatter??{},i=typeof r.title=="string"?r.title:t.slug??"",l=typeof r.type=="string"?r.type:"",d=ne(),u=t.contentKind??"markdown",y=u==="json"||u==="yaml",w=fe(e,{rootClass:"workspace-main workspace-page",breadcrumbs:pt(t,i,l),titleHtml:`<h1 class="doc-title reader-title${y?"":" reader-title--editable"}" tabindex="0">${M(i)}</h1>`,actionsHtml:`
179
+ `}function xn(e){e.querySelectorAll(".info-tabs .tab").forEach(t=>{t.addEventListener("click",()=>{var r;const n=t.dataset.tab;e.querySelectorAll(".info-tabs .tab").forEach(i=>i.classList.remove("active")),e.querySelectorAll(".page-info .tab-panel").forEach(i=>i.classList.remove("active")),t.classList.add("active"),(r=e.querySelector(`#tab-${n}`))==null||r.classList.add("active")})})}function Ue(e){e.querySelectorAll(".related-chip").forEach(t=>{t.addEventListener("click",()=>{const n=t.dataset.slug;n&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:n}}))})})}function pt(e,t,n){return[{label:"Knowledge",crumbId:"root"},{label:ue(n),crumbId:"catalog"},{label:t,current:!0}]}function ft(e,t,n,r){re();const i=t.frontmatter??{},l=typeof i.title=="string"?i.title:t.slug??"",d=typeof i.type=="string"?i.type:"",c=ne(),y=pe(e,{rootClass:"workspace-main workspace-editor workspace-page",breadcrumbs:pt(t,l,d),titleHtml:'<input id="ed-title" class="title-input doc-title" type="text" placeholder="Document title" />',actionsHtml:lt(c,{showDiscard:!0}),mainHtml:'<div id="ed-visual-canvas"></div>',railHtml:at({forkedFrom:n.forked_from}),focusMode:c});fe(e,c),V=ot(e,y,n,{onPublished:b=>{(async()=>{var h;if(await r.onPublished(b),(h=r.onDraftsChanged)==null||h.call(r),t.slug){const L=await r.onReloadDoc(t.slug);B(e,L,r)}})()},onClosed:()=>{(async()=>{var b;if((b=r.onDraftsChanged)==null||b.call(r),t.slug)try{const h=await r.onReloadDoc(t.slug);B(e,h,r)}catch(h){r.onError(h instanceof Error?h.message:"Failed to reload page")}})()},onDeleted:()=>{var b;(b=r.onDraftsChanged)==null||b.call(r),t.slug&&r.onReloadDoc(t.slug).then(h=>B(e,h,r),()=>B(e,t,r))},onError:r.onError},r.docIndex)}function B(e,t,n){var k,o,p;re();const r=t.frontmatter??{},i=typeof r.title=="string"?r.title:t.slug??"",l=typeof r.type=="string"?r.type:"",d=ne(),c=t.contentKind??"markdown",y=c==="json"||c==="yaml",b=pe(e,{rootClass:"workspace-main workspace-page",breadcrumbs:pt(t,i,l),titleHtml:`<h1 class="doc-title reader-title">${D(i)}</h1>`,actionsHtml:`
180
180
  <button type="button" id="toggle-focus" class="btn-ghost" aria-pressed="${d}">
181
181
  ${d?"Show info":"Hide info"}
182
182
  </button>
@@ -184,31 +184,30 @@ ${i}</${n}>
184
184
  <button type="button" id="copy-link" class="btn-ghost">Copy link</button>
185
185
  <button type="button" id="copy-path" class="btn-ghost">Copy path</button>
186
186
  `,mainHtml:`
187
- <div class="reader-body${y?"":" reader-body--editable"}">
187
+ <div class="reader-body">
188
188
  <div id="tab-preview" class="markdown-preview reader-preview"></div>
189
- <p class="reader-edit-hint${y?" hidden":""}">Click anywhere to edit</p>
190
189
  <section id="reader-backlinks" class="reader-backlinks hidden" aria-label="Backlinks"></section>
191
190
  </div>
192
- `,railHtml:Mn(t,r),focusMode:d});ge(e,d),Xt(e,{root:()=>{var c;return(c=n.onNavigateRoot)==null?void 0:c.call(n)},catalog:()=>{var c;return(c=n.onNavigateCatalog)==null?void 0:c.call(n)}});const h=w.bodySlot.querySelector("#tab-preview");if(y)h.innerHTML=Dn(t.body??"",u);else{const c=n.docRelativePath&&n.slugByRelative?{docRelativePath:n.docRelativePath,slugByRelative:n.slugByRelative}:void 0;h.innerHTML=wn(t.body??"",c),vn(h),h.querySelectorAll("a.wikilink").forEach(m=>{m.addEventListener("click",L=>{L.preventDefault();const D=m.dataset.slug;D&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:D}}))})}),h.querySelectorAll("a.md-link-unresolved").forEach(m=>{m.addEventListener("click",L=>{L.preventDefault()})})}const $=w.railSlot.querySelector("#tab-frontmatter");$.innerHTML='<pre class="frontmatter-yaml"></pre>',$.querySelector("pre").textContent=JSON.stringify(r,null,2);const b=w.railSlot.querySelector("#tab-agent");b.innerHTML='<pre class="agent-json"></pre>',b.querySelector("pre").textContent=JSON.stringify(t.agentShape,null,2),xn(e),Oe(e),(p=e.querySelector("#copy-path"))==null||p.addEventListener("click",()=>{t.path&&navigator.clipboard.writeText(t.path)}),(s=e.querySelector("#copy-link"))==null||s.addEventListener("click",()=>{var c;t.slug&&(navigator.clipboard.writeText($n(t.slug)),(c=n.onCopyLink)==null||c.call(n))});const C=()=>{if(!t.slug||y)return;const c=w.bodySlot;c.innerHTML='<p class="reader-loading">Opening editor…</p>',Ze(t.slug).then(({draft:m})=>{var L;(L=n.onDraftsChanged)==null||L.call(n),ft(e,t,m,n)}).catch(m=>{n.onError(m instanceof Error?m.message:"Edit failed"),B(e,t,n)})};(o=e.querySelector("#edit-page"))==null||o.addEventListener("click",C);const k=e.querySelector(".reader-title--editable");k==null||k.addEventListener("click",C),k==null||k.addEventListener("keydown",c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),C())});const a=e.querySelector(".reader-body--editable");a==null||a.addEventListener("click",c=>{c.target.closest("a, button, .reader-backlinks")||C()}),t.slug&&!y&&Nt(t.slug).then(({backlinks:c})=>{const m=w.bodySlot.querySelector("#reader-backlinks");!m||c.length===0||(m.classList.remove("hidden"),m.innerHTML=`
191
+ `,railHtml:Mn(t,r),focusMode:d});fe(e,d),Xt(e,{root:()=>{var s;return(s=n.onNavigateRoot)==null?void 0:s.call(n)},catalog:()=>{var s;return(s=n.onNavigateCatalog)==null?void 0:s.call(n)}});const h=b.bodySlot.querySelector("#tab-preview");if(y)h.innerHTML=Dn(t.body??"",c);else{const s=n.docRelativePath&&n.slugByRelative?{docRelativePath:n.docRelativePath,slugByRelative:n.slugByRelative}:void 0;h.innerHTML=wn(t.body??"",s),vn(h),h.querySelectorAll("a.wikilink").forEach(a=>{a.addEventListener("click",u=>{u.preventDefault();const w=a.dataset.slug;w&&e.dispatchEvent(new CustomEvent("navigate-slug",{detail:{slug:w}}))})}),h.querySelectorAll("a.md-link-unresolved").forEach(a=>{a.addEventListener("click",u=>{u.preventDefault()})})}const L=b.railSlot.querySelector("#tab-frontmatter");L.innerHTML='<pre class="frontmatter-yaml"></pre>',L.querySelector("pre").textContent=JSON.stringify(r,null,2);const v=b.railSlot.querySelector("#tab-agent");v.innerHTML='<pre class="agent-json"></pre>',v.querySelector("pre").textContent=JSON.stringify(t.agentShape,null,2),xn(e),Ue(e),(k=e.querySelector("#copy-path"))==null||k.addEventListener("click",()=>{t.path&&navigator.clipboard.writeText(t.path)}),(o=e.querySelector("#copy-link"))==null||o.addEventListener("click",()=>{var s;t.slug&&(navigator.clipboard.writeText($n(t.slug)),(s=n.onCopyLink)==null||s.call(n))});const T=()=>{if(!t.slug||y)return;const s=b.bodySlot;s.innerHTML='<p class="reader-loading">Opening editor…</p>',Ze(t.slug).then(({draft:a})=>{var u;(u=n.onDraftsChanged)==null||u.call(n),ft(e,t,a,n)}).catch(a=>{n.onError(a instanceof Error?a.message:"Edit failed"),B(e,t,n)})};(p=e.querySelector("#edit-page"))==null||p.addEventListener("click",T),t.slug&&!y&&Nt(t.slug).then(({backlinks:s})=>{const a=b.bodySlot.querySelector("#reader-backlinks");!a||s.length===0||(a.classList.remove("hidden"),a.innerHTML=`
193
192
  <h2 class="reader-backlinks-title">Backlinks</h2>
194
193
  <div class="reader-backlinks-list">
195
- ${c.map(L=>`<button type="button" class="related-chip" data-slug="${M(L.slug)}">${M(L.title)} <span class="backlink-kind">${M(L.kind)}</span></button>`).join("")}
194
+ ${s.map(u=>`<button type="button" class="related-chip" data-slug="${D(u.slug)}">${D(u.title)} <span class="backlink-kind">${D(u.kind)}</span></button>`).join("")}
196
195
  </div>
197
- `,Oe(e))}).catch(()=>{})}function N(e,t,n){if(re(),!t||!t.found){e.className="workspace-main",e.innerHTML=`
196
+ `,Ue(e))}).catch(()=>{})}function N(e,t,n){if(re(),!t||!t.found){e.className="workspace-main",e.innerHTML=`
198
197
  <div class="workspace-empty">
199
198
  <h1>Knowledge</h1>
200
199
  <p class="placeholder">Select a page from the tree or use the ⋯ menu to create one.</p>
201
200
  </div>
202
- `;return}B(e,t,n)}function Be(e,t,n,r){ft(e,t,n,r)}function je(e){const t=[];function n(r){for(const i of r.children)i.kind==="page"?t.push(i.slug):n(i)}return n(e),t}function An(e){if(!(e instanceof HTMLElement))return!1;const t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"?!0:e.isContentEditable}function Rn(e){const t=n=>{if(n.metaKey||n.ctrlKey||n.altKey)return;const r=An(n.target);if(n.key==="/"&&!r){n.preventDefault(),e.onFocusSearch();return}if(!r)switch(n.key){case"j":n.preventDefault(),e.onNext();break;case"k":n.preventDefault(),e.onPrev();break;case"e":e.onEdit();break}};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}const gt="http://www.w3.org/2000/svg",te={folder:"M1.75 5.25A1 1 0 0 1 2.75 4.25h3.85L8 5.65h5.25A1 1 0 0 1 14.25 6.65v5.7a1 1 0 0 1-1 1H2.75a1 1 0 0 1-1-1V5.25z",page:"M4.75 2.25A1 1 0 0 0 3.75 3.25v9.5a1 1 0 0 0 1 1h6.5a1 1 0 0 0 1-1V5.35a1 1 0 0 0-.29-.71L9.11 2.54A1 1 0 0 0 8.46 2.25H4.75zm4.35 1.79L11.75 5.5H9.1V4.04z",json:"M5.1 4.5c-.55 0-1 .45-1 1v1.2c0 .45-.2.85-.5 1.15.3.3.5.7.5 1.15v1.2c0 .55.45 1 1 1M10.9 4.5c.55 0 1 .45 1 1v1.2c0 .45.2.85.5 1.15-.3.3-.5.7-.5 1.15v1.2c0 .55-.45 1-1 1",yaml:"M3.75 5h8.5M3.75 8h8.5M3.75 11h5.5"};function Hn(e){if(e.startsWith("folder:"))return"tree-icon--type-folder-catalog";const t=e.replace(/[^a-z0-9-]/gi,"");return t?`tree-icon--type-${t}`:"tree-icon--type-default"}function Q(e,t){return`<span class="tree-icon ${e}" aria-hidden="true">${t}</span>`}function ce(e,t){const n=(t==null?void 0:t.fill)!==!1?"currentColor":"none",r=t!=null&&t.stroke?"currentColor":"none",i=t!=null&&t.stroke?"1.15":"0",l=t!=null&&t.stroke?"round":"butt";return`<svg viewBox="0 0 16 16" xmlns="${gt}" fill="none" aria-hidden="true"><path d="${e}" fill="${n}" stroke="${r}" stroke-width="${i}" stroke-linecap="${l}" stroke-linejoin="round"/></svg>`}function Nn(){return`<svg viewBox="0 0 16 16" xmlns="${gt}" fill="none" aria-hidden="true"><path d="${te.yaml}" stroke="currentColor" stroke-width="1.15" stroke-linecap="round"/></svg>`}function Fn(){return Q("tree-icon--folder",ce(te.folder))}function ue(e,t="markdown"){return t==="json"?Q("tree-icon--page tree-icon--structured",ce(te.json,{fill:!1,stroke:!0})):t==="yaml"?Q("tree-icon--page tree-icon--structured",Nn()):Q(`tree-icon--page ${Hn(e)}`,ce(te.page))}function In(e){return e.indexPageSlug?ue(e.indexPageType??"wiki-page",e.indexPageContentKind??"markdown"):Fn()}function ye(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Wn(e){return ye(e)}function ht(e,t){var d;const n=document.createElement("div");n.className="modal",n.innerHTML=`
201
+ `;return}B(e,t,n)}function Oe(e,t,n,r){ft(e,t,n,r)}function Be(e){const t=[];function n(r){for(const i of r.children)i.kind==="page"?t.push(i.slug):n(i)}return n(e),t}function An(e){if(!(e instanceof HTMLElement))return!1;const t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"?!0:e.isContentEditable}function Rn(e){const t=n=>{if(n.metaKey||n.ctrlKey||n.altKey)return;const r=An(n.target);if(n.key==="/"&&!r){n.preventDefault(),e.onFocusSearch();return}if(!r)switch(n.key){case"j":n.preventDefault(),e.onNext();break;case"k":n.preventDefault(),e.onPrev();break;case"e":e.onEdit();break}};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)}const gt="http://www.w3.org/2000/svg",te={folder:"M1.75 5.25A1 1 0 0 1 2.75 4.25h3.85L8 5.65h5.25A1 1 0 0 1 14.25 6.65v5.7a1 1 0 0 1-1 1H2.75a1 1 0 0 1-1-1V5.25z",page:"M4.75 2.25A1 1 0 0 0 3.75 3.25v9.5a1 1 0 0 0 1 1h6.5a1 1 0 0 0 1-1V5.35a1 1 0 0 0-.29-.71L9.11 2.54A1 1 0 0 0 8.46 2.25H4.75zm4.35 1.79L11.75 5.5H9.1V4.04z",json:"M5.1 4.5c-.55 0-1 .45-1 1v1.2c0 .45-.2.85-.5 1.15.3.3.5.7.5 1.15v1.2c0 .55.45 1 1 1M10.9 4.5c.55 0 1 .45 1 1v1.2c0 .45.2.85.5 1.15-.3.3-.5.7-.5 1.15v1.2c0 .55-.45 1-1 1",yaml:"M3.75 5h8.5M3.75 8h8.5M3.75 11h5.5"};function Hn(e){if(e.startsWith("folder:"))return"tree-icon--type-folder-catalog";const t=e.replace(/[^a-z0-9-]/gi,"");return t?`tree-icon--type-${t}`:"tree-icon--type-default"}function Q(e,t){return`<span class="tree-icon ${e}" aria-hidden="true">${t}</span>`}function ce(e,t){const n=(t==null?void 0:t.fill)!==!1?"currentColor":"none",r=t!=null&&t.stroke?"currentColor":"none",i=t!=null&&t.stroke?"1.15":"0",l=t!=null&&t.stroke?"round":"butt";return`<svg viewBox="0 0 16 16" xmlns="${gt}" fill="none" aria-hidden="true"><path d="${e}" fill="${n}" stroke="${r}" stroke-width="${i}" stroke-linecap="${l}" stroke-linejoin="round"/></svg>`}function Nn(){return`<svg viewBox="0 0 16 16" xmlns="${gt}" fill="none" aria-hidden="true"><path d="${te.yaml}" stroke="currentColor" stroke-width="1.15" stroke-linecap="round"/></svg>`}function Fn(){return Q("tree-icon--folder",ce(te.folder))}function je(e,t="markdown"){return t==="json"?Q("tree-icon--page tree-icon--structured",ce(te.json,{fill:!1,stroke:!0})):t==="yaml"?Q("tree-icon--page tree-icon--structured",Nn()):Q(`tree-icon--page ${Hn(e)}`,ce(te.page))}function In(e){return Fn()}function ve(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Wn(e){return ve(e)}function ht(e,t){var d;const n=document.createElement("div");n.className="modal",n.innerHTML=`
203
202
  <div class="modal-card tree-page-modal" role="dialog" aria-modal="true">
204
- <h2 class="modal-title">${ye(e)}</h2>
203
+ <h2 class="modal-title">${ve(e)}</h2>
205
204
  ${t}
206
205
  <div class="modal-actions">
207
206
  <button type="button" class="btn-ghost" data-action="cancel">Отмена</button>
208
207
  <button type="button" class="btn-primary" data-action="create">Создать</button>
209
208
  </div>
210
209
  </div>
211
- `;const r=()=>{n.remove()};n.querySelector(".modal-card").addEventListener("click",u=>{u.stopPropagation()}),(d=n.querySelector('[data-action="cancel"]'))==null||d.addEventListener("click",r),n.addEventListener("click",u=>{u.target===n&&r()});const l=n.querySelector("#tree-page-name");return l.focus(),document.body.appendChild(n),{backdrop:n,nameInput:l,close:r}}function mt(e,t,n,r,i){var d;const l=()=>{const u=t.value.trim();if(!u){t.focus();return}i&&!i()||(n(),r(u))};(d=e.querySelector('[data-action="create"]'))==null||d.addEventListener("click",l),t.addEventListener("keydown",u=>{u.key==="Enter"&&(u.preventDefault(),l()),u.key==="Escape"&&n()})}function _n(e){const t=`
210
+ `;const r=()=>{n.remove()};n.querySelector(".modal-card").addEventListener("click",c=>{c.stopPropagation()}),(d=n.querySelector('[data-action="cancel"]'))==null||d.addEventListener("click",r),n.addEventListener("click",c=>{c.target===n&&r()});const l=n.querySelector("#tree-page-name");return l.focus(),document.body.appendChild(n),{backdrop:n,nameInput:l,close:r}}function mt(e,t,n,r,i){var d;const l=()=>{const c=t.value.trim();if(!c){t.focus();return}i&&!i()||(n(),r(c))};(d=e.querySelector('[data-action="create"]'))==null||d.addEventListener("click",l),t.addEventListener("keydown",c=>{c.key==="Enter"&&(c.preventDefault(),l()),c.key==="Escape"&&n()})}function _n(e){const t=`
212
211
  <label class="modal-field">
213
212
  <span class="modal-label">Имя (без .md)</span>
214
213
  <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
@@ -221,22 +220,22 @@ ${i}</${n}>
221
220
  <div class="modal-field">
222
221
  <span class="modal-label" id="tree-template-label">Шаблон</span>
223
222
  <div class="tree-template-list" role="listbox" aria-labelledby="tree-template-label">
224
- ${e.map((w,h)=>`
223
+ ${e.map((b,h)=>`
225
224
  <button
226
225
  type="button"
227
226
  class="tree-template-item${h===0?" is-selected":""}"
228
227
  role="option"
229
228
  aria-selected="${h===0?"true":"false"}"
230
- data-template-id="${Wn(w.id)}"
231
- >${ye(w.label)}</button>`).join("")}
229
+ data-template-id="${Wn(b.id)}"
230
+ >${ve(b.label)}</button>`).join("")}
232
231
  </div>
233
232
  </div>
234
- `,{backdrop:r,nameInput:i,close:l}=ht("Новый файл из шаблона",n),d=r.querySelector(".tree-template-list");let u=((y=e[0])==null?void 0:y.id)??"";d.addEventListener("click",w=>{const h=w.target.closest(".tree-template-item");h!=null&&h.dataset.templateId&&(u=h.dataset.templateId,d.querySelectorAll(".tree-template-item").forEach($=>{const b=$===h;$.classList.toggle("is-selected",b),$.setAttribute("aria-selected",String(b))}))}),mt(r,i,l,w=>{u&&t(w,u)},()=>!!u)}function On(e){if(e.childFolderPath)return e.childFolderPath;const t=e.relativePath.replace(/\\/g,"/");if(t==="README.md")return"";const n=t.lastIndexOf("/"),r=n===-1?t:t.slice(n+1),i=n===-1?"":t.slice(0,n);if(r.toLowerCase()==="readme.md")return i;const l=r.replace(/\.(md|ya?ml|json)$/i,"");return i?`${i}/${l}`:l}function Bn(e){if(e.childFolderPath)return!1;const t=e.relativePath.replace(/\\/g,"/");return t==="README.md"?!1:(t.includes("/")?t.slice(t.lastIndexOf("/")+1):t).toLowerCase()!=="readme.md"}async function jn(e,t){var n,r,i;if(!Bn(e))return On(e);try{const{result:l}=await Ft(e.relativePath);return(n=t.onTreeChanged)==null||n.call(t),(r=t.onExpandFolder)==null||r.call(t,l.folderPath),l.folderPath}catch(l){return(i=t.onError)==null||i.call(t,l instanceof Error?l.message:"Promote page failed"),null}}const vt="application/x-repomind-tree-node";function F(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function yt(e){const t=F(e),n=t.lastIndexOf("/");return n===-1?"":t.slice(0,n)}function bt(e,t){const n=F(e),r=F(t);return n?r===n||r.startsWith(`${n}/`):!0}function Ke(e){var n;const t=(n=e.dataTransfer)==null?void 0:n.getData(vt);if(!t)return null;try{const r=JSON.parse(t);return r.kind!=="page"&&r.kind!=="folder"||typeof r.path!="string"?null:{kind:r.kind,path:F(r.path)}}catch{return null}}function ze(e,t){const n=F(e.path),r=F(t);return!(yt(n)===r||bt(n.replace(/\.md$/i,""),r))}function Ve(e,t){const n=F(e.path),r=F(t);return!(n===r||yt(n)===r||bt(n,r))}function Kn(e,t){let n=null,r=null;function i(a){return a.target.closest("[data-drop-dir]")}function l(){n&&(n.classList.remove("tree-drop-target","tree-drop-invalid"),n=null)}function d(a,p){n&&n!==a&&n.classList.remove("tree-drop-target","tree-drop-invalid"),n=a,a.classList.toggle("tree-drop-target",p),a.classList.toggle("tree-drop-invalid",!p)}function u(a){const p=a.dataset.dropDir;return p===void 0?null:p}async function y(a,p){var s,o,c,m,L,D;try{if(a.kind==="page"){const{result:E}=await It(a.path,p);(s=t.onTreeChanged)==null||s.call(t),E.cascadeUpdated.length>0?(o=t.onNotify)==null||o.call(t,`Moved page; updated links in ${E.cascadeUpdated.length} file(s).`):E.inboundWarnings.length>0&&((c=t.onError)==null||c.call(t,`${E.inboundWarnings.length} page(s) still reference old slug "${E.previousSlug}".`));return}const{result:f}=await Wt(a.path,p);(m=t.onTreeChanged)==null||m.call(t),f.cascadeUpdated.length>0&&((L=t.onNotify)==null||L.call(t,`Moved folder; updated links in ${f.cascadeUpdated.length} file(s).`))}catch(f){(D=t.onError)==null||D.call(t,f instanceof Error?f.message:"Move failed")}}const w=a=>{const p=a.target.closest(".tree-row[data-drag-kind]");if(!p||!a.dataTransfer)return;if(a.target.closest(".tree-menu, .tree-toggle")){a.preventDefault();return}const s=p.dataset.dragKind,o=p.dataset.dragPath;if(!s||!o){a.preventDefault();return}const c={kind:s,path:o};r=c,a.dataTransfer.setData(vt,JSON.stringify(c)),a.dataTransfer.setData("text/plain",o),a.dataTransfer.effectAllowed="move",p.classList.add("is-dragging")},h=a=>{r=null;const p=a.target.closest(".tree-row");p==null||p.classList.remove("is-dragging"),l()},$=a=>{!r||!i(a)||a.preventDefault()},b=a=>{const p=r??Ke(a),s=i(a);if(!p||!s)return;const o=u(s);if(o===null)return;const c=p.kind==="page"?ze(p,o):Ve(p,o);a.preventDefault(),a.dataTransfer.dropEffect=c?"move":"none";const m=s.classList.contains("tree-row")?s:s.closest(".tree-row");m&&d(m,c)},C=a=>{const p=i(a);if(!p||p.contains(a.relatedTarget))return;const s=p.classList.contains("tree-row")?p:p.closest(".tree-row");s&&n===s&&l()},k=a=>{a.preventDefault(),a.stopPropagation();const p=r??Ke(a),s=i(a),o=s?u(s):null;l(),r=null,!(!p||o===null||!(p.kind==="page"?ze(p,o):Ve(p,o)))&&y(p,o)};return e.addEventListener("dragstart",w),e.addEventListener("dragend",h),e.addEventListener("dragenter",$),e.addEventListener("dragover",b),e.addEventListener("dragleave",C),e.addEventListener("drop",k),()=>{r=null,e.removeEventListener("dragstart",w),e.removeEventListener("dragend",h),e.removeEventListener("dragenter",$),e.removeEventListener("dragover",b),e.removeEventListener("dragleave",C),e.removeEventListener("drop",k),l()}}function Ge(e,t,n){e.draggable=!0,e.dataset.dragKind=t,e.dataset.dragPath=n}function Je(e,t){e.dataset.dropDir=t}function Xe(e,t){e.dataset.dropDir=t}const wt="repomind-tree-expanded";function zn(){try{const e=localStorage.getItem(wt);return e?new Set(JSON.parse(e)):new Set([""])}catch{return new Set([""])}}function z(e){localStorage.setItem(wt,JSON.stringify([...e]))}function Vn(){document.querySelectorAll(".tree-context-menu").forEach(e=>e.remove())}function Ye(e,t,n,r){Ot(e,t,void 0,n).then(({draft:i})=>{var l,d;(l=r.onTreeChanged)==null||l.call(r),(d=r.onSelectDraft)==null||d.call(r,i)}).catch(i=>{var l;(l=r.onError)==null||l.call(r,i instanceof Error?i.message:"Create page failed")})}function Gn(e,t,n){var k,a,p,s;Vn();const{kind:r,folderPath:i,page:l,templates:d,resolveCreateParent:u}=t,y=r==="page"||r==="folder"&&!!i,w=d.length>0,h=document.createElement("div");h.className="tree-create-menu tree-context-menu",h.innerHTML=`
233
+ `,{backdrop:r,nameInput:i,close:l}=ht("Новый файл из шаблона",n),d=r.querySelector(".tree-template-list");let c=((y=e[0])==null?void 0:y.id)??"";d.addEventListener("click",b=>{const h=b.target.closest(".tree-template-item");h!=null&&h.dataset.templateId&&(c=h.dataset.templateId,d.querySelectorAll(".tree-template-item").forEach(L=>{const v=L===h;L.classList.toggle("is-selected",v),L.setAttribute("aria-selected",String(v))}))}),mt(r,i,l,b=>{c&&t(b,c)},()=>!!c)}function On(e){if(e.childFolderPath)return e.childFolderPath;const t=e.relativePath.replace(/\\/g,"/");if(t==="README.md")return"";const n=t.lastIndexOf("/"),r=n===-1?t:t.slice(n+1),i=n===-1?"":t.slice(0,n);if(r.toLowerCase()==="readme.md")return i;const l=r.replace(/\.(md|ya?ml|json)$/i,"");return i?`${i}/${l}`:l}function Bn(e){if(e.childFolderPath)return!1;const t=e.relativePath.replace(/\\/g,"/");return t==="README.md"?!1:(t.includes("/")?t.slice(t.lastIndexOf("/")+1):t).toLowerCase()!=="readme.md"}async function jn(e,t){var n,r,i;if(!Bn(e))return On(e);try{const{result:l}=await Ft(e.relativePath);return(n=t.onTreeChanged)==null||n.call(t),(r=t.onExpandFolder)==null||r.call(t,l.folderPath),l.folderPath}catch(l){return(i=t.onError)==null||i.call(t,l instanceof Error?l.message:"Promote page failed"),null}}const vt="application/x-repomind-tree-node";function F(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}function yt(e){const t=F(e),n=t.lastIndexOf("/");return n===-1?"":t.slice(0,n)}function bt(e,t){const n=F(e),r=F(t);return n?r===n||r.startsWith(`${n}/`):!0}function Ke(e){var n;const t=(n=e.dataTransfer)==null?void 0:n.getData(vt);if(!t)return null;try{const r=JSON.parse(t);return r.kind!=="page"&&r.kind!=="folder"||typeof r.path!="string"?null:{kind:r.kind,path:F(r.path)}}catch{return null}}function ze(e,t){const n=F(e.path),r=F(t);return!(yt(n)===r||bt(n.replace(/\.md$/i,""),r))}function Ve(e,t){const n=F(e.path),r=F(t);return!(n===r||yt(n)===r||bt(n,r))}function Kn(e,t){let n=null,r=null;function i(o){return o.target.closest("[data-drop-dir]")}function l(){n&&(n.classList.remove("tree-drop-target","tree-drop-invalid"),n=null)}function d(o,p){n&&n!==o&&n.classList.remove("tree-drop-target","tree-drop-invalid"),n=o,o.classList.toggle("tree-drop-target",p),o.classList.toggle("tree-drop-invalid",!p)}function c(o){const p=o.dataset.dropDir;return p===void 0?null:p}async function y(o,p){var s,a,u,w,P,M;try{if(o.kind==="page"){const{result:E}=await It(o.path,p);(s=t.onTreeChanged)==null||s.call(t),E.cascadeUpdated.length>0?(a=t.onNotify)==null||a.call(t,`Moved page; updated links in ${E.cascadeUpdated.length} file(s).`):E.inboundWarnings.length>0&&((u=t.onError)==null||u.call(t,`${E.inboundWarnings.length} page(s) still reference old slug "${E.previousSlug}".`));return}const{result:f}=await Wt(o.path,p);(w=t.onTreeChanged)==null||w.call(t),f.cascadeUpdated.length>0&&((P=t.onNotify)==null||P.call(t,`Moved folder; updated links in ${f.cascadeUpdated.length} file(s).`))}catch(f){(M=t.onError)==null||M.call(t,f instanceof Error?f.message:"Move failed")}}const b=o=>{const p=o.target.closest(".tree-row[data-drag-kind]");if(!p||!o.dataTransfer)return;if(o.target.closest(".tree-menu, .tree-toggle")){o.preventDefault();return}const s=p.dataset.dragKind,a=p.dataset.dragPath;if(!s||!a){o.preventDefault();return}const u={kind:s,path:a};r=u,o.dataTransfer.setData(vt,JSON.stringify(u)),o.dataTransfer.setData("text/plain",a),o.dataTransfer.effectAllowed="move",p.classList.add("is-dragging")},h=o=>{r=null;const p=o.target.closest(".tree-row");p==null||p.classList.remove("is-dragging"),l()},L=o=>{!r||!i(o)||o.preventDefault()},v=o=>{const p=r??Ke(o),s=i(o);if(!p||!s)return;const a=c(s);if(a===null)return;const u=p.kind==="page"?ze(p,a):Ve(p,a);o.preventDefault(),o.dataTransfer.dropEffect=u?"move":"none";const w=s.classList.contains("tree-row")?s:s.closest(".tree-row");w&&d(w,u)},T=o=>{const p=i(o);if(!p||p.contains(o.relatedTarget))return;const s=p.classList.contains("tree-row")?p:p.closest(".tree-row");s&&n===s&&l()},k=o=>{o.preventDefault(),o.stopPropagation();const p=r??Ke(o),s=i(o),a=s?c(s):null;l(),r=null,!(!p||a===null||!(p.kind==="page"?ze(p,a):Ve(p,a)))&&y(p,a)};return e.addEventListener("dragstart",b),e.addEventListener("dragend",h),e.addEventListener("dragenter",L),e.addEventListener("dragover",v),e.addEventListener("dragleave",T),e.addEventListener("drop",k),()=>{r=null,e.removeEventListener("dragstart",b),e.removeEventListener("dragend",h),e.removeEventListener("dragenter",L),e.removeEventListener("dragover",v),e.removeEventListener("dragleave",T),e.removeEventListener("drop",k),l()}}function Ge(e,t,n){e.draggable=!0,e.dataset.dragKind=t,e.dataset.dragPath=n}function Je(e,t){e.dataset.dropDir=t}function Xe(e,t){e.dataset.dropDir=t}const wt="repomind-tree-expanded";function zn(){try{const e=localStorage.getItem(wt);return e?new Set(JSON.parse(e)):new Set([""])}catch{return new Set([""])}}function z(e){localStorage.setItem(wt,JSON.stringify([...e]))}function Vn(){document.querySelectorAll(".tree-context-menu").forEach(e=>e.remove())}function Ye(e,t,n,r){Ot(e,t,void 0,n).then(({draft:i})=>{var l,d;(l=r.onTreeChanged)==null||l.call(r),(d=r.onSelectDraft)==null||d.call(r,i)}).catch(i=>{var l;(l=r.onError)==null||l.call(r,i instanceof Error?i.message:"Create page failed")})}function Gn(e,t,n){var k,o,p,s;Vn();const{kind:r,folderPath:i,page:l,templates:d,resolveCreateParent:c}=t,y=r==="page"||r==="folder"&&!!i,b=d.length>0,h=document.createElement("div");h.className="tree-create-menu tree-context-menu",h.innerHTML=`
235
234
  <button type="button" data-action="folder">Добавить директорию</button>
236
235
  <button type="button" data-action="page">Создать файл</button>
237
- ${w?'<button type="button" data-action="template">Создать из шаблона</button>':""}
236
+ ${b?'<button type="button" data-action="template">Создать из шаблона</button>':""}
238
237
  ${y?'<button type="button" data-action="delete" class="tree-menu-danger">Удалить</button>':""}
239
- `;const $=e.getBoundingClientRect();h.style.top=`${$.bottom+4}px`,h.style.left=`${Math.max(8,$.right-200)}px`,document.body.appendChild(h);const b=()=>h.remove(),C=o=>{h.contains(o.target)||(b(),document.removeEventListener("click",C))};setTimeout(()=>document.addEventListener("click",C),0),(k=h.querySelector('[data-action="page"]'))==null||k.addEventListener("click",()=>{b(),(async()=>{const o=await u();o!==null&&_n(c=>{Ye(o,c,void 0,n)})})()}),(a=h.querySelector('[data-action="template"]'))==null||a.addEventListener("click",()=>{b(),(async()=>{const o=await u();o!==null&&Un(d,(c,m)=>{Ye(o,c,m,n)})})()}),(p=h.querySelector('[data-action="folder"]'))==null||p.addEventListener("click",()=>{b();const o=window.prompt("Имя директории:");o!=null&&o.trim()&&(async()=>{const c=await u();c!==null&&Ut(c,o.trim()).then(()=>{var m;return(m=n.onTreeChanged)==null?void 0:m.call(n)}).catch(m=>{var L;(L=n.onError)==null||L.call(n,m instanceof Error?m.message:"Create folder failed")})})()}),(s=h.querySelector('[data-action="delete"]'))==null||s.addEventListener("click",()=>{if(b(),r==="page"&&l){if(!window.confirm(`Удалить «${l.title}»?`))return;Re(l.relativePath,"page").then(({result:o})=>{var c,m,L,D;(c=n.onFsDeleted)==null||c.call(n,[o.slug]),(m=n.onTreeChanged)==null||m.call(n),o.cascadeUpdated.length>0?(L=n.onNotify)==null||L.call(n,`Deleted ${o.slug}; cleaned links in ${o.cascadeUpdated.length} file(s).`):o.inboundWarnings.length>0&&((D=n.onError)==null||D.call(n,`${o.inboundWarnings.length} page(s) still reference deleted slug "${o.slug}".`))}).catch(o=>{var c;(c=n.onError)==null||c.call(n,o instanceof Error?o.message:"Delete failed")});return}if(r==="folder"&&i){if(!window.confirm(`Удалить «${i}» и всё содержимое?`))return;Re(i,"folder").then(({result:o})=>{var c,m,L,D;(c=n.onFsDeleted)==null||c.call(n,o.deletedSlugs),(m=n.onTreeChanged)==null||m.call(n),o.cascadeUpdated.length>0?(L=n.onNotify)==null||L.call(n,`Deleted folder; cleaned links in ${o.cascadeUpdated.length} file(s).`):o.inboundWarnings.length>0&&((D=n.onError)==null||D.call(n,`${o.inboundWarnings.length} page(s) still reference deleted page(s).`))}).catch(o=>{var c;(c=n.onError)==null||c.call(n,o instanceof Error?o.message:"Delete folder failed")})}})}function Jn(e,t,n,r){var p;e.innerHTML=`
238
+ `;const L=e.getBoundingClientRect();h.style.top=`${L.bottom+4}px`,h.style.left=`${Math.max(8,L.right-200)}px`,document.body.appendChild(h);const v=()=>h.remove(),T=a=>{h.contains(a.target)||(v(),document.removeEventListener("click",T))};setTimeout(()=>document.addEventListener("click",T),0),(k=h.querySelector('[data-action="page"]'))==null||k.addEventListener("click",()=>{v(),(async()=>{const a=await c();a!==null&&_n(u=>{Ye(a,u,void 0,n)})})()}),(o=h.querySelector('[data-action="template"]'))==null||o.addEventListener("click",()=>{v(),(async()=>{const a=await c();a!==null&&Un(d,(u,w)=>{Ye(a,u,w,n)})})()}),(p=h.querySelector('[data-action="folder"]'))==null||p.addEventListener("click",()=>{v();const a=window.prompt("Имя директории:");a!=null&&a.trim()&&(async()=>{const u=await c();u!==null&&Ut(u,a.trim()).then(()=>{var w;return(w=n.onTreeChanged)==null?void 0:w.call(n)}).catch(w=>{var P;(P=n.onError)==null||P.call(n,w instanceof Error?w.message:"Create folder failed")})})()}),(s=h.querySelector('[data-action="delete"]'))==null||s.addEventListener("click",()=>{if(v(),r==="page"&&l){if(!window.confirm(`Удалить «${l.title}»?`))return;Ae(l.relativePath,"page").then(({result:a})=>{var u,w,P,M;(u=n.onFsDeleted)==null||u.call(n,[a.slug]),(w=n.onTreeChanged)==null||w.call(n),a.cascadeUpdated.length>0?(P=n.onNotify)==null||P.call(n,`Deleted ${a.slug}; cleaned links in ${a.cascadeUpdated.length} file(s).`):a.inboundWarnings.length>0&&((M=n.onError)==null||M.call(n,`${a.inboundWarnings.length} page(s) still reference deleted slug "${a.slug}".`))}).catch(a=>{var u;(u=n.onError)==null||u.call(n,a instanceof Error?a.message:"Delete failed")});return}if(r==="folder"&&i){if(!window.confirm(`Удалить «${i}» и всё содержимое?`))return;Ae(i,"folder").then(({result:a})=>{var u,w,P,M;(u=n.onFsDeleted)==null||u.call(n,a.deletedSlugs),(w=n.onTreeChanged)==null||w.call(n),a.cascadeUpdated.length>0?(P=n.onNotify)==null||P.call(n,`Deleted folder; cleaned links in ${a.cascadeUpdated.length} file(s).`):a.inboundWarnings.length>0&&((M=n.onError)==null||M.call(n,`${a.inboundWarnings.length} page(s) still reference deleted page(s).`))}).catch(a=>{var u;(u=n.onError)==null||u.call(n,a instanceof Error?a.message:"Delete folder failed")})}})}function Jn(e,t,n,r){var p;e.innerHTML=`
240
239
  <nav id="docs-tree" class="docs-tree" aria-label="Documentation tree"></nav>
241
240
  <section class="catalog-section catalog-drafts">
242
241
  <button type="button" class="catalog-header" data-catalog="__drafts__" aria-expanded="true">
@@ -247,28 +246,28 @@ ${i}</${n}>
247
246
  </button>
248
247
  <ul id="draft-list" class="catalog-pages"></ul>
249
248
  </section>
250
- `;const i=e.querySelector("#docs-tree"),l=e.querySelector("#draft-list"),d=zn();let u=null,y=null,w=null;function h(s){d.add("");let o="";for(const c of s.split("/").filter(Boolean))o=o?`${o}/${c}`:c,d.add(o);z(d)}async function $(s,o){var c;try{u||(u=(await _t()).templates),Gn(s,{...o,templates:u},r)}catch(m){(c=r.onError)==null||c.call(r,m instanceof Error?m.message:"Failed to open menu")}}function b(s,o){var P,q,S;const c=!!s.childFolderPath,m=s.childFolderPath??"",L=c&&d.has(m),D=document.createElement("div");D.className=c?"tree-folder tree-page-folder":"tree-page";const f=document.createElement("div");f.className="tree-row",f.style.paddingLeft=`${o*12+8}px`,s.slug===y&&f.classList.add("active"),f.innerHTML=c?`
251
- <button type="button" class="tree-toggle" aria-expanded="${L}">${L?"▾":"▸"}</button>
249
+ `;const i=e.querySelector("#docs-tree"),l=e.querySelector("#draft-list"),d=zn();let c=null,y=null,b=null;function h(s){d.add("");let a="";for(const u of s.split("/").filter(Boolean))a=a?`${a}/${u}`:u,d.add(a);z(d)}async function L(s,a){var u;try{c||(c=(await _t()).templates),Gn(s,{...a,templates:c},r)}catch(w){(u=r.onError)==null||u.call(r,w instanceof Error?w.message:"Failed to open menu")}}function v(s,a){var $,C,S;const u=!!s.childFolderPath,w=s.childFolderPath??"",P=u&&d.has(w),M=document.createElement("div");M.className=u?"tree-folder tree-page-folder":"tree-page";const f=document.createElement("div");f.className="tree-row",f.style.paddingLeft=`${a*12+8}px`,s.slug===y&&f.classList.add("active"),f.innerHTML=u?`
250
+ <button type="button" class="tree-toggle" aria-expanded="${P}">${P?"▾":"▸"}</button>
252
251
  <button type="button" class="tree-label">
253
- ${ue(s.type,s.contentKind)}
252
+ ${je(s.type,s.contentKind)}
254
253
  <span class="tree-title">${X(s.title)}</span>
255
254
  </button>
256
255
  <button type="button" class="tree-menu" title="Actions">⋯</button>
257
256
  `:`
258
257
  <span class="tree-spacer" aria-hidden="true"></span>
259
258
  <button type="button" class="tree-label">
260
- ${ue(s.type,s.contentKind)}
259
+ ${je(s.type,s.contentKind)}
261
260
  <span class="tree-title">${X(s.title)}</span>
262
261
  </button>
263
262
  <button type="button" class="tree-menu" title="Actions">⋯</button>
264
- `;const E=s.relativePath.includes("/")?s.relativePath.slice(0,s.relativePath.lastIndexOf("/")):"";if(c&&((P=f.querySelector(".tree-toggle"))==null||P.addEventListener("click",g=>{g.stopPropagation(),d.has(m)?d.delete(m):d.add(m),z(d),k()})),(q=f.querySelector(".tree-menu"))==null||q.addEventListener("click",g=>{g.stopPropagation(),$(g.currentTarget,{kind:"page",parentPath:E,folderPath:s.childFolderPath??E,page:s,resolveCreateParent:()=>jn(s,{onTreeChanged:r.onTreeChanged,onError:r.onError,onExpandFolder:h})})}),(S=f.querySelector(".tree-label"))==null||S.addEventListener("click",()=>{y=s.slug,w=null,k(),a(),r.onSelectSlug(s.slug)}),Ge(f,"page",s.relativePath),s.childFolderPath&&Je(f,s.childFolderPath),D.appendChild(f),c&&L&&s.children){const g=document.createElement("div");g.className="tree-children",s.childFolderPath&&Xe(g,s.childFolderPath);for(const T of s.children)T.kind==="folder"?g.appendChild(C(T,o+1)):g.appendChild(b(T,o+1));D.appendChild(g)}return D}function C(s,o){var D,f,E;const c=document.createElement("div");c.className="tree-folder";const m=d.has(s.relativePath),L=document.createElement("div");if(L.className="tree-row",L.style.paddingLeft=`${o*12+8}px`,L.innerHTML=`
265
- <button type="button" class="tree-toggle" aria-expanded="${m}">${m?"▾":"▸"}</button>
263
+ `;const E=s.relativePath.includes("/")?s.relativePath.slice(0,s.relativePath.lastIndexOf("/")):"";if(u&&(($=f.querySelector(".tree-toggle"))==null||$.addEventListener("click",g=>{g.stopPropagation(),d.has(w)?d.delete(w):d.add(w),z(d),k()})),(C=f.querySelector(".tree-menu"))==null||C.addEventListener("click",g=>{g.stopPropagation(),L(g.currentTarget,{kind:"page",parentPath:E,folderPath:s.childFolderPath??E,page:s,resolveCreateParent:()=>jn(s,{onTreeChanged:r.onTreeChanged,onError:r.onError,onExpandFolder:h})})}),(S=f.querySelector(".tree-label"))==null||S.addEventListener("click",()=>{y=s.slug,b=null,k(),o(),r.onSelectSlug(s.slug)}),Ge(f,"page",s.relativePath),s.childFolderPath&&Je(f,s.childFolderPath),M.appendChild(f),u&&P&&s.children){const g=document.createElement("div");g.className="tree-children",s.childFolderPath&&Xe(g,s.childFolderPath);for(const q of s.children)q.kind==="folder"?g.appendChild(T(q,a+1)):g.appendChild(v(q,a+1));M.appendChild(g)}return M}function T(s,a){var M,f,E;const u=document.createElement("div");u.className="tree-folder";const w=d.has(s.relativePath),P=document.createElement("div");if(P.className="tree-row",P.style.paddingLeft=`${a*12+8}px`,P.innerHTML=`
264
+ <button type="button" class="tree-toggle" aria-expanded="${w}">${w?"▾":"▸"}</button>
266
265
  <button type="button" class="tree-label">
267
- ${In(s)}
266
+ ${In()}
268
267
  <span class="tree-title">${X(s.name)}</span>
269
268
  </button>
270
269
  <button type="button" class="tree-menu" title="Actions">⋯</button>
271
- `,(D=L.querySelector(".tree-toggle"))==null||D.addEventListener("click",P=>{P.stopPropagation(),d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(f=L.querySelector(".tree-label"))==null||f.addEventListener("click",()=>{d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(E=L.querySelector(".tree-menu"))==null||E.addEventListener("click",P=>{P.stopPropagation(),$(P.currentTarget,{kind:"folder",parentPath:s.relativePath,folderPath:s.relativePath,resolveCreateParent:async()=>s.relativePath})}),Ge(L,"folder",s.relativePath),Je(L,s.relativePath),c.appendChild(L),m){const P=document.createElement("div");P.className="tree-children",Xe(P,s.relativePath);for(const q of s.children??[])q.kind==="folder"?P.appendChild(C(q,o+1)):P.appendChild(b(q,o+1));c.appendChild(P)}return c}function k(){i.innerHTML="",i.appendChild(C(t,0))}function a(){if(l.innerHTML="",n.length===0){l.innerHTML='<li class="placeholder page-item">No drafts</li>';return}for(const s of n){const o=document.createElement("li");o.className="page-item",s.id===w&&o.classList.add("active"),o.innerHTML=`<span class="page-title">${X(s.title||s.slug)}</span><span class="status-chip status-draft">draft</span>`,o.addEventListener("click",()=>{var c;w=s.id,y=null,k(),a(),(c=r.onSelectDraft)==null||c.call(r,s)}),l.appendChild(o)}}k(),a(),Kn(i,{onTreeChanged:r.onTreeChanged,onError:r.onError,onNotify:r.onNotify}),(p=e.querySelector('[data-catalog="__drafts__"]'))==null||p.addEventListener("click",()=>{const s=e.querySelector("#draft-list"),o=e.querySelector('[data-catalog="__drafts__"]'),c=(s==null?void 0:s.classList.toggle("hidden"))===!1;o==null||o.setAttribute("aria-expanded",String(c));const m=o==null?void 0:o.querySelector(".catalog-chevron");m&&(m.textContent=c?"▾":"▸")}),e.setActiveSlug=s=>{y=s,w=null,d.add(""),z(d),k(),a()},e.setActiveDraft=s=>{w=s,y=null,k(),a()},e.refreshDrafts=s=>{n.length=0,n.push(...s),a();const o=e.querySelector(".catalog-drafts .catalog-count");o&&(o.textContent=String(n.length))},e.refreshTree=(s,o)=>{t.children=s.children??[],t.emoji=s.emoji,t.indexPageSlug=s.indexPageSlug,t.indexPageType=s.indexPageType,t.indexPageContentKind=s.indexPageContentKind,t.name=s.name,n.length=0,n.push(...o??[]),k(),a()}}function X(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}const Z="repomind-sidebar-width",St=220,Et=420,j=280;function ee(e){return Math.min(Et,Math.max(St,e))}function Xn(){try{const e=localStorage.getItem(Z);if(!e)return j;const t=Number.parseInt(e,10);return Number.isFinite(t)?ee(t):j}catch{return j}}function Y(e,t){e.style.setProperty("--sidebar-width",`${t}px`)}function Yn(e){const t=Xn();Y(e,t);const n=document.createElement("div");n.className="sidebar-resize-handle",n.setAttribute("role","separator"),n.setAttribute("aria-orientation","vertical"),n.setAttribute("aria-label","Resize sidebar"),n.tabIndex=0;const r=e.querySelector("#sidebar");r!=null&&r.nextSibling?e.insertBefore(n,r.nextSibling):e.appendChild(n);let i=!1,l=0,d=t;const u=b=>{if(!i)return;const C=b.clientX-l;Y(e,ee(d+C))},y=()=>{if(!i)return;i=!1,n.classList.remove("is-dragging"),document.body.style.cursor="",document.body.style.userSelect="";const b=ie(e);localStorage.setItem(Z,String(b)),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",y)},w=b=>{b.button===0&&(i=!0,l=b.clientX,d=ie(e),n.classList.add("is-dragging"),document.body.style.cursor="col-resize",document.body.style.userSelect="none",n.setPointerCapture(b.pointerId),window.addEventListener("pointermove",u),window.addEventListener("pointerup",y))},h=b=>{const C=b.shiftKey?40:16;let k=ie(e);if(b.key==="ArrowLeft")k=ee(k-C);else if(b.key==="ArrowRight")k=ee(k+C);else if(b.key==="Home")k=St;else if(b.key==="End")k=Et;else return;b.preventDefault(),Y(e,k),localStorage.setItem(Z,String(k))},$=()=>{Y(e,j),localStorage.setItem(Z,String(j))};return n.addEventListener("pointerdown",w),n.addEventListener("keydown",h),n.addEventListener("dblclick",$),()=>{n.removeEventListener("pointerdown",w),n.removeEventListener("keydown",h),n.removeEventListener("dblclick",$),n.remove()}}function ie(e){const t=getComputedStyle(e).getPropertyValue("--sidebar-width").trim(),n=Number.parseInt(t,10);return Number.isFinite(n)?n:j}function Qn(e){const t=new EventSource("/api/events");return t.onmessage=()=>{e()},()=>{t.close()}}kn();Bt();function oe(e){return new Map(e.map(t=>[t.relativePath,t.slug]))}function le(e,t){var n;return(n=e.find(r=>r.slug===t))==null?void 0:n.relativePath}function A(e,t=!1){const n=document.querySelector("#banner");n&&(n.textContent=e,n.classList.toggle("error",t),n.classList.remove("hidden"),setTimeout(()=>n.classList.add("hidden"),5e3))}async function Qe(e){var n;const{drafts:t}=await G();return(n=e.refreshDrafts)==null||n.call(e,t),t}async function Zn(){var D;jt(document.querySelector("#theme-toggle"));const e=document.querySelector(".layout");e&&Yn(e);const t=document.querySelector("#sidebar"),n=document.querySelector("#workspace"),r=document.querySelector("#health-toggle"),i=document.querySelector("#stats"),l=document.querySelector("#global-search"),d=document.querySelector("#search-dropdown");let u=[],y=null,w=[],h="workspace",$=null,b=null;async function C(f){var q;const[{tree:E},{drafts:P}]=await Promise.all([He(),G()]);return(q=f.refreshTree)==null||q.call(f,E,P),w=je(E),E}function k(f){if(h=f,r.setAttribute("aria-pressed",String(f==="dashboard")),f==="dashboard"){$=Gt(n,{onOpenDraft:P=>{k("workspace"),o(P)},onPublished:P=>{(async()=>(await C(t),await a(),A(`Published: ${P}`)))()},onNotify:(P,q)=>A(P,q)}).refresh;return}$=null,re(),N(n,null,p())}r.addEventListener("click",()=>{k(h==="dashboard"?"workspace":"dashboard")}),Rn({onNext:()=>{if(h!=="workspace"||!y)return;const f=w.indexOf(y);f>=0&&f<w.length-1&&L(w[f+1])},onPrev:()=>{if(h!=="workspace"||!y)return;const f=w.indexOf(y);f>0&&L(w[f-1])},onFocusSearch:()=>{l.focus(),l.select()},onEdit:()=>{h==="workspace"&&y&&m(y)}});async function a(){const f=await zt(),P=await(await fetch("/api/stats")).json(),{drafts:q}=await G(),S=P.brokenRelatedCount>0?` · ${P.brokenRelatedCount} broken links`:"";i.textContent=`v${f.version} · ${f.docCount} pages · ${q.length} drafts${S}`}function p(){return{docIndex:u,onPublished:async f=>{u=(await U()).docs,await C(t),await a(),$==null||$(),A(`Published: ${f}`)},onError:f=>A(f,!0),onReloadDoc:f=>J(f),onDraftsChanged:()=>{Qe(t)},onCopyLink:()=>A("Link copied")}}function s(f){if(f.length===0){d.innerHTML='<p class="search-empty">No matches</p>',d.classList.remove("hidden");return}const E=document.createElement("ul");E.className="search-results";for(const P of f){const q=u.find(g=>g.slug===P.slug),S=document.createElement("li");S.innerHTML=`
272
- <div class="search-result-title">${P.title}</div>
273
- <div class="search-result-meta">${pe((q==null?void 0:q.type)??"")} · ${P.snippet}</div>
274
- `,S.addEventListener("click",()=>{d.classList.add("hidden"),l.value="",L(P.slug)}),E.appendChild(S)}d.innerHTML="",d.appendChild(E),d.classList.remove("hidden")}l.addEventListener("input",()=>{const f=l.value.trim();if(b&&clearTimeout(b),!f){d.classList.add("hidden"),d.innerHTML="";return}b=setTimeout(()=>{Kt(f).then(({results:E})=>s(E)).catch(E=>A(E instanceof Error?E.message:"Search failed",!0))},300)}),document.addEventListener("click",f=>{!d.contains(f.target)&&f.target!==l&&d.classList.add("hidden")});function o(f){var P;k("workspace"),(P=t.setActiveDraft)==null||P.call(t,f.id);const E=f.forked_from??(u.some(q=>q.slug===f.slug)?f.slug:null);if(E){J(E).then(q=>{Be(n,q,f,{...p(),docRelativePath:le(u,E),slugByRelative:oe(u),onPublished:async S=>{await p().onPublished(S),await L(f.slug)}})}).catch(()=>{Ie(n,f,c(),u)});return}Ie(n,f,c(),u)}function c(){return{onPublished:f=>{(async()=>{u=(await U()).docs,await C(t),await a(),$==null||$(),A(`Published: ${f}`);const P=u.find(q=>q.slug===draft.slug);P&&await L(P.slug)})()},onClosed:()=>{N(n,null,p())},onDeleted:()=>{(async()=>(await C(t),N(n,null,p())))()},onError:f=>A(f,!0)}}async function m(f){if(h==="workspace")try{const E=await J(f),{draft:P}=await Ze(f);await Qe(t),Be(n,E,P,{...p(),docRelativePath:le(u,f),slugByRelative:oe(u)})}catch(E){A(E instanceof Error?E.message:"Edit failed",!0)}}async function L(f,E={}){var S;const P=E.updateUrl??!0,q=E.urlMode??"push";h==="dashboard"&&k("workspace"),y=f,(S=t.setActiveSlug)==null||S.call(t,f);try{const g=await J(f),T=le(u,f);N(n,g,{...p(),docRelativePath:T,slugByRelative:oe(u)}),P&&Pn(f,q)}catch(g){A(g instanceof Error?g.message:"Failed to load doc",!0)}}n.addEventListener("navigate-slug",(f=>{L(f.detail.slug)}));try{await a();const[f,{tree:E},{drafts:P}]=await Promise.all([U(),He(),G()]);u=f.docs,w=je(E),Jn(t,E,P,{onSelectSlug:g=>{L(g)},onSelectDraft:g=>o(g),onTreeChanged:()=>{(async()=>(u=(await U()).docs,await C(t),await a()))()},onFsDeleted:g=>{(async()=>(u=(await U()).docs,y&&g.includes(y)&&(y=null,N(n,null,p())),await C(t),await a()))()},onError:g=>A(g,!0),onNotify:g=>A(g)}),Qn(()=>{(async()=>{try{u=(await U()).docs,await C(t),await a(),y&&!u.some(T=>T.slug===y)&&(y=null,N(n,null,p()))}catch{}})()}),Cn(g=>{if(!g){y=null,N(n,null,p());return}u.some(T=>T.slug===g)&&L(g,{updateUrl:!1})}),N(n,null,p());const q=ve(),S=Ln();if(S){const g=P.find(T=>T.id===S);g?o(g):A(`Unknown draft: ${S}`,!0)}else if(q)u.some(g=>g.slug===q)?await L(q,{updateUrl:!1}):A(`Unknown page: ${q}`,!0);else{const g=En(),T=g?(D=u.find(se=>se.relativePath===g))==null?void 0:D.slug:void 0;g&&T?await L(T,{updateUrl:!1}):g?A(`Unknown path: ${g}`,!0):E.indexPageSlug?await L(E.indexPageSlug,{urlMode:"replace"}):u.length>0&&u[0]&&await L(u[0].slug,{urlMode:"replace"})}}catch(f){A(f instanceof Error?f.message:"Failed to load workspace",!0)}}Zn();export{it as _,nn as a,vn as e,nr as f,st as p};
270
+ `,(M=P.querySelector(".tree-toggle"))==null||M.addEventListener("click",$=>{$.stopPropagation(),d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(f=P.querySelector(".tree-label"))==null||f.addEventListener("click",()=>{d.has(s.relativePath)?d.delete(s.relativePath):d.add(s.relativePath),z(d),k()}),(E=P.querySelector(".tree-menu"))==null||E.addEventListener("click",$=>{$.stopPropagation(),L($.currentTarget,{kind:"folder",parentPath:s.relativePath,folderPath:s.relativePath,resolveCreateParent:async()=>s.relativePath})}),Ge(P,"folder",s.relativePath),Je(P,s.relativePath),u.appendChild(P),w){const $=document.createElement("div");$.className="tree-children",Xe($,s.relativePath);for(const C of s.children??[])C.kind==="folder"?$.appendChild(T(C,a+1)):$.appendChild(v(C,a+1));u.appendChild($)}return u}function k(){i.innerHTML="",i.appendChild(T(t,0))}function o(){if(l.innerHTML="",n.length===0){l.innerHTML='<li class="placeholder page-item">No drafts</li>';return}for(const s of n){const a=document.createElement("li");a.className="page-item",s.id===b&&a.classList.add("active"),a.innerHTML=`<span class="page-title">${X(s.title||s.slug)}</span><span class="status-chip status-draft">draft</span>`,a.addEventListener("click",()=>{var u;b=s.id,y=null,k(),o(),(u=r.onSelectDraft)==null||u.call(r,s)}),l.appendChild(a)}}k(),o(),Kn(i,{onTreeChanged:r.onTreeChanged,onError:r.onError,onNotify:r.onNotify}),(p=e.querySelector('[data-catalog="__drafts__"]'))==null||p.addEventListener("click",()=>{const s=e.querySelector("#draft-list"),a=e.querySelector('[data-catalog="__drafts__"]'),u=(s==null?void 0:s.classList.toggle("hidden"))===!1;a==null||a.setAttribute("aria-expanded",String(u));const w=a==null?void 0:a.querySelector(".catalog-chevron");w&&(w.textContent=u?"▾":"▸")}),e.setActiveSlug=s=>{y=s,b=null,d.add(""),z(d),k(),o()},e.setActiveDraft=s=>{b=s,y=null,k(),o()},e.refreshDrafts=s=>{n.length=0,n.push(...s),o();const a=e.querySelector(".catalog-drafts .catalog-count");a&&(a.textContent=String(n.length))},e.refreshTree=(s,a)=>{t.children=s.children??[],t.emoji=s.emoji,t.indexPageSlug=s.indexPageSlug,t.indexPageType=s.indexPageType,t.indexPageContentKind=s.indexPageContentKind,t.name=s.name,n.length=0,n.push(...a??[]),k(),o()}}function X(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}const Z="repomind-sidebar-width",St=220,Et=420,j=280;function ee(e){return Math.min(Et,Math.max(St,e))}function Xn(){try{const e=localStorage.getItem(Z);if(!e)return j;const t=Number.parseInt(e,10);return Number.isFinite(t)?ee(t):j}catch{return j}}function Y(e,t){e.style.setProperty("--sidebar-width",`${t}px`)}function Yn(e){const t=Xn();Y(e,t);const n=document.createElement("div");n.className="sidebar-resize-handle",n.setAttribute("role","separator"),n.setAttribute("aria-orientation","vertical"),n.setAttribute("aria-label","Resize sidebar"),n.tabIndex=0;const r=e.querySelector("#sidebar");r!=null&&r.nextSibling?e.insertBefore(n,r.nextSibling):e.appendChild(n);let i=!1,l=0,d=t;const c=v=>{if(!i)return;const T=v.clientX-l;Y(e,ee(d+T))},y=()=>{if(!i)return;i=!1,n.classList.remove("is-dragging"),document.body.style.cursor="",document.body.style.userSelect="";const v=ie(e);localStorage.setItem(Z,String(v)),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",y)},b=v=>{v.button===0&&(i=!0,l=v.clientX,d=ie(e),n.classList.add("is-dragging"),document.body.style.cursor="col-resize",document.body.style.userSelect="none",n.setPointerCapture(v.pointerId),window.addEventListener("pointermove",c),window.addEventListener("pointerup",y))},h=v=>{const T=v.shiftKey?40:16;let k=ie(e);if(v.key==="ArrowLeft")k=ee(k-T);else if(v.key==="ArrowRight")k=ee(k+T);else if(v.key==="Home")k=St;else if(v.key==="End")k=Et;else return;v.preventDefault(),Y(e,k),localStorage.setItem(Z,String(k))},L=()=>{Y(e,j),localStorage.setItem(Z,String(j))};return n.addEventListener("pointerdown",b),n.addEventListener("keydown",h),n.addEventListener("dblclick",L),()=>{n.removeEventListener("pointerdown",b),n.removeEventListener("keydown",h),n.removeEventListener("dblclick",L),n.remove()}}function ie(e){const t=getComputedStyle(e).getPropertyValue("--sidebar-width").trim(),n=Number.parseInt(t,10);return Number.isFinite(n)?n:j}function Qn(e){const t=new EventSource("/api/events");return t.onmessage=()=>{e()},()=>{t.close()}}kn();Bt();function oe(e){return new Map(e.map(t=>[t.relativePath,t.slug]))}function le(e,t){var n;return(n=e.find(r=>r.slug===t))==null?void 0:n.relativePath}function A(e,t=!1){const n=document.querySelector("#banner");n&&(n.textContent=e,n.classList.toggle("error",t),n.classList.remove("hidden"),setTimeout(()=>n.classList.add("hidden"),5e3))}async function Qe(e){var n;const{drafts:t}=await G();return(n=e.refreshDrafts)==null||n.call(e,t),t}async function Zn(){var M;jt(document.querySelector("#theme-toggle"));const e=document.querySelector(".layout");e&&Yn(e);const t=document.querySelector("#sidebar"),n=document.querySelector("#workspace"),r=document.querySelector("#health-toggle"),i=document.querySelector("#stats"),l=document.querySelector("#global-search"),d=document.querySelector("#search-dropdown");let c=[],y=null,b=[],h="workspace",L=null,v=null;async function T(f){var C;const[{tree:E},{drafts:$}]=await Promise.all([Re(),G()]);return(C=f.refreshTree)==null||C.call(f,E,$),b=Be(E),E}function k(f){if(h=f,r.setAttribute("aria-pressed",String(f==="dashboard")),f==="dashboard"){L=Gt(n,{onOpenDraft:$=>{k("workspace"),a($)},onPublished:$=>{(async()=>(await T(t),await o(),A(`Published: ${$}`)))()},onNotify:($,C)=>A($,C)}).refresh;return}L=null,re(),N(n,null,p())}r.addEventListener("click",()=>{k(h==="dashboard"?"workspace":"dashboard")}),Rn({onNext:()=>{if(h!=="workspace"||!y)return;const f=b.indexOf(y);f>=0&&f<b.length-1&&P(b[f+1])},onPrev:()=>{if(h!=="workspace"||!y)return;const f=b.indexOf(y);f>0&&P(b[f-1])},onFocusSearch:()=>{l.focus(),l.select()},onEdit:()=>{h==="workspace"&&y&&w(y)}});async function o(){const f=await zt(),$=await(await fetch("/api/stats")).json(),{drafts:C}=await G(),S=$.brokenRelatedCount>0?` · ${$.brokenRelatedCount} broken links`:"";i.textContent=`v${f.version} · ${f.docCount} pages · ${C.length} drafts${S}`}function p(){return{docIndex:c,onPublished:async f=>{c=(await U()).docs,await T(t),await o(),L==null||L(),A(`Published: ${f}`)},onError:f=>A(f,!0),onReloadDoc:f=>J(f),onDraftsChanged:()=>{Qe(t)},onCopyLink:()=>A("Link copied")}}function s(f){if(f.length===0){d.innerHTML='<p class="search-empty">No matches</p>',d.classList.remove("hidden");return}const E=document.createElement("ul");E.className="search-results";for(const $ of f){const C=c.find(g=>g.slug===$.slug),S=document.createElement("li");S.innerHTML=`
271
+ <div class="search-result-title">${$.title}</div>
272
+ <div class="search-result-meta">${ue((C==null?void 0:C.type)??"")} · ${$.snippet}</div>
273
+ `,S.addEventListener("click",()=>{d.classList.add("hidden"),l.value="",P($.slug)}),E.appendChild(S)}d.innerHTML="",d.appendChild(E),d.classList.remove("hidden")}l.addEventListener("input",()=>{const f=l.value.trim();if(v&&clearTimeout(v),!f){d.classList.add("hidden"),d.innerHTML="";return}v=setTimeout(()=>{Kt(f).then(({results:E})=>s(E)).catch(E=>A(E instanceof Error?E.message:"Search failed",!0))},300)}),document.addEventListener("click",f=>{!d.contains(f.target)&&f.target!==l&&d.classList.add("hidden")});function a(f){var $;k("workspace"),($=t.setActiveDraft)==null||$.call(t,f.id);const E=f.forked_from??(c.some(C=>C.slug===f.slug)?f.slug:null);if(E){J(E).then(C=>{Oe(n,C,f,{...p(),docRelativePath:le(c,E),slugByRelative:oe(c),onPublished:async S=>{await p().onPublished(S),await P(f.slug)}})}).catch(()=>{Fe(n,f,u(),c)});return}Fe(n,f,u(),c)}function u(){return{onPublished:f=>{(async()=>{c=(await U()).docs,await T(t),await o(),L==null||L(),A(`Published: ${f}`);const $=c.find(C=>C.slug===draft.slug);$&&await P($.slug)})()},onClosed:()=>{N(n,null,p())},onDeleted:()=>{(async()=>(await T(t),N(n,null,p())))()},onError:f=>A(f,!0)}}async function w(f){if(h==="workspace")try{const E=await J(f),{draft:$}=await Ze(f);await Qe(t),Oe(n,E,$,{...p(),docRelativePath:le(c,f),slugByRelative:oe(c)})}catch(E){A(E instanceof Error?E.message:"Edit failed",!0)}}async function P(f,E={}){var S;const $=E.updateUrl??!0,C=E.urlMode??"push";h==="dashboard"&&k("workspace"),y=f,(S=t.setActiveSlug)==null||S.call(t,f);try{const g=await J(f),q=le(c,f);N(n,g,{...p(),docRelativePath:q,slugByRelative:oe(c)}),$&&Pn(f,C)}catch(g){A(g instanceof Error?g.message:"Failed to load doc",!0)}}n.addEventListener("navigate-slug",(f=>{P(f.detail.slug)}));try{await o();const[f,{tree:E},{drafts:$}]=await Promise.all([U(),Re(),G()]);c=f.docs,b=Be(E),Jn(t,E,$,{onSelectSlug:g=>{P(g)},onSelectDraft:g=>a(g),onTreeChanged:()=>{(async()=>(c=(await U()).docs,await T(t),await o()))()},onFsDeleted:g=>{(async()=>(c=(await U()).docs,y&&g.includes(y)&&(y=null,N(n,null,p())),await T(t),await o()))()},onError:g=>A(g,!0),onNotify:g=>A(g)}),Qn(()=>{(async()=>{try{c=(await U()).docs,await T(t),await o(),y&&!c.some(q=>q.slug===y)&&(y=null,N(n,null,p()))}catch{}})()}),Cn(g=>{if(!g){y=null,N(n,null,p());return}c.some(q=>q.slug===g)&&P(g,{updateUrl:!1})}),N(n,null,p());const C=me(),S=Ln();if(S){const g=$.find(q=>q.id===S);g?a(g):A(`Unknown draft: ${S}`,!0)}else if(C)c.some(g=>g.slug===C)?await P(C,{updateUrl:!1}):A(`Unknown page: ${C}`,!0);else{const g=En(),q=g?(M=c.find(se=>se.relativePath===g))==null?void 0:M.slug:void 0;g&&q?await P(q,{updateUrl:!1}):g?A(`Unknown path: ${g}`,!0):E.indexPageSlug?await P(E.indexPageSlug,{urlMode:"replace"}):c.length>0&&c[0]&&await P(c[0].slug,{urlMode:"replace"})}}catch(f){A(f instanceof Error?f.message:"Failed to load workspace",!0)}}Zn();export{it as _,nn as a,vn as e,nr as f,st as p};