Team Ai
Apppublic

DeepLearning-VT/DeepLearning_2026

sourceHugging Facecc-by-4.0updated 2d agoView on Hugging Face
0likes
gitGraphDiagram-RSE3GARS-D8lDJg8v.js106 linesDownload Raw Back to assets
1import{r as e}from"./chunk-PTVI3W5X-DVfdoxm6.js";import{I as t,T as n}from"./chunk-FO5PYUIK-CPzj2963.js";import{C as r,E as i,J as a,Q as o,S as s,Y as c,b as l,c as u,m as d,o as f,tt as p,x as m}from"./chunk-NEZ6ONQZ-BXVsr65K.js";import"./chunk-IPM4HZQ6-CQmHNgJe.js";import{g as h,i as g,v as _}from"./chunk-OX6ZKUVE-BQYyNOm4.js";import{t as v}from"./chunk-6ZKBGPIT-B4RTUexp.js";import"./chunk-A7G5T7E5-C2HISlqa.js";import{n as y}from"./chunk-BQKPLVCE-Cy49oB5R.js";import"./chunk-NYCIP5HP-BZs_nZUU.js";import"./chunk-6QIBY7DQ-xR0SR3RB.js";import"./chunk-SLCUJWJ3-Bzf1BoPP.js";import"./chunk-43ACQNTO-CVHKukau.js";import"./chunk-FXRKSSP6-BDxrggHz.js";import"./chunk-RRYK4PFG-DZMcopsb.js";import"./chunk-IT6C5QXO-BI6Sf-cR.js";import"./chunk-GMJQP6DO-gEw8rKqu.js";import"./chunk-ODPFZSHR-BUzFQ4Zq.js";import"./chunk-6OZ7KPF7-CpRlDBGl.js";import"./chunk-LJTN6OYE-BTsXVLFU.js";import"./chunk-Z6Q54H3S-B8XyqzVF.js";import"./chunk-4KMQCWFH-ClzK3uec.js";import"./chunk-S7Q6ZHN2-CSIi0_Nw.js";import"./chunk-IIWGMRJM-k15frrBU.js";import{t as b}from"./chunk-IALYP65X-Bv3ioVcB.js";var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ee=d.gitGraph,S=e(()=>g({...ee,...s().gitGraph}),`getConfig`),C=new b(()=>{let e=S(),t=e.mainBranchName,n=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:n}]]),branches:new Map([[t,null]]),currBranch:t,direction:`LR`,seq:0,options:{}}});function w(){return h({length:7})}e(w,`getID`);function T(e,t){let n=Object.create(null);return e.reduce((e,r)=>{let i=t(r);return n[i]||(n[i]=!0,e.push(r)),e},[])}e(T,`uniqBy`);var te=e(function(e){C.records.direction=e},`setDirection`),ne=e(function(e){n.debug(`options str`,e),e=e?.trim(),e||=`{}`;try{C.records.options=JSON.parse(e)}catch(e){n.error(`error while parsing gitGraph options`,e.message)}},`setOptions`),re=e(function(){return C.records.options},`getOptions`),ie=e(function(e){let t=e.msg,r=e.id,i=e.type,a=e.tags;n.info(`commit`,t,r,i,a),n.debug(`Entering commit:`,t,r,i,a);let o=S();r=u.sanitizeText(r,o),t=u.sanitizeText(t,o),a=a?.map(e=>u.sanitizeText(e,o));let s={id:r||C.records.seq+`-`+w(),message:t,seq:C.records.seq++,type:i??x.NORMAL,tags:a??[],parents:C.records.head==null?[]:[C.records.head.id],branch:C.records.currBranch};C.records.head=s,n.info(`main branch`,o.mainBranchName),C.records.commits.has(s.id)&&n.warn(`Commit ID ${s.id} already exists`),C.records.commits.set(s.id,s),C.records.branches.set(C.records.currBranch,s.id),n.debug(`in pushCommit `+s.id)},`commit`),ae=e(function(e){let t=e.name,r=e.order;if(t=u.sanitizeText(t,S()),C.records.branches.has(t))throw Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);C.records.branches.set(t,C.records.head==null?null:C.records.head.id),C.records.branchConfig.set(t,{name:t,order:r}),E(t),n.debug(`in createBranch`)},`branch`),oe=e(e=>{let t=e.branch,r=e.id,i=e.type,a=e.tags,o=S();t=u.sanitizeText(t,o),r&&=u.sanitizeText(r,o);let s=C.records.branches.get(C.records.currBranch),c=C.records.branches.get(t),l=s?C.records.commits.get(s):void 0,d=c?C.records.commits.get(c):void 0;if(l&&d&&l.branch===t)throw Error(`Cannot merge branch '${t}' into itself.`);if(C.records.currBranch===t){let e=Error(`Incorrect usage of "merge". Cannot merge a branch to itself`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(l===void 0||!l){let e=Error(`Incorrect usage of "merge". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`commit`]},e}if(!C.records.branches.has(t)){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) does not exist`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},e}if(d===void 0||!d){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`"commit"`]},e}if(l===d){let e=Error(`Incorrect usage of "merge". Both branches have same head`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(r&&C.records.commits.has(r)){let e=Error(`Incorrect usage of "merge". Commit with id:`+r+` already exists, use different custom id`);throw e.hash={text:`merge ${t} ${r} ${i} ${a?.join(` `)}`,token:`merge ${t} ${r} ${i} ${a?.join(` `)}`,expected:[`merge ${t} ${r}_UNIQUE ${i} ${a?.join(` `)}`]},e}let f=c||``,p={id:r||`${C.records.seq}-${w()}`,message:`merged branch ${t} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,f],branch:C.records.currBranch,type:x.MERGE,customType:i,customId:!!r,tags:a??[]};C.records.head=p,C.records.commits.set(p.id,p),C.records.branches.set(C.records.currBranch,p.id),n.debug(C.records.branches),n.debug(`in mergeBranch`)},`merge`),se=e(function(e){let t=e.id,r=e.targetId,i=e.tags,a=e.parent;n.debug(`Entering cherryPick:`,t,r,i);let o=S();if(t=u.sanitizeText(t,o),r=u.sanitizeText(r,o),i=i?.map(e=>u.sanitizeText(e,o)),a=u.sanitizeText(a,o),!t||!C.records.commits.has(t)){let e=Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let s=C.records.commits.get(t);if(s===void 0||!s)throw Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);if(a&&!(Array.isArray(s.parents)&&s.parents.includes(a)))throw Error(`Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.`);let c=s.branch;if(s.type===x.MERGE&&!a)throw Error(`Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.`);if(!r||!C.records.commits.has(r)){if(c===C.records.currBranch){let e=Error(`Incorrect usage of "cherryPick". Source commit is already on current branch`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let e=C.records.branches.get(C.records.currBranch);if(e===void 0||!e){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let o=C.records.commits.get(e);if(o===void 0||!o){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let l={id:C.records.seq+`-`+w(),message:`cherry-picked ${s?.message} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,s.id],branch:C.records.currBranch,type:x.CHERRY_PICK,tags:i?i.filter(Boolean):[`cherry-pick:${s.id}${s.type===x.MERGE?`|parent:${a}`:``}`]};C.records.head=l,C.records.commits.set(l.id,l),C.records.branches.set(C.records.currBranch,l.id),n.debug(C.records.branches),n.debug(`in cherryPick`)}},`cherryPick`),E=e(function(e){if(e=u.sanitizeText(e,S()),C.records.branches.has(e)){C.records.currBranch=e;let t=C.records.branches.get(C.records.currBranch);t===void 0||!t?C.records.head=null:C.records.head=C.records.commits.get(t)??null}else{let t=Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},`checkout`);function D(e,t,n){let r=e.indexOf(t);r===-1?e.push(n):e.splice(r,1,n)}e(D,`upsert`);function O(e){let t=e.reduce((e,t)=>e.seq>t.seq?e:t,e[0]),r=``;e.forEach(function(e){r+=e===t?`	*`:`	|`});let i=[r,t.id,t.seq];for(let e in C.records.branches)C.records.branches.get(e)===t.id&&i.push(e);if(n.debug(i.join(` `)),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let n=C.records.commits.get(t.parents[0]);D(e,t,n),t.parents[1]&&e.push(C.records.commits.get(t.parents[1]))}else if(t.parents.length==0)return;else if(t.parents[0]){let n=C.records.commits.get(t.parents[0]);D(e,t,n)}e=T(e,e=>e.id),O(e)}e(O,`prettyPrintCommitHistory`);var ce=e(function(){n.debug(C.records.commits);let e=k()[0];O([e])},`prettyPrint`),le=e(function(){C.reset(),f()},`clear`),ue=e(function(){return[...C.records.branchConfig.values()].map((e,t)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${t}`)}).sort((e,t)=>(e.order??0)-(t.order??0)).map(({name:e})=>({name:e}))},`getBranchesAsObjArray`),de=e(function(){return C.records.branches},`getBranches`),fe=e(function(){return C.records.commits},`getCommits`),k=e(function(){let e=[...C.records.commits.values()];return e.forEach(function(e){n.debug(e.id)}),e.sort((e,t)=>e.seq-t.seq),e},`getCommitsArray`),A={commitType:x,getConfig:S,setDirection:te,setOptions:ne,getOptions:re,commit:ie,branch:ae,merge:oe,cherryPick:se,checkout:E,prettyPrint:ce,clear:le,getBranchesAsObjArray:ue,getBranches:de,getCommits:fe,getCommitsArray:k,getCurrentBranch:e(function(){return C.records.currBranch},`getCurrentBranch`),getDirection:e(function(){return C.records.direction},`getDirection`),getHead:e(function(){return C.records.head},`getHead`),setAccTitle:c,getAccTitle:m,getAccDescription:l,setAccDescription:a,setDiagramTitle:o,getDiagramTitle:i},pe=e((e,t)=>{v(e,t),e.dir&&t.setDirection(e.dir);for(let n of e.statements)me(n,t)},`populate`),me=e((t,r)=>{let i={Commit:e(e=>r.commit(he(e)),`Commit`),Branch:e(e=>r.branch(ge(e)),`Branch`),Merge:e(e=>r.merge(_e(e)),`Merge`),Checkout:e(e=>r.checkout(ve(e)),`Checkout`),CherryPicking:e(e=>r.cherryPick(ye(e)),`CherryPicking`)}[t.$type];i?i(t):n.error(`Unknown statement type: ${t.$type}`)},`parseStatement`),he=e(e=>({id:e.id,msg:e.message??``,type:e.type===void 0?x.NORMAL:x[e.type],tags:e.tags??void 0}),`parseCommit`),ge=e(e=>({name:e.name,order:e.order??0}),`parseBranch`),_e=e(e=>({branch:e.branch,id:e.id??``,type:e.type===void 0?void 0:x[e.type],tags:e.tags??void 0}),`parseMerge`),ve=e(e=>e.branch,`parseCheckout`),ye=e(e=>({id:e.id,targetId:``,tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),`parseCherryPicking`),be={parse:e(async e=>{let t=await y(`gitGraph`,e);n.debug(t),pe(t,A)},`parse`)},j=10,M=40,N=4,P=2,F=8,I=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),L=12,R=new Set([`redux-color`,`redux-dark-color`]),xe=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),z=e((e,t,n=!1)=>n&&e>0?(e-1)%(t-1)+1:e%t,`calcColorIndex`),B=new Map,V=new Map,H=30,U=new Map,W=[],G=0,K=`LR`,q=e(()=>{B.clear(),V.clear(),U.clear(),G=0,W=[],K=`LR`},`clear`),J=e(e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`text`);return(typeof e==`string`?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(e=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`tspan`);n.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),n.setAttribute(`dy`,`1em`),n.setAttribute(`x`,`0`),n.setAttribute(`class`,`row`),n.textContent=e.trim(),t.appendChild(n)}),t},`drawText`),Y=e(t=>{let n,r,i;return K===`BT`?(r=e((e,t)=>e<=t,`comparisonFunc`),i=1/0):(r=e((e,t)=>e>=t,`comparisonFunc`),i=0),t.forEach(e=>{let t=K===`TB`||K==`BT`?V.get(e)?.y:V.get(e)?.x;t!==void 0&&r(t,i)&&(n=e,i=t)}),n},`findClosestParent`),Se=e(e=>{let t=``,n=1/0;return e.forEach(e=>{let r=V.get(e).y;r<=n&&(t=e,n=r)}),t||void 0},`findClosestParentBT`),Ce=e((e,t,n)=>{let r=n,i=n,a=[];e.forEach(e=>{let n=t.get(e);if(!n)throw Error(`Commit not found for key ${e}`);n.parents.length?(r=Te(n),i=Math.max(r,i)):a.push(n),Ee(n,r)}),r=i,a.forEach(e=>{De(e,r,n)}),e.forEach(e=>{let n=t.get(e);if(n?.parents.length){let e=Se(n.parents);r=V.get(e).y-M,r<=i&&(i=r);let t=B.get(n.branch).pos,a=r-j;V.set(n.id,{x:t,y:a})}})},`setParallelBTPos`),we=e(e=>{let t=Y(e.parents.filter(e=>e!==null));if(!t)throw Error(`Closest parent not found for commit ${e.id}`);let n=V.get(t)?.y;if(n===void 0)throw Error(`Closest parent position not found for commit ${e.id}`);return n},`findClosestParentPos`),Te=e(e=>we(e)+M,`calculateCommitPosition`),Ee=e((e,t)=>{let n=B.get(e.branch);if(!n)throw Error(`Branch not found for commit ${e.id}`);let r=n.pos,i=t+j;return V.set(e.id,{x:r,y:i}),{x:r,y:i}},`setCommitPosition`),De=e((e,t,n)=>{let r=B.get(e.branch);if(!r)throw Error(`Branch not found for commit ${e.id}`);let i=t+n,a=r.pos;V.set(e.id,{x:a,y:i})},`setRootPosition`),Oe=e((e,t,n,i,a,o)=>{let{theme:s}=r(),c=I.has(s??``),l=R.has(s??``),u=xe.has(s??``);if(o===x.HIGHLIGHT)e.append(`rect`).attr(`x`,n.x-10+(c?3:0)).attr(`y`,n.y-10+(c?3:0)).attr(`width`,c?14:20).attr(`height`,c?14:20).attr(`class`,`commit ${t.id} commit-highlight${z(a,F,l)} ${i}-outer`),e.append(`rect`).attr(`x`,n.x-6+(c?2:0)).attr(`y`,n.y-6+(c?2:0)).attr(`width`,c?8:12).attr(`height`,c?8:12).attr(`class`,`commit ${t.id} commit${z(a,F,l)} ${i}-inner`);else if(o===x.CHERRY_PICK)e.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,c?7:10).attr(`class`,`commit ${t.id} ${i}`),e.append(`circle`).attr(`cx`,n.x-3).attr(`cy`,n.y+2).attr(`r`,c?2.5:2.75).attr(`fill`,u?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${i}`),e.append(`circle`).attr(`cx`,n.x+3).attr(`cy`,n.y+2).attr(`r`,c?2.5:2.75).attr(`fill`,u?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${i}`),e.append(`line`).attr(`x1`,n.x+3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,u?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${i}`),e.append(`line`).attr(`x1`,n.x-3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,u?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${i}`);else{let r=e.append(`circle`);if(r.attr(`cx`,n.x),r.attr(`cy`,n.y),r.attr(`r`,c?7:10),r.attr(`class`,`commit ${t.id} commit${z(a,F,l)}`),o===x.MERGE){let r=e.append(`circle`);r.attr(`cx`,n.x),r.attr(`cy`,n.y),r.attr(`r`,c?5:6),r.attr(`class`,`commit ${i} ${t.id} commit${z(a,F,l)}`)}if(o===x.REVERSE){let r=e.append(`path`),o=c?4:5;r.attr(`d`,`M ${n.x-o},${n.y-o}L${n.x+o},${n.y+o}M${n.x-o},${n.y+o}L${n.x+o},${n.y-o}`).attr(`class`,`commit ${i} ${t.id} commit${z(a,F,l)}`)}}},`drawCommitBullet`),ke=e((e,t,n,r,i)=>{if(t.type!==x.CHERRY_PICK&&(t.customId&&t.type===x.MERGE||t.type!==x.MERGE)&&i.showCommitLabel){let a=e.append(`g`),o=a.insert(`rect`).attr(`class`,`commit-label-bkg`),s=a.append(`text`).attr(`x`,r).attr(`y`,n.y+25).attr(`class`,`commit-label`).text(t.id),c=s.node()?.getBBox();if(c&&(o.attr(`x`,n.posWithOffset-c.width/2-P).attr(`y`,n.y+13.5).attr(`width`,c.width+2*P).attr(`height`,c.height+2*P),K===`TB`||K===`BT`?(o.attr(`x`,n.x-(c.width+4*N+5)).attr(`y`,n.y-12),s.attr(`x`,n.x-(c.width+4*N)).attr(`y`,n.y+c.height-12)):s.attr(`x`,n.posWithOffset-c.width/2),i.rotateCommitLabel)){if(K===`TB`||K===`BT`)s.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`),o.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`);else{let e=-7.5-(c.width+10)/25*9.5,t=10+c.width/25*8.5;a.attr(`transform`,`translate(`+e+`, `+t+`) rotate(-45, `+r+`, `+n.y+`)`)}}}},`drawCommitLabel`),Ae=e((e,t,n,r)=>{if(t.tags.length>0){let i=0,a=0,o=0,s=[];for(let r of t.tags.reverse()){let t=e.insert(`polygon`),c=e.append(`circle`),l=e.append(`text`).attr(`y`,n.y-16-i).attr(`class`,`tag-label`).text(r),u=l.node()?.getBBox();if(!u)throw Error(`Tag bbox not found`);a=Math.max(a,u.width),o=Math.max(o,u.height),l.attr(`x`,n.posWithOffset-u.width/2),s.push({tag:l,hole:c,rect:t,yOffset:i}),i+=20}for(let{tag:e,hole:t,rect:i,yOffset:c}of s){let s=o/2,l=n.y-19.2-c;if(i.attr(`class`,`tag-label-bkg`).attr(`points`,`2      ${r-a/2-N/2},${l+P}  3      ${r-a/2-N/2},${l-P}4      ${n.posWithOffset-a/2-N},${l-s-P}5      ${n.posWithOffset+a/2+N},${l-s-P}6      ${n.posWithOffset+a/2+N},${l+s+P}7      ${n.posWithOffset-a/2-N},${l+s+P}`),t.attr(`cy`,l).attr(`cx`,r-a/2+N/2).attr(`r`,1.5).attr(`class`,`tag-hole`),K===`TB`||K===`BT`){let o=r+c;i.attr(`class`,`tag-label-bkg`).attr(`points`,`8        ${n.x},${o+2}9        ${n.x},${o-2}10        ${n.x+j},${o-s-2}11        ${n.x+j+a+4},${o-s-2}12        ${n.x+j+a+4},${o+s+2}13        ${n.x+j},${o+s+2}`).attr(`transform`,`translate(12,12) rotate(45, `+n.x+`,`+r+`)`),t.attr(`cx`,n.x+N/2).attr(`cy`,o).attr(`transform`,`translate(12,12) rotate(45, `+n.x+`,`+r+`)`),e.attr(`x`,n.x+5).attr(`y`,o+3).attr(`transform`,`translate(14,14) rotate(45, `+n.x+`,`+r+`)`)}}}},`drawCommitTags`),je=e(e=>{switch(e.customType??e.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`),Me=e((e,t,n,r)=>{let i={x:0,y:0};if(e.parents.length>0){let n=Y(e.parents);if(n){let a=r.get(n)??i;return t===`TB`?a.y+M:t===`BT`?(r.get(e.id)??i).y-M:a.x+M}}else if(t===`TB`)return H;else if(t===`BT`)return(r.get(e.id)??i).y-M;else return 0;return 0},`calculatePosition`),Ne=e((e,t,n)=>{let i=K===`BT`&&n?t:t+j,a=B.get(e.branch)?.pos,o=K===`TB`||K===`BT`?B.get(e.branch)?.pos:i;if(o===void 0||a===void 0)throw Error(`Position were undefined for commit ${e.id}`);let s=I.has(r().theme??``);return{x:o,y:K===`TB`||K===`BT`?i:a+(s?L/2+1:-2),posWithOffset:i}},`getCommitPosition`),X=e((t,n,r,i)=>{let a=t.append(`g`).attr(`class`,`commit-bullets`),o=t.append(`g`).attr(`class`,`commit-labels`),s=K===`TB`||K===`BT`?H:0,c=[...n.keys()],l=i.parallelCommits??!1,u=e((e,t)=>{let r=n.get(e)?.seq,i=n.get(t)?.seq;return r!==void 0&&i!==void 0?r-i:0},`sortKeys`),d=c.sort(u);K===`BT`&&(l&&Ce(d,n,s),d=d.reverse()),d.forEach(e=>{let t=n.get(e);if(!t)throw Error(`Commit not found for key ${e}`);l&&(s=Me(t,K,s,V));let c=Ne(t,s,l);if(r){let e=je(t),n=t.customType??t.type,r=B.get(t.branch)?.index??0;Oe(a,t,c,e,r,n),ke(o,t,c,s,i),Ae(o,t,c,s)}K===`TB`||K===`BT`?V.set(t.id,{x:c.x,y:c.posWithOffset}):V.set(t.id,{x:c.posWithOffset,y:c.y}),s=K===`BT`&&l?s+M:s+M+j,s>G&&(G=s)})},`drawCommits`),Pe=e((t,n,r,i,a)=>{let o=(K===`TB`||K===`BT`?r.x<i.x:r.y<i.y)?n.branch:t.branch,s=e(e=>e.branch===o,`isOnBranchToGetCurve`),c=e(e=>e.seq>t.seq&&e.seq<n.seq,`isBetweenCommits`);return[...a.values()].some(e=>c(e)&&s(e))},`shouldRerouteArrow`),Z=e((e,t,n=0)=>{let r=e+Math.abs(e-t)/2;return n>5?r:W.every(e=>Math.abs(e-r)>=10)?(W.push(r),r):Z(e,t-Math.abs(e-t)/5,n+1)},`findLane`),Fe=e((e,t,n,i)=>{let{theme:a}=r(),o=R.has(a??``),s=V.get(t.id),c=V.get(n.id);if(s===void 0||c===void 0)throw Error(`Commit positions not found for commits ${t.id} and ${n.id}`);let l=Pe(t,n,s,c,i),u=``,d=``,f=0,p=0,m=B.get(n.branch)?.index;n.type===x.MERGE&&t.id!==n.parents[0]&&(m=B.get(t.branch)?.index);let h;if(l){u=`A 10 10, 0, 0, 0,`,d=`A 10 10, 0, 0, 1,`,f=10,p=10;let e=s.y<c.y?Z(s.y,c.y):Z(c.y,s.y),n=s.x<c.x?Z(s.x,c.x):Z(c.x,s.x);K===`TB`?s.x<c.x?h=`M ${s.x} ${s.y} L ${n-f} ${s.y} ${d} ${n} ${s.y+p} L ${n} ${c.y-f} ${u} ${n+p} ${c.y} L ${c.x} ${c.y}`:(m=B.get(t.branch)?.index,h=`M ${s.x} ${s.y} L ${n+f} ${s.y} ${u} ${n} ${s.y+p} L ${n} ${c.y-f} ${d} ${n-p} ${c.y} L ${c.x} ${c.y}`):K===`BT`?s.x<c.x?h=`M ${s.x} ${s.y} L ${n-f} ${s.y} ${u} ${n} ${s.y-p} L ${n} ${c.y+f} ${d} ${n+p} ${c.y} L ${c.x} ${c.y}`:(m=B.get(t.branch)?.index,h=`M ${s.x} ${s.y} L ${n+f} ${s.y} ${d} ${n} ${s.y-p} L ${n} ${c.y+f} ${u} ${n-p} ${c.y} L ${c.x} ${c.y}`):s.y<c.y?h=`M ${s.x} ${s.y} L ${s.x} ${e-f} ${u} ${s.x+p} ${e} L ${c.x-f} ${e} ${d} ${c.x} ${e+p} L ${c.x} ${c.y}`:(m=B.get(t.branch)?.index,h=`M ${s.x} ${s.y} L ${s.x} ${e+f} ${d} ${s.x+p} ${e} L ${c.x-f} ${e} ${u} ${c.x} ${e-p} L ${c.x} ${c.y}`)}else u=`A 20 20, 0, 0, 0,`,d=`A 20 20, 0, 0, 1,`,f=20,p=20,K===`TB`?(s.x<c.x&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y-f} ${u} ${s.x+p} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x-f} ${s.y} ${d} ${c.x} ${s.y+p} L ${c.x} ${c.y}`),s.x>c.x&&(u=`A 20 20, 0, 0, 0,`,d=`A 20 20, 0, 0, 1,`,f=20,p=20,h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y-f} ${d} ${s.x-p} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x+f} ${s.y} ${u} ${c.x} ${s.y+p} L ${c.x} ${c.y}`),s.x===c.x&&(h=`M ${s.x} ${s.y} L ${c.x} ${c.y}`)):K===`BT`?(s.x<c.x&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y+f} ${d} ${s.x+p} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x-f} ${s.y} ${u} ${c.x} ${s.y-p} L ${c.x} ${c.y}`),s.x>c.x&&(u=`A 20 20, 0, 0, 0,`,d=`A 20 20, 0, 0, 1,`,f=20,p=20,h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y+f} ${u} ${s.x-p} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x+f} ${s.y} ${d} ${c.x} ${s.y-p} L ${c.x} ${c.y}`),s.x===c.x&&(h=`M ${s.x} ${s.y} L ${c.x} ${c.y}`)):(s.y<c.y&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${s.x} ${s.y} L ${c.x-f} ${s.y} ${d} ${c.x} ${s.y+p} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${s.x} ${c.y-f} ${u} ${s.x+p} ${c.y} L ${c.x} ${c.y}`),s.y>c.y&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${s.x} ${s.y} L ${c.x-f} ${s.y} ${u} ${c.x} ${s.y-p} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${s.x} ${c.y+f} ${d} ${s.x+p} ${c.y} L ${c.x} ${c.y}`),s.y===c.y&&(h=`M ${s.x} ${s.y} L ${c.x} ${c.y}`));if(h===void 0)throw Error(`Line definition not found`);e.append(`path`).attr(`d`,h).attr(`class`,`arrow arrow`+z(m,F,o))},`drawArrow`),Ie=e((e,t)=>{let n=e.append(`g`).attr(`class`,`commit-arrows`);[...t.keys()].forEach(e=>{let r=t.get(e);r.parents&&r.parents.length>0&&r.parents.forEach(e=>{Fe(n,t.get(e),r,t)})})},`drawArrows`),Le=e((e,t,n,i)=>{let{look:a,theme:o,themeVariables:s}=r(),{dropShadow:c,THEME_COLOR_LIMIT:l}=s,u=I.has(o??``),d=R.has(o??``),f=e.append(`g`);t.forEach((e,t)=>{let r=z(t,u?l:F,d),o=B.get(e.name)?.pos;if(o===void 0)throw Error(`Position not found for branch ${e.name}`);let s=K===`TB`||K===`BT`?o:u?o+L/2+1:o-2,p=f.append(`line`);p.attr(`x1`,0),p.attr(`y1`,s),p.attr(`x2`,G),p.attr(`y2`,s),p.attr(`class`,`branch branch`+r),K===`TB`?(p.attr(`y1`,H),p.attr(`x1`,o),p.attr(`y2`,G),p.attr(`x2`,o)):K===`BT`&&(p.attr(`y1`,G),p.attr(`x1`,o),p.attr(`y2`,H),p.attr(`x2`,o)),W.push(s);let m=e.name,h=J(m),g=f.insert(`rect`),_=f.insert(`g`).attr(`class`,`branchLabel`).insert(`g`).attr(`class`,`label branch-label`+r);_.node().appendChild(h);let v=h.getBBox(),y=u?0:4,b=u?16:0,x=u?L:0;a===`neo`&&g.attr(`data-look`,`neo`),g.attr(`class`,`branchLabelBkg label`+r).attr(`style`,a===`neo`?`filter:${u?`url(#${i}-drop-shadow)`:c}`:``).attr(`rx`,y).attr(`ry`,y).attr(`x`,-v.width-4-(n.rotateCommitLabel===!0?30:0)).attr(`y`,-v.height/2+10).attr(`width`,v.width+18+b).attr(`height`,v.height+4+x),_.attr(`transform`,`translate(`+(-v.width-14-(n.rotateCommitLabel===!0?30:0)+b/2)+`, `+(s-v.height/2-2)+`)`),K===`TB`?(g.attr(`x`,o-v.width/2-10).attr(`y`,0),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, 0)`),u&&(g.attr(`transform`,`translate(${-b/2-3}, ${-x-10})`),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+(-x*2+7)+`)`))):K===`BT`?(g.attr(`x`,o-v.width/2-10).attr(`y`,G),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+G+`)`),u&&(g.attr(`transform`,`translate(${-b/2-3}, ${x+10})`),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+(G+x*2+4)+`)`))):g.attr(`transform`,`translate(-19, `+(s-12-x/2)+`)`)})},`drawBranches`),Re=e(function(e,t,n,r,i){return B.set(e,{pos:t,index:n}),t+=50+(i?40:0)+(K===`TB`||K===`BT`?r.width/2:0),t},`setBranchPosition`),ze={draw:e(function(e,i,a,o){q(),n.debug(`in gitgraph renderer`,e+`14`,`id:`,i,a);let s=o.db;if(!s.getConfig){n.error(`getConfig method is not available on db`);return}let c=s.getConfig(),l=c.rotateCommitLabel??!1;U=s.getCommits();let u=s.getBranchesAsObjArray();K=s.getDirection();let d=t(`[id="${i}"]`),{look:f,theme:m,themeVariables:h}=r(),{useGradient:g,gradientStart:v,gradientStop:y,filterColor:b}=h;if(g){let e=d.append(`defs`).append(`linearGradient`).attr(`id`,i+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`stop`).attr(`offset`,`0%`).attr(`stop-color`,v).attr(`stop-opacity`,1),e.append(`stop`).attr(`offset`,`100%`).attr(`stop-color`,y).attr(`stop-opacity`,1)}f===`neo`&&I.has(m??``)&&d.append(`defs`).append(`filter`).attr(`id`,i+`-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,b);let x=0;u.forEach((e,t)=>{let n=J(e.name),r=d.append(`g`),i=r.insert(`g`).attr(`class`,`branchLabel`),a=i.insert(`g`).attr(`class`,`label branch-label`);a.node()?.appendChild(n);let o=n.getBBox();x=Re(e.name,x,t,o,l),a.remove(),i.remove(),r.remove()}),X(d,U,!1,c),c.showBranches&&Le(d,u,c,i),Ie(d,U),X(d,U,!0,c),_.insertTitle(d,`gitTitleText`,c.titleTopMargin??0,s.getDiagramTitle()),p(void 0,d,c.diagramPadding,c.useMaxWidth)},`draw`)},Q=8,$=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),Be=new Set([`redux-color`,`redux-dark-color`]),Ve=new Set([`neo`,`neo-dark`]),He=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),Ue=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`,`neo`,`neo-dark`]),We=e(e=>{let{svgId:t}=e,n=``;if(e.useGradient&&t)for(let r=0;r<e.THEME_COLOR_LIMIT;r++)n+=`15      .label${r}  { fill: ${e.mainBkg}; stroke: url(${t}-gradient); stroke-width: ${e.strokeWidth};}16             `;return n},`genGitGraphGradient`),Ge=e(e=>{let{theme:t,themeVariables:n}=s(),{borderColorArray:r}=n,i=$.has(t);if(Ve.has(t)){let t=``;for(let n=0;n<e.THEME_COLOR_LIMIT;n++)if(n===0)t+=`17        .branch-label${n} { fill: ${e.nodeBorder};}18        .commit${n} { stroke: ${e.nodeBorder};   }19        .commit-highlight${n} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }20        .arrow${n} { stroke: ${e.nodeBorder}; }21        .commit-bullets { fill: ${e.nodeBorder}; }22        .commit-cherry-pick${n} { stroke: ${e.nodeBorder}; }23        ${We(e)}`;else{let r=n%Q;t+=`24        .branch-label${n} { fill: ${e[`gitBranchLabel`+r]}; }25        .commit${n} { stroke: ${e[`git`+r]}; fill: ${e[`git`+r]}; }26        .commit-highlight${n} { stroke: ${e[`gitInv`+r]}; fill: ${e[`gitInv`+r]}; }27        .arrow${n} { stroke: ${e[`git`+r]}; }28        `}return t}if(Be.has(t)){let n=``;for(let a=0;a<e.THEME_COLOR_LIMIT;a++)if(a===0)n+=`29        .branch-label${a} { fill: ${e.nodeBorder}; ${i?`font-weight:${e.noteFontWeight}`:``} }30        .commit${a} { stroke: ${e.nodeBorder}; }31        .commit-highlight${a} { stroke: ${e.nodeBorder}; fill: ${e.mainBkg}; }32        .label${a}  { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${i?`font-weight:${e.noteFontWeight}`:``} }33        .arrow${a} { stroke: ${e.nodeBorder}; }34        .commit-bullets { fill: ${e.nodeBorder}; }35        `;else{let o=a%r.length;n+=`36        .branch-label${a} { fill: ${e.nodeBorder}; ${i?`font-weight:${e.noteFontWeight}`:``} }37        .commit${a} { stroke: ${r[o]}; fill: ${r[o]}; }38        .commit-highlight${a} { stroke: ${r[o]}; fill: ${r[o]}; }39        .label${a}  { fill: ${He.has(t)?e.mainBkg:r[o]}; stroke: ${r[o]};  stroke-width: ${e.strokeWidth}; }40        .arrow${a} { stroke: ${r[o]}; }41        `}return n}{let t=``;for(let n=0;n<e.THEME_COLOR_LIMIT;n++)t+=`42        .branch-label${n} { fill: ${e.nodeBorder}; ${i?`font-weight:${e.noteFontWeight}`:``} }43        .commit${n} { stroke: ${e.nodeBorder};   }44        .commit-highlight${n} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }45        .label${n}  { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${i?`font-weight:${e.noteFontWeight}`:``}}46        .arrow${n} { stroke: ${e.nodeBorder}; }47        .commit-bullets { fill: ${e.nodeBorder}; }48        .commit-cherry-pick${n} { stroke: ${e.nodeBorder}; }49        `;return t}},`genColor`),Ke=e(e=>`${Array.from({length:e.THEME_COLOR_LIMIT},(e,t)=>t).map(t=>{let n=t%Q;return`50        .branch-label${t} { fill: ${e[`gitBranchLabel`+n]}; }51        .commit${t} { stroke: ${e[`git`+n]}; fill: ${e[`git`+n]}; }52        .commit-highlight${t} { stroke: ${e[`gitInv`+n]}; fill: ${e[`gitInv`+n]}; }53        .label${t}  { fill: ${e[`git`+n]}; }54        .arrow${t} { stroke: ${e[`git`+n]}; }55        `}).join(`56`)}`,`normalTheme`),qe={parser:be,db:A,renderer:ze,styles:e(e=>{let{theme:t}=s(),n=Ue.has(t);return`57  .commit-id,58  .commit-msg,59  .branch-label {60    fill: lightgrey;61    color: lightgrey;62    font-family: 'trebuchet ms', verdana, arial, sans-serif;63    font-family: var(--mermaid-font-family);64  }65  66  ${n?Ge(e):Ke(e)}67 68  .branch {69    stroke-width: ${e.strokeWidth};70    stroke: ${e.commitLineColor??e.lineColor};71    stroke-dasharray:  ${n?`4 2`:`2`};72  }73  .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${n?e.nodeBorder:e.commitLabelColor}; ${n?`font-weight:${e.noteFontWeight};`:``}}74  .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${n?`transparent`:e.commitLabelBackground}; opacity: ${n?``:.5};  }75  .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};}76  .tag-label-bkg { fill: ${n?e.mainBkg:e.tagLabelBackground}; stroke: ${n?e.nodeBorder:e.tagLabelBorder}; ${n?`filter:${e.dropShadow}`:``}  }77  .tag-hole { fill: ${e.textColor}; }78 79  .commit-merge {80    stroke: ${n?e.mainBkg:e.primaryColor};81    fill: ${n?e.mainBkg:e.primaryColor};82  }83  .commit-reverse {84    stroke: ${n?e.mainBkg:e.primaryColor};85    fill: ${n?e.mainBkg:e.primaryColor};86    stroke-width: ${n?e.strokeWidth:3};87  }88  .commit-highlight-outer {89  }90  .commit-highlight-inner {91    stroke: ${n?e.mainBkg:e.primaryColor};92    fill: ${n?e.mainBkg:e.primaryColor};93  }94 95  .arrow {96    /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */97    stroke-width: ${$.has(t)?e.strokeWidth:8};98    stroke-linecap: round;99    fill: none100  }101  .gitTitleText {102    text-anchor: middle;103    font-size: 18px;104    fill: ${e.textColor};105  }106`},`getStyles`)};export{qe as diagram};