mascot-vis 3.0.2 → 3.0.3
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/mascot-esm.js +1 -1
- package/dist/mascot-umd.js +186 -0
- package/package.json +1 -1
package/dist/mascot-esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// version: 3.0.
|
|
1
|
+
// version: 3.0.3
|
|
2
2
|
import*as e from"d3";const t={canvas:void 0,getCanvas:function(){return window?(void 0===this.canvas&&(this.canvas=document.createElement("canvas")),this.canvas):null},getContext:function(){var e=this.getCanvas();return e?e.getContext("2d"):null}};class r{constructor(e,t,r){this._id="predicate_"+It(),this._type=e||n.POINT,this._variableType=t,this._variableName=r,this._value=void 0}get type(){return this._type}get value(){return this._value}set value(e){this._value=e}get id(){return this._id}get variableType(){return this._variableType}get variableName(){return this._variableName}}const n=Object.freeze({POINT:"point",INTERVAL:"interval",LIST:"list"});class i extends r{constructor(e,t,r){super(e,t,r)}testElement(e){let t;if("attribute"==this._variableType){if(!e.dataScope)return!1;t=e.dataScope.getAttributeValue(this._variableName)}else t=e[this._variableName];return this._value[0]<=t&&this._value[1]>=t}testTuple(e){if("attribute"==this._variableType){let t=e[this._variableName];return this._value[0]<=t&&this._value[1]>=t}return!1}}class s extends r{constructor(e,t,r){super(e,t,r)}addValue(e){this._value||(this._value=[]),this._value.push(e)}resetValue(){this._value=void 0}testElement(e){if("attribute"==this._variableType){if(!e.dataScope)return!1;let t=e.dataScope.getAttributeValue(this._variableName);return this._value.indexOf(t)>=0}return this._value.indexOf(e[this._variableName])>=0}testTuple(e){if("attribute"==this._variableType){let t=e[this._variableName];return this._value.indexOf(t)>=0}return!1}}class a extends r{constructor(e,t,r){super(e,t,r)}testElement(e){if("attribute"==this._variableType){if(!e.dataScope)return!1;return e.dataScope.getAttributeValue(this._variableName)==this._value}return e[this._variableName]==this._value}testTuple(e){if("attribute"==this._variableType){let t=e[this._variableName];return this._value===t}return!1}}function o(e){let t,r="attribute"in e?"attribute":"property",o=e[r];switch(e.type){case n.LIST:t=new s(e.type,r,o);break;case n.INTERVAL:t=new i(e.type,r,o);break;case n.POINT:default:t=new a(e.type,r,o)}return e.value&&(t.value=e.value),t}function l(e,t){for(let r of t){if(!o(r).testElement(e))return!1}return!0}class u{constructor(e,t,r,n){this._x=e+r/2,this._y=t+n/2,this._width=r,this._height=n}translate(e,t){this._x+=e,this._y+=t}toJSON(){let e={};return e.x=this._x,e.y=this._y,e.width=this._width,e.height=this._height,e}union(e){let t=Math.min(this.left,e.left),r=Math.min(this.top,e.top),n=Math.max(this.right,e.right),i=Math.max(this.bottom,e.bottom);return new u(t,r,n-t,i-r)}clone(){return new u(this.left,this.top,this._width,this._height)}get left(){return this._x-this._width/2}set left(e){this._x=e+this._width/2}get right(){return this._x+this._width/2}set right(e){this._x=e-this._width/2}get top(){return this._y-this._height/2}set top(e){this._y=e+this._height/2}get bottom(){return this._y+this._height/2}set bottom(e){this._y=e-this._height/2}get x(){return this._x}get y(){return this._y}get center(){return this.x}get middle(){return this.y}get width(){return this._width}setWidth(e,t){switch(t){case p.RIGHT:this._x=this.right-e/2;break;case p.CENTER:this._width=2*e;break;default:this._x=this.left+e/2}this._width=e}get height(){return this._height}setHeight(e,t){switch(t){case p.TOP:this._y=this.top+e/2;break;case p.MIDDLE:this._height=2*e;break;default:this._y=this.bottom-e/2}this._height=e}contains(e,t){return this.left<=e&&this.right>=e&&this.top<=t&&this.bottom>=t}overlap(e){return!(this.right<e.left||this.bottom<e.top||this.left>e.right||this.top>e.bottom)}}function c(e){let t=e[0].clone();for(let r=1;r<e.length;r++)t=t.union(e[r]);return t}function h(e){return c(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.refBounds?e.refBounds:e.bounds)))}function d(e){return c(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.bounds)))}function f(e){let t=S(e);for(let e of t)e._updateBounds();let r=[];for(let e of t)e.parent&&!r.includes(e.parent)&&r.push(e.parent);for(let e of r)f(e)}const p=Object.freeze({TOP:"top",LEFT:"left",RIGHT:"right",BOTTOM:"bottom",CENTER:"center",MIDDLE:"middle"});function _(e){return e.id+"-bg"}function g(e){return e.id+"-path"}function y(e){switch(e){case p.TOP:return"text-before-edge";case p.BOTTOM:return"auto";case p.LEFT:return"start";case p.RIGHT:return"end";case p.CENTER:case p.MIDDLE:return"middle";default:return e}}const m=Object.freeze({fillColor:"fill",strokeColor:"stroke",strokeWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeDash:"stroke-dasharray",opacity:"opacity",fontSize:"font-size",fontFamily:"font-family",fontWeight:"font-weight",visibility:"visibility"});class b{constructor(e){let t=e||{};this._stops=[],this.type=Tt.LinearGradient,this.id=this.type+It(),this.x1="x1"in t?t.x1:0,this.x2="x2"in t?t.x2:100,this.y1="y1"in t?t.y1:0,this.y2="y2"in t?t.y2:0}toJSON(){let e={};return e.type=this.type,e.id=this.id,e.x1=this.x1,e.x2=this.x2,e.y1=this.y1,e.y2=this.y2,e.stops=this._stops,e}addStop(e,t,r){this._stops.push({offset:e,color:t,opacity:r})}get stops(){return this._stops}}class v{constructor(e){if(this._dataScope=void 0,this._type="type"in e?e.type:Tt.Mark,this._id=e.id?e.id:this._type+"_"+It(),this._classId=void 0,this._bounds=void 0,this._rotate=void 0,this._refBounds=void 0,this._styles={},void 0!==e)for(let t in m)t in e&&(this.styles[t]=e[t])}get scene(){return P(this)}set strokeColor(e){this.styles.strokeColor=e}get strokeColor(){return this.styles.strokeColor}set strokeWidth(e){this.styles.strokeWidth=e}get strokeWidth(){return this.styles.strokeWidth}set strokeDash(e){this.styles.strokeDash=e}get strokeDash(){return this.styles.strokeDash}set fillColor(e){this.styles.fillColor=e}get fillColor(){return this.styles.fillColor}get rotation(){return this._rotate}get id(){return this._id}set id(e){this.getScene()?(delete this.getScene()._itemMap[this._id],this._id=e,this.getScene()._itemMap[e]=this):this._id=e}get classId(){return this._classId?this._classId:this._id}set classId(e){this._classId=e}get type(){return this._type}get bounds(){return this._bounds||this._updateBounds(),this._bounds}get refBounds(){return this._refBounds?this._refBounds:this.bounds}contains(e,r){if(!this.bounds)return!1;if(!this.bounds.contains(e,r))return!1;switch(this.type){case Tt.Rect:case Tt.PointText:return!0;case Tt.Circle:return Math.sqrt(Math.pow(e-this.x,2)+Math.pow(r-this.y,2))<=this.radius+this.strokeWidth;case Tt.Path:{let n=t.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),this.closed?n.isPointInPath(i,e,r):n.isPointInStroke(i,e,r)}case Tt.Line:{let n=t.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),n.isPointInStroke(i,e,r)}default:{let n=t.getContext(),i=new Path2D(this.getSVGPathData());return n.isPointInPath(i,e,r)}}}set dataScope(e){this._dataScope=e}get dataScope(){return this._dataScope}get styles(){return this._styles}set styles(e){this._styles=e}set visibility(e){this.styles.visibility=e}get visibility(){return this.styles.visibility?this.styles.visibility:"visible"}get opacity(){return"opacity"in this.styles?this.styles.opacity:1}set opacity(e){this.styles.opacity=e}copyPropertiesTo(e){e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone())}}function x(e){return e instanceof v&&e.type!==Tt.Gridlines}const E=Object.freeze({Area:"area",Rect:"rect",Ellipse:"ellipse",Circle:"circle",Pie:"pie",Ring:"ring",Arc:"arc",Line:"line",Path:"path",Image:"image",PointText:"text",Polygon:"polygon",BezierCurve:"bezierCurve"});function w(e,t,r){const n=document.getElementById(e),i=n.createSVGPoint();i.x=t,i.y=r;const s=i.matrixTransform(n.getScreenCTM().inverse());return[s.x,s.y]}function A(e,t,r,n){return Math.sqrt(Math.pow(e-r,2)+Math.pow(t-n,2))}function C(e,t,r,n,i){const s=i*Math.PI/180,a=e-r,o=t-n;return{x:a*Math.cos(s)-o*Math.sin(s)+r,y:a*Math.sin(s)+o*Math.cos(s)+n}}const R={svg:void 0,getSVG:function(){return window?(void 0===this.svg&&(this.svg=document.createElement("svg")),this.svg):null}},k={canvas:void 0,getCanvas:function(){return window?(void 0===this.canvas&&(this.canvas=document.createElement("canvas")),this.canvas):null},getContext:function(){var e=this.getCanvas();return e?e.getContext("2d"):null}};function S(e,t){let r=P(e),n=t||r;if("vertex"===e.type){return T(e,I(n,[{property:"classId",value:e.parent.classId}]))}if("segment"===e.type){return O(e,I(n,[{property:"classId",value:e.parent.classId}]))}return e.classId?I(n,[{property:"classId",value:e.classId}]):[e]}function T(e,t){if(!e.classId){if(e.dataScope){let r=e.parent;if(!r)throw new Error("vertex has no parent mark");let n=[];if(r.type===Tt.Area){let i=r.vertices.indexOf(e)<r.vertices.length/2;for(let e of t){let t=i?e.vertices.slice(0,e.vertices.length/2):e.vertices.slice(e.vertices.length/2);n=n.concat(t.filter((e=>e.dataScope)))}}else for(let e of t)n=n.concat(e.vertices.filter((e=>e.dataScope)));return n}{let r=e.parent;if(!r)throw new Error("vertex has no parent mark");let n=r.vertices.indexOf(e),i=[];for(let e of t)i.push(e.vertices[n]);return i}}}function O(e,t){if(e.dataScope){if(!e.parent)throw new Error("segment has no parent mark");let r=[];for(let e of t)r=r.concat(e.segments);return r}{let r=e.parent;if(!r)throw new Error("segment has no parent mark");let n=r.segments.indexOf(e),i=[];for(let e of t)i.push(e.segments[n]);return i}}function I(e,t){let r=[];return V(e,t,r),r}function N(e,t){let r=e.children.filter((e=>e.type==Tt.Collection));if(0!==r.length)for(let e of r){let r=e;for(;r&&r.dataScope;){if(r.dataScope.hasAttribute(t))return r;r=r.children?r.children[0]:void 0}}}function L(e){return e.type==Tt.Collection?e:e.parent?L(e.parent):void 0}function V(e,t,r){if(e&&"axis"!=e.type&&"legend"!=e.type&&"gridlines"!=e.type)if(l(e,t)&&r.push(e),e.vertices)for(let n of e.vertices.concat(e.segments))l(n,t)&&r.push(n);else if(e.children&&e.children.length>0)for(let n of e.children)V(n,t,r)}function P(e){let t=e;for(;t;){if(t.type==Tt.Scene)return t;t=t.parent}}function D(e){let t=e;for("vertex"!=t.type&&"segment"!=t.type||(t=t.parent);t.parent&&[Tt.Collection,Tt.Glyph].includes(t.parent.type);)t=t.parent;return t}function B(e,t,r,n){let i=I(e,[{property:"type",value:t}]);for(let e of i)if(M(e,r,n))return e}function M(e,r,n){switch(e.type){case Tt.Path:case Tt.Arc:case Tt.BezierCurve:case Tt.Line:{let i=t.getContext(),s=new Path2D(e.getSVGPathData());return i.lineWidth=Math.max(e.strokeWidth,2.5),i.stroke(s),e.closed?i.isPointInPath(s,r,n):i.isPointInStroke(s,r,n)}case Tt.Circle:{let t=e.x,i=e.y;if(e.rotation){let r=C(t,i,e.rotation[1],e.rotation[2],e.rotation[0]);t=r.x,i=r.y}return Math.sqrt(Math.pow(r-t,2)+Math.pow(n-i,2))<=e.radius+e.strokeWidth}default:return e.bounds.contains(r,n)}}function G(e,t){let r=[];if(j(e,r),t){let e={};for(let t of r)e[t.classId]=t;return Object.values(e)}return r}function j(e,t){if(x(e))t.push(e);else if(e.type==Tt.Collection&&e.children)for(let r of e.children)j(r,t);else if(e.type==Tt.Glyph&&e.children)for(let r of e.children)j(r,t);else if(e.type==Tt.Composite&&e.children)for(let r of e.children)j(r,t)}class z{constructor(){this._refElements=[]}addRefElement(e){this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}const F=Object.freeze({GRID:"grid",STACK:"stack",PACKING:"packing",FORCE:"force",DIRECTED:"directedgraph",TIDYTREE:"tidytree",TREEMAP:"treemap",STRATA:"strata",CIRCULAR:"circular",CLUSTER:"cluster"});function U(e,t){return!!(e.startsWith("h")&&[p.LEFT,p.CENTER,p.RIGHT].indexOf(t)>=0)||(!!(e.startsWith("v")&&[p.TOP,p.MIDDLE,p.BOTTOM].indexOf(t)>=0)||(console.warn("Invalid alignment:",t),!1))}class H{constructor(e){this._id=e+"_"+It(),this._type=e,this._inputVars=[],this._outputVars=[]}run(){console.log("-",this._type,this.outputVar.element?this.outputVar.element.type:"",this.outputVar.channel?this.outputVar.channel:"")}get id(){return this._id}get type(){return this._type}get inputVars(){return this._inputVars}get outputVars(){return this._outputVars}get outputVar(){return this._outputVars[0]}isIsolated(){return 0==this._inputVars.length&&0==this._outputVars.length}}const W=Object.freeze({CONDUIT:"conduit",ENCODER:"encoder",LAYOUT:"layout",LINK_PLACER:"linkRouter",CONSTRAINT:"constraint",EVAL_BBOX:"evalBBox",EVAL_REFBOUNDS:"evalRefBounds",AFFIXER:"affixer",ALIGNER:"aligner",DOMAIN_BUILDER:"domainBuilder",SCALE_BUILDER:"scaleBuilder",AXIS_PATH_PLACER:"axisPathPlacer",AXIS_TICKS_PLACER:"axisTicksPlacer",AXIS_LABELS_PLACER:"axisLabelsPlacer",AXIS_TITLE_PLACER:"axisTitlePlacer",GRIDLINES_PLACER:"gridlinesPlacer",GRID_LAYOUT:"gridLayout",STACK_LAYOUT:"stackLayout",PACK_LAYOUT:"packLayout",FORCE_LAYOUT:"forceLayout",DIRECTED_LAYOUT:"directedLayout",TIDY_TREE_LAYOUT:"tidyTreeLayout",TREEMAP_LAYOUT:"treemapLayout",STRATA_LAYOUT:"strataLayout",CIRCULAR_LAYOUT:"circularLayout",CLUSTER_LAYOUT:"clusterLayout",BIN_TRANSFORMER:"binTransformer",FILTER_TRANSFORMER:"filterTransformer",KDE_TRANSFORMER:"kdeTransformer",TARGET_EVALUATOR:"targetEvaluator"});class Y{constructor(e){this._id="v_"+It(),this._type=e,this._incomings=[],this._outgoings=[],this._undirected=[]}get id(){return this._id}get incomingEdges(){return this._incomings}get outgoingEdges(){return this._outgoings}get undirectedEdges(){return this._undirected}get type(){return this._type}get incomingDataflow(){for(let e of this._incomings)if(e.fromNode&&e.fromNode instanceof H)return e.fromNode;return null}isIsolated(){return 0==this._incomings.length&&0==this._outgoings.length}}const X=Object.freeze({CHANNEL:"channel",PROPERTY:"property",ATTRIBUTE:"attribute",ITEMS:"items",DATASCOPE:"datascope",DOMAIN:"domain",BOUNDS:"bounds",ORDER:"order",SCALE:"scale",COND_ENCODING:"condEncoding",AFFIXATION:"affixation",ALIGNMENT:"alignment",TRIGGER:"trigger"});class q extends Y{constructor(e,t){super(e),this._condEnc=t}get condEncoding(){return this._condEnc}}const K=Object.freeze({RowFirst:"rowFirst",ColumnFirst:"columnFirst"}),Z=Object.freeze({TopLeft:"topLeft",TopRight:"topRight",BottomLeft:"bottomLeft",BottomRight:"bottomRight"}),$={HORIZONTAL:"horizontal",VERTICAL:"vertical",ANGULAR:"angular",RADIAL:"radial"},J={Left2Right:"l2r",Right2Left:"r2l",Top2Bottom:"t2b",Bottom2Top:"b2t"},Q=Object.freeze({CLOCKWISE:"clockwise",ANTI_CLOCKWISE:"anti-clockwise"}),ee=Object.freeze({INWARD:"inward",OUTWARD:"outward"});class te{constructor(e,t,r,n){this.type="vertex",this._id=n,this._x=e,this._y=t,this._dataScope=void 0,this.parent=r,this.shape=void 0,this.width=0,this.height=0,this.radius=0,this.fillColor="#555",this.opacity=1,this.strokeWidth=0,this.strokeColor="#aaa",this._polarAngle=void 0}get dataScope(){return this._dataScope}set dataScope(e){this._dataScope=e}get bounds(){switch(this.shape){case"rect":return new u(this.x-this.width/2,this.y-this.height/2,this.width,this.height);case"circle":return new u(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius);default:return new u(this.x-.5,this.y-.5,1,1)}}get id(){return this.parent.id+"_v_"+this._id}_clone(e){let t=new te(this.x,this.y,e,this._id);return this._dataScope&&(t._dataScope=this._dataScope.clone()),t.shape=this.shape,t.width=this.width,t.height=this.height,t.radius=this.radius,t.fillColor=this.fillColor,t.opacity=this.opacity,t.strokeWidth=this.strokeWidth,t.strokeColor=this.strokeColor,t}get polarAngle(){return this._polarAngle}get scene(){return this.parent.scene}get x(){return this._x}get y(){return this._y}}te.styles=["vxShape","vxWidth","vxHeight","vxRadius","vxFillColor","vxStrokeColor","vxStrokeWidth","vxOpacity"];class re{constructor(e,t,r,n){this.type="segment",this._id=n,this.vertex1=e,this.vertex2=t,this.dataScope=void 0,this.parent=r}get id(){return this.parent.id+"_s_"+this._id}get x(){return(this.vertex1.x+this.vertex2.x)/2}get y(){return(this.vertex1.y+this.vertex2.y)/2}get scene(){return this.parent.scene}}class ne extends v{constructor(e){super(e),this._type="type"in e?e.type:Tt.Path,this.vertices=[],this.vertexCounter=0,this._sortBy={},this.segmentCounter=0,this.segments=[],this.anchor=void 0,this.closed=!1,this.curveMode="linear",this._vxShape=void 0,this._vxWidth=0,this._vxHeight=0,this._vxRadius=0,this._vxFillColor="#555555",this._vxStrokeColor="#aaaaaa",this._vxStrokeWidth=0,this._vxOpacity=1;for(let t of te.styles)t in e&&(this["_"+t]=e[t]);"vertices"in e&&this._setVertices(e.vertices),this._sourceAnchor="sourceAnchor"in e?e.sourceAnchor:["center","middle"],this._targetAnchor="targetAnchor"in e?e.targetAnchor:["center","middle"],this._sourceOffset="sourceOffset"in e?e.sourceOffset:[0,0],this._targetOffset="targetOffset"in e?e.targetOffset:[0,0],this._strength="strength"in e?e.strength:.85,"strokeColor"in this.styles||(this.styles.strokeColor="#ccc"),"fillColor"in this.styles||(this.styles.fillColor="none"),"strokeWidth"in this.styles||(this.styles.strokeWidth=1),"strokeDash"in this.styles||(this.styles.strokeDash="none")}_setVertices(e){let t;this.vertices=[],this.segments=[],this.vertexCounter=0,this.segmentCounter=0;for(let r=0;r<e.length;r++)if(r!=e.length-1||e[r][0]!==e[0][0]||e[r][1]!==e[0][1]||this.type!==Tt.Path){t=new te(e[r][0],e[r][1],this,this.vertexCounter++);for(let e of te.styles)if(this[e]){let r=e.replace("vx","");t[r[0].toLowerCase()+r.slice(1)]=this[e]}this.vertices.push(t),r>0&&this.segments.push(new re(this.vertices[r-1],this.vertices[r],this,this.segmentCounter++))}let r=e[0],n=e[e.length-1];(r[0]===n[0]&&r[1]===n[1]||this.type===Tt.Rect)&&(this.closed=!0,"fillColor"in this.styles||(this.styles.fillColor="#fff"),this.segments.push(new re(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++)))}copyPropertiesTo(e){e.attrs=Object.assign({},this.attrs),e.styles=Object.assign({},this.styles);for(let t of te.styles)this["_"+t]&&(e["_"+t]=this["_"+t]);this._dataScope&&(e._dataScope=this._dataScope.clone()),e.closed=this.closed,e.curveMode=this.curveMode,e.vertices=[],e.segments=[];for(let t of this.vertices)e.vertices.push(t._clone(e));e.segmentCounter=0;for(let t=1;t<e.vertices.length;t++)e.segments.push(new re(e.vertices[t-1],e.vertices[t],e,e.segmentCounter++));e.closed&&e.segments.push(new re(e.vertices[e.vertices.length-1],e.vertices[0],e,e.segmentCounter++)),e._sourceAnchor=this._sourceAnchor.slice(),e._targetAnchor=this._targetAnchor.slice(),e._sourceOffset=this._sourceOffset.slice(),e._targetOffset=this._targetOffset.slice(),e._beta=this._beta}get bounds(){return this._bounds||this._updateBounds(),this._bounds}get x(){return this.bounds.x}get y(){return this.bounds.y}get strokeColor(){return this.styles.strokeColor}get strokeWidth(){return this.styles.strokeWidth}get fillColor(){return this.styles.fillColor}set fillColor(e){this.styles.fillColor=e}get strokeDash(){return this.styles.strokeDash}set strokeDash(e){this.styles.strokeDash=e}resize(e,t,r,n){let i=this.bounds,s=0===i.width?1:i.width,a=0===i.height?1:i.height;if("right"===r)for(let t of this.vertices)t._x=i.right-e/s*(i.right-t.x);else for(let t of this.vertices)t._x=i.left+e/s*(t.x-i.left);if("top"===n)for(let e of this.vertices)e._y=i.top+t/a*(e.y-i.top);else for(let e of this.vertices)e._y=i.bottom-t/a*(i.bottom-e.y);this._updateBounds()}_updateBounds(){let e=[],t=[];if(this._d){const r=this._d.match(/[a-zA-Z][^a-zA-Z]*/g),n=" ";r.forEach((r=>{let i=r.slice(1).trim().split(n).map(Number);for(let[r,n]of i.entries())r%2==0?e.push(n):t.push(n)}))}else e=this.vertices.map((e=>e.x)),t=this.vertices.map((e=>e.y));let r=Math.min(...e),n=Math.min(...t),i=Math.max(...e),s=Math.max(...t),a=i-r,o=s-n;if(this._bounds=new u(r,n,a,o),this.type===Tt.Line||this.type===Tt.Path){let e=this.styles.strokeWidth?this.styles.strokeWidth:1;r===i?this._bounds=new u(r-e/2,n,i-r+e,s-n):n===s&&(this._bounds=new u(r,n-e/2,i-r,s-n+e))}}addVertex(e,t,r){let n=new te(e,t,this,this.vertexCounter++);this.vertices.splice(r,0,n)}sortVertices(e,t){this.vertices.sort(((t,r)=>t[e]-r[e])),t&&this.vertices.reverse();for(let e=0;e<this.segments.length;e++){let t=this.segments[e];t.vertex1=this.vertices[e],t.vertex2=this.vertices[(e+1)%this.vertices.length]}}sortVerticesByData(e,t,r){let n;n=r?(t,n)=>r.indexOf(t.dataScope.getValue(e))-r.indexOf(n.dataScope.getAttributeValue(e)):(t,r)=>t.dataScope.getAttributeValue(e)<r.dataScope.getAttributeValue(e)?-1:1,this.vertices.sort(n),t&&this.vertices.reverse();for(let e=0;e<this.segments.length;e++){let t=this.segments[e];t.vertex1=this.vertices[e],t.vertex2=this.vertices[(e+1)%this.vertices.length]}}getSVGPathData(){if(this._d)return this._d;let t=e.path(),r=this._getD3CurveFunction(this.curveMode)(t);r.lineStart();for(let e of this.vertices)r.point(e.x,e.y);return this.closed&&r.point(this.vertices[0].x,this.vertices[0].y),r.lineEnd(),t._}get firstVertex(){return this.vertices[0]}get firstSegment(){return this.segments[0]}get lastVertex(){return this.vertices[this.vertices.length-1]}get lastSegment(){return this.segments[this.segments.length-1]}_getD3CurveFunction(t){switch(t){case ae.Natural:return e.curveNatural;case ae.Basis:return e.curveBasis;case ae.BumpX:return e.curveBumpX;case ae.BumpY:return e.curveBumpY;case ae.Linear:return e.curveLinear;case ae.Step:return e.curveStep;case ae.CatmullRom:return e.curveCatmullRom;case ae.Cardinal:return e.curveCardinal;case ae.Bundle:return e.curveBundle.beta(.5);default:return e.curveLinear}}get vxShape(){return this._vxShape}get vxWidth(){return this._vxWidth}get vxHeight(){return this._vxHeight}get vxRadius(){return this._vxRadius}get vxFillColor(){return this._vxFillColor}get vxStrokeColor(){return this._vxStrokeColor}get vxStrokeWidth(){return this._vxStrokeWidth}get vxOpacity(){return this._vxOpacity}get sourceAnchor(){return this._sourceAnchor}get targetAnchor(){return this._targetAnchor}get sourceOffset(){return this._sourceOffset}get targetOffset(){return this._targetOffset}}function ie(e,t){const r=R.getSVG();let n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttribute("d",e.getSVGPathData()),r.appendChild(n);let i=n.getTotalLength();return n.getPointAtLength(i*t)}function se(e){return e instanceof ne&&e.source&&e.target}const ae={Natural:"natural",Basis:"basis",BumpX:"bumpX",BumpY:"bumpY",Bundle:"bundle",Linear:"linear",Step:"step",CatmullRom:"CatmullRom",Cardinal:"cardinal"};function oe(e,t,r){const n=e.match(/[a-zA-Z][^a-zA-Z]*/g),i=",";return n.map((e=>{const n=e[0],s=e.slice(1).trim();if("M"===n||"L"===n||"T"===n){const[e,a]=s.split(i).map(Number);return`${n}${e+t} ${a+r}`}if("C"===n){const e=s.split(i).map(Number);return`${n}${e[0]+t} ${e[1]+r} ${e[2]+t} ${e[3]+r} ${e[4]+t} ${e[5]+r}`}if("Q"===n){const e=s.split(i).map(Number);return`${n}${e[0]+t} ${e[1]+r} ${e[2]+t} ${e[3]+r}`}if("A"===n){const e=s.split(i).map(Number);return`${n}${e[0]} ${e[1]} ${e[2]} ${e[3]} ${e[4]} ${e[5]+t} ${e[6]+r}`}return"Z"===n||"z"===n?n:e})).join(" ")}class le extends ne{constructor(e){super(e),this._type=Tt.Arc,this.closed=!0,this._x="x"in e?e.x:100,this._y="y"in e?e.y:100,this._innerRadius="innerRadius"in e?e.innerRadius:100,this._outerRadius="outerRadius"in e?e.outerRadius:200,this._thickness="thickness"in e?e.thickness:this._outerRadius-this._innerRadius,this._startAngle="startAngle"in e?e.startAngle:0,this._endAngle="endAngle"in e?e.endAngle:90,this._sr=ue(this._startAngle),this._er=ue(this._endAngle),this._direction="direction"in e?e.direction:Q.ANTI_CLOCKWISE;let t=this._x+this._innerRadius*Math.cos(this._sr),r=this._y-this._innerRadius*Math.sin(this._sr),n=this._x+this._innerRadius*Math.cos(this._er),i=this._y-this._innerRadius*Math.sin(this._er),s=this._x+this._outerRadius*Math.cos(this._sr),a=this._y-this._outerRadius*Math.sin(this._sr),o=this._x+this._outerRadius*Math.cos(this._er),l=this._y-this._outerRadius*Math.sin(this._er);this._setVertices([[t,r],[s,a],[o,l],[n,i]])}get type(){return 0===this._innerRadius?Tt.Pie:Tt.Arc}get innerRadius(){return this._innerRadius}get outerRadius(){return this._outerRadius}get thickness(){return this._outerRadius-this._innerRadius}get direction(){return this._direction}get x(){return this._x}get y(){return this._y}get startAngle(){return this._startAngle}get endAngle(){return this._endAngle}get angle(){return this._endAngle<this._startAngle?this._endAngle+360-this._startAngle:this._endAngle-this._startAngle}setAngles(e,t){this._startAngle=e,this._endAngle=t,this._sr=ue(this._startAngle),this._er=ue(this._endAngle),this.vertices[0]._x=this._x+this._innerRadius*Math.cos(this._sr),this.vertices[0]._y=this._y-this._innerRadius*Math.sin(this._sr),this.vertices[1]._x=this._x+this._outerRadius*Math.cos(this._sr),this.vertices[1]._y=this._y-this._outerRadius*Math.sin(this._sr),this.vertices[2]._x=this._x+this._outerRadius*Math.cos(this._er),this.vertices[2]._y=this._y-this._outerRadius*Math.sin(this._er),this.vertices[3]._x=this._x+this._innerRadius*Math.cos(this._er),this.vertices[3]._y=this._y-this._innerRadius*Math.sin(this._er)}_updateBounds(){let e=this.vertices.map((e=>e.x)),t=this.vertices.map((e=>e.y)),r=Math.min(...e),n=Math.min(...t),i=Math.max(...e)-r,s=Math.max(...t)-n;this._bounds=new u(r,n,i,s)}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._innerRadius=this._innerRadius,e._outerRadius=this._outerRadius,e._startAngle=this._startAngle,e._endAngle=this._endAngle,e._thickness=this._thickness,e._direction=this._direction,e._sr=this._sr,e._er=this._er}getSVGPathData(){let e=this._endAngle<this._startAngle?this._endAngle+360-this._startAngle:this._endAngle-this._startAngle,t=e>180?1:0;return["M "+this.vertices[0].x+", "+this.vertices[0].y,"L "+this.vertices[1].x+", "+this.vertices[1].y,"A "+[this._outerRadius,this._outerRadius,e,t,0,this.vertices[2].x,this.vertices[2].y].join(" "),"L "+this.vertices[3].x+", "+this.vertices[3].y,"A "+[this._innerRadius,this._innerRadius,e,t,1,this.vertices[0].x,this.vertices[0].y].join(" ")].join(" ")}}function ue(e){return e*Math.PI/180}function ce(e){return 180*e/Math.PI}function he(e){return(e%360+360)%360}function de(e,t,r,n){let i=e-r,s=n-t;return Math.atan2(s,i)*(180/Math.PI)}class fe{constructor(e){this._attr2value={},this._dt=e,this._tuples=this._dt.data}isFullTable(){return 0===Object.keys(this._attr2value).length}isEmpty(){return 0==this._tuples.length}get numTuples(){return this._tuples.length}get attributes(){return Object.keys(this._attr2value)}get dataTable(){return this._dt}get filters(){return this._attr2value}merge(e){let t=new fe(this._dt);for(let e in this._attr2value)t=t.cross(e,this._attr2value[e]);for(let r in e._attr2value)t=t.cross(r,e._attr2value[r]);return t}cross(e,t){if(e in this._attr2value&&this._attr2value[e]!==t)return console.warn("Conflict in attribute values when merging dataScope:",e,this._attr2value[e],t),this;let r=this.clone();return r._attr2value[e]=t,r._updateTuples(e,t),r}clone(){let e=new fe(this._dt);return e._attr2value=Object.assign({},this._attr2value),e._tuples=this._tuples.map((e=>e)),e}getAttributeValue(e){let t=this.getAttributeValues(e);return t.length,t[0]}getAttributeValues(e){let t=this._tuples.map((t=>t[e]));return t=[...new Set(t)],t}getUniqueAttributeValues(e){let t=this._tuples.map((t=>t[e]));return[...new Set(t)]}hasAttribute(e){return e in this._attr2value}getAttributeType(e){return this._dt.getAttributeType(e)}aggregateNumericalAttribute(t,r){let n=this._tuples.map((e=>e[t]));switch(r){case _e.Max:return Math.max(...n);case _e.Min:return Math.min(...n);case _e.Avg:case _e.Mean:return e.mean(n);case _e.Median:return e.median(n);case _e.Count:return n.length;case _e.Percentile25:return e.quantile(n,.25);case _e.Percentile75:return e.quantile(n,.75);case _e.Sum:default:return e.sum(n)}}_updateTuples(e,t){this._tuples=this._tuples.filter((r=>r[e]==t))}get tuples(){return this._tuples}}function pe(e){return"vertex"==e.type||"segment"==e.type?e.dataScope?e.dataScope:e.parent.dataScope:e.dataScope}const _e={Max:"max",Min:"min",Avg:"avg",Median:"median",Sum:"sum",Count:"count",Mean:"mean",Percentile25:"percentile 25",Percentile75:"percentile 75"};class ge{constructor(e,t){this._id=Tt.TreeData+It(),this.initialize(e,t)}initialize(e,t){this.url=t,this._data=e,this._nodeList=[],this._linkList=[],this._nodeHash={},this._traverse(e,this._nodeList,this._linkList),this._nodeTable=new Nt(this._nodeList,"nodes"),this._linkTable=new Nt(this._linkList,"links"),this._nodeTable.tree=this,this._linkTable.tree=this}get nodeTable(){return this._nodeTable}get linkTable(){return this._linkTable}_traverse(e,t,r,n=0){let i={};xe in e||(e[xe]="n"+t.length),t.push(i),e._depth=n;for(let s in e)if("children"==s&&e[s]&&e[s].length>0)for(let i of e[s]){let s=this._traverse(i,t,r,n+1);r.push({parent:e[xe],child:s})}else i[s]=e[s];return this._nodeHash[i[xe]]=i,i[xe]}getNodeDataScope(e){return new fe(this._nodeTable).cross(Vt,e[Vt])}getNode(e){return this._nodeHash[e]}getRoot(){return this._nodeTable.data[0]}getChildren(e){let t=e[xe],r=[],n=this._linkTable.data,i=this._nodeTable.data;for(let e in n)if(n[e].parent==t){let t=n[e].child,s=i.findIndex((e=>e[xe]==t));r.push(i[s])}return r}getParent(e){let t=e[xe],r=this._linkTable.data,n=this._nodeTable.data;for(let e in r)if(r[e].child==t){let t=r[e].parent,i=n.findIndex((e=>e[xe]==t));return n[i]}}}function ye(e){return e.dataScope._dt.tree}class me{constructor(e,t){this._id=Tt.NetworkData+It(),this.initialize(e,t)}initialize(e,t){this.url=t,this._nodeTable=new Nt(e.nodes,this._id+"_nodes"),this._linkTable=new Nt(e.links,this._id+"_links"),this._nodeTable.graph=this,this._linkTable.graph=this,this._rawNodes=e.nodes,this._rawLinks=e.links,this._nodeHash={};for(let t of e.nodes)this._nodeHash[t[xe]]=t}get nodeTable(){return this._nodeTable}get linkTable(){return this._linkTable}get nodeList(){return this._rawNodes}get linkList(){return this._rawLinks}getNode(e){return this._nodeHash[e]}getLinks(e){let t=e[xe],r=this._rawLinks,n=[];for(let e in r)r[e].target!==t&&r[e].source!==t||n.push(r[e]);return n}buildNodeHierarchy(e){let t={};return t[xe]="root",ve(t,this._rawNodes,e),new ge(t,this.url)}}function be(e){return e.dataScope._dt.graph}function ve(e,t,r){if(0===t.length||0===r.length)return;"children"in e||(e.children=[]);let n={};for(let e of t){let t=e[r[0]];t in n||(n[t]=[]),n[t].push(e)}if(1===r.length)for(let t in n){let r={children:n[t]};r[xe]=t,e.children.push(r)}else for(let t in n){let i={};i[xe]=t,e.children.push(i),ve(i,n[t],r.slice(1))}}const xe="id";function Ee(e,t){if(t.hasAttribute(e))return!0;if(t.tree&&t.tree.nodeTable.hasAttribute(e.split(".")[1]))return!0;throw new Error(["Attribute",e,"does not exist in the table",t.name].join(" "))}const we=Object.freeze({Boolean:"boolean",Integer:"integer",Number:"number",Date:"date",String:"string"});function Ae(e){var t=Object.values(we);for(let r=0;r<e.length;r++){let n=e[r];if(null!=n){for(let e=0;e<t.length;e++)Ce[t[e]](n)||(t.splice(e,1),e-=1);if(1==t.length)return t[0]}}return t[0]}const Ce={boolean:function(e){return"true"===e||"false"===e||!0===e||!1===e||"[object Boolean]"==toString.call(e)},integer:function(e){return Ce.number(e)&&(e=+e)==~~e},number:function(e){return!isNaN(+e)&&"[object Date]"!=toString.call(e)},date:function(e){let t=new Date(e);return null!=t&&!isNaN(t)},string:function(e){return!0}};function Re(t,r){let n={};switch(r){case we.Boolean:n.trueCount=t.filter((e=>e)).length,n.falseCount=t.filter((e=>!e)).length;break;case we.Date:n.min=e.min(t),n.max=e.max(t),n.extent=[n.min,n.max],n.unique=[...new Set(t)];break;case we.String:n.unique=[...new Set(t)];break;default:n.min=e.min(t),n.max=e.max(t),n.extent=[n.min,n.max],n.mean=e.mean(t),n.median=e.median(t),n.unique=[...new Set(t)]}return n}function ke(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=we.String&&s!=we.Date&&s!=we.Number&&s!=we.Integer)throw new Error("Densify only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Tt.Line,Tt.Circle,Tt.Rect,Tt.Area].indexOf(e.type)<0)return!1;if(e.dataScope){let t=S(e,e.scene);for(let e of t)if(e.dataScope.numTuples>1)return!0;return!1}return!0}(t))throw new Error("The "+t.type+" is not dividable");switch(t.type){case Tt.Line:return function(e,t,r){let n,i,s=S(e);for(let a of s){let s=a.dataScope?a.dataScope:new fe(r),o=r.getUniqueAttributeValues(t).map((e=>s.cross(t,e)));o=o.filter((e=>!e.isEmpty())),1===o.length&&o.push(o[0].clone());let l=Object.assign({},a.styles);for(let e of te.styles)a[e]&&(l[e]=a[e]);let u=a.vertices[0].x,c=a.vertices[0].y,h=[],d=a.vertices[1].x-u,f=a.vertices[1].y-c;for(let e=0;e<o.length;e++)h.push([u+e*d/(o.length-1),c+e*f/(o.length-1)]);l.vertices=h,l.type="path";let p=At(l);i||(i=p.id),p._classId=i,p.dataScope=s,p._updateBounds(),p._refBounds=p.bounds.clone();let _=a.parent;_.addChild(p),_.removeChild(a);for(let[e,t]of p.vertices.entries())t.dataScope?t.dataScope=t.dataScope.merge(o[e]):t.dataScope=o[e];a==e&&(n=p)}return n}(t,r,i);case Tt.Circle:return function(e,t,r,n,i){let s,a,o=S(e),l=r.getAttributeType(t);for(let u of o){let o=u.dataScope?u.dataScope:new fe(r),c=r.getUniqueAttributeValues(t).map((e=>o.cross(t,e)));c=l==we.Number?c:c.filter((e=>!e.isEmpty()));let h=c.length;if(h<3)throw new Error("INSUFFICIENT_DATA_SCOPES");let d=n||90,f=360/h,p=[],_=[],g="clockwise"==(i||"clockwise")?-1:1;for(let e=0;e<c.length;e++){let t=d+g*e*f;_[e]=t;let r=Se(u.x,u.y,u.radius,_[e]);p.push(r)}let y=Object.assign({},u.styles);y.vertices=p,y.type="polygon",y.x=u.x,y.y=u.y,y.radius=u.radius;let m=At(y);a||(a=m.id),m._classId=a,m.dataScope=o;let b=u.parent;b.addChild(m),b.removeChild(u);for(let[e,t]of m.vertices.entries())t._polarAngle=_[e],e>=c.length?t.dataScope=o.merge(c[2*c.length-1-e]):t.dataScope=o.merge(c[e]);u===e&&(s=m)}return s}(t,r,i);case Tt.Rect:return function(e,t,r,n){let i,s,a=S(e),o=t||$.HORIZONTAL;if(o!=$.HORIZONTAL&&o!=$.VERTICAL)throw new Error("Unknown orientation: "+o);for(let t of a){let a=n.getAttributeType(r),l=t.dataScope?t.dataScope:new fe(n),u=n.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));u=a==we.Number?u:u.filter((e=>!e.isEmpty())),1===u.length&&u.push(u[0].clone()),a!=we.Number&&a!=we.Date||u.sort(((e,t)=>e._attr2value[r]>t._attr2value[r]?1:-1));let c=Object.assign({},t.styles),h=t.vertices[0].x,d=t.vertices[0].y,f=t.vertices[t.vertices.length-2].x,_=t.vertices[t.vertices.length-2].y,g=[],y=f-h,m=_-d;for(let e=0;e<u.length;e++)g.push(o==$.VERTICAL?[f,d+e*m/(u.length-1)]:[h+e*y/(u.length-1),d]);for(let e=0;e<u.length;e++)g.push(o==$.VERTICAL?[h,d+(u.length-1-e)*m/(u.length-1)]:[h+(u.length-1-e)*y/(u.length-1),_]);c.vertices=g,c.type="area";let b=At(c);s||(s=b.id),b._classId=s,b.dataScope=l,b.orientation=o,b.baseline=o===$.HORIZONTAL?p.BOTTOM:p.LEFT;let v=t.parent;v.addChild(b),v.removeChild(t);for(let[e,t]of b.vertices.entries())e>=u.length?t.dataScope=l.merge(u[2*u.length-1-e]):t.dataScope=l.merge(u[e]);t===e&&(i=b)}return i}(t,n,r,i)}}function Se(e,t,r,n){return[r*Math.cos(ue(n))+e,t-r*Math.sin(ue(n))]}class Te extends Y{constructor(e,t,r){super(e),this._channel=t,this._elem=r}get channel(){return this._channel}get element(){return this._elem}}const Oe=Object.freeze({X:"x",Y:"y",WIDTH:"width",HEIGHT:"height",RADIUS:"radius",FILLCOLOR:"fillColor",STROKECOLOR:"strokeColor",FILLGRADIENT:"fillGradient",TEXT:"text",ANGLE:"angle",THICKNESS:"thickness",AREA:"area",FONTSIZE:"fontSize",RADIALDISTANCE:"radialDistance",STROKEWIDTH:"strokeWidth",OPACITY:"opacity",VISIBILITY:"visibility",STRENGTH:"strength"});function Ie(e,t){delete t._encodings[Pe(e.element)][e.channel]}function Ne(e,t){let r=e.scene._encodings[Pe(e)],n=[];if(r&&(n=n.concat(Object.values(r))),t){let t=e.scene;for(let r in t._encodings){let i=r.split("_");i.pop(),i.join("_")===e.classId&&(n=n.concat(Object.values(t._encodings[r])))}}return n}function Le(e,t,r){for(let n in r._encodings){let i=r._encodings[n];if(i[t]&&i[t].attribute==e)return i[t]}return null}function Ve(e,t){let r=e.scene._encodings[Pe(e)];return r&&r[t]?r[t]:null}function Pe(e){if(e.classId)return e.classId;if("vertex"==e.type&&e.dataScope){if(e.parent.type===Tt.Area){let t=e.parent.vertices.indexOf(e)<e.parent.vertices.length/2;return e.parent.classId+"_v"+(t?0:e.parent.vertices.length-1)}return e.parent.classId+"_v"}return"vertex"==e.type?e.parent.classId+"_v"+e.parent.vertices.indexOf(e):"segment"==e.type&&e.dataScope?e.parent.classId+"_s":"segment"==e.type?e.parent.classId+"_s"+e.parent.segments.indexOf(e):null}function De(e,t){if(0==e.children.length)return[];let r=P(e),n=e.type===Tt.Composite?e.children:[e.children[0]],i=Object.keys(r._encodings),s=[];for(let e of n){let t=e;for(;t;){if(t.classId&&s.indexOf(t.classId)<0&&s.push(t.classId),t.type===Tt.Glyph){t.children.forEach((e=>s.push(e.classId)));break}if(!t.children)break;t=t.children[0]}}let a=[];for(let e of i)for(let n of s)0===e.indexOf(n)&&r._encodings[e][t]&&a.push(r._encodings[e][t]);return a}function Be(e){let t=Ve(e,"y"),r=Ve(e,"height");return t||r&&r.scales[0].domain[0]<0}function Me(e){let t=Ve(e,"x"),r=Ve(e,"width");return t||r&&r.scales[0].domain[0]<0}function Ge(e,t){let r=function(e){let t=e.parent,r=[];for(;t.type!==Tt.Scene;)r.push(t),t=t.parent;return r}(e);for(let e of r)if(Ve(e,t))return!1;return r.length>=2?r[r.length-2]:e}function je(e,t,r){switch(e.type){case Tt.Rect:case Tt.Path:case Tt.Line:case Tt.Area:!function(e,t,r){for(let n of e.vertices)ze(n,t,r);e._updateBounds(),e._refBounds&&e._refBounds.translate(t,r)}(e,t,r);break;case Tt.Group:case Tt.Collection:case Tt.Glyph:!function(e,t,r){for(let n of e.children)je(n,t,r);e._layout&&(void 0!==e._layout._left&&(e._layout._left+=t),void 0!==e._layout._top&&(e._layout._top+=r),e._layout._cellBounds&&e._layout._cellBounds.forEach((e=>e.translate(t,r))))}(e,t,r);break;case"segment":!function(e,t,r){ze(e.vertex1,t,r),ze(e.vertex2,t,r)}(e,t,r);break;default:!function(e,t,r){e._x+=t,e._y+=r,e._refBounds&&e._refBounds.translate(t,r)}(e,t,r)}}function ze(e,t,r){e._x+=t,e._y+=r}function Fe(e,t,r){switch(t){case"x":He(e,r);break;case"y":We(e,r);break;case"width":!function(e,t){e.resize(t,e.height)}(e,r);break;case"height":!function(e,t){e.resize(e.width,t)}(e,r);break;case"radius":e.radius=r;break;case"strength":e._strength=r;break;case"area":e.type===Tt.Circle?e.radius=Math.sqrt(r/Math.PI):e.type===Tt.Rect&&e.resize(Math.sqrt(r),Math.sqrt(r)),e._updateBounds();break;case"text":e._text=r;break;case"curveMode":e.curveMode=r;break;case"baseline":e.baseline=r;break;case"angle":[Tt.Arc,Tt.Pie].includes(e.type)&&function(e,t){e._endAngle=he(e._startAngle+t),e._sr=ue(e._startAngle),e._er=ue(e._endAngle),e.vertices[0]._x=e._x+e._innerRadius*Math.cos(e._sr),e.vertices[0]._y=e._y-e._innerRadius*Math.sin(e._sr),e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er),e.vertices[3]._x=e._x+e._innerRadius*Math.cos(e._er),e.vertices[3]._y=e._y-e._innerRadius*Math.sin(e._er)}(e,r);break;case"startAngle":!function(e,t){let r=e.angle;e._startAngle=t,e._endAngle=he(e._startAngle+r),e._sr=ue(e._startAngle),e._er=ue(e._endAngle),e.vertices[0]._x=e._x+e._innerRadius*Math.cos(e._sr),e.vertices[0]._y=e._y-e._innerRadius*Math.sin(e._sr),e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er),e.vertices[3]._x=e._x+e._innerRadius*Math.cos(e._er),e.vertices[3]._y=e._y-e._innerRadius*Math.sin(e._er)}(e,r);break;case"thickness":!function(e,t){Ue(e,e._innerRadius+t)}(e,r);break;case"innerRadius":!function(e,t){e._innerRadius=t,e.vertices[0]._x=e._x+e._innerRadius*Math.cos(e._sr),e.vertices[0]._y=e._y-e._innerRadius*Math.sin(e._sr),e.vertices[3]._x=e._x+e._innerRadius*Math.cos(e._er),e.vertices[3]._y=e._y-e._innerRadius*Math.sin(e._er)}(e,r);break;case"outerRadius":Ue(e,r);break;case"radialDistance":{let t=Se(e.parent.x,e.parent.y,r,e.polarAngle);He(e,t[0]),We(e,t[1]);break}case"visibility":e.visibility=r;break;default:if("vertex"===e.type)e[t]=r;else if(e instanceof pt)for(let n of e.children)Fe(n,t,r);else e.styles[t]=r}}function Ue(e,t){e._outerRadius=t,e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er)}function He(e,t){"vertex"==e.type?e._x=t:je(e,t-e.x,0)}function We(e,t){"vertex"==e.type?e._y=t:je(e,0,t-e.y)}class Ye extends ne{constructor(e){super(e)}get width(){return this.vertices[1].x-this.vertices[0].x}get height(){return this.vertices[2].y-this.vertices[1].y}get left(){return this.vertices[0].x}get top(){return this.vertices[0].y}get right(){return this.vertices[1].x}get bottom(){return this.vertices[2].y}get area(){return this.width*this.height}resize(e,t,r,n){e!==this.width&&("right"===r?(this.vertices[1]._x=this.refBounds.right,this.vertices[2]._x=this.refBounds.right,this.vertices[0]._x=this.vertices[1]._x-e,this.vertices[3]._x=this.vertices[0]._x):(this.vertices[0]._x=this.refBounds.left,this.vertices[3]._x=this.refBounds.left,this.vertices[1]._x=this.vertices[0]._x+e,this.vertices[2]._x=this.vertices[1]._x)),t!==this.height&&("top"===n?(this.vertices[0]._y=this.refBounds.top,this.vertices[1]._y=this.refBounds.top,this.vertices[3]._y=this.vertices[0]._y+t,this.vertices[2]._y=this.vertices[3]._y):(this.vertices[2]._y=this.refBounds.bottom,this.vertices[3]._y=this.refBounds.bottom,this.vertices[0]._y=this.vertices[3]._y-t,this.vertices[1]._y=this.vertices[0]._y))}get leftSegment(){return this.segments[3]}get rightSegment(){return this.segments[1]}get topSegment(){return this.segments[0]}get bottomSegment(){return this.segments[2]}}class Xe extends ne{constructor(e){super(e),this._type=Tt.Area,this.closed=!0,this._orientation="orientation"in e?e.orientation:void 0,this._baseline="baseline"in e?e.baseline:void 0,e&&"vertices"in e&&this.segments.push(new re(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++))}get topLeftVertex(){return this._orientation===$.HORIZONTAL?this.vertices[0]:this.vertices[this.vertices.length-1]}get bottomLeftVertex(){return this._orientation===$.HORIZONTAL?this.vertices[this.vertices.length-1]:this.vertices[this.vertices.length/2]}get topRightVertex(){return this._orientation===$.HORIZONTAL?this.vertices[this.vertices.length/2-1]:this.vertices[0]}get bottomRightVertex(){return this._orientation===$.HORIZONTAL?this.vertices[this.vertices.length/2]:this.vertices[this.vertices.length/2-1]}get baseline(){return this._baseline}set baseline(e){this._baseline=e}get orientation(){return this._orientation}set orientation(e){this._orientation=e}get firstVertexPair(){return[this.vertices[0],this.vertices[this.vertices.length-1]]}get width(){return this.vertices[this.vertices.length/2].x-this.vertices[0].x}get height(){return this.vertices[this.vertices.length/2].y-this.vertices[0].y}get left(){return this.vertices[0].x}get top(){return this.vertices[0].y}copyPropertiesTo(e){super.copyPropertiesTo(e),e._baseline=this._baseline,e._orientation=this._orientation}getSVGPathData(){return super.getSVGPathData()+" z"}}class qe extends Y{constructor(e,t){super(e),this._encs=[t],this._initialized=!1}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}get initialized(){return this._initialized}set initialized(e){this._initialized=e}}class Ke{constructor(e,t){this._event=t,this._type=e}get event(){return this._event}get type(){return this._type}}const Ze=Object.freeze({ELEMENT:"element",MOUSE:"mouse",ATTRIBUTE:"attribute",WIDGET:"widget",KEYBOARD:"keyboard"});Object.freeze({INPUT:"input",HOVER:"hover",BRUSH:"brush",BRUSH_X:"brushX",BRUSH_Y:"brushY",CLICK:"click"});class $e extends H{constructor(e){super(e)}storeValues(e,t){this._storedValues={};let r=S(e);for(let e of r)this._storedValues[e.id]=e[t]}_restoreValues(e){let t=this.outputVar.channel;e.forEach((e=>{e.styles[t]=this._storedValues[e.id]}))}run(){super.run();let e=this.inputVars.find((e=>e instanceof qe)),t=this.outputVar,r=S(t.element);if(e){let r=e.encodings.find((e=>e.channel==t.channel&&Pe(e.element)==Pe(t.element)));for(let e of r.scales){let t=r.getElements(e);this._doMapping(t,e,r.attrValues,r),this._updateRefBounds(t,e,r)}}else this._restoreValues(r);let n=this._getUsableCondEncodings();n.length>0&&this._doCondEncoding(r,n.map((e=>e.condEncoding))),f(["vertex","segment"].includes(t.element.type)?t.element.parent:t.element)}_updateRefBounds(e,t,r){switch(this.outputVar.channel){case"width":e.forEach((e=>{e._refBounds.setWidth(t.rangeExtent)}));break;case"height":e.forEach((e=>{e._refBounds.setHeight(t.rangeExtent)}));break;case"radius":e.forEach((e=>{e._refBounds.setWidth(2*t.rangeExtent,p.CENTER),e._refBounds.setHeight(2*t.rangeExtent,p.MIDDLE)}));break;case"x":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let n=e.parent._refBounds;e.parent._refBounds=new u(r.flipScale?t.range[1]:t.range[0],n.top,t.rangeExtent,n.height)}));break;case"y":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let n=e.parent._refBounds;e.parent._refBounds=new u(n.left,r.flipScale?t.range[0]:t.range[1],n.width,t.rangeExtent)}))}}_doMapping(e,t,r,n){switch(this.outputVar.channel){case"width":t.domain[0]<0&&e[0]instanceof Ye?function(e,t,r){for(let n=0;n<e.length;n++){let i=e[n],s=i.refBounds.left+t.map(0),a=i.refBounds.left+t.map(r[i.id]);je(i.leftSegment,s-i.leftSegment.x,0),je(i.rightSegment,a-i.rightSegment.x,0)}}(e,t,r):t.domain[0]<0&&e[0]instanceof Xe||(e[0].type===Tt.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===$.VERTICAL)switch(n){case"left":for(let n of e)S(n.topLeftVertex,n).forEach((e=>Fe(e,"x",n.refBounds.left))),S(n.topRightVertex,n).forEach((e=>Fe(e,"x",n.refBounds.left+t.map(r[e.id]))));break;case"right":for(let n of e)S(n.topLeftVertex,n).forEach((e=>Fe(e,"x",n.refBounds.right-t.map(r[e.id])))),S(n.topRightVertex,n).forEach((e=>Fe(e,"x",n.refBounds.right)));break;case"center":console.log("center");for(let n of e)S(n.topLeftVertex,n).forEach((e=>Fe(e,"x",n.refBounds.center-t.map(r[e.id])/2))),S(n.topRightVertex,n).forEach((e=>Fe(e,"x",n.refBounds.center+t.map(r[e.id])/2)))}}(e,t,r):this._doStandardMapping(e,t,r));break;case"height":t.domain[0]<0&&e[0]instanceof Ye?function(e,t,r){for(let n=0;n<e.length;n++){let i=e[n],s=i.refBounds.bottom-t.map(0),a=i.refBounds.bottom-t.map(r[i.id]);je(i.bottomSegment,0,s-i.bottomSegment.y),je(i.topSegment,0,a-i.topSegment.y)}}(e,t,r):t.domain[0]<0&&e[0]instanceof Xe?function(e,t,r){for(let n of e){let e=T(n.topLeftVertex,[n]);for(let i of e)Fe(i,"y",n.refBounds.bottom-t.map(r[i.id]));T(n.bottomLeftVertex,[n]).forEach((e=>Fe(e,"y",n.refBounds.bottom-t.map(0))))}}(e,t,r):e[0].type===Tt.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===$.HORIZONTAL)switch(n){case"bottom":for(let n of e)S(n.topLeftVertex,n).forEach((e=>Fe(e,"y",n.refBounds.bottom-t.map(r[e.id])))),S(n.bottomLeftVertex,n).forEach((e=>Fe(e,"y",n.refBounds.bottom)));break;case"top":for(let n of e)S(n.bottomLeftVertex,n).forEach((e=>Fe(e,"y",n.refBounds.top+t.map(r[e.id])))),S(n.topLeftVertex,n).forEach((e=>Fe(e,"y",n.refBounds.top)));break;case"middle":for(let n of e)S(n.topLeftVertex,n).forEach((e=>Fe(e,"y",n.refBounds.middle-t.map(r[e.id])/2))),S(n.bottomLeftVertex,n).forEach((e=>Fe(e,"y",n.refBounds.middle+t.map(r[e.id])/2)))}}(e,t,r):this._doStandardMapping(e,t,r);break;case"text":this._doTextMapping(e,r);break;case"fillGradient":!function(e,t,r,n){for(let i of e){let e=i.vertices.map((e=>r[e.id])),s=Math.min(...e),a=Math.max(...e),o="horizontal"===i.orientation?new b({x1:0,y1:100,x2:0,y2:0}):new b({x1:0,y1:0,x2:100,y2:0});if(o.addStop(0,t.map(s),1),n._mapping){let e=Object.keys(n._mapping).map((e=>parseFloat(e))).sort();for(let r of e)r>s&&r<a&&o.addStop(100*(r-s)/(a-s),t.map(r),1)}else"divergingColor"===t.type&&o.addStop(100*-s/(a-s),t.map(0),1);"sequentialColor"===t.type&&o.addStop(100*-s/(a-s),t.map(0),1),o.addStop(100,t.map(a),1),i.fillColor=o}}(e,t,r,n);break;default:this._doStandardMapping(e,t,r)}}_doTextMapping(e,t){let r=this.outputVar.channel;e.forEach((e=>{Fe(e,r,t[e.id])}))}_doStandardMapping(e,t,r){let n=this.outputVar.channel;e.forEach((e=>{let i=t.map(r[e.id]);Fe(e,n,i),e instanceof ne&&e.firstVertex&&e.firstVertex.shape&&"strokeColor"===n&&e.vertices.forEach((e=>e.fillColor=i))}))}_doCondEncoding(e,t){for(let r of e){let e=t.map((e=>e.evalResult[r.id])).every((e=>e||void 0===e));t[0]._efxFn(e,t[0].trigger.elements[0],r,t[0].trigger.mouseEvent)}}_updateElement(e,t,r,n){let i;"object"==typeof n&&e.triggerElement?"property"in n?i=e.triggerElement[n.property]:"attribute"in n&&(i=e.triggerElement.dataScope.getAttributeValue(n.attribute)):i=n,["x","y"].includes(r)&&"offset"in n&&(i+=n.offset),Fe(t,r,i)}_getUsableCondEncodings(){return this.inputVars.filter((e=>e instanceof q))}}class Je extends Y{constructor(e,t,r){super(e),this._property=t,this._elem=r}get property(){return this._property}get element(){return this._elem}}const Qe=Object.freeze({AXIS_ORIENTATION:"axisOrientation",AXIS_PATH_POSITION:"axisPathPosition",AXIS_TICK_SIZE:"axisTickSize",AXIS_TICK_OFFSET:"axisTickOffset",AXIS_TICKS_POSITION:"axisTicksPosition",AXIS_LABELS_POSITION:"axisLabelsPosition",AXIS_TITLE_POSITION:"axisTitlePosition",AXIS_LABEL_OFFSET:"axisLabelOffset",AXIS_LABEL_FORMAT:"axisLabelFormat",AXIS_FONT_SIZE:"axisFontSize",LEGEND_POSITION:"legendPosition",GRIDLINES_POSITION:"gridlinesPosition",INCLUDE_ZERO:"includeZero",FLIP_SCALE:"flipScale",RANGE_START:"rangeStart",RANGE_EXTENT:"rangeExtent",BASE_LINE:"baseline"});function et(e,t){let r=t.getVariable(X.BOUNDS,e),n=t.createOneWayDependency(W.EVAL_BBOX);switch(t.connect(n,r),e.type){case Tt.Circle:case Tt.Polygon:{let r=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"radius",e),a=t.getVariable(X.CHANNEL,"area",e);t.connect(s,n),t.connect(r,n),t.connect(i,n),t.connect(a,n);break}case Tt.Area:case Tt.Line:case Tt.BezierCurve:case Tt.Path:case Tt.Image:{let r=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"width",e),a=t.getVariable(X.CHANNEL,"height",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Tt.Rect:{let r=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"width",e),a=t.getVariable(X.CHANNEL,"height",e),o=t.getVariable(X.CHANNEL,"area",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n),t.connect(o,n);break}case Tt.PointText:{let r=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"text",e);t.connect(r,n),t.connect(i,n),t.connect(s,n);break}case Tt.Ring:{let r=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"innerRadius",e),a=t.getVariable(X.CHANNEL,"outerRadius",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Tt.Pie:case Tt.Arc:{let r=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"innerRadius",e),a=t.getVariable(X.CHANNEL,"outerRadius",e),o=t.getVariable(X.CHANNEL,"startAngle",e),l=t.getVariable(X.CHANNEL,"endAngle",e),u=t.getVariable(X.CHANNEL,"angle",e),c=t.getVariable(X.CHANNEL,"thickness",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n),t.connect(o,n),t.connect(l,n),t.connect(u,n),t.connect(c,n);break}}n.run()}function tt(e,t){let r=t.findVariablesByElement(e);for(let e in r){let n=r[e];for(let e of n)t.deleteVariable(e)}}function rt(e,t){let r=t.findVariable(X.CHANNEL,[e.channel,e.element]);r||console.warn("cannot find encoding to remove from the dep graph");let n=r.incomingDataflow;t.deleteOperator(n)}function nt(e,t){if(e.type===Tt.Axis){let r=t.findVariable(X.PROPERTY,[Qe.AXIS_PATH_POSITION,e]).incomingDataflow;t.deleteOperator(r),r=t.findVariable(X.PROPERTY,[Qe.AXIS_TICKS_POSITION,e]).incomingDataflow,t.deleteOperator(r),r=t.findVariable(X.PROPERTY,[Qe.AXIS_LABELS_POSITION,e]).incomingDataflow,t.deleteOperator(r)}else if(e.type===Tt.Gridlines){let r=t.findVariable(X.PROPERTY,[Qe.GRIDLINES_POSITION,e]).incomingDataflow;t.deleteOperator(r)}}function it(e,t){let r=t.getVariable(X.BOUNDS,e),n=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"y",e),s=t.getVariable(X.CHANNEL,"width",e),a=t.getVariable(X.CHANNEL,"height",e),o=t.createOneWayDependency(W.EVAL_BBOX);t.connect(n,o),t.connect(i,o),t.connect(s,o),t.connect(a,o),t.connect(o,r),o.run()}function st(e,t,r){let n=r.getVariable(X.BOUNDS,e),i=r.getVariable(X.BOUNDS,t),s=r.getIncomingDataflowOperator(W.EVAL_BBOX,n),a=i.outgoingEdges.find((e=>e.fromNode===i&&e.toNode===s));if(a&&r.disconnect(i,s,a),e.layout){let n=r.getVariable(X.CHANNEL,"x",t),i=r.getIncomingDataflowOperator(ot(e.layout.type),n);i&&r.deleteOperator(i)}}function at(e,t,r){let n=r.getVariable(X.BOUNDS,e),i=r.getVariable(X.BOUNDS,t),s=r.getIncomingDataflowOperator(W.EVAL_BBOX,n);r.connect(i,s),r.connect(s,n),e.layout&&ut(e,e.layout,r)}function ot(e){switch(e){case F.GRID:return W.GRID_LAYOUT;case F.STACK:return W.STACK_LAYOUT;case F.PACKING:return W.PACK_LAYOUT;case F.FORCE:return W.FORCE_LAYOUT;case F.DIRECTED:return W.DIRECTED_LAYOUT;case F.TIDYTREE:return W.TIDY_TREE_LAYOUT;case F.TREEMAP:return W.TREEMAP_LAYOUT;case F.STRATA:return W.STRATA_LAYOUT;case F.CIRCULAR:return W.CIRCULAR_LAYOUT;case F.CLUSTER:return W.CLUSTER_LAYOUT}}function lt(e,t,r){let n=r.getVariable(X.ORDER,e),i=r.getOutgoingDataflowOperator(ot(t.type),n);r.deleteOperator(i)}function ut(e,t,r){let n=t?t.type:"none",i=n===F.TREEMAP?G(e)[0]:e.children[0];if(!i)return;let s=r.getVariable(X.CHANNEL,"width",i),a=r.getVariable(X.CHANNEL,"height",i),o=r.getVariable(X.ORDER,e),l=r.getVariable(X.CHANNEL,"x",i),u=r.getVariable(X.CHANNEL,"y",i),c=r.getOutgoingDataflowOperator(ot(n),o);if(r.connect(s,c),r.connect(a,c),r.connect(o,c),r.connect(c,l),r.connect(c,u),r.disconnectChannelVarFromBBoxOperator(s),r.disconnectChannelVarFromBBoxOperator(a),i.type===Tt.Arc||i.type===Tt.Pie){let e=r.getVariable(X.CHANNEL,"angle",i),t=r.getVariable(X.CHANNEL,"thickness",i);r.connect(e,c),r.connect(t,c)}else if(i.type===Tt.Circle){let e=r.getVariable(X.CHANNEL,"area",i),t=r.getVariable(X.CHANNEL,"radius",i);r.connect(e,c),r.connect(t,c),r.disconnectChannelVarFromBBoxOperator(e),r.disconnectChannelVarFromBBoxOperator(t)}else if(i.type===Tt.Rect){let e=r.getVariable(X.CHANNEL,"area",i);r.connect(e,c),r.disconnectChannelVarFromBBoxOperator(e)}if(c.run(),i.links&&ct(i,r),i.children&&i.children[0]){let e=r.getVariable(X.BOUNDS,i.children[0]),t=r.getVariable(X.CHANNEL,"x",i).incomingDataflow;t&&r.connect(e,t),r.disconnectChannelVarFromBBoxOperator(e)}}function ct(e,t){let r=e.links[0],n=t.getVariable(X.CHANNEL,"x",e),i=t.getVariable(X.CHANNEL,"x",r),s=t.getVariable(X.CHANNEL,"strokeWidth",r),a=t.getVariable(X.CHANNEL,"strength",r),o=t.createOneWayDependency(W.LINK_PLACER);t.connect(n,o),t.connect(s,o),t.connect(a,o),t.connect(o,i)}function ht(e,t){let r=t.getVariable(X.PROPERTY,Qe.AXIS_ORIENTATION,e),n=t.getVariable(X.BOUNDS,e.elements[0].parent),i=t.getVariable(X.PROPERTY,Qe.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(W.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(X.PROPERTY,Qe.AXIS_TICK_OFFSET,e),o=t.getVariable(X.PROPERTY,Qe.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(W.AXIS_TICKS_PLACER),u=t.getVariable(X.PROPERTY,Qe.AXIS_TICKS_POSITION,e);t.connect(i,l),t.connect(a,l),t.connect(o,l),t.connect(l,u),l.run();let c=t.getVariable(X.PROPERTY,Qe.AXIS_LABEL_OFFSET,e),h=t.getVariable(X.PROPERTY,Qe.AXIS_LABEL_FORMAT,e),d=t.getVariable(X.PROPERTY,Qe.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(W.AXIS_LABELS_PLACER),p=t.getVariable(X.PROPERTY,Qe.AXIS_LABELS_POSITION,e);t.connect(i,f),t.connect(c,f),t.connect(h,f),t.connect(d,f),t.connect(f,p),f.run();let _=t.getVariable(X.PROPERTY,Qe.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(W.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(X.BOUNDS,e),m=t.getIncomingDataflowOperator(W.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function dt(e,t){let r=t.getVariable(X.PROPERTY,Qe.AXIS_ORIENTATION,e),n=t.getVariable(X.BOUNDS,D(e.elements[0])),i=t.getVariable(X.PROPERTY,Qe.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(W.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(X.PROPERTY,Qe.AXIS_TICK_OFFSET,e),o=t.getVariable(X.PROPERTY,Qe.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(W.AXIS_TICKS_PLACER),u=t.getVariable(X.PROPERTY,Qe.AXIS_TICKS_POSITION,e);t.connect(i,l),t.connect(a,l),t.connect(o,l),t.connect(l,u),l.run();let c=t.getVariable(X.PROPERTY,Qe.AXIS_LABEL_OFFSET,e),h=t.getVariable(X.PROPERTY,Qe.AXIS_LABEL_FORMAT,e),d=t.getVariable(X.PROPERTY,Qe.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(W.AXIS_LABELS_PLACER),p=t.getVariable(X.PROPERTY,Qe.AXIS_LABELS_POSITION,e);t.connect(i,f),t.connect(c,f),t.connect(h,f),t.connect(d,f),t.connect(f,p),f.run();let _=t.getVariable(X.PROPERTY,Qe.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(W.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(X.BOUNDS,e),m=t.getIncomingDataflowOperator(W.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function ft(e,t){let r=t.getVariable(X.BOUNDS,D(e.elements[0])),n=t.getVariable(X.PROPERTY,Qe.GRIDLINES_POSITION,e),i=t.createOneWayDependency(W.GRIDLINES_PLACER);t.connect(r,i),t.connect(i,n),i.run();let s=t.getVariable(X.BOUNDS,e),a=t.getIncomingDataflowOperator(W.EVAL_BBOX,s);t.connect(n,a),t.connect(a,s)}class pt{constructor(){this._id=this.type+It(),this._type=Tt.Group,this._dataScope=void 0,this._bounds=void 0,this._layout=void 0,this._children=[],this._sortBy={}}get id(){return this._id}get type(){return this._type}contains(e,t){return this.bounds.contains(e,t)}get children(){return this._children}addChild(e){this.children.indexOf(e)>=0||(e.parent&&e.parent.removeChild(e),this.children.push(e),e.parent=this)}addChildAt(e,t){e.parent&&e.parent.removeChild(e),this.children.splice(t,0,e),e.parent=this}removeChild(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=null)}removeChildAt(e){this.children[e].parent=null,this.children.splice(e,1)}removeAll(){for(let e of this.children)e.parent=null;this._children=[]}get dataScope(){return this._dataScope}set dataScope(e){if(this._dataScope=e,void 0===e)for(let t of this.children)t.dataScope=e;else for(let t of this.children)t.dataScope?t.dataScope=t.dataScope.merge(e):t.dataScope=e}getInternalEncodings(e){if(0==this.children.length)return[];let t=this.children[0],r=this.getScene(),n=Object.keys(r.encodings),i=[];for(;t;){if(t.classId&&i.indexOf(t.classId)<0&&i.push(t.classId),t.type===Tt.Glyph){t.children.forEach((e=>i.push(e.classId)));break}if(!t.children)break;t=t.children[0]}let s=[];for(let t of n){let n=t.split("_");for(let a of i)n[0]==a&&r.encodings[t][e]&&s.push(r.encodings[t][e])}return s}get firstChild(){return this.children[0]}get lastChild(){return this.children[this.children.length-1]}set layout(e){if(this._layout=e,e&&(e.group=this),ut(this,e,this.scene._depGraph),this.children&&this.children.length>0){let e=G(this,!0);for(let t of e)this.scene.onChange(X.CHANNEL,"x",t)}}get layout(){return this._layout}get bounds(){return this._bounds||this._updateBounds(),this._bounds}get refBounds(){let e=this.children.map((e=>e.refBounds)),t=Math.min(...e.map((e=>e.left))),r=Math.min(...e.map((e=>e.top))),n=Math.max(...e.map((e=>e.right))),i=Math.max(...e.map((e=>e.bottom)));return new u(t,r,n-t,i-r)}get x(){return this.bounds.x}get y(){return this.bounds.y}_updateBounds(){let e=this.children;if(e.length>0){this._bounds=e[0].bounds.clone();for(let t=1;t<e.length;t++)"hidden"!=e[t].visibility&&(this._bounds=this._bounds.union(e[t].bounds))}else this._bounds=new u(0,0,0,0)}set visibility(e){this._visibility="hidden"==e?e:"visible";for(let t of this.children)t.visibility=e}get visibility(){return this._visibility?this._visibility:"visible"}get scene(){return P(this)}}class _t extends pt{constructor(){super(),this._type=Tt.Collection,this._id=this.type+"_"+It(),this._classId=this.id,this._childrenOrder=void 0}get classId(){return this._classId}contains(e,r){if([Tt.Arc,Tt.Pie,Tt.Polygon,Tt.Area].indexOf(this.firstChild.type)>=0){let n=this.getSVGPathData();if(""!==n){let i=t.getContext(),s=new Path2D(n);return i.lineWidth=Math.max(this.strokeWidth,2.5),i.stroke(s),i.isPointInPath(s,e,r)}}return this._bounds.contains(e,r)}getSVGPathData(){let e="";for(let t of this.children)if(t.getSVGPathData)e+=t.getSVGPathData();else if(t.bounds){let r=t.bounds;e+=["M",r.left,r.top].join(" "),e+=["L",r.right,r.top].join(" "),e+=["L",r.right,r.bottom].join(" "),e+=["L",r.left,r.bottom,"Z"].join(" ")}return e}}class gt extends pt{constructor(e){if(super(),this._type=Tt.Glyph,this._id=this.type+"_"+It(),this._classId=this._id,e)for(let t of e)this.addChild(t)}get classId(){return this._classId}}class yt extends ne{constructor(e){super(e),this._type=Tt.BezierCurve,this._orientation="orientation"in e?e.orientation:$.HORIZONTAL}get type(){return this._type}get orientation(){return this._orientation}copyPropertiesTo(e){super.copyPropertiesTo(e),e._orientation=this._orientation}getSVGPathData(){if(this._d)return this._d;let e="M ";return e+=this.vertices[0].x+" "+this.vertices[0].y+" ",e+="C "+this.vertices[1].x+" "+this.vertices[1].y+" ",e+=this.vertices[2].x+" "+this.vertices[2].y+" ",e+=this.vertices[3].x+" "+this.vertices[3].y,e}}class mt extends v{constructor(e){super(e),this._type=Tt.Circle,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._radius="radius"in e?e.radius:100,"strokeColor"in this.styles||(this.styles.strokeColor="#ccc"),"fillColor"in this.styles||(this.styles.fillColor="none"),"strokeWidth"in this.styles||(this.styles.strokeWidth=1),"strokeDash"in this.styles||(this.styles.strokeDash="none")}get x(){return this._x}get y(){return this._y}get radius(){return this._radius}set radius(e){this._radius=e}get area(){return Math.PI*Math.pow(this._radius,2)}_updateBounds(){if(this._rotate){let e=C(this._x,this._y,this._rotate[1],this._rotate[2],this._rotate[0]);this._bounds=new u(e.x-this._radius,e.y-this._radius,2*this._radius,2*this._radius)}else this._bounds=new u(this._x-this._radius,this._y-this._radius,2*this._radius,2*this._radius)}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._radius=this._radius}getSVGPathData(){return["M",this._x,this._y,"m",-this._radius,", 0 a",this._radius,",",this._radius,"0 1,0",2*this._radius,",0 a",this._radius,",",this._radius,"0 1,0",-2*this._radius,",0"].join(" ")}}class bt extends v{constructor(e){super(e),this._type=Tt.Image,this._src=e.src,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._width="width"in e?e.width:100,this._height="height"in e?e.height:100}get src(){return this._src}set src(e){this._src=e}get width(){return this._width}set width(e){this._width=e,this._updateBounds()}get height(){return this._height}set height(e){this._height=e,this._updateBounds()}get x(){return this._x}set x(e){this._x=e,this._updateBounds()}get y(){return this._y}set y(e){this._y=e,this._updateBounds()}get bounds(){return this._bounds||this._updateBounds(),this._bounds}_updateBounds(){this._bounds=new u(this._x,this._y,this._width,this._height)}copyPropertiesTo(e){e.attrs=Object.assign({},this.attrs),e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone()),e.x=this._x,e.y=this._y,e.width=this._width,e.height=this._height,e.src=this._src}}class vt extends ne{constructor(e){super(e)}get x1(){return this.vertices[0].x}get y1(){return this.vertices[0].y}get x2(){return this.vertices[1].x}get y2(){return this.vertices[1].y}get x(){return(this.vertices[0].x+this.vertices[1].x)/2}get y(){return(this.vertices[0].y+this.vertices[1].y)/2}set x(e){let t=e-this.x;this.vertices[0]._x+=t,this.vertices[1]._x+=t}set y(e){let t=e-this.y;this.vertices[0]._y+=t,this.vertices[1]._y+=t}set x1(e){this.vertices[0]._x=e}set x2(e){this.vertices[1]._x=e}set y1(e){this.vertices[0]._y=e}set y2(e){this.vertices[1]._y=e}}class xt extends v{constructor(e){super(e),this._type=Tt.PointText,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._text="text"in e?e.text:"",this._anchor="anchor"in e?e.anchor:[p.CENTER,p.MIDDLE],this._textPath=void 0,this._textPathOffset="50%","fontSize"in this.styles||(this.styles.fontSize="12px"),"fontFamily"in this.styles||(this.styles.fontFamily="Arial, sans-serif"),"fontWeight"in this.styles||(this.styles.fontWeight="normal"),"fillColor"in this.styles||(this.styles.fillColor="black"),"backgroundColor"in e&&(this._backgroundColor=e.backgroundColor),"borderWidth"in e&&(this._borderWidth=e.borderWidth),"borderColor"in e&&(this._borderColor=e.borderColor),this._rotate="rotate"in e?e.rotate:void 0}hasBackground(){return this._backgroundColor||this._borderStroke||this._borderColor}_updateBounds(){let e,t,r=function(e,t,r){let n=k.getContext();n.font=t;let i=n.measureText(e);return i.fontBoundingBoxAscent?{width:i.width,height:i.fontBoundingBoxAscent+i.fontBoundingBoxDescent}:i.actualBoundingBoxAscent?{width:i.width,height:i.actualBoundingBoxAscent+i.actualBoundingBoxDescent}:{width:i.width,height:r}}(this._text,[this.fontWeight,this.fontSize,this.fontFamily].join(" "),parseFloat(this.fontSize)),n=r.width,i=r.height;switch(this._anchor[0]){case p.LEFT:e=this._x;break;case p.RIGHT:e=this._x-n;break;case p.CENTER:e=this._x-n/2;break;default:e=this._x}switch(this._anchor[1]){case p.TOP:t=this._y;break;case p.BOTTOM:t=this._y-i;break;case p.MIDDLE:default:t=this._y-i/2}if(this._rotate&&3===this._rotate.length){let r=[{x:e,y:t},{x:e+n,y:t},{x:e,y:t+i},{x:e+n,y:t+i}].map((e=>C(e.x,e.y,this._rotate[1],this._rotate[2],this._rotate[0]))),s=Math.min(...r.map((e=>e.x))),a=Math.max(...r.map((e=>e.x))),o=Math.min(...r.map((e=>e.y))),l=Math.max(...r.map((e=>e.y)));this._bounds=new u(s,o,a-s,l-o)}else this._bounds=new u(e,t,n,i)}get x(){return this._x}get y(){return this._y}get text(){return this._text}get anchor(){return this._anchor}get fontFamily(){return this.styles.fontFamily}get fontSize(){return this.styles.fontSize}get fontWeight(){return this.styles.fontWeight}get textPath(){return this._textPath}get textPathOffset(){return this._textPathOffset}get backgroundColor(){return this._backgroundColor?this._backgroundColor:"#fff"}get borderColor(){return this._borderColor?this._borderColor:"#ccc"}get borderWidth(){return this._borderWidth?this._borderWidth:1}copyPropertiesTo(e){e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone()),e._x=this._x,e._y=this._y,e._text=this._text,e._anchor=[this._anchor[0],this._anchor[1]],e._backgroundColor=this._backgroundColor,e._borderColor=this._borderColor,e._borderStroke=this._borderStroke}}class Et extends ne{constructor(e){super(e),this._type=Tt.Polygon,this.closed=!0,"x"in e&&(this._x=e.x),"y"in e&&(this._y=e.y),"radius"in e&&(this._radius=e.radius)}get radius(){return this._radius}get x(){return this._x}get y(){return this._y}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._radius=this._radius}}class wt extends ne{constructor(e){super(e),this._type=Tt.Ring,this.closed=!0,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._innerRadius="innerRadius"in e?e.innerRadius:100,this._outerRadius="outerRadius"in e?e.outerRadius:200}get innerRadius(){return this._innerRadius}get outerRadius(){return this._outerRadius}get x(){return this._x}get y(){return this._y}get thickness(){return this._outerRadius-this._innerRadius}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._innerRadius=this._innerRadius,e._outerRadius=this._outerRadius}getSVGPathData(){return["M "+this._x+" "+this._y,"m 0, -"+this._outerRadius,"a "+this._outerRadius+","+this._outerRadius+", 0, 1, 0, 1, 0","Z","m 0 "+(this._outerRadius-this._innerRadius),"a "+this._innerRadius+", "+this._innerRadius+", 0, 1, 1, -1, 0","Z"].join(" ")}}function At(e){let t=null;switch(e.type){case Tt.Circle:t=new mt(e);break;case Tt.Line:var r="x1"in e?e.x1:0,n="y1"in e?e.y1:0,i="x2"in e?e.x2:100,s="y2"in e?e.y2:100;e.vertices=[[r,n],[i,s]],t=new vt(e);break;case Tt.Rect:var a="top"in e?e.top:0,o="left"in e?e.left:0,l="width"in e?e.width:50,u="height"in e?e.height:30;e.vertices=[[o,a],[o+l,a],[o+l,a+u],[o,a+u]],t=new Ye(e);break;case Tt.PointText:t=new xt(e);break;case Tt.Image:t=new bt(e);break;case Tt.BundledPath:case Tt.Chord:case Tt.Path:t=new ne(e);break;case Tt.Area:t=new Xe(e);break;case Tt.Ring:t=new wt(e);break;case Tt.Arc:t=new le(e);break;case Tt.BezierCurve:"vertices"in e||(e.vertices=[[0,100],[20,120],[80,180],[100,200]]),t=new yt(e);break;case Tt.Polygon:t=new Et(e)}return t&&t._updateBounds(),t}function Ct(e){let t=new _t;return e.addChild(t),e._itemMap[t.id]=t,t}function Rt(e){return new gt(e)}function kt(e){switch(e.type){case Tt.Collection:return function(e){let t=Ct(e.scene);for(let r=0;r<e.children.length;r++){let n=e.children[r];t.addChild(kt(n))}if(t._classId=e.classId,e._layout){let r=e._layout.clone();t._layout=r,r.group=t}return t._updateBounds(),t}(e);case Tt.Glyph:return function(e){let t=new gt;for(let r of e.children)t.addChild(kt(r));t._classId=e.classId,e._dataScope&&(t.dataScope=e._dataScope.clone());return t}(e);default:return function(e){let t=At({type:e.type});e.copyPropertiesTo(t),t._classId=e.classId,t._bounds=e.bounds.clone(),e._refBounds||(e._refBounds=e.bounds.clone());t._refBounds=e._refBounds.clone(),e.dataScope&&(t._dataScope=e.dataScope.clone());if(e.vertices)for(let r=0;r<e.vertices.length;r++)e.vertices[r].dataScope&&(t.vertices[r]._dataScope=e.vertices[r].dataScope.clone());return t}(e)}}const St=Object.freeze({Rect:"rect",Circle:"circle",Line:"line",Ring:"ring",Path:"path",Image:"image",PointText:"text",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord"}),Tt=Object.freeze({Area:"area",Rect:"rect",Ellipse:"ellipse",Circle:"circle",Pie:"pie",Ring:"ring",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord",Line:"line",Path:"path",Image:"image",PointText:"text",Collection:"collection",Group:"group",Composite:"composite",Scene:"scene",Axis:"axis",Glyph:"glyph",Legend:"legend",Polygon:"polygon",Gridlines:"gridlines",LinearGradient:"LinearGradient",Link:"link",DataTable:"datatable",Layout:"layout",NetworkData:"networkdata",TreeData:"treedata"}),Ot=Object.freeze({Axis:"axis",Legend:"legend",Gridlines:"gridlines"});function It(){return Date.now().toString(36)+"_"+Math.random().toString(36).slice(2)}class Nt{constructor(e,t,r){this._id=Tt.DataTable+It(),this.initialize(e,t,r)}initialize(e,t,r){if(this.url=t,this._rawData=JSON.parse(JSON.stringify(e)),this._data=e,this._dateMap=new Map,this._attributes=0===this._data.length?[]:Object.keys(this._data[0]),this._newAttribute=0,r)this._attrTypes=r;else{this._attrTypes={};for(let e of this._attributes)this._attrTypes[e]=Ae(this.data.map((t=>t[e]))),"year"==e.toLowerCase()&&this._attrTypes[e]==we.Integer&&(this._attrTypes[e]=we.Date)}this._validate(this.data,this._attrTypes),this._attrSummaries={};for(let e of this._attributes)this._attrSummaries[e]=Re(this.data.map((t=>t[e])),this._attrTypes[e]);this._attributes.indexOf(Vt)<0&&this._addAttribute(Vt,we.String,this.data.map(((e,t)=>"r"+t)))}clone(){let e=[];for(let t of this._data)e.push(Object.assign({},t));let t=new Nt(e,this.url,Object.assign({},this._attrTypes));return t.sourceDataTable=this,t}get id(){return this._id}get name(){return this.url?function(e){var t=e.indexOf("\\")>=0?e.lastIndexOf("\\"):e.lastIndexOf("/"),r=e.substring(t);0!==r.indexOf("\\")&&0!==r.indexOf("/")||(r=r.substring(1));return r}(this.url):this.id}get data(){return this._data}getEncodableAttributes(e){switch(e){case"x":case"y":case"width":case"height":case"radius":case"fillColor":case"strokeColor":case"text":return this.numericAttributes.concat(this.nonNumericAttributes);default:return this.numericAttributes}}_addAttribute(e,t,r){this._data.forEach(((t,n)=>t[e]=r[n])),e!==Vt&&this._rawData.forEach(((t,n)=>t[e]=r[n])),this._attrTypes[e]=t,this._attributes.push(e),this._attrSummaries[e]=Re(r,t)}getAttributeType(e){return this._attrTypes[e]}get attributes(){return this._attributes}getAttributeSummary(e){return this._attrSummaries[e]}getAttributeValues(e){return this.data.map((t=>t[e]))}getUniqueAttributeValues(e){return this._attrSummaries[e].unique}orderAttributeValues(e,t){this._attrSummaries[e].unique=t}getRowCount(){return this.data.length}hasAttribute(e){return this._attributes.indexOf(e)>=0}parseAttributeAsDate(t,r){let n=e.timeParse(r);for(let e of this.data){let r=e[t];null==r||null==r?(r="",e[t]=new Date(1899,11,31).getTime()):e[t]=n(r).getTime(),this._dateMap.set(e[t],r)}this._attrTypes[t]=we.Date,this._attrSummaries[t]=Re(this.data.map((e=>e[t])),we.Date)}getRawValue(e,t){return this.getAttributeType(e)===we.Date?this._dateMap.get(t).toString():t}get nonNumericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!=we.Number&&this._attrTypes[t]!=we.Integer&&t!=Nt.RowID&&e.push(t);return e.sort(((e,t)=>this.getUniqueAttributeValues(e).length-this.getUniqueAttributeValues(t).length)),e}get numericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!==we.Number&&this._attrTypes[t]!==we.Integer||t==Nt.RowID||e.push(t);return e}getAttributesByType(e){let t=[];for(let r in this._attrTypes)this._attrTypes[r]===e&&r!=Nt.RowID&&t.push(r);return t}summarize(){for(let e of this._attributes)this._attrSummaries[e]=Re(this.data.map((t=>t[e])),this._attrTypes[e])}_validate(e,t){for(let r of e)for(let e in t){let n,i=t[e],s=r[e];if(null==r[e]||null==r[e])switch(i){case we.Boolean:n=!1;break;case we.Date:n=new Date(1899,11,31).getTime();break;case we.String:n="";break;default:n=0}else switch(i){case we.Boolean:n=s;break;case we.Date:n=Number.isInteger(s)?new Date(s,0).getTime():new Date(s+"").getTime(),this._dateMap.set(n,s);break;case we.String:n=s.toString();break;default:n=s}r[e]=n}}}function Lt(e){let t=pe(e);if(t)return t.dataTable}const Vt="mascot_rowId";function Pt(e,t){return fetch(t,{method:e}).then((e=>e.ok?e.text():(console.log(e.status),Promise.reject({status:e.status,statusText:e.statusText})))).catch((e=>(console.log(e),Promise.reject({status:e.status,statusText:e.statusText}))))}class Dt extends Y{constructor(e,t){super(e),this._elem=t}get element(){return this._elem}}class Bt extends Y{constructor(e,t){super(e),this._item=t}get element(){return this._item}}class Mt{constructor(e){this._id=e+"_"+It(),this._type=e,this._vars=[],this._edges=[]}get vars(){return this._vars}get edges(){return this._edges}run(){console.log("-",this._type)}}class Gt{constructor(e,t,r=!0){this._id="e_"+It(),this._fromNode=e,this._toNode=t,this._isDirected=r}get id(){return this._id}get fromNode(){return this._fromNode}get toNode(){return this._toNode}get isDirected(){return this._isDirected}get operator(){return this._fromNode instanceof H||this._fromNode instanceof Mt?this._fromNode:this._toNode}}class jt extends Y{constructor(e,t,r){super(e),this._attribute=t,this._dataset=r}get attribute(){return this._attribute}get dataset(){return this._dataset}}class zt extends Y{constructor(e,t){super(e),this._encs=[t]}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}}class Ft extends H{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=e.encodings[0],r=this.inputVars.find((e=>e instanceof jt)).attribute,n=e.encodings[0].dataTable.getAttributeType(e.encodings[0].attribute),i=[];for(let t of e.encodings){let e=this._computeAttrValues(t,n);i=i.concat(e)}if("angle"===t.channel&&[Tt.Arc,Tt.Pie].indexOf(t.element.type)>=0)for(let n of e.encodings)for(let e of n.scales){let i=n.getElements(e).map((e=>n.attrValues[e.id]));e.domain=t._preferredDomain?t._preferredDomain:n.dataTable.tree?[0,n.dataTable.tree.getRoot()[r]]:this._getDomainForNumbers(i),console.log("domain for",r,e.domain)}else{let s;s=n==we.String||"text"===e.encodings[0].channel?this._getDomainForStrings(i):this._getDomainForNumbers(i);for(let r of e.encodings)for(let e of r.scales)e.domain=t._preferredDomain?t._preferredDomain:s.slice();console.log("domain for",r,s)}}_getDomainForNumbers(e){let t=this.outputVar.encodings[0],r=[Math.min(...e),Math.max(...e)];if(t.includeZero&&r[0]>0&&(r=[0,Math.max(...e)]),t.mapping)r=Object.keys(t.mapping),r=r.map((e=>parseFloat(e))),r.sort(((e,t)=>e-t));else if("sequentialColor"===t.scales[0].type){if(r[0]<0&&r[1]>0){let e=Math.max(Math.abs(r[0]),Math.abs(r[1]));r=[-e,e]}}else if("angle"===t.channel){r=[0,Object.values(e).reduce(((e,t)=>e+t),0)]}return r}_getDomainForStrings(e){let t,r=this.outputVar,n=r.encodings[0];return t="count"==r.encodings[0].aggregator?[0,Math.max(...e)]:Array.from(new Set(e)),n.mapping&&(t=Object.keys(n.mapping)),t}_computeAttrValues(e,t){let r=S(e.element),n={};if(e.element.type===Tt.Area&&["width","height","fillGradient"].indexOf(e.channel)>=0)for(let t of r)for(let r of t.vertices)n[r.id]=pe(r).aggregateNumericalAttribute(e.attribute,e.aggregator);else switch(t){case we.Boolean:break;case we.Date:for(let t of r)n[t.id]=pe(t).getAttributeValue(e.attribute);break;case we.String:try{if("count"==e.aggregator)for(let t of r)n[t.id]=pe(t).getAttributeValues(e.attribute).length;else for(let t of r)n[t.id]=pe(t).getAttributeValue(e.attribute)}catch(t){throw new Error("Cannot bind "+this.channel+" to "+e.attribute+" : "+t)}break;default:if(e.attribute.startsWith("parent.")||e.attribute.startsWith("child.")){let t=e.dataTable.tree.nodeTable,i=e.attribute.split(".")[0],s=e.attribute.split(".")[1];for(let e of r){let r=pe(e).getAttributeValue(i);n[e.id]=new fe(t).cross(xe,r).getAttributeValue(s)}}else for(let t of r)n[t.id]=pe(t).aggregateNumericalAttribute(e.attribute,e.aggregator)}return e.attrValues=n,Object.values(n)}}class Ut{constructor(t,r){switch(this._id="scale_"+It(),this._type=t,r&&(this._args=r),t){case"linear":this._scale=e.scaleLinear();break;case"point":this._scale=e.scalePoint();break;case"ordinal":this._scale=e.scaleOrdinal();break;case"ordinalColor":this._scale=e.scaleOrdinal(e[r.scheme]);break;case"power":this._scale=e.scalePow().exponent(2);break;case"sqrt":this._scale=e.scalePow().exponent(.5);break;case"log":this._scale=e.scaleLog();break;case"identity":case"time":this._scale=e.scaleTime();break;case"sequentialColor":r.scheme?this._scale=e.scaleSequential(e[r.scheme]):this._scale=e.scaleSequential()}}get id(){return this._id}get domain(){return this._scale.domain()}set domain(e){this._scale.domain(e)}get range(){return this._scale.range()}set range(e){this._scale.range(e)}get rangeExtent(){let e=this._scale.range();return Math.abs(e[1]-e[0])}set rangeExtent(e){let t=this._scale.range();t[0]<t[1]?this._scale.range([t[0],t[0]+e]):this._scale.range([t[1]+e,t[1]])}get type(){return this._type}map(e){return this._scale(e)}}const Ht=["schemeBrBG","schemePRGn","schemePiYG","schemePuOr","schemeRdBu","schemeRdGy","schemeRdYlBu","schemeRdYlGn","schemeSpectral"],Wt=["schemeBlues","schemeGreens","schemeGreys","schemeOranges","schemePurples","schemeReds","schemeBuGn","schemeBuPu","schemeGnBu","schemeOrRd","schemePuBuGn","schemePuBu","schemePuRd","schemeRdPu","schemeYlGnBu","schemeYlGn","schemeYlOrBr","schemeYlOrRd"];class Yt extends H{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=e.encodings,r=t[0],n=r.channel;for(let i=0;i<r.scales.length;i++){let s=r.scales[i],a=r.getElements(s),o=this._buildRange(n,a,r,e);if(o)for(let e of t)e.scales[i].range=o;console.log("range",r.scales[i].range)}e.initialized=!0}_buildRange(e,t,r,n){return"x"===e?this._buildXRange(t,r,n):"y"===e?this._buildYRange(t,r,n):["width","height","radius","area","fontSize","radialDistance","strokeWidth"].includes(e)?this._buildSizeRange(t,r,n):e.indexOf("Color")>0||"fillGradient"===e?this._buildColorRange(t,r):"angle"===e?this._buildAngleRange(t,r):"thickness"===e?this._buildThicknessRange(t,r,n):void 0}_buildThicknessRange(e,t,r){let n=e.map((e=>e.outerRadius-e.innerRadius));return[0,r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:Math.max(...n)]}_buildAngleRange(e,t){return[0,360]}_buildColorRange(t,r){if(r.mapping){return r.scales[0].domain.map((e=>r.mapping[e+""]))}if("sequentialColor"===r.scales[0].type){let t=this.outputVar,n=r.scales[0].domain;for(let i of t.encodings)if(!r.colorScheme)for(let t of i.scales){let r=t.domain;t._scale=e.scaleSequential(n[0]<0&&n[1]>0?e.interpolatePuOr:e.interpolateTurbo),t._scale.domain(r)}}if((Ht.indexOf(r.colorScheme)>=0||Wt.indexOf(r.colorScheme)>=0)&&"ordinalColor"===r.scales[0].type){let t=this.outputVar,n=r.scales[0].domain;for(let i of t.encodings)for(let t of i.scales){let i=t.domain;t._scale=e.scaleOrdinal(e[r.colorScheme][n.length]),t._scale.domain(i)}}}_buildSizeRange(e,t,r){let n,i;return n=0,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:Math.max(...e.map((e=>"radius"===t.channel?e.refBounds.width/2:"strokeWidth"===t.channel?e.strokeWidth:"radialDistance"===t.channel?e.parent.radius:"area"===t.channel?e.type===Tt.Circle?Math.PI*Math.pow(e.radius,2):e.width*e.height:"fontSize"===t.channel?parseFloat(e.fontSize):e.refBounds[t.channel]))),[0,0+i]}_buildXRange(e,t,r){let n,i;switch(t.scales[0].type,e[0].type){case"vertex":case"segment":var s=e[0].parent.refBounds?e[0].parent.refBounds:e[0].parent.bounds;n=r.initialized?t.getRangeStart(e[0]):s.left,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:s.width;break;default:n=r.initialized?t.getRangeStart(e[0]):D(e[0]).bounds.left+e[0].bounds.width/2,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:450}return t.flipScale?[n+i,n]:[n,n+i]}_buildYRange(e,t,r){let n,i;switch(t.scales[0].type,e[0].type){case"vertex":case"segment":var s=e[0].parent.refBounds?e[0].parent.refBounds:e[0].parent.bounds;n=r.initialized?t.getRangeStart(e[0]):s.top,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:s.height;break;default:n=r.initialized?t.getRangeStart(e[0]):D(e[0]).bounds.top+e[0].bounds.height/2,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:450}return t.flipScale?[n,n+i]:[n+i,n]}}class Xt extends H{constructor(e){super(e)}run(){super.run()}}class qt extends pt{constructor(e){super(),this._type=Tt.Axis,this._id=this._type+It(),this._attribute=void 0,this._channel=void 0,this._orientation=void 0,this._strokeColor="strokeColor"in e?e.strokeColor:"#555",this._textColor="textColor"in e?e.textColor:"#555",this._fontSize="fontSize"in e?e.fontSize:"12px",this._tickOffset="tickOffset"in e?e.tickOffset:0,this._tickSize="tickSize"in e?e.tickSize:5,this._tickAnchor=e.tickAnchor,this._tickVisible=!("tickVisible"in e)||e.tickVisible,this._pathVisible=!("pathVisible"in e)||e.pathVisible,this._labelOffset="labelOffset"in e?e.labelOffset:this._tickSize+this._tickOffset+3,this._labelFormat="labelFormat"in e?e.labelFormat:"",this._titleOffset="titleOffset"in e?e.titleOffset:40,this._rotateYTitle=!("rotateTitle"in e&&!e.rotateTitle),this._showTitle=!("titleVisible"in e)||e.titleVisible,this._labelRotation="labelRotation"in e?e.labelRotation:0,this._ticks=new pt,this._ticks._id=this._id+"_ticks",this.addChild(this._ticks),this._labels=new pt,this._labels._id=this._id+"_labels",this.addChild(this._labels),this._title=new xt({text:this._titleText,fillColor:this._textColor,fontWeight:"bold"}),this._title._id=this.id+"_title",this.addChild(this._title),this._showTitle||(this._title.visibility="hidden"),this._pathPos=void 0}get pathPos(){return this._pathPos}get attribute(){return this._attribute}get channel(){return this._channel}get orientation(){return this._orientation}get tickSize(){return this._tickSize}get tickOffset(){return this._tickOffset}get tickAnchor(){return this._tickAnchor?this._tickAnchor:"x"===this._channel||"width"===this._channel?"center":"middle"}get labelOffset(){return this._labelOffset}get tickValues(){return this._tickValues}get labelValues(){return this._labelValues}get titleOffset(){return this._titleOffset}get boundsWithoutTitle(){let e=this.children.filter((e=>e.type!==Tt.PointText)),t=e[0].bounds.clone();for(let r=1;r<e.length;r++)"hidden"!=e[r].visibility&&(t=t.union(e[r].bounds));return t}}const Kt="top",Zt="bottom",$t="left";function Jt(t,r,n,i){let s,a=t.domain,o=t.range;switch(t.type){case"linear":case"log":{let l=Math.abs(o[0]-o[1]);s="width"==r||"x"==r?45:30;let u,c=Math.max(2,Math.floor(l/s));if("width"==r||"height"==r){let e=!!i&&(i.elements[0].parent.layout&&i.elements[0].parent.layout.type==F.STACK);a[1]=t._scale.invert(e?d(n)[r]:h(n)[r])}if("log"===t.type){u=[];let e=t._scale.ticks();for(let t of e){let r=Math.log(t)/Math.log(10)+1e-6;Math.abs(r-Math.floor(r))<c/e.length&&u.push(t)}}else u=e.ticks(a[0],a[1],c);return u}case"point":{s="width"==r||"x"==r?80:30;let e=Math.floor(t.rangeExtent/a.length),n=Math.ceil(s/e);return"x"==r?a.filter(((e,t)=>t%n==0)):a}case"time":{s="width"==r||"x"==r?80:30;let t,n,i=Math.floor((o[1]-o[0])/s),l=Math.ceil((a[1]-a[0])/i)/1e3,u=[1,60,3600,86400,2628003,31536e3],c=[e.timeSeconds,e.timeMinutes,e.timeHours,e.timeDays,e.timeMonths,e.timeYears];for(let e=0;e<u.length-1;e++)if(l>=u[e]&&l<u[e+1])return t=Math.floor(l/u[e]),n=c[e],n(a[0],a[1],t);return l>u[u.length-1]?(t=Math.floor(l/u[u.length-1]),n=c[u.length-1],n(a[0],a[1],t)):[]}default:return[]}}function Qt(e,t){t.removeChild(e)}class er extends qt{constructor(e,t,r,n){super(n),this._encoding=e,this._attribute=this._encoding.attribute,this._channel=this._encoding.channel,this._scale=t,this._elems=r,this._flip="flip"in n&&n.flip,this._posArg="x"==this._channel||"width"==this._channel?n.pathY:n.pathX,this._orientation="orientation"in n?n.orientation:"x"===this._channel||"width"==this._channel?Zt:$t,this._titleText="title"in n?n.title:this._encoding.attribute,this._path="angle"===this._channel?new mt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ne({strokeColor:this._strokeColor,id:this._id+"_path"}),this._pathVisible||(this._path.visibility="hidden"),this.addChild(this._path),this.createTicksLabels(n),e.dataTable.getAttributeType(this._attribute)!==we.Date||"labelFormat"in n||(this._labelFormat="%m/%d/%y"),"radialDistance"===this._channel&&"rotation"in n&&(this._rotate=[-n.rotation,this._elems[0].parent.x,this._elems[0].parent.y])}isFlipped(){return this._flip}get elements(){return this._elems}get scale(){return this._scale}createTicksLabels(t){"tickValues"in t?(this._tickValues=t.tickValues,this._labelValues=t.tickValues):(this._tickValues=Jt(this._scale,this._channel,this._elems,this),this._labelValues=this._tickValues),this._ticks.removeAll();for(let e=0;e<this._tickValues.length;e++){let t=new ne({strokeColor:this._strokeColor,id:this._id+"_tick"+e});this._tickVisible||(t.visibility="hidden"),this._ticks.addChild(t)}let r;switch(this._labels.removeAll(),this._encoding.dataTable.getAttributeType(this._attribute)){case we.Date:r=e.timeFormat(this._labelFormat);break;case we.String:r=function(e){return e};break;default:r=e.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new xt({text:r(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(n)}this._title._text=this._titleText}}class tr extends qt{constructor(e,t,r,n){super(n),this._elems=e,this._attribute=r,this._channel=t,this._posArg="x"==this._channel||"width"==this._channel?n.pathY:n.pathX,this._labelAttribute=n.labelAttribute,this._orientation="orientation"in n?n.orientation:"x"===this._channel||"width"==this._channel?Zt:$t,this._titleText="title"in n?n.title:this._attribute,this._path="angle"===this._channel?new mt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ne({strokeColor:this._strokeColor,id:this._id+"_path"}),this._pathVisible||(this._path.visibility="hidden"),this.addChild(this._path),this.createTicksLabels(n),this._elems[0].dataScope.dataTable.getAttributeType(this._attribute)!==we.Date||"labelFormat"in n||(this._labelFormat="%m/%d/%y")}get elements(){if(this.layout.type===F.CLUSTER){const e=new Map(this._elems.map((e=>[e.dataScope.getAttributeValue(xe),e])));return this.layout._d3Root.leaves().map((t=>e.get(t.data[xe])))}return this._elems}get layout(){return this._elems[0].parent.layout}createTicksLabels(t){"tickValues"in t?(this._tickValues=t.tickValues,this._labelValues=t.tickValues):(this._tickValues=this.elements.map((e=>e.dataScope.getAttributeValue(this._labelAttribute?this._labelAttribute:this._attribute))),this._labelValues=this._tickValues),this._ticks.removeAll();for(let e=0;e<this._tickValues.length;e++){let t=new ne({strokeColor:this._strokeColor,id:this._id+"_tick"+e});this._tickVisible||(t.visibility="hidden"),this._ticks.addChild(t)}let r;switch(this._labels.removeAll(),this._elems[0].dataScope.dataTable.getAttributeType(this._labelAttribute?this._labelAttribute:this._attribute)){case we.Date:r=e.timeFormat(this._labelFormat);break;case we.String:r=function(e){return e};break;default:r=e.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new xt({text:r(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(n)}this._title._text=this._titleText}}class rr extends H{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Je&&e.property==Qe.AXIS_ORIENTATION)).element;e instanceof er?this._runForEncoding(e):e instanceof tr&&this._runForLayout(e),f(e._path)}_runForLayout(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==F.STACK?d(e.elements):h(e.elements),n=[];if("x"===t){let t=e.orientation===Kt?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,n.push([r.left,e._pathPos]),n.push([r.right,e._pathPos]),e._path._setVertices(n)}else if("y"===t){let t=e.orientation===$t?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,n.push([e._pathPos,r.top]),n.push([e._pathPos,r.bottom]),e._path._setVertices(n)}else if("angle"===t){let t=e.elements[0].parent.layout;t.type===F.CLUSTER&&(e._path._x=t.x,e._path._y=t.y,e._path._radius=t.radius)}}_runForEncoding(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==F.STACK?d(e.elements):h(e.elements),n=[];if("x"===t){let t=e.orientation===Kt?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,n.push([e.scale.range[0],e._pathPos]),n.push([e.scale.range[1],e._pathPos])}else if("width"===t){let t=e.orientation===Kt?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,n.push([r.left,e._pathPos]),n.push([r.right,e._pathPos])}else if("radialDistance"===t){let t=e.elements[0].parent,r=t.y;e._pathPos=e._posArg?e._posArg:r,n.push([e.scale.range[0]+t.x,e._pathPos]),n.push([e.scale.range[1]+t.x,e._pathPos])}else if("y"===t){let t=e.orientation===$t?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,n.push([e._pathPos,e.scale.range[0]]),n.push([e._pathPos,e.scale.range[1]])}else if("height"===t){let t=e.orientation===$t?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,n.push([e._pathPos,r.bottom]),n.push([e._pathPos,r.top])}e._path._setVertices(n)}}class nr extends H{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Je&&e.property==Qe.AXIS_PATH_POSITION)).element;e instanceof er?this._runForEncoding(e):e instanceof tr&&this._runForLayout(e);for(let t of e._ticks.children)t._updateBounds();f(e._ticks)}_runForLayout(e){let t=e.channel;if("x"==t){let t=e.orientation==Zt?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==Zt?e.tickSize:-e.tickSize;for(let[n,i]of e._ticks.children.entries()){let s=e.elements[n].bounds[e.tickAnchor];i._setVertices([[s,t],[s,t+r]])}}else if("y"===t){let t=e.orientation==$t?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==$t?-e.tickSize:e.tickSize;for(let[n,i]of e._ticks.children.entries()){let s=e.elements[n].bounds[e.tickAnchor];i._setVertices([[t,s],[t+r,s]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===F.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[xe],[e.x,e.y]])));for(let[r,i]of e._ticks.children.entries()){let s=e.elements[r].dataScope.getAttributeValue(xe),a=ce(n.get(s)[0])-90;i._setVertices([[t.x+n.get(s)[1]+e.elements[r].bounds.width/2,t.y],[t.x+n.get(s)[1]+e.elements[r].bounds.width/2+e.tickSize,t.y]]),i._rotate=[a,t.x,t.y]}}}}_runForEncoding(e){let t=e.channel,r=h(e.elements);if("x"==t){let t=e.orientation==Zt?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==Zt?e.tickSize:-e.tickSize;for(let[n,i]of e._ticks.children.entries())i._setVertices([[e.scale.map(e._tickValues[n]),t],[e.scale.map(e._tickValues[n]),t+r]])}else if("width"==t){let t=e.orientation==Zt?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,n=e.orientation==Zt?e.tickSize:-e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Tt.Area&&"right"===e.elements[0].baseline))for(let[i,s]of e._ticks.children.entries())s._setVertices([[r.left+e.scale.rangeExtent-e.scale.map(e._tickValues[i]),t],[r.left+e.scale.rangeExtent-e.scale.map(e._tickValues[i]),t+n]]);else for(let[i,s]of e._ticks.children.entries())s._setVertices([[e.scale.map(e._tickValues[i])+r.left,t],[e.scale.map(e._tickValues[i])+r.left,t+n]])}else if("y"===t){let t=e.orientation==$t?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==$t?-e.tickSize:e.tickSize;for(let[n,i]of e._ticks.children.entries())i._setVertices([[t,e.scale.map(e._tickValues[n])],[t+r,e.scale.map(e._tickValues[n])]])}else if("height"===t){let t=e.orientation==$t?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,n=e.orientation==$t?-e.tickSize:e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Tt.Area&&"top"===e.elements[0].baseline))for(let[i,s]of e._ticks.children.entries())s._setVertices([[t,r.top+e.scale.map(e._tickValues[i])],[t+n,r.top+e.scale.map(e._tickValues[i])]]);else for(let[i,s]of e._ticks.children.entries()){let a=r.bottom-e.scale.map(e._tickValues[i]);s._setVertices([[t,a],[t+n,a]])}}else if("radialDistance"===t){let t=e.orientation==Zt?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==Zt?e.tickSize:-e.tickSize,n=e.elements[0].parent;for(let[i,s]of e._ticks.children.entries())s._setVertices([[n.x+e.scale.map(e._tickValues[i]),t],[n.x+e.scale.map(e._tickValues[i]),t+r]])}}}class ir extends H{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Je&&e.property==Qe.AXIS_PATH_POSITION)).element;e instanceof er?this._runForEncoding(e):e instanceof tr&&this._runForLayout(e);for(let t of e._labels.children)t._updateBounds();f(e._labels)}_runForLayout(e){let t=e.channel;if("x"==t){let t=e.orientation==Zt?e.labelOffset:-e.labelOffset,r=e.orientation==Zt?[p.CENTER,p.TOP]:[p.CENTER,p.BOTTOM];for(let[n,i]of e._labels.children.entries()){let s=e.elements[n].bounds;i._x=s[e.tickAnchor],i._y=e.pathPos+t,i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[p.RIGHT,p.MIDDLE])}}else if("y"===t){let t=e.orientation==$t?-e.labelOffset:e.labelOffset,r=e.orientation==$t?[p.RIGHT,p.MIDDLE]:[p.LEFT,p.MIDDLE];for(let[n,i]of e._labels.children.entries()){let s=e.elements[n].bounds;i._x=e.pathPos+t,i._y=e.tickAnchor==p.MIDDLE?s.y:s[e.tickAnchor],i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[p.RIGHT,r[1]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===F.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[xe],[e.x,e.y]])));let i=5;for(let[r,s]of e._labels.children.entries()){let a=e.elements[r].dataScope.getAttributeValue(xe);if(n.get(a)[0]<Math.PI){let o=ce(n.get(a)[0])-90;s._anchor=[p.LEFT,p.MIDDLE],s._x=t.x+n.get(a)[1]+e.elements[r].bounds.width/2+i,s._y=t.y,s._rotate=[o,t.x,t.y]}else{let o=ce(n.get(a)[0])+90;s._anchor=[p.RIGHT,p.MIDDLE],s._x=t.x-n.get(a)[1]-e.elements[r].bounds.width/2-i,s._y=t.y,s._rotate=[o,t.x,t.y]}}}}}_runForEncoding(e){let t=e.channel,r=h(e.elements);if("x"==t){let t=e.orientation==Zt?e.labelOffset:-e.labelOffset,r=e.orientation==Zt?[p.CENTER,p.TOP]:[p.CENTER,p.BOTTOM];for(let[n,i]of e._labels.children.entries())i._x=e.scale.map(e.labelValues[n]),i._y=e.pathPos+t,i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[p.RIGHT,r[1]])}else if("width"===t){let t=e.orientation==Zt?e.labelOffset:-e.labelOffset,n=e.orientation==Zt?[p.CENTER,p.TOP]:[p.CENTER,p.BOTTOM],i=!!(e.isFlipped()||e.elements[0].type===Tt.Area&&"right"===e.elements[0].baseline);for(let[s,a]of e._labels.children.entries())a._x=i?r.left+e.scale.rangeExtent-e.scale.map(e.labelValues[s]):e.scale.map(e.labelValues[s])+r.left,a._y=e.pathPos+t,a._anchor=n,e._labelRotation&&(a._rotate=[e._labelRotation,a.x,a.y],a._anchor=[p.RIGHT,n[1]])}else if("y"===t){let t=e.orientation==$t?-e.labelOffset:e.labelOffset,r=e.orientation==$t?[p.RIGHT,p.MIDDLE]:[p.LEFT,p.MIDDLE];for(let[n,i]of e._labels.children.entries())i._x=e.pathPos+t,i._y=e.scale.map(e.labelValues[n]),i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[p.RIGHT,r[1]])}else if("height"===t){let t=e.orientation==$t?-e.labelOffset:e.labelOffset,n=e.orientation==$t?[p.RIGHT,p.MIDDLE]:[p.LEFT,p.MIDDLE],i=e.elements[0].type===Tt.Area&&"top"===e.elements[0].baseline;for(let[s,a]of e._labels.children.entries())a._x=e.pathPos+t,a._y=i?r.top+e.scale.map(e.labelValues[s]):r.bottom-e.scale.map(e.labelValues[s]),a._anchor=n,e._labelRotation&&(a._rotate=[e._labelRotation,a.x,a.y],a._anchor=[p.RIGHT,n[1]])}else if("radialDistance"==t){let t=e.orientation==Zt?e.labelOffset:-e.labelOffset,r=e.orientation==Zt?[p.CENTER,p.TOP]:[p.CENTER,p.BOTTOM],n=e.elements[0].parent;for(let[i,s]of e._labels.children.entries())s._x=n.x+e.scale.map(e.labelValues[i]),s._y=e.pathPos+t,s._anchor=r,e._labelRotation&&(s._rotate=[e._labelRotation,s.x,s.y],s._anchor=[p.RIGHT,r[1]])}}}class sr extends H{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=S(e.parent);for(let e of t){let t=e.layout;if(!t)return;this.fillGrid(e,t),this.computeCellBounds(e,t),this.placeElements(e,t)}let r=G(e,!0);for(let e of r)f(e)}placeElements(e,t){let r=De(e,"x"),n=De(e,"y");for(let r=0;r<e.children.length;r++){let n=e.children[r],i=t.cellBounds[r],s=0,a=0;switch(t._cellHorzAlignment){case p.LEFT:s=i.left-n.refBounds.left;break;case p.CENTER:s=i.x-n.refBounds.x;break;case p.RIGHT:s=i.right-n.refBounds.right}switch(t._cellVertAlignment){case p.TOP:a=i.top-n.refBounds.top;break;case p.MIDDLE:a=i.y-n.refBounds.y;break;case p.BOTTOM:a=i.bottom-n.refBounds.bottom}je(n,s,a)}if(r.length>0)for(let e of r)for(let r of e.scales){let n=e.getElements(r)[0],i=t.getIndex(n);if(i<0)continue;let s="point"===r.type?t.cellBounds[i].left+n.bounds.width/2:t.cellBounds[i].left,a=s+r.rangeExtent;r.range=r.range[0]<r.range[1]?[s,a]:[a,s]}if(n.length>0)for(let e of n)for(let r of e.scales){let n=e.getElements(r)[0],i=t.getIndex(n);if(i<0)continue;let s="point"===r.type?t.cellBounds[i].top+e.getElements(r)[0].bounds.height/2:t.cellBounds[i].top,a=s+r.rangeExtent;r.range=r.range[0]<r.range[1]?[s,a]:[a,s]}}fillGrid(e,t){t._grid=new Array(t.numRows).fill(null).map((()=>new Array(t.numCols).fill(null)));for(let r=0;r<e.children.length;r++){let e=t.getRowCol(r);t._grid[e.row][e.col]=r}}computeCellBounds(e,t){let r=e.children.map((e=>e.refBounds?e.refBounds:e.bounds)),n=t._colGap,i=t._rowGap;if(void 0===t._left){let e=r.map((e=>e.left)),n=r.map((e=>e.top));t._left=Math.min(...e),t._top=Math.min(...n)}let s=r.map((e=>e.width)),a=r.map((e=>e.height)),o=Math.max(...s),l=Math.max(...a);t._cellBounds=new Array(e.children.length).fill(null);for(let r=0;r<t.numRows;r++)for(let s=0;s<t.numCols;s++){let a=t._grid[r][s];a>=e.children.length||(t._cellBounds[a]=new u(t._left+(o+n)*s+0,t._top+(l+i)*r,o,l))}}}class ar extends H{constructor(e){super(e)}run(){let e=this.outputVar.element;e.scale?this._runForEncoding(e):this._runForLayout(e),f(e)}_runForLayout(e){let t=e.channel,r=h(e.elements),n=[];if("x"===t)for(let t=0;t<e.values.length;t++){let i=e.elements[t].refBounds;n.push({x1:i.x,y1:r.bottom,x2:i.x,y2:r.top})}else if("y"===t)for(let t=0;t<e.values.length;t++){let i=e.elements[t].refBounds;n.push({x1:r.left,y1:i.y,x2:r.right,y2:i.y})}e.lines=n}_runForEncoding(e){let t=e.channel,r=h(e.elements),n=[];if("x"===t)for(let t of e.values)n.push({x1:e.scale.map(t),y1:r.bottom,x2:e.scale.map(t),y2:r.top});else if("width"===t)for(let t of e.values)n.push({x1:e.scale.map(t)+r.left,y1:r.bottom,x2:e.scale.map(t)+r.left,y2:r.top});else if("y"===t)for(let t of e.values)n.push({x1:r.left,y1:e.scale.map(t),x2:r.right,y2:e.scale.map(t)});else if("height"===t)for(let t of e.values)n.push({x1:r.left,y1:r.bottom-e.scale.map(t),x2:r.right,y2:r.bottom-e.scale.map(t)});else if("radialDistance"===t){let t=e.elements[0].parent;for(let r=0;r<e.values.length;r++)n.push({x:t.x,y:t.y,r:e.scale.map(e.values[r])})}e.lines=n}}class or extends H{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=G(e)[0],r=S(e.parent);for(let e of r){let r=e.layout;if(!r)return;switch(t.type){case Tt.Rect:case Tt.Circle:case Tt.Image:this._stackRects(e,r);break;case Tt.Area:e.children[0].orientation===$.HORIZONTAL?this._stackAreasVert(e,r):this._stackAreasHorz(e,r);break;case Tt.Arc:case Tt.Pie:t.parent.classId===e.classId&&this._stackArcs(e,r)}}f(t)}_stackArcs(e,t){if(t.orientation===$.ANGULAR){let t=90;if((this._direction?this._direction:Q.Clockwise)===Q.Clockwise)for(let r of e.children){let e=he(t-r.angle);Fe(r,"startAngle",e),t=e}else for(let r of e.children){let e=he(t+r.angle);Fe(r,"startAngle",e),t=e}}else if(t.orientation===$.RADIAL){let t=Math.min(...e.children.map((e=>e.innerRadius)));for(let r of e.children){let e=r.outerRadius-r.innerRadius;Fe(r,"innerRadius",t),Fe(r,"outerRadius",t+e),t=r._outerRadius}}}_stackAreasVert(e,t){let r=e.children,n=e.bounds,i=t.vertCellAlignment===p.TOP?n.top:n.bottom,s=t.vertCellAlignment===p.TOP?1:-1,a=r[0].vertices.length/2,o=new Array(a).fill(0);for(let e of r){for(let t=0;t<a;t++){let r=e.vertices[t],n=e.vertices[2*a-t-1],l=Math.abs(r.y-n.y),u=i+o[t]*s,c=i+(o[t]+l)*s;je(r,0,u-r.y),je(n,0,c-n.y),o[t]+=l}let t=e.bounds.bottom;e._updateBounds(),e._refBounds.translate(0,e.bounds.bottom-t)}if(t.vertCellAlignment===p.MIDDLE)for(let e of r){for(let t=0;t<a;t++){let r=e.vertices[t],i=e.vertices[2*a-t-1],s=n.middle+o[t]/2;je(r,0,s-n.bottom),je(i,0,s-n.bottom)}let t=e.bounds.bottom;e._updateBounds(),e._refBounds.translate(0,e.bounds.bottom-t)}}_stackAreasHorz(e,t){}_stackRects(e,t){e.scene;let r=t._orientation,n=e.children.map((e=>e.bounds)),i=n.map((e=>e.left)),s=n.map((e=>e.top)),a=n.map((e=>e.width)),o=n.map((e=>e.height)),l=null==t._left?Math.min(...i):t._left,u=null==t._top?Math.min(...s):t._top,c=Math.max(...a),h=Math.max(...o);if(r==$.VERTICAL)for(let r=0;r<e.children.length;r++){let n=e.children[r],i=0,s=u+n.bounds.height/2-n.bounds.y;u+=n.bounds.height+t._gap,je(n,i,s),n._updateBounds();let a=0,o=0;if(!Me(n))switch(t._horzCellAlignment){case p.LEFT:a=l-n.bounds.left;break;case p.CENTER:a=l+c/2-n.bounds.x;break;case p.RIGHT:a=l+c-n.bounds.right}je(n,a,o)}else for(let r=0;r<e.children.length;r++){let n=e.children[r],i=l+n.bounds.width/2-n.bounds.x,s=0;l+=n.bounds.width+t._gap,je(n,i,s),n._updateBounds();let a=0,o=0;if(!Be(n))switch(t._vertCellAlignment){case p.TOP:o=u-n.bounds.top;break;case p.MIDDLE:o=u+h/2-n.bounds.y;break;case p.BOTTOM:o=u+h-n.bounds.bottom}je(n,a,o)}}}class lr extends H{constructor(e){super(e)}run(){super.run()}}class ur extends H{constructor(e){super(e)}run(){let t=this.inputVars[0],r=this.outputVar,n=t.attribute,i=r.attribute,s=t.dataset,a=r.dataset,o=s.getAttributeValues(n),l=e.bin()(o),u=this._findBin,c=o.map((e=>{let t=u(e,l);return(t.x0+t.x1)/2+""})),h=l.map((e=>(e.x0+e.x1)/2+""));a._addAttribute(i,we.String,c),a.orderAttributeValues(i,h)}_findBin(e,t){for(let r of t)if(r.indexOf(e)>=0)return r}}class cr extends H{constructor(e){super(e)}run(){let e=this.outputVar,t=e.dataset,r=e.predicate,n=[];for(let[e,i]of t.data.entries())r.testTuple(i)||n.push(e);n.sort(((e,t)=>t-e)),n.forEach((e=>{e>=0&&e<t.data.length&&(t._data.splice(e,1),t._rawData.splice(e,1))}));for(let e of t._attributes)t._attrSummaries[e]=Re(t.data.map((t=>t[e])),t._attrTypes[e])}}class hr extends Y{constructor(e,t,r){super(e),this._dataset=r,this._predicate=t}get dataset(){return this._dataset}get predicate(){return this._predicate}}class dr extends Y{constructor(e,t){super(e),this._group=t}get element(){return this._group}}class fr extends H{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e.type===X.AFFIXATION)).affixation,t=e.base,r=e.element,n=S(t),i=S(r),s=e.channels,a=e.attribute;if(x(r)&&x(t)){let e=n.map((e=>e.dataScope.getAttributeValue(a)));i=i.filter((t=>e.includes(t.dataScope.getAttributeValue(a))));let t=(e,t)=>e.dataScope.getAttributeValue(a)<t.dataScope.getAttributeValue(a)?-1:e.dataScope.getAttributeValue(a)>t.dataScope.getAttributeValue(a)?1:0;i.sort(t),n.sort(t)}if(s.includes("x")||s.includes("y"))for(let t of s)this._handleXY(t,i,n,e.getElementAnchor(t),e.getBaseAnchor(t),e.getOffset(t));(s.includes("radialDistance")||s.includes("angle"))&&this._handlePolar(i,n,e);let o=G(r,!0);for(let e of o)f(e)}_handlePolar(e,t,r){let n=r.hasChannel("radialDistance")?r.getBaseAnchor("radialDistance"):p.MIDDLE,i=r.hasChannel("radialDistance")?r.getElementAnchor("radialDistance"):p.MIDDLE,s=r.hasChannel("angle")?r.getBaseAnchor("angle"):p.CENTER;r.hasChannel("angle")?r.getElementAnchor("angle"):p.CENTER;let a=r.hasChannel("radialDistance")?r.getOffset("radialDistance"):0,o=r.hasChannel("angle")?r.getOffset("angle"):0;if([Tt.Arc,Tt.Ring].indexOf(t[0].type)>=0&&e[0].type==Tt.PointText)for(let r=0;r<e.length;r++){let i=t[r],o=e[r],l=n===p.MIDDLE?(i.outerRadius+i.innerRadius)/2:n===p.TOP?i.outerRadius-5:i.innerRadius+5;if(l+=a,i.type===Tt.Arc){let e=Se(i.x,i.y,l,i.startAngle),t=Se(i.x,i.y,l,i.endAngle);i.endAngle>=180&&i.endAngle<=360?o._textPath=["M",e[0],e[1],"A",l,l,i.angle,i.angle>=180?1:0,0,t[0],t[1]].join(" "):o._textPath=["M",t[0],t[1],"A",l,l,i.angle,i.angle>=180?1:0,1,e[0],e[1]].join(" ")}else if(i.type===Tt.Ring){let e=275,t=265,r=350,n=Se(i.x,i.y,l,e),s=Se(i.x,i.y,l,t);o._textPath=["M",s[0],s[1],"A",l,l,r,1,1,n[0],n[1]].join(" ")}o._textPathOffset=s===p.LEFT?"0%":"50%"}else for(let r=0;r<e.length;r++){let l,u,c=t[r],h=e[r];c.type==Tt.Arc||c.type==Tt.Ring?(u="left"==s?c.endAngle+o:"center"==s?c.startAngle+c.angle/2+o:c.startAngle+o,l="top"==n?c.outerRadius+a:"bottom"==n?c.innerRadius+a:(c.outerRadius+c.innerRadius)/2+a):c.type==Tt.Circle&&(u=90,l="top"==n?c.radius+a:"bottom"==n?a:c.radius/2+a),je(h,c.x-h.x,c.y-l-h.bounds[i]),h._rotate=[90-u,c.x,c.y]}}_handleXY(e,t,r,n,i,s){for(let a=0;a<t.length;a++){let o,l=r[a],u=t[a];if(se(l)){o=ie(l,[p.LEFT,p.TOP].includes(i)?0:[p.CENTER,p.MIDDLE].includes(i)?.5:1)[e]}else o=l.bounds[i]+s;t[0].type===Tt.PointText?(u.anchor["x"==e?0:1]=n,Fe(u,e,o)):"x"==e?je(u,o-u.bounds[n],0):je(u,0,o-u.bounds[n])}}}class pr extends Y{constructor(e,t){super(e),this._affx=t}get affixation(){return this._affx}}class _r extends H{constructor(e){super(e)}run(){let e=this.inputVars[0],t=this.outputVar,r=e.attribute,n=t.attribute,i=e.dataset,s=t.dataset,a=this.args,o="min"in a?a.min:i.getAttributeSummary(r).min,l="max"in a?a.max:i.getAttributeSummary(r).max,u=o,c=[];for(;u<l;)c.push(u),u+=a.interval;c.push(u);let h={},d={};if(a.groupBy)for(let e of i.data){let t=a.groupBy.map((t=>e[t])).join("-");t in h||(h[t]=[],d[t]=a.groupBy.map((t=>e[t]))),h[t].push(e[r])}else h[""]=i.data.map((e=>e[r])),d[""]="";let f=[];for(let e in d){let t=gr(yr(a.bandwidth),c,h[e]);for(let i of t){let t={};""!==e&&a.groupBy.forEach(((r,n)=>t[r]=d[e][n])),t[r]=i[0],t[n]=i[1],f.push(t)}}let p={};if(p[r]=i.getAttributeType(r),p[n]=we.Number,a.groupBy)for(let e of a.groupBy)p[e]=i.getAttributeType(e);s.initialize(f,s.url,p)}}function gr(t,r,n){return r.map((r=>[r,e.mean(n,(e=>t(r-e)))]))}function yr(e){return t=>Math.abs(t/=e)<=1?.75*(1-t*t)/e:0}class mr extends H{constructor(e){super(e)}run(){super.run();let t=this._outputVars[0].element,r=S(t.parent);for(let t of r){let r=t.layout;if(!r)return;let n=t.children.map((e=>({name:e.id,radius:e.radius,itm:e}))),i=n.reduce(((e,t)=>e+Math.pow(t.radius,2)),0),s=Math.sqrt(i);void 0===r._width&&(r._width=s),void 0===r._height&&(r._height=s);let a=e.hierarchy({name:"root",children:n}).sum((e=>e.radius?e.radius:0)).sort(((e,t)=>t.value-e.value));e.pack().size([r._width,r._height]).radius((e=>e.value))(a);for(let e of a.children){let t=e.data.itm;je(t,r._x-a.x+e.x-t.x,r._y-a.y+e.y-t.y)}}let n=G(t,!0);for(let e of n)f(e)}}class br extends H{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Je&&e.property==Qe.AXIS_PATH_POSITION)).element;e instanceof er?this._runForEncoding(e):e instanceof tr&&this._runForLayout(e),f(e._title)}_runForEncoding(e){let t=e.channel,r=h(e.elements);if("x"==t)e._title._x=(e.scale.range[0]+e.scale.range[1])/2,e._title._y=e.orientation==Zt?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("width"==t)e._title._x=r.left+e.scale.rangeExtent/2,e._title._y=e.orientation==Zt?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._rotateYTitle?(e._title._x=e.orientation==$t?e.pathPos-e.titleOffset:e.pathPos+e.titleOffset,e._title._y=(e.scale.range[0]+e.scale.range[1])/2,e._title._rotate=e.orientation==$t?[-90,e._title._x,e._title._y]:[90,e._title._x,e._title._y]):(e._title._x=e.orientation==$t?e.pathPos-e.titleOffset:e.pathPos+e.titleOffset,e._title._y=Math.min(e.scale.range[0],e.scale.range[1])-25,e._title._rotate=void 0);else if("height"===t)e._title._x=r.center,e._title._y=(r.top+r.bottom)/2-r.width/2-e.titleOffset,e._title._rotate=e.orientation==$t?[-90,r.center,r.middle]:[90,r.center,r.middle];else if("radialDistance"===t){let t=e.elements[0].parent;e._title._x=t.x+e.scale.rangeExtent/2,e._title._y=e.orientation==Zt?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset,e._rotate&&(e._title._rotate=e._rotate.slice())}}_runForLayout(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==F.STACK?d(e.elements):h(e.elements);if("x"==t)e._title._x=r.center,e._title._y=e.orientation==Zt?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._title._x=r.center,e._title._y=r.middle-r.width/2-e.titleOffset,e._title._rotate=e.orientation==$t?[-90,r.center,r.middle]:[90,r.center,r.middle];else if("angle"===t){let t=e.elements[0].parent.layout;t.type===F.CLUSTER&&(e._title._x=t.x,e._title._y=t.y)}}}class vr extends Mt{constructor(e){super(e)}run(){super.run();let t,r=this.vars.find((e=>e.type===X.ALIGNMENT)).alignment,n=r.anchor,i=r.elements;n==p.Top||n==p.LEFT?t=Math.min(...i.map((e=>e.bounds[n]))):n==p.BOTTOM||n==p.RIGHT?t=Math.max(...i.map((e=>e.bounds[n]))):n!=p.CENTER&&n!=p.MIDDLE||(t=e.mean(i.map((e=>e.bounds[n]))));for(let e of i){let i=Ge(e,r.channel);if(i){let s=t-e.bounds[n];je(i,"x"===r.channel?s:0,"x"===r.channel?0:s)}}for(let e of i)f(e)}}class xr extends Y{constructor(e,t){super(e),this._aln=t}get alignment(){return this._aln}}class Er extends H{constructor(e){super(e)}run(){super.run();let t=this._outputVars[0].element,r=S(t.parent);for(let t of r){let r=t.layout;if(!r)continue;let n=be(t.children[0]);if(!n)continue;let i=n.linkList.map((e=>({source:n.getNode(e.source),target:n.getNode(e.target)}))),s=e.forceSimulation(n.nodeList).force("charge",e.forceManyBody().strength(-r._repulsion)).force("link",e.forceLink(i).id((e=>e.id)).distance(r._linkDistance)).force("x",e.forceX()).force("y",e.forceY()).force("center",e.forceCenter(r._x,r._y).strength(r._attraction));s.stop(),s.tick(r._iterations);for(let e=0;e<t.children.length;e++){let r=t.children[e],i=n.nodeList[e];je(r,i.x-r.x,i.y-r.y)}}let n=G(t,!0);for(let e of n)f(e)}}class wr extends H{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=S(e);switch(e.type){case Tt.Arc:this._updateArcLinks(t);break;case Tt.BezierCurve:this._updateBezierLinks(t);break;case Tt.BundledPath:this._updateBundledLinks(t);break;case Tt.Chord:this._updateChordLinks(t);break;case Tt.Line:default:this._updateLineLinks(t)}f(e)}_updateArcLinks(e){for(let t of e){let e=t.source.x<t.target.x?t.source:t.target,r=t.source.x<t.target.x?t.target:t.source;t._x=(e.x+r.x)/2,t._y=(e.y+r.y)/2,t._innerRadius=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))/2,t._outerRadius=t._innerRadius+t._thickness;let n=de(e.x,e.y,t._x,t._y),i=de(r.x,r.y,t._x,t._y);t.direction===Q.CLOCKWISE&&([n,i]=[i,n]),Fe(t,"startAngle",n),Fe(t,"angle",Math.abs(i-n))}}_updateBezierLinks(e){let t=this._inputVars[0].element,r=S(t),n=t.parent.layout;n.type===F.DIRECTED||n.type===F.TIDYTREE?this._updateBezierLinksForDirectedGraph(r,e,n):n.type===F.CLUSTER&&this._updateBezierLinksForClusteredGraph(r,e,n)}_updateBezierLinksForClusteredGraph(t,r,n){const i=n._d3Root.descendants(),s=new Map(i.map((e=>[Ar(e),e]))),a=new Map(i.map((e=>[e.data[xe],Ar(e)])));if(n.isRadial()){const t=e.linkRadial().angle((e=>e.x)).radius((e=>e.y));for(let e of r){let r=e.source,i=e.target,o=r.dataScope.getAttributeValue(xe),l=i.dataScope.getAttributeValue(xe),u=s.get(a.get(o)),c=s.get(a.get(l));e._d=oe(t({source:u,target:c}),n.x,n.y)}}else if(n.orientation===$.VERTICAL){const t=e.linkVertical().x((e=>e.x)).y((e=>e.y));for(let e of r){let r=e.source,i=e.target,o=r.dataScope.getAttributeValue(xe),l=i.dataScope.getAttributeValue(xe),u=s.get(a.get(o)),c=s.get(a.get(l));e._d=oe(t({source:u,target:c}),n.left-n._x0,n.top)}}else if(n.orientation===$.HORIZONTAL){const t=e.linkHorizontal().x((e=>e.y)).y((e=>e.x));for(let e of r){let r=e.source,i=e.target,o=r.dataScope.getAttributeValue(xe),l=i.dataScope.getAttributeValue(xe),u=s.get(a.get(o)),c=s.get(a.get(l));e._d=oe(t({source:u,target:c}),n.left,n.top-n._x0)}}}_updateBezierLinksForDirectedGraph(e,t,r){let n={},i={},s={},a={};for(let t of e){i[t.id]=0,n[t.id]=0;let e=t.links.filter((e=>e.source===t)),r=t.links.filter((e=>e.target===t));a[t.id]=r.map((e=>e.strokeWidth)).reduce(((e,t)=>e+t),0),s[t.id]=e.map((e=>e.strokeWidth)).reduce(((e,t)=>e+t),0)}r.spreadLinks&&("LR"===r.direction||"RL"===r.direction?t.sort(((e,t)=>de(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y)-de(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y))):t.sort(((e,t)=>de(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y)-de(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y))));for(let e of t){let t,o,l,u,c=e.source,h=e.target;r.spreadLinks?"LR"===r.direction||"RL"===r.direction?(t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0],l=h.bounds[e.targetAnchor[0]]+e.targetOffset[0],o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1]-s[c.id]/2+n[c.id]+e.strokeWidth/2,u=h.bounds[e.targetAnchor[1]]+e.targetOffset[1]-a[h.id]/2+i[h.id]+e.strokeWidth/2,n[c.id]+=e.strokeWidth,i[h.id]+=e.strokeWidth):(o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1],u=h.bounds[e.targetAnchor[1]]+e.targetOffset[1],t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0]-s[c.id]/2+n[c.id]+e.strokeWidth/2,l=h.bounds[e.targetAnchor[0]]+e.targetOffset[0]-a[h.id]/2+i[h.id]+e.strokeWidth/2,n[c.id]+=e.strokeWidth,i[h.id]+=e.strokeWidth):(t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0],o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1],l=h.bounds[e.targetAnchor[0]]+e.targetOffset[0],u=h.bounds[e.targetAnchor[1]]+e.targetOffset[1]),e.orientation===$.HORIZONTAL?e._setVertices([[t,o],[(t+l)/2,o],[t,u],[l,u]]):e.orientation===$.VERTICAL&&e._setVertices([[t,o],[t,(o+u)/2],[l,o],[l,u]])}}_updateBundledLinks(t){let r=this._inputVars[0].element.parent.layout;if(r.type!==F.CLUSTER)throw"Bundled links must work on a cluster layout";let n=r._d3Root.leaves();const i=new Map(n.map((e=>[Ar(e),e]))),s=new Map(n.map((e=>[e.data[xe],Ar(e)]))),a=e.lineRadial().curve(e.curveBundle.beta(t[0]._strength)).radius((e=>e.y)).angle((e=>e.x));for(let e of t){let t=e.source.dataScope.getAttributeValue(xe),n=e.target.dataScope.getAttributeValue(xe),o=i.get(s.get(t)),l=i.get(s.get(n));(o.outgoing??=[]).push([o,l]),l.incoming??=[];let u=o.path(l);e._d=oe(a(u),r.x,r.y)}}_updateChordLinks(e){for(let t of e){let e=t.source,r=t.target,n=Se(e.x,e.y,e.innerRadius,e.startAngle),i=Se(e.x,e.y,e.innerRadius,e.endAngle),s=Se(r.x,r.y,r.innerRadius,r.startAngle),a=Se(r.x,r.y,r.innerRadius,r.endAngle);t._d=["M",n[0],n[1],"Q",e.x,e.y,a[0],a[1],"A",e.x,e.y,r.angle,r.angle>180?1:0,1,s[0],s[1],"Q",e.x,e.y,i[0],i[1],"A",e.x,e.y,e.angle,e.angle>180?1:0,1,n[0],n[1]].join(" ")}}_updateLineLinks(e){for(let t of e){let e=t.source,r=t.target;t.vertices[0]._x=e.bounds.x,t.vertices[0]._y=e.bounds.y,t.vertices[1]._x=r.bounds.x,t.vertices[1]._y=r.bounds.y}}}function Ar(e){return`${e.parent?Ar(e.parent)+".":""}${e.data[xe]}`}var Cr,Rr,kr,Sr,Tr,Or,Ir,Nr,Lr,Vr,Pr,Dr,Br,Mr,Gr,jr,zr,Fr,Ur,Hr,Wr,Yr,Xr,qr,Kr,Zr,$r,Jr,Qr,en,tn,rn,nn,sn,an,on,ln,un,cn,hn,dn,fn,pn,_n,gn,yn,mn,bn,vn,xn,En,wn,An,Cn,Rn,kn,Sn,Tn,On,In,Nn,Ln,Vn,Pn,Dn,Bn,Mn,Gn,jn,zn,Fn,Un,Hn,Wn,Yn,Xn,qn,Kn,Zn,$n,Jn,Qn,ei,ti,ri,ni,ii,si,ai,oi,li,ui,ci,hi,di,fi,pi,_i,gi,yi,mi,bi,vi,xi,Ei,wi,Ai,Ci,Ri="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function ki(){if(Sr)return kr;return Sr=1,kr=function(e,t){return e===t||e!=e&&t!=t}}function Si(){if(Or)return Tr;Or=1;var e=ki();return Tr=function(t,r){for(var n=t.length;n--;)if(e(t[n][0],r))return n;return-1}}function Ti(){if(jr)return Gr;jr=1;var e=Rr?Cr:(Rr=1,Cr=function(){this.__data__=[],this.size=0}),t=function(){if(Nr)return Ir;Nr=1;var e=Si(),t=Array.prototype.splice;return Ir=function(r){var n=this.__data__,i=e(n,r);return!(i<0||(i==n.length-1?n.pop():t.call(n,i,1),--this.size,0))}}(),r=function(){if(Vr)return Lr;Vr=1;var e=Si();return Lr=function(t){var r=this.__data__,n=e(r,t);return n<0?void 0:r[n][1]}}(),n=function(){if(Dr)return Pr;Dr=1;var e=Si();return Pr=function(t){return e(this.__data__,t)>-1}}(),i=function(){if(Mr)return Br;Mr=1;var e=Si();return Br=function(t,r){var n=this.__data__,i=e(n,t);return i<0?(++this.size,n.push([t,r])):n[i][1]=r,this}}();function s(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=i,Gr=s}function Oi(){if(Zr)return Kr;Zr=1;var e="object"==typeof Ri&&Ri&&Ri.Object===Object&&Ri;return Kr=e}function Ii(){if(Jr)return $r;Jr=1;var e=Oi(),t="object"==typeof self&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return $r=r}function Ni(){if(en)return Qr;en=1;var e=Ii().Symbol;return Qr=e}function Li(){if(on)return an;on=1;var e=Ni(),t=function(){if(rn)return tn;rn=1;var e=Ni(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;return tn=
|
|
3
3
|
/**
|
|
4
4
|
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
|