@filsilva/helios-cli 0.10.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.
- package/README.md +171 -0
- package/bin/helios.js +34 -0
- package/dist/client/assets/HeliosSessionWorker.browser-BYYjDIKH.js +3 -0
- package/dist/client/assets/HeliosSessionWorker.browser-BYYjDIKH.js.map +1 -0
- package/dist/client/assets/d3force3dWorker-BKANL9of.js +2 -0
- package/dist/client/assets/d3force3dWorker-BKANL9of.js.map +1 -0
- package/dist/client/assets/index-CP7mSmLx.js +9530 -0
- package/dist/client/assets/index-CP7mSmLx.js.map +1 -0
- package/dist/client/assets/layoutWorker-Lc8iIdmf.js +2 -0
- package/dist/client/assets/layoutWorker-Lc8iIdmf.js.map +1 -0
- package/dist/client/index.html +27 -0
- package/package.json +40 -0
- package/skills/helios-cli/SKILL.md +118 -0
- package/skills/helios-cli/references/behaviors.md +47 -0
- package/skills/helios-cli/references/layouts.md +77 -0
- package/skills/helios-cli/references/mappers.md +119 -0
- package/skills/helios-cli/references/metrics.md +83 -0
- package/skills/helios-cli/references/networks.md +53 -0
- package/skills/helios-cli/references/persistence.md +136 -0
- package/skills/helios-cli/references/positions.md +63 -0
- package/skills/helios-cli/references/rendering-export.md +56 -0
- package/skills/helios-cli/references/rpc-methods.md +83 -0
- package/src/cli.js +488 -0
- package/src/client/index.html +27 -0
- package/src/client/main.js +2210 -0
- package/src/daemon/SessionDaemon.js +1065 -0
- package/src/daemon/entry.js +36 -0
- package/src/protocol/jsonl.js +88 -0
- package/src/shared/cliConfig.js +52 -0
- package/src/shared/fileSessionStore.js +202 -0
- package/src/shared/fs.js +59 -0
- package/src/shared/networkFormats.js +55 -0
- package/src/shared/networkInspect.js +81 -0
- package/src/shared/paths.js +43 -0
- package/src/shared/sessionClient.js +88 -0
- package/src/shared/sessionId.js +5 -0
- package/src/shared/sessionRegistry.js +53 -0
- package/src/shared/sessionSurfaces.js +199 -0
- package/vite.config.js +47 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function Rt(t,n,e){var i,r=1;t==null&&(t=0),n==null&&(n=0),e==null&&(e=0);function s(){var o,a=i.length,f,h=0,l=0,u=0;for(o=0;o<a;++o)f=i[o],h+=f.x||0,l+=f.y||0,u+=f.z||0;for(h=(h/a-t)*r,l=(l/a-n)*r,u=(u/a-e)*r,o=0;o<a;++o)f=i[o],h&&(f.x-=h),l&&(f.y-=l),u&&(f.z-=u)}return s.initialize=function(o){i=o},s.x=function(o){return arguments.length?(t=+o,s):t},s.y=function(o){return arguments.length?(n=+o,s):n},s.z=function(o){return arguments.length?(e=+o,s):e},s.strength=function(o){return arguments.length?(r=+o,s):r},s}function Xt(t){var n=+this._x.call(null,t);return qt(this.cover(n),n,t)}function qt(t,n,e){if(isNaN(n))return t;var i,r=t._root,s={data:e},o=t._x0,a=t._x1,f,h,l,u,_;if(!r)return t._root=s,t;for(;r.length;)if((l=n>=(f=(o+a)/2))?o=f:a=f,i=r,!(r=r[u=+l]))return i[u]=s,t;if(h=+t._x.call(null,r.data),n===h)return s.next=r,i?i[u]=s:t._root=s,t;do i=i?i[u]=new Array(2):t._root=new Array(2),(l=n>=(f=(o+a)/2))?o=f:a=f;while((u=+l)==(_=+(h>=f)));return i[_]=r,i[u]=s,t}function Lt(t){var n,e=t.length,i,r=new Array(e),s=1/0,o=-1/0;for(n=0;n<e;++n)isNaN(i=+this._x.call(null,t[n]))||(r[n]=i,i<s&&(s=i),i>o&&(o=i));if(s>o)return this;for(this.cover(s).cover(o),n=0;n<e;++n)qt(this,r[n],t[n]);return this}function Yt(t){if(isNaN(t=+t))return this;var n=this._x0,e=this._x1;if(isNaN(n))e=(n=Math.floor(t))+1;else{for(var i=e-n||1,r=this._root,s,o;n>t||t>=e;)switch(o=+(t<n),s=new Array(2),s[o]=r,r=s,i*=2,o){case 0:e=n+i;break;case 1:n=e-i;break}this._root&&this._root.length&&(this._root=r)}return this._x0=n,this._x1=e,this}function Ht(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function Qt(t){return arguments.length?this.cover(+t[0][0]).cover(+t[1][0]):isNaN(this._x0)?void 0:[[this._x0],[this._x1]]}function L(t,n,e){this.node=t,this.x0=n,this.x1=e}function Zt(t,n){var e,i=this._x0,r,s,o=this._x1,a=[],f=this._root,h,l;for(f&&a.push(new L(f,i,o)),n==null?n=1/0:(i=t-n,o=t+n);h=a.pop();)if(!(!(f=h.node)||(r=h.x0)>o||(s=h.x1)<i))if(f.length){var u=(r+s)/2;a.push(new L(f[1],u,s),new L(f[0],r,u)),(l=+(t>=u))&&(h=a[a.length-1],a[a.length-1]=a[a.length-1-l],a[a.length-1-l]=h)}else{var _=Math.abs(t-+this._x.call(null,f.data));_<n&&(n=_,i=t-_,o=t+_,e=f.data)}return e}function Gt(t){if(isNaN(f=+this._x.call(null,t)))return this;var n,e=this._root,i,r,s,o=this._x0,a=this._x1,f,h,l,u,_;if(!e)return this;if(e.length)for(;;){if((l=f>=(h=(o+a)/2))?o=h:a=h,n=e,!(e=e[u=+l]))return this;if(!e.length)break;n[u+1&1]&&(i=n,_=u)}for(;e.data!==t;)if(r=e,!(e=e.next))return this;return(s=e.next)&&delete e.next,r?(s?r.next=s:delete r.next,this):n?(s?n[u]=s:delete n[u],(e=n[0]||n[1])&&e===(n[1]||n[0])&&!e.length&&(i?i[_]=e:this._root=e),this):(this._root=s,this)}function Ut(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function Vt(){return this._root}function Jt(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function Kt(t){var n=[],e,i=this._root,r,s,o;for(i&&n.push(new L(i,this._x0,this._x1));e=n.pop();)if(!t(i=e.node,s=e.x0,o=e.x1)&&i.length){var a=(s+o)/2;(r=i[1])&&n.push(new L(r,a,o)),(r=i[0])&&n.push(new L(r,s,a))}return this}function Wt(t){var n=[],e=[],i;for(this._root&&n.push(new L(this._root,this._x0,this._x1));i=n.pop();){var r=i.node;if(r.length){var s,o=i.x0,a=i.x1,f=(o+a)/2;(s=r[0])&&n.push(new L(s,o,f)),(s=r[1])&&n.push(new L(s,f,a))}e.push(i)}for(;i=e.pop();)t(i.node,i.x0,i.x1);return this}function tn(t){return t[0]}function nn(t){return arguments.length?(this._x=t,this):this._x}function gt(t,n){var e=new vt(n??tn,NaN,NaN);return t==null?e:e.addAll(t)}function vt(t,n,e){this._x=t,this._x0=n,this._x1=e,this._root=void 0}function wt(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var T=gt.prototype=vt.prototype;T.copy=function(){var t=new vt(this._x,this._x0,this._x1),n=this._root,e,i;if(!n)return t;if(!n.length)return t._root=wt(n),t;for(e=[{source:n,target:t._root=new Array(2)}];n=e.pop();)for(var r=0;r<2;++r)(i=n.source[r])&&(i.length?e.push({source:i,target:n.target[r]=new Array(2)}):n.target[r]=wt(i));return t};T.add=Xt;T.addAll=Lt;T.cover=Yt;T.data=Ht;T.extent=Qt;T.find=Zt;T.remove=Gt;T.removeAll=Ut;T.root=Vt;T.size=Jt;T.visit=Kt;T.visitAfter=Wt;T.x=nn;function en(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kt(this.cover(n,e),n,e,t)}function kt(t,n,e,i){if(isNaN(n)||isNaN(e))return t;var r,s=t._root,o={data:i},a=t._x0,f=t._y0,h=t._x1,l=t._y1,u,_,y,M,p,x,g,z;if(!s)return t._root=o,t;for(;s.length;)if((p=n>=(u=(a+h)/2))?a=u:h=u,(x=e>=(_=(f+l)/2))?f=_:l=_,r=s,!(s=s[g=x<<1|p]))return r[g]=o,t;if(y=+t._x.call(null,s.data),M=+t._y.call(null,s.data),n===y&&e===M)return o.next=s,r?r[g]=o:t._root=o,t;do r=r?r[g]=new Array(4):t._root=new Array(4),(p=n>=(u=(a+h)/2))?a=u:h=u,(x=e>=(_=(f+l)/2))?f=_:l=_;while((g=x<<1|p)===(z=(M>=_)<<1|y>=u));return r[z]=s,r[g]=o,t}function rn(t){var n,e,i=t.length,r,s,o=new Array(i),a=new Array(i),f=1/0,h=1/0,l=-1/0,u=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(s=+this._y.call(null,n))||(o[e]=r,a[e]=s,r<f&&(f=r),r>l&&(l=r),s<h&&(h=s),s>u&&(u=s));if(f>l||h>u)return this;for(this.cover(f,h).cover(l,u),e=0;e<i;++e)kt(this,o[e],a[e],t[e]);return this}function sn(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,i=this._y0,r=this._x1,s=this._y1;if(isNaN(e))r=(e=Math.floor(t))+1,s=(i=Math.floor(n))+1;else{for(var o=r-e||1,a=this._root,f,h;e>t||t>=r||i>n||n>=s;)switch(h=(n<i)<<1|t<e,f=new Array(4),f[h]=a,a=f,o*=2,h){case 0:r=e+o,s=i+o;break;case 1:e=r-o,s=i+o;break;case 2:r=e+o,i=s-o;break;case 3:e=r-o,i=s-o;break}this._root&&this._root.length&&(this._root=a)}return this._x0=e,this._y0=i,this._x1=r,this._y1=s,this}function on(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function an(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 E(t,n,e,i,r){this.node=t,this.x0=n,this.y0=e,this.x1=i,this.y1=r}function fn(t,n,e){var i,r=this._x0,s=this._y0,o,a,f,h,l=this._x1,u=this._y1,_=[],y=this._root,M,p;for(y&&_.push(new E(y,r,s,l,u)),e==null?e=1/0:(r=t-e,s=n-e,l=t+e,u=n+e,e*=e);M=_.pop();)if(!(!(y=M.node)||(o=M.x0)>l||(a=M.y0)>u||(f=M.x1)<r||(h=M.y1)<s))if(y.length){var x=(o+f)/2,g=(a+h)/2;_.push(new E(y[3],x,g,f,h),new E(y[2],o,g,x,h),new E(y[1],x,a,f,g),new E(y[0],o,a,x,g)),(p=(n>=g)<<1|t>=x)&&(M=_[_.length-1],_[_.length-1]=_[_.length-1-p],_[_.length-1-p]=M)}else{var z=t-+this._x.call(null,y.data),w=n-+this._y.call(null,y.data),N=z*z+w*w;if(N<e){var c=Math.sqrt(e=N);r=t-c,s=n-c,l=t+c,u=n+c,i=y.data}}return i}function hn(t){if(isNaN(l=+this._x.call(null,t))||isNaN(u=+this._y.call(null,t)))return this;var n,e=this._root,i,r,s,o=this._x0,a=this._y0,f=this._x1,h=this._y1,l,u,_,y,M,p,x,g;if(!e)return this;if(e.length)for(;;){if((M=l>=(_=(o+f)/2))?o=_:f=_,(p=u>=(y=(a+h)/2))?a=y:h=y,n=e,!(e=e[x=p<<1|M]))return this;if(!e.length)break;(n[x+1&3]||n[x+2&3]||n[x+3&3])&&(i=n,g=x)}for(;e.data!==t;)if(r=e,!(e=e.next))return this;return(s=e.next)&&delete e.next,r?(s?r.next=s:delete r.next,this):n?(s?n[x]=s:delete n[x],(e=n[0]||n[1]||n[2]||n[3])&&e===(n[3]||n[2]||n[1]||n[0])&&!e.length&&(i?i[g]=e:this._root=e),this):(this._root=s,this)}function ln(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function un(){return this._root}function cn(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function gn(t){var n=[],e,i=this._root,r,s,o,a,f;for(i&&n.push(new E(i,this._x0,this._y0,this._x1,this._y1));e=n.pop();)if(!t(i=e.node,s=e.x0,o=e.y0,a=e.x1,f=e.y1)&&i.length){var h=(s+a)/2,l=(o+f)/2;(r=i[3])&&n.push(new E(r,h,l,a,f)),(r=i[2])&&n.push(new E(r,s,l,h,f)),(r=i[1])&&n.push(new E(r,h,o,a,l)),(r=i[0])&&n.push(new E(r,s,o,h,l))}return this}function vn(t){var n=[],e=[],i;for(this._root&&n.push(new E(this._root,this._x0,this._y0,this._x1,this._y1));i=n.pop();){var r=i.node;if(r.length){var s,o=i.x0,a=i.y0,f=i.x1,h=i.y1,l=(o+f)/2,u=(a+h)/2;(s=r[0])&&n.push(new E(s,o,a,l,u)),(s=r[1])&&n.push(new E(s,l,a,f,u)),(s=r[2])&&n.push(new E(s,o,u,l,h)),(s=r[3])&&n.push(new E(s,l,u,f,h))}e.push(i)}for(;i=e.pop();)t(i.node,i.x0,i.y0,i.x1,i.y1);return this}function _n(t){return t[0]}function pn(t){return arguments.length?(this._x=t,this):this._x}function xn(t){return t[1]}function yn(t){return arguments.length?(this._y=t,this):this._y}function _t(t,n,e){var i=new pt(n??_n,e??xn,NaN,NaN,NaN,NaN);return t==null?i:i.addAll(t)}function pt(t,n,e,i,r,s){this._x=t,this._y=n,this._x0=e,this._y0=i,this._x1=r,this._y1=s,this._root=void 0}function dt(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var S=_t.prototype=pt.prototype;S.copy=function(){var t=new pt(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root,e,i;if(!n)return t;if(!n.length)return t._root=dt(n),t;for(e=[{source:n,target:t._root=new Array(4)}];n=e.pop();)for(var r=0;r<4;++r)(i=n.source[r])&&(i.length?e.push({source:i,target:n.target[r]=new Array(4)}):n.target[r]=dt(i));return t};S.add=en;S.addAll=rn;S.cover=sn;S.data=on;S.extent=an;S.find=fn;S.remove=hn;S.removeAll=ln;S.root=un;S.size=cn;S.visit=gn;S.visitAfter=vn;S.x=pn;S.y=yn;function wn(t){var n=+this._x.call(null,t),e=+this._y.call(null,t),i=+this._z.call(null,t);return Dt(this.cover(n,e,i),n,e,i,t)}function Dt(t,n,e,i,r){if(isNaN(n)||isNaN(e)||isNaN(i))return t;var s,o=t._root,a={data:r},f=t._x0,h=t._y0,l=t._z0,u=t._x1,_=t._y1,y=t._z1,M,p,x,g,z,w,N,c,d,m,F;if(!o)return t._root=a,t;for(;o.length;)if((N=n>=(M=(f+u)/2))?f=M:u=M,(c=e>=(p=(h+_)/2))?h=p:_=p,(d=i>=(x=(l+y)/2))?l=x:y=x,s=o,!(o=o[m=d<<2|c<<1|N]))return s[m]=a,t;if(g=+t._x.call(null,o.data),z=+t._y.call(null,o.data),w=+t._z.call(null,o.data),n===g&&e===z&&i===w)return a.next=o,s?s[m]=a:t._root=a,t;do s=s?s[m]=new Array(8):t._root=new Array(8),(N=n>=(M=(f+u)/2))?f=M:u=M,(c=e>=(p=(h+_)/2))?h=p:_=p,(d=i>=(x=(l+y)/2))?l=x:y=x;while((m=d<<2|c<<1|N)===(F=(w>=x)<<2|(z>=p)<<1|g>=M));return s[F]=o,s[m]=a,t}function dn(t){var n,e,i=t.length,r,s,o,a=new Array(i),f=new Array(i),h=new Array(i),l=1/0,u=1/0,_=1/0,y=-1/0,M=-1/0,p=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(s=+this._y.call(null,n))||isNaN(o=+this._z.call(null,n))||(a[e]=r,f[e]=s,h[e]=o,r<l&&(l=r),r>y&&(y=r),s<u&&(u=s),s>M&&(M=s),o<_&&(_=o),o>p&&(p=o));if(l>y||u>M||_>p)return this;for(this.cover(l,u,_).cover(y,M,p),e=0;e<i;++e)Dt(this,a[e],f[e],h[e],t[e]);return this}function zn(t,n,e){if(isNaN(t=+t)||isNaN(n=+n)||isNaN(e=+e))return this;var i=this._x0,r=this._y0,s=this._z0,o=this._x1,a=this._y1,f=this._z1;if(isNaN(i))o=(i=Math.floor(t))+1,a=(r=Math.floor(n))+1,f=(s=Math.floor(e))+1;else{for(var h=o-i||1,l=this._root,u,_;i>t||t>=o||r>n||n>=a||s>e||e>=f;)switch(_=(e<s)<<2|(n<r)<<1|t<i,u=new Array(8),u[_]=l,l=u,h*=2,_){case 0:o=i+h,a=r+h,f=s+h;break;case 1:i=o-h,a=r+h,f=s+h;break;case 2:o=i+h,r=a-h,f=s+h;break;case 3:i=o-h,r=a-h,f=s+h;break;case 4:o=i+h,a=r+h,s=f-h;break;case 5:i=o-h,a=r+h,s=f-h;break;case 6:o=i+h,r=a-h,s=f-h;break;case 7:i=o-h,r=a-h,s=f-h;break}this._root&&this._root.length&&(this._root=l)}return this._x0=i,this._y0=r,this._z0=s,this._x1=o,this._y1=a,this._z1=f,this}function Mn(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function Nn(t){return arguments.length?this.cover(+t[0][0],+t[0][1],+t[0][2]).cover(+t[1][0],+t[1][1],+t[1][2]):isNaN(this._x0)?void 0:[[this._x0,this._y0,this._z0],[this._x1,this._y1,this._z1]]}function b(t,n,e,i,r,s,o){this.node=t,this.x0=n,this.y0=e,this.z0=i,this.x1=r,this.y1=s,this.z1=o}function mn(t,n,e,i){var r,s=this._x0,o=this._y0,a=this._z0,f,h,l,u,_,y,M=this._x1,p=this._y1,x=this._z1,g=[],z=this._root,w,N;for(z&&g.push(new b(z,s,o,a,M,p,x)),i==null?i=1/0:(s=t-i,o=n-i,a=e-i,M=t+i,p=n+i,x=e+i,i*=i);w=g.pop();)if(!(!(z=w.node)||(f=w.x0)>M||(h=w.y0)>p||(l=w.z0)>x||(u=w.x1)<s||(_=w.y1)<o||(y=w.z1)<a))if(z.length){var c=(f+u)/2,d=(h+_)/2,m=(l+y)/2;g.push(new b(z[7],c,d,m,u,_,y),new b(z[6],f,d,m,c,_,y),new b(z[5],c,h,m,u,d,y),new b(z[4],f,h,m,c,d,y),new b(z[3],c,d,l,u,_,m),new b(z[2],f,d,l,c,_,m),new b(z[1],c,h,l,u,d,m),new b(z[0],f,h,l,c,d,m)),(N=(e>=m)<<2|(n>=d)<<1|t>=c)&&(w=g[g.length-1],g[g.length-1]=g[g.length-1-N],g[g.length-1-N]=w)}else{var F=t-+this._x.call(null,z.data),A=n-+this._y.call(null,z.data),q=e-+this._z.call(null,z.data),$=F*F+A*A+q*q;if($<i){var k=Math.sqrt(i=$);s=t-k,o=n-k,a=e-k,M=t+k,p=n+k,x=e+k,r=z.data}}return r}function An(t){if(isNaN(_=+this._x.call(null,t))||isNaN(y=+this._y.call(null,t))||isNaN(M=+this._z.call(null,t)))return this;var n,e=this._root,i,r,s,o=this._x0,a=this._y0,f=this._z0,h=this._x1,l=this._y1,u=this._z1,_,y,M,p,x,g,z,w,N,c,d;if(!e)return this;if(e.length)for(;;){if((z=_>=(p=(o+h)/2))?o=p:h=p,(w=y>=(x=(a+l)/2))?a=x:l=x,(N=M>=(g=(f+u)/2))?f=g:u=g,n=e,!(e=e[c=N<<2|w<<1|z]))return this;if(!e.length)break;(n[c+1&7]||n[c+2&7]||n[c+3&7]||n[c+4&7]||n[c+5&7]||n[c+6&7]||n[c+7&7])&&(i=n,d=c)}for(;e.data!==t;)if(r=e,!(e=e.next))return this;return(s=e.next)&&delete e.next,r?(s?r.next=s:delete r.next,this):n?(s?n[c]=s:delete n[c],(e=n[0]||n[1]||n[2]||n[3]||n[4]||n[5]||n[6]||n[7])&&e===(n[7]||n[6]||n[5]||n[4]||n[3]||n[2]||n[1]||n[0])&&!e.length&&(i?i[d]=e:this._root=e),this):(this._root=s,this)}function Fn(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function $n(){return this._root}function bn(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function qn(t){var n=[],e,i=this._root,r,s,o,a,f,h,l;for(i&&n.push(new b(i,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));e=n.pop();)if(!t(i=e.node,s=e.x0,o=e.y0,a=e.z0,f=e.x1,h=e.y1,l=e.z1)&&i.length){var u=(s+f)/2,_=(o+h)/2,y=(a+l)/2;(r=i[7])&&n.push(new b(r,u,_,y,f,h,l)),(r=i[6])&&n.push(new b(r,s,_,y,u,h,l)),(r=i[5])&&n.push(new b(r,u,o,y,f,_,l)),(r=i[4])&&n.push(new b(r,s,o,y,u,_,l)),(r=i[3])&&n.push(new b(r,u,_,a,f,h,y)),(r=i[2])&&n.push(new b(r,s,_,a,u,h,y)),(r=i[1])&&n.push(new b(r,u,o,a,f,_,y)),(r=i[0])&&n.push(new b(r,s,o,a,u,_,y))}return this}function kn(t){var n=[],e=[],i;for(this._root&&n.push(new b(this._root,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));i=n.pop();){var r=i.node;if(r.length){var s,o=i.x0,a=i.y0,f=i.z0,h=i.x1,l=i.y1,u=i.z1,_=(o+h)/2,y=(a+l)/2,M=(f+u)/2;(s=r[0])&&n.push(new b(s,o,a,f,_,y,M)),(s=r[1])&&n.push(new b(s,_,a,f,h,y,M)),(s=r[2])&&n.push(new b(s,o,y,f,_,l,M)),(s=r[3])&&n.push(new b(s,_,y,f,h,l,M)),(s=r[4])&&n.push(new b(s,o,a,M,_,y,u)),(s=r[5])&&n.push(new b(s,_,a,M,h,y,u)),(s=r[6])&&n.push(new b(s,o,y,M,_,l,u)),(s=r[7])&&n.push(new b(s,_,y,M,h,l,u))}e.push(i)}for(;i=e.pop();)t(i.node,i.x0,i.y0,i.z0,i.x1,i.y1,i.z1);return this}function Dn(t){return t[0]}function In(t){return arguments.length?(this._x=t,this):this._x}function En(t){return t[1]}function Sn(t){return arguments.length?(this._y=t,this):this._y}function Tn(t){return t[2]}function Cn(t){return arguments.length?(this._z=t,this):this._z}function xt(t,n,e,i){var r=new yt(n??Dn,e??En,i??Tn,NaN,NaN,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function yt(t,n,e,i,r,s,o,a,f){this._x=t,this._y=n,this._z=e,this._x0=i,this._y0=r,this._z0=s,this._x1=o,this._y1=a,this._z1=f,this._root=void 0}function zt(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var I=xt.prototype=yt.prototype;I.copy=function(){var t=new yt(this._x,this._y,this._z,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1),n=this._root,e,i;if(!n)return t;if(!n.length)return t._root=zt(n),t;for(e=[{source:n,target:t._root=new Array(8)}];n=e.pop();)for(var r=0;r<8;++r)(i=n.source[r])&&(i.length?e.push({source:i,target:n.target[r]=new Array(8)}):n.target[r]=zt(i));return t};I.add=wn;I.addAll=dn;I.cover=zn;I.data=Mn;I.extent=Nn;I.find=mn;I.remove=An;I.removeAll=Fn;I.root=$n;I.size=bn;I.visit=qn;I.visitAfter=kn;I.x=In;I.y=Sn;I.z=Cn;function U(t){return function(){return t}}function C(t){return(t()-.5)*1e-6}function ht(t){return t.x+t.vx}function Mt(t){return t.y+t.vy}function jn(t){return t.z+t.vz}function Pn(t){var n,e,i,r,s=1,o=1;typeof t!="function"&&(t=U(t==null?1:+t));function a(){for(var l,u=n.length,_,y,M,p,x,g,z,w=0;w<o;++w)for(_=(e===1?gt(n,ht):e===2?_t(n,ht,Mt):e===3?xt(n,ht,Mt,jn):null).visitAfter(f),l=0;l<u;++l)y=n[l],g=i[y.index],z=g*g,M=y.x+y.vx,e>1&&(p=y.y+y.vy),e>2&&(x=y.z+y.vz),_.visit(N);function N(c,d,m,F,A,q,$){var k=[d,m,F,A,q,$],j=k[0],H=k[1],R=k[2],X=k[e],B=k[e+1],Bt=k[e+2],P=c.data,rt=c.r,D=g+rt;if(P){if(P.index>y.index){var Q=M-P.x-P.vx,Z=e>1?p-P.y-P.vy:0,G=e>2?x-P.z-P.vz:0,O=Q*Q+Z*Z+G*G;O<D*D&&(Q===0&&(Q=C(r),O+=Q*Q),e>1&&Z===0&&(Z=C(r),O+=Z*Z),e>2&&G===0&&(G=C(r),O+=G*G),O=(D-(O=Math.sqrt(O)))/O*s,y.vx+=(Q*=O)*(D=(rt*=rt)/(z+rt)),e>1&&(y.vy+=(Z*=O)*D),e>2&&(y.vz+=(G*=O)*D),P.vx-=Q*(D=1-D),e>1&&(P.vy-=Z*D),e>2&&(P.vz-=G*D))}return}return j>M+D||X<M-D||e>1&&(H>p+D||B<p-D)||e>2&&(R>x+D||Bt<x-D)}}function f(l){if(l.data)return l.r=i[l.data.index];for(var u=l.r=0;u<Math.pow(2,e);++u)l[u]&&l[u].r>l.r&&(l.r=l[u].r)}function h(){if(n){var l,u=n.length,_;for(i=new Array(u),l=0;l<u;++l)_=n[l],i[_.index]=+t(_,l,n)}}return a.initialize=function(l,...u){n=l,r=u.find(_=>typeof _=="function")||Math.random,e=u.find(_=>[1,2,3].includes(_))||2,h()},a.iterations=function(l){return arguments.length?(o=+l,a):o},a.strength=function(l){return arguments.length?(s=+l,a):s},a.radius=function(l){return arguments.length?(t=typeof l=="function"?l:U(+l),h(),a):t},a}function On(t){return t.index}function Nt(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}function Bn(t){var n=On,e=M,i,r=p,s,o=U(30),a=1,f,h,l,u,_,y=1;t==null&&(t=[]);function M(c){return 1/Math.min(u[c.source.index],u[c.target.index])}function p(c){return u[c.source.index]/(u[c.source.index]+u[c.target.index])}function x(c){for(var d=0,m=t.length;d<y;++d)for(var F=0,A,q,$,k=0,j=0,H=0,R,X;F<m;++F){A=t[F],q=A.source,$=A.target,k=$.x+$.vx-q.x-q.vx||C(_),l>1&&(j=$.y+$.vy-q.y-q.vy||C(_)),l>2&&(H=$.z+$.vz-q.z-q.vz||C(_)),R=Math.sqrt(k*k+j*j+H*H);let B=R-f[F];a==2?B=B*Math.abs(B):B=B=Math.sign(B)*Math.pow(Math.abs(B),a),R=B/R*c*i[F],k*=R,j*=R,H*=R,$.vx-=k*(X=s[F]),l>1&&($.vy-=j*X),l>2&&($.vz-=H*X),q.vx+=k*(X=1-X),l>1&&(q.vy+=j*X),l>2&&(q.vz+=H*X)}}function g(){if(h){var c,d=h.length,m=t.length,F=new Map(h.map((q,$)=>[n(q,$,h),q])),A;for(c=0,u=new Array(d);c<m;++c)A=t[c],A.index=c,typeof A.source!="object"&&(A.source=Nt(F,A.source)),typeof A.target!="object"&&(A.target=Nt(F,A.target)),u[A.source.index]=(u[A.source.index]||0)+1,u[A.target.index]=(u[A.target.index]||0)+1;for(c=0;c<m;++c)A=t[c];i=new Array(m),z(),f=new Array(m),N(),s=new Array(m),w()}}function z(){if(h)for(var c=0,d=t.length;c<d;++c)i[c]=+e(t[c],c,t)}function w(){if(h)for(var c=0,d=t.length;c<d;++c)s[c]=+r(t[c],c,t)}function N(){if(h)for(var c=0,d=t.length;c<d;++c)f[c]=+o(t[c],c,t)}return x.initialize=function(c,...d){h=c,_=d.find(m=>typeof m=="function")||Math.random,l=d.find(m=>[1,2,3].includes(m))||2,g()},x.links=function(c){return arguments.length?(t=c,g(),x):t},x.id=function(c){return arguments.length?(n=c,x):n},x.iterations=function(c){return arguments.length?(y=+c,x):y},x.strength=function(c){return arguments.length?(e=typeof c=="function"?c:U(+c),z(),x):e},x.bias=function(c){return arguments.length?(r=typeof c=="function"?c:U(+c),w(),x):r},x.exponent=function(c){return arguments.length?(a=+c,x):a},x.distance=function(c){return arguments.length?(o=typeof c=="function"?c:U(+c),N(),x):o},x}var Rn={value:()=>{}};function It(){for(var t=0,n=arguments.length,e={},i;t<n;++t){if(!(i=arguments[t]+"")||i in e||/[\s.]/.test(i))throw new Error("illegal type: "+i);e[i]=[]}return new st(e)}function st(t){this._=t}function Xn(t,n){return t.trim().split(/^|\s+/).map(function(e){var i="",r=e.indexOf(".");if(r>=0&&(i=e.slice(r+1),e=e.slice(0,r)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:i}})}st.prototype=It.prototype={constructor:st,on:function(t,n){var e=this._,i=Xn(t+"",e),r,s=-1,o=i.length;if(arguments.length<2){for(;++s<o;)if((r=(t=i[s]).type)&&(r=Ln(e[r],t.name)))return r;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++s<o;)if(r=(t=i[s]).type)e[r]=mt(e[r],t.name,n);else if(n==null)for(r in e)e[r]=mt(e[r],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new st(t)},call:function(t,n){if((r=arguments.length-2)>0)for(var e=new Array(r),i=0,r,s;i<r;++i)e[i]=arguments[i+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(s=this._[t],i=0,r=s.length;i<r;++i)s[i].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var i=this._[t],r=0,s=i.length;r<s;++r)i[r].value.apply(n,e)}};function Ln(t,n){for(var e=0,i=t.length,r;e<i;++e)if((r=t[e]).name===n)return r.value}function mt(t,n,e){for(var i=0,r=t.length;i<r;++i)if(t[i].name===n){t[i]=Rn,t=t.slice(0,i).concat(t.slice(i+1));break}return e!=null&&t.push({name:n,value:e}),t}var J=0,nt=0,K=0,Et=1e3,ot,et,at=0,V=0,ft=0,it=typeof performance=="object"&&performance.now?performance:Date,St=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Tt(){return V||(St(Yn),V=it.now()+ft)}function Yn(){V=0}function ut(){this._call=this._time=this._next=null}ut.prototype=Ct.prototype={constructor:ut,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?Tt():+e)+(n==null?0:+n),!this._next&&et!==this&&(et?et._next=this:ot=this,et=this),this._call=t,this._time=e,ct()},stop:function(){this._call&&(this._call=null,this._time=1/0,ct())}};function Ct(t,n,e){var i=new ut;return i.restart(t,n,e),i}function Hn(){Tt(),++J;for(var t=ot,n;t;)(n=V-t._time)>=0&&t._call.call(void 0,n),t=t._next;--J}function At(){V=(at=it.now())+ft,J=nt=0;try{Hn()}finally{J=0,Zn(),V=0}}function Qn(){var t=it.now(),n=t-at;n>Et&&(ft-=n,at=t)}function Zn(){for(var t,n=ot,e,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:ot=e);et=t,ct(i)}function ct(t){if(!J){nt&&(nt=clearTimeout(nt));var n=t-V;n>24?(t<1/0&&(nt=setTimeout(At,t-it.now()-ft)),K&&(K=clearInterval(K))):(K||(at=it.now(),K=setInterval(Qn,Et)),J=1,St(At))}}const Gn=1664525,Un=1013904223,Ft=4294967296;function Vn(){let t=1;return()=>(t=(Gn*t+Un)%Ft)/Ft}var $t=3;function lt(t){return t.x}function bt(t){return t.y}function Jn(t){return t.z}var Kn=10,Wn=Math.PI*(3-Math.sqrt(5)),te=Math.PI*20/(9+Math.sqrt(221));function ne(t,n){n=n||2;var e=Math.min($t,Math.max(1,Math.round(n))),i,r=1,s=.001,o=1-Math.pow(s,1/300),a=0,f=.6,h=new Map,l=Ct(y),u=It("tick","end"),_=Vn();t==null&&(t=[]);function y(){M(),u.call("tick",i),r<s&&(l.stop(),u.call("end",i))}function M(g){var z,w=t.length,N;g===void 0&&(g=1);for(var c=0;c<g;++c)for(r+=(a-r)*o,h.forEach(function(d){d(r)}),z=0;z<w;++z)N=t[z],N.fx==null?N.x+=N.vx*=f:(N.x=N.fx,N.vx=0),e>1&&(N.fy==null?N.y+=N.vy*=f:(N.y=N.fy,N.vy=0)),e>2&&(N.fz==null?N.z+=N.vz*=f:(N.z=N.fz,N.vz=0));return i}function p(){for(var g=0,z=t.length,w;g<z;++g){if(w=t[g],w.index=g,w.fx!=null&&(w.x=w.fx),w.fy!=null&&(w.y=w.fy),w.fz!=null&&(w.z=w.fz),isNaN(w.x)||e>1&&isNaN(w.y)||e>2&&isNaN(w.z)){var N=Kn*(e>2?Math.cbrt(.5+g):e>1?Math.sqrt(.5+g):g),c=g*Wn,d=g*te;e===1?w.x=N:e===2?(w.x=N*Math.cos(c),w.y=N*Math.sin(c)):(w.x=N*Math.sin(c)*Math.cos(d),w.y=N*Math.cos(c),w.z=N*Math.sin(c)*Math.sin(d))}(isNaN(w.vx)||e>1&&isNaN(w.vy)||e>2&&isNaN(w.vz))&&(w.vx=0,e>1&&(w.vy=0),e>2&&(w.vz=0))}}function x(g){return g.initialize&&g.initialize(t,_,e),g}return p(),i={tick:M,restart:function(){return l.restart(y),i},stop:function(){return l.stop(),i},numDimensions:function(g){return arguments.length?(e=Math.min($t,Math.max(1,Math.round(g))),h.forEach(x),i):e},nodes:function(g){return arguments.length?(t=g,p(),h.forEach(x),i):t},alpha:function(g){return arguments.length?(r=+g,i):r},alphaMin:function(g){return arguments.length?(s=+g,i):s},alphaDecay:function(g){return arguments.length?(o=+g,i):+o},alphaTarget:function(g){return arguments.length?(a=+g,i):a},velocityDecay:function(g){return arguments.length?(f=1-g,i):1-f},randomSource:function(g){return arguments.length?(_=g,h.forEach(x),i):_},force:function(g,z){return arguments.length>1?(z==null?h.delete(g):h.set(g,x(z)),i):h.get(g)},find:function(){var g=Array.prototype.slice.call(arguments),z=g.shift()||0,w=(e>1?g.shift():null)||0,N=(e>2?g.shift():null)||0,c=g.shift()||1/0,d=0,m=t.length,F,A,q,$,k,j;for(c*=c,d=0;d<m;++d)k=t[d],F=z-k.x,A=w-(k.y||0),q=N-(k.z||0),$=F*F+A*A+q*q,$<c&&(j=k,c=$);return j},on:function(g,z){return arguments.length>1?(u.on(g,z),i):u.on(g)}}}function ee(){var t,n,e,i,r,s=U(-30),o=1,a,f=1,h=1/0,l=.81;function u(p){var x,g=t.length,z=(n===1?gt(t,lt):n===2?_t(t,lt,bt):n===3?xt(t,lt,bt,Jn):null).visitAfter(y);for(r=p,x=0;x<g;++x)e=t[x],z.visit(M)}function _(){if(t){var p,x=t.length,g;for(a=new Array(x),p=0;p<x;++p)g=t[p],a[g.index]=+s(g,p,t)}}function y(p){var x=0,g,z,w=0,N,c,d,m,F=p.length;if(F){for(N=c=d=m=0;m<F;++m)(g=p[m])&&(z=Math.abs(g.value))&&(x+=g.value,w+=z,N+=z*(g.x||0),c+=z*(g.y||0),d+=z*(g.z||0));x*=Math.sqrt(4/F),p.x=N/w,n>1&&(p.y=c/w),n>2&&(p.z=d/w)}else{g=p,g.x=g.data.x,n>1&&(g.y=g.data.y),n>2&&(g.z=g.data.z);do x+=a[g.data.index];while(g=g.next)}p.value=x}function M(p,x,g,z,w){if(!p.value)return!0;var N=[g,z,w][n-1],c=p.x-e.x,d=n>1?p.y-e.y:0,m=n>2?p.z-e.z:0,F=N-x,A=c*c+d*d+m*m;if(F*F/l<A){if(A<h){c===0&&(c=C(i),A+=c*c),n>1&&d===0&&(d=C(i),A+=d*d),n>2&&m===0&&(m=C(i),A+=m*m),A<f&&(A=Math.sqrt(f*A));let $=A;o==1||(o==2?$=A*Math.sqrt(A):$=Math.pow(A,(o+1)/2)),e.vx+=c*p.value*r/$,n>1&&(e.vy+=d*p.value*r/$),n>2&&(e.vz+=m*p.value*r/$)}return!0}else if(p.length||A>=h)return;(p.data!==e||p.next)&&(c===0&&(c=C(i),A+=c*c),n>1&&d===0&&(d=C(i),A+=d*d),n>2&&m===0&&(m=C(i),A+=m*m),A<f&&(A=Math.sqrt(f*A)));let q=A;o==1||(o==2?q=A*Math.sqrt(A):q=Math.pow(A,(o+1)/2));do p.data!==e&&(F=a[p.data.index]*r/q,e.vx+=c*F,n>1&&(e.vy+=d*F),n>2&&(e.vz+=m*F));while(p=p.next)}return u.initialize=function(p,...x){t=p,i=x.find(g=>typeof g=="function")||Math.random,n=x.find(g=>[1,2,3].includes(g))||2,_()},u.strength=function(p){return arguments.length?(s=typeof p=="function"?p:U(+p),_(),u):s},u.exponent=function(p){return arguments.length?(o=+p,u):o},u.distanceMin=function(p){return arguments.length?(f=p*p,u):Math.sqrt(f)},u.distanceMax=function(p){return arguments.length?(h=p*p,u):Math.sqrt(h)},u.theta=function(p){return arguments.length?(l=p*p,u):Math.sqrt(l)},u}const Y=10,jt={use2D:!1,forcesStrength:1,forcesRatio:1,repulsiveExponent:1,attractiveExponent:1,gravity:.05,viscosity:.05,collisionEnabled:!1,collisionRadius:50,linkDistance:30,forceNormalizationType:"degree",alpha:1,alphaDecay:.003,alphaTarget:0,alphaMin:.001,recenter:!0,center:[0,0,0]},v={settings:{...jt},nodes:[],links:[],weighted:!1,simulation:null,repulsiveForce:null,attractiveForce:null,centralForce:null,gravityForce:null,collisionForce:null,lastEdgeCount:0,tickCount:0};function ie(){const t=Array.isArray(v.settings.center)?v.settings.center:[0,0,0];return[Number.isFinite(t[0])?t[0]:0,Number.isFinite(t[1])?t[1]:0,Number.isFinite(t[2])?t[2]:0]}function Pt(t){const n=v.settings.use2D;for(let e=0;e<v.nodes.length;e+=1){const i=v.nodes[e],r=e*3;t[r]=i.x/Y,t[r+1]=i.y/Y,t[r+2]=n?0:i.z/Y}}function re(){let t=[],n=.05,e=.025;function i(r){const s=Math.sqrt(t.length)*r*n;for(let o=0,a=t.length;o<a;o+=1){const f=t[o],h=f.x*f.x+f.y*f.y+f.z*f.z+e,l=Math.sqrt(h),u=s/l;f.vx-=f.x*u,f.vy-=f.y*u,f.vz-=f.z*u}}return i.initialize=function(s){t=s},i.strength=function(s){return arguments.length?(n=+s,i):n},i.softening=function(s){return arguments.length?(e=+s,i):e},i}function W(){v.simulation||(v.repulsiveForce=ee(),v.attractiveForce=Bn(v.links),v.centralForce=Rt(),v.gravityForce=re(),v.collisionForce=Pn(),v.simulation=ne(v.nodes).numDimensions(v.settings.use2D?2:3).force("repulsive",v.repulsiveForce).force("attractive",v.attractiveForce).force("central",v.centralForce).force("gravity",v.gravityForce),v.simulation.stop())}function tt(){var i,r,s,o,a,f,h,l;if(!v.simulation)return;v.simulation.numDimensions(v.settings.use2D?2:3),v.simulation.velocityDecay(v.settings.viscosity),v.simulation.alpha(v.settings.alpha),v.simulation.alphaDecay(v.settings.alphaDecay),v.simulation.alphaTarget(v.settings.alphaTarget),v.simulation.alphaMin(v.settings.alphaMin);const[t,n,e]=ie();(r=(i=v.centralForce)==null?void 0:i.x)==null||r.call(i,t),(o=(s=v.centralForce)==null?void 0:s.y)==null||o.call(s,n),(f=(a=v.centralForce)==null?void 0:a.z)==null||f.call(a,e),(h=v.gravityForce)==null||h.strength(v.settings.gravity),(l=v.collisionForce)==null||l.radius(v.settings.collisionRadius),v.settings.recenter!==!1?v.simulation.force("central")||v.simulation.force("central",v.centralForce):v.simulation.force("central")&&v.simulation.force("central",null),v.settings.collisionEnabled?v.simulation.force("collision")||v.simulation.force("collision",v.collisionForce):v.simulation.force("collision")&&v.simulation.force("collision",null),Ot()}function se(t){const n=Math.floor(t.length/3);v.nodes=new Array(n);for(let e=0;e<n;e+=1){const i=e*3,r={x:t[i]*Y,y:t[i+1]*Y,z:t[i+2]*Y,vx:0,vy:0,vz:0,ID:e,strength:1,degree:0};v.nodes[e]=r}v.simulation&&v.simulation.nodes(v.nodes)}function oe(t,{resetVelocity:n=!1}={}){const e=Math.min(v.nodes.length,Math.floor(t.length/3));for(let i=0;i<e;i+=1){const r=i*3,s=v.nodes[i];s.x=t[r]*Y,s.y=t[r+1]*Y,s.z=t[r+2]*Y,n&&(s.vx=0,s.vy=0,s.vz=0)}}function ae(t,n){const e=Math.floor(t.length/2);v.links=new Array(e);for(let i=0;i<e;i+=1){const r=v.nodes[t[i*2]],s=v.nodes[t[i*2+1]],o={source:r,target:s};n&&n.length===e&&(o.weight=n[i]),v.links[i]=o}v.weighted=!!(n&&n.length===e),v.attractiveForce&&v.attractiveForce.links(v.links),v.lastEdgeCount=t.length,fe(),Ot()}function fe(){for(let t=0;t<v.nodes.length;t+=1){const n=v.nodes[t];n.strength=0,n.degree=0}if(v.links.length!==0)for(let t=0;t<v.links.length;t+=1){const n=v.links[t],e=v.weighted?n.weight:1;n.source.strength+=e,n.target.strength+=e,n.source.degree+=1,n.target.degree+=1}}function Ot(){const t=v.settings.forcesStrength,n=Math.max(1e-6,Number(v.settings.forcesRatio)||jt.forcesRatio),e=v.settings.repulsiveExponent,i=v.settings.attractiveExponent,r=t*Math.pow(1/n,e/2),s=t*Math.pow(n,i/2);!v.repulsiveForce||!v.attractiveForce||(v.weighted?v.settings.forceNormalizationType==="strength"?v.attractiveForce.strength(o=>{if(!o.weight)return 0;const a=Math.max(1,Math.min(o.target.strength,o.source.strength));return s*o.weight/a}):v.settings.forceNormalizationType==="degree"?v.attractiveForce.strength(o=>{if(!o.weight)return 0;const a=Math.max(1,Math.min(o.target.degree,o.source.degree));return s*o.weight/a}):v.attractiveForce.strength(o=>s*(o.weight??1)):v.settings.forceNormalizationType==="strength"?v.attractiveForce.strength(o=>{const a=Math.max(1,Math.min(o.target.strength,o.source.strength));return s/a}):v.settings.forceNormalizationType==="degree"?v.attractiveForce.strength(o=>{const a=Math.max(1,Math.min(o.target.degree,o.source.degree));return s/a}):v.attractiveForce.strength(s),v.repulsiveForce.exponent(v.settings.repulsiveExponent),v.attractiveForce.exponent(v.settings.attractiveExponent),v.repulsiveForce.strength(-r),v.attractiveForce.distance(v.settings.linkDistance))}function he(t){v.simulation&&(v.simulation.tick(),Pt(t),v.settings.alpha=v.simulation.alpha(),v.tickCount+=1)}self.onmessage=t=>{var e,i;const n=t.data;if(n){if(n.type==="init"){(e=n.options)!=null&&e.settings&&(v.settings={...v.settings,...n.options.settings}),W(),tt(),self.postMessage({type:"ready"});return}if(n.type==="options"){n.settings&&(v.settings={...v.settings,...n.settings}),W(),tt();return}if(n.type==="tick"&&n.positions instanceof Float32Array){let r=!1;(i=n.options)!=null&&i.settings&&(v.settings={...v.settings,...n.options.settings},r=!0);const s=Math.floor(n.positions.length/3);if((!v.nodes.length||v.nodes.length!==s)&&(se(n.positions),W(),tt(),r=!1),n.edges instanceof Uint32Array){const o=n.edges.length!==v.lastEdgeCount;(!v.links.length||o)&&ae(n.edges,n.weights)}if(r&&(W(),tt()),n.adoptOnly===!0){W(),oe(n.positions,{resetVelocity:!0}),v.simulation.nodes(v.nodes),tt(),Pt(n.positions),self.postMessage({type:"positions",positions:n.positions,alpha:v.settings.alpha},[n.positions.buffer]);return}he(n.positions),self.postMessage({type:"positions",positions:n.positions,alpha:v.settings.alpha},[n.positions.buffer])}}};
|
|
2
|
+
//# sourceMappingURL=d3force3dWorker-BKANL9of.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d3force3dWorker-BKANL9of.js","sources":["../../helios-web-next/node_modules/d3-force-3d/src/center.js","../../helios-web-next/node_modules/d3-binarytree/src/add.js","../../helios-web-next/node_modules/d3-binarytree/src/cover.js","../../helios-web-next/node_modules/d3-binarytree/src/data.js","../../helios-web-next/node_modules/d3-binarytree/src/extent.js","../../helios-web-next/node_modules/d3-binarytree/src/half.js","../../helios-web-next/node_modules/d3-binarytree/src/find.js","../../helios-web-next/node_modules/d3-binarytree/src/remove.js","../../helios-web-next/node_modules/d3-binarytree/src/root.js","../../helios-web-next/node_modules/d3-binarytree/src/size.js","../../helios-web-next/node_modules/d3-binarytree/src/visit.js","../../helios-web-next/node_modules/d3-binarytree/src/visitAfter.js","../../helios-web-next/node_modules/d3-binarytree/src/x.js","../../helios-web-next/node_modules/d3-binarytree/src/binarytree.js","../../helios-web-next/node_modules/d3-quadtree/src/add.js","../../helios-web-next/node_modules/d3-quadtree/src/cover.js","../../helios-web-next/node_modules/d3-quadtree/src/data.js","../../helios-web-next/node_modules/d3-quadtree/src/extent.js","../../helios-web-next/node_modules/d3-quadtree/src/quad.js","../../helios-web-next/node_modules/d3-quadtree/src/find.js","../../helios-web-next/node_modules/d3-quadtree/src/remove.js","../../helios-web-next/node_modules/d3-quadtree/src/root.js","../../helios-web-next/node_modules/d3-quadtree/src/size.js","../../helios-web-next/node_modules/d3-quadtree/src/visit.js","../../helios-web-next/node_modules/d3-quadtree/src/visitAfter.js","../../helios-web-next/node_modules/d3-quadtree/src/x.js","../../helios-web-next/node_modules/d3-quadtree/src/y.js","../../helios-web-next/node_modules/d3-quadtree/src/quadtree.js","../../helios-web-next/node_modules/d3-octree/src/add.js","../../helios-web-next/node_modules/d3-octree/src/cover.js","../../helios-web-next/node_modules/d3-octree/src/data.js","../../helios-web-next/node_modules/d3-octree/src/extent.js","../../helios-web-next/node_modules/d3-octree/src/octant.js","../../helios-web-next/node_modules/d3-octree/src/find.js","../../helios-web-next/node_modules/d3-octree/src/remove.js","../../helios-web-next/node_modules/d3-octree/src/root.js","../../helios-web-next/node_modules/d3-octree/src/size.js","../../helios-web-next/node_modules/d3-octree/src/visit.js","../../helios-web-next/node_modules/d3-octree/src/visitAfter.js","../../helios-web-next/node_modules/d3-octree/src/x.js","../../helios-web-next/node_modules/d3-octree/src/y.js","../../helios-web-next/node_modules/d3-octree/src/z.js","../../helios-web-next/node_modules/d3-octree/src/octree.js","../../helios-web-next/node_modules/d3-force-3d/src/constant.js","../../helios-web-next/node_modules/d3-force-3d/src/jiggle.js","../../helios-web-next/node_modules/d3-force-3d/src/collide.js","../../helios-web-next/node_modules/d3-force-3d/src/link.js","../../helios-web-next/node_modules/d3-dispatch/src/dispatch.js","../../helios-web-next/node_modules/d3-timer/src/timer.js","../../helios-web-next/node_modules/d3-force-3d/src/lcg.js","../../helios-web-next/node_modules/d3-force-3d/src/simulation.js","../../helios-web-next/node_modules/d3-force-3d/src/manyBody.js","../../helios-web-next/src/workers/d3force3dWorker.js"],"sourcesContent":["export default function(x, y, z) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n if (z == null) z = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0,\n sz = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x || 0, sy += node.y || 0, sz += node.z || 0;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, sz = (sz / n - z) * strength, i = 0; i < n; ++i) {\n node = nodes[i];\n if (sx) { node.x -= sx }\n if (sy) { node.y -= sy; }\n if (sz) { node.z -= sz; }\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.z = function(_) {\n return arguments.length ? (z = +_, force) : z;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n var x = +this._x.call(null, d);\n return add(this.cover(x), x, d);\n}\n\nfunction add(tree, x, d) {\n if (isNaN(x)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n x1 = tree._x1,\n xm,\n xp,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (parent = node, !(node = node[i = +right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n if (x === xp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(2) : tree._root = new Array(2);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n } while ((i = +right) === (j = +(xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var i, n = data.length,\n x,\n xz = new Array(n),\n x0 = Infinity,\n x1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, data[i]))) continue;\n xz[i] = x;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0).cover(x1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x) {\n if (isNaN(x = +x)) return this; // ignore invalid points\n\n var x0 = this._x0,\n x1 = this._x1;\n\n // If the binarytree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing half boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1) {\n i = +(x < x0);\n parent = new Array(2), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z; break;\n case 1: x0 = x1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._x1 = x1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0]).cover(+_[1][0])\n : isNaN(this._x0) ? undefined : [[this._x0], [this._x1]];\n}\n","export default function(node, x0, x1) {\n this.node = node;\n this.x0 = x0;\n this.x1 = x1;\n}\n","import Half from \"./half\";\n\nexport default function(x, radius) {\n var data,\n x0 = this._x0,\n x1,\n x2,\n x3 = this._x1,\n halves = [],\n node = this._root,\n q,\n i;\n\n if (node) halves.push(new Half(node, x0, x3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius;\n x3 = x + radius;\n }\n\n while (q = halves.pop()) {\n\n // Stop searching if this half can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (x2 = q.x1) < x0) continue;\n\n // Bisect the current half.\n if (node.length) {\n var xm = (x1 + x2) / 2;\n\n halves.push(\n new Half(node[1], xm, x2),\n new Half(node[0], x1, xm)\n );\n\n // Visit the closest half first.\n if (i = +(x >= xm)) {\n q = halves[halves.length - 1];\n halves[halves.length - 1] = halves[halves.length - 1 - i];\n halves[halves.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var d = Math.abs(x - +this._x.call(null, node.data));\n if (d < radius) {\n radius = d;\n x0 = x - d;\n x3 = x + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n x1 = this._x1,\n x,\n xm,\n right,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (!(parent = node, node = node[i = +right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 1]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1])\n && node === (parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Half from \"./half\";\n\nexport default function(callback) {\n var halves = [], q, node = this._root, child, x0, x1;\n if (node) halves.push(new Half(node, this._x0, this._x1));\n while (q = halves.pop()) {\n if (!callback(node = q.node, x0 = q.x0, x1 = q.x1) && node.length) {\n var xm = (x0 + x1) / 2;\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n }\n }\n return this;\n}\n","import Half from \"./half\";\n\nexport default function(callback) {\n var halves = [], next = [], q;\n if (this._root) halves.push(new Half(this._root, this._x0, this._x1));\n while (q = halves.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, x1 = q.x1, xm = (x0 + x1) / 2;\n if (child = node[0]) halves.push(new Half(child, x0, xm));\n if (child = node[1]) halves.push(new Half(child, xm, x1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.x1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\n\nexport default function binarytree(nodes, x) {\n var tree = new Binarytree(x == null ? defaultX : x, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Binarytree(x, x0, x1) {\n this._x = x;\n this._x0 = x0;\n this._x1 = x1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = binarytree.prototype = Binarytree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Binarytree(this._x, this._x0, this._x1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(2)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 2; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(2)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d),\n z = +this._z.call(null, d);\n return add(this.cover(x, y, z), x, y, z, d);\n}\n\nfunction add(tree, x, y, z, d) {\n if (isNaN(x) || isNaN(y) || isNaN(z)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n z0 = tree._z0,\n x1 = tree._x1,\n y1 = tree._y1,\n z1 = tree._z1,\n xm,\n ym,\n zm,\n xp,\n yp,\n zp,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (parent = node, !(node = node[i = deep << 2 | bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n zp = +tree._z.call(null, node.data);\n if (x === xp && y === yp && z === zp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(8) : tree._root = new Array(8);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n } while ((i = deep << 2 | bottom << 1 | right) === (j = (zp >= zm) << 2 | (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n z,\n xz = new Array(n),\n yz = new Array(n),\n zz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n z0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity,\n z1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n zz[i] = z;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n if (z < z0) z0 = z;\n if (z > z1) z1 = z;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1 || z0 > z1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0, z0).cover(x1, y1, z1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], zz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y, z) {\n if (isNaN(x = +x) || isNaN(y = +y) || isNaN(z = +z)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1;\n\n // If the octree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing octant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n z1 = (z0 = Math.floor(z)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var t = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1 || z0 > z || z >= z1) {\n i = (z < z0) << 2 | (y < y0) << 1 | (x < x0);\n parent = new Array(8), parent[i] = node, node = parent, t *= 2;\n switch (i) {\n case 0: x1 = x0 + t, y1 = y0 + t, z1 = z0 + t; break;\n case 1: x0 = x1 - t, y1 = y0 + t, z1 = z0 + t; break;\n case 2: x1 = x0 + t, y0 = y1 - t, z1 = z0 + t; break;\n case 3: x0 = x1 - t, y0 = y1 - t, z1 = z0 + t; break;\n case 4: x1 = x0 + t, y1 = y0 + t, z0 = z1 - t; break;\n case 5: x0 = x1 - t, y1 = y0 + t, z0 = z1 - t; break;\n case 6: x1 = x0 + t, y0 = y1 - t, z0 = z1 - t; break;\n case 7: x0 = x1 - t, y0 = y1 - t, z0 = z1 - t; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1], +_[0][2]).cover(+_[1][0], +_[1][1], +_[1][2])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0, this._z0], [this._x1, this._y1, this._z1]];\n}\n","export default function(node, x0, y0, z0, x1, y1, z1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.z0 = z0;\n this.x1 = x1;\n this.y1 = y1;\n this.z1 = z1;\n}\n","import Octant from \"./octant\";\n\nexport default function(x, y, z, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1,\n y1,\n z1,\n x2,\n y2,\n z2,\n x3 = this._x1,\n y3 = this._y1,\n z3 = this._z1,\n octs = [],\n node = this._root,\n q,\n i;\n\n if (node) octs.push(new Octant(node, x0, y0, z0, x3, y3, z3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius, z0 = z - radius;\n x3 = x + radius, y3 = y + radius, z3 = z + radius;\n radius *= radius;\n }\n\n while (q = octs.pop()) {\n\n // Stop searching if this octant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (z1 = q.z0) > z3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0\n || (z2 = q.z1) < z0) continue;\n\n // Bisect the current octant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2,\n zm = (z1 + z2) / 2;\n\n octs.push(\n new Octant(node[7], xm, ym, zm, x2, y2, z2),\n new Octant(node[6], x1, ym, zm, xm, y2, z2),\n new Octant(node[5], xm, y1, zm, x2, ym, z2),\n new Octant(node[4], x1, y1, zm, xm, ym, z2),\n new Octant(node[3], xm, ym, z1, x2, y2, zm),\n new Octant(node[2], x1, ym, z1, xm, y2, zm),\n new Octant(node[1], xm, y1, z1, x2, ym, zm),\n new Octant(node[0], x1, y1, z1, xm, ym, zm)\n );\n\n // Visit the closest octant first.\n if (i = (z >= zm) << 2 | (y >= ym) << 1 | (x >= xm)) {\n q = octs[octs.length - 1];\n octs[octs.length - 1] = octs[octs.length - 1 - i];\n octs[octs.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n dz = z - +this._z.call(null, node.data),\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d, z0 = z - d;\n x3 = x + d, y3 = y + d, z3 = z + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d)) || isNaN(z = +this._z.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n z0 = this._z0,\n x1 = this._x1,\n y1 = this._y1,\n z1 = this._z1,\n x,\n y,\n z,\n xm,\n ym,\n zm,\n right,\n bottom,\n deep,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (deep = z >= (zm = (z0 + z1) / 2)) z0 = zm; else z1 = zm;\n if (!(parent = node, node = node[i = deep << 2 | bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 7] || parent[(i + 2) & 7] || parent[(i + 3) & 7] || parent[(i + 4) & 7] || parent[(i + 5) & 7] || parent[(i + 6) & 7] || parent[(i + 7) & 7]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3] || parent[4] || parent[5] || parent[6] || parent[7])\n && node === (parent[7] || parent[6] || parent[5] || parent[4] || parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Octant from \"./octant\";\n\nexport default function(callback) {\n var octs = [], q, node = this._root, child, x0, y0, z0, x1, y1, z1;\n if (node) octs.push(new Octant(node, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n }\n }\n return this;\n}\n","import Octant from \"./octant\";\n\nexport default function(callback) {\n var octs = [], next = [], q;\n if (this._root) octs.push(new Octant(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));\n while (q = octs.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, z0 = q.z0, x1 = q.x1, y1 = q.y1, z1 = q.z1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2, zm = (z0 + z1) / 2;\n if (child = node[0]) octs.push(new Octant(child, x0, y0, z0, xm, ym, zm));\n if (child = node[1]) octs.push(new Octant(child, xm, y0, z0, x1, ym, zm));\n if (child = node[2]) octs.push(new Octant(child, x0, ym, z0, xm, y1, zm));\n if (child = node[3]) octs.push(new Octant(child, xm, ym, z0, x1, y1, zm));\n if (child = node[4]) octs.push(new Octant(child, x0, y0, zm, xm, ym, z1));\n if (child = node[5]) octs.push(new Octant(child, xm, y0, zm, x1, ym, z1));\n if (child = node[6]) octs.push(new Octant(child, x0, ym, zm, xm, y1, z1));\n if (child = node[7]) octs.push(new Octant(child, xm, ym, zm, x1, y1, z1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.z0, q.x1, q.y1, q.z1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","export function defaultZ(d) {\n return d[2];\n}\n\nexport default function(_) {\n return arguments.length ? (this._z = _, this) : this._z;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\nimport tree_z, {defaultZ} from \"./z\";\n\nexport default function octree(nodes, x, y, z) {\n var tree = new Octree(x == null ? defaultX : x, y == null ? defaultY : y, z == null ? defaultZ : z, NaN, NaN, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Octree(x, y, z, x0, y0, z0, x1, y1, z1) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._x0 = x0;\n this._y0 = y0;\n this._z0 = z0;\n this._x1 = x1;\n this._y1 = y1;\n this._z1 = z1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = octree.prototype = Octree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Octree(this._x, this._y, this._z, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(8)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 8; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(8)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\ntreeProto.z = tree_z;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {binarytree} from \"d3-binarytree\";\nimport {quadtree} from \"d3-quadtree\";\nimport {octree} from \"d3-octree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nfunction z(d) {\n return d.z + d.vz;\n}\n\nexport default function(radius) {\n var nodes,\n nDim,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n zi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree =\n (nDim === 1 ? binarytree(nodes, x)\n :(nDim === 2 ? quadtree(nodes, x, y)\n :(nDim === 3 ? octree(nodes, x, y, z)\n :null\n ))).visitAfter(prepare);\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n if (nDim > 1) { yi = node.y + node.vy; }\n if (nDim > 2) { zi = node.z + node.vz; }\n tree.visit(apply);\n }\n }\n\n function apply(treeNode, arg1, arg2, arg3, arg4, arg5, arg6) {\n var args = [arg1, arg2, arg3, arg4, arg5, arg6];\n var x0 = args[0],\n y0 = args[1],\n z0 = args[2],\n x1 = args[nDim],\n y1 = args[nDim+1],\n z1 = args[nDim+2];\n\n var data = treeNode.data, rj = treeNode.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = (nDim > 1 ? yi - data.y - data.vy : 0),\n z = (nDim > 2 ? zi - data.z - data.vz : 0),\n l = x * x + y * y + z * z;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n if (nDim > 1) { node.vy += (y *= l) * r; }\n if (nDim > 2) { node.vz += (z *= l) * r; }\n\n data.vx -= x * (r = 1 - r);\n if (nDim > 1) { data.vy -= y * r; }\n if (nDim > 2) { data.vz -= z * r; }\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r\n || (nDim > 1 && (y0 > yi + r || y1 < yi - r))\n || (nDim > 2 && (z0 > zi + r || z1 < zi - r));\n }\n }\n\n function prepare(treeNode) {\n if (treeNode.data) return treeNode.r = radii[treeNode.data.index];\n for (var i = treeNode.r = 0; i < Math.pow(2, nDim); ++i) {\n if (treeNode[i] && treeNode[i].r > treeNode.r) {\n treeNode.r = treeNode[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n bias = defaultBias,\n biases,\n distance = constant(30),\n exponent = 1,\n distances,\n nodes,\n nDim,\n count,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function defaultBias(link) {\n // bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index])\n return count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x = 0, y = 0, z = 0, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n \n if (nDim > 1) { y = target.y + target.vy - source.y - source.vy || jiggle(random); }\n if (nDim > 2) { z = target.z + target.vz - source.z - source.vz || jiggle(random); }\n l = Math.sqrt(x * x + y * y + z * z);\n \n let lexp = (l - distances[i]);\n if(exponent == 1){\n // nothing...\n }if(exponent == 2){\n lexp = lexp * Math.abs(lexp);\n }else{\n lexp = lexp = Math.sign(lexp) * Math.pow(Math.abs(lexp), exponent);\n }\n l = lexp / l * alpha * strengths[i];\n x *= l, y *= l, z *= l;\n\n target.vx -= x * (b = biases[i]);\n if (nDim > 1) { target.vy -= y * b; }\n if (nDim > 2) { target.vz -= z * b; }\n\n source.vx += x * (b = 1 - b);\n if (nDim > 1) { source.vy += y * b; }\n if (nDim > 2) { source.vz += z * b; }\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0; i < m; ++i) {\n link = links[i];\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n biases = new Array(m), initializeBias();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n \n function initializeBias() {\n if (!nodes) return;\n for (var i = 0, n = links.length; i < n; ++i) {\n biases[i] = +bias(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.bias = function(_) {\n return arguments.length ? (bias = typeof _ === \"function\" ? _ : constant(+_), initializeBias(), force) : bias;\n };\n\n force.exponent = function(_) {\n return arguments.length ? (exponent = +_, force) : exponent;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nvar MAX_DIMENSIONS = 3;\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nexport function z(d) {\n return d.z;\n}\n\nvar initialRadius = 10,\n initialAngleRoll = Math.PI * (3 - Math.sqrt(5)), // Golden ratio angle\n initialAngleYaw = Math.PI * 20 / (9 + Math.sqrt(221)); // Markov irrational number\n\nexport default function(nodes, numDimensions) {\n numDimensions = numDimensions || 2;\n\n var nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(numDimensions))),\n simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (nDim > 1) {\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n if (nDim > 2) {\n if (node.fz == null) node.z += node.vz *= velocityDecay;\n else node.z = node.fz, node.vz = 0;\n }\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (node.fz != null) node.z = node.fz;\n if (isNaN(node.x) || (nDim > 1 && isNaN(node.y)) || (nDim > 2 && isNaN(node.z))) {\n var radius = initialRadius * (nDim > 2 ? Math.cbrt(0.5 + i) : (nDim > 1 ? Math.sqrt(0.5 + i) : i)),\n rollAngle = i * initialAngleRoll,\n yawAngle = i * initialAngleYaw;\n\n if (nDim === 1) {\n node.x = radius;\n } else if (nDim === 2) {\n node.x = radius * Math.cos(rollAngle);\n node.y = radius * Math.sin(rollAngle);\n } else { // 3 dimensions: use spherical distribution along 2 irrational number angles\n node.x = radius * Math.sin(rollAngle) * Math.cos(yawAngle);\n node.y = radius * Math.cos(rollAngle);\n node.z = radius * Math.sin(rollAngle) * Math.sin(yawAngle);\n }\n }\n if (isNaN(node.vx) || (nDim > 1 && isNaN(node.vy)) || (nDim > 2 && isNaN(node.vz))) {\n node.vx = 0;\n if (nDim > 1) { node.vy = 0; }\n if (nDim > 2) { node.vz = 0; }\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random, nDim);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n numDimensions: function(_) {\n return arguments.length\n ? (nDim = Math.min(MAX_DIMENSIONS, Math.max(1, Math.round(_))), forces.forEach(initializeForce), simulation)\n : nDim;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function() {\n var args = Array.prototype.slice.call(arguments);\n var x = args.shift() || 0,\n y = (nDim > 1 ? args.shift() : null) || 0,\n z = (nDim > 2 ? args.shift() : null) || 0,\n radius = args.shift() || Infinity;\n\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n dz,\n d2,\n node,\n closest;\n\n radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - (node.y || 0);\n dz = z - (node.z ||0);\n d2 = dx * dx + dy * dy + dz * dz;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {binarytree} from \"d3-binarytree\";\nimport {quadtree} from \"d3-quadtree\";\nimport {octree} from \"d3-octree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y, z} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n nDim,\n node,\n random,\n alpha,\n // Optimizations from https://github.com/twosixlabs/d3-force-reuse/blob/master/src/manyBodyReuse.js\n // In progress...\n // iter = 0,\n // tree,\n // updateClosure, \n // updateBH,\n strength = constant(-30),\n exponent = 1,\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n // updateClosure = function () {\n // return function (i) {\n // if (i % 13 === 0) {\n // return true;\n // } else {\n // return false;\n // }\n // };\n // }\n \n function force(_) {\n var i,\n n = nodes.length,\n tree =\n (nDim === 1 ? binarytree(nodes, x)\n :(nDim === 2 ? quadtree(nodes, x, y)\n :(nDim === 3 ? octree(nodes, x, y, z)\n :null\n ))).visitAfter(accumulate);\n\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(treeNode) {\n var strength = 0, q, c, weight = 0, x, y, z, i;\n var numChildren = treeNode.length;\n\n // For internal nodes, accumulate forces from children.\n if (numChildren) {\n for (x = y = z = i = 0; i < numChildren; ++i) {\n if ((q = treeNode[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * (q.x || 0), y += c * (q.y || 0), z += c * (q.z || 0);\n }\n }\n strength *= Math.sqrt(4 / numChildren); // scale accumulated strength according to number of dimensions\n\n treeNode.x = x / weight;\n if (nDim > 1) { treeNode.y = y / weight; }\n if (nDim > 2) { treeNode.z = z / weight; }\n }\n\n // For leaf nodes, accumulate forces from coincident nodes.\n else {\n q = treeNode;\n q.x = q.data.x;\n if (nDim > 1) { q.y = q.data.y; }\n if (nDim > 2) { q.z = q.data.z; }\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n treeNode.value = strength;\n }\n\n function apply(treeNode, x1, arg1, arg2, arg3) {\n if (!treeNode.value) return true;\n var x2 = [arg1, arg2, arg3][nDim-1];\n\n var x = treeNode.x - node.x,\n y = (nDim > 1 ? treeNode.y - node.y : 0),\n z = (nDim > 2 ? treeNode.z - node.z : 0),\n w = x2 - x1,\n l = x * x + y * y + z * z;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n let factor = l;\n if(exponent == 1){\n // nothing...\n }else if(exponent == 2){\n factor = l * Math.sqrt(l);\n }else{\n factor = Math.pow(l, (exponent + 1) / 2);\n }\n node.vx += x * treeNode.value * alpha / factor;\n if (nDim > 1) { node.vy += y * treeNode.value * alpha / factor; }\n if (nDim > 2) { node.vz += z * treeNode.value * alpha / factor; }\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (treeNode.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (treeNode.data !== node || treeNode.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (nDim > 1 && y === 0) y = jiggle(random), l += y * y;\n if (nDim > 2 && z === 0) z = jiggle(random), l += z * z;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n let factor = l;\n if(exponent == 1){\n // nothing...\n }else if(exponent == 2){\n factor = l * Math.sqrt(l);\n }else{\n factor = Math.pow(l, (exponent + 1) / 2);\n }\n\n do if (treeNode.data !== node) {\n w = strengths[treeNode.data.index] * alpha / factor;\n node.vx += x * w;\n if (nDim > 1) { node.vy += y * w; }\n if (nDim > 2) { node.vz += z * w; }\n } while (treeNode = treeNode.next);\n }\n\n force.initialize = function(_nodes, ...args) {\n nodes = _nodes;\n random = args.find(arg => typeof arg === 'function') || Math.random;\n nDim = args.find(arg => [1, 2, 3].includes(arg)) || 2;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.exponent = function(_) {\n return arguments.length ? (exponent = +_, force) : exponent;\n }\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import {\n forceSimulation,\n forceManyBody,\n forceLink,\n forceCenter,\n forceCollide,\n} from 'd3-force-3d';\n\nconst POSITION_SCALE = 10;\n\nconst defaultSettings = {\n use2D: false,\n forcesStrength: 1,\n forcesRatio: 1,\n repulsiveExponent: 1,\n attractiveExponent: 1,\n gravity: 0.05,\n viscosity: 0.05,\n collisionEnabled: false,\n collisionRadius: 50,\n linkDistance: 30,\n forceNormalizationType: 'degree',\n alpha: 1,\n alphaDecay: 0.003,\n alphaTarget: 0,\n alphaMin: 0.001,\n recenter: true,\n center: [0, 0, 0],\n};\n\nconst state = {\n settings: { ...defaultSettings },\n nodes: [],\n links: [],\n weighted: false,\n simulation: null,\n repulsiveForce: null,\n attractiveForce: null,\n centralForce: null,\n gravityForce: null,\n collisionForce: null,\n lastEdgeCount: 0,\n tickCount: 0,\n};\n\nfunction resolveCenter() {\n const center = Array.isArray(state.settings.center) ? state.settings.center : [0, 0, 0];\n return [\n Number.isFinite(center[0]) ? center[0] : 0,\n Number.isFinite(center[1]) ? center[1] : 0,\n Number.isFinite(center[2]) ? center[2] : 0,\n ];\n}\n\nfunction copyNodePositionsToBuffer(buffer) {\n const use2D = state.settings.use2D;\n for (let i = 0; i < state.nodes.length; i += 1) {\n const node = state.nodes[i];\n const base = i * 3;\n buffer[base] = node.x / POSITION_SCALE;\n buffer[base + 1] = node.y / POSITION_SCALE;\n buffer[base + 2] = use2D ? 0 : node.z / POSITION_SCALE;\n }\n}\n\nfunction computeStdDev(buffer, use2D) {\n if (!buffer || !buffer.length) return 0;\n const stride = 3;\n const count = Math.floor(buffer.length / stride);\n if (count <= 0) return 0;\n const dims = use2D ? 2 : 3;\n let sum = 0;\n let n = 0;\n for (let i = 0; i < count; i += 1) {\n const base = i * stride;\n sum += buffer[base];\n sum += buffer[base + 1];\n if (!use2D) sum += buffer[base + 2];\n n += dims;\n }\n const mean = sum / n;\n let varianceSum = 0;\n for (let i = 0; i < count; i += 1) {\n const base = i * stride;\n const dx = buffer[base] - mean;\n const dy = buffer[base + 1] - mean;\n varianceSum += dx * dx + dy * dy;\n if (!use2D) {\n const dz = buffer[base + 2] - mean;\n varianceSum += dz * dz;\n }\n }\n return Math.sqrt(varianceSum / n);\n}\n\nfunction d3GravityForce() {\n let nodes = [];\n let strength = 0.05;\n let softening = 0.025;\n function force(alpha) {\n const totalStrength = Math.sqrt(nodes.length) * alpha * strength;\n for (let i = 0, n = nodes.length; i < n; i += 1) {\n const node = nodes[i];\n const r2 = node.x * node.x + node.y * node.y + node.z * node.z + softening;\n const distance = Math.sqrt(r2);\n const invDistMag = totalStrength / distance;\n node.vx -= node.x * invDistMag;\n node.vy -= node.y * invDistMag;\n node.vz -= node.z * invDistMag;\n }\n }\n force.initialize = function initialize(next) {\n nodes = next;\n };\n force.strength = function strengthAccessor(next) {\n return arguments.length ? ((strength = +next), force) : strength;\n };\n force.softening = function softeningAccessor(next) {\n return arguments.length ? ((softening = +next), force) : softening;\n };\n return force;\n}\n\nfunction ensureSimulation() {\n if (state.simulation) return;\n state.repulsiveForce = forceManyBody();\n state.attractiveForce = forceLink(state.links);\n state.centralForce = forceCenter();\n state.gravityForce = d3GravityForce();\n state.collisionForce = forceCollide();\n state.simulation = forceSimulation(state.nodes)\n .numDimensions(state.settings.use2D ? 2 : 3)\n .force('repulsive', state.repulsiveForce)\n .force('attractive', state.attractiveForce)\n .force('central', state.centralForce)\n .force('gravity', state.gravityForce);\n state.simulation.stop();\n}\n\nfunction applySettings() {\n if (!state.simulation) return;\n state.simulation.numDimensions(state.settings.use2D ? 2 : 3);\n state.simulation.velocityDecay(state.settings.viscosity);\n state.simulation.alpha(state.settings.alpha);\n state.simulation.alphaDecay(state.settings.alphaDecay);\n state.simulation.alphaTarget(state.settings.alphaTarget);\n state.simulation.alphaMin(state.settings.alphaMin);\n\n const [centerX, centerY, centerZ] = resolveCenter();\n state.centralForce?.x?.(centerX);\n state.centralForce?.y?.(centerY);\n state.centralForce?.z?.(centerZ);\n state.gravityForce?.strength(state.settings.gravity);\n state.collisionForce?.radius(state.settings.collisionRadius);\n\n if (state.settings.recenter !== false) {\n if (!state.simulation.force('central')) {\n state.simulation.force('central', state.centralForce);\n }\n } else if (state.simulation.force('central')) {\n state.simulation.force('central', null);\n }\n\n if (state.settings.collisionEnabled) {\n if (!state.simulation.force('collision')) {\n state.simulation.force('collision', state.collisionForce);\n }\n } else if (state.simulation.force('collision')) {\n state.simulation.force('collision', null);\n }\n\n updateStrengths();\n}\n\nfunction rebuildNodes(positions) {\n const count = Math.floor(positions.length / 3);\n state.nodes = new Array(count);\n for (let i = 0; i < count; i += 1) {\n const base = i * 3;\n const node = {\n x: positions[base] * POSITION_SCALE,\n y: positions[base + 1] * POSITION_SCALE,\n z: positions[base + 2] * POSITION_SCALE,\n vx: 0,\n vy: 0,\n vz: 0,\n ID: i,\n strength: 1,\n degree: 0,\n };\n state.nodes[i] = node;\n }\n if (state.simulation) {\n state.simulation.nodes(state.nodes);\n }\n}\n\nfunction syncNodePositionsFromBuffer(positions, { resetVelocity = false } = {}) {\n const count = Math.min(state.nodes.length, Math.floor(positions.length / 3));\n for (let i = 0; i < count; i += 1) {\n const base = i * 3;\n const node = state.nodes[i];\n node.x = positions[base] * POSITION_SCALE;\n node.y = positions[base + 1] * POSITION_SCALE;\n node.z = positions[base + 2] * POSITION_SCALE;\n if (resetVelocity) {\n node.vx = 0;\n node.vy = 0;\n node.vz = 0;\n }\n }\n}\n\nfunction rebuildLinks(edges, weights) {\n const linkCount = Math.floor(edges.length / 2);\n state.links = new Array(linkCount);\n for (let i = 0; i < linkCount; i += 1) {\n const source = state.nodes[edges[i * 2]];\n const target = state.nodes[edges[i * 2 + 1]];\n const link = { source, target };\n if (weights && weights.length === linkCount) {\n link.weight = weights[i];\n }\n state.links[i] = link;\n }\n state.weighted = Boolean(weights && weights.length === linkCount);\n if (state.attractiveForce) {\n state.attractiveForce.links(state.links);\n }\n state.lastEdgeCount = edges.length;\n recalculateNodeStrengths();\n updateStrengths();\n}\n\nfunction recalculateNodeStrengths() {\n for (let i = 0; i < state.nodes.length; i += 1) {\n const node = state.nodes[i];\n node.strength = 0;\n node.degree = 0;\n }\n if (state.links.length === 0) return;\n for (let i = 0; i < state.links.length; i += 1) {\n const link = state.links[i];\n const weight = state.weighted ? link.weight : 1;\n link.source.strength += weight;\n link.target.strength += weight;\n link.source.degree += 1;\n link.target.degree += 1;\n }\n}\n\nfunction updateStrengths() {\n const baseStrength = state.settings.forcesStrength;\n const ratio = Math.max(1e-6, Number(state.settings.forcesRatio) || defaultSettings.forcesRatio);\n const repulsiveExponent = state.settings.repulsiveExponent;\n const attractiveExponent = state.settings.attractiveExponent;\n const repulsiveStrength = baseStrength * Math.pow(1 / ratio, repulsiveExponent / 2);\n const attractiveStrength = baseStrength * Math.pow(ratio, attractiveExponent / 2);\n\n if (!state.repulsiveForce || !state.attractiveForce) return;\n\n if (state.weighted) {\n if (state.settings.forceNormalizationType === 'strength') {\n state.attractiveForce.strength((d) => {\n if (!d.weight) return 0;\n const minStrength = Math.max(1, Math.min(d.target.strength, d.source.strength));\n return (attractiveStrength * d.weight) / minStrength;\n });\n } else if (state.settings.forceNormalizationType === 'degree') {\n state.attractiveForce.strength((d) => {\n if (!d.weight) return 0;\n const minDegree = Math.max(1, Math.min(d.target.degree, d.source.degree));\n return (attractiveStrength * d.weight) / minDegree;\n });\n } else {\n state.attractiveForce.strength((d) => attractiveStrength * (d.weight ?? 1));\n }\n } else if (state.settings.forceNormalizationType === 'strength') {\n state.attractiveForce.strength((d) => {\n const minStrength = Math.max(1, Math.min(d.target.strength, d.source.strength));\n return attractiveStrength / minStrength;\n });\n } else if (state.settings.forceNormalizationType === 'degree') {\n state.attractiveForce.strength((d) => {\n const minDegree = Math.max(1, Math.min(d.target.degree, d.source.degree));\n return attractiveStrength / minDegree;\n });\n } else {\n state.attractiveForce.strength(attractiveStrength);\n }\n\n state.repulsiveForce.exponent(state.settings.repulsiveExponent);\n state.attractiveForce.exponent(state.settings.attractiveExponent);\n state.repulsiveForce.strength(-repulsiveStrength);\n state.attractiveForce.distance(state.settings.linkDistance);\n}\n\nfunction stepSimulation(buffer) {\n if (!state.simulation) return;\n state.simulation.tick();\n copyNodePositionsToBuffer(buffer);\n state.settings.alpha = state.simulation.alpha();\n state.tickCount += 1;\n}\n\nself.onmessage = (event) => {\n const data = event.data;\n if (!data) return;\n if (data.type === 'init') {\n if (data.options?.settings) {\n state.settings = { ...state.settings, ...data.options.settings };\n }\n ensureSimulation();\n applySettings();\n self.postMessage({ type: 'ready' });\n return;\n }\n if (data.type === 'options') {\n if (data.settings) {\n state.settings = { ...state.settings, ...data.settings };\n }\n ensureSimulation();\n applySettings();\n return;\n }\n if (data.type === 'tick' && data.positions instanceof Float32Array) {\n let settingsChanged = false;\n if (data.options?.settings) {\n state.settings = { ...state.settings, ...data.options.settings };\n settingsChanged = true;\n }\n\n const nodeCount = Math.floor(data.positions.length / 3);\n if (!state.nodes.length || state.nodes.length !== nodeCount) {\n rebuildNodes(data.positions);\n ensureSimulation();\n applySettings();\n settingsChanged = false;\n }\n\n if (data.edges instanceof Uint32Array) {\n const edgesChanged = data.edges.length !== state.lastEdgeCount;\n if (!state.links.length || edgesChanged) {\n rebuildLinks(data.edges, data.weights);\n }\n }\n\n if (settingsChanged) {\n ensureSimulation();\n applySettings();\n }\n\n if (data.adoptOnly === true) {\n ensureSimulation();\n syncNodePositionsFromBuffer(data.positions, { resetVelocity: true });\n state.simulation.nodes(state.nodes);\n applySettings();\n copyNodePositionsToBuffer(data.positions);\n self.postMessage({ type: 'positions', positions: data.positions, alpha: state.settings.alpha }, [data.positions.buffer]);\n return;\n }\n\n stepSimulation(data.positions);\n self.postMessage({ type: 'positions', positions: data.positions, alpha: state.settings.alpha }, [data.positions.buffer]);\n }\n};\n"],"names":["forceCenter","x","y","z","nodes","strength","force","i","n","node","sx","sy","sz","_","tree_add$2","d","add","tree","parent","leaf","x0","x1","xm","xp","right","j","addAll","data","xz","tree_cover$2","tree_data$2","tree_extent$2","Half","tree_find$2","radius","x2","x3","halves","q","tree_remove$2","retainer","previous","next","removeAll","tree_root$2","tree_size$2","size","tree_visit$2","callback","child","tree_visitAfter$2","defaultX","tree_x$2","binarytree","Binarytree","leaf_copy","copy","treeProto","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_add$1","y0","y1","ym","yp","bottom","yz","tree_cover$1","tree_data$1","tree_extent$1","Quad","tree_find$1","y2","y3","quads","dx","dy","d2","tree_remove$1","tree_root$1","tree_size$1","tree_visit$1","tree_visitAfter$1","tree_x$1","defaultY","tree_y$1","quadtree","Quadtree","tree_y","z0","z1","zm","zp","deep","zz","t","Octant","z2","z3","octs","dz","defaultZ","tree_z","octree","Octree","constant","jiggle","random","forceCollide","nDim","radii","iterations","xi","yi","zi","ri","ri2","k","prepare","apply","treeNode","arg1","arg2","arg3","arg4","arg5","arg6","args","rj","r","l","initialize","_nodes","arg","index","find","nodeById","nodeId","forceLink","links","id","defaultStrength","strengths","bias","defaultBias","biases","distance","exponent","distances","count","link","alpha","source","target","b","lexp","initializeStrength","initializeDistance","initializeBias","noop","dispatch","Dispatch","parseTypenames","typenames","types","name","typename","T","get","set","type","that","c","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","f","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","e","wake","nap","poke","t0","t1","t2","a","m","lcg","s","MAX_DIMENSIONS","initialRadius","initialAngleRoll","initialAngleYaw","forceSimulation","numDimensions","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","step","event","tick","initializeNodes","rollAngle","yawAngle","initializeForce","closest","forceManyBody","distanceMin2","distanceMax2","theta2","accumulate","weight","numChildren","w","factor","POSITION_SCALE","defaultSettings","state","resolveCenter","center","copyNodePositionsToBuffer","buffer","use2D","base","d3GravityForce","softening","totalStrength","r2","invDistMag","ensureSimulation","applySettings","_a","_b","_c","_d","_e","_f","_g","_h","centerX","centerY","centerZ","updateStrengths","rebuildNodes","positions","syncNodePositionsFromBuffer","resetVelocity","rebuildLinks","edges","weights","linkCount","recalculateNodeStrengths","baseStrength","ratio","repulsiveExponent","attractiveExponent","repulsiveStrength","attractiveStrength","minStrength","minDegree","stepSimulation","settingsChanged","nodeCount","edgesChanged"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]}
|