You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
24 KiB

5 months ago
import{G as k}from"./graph-044629d9.js";import{r as y,u as q,m as R,a as x,b as W,f as z,z as Ee,s as C,c as O,e as ye,g as Ne,d as Le}from"./zipObject-0e7af259.js";import{f,h as m,a as T,v as N,r as F}from"./reduce-bb35cf56.js";import{ae as S,ac as w,af as Ie,ag as K,aa as g,ah as Re,p as M,ai as P,aj as _e,ak as j}from"./index-6b91f299.js";class Ce{constructor(){var n={};n._next=n._prev=n,this._sentinel=n}dequeue(){var n=this._sentinel,r=n._prev;if(r!==n)return Q(r),r}enqueue(n){var r=this._sentinel;n._prev&&n._next&&Q(n),n._next=r._next,r._next._prev=n,r._next=n,n._prev=r}toString(){for(var n=[],r=this._sentinel,t=r._prev;t!==r;)n.push(JSON.stringify(t,Te)),t=t._prev;return"["+n.join(", ")+"]"}}function Q(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Te(e,n){if(e!=="_next"&&e!=="_prev")return n}var Se=Ie(1);function Me(e,n){if(e.nodeCount()<=1)return[];var r=Oe(e,n||Se),t=Pe(r.graph,r.buckets,r.zeroIdx);return S(w(t,function(i){return e.outEdges(i.v,i.w)}))}function Pe(e,n,r){for(var t=[],i=n[n.length-1],o=n[0],a;e.nodeCount();){for(;a=o.dequeue();)B(e,n,r,a);for(;a=i.dequeue();)B(e,n,r,a);if(e.nodeCount()){for(var u=n.length-2;u>0;--u)if(a=n[u].dequeue(),a){t=t.concat(B(e,n,r,a,!0));break}}}return t}function B(e,n,r,t,i){var o=i?[]:void 0;return f(e.inEdges(t.v),function(a){var u=e.edge(a),d=e.node(a.v);i&&o.push({v:a.v,w:a.w}),d.out-=u,$(n,r,d)}),f(e.outEdges(t.v),function(a){var u=e.edge(a),d=a.w,s=e.node(d);s.in-=u,$(n,r,s)}),e.removeNode(t.v),o}function Oe(e,n){var r=new k,t=0,i=0;f(e.nodes(),function(u){r.setNode(u,{v:u,in:0,out:0})}),f(e.edges(),function(u){var d=r.edge(u.v,u.w)||0,s=n(u),c=d+s;r.setEdge(u.v,u.w,c),i=Math.max(i,r.node(u.v).out+=s),t=Math.max(t,r.node(u.w).in+=s)});var o=y(i+t+3).map(function(){return new Ce}),a=t+1;return f(r.nodes(),function(u){$(o,a,r.node(u))}),{graph:r,buckets:o,zeroIdx:a}}function $(e,n,r){r.out?r.in?e[r.out-r.in+n].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}function Fe(e){var n=e.graph().acyclicer==="greedy"?Me(e,r(e)):Ve(e);f(n,function(t){var i=e.edge(t);e.removeEdge(t),i.forwardName=t.name,i.reversed=!0,e.setEdge(t.w,t.v,i,q("rev"))});function r(t){return function(i){return t.edge(i).weight}}}function Ve(e){var n=[],r={},t={};function i(o){m(t,o)||(t[o]=!0,r[o]=!0,f(e.outEdges(o),function(a){m(r,a.w)?n.push(a):i(a.w)}),delete r[o])}return f(e.nodes(),i),n}function Be(e){f(e.edges(),function(n){var r=e.edge(n);if(r.reversed){e.removeEdge(n);var t=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(n.w,n.v,r,t)}})}function L(e,n,r,t){var i;do i=q(t);while(e.hasNode(i));return r.dummy=n,e.setNode(i,r),i}function Ae(e){var n=new k().setGraph(e.graph());return f(e.nodes(),function(r){n.setNode(r,e.node(r))}),f(e.edges(),function(r){var t=n.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);n.setEdge(r.v,r.w,{weight:t.weight+i.weight,minlen:Math.max(t.minlen,i.minlen)})}),n}function de(e){var n=new k({multigraph:e.isMultigraph()}).setGraph(e.graph());return f(e.nodes(),function(r){e.children(r).length||n.setNode(r,e.node(r))}),f(e.edges(),function(r){n.setEdge(r,e.edge(r))}),n}function Z(e,n){var r=e.x,t=e.y,i=n.x-r,o=n.y-t,a=e.width/2,u=e.height/2;if(!i&&!o)throw new Error("Not possible to find intersection inside of the rectangle");var d,s;return Math.abs(o)*a>Math.abs(i)*u?(o<0&&(u=-u),d=u*i/o,s=u):(i<0&&(a=-a),d=a,s=a*o/i),{x:r+d,y:t+s}}function V(e){var n=w(y(se(e)+1),function(){return[]});return f(e.nodes(),function(r){var t=e.node(r),i=t.rank;g(i)||(n[i][t.order]=r)}),n}function Ye(e){var n=R(w(e.nodes(),function(r){return e.node(r).rank}));f(e.nodes(),function(r){var t=e.node(r);m(t,"rank")&&(t.rank-=n)})}function De(e){var n=R(w(e.nodes(),function(o){return e.node(o).rank})),r=[];f(e.nodes(),function(o){var a=e.node(o).rank-n;r[a]||(r[a]=[]),r[a].push(o)});var t=0,i=e.graph().nodeRankFactor;f(r,function(o,a){g(o)&&a%i!==0?--t:t&&f(o,function(u){e.node(u).rank+=t})})}function ee(e,n,r,t){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=t),L(e,"border",i,n)}function se(e){return x(w(e.nodes