@hpcc-js/tree 3.0.0 → 3.1.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/dist/index.js CHANGED
@@ -1,122 +1,2020 @@
1
- var Ot=Object.defineProperty;var s=(t,e)=>Ot(t,"name",{value:e,configurable:!0});var Ar="@hpcc-js/tree",Lr="3.0.0",Er="3.2.0";import{ITree as _t}from"@hpcc-js/api";import{d3Event as xt,SVGWidget as ar}from"@hpcc-js/common";import{rgb as lr}from"@hpcc-js/common";function Vt(t,e){return t.parent===e.parent?1:2}s(Vt,"defaultSeparation");function qt(t){return t.reduce(Wt,0)/t.length}s(qt,"meanX");function Wt(t,e){return t+e.x}s(Wt,"meanXReduce");function Bt(t){return 1+t.reduce(Ft,0)}s(Bt,"maxY");function Ft(t,e){return Math.max(t,e.y)}s(Ft,"maxYReduce");function Ht(t){for(var e;e=t.children;)t=e[0];return t}s(Ht,"leafLeft");function $t(t){for(var e;e=t.children;)t=e[e.length-1];return t}s($t,"leafRight");function fe(){var t=Vt,e=1,n=1,r=!1;function i(o){var u,l=0;o.eachAfter(function(c){var x=c.children;x?(c.x=qt(x),c.y=Bt(x)):(c.x=u?l+=t(c,u):0,c.y=0,u=c)});var p=Ht(o),a=$t(o),d=p.x-t(p,a)/2,f=a.x+t(a,p)/2;return o.eachAfter(r?function(c){c.x=(c.x-o.x)*e,c.y=(o.y-c.y)*n}:function(c){c.x=(c.x-d)/(f-d)*e,c.y=(1-(o.y?c.y/o.y:1))*n})}return s(i,"cluster"),i.separation=function(o){return arguments.length?(t=o,i):t},i.size=function(o){return arguments.length?(r=!1,e=+o[0],n=+o[1],i):r?null:[e,n]},i.nodeSize=function(o){return arguments.length?(r=!0,e=+o[0],n=+o[1],i):r?[e,n]:null},i}s(fe,"default");function Zt(t){var e=0,n=t.children,r=n&&n.length;if(!r)e=1;else for(;--r>=0;)e+=n[r].value;t.value=e}s(Zt,"count");function Pe(){return this.eachAfter(Zt)}s(Pe,"default");function Ae(t){var e=this,n,r=[e],i,o,u;do for(n=r.reverse(),r=[];e=n.pop();)if(t(e),i=e.children,i)for(o=0,u=i.length;o<u;++o)r.push(i[o]);while(r.length);return this}s(Ae,"default");function Le(t){for(var e=this,n=[e],r,i;e=n.pop();)if(t(e),r=e.children,r)for(i=r.length-1;i>=0;--i)n.push(r[i]);return this}s(Le,"default");function Ee(t){for(var e=this,n=[e],r=[],i,o,u;e=n.pop();)if(r.push(e),i=e.children,i)for(o=0,u=i.length;o<u;++o)n.push(i[o]);for(;e=r.pop();)t(e);return this}s(Ee,"default");function Ne(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n})}s(Ne,"default");function Oe(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}s(Oe,"default");function Ve(t){for(var e=this,n=jt(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r}s(Ve,"default");function jt(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;for(t=n.pop(),e=r.pop();t===e;)i=t,t=n.pop(),e=r.pop();return i}s(jt,"leastCommonAncestor");function qe(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}s(qe,"default");function We(){var t=[];return this.each(function(e){t.push(e)}),t}s(We,"default");function Be(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}s(Be,"default");function Fe(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e}s(Fe,"default");function L(t,e){var n=new ee(t),r=+t.value&&(n.value=t.value),i,o=[n],u,l,p,a;for(e==null&&(e=Ut);i=o.pop();)if(r&&(i.value=+i.data.value),(l=e(i.data))&&(a=l.length))for(i.children=new Array(a),p=a-1;p>=0;--p)o.push(u=i.children[p]=new ee(l[p])),u.parent=i,u.depth=i.depth+1;return n.eachBefore(Yt)}s(L,"hierarchy");function Gt(){return L(this).eachBefore(Xt)}s(Gt,"node_copy");function Ut(t){return t.children}s(Ut,"defaultChildren");function Xt(t){t.data=t.data.data}s(Xt,"copyData");function Yt(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}s(Yt,"computeHeight");function ee(t){this.data=t,this.depth=this.height=0,this.parent=null}s(ee,"Node");ee.prototype=L.prototype={constructor:ee,count:Pe,each:Ae,eachAfter:Ee,eachBefore:Le,sum:Ne,sort:Oe,path:Ve,ancestors:qe,descendants:We,leaves:Be,links:Fe,copy:Gt};var lt=Array.prototype.slice;function st(t){for(var e=t.length,n,r;e;)r=Math.random()*e--|0,n=t[e],t[e]=t[r],t[r]=n;return t}s(st,"shuffle");function $e(t){for(var e=0,n=(t=st(lt.call(t))).length,r=[],i,o;e<n;)i=t[e],o&&ut(o,i)?++e:(o=Kt(r=Jt(r,i)),e=0);return o}s($e,"default");function Jt(t,e){var n,r;if(He(e,t))return[e];for(n=0;n<t.length;++n)if(me(e,t[n])&&He(ae(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(me(ae(t[n],t[r]),e)&&me(ae(t[n],e),t[r])&&me(ae(t[r],e),t[n])&&He(ct(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}s(Jt,"extendBasis");function me(t,e){var n=t.r-e.r,r=e.x-t.x,i=e.y-t.y;return n<0||n*n<r*r+i*i}s(me,"enclosesNot");function ut(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}s(ut,"enclosesWeak");function He(t,e){for(var n=0;n<e.length;++n)if(!ut(t,e[n]))return!1;return!0}s(He,"enclosesWeakAll");function Kt(t){switch(t.length){case 1:return Qt(t[0]);case 2:return ae(t[0],t[1]);case 3:return ct(t[0],t[1],t[2])}}s(Kt,"encloseBasis");function Qt(t){return{x:t.x,y:t.y,r:t.r}}s(Qt,"encloseBasis1");function ae(t,e){var n=t.x,r=t.y,i=t.r,o=e.x,u=e.y,l=e.r,p=o-n,a=u-r,d=l-i,f=Math.sqrt(p*p+a*a);return{x:(n+o+p/f*d)/2,y:(r+u+a/f*d)/2,r:(f+i+l)/2}}s(ae,"encloseBasis2");function ct(t,e,n){var r=t.x,i=t.y,o=t.r,u=e.x,l=e.y,p=e.r,a=n.x,d=n.y,f=n.r,c=r-u,x=r-a,_=i-l,m=i-d,g=p-o,y=f-o,b=r*r+i*i-o*o,k=b-u*u-l*l+p*p,h=b-a*a-d*d+f*f,v=x*_-c*m,S=(_*h-m*k)/(v*2)-r,I=(m*g-_*y)/v,z=(x*k-c*h)/(v*2)-i,T=(c*y-x*g)/v,M=I*I+T*T-1,R=2*(o+S*I+z*T),w=S*S+z*z-o*o,C=-(M?(R+Math.sqrt(R*R-4*M*w))/(2*M):w/R);return{x:r+S+I*C,y:i+z+T*C,r:C}}s(ct,"encloseBasis3");function pt(t,e,n){var r=t.x-e.x,i,o,u=t.y-e.y,l,p,a=r*r+u*u;a?(o=e.r+n.r,o*=o,p=t.r+n.r,p*=p,o>p?(i=(a+p-o)/(2*a),l=Math.sqrt(Math.max(0,p/a-i*i)),n.x=t.x-i*r-l*u,n.y=t.y-i*u+l*r):(i=(a+o-p)/(2*a),l=Math.sqrt(Math.max(0,o/a-i*i)),n.x=e.x+i*r-l*u,n.y=e.y+i*u+l*r)):(n.x=e.x+n.r,n.y=e.y)}s(pt,"place");function ht(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}s(ht,"intersects");function dt(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e.y*n.r+n.y*e.r)/r;return i*i+o*o}s(dt,"score");function ge(t){this._=t,this.next=null,this.previous=null}s(ge,"Node");function ft(t){if(!(i=t.length))return 0;var e,n,r,i,o,u,l,p,a,d,f;if(e=t[0],e.x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;pt(n,e,r=t[2]),e=new ge(e),n=new ge(n),r=new ge(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;e:for(l=3;l<i;++l){pt(e._,n._,r=t[l]),r=new ge(r),p=n.next,a=e.previous,d=n._.r,f=e._.r;do if(d<=f){if(ht(p._,r._)){n=p,e.next=n,n.previous=e,--l;continue e}d+=p._.r,p=p.next}else{if(ht(a._,r._)){e=a,e.next=n,n.previous=e,--l;continue e}f+=a._.r,a=a.previous}while(p!==a.next);for(r.previous=e,r.next=n,e.next=n.previous=n=r,o=dt(e);(r=r.next)!==n;)(u=dt(r))<o&&(e=r,o=u);n=e.next}for(e=[n._],r=n;(r=r.next)!==n;)e.push(r._);for(r=$e(e),l=0;l<i;++l)e=t[l],e.x-=r.x,e.y-=r.y;return r.r}s(ft,"packEnclose");function mt(t){return t==null?null:Ze(t)}s(mt,"optional");function Ze(t){if(typeof t!="function")throw new Error;return t}s(Ze,"required");function H(){return 0}s(H,"constantZero");function $(t){return function(){return t}}s($,"default");function er(t){return Math.sqrt(t.value)}s(er,"defaultRadius");function ye(){var t=null,e=1,n=1,r=H;function i(o){return o.x=e/2,o.y=n/2,t?o.eachBefore(gt(t)).eachAfter(je(r,.5)).eachBefore(yt(1)):o.eachBefore(gt(er)).eachAfter(je(H,1)).eachAfter(je(r,o.r/Math.min(e,n))).eachBefore(yt(Math.min(e,n)/(2*o.r))),o}return s(i,"pack"),i.radius=function(o){return arguments.length?(t=mt(o),i):t},i.size=function(o){return arguments.length?(e=+o[0],n=+o[1],i):[e,n]},i.padding=function(o){return arguments.length?(r=typeof o=="function"?o:$(+o),i):r},i}s(ye,"default");function gt(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}s(gt,"radiusLeaf");function je(t,e){return function(n){if(r=n.children){var r,i,o=r.length,u=t(n)*e||0,l;if(u)for(i=0;i<o;++i)r[i].r+=u;if(l=ft(r),u)for(i=0;i<o;++i)r[i].r-=u;n.r=l+u}}}s(je,"packChildren");function yt(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}s(yt,"translateChild");function le(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}s(le,"default");function O(t,e,n,r,i){for(var o=t.children,u,l=-1,p=o.length,a=t.value&&(r-e)/t.value;++l<p;)u=o[l],u.y0=n,u.y1=i,u.x0=e,u.x1=e+=u.value*a}s(O,"default");function xe(){var t=1,e=1,n=0,r=!1;function i(u){var l=u.height+1;return u.x0=u.y0=n,u.x1=t,u.y1=e/l,u.eachBefore(o(e,l)),r&&u.eachBefore(le),u}s(i,"partition");function o(u,l){return function(p){p.children&&O(p,p.x0,u*(p.depth+1)/l,p.x1,u*(p.depth+2)/l);var a=p.x0,d=p.y0,f=p.x1-n,c=p.y1-n;f<a&&(a=f=(a+f)/2),c<d&&(d=c=(d+c)/2),p.x0=a,p.y0=d,p.x1=f,p.y1=c}}return s(o,"positionNode"),i.round=function(u){return arguments.length?(r=!!u,i):r},i.size=function(u){return arguments.length?(t=+u[0],e=+u[1],i):[t,e]},i.padding=function(u){return arguments.length?(n=+u,i):n},i}s(xe,"default");function tr(t,e){return t.parent===e.parent?1:2}s(tr,"defaultSeparation");function Ge(t){var e=t.children;return e?e[0]:t.t}s(Ge,"nextLeft");function Ue(t){var e=t.children;return e?e[e.length-1]:t.t}s(Ue,"nextRight");function rr(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}s(rr,"moveSubtree");function nr(t){for(var e=0,n=0,r=t.children,i=r.length,o;--i>=0;)o=r[i],o.z+=e,o.m+=e,e+=o.s+(n+=o.c)}s(nr,"executeShifts");function ir(t,e,n){return t.a.parent===e.parent?t.a:n}s(ir,"nextAncestor");function _e(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}s(_e,"TreeNode");_e.prototype=Object.create(ee.prototype);function or(t){for(var e=new _e(t,0),n,r=[e],i,o,u,l;n=r.pop();)if(o=n._.children)for(n.children=new Array(l=o.length),u=l-1;u>=0;--u)r.push(i=n.children[u]=new _e(o[u],u)),i.parent=n;return(e.parent=new _e(null,0)).children=[e],e}s(or,"treeRoot");function te(){var t=tr,e=1,n=1,r=null;function i(a){var d=or(a);if(d.eachAfter(o),d.parent.m=-d.z,d.eachBefore(u),r)a.eachBefore(p);else{var f=a,c=a,x=a;a.eachBefore(function(b){b.x<f.x&&(f=b),b.x>c.x&&(c=b),b.depth>x.depth&&(x=b)});var _=f===c?1:t(f,c)/2,m=_-f.x,g=e/(c.x+_+m),y=n/(x.depth||1);a.eachBefore(function(b){b.x=(b.x+m)*g,b.y=b.depth*y})}return a}s(i,"tree");function o(a){var d=a.children,f=a.parent.children,c=a.i?f[a.i-1]:null;if(d){nr(a);var x=(d[0].z+d[d.length-1].z)/2;c?(a.z=c.z+t(a._,c._),a.m=a.z-x):a.z=x}else c&&(a.z=c.z+t(a._,c._));a.parent.A=l(a,c,a.parent.A||f[0])}s(o,"firstWalk");function u(a){a._.x=a.z+a.parent.m,a.m+=a.parent.m}s(u,"secondWalk");function l(a,d,f){if(d){for(var c=a,x=a,_=d,m=c.parent.children[0],g=c.m,y=x.m,b=_.m,k=m.m,h;_=Ue(_),c=Ge(c),_&&c;)m=Ge(m),x=Ue(x),x.a=a,h=_.z+b-c.z-g+t(_._,c._),h>0&&(rr(ir(_,a,f),a,h),g+=h,y+=h),b+=_.m,g+=c.m,k+=m.m,y+=x.m;_&&!Ue(x)&&(x.t=_,x.m+=b-y),c&&!Ge(m)&&(m.t=c,m.m+=g-k,f=a)}return f}s(l,"apportion");function p(a){a.x*=e,a.y=a.depth*n}return s(p,"sizeNode"),i.separation=function(a){return arguments.length?(t=a,i):t},i.size=function(a){return arguments.length?(r=!1,e=+a[0],n=+a[1],i):r?null:[e,n]},i.nodeSize=function(a){return arguments.length?(r=!0,e=+a[0],n=+a[1],i):r?[e,n]:null},i}s(te,"default");function q(t,e,n,r,i){for(var o=t.children,u,l=-1,p=o.length,a=t.value&&(i-n)/t.value;++l<p;)u=o[l],u.x0=e,u.x1=r,u.y0=n,u.y1=n+=u.value*a}s(q,"default");var Xe=(1+Math.sqrt(5))/2;function Ye(t,e,n,r,i,o){for(var u=[],l=e.children,p,a,d=0,f=0,c=l.length,x,_,m=e.value,g,y,b,k,h,v,S;d<c;){x=i-n,_=o-r;do g=l[f++].value;while(!g&&f<c);for(y=b=g,v=Math.max(_/x,x/_)/(m*t),S=g*g*v,h=Math.max(b/S,S/y);f<c;++f){if(g+=a=l[f].value,a<y&&(y=a),a>b&&(b=a),S=g*g*v,k=Math.max(b/S,S/y),k>h){g-=a;break}h=k}u.push(p={value:g,dice:x<_,children:l.slice(d,f)}),p.dice?O(p,n,r,i,m?r+=_*g/m:o):q(p,n,r,m?n+=x*g/m:i,o),m-=g,d=f}return u}s(Ye,"squarifyRatio");var se=s(function t(e){function n(r,i,o,u,l){Ye(e,r,i,o,u,l)}return s(n,"squarify"),n.ratio=function(r){return t((r=+r)>1?r:1)},n},"custom")(Xe);function be(){var t=se,e=!1,n=1,r=1,i=[0],o=H,u=H,l=H,p=H,a=H;function d(c){return c.x0=c.y0=0,c.x1=n,c.y1=r,c.eachBefore(f),i=[0],e&&c.eachBefore(le),c}s(d,"treemap");function f(c){var x=i[c.depth],_=c.x0+x,m=c.y0+x,g=c.x1-x,y=c.y1-x;g<_&&(_=g=(_+g)/2),y<m&&(m=y=(m+y)/2),c.x0=_,c.y0=m,c.x1=g,c.y1=y,c.children&&(x=i[c.depth+1]=o(c)/2,_+=a(c)-x,m+=u(c)-x,g-=l(c)-x,y-=p(c)-x,g<_&&(_=g=(_+g)/2),y<m&&(m=y=(m+y)/2),t(c,_,m,g,y))}return s(f,"positionNode"),d.round=function(c){return arguments.length?(e=!!c,d):e},d.size=function(c){return arguments.length?(n=+c[0],r=+c[1],d):[n,r]},d.tile=function(c){return arguments.length?(t=Ze(c),d):t},d.padding=function(c){return arguments.length?d.paddingInner(c).paddingOuter(c):d.paddingInner()},d.paddingInner=function(c){return arguments.length?(o=typeof c=="function"?c:$(+c),d):o},d.paddingOuter=function(c){return arguments.length?d.paddingTop(c).paddingRight(c).paddingBottom(c).paddingLeft(c):d.paddingTop()},d.paddingTop=function(c){return arguments.length?(u=typeof c=="function"?c:$(+c),d):u},d.paddingRight=function(c){return arguments.length?(l=typeof c=="function"?c:$(+c),d):l},d.paddingBottom=function(c){return arguments.length?(p=typeof c=="function"?c:$(+c),d):p},d.paddingLeft=function(c){return arguments.length?(a=typeof c=="function"?c:$(+c),d):a},d}s(be,"default");function ve(t,e,n,r,i){var o=t.children,u,l=o.length,p,a=new Array(l+1);for(a[0]=p=u=0;u<l;++u)a[u+1]=p+=o[u].value;d(0,l,t.value,e,n,r,i);function d(f,c,x,_,m,g,y){if(f>=c-1){var b=o[f];b.x0=_,b.y0=m,b.x1=g,b.y1=y;return}for(var k=a[f],h=x/2+k,v=f+1,S=c-1;v<S;){var I=v+S>>>1;a[I]<h?v=I+1:S=I}h-a[v-1]<a[v]-h&&f+1<v&&--v;var z=a[v]-k,T=x-z;if(g-_>y-m){var M=(_*T+g*z)/x;d(f,v,z,_,m,M,y),d(v,c,T,M,m,g,y)}else{var R=(m*T+y*z)/x;d(f,v,z,_,m,g,R),d(v,c,T,_,R,g,y)}}s(d,"partition")}s(ve,"default");function we(t,e,n,r,i){(t.depth&1?q:O)(t,e,n,r,i)}s(we,"default");var Je=s(function t(e){function n(r,i,o,u,l){if((p=r._squarify)&&p.ratio===e)for(var p,a,d,f,c=-1,x,_=p.length,m=r.value;++c<_;){for(a=p[c],d=a.children,f=a.value=0,x=d.length;f<x;++f)a.value+=d[f].value;a.dice?O(a,i,o,u,o+=(l-o)*a.value/m):q(a,i,o,i+=(u-i)*a.value/m,l),m-=a.value}else r._squarify=p=Ye(e,r,i,o,u,l),p.ratio=e}return s(n,"resquarify"),n.ratio=function(r){return t((r=+r)>1?r:1)},n},"custom")(Xe);import{interpolateZoom as sr}from"@hpcc-js/common";import"@hpcc-js/common";(function(){if(!document.getElementById("1fa24db4")){var t=document.createElement("style");t.id="1fa24db4",t.textContent=`.tree_CirclePacking circle {
2
- fill: rgb(31, 119, 180);
3
- fill-opacity: .25;
4
- stroke: rgb(31, 119, 180);
5
- stroke-width: 1px;
1
+ import { ITree } from "@hpcc-js/api";
2
+ import { HTMLWidget, Palette, Platform, PropertyExt, SVGWidget, SVGZoomWidget, Utility, d3Event, interpolate, interpolateZoom, max, rgb, scaleLinear, scaleSqrt, select } from "@hpcc-js/common";
3
+
4
+ //#region src/__package__.ts
5
+ const PKG_NAME = "@hpcc-js/tree";
6
+ const PKG_VERSION = "3.0.0";
7
+ const BUILD_VERSION = "3.2.1";
8
+
9
+ //#endregion
10
+ //#region node_modules/d3-hierarchy/src/cluster.js
11
+ function defaultSeparation$1(a, b) {
12
+ return a.parent === b.parent ? 1 : 2;
13
+ }
14
+ function meanX(children) {
15
+ return children.reduce(meanXReduce, 0) / children.length;
16
+ }
17
+ function meanXReduce(x, c) {
18
+ return x + c.x;
19
+ }
20
+ function maxY(children) {
21
+ return 1 + children.reduce(maxYReduce, 0);
22
+ }
23
+ function maxYReduce(y, c) {
24
+ return Math.max(y, c.y);
25
+ }
26
+ function leafLeft(node) {
27
+ var children;
28
+ while (children = node.children) node = children[0];
29
+ return node;
30
+ }
31
+ function leafRight(node) {
32
+ var children;
33
+ while (children = node.children) node = children[children.length - 1];
34
+ return node;
35
+ }
36
+ function cluster_default() {
37
+ var separation = defaultSeparation$1, dx = 1, dy = 1, nodeSize = false;
38
+ function cluster(root) {
39
+ var previousNode, x = 0;
40
+ root.eachAfter(function(node) {
41
+ var children = node.children;
42
+ if (children) {
43
+ node.x = meanX(children);
44
+ node.y = maxY(children);
45
+ } else {
46
+ node.x = previousNode ? x += separation(node, previousNode) : 0;
47
+ node.y = 0;
48
+ previousNode = node;
49
+ }
50
+ });
51
+ var left = leafLeft(root), right = leafRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
52
+ return root.eachAfter(nodeSize ? function(node) {
53
+ node.x = (node.x - root.x) * dx;
54
+ node.y = (root.y - node.y) * dy;
55
+ } : function(node) {
56
+ node.x = (node.x - x0) / (x1 - x0) * dx;
57
+ node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;
58
+ });
59
+ }
60
+ cluster.separation = function(x) {
61
+ return arguments.length ? (separation = x, cluster) : separation;
62
+ };
63
+ cluster.size = function(x) {
64
+ return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : nodeSize ? null : [dx, dy];
65
+ };
66
+ cluster.nodeSize = function(x) {
67
+ return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : nodeSize ? [dx, dy] : null;
68
+ };
69
+ return cluster;
70
+ }
71
+
72
+ //#endregion
73
+ //#region node_modules/d3-hierarchy/src/hierarchy/count.js
74
+ function count(node) {
75
+ var sum = 0, children = node.children, i = children && children.length;
76
+ if (!i) sum = 1;
77
+ else while (--i >= 0) sum += children[i].value;
78
+ node.value = sum;
79
+ }
80
+ function count_default() {
81
+ return this.eachAfter(count);
82
+ }
83
+
84
+ //#endregion
85
+ //#region node_modules/d3-hierarchy/src/hierarchy/each.js
86
+ function each_default(callback) {
87
+ var node = this, current, next = [node], children, i, n;
88
+ do {
89
+ current = next.reverse(), next = [];
90
+ while (node = current.pop()) {
91
+ callback(node), children = node.children;
92
+ if (children) for (i = 0, n = children.length; i < n; ++i) next.push(children[i]);
93
+ }
94
+ } while (next.length);
95
+ return this;
96
+ }
97
+
98
+ //#endregion
99
+ //#region node_modules/d3-hierarchy/src/hierarchy/eachBefore.js
100
+ function eachBefore_default(callback) {
101
+ var node = this, nodes = [node], children, i;
102
+ while (node = nodes.pop()) {
103
+ callback(node), children = node.children;
104
+ if (children) for (i = children.length - 1; i >= 0; --i) nodes.push(children[i]);
105
+ }
106
+ return this;
107
+ }
108
+
109
+ //#endregion
110
+ //#region node_modules/d3-hierarchy/src/hierarchy/eachAfter.js
111
+ function eachAfter_default(callback) {
112
+ var node = this, nodes = [node], next = [], children, i, n;
113
+ while (node = nodes.pop()) {
114
+ next.push(node), children = node.children;
115
+ if (children) for (i = 0, n = children.length; i < n; ++i) nodes.push(children[i]);
116
+ }
117
+ while (node = next.pop()) callback(node);
118
+ return this;
119
+ }
120
+
121
+ //#endregion
122
+ //#region node_modules/d3-hierarchy/src/hierarchy/sum.js
123
+ function sum_default(value) {
124
+ return this.eachAfter(function(node) {
125
+ var sum = +value(node.data) || 0, children = node.children, i = children && children.length;
126
+ while (--i >= 0) sum += children[i].value;
127
+ node.value = sum;
128
+ });
129
+ }
130
+
131
+ //#endregion
132
+ //#region node_modules/d3-hierarchy/src/hierarchy/sort.js
133
+ function sort_default(compare) {
134
+ return this.eachBefore(function(node) {
135
+ if (node.children) node.children.sort(compare);
136
+ });
137
+ }
138
+
139
+ //#endregion
140
+ //#region node_modules/d3-hierarchy/src/hierarchy/path.js
141
+ function path_default$1(end) {
142
+ var start = this, ancestor = leastCommonAncestor(start, end), nodes = [start];
143
+ while (start !== ancestor) {
144
+ start = start.parent;
145
+ nodes.push(start);
146
+ }
147
+ var k = nodes.length;
148
+ while (end !== ancestor) {
149
+ nodes.splice(k, 0, end);
150
+ end = end.parent;
151
+ }
152
+ return nodes;
153
+ }
154
+ function leastCommonAncestor(a, b) {
155
+ if (a === b) return a;
156
+ var aNodes = a.ancestors(), bNodes = b.ancestors(), c = null;
157
+ a = aNodes.pop();
158
+ b = bNodes.pop();
159
+ while (a === b) {
160
+ c = a;
161
+ a = aNodes.pop();
162
+ b = bNodes.pop();
163
+ }
164
+ return c;
165
+ }
166
+
167
+ //#endregion
168
+ //#region node_modules/d3-hierarchy/src/hierarchy/ancestors.js
169
+ function ancestors_default() {
170
+ var node = this, nodes = [node];
171
+ while (node = node.parent) nodes.push(node);
172
+ return nodes;
173
+ }
174
+
175
+ //#endregion
176
+ //#region node_modules/d3-hierarchy/src/hierarchy/descendants.js
177
+ function descendants_default() {
178
+ var nodes = [];
179
+ this.each(function(node) {
180
+ nodes.push(node);
181
+ });
182
+ return nodes;
183
+ }
184
+
185
+ //#endregion
186
+ //#region node_modules/d3-hierarchy/src/hierarchy/leaves.js
187
+ function leaves_default() {
188
+ var leaves = [];
189
+ this.eachBefore(function(node) {
190
+ if (!node.children) leaves.push(node);
191
+ });
192
+ return leaves;
193
+ }
194
+
195
+ //#endregion
196
+ //#region node_modules/d3-hierarchy/src/hierarchy/links.js
197
+ function links_default() {
198
+ var root = this, links = [];
199
+ root.each(function(node) {
200
+ if (node !== root) links.push({
201
+ source: node.parent,
202
+ target: node
203
+ });
204
+ });
205
+ return links;
206
+ }
207
+
208
+ //#endregion
209
+ //#region node_modules/d3-hierarchy/src/hierarchy/index.js
210
+ function hierarchy(data, children) {
211
+ var root = new Node(data), valued = +data.value && (root.value = data.value), node, nodes = [root], child, childs, i, n;
212
+ if (children == null) children = defaultChildren;
213
+ while (node = nodes.pop()) {
214
+ if (valued) node.value = +node.data.value;
215
+ if ((childs = children(node.data)) && (n = childs.length)) {
216
+ node.children = new Array(n);
217
+ for (i = n - 1; i >= 0; --i) {
218
+ nodes.push(child = node.children[i] = new Node(childs[i]));
219
+ child.parent = node;
220
+ child.depth = node.depth + 1;
221
+ }
222
+ }
223
+ }
224
+ return root.eachBefore(computeHeight);
225
+ }
226
+ function node_copy() {
227
+ return hierarchy(this).eachBefore(copyData);
228
+ }
229
+ function defaultChildren(d) {
230
+ return d.children;
231
+ }
232
+ function copyData(node) {
233
+ node.data = node.data.data;
234
+ }
235
+ function computeHeight(node) {
236
+ var height = 0;
237
+ do
238
+ node.height = height;
239
+ while ((node = node.parent) && node.height < ++height);
240
+ }
241
+ function Node(data) {
242
+ this.data = data;
243
+ this.depth = this.height = 0;
244
+ this.parent = null;
245
+ }
246
+ Node.prototype = hierarchy.prototype = {
247
+ constructor: Node,
248
+ count: count_default,
249
+ each: each_default,
250
+ eachAfter: eachAfter_default,
251
+ eachBefore: eachBefore_default,
252
+ sum: sum_default,
253
+ sort: sort_default,
254
+ path: path_default$1,
255
+ ancestors: ancestors_default,
256
+ descendants: descendants_default,
257
+ leaves: leaves_default,
258
+ links: links_default,
259
+ copy: node_copy
260
+ };
261
+
262
+ //#endregion
263
+ //#region node_modules/d3-hierarchy/src/array.js
264
+ var slice = Array.prototype.slice;
265
+ function shuffle(array) {
266
+ var m = array.length, t, i;
267
+ while (m) {
268
+ i = Math.random() * m-- | 0;
269
+ t = array[m];
270
+ array[m] = array[i];
271
+ array[i] = t;
272
+ }
273
+ return array;
6
274
  }
7
275
 
8
- .tree_CirclePacking .leaf circle {
9
- fill: #ff7f0e;
10
- fill-opacity: 1;
276
+ //#endregion
277
+ //#region node_modules/d3-hierarchy/src/pack/enclose.js
278
+ function enclose_default(circles) {
279
+ var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;
280
+ while (i < n) {
281
+ p = circles[i];
282
+ if (e && enclosesWeak(e, p)) ++i;
283
+ else e = encloseBasis(B = extendBasis(B, p)), i = 0;
284
+ }
285
+ return e;
286
+ }
287
+ function extendBasis(B, p) {
288
+ var i, j;
289
+ if (enclosesWeakAll(p, B)) return [p];
290
+ for (i = 0; i < B.length; ++i) if (enclosesNot(p, B[i]) && enclosesWeakAll(encloseBasis2(B[i], p), B)) return [B[i], p];
291
+ for (i = 0; i < B.length - 1; ++i) for (j = i + 1; j < B.length; ++j) if (enclosesNot(encloseBasis2(B[i], B[j]), p) && enclosesNot(encloseBasis2(B[i], p), B[j]) && enclosesNot(encloseBasis2(B[j], p), B[i]) && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) return [
292
+ B[i],
293
+ B[j],
294
+ p
295
+ ];
296
+ throw new Error();
297
+ }
298
+ function enclosesNot(a, b) {
299
+ var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
300
+ return dr < 0 || dr * dr < dx * dx + dy * dy;
301
+ }
302
+ function enclosesWeak(a, b) {
303
+ var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
304
+ return dr > 0 && dr * dr > dx * dx + dy * dy;
305
+ }
306
+ function enclosesWeakAll(a, B) {
307
+ for (var i = 0; i < B.length; ++i) if (!enclosesWeak(a, B[i])) return false;
308
+ return true;
309
+ }
310
+ function encloseBasis(B) {
311
+ switch (B.length) {
312
+ case 1: return encloseBasis1(B[0]);
313
+ case 2: return encloseBasis2(B[0], B[1]);
314
+ case 3: return encloseBasis3(B[0], B[1], B[2]);
315
+ }
316
+ }
317
+ function encloseBasis1(a) {
318
+ return {
319
+ x: a.x,
320
+ y: a.y,
321
+ r: a.r
322
+ };
323
+ }
324
+ function encloseBasis2(a, b) {
325
+ var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, l = Math.sqrt(x21 * x21 + y21 * y21);
326
+ return {
327
+ x: (x1 + x2 + x21 / l * r21) / 2,
328
+ y: (y1 + y2 + y21 / l * r21) / 2,
329
+ r: (l + r1 + r2) / 2
330
+ };
331
+ }
332
+ function encloseBasis3(a, b, c) {
333
+ var x1 = a.x, y1 = a.y, r1 = a.r, x2 = b.x, y2 = b.y, r2 = b.r, x3 = c.x, y3 = c.y, r3 = c.r, a2 = x1 - x2, a3 = x1 - x3, b2 = y1 - y2, b3 = y1 - y3, c2 = r2 - r1, c3 = r3 - r1, d1 = x1 * x1 + y1 * y1 - r1 * r1, d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, ab = a3 * b2 - a2 * b3, xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, xb = (b3 * c2 - b2 * c3) / ab, ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, yb = (a2 * c3 - a3 * c2) / ab, A = xb * xb + yb * yb - 1, B = 2 * (r1 + xa * xb + ya * yb), C = xa * xa + ya * ya - r1 * r1, r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
334
+ return {
335
+ x: x1 + xa + xb * r,
336
+ y: y1 + ya + yb * r,
337
+ r
338
+ };
11
339
  }
12
340
 
13
- .tree_CirclePacking .label {
14
- fill:white;
15
- text-anchor: middle;
341
+ //#endregion
342
+ //#region node_modules/d3-hierarchy/src/pack/siblings.js
343
+ function place(b, a, c) {
344
+ var dx = b.x - a.x, x, a2, dy = b.y - a.y, y, b2, d2 = dx * dx + dy * dy;
345
+ if (d2) {
346
+ a2 = a.r + c.r, a2 *= a2;
347
+ b2 = b.r + c.r, b2 *= b2;
348
+ if (a2 > b2) {
349
+ x = (d2 + b2 - a2) / (2 * d2);
350
+ y = Math.sqrt(Math.max(0, b2 / d2 - x * x));
351
+ c.x = b.x - x * dx - y * dy;
352
+ c.y = b.y - x * dy + y * dx;
353
+ } else {
354
+ x = (d2 + a2 - b2) / (2 * d2);
355
+ y = Math.sqrt(Math.max(0, a2 / d2 - x * x));
356
+ c.x = a.x + x * dx - y * dy;
357
+ c.y = a.y + x * dy + y * dx;
358
+ }
359
+ } else {
360
+ c.x = a.x + c.r;
361
+ c.y = a.y;
362
+ }
363
+ }
364
+ function intersects(a, b) {
365
+ var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;
366
+ return dr > 0 && dr * dr > dx * dx + dy * dy;
367
+ }
368
+ function score(node) {
369
+ var a = node._, b = node.next._, ab = a.r + b.r, dx = (a.x * b.r + b.x * a.r) / ab, dy = (a.y * b.r + b.y * a.r) / ab;
370
+ return dx * dx + dy * dy;
16
371
  }
17
- `,document.head.appendChild(t)}})();var W=class extends ar{static{s(this,"CirclePacking")}diameter;pack;svg;_focus;circle;view;_node;constructor(){super(),_t.call(this)}enter(e,n){this.diameter=Math.min(this.width(),this.height()),this.pack=ye().size([this.diameter-4,this.diameter-4]).padding(1.5),this.svg=n.append("g")}update(e,n){let r=this;this.diameter=Math.min(this.width(),this.height()),this.pack.size([this.diameter-4,this.diameter-4]).padding(1.5),this._palette=this._palette.switch(this.paletteID()),this.useClonedPalette()&&(this._palette=this._palette.cloneNotExists(this.paletteID()+"_"+this.id())),this.svg.selectAll("circle").remove(),this.svg.selectAll("text").remove();let i=L(this.data()).sum(function(o){return o&&o.size?o.size:1}).sort(function(o,u){return o.value<u.value?-1:o.value>u.value?1:0});this._focus=i,this.pack(i),this.circle=this.svg.selectAll("circle").data(i.descendants()).enter().append("circle").attr("class",function(o){return o.parent?o.children?"node":"node leaf":"node root"}).style("fill",function(o){return o.color=r.paletteDepthLevel_exists()&&o.depth>r.paletteDepthLevel()?lr(o.parent.color)[r.paletteDepthVariant()](1):r._palette(o.data.label),o.color}).on("click",function(o){r.click(o.data,null,null)}).on("dblclick",function(o){this._focus!==o&&r.zoom(o),xt().stopPropagation()}),this.circle.append("title").text(function(o){return o.data.label}),this.svg.selectAll("text").data(i.descendants()).enter().append("text").attr("class","label").style("fill-opacity",function(o){return o.parent===i?1:0}).style("display",function(o){return o.parent===i?null:"none"}).text(function(o){return o.data.label+(r.showSize()&&typeof o.data.size<"u"?" "+o.data.size:"")}),this._node=this.svg.selectAll("circle,text"),this.zoomTo([i.x,i.y,i.r*2])}zoom(e){this._focus=e;let n=this,r=this.svg.transition().duration(xt().altKey?7500:750).tween("zoom",function(){let o=sr(n.view,[n._focus.x,n._focus.y,n._focus.r*2]);return function(u){n.zoomTo(o(u))}});function i(o){return o===n._focus&&!o.children||o.parent===n._focus}s(i,"showText"),r.selectAll("text").filter(function(o){return i(o)||this.style.display==="inline"}).style("fill-opacity",function(o){return i(o)?1:0}).on("start",function(o){i(o)&&(this.style.display="inline")}).on("end",function(o){i(o)||(this.style.display="none")})}zoomTo(e){let n=this.diameter/e[2];this.view=e,this._node.attr("transform",function(r){return"translate("+(r.x-e[0])*n+","+(r.y-e[1])*n+")"}),this.circle.attr("r",function(r){return r.r*n})}};W.prototype._class+=" tree_CirclePacking";W.prototype.implements(_t.prototype);W.prototype.publish("showSize",!0,"boolean","Show size along with label");W.prototype.publish("paletteDepthLevel",null,"number","If not null then beyond this depth number the child node colors are based on parent",null,{optional:!0});W.prototype.publish("paletteDepthVariant","brighter","set","Determines paletteDepthLevel decendant color shade variant",["brighter","darker"],{disable:s(t=>t.paletteDepthLevel_exists(),"disable")});W.prototype.publish("paletteID","default","set","Color palette for this widget",W.prototype._palette.switch(),{tags:["Basic","Shared"]});W.prototype.publish("useClonedPalette",!1,"boolean","Enable or disable using a cloned palette",null,{tags:["Intermediate","Shared"]});import{ITree as bt}from"@hpcc-js/api";import{PropertyExt as ur,SVGZoomWidget as cr,Utility as vt}from"@hpcc-js/common";import{select as pr}from"@hpcc-js/common";(function(){if(!document.getElementById("077fd267")){var t=document.createElement("style");t.id="077fd267",t.textContent=`.tree_Dendrogram .node {
372
+ function Node$1(circle) {
373
+ this._ = circle;
374
+ this.next = null;
375
+ this.previous = null;
376
+ }
377
+ function packEnclose(circles) {
378
+ if (!(n = circles.length)) return 0;
379
+ var a = circles[0], b, c, n, aa, ca, i, j, k, sj, sk;
380
+ a.x = 0, a.y = 0;
381
+ if (!(n > 1)) return a.r;
382
+ b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;
383
+ if (!(n > 2)) return a.r + b.r;
384
+ place(b, a, c = circles[2]);
385
+ a = new Node$1(a), b = new Node$1(b), c = new Node$1(c);
386
+ a.next = c.previous = b;
387
+ b.next = a.previous = c;
388
+ c.next = b.previous = a;
389
+ pack: for (i = 3; i < n; ++i) {
390
+ place(a._, b._, c = circles[i]), c = new Node$1(c);
391
+ j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
392
+ do
393
+ if (sj <= sk) {
394
+ if (intersects(j._, c._)) {
395
+ b = j, a.next = b, b.previous = a, --i;
396
+ continue pack;
397
+ }
398
+ sj += j._.r, j = j.next;
399
+ } else {
400
+ if (intersects(k._, c._)) {
401
+ a = k, a.next = b, b.previous = a, --i;
402
+ continue pack;
403
+ }
404
+ sk += k._.r, k = k.previous;
405
+ }
406
+ while (j !== k.next);
407
+ c.previous = a, c.next = b, a.next = b.previous = b = c;
408
+ aa = score(a);
409
+ while ((c = c.next) !== b) if ((ca = score(c)) < aa) a = c, aa = ca;
410
+ b = a.next;
411
+ }
412
+ a = [b._], c = b;
413
+ while ((c = c.next) !== b) a.push(c._);
414
+ c = enclose_default(a);
415
+ for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;
416
+ return c.r;
18
417
  }
19
418
 
20
- .tree_Dendrogram .node circle {
21
- fill: #dcf1ff;
22
- stroke: #1f77b4;
23
- stroke-width: 1.0px;
419
+ //#endregion
420
+ //#region node_modules/d3-hierarchy/src/accessors.js
421
+ function optional(f) {
422
+ return f == null ? null : required(f);
423
+ }
424
+ function required(f) {
425
+ if (typeof f !== "function") throw new Error();
426
+ return f;
24
427
  }
25
428
 
26
- .tree_Dendrogram .node.selected circle {
27
- stroke: red;
429
+ //#endregion
430
+ //#region node_modules/d3-hierarchy/src/constant.js
431
+ function constantZero() {
432
+ return 0;
433
+ }
434
+ function constant_default$1(x) {
435
+ return function() {
436
+ return x;
437
+ };
28
438
  }
29
439
 
30
- .tree_Dendrogram .node.over circle {
31
- stroke: orange;
440
+ //#endregion
441
+ //#region node_modules/d3-hierarchy/src/pack/index.js
442
+ function defaultRadius(d) {
443
+ return Math.sqrt(d.value);
444
+ }
445
+ function pack_default() {
446
+ var radius = null, dx = 1, dy = 1, padding = constantZero;
447
+ function pack(root) {
448
+ root.x = dx / 2, root.y = dy / 2;
449
+ if (radius) root.eachBefore(radiusLeaf(radius)).eachAfter(packChildren(padding, .5)).eachBefore(translateChild(1));
450
+ else root.eachBefore(radiusLeaf(defaultRadius)).eachAfter(packChildren(constantZero, 1)).eachAfter(packChildren(padding, root.r / Math.min(dx, dy))).eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));
451
+ return root;
452
+ }
453
+ pack.radius = function(x) {
454
+ return arguments.length ? (radius = optional(x), pack) : radius;
455
+ };
456
+ pack.size = function(x) {
457
+ return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];
458
+ };
459
+ pack.padding = function(x) {
460
+ return arguments.length ? (padding = typeof x === "function" ? x : constant_default$1(+x), pack) : padding;
461
+ };
462
+ return pack;
463
+ }
464
+ function radiusLeaf(radius) {
465
+ return function(node) {
466
+ if (!node.children) node.r = Math.max(0, +radius(node) || 0);
467
+ };
468
+ }
469
+ function packChildren(padding, k) {
470
+ return function(node) {
471
+ if (children = node.children) {
472
+ var children, i, n = children.length, r = padding(node) * k || 0, e;
473
+ if (r) for (i = 0; i < n; ++i) children[i].r += r;
474
+ e = packEnclose(children);
475
+ if (r) for (i = 0; i < n; ++i) children[i].r -= r;
476
+ node.r = e + r;
477
+ }
478
+ };
479
+ }
480
+ function translateChild(k) {
481
+ return function(node) {
482
+ var parent = node.parent;
483
+ node.r *= k;
484
+ if (parent) {
485
+ node.x = parent.x + k * node.x;
486
+ node.y = parent.y + k * node.y;
487
+ }
488
+ };
32
489
  }
33
490
 
34
- .tree_Dendrogram .node.selected.over circle {
35
- stroke: red;
491
+ //#endregion
492
+ //#region node_modules/d3-hierarchy/src/treemap/round.js
493
+ function round_default(node) {
494
+ node.x0 = Math.round(node.x0);
495
+ node.y0 = Math.round(node.y0);
496
+ node.x1 = Math.round(node.x1);
497
+ node.y1 = Math.round(node.y1);
36
498
  }
37
499
 
38
- .tree_Dendrogram .node.selected text {
39
- fill: red;
500
+ //#endregion
501
+ //#region node_modules/d3-hierarchy/src/treemap/dice.js
502
+ function dice_default(parent, x0, y0, x1, y1) {
503
+ var nodes = parent.children, node, i = -1, n = nodes.length, k = parent.value && (x1 - x0) / parent.value;
504
+ while (++i < n) {
505
+ node = nodes[i], node.y0 = y0, node.y1 = y1;
506
+ node.x0 = x0, node.x1 = x0 += node.value * k;
507
+ }
40
508
  }
41
509
 
42
- .tree_Dendrogram .node.over text {
43
- fill: orange;
510
+ //#endregion
511
+ //#region node_modules/d3-hierarchy/src/partition.js
512
+ function partition_default() {
513
+ var dx = 1, dy = 1, padding = 0, round = false;
514
+ function partition(root) {
515
+ var n = root.height + 1;
516
+ root.x0 = root.y0 = padding;
517
+ root.x1 = dx;
518
+ root.y1 = dy / n;
519
+ root.eachBefore(positionNode(dy, n));
520
+ if (round) root.eachBefore(round_default);
521
+ return root;
522
+ }
523
+ function positionNode(dy$1, n) {
524
+ return function(node) {
525
+ if (node.children) dice_default(node, node.x0, dy$1 * (node.depth + 1) / n, node.x1, dy$1 * (node.depth + 2) / n);
526
+ var x0 = node.x0, y0 = node.y0, x1 = node.x1 - padding, y1 = node.y1 - padding;
527
+ if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
528
+ if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
529
+ node.x0 = x0;
530
+ node.y0 = y0;
531
+ node.x1 = x1;
532
+ node.y1 = y1;
533
+ };
534
+ }
535
+ partition.round = function(x) {
536
+ return arguments.length ? (round = !!x, partition) : round;
537
+ };
538
+ partition.size = function(x) {
539
+ return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];
540
+ };
541
+ partition.padding = function(x) {
542
+ return arguments.length ? (padding = +x, partition) : padding;
543
+ };
544
+ return partition;
44
545
  }
45
546
 
46
- .tree_Dendrogram .node.selected.over text {
47
- fill: red;
547
+ //#endregion
548
+ //#region node_modules/d3-hierarchy/src/tree.js
549
+ function defaultSeparation(a, b) {
550
+ return a.parent === b.parent ? 1 : 2;
551
+ }
552
+ function nextLeft(v) {
553
+ var children = v.children;
554
+ return children ? children[0] : v.t;
555
+ }
556
+ function nextRight(v) {
557
+ var children = v.children;
558
+ return children ? children[children.length - 1] : v.t;
559
+ }
560
+ function moveSubtree(wm, wp, shift) {
561
+ var change = shift / (wp.i - wm.i);
562
+ wp.c -= change;
563
+ wp.s += shift;
564
+ wm.c += change;
565
+ wp.z += shift;
566
+ wp.m += shift;
567
+ }
568
+ function executeShifts(v) {
569
+ var shift = 0, change = 0, children = v.children, i = children.length, w;
570
+ while (--i >= 0) {
571
+ w = children[i];
572
+ w.z += shift;
573
+ w.m += shift;
574
+ shift += w.s + (change += w.c);
575
+ }
576
+ }
577
+ function nextAncestor(vim, v, ancestor) {
578
+ return vim.a.parent === v.parent ? vim.a : ancestor;
579
+ }
580
+ function TreeNode(node, i) {
581
+ this._ = node;
582
+ this.parent = null;
583
+ this.children = null;
584
+ this.A = null;
585
+ this.a = this;
586
+ this.z = 0;
587
+ this.m = 0;
588
+ this.c = 0;
589
+ this.s = 0;
590
+ this.t = null;
591
+ this.i = i;
592
+ }
593
+ TreeNode.prototype = Object.create(Node.prototype);
594
+ function treeRoot(root) {
595
+ var tree = new TreeNode(root, 0), node, nodes = [tree], child, children, i, n;
596
+ while (node = nodes.pop()) if (children = node._.children) {
597
+ node.children = new Array(n = children.length);
598
+ for (i = n - 1; i >= 0; --i) {
599
+ nodes.push(child = node.children[i] = new TreeNode(children[i], i));
600
+ child.parent = node;
601
+ }
602
+ }
603
+ (tree.parent = new TreeNode(null, 0)).children = [tree];
604
+ return tree;
605
+ }
606
+ function tree_default() {
607
+ var separation = defaultSeparation, dx = 1, dy = 1, nodeSize = null;
608
+ function tree(root) {
609
+ var t = treeRoot(root);
610
+ t.eachAfter(firstWalk), t.parent.m = -t.z;
611
+ t.eachBefore(secondWalk);
612
+ if (nodeSize) root.eachBefore(sizeNode);
613
+ else {
614
+ var left = root, right = root, bottom = root;
615
+ root.eachBefore(function(node) {
616
+ if (node.x < left.x) left = node;
617
+ if (node.x > right.x) right = node;
618
+ if (node.depth > bottom.depth) bottom = node;
619
+ });
620
+ var s = left === right ? 1 : separation(left, right) / 2, tx = s - left.x, kx = dx / (right.x + s + tx), ky = dy / (bottom.depth || 1);
621
+ root.eachBefore(function(node) {
622
+ node.x = (node.x + tx) * kx;
623
+ node.y = node.depth * ky;
624
+ });
625
+ }
626
+ return root;
627
+ }
628
+ function firstWalk(v) {
629
+ var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;
630
+ if (children) {
631
+ executeShifts(v);
632
+ var midpoint = (children[0].z + children[children.length - 1].z) / 2;
633
+ if (w) {
634
+ v.z = w.z + separation(v._, w._);
635
+ v.m = v.z - midpoint;
636
+ } else v.z = midpoint;
637
+ } else if (w) v.z = w.z + separation(v._, w._);
638
+ v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
639
+ }
640
+ function secondWalk(v) {
641
+ v._.x = v.z + v.parent.m;
642
+ v.m += v.parent.m;
643
+ }
644
+ function apportion(v, w, ancestor) {
645
+ if (w) {
646
+ var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;
647
+ while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {
648
+ vom = nextLeft(vom);
649
+ vop = nextRight(vop);
650
+ vop.a = v;
651
+ shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
652
+ if (shift > 0) {
653
+ moveSubtree(nextAncestor(vim, v, ancestor), v, shift);
654
+ sip += shift;
655
+ sop += shift;
656
+ }
657
+ sim += vim.m;
658
+ sip += vip.m;
659
+ som += vom.m;
660
+ sop += vop.m;
661
+ }
662
+ if (vim && !nextRight(vop)) {
663
+ vop.t = vim;
664
+ vop.m += sim - sop;
665
+ }
666
+ if (vip && !nextLeft(vom)) {
667
+ vom.t = vip;
668
+ vom.m += sip - som;
669
+ ancestor = v;
670
+ }
671
+ }
672
+ return ancestor;
673
+ }
674
+ function sizeNode(node) {
675
+ node.x *= dx;
676
+ node.y = node.depth * dy;
677
+ }
678
+ tree.separation = function(x) {
679
+ return arguments.length ? (separation = x, tree) : separation;
680
+ };
681
+ tree.size = function(x) {
682
+ return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : nodeSize ? null : [dx, dy];
683
+ };
684
+ tree.nodeSize = function(x) {
685
+ return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : nodeSize ? [dx, dy] : null;
686
+ };
687
+ return tree;
48
688
  }
49
689
 
50
- .tree_Dendrogram .node text {
51
- font-size: 14px;
690
+ //#endregion
691
+ //#region node_modules/d3-hierarchy/src/treemap/slice.js
692
+ function slice_default(parent, x0, y0, x1, y1) {
693
+ var nodes = parent.children, node, i = -1, n = nodes.length, k = parent.value && (y1 - y0) / parent.value;
694
+ while (++i < n) {
695
+ node = nodes[i], node.x0 = x0, node.x1 = x1;
696
+ node.y0 = y0, node.y1 = y0 += node.value * k;
697
+ }
52
698
  }
53
699
 
54
- .tree_Dendrogram .link {
55
- fill: none;
56
- stroke: #656565;
57
- stroke-width: 1.0px;
700
+ //#endregion
701
+ //#region node_modules/d3-hierarchy/src/treemap/squarify.js
702
+ var phi = (1 + Math.sqrt(5)) / 2;
703
+ function squarifyRatio(ratio, parent, x0, y0, x1, y1) {
704
+ var rows = [], nodes = parent.children, row, nodeValue, i0 = 0, i1 = 0, n = nodes.length, dx, dy, value = parent.value, sumValue, minValue, maxValue, newRatio, minRatio, alpha, beta;
705
+ while (i0 < n) {
706
+ dx = x1 - x0, dy = y1 - y0;
707
+ do
708
+ sumValue = nodes[i1++].value;
709
+ while (!sumValue && i1 < n);
710
+ minValue = maxValue = sumValue;
711
+ alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
712
+ beta = sumValue * sumValue * alpha;
713
+ minRatio = Math.max(maxValue / beta, beta / minValue);
714
+ for (; i1 < n; ++i1) {
715
+ sumValue += nodeValue = nodes[i1].value;
716
+ if (nodeValue < minValue) minValue = nodeValue;
717
+ if (nodeValue > maxValue) maxValue = nodeValue;
718
+ beta = sumValue * sumValue * alpha;
719
+ newRatio = Math.max(maxValue / beta, beta / minValue);
720
+ if (newRatio > minRatio) {
721
+ sumValue -= nodeValue;
722
+ break;
723
+ }
724
+ minRatio = newRatio;
725
+ }
726
+ rows.push(row = {
727
+ value: sumValue,
728
+ dice: dx < dy,
729
+ children: nodes.slice(i0, i1)
730
+ });
731
+ if (row.dice) dice_default(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
732
+ else slice_default(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
733
+ value -= sumValue, i0 = i1;
734
+ }
735
+ return rows;
58
736
  }
59
- `,document.head.appendChild(t)}})();var re=class extends ur{static{s(this,"DendrogramColumn")}_owner;constructor(){super()}owner(e){return arguments.length?(this._owner=e,this):this._owner}valid(){return!!this.column()}column};re.prototype._class+=" tree_Dendrogram.DendrogramColumn";re.prototype.publish("column",null,"set","Field",function(){return this._owner?this._owner.columns():[]},{optional:!0});var E=class extends cr{static{s(this,"Dendrogram")}Column;_d3LayoutCluster;_d3LayoutTree;_d3Layout;constructor(){super(),bt.call(this),vt.SimpleSelectionMixin.call(this),this._drawStartPos="origin",this._d3LayoutCluster=fe(),this._d3LayoutTree=te()}dendrogramData(){if(this.data().length===0)return[];if(!this.mappings().filter(i=>i.valid()).length)return this.data();let n={key:"root",values:this._db.rollupView(this.mappings().map(function(i){return i.column()})).entries()};return r(n);function r(i){return{label:i.key,children:i.values.filter(function(o){return!(o instanceof Array)}).map(function(o){return r(o)}),origRows:i.values}}}enter(e,n){super.enter(e,n),this._renderElement.attr("opacity",0).transition().duration(500).attr("opacity",1),this._selection.widgetElement(this._renderElement)}update(e,n){super.update(e,n);let r=this,i=this.orientation()==="vertical";this._palette=this._palette.switch(this.paletteID()),this.useClonedPalette()&&(this._palette=this._palette.cloneNotExists(this.paletteID()+"_"+this.id())),this._d3Layout=this.dendrogram()?this._d3LayoutCluster:this._d3LayoutTree,this.radial()?(this._d3Layout.size([360,this.separation()*2]),this._d3Layout.separation(s(function(v,S){return(v.parent===S.parent?1:2)/v.depth},"separation"))):(this._d3Layout.nodeSize([14,this.separation()]),this._d3Layout.separation(s(function(v,S){return v.parent===S.parent?1:2},"separation")));let o=this.dendrogramData(),u=L(o);this._d3Layout(u);let l=u.descendants(),p=u.descendants().slice(1);function a(h){return"M"+h.parent.x+","+h.parent.y+"C"+h.parent.x+","+(h.parent.y+h.y)/2+" "+h.x+","+(h.parent.y+h.y)/2+" "+h.x+","+h.y}s(a,"linkVertical");function d(h){return"M"+h.y+","+h.x+"C"+(h.y+h.parent.y)/2+","+h.x+" "+(h.y+h.parent.y)/2+","+h.parent.x+" "+h.parent.y+","+h.parent.x}s(d,"linkHorizontal");function f(h){return i?a(h):d(h)}s(f,"diagonal");function c(h,v){let S=(h-90)/180*Math.PI,I=v;return[I*Math.cos(S),I*Math.sin(S)]}s(c,"project");function x(h){return"M"+c(h.x,h.y)+"C"+c(h.x,(h.y+h.parent.y)/2)+" "+c(h.parent.x,(h.y+h.parent.y)/2)+" "+c(h.parent.x,h.parent.y)}s(x,"radialDiagonal");let _=this._renderCount?500:0,m=this._renderElement.selectAll(".link").data(p);m.enter().append("path").attr("class","link").attr("d",this.radial()?x:f),m.transition().duration(_).attr("d",this.radial()?x:f),m.exit().remove();let g=this.circleRadius()+2;function y(h){return r.radial()?"rotate("+(h.x-90)+")translate("+h.y+")":r.orientation()==="horizontal"?"translate("+h.y+","+h.x+")":"translate("+h.x+","+h.y+")"}s(y,"nodeTransform");let b=this._renderElement.selectAll(".node").data(l);b.transition().duration(_).attr("transform",y);let k=b.enter().append("g").attr("class","node").attr("transform",y).call(this._selection.enter.bind(this._selection)).on("click",function(h){let v=h;for(;v.children;)v=v.children[0];h.depth>0&&(v.origRows?r.click(r.rowToObj(v.origRows[0]),r.mappings()[h.depth-1].column(),!0):r.click(v.data,r.mappings()[h.depth-1].column(),!0))}).on("dblclick",function(h){let v=h;for(;v.children;)v=v.children[0];h.depth>0&&(v.origRows?r.dblclick(r.rowToObj(v.origRows[0]),r.mappings()[h.depth-1].column(),!0):r.dblclick(v.data,r.mappings()[h.depth-1].column(),!0))}).each(function(){let h=pr(this);h.append("circle"),h.append("text")});k.merge(b).select("circle").attr("r",this.circleRadius()).style("fill",function(h){return r._palette(h.data.label)}).append("title").text(function(h){return h.data.label}),k.merge(b).select("text").attr("dx",function(h){return r.radial()?h.children?h.x<180?-g:g:h.x<180?g:-g:i?h.children?g:-g:h.children?-g:g}).attr("dy","0.25em").style("text-anchor",function(h){return r.radial()?h.children?h.x<180?"end":"start":h.x<180?"start":"end":i?h.children?"start":"end":h.children?"end":"start"}).attr("transform",function(h){return r.radial()?h.x<180?null:"rotate(180)":i?"rotate(-66)":null}).text(function(h){return h.data.label}),b.exit().remove(),this._renderCount||r.zoomToFit()}};E.prototype._class+=" tree_Dendrogram";E.prototype.implements(bt.prototype);E.prototype.mixin(vt.SimpleSelectionMixin);E.prototype.Column=re;E.prototype.publish("paletteID","default","set","Color palette for this widget",E.prototype._palette.switch(),{tags:["Basic","Shared"]});E.prototype.publish("useClonedPalette",!1,"boolean","Enable or disable using a cloned palette",null,{tags:["Intermediate","Shared"]});E.prototype.publish("mappings",[],"propertyArray","Source Columns",null,{autoExpand:re});E.prototype.publish("circleRadius",4.5,"number","Text offset from circle");E.prototype.publish("separation",240,"number","Leaf Separation");E.prototype.publish("dendrogram",!0,"boolean","Dendrogram");E.prototype.publish("radial",!1,"boolean","Radial");E.prototype.publish("orientation","horizontal","set","Orientation",["horizontal","vertical"],{tags:["Private"],disable:s(t=>t.radial(),"disable")});import{HTMLWidget as hr,Palette as kt,Platform as dr,select as wt,Utility as fr}from"@hpcc-js/common";import{max as St}from"@hpcc-js/common";var P=class extends hr{static{s(this,"DirectoryTree")}constructor(){super()}flattenData(e){let n=this,r=L(e),i=[];return this.omitRoot()?r.children&&r.children.forEach(o):o(r),i;function o(u){let l=u.data.markers&&u.data.markers.length?u.data.markers.length:"";i.push({label:u.data.label,depth:u.depth-(n.omitRoot()?1:0),content:u.data.content,isFolder:!!u.data.children,iconClass:u.data.iconClass,color:u.data.color,bold:u.data.bold,weightValue:l,markers:u.data.markers,selected:u.data.selected}),u.children&&u.children.forEach(o)}s(o,"visitNode")}iconClass(e){return e.label==="error"?"fa fa-exclamation":e.isFolder?this.folderIconOpen():this.textFileIcon()}calcRequiredWidth(){let e=this.flattenData(this.data()),n=0,r=this.rowItemPadding(),i=this.iconSize()+r*2,o=dr.getScrollbarWidth();return e.forEach(u=>{let l=u.depth*i+r*2,a=fr.textSize(u.label,this.fontFamily(),this.fontSize(),!!u.bold).width+r*2+i+l+o;n<a&&(n=a)}),n}rowClick(e,n){}enter(e,n){super.enter(e,n),n.style("width","100%").style("height","100%")}update(e,n){super.update(e,n),this._palette=this._palette.switch(this.paletteID()),n.style("overflow-y",this.verticalScroll()?"scroll":null);let r=this.flattenData(this.data()),i=St(r,m=>Number(m.weightValue));r.forEach(m=>{m.weightValue?m.weightColor=this._palette(m.weightValue,1,i):m.weightColor="transparent"});let o=this,u=this.rowItemPadding(),l=this.iconSize()+u,p=Math.max(o.iconSize(),o.fontSize()),a=n.selectAll(".directory-row").data(r),d=this.fontFamily(),f=this.fontSize(),c=St(r,m=>this.textSize(m.weightValue,d,f).width),x=`${u}px ${u}px ${u/2}px ${u}px`;a.enter().append("div").attr("class",m=>`directory-row directory-row-depth-${m.depth}`).style("display","flex").style("cursor","pointer").each(function(m){let g=wt(this),y=m.color?m.color:o.fontColor(),b=m.weightColor?m.weightColor:"transparent",k=kt.textColor(b),h=g.append("div").attr("class","row-weight").style("padding",x).style("color",k).style("box-shadow",`inset 0 0 100px ${b}`).style("font-weight",m.bold?"bold":"normal").style("font-family",d).style("font-size",f+"px").text(m.weightValue).attr("title",m.weightValue).style("overflow","hidden").style("width",c+u*2+"px").style("text-overflow","ellipsis").style("text-align","right").style("line-height",p+"px");g.append("div").attr("class","row-depth").style("width",o.depthSize()*m.depth+"px").style("opacity",1).style("line-height",p+"px");let v=g.append("div").attr("class","row-icon "+(m.iconClass?m.iconClass:o.iconClass(m))).style("width",l+"px").style("height",p+"px").style("color",y).style("background-color",m.selected?o.selectionBackgroundColor():"transparent").style("font-size",o.iconSize()+"px").style("padding",x).style("line-height",p+"px"),S=g.append("div").attr("class","row-label").style("padding",x).style("color",y).style("background-color",m.selected?o.selectionBackgroundColor():"transparent").style("font-weight",m.bold?"bold":"normal").style("font-family",o.fontFamily()).style("font-size",o.fontSize()+"px").text(m.label).attr("title",m.label).style("flex",1).style("overflow","hidden").style("text-overflow","ellipsis").style("line-height",p+"px");g.on("mouseenter",()=>{S.style("font-weight","bold")}).on("mouseleave",()=>{S.style("font-weight",m.bold?"bold":"normal")}),h.on("mouseenter",()=>{o.weight_mouseenter(m)}).on("mouseleave",()=>{o.weight_mouseleave(m)}),m.isFolder?g.on("click",function(I){let z=this.nextSibling,T=g.classed("folder-closed");for(T?(g.classed("folder-closed",!1),g.classed("folder-open",!0),v.attr("class","row-icon "+o.folderIconOpen())):(g.classed("folder-closed",!0),g.classed("folder-open",!1),v.attr("class","row-icon "+o.folderIconClosed()));z!==null;)wt(z).datum().depth>I.depth?(z.style.display=T?"flex":"none",z=z.nextSibling):z=null}):g.on("click",()=>{n.selectAll(".row-label").style("background-color","transparent"),n.selectAll(".row-icon").style("background-color","transparent"),v.style("background-color",o.selectionBackgroundColor()),S.style("background-color",o.selectionBackgroundColor());let I=m.label.split(".").pop().toLowerCase();o.rowClick(I==="json"?JSON.stringify(JSON.parse(m.content),null,4):m.content,m.markers)})}).merge(a).style("background-color",o.backgroundColor()),a.exit().remove()}weight_mouseenter(e){}weight_mouseleave(e){}};P.prototype._class+=" tree_DirectoryTree";P.prototype._palette=kt.rainbow("Blues");P.prototype.publish("depthSize",14,"number","Width of indentation per file or folder depth (pixels)");P.prototype.publish("paletteID","Blues","set","Color palette for the weight backgrounds",P.prototype._palette.switch(),{tags:["Basic"]});P.prototype.publish("omitRoot",!1,"boolean","If true, root node will not display");P.prototype.publish("rowItemPadding",2,"number","Top, bottom, left and right row item padding");P.prototype.publish("selectionBackgroundColor","#CCC","html-color","Background color of selected directory rows");P.prototype.publish("backgroundColor","#FFF","html-color","Directory item background color");P.prototype.publish("fontColor","#000","html-color","Directory item font color");P.prototype.publish("fontFamily","Arial","string","Directory item font family");P.prototype.publish("fontSize",12,"number","Directory item font size (pixels)");P.prototype.publish("iconSize",12,"number","Directory folder and file icon size (pixels)");P.prototype.publish("folderIconOpen","fa fa-folder-open","string","Open folder icon class");P.prototype.publish("folderIconClosed","fa fa-folder","string","Closed folder icon class");P.prototype.publish("textFileIcon","fa fa-file-text-o","string","Text file icon class");P.prototype.publish("verticalScroll",!0,"boolean","If true, vertical scroll bar will be shown");import{ITree as Ct}from"@hpcc-js/api";import{PropertyExt as mr,SVGZoomWidget as gr,Utility as Dt}from"@hpcc-js/common";import{select as yr}from"@hpcc-js/common";(function(){if(!document.getElementById("f8ec8ea8")){var t=document.createElement("style");t.id="f8ec8ea8",t.textContent=`\uFEFF.tree_Indented .node rect {
60
- cursor: pointer;
61
- fill: #fff;
62
- stroke: #3182bd;
63
- stroke-width: 1px;
737
+ var squarify_default = (function custom(ratio) {
738
+ function squarify(parent, x0, y0, x1, y1) {
739
+ squarifyRatio(ratio, parent, x0, y0, x1, y1);
740
+ }
741
+ squarify.ratio = function(x) {
742
+ return custom((x = +x) > 1 ? x : 1);
743
+ };
744
+ return squarify;
745
+ })(phi);
746
+
747
+ //#endregion
748
+ //#region node_modules/d3-hierarchy/src/treemap/index.js
749
+ function treemap_default() {
750
+ var tile = squarify_default, round = false, dx = 1, dy = 1, paddingStack = [0], paddingInner = constantZero, paddingTop = constantZero, paddingRight = constantZero, paddingBottom = constantZero, paddingLeft = constantZero;
751
+ function treemap(root) {
752
+ root.x0 = root.y0 = 0;
753
+ root.x1 = dx;
754
+ root.y1 = dy;
755
+ root.eachBefore(positionNode);
756
+ paddingStack = [0];
757
+ if (round) root.eachBefore(round_default);
758
+ return root;
759
+ }
760
+ function positionNode(node) {
761
+ var p = paddingStack[node.depth], x0 = node.x0 + p, y0 = node.y0 + p, x1 = node.x1 - p, y1 = node.y1 - p;
762
+ if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
763
+ if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
764
+ node.x0 = x0;
765
+ node.y0 = y0;
766
+ node.x1 = x1;
767
+ node.y1 = y1;
768
+ if (node.children) {
769
+ p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
770
+ x0 += paddingLeft(node) - p;
771
+ y0 += paddingTop(node) - p;
772
+ x1 -= paddingRight(node) - p;
773
+ y1 -= paddingBottom(node) - p;
774
+ if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
775
+ if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
776
+ tile(node, x0, y0, x1, y1);
777
+ }
778
+ }
779
+ treemap.round = function(x) {
780
+ return arguments.length ? (round = !!x, treemap) : round;
781
+ };
782
+ treemap.size = function(x) {
783
+ return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
784
+ };
785
+ treemap.tile = function(x) {
786
+ return arguments.length ? (tile = required(x), treemap) : tile;
787
+ };
788
+ treemap.padding = function(x) {
789
+ return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
790
+ };
791
+ treemap.paddingInner = function(x) {
792
+ return arguments.length ? (paddingInner = typeof x === "function" ? x : constant_default$1(+x), treemap) : paddingInner;
793
+ };
794
+ treemap.paddingOuter = function(x) {
795
+ return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
796
+ };
797
+ treemap.paddingTop = function(x) {
798
+ return arguments.length ? (paddingTop = typeof x === "function" ? x : constant_default$1(+x), treemap) : paddingTop;
799
+ };
800
+ treemap.paddingRight = function(x) {
801
+ return arguments.length ? (paddingRight = typeof x === "function" ? x : constant_default$1(+x), treemap) : paddingRight;
802
+ };
803
+ treemap.paddingBottom = function(x) {
804
+ return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant_default$1(+x), treemap) : paddingBottom;
805
+ };
806
+ treemap.paddingLeft = function(x) {
807
+ return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant_default$1(+x), treemap) : paddingLeft;
808
+ };
809
+ return treemap;
810
+ }
811
+
812
+ //#endregion
813
+ //#region node_modules/d3-hierarchy/src/treemap/binary.js
814
+ function binary_default(parent, x0, y0, x1, y1) {
815
+ var nodes = parent.children, i, n = nodes.length, sum, sums = new Array(n + 1);
816
+ for (sums[0] = sum = i = 0; i < n; ++i) sums[i + 1] = sum += nodes[i].value;
817
+ partition(0, n, parent.value, x0, y0, x1, y1);
818
+ function partition(i$1, j, value, x0$1, y0$1, x1$1, y1$1) {
819
+ if (i$1 >= j - 1) {
820
+ var node = nodes[i$1];
821
+ node.x0 = x0$1, node.y0 = y0$1;
822
+ node.x1 = x1$1, node.y1 = y1$1;
823
+ return;
824
+ }
825
+ var valueOffset = sums[i$1], valueTarget = value / 2 + valueOffset, k = i$1 + 1, hi = j - 1;
826
+ while (k < hi) {
827
+ var mid = k + hi >>> 1;
828
+ if (sums[mid] < valueTarget) k = mid + 1;
829
+ else hi = mid;
830
+ }
831
+ if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i$1 + 1 < k) --k;
832
+ var valueLeft = sums[k] - valueOffset, valueRight = value - valueLeft;
833
+ if (x1$1 - x0$1 > y1$1 - y0$1) {
834
+ var xk = (x0$1 * valueRight + x1$1 * valueLeft) / value;
835
+ partition(i$1, k, valueLeft, x0$1, y0$1, xk, y1$1);
836
+ partition(k, j, valueRight, xk, y0$1, x1$1, y1$1);
837
+ } else {
838
+ var yk = (y0$1 * valueRight + y1$1 * valueLeft) / value;
839
+ partition(i$1, k, valueLeft, x0$1, y0$1, x1$1, yk);
840
+ partition(k, j, valueRight, x0$1, yk, x1$1, y1$1);
841
+ }
842
+ }
64
843
  }
65
844
 
66
- .tree_Indented .node text {
67
- font: 10px sans-serif;
68
- pointer-events: none;
845
+ //#endregion
846
+ //#region node_modules/d3-hierarchy/src/treemap/sliceDice.js
847
+ function sliceDice_default(parent, x0, y0, x1, y1) {
848
+ (parent.depth & 1 ? slice_default : dice_default)(parent, x0, y0, x1, y1);
69
849
  }
70
850
 
71
- .tree_Indented path.link {
72
- fill: none;
73
- stroke: #9ecae1;
74
- stroke-width: 1.5px;
75
- }`,document.head.appendChild(t)}})();var ne=class extends mr{static{s(this,"IndentedColumn")}_owner;constructor(){super()}owner(e){return arguments.length?(this._owner=e,this):this._owner}valid(){return!!this.column()}column};ne.prototype._class+=" tree_Dendrogram.IndentedColumn";ne.prototype.publish("column",null,"set","Field",function(){return this._owner?this._owner.columns():[]},{optional:!0});var Z=class extends gr{static{s(this,"Indented")}Column;_d3Tree;_xml;_svgLinks;_svgNodes;_treeData;_collapsed={};constructor(){super(),Ct.call(this),Dt.SimpleSelectionMixin.call(this),this._drawStartPos="origin",this._d3Tree=te()}xmlToData(e,n=""){if(DOMParser){let i=new DOMParser().parseFromString(e,"text/xml");return zt(i,n).children[0]}return[]}xml(e){return arguments.length?(this._xml=e,this.data(this.xmlToData(this._xml)),this):this._xml}IndentedData(){if(this.data().length===0)return[];if(this.xmlColumn_exists()){let n=this.columns().indexOf(this.xmlColumn()),r={label:this.xmlColumn(),children:this.data().map(function(i,o){return this.xmlToData(i[n],"["+o+"]")},this)};return r.children.length===1?r.children[0]:r}else{if(!this.mappings().filter(i=>i.valid()).length)return this.data();let r={key:"root",values:this._db.rollupView(this.mappings().map(function(i){return i.column()})).entries()};return e(r)}function e(n){if(n.values instanceof Array){let r=n.values.filter(function(o){return!(o instanceof Array)}).map(function(o){return e(o)}),i={label:n.key};return r.length?i.children=r:i.size=22,i}return{label:n.key,size:n.values.aggregate,origRows:n.values}}s(e,"formatData")}enter(e,n){super.enter(e,n),this._svgLinks=this._renderElement.append("g"),this._svgNodes=this._renderElement.append("g"),this._selection.widgetElement(this._svgNodes)}_prevDataChecksum;update(e,n){super.update(e,n);let r=this;this._d3Tree.nodeSize([0,this.barHeight()]);let i=this._db.dataChecksum();this._prevDataChecksum!==i&&(this._treeData=this.IndentedData(),this._prevDataChecksum=i);function o(y){return(y.parent?o(y.parent)+".":"")+y.data.label}s(o,"getID");let u=L(this.data()).sum(function(y){return y.size||50}).each(y=>{this._collapsed[o(y)]&&delete y.children}),l=this._d3Tree(u).descendants(),p=this._d3Tree(u).descendants().slice(1),a=0;u.eachBefore(y=>{y.x=a*r.barHeight(),++a});let d=this.barHeight()-4,f=this._renderCount?500:0,c=this._svgLinks.selectAll(".link").data(p,function(y){return o(y)});c.enter().append("path").attr("class","link").attr("d",x),c.transition().duration(f).attr("d",x),c.exit().remove();function x(y){return"M"+y.parent.y+","+y.parent.x+"V"+y.x+", H"+y.y}s(x,"elbow");let _=this._svgNodes.selectAll(".node").data(l,function(y){return o(y)});_.transition().duration(f).attr("transform",function(y){return"translate("+y.y+","+y.x+")"});let m=_.enter().append("g").attr("class","node").attr("transform",function(y){return"translate("+y.y+","+y.x+")"}).call(this._selection.enter.bind(this._selection)).each(function(){let y=yr(this);y.append("rect").attr("height",d).attr("width",d).on("click",function(b){r._collapsed[o(b)]?delete r._collapsed[o(b)]:b.children&&(r._collapsed[o(b)]=!0),r.lazyRender()}),y.append("text")}).style("opacity",0);m.transition().style("opacity",1),m.merge(_).select("rect").attr("x",-d/2).attr("y",-d/2).style("fill",g),m.merge(_).select("text").attr("dx",d/2+4+"px").attr("dy","0.33em").text(function(y){return y.data.label}),_.exit().transition().style("opacity",0).remove(),this._renderCount||r.zoomToFit();function g(y){return r._collapsed[o(y)]?"#3182bd":y.children?"#c6dbef":"#fd8d3c"}s(g,"color")}};Z.prototype._class+=" tree_Indented";Z.prototype.implements(Ct.prototype);Z.prototype.mixin(Dt.SimpleSelectionMixin);Z.prototype.Column=ne;Z.prototype.publish("xmlColumn",null,"set","Field",function(){return this.columns()},{optional:!0});Z.prototype.publish("mappings",[],"propertyArray","Source Columns",null,{autoExpand:ne,disable:s(t=>t.xmlColumn_exists(),"disable")});Z.prototype.publish("barHeight",16,"number","Bar height");function zt(t,e=""){let n={id:e,label:"",attributes:{},children:[]};if(n.label=t.nodeName,t.nodeType===1){if(t.attributes.length>0)for(let r=0;r<t.attributes.length;r++){let i=t.attributes.item(r);n.attributes[i.nodeName]=i.nodeValue}}else t.nodeType===3&&(n.label=t.nodeValue);if(t.hasChildNodes())for(let r=0;r<t.childNodes.length;r++){let i=t.childNodes.item(r),o=zt(i,e+"["+n.children.length+"]");n.children.push(o)}return n}s(zt,"xmlToJson");import{ITree as At}from"@hpcc-js/api";import{d3Event as Cr,select as Dr,SVGWidget as Pt}from"@hpcc-js/common";import{interpolate as it}from"@hpcc-js/common";import{scaleLinear as zr,scaleSqrt as Tr}from"@hpcc-js/common";var Ke=Math.PI,Qe=2*Ke,X=1e-6,xr=Qe-X;function et(){this._x0=this._y0=this._x1=this._y1=null,this._=""}s(et,"Path");function Tt(){return new et}s(Tt,"path");et.prototype=Tt.prototype={constructor:et,moveTo:s(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:s(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:s(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:s(function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},"quadraticCurveTo"),bezierCurveTo:s(function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},"bezierCurveTo"),arcTo:s(function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var o=this._x1,u=this._y1,l=n-t,p=r-e,a=o-t,d=u-e,f=a*a+d*d;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>X)if(!(Math.abs(d*l-p*a)>X)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var c=n-o,x=r-u,_=l*l+p*p,m=c*c+x*x,g=Math.sqrt(_),y=Math.sqrt(f),b=i*Math.tan((Ke-Math.acos((_+f-m)/(2*g*y)))/2),k=b/y,h=b/g;Math.abs(k-1)>X&&(this._+="L"+(t+k*a)+","+(e+k*d)),this._+="A"+i+","+i+",0,0,"+ +(d*c>a*x)+","+(this._x1=t+h*l)+","+(this._y1=e+h*p)}},"arcTo"),arc:s(function(t,e,n,r,i,o){t=+t,e=+e,n=+n,o=!!o;var u=n*Math.cos(r),l=n*Math.sin(r),p=t+u,a=e+l,d=1^o,f=o?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);this._x1===null?this._+="M"+p+","+a:(Math.abs(this._x1-p)>X||Math.abs(this._y1-a)>X)&&(this._+="L"+p+","+a),n&&(f<0&&(f=f%Qe+Qe),f>xr?this._+="A"+n+","+n+",0,1,"+d+","+(t-u)+","+(e-l)+"A"+n+","+n+",0,1,"+d+","+(this._x1=p)+","+(this._y1=a):f>X&&(this._+="A"+n+","+n+",0,"+ +(f>=Ke)+","+d+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},"arc"),rect:s(function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},"rect"),toString:s(function(){return this._},"toString")};var tt=Tt;function B(t){return s(function(){return t},"constant")}s(B,"default");var rt=Math.abs,A=Math.atan2,j=Math.cos,It=Math.max,Se=Math.min,V=Math.sin,Y=Math.sqrt,N=1e-12,ie=Math.PI,ue=ie/2,Mt=2*ie;function Rt(t){return t>1?0:t<-1?ie:Math.acos(t)}s(Rt,"acos");function nt(t){return t>=1?ue:t<=-1?-ue:Math.asin(t)}s(nt,"asin");function _r(t){return t.innerRadius}s(_r,"arcInnerRadius");function br(t){return t.outerRadius}s(br,"arcOuterRadius");function vr(t){return t.startAngle}s(vr,"arcStartAngle");function wr(t){return t.endAngle}s(wr,"arcEndAngle");function Sr(t){return t&&t.padAngle}s(Sr,"arcPadAngle");function kr(t,e,n,r,i,o,u,l){var p=n-t,a=r-e,d=u-i,f=l-o,c=f*p-d*a;if(!(c*c<N))return c=(d*(e-o)-f*(t-i))/c,[t+c*p,e+c*a]}s(kr,"intersect");function ke(t,e,n,r,i,o,u){var l=t-n,p=e-r,a=(u?o:-o)/Y(l*l+p*p),d=a*p,f=-a*l,c=t+d,x=e+f,_=n+d,m=r+f,g=(c+_)/2,y=(x+m)/2,b=_-c,k=m-x,h=b*b+k*k,v=i-o,S=c*m-_*x,I=(k<0?-1:1)*Y(It(0,v*v*h-S*S)),z=(S*k-b*I)/h,T=(-S*b-k*I)/h,M=(S*k+b*I)/h,R=(-S*b+k*I)/h,w=z-g,C=T-y,G=M-g,U=R-y;return w*w+C*C>G*G+U*U&&(z=M,T=R),{cx:z,cy:T,x01:-d,y01:-f,x11:z*(i/v-1),y11:T*(i/v-1)}}s(ke,"cornerTangents");function Ce(){var t=_r,e=br,n=B(0),r=null,i=vr,o=wr,u=Sr,l=null;function p(){var a,d,f=+t.apply(this,arguments),c=+e.apply(this,arguments),x=i.apply(this,arguments)-ue,_=o.apply(this,arguments)-ue,m=rt(_-x),g=_>x;if(l||(l=a=tt()),c<f&&(d=c,c=f,f=d),!(c>N))l.moveTo(0,0);else if(m>Mt-N)l.moveTo(c*j(x),c*V(x)),l.arc(0,0,c,x,_,!g),f>N&&(l.moveTo(f*j(_),f*V(_)),l.arc(0,0,f,_,x,g));else{var y=x,b=_,k=x,h=_,v=m,S=m,I=u.apply(this,arguments)/2,z=I>N&&(r?+r.apply(this,arguments):Y(f*f+c*c)),T=Se(rt(c-f)/2,+n.apply(this,arguments)),M=T,R=T,w,C;if(z>N){var G=nt(z/f*V(I)),U=nt(z/c*V(I));(v-=G*2)>N?(G*=g?1:-1,k+=G,h-=G):(v=0,k=h=(x+_)/2),(S-=U*2)>N?(U*=g?1:-1,y+=U,b-=U):(S=0,y=b=(x+_)/2)}var K=c*j(y),Q=c*V(y),ce=f*j(h),pe=f*V(h);if(T>N){var he=c*j(b),de=c*V(b),De=f*j(k),ze=f*V(k),F;if(m<ie&&(F=kr(K,Q,De,ze,he,de,ce,pe))){var Te=K-F[0],Ie=Q-F[1],Me=he-F[0],Re=de-F[1],ot=1/V(Rt((Te*Me+Ie*Re)/(Y(Te*Te+Ie*Ie)*Y(Me*Me+Re*Re)))/2),at=Y(F[0]*F[0]+F[1]*F[1]);M=Se(T,(f-at)/(ot-1)),R=Se(T,(c-at)/(ot+1))}}S>N?R>N?(w=ke(De,ze,K,Q,c,R,g),C=ke(he,de,ce,pe,c,R,g),l.moveTo(w.cx+w.x01,w.cy+w.y01),R<T?l.arc(w.cx,w.cy,R,A(w.y01,w.x01),A(C.y01,C.x01),!g):(l.arc(w.cx,w.cy,R,A(w.y01,w.x01),A(w.y11,w.x11),!g),l.arc(0,0,c,A(w.cy+w.y11,w.cx+w.x11),A(C.cy+C.y11,C.cx+C.x11),!g),l.arc(C.cx,C.cy,R,A(C.y11,C.x11),A(C.y01,C.x01),!g))):(l.moveTo(K,Q),l.arc(0,0,c,y,b,!g)):l.moveTo(K,Q),!(f>N)||!(v>N)?l.lineTo(ce,pe):M>N?(w=ke(ce,pe,he,de,f,-M,g),C=ke(K,Q,De,ze,f,-M,g),l.lineTo(w.cx+w.x01,w.cy+w.y01),M<T?l.arc(w.cx,w.cy,M,A(w.y01,w.x01),A(C.y01,C.x01),!g):(l.arc(w.cx,w.cy,M,A(w.y01,w.x01),A(w.y11,w.x11),!g),l.arc(0,0,f,A(w.cy+w.y11,w.cx+w.x11),A(C.cy+C.y11,C.cx+C.x11),g),l.arc(C.cx,C.cy,M,A(C.y11,C.x11),A(C.y01,C.x01),!g))):l.arc(0,0,f,h,k,g)}if(l.closePath(),a)return l=null,a+""||null}return s(p,"arc"),p.centroid=function(){var a=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,d=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-ie/2;return[j(d)*a,V(d)*a]},p.innerRadius=function(a){return arguments.length?(t=typeof a=="function"?a:B(+a),p):t},p.outerRadius=function(a){return arguments.length?(e=typeof a=="function"?a:B(+a),p):e},p.cornerRadius=function(a){return arguments.length?(n=typeof a=="function"?a:B(+a),p):n},p.padRadius=function(a){return arguments.length?(r=a==null?null:typeof a=="function"?a:B(+a),p):r},p.startAngle=function(a){return arguments.length?(i=typeof a=="function"?a:B(+a),p):i},p.endAngle=function(a){return arguments.length?(o=typeof a=="function"?a:B(+a),p):o},p.padAngle=function(a){return arguments.length?(u=typeof a=="function"?a:B(+a),p):u},p.context=function(a){return arguments.length?(l=a??null,p):l},p}s(Ce,"default");(function(){if(!document.getElementById("9deab9a1")){var t=document.createElement("style");t.id="9deab9a1",t.textContent=`.tree_Sunburst path {
76
- stroke: #fff;
77
- stroke-width:0.5px;
78
- fill-rule: evenodd;
851
+ //#endregion
852
+ //#region node_modules/d3-hierarchy/src/treemap/resquarify.js
853
+ var resquarify_default = (function custom(ratio) {
854
+ function resquarify(parent, x0, y0, x1, y1) {
855
+ if ((rows = parent._squarify) && rows.ratio === ratio) {
856
+ var rows, row, nodes, i, j = -1, n, m = rows.length, value = parent.value;
857
+ while (++j < m) {
858
+ row = rows[j], nodes = row.children;
859
+ for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
860
+ if (row.dice) dice_default(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
861
+ else slice_default(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
862
+ value -= row.value;
863
+ }
864
+ } else {
865
+ parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);
866
+ rows.ratio = ratio;
867
+ }
868
+ }
869
+ resquarify.ratio = function(x) {
870
+ return custom((x = +x) > 1 ? x : 1);
871
+ };
872
+ return resquarify;
873
+ })(phi);
874
+
875
+ //#endregion
876
+ //#region src/CirclePacking.ts
877
+ var CirclePacking = class extends SVGWidget {
878
+ diameter;
879
+ pack;
880
+ svg;
881
+ _focus;
882
+ circle;
883
+ view;
884
+ _node;
885
+ constructor() {
886
+ super();
887
+ ITree.call(this);
888
+ }
889
+ enter(_domNode, element) {
890
+ this.diameter = Math.min(this.width(), this.height());
891
+ this.pack = pack_default().size([this.diameter - 4, this.diameter - 4]).padding(1.5);
892
+ this.svg = element.append("g");
893
+ }
894
+ update(_domNode, _element) {
895
+ const context = this;
896
+ this.diameter = Math.min(this.width(), this.height());
897
+ this.pack.size([this.diameter - 4, this.diameter - 4]).padding(1.5);
898
+ this._palette = this._palette.switch(this.paletteID());
899
+ if (this.useClonedPalette()) this._palette = this._palette.cloneNotExists(this.paletteID() + "_" + this.id());
900
+ this.svg.selectAll("circle").remove();
901
+ this.svg.selectAll("text").remove();
902
+ const root = hierarchy(this.data()).sum(function(d) {
903
+ return d && d.size ? d.size : 1;
904
+ }).sort(function(a, b) {
905
+ return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;
906
+ });
907
+ this._focus = root;
908
+ this.pack(root);
909
+ this.circle = this.svg.selectAll("circle").data(root.descendants()).enter().append("circle").attr("class", function(d) {
910
+ return d.parent ? d.children ? "node" : "node leaf" : "node root";
911
+ }).style("fill", function(d) {
912
+ d.color = context.paletteDepthLevel_exists() && d.depth > context.paletteDepthLevel() ? rgb(d.parent.color)[context.paletteDepthVariant()](1) : context._palette(d.data.label);
913
+ return d.color;
914
+ }).on("click", function(d) {
915
+ context.click(d.data, null, null);
916
+ }).on("dblclick", function(d) {
917
+ if (this._focus !== d) context.zoom(d);
918
+ d3Event().stopPropagation();
919
+ });
920
+ this.circle.append("title").text(function(d) {
921
+ return d.data.label;
922
+ });
923
+ this.svg.selectAll("text").data(root.descendants()).enter().append("text").attr("class", "label").style("fill-opacity", function(d) {
924
+ return d.parent === root ? 1 : 0;
925
+ }).style("display", function(d) {
926
+ return d.parent === root ? null : "none";
927
+ }).text(function(d) {
928
+ return d.data.label + (context.showSize() && typeof d.data.size !== "undefined" ? " " + d.data.size : "");
929
+ });
930
+ this._node = this.svg.selectAll("circle,text");
931
+ this.zoomTo([
932
+ root.x,
933
+ root.y,
934
+ root.r * 2
935
+ ]);
936
+ }
937
+ zoom(newFocus) {
938
+ this._focus = newFocus;
939
+ const context = this;
940
+ const transition = this.svg.transition().duration(d3Event().altKey ? 7500 : 750).tween("zoom", function() {
941
+ const i = interpolateZoom(context.view, [
942
+ context._focus.x,
943
+ context._focus.y,
944
+ context._focus.r * 2
945
+ ]);
946
+ return function(t) {
947
+ context.zoomTo(i(t));
948
+ };
949
+ });
950
+ function showText(d) {
951
+ return d === context._focus && !d.children || d.parent === context._focus;
952
+ }
953
+ transition.selectAll("text").filter(function(d) {
954
+ return showText(d) || this.style.display === "inline";
955
+ }).style("fill-opacity", function(d) {
956
+ return showText(d) ? 1 : 0;
957
+ }).on("start", function(d) {
958
+ if (showText(d)) this.style.display = "inline";
959
+ }).on("end", function(d) {
960
+ if (!showText(d)) this.style.display = "none";
961
+ });
962
+ }
963
+ zoomTo(v) {
964
+ const k = this.diameter / v[2];
965
+ this.view = v;
966
+ this._node.attr("transform", function(d) {
967
+ return "translate(" + (d.x - v[0]) * k + "," + (d.y - v[1]) * k + ")";
968
+ });
969
+ this.circle.attr("r", function(d) {
970
+ return d.r * k;
971
+ });
972
+ }
973
+ };
974
+ CirclePacking.prototype._class += " tree_CirclePacking";
975
+ CirclePacking.prototype.implements(ITree.prototype);
976
+ CirclePacking.prototype.publish("showSize", true, "boolean", "Show size along with label");
977
+ CirclePacking.prototype.publish("paletteDepthLevel", null, "number", "If not null then beyond this depth number the child node colors are based on parent", null, { optional: true });
978
+ CirclePacking.prototype.publish("paletteDepthVariant", "brighter", "set", "Determines paletteDepthLevel decendant color shade variant", ["brighter", "darker"], { disable: (w) => w.paletteDepthLevel_exists() });
979
+ CirclePacking.prototype.publish("paletteID", "default", "set", "Color palette for this widget", CirclePacking.prototype._palette.switch(), { tags: ["Basic", "Shared"] });
980
+ CirclePacking.prototype.publish("useClonedPalette", false, "boolean", "Enable or disable using a cloned palette", null, { tags: ["Intermediate", "Shared"] });
981
+
982
+ //#endregion
983
+ //#region src/Dendrogram.ts
984
+ var DendrogramColumn = class extends PropertyExt {
985
+ _owner;
986
+ constructor() {
987
+ super();
988
+ }
989
+ owner(_) {
990
+ if (!arguments.length) return this._owner;
991
+ this._owner = _;
992
+ return this;
993
+ }
994
+ valid() {
995
+ return !!this.column();
996
+ }
997
+ column;
998
+ };
999
+ DendrogramColumn.prototype._class += " tree_Dendrogram.DendrogramColumn";
1000
+ DendrogramColumn.prototype.publish("column", null, "set", "Field", function() {
1001
+ return this._owner ? this._owner.columns() : [];
1002
+ }, { optional: true });
1003
+ var Dendrogram = class extends SVGZoomWidget {
1004
+ Column;
1005
+ _d3LayoutCluster;
1006
+ _d3LayoutTree;
1007
+ _d3Layout;
1008
+ constructor() {
1009
+ super();
1010
+ ITree.call(this);
1011
+ Utility.SimpleSelectionMixin.call(this);
1012
+ this._drawStartPos = "origin";
1013
+ this._d3LayoutCluster = cluster_default();
1014
+ this._d3LayoutTree = tree_default();
1015
+ }
1016
+ dendrogramData() {
1017
+ if (this.data().length === 0) return [];
1018
+ if (!this.mappings().filter((mapping) => mapping.valid()).length) return this.data();
1019
+ return formatData({
1020
+ key: "root",
1021
+ values: this._db.rollupView(this.mappings().map(function(mapping) {
1022
+ return mapping.column();
1023
+ })).entries()
1024
+ });
1025
+ function formatData(node) {
1026
+ return {
1027
+ label: node.key,
1028
+ children: node.values.filter(function(value) {
1029
+ return !(value instanceof Array);
1030
+ }).map(function(value) {
1031
+ return formatData(value);
1032
+ }),
1033
+ origRows: node.values
1034
+ };
1035
+ }
1036
+ }
1037
+ enter(domNode, element) {
1038
+ super.enter(domNode, element);
1039
+ this._renderElement.attr("opacity", 0).transition().duration(500).attr("opacity", 1);
1040
+ this._selection.widgetElement(this._renderElement);
1041
+ }
1042
+ update(domNode, element) {
1043
+ super.update(domNode, element);
1044
+ const context = this;
1045
+ const isVertical = this.orientation() === "vertical";
1046
+ this._palette = this._palette.switch(this.paletteID());
1047
+ if (this.useClonedPalette()) this._palette = this._palette.cloneNotExists(this.paletteID() + "_" + this.id());
1048
+ this._d3Layout = this.dendrogram() ? this._d3LayoutCluster : this._d3LayoutTree;
1049
+ if (this.radial()) {
1050
+ this._d3Layout.size([360, this.separation() * 2]);
1051
+ this._d3Layout.separation(function separation(a, b) {
1052
+ return (a.parent === b.parent ? 1 : 2) / a.depth;
1053
+ });
1054
+ } else {
1055
+ this._d3Layout.nodeSize([14, this.separation()]);
1056
+ this._d3Layout.separation(function separation(a, b) {
1057
+ return a.parent === b.parent ? 1 : 2;
1058
+ });
1059
+ }
1060
+ const root = hierarchy(this.dendrogramData());
1061
+ this._d3Layout(root);
1062
+ const dataNodes = root.descendants();
1063
+ const links = root.descendants().slice(1);
1064
+ function linkVertical(d) {
1065
+ return "M" + d.parent.x + "," + d.parent.y + "C" + d.parent.x + "," + (d.parent.y + d.y) / 2 + " " + d.x + "," + (d.parent.y + d.y) / 2 + " " + d.x + "," + d.y;
1066
+ }
1067
+ function linkHorizontal(d) {
1068
+ return "M" + d.y + "," + d.x + "C" + (d.y + d.parent.y) / 2 + "," + d.x + " " + (d.y + d.parent.y) / 2 + "," + d.parent.x + " " + d.parent.y + "," + d.parent.x;
1069
+ }
1070
+ function diagonal(d) {
1071
+ return isVertical ? linkVertical(d) : linkHorizontal(d);
1072
+ }
1073
+ function project(x, y) {
1074
+ const angle = (x - 90) / 180 * Math.PI;
1075
+ const radius = y;
1076
+ return [radius * Math.cos(angle), radius * Math.sin(angle)];
1077
+ }
1078
+ function radialDiagonal(d) {
1079
+ return "M" + project(d.x, d.y) + "C" + project(d.x, (d.y + d.parent.y) / 2) + " " + project(d.parent.x, (d.y + d.parent.y) / 2) + " " + project(d.parent.x, d.parent.y);
1080
+ }
1081
+ const transitionDuration = this._renderCount ? 500 : 0;
1082
+ const lines = this._renderElement.selectAll(".link").data(links);
1083
+ lines.enter().append("path").attr("class", "link").attr("d", this.radial() ? radialDiagonal : diagonal);
1084
+ lines.transition().duration(transitionDuration).attr("d", this.radial() ? radialDiagonal : diagonal);
1085
+ lines.exit().remove();
1086
+ const textOffsetX = this.circleRadius() + 2;
1087
+ function nodeTransform(d) {
1088
+ if (context.radial()) return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")";
1089
+ return context.orientation() === "horizontal" ? "translate(" + d.y + "," + d.x + ")" : "translate(" + d.x + "," + d.y + ")";
1090
+ }
1091
+ const nodes = this._renderElement.selectAll(".node").data(dataNodes);
1092
+ nodes.transition().duration(transitionDuration).attr("transform", nodeTransform);
1093
+ const enterNodes = nodes.enter().append("g").attr("class", "node").attr("transform", nodeTransform).call(this._selection.enter.bind(this._selection)).on("click", function(d) {
1094
+ let tmp = d;
1095
+ while (tmp.children) tmp = tmp.children[0];
1096
+ if (d.depth > 0) if (tmp.origRows) context.click(context.rowToObj(tmp.origRows[0]), context.mappings()[d.depth - 1].column(), true);
1097
+ else context.click(tmp.data, context.mappings()[d.depth - 1].column(), true);
1098
+ }).on("dblclick", function(d) {
1099
+ let tmp = d;
1100
+ while (tmp.children) tmp = tmp.children[0];
1101
+ if (d.depth > 0) if (tmp.origRows) context.dblclick(context.rowToObj(tmp.origRows[0]), context.mappings()[d.depth - 1].column(), true);
1102
+ else context.dblclick(tmp.data, context.mappings()[d.depth - 1].column(), true);
1103
+ }).each(function() {
1104
+ const e = select(this);
1105
+ e.append("circle");
1106
+ e.append("text");
1107
+ });
1108
+ enterNodes.merge(nodes).select("circle").attr("r", this.circleRadius()).style("fill", function(d) {
1109
+ return context._palette(d.data.label);
1110
+ }).append("title").text(function(d) {
1111
+ return d.data.label;
1112
+ });
1113
+ enterNodes.merge(nodes).select("text").attr("dx", function(d) {
1114
+ if (context.radial()) if (d.children) return d.x < 180 ? -textOffsetX : textOffsetX;
1115
+ else return d.x < 180 ? textOffsetX : -textOffsetX;
1116
+ else if (isVertical) return d.children ? textOffsetX : -textOffsetX;
1117
+ return d.children ? -textOffsetX : textOffsetX;
1118
+ }).attr("dy", "0.25em").style("text-anchor", function(d) {
1119
+ if (context.radial()) if (d.children) return d.x < 180 ? "end" : "start";
1120
+ else return d.x < 180 ? "start" : "end";
1121
+ else if (isVertical) return d.children ? "start" : "end";
1122
+ return d.children ? "end" : "start";
1123
+ }).attr("transform", function(d) {
1124
+ if (context.radial()) return d.x < 180 ? null : "rotate(180)";
1125
+ else if (isVertical) return "rotate(-66)";
1126
+ return null;
1127
+ }).text(function(d) {
1128
+ return d.data.label;
1129
+ });
1130
+ nodes.exit().remove();
1131
+ if (!this._renderCount) context.zoomToFit();
1132
+ }
1133
+ };
1134
+ Dendrogram.prototype._class += " tree_Dendrogram";
1135
+ Dendrogram.prototype.implements(ITree.prototype);
1136
+ Dendrogram.prototype.mixin(Utility.SimpleSelectionMixin);
1137
+ Dendrogram.prototype.Column = DendrogramColumn;
1138
+ Dendrogram.prototype.publish("paletteID", "default", "set", "Color palette for this widget", Dendrogram.prototype._palette.switch(), { tags: ["Basic", "Shared"] });
1139
+ Dendrogram.prototype.publish("useClonedPalette", false, "boolean", "Enable or disable using a cloned palette", null, { tags: ["Intermediate", "Shared"] });
1140
+ Dendrogram.prototype.publish("mappings", [], "propertyArray", "Source Columns", null, { autoExpand: DendrogramColumn });
1141
+ Dendrogram.prototype.publish("circleRadius", 4.5, "number", "Text offset from circle");
1142
+ Dendrogram.prototype.publish("separation", 240, "number", "Leaf Separation");
1143
+ Dendrogram.prototype.publish("dendrogram", true, "boolean", "Dendrogram");
1144
+ Dendrogram.prototype.publish("radial", false, "boolean", "Radial");
1145
+ Dendrogram.prototype.publish("orientation", "horizontal", "set", "Orientation", ["horizontal", "vertical"], {
1146
+ tags: ["Private"],
1147
+ disable: (w) => w.radial()
1148
+ });
1149
+
1150
+ //#endregion
1151
+ //#region src/DirectoryTree.ts
1152
+ var DirectoryTree = class extends HTMLWidget {
1153
+ constructor() {
1154
+ super();
1155
+ }
1156
+ flattenData(json) {
1157
+ const context = this;
1158
+ const root = hierarchy(json);
1159
+ const ret = [];
1160
+ if (!this.omitRoot()) visitNode(root);
1161
+ else if (root.children) root.children.forEach(visitNode);
1162
+ return ret;
1163
+ function visitNode(node) {
1164
+ const weightValue = node.data.markers && node.data.markers.length ? node.data.markers.length : "";
1165
+ ret.push({
1166
+ label: node.data.label,
1167
+ depth: node.depth - (context.omitRoot() ? 1 : 0),
1168
+ content: node.data.content,
1169
+ isFolder: !!node.data.children,
1170
+ iconClass: node.data.iconClass,
1171
+ color: node.data.color,
1172
+ bold: node.data.bold,
1173
+ weightValue,
1174
+ markers: node.data.markers,
1175
+ selected: node.data.selected
1176
+ });
1177
+ if (node.children) node.children.forEach(visitNode);
1178
+ }
1179
+ }
1180
+ iconClass(d) {
1181
+ if (d.label === "error") return "fa fa-exclamation";
1182
+ if (d.isFolder) return this.folderIconOpen();
1183
+ return this.textFileIcon();
1184
+ }
1185
+ calcRequiredWidth() {
1186
+ const flatData = this.flattenData(this.data());
1187
+ let widest = 0;
1188
+ const padding = this.rowItemPadding();
1189
+ const iconWidth = this.iconSize() + padding * 2;
1190
+ const scrollbarWidth = Platform.getScrollbarWidth();
1191
+ flatData.forEach((row) => {
1192
+ const offsetWidth = row.depth * iconWidth + padding * 2;
1193
+ const totalWidth = Utility.textSize(row.label, this.fontFamily(), this.fontSize(), !!row.bold).width + padding * 2 + iconWidth + offsetWidth + scrollbarWidth;
1194
+ if (widest < totalWidth) widest = totalWidth;
1195
+ });
1196
+ return widest;
1197
+ }
1198
+ rowClick(str, markers) {}
1199
+ enter(domNode, element) {
1200
+ super.enter(domNode, element);
1201
+ element.style("width", "100%").style("height", "100%");
1202
+ }
1203
+ update(domNode, element) {
1204
+ super.update(domNode, element);
1205
+ this._palette = this._palette.switch(this.paletteID());
1206
+ element.style("overflow-y", this.verticalScroll() ? "scroll" : null);
1207
+ const flatData = this.flattenData(this.data());
1208
+ const maxWeightValue = max(flatData, (n) => Number(n.weightValue));
1209
+ flatData.forEach((d) => {
1210
+ if (!d.weightValue) d.weightColor = "transparent";
1211
+ else d.weightColor = this._palette(d.weightValue, 1, maxWeightValue);
1212
+ });
1213
+ const context = this;
1214
+ const padding = this.rowItemPadding();
1215
+ const iconWidth = this.iconSize() + padding;
1216
+ const lineHeight = Math.max(context.iconSize(), context.fontSize());
1217
+ const rowSelection = element.selectAll(".directory-row").data(flatData);
1218
+ const fontFamily = this.fontFamily();
1219
+ const fontSize = this.fontSize();
1220
+ const maxWeightWidth = max(flatData, (d) => this.textSize(d.weightValue, fontFamily, fontSize).width);
1221
+ const rowItemPadding = `${padding}px ${padding}px ${padding / 2}px ${padding}px`;
1222
+ rowSelection.enter().append("div").attr("class", (d) => `directory-row directory-row-depth-${d.depth}`).style("display", "flex").style("cursor", "pointer").each(function(d) {
1223
+ const rowDiv = select(this);
1224
+ const fontColor = d.color ? d.color : context.fontColor();
1225
+ const weightColor = d.weightColor ? d.weightColor : "transparent";
1226
+ const weightFontColor = Palette.textColor(weightColor);
1227
+ const weightDiv = rowDiv.append("div").attr("class", "row-weight").style("padding", rowItemPadding).style("color", weightFontColor).style("box-shadow", `inset 0 0 100px ${weightColor}`).style("font-weight", d.bold ? "bold" : "normal").style("font-family", fontFamily).style("font-size", fontSize + "px").text(d.weightValue).attr("title", d.weightValue).style("overflow", "hidden").style("width", maxWeightWidth + padding * 2 + "px").style("text-overflow", "ellipsis").style("text-align", "right").style("line-height", lineHeight + "px");
1228
+ rowDiv.append("div").attr("class", "row-depth").style("width", context.depthSize() * d.depth + "px").style("opacity", 1).style("line-height", lineHeight + "px");
1229
+ const iconDiv = rowDiv.append("div").attr("class", "row-icon " + (d.iconClass ? d.iconClass : context.iconClass(d))).style("width", iconWidth + "px").style("height", lineHeight + "px").style("color", fontColor).style("background-color", d.selected ? context.selectionBackgroundColor() : "transparent").style("font-size", context.iconSize() + "px").style("padding", rowItemPadding).style("line-height", lineHeight + "px");
1230
+ const labelDiv = rowDiv.append("div").attr("class", "row-label").style("padding", rowItemPadding).style("color", fontColor).style("background-color", d.selected ? context.selectionBackgroundColor() : "transparent").style("font-weight", d.bold ? "bold" : "normal").style("font-family", context.fontFamily()).style("font-size", context.fontSize() + "px").text(d.label).attr("title", d.label).style("flex", 1).style("overflow", "hidden").style("text-overflow", "ellipsis").style("line-height", lineHeight + "px");
1231
+ rowDiv.on("mouseenter", () => {
1232
+ labelDiv.style("font-weight", "bold");
1233
+ }).on("mouseleave", () => {
1234
+ labelDiv.style("font-weight", d.bold ? "bold" : "normal");
1235
+ });
1236
+ weightDiv.on("mouseenter", () => {
1237
+ context.weight_mouseenter(d);
1238
+ }).on("mouseleave", () => {
1239
+ context.weight_mouseleave(d);
1240
+ });
1241
+ if (d.isFolder) rowDiv.on("click", function(d$1) {
1242
+ let next = this.nextSibling;
1243
+ const wasClosed = rowDiv.classed("folder-closed");
1244
+ if (wasClosed) {
1245
+ rowDiv.classed("folder-closed", false);
1246
+ rowDiv.classed("folder-open", true);
1247
+ iconDiv.attr("class", "row-icon " + context.folderIconOpen());
1248
+ } else {
1249
+ rowDiv.classed("folder-closed", true);
1250
+ rowDiv.classed("folder-open", false);
1251
+ iconDiv.attr("class", "row-icon " + context.folderIconClosed());
1252
+ }
1253
+ while (next !== null) if (select(next).datum().depth > d$1.depth) {
1254
+ next.style.display = wasClosed ? "flex" : "none";
1255
+ next = next.nextSibling;
1256
+ } else next = null;
1257
+ });
1258
+ else rowDiv.on("click", () => {
1259
+ element.selectAll(".row-label").style("background-color", "transparent");
1260
+ element.selectAll(".row-icon").style("background-color", "transparent");
1261
+ iconDiv.style("background-color", context.selectionBackgroundColor());
1262
+ labelDiv.style("background-color", context.selectionBackgroundColor());
1263
+ const ext = d.label.split(".").pop().toLowerCase();
1264
+ context.rowClick(ext === "json" ? JSON.stringify(JSON.parse(d.content), null, 4) : d.content, d.markers);
1265
+ });
1266
+ }).merge(rowSelection).style("background-color", context.backgroundColor());
1267
+ rowSelection.exit().remove();
1268
+ }
1269
+ weight_mouseenter(d) {}
1270
+ weight_mouseleave(d) {}
1271
+ };
1272
+ DirectoryTree.prototype._class += " tree_DirectoryTree";
1273
+ DirectoryTree.prototype._palette = Palette.rainbow("Blues");
1274
+ DirectoryTree.prototype.publish("depthSize", 14, "number", "Width of indentation per file or folder depth (pixels)");
1275
+ DirectoryTree.prototype.publish("paletteID", "Blues", "set", "Color palette for the weight backgrounds", DirectoryTree.prototype._palette.switch(), { tags: ["Basic"] });
1276
+ DirectoryTree.prototype.publish("omitRoot", false, "boolean", "If true, root node will not display");
1277
+ DirectoryTree.prototype.publish("rowItemPadding", 2, "number", "Top, bottom, left and right row item padding");
1278
+ DirectoryTree.prototype.publish("selectionBackgroundColor", "#CCC", "html-color", "Background color of selected directory rows");
1279
+ DirectoryTree.prototype.publish("backgroundColor", "#FFF", "html-color", "Directory item background color");
1280
+ DirectoryTree.prototype.publish("fontColor", "#000", "html-color", "Directory item font color");
1281
+ DirectoryTree.prototype.publish("fontFamily", "Arial", "string", "Directory item font family");
1282
+ DirectoryTree.prototype.publish("fontSize", 12, "number", "Directory item font size (pixels)");
1283
+ DirectoryTree.prototype.publish("iconSize", 12, "number", "Directory folder and file icon size (pixels)");
1284
+ DirectoryTree.prototype.publish("folderIconOpen", "fa fa-folder-open", "string", "Open folder icon class");
1285
+ DirectoryTree.prototype.publish("folderIconClosed", "fa fa-folder", "string", "Closed folder icon class");
1286
+ DirectoryTree.prototype.publish("textFileIcon", "fa fa-file-text-o", "string", "Text file icon class");
1287
+ DirectoryTree.prototype.publish("verticalScroll", true, "boolean", "If true, vertical scroll bar will be shown");
1288
+
1289
+ //#endregion
1290
+ //#region src/Indented.ts
1291
+ var IndentedColumn = class extends PropertyExt {
1292
+ _owner;
1293
+ constructor() {
1294
+ super();
1295
+ }
1296
+ owner(_) {
1297
+ if (!arguments.length) return this._owner;
1298
+ this._owner = _;
1299
+ return this;
1300
+ }
1301
+ valid() {
1302
+ return !!this.column();
1303
+ }
1304
+ column;
1305
+ };
1306
+ IndentedColumn.prototype._class += " tree_Dendrogram.IndentedColumn";
1307
+ IndentedColumn.prototype.publish("column", null, "set", "Field", function() {
1308
+ return this._owner ? this._owner.columns() : [];
1309
+ }, { optional: true });
1310
+ var Indented = class extends SVGZoomWidget {
1311
+ Column;
1312
+ _d3Tree;
1313
+ _xml;
1314
+ _svgLinks;
1315
+ _svgNodes;
1316
+ _treeData;
1317
+ _collapsed = {};
1318
+ constructor() {
1319
+ super();
1320
+ ITree.call(this);
1321
+ Utility.SimpleSelectionMixin.call(this);
1322
+ this._drawStartPos = "origin";
1323
+ this._d3Tree = tree_default();
1324
+ }
1325
+ xmlToData(xml, id = "") {
1326
+ if (DOMParser) return xmlToJson(new DOMParser().parseFromString(xml, "text/xml"), id).children[0];
1327
+ return [];
1328
+ }
1329
+ xml(_) {
1330
+ if (!arguments.length) return this._xml;
1331
+ this._xml = _;
1332
+ this.data(this.xmlToData(this._xml));
1333
+ return this;
1334
+ }
1335
+ IndentedData() {
1336
+ if (this.data().length === 0) return [];
1337
+ if (this.xmlColumn_exists()) {
1338
+ const cellIdx = this.columns().indexOf(this.xmlColumn());
1339
+ const retVal = {
1340
+ label: this.xmlColumn(),
1341
+ children: this.data().map(function(row, idx) {
1342
+ return this.xmlToData(row[cellIdx], "[" + idx + "]");
1343
+ }, this)
1344
+ };
1345
+ return retVal.children.length === 1 ? retVal.children[0] : retVal;
1346
+ } else {
1347
+ if (!this.mappings().filter((mapping) => mapping.valid()).length) return this.data();
1348
+ return formatData({
1349
+ key: "root",
1350
+ values: this._db.rollupView(this.mappings().map(function(mapping) {
1351
+ return mapping.column();
1352
+ })).entries()
1353
+ });
1354
+ }
1355
+ function formatData(node) {
1356
+ if (node.values instanceof Array) {
1357
+ const children = node.values.filter(function(value) {
1358
+ return !(value instanceof Array);
1359
+ }).map(function(value) {
1360
+ return formatData(value);
1361
+ });
1362
+ const retVal = { label: node.key };
1363
+ if (children.length) retVal.children = children;
1364
+ else retVal.size = 22;
1365
+ return retVal;
1366
+ }
1367
+ return {
1368
+ label: node.key,
1369
+ size: node.values.aggregate,
1370
+ origRows: node.values
1371
+ };
1372
+ }
1373
+ }
1374
+ enter(domNode, element) {
1375
+ super.enter(domNode, element);
1376
+ this._svgLinks = this._renderElement.append("g");
1377
+ this._svgNodes = this._renderElement.append("g");
1378
+ this._selection.widgetElement(this._svgNodes);
1379
+ }
1380
+ _prevDataChecksum;
1381
+ update(domNode, _element) {
1382
+ super.update(domNode, _element);
1383
+ const context = this;
1384
+ this._d3Tree.nodeSize([0, this.barHeight()]);
1385
+ const dataChecksum = this._db.dataChecksum();
1386
+ if (this._prevDataChecksum !== dataChecksum) {
1387
+ this._treeData = this.IndentedData();
1388
+ this._prevDataChecksum = dataChecksum;
1389
+ }
1390
+ function getID(d) {
1391
+ return (d.parent ? getID(d.parent) + "." : "") + d.data.label;
1392
+ }
1393
+ const root = hierarchy(this.data()).sum(function(d) {
1394
+ return d.size || 50;
1395
+ }).each((d) => {
1396
+ if (this._collapsed[getID(d)]) delete d.children;
1397
+ });
1398
+ const dataNodes = this._d3Tree(root).descendants();
1399
+ const links = this._d3Tree(root).descendants().slice(1);
1400
+ let nodeIdx = 0;
1401
+ root.eachBefore((n) => {
1402
+ n.x = nodeIdx * context.barHeight();
1403
+ ++nodeIdx;
1404
+ });
1405
+ const boxSize = this.barHeight() - 4;
1406
+ const transitionDuration = this._renderCount ? 500 : 0;
1407
+ const lines = this._svgLinks.selectAll(".link").data(links, function(d) {
1408
+ return getID(d);
1409
+ });
1410
+ lines.enter().append("path").attr("class", "link").attr("d", elbow);
1411
+ lines.transition().duration(transitionDuration).attr("d", elbow);
1412
+ lines.exit().remove();
1413
+ function elbow(d) {
1414
+ return "M" + d.parent.y + "," + d.parent.x + "V" + d.x + ", H" + d.y;
1415
+ }
1416
+ const nodes = this._svgNodes.selectAll(".node").data(dataNodes, function(d) {
1417
+ return getID(d);
1418
+ });
1419
+ nodes.transition().duration(transitionDuration).attr("transform", function(d) {
1420
+ return "translate(" + d.y + "," + d.x + ")";
1421
+ });
1422
+ const enterNodes = nodes.enter().append("g").attr("class", "node").attr("transform", function(d) {
1423
+ return "translate(" + d.y + "," + d.x + ")";
1424
+ }).call(this._selection.enter.bind(this._selection)).each(function() {
1425
+ const element = select(this);
1426
+ element.append("rect").attr("height", boxSize).attr("width", boxSize).on("click", function(d) {
1427
+ if (context._collapsed[getID(d)]) delete context._collapsed[getID(d)];
1428
+ else if (d.children) context._collapsed[getID(d)] = true;
1429
+ context.lazyRender();
1430
+ });
1431
+ element.append("text");
1432
+ }).style("opacity", 0);
1433
+ enterNodes.transition().style("opacity", 1);
1434
+ enterNodes.merge(nodes).select("rect").attr("x", -boxSize / 2).attr("y", -boxSize / 2).style("fill", color);
1435
+ enterNodes.merge(nodes).select("text").attr("dx", boxSize / 2 + 4 + "px").attr("dy", "0.33em").text(function(d) {
1436
+ return d.data.label;
1437
+ });
1438
+ nodes.exit().transition().style("opacity", 0).remove();
1439
+ if (!this._renderCount) context.zoomToFit();
1440
+ function color(d) {
1441
+ return context._collapsed[getID(d)] ? "#3182bd" : d.children ? "#c6dbef" : "#fd8d3c";
1442
+ }
1443
+ }
1444
+ };
1445
+ Indented.prototype._class += " tree_Indented";
1446
+ Indented.prototype.implements(ITree.prototype);
1447
+ Indented.prototype.mixin(Utility.SimpleSelectionMixin);
1448
+ Indented.prototype.Column = IndentedColumn;
1449
+ Indented.prototype.publish("xmlColumn", null, "set", "Field", function() {
1450
+ return this.columns();
1451
+ }, { optional: true });
1452
+ Indented.prototype.publish("mappings", [], "propertyArray", "Source Columns", null, {
1453
+ autoExpand: IndentedColumn,
1454
+ disable: (w) => w.xmlColumn_exists()
1455
+ });
1456
+ Indented.prototype.publish("barHeight", 16, "number", "Bar height");
1457
+ function xmlToJson(xml, id = "") {
1458
+ const retVal = {
1459
+ id,
1460
+ label: "",
1461
+ attributes: {},
1462
+ children: []
1463
+ };
1464
+ retVal.label = xml.nodeName;
1465
+ if (xml.nodeType === 1) {
1466
+ if (xml.attributes.length > 0) for (let j = 0; j < xml.attributes.length; j++) {
1467
+ const attribute = xml.attributes.item(j);
1468
+ retVal.attributes[attribute.nodeName] = attribute.nodeValue;
1469
+ }
1470
+ } else if (xml.nodeType === 3) retVal.label = xml.nodeValue;
1471
+ if (xml.hasChildNodes()) for (let i = 0; i < xml.childNodes.length; i++) {
1472
+ const child = xmlToJson(xml.childNodes.item(i), id + "[" + retVal.children.length + "]");
1473
+ retVal.children.push(child);
1474
+ }
1475
+ return retVal;
79
1476
  }
80
- `,document.head.appendChild(t)}})();var J=class extends Pt{static{s(this,"SunburstPartition")}svg;radius;_xScale;_yScale;partition;arc;_resetRoot;constructor(){super(),At.call(this)}data(e){let n=Pt.prototype.data.apply(this,arguments);return arguments.length&&(this._resetRoot=!0),n}enter(e,n){let r=this;this.radius=Math.min(this.width(),this.height())/2,this._xScale=zr().range([0,2*Math.PI]),this._yScale=Tr().range([0,this.radius]),this.partition=xe(),this.arc=Ce().startAngle(function(i){return Math.max(0,Math.min(2*Math.PI,r._xScale(i.x0)))}).endAngle(function(i){return Math.max(0,Math.min(2*Math.PI,r._xScale(i.x1)))}).innerRadius(function(i){return Math.max(0,r._yScale(i.y0))}).outerRadius(function(i){return Math.max(0,r._yScale(i.y1))}),this.svg=n.append("g")}update(e,n){let r=this;this._palette=this._palette.switch(this.paletteID()),this.useClonedPalette()&&(this._palette=this._palette.cloneNotExists(this.paletteID()+"_"+this.id())),this.radius=Math.min(this.width(),this.height())/2,this._yScale.range([0,this.radius]);let i=L(this.data()).sum(function(u){return u.size!==void 0?u.size:1}),o=this.svg.selectAll("path").data(this.partition(i).descendants(),function(u,l){return u.data.label!==void 0?u.data.label:l});o.enter().append("path").on("click",function(u){r.click(u.data,null,null)}).on("dblclick",function(u){let l=Cr();l&&l.stopPropagation(),r.zoomTo(u)}).each(function(){Dr(this).append("title")}).merge(o).attr("d",this.arc).style("fill",function(u){return u.data.__viz_fill?u.data.__viz_fill:r._palette(u.data.label)}).style("stroke",function(u){return u.value>16?"white":"none"}).select("title").text(function(u){return u.data.label}),o.exit().remove(),this._resetRoot&&(this._resetRoot=!1,this.zoomTo(i))}zoomTo(e){let n=this;this.svg.transition().duration(750).tween("scale",function(){let r=it(n._xScale.domain(),[e.x0,e.x1]),i=it(n._yScale.domain(),[e.y0,1]),o=it(n._yScale.range(),[e.y0?20:0,n.radius]);return function(u){n._xScale.domain(r(u)),n._yScale.domain(i(u)).range(o(u))}}).selectAll("path").attrTween("d",function(r){return function(){return n.arc(r)}})}};J.prototype._class+=" tree_SunburstPartition";J.prototype.implements(At.prototype);J.prototype.publish("paletteID","default","set","Color palette for this widget",J.prototype._palette.switch(),{tags:["Basic","Shared"]});J.prototype.publish("useClonedPalette",!1,"boolean","Enable or disable using a cloned palette",null,{tags:["Intermediate","Shared"]});import{ITree as Et}from"@hpcc-js/api";import{HTMLWidget as Ir,Palette as Mr,PropertyExt as Rr,Utility as Nt}from"@hpcc-js/common";import{rgb as Lt}from"@hpcc-js/common";(function(){if(!document.getElementById("95685909")){var t=document.createElement("style");t.id="95685909",t.textContent=`.tree_Treemap * {
81
- box-sizing: border-box;
1477
+
1478
+ //#endregion
1479
+ //#region ../../node_modules/d3-path/src/path.js
1480
+ var pi$1 = Math.PI, tau$1 = 2 * pi$1, epsilon$1 = 1e-6, tauEpsilon = tau$1 - epsilon$1;
1481
+ function Path() {
1482
+ this._x0 = this._y0 = this._x1 = this._y1 = null;
1483
+ this._ = "";
82
1484
  }
83
- .tree_Treemap .node {
84
- border: solid 1px #333;
85
- overflow: hidden;
86
- text-overflow: ellipsis;
87
- position: absolute;
1485
+ function path() {
1486
+ return new Path();
88
1487
  }
1488
+ Path.prototype = path.prototype = {
1489
+ constructor: Path,
1490
+ moveTo: function(x, y) {
1491
+ this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y);
1492
+ },
1493
+ closePath: function() {
1494
+ if (this._x1 !== null) {
1495
+ this._x1 = this._x0, this._y1 = this._y0;
1496
+ this._ += "Z";
1497
+ }
1498
+ },
1499
+ lineTo: function(x, y) {
1500
+ this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y);
1501
+ },
1502
+ quadraticCurveTo: function(x1, y1, x, y) {
1503
+ this._ += "Q" + +x1 + "," + +y1 + "," + (this._x1 = +x) + "," + (this._y1 = +y);
1504
+ },
1505
+ bezierCurveTo: function(x1, y1, x2, y2, x, y) {
1506
+ this._ += "C" + +x1 + "," + +y1 + "," + +x2 + "," + +y2 + "," + (this._x1 = +x) + "," + (this._y1 = +y);
1507
+ },
1508
+ arcTo: function(x1, y1, x2, y2, r) {
1509
+ x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;
1510
+ var x0 = this._x1, y0 = this._y1, x21 = x2 - x1, y21 = y2 - y1, x01 = x0 - x1, y01 = y0 - y1, l01_2 = x01 * x01 + y01 * y01;
1511
+ if (r < 0) throw new Error("negative radius: " + r);
1512
+ if (this._x1 === null) this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1);
1513
+ else if (!(l01_2 > epsilon$1));
1514
+ else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1);
1515
+ else {
1516
+ var x20 = x2 - x0, y20 = y2 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l = r * Math.tan((pi$1 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21;
1517
+ if (Math.abs(t01 - 1) > epsilon$1) this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01);
1518
+ this._ += "A" + r + "," + r + ",0,0," + +(y01 * x20 > x01 * y20) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21);
1519
+ }
1520
+ },
1521
+ arc: function(x, y, r, a0, a1, ccw) {
1522
+ x = +x, y = +y, r = +r, ccw = !!ccw;
1523
+ var dx = r * Math.cos(a0), dy = r * Math.sin(a0), x0 = x + dx, y0 = y + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0;
1524
+ if (r < 0) throw new Error("negative radius: " + r);
1525
+ if (this._x1 === null) this._ += "M" + x0 + "," + y0;
1526
+ else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) this._ += "L" + x0 + "," + y0;
1527
+ if (!r) return;
1528
+ if (da < 0) da = da % tau$1 + tau$1;
1529
+ if (da > tauEpsilon) this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0);
1530
+ else if (da > epsilon$1) this._ += "A" + r + "," + r + ",0," + +(da >= pi$1) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1));
1531
+ },
1532
+ rect: function(x, y, w, h) {
1533
+ this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + +w + "v" + +h + "h" + -w + "Z";
1534
+ },
1535
+ toString: function() {
1536
+ return this._;
1537
+ }
1538
+ };
1539
+ var path_default = path;
89
1540
 
90
- .tree_Treemap .node.selected {
91
- border-color: red;
1541
+ //#endregion
1542
+ //#region ../../node_modules/d3-shape/src/constant.js
1543
+ function constant_default(x) {
1544
+ return function constant() {
1545
+ return x;
1546
+ };
92
1547
  }
93
1548
 
94
- .tree_Treemap .node.over {
95
- border-color: orange;
1549
+ //#endregion
1550
+ //#region ../../node_modules/d3-shape/src/math.js
1551
+ var abs = Math.abs;
1552
+ var atan2 = Math.atan2;
1553
+ var cos = Math.cos;
1554
+ var max$1 = Math.max;
1555
+ var min = Math.min;
1556
+ var sin = Math.sin;
1557
+ var sqrt = Math.sqrt;
1558
+ var epsilon = 1e-12;
1559
+ var pi = Math.PI;
1560
+ var halfPi = pi / 2;
1561
+ var tau = 2 * pi;
1562
+ function acos(x) {
1563
+ return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
1564
+ }
1565
+ function asin(x) {
1566
+ return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);
96
1567
  }
97
1568
 
98
- .tree_Treemap .node.selected.over {
99
- border-color: red;
1569
+ //#endregion
1570
+ //#region ../../node_modules/d3-shape/src/arc.js
1571
+ function arcInnerRadius(d) {
1572
+ return d.innerRadius;
1573
+ }
1574
+ function arcOuterRadius(d) {
1575
+ return d.outerRadius;
100
1576
  }
101
- .tree_Treemap .node > span.treemap-parent-label {
102
- font-weight: bold;
103
- display: inline-block;
104
- margin: 4px 4px 0 4px;
1577
+ function arcStartAngle(d) {
1578
+ return d.startAngle;
105
1579
  }
106
- .tree_Treemap .node > span.treemap-parent-value {
107
- font-weight: normal;
108
- font-style: italic;
109
- margin: 4px 0 0 0;
1580
+ function arcEndAngle(d) {
1581
+ return d.endAngle;
110
1582
  }
111
- .tree_Treemap .node > span.treemap-singleton-label {
112
- font-weight: normal;
113
- display: block;
114
- margin: 4px 0 0 4px;
1583
+ function arcPadAngle(d) {
1584
+ return d && d.padAngle;
115
1585
  }
116
- .tree_Treemap .node > span.treemap-singleton-value {
117
- font-style: italic;
118
- display: block;
119
- margin: 0 0 0 4px;
1586
+ function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
1587
+ var x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2, t = y32 * x10 - x32 * y10;
1588
+ if (t * t < 1e-12) return;
1589
+ t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;
1590
+ return [x0 + t * x10, y0 + t * y10];
120
1591
  }
121
- `,document.head.appendChild(t)}})();var oe=class extends Rr{static{s(this,"TreemapColumn")}_owner;constructor(){super()}owner(e){return arguments.length?(this._owner=e,this):this._owner}valid(){return!!this.column()}column};oe.prototype._class+=" tree_Dendrogram.TreemapColumn";oe.prototype.publish("column",null,"set","Field",function(){return this._owner?this._owner.columns():[]},{optional:!0});var D=class extends Ir{static{s(this,"Treemap")}Column;_d3Treemap;_elementDIV;_selection;constructor(){super(),Et.call(this),Nt.SimpleSelectionMixin.call(this,!0)}getTilingMethod(){switch(this.tilingMethod()){case"treemapBinary":return ve;case"treemapDice":return O;case"treemapSlice":return q;case"treemapSliceDice":return we;case"treemapResquarify":return Je;case"treemapSquarify":default:return se}}treemapData(){if(!this.mappings().filter(i=>i.valid()).length)return this.data();let n={key:"root",values:this._db.aggregateView(this.mappings().map(function(i){return i.column()}),this.aggrType(),this.aggrColumn()).entries()};return r(n);function r(i){if(i.values instanceof Array){let o=i.values.filter(function(l){return!(l instanceof Array)}).map(function(l){return r(l)}),u={label:i.key};return o.length?u.children=o:u.size=22,u}return{label:i.key,size:i.values.aggregate,origRows:i.values}}}enter(e,n){super.enter(e,n),this._d3Treemap=be(),this._elementDIV=n.append("div"),this._selection.widgetElement(this._elementDIV)}update(e,n){super.update(e,n);let r=this;this._palette=this._palette.switch(this.paletteID()),this.useClonedPalette()&&(this._palette=this._palette.cloneNotExists(this.paletteID()+"_"+this.id()));let i=L(this.treemapData()).sum(this.nodeWeight);this._d3Treemap.size([this.width(),this.height()]).paddingInner(this.paddingInner()).paddingOuter(this.paddingOuter()).paddingTop(this.paddingTop()),["treemapSquarify","treemapResquarify"].indexOf(this.tilingMethod())!==-1?this._d3Treemap.tile(this.getTilingMethod().ratio(this.squarifyRatio())):this._d3Treemap.tile(this.getTilingMethod()),this._d3Treemap(i),this._elementDIV.style("font-size",this.fontSize_exists()?this.fontSize()+"px":null).style("line-height",this.fontSize_exists()?this.fontSize()+2+"px":null);let o=this._elementDIV.selectAll(".node").data(i.descendants());o.enter().append("div").attr("class","node").call(this._selection.enter.bind(this._selection)).on("click",function(l){if(l){let p="";r.mappings().forEach(function(a){a.column()&&(p=a.column())}),l.origRows?r.click(r.rowToObj(l.origRows[0]),p,r._selection.selected(this)):r.click(l.data,p,r._selection.selected(this))}}).on("dblclick",function(l){if(l){let p="";r.mappings().forEach(function(a){a.column()&&(p=a.column())}),l.origRows?r.dblclick(r.rowToObj(l.origRows[0]),p,r._selection.selected(this)):r.dblclick(l.data,p,r._selection.selected(this))}}).merge(o).style("left",function(l){return l.x0+Math.max(0,l.x1-l.x0)/2+"px"}).style("top",function(l){return l.y0+Math.max(0,l.y1-l.y0)/2+"px"}).style("width",function(){return"0px"}).style("height",function(){return"0px"}).style("font-size",function(l){return(l.children?r.parentFontSize():r.leafFontSize())+"px"}).style("line-height",function(l){return(l.children?r.parentFontSize():r.leafFontSize())+"px"}).attr("title",u).html(function(l){return!r.showRoot()&&l.depth===0?null:l.children?r.enableParentLabels()?r.parentWeightHTML(l):null:r.leafWeightHTML(l)}).style("background",function(l){if(!r.showRoot()&&l.depth===0)return this.style.color="transparent","transparent";let p=r.brighterLeafNodes()?"brighter":"darker",a;return r.usePaletteOnParentNodes()?a=l.children?r._palette(l.data.label):Lt(r._palette(l.parent.data.label))[p](1):(l.depth>r.depthColorLimit()?a=Lt(l.parent.color)[p](1):a=r._palette(l.data.label),l.color=a),this.style.color=Mr.textColor(a),a}).transition().duration(this.transitionDuration()).style("pointer-events",function(l){return!r.showRoot()&&l.depth===0?"none":"all"}).style("opacity",function(l){return l.children?1:null}).style("left",function(l){return l.x0+"px"}).style("top",function(l){return l.y0+"px"}).style("width",function(l){return Math.max(0,l.x1-l.x0)+"px"}).style("height",function(l){return Math.max(0,l.y1-l.y0)+"px"}).each(function(l){l.depth===0&&(this.style.color=r.showRoot()?"":"transparent",this.style.borderColor=r.showRoot()?"":"transparent")}),o.exit().transition().duration(this.transitionDuration()).style("opacity",0).remove();function u(l){if(l.children&&!r.enableParentTooltips())return null;let p=l.data.label+" ("+l.value+")";for(;l.parent&&l.parent.parent;)p=l.parent.data.label+" -> "+p,l=l.parent;return p}s(u,"tooltip")}exit(e,n){super.exit(e,n)}nodeWeight(e){return e.size||1}parentWeightHTML(e){return this.showParentWeight()?`<span class="treemap-parent-label">${e.data.label}</span><span class="treemap-parent-value">${e.value}${this.weightSuffix()}</span>`:`<span class="treemap-parent-label">${e.data.label}</span>`}leafWeightHTML(e){return this.showLeafWeight()?`<span class="treemap-leaf-label">${e.data.label}</span><span class="treemap-leaf-value">${e.value}${this.weightSuffix()}</span>`:`<span class="treemap-leaf-label">${e.data.label}</span>`}};D.prototype._class+=" tree_Treemap";D.prototype.implements(Et.prototype);D.prototype.mixin(Nt.SimpleSelectionMixin);D.prototype.Column=oe;D.prototype.publish("paletteID","default","set","Color palette for this widget",D.prototype._palette.switch(),{tags:["Basic","Shared"]});D.prototype.publish("useClonedPalette",!1,"boolean","Enable or disable using a cloned palette",null,{tags:["Intermediate","Shared"]});D.prototype.publish("mappings",[],"propertyArray","Source Columns",null,{autoExpand:oe});D.prototype.publish("aggrType",null,"set","Aggregation Type",[null,"mean","median","sum","min","max"],{optional:!0});D.prototype.publish("aggrColumn",null,"set","Aggregation Field",function(){return this.columns()},{optional:!0,disable:s(t=>!t.aggrType(),"disable")});D.prototype.publish("fontSize",null,"number","Font Size",null,{optional:!0});D.prototype.publish("paddingInner",18.6,"number","Pixel spacing between each sibling node");D.prototype.publish("paddingOuter",30,"number","Pixel padding of parent nodes");D.prototype.publish("paddingTop",41.4,"number","Additional top pixel padding of parent nodes");D.prototype.publish("showRoot",!1,"boolean","Show root element");D.prototype.publish("parentFontSize",18,"number","Parent font-size");D.prototype.publish("leafFontSize",16,"number","Leaf font-size");D.prototype.publish("usePaletteOnParentNodes",!1,"boolean","Assign a color from the palette to every parent node");D.prototype.publish("depthColorLimit",1,"number","Assign a color from the palette to node with depth lower than this value",null,{optional:!0,disable:s(t=>t.usePaletteOnParentNodes(),"disable")});D.prototype.publish("squarifyRatio",1,"number","Specifies the desired aspect ratio of the generated rectangles (must be >= 1)",null,{optional:!0,disable:s(t=>["treemapSquarify","treemapResquarify"].indexOf(t.tilingMethod())===-1,"disable")});D.prototype.publish("showParentWeight",!0,"boolean","Show weight of parent nodes");D.prototype.publish("showLeafWeight",!0,"boolean","Show weight of leaf nodes");D.prototype.publish("weightSuffix","","string","Weight suffix (ex: 'ms')");D.prototype.publish("brighterLeafNodes",!1,"boolean","Brighter/darker leaf node color (false = darker)");D.prototype.publish("enableParentLabels",!0,"boolean","Enable parent labels");D.prototype.publish("enableParentTooltips",!0,"boolean","Enable parent tooltips");D.prototype.publish("transitionDuration",250,"number","Transition Duration");D.prototype.publish("tilingMethod","treemapSquarify","set","Transition Duration",["treemapBinary","treemapDice","treemapResquarify","treemapSlice","treemapSliceDice","treemapSquarify"]);export{Er as BUILD_VERSION,W as CirclePacking,E as Dendrogram,re as DendrogramColumn,P as DirectoryTree,Z as Indented,ne as IndentedColumn,Ar as PKG_NAME,Lr as PKG_VERSION,J as SunburstPartition,D as Treemap,oe as TreemapColumn};
122
- //# sourceMappingURL=index.js.map
1592
+ function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
1593
+ var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max$1(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00;
1594
+ if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
1595
+ return {
1596
+ cx: cx0,
1597
+ cy: cy0,
1598
+ x01: -ox,
1599
+ y01: -oy,
1600
+ x11: cx0 * (r1 / r - 1),
1601
+ y11: cy0 * (r1 / r - 1)
1602
+ };
1603
+ }
1604
+ function arc_default() {
1605
+ var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant_default(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null;
1606
+ function arc() {
1607
+ var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs(a1 - a0), cw = a1 > a0;
1608
+ if (!context) context = buffer = path_default();
1609
+ if (r1 < r0) r = r1, r1 = r0, r0 = r;
1610
+ if (!(r1 > 1e-12)) context.moveTo(0, 0);
1611
+ else if (da > tau - 1e-12) {
1612
+ context.moveTo(r1 * cos(a0), r1 * sin(a0));
1613
+ context.arc(0, 0, r1, a0, a1, !cw);
1614
+ if (r0 > 1e-12) {
1615
+ context.moveTo(r0 * cos(a1), r0 * sin(a1));
1616
+ context.arc(0, 0, r0, a1, a0, cw);
1617
+ }
1618
+ } else {
1619
+ var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = ap > 1e-12 && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t0, t1;
1620
+ if (rp > 1e-12) {
1621
+ var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap));
1622
+ if ((da0 -= p0 * 2) > 1e-12) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;
1623
+ else da0 = 0, a00 = a10 = (a0 + a1) / 2;
1624
+ if ((da1 -= p1 * 2) > 1e-12) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;
1625
+ else da1 = 0, a01 = a11 = (a0 + a1) / 2;
1626
+ }
1627
+ var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10);
1628
+ if (rc > 1e-12) {
1629
+ var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc;
1630
+ if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {
1631
+ var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
1632
+ rc0 = min(rc, (r0 - lc) / (kc - 1));
1633
+ rc1 = min(rc, (r1 - lc) / (kc + 1));
1634
+ }
1635
+ }
1636
+ if (!(da1 > 1e-12)) context.moveTo(x01, y01);
1637
+ else if (rc1 > 1e-12) {
1638
+ t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);
1639
+ t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);
1640
+ context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);
1641
+ if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
1642
+ else {
1643
+ context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
1644
+ context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
1645
+ context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
1646
+ }
1647
+ } else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);
1648
+ if (!(r0 > 1e-12) || !(da0 > 1e-12)) context.lineTo(x10, y10);
1649
+ else if (rc0 > 1e-12) {
1650
+ t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);
1651
+ t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);
1652
+ context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);
1653
+ if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
1654
+ else {
1655
+ context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
1656
+ context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);
1657
+ context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
1658
+ }
1659
+ } else context.arc(0, 0, r0, a10, a00, cw);
1660
+ }
1661
+ context.closePath();
1662
+ if (buffer) return context = null, buffer + "" || null;
1663
+ }
1664
+ arc.centroid = function() {
1665
+ var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;
1666
+ return [cos(a) * r, sin(a) * r];
1667
+ };
1668
+ arc.innerRadius = function(_) {
1669
+ return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant_default(+_), arc) : innerRadius;
1670
+ };
1671
+ arc.outerRadius = function(_) {
1672
+ return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant_default(+_), arc) : outerRadius;
1673
+ };
1674
+ arc.cornerRadius = function(_) {
1675
+ return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant_default(+_), arc) : cornerRadius;
1676
+ };
1677
+ arc.padRadius = function(_) {
1678
+ return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant_default(+_), arc) : padRadius;
1679
+ };
1680
+ arc.startAngle = function(_) {
1681
+ return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant_default(+_), arc) : startAngle;
1682
+ };
1683
+ arc.endAngle = function(_) {
1684
+ return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant_default(+_), arc) : endAngle;
1685
+ };
1686
+ arc.padAngle = function(_) {
1687
+ return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant_default(+_), arc) : padAngle;
1688
+ };
1689
+ arc.context = function(_) {
1690
+ return arguments.length ? (context = _ == null ? null : _, arc) : context;
1691
+ };
1692
+ return arc;
1693
+ }
1694
+
1695
+ //#endregion
1696
+ //#region src/SunburstPartition.ts
1697
+ var SunburstPartition = class extends SVGWidget {
1698
+ svg;
1699
+ radius;
1700
+ _xScale;
1701
+ _yScale;
1702
+ partition;
1703
+ arc;
1704
+ _resetRoot;
1705
+ constructor() {
1706
+ super();
1707
+ ITree.call(this);
1708
+ }
1709
+ data(_) {
1710
+ const retVal = SVGWidget.prototype.data.apply(this, arguments);
1711
+ if (arguments.length) this._resetRoot = true;
1712
+ return retVal;
1713
+ }
1714
+ enter(_domNode, element) {
1715
+ const context = this;
1716
+ this.radius = Math.min(this.width(), this.height()) / 2;
1717
+ this._xScale = scaleLinear().range([0, 2 * Math.PI]);
1718
+ this._yScale = scaleSqrt().range([0, this.radius]);
1719
+ this.partition = partition_default();
1720
+ this.arc = arc_default().startAngle(function(d) {
1721
+ return Math.max(0, Math.min(2 * Math.PI, context._xScale(d.x0)));
1722
+ }).endAngle(function(d) {
1723
+ return Math.max(0, Math.min(2 * Math.PI, context._xScale(d.x1)));
1724
+ }).innerRadius(function(d) {
1725
+ return Math.max(0, context._yScale(d.y0));
1726
+ }).outerRadius(function(d) {
1727
+ return Math.max(0, context._yScale(d.y1));
1728
+ });
1729
+ this.svg = element.append("g");
1730
+ }
1731
+ update(_domNode, _element) {
1732
+ const context = this;
1733
+ this._palette = this._palette.switch(this.paletteID());
1734
+ if (this.useClonedPalette()) this._palette = this._palette.cloneNotExists(this.paletteID() + "_" + this.id());
1735
+ this.radius = Math.min(this.width(), this.height()) / 2;
1736
+ this._yScale.range([0, this.radius]);
1737
+ const root = hierarchy(this.data()).sum(function(d) {
1738
+ return d.size !== void 0 ? d.size : 1;
1739
+ });
1740
+ const paths = this.svg.selectAll("path").data(this.partition(root).descendants(), function(d, i) {
1741
+ return d.data.label !== void 0 ? d.data.label : i;
1742
+ });
1743
+ paths.enter().append("path").on("click", function(d) {
1744
+ context.click(d.data, null, null);
1745
+ }).on("dblclick", function(d) {
1746
+ const event = d3Event();
1747
+ if (event) event.stopPropagation();
1748
+ context.zoomTo(d);
1749
+ }).each(function() {
1750
+ select(this).append("title");
1751
+ }).merge(paths).attr("d", this.arc).style("fill", function(d) {
1752
+ return d.data.__viz_fill ? d.data.__viz_fill : context._palette(d.data.label);
1753
+ }).style("stroke", function(d) {
1754
+ return d.value > 16 ? "white" : "none";
1755
+ }).select("title").text(function(d) {
1756
+ return d.data.label;
1757
+ });
1758
+ paths.exit().remove();
1759
+ if (this._resetRoot) {
1760
+ this._resetRoot = false;
1761
+ this.zoomTo(root);
1762
+ }
1763
+ }
1764
+ zoomTo(d) {
1765
+ const context = this;
1766
+ this.svg.transition().duration(750).tween("scale", function() {
1767
+ const xd = interpolate(context._xScale.domain(), [d.x0, d.x1]);
1768
+ const yd = interpolate(context._yScale.domain(), [d.y0, 1]);
1769
+ const yr = interpolate(context._yScale.range(), [d.y0 ? 20 : 0, context.radius]);
1770
+ return function(t) {
1771
+ context._xScale.domain(xd(t));
1772
+ context._yScale.domain(yd(t)).range(yr(t));
1773
+ };
1774
+ }).selectAll("path").attrTween("d", function(d2) {
1775
+ return function() {
1776
+ return context.arc(d2);
1777
+ };
1778
+ });
1779
+ }
1780
+ };
1781
+ SunburstPartition.prototype._class += " tree_SunburstPartition";
1782
+ SunburstPartition.prototype.implements(ITree.prototype);
1783
+ SunburstPartition.prototype.publish("paletteID", "default", "set", "Color palette for this widget", SunburstPartition.prototype._palette.switch(), { tags: ["Basic", "Shared"] });
1784
+ SunburstPartition.prototype.publish("useClonedPalette", false, "boolean", "Enable or disable using a cloned palette", null, { tags: ["Intermediate", "Shared"] });
1785
+
1786
+ //#endregion
1787
+ //#region src/Treemap.ts
1788
+ var TreemapColumn = class extends PropertyExt {
1789
+ _owner;
1790
+ constructor() {
1791
+ super();
1792
+ }
1793
+ owner(_) {
1794
+ if (!arguments.length) return this._owner;
1795
+ this._owner = _;
1796
+ return this;
1797
+ }
1798
+ valid() {
1799
+ return !!this.column();
1800
+ }
1801
+ column;
1802
+ };
1803
+ TreemapColumn.prototype._class += " tree_Dendrogram.TreemapColumn";
1804
+ TreemapColumn.prototype.publish("column", null, "set", "Field", function() {
1805
+ return this._owner ? this._owner.columns() : [];
1806
+ }, { optional: true });
1807
+ var Treemap = class extends HTMLWidget {
1808
+ Column;
1809
+ _d3Treemap;
1810
+ _elementDIV;
1811
+ _selection;
1812
+ constructor() {
1813
+ super();
1814
+ ITree.call(this);
1815
+ Utility.SimpleSelectionMixin.call(this, true);
1816
+ }
1817
+ getTilingMethod() {
1818
+ switch (this.tilingMethod()) {
1819
+ case "treemapBinary": return binary_default;
1820
+ case "treemapDice": return dice_default;
1821
+ case "treemapSlice": return slice_default;
1822
+ case "treemapSliceDice": return sliceDice_default;
1823
+ case "treemapResquarify": return resquarify_default;
1824
+ case "treemapSquarify":
1825
+ default: return squarify_default;
1826
+ }
1827
+ }
1828
+ treemapData() {
1829
+ if (!this.mappings().filter((mapping) => mapping.valid()).length) return this.data();
1830
+ return formatData({
1831
+ key: "root",
1832
+ values: this._db.aggregateView(this.mappings().map(function(mapping) {
1833
+ return mapping.column();
1834
+ }), this.aggrType(), this.aggrColumn()).entries()
1835
+ });
1836
+ function formatData(node) {
1837
+ if (node.values instanceof Array) {
1838
+ const children = node.values.filter(function(value) {
1839
+ return !(value instanceof Array);
1840
+ }).map(function(value) {
1841
+ return formatData(value);
1842
+ });
1843
+ const retVal2 = { label: node.key };
1844
+ if (children.length) retVal2.children = children;
1845
+ else retVal2.size = 22;
1846
+ return retVal2;
1847
+ }
1848
+ return {
1849
+ label: node.key,
1850
+ size: node.values.aggregate,
1851
+ origRows: node.values
1852
+ };
1853
+ }
1854
+ }
1855
+ enter(domNode, element) {
1856
+ super.enter(domNode, element);
1857
+ this._d3Treemap = treemap_default();
1858
+ this._elementDIV = element.append("div");
1859
+ this._selection.widgetElement(this._elementDIV);
1860
+ }
1861
+ update(domNode, element) {
1862
+ super.update(domNode, element);
1863
+ const context = this;
1864
+ this._palette = this._palette.switch(this.paletteID());
1865
+ if (this.useClonedPalette()) this._palette = this._palette.cloneNotExists(this.paletteID() + "_" + this.id());
1866
+ const root = hierarchy(this.treemapData()).sum(this.nodeWeight);
1867
+ this._d3Treemap.size([this.width(), this.height()]).paddingInner(this.paddingInner()).paddingOuter(this.paddingOuter()).paddingTop(this.paddingTop());
1868
+ if (["treemapSquarify", "treemapResquarify"].indexOf(this.tilingMethod()) !== -1) this._d3Treemap.tile(this.getTilingMethod()["ratio"](this.squarifyRatio()));
1869
+ else this._d3Treemap.tile(this.getTilingMethod());
1870
+ this._d3Treemap(root);
1871
+ this._elementDIV.style("font-size", this.fontSize_exists() ? this.fontSize() + "px" : null).style("line-height", this.fontSize_exists() ? this.fontSize() + 2 + "px" : null);
1872
+ const node = this._elementDIV.selectAll(".node").data(root.descendants());
1873
+ node.enter().append("div").attr("class", "node").call(this._selection.enter.bind(this._selection)).on("click", function(d) {
1874
+ if (d) {
1875
+ let columnLabel = "";
1876
+ context.mappings().forEach(function(mapping) {
1877
+ if (mapping.column()) columnLabel = mapping.column();
1878
+ });
1879
+ if (d.origRows) context.click(context.rowToObj(d.origRows[0]), columnLabel, context._selection.selected(this));
1880
+ else context.click(d.data, columnLabel, context._selection.selected(this));
1881
+ }
1882
+ }).on("dblclick", function(d) {
1883
+ if (d) {
1884
+ let columnLabel = "";
1885
+ context.mappings().forEach(function(mapping) {
1886
+ if (mapping.column()) columnLabel = mapping.column();
1887
+ });
1888
+ if (d.origRows) context.dblclick(context.rowToObj(d.origRows[0]), columnLabel, context._selection.selected(this));
1889
+ else context.dblclick(d.data, columnLabel, context._selection.selected(this));
1890
+ }
1891
+ }).merge(node).style("left", function(d) {
1892
+ return d.x0 + Math.max(0, d.x1 - d.x0) / 2 + "px";
1893
+ }).style("top", function(d) {
1894
+ return d.y0 + Math.max(0, d.y1 - d.y0) / 2 + "px";
1895
+ }).style("width", function() {
1896
+ return "0px";
1897
+ }).style("height", function() {
1898
+ return "0px";
1899
+ }).style("font-size", function(d) {
1900
+ return (d.children ? context.parentFontSize() : context.leafFontSize()) + "px";
1901
+ }).style("line-height", function(d) {
1902
+ return (d.children ? context.parentFontSize() : context.leafFontSize()) + "px";
1903
+ }).attr("title", tooltip).html(function(d) {
1904
+ if (!context.showRoot() && d.depth === 0) return null;
1905
+ if (d.children) if (context.enableParentLabels()) return context.parentWeightHTML(d);
1906
+ else return null;
1907
+ else return context.leafWeightHTML(d);
1908
+ }).style("background", function(d) {
1909
+ if (!context.showRoot() && d.depth === 0) {
1910
+ this.style.color = "transparent";
1911
+ return "transparent";
1912
+ }
1913
+ const light_dark = context.brighterLeafNodes() ? "brighter" : "darker";
1914
+ let _color;
1915
+ if (context.usePaletteOnParentNodes()) _color = d.children ? context._palette(d.data.label) : rgb(context._palette(d.parent.data.label))[light_dark](1);
1916
+ else {
1917
+ if (d.depth > context.depthColorLimit()) _color = rgb(d.parent.color)[light_dark](1);
1918
+ else _color = context._palette(d.data.label);
1919
+ d.color = _color;
1920
+ }
1921
+ this.style.color = Palette.textColor(_color);
1922
+ return _color;
1923
+ }).transition().duration(this.transitionDuration()).style("pointer-events", function(d) {
1924
+ return !context.showRoot() && d.depth === 0 ? "none" : "all";
1925
+ }).style("opacity", function(d) {
1926
+ return d.children ? 1 : null;
1927
+ }).style("left", function(d) {
1928
+ return d.x0 + "px";
1929
+ }).style("top", function(d) {
1930
+ return d.y0 + "px";
1931
+ }).style("width", function(d) {
1932
+ return Math.max(0, d.x1 - d.x0) + "px";
1933
+ }).style("height", function(d) {
1934
+ return Math.max(0, d.y1 - d.y0) + "px";
1935
+ }).each(function(d) {
1936
+ if (d.depth === 0) {
1937
+ this.style.color = !context.showRoot() ? "transparent" : "";
1938
+ this.style.borderColor = !context.showRoot() ? "transparent" : "";
1939
+ }
1940
+ });
1941
+ node.exit().transition().duration(this.transitionDuration()).style("opacity", 0).remove();
1942
+ function tooltip(d) {
1943
+ if (d.children && !context.enableParentTooltips()) return null;
1944
+ let retVal = d.data.label + " (" + d.value + ")";
1945
+ while (d.parent && d.parent.parent) {
1946
+ retVal = d.parent.data.label + " -> " + retVal;
1947
+ d = d.parent;
1948
+ }
1949
+ return retVal;
1950
+ }
1951
+ }
1952
+ exit(domNode, element) {
1953
+ super.exit(domNode, element);
1954
+ }
1955
+ nodeWeight(d) {
1956
+ return d.size || 1;
1957
+ }
1958
+ parentWeightHTML(d) {
1959
+ return this.showParentWeight() ? `<span class="treemap-parent-label">${d.data.label}</span><span class="treemap-parent-value">${d.value}${this.weightSuffix()}</span>` : `<span class="treemap-parent-label">${d.data.label}</span>`;
1960
+ }
1961
+ leafWeightHTML(d) {
1962
+ return this.showLeafWeight() ? `<span class="treemap-leaf-label">${d.data.label}</span><span class="treemap-leaf-value">${d.value}${this.weightSuffix()}</span>` : `<span class="treemap-leaf-label">${d.data.label}</span>`;
1963
+ }
1964
+ };
1965
+ Treemap.prototype._class += " tree_Treemap";
1966
+ Treemap.prototype.implements(ITree.prototype);
1967
+ Treemap.prototype.mixin(Utility.SimpleSelectionMixin);
1968
+ Treemap.prototype.Column = TreemapColumn;
1969
+ Treemap.prototype.publish("paletteID", "default", "set", "Color palette for this widget", Treemap.prototype._palette.switch(), { tags: ["Basic", "Shared"] });
1970
+ Treemap.prototype.publish("useClonedPalette", false, "boolean", "Enable or disable using a cloned palette", null, { tags: ["Intermediate", "Shared"] });
1971
+ Treemap.prototype.publish("mappings", [], "propertyArray", "Source Columns", null, { autoExpand: TreemapColumn });
1972
+ Treemap.prototype.publish("aggrType", null, "set", "Aggregation Type", [
1973
+ null,
1974
+ "mean",
1975
+ "median",
1976
+ "sum",
1977
+ "min",
1978
+ "max"
1979
+ ], { optional: true });
1980
+ Treemap.prototype.publish("aggrColumn", null, "set", "Aggregation Field", function() {
1981
+ return this.columns();
1982
+ }, {
1983
+ optional: true,
1984
+ disable: (w) => !w.aggrType()
1985
+ });
1986
+ Treemap.prototype.publish("fontSize", null, "number", "Font Size", null, { optional: true });
1987
+ Treemap.prototype.publish("paddingInner", 18.6, "number", "Pixel spacing between each sibling node");
1988
+ Treemap.prototype.publish("paddingOuter", 30, "number", "Pixel padding of parent nodes");
1989
+ Treemap.prototype.publish("paddingTop", 41.4, "number", "Additional top pixel padding of parent nodes");
1990
+ Treemap.prototype.publish("showRoot", false, "boolean", "Show root element");
1991
+ Treemap.prototype.publish("parentFontSize", 18, "number", "Parent font-size");
1992
+ Treemap.prototype.publish("leafFontSize", 16, "number", "Leaf font-size");
1993
+ Treemap.prototype.publish("usePaletteOnParentNodes", false, "boolean", "Assign a color from the palette to every parent node");
1994
+ Treemap.prototype.publish("depthColorLimit", 1, "number", "Assign a color from the palette to node with depth lower than this value", null, {
1995
+ optional: true,
1996
+ disable: (w) => w.usePaletteOnParentNodes()
1997
+ });
1998
+ Treemap.prototype.publish("squarifyRatio", 1, "number", "Specifies the desired aspect ratio of the generated rectangles (must be >= 1)", null, {
1999
+ optional: true,
2000
+ disable: (w) => ["treemapSquarify", "treemapResquarify"].indexOf(w.tilingMethod()) === -1
2001
+ });
2002
+ Treemap.prototype.publish("showParentWeight", true, "boolean", "Show weight of parent nodes");
2003
+ Treemap.prototype.publish("showLeafWeight", true, "boolean", "Show weight of leaf nodes");
2004
+ Treemap.prototype.publish("weightSuffix", "", "string", "Weight suffix (ex: 'ms')");
2005
+ Treemap.prototype.publish("brighterLeafNodes", false, "boolean", "Brighter/darker leaf node color (false = darker)");
2006
+ Treemap.prototype.publish("enableParentLabels", true, "boolean", "Enable parent labels");
2007
+ Treemap.prototype.publish("enableParentTooltips", true, "boolean", "Enable parent tooltips");
2008
+ Treemap.prototype.publish("transitionDuration", 250, "number", "Transition Duration");
2009
+ Treemap.prototype.publish("tilingMethod", "treemapSquarify", "set", "Transition Duration", [
2010
+ "treemapBinary",
2011
+ "treemapDice",
2012
+ "treemapResquarify",
2013
+ "treemapSlice",
2014
+ "treemapSliceDice",
2015
+ "treemapSquarify"
2016
+ ]);
2017
+
2018
+ //#endregion
2019
+ export { BUILD_VERSION, CirclePacking, Dendrogram, DendrogramColumn, DirectoryTree, Indented, IndentedColumn, PKG_NAME, PKG_VERSION, SunburstPartition, Treemap, TreemapColumn };
2020
+ //# sourceMappingURL=index.js.map!function(){try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode(".tree_CirclePacking circle{fill:#1f77b4;fill-opacity:.25;stroke:#1f77b4;stroke-width:1px}.tree_CirclePacking .leaf circle{fill:#ff7f0e;fill-opacity:1}.tree_CirclePacking .label{fill:#fff;text-anchor:middle}.tree_Dendrogram .node circle{fill:#dcf1ff;stroke:#1f77b4;stroke-width:1px}.tree_Dendrogram .node.selected circle{stroke:red}.tree_Dendrogram .node.over circle{stroke:orange}.tree_Dendrogram .node.selected.over circle{stroke:red}.tree_Dendrogram .node.selected text{fill:red}.tree_Dendrogram .node.over text{fill:orange}.tree_Dendrogram .node.selected.over text{fill:red}.tree_Dendrogram .node text{font-size:14px}.tree_Dendrogram .link{fill:none;stroke:#656565;stroke-width:1px}.tree_Indented .node rect{cursor:pointer;fill:#fff;stroke:#3182bd;stroke-width:1px}.tree_Indented .node text{pointer-events:none;font:10px sans-serif}.tree_Indented path.link{fill:none;stroke:#9ecae1;stroke-width:1.5px}.tree_Sunburst path{stroke:#fff;stroke-width:.5px;fill-rule:evenodd}.tree_Treemap *{box-sizing:border-box}.tree_Treemap .node{text-overflow:ellipsis;border:1px solid #333;position:absolute;overflow:hidden}.tree_Treemap .node.selected{border-color:red}.tree_Treemap .node.over{border-color:orange}.tree_Treemap .node.selected.over{border-color:red}.tree_Treemap .node>span.treemap-parent-label{margin:4px 4px 0;font-weight:700;display:inline-block}.tree_Treemap .node>span.treemap-parent-value{margin:4px 0 0;font-style:italic;font-weight:400}.tree_Treemap .node>span.treemap-singleton-label{margin:4px 0 0 4px;font-weight:400;display:block}.tree_Treemap .node>span.treemap-singleton-value{margin:0 0 0 4px;font-style:italic;display:block}\n/*$vite$:1*/")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}}();