UNPKG

vitepress-mermaid-preview

Version:

Mermaid preview for vitepress

66 lines (62 loc) 24.8 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=require("./chunk-353BL4L5-CGOcria5.cjs"),j=require("./chunk-AACKK3MU-BnB5zriI.cjs"),s=require("./component-Dha7mB0E.cjs"),K=require("./mermaid-parser.core-CovFi_Re.cjs");var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},U=s.defaultConfig_default.gitGraph,L=s.__name(()=>s.cleanAndMerge({...U,...s.getConfig().gitGraph}),"getConfig"),i=new j.ImperativeState(()=>{const t=L(),e=t.mainBranchName,n=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:n}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});function G(){return s.random({length:7})}s.__name(G,"getID");function H(t,e){const n=Object.create(null);return t.reduce((o,r)=>{const a=e(r);return n[a]||(n[a]=!0,o.push(r)),o},[])}s.__name(H,"uniqBy");var Y=s.__name(function(t){i.records.direction=t},"setDirection"),V=s.__name(function(t){s.log.debug("options str",t),t=t?.trim(),t=t||"{}";try{i.records.options=JSON.parse(t)}catch(e){s.log.error("error while parsing gitGraph options",e.message)}},"setOptions"),X=s.__name(function(){return i.records.options},"getOptions"),J=s.__name(function(t){let e=t.msg,n=t.id;const o=t.type;let r=t.tags;s.log.info("commit",e,n,o,r),s.log.debug("Entering commit:",e,n,o,r);const a=L();n=s.common_default.sanitizeText(n,a),e=s.common_default.sanitizeText(e,a),r=r?.map(c=>s.common_default.sanitizeText(c,a));const l={id:n||i.records.seq+"-"+G(),message:e,seq:i.records.seq++,type:o??x.NORMAL,tags:r??[],parents:i.records.head==null?[]:[i.records.head.id],branch:i.records.currBranch};i.records.head=l,s.log.info("main branch",a.mainBranchName),i.records.commits.has(l.id)&&s.log.warn(`Commit ID ${l.id} already exists`),i.records.commits.set(l.id,l),i.records.branches.set(i.records.currBranch,l.id),s.log.debug("in pushCommit "+l.id)},"commit"),Q=s.__name(function(t){let e=t.name;const n=t.order;if(e=s.common_default.sanitizeText(e,L()),i.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);i.records.branches.set(e,i.records.head!=null?i.records.head.id:null),i.records.branchConfig.set(e,{name:e,order:n}),D(e),s.log.debug("in createBranch")},"branch"),Z=s.__name(t=>{let e=t.branch,n=t.id;const o=t.type,r=t.tags,a=L();e=s.common_default.sanitizeText(e,a),n&&(n=s.common_default.sanitizeText(n,a));const l=i.records.branches.get(i.records.currBranch),c=i.records.branches.get(e),f=l?i.records.commits.get(l):void 0,h=c?i.records.commits.get(c):void 0;if(f&&h&&f.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(i.records.currBranch===e){const d=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},d}if(f===void 0||!f){const d=new Error(`Incorrect usage of "merge". Current branch (${i.records.currBranch})has no commits`);throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},d}if(!i.records.branches.has(e)){const d=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},d}if(h===void 0||!h){const d=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},d}if(f===h){const d=new Error('Incorrect usage of "merge". Both branches have same head');throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},d}if(n&&i.records.commits.has(n)){const d=new Error('Incorrect usage of "merge". Commit with id:'+n+" already exists, use different custom id");throw d.hash={text:`merge ${e} ${n} ${o} ${r?.join(" ")}`,token:`merge ${e} ${n} ${o} ${r?.join(" ")}`,expected:[`merge ${e} ${n}_UNIQUE ${o} ${r?.join(" ")}`]},d}const $=c||"",g={id:n||`${i.records.seq}-${G()}`,message:`merged branch ${e} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,$],branch:i.records.currBranch,type:x.MERGE,customType:o,customId:!!n,tags:r??[]};i.records.head=g,i.records.commits.set(g.id,g),i.records.branches.set(i.records.currBranch,g.id),s.log.debug(i.records.branches),s.log.debug("in mergeBranch")},"merge"),ee=s.__name(function(t){let e=t.id,n=t.targetId,o=t.tags,r=t.parent;s.log.debug("Entering cherryPick:",e,n,o);const a=L();if(e=s.common_default.sanitizeText(e,a),n=s.common_default.sanitizeText(n,a),o=o?.map(f=>s.common_default.sanitizeText(f,a)),r=s.common_default.sanitizeText(r,a),!e||!i.records.commits.has(e)){const f=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw f.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},f}const l=i.records.commits.get(e);if(l===void 0||!l)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(r&&!(Array.isArray(l.parents)&&l.parents.includes(r)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");const c=l.branch;if(l.type===x.MERGE&&!r)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!n||!i.records.commits.has(n)){if(c===i.records.currBranch){const g=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw g.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},g}const f=i.records.branches.get(i.records.currBranch);if(f===void 0||!f){const g=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw g.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},g}const h=i.records.commits.get(f);if(h===void 0||!h){const g=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw g.hash={text:`cherryPick ${e} ${n}`,token:`cherryPick ${e} ${n}`,expected:["cherry-pick abc"]},g}const $={id:i.records.seq+"-"+G(),message:`cherry-picked ${l?.message} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,l.id],branch:i.records.currBranch,type:x.CHERRY_PICK,tags:o?o.filter(Boolean):[`cherry-pick:${l.id}${l.type===x.MERGE?`|parent:${r}`:""}`]};i.records.head=$,i.records.commits.set($.id,$),i.records.branches.set(i.records.currBranch,$.id),s.log.debug(i.records.branches),s.log.debug("in cherryPick")}},"cherryPick"),D=s.__name(function(t){if(t=s.common_default.sanitizeText(t,L()),i.records.branches.has(t)){i.records.currBranch=t;const e=i.records.branches.get(i.records.currBranch);e===void 0||!e?i.records.head=null:i.records.head=i.records.commits.get(e)??null}else{const e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");function A(t,e,n){const o=t.indexOf(e);o===-1?t.push(n):t.splice(o,1,n)}s.__name(A,"upsert");function q(t){const e=t.reduce((r,a)=>r.seq>a.seq?r:a,t[0]);let n="";t.forEach(function(r){r===e?n+=" *":n+=" |"});const o=[n,e.id,e.seq];for(const r in i.records.branches)i.records.branches.get(r)===e.id&&o.push(r);if(s.log.debug(o.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){const r=i.records.commits.get(e.parents[0]);A(t,e,r),e.parents[1]&&t.push(i.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){const r=i.records.commits.get(e.parents[0]);A(t,e,r)}}t=H(t,r=>r.id),q(t)}s.__name(q,"prettyPrintCommitHistory");var re=s.__name(function(){s.log.debug(i.records.commits);const t=z()[0];q([t])},"prettyPrint"),te=s.__name(function(){i.reset(),s.clear()},"clear"),ae=s.__name(function(){return[...i.records.branchConfig.values()].map((e,n)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${n}`)}).sort((e,n)=>(e.order??0)-(n.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),ne=s.__name(function(){return i.records.branches},"getBranches"),se=s.__name(function(){return i.records.commits},"getCommits"),z=s.__name(function(){const t=[...i.records.commits.values()];return t.forEach(function(e){s.log.debug(e.id)}),t.sort((e,n)=>e.seq-n.seq),t},"getCommitsArray"),oe=s.__name(function(){return i.records.currBranch},"getCurrentBranch"),ce=s.__name(function(){return i.records.direction},"getDirection"),ie=s.__name(function(){return i.records.head},"getHead"),F={commitType:x,getConfig:L,setDirection:Y,setOptions:V,getOptions:X,commit:J,branch:Q,merge:Z,cherryPick:ee,checkout:D,prettyPrint:re,clear:te,getBranchesAsObjArray:ae,getBranches:ne,getCommits:se,getCommitsArray:z,getCurrentBranch:oe,getDirection:ce,getHead:ie,setAccTitle:s.setAccTitle,getAccTitle:s.getAccTitle,getAccDescription:s.getAccDescription,setAccDescription:s.setAccDescription,setDiagramTitle:s.setDiagramTitle,getDiagramTitle:s.getDiagramTitle},de=s.__name((t,e)=>{W.populateCommonDb(t,e),t.dir&&e.setDirection(t.dir);for(const n of t.statements)le(n,e)},"populate"),le=s.__name((t,e)=>{const o={Commit:s.__name(r=>e.commit(he(r)),"Commit"),Branch:s.__name(r=>e.branch($e(r)),"Branch"),Merge:s.__name(r=>e.merge(fe(r)),"Merge"),Checkout:s.__name(r=>e.checkout(ge(r)),"Checkout"),CherryPicking:s.__name(r=>e.cherryPick(ye(r)),"CherryPicking")}[t.$type];o?o(t):s.log.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),he=s.__name(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?x[t.type]:x.NORMAL,tags:t.tags??void 0}),"parseCommit"),$e=s.__name(t=>({name:t.name,order:t.order??0}),"parseBranch"),fe=s.__name(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?x[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),ge=s.__name(t=>t.branch,"parseCheckout"),ye=s.__name(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),ue={parse:s.__name(async t=>{const e=await K.parse("gitGraph",t);s.log.debug(e),de(e,F)},"parse")},me=s.getConfig2(),_=me?.gitGraph,E=10,T=40,w=4,v=2,B=8,p=new Map,b=new Map,I=30,k=new Map,R=[],C=0,u="LR",xe=s.__name(()=>{p.clear(),b.clear(),k.clear(),C=0,R=[],u="LR"},"clear"),N=s.__name(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|<br\s*\/?>/gi):t).forEach(o=>{const r=document.createElementNS("http://www.w3.org/2000/svg","tspan");r.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),r.setAttribute("dy","1em"),r.setAttribute("x","0"),r.setAttribute("class","row"),r.textContent=o.trim(),e.appendChild(r)}),e},"drawText"),S=s.__name(t=>{let e,n,o;return u==="BT"?(n=s.__name((r,a)=>r<=a,"comparisonFunc"),o=1/0):(n=s.__name((r,a)=>r>=a,"comparisonFunc"),o=0),t.forEach(r=>{const a=u==="TB"||u=="BT"?b.get(r)?.y:b.get(r)?.x;a!==void 0&&n(a,o)&&(e=r,o=a)}),e},"findClosestParent"),pe=s.__name(t=>{let e="",n=1/0;return t.forEach(o=>{const r=b.get(o).y;r<=n&&(e=o,n=r)}),e||void 0},"findClosestParentBT"),be=s.__name((t,e,n)=>{let o=n,r=n;const a=[];t.forEach(l=>{const c=e.get(l);if(!c)throw new Error(`Commit not found for key ${l}`);c.parents.length?(o=we(c),r=Math.max(o,r)):a.push(c),ve(c,o)}),o=r,a.forEach(l=>{Ce(l,o,n)}),t.forEach(l=>{const c=e.get(l);if(c?.parents.length){const f=pe(c.parents);o=b.get(f).y-T,o<=r&&(r=o);const h=p.get(c.branch).pos,$=o-E;b.set(c.id,{x:h,y:$})}})},"setParallelBTPos"),_e=s.__name(t=>{const e=S(t.parents.filter(o=>o!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);const n=b.get(e)?.y;if(n===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return n},"findClosestParentPos"),we=s.__name(t=>_e(t)+T,"calculateCommitPosition"),ve=s.__name((t,e)=>{const n=p.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);const o=n.pos,r=e+E;return b.set(t.id,{x:o,y:r}),{x:o,y:r}},"setCommitPosition"),Ce=s.__name((t,e,n)=>{const o=p.get(t.branch);if(!o)throw new Error(`Branch not found for commit ${t.id}`);const r=e+n,a=o.pos;b.set(t.id,{x:a,y:r})},"setRootPosition"),Ee=s.__name((t,e,n,o,r,a)=>{if(a===x.HIGHLIGHT)t.append("rect").attr("x",n.x-10).attr("y",n.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${r%B} ${o}-outer`),t.append("rect").attr("x",n.x-6).attr("y",n.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${r%B} ${o}-inner`);else if(a===x.CHERRY_PICK)t.append("circle").attr("cx",n.x).attr("cy",n.y).attr("r",10).attr("class",`commit ${e.id} ${o}`),t.append("circle").attr("cx",n.x-3).attr("cy",n.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${o}`),t.append("circle").attr("cx",n.x+3).attr("cy",n.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${o}`),t.append("line").attr("x1",n.x+3).attr("y1",n.y+1).attr("x2",n.x).attr("y2",n.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${o}`),t.append("line").attr("x1",n.x-3).attr("y1",n.y+1).attr("x2",n.x).attr("y2",n.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${o}`);else{const l=t.append("circle");if(l.attr("cx",n.x),l.attr("cy",n.y),l.attr("r",e.type===x.MERGE?9:10),l.attr("class",`commit ${e.id} commit${r%B}`),a===x.MERGE){const c=t.append("circle");c.attr("cx",n.x),c.attr("cy",n.y),c.attr("r",6),c.attr("class",`commit ${o} ${e.id} commit${r%B}`)}a===x.REVERSE&&t.append("path").attr("d",`M ${n.x-5},${n.y-5}L${n.x+5},${n.y+5}M${n.x-5},${n.y+5}L${n.x+5},${n.y-5}`).attr("class",`commit ${o} ${e.id} commit${r%B}`)}},"drawCommitBullet"),Te=s.__name((t,e,n,o)=>{if(e.type!==x.CHERRY_PICK&&(e.customId&&e.type===x.MERGE||e.type!==x.MERGE)&&_?.showCommitLabel){const r=t.append("g"),a=r.insert("rect").attr("class","commit-label-bkg"),l=r.append("text").attr("x",o).attr("y",n.y+25).attr("class","commit-label").text(e.id),c=l.node()?.getBBox();if(c&&(a.attr("x",n.posWithOffset-c.width/2-v).attr("y",n.y+13.5).attr("width",c.width+2*v).attr("height",c.height+2*v),u==="TB"||u==="BT"?(a.attr("x",n.x-(c.width+4*w+5)).attr("y",n.y-12),l.attr("x",n.x-(c.width+4*w)).attr("y",n.y+c.height-12)):l.attr("x",n.posWithOffset-c.width/2),_.rotateCommitLabel))if(u==="TB"||u==="BT")l.attr("transform","rotate(-45, "+n.x+", "+n.y+")"),a.attr("transform","rotate(-45, "+n.x+", "+n.y+")");else{const f=-7.5-(c.width+10)/25*9.5,h=10+c.width/25*8.5;r.attr("transform","translate("+f+", "+h+") rotate(-45, "+o+", "+n.y+")")}}},"drawCommitLabel"),Be=s.__name((t,e,n,o)=>{if(e.tags.length>0){let r=0,a=0,l=0;const c=[];for(const f of e.tags.reverse()){const h=t.insert("polygon"),$=t.append("circle"),g=t.append("text").attr("y",n.y-16-r).attr("class","tag-label").text(f),d=g.node()?.getBBox();if(!d)throw new Error("Tag bbox not found");a=Math.max(a,d.width),l=Math.max(l,d.height),g.attr("x",n.posWithOffset-d.width/2),c.push({tag:g,hole:$,rect:h,yOffset:r}),r+=20}for(const{tag:f,hole:h,rect:$,yOffset:g}of c){const d=l/2,y=n.y-19.2-g;if($.attr("class","tag-label-bkg").attr("points",` ${o-a/2-w/2},${y+v} ${o-a/2-w/2},${y-v} ${n.posWithOffset-a/2-w},${y-d-v} ${n.posWithOffset+a/2+w},${y-d-v} ${n.posWithOffset+a/2+w},${y+d+v} ${n.posWithOffset-a/2-w},${y+d+v}`),h.attr("cy",y).attr("cx",o-a/2+w/2).attr("r",1.5).attr("class","tag-hole"),u==="TB"||u==="BT"){const m=o+g;$.attr("class","tag-label-bkg").attr("points",` ${n.x},${m+2} ${n.x},${m-2} ${n.x+E},${m-d-2} ${n.x+E+a+4},${m-d-2} ${n.x+E+a+4},${m+d+2} ${n.x+E},${m+d+2}`).attr("transform","translate(12,12) rotate(45, "+n.x+","+o+")"),h.attr("cx",n.x+w/2).attr("cy",m).attr("transform","translate(12,12) rotate(45, "+n.x+","+o+")"),f.attr("x",n.x+5).attr("y",m+3).attr("transform","translate(14,14) rotate(45, "+n.x+","+o+")")}}}},"drawCommitTags"),Le=s.__name(t=>{switch(t.customType??t.type){case x.NORMAL:return"commit-normal";case x.REVERSE:return"commit-reverse";case x.HIGHLIGHT:return"commit-highlight";case x.MERGE:return"commit-merge";case x.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),ke=s.__name((t,e,n,o)=>{const r={x:0,y:0};if(t.parents.length>0){const a=S(t.parents);if(a){const l=o.get(a)??r;return e==="TB"?l.y+T:e==="BT"?(o.get(t.id)??r).y-T:l.x+T}}else return e==="TB"?I:e==="BT"?(o.get(t.id)??r).y-T:0;return 0},"calculatePosition"),Me=s.__name((t,e,n)=>{const o=u==="BT"&&n?e:e+E,r=u==="TB"||u==="BT"?o:p.get(t.branch)?.pos,a=u==="TB"||u==="BT"?p.get(t.branch)?.pos:o;if(a===void 0||r===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:r,posWithOffset:o}},"getCommitPosition"),P=s.__name((t,e,n)=>{if(!_)throw new Error("GitGraph config not found");const o=t.append("g").attr("class","commit-bullets"),r=t.append("g").attr("class","commit-labels");let a=u==="TB"||u==="BT"?I:0;const l=[...e.keys()],c=_?.parallelCommits??!1,f=s.__name(($,g)=>{const d=e.get($)?.seq,y=e.get(g)?.seq;return d!==void 0&&y!==void 0?d-y:0},"sortKeys");let h=l.sort(f);u==="BT"&&(c&&be(h,e,a),h=h.reverse()),h.forEach($=>{const g=e.get($);if(!g)throw new Error(`Commit not found for key ${$}`);c&&(a=ke(g,u,a,b));const d=Me(g,a,c);if(n){const y=Le(g),m=g.customType??g.type,O=p.get(g.branch)?.index??0;Ee(o,g,d,y,O,m),Te(r,g,d,a),Be(r,g,d,a)}u==="TB"||u==="BT"?b.set(g.id,{x:d.x,y:d.posWithOffset}):b.set(g.id,{x:d.posWithOffset,y:d.y}),a=u==="BT"&&c?a+T:a+T+E,a>C&&(C=a)})},"drawCommits"),Ie=s.__name((t,e,n,o,r)=>{const l=(u==="TB"||u==="BT"?n.x<o.x:n.y<o.y)?e.branch:t.branch,c=s.__name(h=>h.branch===l,"isOnBranchToGetCurve"),f=s.__name(h=>h.seq>t.seq&&h.seq<e.seq,"isBetweenCommits");return[...r.values()].some(h=>f(h)&&c(h))},"shouldRerouteArrow"),M=s.__name((t,e,n=0)=>{const o=t+Math.abs(t-e)/2;if(n>5)return o;if(R.every(l=>Math.abs(l-o)>=10))return R.push(o),o;const a=Math.abs(t-e);return M(t,e-a/5,n+1)},"findLane"),Re=s.__name((t,e,n,o)=>{const r=b.get(e.id),a=b.get(n.id);if(r===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${n.id}`);const l=Ie(e,n,r,a,o);let c="",f="",h=0,$=0,g=p.get(n.branch)?.index;n.type===x.MERGE&&e.id!==n.parents[0]&&(g=p.get(e.branch)?.index);let d;if(l){c="A 10 10, 0, 0, 0,",f="A 10 10, 0, 0, 1,",h=10,$=10;const y=r.y<a.y?M(r.y,a.y):M(a.y,r.y),m=r.x<a.x?M(r.x,a.x):M(a.x,r.x);u==="TB"?r.x<a.x?d=`M ${r.x} ${r.y} L ${m-h} ${r.y} ${f} ${m} ${r.y+$} L ${m} ${a.y-h} ${c} ${m+$} ${a.y} L ${a.x} ${a.y}`:(g=p.get(e.branch)?.index,d=`M ${r.x} ${r.y} L ${m+h} ${r.y} ${c} ${m} ${r.y+$} L ${m} ${a.y-h} ${f} ${m-$} ${a.y} L ${a.x} ${a.y}`):u==="BT"?r.x<a.x?d=`M ${r.x} ${r.y} L ${m-h} ${r.y} ${c} ${m} ${r.y-$} L ${m} ${a.y+h} ${f} ${m+$} ${a.y} L ${a.x} ${a.y}`:(g=p.get(e.branch)?.index,d=`M ${r.x} ${r.y} L ${m+h} ${r.y} ${f} ${m} ${r.y-$} L ${m} ${a.y+h} ${c} ${m-$} ${a.y} L ${a.x} ${a.y}`):r.y<a.y?d=`M ${r.x} ${r.y} L ${r.x} ${y-h} ${c} ${r.x+$} ${y} L ${a.x-h} ${y} ${f} ${a.x} ${y+$} L ${a.x} ${a.y}`:(g=p.get(e.branch)?.index,d=`M ${r.x} ${r.y} L ${r.x} ${y+h} ${f} ${r.x+$} ${y} L ${a.x-h} ${y} ${c} ${a.x} ${y-$} L ${a.x} ${a.y}`)}else c="A 20 20, 0, 0, 0,",f="A 20 20, 0, 0, 1,",h=20,$=20,u==="TB"?(r.x<a.x&&(n.type===x.MERGE&&e.id!==n.parents[0]?d=`M ${r.x} ${r.y} L ${r.x} ${a.y-h} ${c} ${r.x+$} ${a.y} L ${a.x} ${a.y}`:d=`M ${r.x} ${r.y} L ${a.x-h} ${r.y} ${f} ${a.x} ${r.y+$} L ${a.x} ${a.y}`),r.x>a.x&&(c="A 20 20, 0, 0, 0,",f="A 20 20, 0, 0, 1,",h=20,$=20,n.type===x.MERGE&&e.id!==n.parents[0]?d=`M ${r.x} ${r.y} L ${r.x} ${a.y-h} ${f} ${r.x-$} ${a.y} L ${a.x} ${a.y}`:d=`M ${r.x} ${r.y} L ${a.x+h} ${r.y} ${c} ${a.x} ${r.y+$} L ${a.x} ${a.y}`),r.x===a.x&&(d=`M ${r.x} ${r.y} L ${a.x} ${a.y}`)):u==="BT"?(r.x<a.x&&(n.type===x.MERGE&&e.id!==n.parents[0]?d=`M ${r.x} ${r.y} L ${r.x} ${a.y+h} ${f} ${r.x+$} ${a.y} L ${a.x} ${a.y}`:d=`M ${r.x} ${r.y} L ${a.x-h} ${r.y} ${c} ${a.x} ${r.y-$} L ${a.x} ${a.y}`),r.x>a.x&&(c="A 20 20, 0, 0, 0,",f="A 20 20, 0, 0, 1,",h=20,$=20,n.type===x.MERGE&&e.id!==n.parents[0]?d=`M ${r.x} ${r.y} L ${r.x} ${a.y+h} ${c} ${r.x-$} ${a.y} L ${a.x} ${a.y}`:d=`M ${r.x} ${r.y} L ${a.x-h} ${r.y} ${c} ${a.x} ${r.y-$} L ${a.x} ${a.y}`),r.x===a.x&&(d=`M ${r.x} ${r.y} L ${a.x} ${a.y}`)):(r.y<a.y&&(n.type===x.MERGE&&e.id!==n.parents[0]?d=`M ${r.x} ${r.y} L ${a.x-h} ${r.y} ${f} ${a.x} ${r.y+$} L ${a.x} ${a.y}`:d=`M ${r.x} ${r.y} L ${r.x} ${a.y-h} ${c} ${r.x+$} ${a.y} L ${a.x} ${a.y}`),r.y>a.y&&(n.type===x.MERGE&&e.id!==n.parents[0]?d=`M ${r.x} ${r.y} L ${a.x-h} ${r.y} ${c} ${a.x} ${r.y-$} L ${a.x} ${a.y}`:d=`M ${r.x} ${r.y} L ${r.x} ${a.y+h} ${f} ${r.x+$} ${a.y} L ${a.x} ${a.y}`),r.y===a.y&&(d=`M ${r.x} ${r.y} L ${a.x} ${a.y}`));if(d===void 0)throw new Error("Line definition not found");t.append("path").attr("d",d).attr("class","arrow arrow"+g%B)},"drawArrow"),Ge=s.__name((t,e)=>{const n=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(o=>{const r=e.get(o);r.parents&&r.parents.length>0&&r.parents.forEach(a=>{Re(n,e.get(a),r,e)})})},"drawArrows"),Oe=s.__name((t,e)=>{const n=t.append("g");e.forEach((o,r)=>{const a=r%B,l=p.get(o.name)?.pos;if(l===void 0)throw new Error(`Position not found for branch ${o.name}`);const c=n.append("line");c.attr("x1",0),c.attr("y1",l),c.attr("x2",C),c.attr("y2",l),c.attr("class","branch branch"+a),u==="TB"?(c.attr("y1",I),c.attr("x1",l),c.attr("y2",C),c.attr("x2",l)):u==="BT"&&(c.attr("y1",C),c.attr("x1",l),c.attr("y2",I),c.attr("x2",l)),R.push(l);const f=o.name,h=N(f),$=n.insert("rect"),d=n.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);d.node().appendChild(h);const y=h.getBBox();$.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-y.width-4-(_?.rotateCommitLabel===!0?30:0)).attr("y",-y.height/2+8).attr("width",y.width+18).attr("height",y.height+4),d.attr("transform","translate("+(-y.width-14-(_?.rotateCommitLabel===!0?30:0))+", "+(l-y.height/2-1)+")"),u==="TB"?($.attr("x",l-y.width/2-10).attr("y",0),d.attr("transform","translate("+(l-y.width/2-5)+", 0)")):u==="BT"?($.attr("x",l-y.width/2-10).attr("y",C),d.attr("transform","translate("+(l-y.width/2-5)+", "+C+")")):$.attr("transform","translate(-19, "+(l-y.height/2)+")")})},"drawBranches"),Ae=s.__name(function(t,e,n,o,r){return p.set(t,{pos:e,index:n}),e+=50+(r?40:0)+(u==="TB"||u==="BT"?o.width/2:0),e},"setBranchPosition"),qe=s.__name(function(t,e,n,o){if(xe(),s.log.debug("in gitgraph renderer",t+` `,"id:",e,n),!_)throw new Error("GitGraph config not found");const r=_.rotateCommitLabel??!1,a=o.db;k=a.getCommits();const l=a.getBranchesAsObjArray();u=a.getDirection();const c=s.select(`[id="${e}"]`);let f=0;l.forEach((h,$)=>{const g=N(h.name),d=c.append("g"),y=d.insert("g").attr("class","branchLabel"),m=y.insert("g").attr("class","label branch-label");m.node()?.appendChild(g);const O=g.getBBox();f=Ae(h.name,f,$,O,r),m.remove(),y.remove(),d.remove()}),P(c,k,!1),_.showBranches&&Oe(c,l),Ge(c,k),P(c,k,!0),s.utils_default.insertTitle(c,"gitTitleText",_.titleTopMargin??0,a.getDiagramTitle()),s.setupGraphViewbox2(void 0,c,_.diagramPadding,_.useMaxWidth)},"draw"),Pe={draw:qe},He=s.__name(t=>` .commit-id, .commit-msg, .branch-label { fill: lightgrey; color: lightgrey; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-family: var(--mermaid-font-family); } ${[0,1,2,3,4,5,6,7].map(e=>` .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; } .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; } .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; } .label${e} { fill: ${t["git"+e]}; } .arrow${e} { stroke: ${t["git"+e]}; } `).join(` `)} .branch { stroke-width: 1; stroke: ${t.lineColor}; stroke-dasharray: 2; } .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};} .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; } .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};} .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; } .tag-hole { fill: ${t.textColor}; } .commit-merge { stroke: ${t.primaryColor}; fill: ${t.primaryColor}; } .commit-reverse { stroke: ${t.primaryColor}; fill: ${t.primaryColor}; stroke-width: 3; } .commit-highlight-outer { } .commit-highlight-inner { stroke: ${t.primaryColor}; fill: ${t.primaryColor}; } .arrow { stroke-width: 8; stroke-linecap: round; fill: none} .gitTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } `,"getStyles"),De=He,ze={parser:ue,db:F,renderer:Pe,styles:De};exports.diagram=ze;