@justyork/repo-mind 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.cursor/skills/repomind-docs/SKILL.md +160 -0
  2. package/.cursor/skills/repomind-docs/examples.md +429 -0
  3. package/.cursor/skills/repomind-docs/reference.md +209 -0
  4. package/.cursor/skills/repomind-docs/structure.md +132 -0
  5. package/dist/cli.js +17 -0
  6. package/dist/commands/install-skill.d.ts +9 -0
  7. package/dist/commands/install-skill.js +35 -0
  8. package/dist/commands/ui.js +5 -1
  9. package/dist/ui/auth.d.ts +21 -0
  10. package/dist/ui/auth.js +117 -0
  11. package/dist/ui/fs-operations.d.ts +1 -1
  12. package/dist/ui/fs-operations.js +36 -4
  13. package/dist/ui/fs-tree.d.ts +5 -4
  14. package/dist/ui/fs-tree.js +60 -56
  15. package/dist/ui/server.d.ts +2 -0
  16. package/dist/ui/server.js +63 -2
  17. package/package.json +3 -2
  18. package/ui/dist/assets/{arc-C1R_fyW-.js → arc-D8hdO1rw.js} +1 -1
  19. package/ui/dist/assets/{architectureDiagram-3BPJPVTR-CcuF3FYc.js → architectureDiagram-3BPJPVTR-DD8y2xkc.js} +1 -1
  20. package/ui/dist/assets/{blockDiagram-GPEHLZMM-BZJKe3Ei.js → blockDiagram-GPEHLZMM-CC_b0LTp.js} +1 -1
  21. package/ui/dist/assets/{c4Diagram-AAUBKEIU-D_0fRNGS.js → c4Diagram-AAUBKEIU-D0xWINWL.js} +1 -1
  22. package/ui/dist/assets/channel-BlZV_pp1.js +1 -0
  23. package/ui/dist/assets/{chunk-2J33WTMH-0LcH4vIA.js → chunk-2J33WTMH-BU6b81sJ.js} +1 -1
  24. package/ui/dist/assets/{chunk-4BX2VUAB-DU1h67AD.js → chunk-4BX2VUAB-DZAlHkZW.js} +1 -1
  25. package/ui/dist/assets/{chunk-55IACEB6-BCx7dyYV.js → chunk-55IACEB6-AiC0yewf.js} +1 -1
  26. package/ui/dist/assets/{chunk-727SXJPM-CRO5yOrB.js → chunk-727SXJPM-DThb082L.js} +1 -1
  27. package/ui/dist/assets/{chunk-AQP2D5EJ-BayHdr67.js → chunk-AQP2D5EJ-BPfxgjqM.js} +1 -1
  28. package/ui/dist/assets/{chunk-FMBD7UC4-CJemLien.js → chunk-FMBD7UC4-BPN8p0X8.js} +1 -1
  29. package/ui/dist/assets/{chunk-ND2GUHAM-B_z-tw44.js → chunk-ND2GUHAM-Fg3EXATp.js} +1 -1
  30. package/ui/dist/assets/{chunk-QZHKN3VN-D40rAh_S.js → chunk-QZHKN3VN-BfNeOxQX.js} +1 -1
  31. package/ui/dist/assets/classDiagram-4FO5ZUOK-DeRilEwX.js +1 -0
  32. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-DeRilEwX.js +1 -0
  33. package/ui/dist/assets/{cose-bilkent-S5V4N54A-Cqthtrrq.js → cose-bilkent-S5V4N54A-BajfXpNb.js} +1 -1
  34. package/ui/dist/assets/{dagre-BM42HDAG-CrxsyXEa.js → dagre-BM42HDAG-BOr2m0CZ.js} +1 -1
  35. package/ui/dist/assets/{diagram-2AECGRRQ-DTYA7Rrn.js → diagram-2AECGRRQ-0NMPI4vh.js} +1 -1
  36. package/ui/dist/assets/{diagram-5GNKFQAL-CXs7RV13.js → diagram-5GNKFQAL-CTuUvbHc.js} +1 -1
  37. package/ui/dist/assets/{diagram-KO2AKTUF-Bf8EeV_S.js → diagram-KO2AKTUF-BQMPycKH.js} +1 -1
  38. package/ui/dist/assets/{diagram-LMA3HP47-C2XWB0cI.js → diagram-LMA3HP47-0EqSTR8-.js} +1 -1
  39. package/ui/dist/assets/{diagram-OG6HWLK6-BNMXob9h.js → diagram-OG6HWLK6-Cn7vgxcz.js} +1 -1
  40. package/ui/dist/assets/{erDiagram-TEJ5UH35-CnSczOvb.js → erDiagram-TEJ5UH35-DCHJaPi9.js} +1 -1
  41. package/ui/dist/assets/{flowDiagram-I6XJVG4X-DwZBJ2fr.js → flowDiagram-I6XJVG4X-GcCMnaHc.js} +1 -1
  42. package/ui/dist/assets/{ganttDiagram-6RSMTGT7-rxwvD8xn.js → ganttDiagram-6RSMTGT7-4NzDSonj.js} +1 -1
  43. package/ui/dist/assets/{gitGraphDiagram-PVQCEYII-DjJPiQ2K.js → gitGraphDiagram-PVQCEYII-BXLfDhC_.js} +1 -1
  44. package/ui/dist/assets/graph-CxZcS9dt.js +2 -0
  45. package/ui/dist/assets/{infoDiagram-5YYISTIA-BHgtQpBK.js → infoDiagram-5YYISTIA-DLHHvQ1b.js} +1 -1
  46. package/ui/dist/assets/{ishikawaDiagram-YF4QCWOH-BZ38ndde.js → ishikawaDiagram-YF4QCWOH-BtqY11Uk.js} +1 -1
  47. package/ui/dist/assets/{journeyDiagram-JHISSGLW-CNaZf5VN.js → journeyDiagram-JHISSGLW-lBwhxW7E.js} +1 -1
  48. package/ui/dist/assets/{kanban-definition-UN3LZRKU-4h1Jmt_X.js → kanban-definition-UN3LZRKU-C4Q8frPQ.js} +1 -1
  49. package/ui/dist/assets/main-BuVawP8Y.js +269 -0
  50. package/ui/dist/assets/{mermaid.core-BZZdRyuR.js → mermaid.core-DdiilVI8.js} +4 -4
  51. package/ui/dist/assets/{mindmap-definition-RKZ34NQL-DG_NciLX.js → mindmap-definition-RKZ34NQL-CzSxcpUz.js} +1 -1
  52. package/ui/dist/assets/{pieDiagram-4H26LBE5-B9FyPCLY.js → pieDiagram-4H26LBE5-VQ1Y2aMu.js} +1 -1
  53. package/ui/dist/assets/{quadrantDiagram-W4KKPZXB-B89WFfQu.js → quadrantDiagram-W4KKPZXB-DHxOr_Bb.js} +1 -1
  54. package/ui/dist/assets/{requirementDiagram-4Y6WPE33-BYHKePgB.js → requirementDiagram-4Y6WPE33-IruBFJXP.js} +1 -1
  55. package/ui/dist/assets/{sankeyDiagram-5OEKKPKP-BW6YuBQM.js → sankeyDiagram-5OEKKPKP-J4usxNW5.js} +1 -1
  56. package/ui/dist/assets/{sequenceDiagram-3UESZ5HK-BnojqKwf.js → sequenceDiagram-3UESZ5HK-C6C-kFaI.js} +1 -1
  57. package/ui/dist/assets/{stateDiagram-AJRCARHV-C_x9t2o6.js → stateDiagram-AJRCARHV-CJsdQK0K.js} +1 -1
  58. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-CnDT2Btz.js +1 -0
  59. package/ui/dist/assets/theme-BoL8lq0C.css +1 -0
  60. package/ui/dist/assets/theme-PLJ1jPdr.js +21 -0
  61. package/ui/dist/assets/{timeline-definition-PNZ67QCA-CI8Ngfzv.js → timeline-definition-PNZ67QCA-DR-akfNv.js} +1 -1
  62. package/ui/dist/assets/{vennDiagram-CIIHVFJN-CPRKGc2P.js → vennDiagram-CIIHVFJN-HohIp6U7.js} +1 -1
  63. package/ui/dist/assets/{visual-editor-DUVPRlY3.js → visual-editor-DeCtedTT.js} +12 -12
  64. package/ui/dist/assets/{wardley-L42UT6IY-CZY42jFT.js → wardley-L42UT6IY-DI0ohKT0.js} +1 -1
  65. package/ui/dist/assets/{wardleyDiagram-YWT4CUSO-CGKyWKnw.js → wardleyDiagram-YWT4CUSO-C1s7Fzl1.js} +1 -1
  66. package/ui/dist/assets/{xychartDiagram-2RQKCTM6-Cq-onAc3.js → xychartDiagram-2RQKCTM6-BbPEPR4c.js} +1 -1
  67. package/ui/dist/graph.html +3 -3
  68. package/ui/dist/index.html +3 -3
  69. package/ui/dist/assets/channel-BlWnHbuq.js +0 -1
  70. package/ui/dist/assets/classDiagram-4FO5ZUOK-D3OdfPqd.js +0 -1
  71. package/ui/dist/assets/classDiagram-v2-Q7XG4LA2-D3OdfPqd.js +0 -1
  72. package/ui/dist/assets/graph-D_tIaE_I.js +0 -2
  73. package/ui/dist/assets/main-BeHrzLrS.js +0 -273
  74. package/ui/dist/assets/stateDiagram-v2-BHNVJYJU-CBZx8gKT.js +0 -1
  75. package/ui/dist/assets/theme-CFHWfrn1.css +0 -1
  76. package/ui/dist/assets/theme-DS1fBM5L.js +0 -1
@@ -1,4 +1,4 @@
1
- import{s as gi,g as xi,p as Xt,o as di,a as fi,b as pi,_ as a,l as Yt,H as mi,d as yi,y as bi,C as _t,h as Ai,E as Nt,F as wi,I as Ci,al as Si,Q as Wt}from"./mermaid.core-BZZdRyuR.js";import"./transform-BwXaE9hv.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-COY9pyF4.js";import"./main-BeHrzLrS.js";import"./theme-DS1fBM5L.js";import"./editor-CTtDusro.js";import"./defaultLocale-DX6XiGOO.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var I=Ri(y).map(function(m){return v+o*m});return i(E?I.reverse():I)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=(function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],I=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],V={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,It=0,hi=2,Mt=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||Mt,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var M,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((M===null||typeof M>"u")&&(M=Vt()),z=rt[q]&&rt[q][M]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&&gt.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
1
+ import{s as gi,g as xi,p as Xt,o as di,a as fi,b as pi,_ as a,l as Yt,H as mi,d as yi,y as bi,C as _t,h as Ai,E as Nt,F as wi,I as Ci,al as Si,Q as Wt}from"./mermaid.core-DdiilVI8.js";import"./transform-BwXaE9hv.js";import{i as _i}from"./init-Gi6I4Gst.js";import{o as ki}from"./ordinal-Cboi1Yqb.js";import{l as zt}from"./linear-COY9pyF4.js";import"./main-BuVawP8Y.js";import"./theme-PLJ1jPdr.js";import"./editor-CTtDusro.js";import"./defaultLocale-DX6XiGOO.js";function Ri(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function bt(){var e=ki().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,u,p=!1,f=0,T=0,P=.5;delete e.unknown;function _(){var y=t().length,E=n<s,v=E?n:s,L=E?s:n;o=(L-v)/Math.max(1,y-f+T*2),p&&(o=Math.floor(o)),v+=(L-v-o*(y-f))*P,u=o*(1-f),p&&(v=Math.round(v),u=Math.round(u));var I=Ri(y).map(function(m){return v+o*m});return i(E?I.reverse():I)}return e.domain=function(y){return arguments.length?(t(y),_()):t()},e.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,_()):[s,n]},e.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,p=!0,_()},e.bandwidth=function(){return u},e.step=function(){return o},e.round=function(y){return arguments.length?(p=!!y,_()):p},e.padding=function(y){return arguments.length?(f=Math.min(1,T=+y),_()):f},e.paddingInner=function(y){return arguments.length?(f=Math.min(1,y),_()):f},e.paddingOuter=function(y){return arguments.length?(T=+y,_()):T},e.align=function(y){return arguments.length?(P=Math.max(0,Math.min(1,y)),_()):P},e.copy=function(){return bt(t(),[s,n]).round(p).paddingInner(f).paddingOuter(T).align(P)},_i.apply(_(),arguments)}var At=(function(){var e=a(function(F,h,c,g){for(c=c||{},g=F.length;g--;c[F[g]]=h);return c},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],u=[1,7],p=[1,5,10,12,14,16,18,19,21,23,34,35,36],f=[1,25],T=[1,26],P=[1,28],_=[1,29],y=[1,30],E=[1,31],v=[1,32],L=[1,33],I=[1,34],m=[1,35],R=[1,36],l=[1,37],W=[1,43],O=[1,42],X=[1,47],Y=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],U=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],b=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],w=[1,64],V={trace:a(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:a(function(h,c,g,x,C,r,rt){var d=r.length-1;switch(C){case 5:x.setOrientation(r[d]);break;case 9:x.setDiagramTitle(r[d].text.trim());break;case 12:x.setLineData({text:"",type:"text"},r[d]);break;case 13:x.setLineData(r[d-1],r[d]);break;case 14:x.setBarData({text:"",type:"text"},r[d]);break;case 15:x.setBarData(r[d-1],r[d]);break;case 16:this.$=r[d].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=r[d].trim(),x.setAccDescription(this.$);break;case 19:this.$=r[d-1];break;case 20:this.$=[Number(r[d-2]),...r[d]];break;case 21:this.$=[Number(r[d])];break;case 22:x.setXAxisTitle(r[d]);break;case 23:x.setXAxisTitle(r[d-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(r[d]);break;case 26:x.setXAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 27:this.$=r[d-1];break;case 28:this.$=[r[d-2],...r[d]];break;case 29:this.$=[r[d]];break;case 30:x.setYAxisTitle(r[d]);break;case 31:x.setYAxisTitle(r[d-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(r[d-2]),Number(r[d]));break;case 37:this.$={text:r[d],type:"text"};break;case 38:this.$={text:r[d],type:"text"};break;case 39:this.$={text:r[d],type:"markdown"};break;case 40:this.$=r[d];break;case 41:this.$=r[d-1]+""+r[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:u}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:u}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:u}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(p,[2,34]),e(p,[2,35]),e(p,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:u}),{1:[2,3]},e(p,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:u}),{11:23,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:39,13:38,24:W,27:O,29:40,30:41,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:45,15:44,27:X,33:46,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:49,17:48,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{11:52,17:51,24:Y,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},{20:[1,53]},{22:[1,54]},e(S,[2,18]),{1:[2,2]},e(S,[2,8]),e(S,[2,9]),e(U,[2,37],{40:55,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l}),e(U,[2,38]),e(U,[2,39]),e(b,[2,40]),e(b,[2,42]),e(b,[2,43]),e(b,[2,44]),e(b,[2,45]),e(b,[2,46]),e(b,[2,47]),e(b,[2,48]),e(b,[2,49]),e(b,[2,50]),e(b,[2,51]),e(S,[2,10]),e(S,[2,22],{30:41,29:56,24:W,27:O}),e(S,[2,24]),e(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,11]),e(S,[2,30],{33:60,27:X}),e(S,[2,32]),{31:[1,61]},e(S,[2,12]),{17:62,24:Y},{25:63,27:w},e(S,[2,14]),{17:65,24:Y},e(S,[2,16]),e(S,[2,17]),e(b,[2,41]),e(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(S,[2,31]),{27:[1,69]},e(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(S,[2,15]),e(S,[2,26]),e(S,[2,27]),{11:59,32:72,37:24,38:f,39:T,40:27,41:P,42:_,43:y,44:E,45:v,46:L,47:I,48:m,49:R,50:l},e(S,[2,33]),e(S,[2,19]),{25:73,27:w},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(h,c){if(c.recoverable)this.trace(h);else{var g=new Error(h);throw g.hash=c,g}},"parseError"),parse:a(function(h){var c=this,g=[0],x=[],C=[null],r=[],rt=this.table,d="",ct=0,It=0,hi=2,Mt=1,li=r.slice.call(arguments,1),D=Object.create(this.lexer),$={yy:{}};for(var ft in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ft)&&($.yy[ft]=this.yy[ft]);D.setInput(h,$.yy),$.yy.lexer=D,$.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var pt=D.yylloc;r.push(pt);var ci=D.options&&D.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(B){g.length=g.length-2*B,C.length=C.length-B,r.length=r.length-B}a(ui,"popStack");function Vt(){var B;return B=x.pop()||D.lex()||Mt,typeof B!="number"&&(B instanceof Array&&(x=B,B=x.pop()),B=c.symbols_[B]||B),B}a(Vt,"lex");for(var M,q,z,mt,G={},ut,N,Bt,gt;;){if(q=g[g.length-1],this.defaultActions[q]?z=this.defaultActions[q]:((M===null||typeof M>"u")&&(M=Vt()),z=rt[q]&&rt[q][M]),typeof z>"u"||!z.length||!z[0]){var yt="";gt=[];for(ut in rt[q])this.terminals_[ut]&&ut>hi&&gt.push("'"+this.terminals_[ut]+"'");D.showPosition?yt="Parse error on line "+(ct+1)+`:
2
2
  `+D.showPosition()+`
3
3
  Expecting `+gt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":yt="Parse error on line "+(ct+1)+": Unexpected "+(M==Mt?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(yt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:pt,expected:gt})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+q+", token: "+M);switch(z[0]){case 1:g.push(M),C.push(D.yytext),r.push(D.yylloc),g.push(z[1]),M=null,It=D.yyleng,d=D.yytext,ct=D.yylineno,pt=D.yylloc;break;case 2:if(N=this.productions_[z[1]][1],G.$=C[C.length-N],G._$={first_line:r[r.length-(N||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(N||1)].first_column,last_column:r[r.length-1].last_column},ci&&(G._$.range=[r[r.length-(N||1)].range[0],r[r.length-1].range[1]]),mt=this.performAction.apply(G,[d,It,ct,$.yy,z[1],C,r].concat(li)),typeof mt<"u")return mt;N&&(g=g.slice(0,-1*N*2),C=C.slice(0,-1*N),r=r.slice(0,-1*N)),g.push(this.productions_[z[1]][0]),C.push(G.$),r.push(G._$),Bt=rt[g[g.length-2]][g[g.length-1]],g.push(Bt);break;case 3:return!0}}return!0},"parse")},k=(function(){var F={EOF:1,parseError:a(function(c,g){if(this.yy.parser)this.yy.parser.parseError(c,g);else throw new Error(c)},"parseError"),setInput:a(function(h,c){return this.yy=c||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:a(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var c=h.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:a(function(h){var c=h.length,g=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(h){this.unput(this.match.slice(h))},"less"),pastInput:a(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var h=this.pastInput(),c=new Array(h.length+1).join("-");return h+this.upcomingInput()+`
@@ -5,10 +5,10 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>RepoMind — Graph</title>
7
7
  <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
8
- <script type="module" crossorigin src="/assets/graph-D_tIaE_I.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/theme-DS1fBM5L.js">
8
+ <script type="module" crossorigin src="/assets/graph-CxZcS9dt.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/theme-PLJ1jPdr.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/transform-BwXaE9hv.js">
11
- <link rel="stylesheet" crossorigin href="/assets/theme-CFHWfrn1.css">
11
+ <link rel="stylesheet" crossorigin href="/assets/theme-BoL8lq0C.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="app" class="graph-page">
@@ -5,10 +5,10 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>RepoMind</title>
7
7
  <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
8
- <script type="module" crossorigin src="/assets/main-BeHrzLrS.js"></script>
9
- <link rel="modulepreload" crossorigin href="/assets/theme-DS1fBM5L.js">
8
+ <script type="module" crossorigin src="/assets/main-BuVawP8Y.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/theme-PLJ1jPdr.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/editor-CTtDusro.js">
11
- <link rel="stylesheet" crossorigin href="/assets/theme-CFHWfrn1.css">
11
+ <link rel="stylesheet" crossorigin href="/assets/theme-BoL8lq0C.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="app">
@@ -1 +0,0 @@
1
- import{ah as o,ai as n}from"./mermaid.core-BZZdRyuR.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-CRO5yOrB.js";import{_ as i}from"./mermaid.core-BZZdRyuR.js";import"./transform-BwXaE9hv.js";import"./chunk-FMBD7UC4-CJemLien.js";import"./chunk-ND2GUHAM-B_z-tw44.js";import"./chunk-55IACEB6-BCx7dyYV.js";import"./chunk-2J33WTMH-0LcH4vIA.js";import"./main-BeHrzLrS.js";import"./theme-DS1fBM5L.js";import"./editor-CTtDusro.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-CRO5yOrB.js";import{_ as i}from"./mermaid.core-BZZdRyuR.js";import"./transform-BwXaE9hv.js";import"./chunk-FMBD7UC4-CJemLien.js";import"./chunk-ND2GUHAM-B_z-tw44.js";import"./chunk-55IACEB6-BCx7dyYV.js";import"./chunk-2J33WTMH-0LcH4vIA.js";import"./main-BeHrzLrS.js";import"./theme-DS1fBM5L.js";import"./editor-CTtDusro.js";var c={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{c as diagram};
@@ -1,2 +0,0 @@
1
- import{v as _t,w as Mt,B as zt,l as bt,D as Tt}from"./theme-DS1fBM5L.js";import{s as F,g as ct,t as Nt,j as J,T as it,k as ot}from"./transform-BwXaE9hv.js";function At(t){let e;for(;e=t.sourceEvent;)t=e;return t}function K(t,e){if(t=At(t),e===void 0&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var a=n.createSVGPoint();return a.x=t.clientX,a.y=t.clientY,a=a.matrixTransform(e.getScreenCTM().inverse()),[a.x,a.y]}if(e.getBoundingClientRect){var u=e.getBoundingClientRect();return[t.clientX-u.left-e.clientLeft,t.clientY-u.top-e.clientTop]}}return[t.pageX,t.pageY]}const Et={passive:!1},tt={capture:!0,passive:!1};function at(t){t.stopImmediatePropagation()}function W(t){t.preventDefault(),t.stopImmediatePropagation()}function vt(t){var e=t.document.documentElement,n=F(t).on("dragstart.drag",W,tt);"onselectstart"in e?n.on("selectstart.drag",W,tt):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function xt(t,e){var n=t.document.documentElement,a=F(t).on("dragstart.drag",null);e&&(a.on("click.drag",W,tt),setTimeout(function(){a.on("click.drag",null)},0)),"onselectstart"in n?a.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const et=t=>()=>t;function st(t,{sourceEvent:e,subject:n,target:a,identifier:u,active:s,x:l,y:p,dx:v,dy:o,dispatch:y}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:a,enumerable:!0,configurable:!0},identifier:{value:u,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:l,enumerable:!0,configurable:!0},y:{value:p,enumerable:!0,configurable:!0},dx:{value:v,enumerable:!0,configurable:!0},dy:{value:o,enumerable:!0,configurable:!0},_:{value:y}})}st.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function St(t){return!t.ctrlKey&&!t.button}function Dt(){return this.parentNode}function It(t,e){return e??{x:t.x,y:t.y}}function kt(){return navigator.maxTouchPoints||"ontouchstart"in this}function Pt(){var t=St,e=Dt,n=It,a=kt,u={},s=ct("start","drag","end"),l=0,p,v,o,y,T=0;function d(r){r.on("mousedown.drag",m).filter(a).on("touchstart.drag",h).on("touchmove.drag",c,Et).on("touchend.drag touchcancel.drag",w).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(r,M){if(!(y||!t.call(this,r,M))){var A=_(this,e.call(this,r,M),r,M,"mouse");A&&(F(r.view).on("mousemove.drag",N,tt).on("mouseup.drag",g,tt),vt(r.view),at(r),o=!1,p=r.clientX,v=r.clientY,A("start",r))}}function N(r){if(W(r),!o){var M=r.clientX-p,A=r.clientY-v;o=M*M+A*A>T}u.mouse("drag",r)}function g(r){F(r.view).on("mousemove.drag mouseup.drag",null),xt(r.view,o),W(r),u.mouse("end",r)}function h(r,M){if(t.call(this,r,M)){var A=r.changedTouches,E=e.call(this,r,M),S=A.length,x,I;for(x=0;x<S;++x)(I=_(this,E,r,M,A[x].identifier,A[x]))&&(at(r),I("start",r,A[x]))}}function c(r){var M=r.changedTouches,A=M.length,E,S;for(E=0;E<A;++E)(S=u[M[E].identifier])&&(W(r),S("drag",r,M[E]))}function w(r){var M=r.changedTouches,A=M.length,E,S;for(y&&clearTimeout(y),y=setTimeout(function(){y=null},500),E=0;E<A;++E)(S=u[M[E].identifier])&&(at(r),S("end",r,M[E]))}function _(r,M,A,E,S,x){var I=s.copy(),j=K(x||A,M),V,L,i;if((i=n.call(r,new st("beforestart",{sourceEvent:A,target:d,identifier:S,active:l,x:j[0],y:j[1],dx:0,dy:0,dispatch:I}),E))!=null)return V=i.x-j[0]||0,L=i.y-j[1]||0,function z(f,b,D){var k=j,P;switch(f){case"start":u[S]=z,P=l++;break;case"end":delete u[S],--l;case"drag":j=K(D||b,M),P=l;break}I.call(f,r,new st(f,{sourceEvent:b,subject:i,target:d,identifier:S,active:P,x:j[0]+V,y:j[1]+L,dx:j[0]-k[0],dy:j[1]-k[1],dispatch:I}),E)}}return d.filter=function(r){return arguments.length?(t=typeof r=="function"?r:et(!!r),d):t},d.container=function(r){return arguments.length?(e=typeof r=="function"?r:et(r),d):e},d.subject=function(r){return arguments.length?(n=typeof r=="function"?r:et(r),d):n},d.touchable=function(r){return arguments.length?(a=typeof r=="function"?r:et(!!r),d):a},d.on=function(){var r=s.on.apply(s,arguments);return r===s?d:r},d.clickDistance=function(r){return arguments.length?(T=(r=+r)*r,d):Math.sqrt(T)},d}var jt=1e-12;function ft(t){return((t=Math.exp(t))+1/t)/2}function $t(t){return((t=Math.exp(t))-1/t)/2}function Yt(t){return((t=Math.exp(2*t))-1)/(t+1)}const Xt=(function t(e,n,a){function u(s,l){var p=s[0],v=s[1],o=s[2],y=l[0],T=l[1],d=l[2],m=y-p,N=T-v,g=m*m+N*N,h,c;if(g<jt)c=Math.log(d/o)/e,h=function(E){return[p+E*m,v+E*N,o*Math.exp(e*E*c)]};else{var w=Math.sqrt(g),_=(d*d-o*o+a*g)/(2*o*n*w),r=(d*d-o*o-a*g)/(2*d*n*w),M=Math.log(Math.sqrt(_*_+1)-_),A=Math.log(Math.sqrt(r*r+1)-r);c=(A-M)/e,h=function(E){var S=E*c,x=ft(M),I=o/(n*w)*(x*Yt(e*S+M)-$t(M));return[p+I*m,v+I*N,o*x/ft(e*S+M)]}}return h.duration=c*1e3*e/Math.SQRT2,h}return u.rho=function(s){var l=Math.max(.001,+s),p=l*l,v=p*p;return t(l,p,v)},u})(Math.SQRT2,2,4);function gt(t,e){var n,a=1;t==null&&(t=0),e==null&&(e=0);function u(){var s,l=n.length,p,v=0,o=0;for(s=0;s<l;++s)p=n[s],v+=p.x,o+=p.y;for(v=(v/l-t)*a,o=(o/l-e)*a,s=0;s<l;++s)p=n[s],p.x-=v,p.y-=o}return u.initialize=function(s){n=s},u.x=function(s){return arguments.length?(t=+s,u):t},u.y=function(s){return arguments.length?(e=+s,u):e},u.strength=function(s){return arguments.length?(a=+s,u):a},u}function Lt(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return wt(this.cover(e,n),e,n,t)}function wt(t,e,n,a){if(isNaN(e)||isNaN(n))return t;var u,s=t._root,l={data:a},p=t._x0,v=t._y0,o=t._x1,y=t._y1,T,d,m,N,g,h,c,w;if(!s)return t._root=l,t;for(;s.length;)if((g=e>=(T=(p+o)/2))?p=T:o=T,(h=n>=(d=(v+y)/2))?v=d:y=d,u=s,!(s=s[c=h<<1|g]))return u[c]=l,t;if(m=+t._x.call(null,s.data),N=+t._y.call(null,s.data),e===m&&n===N)return l.next=s,u?u[c]=l:t._root=l,t;do u=u?u[c]=new Array(4):t._root=new Array(4),(g=e>=(T=(p+o)/2))?p=T:o=T,(h=n>=(d=(v+y)/2))?v=d:y=d;while((c=h<<1|g)===(w=(N>=d)<<1|m>=T));return u[w]=s,u[c]=l,t}function Vt(t){var e,n,a=t.length,u,s,l=new Array(a),p=new Array(a),v=1/0,o=1/0,y=-1/0,T=-1/0;for(n=0;n<a;++n)isNaN(u=+this._x.call(null,e=t[n]))||isNaN(s=+this._y.call(null,e))||(l[n]=u,p[n]=s,u<v&&(v=u),u>y&&(y=u),s<o&&(o=s),s>T&&(T=s));if(v>y||o>T)return this;for(this.cover(v,o).cover(y,T),n=0;n<a;++n)wt(this,l[n],p[n],t[n]);return this}function Ct(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,a=this._y0,u=this._x1,s=this._y1;if(isNaN(n))u=(n=Math.floor(t))+1,s=(a=Math.floor(e))+1;else{for(var l=u-n||1,p=this._root,v,o;n>t||t>=u||a>e||e>=s;)switch(o=(e<a)<<1|t<n,v=new Array(4),v[o]=p,p=v,l*=2,o){case 0:u=n+l,s=a+l;break;case 1:n=u-l,s=a+l;break;case 2:u=n+l,a=s-l;break;case 3:n=u-l,a=s-l;break}this._root&&this._root.length&&(this._root=p)}return this._x0=n,this._y0=a,this._x1=u,this._y1=s,this}function Rt(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function Bt(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function C(t,e,n,a,u){this.node=t,this.x0=e,this.y0=n,this.x1=a,this.y1=u}function Gt(t,e,n){var a,u=this._x0,s=this._y0,l,p,v,o,y=this._x1,T=this._y1,d=[],m=this._root,N,g;for(m&&d.push(new C(m,u,s,y,T)),n==null?n=1/0:(u=t-n,s=e-n,y=t+n,T=e+n,n*=n);N=d.pop();)if(!(!(m=N.node)||(l=N.x0)>y||(p=N.y0)>T||(v=N.x1)<u||(o=N.y1)<s))if(m.length){var h=(l+v)/2,c=(p+o)/2;d.push(new C(m[3],h,c,v,o),new C(m[2],l,c,h,o),new C(m[1],h,p,v,c),new C(m[0],l,p,h,c)),(g=(e>=c)<<1|t>=h)&&(N=d[d.length-1],d[d.length-1]=d[d.length-1-g],d[d.length-1-g]=N)}else{var w=t-+this._x.call(null,m.data),_=e-+this._y.call(null,m.data),r=w*w+_*_;if(r<n){var M=Math.sqrt(n=r);u=t-M,s=e-M,y=t+M,T=e+M,a=m.data}}return a}function Ht(t){if(isNaN(y=+this._x.call(null,t))||isNaN(T=+this._y.call(null,t)))return this;var e,n=this._root,a,u,s,l=this._x0,p=this._y0,v=this._x1,o=this._y1,y,T,d,m,N,g,h,c;if(!n)return this;if(n.length)for(;;){if((N=y>=(d=(l+v)/2))?l=d:v=d,(g=T>=(m=(p+o)/2))?p=m:o=m,e=n,!(n=n[h=g<<1|N]))return this;if(!n.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(a=e,c=h)}for(;n.data!==t;)if(u=n,!(n=n.next))return this;return(s=n.next)&&delete n.next,u?(s?u.next=s:delete u.next,this):e?(s?e[h]=s:delete e[h],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(a?a[c]=n:this._root=n),this):(this._root=s,this)}function Ft(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function Ut(){return this._root}function qt(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function Kt(t){var e=[],n,a=this._root,u,s,l,p,v;for(a&&e.push(new C(a,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(a=n.node,s=n.x0,l=n.y0,p=n.x1,v=n.y1)&&a.length){var o=(s+p)/2,y=(l+v)/2;(u=a[3])&&e.push(new C(u,o,y,p,v)),(u=a[2])&&e.push(new C(u,s,y,o,v)),(u=a[1])&&e.push(new C(u,o,l,p,y)),(u=a[0])&&e.push(new C(u,s,l,o,y))}return this}function Ot(t){var e=[],n=[],a;for(this._root&&e.push(new C(this._root,this._x0,this._y0,this._x1,this._y1));a=e.pop();){var u=a.node;if(u.length){var s,l=a.x0,p=a.y0,v=a.x1,o=a.y1,y=(l+v)/2,T=(p+o)/2;(s=u[0])&&e.push(new C(s,l,p,y,T)),(s=u[1])&&e.push(new C(s,y,p,v,T)),(s=u[2])&&e.push(new C(s,l,T,y,o)),(s=u[3])&&e.push(new C(s,y,T,v,o))}n.push(a)}for(;a=n.pop();)t(a.node,a.x0,a.y0,a.x1,a.y1);return this}function Qt(t){return t[0]}function Wt(t){return arguments.length?(this._x=t,this):this._x}function Zt(t){return t[1]}function Jt(t){return arguments.length?(this._y=t,this):this._y}function lt(t,e,n){var a=new ht(e??Qt,n??Zt,NaN,NaN,NaN,NaN);return t==null?a:a.addAll(t)}function ht(t,e,n,a,u,s){this._x=t,this._y=e,this._x0=n,this._y0=a,this._x1=u,this._y1=s,this._root=void 0}function mt(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var R=lt.prototype=ht.prototype;R.copy=function(){var t=new ht(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,a;if(!e)return t;if(!e.length)return t._root=mt(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var u=0;u<4;++u)(a=e.source[u])&&(a.length?n.push({source:a,target:e.target[u]=new Array(4)}):e.target[u]=mt(a));return t};R.add=Lt;R.addAll=Vt;R.cover=Ct;R.data=Rt;R.extent=Bt;R.find=Gt;R.remove=Ht;R.removeAll=Ft;R.root=Ut;R.size=qt;R.visit=Kt;R.visitAfter=Ot;R.x=Wt;R.y=Jt;function Q(t){return function(){return t}}function O(t){return(t()-.5)*1e-6}function te(t){return t.x+t.vx}function ee(t){return t.y+t.vy}function ne(t){var e,n,a,u=1,s=1;typeof t!="function"&&(t=Q(t==null?1:+t));function l(){for(var o,y=e.length,T,d,m,N,g,h,c=0;c<s;++c)for(T=lt(e,te,ee).visitAfter(p),o=0;o<y;++o)d=e[o],g=n[d.index],h=g*g,m=d.x+d.vx,N=d.y+d.vy,T.visit(w);function w(_,r,M,A,E){var S=_.data,x=_.r,I=g+x;if(S){if(S.index>d.index){var j=m-S.x-S.vx,V=N-S.y-S.vy,L=j*j+V*V;L<I*I&&(j===0&&(j=O(a),L+=j*j),V===0&&(V=O(a),L+=V*V),L=(I-(L=Math.sqrt(L)))/L*u,d.vx+=(j*=L)*(I=(x*=x)/(h+x)),d.vy+=(V*=L)*I,S.vx-=j*(I=1-I),S.vy-=V*I)}return}return r>m+I||A<m-I||M>N+I||E<N-I}}function p(o){if(o.data)return o.r=n[o.data.index];for(var y=o.r=0;y<4;++y)o[y]&&o[y].r>o.r&&(o.r=o[y].r)}function v(){if(e){var o,y=e.length,T;for(n=new Array(y),o=0;o<y;++o)T=e[o],n[T.index]=+t(T,o,e)}}return l.initialize=function(o,y){e=o,a=y,v()},l.iterations=function(o){return arguments.length?(s=+o,l):s},l.strength=function(o){return arguments.length?(u=+o,l):u},l.radius=function(o){return arguments.length?(t=typeof o=="function"?o:Q(+o),v(),l):t},l}function re(t){return t.index}function dt(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function ie(t){var e=re,n=T,a,u=Q(30),s,l,p,v,o,y=1;t==null&&(t=[]);function T(h){return 1/Math.min(p[h.source.index],p[h.target.index])}function d(h){for(var c=0,w=t.length;c<y;++c)for(var _=0,r,M,A,E,S,x,I;_<w;++_)r=t[_],M=r.source,A=r.target,E=A.x+A.vx-M.x-M.vx||O(o),S=A.y+A.vy-M.y-M.vy||O(o),x=Math.sqrt(E*E+S*S),x=(x-s[_])/x*h*a[_],E*=x,S*=x,A.vx-=E*(I=v[_]),A.vy-=S*I,M.vx+=E*(I=1-I),M.vy+=S*I}function m(){if(l){var h,c=l.length,w=t.length,_=new Map(l.map((M,A)=>[e(M,A,l),M])),r;for(h=0,p=new Array(c);h<w;++h)r=t[h],r.index=h,typeof r.source!="object"&&(r.source=dt(_,r.source)),typeof r.target!="object"&&(r.target=dt(_,r.target)),p[r.source.index]=(p[r.source.index]||0)+1,p[r.target.index]=(p[r.target.index]||0)+1;for(h=0,v=new Array(w);h<w;++h)r=t[h],v[h]=p[r.source.index]/(p[r.source.index]+p[r.target.index]);a=new Array(w),N(),s=new Array(w),g()}}function N(){if(l)for(var h=0,c=t.length;h<c;++h)a[h]=+n(t[h],h,t)}function g(){if(l)for(var h=0,c=t.length;h<c;++h)s[h]=+u(t[h],h,t)}return d.initialize=function(h,c){l=h,o=c,m()},d.links=function(h){return arguments.length?(t=h,m(),d):t},d.id=function(h){return arguments.length?(e=h,d):e},d.iterations=function(h){return arguments.length?(y=+h,d):y},d.strength=function(h){return arguments.length?(n=typeof h=="function"?h:Q(+h),N(),d):n},d.distance=function(h){return arguments.length?(u=typeof h=="function"?h:Q(+h),g(),d):u},d}const oe=1664525,ae=1013904223,pt=4294967296;function ue(){let t=1;return()=>(t=(oe*t+ae)%pt)/pt}function se(t){return t.x}function ce(t){return t.y}var le=10,he=Math.PI*(3-Math.sqrt(5));function fe(t){var e,n=1,a=.001,u=1-Math.pow(a,1/300),s=0,l=.6,p=new Map,v=Nt(T),o=ct("tick","end"),y=ue();t==null&&(t=[]);function T(){d(),o.call("tick",e),n<a&&(v.stop(),o.call("end",e))}function d(g){var h,c=t.length,w;g===void 0&&(g=1);for(var _=0;_<g;++_)for(n+=(s-n)*u,p.forEach(function(r){r(n)}),h=0;h<c;++h)w=t[h],w.fx==null?w.x+=w.vx*=l:(w.x=w.fx,w.vx=0),w.fy==null?w.y+=w.vy*=l:(w.y=w.fy,w.vy=0);return e}function m(){for(var g=0,h=t.length,c;g<h;++g){if(c=t[g],c.index=g,c.fx!=null&&(c.x=c.fx),c.fy!=null&&(c.y=c.fy),isNaN(c.x)||isNaN(c.y)){var w=le*Math.sqrt(.5+g),_=g*he;c.x=w*Math.cos(_),c.y=w*Math.sin(_)}(isNaN(c.vx)||isNaN(c.vy))&&(c.vx=c.vy=0)}}function N(g){return g.initialize&&g.initialize(t,y),g}return m(),e={tick:d,restart:function(){return v.restart(T),e},stop:function(){return v.stop(),e},nodes:function(g){return arguments.length?(t=g,m(),p.forEach(N),e):t},alpha:function(g){return arguments.length?(n=+g,e):n},alphaMin:function(g){return arguments.length?(a=+g,e):a},alphaDecay:function(g){return arguments.length?(u=+g,e):+u},alphaTarget:function(g){return arguments.length?(s=+g,e):s},velocityDecay:function(g){return arguments.length?(l=1-g,e):1-l},randomSource:function(g){return arguments.length?(y=g,p.forEach(N),e):y},force:function(g,h){return arguments.length>1?(h==null?p.delete(g):p.set(g,N(h)),e):p.get(g)},find:function(g,h,c){var w=0,_=t.length,r,M,A,E,S;for(c==null?c=1/0:c*=c,w=0;w<_;++w)E=t[w],r=g-E.x,M=h-E.y,A=r*r+M*M,A<c&&(S=E,c=A);return S},on:function(g,h){return arguments.length>1?(o.on(g,h),e):o.on(g)}}}function ge(){var t,e,n,a,u=Q(-30),s,l=1,p=1/0,v=.81;function o(m){var N,g=t.length,h=lt(t,se,ce).visitAfter(T);for(a=m,N=0;N<g;++N)e=t[N],h.visit(d)}function y(){if(t){var m,N=t.length,g;for(s=new Array(N),m=0;m<N;++m)g=t[m],s[g.index]=+u(g,m,t)}}function T(m){var N=0,g,h,c=0,w,_,r;if(m.length){for(w=_=r=0;r<4;++r)(g=m[r])&&(h=Math.abs(g.value))&&(N+=g.value,c+=h,w+=h*g.x,_+=h*g.y);m.x=w/c,m.y=_/c}else{g=m,g.x=g.data.x,g.y=g.data.y;do N+=s[g.data.index];while(g=g.next)}m.value=N}function d(m,N,g,h){if(!m.value)return!0;var c=m.x-e.x,w=m.y-e.y,_=h-N,r=c*c+w*w;if(_*_/v<r)return r<p&&(c===0&&(c=O(n),r+=c*c),w===0&&(w=O(n),r+=w*w),r<l&&(r=Math.sqrt(l*r)),e.vx+=c*m.value*a/r,e.vy+=w*m.value*a/r),!0;if(m.length||r>=p)return;(m.data!==e||m.next)&&(c===0&&(c=O(n),r+=c*c),w===0&&(w=O(n),r+=w*w),r<l&&(r=Math.sqrt(l*r)));do m.data!==e&&(_=s[m.data.index]*a/r,e.vx+=c*_,e.vy+=w*_);while(m=m.next)}return o.initialize=function(m,N){t=m,n=N,y()},o.strength=function(m){return arguments.length?(u=typeof m=="function"?m:Q(+m),y(),o):u},o.distanceMin=function(m){return arguments.length?(l=m*m,o):Math.sqrt(l)},o.distanceMax=function(m){return arguments.length?(p=m*m,o):Math.sqrt(p)},o.theta=function(m){return arguments.length?(v=m*m,o):Math.sqrt(v)},o}const nt=t=>()=>t;function me(t,{sourceEvent:e,target:n,transform:a,dispatch:u}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:a,enumerable:!0,configurable:!0},_:{value:u}})}function ut(t){t.stopImmediatePropagation()}function Z(t){t.preventDefault(),t.stopImmediatePropagation()}function de(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function pe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function yt(){return this.__zoom||J}function ye(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function ve(){return navigator.maxTouchPoints||"ontouchstart"in this}function xe(t,e,n){var a=t.invertX(e[0][0])-n[0][0],u=t.invertX(e[1][0])-n[1][0],s=t.invertY(e[0][1])-n[0][1],l=t.invertY(e[1][1])-n[1][1];return t.translate(u>a?(a+u)/2:Math.min(0,a)||Math.max(0,u),l>s?(s+l)/2:Math.min(0,s)||Math.max(0,l))}function we(){var t=de,e=pe,n=xe,a=ye,u=ve,s=[0,1/0],l=[[-1/0,-1/0],[1/0,1/0]],p=250,v=Xt,o=ct("start","zoom","end"),y,T,d,m=500,N=150,g=0,h=10;function c(i){i.property("__zoom",yt).on("wheel.zoom",S,{passive:!1}).on("mousedown.zoom",x).on("dblclick.zoom",I).filter(u).on("touchstart.zoom",j).on("touchmove.zoom",V).on("touchend.zoom touchcancel.zoom",L).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}c.transform=function(i,z,f,b){var D=i.selection?i.selection():i;D.property("__zoom",yt),i!==D?M(i,z,f,b):D.interrupt().each(function(){A(this,arguments).event(b).start().zoom(null,typeof z=="function"?z.apply(this,arguments):z).end()})},c.scaleBy=function(i,z,f,b){c.scaleTo(i,function(){var D=this.__zoom.k,k=typeof z=="function"?z.apply(this,arguments):z;return D*k},f,b)},c.scaleTo=function(i,z,f,b){c.transform(i,function(){var D=e.apply(this,arguments),k=this.__zoom,P=f==null?r(D):typeof f=="function"?f.apply(this,arguments):f,$=k.invert(P),Y=typeof z=="function"?z.apply(this,arguments):z;return n(_(w(k,Y),P,$),D,l)},f,b)},c.translateBy=function(i,z,f,b){c.transform(i,function(){return n(this.__zoom.translate(typeof z=="function"?z.apply(this,arguments):z,typeof f=="function"?f.apply(this,arguments):f),e.apply(this,arguments),l)},null,b)},c.translateTo=function(i,z,f,b,D){c.transform(i,function(){var k=e.apply(this,arguments),P=this.__zoom,$=b==null?r(k):typeof b=="function"?b.apply(this,arguments):b;return n(J.translate($[0],$[1]).scale(P.k).translate(typeof z=="function"?-z.apply(this,arguments):-z,typeof f=="function"?-f.apply(this,arguments):-f),k,l)},b,D)};function w(i,z){return z=Math.max(s[0],Math.min(s[1],z)),z===i.k?i:new it(z,i.x,i.y)}function _(i,z,f){var b=z[0]-f[0]*i.k,D=z[1]-f[1]*i.k;return b===i.x&&D===i.y?i:new it(i.k,b,D)}function r(i){return[(+i[0][0]+ +i[1][0])/2,(+i[0][1]+ +i[1][1])/2]}function M(i,z,f,b){i.on("start.zoom",function(){A(this,arguments).event(b).start()}).on("interrupt.zoom end.zoom",function(){A(this,arguments).event(b).end()}).tween("zoom",function(){var D=this,k=arguments,P=A(D,k).event(b),$=e.apply(D,k),Y=f==null?r($):typeof f=="function"?f.apply(D,k):f,H=Math.max($[1][0]-$[0][0],$[1][1]-$[0][1]),X=D.__zoom,B=typeof z=="function"?z.apply(D,k):z,U=v(X.invert(Y).concat(H/X.k),B.invert(Y).concat(H/B.k));return function(G){if(G===1)G=B;else{var q=U(G),rt=H/q[2];G=new it(rt,Y[0]-q[0]*rt,Y[1]-q[1]*rt)}P.zoom(null,G)}})}function A(i,z,f){return!f&&i.__zooming||new E(i,z)}function E(i,z){this.that=i,this.args=z,this.active=0,this.sourceEvent=null,this.extent=e.apply(i,z),this.taps=0}E.prototype={event:function(i){return i&&(this.sourceEvent=i),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(i,z){return this.mouse&&i!=="mouse"&&(this.mouse[1]=z.invert(this.mouse[0])),this.touch0&&i!=="touch"&&(this.touch0[1]=z.invert(this.touch0[0])),this.touch1&&i!=="touch"&&(this.touch1[1]=z.invert(this.touch1[0])),this.that.__zoom=z,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(i){var z=F(this.that).datum();o.call(i,this.that,new me(i,{sourceEvent:this.sourceEvent,target:c,transform:this.that.__zoom,dispatch:o}),z)}};function S(i,...z){if(!t.apply(this,arguments))return;var f=A(this,z).event(i),b=this.__zoom,D=Math.max(s[0],Math.min(s[1],b.k*Math.pow(2,a.apply(this,arguments)))),k=K(i);if(f.wheel)(f.mouse[0][0]!==k[0]||f.mouse[0][1]!==k[1])&&(f.mouse[1]=b.invert(f.mouse[0]=k)),clearTimeout(f.wheel);else{if(b.k===D)return;f.mouse=[k,b.invert(k)],ot(this),f.start()}Z(i),f.wheel=setTimeout(P,N),f.zoom("mouse",n(_(w(b,D),f.mouse[0],f.mouse[1]),f.extent,l));function P(){f.wheel=null,f.end()}}function x(i,...z){if(d||!t.apply(this,arguments))return;var f=i.currentTarget,b=A(this,z,!0).event(i),D=F(i.view).on("mousemove.zoom",Y,!0).on("mouseup.zoom",H,!0),k=K(i,f),P=i.clientX,$=i.clientY;vt(i.view),ut(i),b.mouse=[k,this.__zoom.invert(k)],ot(this),b.start();function Y(X){if(Z(X),!b.moved){var B=X.clientX-P,U=X.clientY-$;b.moved=B*B+U*U>g}b.event(X).zoom("mouse",n(_(b.that.__zoom,b.mouse[0]=K(X,f),b.mouse[1]),b.extent,l))}function H(X){D.on("mousemove.zoom mouseup.zoom",null),xt(X.view,b.moved),Z(X),b.event(X).end()}}function I(i,...z){if(t.apply(this,arguments)){var f=this.__zoom,b=K(i.changedTouches?i.changedTouches[0]:i,this),D=f.invert(b),k=f.k*(i.shiftKey?.5:2),P=n(_(w(f,k),b,D),e.apply(this,z),l);Z(i),p>0?F(this).transition().duration(p).call(M,P,b,i):F(this).call(c.transform,P,b,i)}}function j(i,...z){if(t.apply(this,arguments)){var f=i.touches,b=f.length,D=A(this,z,i.changedTouches.length===b).event(i),k,P,$,Y;for(ut(i),P=0;P<b;++P)$=f[P],Y=K($,this),Y=[Y,this.__zoom.invert(Y),$.identifier],D.touch0?!D.touch1&&D.touch0[2]!==Y[2]&&(D.touch1=Y,D.taps=0):(D.touch0=Y,k=!0,D.taps=1+!!y);y&&(y=clearTimeout(y)),k&&(D.taps<2&&(T=Y[0],y=setTimeout(function(){y=null},m)),ot(this),D.start())}}function V(i,...z){if(this.__zooming){var f=A(this,z).event(i),b=i.changedTouches,D=b.length,k,P,$,Y;for(Z(i),k=0;k<D;++k)P=b[k],$=K(P,this),f.touch0&&f.touch0[2]===P.identifier?f.touch0[0]=$:f.touch1&&f.touch1[2]===P.identifier&&(f.touch1[0]=$);if(P=f.that.__zoom,f.touch1){var H=f.touch0[0],X=f.touch0[1],B=f.touch1[0],U=f.touch1[1],G=(G=B[0]-H[0])*G+(G=B[1]-H[1])*G,q=(q=U[0]-X[0])*q+(q=U[1]-X[1])*q;P=w(P,Math.sqrt(G/q)),$=[(H[0]+B[0])/2,(H[1]+B[1])/2],Y=[(X[0]+U[0])/2,(X[1]+U[1])/2]}else if(f.touch0)$=f.touch0[0],Y=f.touch0[1];else return;f.zoom("touch",n(_(P,$,Y),f.extent,l))}}function L(i,...z){if(this.__zooming){var f=A(this,z).event(i),b=i.changedTouches,D=b.length,k,P;for(ut(i),d&&clearTimeout(d),d=setTimeout(function(){d=null},m),k=0;k<D;++k)P=b[k],f.touch0&&f.touch0[2]===P.identifier?delete f.touch0:f.touch1&&f.touch1[2]===P.identifier&&delete f.touch1;if(f.touch1&&!f.touch0&&(f.touch0=f.touch1,delete f.touch1),f.touch0)f.touch0[1]=this.__zoom.invert(f.touch0[0]);else if(f.end(),f.taps===2&&(P=K(P,this),Math.hypot(T[0]-P[0],T[1]-P[1])<h)){var $=F(this).on("dblclick.zoom");$&&$.apply(this,arguments)}}}return c.wheelDelta=function(i){return arguments.length?(a=typeof i=="function"?i:nt(+i),c):a},c.filter=function(i){return arguments.length?(t=typeof i=="function"?i:nt(!!i),c):t},c.touchable=function(i){return arguments.length?(u=typeof i=="function"?i:nt(!!i),c):u},c.extent=function(i){return arguments.length?(e=typeof i=="function"?i:nt([[+i[0][0],+i[0][1]],[+i[1][0],+i[1][1]]]),c):e},c.scaleExtent=function(i){return arguments.length?(s[0]=+i[0],s[1]=+i[1],c):[s[0],s[1]]},c.translateExtent=function(i){return arguments.length?(l[0][0]=+i[0][0],l[1][0]=+i[1][0],l[0][1]=+i[0][1],l[1][1]=+i[1][1],c):[[l[0][0],l[0][1]],[l[1][0],l[1][1]]]},c.constrain=function(i){return arguments.length?(n=i,c):n},c.duration=function(i){return arguments.length?(p=+i,c):p},c.interpolate=function(i){return arguments.length?(v=i,c):v},c.on=function(){var i=o.on.apply(o,arguments);return i===o?c:i},c.clickDistance=function(i){return arguments.length?(g=(i=+i)*i,c):Math.sqrt(g)},c.tapDistance=function(i){return arguments.length?(h=+i,c):h},c}const _e={adr:"#c97b4a","feature-spec":"#6abf69","glossary-term":"#b07cc6","open-question":"#e0c04a","agent-instruction":"#5b9fd4"};function Me(t){t.innerHTML="";const e=document.createElement("div");e.className="graph-empty hidden",e.textContent="No documents in graph",t.appendChild(e);const n=()=>t.clientWidth||800,a=()=>t.clientHeight||600,u=F(t).append("svg").attr("width",n()).attr("height",a()),s=u.append("g"),l=s.append("g"),p=s.append("g"),v=we().scaleExtent([.2,4]).on("zoom",_=>{s.attr("transform",_.transform)});u.call(v);let o=null,y=null,T=null,d=[],m=!1;function N(_,r=!0){if(r){u.transition().duration(400).call(v.transform,_);return}u.call(v.transform,_)}function g(_=48){if(d.length===0)return;const r=d.map(b=>b.x??0),M=d.map(b=>b.y??0),A=Math.min(...r),E=Math.max(...r),S=Math.min(...M),x=Math.max(...M),I=Math.max(E-A,1),j=Math.max(x-S,1),V=(A+E)/2,L=(S+x)/2,i=n(),z=a(),f=Math.min(2.5,Math.max(.35,Math.min((i-_*2)/I,(z-_*2)/j)));N(J.translate(i/2,z/2).scale(f).translate(-V,-L),!m),m=!0}function h(){m||d.length===0||g()}function c(_){const r=new Map;for(const M of _.nodes)r.set(M.slug,0);for(const M of _.edges)r.set(M.from,(r.get(M.from)??0)+1),r.set(M.to,(r.get(M.to)??0)+1);return r}function w(){u.attr("width",n()).attr("height",a()),o&&(o.force("center",gt(n()/2,a()/2)),o.alpha(.3).restart())}return window.addEventListener("resize",w),{load(_){if(_.nodes.length===0){e.classList.remove("hidden"),u.style("display","none"),o==null||o.stop();return}e.classList.add("hidden"),u.style("display","block"),o==null||o.stop(),m=!1,u.call(v.transform,J);const r=c(_),M=_.nodes.map(x=>({...x}));d=M;const A=_.edges.map(x=>({source:x.from,target:x.to}));o=fe(M).force("link",ie(A).id(x=>x.slug).distance(80)).force("charge",ge().strength(-180)).force("center",gt(n()/2,a()/2)).force("collision",ne().radius(24));const E=l.selectAll("line").data(A,x=>`${String(x.source)}-${String(x.target)}`).join("line").attr("class","link"),S=p.selectAll("g").data(M,x=>x.slug).join("g").attr("class",x=>x.slug===T?"node selected":"node").call(Pt().on("start",(x,I)=>{!x.active&&o&&o.alphaTarget(.3).restart();const j=I;j.fx=j.x,j.fy=j.y}).on("drag",(x,I)=>{const j=I;j.fx=x.x,j.fy=x.y}).on("end",(x,I)=>{!x.active&&o&&o.alphaTarget(0);const j=I;j.fx=null,j.fy=null})).on("click",(x,I)=>{T=I.slug,S.attr("class",j=>j.slug===T?"node selected":"node"),y==null||y(I.slug)});S.selectAll("circle").remove(),S.selectAll("text").remove(),S.append("circle").attr("r",x=>8+Math.min((r.get(x.slug)??0)*2,16)).attr("fill",x=>_e[x.type]??"#888"),S.append("title").text(x=>`${x.slug}
2
- ${x.title}`),S.append("text").attr("dy",4).attr("text-anchor","middle").text(x=>x.slug),o.on("tick",()=>{E.attr("x1",x=>x.source.x??0).attr("y1",x=>x.source.y??0).attr("x2",x=>x.target.x??0).attr("y2",x=>x.target.y??0),S.attr("transform",x=>`translate(${x.x??0},${x.y??0})`),!m&&o&&o.alpha()<.05&&h()})},selectSlug(_){T=_,p.selectAll("g.node").attr("class",r=>r.slug===T?"node selected":"node")},focusSlug(_){T=_,p.selectAll("g.node").attr("class",E=>E.slug===T?"node selected":"node");const r=d.find(E=>E.slug===_);if(!r||r.x===void 0||r.y===void 0)return;const M=n(),A=a();N(J.translate(M/2,A/2).scale(1.2).translate(-r.x,-r.y),!0)},onSelect(_){y=_},resize(){w(),m&&d.length>0&&g()},destroy(){o==null||o.stop(),window.removeEventListener("resize",w),u.remove(),e.remove()}}}_t();const ze="__all__";function be(){const t=new URLSearchParams(window.location.search).get("slug");return t!=null&&t.trim()?t:null}async function Te(){Mt(document.querySelector("#theme-toggle"));const t=document.querySelector("#graph"),e=document.querySelector("#stats"),n=Me(t);try{const[a,{drafts:u},s]=await Promise.all([zt(),bt(),Tt(ze)]);e.textContent=`v${a.version} · ${a.docCount} docs · ${s.nodes.length} nodes · ${u.length} drafts`,n.load(s);const l=be();l&&n.selectSlug(l),n.onSelect(p=>{window.location.href=`/?slug=${encodeURIComponent(p)}`}),requestAnimationFrame(()=>{n.resize()})}catch(a){e.textContent=a instanceof Error?a.message:"Failed to load graph"}}Te();
@@ -1,273 +0,0 @@
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
- <div class="dashboard-header">
4
- <h1 class="doc-title">Health &amp; publish</h1>
5
- <div class="workspace-actions">
6
- <button type="button" id="dash-export" class="btn-ghost">Export agents.md</button>
7
- <button type="button" id="dash-refresh" class="btn-ghost">Refresh</button>
8
- </div>
9
- </div>
10
- <div id="dash-check" class="dashboard-section"></div>
11
- <div id="dash-links" class="dashboard-section"></div>
12
- <div class="dashboard-section">
13
- <h2>Prepare docs</h2>
14
- <p class="dashboard-hint">Markdown files without RepoMind frontmatter. Add frontmatter to index them for MCP and the catalog.</p>
15
- <div class="dashboard-actions">
16
- <button type="button" id="dash-prepare-all" class="btn-primary btn-sm">Prepare all</button>
17
- <button type="button" id="dash-sync-links" class="btn-ghost btn-sm">Sync all links</button>
18
- </div>
19
- <ul id="dash-unprepared" class="queue-list"></ul>
20
- </div>
21
- <div class="dashboard-section">
22
- <h2>Publish queue</h2>
23
- <ul id="dash-queue" class="queue-list"></ul>
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(o){const p=o.ok?"check-ok":"check-fail",s=o.ok?"All checks passed":`${o.violations.length} issue(s)`;let a=`
26
- <h2>Schema check</h2>
27
- <p class="check-status ${p}">${s}</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
- <h2>Link health</h2>
30
- <div class="link-health-stats">
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
- </div>
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
- <div class="queue-main">
37
- <div class="queue-title">${R(s.relativePath)}</div>
38
- <div class="meta">${R(s.suggestedType)} · slug: ${R(s.suggestedSlug)}</div>
39
- </div>
40
- <div class="queue-actions">
41
- <button type="button" class="btn-primary btn-sm" data-action="prepare">Add frontmatter</button>
42
- </div>
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
- <div class="queue-main">
45
- <div class="queue-title">${R(a.title||a.slug)}</div>
46
- <div class="meta">${R(a.slug)} · ${R(a.type)}</div>
47
- </div>
48
- <div class="queue-actions">
49
- <button type="button" class="btn-ghost btn-sm" data-action="edit">Edit</button>
50
- <button type="button" class="btn-primary btn-sm" data-action="publish">Publish</button>
51
- </div>
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
- <nav class="breadcrumb" aria-label="Breadcrumb">
54
- ${Jt(t.breadcrumbs)}
55
- </nav>
56
- <div class="page-layout${n?" page-layout--focus":""}">
57
- <article class="page-content">
58
- <header class="page-header">
59
- <div class="page-title-slot">${t.titleHtml}</div>
60
- <div class="workspace-actions">${t.actionsHtml}</div>
61
- </header>
62
- <div class="page-body-slot">${t.mainHtml}</div>
63
- </article>
64
- <aside class="page-info">${t.railHtml}</aside>
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 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
- <h2 class="page-info-title">Page properties</h2>
68
- <div class="workspace-badges editor-badges">
69
- <span class="badge badge-draft">draft</span>
70
- ${e.forkedFrom?`<span class="badge">fork: ${D(e.forkedFrom)}</span>`:""}
71
- </div>
72
- <div class="props-section">
73
- <div class="props-label">Status</div>
74
- <div class="props-chip-row">
75
- <button type="button" id="ed-status-chip" class="status-chip props-chip-trigger" aria-haspopup="listbox"></button>
76
- <div id="ed-status-menu" class="props-dropdown hidden" role="listbox"></div>
77
- </div>
78
- </div>
79
- <div class="props-section">
80
- <div class="props-label">Type</div>
81
- <div class="props-chip-row">
82
- <button type="button" id="ed-type-chip" class="props-chip props-chip-trigger" aria-haspopup="listbox"></button>
83
- <div id="ed-type-menu" class="props-dropdown hidden" role="listbox"></div>
84
- </div>
85
- <div class="props-hint" id="ed-catalog-hint"></div>
86
- </div>
87
- <div class="props-section">
88
- <div class="props-label">Slug</div>
89
- <input id="ed-slug" class="props-slug-input" spellcheck="false" />
90
- <div class="props-hint props-hint-slug hidden" id="ed-slug-hint"></div>
91
- </div>
92
- <div class="props-section">
93
- <div class="props-label">Tags</div>
94
- <div id="ed-tags-chips" class="props-chip-list"></div>
95
- <input id="ed-tags-input" class="props-add-input" placeholder="Add tag…" />
96
- </div>
97
- <div class="props-section">
98
- <div class="props-label">Related</div>
99
- <div id="ed-related-chips" class="props-chip-list"></div>
100
- <input id="ed-related-input" class="props-add-input" placeholder="Add related slug…" autocomplete="off" />
101
- <div id="ed-related-menu" class="props-dropdown hidden" role="listbox"></div>
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"),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
- <div class="modal-card modal-card-wide">
108
- <p>Publish to git as markdown?</p>
109
- <code id="publish-target"></code>
110
- <pre id="publish-diff" class="diff-preview"></pre>
111
- <div id="publish-related" class="publish-related hidden">
112
- <p id="publish-related-prompt"></p>
113
- <ul id="publish-related-list" class="publish-related-list"></ul>
114
- <div class="editor-actions">
115
- <button type="button" id="publish-related-apply" class="btn-primary">Add to related</button>
116
- <button type="button" id="publish-related-skip" class="btn-ghost">Skip</button>
117
- </div>
118
- </div>
119
- <div class="editor-actions">
120
- <button type="button" id="publish-confirm" class="btn-primary">Confirm</button>
121
- <button type="button" id="publish-cancel" class="btn-ghost">Cancel</button>
122
- </div>
123
- </div>
124
- `,e.appendChild(L);const v=document.createElement("div");v.id="view-md-modal",v.className="modal hidden",v.innerHTML=`
125
- <div class="modal-card modal-card-wide">
126
- <h3 class="modal-title">Markdown source</h3>
127
- <pre id="view-md-content" class="md-source"></pre>
128
- <div class="editor-actions">
129
- <button type="button" id="view-md-copy" class="btn-primary">Copy</button>
130
- <button type="button" id="view-md-close" class="btn-ghost">Close</button>
131
- </div>
132
- </div>
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
- <div class="editor-action-bar">
135
- <span class="editing-badge" aria-hidden="true">Editing</span>
136
- <span id="ed-save-status" class="save-status" aria-live="polite"></span>
137
- <div class="editor-action-spacer" aria-hidden="true"></div>
138
- <div class="editor-action-primary">
139
- <div class="publish-split">
140
- <button type="button" id="ed-publish" class="btn-primary publish-main">Publish</button>
141
- <button type="button" id="ed-publish-menu-btn" class="btn-primary publish-menu-trigger" aria-haspopup="true" aria-expanded="false" title="More publish options">▾</button>
142
- <div id="ed-publish-menu" class="publish-menu hidden" role="menu">
143
- <button type="button" id="ed-publish-review" role="menuitem">Review changes</button>
144
- </div>
145
- </div>
146
- </div>
147
- <div class="editor-action-secondary">
148
- <button type="button" id="ed-view-md" class="btn-ghost btn-sm">Markdown</button>
149
- <button type="button" id="toggle-focus" class="btn-ghost btn-sm" aria-pressed="${e}">
150
- ${e?"Show info":"Hide info"}
151
- </button>
152
- <button type="button" id="ed-close" class="btn-ghost btn-sm">Close</button>
153
- ${n?'<button type="button" id="ed-discard" class="btn-ghost btn-sm btn-danger-text">Discard</button>':""}
154
- </div>
155
- </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
- `:!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
- ${i}</${n}>
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}}}),_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
- <h2 class="page-info-title">Page info</h2>
162
- <dl class="info-list">
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
- </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="${D(y)}">${D(y)}</button>`).join("")}</div>`:""}
170
- <div class="info-tabs tabs">
171
- <button class="tab active" data-tab="frontmatter">Frontmatter</button>
172
- <button class="tab" data-tab="agent">Agent JSON</button>
173
- </div>
174
- <div id="tab-frontmatter" class="tab-panel active"></div>
175
- <div id="tab-agent" class="tab-panel"></div>
176
- <footer class="page-info-footer">
177
- <code id="doc-path">${D(e.path??"")}</code>
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 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
- <button type="button" id="toggle-focus" class="btn-ghost" aria-pressed="${d}">
181
- ${d?"Show info":"Hide info"}
182
- </button>
183
- ${y?"":'<button type="button" id="edit-page" class="btn-primary">Edit</button>'}
184
- <button type="button" id="copy-link" class="btn-ghost">Copy link</button>
185
- <button type="button" id="copy-path" class="btn-ghost">Copy path</button>
186
- `,mainHtml:`
187
- <div class="reader-body">
188
- <div id="tab-preview" class="markdown-preview reader-preview"></div>
189
- <section id="reader-backlinks" class="reader-backlinks hidden" aria-label="Backlinks"></section>
190
- </div>
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=`
192
- <h2 class="reader-backlinks-title">Backlinks</h2>
193
- <div class="reader-backlinks-list">
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("")}
195
- </div>
196
- `,Ue(e))}).catch(()=>{})}function N(e,t,n){if(re(),!t||!t.found){e.className="workspace-main",e.innerHTML=`
197
- <div class="workspace-empty">
198
- <h1>Knowledge</h1>
199
- <p class="placeholder">Select a page from the tree or use the ⋯ menu to create one.</p>
200
- </div>
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=`
202
- <div class="modal-card tree-page-modal" role="dialog" aria-modal="true">
203
- <h2 class="modal-title">${ve(e)}</h2>
204
- ${t}
205
- <div class="modal-actions">
206
- <button type="button" class="btn-ghost" data-action="cancel">Отмена</button>
207
- <button type="button" class="btn-primary" data-action="create">Создать</button>
208
- </div>
209
- </div>
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=`
211
- <label class="modal-field">
212
- <span class="modal-label">Имя (без .md)</span>
213
- <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
214
- </label>
215
- `,{backdrop:n,nameInput:r,close:i}=ht("Новый файл",t);mt(n,r,i,e)}function Un(e,t){var y;const n=`
216
- <label class="modal-field">
217
- <span class="modal-label">Имя (без .md)</span>
218
- <input type="text" class="modal-input" id="tree-page-name" autocomplete="off" />
219
- </label>
220
- <div class="modal-field">
221
- <span class="modal-label" id="tree-template-label">Шаблон</span>
222
- <div class="tree-template-list" role="listbox" aria-labelledby="tree-template-label">
223
- ${e.map((b,h)=>`
224
- <button
225
- type="button"
226
- class="tree-template-item${h===0?" is-selected":""}"
227
- role="option"
228
- aria-selected="${h===0?"true":"false"}"
229
- data-template-id="${Wn(b.id)}"
230
- >${ve(b.label)}</button>`).join("")}
231
- </div>
232
- </div>
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=`
234
- <button type="button" data-action="folder">Добавить директорию</button>
235
- <button type="button" data-action="page">Создать файл</button>
236
- ${b?'<button type="button" data-action="template">Создать из шаблона</button>':""}
237
- ${y?'<button type="button" data-action="delete" class="tree-menu-danger">Удалить</button>':""}
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=`
239
- <nav id="docs-tree" class="docs-tree" aria-label="Documentation tree"></nav>
240
- <section class="catalog-section catalog-drafts">
241
- <button type="button" class="catalog-header" data-catalog="__drafts__" aria-expanded="true">
242
- <span class="catalog-chevron" aria-hidden="true">▾</span>
243
- <span class="catalog-icon catalog-icon--draft" aria-hidden="true">✎</span>
244
- <span class="catalog-label">Drafts</span>
245
- <span class="catalog-count">${n.length}</span>
246
- </button>
247
- <ul id="draft-list" class="catalog-pages"></ul>
248
- </section>
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>
251
- <button type="button" class="tree-label">
252
- ${je(s.type,s.contentKind)}
253
- <span class="tree-title">${X(s.title)}</span>
254
- </button>
255
- <button type="button" class="tree-menu" title="Actions">⋯</button>
256
- `:`
257
- <span class="tree-spacer" aria-hidden="true"></span>
258
- <button type="button" class="tree-label">
259
- ${je(s.type,s.contentKind)}
260
- <span class="tree-title">${X(s.title)}</span>
261
- </button>
262
- <button type="button" class="tree-menu" title="Actions">⋯</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>
265
- <button type="button" class="tree-label">
266
- ${In()}
267
- <span class="tree-title">${X(s.name)}</span>
268
- </button>
269
- <button type="button" class="tree-menu" title="Actions">⋯</button>
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};
@@ -1 +0,0 @@
1
- import{s as r,b as e,a,S as s}from"./chunk-AQP2D5EJ-BayHdr67.js";import{_ as i}from"./mermaid.core-BZZdRyuR.js";import"./transform-BwXaE9hv.js";import"./chunk-55IACEB6-BCx7dyYV.js";import"./chunk-2J33WTMH-0LcH4vIA.js";import"./main-BeHrzLrS.js";import"./theme-DS1fBM5L.js";import"./editor-CTtDusro.js";var b={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{b as diagram};