mascot-vis 3.0.4 → 3.0.5
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-cjs.js +3 -3
- package/dist/mascot-esm.js +3 -3
- package/dist/mascot-umd.js +3 -3
- package/package.json +1 -1
package/dist/mascot-cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// version: 3.0.
|
|
2
|
-
"use strict";function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("d3"));const r={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 n{constructor(e,t,r){this._id="predicate_"+Nt(),this._type=e||i.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 i=Object.freeze({POINT:"point",INTERVAL:"interval",LIST:"list"});class s extends n{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 a extends n{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 o extends n{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 l(e){let t,r="attribute"in e?"attribute":"property",n=e[r];switch(e.type){case i.LIST:t=new a(e.type,r,n);break;case i.INTERVAL:t=new s(e.type,r,n);break;case i.POINT:default:t=new o(e.type,r,n)}return e.value&&(t.value=e.value),t}function u(e,t){for(let r of t){if(!l(r).testElement(e))return!1}return!0}class c{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 c(t,r,n-t,i-r)}clone(){return new c(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 _.RIGHT:this._x=this.right-e/2;break;case _.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 _.TOP:this._y=this.top+e/2;break;case _.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 h(e){let t=e[0].clone();for(let r=1;r<e.length;r++)t=t.union(e[r]);return t}function d(e){return h(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.refBounds?e.refBounds:e.bounds)))}function f(e){return h(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.bounds)))}function p(e){let t=T(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)p(e)}const _=Object.freeze({TOP:"top",LEFT:"left",RIGHT:"right",BOTTOM:"bottom",CENTER:"center",MIDDLE:"middle"});function g(e){return e.id+"-bg"}function y(e){return e.id+"-path"}function m(e){switch(e){case _.TOP:return"text-before-edge";case _.BOTTOM:return"auto";case _.LEFT:return"start";case _.RIGHT:return"end";case _.CENTER:case _.MIDDLE:return"middle";default:return e}}const b=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 v{constructor(e){let t=e||{};this._stops=[],this.type=Ot.LinearGradient,this.id=this.type+Nt(),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 x{constructor(e){if(this._dataScope=void 0,this._type="type"in e?e.type:Ot.Mark,this._id=e.id?e.id:this._type+"_"+Nt(),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 b)t in e&&(this.styles[t]=e[t])}get scene(){return D(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,t){if(!this.bounds)return!1;if(!this.bounds.contains(e,t))return!1;switch(this.type){case Ot.Rect:case Ot.PointText:return!0;case Ot.Circle:return Math.sqrt(Math.pow(e-this.x,2)+Math.pow(t-this.y,2))<=this.radius+this.strokeWidth;case Ot.Path:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),this.closed?n.isPointInPath(i,e,t):n.isPointInStroke(i,e,t)}case Ot.Line:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),n.isPointInStroke(i,e,t)}default:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.isPointInPath(i,e,t)}}}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 E(e){return e instanceof x&&e.type!==Ot.Gridlines}const w=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 A(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 C(e,t,r,n){return Math.sqrt(Math.pow(e-r,2)+Math.pow(t-n,2))}function R(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 k={svg:void 0,getSVG:function(){return window?(void 0===this.svg&&(this.svg=document.createElement("svg")),this.svg):null}},S={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 T(e,t){let r=D(e),n=t||r;if("vertex"===e.type){return O(e,N(n,[{property:"classId",value:e.parent.classId}]))}if("segment"===e.type){return I(e,N(n,[{property:"classId",value:e.parent.classId}]))}return e.classId?N(n,[{property:"classId",value:e.classId}]):[e]}function O(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===Ot.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 I(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 N(e,t){let r=[];return P(e,t,r),r}function L(e,t){let r=e.children.filter((e=>e.type==Ot.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 V(e){return e.type==Ot.Collection?e:e.parent?V(e.parent):void 0}function P(e,t,r){if(e&&"axis"!=e.type&&"legend"!=e.type&&"gridlines"!=e.type)if(u(e,t)&&r.push(e),e.vertices)for(let n of e.vertices.concat(e.segments))u(n,t)&&r.push(n);else if(e.children&&e.children.length>0)for(let n of e.children)P(n,t,r)}function D(e){let t=e;for(;t;){if(t.type==Ot.Scene)return t;t=t.parent}}function B(e){let t=e;for("vertex"!=t.type&&"segment"!=t.type||(t=t.parent);t.parent&&[Ot.Collection,Ot.Glyph].includes(t.parent.type);)t=t.parent;return t}function M(e,t,r,n){let i=N(e,[{property:"type",value:t}]);for(let e of i)if(G(e,r,n))return e}function G(e,t,n){switch(e.type){case Ot.Path:case Ot.Arc:case Ot.BezierCurve:case Ot.Line:{let i=r.getContext(),s=new Path2D(e.getSVGPathData());return i.lineWidth=Math.max(e.strokeWidth,2.5),i.stroke(s),e.closed?i.isPointInPath(s,t,n):i.isPointInStroke(s,t,n)}case Ot.Circle:{let r=e.x,i=e.y;if(e.rotation){let t=R(r,i,e.rotation[1],e.rotation[2],e.rotation[0]);r=t.x,i=t.y}return Math.sqrt(Math.pow(t-r,2)+Math.pow(n-i,2))<=e.radius+e.strokeWidth}default:return e.bounds.contains(t,n)}}function j(e,t){let r=[];if(z(e,r),t){let e={};for(let t of r)e[t.classId]=t;return Object.values(e)}return r}function z(e,t){if(E(e))t.push(e);else if(e.type==Ot.Collection&&e.children)for(let r of e.children)z(r,t);else if(e.type==Ot.Glyph&&e.children)for(let r of e.children)z(r,t);else if(e.type==Ot.Composite&&e.children)for(let r of e.children)z(r,t)}class F{constructor(){this._refElements=[]}addRefElement(e){this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}const U=Object.freeze({GRID:"grid",STACK:"stack",PACKING:"packing",FORCE:"force",DIRECTED:"directedgraph",TIDYTREE:"tidytree",TREEMAP:"treemap",STRATA:"strata",CIRCULAR:"circular",CLUSTER:"cluster"});function H(e,t){return!!(e.startsWith("h")&&[_.LEFT,_.CENTER,_.RIGHT].indexOf(t)>=0)||(!!(e.startsWith("v")&&[_.TOP,_.MIDDLE,_.BOTTOM].indexOf(t)>=0)||(console.warn("Invalid alignment:",t),!1))}class W{constructor(e){this._id=e+"_"+Nt(),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 Y=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 X{constructor(e){this._id="v_"+Nt(),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 W)return e.fromNode;return null}isIsolated(){return 0==this._incomings.length&&0==this._outgoings.length}}const q=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 K extends X{constructor(e,t){super(e),this._condEnc=t}get condEncoding(){return this._condEnc}}const Z=Object.freeze({RowFirst:"rowFirst",ColumnFirst:"columnFirst"}),$=Object.freeze({TopLeft:"topLeft",TopRight:"topRight",BottomLeft:"bottomLeft",BottomRight:"bottomRight"}),J={HORIZONTAL:"horizontal",VERTICAL:"vertical",ANGULAR:"angular",RADIAL:"radial"},Q={Left2Right:"l2r",Right2Left:"r2l",Top2Bottom:"t2b",Bottom2Top:"b2t"},ee=Object.freeze({CLOCKWISE:"clockwise",ANTI_CLOCKWISE:"anti-clockwise"}),te=Object.freeze({INWARD:"inward",OUTWARD:"outward"});class re{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 c(this.x-this.width/2,this.y-this.height/2,this.width,this.height);case"circle":return new c(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius);default:return new c(this.x-.5,this.y-.5,1,1)}}get id(){return this.parent.id+"_v_"+this._id}_clone(e){let t=new re(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}}re.styles=["vxShape","vxWidth","vxHeight","vxRadius","vxFillColor","vxStrokeColor","vxStrokeWidth","vxOpacity"];class ne{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 ie extends x{constructor(e){super(e),this._type="type"in e?e.type:Ot.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 re.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!==Ot.Path){t=new re(e[r][0],e[r][1],this,this.vertexCounter++);for(let e of re.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 ne(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===Ot.Rect)&&(this.closed=!0,"fillColor"in this.styles||(this.styles.fillColor="#fff"),this.segments.push(new ne(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 re.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 ne(e.vertices[t-1],e.vertices[t],e,e.segmentCounter++));e.closed&&e.segments.push(new ne(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 c(r,n,a,o),this.type===Ot.Line||this.type===Ot.Path){let e=this.styles.strokeWidth?this.styles.strokeWidth:1;r===i?this._bounds=new c(r-e/2,n,i-r+e,s-n):n===s&&(this._bounds=new c(r,n-e/2,i-r,s-n+e))}}addVertex(e,t,r){let n=new re(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 e=t.path(),r=this._getD3CurveFunction(this.curveMode)(e);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(),e._}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(e){switch(e){case oe.Natural:return t.curveNatural;case oe.Basis:return t.curveBasis;case oe.BumpX:return t.curveBumpX;case oe.BumpY:return t.curveBumpY;case oe.Linear:return t.curveLinear;case oe.Step:return t.curveStep;case oe.CatmullRom:return t.curveCatmullRom;case oe.Cardinal:return t.curveCardinal;case oe.Bundle:return t.curveBundle.beta(.5);default:return t.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 se(e,t){const r=k.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 ae(e){return e instanceof ie&&e.source&&e.target}const oe={Natural:"natural",Basis:"basis",BumpX:"bumpX",BumpY:"bumpY",Bundle:"bundle",Linear:"linear",Step:"step",CatmullRom:"CatmullRom",Cardinal:"cardinal"};function le(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 ue extends ie{constructor(e){super(e),this._type=Ot.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=ce(this._startAngle),this._er=ce(this._endAngle),this._direction="direction"in e?e.direction:ee.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?Ot.Pie:Ot.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=ce(this._startAngle),this._er=ce(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 c(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 ce(e){return e*Math.PI/180}function he(e){return 180*e/Math.PI}function de(e){return(e%360+360)%360}function fe(e,t,r,n){let i=e-r,s=n-t;return Math.atan2(s,i)*(180/Math.PI)}class pe{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 pe(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 pe(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(e,r){let n=this._tuples.map((t=>t[e]));switch(r){case ge.Max:return Math.max(...n);case ge.Min:return Math.min(...n);case ge.Avg:case ge.Mean:return t.mean(n);case ge.Median:return t.median(n);case ge.Count:return n.length;case ge.Percentile25:return t.quantile(n,.25);case ge.Percentile75:return t.quantile(n,.75);case ge.Sum:default:return t.sum(n)}}_updateTuples(e,t){this._tuples=this._tuples.filter((r=>r[e]==t))}get tuples(){return this._tuples}}function _e(e){return"vertex"==e.type||"segment"==e.type?e.dataScope?e.dataScope:e.parent.dataScope:e.dataScope}const ge={Max:"max",Min:"min",Avg:"avg",Median:"median",Sum:"sum",Count:"count",Mean:"mean",Percentile25:"percentile 25",Percentile75:"percentile 75"};class ye{constructor(e,t){this._id=Ot.TreeData+Nt(),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 Lt(this._nodeList,"nodes"),this._linkTable=new Lt(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={};Ee in e||(e[Ee]="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[Ee],child:s})}else i[s]=e[s];return this._nodeHash[i[Ee]]=i,i[Ee]}getNodeDataScope(e){return new pe(this._nodeTable).cross(Pt,e[Pt])}getNode(e){return this._nodeHash[e]}getRoot(){return this._nodeTable.data[0]}getChildren(e){let t=e[Ee],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[Ee]==t));r.push(i[s])}return r}getParent(e){let t=e[Ee],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[Ee]==t));return n[i]}}}function me(e){return e.dataScope._dt.tree}class be{constructor(e,t){this._id=Ot.NetworkData+Nt(),this.initialize(e,t)}initialize(e,t){this.url=t,this._nodeTable=new Lt(e.nodes,this._id+"_nodes"),this._linkTable=new Lt(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[Ee]]=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[Ee],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[Ee]="root",xe(t,this._rawNodes,e),new ye(t,this.url)}}function ve(e){return e.dataScope._dt.graph}function xe(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[Ee]=t,e.children.push(r)}else for(let t in n){let i={};i[Ee]=t,e.children.push(i),xe(i,n[t],r.slice(1))}}const Ee="id";function we(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 Ae=Object.freeze({Boolean:"boolean",Integer:"integer",Number:"number",Date:"date",String:"string"});function Ce(e){var t=Object.values(Ae);for(let r=0;r<e.length;r++){let n=e[r];if(null!=n){for(let e=0;e<t.length;e++)Re[t[e]](n)||(t.splice(e,1),e-=1);if(1==t.length)return t[0]}}return t[0]}const Re={boolean:function(e){return"true"===e||"false"===e||!0===e||!1===e||"[object Boolean]"==toString.call(e)},integer:function(e){return Re.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 ke(e,r){let n={};switch(r){case Ae.Boolean:n.trueCount=e.filter((e=>e)).length,n.falseCount=e.filter((e=>!e)).length;break;case Ae.Date:n.min=t.min(e),n.max=t.max(e),n.extent=[n.min,n.max],n.unique=[...new Set(e)];break;case Ae.String:n.unique=[...new Set(e)];break;default:n.min=t.min(e),n.max=t.max(e),n.extent=[n.min,n.max],n.mean=t.mean(e),n.median=t.median(e),n.unique=[...new Set(e)]}return n}function Se(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=Ae.String&&s!=Ae.Date&&s!=Ae.Number&&s!=Ae.Integer)throw new Error("Densify only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Ot.Line,Ot.Circle,Ot.Rect,Ot.Area].indexOf(e.type)<0)return!1;if(e.dataScope){let t=T(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 Ot.Line:return function(e,t,r){let n,i,s=T(e);for(let a of s){let s=a.dataScope?a.dataScope:new pe(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 re.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=Ct(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 Ot.Circle:return function(e,t,r,n,i){let s,a,o=T(e),l=r.getAttributeType(t);for(let u of o){let o=u.dataScope?u.dataScope:new pe(r),c=r.getUniqueAttributeValues(t).map((e=>o.cross(t,e)));c=l==Ae.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=Te(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=Ct(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 Ot.Rect:return function(e,t,r,n){let i,s,a=T(e),o=t||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);for(let t of a){let a=n.getAttributeType(r),l=t.dataScope?t.dataScope:new pe(n),u=n.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));u=a==Ae.Number?u:u.filter((e=>!e.isEmpty())),1===u.length&&u.push(u[0].clone()),a!=Ae.Number&&a!=Ae.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,p=t.vertices[t.vertices.length-2].y,g=[],y=f-h,m=p-d;for(let e=0;e<u.length;e++)g.push(o==J.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==J.VERTICAL?[h,d+(u.length-1-e)*m/(u.length-1)]:[h+(u.length-1-e)*y/(u.length-1),p]);c.vertices=g,c.type="area";let b=Ct(c);s||(s=b.id),b._classId=s,b.dataScope=l,b.orientation=o,b.baseline=o===J.HORIZONTAL?_.BOTTOM:_.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 Te(e,t,r,n){return[r*Math.cos(ce(n))+e,t-r*Math.sin(ce(n))]}class Oe extends X{constructor(e,t,r){super(e),this._channel=t,this._elem=r}get channel(){return this._channel}get element(){return this._elem}}const Ie=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 Ne(e,t){delete t._encodings[De(e.element)][e.channel]}function Le(e,t){let r=e.scene._encodings[De(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 Ve(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 Pe(e,t){let r=e.scene._encodings[De(e)];return r&&r[t]?r[t]:null}function De(e){if(e.classId)return e.classId;if("vertex"==e.type&&e.dataScope){if(e.parent.type===Ot.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 Be(e,t){if(0==e.children.length)return[];let r=D(e),n=e.type===Ot.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===Ot.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 Me(e){let t=Pe(e,"y"),r=Pe(e,"height");return t||r&&r.scales[0].domain[0]<0}function Ge(e){let t=Pe(e,"x"),r=Pe(e,"width");return t||r&&r.scales[0].domain[0]<0}function je(e,t){let r=function(e){let t=e.parent,r=[];for(;t.type!==Ot.Scene;)r.push(t),t=t.parent;return r}(e);for(let e of r)if(Pe(e,t))return!1;return r.length>=2?r[r.length-2]:e}function ze(e,t,r){switch(e.type){case Ot.Rect:case Ot.Path:case Ot.Line:case Ot.Area:!function(e,t,r){for(let n of e.vertices)Fe(n,t,r);e._updateBounds(),e._refBounds&&e._refBounds.translate(t,r)}(e,t,r);break;case Ot.Group:case Ot.Collection:case Ot.Glyph:!function(e,t,r){for(let n of e.children)ze(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){Fe(e.vertex1,t,r),Fe(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 Fe(e,t,r){e._x+=t,e._y+=r}function Ue(e,t,r){switch(t){case"x":We(e,r);break;case"y":Ye(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===Ot.Circle?e.radius=Math.sqrt(r/Math.PI):e.type===Ot.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":[Ot.Arc,Ot.Pie].includes(e.type)&&function(e,t){e._endAngle=de(e._startAngle+t),e._sr=ce(e._startAngle),e._er=ce(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=de(e._startAngle+r),e._sr=ce(e._startAngle),e._er=ce(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){He(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":He(e,r);break;case"radialDistance":{let t=Te(e.parent.x,e.parent.y,r,e.polarAngle);We(e,t[0]),Ye(e,t[1]);break}case"visibility":e.visibility=r;break;default:if("vertex"===e.type)e[t]=r;else if(e instanceof _t)for(let n of e.children)Ue(n,t,r);else e.styles[t]=r}}function He(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 We(e,t){"vertex"==e.type?e._x=t:ze(e,t-e.x,0)}function Ye(e,t){"vertex"==e.type?e._y=t:ze(e,0,t-e.y)}class Xe extends ie{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 qe extends ie{constructor(e){super(e),this._type=Ot.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 ne(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++))}get topLeftVertex(){return this._orientation===J.HORIZONTAL?this.vertices[0]:this.vertices[this.vertices.length-1]}get bottomLeftVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length-1]:this.vertices[this.vertices.length/2]}get topRightVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length/2-1]:this.vertices[0]}get bottomRightVertex(){return this._orientation===J.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 Ke extends X{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 Ze{constructor(e,t){this._event=t,this._type=e}get event(){return this._event}get type(){return this._type}}const $e=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 Je extends W{constructor(e){super(e)}storeValues(e,t){this._storedValues={};let r=T(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 Ke)),t=this.outputVar,r=T(t.element);if(e){let r=e.encodings.find((e=>e.channel==t.channel&&De(e.element)==De(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))),p(["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,_.CENTER),e._refBounds.setHeight(2*t.rangeExtent,_.MIDDLE)}));break;case"x":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let n=e.parent._refBounds;e.parent._refBounds=new c(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 c(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 Xe?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]);ze(i.leftSegment,s-i.leftSegment.x,0),ze(i.rightSegment,a-i.rightSegment.x,0)}}(e,t,r):t.domain[0]<0&&e[0]instanceof qe||(e[0].type===Ot.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===J.VERTICAL)switch(n){case"left":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.left))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.left+t.map(r[e.id]))));break;case"right":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.right-t.map(r[e.id])))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.right)));break;case"center":console.log("center");for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.center-t.map(r[e.id])/2))),T(n.topRightVertex,n).forEach((e=>Ue(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 Xe?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]);ze(i.bottomSegment,0,s-i.bottomSegment.y),ze(i.topSegment,0,a-i.topSegment.y)}}(e,t,r):t.domain[0]<0&&e[0]instanceof qe?function(e,t,r){for(let n of e){let e=O(n.topLeftVertex,[n]);for(let i of e)Ue(i,"y",n.refBounds.bottom-t.map(r[i.id]));O(n.bottomLeftVertex,[n]).forEach((e=>Ue(e,"y",n.refBounds.bottom-t.map(0))))}}(e,t,r):e[0].type===Ot.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===J.HORIZONTAL)switch(n){case"bottom":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.bottom-t.map(r[e.id])))),T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.bottom)));break;case"top":for(let n of e)T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.top+t.map(r[e.id])))),T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.top)));break;case"middle":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.middle-t.map(r[e.id])/2))),T(n.bottomLeftVertex,n).forEach((e=>Ue(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 v({x1:0,y1:100,x2:0,y2:0}):new v({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=>{Ue(e,r,t[e.id])}))}_doStandardMapping(e,t,r){let n=this.outputVar.channel;e.forEach((e=>{let i=t.map(r[e.id]);Ue(e,n,i),e instanceof ie&&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),Ue(t,r,i)}_getUsableCondEncodings(){return this.inputVars.filter((e=>e instanceof K))}}class Qe extends X{constructor(e,t,r){super(e),this._property=t,this._elem=r}get property(){return this._property}get element(){return this._elem}}const et=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 tt(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.createOneWayDependency(Y.EVAL_BBOX);switch(t.connect(n,r),e.type){case Ot.Circle:case Ot.Polygon:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"radius",e),a=t.getVariable(q.CHANNEL,"area",e);t.connect(s,n),t.connect(r,n),t.connect(i,n),t.connect(a,n);break}case Ot.Area:case Ot.Line:case Ot.BezierCurve:case Ot.Path:case Ot.Image:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Ot.Rect:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.getVariable(q.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 Ot.PointText:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"text",e);t.connect(r,n),t.connect(i,n),t.connect(s,n);break}case Ot.Ring:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"innerRadius",e),a=t.getVariable(q.CHANNEL,"outerRadius",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Ot.Pie:case Ot.Arc:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"innerRadius",e),a=t.getVariable(q.CHANNEL,"outerRadius",e),o=t.getVariable(q.CHANNEL,"startAngle",e),l=t.getVariable(q.CHANNEL,"endAngle",e),u=t.getVariable(q.CHANNEL,"angle",e),c=t.getVariable(q.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 rt(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 nt(e,t){let r=t.findVariable(q.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 it(e,t){if(e.type===Ot.Axis){let r=t.findVariable(q.PROPERTY,[et.AXIS_PATH_POSITION,e]).incomingDataflow;t.deleteOperator(r),r=t.findVariable(q.PROPERTY,[et.AXIS_TICKS_POSITION,e]).incomingDataflow,t.deleteOperator(r),r=t.findVariable(q.PROPERTY,[et.AXIS_LABELS_POSITION,e]).incomingDataflow,t.deleteOperator(r)}else if(e.type===Ot.Gridlines){let r=t.findVariable(q.PROPERTY,[et.GRIDLINES_POSITION,e]).incomingDataflow;t.deleteOperator(r)}}function st(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.createOneWayDependency(Y.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 at(e,t,r){let n=r.getVariable(q.BOUNDS,e),i=r.getVariable(q.BOUNDS,t),s=r.getIncomingDataflowOperator(Y.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(q.CHANNEL,"x",t),i=r.getIncomingDataflowOperator(lt(e.layout.type),n);i&&r.deleteOperator(i)}}function ot(e,t,r){let n=r.getVariable(q.BOUNDS,e),i=r.getVariable(q.BOUNDS,t),s=r.getIncomingDataflowOperator(Y.EVAL_BBOX,n);r.connect(i,s),r.connect(s,n),e.layout&&ct(e,e.layout,r)}function lt(e){switch(e){case U.GRID:return Y.GRID_LAYOUT;case U.STACK:return Y.STACK_LAYOUT;case U.PACKING:return Y.PACK_LAYOUT;case U.FORCE:return Y.FORCE_LAYOUT;case U.DIRECTED:return Y.DIRECTED_LAYOUT;case U.TIDYTREE:return Y.TIDY_TREE_LAYOUT;case U.TREEMAP:return Y.TREEMAP_LAYOUT;case U.STRATA:return Y.STRATA_LAYOUT;case U.CIRCULAR:return Y.CIRCULAR_LAYOUT;case U.CLUSTER:return Y.CLUSTER_LAYOUT}}function ut(e,t,r){let n=r.getVariable(q.ORDER,e),i=r.getOutgoingDataflowOperator(lt(t.type),n);r.deleteOperator(i)}function ct(e,t,r){let n=t?t.type:"none",i=n===U.TREEMAP?j(e)[0]:e.children[0];if(!i)return;let s=r.getVariable(q.CHANNEL,"width",i),a=r.getVariable(q.CHANNEL,"height",i),o=r.getVariable(q.ORDER,e),l=r.getVariable(q.CHANNEL,"x",i),u=r.getVariable(q.CHANNEL,"y",i),c=r.getOutgoingDataflowOperator(lt(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===Ot.Arc||i.type===Ot.Pie){let e=r.getVariable(q.CHANNEL,"angle",i),t=r.getVariable(q.CHANNEL,"thickness",i);r.connect(e,c),r.connect(t,c)}else if(i.type===Ot.Circle){let e=r.getVariable(q.CHANNEL,"area",i),t=r.getVariable(q.CHANNEL,"radius",i);r.connect(e,c),r.connect(t,c),r.disconnectChannelVarFromBBoxOperator(e),r.disconnectChannelVarFromBBoxOperator(t)}else if(i.type===Ot.Rect){let e=r.getVariable(q.CHANNEL,"area",i);r.connect(e,c),r.disconnectChannelVarFromBBoxOperator(e)}if(c.run(),i.links&&ht(i,r),i.children&&i.children[0]){let e=r.getVariable(q.BOUNDS,i.children[0]),t=r.getVariable(q.CHANNEL,"x",i).incomingDataflow;t&&r.connect(e,t),r.disconnectChannelVarFromBBoxOperator(e)}}function ht(e,t){let r=e.links[0],n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"x",r),s=t.getVariable(q.CHANNEL,"strokeWidth",r),a=t.getVariable(q.CHANNEL,"strength",r),o=t.createOneWayDependency(Y.LINK_PLACER);t.connect(n,o),t.connect(s,o),t.connect(a,o),t.connect(o,i)}function dt(e,t){let r=t.getVariable(q.PROPERTY,et.AXIS_ORIENTATION,e),n=t.getVariable(q.BOUNDS,e.elements[0].parent),i=t.getVariable(q.PROPERTY,et.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(q.PROPERTY,et.AXIS_TICK_OFFSET,e),o=t.getVariable(q.PROPERTY,et.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),u=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_LABEL_OFFSET,e),h=t.getVariable(q.PROPERTY,et.AXIS_LABEL_FORMAT,e),d=t.getVariable(q.PROPERTY,et.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(q.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function ft(e,t){let r=t.getVariable(q.PROPERTY,et.AXIS_ORIENTATION,e),n=t.getVariable(q.BOUNDS,B(e.elements[0])),i=t.getVariable(q.PROPERTY,et.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(q.PROPERTY,et.AXIS_TICK_OFFSET,e),o=t.getVariable(q.PROPERTY,et.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),u=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_LABEL_OFFSET,e),h=t.getVariable(q.PROPERTY,et.AXIS_LABEL_FORMAT,e),d=t.getVariable(q.PROPERTY,et.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(q.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function pt(e,t){let r=t.getVariable(q.BOUNDS,B(e.elements[0])),n=t.getVariable(q.PROPERTY,et.GRIDLINES_POSITION,e),i=t.createOneWayDependency(Y.GRIDLINES_PLACER);t.connect(r,i),t.connect(i,n),i.run();let s=t.getVariable(q.BOUNDS,e),a=t.getIncomingDataflowOperator(Y.EVAL_BBOX,s);t.connect(n,a),t.connect(a,s)}class _t{constructor(){this._id=this.type+Nt(),this._type=Ot.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===Ot.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),ct(this,e,this.scene._depGraph),this.children&&this.children.length>0){let e=j(this,!0);for(let t of e)this.scene.onChange(q.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 c(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 c(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 D(this)}}class gt extends _t{constructor(){super(),this._type=Ot.Collection,this._id=this.type+"_"+Nt(),this._classId=this.id,this._childrenOrder=void 0}get classId(){return this._classId}contains(e,t){if([Ot.Arc,Ot.Pie,Ot.Polygon,Ot.Area].indexOf(this.firstChild.type)>=0){let n=this.getSVGPathData();if(""!==n){let i=r.getContext(),s=new Path2D(n);return i.lineWidth=Math.max(this.strokeWidth,2.5),i.stroke(s),i.isPointInPath(s,e,t)}}return this._bounds.contains(e,t)}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 yt extends _t{constructor(e){if(super(),this._type=Ot.Glyph,this._id=this.type+"_"+Nt(),this._classId=this._id,e)for(let t of e)this.addChild(t)}get classId(){return this._classId}}class mt extends ie{constructor(e){super(e),this._type=Ot.BezierCurve,this._orientation="orientation"in e?e.orientation:J.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 bt extends x{constructor(e){super(e),this._type=Ot.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=R(this._x,this._y,this._rotate[1],this._rotate[2],this._rotate[0]);this._bounds=new c(e.x-this._radius,e.y-this._radius,2*this._radius,2*this._radius)}else this._bounds=new c(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 vt extends x{constructor(e){super(e),this._type=Ot.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 c(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 xt extends ie{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 Et extends x{constructor(e){super(e),this._type=Ot.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:[_.CENTER,_.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=S.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 _.LEFT:e=this._x;break;case _.RIGHT:e=this._x-n;break;case _.CENTER:e=this._x-n/2;break;default:e=this._x}switch(this._anchor[1]){case _.TOP:t=this._y;break;case _.BOTTOM:t=this._y-i;break;case _.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=>R(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 c(s,o,a-s,l-o)}else this._bounds=new c(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 wt extends ie{constructor(e){super(e),this._type=Ot.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 At extends ie{constructor(e){super(e),this._type=Ot.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 Ct(e){let t=null;switch(e.type){case Ot.Circle:t=new bt(e);break;case Ot.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 xt(e);break;case Ot.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 Xe(e);break;case Ot.PointText:t=new Et(e);break;case Ot.Image:t=new vt(e);break;case Ot.BundledPath:case Ot.Chord:case Ot.Path:t=new ie(e);break;case Ot.Area:t=new qe(e);break;case Ot.Ring:t=new At(e);break;case Ot.Arc:t=new ue(e);break;case Ot.BezierCurve:"vertices"in e||(e.vertices=[[0,100],[20,120],[80,180],[100,200]]),t=new mt(e);break;case Ot.Polygon:t=new wt(e)}return t&&t._updateBounds(),t}function Rt(e){let t=new gt;return e.addChild(t),e._itemMap[t.id]=t,t}function kt(e){return new yt(e)}function St(e){switch(e.type){case Ot.Collection:return function(e){let t=Rt(e.scene);for(let r=0;r<e.children.length;r++){let n=e.children[r];t.addChild(St(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 Ot.Glyph:return function(e){let t=new yt;for(let r of e.children)t.addChild(St(r));t._classId=e.classId,e._dataScope&&(t.dataScope=e._dataScope.clone());return t}(e);default:return function(e){let t=Ct({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 Tt=Object.freeze({Rect:"rect",Circle:"circle",Line:"line",Ring:"ring",Path:"path",Image:"image",PointText:"text",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord"}),Ot=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"}),It=Object.freeze({Axis:"axis",Legend:"legend",Gridlines:"gridlines"});function Nt(){return Date.now().toString(36)+"_"+Math.random().toString(36).slice(2)}class Lt{constructor(e,t,r){this._id=Ot.DataTable+Nt(),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]=Ce(this.data.map((t=>t[e]))),"year"==e.toLowerCase()&&this._attrTypes[e]==Ae.Integer&&(this._attrTypes[e]=Ae.Date)}this._validate(this.data,this._attrTypes),this._attrSummaries={};for(let e of this._attributes)this._attrSummaries[e]=ke(this.data.map((t=>t[e])),this._attrTypes[e]);this._attributes.indexOf(Pt)<0&&this._addAttribute(Pt,Ae.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 Lt(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!==Pt&&this._rawData.forEach(((t,n)=>t[e]=r[n])),this._attrTypes[e]=t,this._attributes.push(e),this._attrSummaries[e]=ke(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(e,r){let n=t.timeParse(r);for(let t of this.data){let r=t[e];null==r||null==r?(r="",t[e]=new Date(1899,11,31).getTime()):t[e]=n(r).getTime(),this._dateMap.set(t[e],r)}this._attrTypes[e]=Ae.Date,this._attrSummaries[e]=ke(this.data.map((t=>t[e])),Ae.Date)}getRawValue(e,t){return this.getAttributeType(e)===Ae.Date?this._dateMap.get(t).toString():t}get nonNumericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!=Ae.Number&&this._attrTypes[t]!=Ae.Integer&&t!=Lt.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]!==Ae.Number&&this._attrTypes[t]!==Ae.Integer||t==Lt.RowID||e.push(t);return e}getAttributesByType(e){let t=[];for(let r in this._attrTypes)this._attrTypes[r]===e&&r!=Lt.RowID&&t.push(r);return t}summarize(){for(let e of this._attributes)this._attrSummaries[e]=ke(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 Ae.Boolean:n=!1;break;case Ae.Date:n=new Date(1899,11,31).getTime();break;case Ae.String:n="";break;default:n=0}else switch(i){case Ae.Boolean:n=s;break;case Ae.Date:n=Number.isInteger(s)?new Date(s,0).getTime():new Date(s+"").getTime(),this._dateMap.set(n,s);break;case Ae.String:n=s.toString();break;default:n=s}r[e]=n}}}function Vt(e){let t=_e(e);if(t)return t.dataTable}const Pt="mascot_rowId";function Dt(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 Bt extends X{constructor(e,t){super(e),this._elem=t}get element(){return this._elem}}class Mt extends X{constructor(e,t){super(e),this._item=t}get element(){return this._item}}class Gt{constructor(e){this._id=e+"_"+Nt(),this._type=e,this._vars=[],this._edges=[]}get vars(){return this._vars}get edges(){return this._edges}run(){console.log("-",this._type)}}class jt{constructor(e,t,r=!0){this._id="e_"+Nt(),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 W||this._fromNode instanceof Gt?this._fromNode:this._toNode}}class zt extends X{constructor(e,t,r){super(e),this._attribute=t,this._dataset=r}get attribute(){return this._attribute}get dataset(){return this._dataset}}class Ft extends X{constructor(e,t){super(e),this._encs=[t]}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}}class Ut extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=e.encodings[0],r=this.inputVars.find((e=>e instanceof zt)).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&&[Ot.Arc,Ot.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==Ae.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=T(e.element),n={};if(e.element.type===Ot.Area&&["width","height","fillGradient"].indexOf(e.channel)>=0)for(let t of r)for(let r of t.vertices)n[r.id]=_e(r).aggregateNumericalAttribute(e.attribute,e.aggregator);else switch(t){case Ae.Boolean:break;case Ae.Date:for(let t of r)n[t.id]=_e(t).getAttributeValue(e.attribute);break;case Ae.String:try{if("count"==e.aggregator)for(let t of r)n[t.id]=_e(t).getAttributeValues(e.attribute).length;else for(let t of r)n[t.id]=_e(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=_e(e).getAttributeValue(i);n[e.id]=new pe(t).cross(Ee,r).getAttributeValue(s)}}else for(let t of r)n[t.id]=_e(t).aggregateNumericalAttribute(e.attribute,e.aggregator)}return e.attrValues=n,Object.values(n)}}class Ht{constructor(e,r){switch(this._id="scale_"+Nt(),this._type=e,r&&(this._args=r),e){case"linear":this._scale=t.scaleLinear();break;case"point":this._scale=t.scalePoint();break;case"ordinal":this._scale=t.scaleOrdinal();break;case"ordinalColor":this._scale=t.scaleOrdinal(t[r.scheme]);break;case"power":this._scale=t.scalePow().exponent(2);break;case"sqrt":this._scale=t.scalePow().exponent(.5);break;case"log":this._scale=t.scaleLog();break;case"identity":case"time":this._scale=t.scaleTime();break;case"sequentialColor":r.scheme?this._scale=t.scaleSequential(t[r.scheme]):this._scale=t.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 Wt=["schemeBrBG","schemePRGn","schemePiYG","schemePuOr","schemeRdBu","schemeRdGy","schemeRdYlBu","schemeRdYlGn","schemeSpectral"],Yt=["schemeBlues","schemeGreens","schemeGreys","schemeOranges","schemePurples","schemeReds","schemeBuGn","schemeBuPu","schemeGnBu","schemeOrRd","schemePuBuGn","schemePuBu","schemePuRd","schemeRdPu","schemeYlGnBu","schemeYlGn","schemeYlOrBr","schemeYlOrRd"];class Xt extends W{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(e,r){if(r.mapping){return r.scales[0].domain.map((e=>r.mapping[e+""]))}if("sequentialColor"===r.scales[0].type){let e=this.outputVar,n=r.scales[0].domain;for(let i of e.encodings)if(!r.colorScheme)for(let e of i.scales){let r=e.domain;e._scale=t.scaleSequential(n[0]<0&&n[1]>0?t.interpolatePuOr:t.interpolateTurbo),e._scale.domain(r)}}if((Wt.indexOf(r.colorScheme)>=0||Yt.indexOf(r.colorScheme)>=0)&&"ordinalColor"===r.scales[0].type){let e=this.outputVar,n=r.scales[0].domain;for(let i of e.encodings)for(let e of i.scales){let i=e.domain;e._scale=t.scaleOrdinal(t[r.colorScheme][n.length]),e._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===Ot.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]):B(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]):B(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 qt extends W{constructor(e){super(e)}run(){super.run()}}class Kt extends _t{constructor(e){super(),this._type=Ot.Axis,this._id=this._type+Nt(),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 _t,this._ticks._id=this._id+"_ticks",this.addChild(this._ticks),this._labels=new _t,this._labels._id=this._id+"_labels",this.addChild(this._labels),this._title=new Et({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!==Ot.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 Zt="top",$t="bottom",Jt="left";function Qt(e,r,n,i){let s,a=e.domain,o=e.range;switch(e.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 t=!!i&&(i.elements[0].parent.layout&&i.elements[0].parent.layout.type==U.STACK);a[1]=e._scale.invert(t?f(n)[r]:d(n)[r])}if("log"===e.type){u=[];let t=e._scale.ticks();for(let e of t){let r=Math.log(e)/Math.log(10)+1e-6;Math.abs(r-Math.floor(r))<c/t.length&&u.push(e)}}else u=t.ticks(a[0],a[1],c);return u}case"point":{s="width"==r||"x"==r?80:30;let t=Math.floor(e.rangeExtent/a.length),n=Math.ceil(s/t);return"x"==r?a.filter(((e,t)=>t%n==0)):a}case"time":{s="width"==r||"x"==r?80:30;let e,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=[t.timeSeconds,t.timeMinutes,t.timeHours,t.timeDays,t.timeMonths,t.timeYears];for(let t=0;t<u.length-1;t++)if(l>=u[t]&&l<u[t+1])return e=Math.floor(l/u[t]),n=c[t],n(a[0],a[1],e);return l>u[u.length-1]?(e=Math.floor(l/u[u.length-1]),n=c[u.length-1],n(a[0],a[1],e)):[]}default:return[]}}function er(e,t){t.removeChild(e)}class tr extends Kt{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?$t:Jt,this._titleText="title"in n?n.title:this._encoding.attribute,this._path="angle"===this._channel?new bt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ie({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)!==Ae.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(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.tickValues):(this._tickValues=Qt(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 ie({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 Ae.Date:r=t.timeFormat(this._labelFormat);break;case Ae.String:r=function(e){return e};break;default:r=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new Et({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 Kt{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?$t:Jt,this._titleText="title"in n?n.title:this._attribute,this._path="angle"===this._channel?new bt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ie({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)!==Ae.Date||"labelFormat"in n||(this._labelFormat="%m/%d/%y")}get elements(){if(this.layout.type===U.CLUSTER){const e=new Map(this._elems.map((e=>[e.dataScope.getAttributeValue(Ee),e])));return this.layout._d3Root.leaves().map((t=>e.get(t.data[Ee])))}return this._elems}get layout(){return this._elems[0].parent.layout}createTicksLabels(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.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 ie({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 Ae.Date:r=t.timeFormat(this._labelFormat);break;case Ae.String:r=function(e){return e};break;default:r=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new Et({text:r(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(n)}this._title._text=this._titleText}}class nr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_ORIENTATION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e),p(e._path)}_runForLayout(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==U.STACK?f(e.elements):d(e.elements),n=[];if("x"===t){let t=e.orientation===Zt?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===Jt?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===U.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==U.STACK?f(e.elements):d(e.elements),n=[];if("x"===t){let t=e.orientation===Zt?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===Zt?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===Jt?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===Jt?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 ir extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e);for(let t of e._ticks.children)t._updateBounds();p(e._ticks)}_runForLayout(e){let t=e.channel;if("x"==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([[s,t],[s,t+r]])}}else if("y"===t){let t=e.orientation==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==Jt?-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===U.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[Ee],[e.x,e.y]])));for(let[r,i]of e._ticks.children.entries()){let s=e.elements[r].dataScope.getAttributeValue(Ee),a=he(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=d(e.elements);if("x"==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([[e.scale.map(e._tickValues[n]),t],[e.scale.map(e._tickValues[n]),t+r]])}else if("width"==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===Ot.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==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==Jt?-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==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,n=e.orientation==Jt?-e.tickSize:e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Ot.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==$t?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==$t?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 sr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e);for(let t of e._labels.children)t._updateBounds();p(e._labels)}_runForLayout(e){let t=e.channel;if("x"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.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=[_.RIGHT,_.MIDDLE])}}else if("y"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,r=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.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==_.MIDDLE?s.y:s[e.tickAnchor],i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[_.RIGHT,r[1]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===U.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[Ee],[e.x,e.y]])));let i=5;for(let[r,s]of e._labels.children.entries()){let a=e.elements[r].dataScope.getAttributeValue(Ee);if(n.get(a)[0]<Math.PI){let o=he(n.get(a)[0])-90;s._anchor=[_.LEFT,_.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=he(n.get(a)[0])+90;s._anchor=[_.RIGHT,_.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=d(e.elements);if("x"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.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=[_.RIGHT,r[1]])}else if("width"===t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,n=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.BOTTOM],i=!!(e.isFlipped()||e.elements[0].type===Ot.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=[_.RIGHT,n[1]])}else if("y"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,r=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.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=[_.RIGHT,r[1]])}else if("height"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,n=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.MIDDLE],i=e.elements[0].type===Ot.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=[_.RIGHT,n[1]])}else if("radialDistance"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.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=[_.RIGHT,r[1]])}}}class ar extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(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=j(e,!0);for(let e of r)p(e)}placeElements(e,t){let r=Be(e,"x"),n=Be(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 _.LEFT:s=i.left-n.refBounds.left;break;case _.CENTER:s=i.x-n.refBounds.x;break;case _.RIGHT:s=i.right-n.refBounds.right}switch(t._cellVertAlignment){case _.TOP:a=i.top-n.refBounds.top;break;case _.MIDDLE:a=i.y-n.refBounds.y;break;case _.BOTTOM:a=i.bottom-n.refBounds.bottom}ze(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 c(t._left+(o+n)*s+0,t._top+(l+i)*r,o,l))}}}class or extends W{constructor(e){super(e)}run(){let e=this.outputVar.element;e.scale?this._runForEncoding(e):this._runForLayout(e),p(e)}_runForLayout(e){let t=e.channel,r=d(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=d(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 lr extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=j(e)[0],r=T(e.parent);for(let e of r){let r=e.layout;if(!r)return;switch(t.type){case Ot.Rect:case Ot.Circle:case Ot.Image:this._stackRects(e,r);break;case Ot.Area:e.children[0].orientation===J.HORIZONTAL?this._stackAreasVert(e,r):this._stackAreasHorz(e,r);break;case Ot.Arc:case Ot.Pie:t.parent.classId===e.classId&&this._stackArcs(e,r)}}p(t)}_stackArcs(e,t){if(t.orientation===J.ANGULAR){let t=90;if((this._direction?this._direction:ee.Clockwise)===ee.Clockwise)for(let r of e.children){let e=de(t-r.angle);Ue(r,"startAngle",e),t=e}else for(let r of e.children){let e=de(t+r.angle);Ue(r,"startAngle",e),t=e}}else if(t.orientation===J.RADIAL){let t=Math.min(...e.children.map((e=>e.innerRadius)));for(let r of e.children){let e=r.outerRadius-r.innerRadius;Ue(r,"innerRadius",t),Ue(r,"outerRadius",t+e),t=r._outerRadius}}}_stackAreasVert(e,t){let r=e.children,n=e.bounds,i=t.vertCellAlignment===_.TOP?n.top:n.bottom,s=t.vertCellAlignment===_.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;ze(r,0,u-r.y),ze(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===_.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;ze(r,0,s-n.bottom),ze(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==J.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,ze(n,i,s),n._updateBounds();let a=0,o=0;if(!Ge(n))switch(t._horzCellAlignment){case _.LEFT:a=l-n.bounds.left;break;case _.CENTER:a=l+c/2-n.bounds.x;break;case _.RIGHT:a=l+c-n.bounds.right}ze(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,ze(n,i,s),n._updateBounds();let a=0,o=0;if(!Me(n))switch(t._vertCellAlignment){case _.TOP:o=u-n.bounds.top;break;case _.MIDDLE:o=u+h/2-n.bounds.y;break;case _.BOTTOM:o=u+h-n.bounds.bottom}ze(n,a,o)}}}class ur extends W{constructor(e){super(e)}run(){super.run()}}class cr extends W{constructor(e){super(e)}run(){let e=this.inputVars[0],r=this.outputVar,n=e.attribute,i=r.attribute,s=e.dataset,a=r.dataset,o=s.getAttributeValues(n),l=t.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,Ae.String,c),a.orderAttributeValues(i,h)}_findBin(e,t){for(let r of t)if(r.indexOf(e)>=0)return r}}class hr extends W{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]=ke(t.data.map((t=>t[e])),t._attrTypes[e])}}class dr extends X{constructor(e,t,r){super(e),this._dataset=r,this._predicate=t}get dataset(){return this._dataset}get predicate(){return this._predicate}}class fr extends X{constructor(e,t){super(e),this._group=t}get element(){return this._group}}class pr extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e.type===q.AFFIXATION)).affixation,t=e.base,r=e.element,n=T(t),i=T(r),s=e.channels,a=e.attribute;if(E(r)&&E(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=j(r,!0);for(let e of o)p(e)}_handlePolar(e,t,r){let n=r.hasChannel("radialDistance")?r.getBaseAnchor("radialDistance"):_.MIDDLE,i=r.hasChannel("radialDistance")?r.getElementAnchor("radialDistance"):_.MIDDLE,s=r.hasChannel("angle")?r.getBaseAnchor("angle"):_.CENTER;r.hasChannel("angle")?r.getElementAnchor("angle"):_.CENTER;let a=r.hasChannel("radialDistance")?r.getOffset("radialDistance"):0,o=r.hasChannel("angle")?r.getOffset("angle"):0;if([Ot.Arc,Ot.Ring].indexOf(t[0].type)>=0&&e[0].type==Ot.PointText)for(let r=0;r<e.length;r++){let i=t[r],o=e[r],l=n===_.MIDDLE?(i.outerRadius+i.innerRadius)/2:n===_.TOP?i.outerRadius-5:i.innerRadius+5;if(l+=a,i.type===Ot.Arc){let e=Te(i.x,i.y,l,i.startAngle),t=Te(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===Ot.Ring){let e=275,t=265,r=350,n=Te(i.x,i.y,l,e),s=Te(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===_.LEFT?"0%":"50%"}else for(let r=0;r<e.length;r++){let l,u,c=t[r],h=e[r];c.type==Ot.Arc||c.type==Ot.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==Ot.Circle&&(u=90,l="top"==n?c.radius+a:"bottom"==n?a:c.radius/2+a),ze(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(ae(l)){o=se(l,[_.LEFT,_.TOP].includes(i)?0:[_.CENTER,_.MIDDLE].includes(i)?.5:1)[e]}else o=l.bounds[i]+s;t[0].type===Ot.PointText?(u.anchor["x"==e?0:1]=n,Ue(u,e,o)):"x"==e?ze(u,o-u.bounds[n],0):ze(u,0,o-u.bounds[n])}}}class _r extends X{constructor(e,t){super(e),this._affx=t}get affixation(){return this._affx}}class gr extends W{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=yr(mr(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]=Ae.Number,a.groupBy)for(let e of a.groupBy)p[e]=i.getAttributeType(e);s.initialize(f,s.url,p)}}function yr(e,r,n){return r.map((r=>[r,t.mean(n,(t=>e(r-t)))]))}function mr(e){return t=>Math.abs(t/=e)<=1?.75*(1-t*t)/e:0}class br extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)return;let n=e.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=t.hierarchy({name:"root",children:n}).sum((e=>e.radius?e.radius:0)).sort(((e,t)=>t.value-e.value));t.pack().size([r._width,r._height]).radius((e=>e.value))(a);for(let e of a.children){let t=e.data.itm;ze(t,r._x-a.x+e.x-t.x,r._y-a.y+e.y-t.y)}}let n=j(e,!0);for(let e of n)p(e)}}class vr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e),p(e._title)}_runForEncoding(e){let t=e.channel,r=d(e.elements);if("x"==t)e._title._x=(e.scale.range[0]+e.scale.range[1])/2,e._title._y=e.orientation==$t?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==$t?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._rotateYTitle?(e._title._x=e.orientation==Jt?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==Jt?[-90,e._title._x,e._title._y]:[90,e._title._x,e._title._y]):(e._title._x=e.orientation==Jt?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==Jt?[-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==$t?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==U.STACK?f(e.elements):d(e.elements);if("x"==t)e._title._x=r.center,e._title._y=e.orientation==$t?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==Jt?[-90,r.center,r.middle]:[90,r.center,r.middle];else if("angle"===t){let t=e.elements[0].parent.layout;t.type===U.CLUSTER&&(e._title._x=t.x,e._title._y=t.y)}}}class xr extends Gt{constructor(e){super(e)}run(){super.run();let e,r=this.vars.find((e=>e.type===q.ALIGNMENT)).alignment,n=r.anchor,i=r.elements;n==_.Top||n==_.LEFT?e=Math.min(...i.map((e=>e.bounds[n]))):n==_.BOTTOM||n==_.RIGHT?e=Math.max(...i.map((e=>e.bounds[n]))):n!=_.CENTER&&n!=_.MIDDLE||(e=t.mean(i.map((e=>e.bounds[n]))));for(let t of i){let i=je(t,r.channel);if(i){let s=e-t.bounds[n];ze(i,"x"===r.channel?s:0,"x"===r.channel?0:s)}}for(let e of i)p(e)}}class Er extends X{constructor(e,t){super(e),this._aln=t}get alignment(){return this._aln}}class wr extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)continue;let n=ve(e.children[0]);if(!n)continue;let i=n.linkList.map((e=>({source:n.getNode(e.source),target:n.getNode(e.target)}))),s=t.forceSimulation(n.nodeList).force("charge",t.forceManyBody().strength(-r._repulsion)).force("link",t.forceLink(i).id((e=>e.id)).distance(r._linkDistance)).force("x",t.forceX()).force("y",t.forceY()).force("center",t.forceCenter(r._x,r._y).strength(r._attraction));s.stop(),s.tick(r._iterations);for(let t=0;t<e.children.length;t++){let r=e.children[t],i=n.nodeList[t];ze(r,i.x-r.x,i.y-r.y)}}let n=j(e,!0);for(let e of n)p(e)}}class Ar extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e);switch(e.type){case Ot.Arc:this._updateArcLinks(t);break;case Ot.BezierCurve:this._updateBezierLinks(t);break;case Ot.BundledPath:this._updateBundledLinks(t);break;case Ot.Chord:this._updateChordLinks(t);break;case Ot.Line:default:this._updateLineLinks(t)}p(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=fe(e.x,e.y,t._x,t._y),i=fe(r.x,r.y,t._x,t._y);t.direction===ee.CLOCKWISE&&([n,i]=[i,n]),Ue(t,"startAngle",n),Ue(t,"angle",Math.abs(i-n))}}_updateBezierLinks(e){let t=this._inputVars[0].element,r=T(t),n=t.parent.layout;n.type===U.DIRECTED||n.type===U.TIDYTREE?this._updateBezierLinksForDirectedGraph(r,e,n):n.type===U.CLUSTER&&this._updateBezierLinksForClusteredGraph(r,e,n)}_updateBezierLinksForClusteredGraph(e,r,n){const i=n._d3Root.descendants(),s=new Map(i.map((e=>[Cr(e),e]))),a=new Map(i.map((e=>[e.data[Ee],Cr(e)])));if(n.isRadial()){const e=t.linkRadial().angle((e=>e.x)).radius((e=>e.y));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.x,n.y)}}else if(n.orientation===J.VERTICAL){const e=t.linkVertical().x((e=>e.x)).y((e=>e.y));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.left-n._x0,n.top)}}else if(n.orientation===J.HORIZONTAL){const e=t.linkHorizontal().x((e=>e.y)).y((e=>e.x));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({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)=>fe(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y)-fe(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y))):t.sort(((e,t)=>fe(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y)-fe(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===J.HORIZONTAL?e._setVertices([[t,o],[(t+l)/2,o],[t,u],[l,u]]):e.orientation===J.VERTICAL&&e._setVertices([[t,o],[t,(o+u)/2],[l,o],[l,u]])}}_updateBundledLinks(e){let r=this._inputVars[0].element.parent.layout;if(r.type!==U.CLUSTER)throw"Bundled links must work on a cluster layout";let n=r._d3Root.leaves();const i=new Map(n.map((e=>[Cr(e),e]))),s=new Map(n.map((e=>[e.data[Ee],Cr(e)]))),a=t.lineRadial().curve(t.curveBundle.beta(e[0]._strength)).radius((e=>e.y)).angle((e=>e.x));for(let t of e){let e=t.source.dataScope.getAttributeValue(Ee),n=t.target.dataScope.getAttributeValue(Ee),o=i.get(s.get(e)),l=i.get(s.get(n));(o.outgoing??=[]).push([o,l]),l.incoming??=[];let u=o.path(l);t._d=le(a(u),r.x,r.y)}}_updateChordLinks(e){for(let t of e){let e=t.source,r=t.target,n=Te(e.x,e.y,e.innerRadius,e.startAngle),i=Te(e.x,e.y,e.innerRadius,e.endAngle),s=Te(r.x,r.y,r.innerRadius,r.startAngle),a=Te(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 Cr(e){return`${e.parent?Cr(e.parent)+".":""}${e.data[Ee]}`}var 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,ki="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Si(){if(Tr)return Sr;return Tr=1,Sr=function(e,t){return e===t||e!=e&&t!=t}}function Ti(){if(Ir)return Or;Ir=1;var e=Si();return Or=function(t,r){for(var n=t.length;n--;)if(e(t[n][0],r))return n;return-1}}function Oi(){if(zr)return jr;zr=1;var e=kr?Rr:(kr=1,Rr=function(){this.__data__=[],this.size=0}),t=function(){if(Lr)return Nr;Lr=1;var e=Ti(),t=Array.prototype.splice;return Nr=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(Pr)return Vr;Pr=1;var e=Ti();return Vr=function(t){var r=this.__data__,n=e(r,t);return n<0?void 0:r[n][1]}}(),n=function(){if(Br)return Dr;Br=1;var e=Ti();return Dr=function(t){return e(this.__data__,t)>-1}}(),i=function(){if(Gr)return Mr;Gr=1;var e=Ti();return Mr=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,jr=s}function Ii(){if($r)return Zr;$r=1;var e="object"==typeof ki&&ki&&ki.Object===Object&&ki;return Zr=e}function Ni(){if(Qr)return Jr;Qr=1;var e=Ii(),t="object"==typeof self&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Jr=r}function Li(){if(tn)return en;tn=1;var e=Ni().Symbol;return en=e}function Vi(){if(ln)return on;ln=1;var e=Li(),t=function(){if(nn)return rn;nn=1;var e=Li(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;return rn=
|
|
1
|
+
// version: 3.0.5
|
|
2
|
+
"use strict";function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("d3"));const r={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 n{constructor(e,t,r){this._id="predicate_"+Nt(),this._type=e||i.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 i=Object.freeze({POINT:"point",INTERVAL:"interval",LIST:"list"});class s extends n{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 a extends n{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.getAttributeValues(this._variableName);return 1===t.length&&this._value.indexOf(t[0])>=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 o extends n{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 l(e){let t,r="attribute"in e?"attribute":"property",n=e[r];switch(e.type){case i.LIST:t=new a(e.type,r,n);break;case i.INTERVAL:t=new s(e.type,r,n);break;case i.POINT:default:t=new o(e.type,r,n)}return t.value=e.value,t}function u(e,t){for(let r of t)if(!r.testElement(e))return!1;return!0}class c{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 c(t,r,n-t,i-r)}clone(){return new c(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 _.RIGHT:this._x=this.right-e/2;break;case _.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 _.TOP:this._y=this.top+e/2;break;case _.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 h(e){let t=e[0].clone();for(let r=1;r<e.length;r++)t=t.union(e[r]);return t}function d(e){return h(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.refBounds?e.refBounds:e.bounds)))}function f(e){return h(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.bounds)))}function p(e){let t=T(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)p(e)}const _=Object.freeze({TOP:"top",LEFT:"left",RIGHT:"right",BOTTOM:"bottom",CENTER:"center",MIDDLE:"middle"});function g(e){return e.id+"-bg"}function y(e){return e.id+"-path"}function m(e){switch(e){case _.TOP:return"text-before-edge";case _.BOTTOM:return"auto";case _.LEFT:return"start";case _.RIGHT:return"end";case _.CENTER:case _.MIDDLE:return"middle";default:return e}}const b=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 v{constructor(e){let t=e||{};this._stops=[],this.type=Ot.LinearGradient,this.id=this.type+Nt(),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 x{constructor(e){if(this._dataScope=void 0,this._type="type"in e?e.type:Ot.Mark,this._id=e.id?e.id:this._type+"_"+Nt(),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 b)t in e&&(this.styles[t]=e[t])}get scene(){return D(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,t){if(!this.bounds)return!1;if(!this.bounds.contains(e,t))return!1;switch(this.type){case Ot.Rect:case Ot.PointText:return!0;case Ot.Circle:return Math.sqrt(Math.pow(e-this.x,2)+Math.pow(t-this.y,2))<=this.radius+this.strokeWidth;case Ot.Path:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),this.closed?n.isPointInPath(i,e,t):n.isPointInStroke(i,e,t)}case Ot.Line:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),n.isPointInStroke(i,e,t)}default:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.isPointInPath(i,e,t)}}}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 E(e){return e instanceof x&&e.type!==Ot.Gridlines}const w=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 A(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 C(e,t,r,n){return Math.sqrt(Math.pow(e-r,2)+Math.pow(t-n,2))}function R(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 k={svg:void 0,getSVG:function(){return window?(void 0===this.svg&&(this.svg=document.createElement("svg")),this.svg):null}},S={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 T(e,t){let r=D(e),n=t||r;if("vertex"===e.type){return O(e,N(n,[{property:"classId",value:e.parent.classId}]))}if("segment"===e.type){return I(e,N(n,[{property:"classId",value:e.parent.classId}]))}return e.classId?N(n,[{property:"classId",value:e.classId}]):[e]}function O(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===Ot.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 I(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 N(e,t){let r=[];return P(e,t.map((e=>l(e))),r),r}function L(e,t){let r=e.children.filter((e=>e.type==Ot.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 V(e){return e.type==Ot.Collection?e:e.parent?V(e.parent):void 0}function P(e,t,r){if(e&&"axis"!=e.type&&"legend"!=e.type&&"gridlines"!=e.type)if(u(e,t)&&r.push(e),e.vertices)for(let n of e.vertices.concat(e.segments))u(n,t)&&r.push(n);else if(e.children&&e.children.length>0)for(let n of e.children)P(n,t,r)}function D(e){let t=e;for(;t;){if(t.type==Ot.Scene)return t;t=t.parent}}function B(e){let t=e;for("vertex"!=t.type&&"segment"!=t.type||(t=t.parent);t.parent&&[Ot.Collection,Ot.Glyph].includes(t.parent.type);)t=t.parent;return t}function M(e,t,r,n,i){let s=[];n&&s.push({property:"type",value:n}),i&&s.push({property:"classId",value:i});let a=N(e,s);for(let e of a)if(G(e,t,r))return e}function G(e,t,n){switch(e.type){case Ot.Path:case Ot.Arc:case Ot.BezierCurve:case Ot.Line:{let i=r.getContext(),s=new Path2D(e.getSVGPathData());return i.lineWidth=Math.max(e.strokeWidth,2.5),i.stroke(s),e.closed?i.isPointInPath(s,t,n):i.isPointInStroke(s,t,n)}case Ot.Circle:{let r=e.x,i=e.y;if(e.rotation){let t=R(r,i,e.rotation[1],e.rotation[2],e.rotation[0]);r=t.x,i=t.y}return Math.sqrt(Math.pow(t-r,2)+Math.pow(n-i,2))<=e.radius+e.strokeWidth}default:return e.bounds.contains(t,n)}}function j(e,t){let r=[];if(z(e,r),t){let e={};for(let t of r)e[t.classId]=t;return Object.values(e)}return r}function z(e,t){if(E(e))t.push(e);else if(e.type==Ot.Collection&&e.children)for(let r of e.children)z(r,t);else if(e.type==Ot.Glyph&&e.children)for(let r of e.children)z(r,t);else if(e.type==Ot.Composite&&e.children)for(let r of e.children)z(r,t)}class F{constructor(){this._refElements=[]}addRefElement(e){this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}const U=Object.freeze({GRID:"grid",STACK:"stack",PACKING:"packing",FORCE:"force",DIRECTED:"directedgraph",TIDYTREE:"tidytree",TREEMAP:"treemap",STRATA:"strata",CIRCULAR:"circular",CLUSTER:"cluster"});function H(e,t){return!!(e.startsWith("h")&&[_.LEFT,_.CENTER,_.RIGHT].indexOf(t)>=0)||(!!(e.startsWith("v")&&[_.TOP,_.MIDDLE,_.BOTTOM].indexOf(t)>=0)||(console.warn("Invalid alignment:",t),!1))}class W{constructor(e){this._id=e+"_"+Nt(),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 Y=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 X{constructor(e){this._id="v_"+Nt(),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 W)return e.fromNode;return null}isIsolated(){return 0==this._incomings.length&&0==this._outgoings.length}}const q=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 K extends X{constructor(e,t){super(e),this._condEnc=t}get condEncoding(){return this._condEnc}}const Z=Object.freeze({RowFirst:"rowFirst",ColumnFirst:"columnFirst"}),$=Object.freeze({TopLeft:"topLeft",TopRight:"topRight",BottomLeft:"bottomLeft",BottomRight:"bottomRight"}),J={HORIZONTAL:"horizontal",VERTICAL:"vertical",ANGULAR:"angular",RADIAL:"radial"},Q={Left2Right:"l2r",Right2Left:"r2l",Top2Bottom:"t2b",Bottom2Top:"b2t"},ee=Object.freeze({CLOCKWISE:"clockwise",ANTI_CLOCKWISE:"anti-clockwise"}),te=Object.freeze({INWARD:"inward",OUTWARD:"outward"});class re{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 c(this.x-this.width/2,this.y-this.height/2,this.width,this.height);case"circle":return new c(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius);default:return new c(this.x-.5,this.y-.5,1,1)}}get id(){return this.parent.id+"_v_"+this._id}_clone(e){let t=new re(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}}re.styles=["vxShape","vxWidth","vxHeight","vxRadius","vxFillColor","vxStrokeColor","vxStrokeWidth","vxOpacity"];class ne{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 ie extends x{constructor(e){super(e),this._type="type"in e?e.type:Ot.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 re.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!==Ot.Path){t=new re(e[r][0],e[r][1],this,this.vertexCounter++);for(let e of re.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 ne(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===Ot.Rect)&&(this.closed=!0,"fillColor"in this.styles||(this.styles.fillColor="#fff"),this.segments.push(new ne(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 re.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 ne(e.vertices[t-1],e.vertices[t],e,e.segmentCounter++));e.closed&&e.segments.push(new ne(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 c(r,n,a,o),this.type===Ot.Line||this.type===Ot.Path){let e=this.styles.strokeWidth?this.styles.strokeWidth:1;r===i?this._bounds=new c(r-e/2,n,i-r+e,s-n):n===s&&(this._bounds=new c(r,n-e/2,i-r,s-n+e))}}addVertex(e,t,r){let n=new re(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 e=t.path(),r=this._getD3CurveFunction(this.curveMode)(e);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(),e._}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(e){switch(e){case oe.Natural:return t.curveNatural;case oe.Basis:return t.curveBasis;case oe.BumpX:return t.curveBumpX;case oe.BumpY:return t.curveBumpY;case oe.Linear:return t.curveLinear;case oe.Step:return t.curveStep;case oe.CatmullRom:return t.curveCatmullRom;case oe.Cardinal:return t.curveCardinal;case oe.Bundle:return t.curveBundle.beta(.5);default:return t.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 se(e,t){const r=k.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 ae(e){return e instanceof ie&&e.source&&e.target}const oe={Natural:"natural",Basis:"basis",BumpX:"bumpX",BumpY:"bumpY",Bundle:"bundle",Linear:"linear",Step:"step",CatmullRom:"CatmullRom",Cardinal:"cardinal"};function le(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 ue extends ie{constructor(e){super(e),this._type=Ot.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=ce(this._startAngle),this._er=ce(this._endAngle),this._direction="direction"in e?e.direction:ee.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?Ot.Pie:Ot.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=ce(this._startAngle),this._er=ce(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 c(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 ce(e){return e*Math.PI/180}function he(e){return 180*e/Math.PI}function de(e){return(e%360+360)%360}function fe(e,t,r,n){let i=e-r,s=n-t;return Math.atan2(s,i)*(180/Math.PI)}class pe{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 pe(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 pe(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(e,r){let n=this._tuples.map((t=>t[e]));switch(r){case ge.Max:return Math.max(...n);case ge.Min:return Math.min(...n);case ge.Avg:case ge.Mean:return t.mean(n);case ge.Median:return t.median(n);case ge.Count:return n.length;case ge.Percentile25:return t.quantile(n,.25);case ge.Percentile75:return t.quantile(n,.75);case ge.Sum:default:return t.sum(n)}}_updateTuples(e,t){this._tuples=this._tuples.filter((r=>r[e]==t))}get tuples(){return this._tuples}}function _e(e){return"vertex"==e.type||"segment"==e.type?e.dataScope?e.dataScope:e.parent.dataScope:e.dataScope}const ge={Max:"max",Min:"min",Avg:"avg",Median:"median",Sum:"sum",Count:"count",Mean:"mean",Percentile25:"percentile 25",Percentile75:"percentile 75"};class ye{constructor(e,t){this._id=Ot.TreeData+Nt(),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 Lt(this._nodeList,"nodes"),this._linkTable=new Lt(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={};Ee in e||(e[Ee]="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[Ee],child:s})}else i[s]=e[s];return this._nodeHash[i[Ee]]=i,i[Ee]}getNodeDataScope(e){return new pe(this._nodeTable).cross(Pt,e[Pt])}getNode(e){return this._nodeHash[e]}getRoot(){return this._nodeTable.data[0]}getChildren(e){let t=e[Ee],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[Ee]==t));r.push(i[s])}return r}getParent(e){let t=e[Ee],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[Ee]==t));return n[i]}}}function me(e){return e.dataScope._dt.tree}class be{constructor(e,t){this._id=Ot.NetworkData+Nt(),this.initialize(e,t)}initialize(e,t){this.url=t,this._nodeTable=new Lt(e.nodes,this._id+"_nodes"),this._linkTable=new Lt(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[Ee]]=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[Ee],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[Ee]="root",xe(t,this._rawNodes,e),new ye(t,this.url)}}function ve(e){return e.dataScope._dt.graph}function xe(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[Ee]=t,e.children.push(r)}else for(let t in n){let i={};i[Ee]=t,e.children.push(i),xe(i,n[t],r.slice(1))}}const Ee="id";function we(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 Ae=Object.freeze({Boolean:"boolean",Integer:"integer",Number:"number",Date:"date",String:"string"});function Ce(e){var t=Object.values(Ae);for(let r=0;r<e.length;r++){let n=e[r];if(null!=n){for(let e=0;e<t.length;e++)Re[t[e]](n)||(t.splice(e,1),e-=1);if(1==t.length)return t[0]}}return t[0]}const Re={boolean:function(e){return"true"===e||"false"===e||!0===e||!1===e||"[object Boolean]"==toString.call(e)},integer:function(e){return Re.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 ke(e,r){let n={};switch(r){case Ae.Boolean:n.trueCount=e.filter((e=>e)).length,n.falseCount=e.filter((e=>!e)).length;break;case Ae.Date:n.min=t.min(e),n.max=t.max(e),n.extent=[n.min,n.max],n.unique=[...new Set(e)];break;case Ae.String:n.unique=[...new Set(e)];break;default:n.min=t.min(e),n.max=t.max(e),n.extent=[n.min,n.max],n.mean=t.mean(e),n.median=t.median(e),n.unique=[...new Set(e)]}return n}function Se(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=Ae.String&&s!=Ae.Date&&s!=Ae.Number&&s!=Ae.Integer)throw new Error("Densify only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Ot.Line,Ot.Circle,Ot.Rect,Ot.Area].indexOf(e.type)<0)return!1;if(e.dataScope){let t=T(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 Ot.Line:return function(e,t,r){let n,i,s=T(e);for(let a of s){let s=a.dataScope?a.dataScope:new pe(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 re.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=Ct(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 Ot.Circle:return function(e,t,r,n,i){let s,a,o=T(e),l=r.getAttributeType(t);for(let u of o){let o=u.dataScope?u.dataScope:new pe(r),c=r.getUniqueAttributeValues(t).map((e=>o.cross(t,e)));c=l==Ae.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=Te(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=Ct(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 Ot.Rect:return function(e,t,r,n){let i,s,a=T(e),o=t||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);for(let t of a){let a=n.getAttributeType(r),l=t.dataScope?t.dataScope:new pe(n),u=n.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));u=a==Ae.Number?u:u.filter((e=>!e.isEmpty())),1===u.length&&u.push(u[0].clone()),a!=Ae.Number&&a!=Ae.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,p=t.vertices[t.vertices.length-2].y,g=[],y=f-h,m=p-d;for(let e=0;e<u.length;e++)g.push(o==J.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==J.VERTICAL?[h,d+(u.length-1-e)*m/(u.length-1)]:[h+(u.length-1-e)*y/(u.length-1),p]);c.vertices=g,c.type="area";let b=Ct(c);s||(s=b.id),b._classId=s,b.dataScope=l,b.orientation=o,b.baseline=o===J.HORIZONTAL?_.BOTTOM:_.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 Te(e,t,r,n){return[r*Math.cos(ce(n))+e,t-r*Math.sin(ce(n))]}class Oe extends X{constructor(e,t,r){super(e),this._channel=t,this._elem=r}get channel(){return this._channel}get element(){return this._elem}}const Ie=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",SRC:"src"});function Ne(e,t){delete t._encodings[De(e.element)][e.channel]}function Le(e,t){let r=e.scene._encodings[De(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 Ve(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 Pe(e,t){let r=e.scene._encodings[De(e)];return r&&r[t]?r[t]:null}function De(e){if(e.classId)return e.classId;if("vertex"==e.type&&e.dataScope){if(e.parent.type===Ot.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 Be(e,t){if(0==e.children.length)return[];let r=D(e),n=e.type===Ot.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===Ot.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 Me(e){let t=Pe(e,"y"),r=Pe(e,"height");return t||r&&r.scales[0].domain[0]<0}function Ge(e){let t=Pe(e,"x"),r=Pe(e,"width");return t||r&&r.scales[0].domain[0]<0}function je(e,t){let r=function(e){let t=e.parent,r=[];for(;t.type!==Ot.Scene;)r.push(t),t=t.parent;return r}(e);for(let e of r)if(Pe(e,t))return!1;return r.length>=2?r[r.length-2]:e}function ze(e,t,r){switch(e.type){case Ot.Rect:case Ot.Path:case Ot.Line:case Ot.Area:!function(e,t,r){for(let n of e.vertices)Fe(n,t,r);e._updateBounds(),e._refBounds&&e._refBounds.translate(t,r)}(e,t,r);break;case Ot.Group:case Ot.Collection:case Ot.Glyph:!function(e,t,r){for(let n of e.children)ze(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){Fe(e.vertex1,t,r),Fe(e.vertex2,t,r)}(e,t,r);break;default:!function(e,t,r){e._x+=t,e._y+=r,e._updateBounds(),e._refBounds&&e._refBounds.translate(t,r)}(e,t,r)}}function Fe(e,t,r){e._x+=t,e._y+=r}function Ue(e,t,r){switch(t){case"x":We(e,r);break;case"y":Ye(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===Ot.Circle?e.radius=Math.sqrt(r/Math.PI):e.type===Ot.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":[Ot.Arc,Ot.Pie].includes(e.type)&&function(e,t){e._endAngle=de(e._startAngle+t),e._sr=ce(e._startAngle),e._er=ce(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=de(e._startAngle+r),e._sr=ce(e._startAngle),e._er=ce(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){He(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":He(e,r);break;case"radialDistance":{let t=Te(e.parent.x,e.parent.y,r,e.polarAngle);We(e,t[0]),Ye(e,t[1]);break}case"visibility":e.visibility=r;break;case"src":e.src=r;break;default:if("vertex"===e.type)e[t]=r;else if(e instanceof _t)for(let n of e.children)Ue(n,t,r);else e.styles[t]=r}}function He(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 We(e,t){"vertex"==e.type?e._x=t:ze(e,t-e.x,0)}function Ye(e,t){"vertex"==e.type?e._y=t:ze(e,0,t-e.y)}class Xe extends ie{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 qe extends ie{constructor(e){super(e),this._type=Ot.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 ne(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++))}get topLeftVertex(){return this._orientation===J.HORIZONTAL?this.vertices[0]:this.vertices[this.vertices.length-1]}get bottomLeftVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length-1]:this.vertices[this.vertices.length/2]}get topRightVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length/2-1]:this.vertices[0]}get bottomRightVertex(){return this._orientation===J.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 Ke extends X{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 Ze{constructor(e,t){this._event=t,this._type=e}get event(){return this._event}get type(){return this._type}}const $e=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 Je extends W{constructor(e){super(e)}storeValues(e,t){this._storedValues={};let r=T(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 Ke)),t=this.outputVar,r=T(t.element);if(e){let r=e.encodings.find((e=>e.channel==t.channel&&De(e.element)==De(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))),p(["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,_.CENTER),e._refBounds.setHeight(2*t.rangeExtent,_.MIDDLE)}));break;case"x":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let n=e.parent._refBounds;e.parent._refBounds=new c(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 c(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 Xe?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]);ze(i.leftSegment,s-i.leftSegment.x,0),ze(i.rightSegment,a-i.rightSegment.x,0)}}(e,t,r):t.domain[0]<0&&e[0]instanceof qe||(e[0].type===Ot.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===J.VERTICAL)switch(n){case"left":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.left))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.left+t.map(r[e.id]))));break;case"right":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.right-t.map(r[e.id])))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.right)));break;case"center":console.log("center");for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.center-t.map(r[e.id])/2))),T(n.topRightVertex,n).forEach((e=>Ue(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 Xe?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]);ze(i.bottomSegment,0,s-i.bottomSegment.y),ze(i.topSegment,0,a-i.topSegment.y)}}(e,t,r):t.domain[0]<0&&e[0]instanceof qe?function(e,t,r){for(let n of e){let e=O(n.topLeftVertex,[n]);for(let i of e)Ue(i,"y",n.refBounds.bottom-t.map(r[i.id]));O(n.bottomLeftVertex,[n]).forEach((e=>Ue(e,"y",n.refBounds.bottom-t.map(0))))}}(e,t,r):e[0].type===Ot.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===J.HORIZONTAL)switch(n){case"bottom":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.bottom-t.map(r[e.id])))),T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.bottom)));break;case"top":for(let n of e)T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.top+t.map(r[e.id])))),T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.top)));break;case"middle":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.middle-t.map(r[e.id])/2))),T(n.bottomLeftVertex,n).forEach((e=>Ue(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 v({x1:0,y1:100,x2:0,y2:0}):new v({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=>{Ue(e,r,t[e.id])}))}_doStandardMapping(e,t,r){let n=this.outputVar.channel;e.forEach((e=>{let i=t.map(r[e.id]);Ue(e,n,i),e instanceof ie&&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),Ue(t,r,i)}_getUsableCondEncodings(){return this.inputVars.filter((e=>e instanceof K))}}class Qe extends X{constructor(e,t,r){super(e),this._property=t,this._elem=r}get property(){return this._property}get element(){return this._elem}}const et=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 tt(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.createOneWayDependency(Y.EVAL_BBOX);switch(t.connect(n,r),e.type){case Ot.Circle:case Ot.Polygon:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"radius",e),a=t.getVariable(q.CHANNEL,"area",e);t.connect(s,n),t.connect(r,n),t.connect(i,n),t.connect(a,n);break}case Ot.Area:case Ot.Line:case Ot.BezierCurve:case Ot.Path:case Ot.Image:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Ot.Rect:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.getVariable(q.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 Ot.PointText:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"text",e);t.connect(r,n),t.connect(i,n),t.connect(s,n);break}case Ot.Ring:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"innerRadius",e),a=t.getVariable(q.CHANNEL,"outerRadius",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Ot.Pie:case Ot.Arc:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"innerRadius",e),a=t.getVariable(q.CHANNEL,"outerRadius",e),o=t.getVariable(q.CHANNEL,"startAngle",e),l=t.getVariable(q.CHANNEL,"endAngle",e),u=t.getVariable(q.CHANNEL,"angle",e),c=t.getVariable(q.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 rt(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 nt(e,t){let r=t.findVariable(q.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 it(e,t){if(e.type===Ot.Axis){let r=t.findVariable(q.PROPERTY,[et.AXIS_PATH_POSITION,e]).incomingDataflow;t.deleteOperator(r),r=t.findVariable(q.PROPERTY,[et.AXIS_TICKS_POSITION,e]).incomingDataflow,t.deleteOperator(r),r=t.findVariable(q.PROPERTY,[et.AXIS_LABELS_POSITION,e]).incomingDataflow,t.deleteOperator(r)}else if(e.type===Ot.Gridlines){let r=t.findVariable(q.PROPERTY,[et.GRIDLINES_POSITION,e]).incomingDataflow;t.deleteOperator(r)}}function st(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.createOneWayDependency(Y.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 at(e,t,r){let n=r.getVariable(q.BOUNDS,e),i=r.getVariable(q.BOUNDS,t),s=r.getIncomingDataflowOperator(Y.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(q.CHANNEL,"x",t),i=r.getIncomingDataflowOperator(lt(e.layout.type),n);i&&r.deleteOperator(i)}}function ot(e,t,r){let n=r.getVariable(q.BOUNDS,e),i=r.getVariable(q.BOUNDS,t),s=r.getIncomingDataflowOperator(Y.EVAL_BBOX,n);r.connect(i,s),r.connect(s,n),e.layout&&ct(e,e.layout,r)}function lt(e){switch(e){case U.GRID:return Y.GRID_LAYOUT;case U.STACK:return Y.STACK_LAYOUT;case U.PACKING:return Y.PACK_LAYOUT;case U.FORCE:return Y.FORCE_LAYOUT;case U.DIRECTED:return Y.DIRECTED_LAYOUT;case U.TIDYTREE:return Y.TIDY_TREE_LAYOUT;case U.TREEMAP:return Y.TREEMAP_LAYOUT;case U.STRATA:return Y.STRATA_LAYOUT;case U.CIRCULAR:return Y.CIRCULAR_LAYOUT;case U.CLUSTER:return Y.CLUSTER_LAYOUT}}function ut(e,t,r){let n=r.getVariable(q.ORDER,e),i=r.getOutgoingDataflowOperator(lt(t.type),n);r.deleteOperator(i)}function ct(e,t,r){let n=t?t.type:"none",i=n===U.TREEMAP?j(e)[0]:e.children[0];if(!i)return;let s=r.getVariable(q.CHANNEL,"width",i),a=r.getVariable(q.CHANNEL,"height",i),o=r.getVariable(q.ORDER,e),l=r.getVariable(q.CHANNEL,"x",i),u=r.getVariable(q.CHANNEL,"y",i),c=r.getOutgoingDataflowOperator(lt(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===Ot.Arc||i.type===Ot.Pie){let e=r.getVariable(q.CHANNEL,"angle",i),t=r.getVariable(q.CHANNEL,"thickness",i);r.connect(e,c),r.connect(t,c)}else if(i.type===Ot.Circle){let e=r.getVariable(q.CHANNEL,"area",i),t=r.getVariable(q.CHANNEL,"radius",i);r.connect(e,c),r.connect(t,c),r.disconnectChannelVarFromBBoxOperator(e),r.disconnectChannelVarFromBBoxOperator(t)}else if(i.type===Ot.Rect){let e=r.getVariable(q.CHANNEL,"area",i);r.connect(e,c),r.disconnectChannelVarFromBBoxOperator(e)}if(c.run(),i.links&&ht(i,r),i.children&&i.children[0]){let e=r.getVariable(q.BOUNDS,i.children[0]),t=r.getVariable(q.CHANNEL,"x",i).incomingDataflow;t&&r.connect(e,t),r.disconnectChannelVarFromBBoxOperator(e)}}function ht(e,t){let r=e.links[0],n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"x",r),s=t.getVariable(q.CHANNEL,"strokeWidth",r),a=t.getVariable(q.CHANNEL,"strength",r),o=t.createOneWayDependency(Y.LINK_PLACER);t.connect(n,o),t.connect(s,o),t.connect(a,o),t.connect(o,i)}function dt(e,t){let r=t.getVariable(q.PROPERTY,et.AXIS_ORIENTATION,e),n=t.getVariable(q.BOUNDS,e.elements[0].parent),i=t.getVariable(q.PROPERTY,et.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(q.PROPERTY,et.AXIS_TICK_OFFSET,e),o=t.getVariable(q.PROPERTY,et.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),u=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_LABEL_OFFSET,e),h=t.getVariable(q.PROPERTY,et.AXIS_LABEL_FORMAT,e),d=t.getVariable(q.PROPERTY,et.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(q.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function ft(e,t){let r=t.getVariable(q.PROPERTY,et.AXIS_ORIENTATION,e),n=t.getVariable(q.BOUNDS,B(e.elements[0])),i=t.getVariable(q.PROPERTY,et.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(q.PROPERTY,et.AXIS_TICK_OFFSET,e),o=t.getVariable(q.PROPERTY,et.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),u=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_LABEL_OFFSET,e),h=t.getVariable(q.PROPERTY,et.AXIS_LABEL_FORMAT,e),d=t.getVariable(q.PROPERTY,et.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(q.PROPERTY,et.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(q.PROPERTY,et.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(q.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function pt(e,t){let r=t.getVariable(q.BOUNDS,B(e.elements[0])),n=t.getVariable(q.PROPERTY,et.GRIDLINES_POSITION,e),i=t.createOneWayDependency(Y.GRIDLINES_PLACER);t.connect(r,i),t.connect(i,n),i.run();let s=t.getVariable(q.BOUNDS,e),a=t.getIncomingDataflowOperator(Y.EVAL_BBOX,s);t.connect(n,a),t.connect(a,s)}class _t{constructor(){this._id=this.type+Nt(),this._type=Ot.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===Ot.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),ct(this,e,this.scene._depGraph),this.children&&this.children.length>0){let e=j(this,!0);for(let t of e)this.scene.onChange(q.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 c(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 c(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 D(this)}}class gt extends _t{constructor(){super(),this._type=Ot.Collection,this._id=this.type+"_"+Nt(),this._classId=this.id,this._childrenOrder=void 0}get classId(){return this._classId}contains(e,t){if([Ot.Arc,Ot.Pie,Ot.Polygon,Ot.Area].indexOf(this.firstChild.type)>=0){let n=this.getSVGPathData();if(""!==n){let i=r.getContext(),s=new Path2D(n);return i.lineWidth=Math.max(this.strokeWidth,2.5),i.stroke(s),i.isPointInPath(s,e,t)}}return this._bounds.contains(e,t)}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 yt extends _t{constructor(e){if(super(),this._type=Ot.Glyph,this._id=this.type+"_"+Nt(),this._classId=this._id,e)for(let t of e)this.addChild(t)}get classId(){return this._classId}}class mt extends ie{constructor(e){super(e),this._type=Ot.BezierCurve,this._orientation="orientation"in e?e.orientation:J.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 bt extends x{constructor(e){super(e),this._type=Ot.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=R(this._x,this._y,this._rotate[1],this._rotate[2],this._rotate[0]);this._bounds=new c(e.x-this._radius,e.y-this._radius,2*this._radius,2*this._radius)}else this._bounds=new c(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 vt extends x{constructor(e){super(e),this._type=Ot.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()}resize(e,t){this._width=e,this._height=t,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 c(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 xt extends ie{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 Et extends x{constructor(e){super(e),this._type=Ot.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:[_.CENTER,_.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=S.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 _.LEFT:e=this._x;break;case _.RIGHT:e=this._x-n;break;case _.CENTER:e=this._x-n/2;break;default:e=this._x}switch(this._anchor[1]){case _.TOP:t=this._y;break;case _.BOTTOM:t=this._y-i;break;case _.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=>R(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 c(s,o,a-s,l-o)}else this._bounds=new c(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 wt extends ie{constructor(e){super(e),this._type=Ot.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 At extends ie{constructor(e){super(e),this._type=Ot.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 Ct(e){let t=null;switch(e.type){case Ot.Circle:t=new bt(e);break;case Ot.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 xt(e);break;case Ot.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 Xe(e);break;case Ot.PointText:t=new Et(e);break;case Ot.Image:t=new vt(e);break;case Ot.BundledPath:case Ot.Chord:case Ot.Path:t=new ie(e);break;case Ot.Area:t=new qe(e);break;case Ot.Ring:t=new At(e);break;case Ot.Arc:t=new ue(e);break;case Ot.BezierCurve:"vertices"in e||(e.vertices=[[0,100],[20,120],[80,180],[100,200]]),t=new mt(e);break;case Ot.Polygon:t=new wt(e)}return t&&t._updateBounds(),t}function Rt(e){let t=new gt;return e.addChild(t),e._itemMap[t.id]=t,t}function kt(e){return new yt(e)}function St(e){switch(e.type){case Ot.Collection:return function(e){let t=Rt(e.scene);for(let r=0;r<e.children.length;r++){let n=e.children[r];t.addChild(St(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 Ot.Glyph:return function(e){let t=new yt;for(let r of e.children)t.addChild(St(r));t._classId=e.classId,e._dataScope&&(t.dataScope=e._dataScope.clone());return t}(e);default:return function(e){let t=Ct({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 Tt=Object.freeze({Rect:"rect",Circle:"circle",Line:"line",Ring:"ring",Path:"path",Image:"image",PointText:"text",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord"}),Ot=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"}),It=Object.freeze({Axis:"axis",Legend:"legend",Gridlines:"gridlines"});function Nt(){return Date.now().toString(36)+"_"+Math.random().toString(36).slice(2)}class Lt{constructor(e,t,r){this._id=Ot.DataTable+Nt(),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]=Ce(this.data.map((t=>t[e]))),"year"==e.toLowerCase()&&this._attrTypes[e]==Ae.Integer&&(this._attrTypes[e]=Ae.Date)}this._validate(this.data,this._attrTypes),this._attrSummaries={};for(let e of this._attributes)this._attrSummaries[e]=ke(this.data.map((t=>t[e])),this._attrTypes[e]);this._attributes.indexOf(Pt)<0&&this._addAttribute(Pt,Ae.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 Lt(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!==Pt&&this._rawData.forEach(((t,n)=>t[e]=r[n])),this._attrTypes[e]=t,this._attributes.push(e),this._attrSummaries[e]=ke(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(e,r){let n=t.timeParse(r);for(let t of this.data){let r=t[e];null==r||null==r?(r="",t[e]=new Date(1899,11,31).getTime()):t[e]=n(r).getTime(),this._dateMap.set(t[e],r)}this._attrTypes[e]=Ae.Date,this._attrSummaries[e]=ke(this.data.map((t=>t[e])),Ae.Date)}getRawValue(e,t){return this.getAttributeType(e)===Ae.Date?this._dateMap.get(t).toString():t}get nonNumericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!=Ae.Number&&this._attrTypes[t]!=Ae.Integer&&t!=Lt.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]!==Ae.Number&&this._attrTypes[t]!==Ae.Integer||t==Lt.RowID||e.push(t);return e}getAttributesByType(e){let t=[];for(let r in this._attrTypes)this._attrTypes[r]===e&&r!=Lt.RowID&&t.push(r);return t}summarize(){for(let e of this._attributes)this._attrSummaries[e]=ke(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 Ae.Boolean:n=!1;break;case Ae.Date:n=new Date(1899,11,31).getTime();break;case Ae.String:n="";break;default:n=0}else switch(i){case Ae.Boolean:n=s;break;case Ae.Date:n=Number.isInteger(s)?new Date(s,0).getTime():new Date(s+"").getTime(),this._dateMap.set(n,s);break;case Ae.String:n=s.toString();break;default:n=s}r[e]=n}}}function Vt(e){let t=_e(e);if(t)return t.dataTable}const Pt="mascot_rowId";function Dt(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 Bt extends X{constructor(e,t){super(e),this._elem=t}get element(){return this._elem}}class Mt extends X{constructor(e,t){super(e),this._item=t}get element(){return this._item}}class Gt{constructor(e){this._id=e+"_"+Nt(),this._type=e,this._vars=[],this._edges=[]}get vars(){return this._vars}get edges(){return this._edges}run(){console.log("-",this._type)}}class jt{constructor(e,t,r=!0){this._id="e_"+Nt(),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 W||this._fromNode instanceof Gt?this._fromNode:this._toNode}}class zt extends X{constructor(e,t,r){super(e),this._attribute=t,this._dataset=r}get attribute(){return this._attribute}get dataset(){return this._dataset}}class Ft extends X{constructor(e,t){super(e),this._encs=[t]}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}}class Ut extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=e.encodings[0],r=this.inputVars.find((e=>e instanceof zt)).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&&[Ot.Arc,Ot.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==Ae.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=T(e.element),n={};if(e.element.type===Ot.Area&&["width","height","fillGradient"].indexOf(e.channel)>=0)for(let t of r)for(let r of t.vertices)n[r.id]=_e(r).aggregateNumericalAttribute(e.attribute,e.aggregator);else switch(t){case Ae.Boolean:break;case Ae.Date:for(let t of r)n[t.id]=_e(t).getAttributeValue(e.attribute);break;case Ae.String:try{if("count"==e.aggregator)for(let t of r)n[t.id]=_e(t).getAttributeValues(e.attribute).length;else for(let t of r)n[t.id]=_e(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=_e(e).getAttributeValue(i);n[e.id]=new pe(t).cross(Ee,r).getAttributeValue(s)}}else for(let t of r)n[t.id]=_e(t).aggregateNumericalAttribute(e.attribute,e.aggregator)}return e.attrValues=n,Object.values(n)}}class Ht{constructor(e,r){switch(this._id="scale_"+Nt(),this._type=e,r&&(this._args=r),e){case"linear":this._scale=t.scaleLinear();break;case"point":this._scale=t.scalePoint();break;case"ordinal":this._scale=t.scaleOrdinal();break;case"ordinalColor":this._scale=t.scaleOrdinal(t[r.scheme]);break;case"power":this._scale=t.scalePow().exponent(2);break;case"sqrt":this._scale=t.scalePow().exponent(.5);break;case"log":this._scale=t.scaleLog();break;case"identity":case"time":this._scale=t.scaleTime();break;case"sequentialColor":r.scheme?this._scale=t.scaleSequential(t[r.scheme]):this._scale=t.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 Wt=["schemeBrBG","schemePRGn","schemePiYG","schemePuOr","schemeRdBu","schemeRdGy","schemeRdYlBu","schemeRdYlGn","schemeSpectral"],Yt=["schemeBlues","schemeGreens","schemeGreys","schemeOranges","schemePurples","schemeReds","schemeBuGn","schemeBuPu","schemeGnBu","schemeOrRd","schemePuBuGn","schemePuBu","schemePuRd","schemeRdPu","schemeYlGnBu","schemeYlGn","schemeYlOrBr","schemeYlOrRd"];class Xt extends W{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):"src"===e?r.scales[0].domain.slice():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(e,r){if(r.mapping){return r.scales[0].domain.map((e=>r.mapping[e+""]))}if("sequentialColor"===r.scales[0].type){let e=this.outputVar,n=r.scales[0].domain;for(let i of e.encodings)if(!r.colorScheme)for(let e of i.scales){let r=e.domain;e._scale=t.scaleSequential(n[0]<0&&n[1]>0?t.interpolatePuOr:t.interpolateTurbo),e._scale.domain(r)}}if((Wt.indexOf(r.colorScheme)>=0||Yt.indexOf(r.colorScheme)>=0)&&"ordinalColor"===r.scales[0].type){let e=this.outputVar,n=r.scales[0].domain;for(let i of e.encodings)for(let e of i.scales){let i=e.domain;e._scale=t.scaleOrdinal(t[r.colorScheme][n.length]),e._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===Ot.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]):B(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]):B(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 qt extends W{constructor(e){super(e)}run(){super.run()}}class Kt extends _t{constructor(e){super(),this._type=Ot.Axis,this._id=this._type+Nt(),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 _t,this._ticks._id=this._id+"_ticks",this.addChild(this._ticks),this._labels=new _t,this._labels._id=this._id+"_labels",this.addChild(this._labels),this._title=new Et({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!==Ot.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 Zt="top",$t="bottom",Jt="left";function Qt(e,r,n,i){let s,a=e.domain,o=e.range;switch(e.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 t=!!i&&(i.elements[0].parent.layout&&i.elements[0].parent.layout.type==U.STACK);a[1]=e._scale.invert(t?f(n)[r]:d(n)[r])}if("log"===e.type){u=[];let t=e._scale.ticks();for(let e of t){let r=Math.log(e)/Math.log(10)+1e-6;Math.abs(r-Math.floor(r))<c/t.length&&u.push(e)}}else u=t.ticks(a[0],a[1],c);return u}case"point":{s="width"==r||"x"==r?80:30;let t=Math.floor(e.rangeExtent/a.length),n=Math.ceil(s/t);return"x"==r?a.filter(((e,t)=>t%n==0)):a}case"time":{s="width"==r||"x"==r?80:30;let e,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=[t.timeSeconds,t.timeMinutes,t.timeHours,t.timeDays,t.timeMonths,t.timeYears];for(let t=0;t<u.length-1;t++)if(l>=u[t]&&l<u[t+1])return e=Math.floor(l/u[t]),n=c[t],n(a[0],a[1],e);return l>u[u.length-1]?(e=Math.floor(l/u[u.length-1]),n=c[u.length-1],n(a[0],a[1],e)):[]}default:return[]}}function er(e,t){t.removeChild(e)}class tr extends Kt{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?$t:Jt,this._titleText="title"in n?n.title:this._encoding.attribute,this._path="angle"===this._channel?new bt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ie({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)!==Ae.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(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.tickValues):(this._tickValues=Qt(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 ie({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 Ae.Date:r=t.timeFormat(this._labelFormat);break;case Ae.String:r=function(e){return e};break;default:r=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new Et({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 Kt{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?$t:Jt,this._titleText="title"in n?n.title:this._attribute,this._path="angle"===this._channel?new bt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ie({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)!==Ae.Date||"labelFormat"in n||(this._labelFormat="%m/%d/%y")}get elements(){if(this.layout.type===U.CLUSTER){const e=new Map(this._elems.map((e=>[e.dataScope.getAttributeValue(Ee),e])));return this.layout._d3Root.leaves().map((t=>e.get(t.data[Ee])))}return this._elems}get layout(){return this._elems[0].parent.layout}createTicksLabels(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.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 ie({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 Ae.Date:r=t.timeFormat(this._labelFormat);break;case Ae.String:r=function(e){return e};break;default:r=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new Et({text:r(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(n)}this._title._text=this._titleText}}class nr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_ORIENTATION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e),p(e._path)}_runForLayout(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==U.STACK?f(e.elements):d(e.elements),n=[];if("x"===t){let t=e.orientation===Zt?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===Jt?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===U.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==U.STACK?f(e.elements):d(e.elements),n=[];if("x"===t){let t=e.orientation===Zt?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===Zt?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===Jt?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===Jt?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 ir extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e);for(let t of e._ticks.children)t._updateBounds();p(e._ticks)}_runForLayout(e){let t=e.channel;if("x"==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([[s,t],[s,t+r]])}}else if("y"===t){let t=e.orientation==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==Jt?-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===U.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[Ee],[e.x,e.y]])));for(let[r,i]of e._ticks.children.entries()){let s=e.elements[r].dataScope.getAttributeValue(Ee),a=he(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=d(e.elements);if("x"==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([[e.scale.map(e._tickValues[n]),t],[e.scale.map(e._tickValues[n]),t+r]])}else if("width"==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===Ot.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==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==Jt?-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==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,n=e.orientation==Jt?-e.tickSize:e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Ot.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==$t?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==$t?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 sr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e);for(let t of e._labels.children)t._updateBounds();p(e._labels)}_runForLayout(e){let t=e.channel;if("x"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.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=[_.RIGHT,_.MIDDLE])}}else if("y"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,r=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.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==_.MIDDLE?s.y:s[e.tickAnchor],i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[_.RIGHT,r[1]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===U.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[Ee],[e.x,e.y]])));let i=5;for(let[r,s]of e._labels.children.entries()){let a=e.elements[r].dataScope.getAttributeValue(Ee);if(n.get(a)[0]<Math.PI){let o=he(n.get(a)[0])-90;s._anchor=[_.LEFT,_.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=he(n.get(a)[0])+90;s._anchor=[_.RIGHT,_.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=d(e.elements);if("x"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.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=[_.RIGHT,r[1]])}else if("width"===t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,n=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.BOTTOM],i=!!(e.isFlipped()||e.elements[0].type===Ot.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=[_.RIGHT,n[1]])}else if("y"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,r=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.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=[_.RIGHT,r[1]])}else if("height"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,n=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.MIDDLE],i=e.elements[0].type===Ot.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=[_.RIGHT,n[1]])}else if("radialDistance"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.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=[_.RIGHT,r[1]])}}}class ar extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(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=j(e,!0);for(let e of r)p(e)}placeElements(e,t){let r=Be(e,"x"),n=Be(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 _.LEFT:s=i.left-n.refBounds.left;break;case _.CENTER:s=i.x-n.refBounds.x;break;case _.RIGHT:s=i.right-n.refBounds.right}switch(t._cellVertAlignment){case _.TOP:a=i.top-n.refBounds.top;break;case _.MIDDLE:a=i.y-n.refBounds.y;break;case _.BOTTOM:a=i.bottom-n.refBounds.bottom}ze(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 c(t._left+(o+n)*s+0,t._top+(l+i)*r,o,l))}}}class or extends W{constructor(e){super(e)}run(){let e=this.outputVar.element;e.scale?this._runForEncoding(e):this._runForLayout(e),p(e)}_runForLayout(e){let t=e.channel,r=d(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=d(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 lr extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=j(e)[0],r=T(e.parent);for(let e of r){let r=e.layout;if(!r)return;switch(t.type){case Ot.Rect:case Ot.Circle:case Ot.Image:this._stackRects(e,r);break;case Ot.Area:e.children[0].orientation===J.HORIZONTAL?this._stackAreasVert(e,r):this._stackAreasHorz(e,r);break;case Ot.Arc:case Ot.Pie:t.parent.classId===e.classId&&this._stackArcs(e,r)}}p(t)}_stackArcs(e,t){if(t.orientation===J.ANGULAR){let t=90;if((this._direction?this._direction:ee.Clockwise)===ee.Clockwise)for(let r of e.children){let e=de(t-r.angle);Ue(r,"startAngle",e),t=e}else for(let r of e.children){let e=de(t+r.angle);Ue(r,"startAngle",e),t=e}}else if(t.orientation===J.RADIAL){let t=Math.min(...e.children.map((e=>e.innerRadius)));for(let r of e.children){let e=r.outerRadius-r.innerRadius;Ue(r,"innerRadius",t),Ue(r,"outerRadius",t+e),t=r._outerRadius}}}_stackAreasVert(e,t){let r=e.children,n=e.bounds,i=t.vertCellAlignment===_.TOP?n.top:n.bottom,s=t.vertCellAlignment===_.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;ze(r,0,u-r.y),ze(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===_.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;ze(r,0,s-n.bottom),ze(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==J.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,ze(n,i,s),n._updateBounds();let a=0,o=0;if(!Ge(n))switch(t._horzCellAlignment){case _.LEFT:a=l-n.bounds.left;break;case _.CENTER:a=l+c/2-n.bounds.x;break;case _.RIGHT:a=l+c-n.bounds.right}ze(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,ze(n,i,s),n._updateBounds();let a=0,o=0;if(!Me(n))switch(t._vertCellAlignment){case _.TOP:o=u-n.bounds.top;break;case _.MIDDLE:o=u+h/2-n.bounds.y;break;case _.BOTTOM:o=u+h-n.bounds.bottom}ze(n,a,o)}}}class ur extends W{constructor(e){super(e)}run(){super.run()}}class cr extends W{constructor(e){super(e)}run(){let e=this.inputVars[0],r=this.outputVar,n=e.attribute,i=r.attribute,s=e.dataset,a=r.dataset,o=s.getAttributeValues(n),l=t.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,Ae.String,c),a.orderAttributeValues(i,h)}_findBin(e,t){for(let r of t)if(r.indexOf(e)>=0)return r}}class hr extends W{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]=ke(t.data.map((t=>t[e])),t._attrTypes[e])}}class dr extends X{constructor(e,t,r){super(e),this._dataset=r,this._predicate=t}get dataset(){return this._dataset}get predicate(){return this._predicate}}class fr extends X{constructor(e,t){super(e),this._group=t}get element(){return this._group}}class pr extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e.type===q.AFFIXATION)).affixation,t=e.base,r=e.element,n=T(t),i=T(r),s=e.channels,a=e.attribute;if(E(r)&&E(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=j(r,!0);for(let e of o)p(e)}_handlePolar(e,t,r){let n=r.hasChannel("radialDistance")?r.getBaseAnchor("radialDistance"):_.MIDDLE,i=r.hasChannel("radialDistance")?r.getElementAnchor("radialDistance"):_.MIDDLE,s=r.hasChannel("angle")?r.getBaseAnchor("angle"):_.CENTER;r.hasChannel("angle")?r.getElementAnchor("angle"):_.CENTER;let a=r.hasChannel("radialDistance")?r.getOffset("radialDistance"):0,o=r.hasChannel("angle")?r.getOffset("angle"):0;if([Ot.Arc,Ot.Ring].indexOf(t[0].type)>=0&&e[0].type==Ot.PointText)for(let r=0;r<e.length;r++){let i=t[r],o=e[r],l=n===_.MIDDLE?(i.outerRadius+i.innerRadius)/2:n===_.TOP?i.outerRadius-5:i.innerRadius+5;if(l+=a,i.type===Ot.Arc){let e=Te(i.x,i.y,l,i.startAngle),t=Te(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===Ot.Ring){let e=275,t=265,r=350,n=Te(i.x,i.y,l,e),s=Te(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===_.LEFT?"0%":"50%"}else for(let r=0;r<e.length;r++){let l,u,c=t[r],h=e[r];c.type==Ot.Arc||c.type==Ot.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==Ot.Circle&&(u=90,l="top"==n?c.radius+a:"bottom"==n?a:c.radius/2+a),ze(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(ae(l)){o=se(l,[_.LEFT,_.TOP].includes(i)?0:[_.CENTER,_.MIDDLE].includes(i)?.5:1)[e]}else o=l.bounds[i]+s;t[0].type===Ot.PointText?(u.anchor["x"==e?0:1]=n,Ue(u,e,o)):"x"==e?ze(u,o-u.bounds[n],0):ze(u,0,o-u.bounds[n])}}}class _r extends X{constructor(e,t){super(e),this._affx=t}get affixation(){return this._affx}}class gr extends W{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=yr(mr(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]=Ae.Number,a.groupBy)for(let e of a.groupBy)p[e]=i.getAttributeType(e);s.initialize(f,s.url,p)}}function yr(e,r,n){return r.map((r=>[r,t.mean(n,(t=>e(r-t)))]))}function mr(e){return t=>Math.abs(t/=e)<=1?.75*(1-t*t)/e:0}class br extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)return;let n=e.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=t.hierarchy({name:"root",children:n}).sum((e=>e.radius?e.radius:0)).sort(((e,t)=>t.value-e.value));t.pack().size([r._width,r._height]).radius((e=>e.value))(a);for(let e of a.children){let t=e.data.itm;ze(t,r._x-a.x+e.x-t.x,r._y-a.y+e.y-t.y)}}let n=j(e,!0);for(let e of n)p(e)}}class vr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e),p(e._title)}_runForEncoding(e){let t=e.channel,r=d(e.elements);if("x"==t)e._title._x=(e.scale.range[0]+e.scale.range[1])/2,e._title._y=e.orientation==$t?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==$t?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._rotateYTitle?(e._title._x=e.orientation==Jt?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==Jt?[-90,e._title._x,e._title._y]:[90,e._title._x,e._title._y]):(e._title._x=e.orientation==Jt?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==Jt?[-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==$t?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==U.STACK?f(e.elements):d(e.elements);if("x"==t)e._title._x=r.center,e._title._y=e.orientation==$t?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==Jt?[-90,r.center,r.middle]:[90,r.center,r.middle];else if("angle"===t){let t=e.elements[0].parent.layout;t.type===U.CLUSTER&&(e._title._x=t.x,e._title._y=t.y)}}}class xr extends Gt{constructor(e){super(e)}run(){super.run();let e,r=this.vars.find((e=>e.type===q.ALIGNMENT)).alignment,n=r.anchor,i=r.elements;n==_.Top||n==_.LEFT?e=Math.min(...i.map((e=>e.bounds[n]))):n==_.BOTTOM||n==_.RIGHT?e=Math.max(...i.map((e=>e.bounds[n]))):n!=_.CENTER&&n!=_.MIDDLE||(e=t.mean(i.map((e=>e.bounds[n]))));for(let t of i){let i=je(t,r.channel);if(i){let s=e-t.bounds[n];ze(i,"x"===r.channel?s:0,"x"===r.channel?0:s)}}for(let e of i)p(e)}}class Er extends X{constructor(e,t){super(e),this._aln=t}get alignment(){return this._aln}}class wr extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)continue;let n=ve(e.children[0]);if(!n)continue;let i=n.linkList.map((e=>({source:n.getNode(e.source),target:n.getNode(e.target)}))),s=t.forceSimulation(n.nodeList).force("charge",t.forceManyBody().strength(-r._repulsion)).force("link",t.forceLink(i).id((e=>e.id)).distance(r._linkDistance)).force("x",t.forceX()).force("y",t.forceY()).force("center",t.forceCenter(r._x,r._y).strength(r._attraction));s.stop(),s.tick(r._iterations);for(let t=0;t<e.children.length;t++){let r=e.children[t],i=n.nodeList[t];ze(r,i.x-r.x,i.y-r.y)}}let n=j(e,!0);for(let e of n)p(e)}}class Ar extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e);switch(e.type){case Ot.Arc:this._updateArcLinks(t);break;case Ot.BezierCurve:this._updateBezierLinks(t);break;case Ot.BundledPath:this._updateBundledLinks(t);break;case Ot.Chord:this._updateChordLinks(t);break;case Ot.Line:default:this._updateLineLinks(t)}p(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=fe(e.x,e.y,t._x,t._y),i=fe(r.x,r.y,t._x,t._y);t.direction===ee.CLOCKWISE&&([n,i]=[i,n]),Ue(t,"startAngle",n),Ue(t,"angle",Math.abs(i-n))}}_updateBezierLinks(e){let t=this._inputVars[0].element,r=T(t),n=t.parent.layout;n.type===U.DIRECTED||n.type===U.TIDYTREE?this._updateBezierLinksForDirectedGraph(r,e,n):n.type===U.CLUSTER&&this._updateBezierLinksForClusteredGraph(r,e,n)}_updateBezierLinksForClusteredGraph(e,r,n){const i=n._d3Root.descendants(),s=new Map(i.map((e=>[Cr(e),e]))),a=new Map(i.map((e=>[e.data[Ee],Cr(e)])));if(n.isRadial()){const e=t.linkRadial().angle((e=>e.x)).radius((e=>e.y));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.x,n.y)}}else if(n.orientation===J.VERTICAL){const e=t.linkVertical().x((e=>e.x)).y((e=>e.y));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.left-n._x0,n.top)}}else if(n.orientation===J.HORIZONTAL){const e=t.linkHorizontal().x((e=>e.y)).y((e=>e.x));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({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)=>fe(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y)-fe(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y))):t.sort(((e,t)=>fe(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y)-fe(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===J.HORIZONTAL?e._setVertices([[t,o],[(t+l)/2,o],[t,u],[l,u]]):e.orientation===J.VERTICAL&&e._setVertices([[t,o],[t,(o+u)/2],[l,o],[l,u]])}}_updateBundledLinks(e){let r=this._inputVars[0].element.parent.layout;if(r.type!==U.CLUSTER)throw"Bundled links must work on a cluster layout";let n=r._d3Root.leaves();const i=new Map(n.map((e=>[Cr(e),e]))),s=new Map(n.map((e=>[e.data[Ee],Cr(e)]))),a=t.lineRadial().curve(t.curveBundle.beta(e[0]._strength)).radius((e=>e.y)).angle((e=>e.x));for(let t of e){let e=t.source.dataScope.getAttributeValue(Ee),n=t.target.dataScope.getAttributeValue(Ee),o=i.get(s.get(e)),l=i.get(s.get(n));(o.outgoing??=[]).push([o,l]),l.incoming??=[];let u=o.path(l);t._d=le(a(u),r.x,r.y)}}_updateChordLinks(e){for(let t of e){let e=t.source,r=t.target,n=Te(e.x,e.y,e.innerRadius,e.startAngle),i=Te(e.x,e.y,e.innerRadius,e.endAngle),s=Te(r.x,r.y,r.innerRadius,r.startAngle),a=Te(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 Cr(e){return`${e.parent?Cr(e.parent)+".":""}${e.data[Ee]}`}var 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,ki="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Si(){if(Tr)return Sr;return Tr=1,Sr=function(e,t){return e===t||e!=e&&t!=t}}function Ti(){if(Ir)return Or;Ir=1;var e=Si();return Or=function(t,r){for(var n=t.length;n--;)if(e(t[n][0],r))return n;return-1}}function Oi(){if(zr)return jr;zr=1;var e=kr?Rr:(kr=1,Rr=function(){this.__data__=[],this.size=0}),t=function(){if(Lr)return Nr;Lr=1;var e=Ti(),t=Array.prototype.splice;return Nr=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(Pr)return Vr;Pr=1;var e=Ti();return Vr=function(t){var r=this.__data__,n=e(r,t);return n<0?void 0:r[n][1]}}(),n=function(){if(Br)return Dr;Br=1;var e=Ti();return Dr=function(t){return e(this.__data__,t)>-1}}(),i=function(){if(Gr)return Mr;Gr=1;var e=Ti();return Mr=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,jr=s}function Ii(){if($r)return Zr;$r=1;var e="object"==typeof ki&&ki&&ki.Object===Object&&ki;return Zr=e}function Ni(){if(Qr)return Jr;Qr=1;var e=Ii(),t="object"==typeof self&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Jr=r}function Li(){if(tn)return en;tn=1;var e=Ni().Symbol;return en=e}function Vi(){if(ln)return on;ln=1;var e=Li(),t=function(){if(nn)return rn;nn=1;var e=Li(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;return rn=
|
|
3
3
|
/**
|
|
4
4
|
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
|
|
5
5
|
*
|
|
@@ -183,4 +183,4 @@ function(r,n,i){return n=t(void 0===n?r.length-1:n,0),function(){for(var s=argum
|
|
|
183
183
|
* @private
|
|
184
184
|
* @param {Function} func The function to apply a rest parameter to.
|
|
185
185
|
* @returns {Function} Returns the new function.
|
|
186
|
-
*/return up=function(n){return r(t(n,void 0,e),n+"")}}()((function(t,r){return null==t?{}:e(t,r)}));return hp=t}(),range:function(){if(mp)return yp;mp=1;var e=qp()();return yp=e}(),reduce:md(),sortBy:function(){if(Sp)return kp;Sp=1;var e=Ed(),t=Zp(),r=Cd(),n=Bp(),i=r((function(r,i){if(null==r)return[];var s=i.length;return s>1&&n(r,i[0],i[1])?i=[]:s>2&&n(i[0],i[1],i[2])&&(i=[i[0]]),t(r,e(i,1),[])}));return kp=i}(),uniqueId:function(){if(Op)return Tp;Op=1;var e=rd(),t=0;return Tp=function(r){var n=++t;return e(r)+n},Tp}(),values:Nd(),zipObject:function(){if(Vp)return Lp;Vp=1;var e=Ki(),t=Np?Ip:(Np=1,Ip=function(e,t,r){for(var n=-1,i=e.length,s=t.length,a={};++n<i;){var o=n<s?t[n]:void 0;r(a,e[n],o)}return a});return Lp=function(r,n){return t(r||[],n||[],e)}}()}}catch(e){}Pp||(Pp=window._);var $p=Pp,Jp=Qp;function Qp(){var e={};e._next=e._prev=e,this._sentinel=e}function e_(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function t_(e,t){if("_next"!==e&&"_prev"!==e)return t}Qp.prototype.dequeue=function(){var e=this._sentinel,t=e._prev;if(t!==e)return e_(t),t},Qp.prototype.enqueue=function(e){var t=this._sentinel;e._prev&&e._next&&e_(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t},Qp.prototype.toString=function(){for(var e=[],t=this._sentinel,r=t._prev;r!==t;)e.push(JSON.stringify(r,t_)),r=r._prev;return"["+e.join(", ")+"]"};var r_=$p,n_=Dp.Graph,i_=Jp,s_=function(e,t){if(e.nodeCount()<=1)return[];var r=function(e,t){var r=new n_,n=0,i=0;r_.forEach(e.nodes(),(function(e){r.setNode(e,{v:e,in:0,out:0})})),r_.forEach(e.edges(),(function(e){var s=r.edge(e.v,e.w)||0,a=t(e),o=s+a;r.setEdge(e.v,e.w,o),i=Math.max(i,r.node(e.v).out+=a),n=Math.max(n,r.node(e.w).in+=a)}));var s=r_.range(i+n+3).map((function(){return new i_})),a=n+1;return r_.forEach(r.nodes(),(function(e){l_(s,a,r.node(e))})),{graph:r,buckets:s,zeroIdx:a}}(e,t||a_),n=function(e,t,r){var n,i=[],s=t[t.length-1],a=t[0];for(;e.nodeCount();){for(;n=a.dequeue();)o_(e,t,r,n);for(;n=s.dequeue();)o_(e,t,r,n);if(e.nodeCount())for(var o=t.length-2;o>0;--o)if(n=t[o].dequeue()){i=i.concat(o_(e,t,r,n,!0));break}}return i}(r.graph,r.buckets,r.zeroIdx);return r_.flatten(r_.map(n,(function(t){return e.outEdges(t.v,t.w)})),!0)},a_=r_.constant(1);function o_(e,t,r,n,i){var s=i?[]:void 0;return r_.forEach(e.inEdges(n.v),(function(n){var a=e.edge(n),o=e.node(n.v);i&&s.push({v:n.v,w:n.w}),o.out-=a,l_(t,r,o)})),r_.forEach(e.outEdges(n.v),(function(n){var i=e.edge(n),s=n.w,a=e.node(s);a.in-=i,l_(t,r,a)})),e.removeNode(n.v),s}function l_(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var u_=$p,c_=s_,h_={run:function(e){var t="greedy"===e.graph().acyclicer?c_(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],r={},n={};function i(s){u_.has(n,s)||(n[s]=!0,r[s]=!0,u_.forEach(e.outEdges(s),(function(e){u_.has(r,e.w)?t.push(e):i(e.w)})),delete r[s])}return u_.forEach(e.nodes(),i),t}(e);u_.forEach(t,(function(t){var r=e.edge(t);e.removeEdge(t),r.forwardName=t.name,r.reversed=!0,e.setEdge(t.w,t.v,r,u_.uniqueId("rev"))}))},undo:function(e){u_.forEach(e.edges(),(function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}}))}};var d_=$p,f_=Dp.Graph,p_={addDummyNode:__,simplify:function(e){var t=(new f_).setGraph(e.graph());return d_.forEach(e.nodes(),(function(r){t.setNode(r,e.node(r))})),d_.forEach(e.edges(),(function(r){var n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})})),t},asNonCompoundGraph:function(e){var t=new f_({multigraph:e.isMultigraph()}).setGraph(e.graph());return d_.forEach(e.nodes(),(function(r){e.children(r).length||t.setNode(r,e.node(r))})),d_.forEach(e.edges(),(function(r){t.setEdge(r,e.edge(r))})),t},successorWeights:function(e){var t=d_.map(e.nodes(),(function(t){var r={};return d_.forEach(e.outEdges(t),(function(t){r[t.w]=(r[t.w]||0)+e.edge(t).weight})),r}));return d_.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=d_.map(e.nodes(),(function(t){var r={};return d_.forEach(e.inEdges(t),(function(t){r[t.v]=(r[t.v]||0)+e.edge(t).weight})),r}));return d_.zipObject(e.nodes(),t)},intersectRect:function(e,t){var r,n,i=e.x,s=e.y,a=t.x-i,o=t.y-s,l=e.width/2,u=e.height/2;if(!a&&!o)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(o)*l>Math.abs(a)*u?(o<0&&(u=-u),r=u*a/o,n=u):(a<0&&(l=-l),r=l,n=l*o/a);return{x:i+r,y:s+n}},buildLayerMatrix:function(e){var t=d_.map(d_.range(g_(e)+1),(function(){return[]}));return d_.forEach(e.nodes(),(function(r){var n=e.node(r),i=n.rank;d_.isUndefined(i)||(t[i][n.order]=r)})),t},normalizeRanks:function(e){var t=d_.min(d_.map(e.nodes(),(function(t){return e.node(t).rank})));d_.forEach(e.nodes(),(function(r){var n=e.node(r);d_.has(n,"rank")&&(n.rank-=t)}))},removeEmptyRanks:function(e){var t=d_.min(d_.map(e.nodes(),(function(t){return e.node(t).rank}))),r=[];d_.forEach(e.nodes(),(function(n){var i=e.node(n).rank-t;r[i]||(r[i]=[]),r[i].push(n)}));var n=0,i=e.graph().nodeRankFactor;d_.forEach(r,(function(t,r){d_.isUndefined(t)&&r%i!=0?--n:n&&d_.forEach(t,(function(t){e.node(t).rank+=n}))}))},addBorderNode:function(e,t,r,n){var i={width:0,height:0};arguments.length>=4&&(i.rank=r,i.order=n);return __(e,"border",i,t)},maxRank:g_,partition:function(e,t){var r={lhs:[],rhs:[]};return d_.forEach(e,(function(e){t(e)?r.lhs.push(e):r.rhs.push(e)})),r},time:function(e,t){var r=d_.now();try{return t()}finally{console.log(e+" time: "+(d_.now()-r)+"ms")}},notime:function(e,t){return t()}};function __(e,t,r,n){var i;do{i=d_.uniqueId(n)}while(e.hasNode(i));return r.dummy=t,e.setNode(i,r),i}function g_(e){return d_.max(d_.map(e.nodes(),(function(t){var r=e.node(t).rank;if(!d_.isUndefined(r))return r})))}var y_=$p,m_=p_,b_={run:function(e){e.graph().dummyChains=[],y_.forEach(e.edges(),(function(t){!function(e,t){var r,n,i,s=t.v,a=e.node(s).rank,o=t.w,l=e.node(o).rank,u=t.name,c=e.edge(t),h=c.labelRank;if(l===a+1)return;for(e.removeEdge(t),i=0,++a;a<l;++i,++a)c.points=[],n={width:0,height:0,edgeLabel:c,edgeObj:t,rank:a},r=m_.addDummyNode(e,"edge",n,"_d"),a===h&&(n.width=c.width,n.height=c.height,n.dummy="edge-label",n.labelpos=c.labelpos),e.setEdge(s,r,{weight:c.weight},u),0===i&&e.graph().dummyChains.push(r),s=r;e.setEdge(s,o,{weight:c.weight},u)}(e,t)}))},undo:function(e){y_.forEach(e.graph().dummyChains,(function(t){var r,n=e.node(t),i=n.edgeLabel;for(e.setEdge(n.edgeObj,i);n.dummy;)r=e.successors(t)[0],e.removeNode(t),i.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(i.x=n.x,i.y=n.y,i.width=n.width,i.height=n.height),t=r,n=e.node(t)}))}};var v_=$p,x_={longestPath:function(e){var t={};v_.forEach(e.sources(),(function r(n){var i=e.node(n);if(v_.has(t,n))return i.rank;t[n]=!0;var s=v_.min(v_.map(e.outEdges(n),(function(t){return r(t.w)-e.edge(t).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),i.rank=s}))},slack:function(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}};var E_=$p,w_=Dp.Graph,A_=x_.slack,C_=function(e){var t,r,n=new w_({directed:!1}),i=e.nodes()[0],s=e.nodeCount();n.setNode(i,{});for(;R_(n,e)<s;)t=k_(n,e),r=n.hasNode(t.v)?A_(e,t):-A_(e,t),S_(n,e,r);return n};function R_(e,t){return E_.forEach(e.nodes(),(function r(n){E_.forEach(t.nodeEdges(n),(function(i){var s=i.v,a=n===s?i.w:s;e.hasNode(a)||A_(t,i)||(e.setNode(a,{}),e.setEdge(n,a,{}),r(a))}))})),e.nodeCount()}function k_(e,t){return E_.minBy(t.edges(),(function(r){if(e.hasNode(r.v)!==e.hasNode(r.w))return A_(t,r)}))}function S_(e,t,r){E_.forEach(e.nodes(),(function(e){t.node(e).rank+=r}))}var T_=$p,O_=C_,I_=x_.slack,N_=x_.longestPath,L_=Dp.alg.preorder,V_=Dp.alg.postorder,P_=p_.simplify,D_=B_;function B_(e){e=P_(e),N_(e);var t,r=O_(e);for(j_(r),M_(r,e);t=F_(r);)H_(r,e,t,U_(r,e,t))}function M_(e,t){var r=V_(e,e.nodes());r=r.slice(0,r.length-1),T_.forEach(r,(function(r){!function(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=G_(e,t,r)}(e,t,r)}))}function G_(e,t,r){var n=e.node(r).parent,i=!0,s=t.edge(r,n),a=0;return s||(i=!1,s=t.edge(n,r)),a=s.weight,T_.forEach(t.nodeEdges(r),(function(s){var o,l,u=s.v===r,c=u?s.w:s.v;if(c!==n){var h=u===i,d=t.edge(s).weight;if(a+=h?d:-d,o=r,l=c,e.hasEdge(o,l)){var f=e.edge(r,c).cutvalue;a+=h?-f:f}}})),a}function j_(e,t){arguments.length<2&&(t=e.nodes()[0]),z_(e,{},1,t)}function z_(e,t,r,n,i){var s=r,a=e.node(n);return t[n]=!0,T_.forEach(e.neighbors(n),(function(i){T_.has(t,i)||(r=z_(e,t,r,i,n))})),a.low=s,a.lim=r++,i?a.parent=i:delete a.parent,r}function F_(e){return T_.find(e.edges(),(function(t){return e.edge(t).cutvalue<0}))}function U_(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var s=e.node(n),a=e.node(i),o=s,l=!1;s.lim>a.lim&&(o=a,l=!0);var u=T_.filter(t.edges(),(function(t){return l===W_(e,e.node(t.v),o)&&l!==W_(e,e.node(t.w),o)}));return T_.minBy(u,(function(e){return I_(t,e)}))}function H_(e,t,r,n){var i=r.v,s=r.w;e.removeEdge(i,s),e.setEdge(n.v,n.w,{}),j_(e),M_(e,t),function(e,t){var r=T_.find(e.nodes(),(function(e){return!t.node(e).parent})),n=L_(e,r);n=n.slice(1),T_.forEach(n,(function(r){var n=e.node(r).parent,i=t.edge(r,n),s=!1;i||(i=t.edge(n,r),s=!0),t.node(r).rank=t.node(n).rank+(s?i.minlen:-i.minlen)}))}(e,t)}function W_(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}B_.initLowLimValues=j_,B_.initCutValues=M_,B_.calcCutValue=G_,B_.leaveEdge=F_,B_.enterEdge=U_,B_.exchangeEdges=H_;var Y_=x_.longestPath,X_=C_,q_=D_,K_=function(e){switch(e.graph().ranker){case"network-simplex":default:$_(e);break;case"tight-tree":!function(e){Y_(e),X_(e)}(e);break;case"longest-path":Z_(e)}};var Z_=Y_;function $_(e){q_(e)}var J_=$p,Q_=function(e){var t=function(e){var t={},r=0;function n(i){var s=r;J_.forEach(e.children(i),n),t[i]={low:s,lim:r++}}return J_.forEach(e.children(),n),t}(e);J_.forEach(e.graph().dummyChains,(function(r){for(var n=e.node(r),i=n.edgeObj,s=function(e,t,r,n){var i,s,a=[],o=[],l=Math.min(t[r].low,t[n].low),u=Math.max(t[r].lim,t[n].lim);i=r;do{i=e.parent(i),a.push(i)}while(i&&(t[i].low>l||u>t[i].lim));s=i,i=n;for(;(i=e.parent(i))!==s;)o.push(i);return{path:a.concat(o.reverse()),lca:s}}(e,t,i.v,i.w),a=s.path,o=s.lca,l=0,u=a[l],c=!0;r!==i.w;){if(n=e.node(r),c){for(;(u=a[l])!==o&&e.node(u).maxRank<n.rank;)l++;u===o&&(c=!1)}if(!c){for(;l<a.length-1&&e.node(u=a[l+1]).minRank<=n.rank;)l++;u=a[l]}e.setParent(r,u),r=e.successors(r)[0]}}))};var eg=$p,tg=p_,rg={run:function(e){var t=tg.addDummyNode(e,"root",{},"_root"),r=function(e){var t={};function r(n,i){var s=e.children(n);s&&s.length&&eg.forEach(s,(function(e){r(e,i+1)})),t[n]=i}return eg.forEach(e.children(),(function(e){r(e,1)})),t}(e),n=eg.max(eg.values(r))-1,i=2*n+1;e.graph().nestingRoot=t,eg.forEach(e.edges(),(function(t){e.edge(t).minlen*=i}));var s=function(e){return eg.reduce(e.edges(),(function(t,r){return t+e.edge(r).weight}),0)}(e)+1;eg.forEach(e.children(),(function(a){ng(e,t,i,s,n,r,a)})),e.graph().nodeRankFactor=i},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,eg.forEach(e.edges(),(function(t){e.edge(t).nestingEdge&&e.removeEdge(t)}))}};function ng(e,t,r,n,i,s,a){var o=e.children(a);if(o.length){var l=tg.addBorderNode(e,"_bt"),u=tg.addBorderNode(e,"_bb"),c=e.node(a);e.setParent(l,a),c.borderTop=l,e.setParent(u,a),c.borderBottom=u,eg.forEach(o,(function(o){ng(e,t,r,n,i,s,o);var c=e.node(o),h=c.borderTop?c.borderTop:o,d=c.borderBottom?c.borderBottom:o,f=c.borderTop?n:2*n,p=h!==d?1:i-s[a]+1;e.setEdge(l,h,{weight:f,minlen:p,nestingEdge:!0}),e.setEdge(d,u,{weight:f,minlen:p,nestingEdge:!0})})),e.parent(a)||e.setEdge(t,l,{weight:0,minlen:i+s[a]})}else a!==t&&e.setEdge(t,a,{weight:0,minlen:r})}var ig=$p,sg=p_,ag=function(e){ig.forEach(e.children(),(function t(r){var n=e.children(r),i=e.node(r);if(n.length&&ig.forEach(n,t),ig.has(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var s=i.minRank,a=i.maxRank+1;s<a;++s)og(e,"borderLeft","_bl",r,i,s),og(e,"borderRight","_br",r,i,s)}}))};function og(e,t,r,n,i,s){var a={width:0,height:0,rank:s,borderType:t},o=i[t][s-1],l=sg.addDummyNode(e,"border",a,r);i[t][s]=l,e.setParent(l,n),o&&e.setEdge(o,l,{weight:1})}var lg=$p,ug={adjust:function(e){var t=e.graph().rankdir.toLowerCase();"lr"!==t&&"rl"!==t||cg(e)},undo:function(e){var t=e.graph().rankdir.toLowerCase();"bt"!==t&&"rl"!==t||function(e){lg.forEach(e.nodes(),(function(t){dg(e.node(t))})),lg.forEach(e.edges(),(function(t){var r=e.edge(t);lg.forEach(r.points,dg),lg.has(r,"y")&&dg(r)}))}(e);"lr"!==t&&"rl"!==t||(!function(e){lg.forEach(e.nodes(),(function(t){fg(e.node(t))})),lg.forEach(e.edges(),(function(t){var r=e.edge(t);lg.forEach(r.points,fg),lg.has(r,"x")&&fg(r)}))}(e),cg(e))}};function cg(e){lg.forEach(e.nodes(),(function(t){hg(e.node(t))})),lg.forEach(e.edges(),(function(t){hg(e.edge(t))}))}function hg(e){var t=e.width;e.width=e.height,e.height=t}function dg(e){e.y=-e.y}function fg(e){var t=e.x;e.x=e.y,e.y=t}var pg=$p,_g=function(e){var t={},r=pg.filter(e.nodes(),(function(t){return!e.children(t).length})),n=pg.max(pg.map(r,(function(t){return e.node(t).rank}))),i=pg.map(pg.range(n+1),(function(){return[]}));function s(r){if(!pg.has(t,r)){t[r]=!0;var n=e.node(r);i[n.rank].push(r),pg.forEach(e.successors(r),s)}}var a=pg.sortBy(r,(function(t){return e.node(t).rank}));return pg.forEach(a,s),i};var gg=$p,yg=function(e,t){for(var r=0,n=1;n<t.length;++n)r+=mg(e,t[n-1],t[n]);return r};function mg(e,t,r){for(var n=gg.zipObject(r,gg.map(r,(function(e,t){return t}))),i=gg.flatten(gg.map(t,(function(t){return gg.sortBy(gg.map(e.outEdges(t),(function(t){return{pos:n[t.w],weight:e.edge(t).weight}})),"pos")})),!0),s=1;s<r.length;)s<<=1;var a=2*s-1;s-=1;var o=gg.map(new Array(a),(function(){return 0})),l=0;return gg.forEach(i.forEach((function(e){var t=e.pos+s;o[t]+=e.weight;for(var r=0;t>0;)t%2&&(r+=o[t+1]),o[t=t-1>>1]+=e.weight;l+=e.weight*r}))),l}var bg=$p;var vg=$p;var xg=$p,Eg=p_;function wg(e,t,r){for(var n;t.length&&(n=xg.last(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}var Ag=$p,Cg=function(e,t){return bg.map(t,(function(t){var r=e.inEdges(t);if(r.length){var n=bg.reduce(r,(function(t,r){var n=e.edge(r),i=e.node(r.v);return{sum:t.sum+n.weight*i.order,weight:t.weight+n.weight}}),{sum:0,weight:0});return{v:t,barycenter:n.sum/n.weight,weight:n.weight}}return{v:t}}))},Rg=function(e,t){var r={};return vg.forEach(e,(function(e,t){var n=r[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};vg.isUndefined(e.barycenter)||(n.barycenter=e.barycenter,n.weight=e.weight)})),vg.forEach(t.edges(),(function(e){var t=r[e.v],n=r[e.w];vg.isUndefined(t)||vg.isUndefined(n)||(n.indegree++,t.out.push(r[e.w]))})),function(e){var t=[];function r(e){return function(t){t.merged||(vg.isUndefined(t.barycenter)||vg.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&function(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight);t.weight&&(r+=t.barycenter*t.weight,n+=t.weight);e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}function n(t){return function(r){r.in.push(t),0==--r.indegree&&e.push(r)}}for(;e.length;){var i=e.pop();t.push(i),vg.forEach(i.in.reverse(),r(i)),vg.forEach(i.out,n(i))}return vg.map(vg.filter(t,(function(e){return!e.merged})),(function(e){return vg.pick(e,["vs","i","barycenter","weight"])}))}(vg.filter(r,(function(e){return!e.indegree})))},kg=function(e,t){var r=Eg.partition(e,(function(e){return xg.has(e,"barycenter")})),n=r.lhs,i=xg.sortBy(r.rhs,(function(e){return-e.i})),s=[],a=0,o=0,l=0;n.sort((u=!!t,function(e,t){return e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:u?t.i-e.i:e.i-t.i})),l=wg(s,i,l),xg.forEach(n,(function(e){l+=e.vs.length,s.push(e.vs),a+=e.barycenter*e.weight,o+=e.weight,l=wg(s,i,l)}));var u;var c={vs:xg.flatten(s,!0)};o&&(c.barycenter=a/o,c.weight=o);return c},Sg=function e(t,r,n,i){var s=t.children(r),a=t.node(r),o=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};o&&(s=Ag.filter(s,(function(e){return e!==o&&e!==l})));var c=Cg(t,s);Ag.forEach(c,(function(r){if(t.children(r.v).length){var s=e(t,r.v,n,i);u[r.v]=s,Ag.has(s,"barycenter")&&(a=r,o=s,Ag.isUndefined(a.barycenter)?(a.barycenter=o.barycenter,a.weight=o.weight):(a.barycenter=(a.barycenter*a.weight+o.barycenter*o.weight)/(a.weight+o.weight),a.weight+=o.weight))}var a,o}));var h=Rg(c,n);!function(e,t){Ag.forEach(e,(function(e){e.vs=Ag.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(h,u);var d=kg(h,i);if(o&&(d.vs=Ag.flatten([o,d.vs,l],!0),t.predecessors(o).length)){var f=t.node(t.predecessors(o)[0]),p=t.node(t.predecessors(l)[0]);Ag.has(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+f.order+p.order)/(d.weight+2),d.weight+=2}return d};var Tg=$p,Og=Dp.Graph,Ig=function(e,t,r){var n=function(e){var t;for(;e.hasNode(t=Tg.uniqueId("_root")););return t}(e),i=new Og({compound:!0}).setGraph({root:n}).setDefaultNodeLabel((function(t){return e.node(t)}));return Tg.forEach(e.nodes(),(function(s){var a=e.node(s),o=e.parent(s);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(i.setNode(s),i.setParent(s,o||n),Tg.forEach(e[r](s),(function(t){var r=t.v===s?t.w:t.v,n=i.edge(r,s),a=Tg.isUndefined(n)?0:n.weight;i.setEdge(r,s,{weight:e.edge(t).weight+a})})),Tg.has(a,"minRank")&&i.setNode(s,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))})),i};var Ng=$p;var Lg=$p,Vg=_g,Pg=yg,Dg=Sg,Bg=Ig,Mg=function(e,t,r){var n,i={};Ng.forEach(r,(function(r){for(var s,a,o=e.parent(r);o;){if((s=e.parent(o))?(a=i[s],i[s]=o):(a=n,n=o),a&&a!==o)return void t.setEdge(a,o);o=s}}))},Gg=Dp.Graph,jg=p_,zg=function(e){var t=jg.maxRank(e),r=Fg(e,Lg.range(1,t+1),"inEdges"),n=Fg(e,Lg.range(t-1,-1,-1),"outEdges"),i=Vg(e);Hg(e,i);for(var s,a=Number.POSITIVE_INFINITY,o=0,l=0;l<4;++o,++l){Ug(o%2?r:n,o%4>=2),i=jg.buildLayerMatrix(e);var u=Pg(e,i);u<a&&(l=0,s=Lg.cloneDeep(i),a=u)}Hg(e,s)};function Fg(e,t,r){return Lg.map(t,(function(t){return Bg(e,t,r)}))}function Ug(e,t){var r=new Gg;Lg.forEach(e,(function(e){var n=e.graph().root,i=Dg(e,n,r,t);Lg.forEach(i.vs,(function(t,r){e.node(t).order=r})),Mg(e,r,i.vs)}))}function Hg(e,t){Lg.forEach(t,(function(t){Lg.forEach(t,(function(t,r){e.node(t).order=r}))}))}var Wg=$p,Yg=Dp.Graph,Xg=p_,qg=function(e){var t,r=Xg.buildLayerMatrix(e),n=Wg.merge(Kg(e,r),Zg(e,r)),i={};Wg.forEach(["u","d"],(function(s){t="u"===s?r:Wg.values(r).reverse(),Wg.forEach(["l","r"],(function(r){"r"===r&&(t=Wg.map(t,(function(e){return Wg.values(e).reverse()})));var a=("u"===s?e.predecessors:e.successors).bind(e),o=Qg(e,t,n,a),l=ey(e,t,o.root,o.align,"r"===r);"r"===r&&(l=Wg.mapValues(l,(function(e){return-e}))),i[s+r]=l}))}));var s=ty(e,i);return ry(i,s),ny(i,e.graph().align)};function Kg(e,t){var r={};return Wg.reduce(t,(function(t,n){var i=0,s=0,a=t.length,o=Wg.last(n);return Wg.forEach(n,(function(t,l){var u=function(e,t){if(e.node(t).dummy)return Wg.find(e.predecessors(t),(function(t){return e.node(t).dummy}))}(e,t),c=u?e.node(u).order:a;(u||t===o)&&(Wg.forEach(n.slice(s,l+1),(function(t){Wg.forEach(e.predecessors(t),(function(n){var s=e.node(n),a=s.order;!(a<i||c<a)||s.dummy&&e.node(t).dummy||$g(r,n,t)}))})),s=l+1,i=c)})),n})),r}function Zg(e,t){var r={};function n(t,n,i,s,a){var o;Wg.forEach(Wg.range(n,i),(function(n){o=t[n],e.node(o).dummy&&Wg.forEach(e.predecessors(o),(function(t){var n=e.node(t);n.dummy&&(n.order<s||n.order>a)&&$g(r,t,o)}))}))}return Wg.reduce(t,(function(t,r){var i,s=-1,a=0;return Wg.forEach(r,(function(o,l){if("border"===e.node(o).dummy){var u=e.predecessors(o);u.length&&(i=e.node(u[0]).order,n(r,a,l,s,i),a=l,s=i)}n(r,a,r.length,i,t.length)})),r})),r}function $g(e,t,r){if(t>r){var n=t;t=r,r=n}var i=e[t];i||(e[t]=i={}),i[r]=!0}function Jg(e,t,r){if(t>r){var n=t;t=r,r=n}return Wg.has(e[t],r)}function Qg(e,t,r,n){var i={},s={},a={};return Wg.forEach(t,(function(e){Wg.forEach(e,(function(e,t){i[e]=e,s[e]=e,a[e]=t}))})),Wg.forEach(t,(function(e){var t=-1;Wg.forEach(e,(function(e){var o=n(e);if(o.length){o=Wg.sortBy(o,(function(e){return a[e]}));for(var l=(o.length-1)/2,u=Math.floor(l),c=Math.ceil(l);u<=c;++u){var h=o[u];s[e]===e&&t<a[h]&&!Jg(r,e,h)&&(s[h]=e,s[e]=i[e]=i[h],t=a[h])}}}))})),{root:i,align:s}}function ey(e,t,r,n,i){var s={},a=function(e,t,r,n){var i=new Yg,s=e.graph(),a=function(e,t,r){return function(n,i,s){var a,o=n.node(i),l=n.node(s),u=0;if(u+=o.width/2,Wg.has(o,"labelpos"))switch(o.labelpos.toLowerCase()){case"l":a=-o.width/2;break;case"r":a=o.width/2}if(a&&(u+=r?a:-a),a=0,u+=(o.dummy?t:e)/2,u+=(l.dummy?t:e)/2,u+=l.width/2,Wg.has(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":a=l.width/2;break;case"r":a=-l.width/2}return a&&(u+=r?a:-a),a=0,u}}(s.nodesep,s.edgesep,n);return Wg.forEach(t,(function(t){var n;Wg.forEach(t,(function(t){var s=r[t];if(i.setNode(s),n){var o=r[n],l=i.edge(o,s);i.setEdge(o,s,Math.max(a(e,t,n),l||0))}n=t}))})),i}(e,t,r,i),o=i?"borderLeft":"borderRight";function l(e,t){for(var r=a.nodes(),n=r.pop(),i={};n;)i[n]?e(n):(i[n]=!0,r.push(n),r=r.concat(t(n))),n=r.pop()}return l((function(e){s[e]=a.inEdges(e).reduce((function(e,t){return Math.max(e,s[t.v]+a.edge(t))}),0)}),a.predecessors.bind(a)),l((function(t){var r=a.outEdges(t).reduce((function(e,t){return Math.min(e,s[t.w]-a.edge(t))}),Number.POSITIVE_INFINITY),n=e.node(t);r!==Number.POSITIVE_INFINITY&&n.borderType!==o&&(s[t]=Math.max(s[t],r))}),a.successors.bind(a)),Wg.forEach(n,(function(e){s[e]=s[r[e]]})),s}function ty(e,t){return Wg.minBy(Wg.values(t),(function(t){var r=Number.NEGATIVE_INFINITY,n=Number.POSITIVE_INFINITY;return Wg.forIn(t,(function(t,i){var s=function(e,t){return e.node(t).width}(e,i)/2;r=Math.max(t+s,r),n=Math.min(t-s,n)})),r-n}))}function ry(e,t){var r=Wg.values(t),n=Wg.min(r),i=Wg.max(r);Wg.forEach(["u","d"],(function(r){Wg.forEach(["l","r"],(function(s){var a,o=r+s,l=e[o];if(l!==t){var u=Wg.values(l);(a="l"===s?n-Wg.min(u):i-Wg.max(u))&&(e[o]=Wg.mapValues(l,(function(e){return e+a})))}}))}))}function ny(e,t){return Wg.mapValues(e.ul,(function(r,n){if(t)return e[t.toLowerCase()][n];var i=Wg.sortBy(Wg.map(e,n));return(i[1]+i[2])/2}))}var iy=$p,sy=p_,ay=qg;var oy=$p,ly=h_,uy=b_,cy=K_,hy=p_.normalizeRanks,dy=Q_,fy=p_.removeEmptyRanks,py=rg,_y=ag,gy=ug,yy=zg,my=function(e){(function(e){var t=sy.buildLayerMatrix(e),r=e.graph().ranksep,n=0;iy.forEach(t,(function(t){var i=iy.max(iy.map(t,(function(t){return e.node(t).height})));iy.forEach(t,(function(t){e.node(t).y=n+i/2})),n+=i+r}))})(e=sy.asNonCompoundGraph(e)),iy.forEach(ay(e),(function(t,r){e.node(r).x=t}))},by=p_,vy=Dp.Graph,xy=function(e,t){var r=t&&t.debugTiming?by.time:by.notime;r("layout",(function(){var t=r(" buildLayoutGraph",(function(){return function(e){var t=new vy({multigraph:!0,compound:!0}),r=Iy(e.graph());return t.setGraph(oy.merge({},wy,Oy(r,Ey),oy.pick(r,Ay))),oy.forEach(e.nodes(),(function(r){var n=Iy(e.node(r));t.setNode(r,oy.defaults(Oy(n,Cy),Ry)),t.setParent(r,e.parent(r))})),oy.forEach(e.edges(),(function(r){var n=Iy(e.edge(r));t.setEdge(r,oy.merge({},Sy,Oy(n,ky),oy.pick(n,Ty)))})),t}(e)}));r(" runLayout",(function(){!function(e,t){t(" makeSpaceForEdgeLabels",(function(){!function(e){var t=e.graph();t.ranksep/=2,oy.forEach(e.edges(),(function(r){var n=e.edge(r);n.minlen*=2,"c"!==n.labelpos.toLowerCase()&&("TB"===t.rankdir||"BT"===t.rankdir?n.width+=n.labeloffset:n.height+=n.labeloffset)}))}(e)})),t(" removeSelfEdges",(function(){!function(e){oy.forEach(e.edges(),(function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}}))}(e)})),t(" acyclic",(function(){ly.run(e)})),t(" nestingGraph.run",(function(){py.run(e)})),t(" rank",(function(){cy(by.asNonCompoundGraph(e))})),t(" injectEdgeLabelProxies",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);if(r.width&&r.height){var n=e.node(t.v),i={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};by.addDummyNode(e,"edge-proxy",i,"_ep")}}))}(e)})),t(" removeEmptyRanks",(function(){fy(e)})),t(" nestingGraph.cleanup",(function(){py.cleanup(e)})),t(" normalizeRanks",(function(){hy(e)})),t(" assignRankMinMax",(function(){!function(e){var t=0;oy.forEach(e.nodes(),(function(r){var n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=oy.max(t,n.maxRank))})),e.graph().maxRank=t}(e)})),t(" removeEdgeLabelProxies",(function(){!function(e){oy.forEach(e.nodes(),(function(t){var r=e.node(t);"edge-proxy"===r.dummy&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))}))}(e)})),t(" normalize.run",(function(){uy.run(e)})),t(" parentDummyChains",(function(){dy(e)})),t(" addBorderSegments",(function(){_y(e)})),t(" order",(function(){yy(e)})),t(" insertSelfEdges",(function(){!function(e){var t=by.buildLayerMatrix(e);oy.forEach(t,(function(t){var r=0;oy.forEach(t,(function(t,n){var i=e.node(t);i.order=n+r,oy.forEach(i.selfEdges,(function(t){by.addDummyNode(e,"selfedge",{width:t.label.width,height:t.label.height,rank:i.rank,order:n+ ++r,e:t.e,label:t.label},"_se")})),delete i.selfEdges}))}))}(e)})),t(" adjustCoordinateSystem",(function(){gy.adjust(e)})),t(" position",(function(){my(e)})),t(" positionSelfEdges",(function(){!function(e){oy.forEach(e.nodes(),(function(t){var r=e.node(t);if("selfedge"===r.dummy){var n=e.node(r.e.v),i=n.x+n.width/2,s=n.y,a=r.x-i,o=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{x:i+a,y:s},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],r.label.x=r.x,r.label.y=r.y}}))}(e)})),t(" removeBorderNodes",(function(){!function(e){oy.forEach(e.nodes(),(function(t){if(e.children(t).length){var r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),s=e.node(oy.last(r.borderLeft)),a=e.node(oy.last(r.borderRight));r.width=Math.abs(a.x-s.x),r.height=Math.abs(i.y-n.y),r.x=s.x+r.width/2,r.y=n.y+r.height/2}})),oy.forEach(e.nodes(),(function(t){"border"===e.node(t).dummy&&e.removeNode(t)}))}(e)})),t(" normalize.undo",(function(){uy.undo(e)})),t(" fixupEdgeLabelCoords",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);if(oy.has(r,"x"))switch("l"!==r.labelpos&&"r"!==r.labelpos||(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset}}))}(e)})),t(" undoCoordinateSystem",(function(){gy.undo(e)})),t(" translateGraph",(function(){!function(e){var t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,s=e.graph(),a=s.marginx||0,o=s.marginy||0;function l(e){var s=e.x,a=e.y,o=e.width,l=e.height;t=Math.min(t,s-o/2),r=Math.max(r,s+o/2),n=Math.min(n,a-l/2),i=Math.max(i,a+l/2)}oy.forEach(e.nodes(),(function(t){l(e.node(t))})),oy.forEach(e.edges(),(function(t){var r=e.edge(t);oy.has(r,"x")&&l(r)})),t-=a,n-=o,oy.forEach(e.nodes(),(function(r){var i=e.node(r);i.x-=t,i.y-=n})),oy.forEach(e.edges(),(function(r){var i=e.edge(r);oy.forEach(i.points,(function(e){e.x-=t,e.y-=n})),oy.has(i,"x")&&(i.x-=t),oy.has(i,"y")&&(i.y-=n)})),s.width=r-t+a,s.height=i-n+o}(e)})),t(" assignNodeIntersects",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r,n,i=e.edge(t),s=e.node(t.v),a=e.node(t.w);i.points?(r=i.points[0],n=i.points[i.points.length-1]):(i.points=[],r=a,n=s),i.points.unshift(by.intersectRect(s,r)),i.points.push(by.intersectRect(a,n))}))}(e)})),t(" reversePoints",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);r.reversed&&r.points.reverse()}))}(e)})),t(" acyclic.undo",(function(){ly.undo(e)}))}(t,r)})),r(" updateInputGraph",(function(){!function(e,t){oy.forEach(e.nodes(),(function(r){var n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,t.children(r).length&&(n.width=i.width,n.height=i.height))})),oy.forEach(e.edges(),(function(r){var n=e.edge(r),i=t.edge(r);n.points=i.points,oy.has(i,"x")&&(n.x=i.x,n.y=i.y)})),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,t)}))}))};var Ey=["nodesep","edgesep","ranksep","marginx","marginy"],wy={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Ay=["acyclicer","ranker","rankdir","align"],Cy=["width","height"],Ry={width:0,height:0},ky=["minlen","weight","width","height","labeloffset"],Sy={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Ty=["labelpos"];function Oy(e,t){return oy.mapValues(oy.pick(e,t),Number)}function Iy(e){var t={};return oy.forEach(e,(function(e,r){t[r.toLowerCase()]=e})),t}var Ny=$p,Ly=p_,Vy=Dp.Graph;var Py={graphlib:Dp,layout:xy,debug:{debugOrdering:function(e){var t=Ly.buildLayerMatrix(e),r=new Vy({compound:!0,multigraph:!0}).setGraph({});return Ny.forEach(e.nodes(),(function(t){r.setNode(t,{label:t}),r.setParent(t,"layer"+e.node(t).rank)})),Ny.forEach(e.edges(),(function(e){r.setEdge(e.v,e.w,{},e.name)})),Ny.forEach(t,(function(e,t){var n="layer"+t;r.setNode(n,{rank:"same"}),Ny.reduce(e,(function(e,t){return r.setEdge(e,t,{style:"invis"}),t}))})),r}},util:{time:p_.time,notime:p_.notime},version:"0.8.5"};class Dy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let n=ve(e.children[0]);if(!n)continue;var r=new Py.graphlib.Graph;r.setGraph({edgesep:t._edgeSep}),r.setDefaultEdgeLabel((function(){return{}})),r.graph().rankdir=this._getDagreDirection(t.direction);let i=new Map;for(let t of e.children){let e=t.dataScope.getAttributeValue(Ee);i.set(e,e+""),r.setNode(e,{label:t.text?t.text:"",width:t.bounds.width,height:t.bounds.height})}for(let e of n.linkList)r.setEdge(e.source,e.target);Py.layout(r);const s={};let a=Math.min(...r.nodes().map((e=>r.node(e).y))),o=Math.min(...r.nodes().map((e=>r.node(e).x))),l=t.left-o,u=t.top-a;for(const e of r.nodes())s[e]={x:r.node(e).x+l,y:r.node(e).y+u};for(let t of e.children){let e=t.dataScope.getAttributeValue(Ee);ze(t,s[i.get(e)].x-t.x,s[i.get(e)].y-t.y)}}let n=j(e,!0);for(let e of n)p(e)}_getDagreDirection(e){switch(e){case Q.Left2Right:return"LR";case Q.Right2Left:return"RL";case Q.Top2Bottom:return"TB";case Q.Bottom2Top:return"BT"}}}class By extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)continue;let n=me(e.children[0]);if(!n)continue;let i=t.hierarchy(n._data),s=Math.max(...e.children.map((e=>e.bounds.width))),a=Math.max(...e.children.map((e=>e.bounds.height))),o=r.orientation==J.HORIZONTAL?[r.height,r.width]:[r.width,r.height],l=t.tree().nodeSize([s,a]).size(o)(i);this._apply(l,r,e)}p(e)}_apply(e,t,r){let n,i,s=r.children.filter((t=>t.dataScope.getAttributeValue(Ee)==e.data[Ee]))[0];switch(t.orientation){case J.HORIZONTAL:n=e.y+t.left,i=e.x+t.top;break;case J.VERTICAL:n=e.x+t.left,i=t.top+e.y}if(ze(s,n-s.x,i-s.y),e.children&&e.children.length>0)for(let n of e.children)this._apply(n,t,r)}}class My extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=this._inputVars.filter((e=>e.type===q.ORDER))[0].element,n=r.layout,i=n.width?n.width:r.bounds.width,s=n.height?n.height:r.bounds.height,a=void 0===n.top?r.bounds.top:n.top,o=void 0===n.left?r.bounds.left:n.left,l=t.hierarchy(r).sum((e=>e.type===Ot.Rect?e.width*e.height:0));t.treemap().size([i,s])(l),this._apply(l,o,a);let u=j(e,!0);for(let e of u)p(e)}_apply(e,t,r){if(e.data.type==Ot.Collection&&e.children)for(let n of e.children)this._apply(n,t,r);else e.data.type==Ot.Rect&&(e.data.resize(e.x1-e.x0,e.y1-e.y0),ze(e.data,e.x0+t-e.data.left,e.y0+r-e.data.top))}}class Gy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){if(!e.layout)continue;if(0===e.children.length)continue;let t=me(e.children[0]);if(!t)continue;let r={};for(let t of e.children)r[t.dataScope.getAttributeValue(Ee)]=t;e.children[0].type===Ot.Rect?this._layoutRects(t.getRoot(),t,r):this._layoutArcs(t.getRoot(),t,r)}p(e)}_layoutArcs(e,t,r){let n=t.getChildren(e);if(0===n.length)return;let i=r[e[Ee]],s=!i||i.type!=Ot.Arc&&i.type!=Ot.Pie?60:i.startAngle;for(let e=0;e<n.length;e++){let i=n[e],a=r[i[Ee]];if(a.type===Ot.Arc){let e=de(s+a.angle);a.setAngles(s,e),s=e}this._layoutArcs(i,t,r)}}_layoutRects(e,t,r){let n=t.getChildren(e);if(0===n.length)return;let i,s,a=r[e[Ee]];this._direction,Q.Top2Bottom,i=a.left,s=a.bottom;for(let e=0;e<n.length;e++){let a=n[e],o=r[a[Ee]];ze(o,i-o.left,s-o.top),i+=o.width,this._layoutRects(a,t,r)}}}class jy extends X{constructor(e,t){super(e),this._trigger=t}get trigger(){return this._trigger}}class zy extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar.condEncoding,t=e.trigger,r=T(e.target),n={};if(t.type===$e.ELEMENT){let i=t.elements.length>0?t.elements:[void 0];r.forEach((t=>n[t.id]=i.map((r=>e._targetEval(r,t))).some((e=>e))))}t.type===$e.MOUSE&&r.forEach((r=>n[r.id]=e._targetEval(t.mouseEvent,r))),e.evalResult=n}}class Fy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let r=360/e.children.length;for(let[n,i]of e.children.entries())ze(i,t.x+t.radius-i.bounds.x,t.y-i.bounds.y),i._rotate=[n*r,t.x,t.y]}let r=j(e,!0);for(let e of r)p(e)}}class Uy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let n of r){let r=n.layout;if(!r)continue;let i=r._tree?r._tree._data:me(n.children[0])._data,s=t.hierarchy(i);if(r.isRadial()){s=t.cluster().size([ce(r.angleExtent),r.radius])(s),r._d3Root=s;const e=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));for(let t of n.children){let n=t.dataScope.getAttributeValue(Ee);ze(t,r.x-t.bounds.x,r.y-e.get(n)[1]-t.bounds.y),t._rotate=[he(e.get(n)[0]),r.x,r.y]}}else if(r.orientation===J.VERTICAL){!r.width||r.width;let i=r.height?r.height:600;s=t.cluster().nodeSize([e.bounds.width+1,i/(s.height+1)])(s),r._d3Root=s;const a=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));let o=1/0,l=-o;s.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),r._x0=o;for(let e of n.children){let t=e.dataScope.getAttributeValue(Ee);ze(e,a.get(t)[0]-o+r.left-e.bounds.x,a.get(t)[1]+r.top-e.bounds.y)}}else if(r.orientation===J.HORIZONTAL){!r.width||r.width;let i=r.height?r.height:600;s=t.cluster().nodeSize([e.bounds.height,i/(s.height+1)])(s),r._d3Root=s;const a=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));let o=1/0,l=-o;s.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),r._x0=o;for(let e of n.children){let t=e.dataScope.getAttributeValue(Ee);ze(e,a.get(t)[1]+r.left-e.bounds.x,a.get(t)[0]-o+r.top-e.bounds.y)}}}let n=j(e,!0);for(let e of n)p(e)}}class Hy{constructor(){this._variables={},this._operators={},this._edges=[]}toJSON(){const e=this._edges.map((e=>({from:e.fromNode.id,to:e.toNode.id,isDirected:e.isDirected}))),t={};for(const e in this._variables)t[e]=Object.values(this._variables[e]).map((e=>{let t={id:e.id,type:e.type,incoming:e.incomingEdges.map((e=>e.id)),outgoing:e.outgoingEdges.map((e=>e.id)),undirected:e.undirectedEdges.map((e=>e.id))};return"ChannelVar"===e.type?(t.channel=e.channel,t.element=e.element):"BoundsVar"===e.type||"DataScopeVar"===e.type?t.element=e.element:"DomainVar"===e.type?(t.scale=e.scale,t.attrValues=e.attrValues):"FieldVar"===e.type?(t.field=e.field,t.dataset=e.dataset):"PropertyVar"===e.type?(t.property=e.property,t.element=e.element):t.scale=e.scale,t}));const r={};for(const e in this._operators)r[e]=Object.values(this._operators[e]).map((e=>{let t={id:e.id,type:e.type,inputVars:e.inputVars.map((e=>e.id)),outputVar:e.outputVar?e.outputVar.id:null};return e.type===Y.DOMAIN_BUILDER?t.aggregator=e.aggregator:e.type===Y.SCALE_BUILDER&&(t.channel=e.channel),t}));return{edges:e,variables:t,operators:r}}getVariable(e,...t){if(Object.values(q).indexOf(e)<0)throw new Error("Variable Type Not Known");let r=this.findVariable(e,t);if(r)return r;switch(e){case q.CHANNEL:r=new Oe(e,t[0],t[1]),"vertex"!=t[1].type&&"segment"!=t[1].type||this._connectPathElement2Size(t[1],r);break;case q.PROPERTY:r=new Qe(e,t[0],t[1]);break;case q.ATTRIBUTE:r=new zt(e,t[0],t[1]);break;case q.ITEMS:r=new dr(e,t[0],t[1]);break;case q.DOMAIN:r=new Ft(e,t[0]);break;case q.DATASCOPE:r=new Mt(e,t[0]);break;case q.BOUNDS:r=new Bt(e,t[0]);break;case q.ORDER:r=new fr(e,t[0]);break;case q.SCALE:r=new Ke(e,t[0]);break;case q.COND_ENCODING:r=new K(e,t[0]);break;case q.AFFIXATION:r=new _r(e,t[0]);break;case q.ALIGNMENT:r=new Er(e,t[0]);break;case q.TRIGGER:r=new jy(e,t[0])}return e in this._variables||(this._variables[e]={}),this._variables[e][r.id]=r,r}_connectPathElement2Size(e,t){let r=e.parent,n=t.channel,i=this.findVariable(q.CHANNEL,["x"===n?"width":"height",r]);if(i){let e=i.incomingDataflow;e||(e=this.createOneWayDependency(Y.CONDUIT)),this.connect(t,e),this.connect(e,i)}}findIncomingDataflowOperator(e,t){return t.incomingDataflow&&t.incomingDataflow.type===e?t.incomingDataflow:void 0}getIncomingDataflowOperator(e,t){let r=this.findIncomingDataflowOperator(e,t);return r||this.createOneWayDependency(e)}getOutgoingDataflowOperator(e,t){for(let r of t.outgoingEdges)if(r.toNode instanceof W&&r.toNode.type===e)return r.toNode;return this.createOneWayDependency(e)}createOneWayDependency(e,...t){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let r;switch(e){case Y.EVAL_BBOX:r=new qt(e);break;case Y.AFFIXER:r=new pr(e);break;case Y.DOMAIN_BUILDER:r=new Ut(e,t[0]);break;case Y.SCALE_BUILDER:r=new Xt(e,t[0]);break;case Y.ENCODER:r=new Je(e,t[0]);break;case Y.AXIS_PATH_PLACER:r=new nr(e);break;case Y.AXIS_TICKS_PLACER:r=new ir(e);break;case Y.AXIS_LABELS_PLACER:r=new sr(e);break;case Y.AXIS_TITLE_PLACER:r=new vr(e);break;case Y.LINK_PLACER:r=new Ar(e);break;case Y.GRID_LAYOUT:r=new ar(e);break;case Y.STACK_LAYOUT:r=new lr(e);break;case Y.PACK_LAYOUT:r=new br(e);break;case Y.FORCE_LAYOUT:r=new wr(e);break;case Y.DIRECTED_LAYOUT:r=new Dy(e);break;case Y.TIDY_TREE_LAYOUT:r=new By(e);break;case Y.TREEMAP_LAYOUT:r=new My(e);break;case Y.STRATA_LAYOUT:r=new Gy(e);break;case Y.CIRCULAR_LAYOUT:r=new Fy(e);break;case Y.CLUSTER_LAYOUT:r=new Uy(e);break;case Y.GRIDLINES_PLACER:r=new or(e);break;case Y.BIN_TRANSFORMER:r=new cr(e);break;case Y.FILTER_TRANSFORMER:r=new hr(e);break;case Y.KDE_TRANSFORMER:r=new gr(e);break;case Y.TARGET_EVALUATOR:r=new zy(e);break;case Y.CONDUIT:default:r=new ur(e)}return e in this._operators||(this._operators[e]={}),this._operators[e][r.id]=r,r}createMultiWayDependency(e){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let t;return Y.ALIGNER,t=new xr(e),e in this._operators||(this._operators[e]={}),this._operators[e][t.id]=t,t}connect(e,t,r=!0){if(e instanceof X&&t instanceof W){if(!t.inputVars.includes(e)){const n=new jt(e,t,r);this._edges.push(n),e.outgoingEdges.push(n),t.inputVars.push(e)}}else if(e instanceof W&&t instanceof X){if(!e.outputVars.includes(t)){const n=new jt(e,t,r);this._edges.push(n),e.outputVars.push(t),t.incomingEdges.push(n)}}else if(e instanceof X&&t instanceof Gt){if(!t.vars.includes(e)){const r=new jt(e,t,!1);this._edges.push(r),t.vars.push(e),t.edges.push(e),e.undirectedEdges.push(r)}}else{if(!(e instanceof Gt&&t instanceof X))throw new Error("An edge must connect a variable and an operator.");if(!e.vars.includes(t)){const r=new jt(t,e,!1);this._edges.push(r),e.vars.push(t),e.edges.push(t),t.undirectedEdges.push(r)}}}disconnectChannelVarFromBBoxOperator(e){let t=this.getOutgoingDataflowOperator(Y.EVAL_BBOX,e),r=e.outgoingEdges.find((r=>r.fromNode===e&&r.toNode===t));r&&this.disconnect(e,t,r)}disconnect(e,t,r){if(e instanceof X&&t instanceof W){let n=e.outgoingEdges.findIndex((e=>e===r));n>=0&&(this._edges.splice(this._edges.indexOf(r),1),e.outgoingEdges.splice(n,1));let i=t.inputVars.findIndex((t=>t==e));i>=0&&t.inputVars.splice(i,1)}else if(e instanceof W&&t instanceof X){let n=t.incomingEdges.findIndex((e=>e===r));n>=0&&(this._edges.splice(this._edges.indexOf(r),1),t.incomingEdges.splice(n,1));let i=e.outputVars.findIndex((e=>e===t));i>=0&&e.outputVars.splice(i,1)}}deleteVariable(e){for(let t=e.incomingEdges.length-1;t>=0;t--){let r=e.incomingEdges[t],n=r.fromNode;this.disconnect(n,e,r),n.isIsolated()&&delete this._operators[n.type][n.id]}for(let t=e.outgoingEdges.length-1;t>=0;t--){let r=e.outgoingEdges[t],n=r.toNode;this.disconnect(e,n,r),n.isIsolated()&&delete this._operators[n.type][n.id]}delete this._variables[e.type][e.id]}deleteOperator(e){for(let t=e.outputVars.length-1;t>=0;t--){let r=e.outputVars[t],n=r.incomingEdges.find((t=>t.fromNode===e&&t.toNode===r));this.disconnect(e,r,n),r.isIsolated()&&delete this._variables[r.type][r.id]}for(let t=e.inputVars.length-1;t>=0;t--){let r=e.inputVars[t],n=r.outgoingEdges.find((t=>t.fromNode===r&&t.toNode===e));this.disconnect(r,e,n),r.isIsolated()&&delete this._variables[r.type][r.id]}delete this._operators[e.type][e.id]}addInteraction(e){}_dfs(e,t,r){if(e&&0!==e.outgoingEdges.length)for(let n of e.outgoingEdges)n.isDirected&&(t.push(n.toNode),this._dfs(n.toNode.outputVars[0],t.slice(),r));else r.push(t)}processChange(e,t,...r){let n=this.findVariable(e,r);if(n){for(let e of n.outgoingEdges)if(e.isDirected){let r=e.toNode;r.run();let n=r.outputVars;if(n.length>0){let e=n[0];switch(e.type){case q.ITEMS:this.processChange(e.type,t,e.predicate,e.dataset);break;case q.ATTRIBUTE:this.processChange(e.type,t,e.attribute,e.dataset);break;case q.BOUNDS:case q.ORDER:this.processChange(e.type,t,e.element);break;case q.CHANNEL:this.processChange(e.type,t,e.channel,e.element);break;case q.PROPERTY:this.processChange(e.type,t,e.property,e.element);break;case q.SCALE:case q.DOMAIN:this.processChange(e.type,t,e.encodings[0]);break;case q.COND_ENCODING:this.processChange(e.type,t,e.condEncoding)}}}for(let e of n.undirectedEdges)t.push(e.operator)}else console.warn("Unable to find variables matching the described change: ",e,r)}findVariable(e,t){if(!(e in this._variables))return null;let r=Object.values(this._variables[e]);switch(e){case q.CHANNEL:return r.find((e=>e.channel==t[0]&&De(e.element)==De(t[1])));case q.PROPERTY:return r.find((e=>e.property==t[0]&&e.element==t[1]));case q.COND_ENCODING:return r.find((e=>e.condEncoding==t[0]));case q.AFFIXATION:return r.find((e=>e.affixation==t[0]));case q.ATTRIBUTE:return r.find((e=>e.attribute==t[0]&&e.dataset==t[1]));case q.ITEMS:return r.find((e=>e.dataset==t[1]));case q.DOMAIN:case q.SCALE:return r.find((e=>e.encodings.includes(t[0])));case q.TRIGGER:return r.find((e=>e.trigger===t[0]));case q.DATASCOPE:default:return t[0].classId?r.find((e=>De(e.element)==De(t[0]))):r.find((e=>e.element.id==t[0].id))}}findVariablesByElement(e){let t={};for(let r in this._variables){let n=Object.values(this._variables[r]).filter((t=>t.element&&De(t.element)==De(e)));n.length>0&&(t[r]=n)}return t}}function Wy(e){return!(!E(e)&&e.type!=Ot.Glyph||e.dataScope)||e.type===Ot.Collection&&e.firstChild.dataScope.numTuples>1}function Yy(e,t,r,n){let i=n.getAttributeType(r);if(i!=Ae.String&&i!=Ae.Date&&i!=Ae.Integer)throw new Error("Repeat only works on a string or date attribute: "+r+" is "+i);if(!function(e){if(Array.isArray(e)){if(1===e.length)return Wy(e[0]);for(let t of e)if(!E(t)||t.dataScope)return!1;return!0}return Wy(e)}(t))throw new Error("The "+t.type+" is not repeatable");return function(e,t,r,n){let i=n.getAttributeSummary(r).unique.map((e=>t.dataScope?t.dataScope.cross(r,e):new pe(n).cross(r,e)));i=i.filter((e=>!e.isEmpty()));let s=Rt(e);s.dataScope=t.dataScope?t.dataScope.clone():new pe(n),s.addChild(t);for(let e=1;e<i.length;e++){let e=St(t);s.addChild(e)}return s.children.forEach(((e,t)=>e.dataScope=i[t])),s}(e,t,r,n)}class Xy{constructor(e,t,r,n,i){this._elem=e,this._channel=t,this._attribute=r,this._aggregator=n,this._includeZero=i.includeZero,this._flipScale=i.flipScale,this._mapping=i.mapping,this._preferredRangeExtent=i.rangeExtent,this._preferredDomain=void 0,this._scaleType=i.scaleType,this._colorScheme=i.scheme,this._forLegend=i.forLegend,this._scales=[],this._elemGroups=[],this._elem2scale={},this._refElements=[],["width","height","radius","angle","thickness","radialDistance","strokeWidth","area"].indexOf(this._channel)>=0&&(this._includeZero=!0),this.initialize()}initialize(){this._scales=[];let e=T(this._elem);if(this._elemGroups=[],"x"===this._channel||"y"===this._channel){let t=this._elem,r=B(t);if(r.layout&&r.layout.type==U.GRID){let e="x"===this._channel?r.layout.getElementsByCol(!0,t):r.layout.getElementsByRow(!0,t);for(let t of e)this._createScaleForElems(t)}else if("vertex"===this._elem.type&&(Ge(this._elem.parent)||Me(this._elem.parent))){let e=T(this._elem.parent).map((e=>O(this._elem,[e])));for(let t of e)this._createScaleForElems(t)}else this._createScaleForElems(e)}else if("angle"===this._channel){let t=e.reduce(((e,t)=>{const r=t.parent.id;return e[r]||(e[r]=[]),e[r].push(t),e}),{}),r=Object.values(t);for(let e of r)this._createScaleForElems(e)}else this._createScaleForElems(e)}_createScaleForElems(e){this._elemGroups.push(e);var t=function(e){if(e.scaleType)return new Ht(e.scaleType);if("text"===e.channel)return new Ht("ordinal");switch(Vt(e.element).getAttributeType(e.attribute)){case Ae.Boolean:break;case Ae.Date:return new Ht("time");case Ae.String:if("count"==e.aggregator)return new Ht("linear");if(e.channel.indexOf("Color")>=0){let t={};return t.scheme=e.colorScheme?e.colorScheme:"schemeCategory10",new Ht("ordinalColor",t)}return new Ht("point");default:return["strokeColor","fillColor","fillGradient"].indexOf(e.channel)>=0?e.mapping?new Ht("linear"):new Ht("sequentialColor",{scheme:e.colorScheme}):new Ht("linear")}}(this);this._scales.push(t);for(let r of e)this._elem2scale[r.id]=t}getScale(e){return this._elem2scale[e.id]}getElements(e){let t=this._scales.indexOf(e);return this._elemGroups[t]}get element(){return this._elem}get channel(){return this._channel}get attribute(){return this._attribute}get dataTable(){return Vt(this._elem)}get aggregator(){return this._aggregator}hasMultipleScales(){return this._scales.length>0}get scales(){return this._scales}getRangeStart(e){let t=this.getScale(e);return Math.min(...t.range)}getRangeExtent(e){return this.getScale(e).rangeExtent}get scaleType(){return this._scaleType}set scaleType(e){this._scaleType=e}set domain(e){this._preferredDomain=e;for(let t of this._scales)t._scale.domain(e);for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.DOMAIN,this)}set rangeExtent(e){for(let t of this._scales)t.rangeExtent=e;for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.PROPERTY,et.RANGE_EXTENT,this)}set includeZero(e){this._includeZero=e;for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.PROPERTY,et.INCLUDE_ZERO,this)}get includeZero(){return this._includeZero}set flipScale(e){this._flipScale=e,this._elem.scene.onChange(q.PROPERTY,et.FLIP_SCALE,this)}get flipScale(){return this._flipScale}set mapping(e){this._mapping=e}get mapping(){return this._mapping}set colorScheme(e){this._colorScheme=e}get colorScheme(){return this._colorScheme}addRefElement(e){this._refElements.indexOf(e)<0&&this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}class qy{constructor(e,t,r,n){this._trigger=e,this._target=t.target,this._targetEval=r,this._efxFn=n,this._evalResult={}}get trigger(){return this._trigger}get target(){return this._target}get channels(){return Object.keys(this._rules)}get evalResult(){return this._evalResult}set evalResult(e){this._evalResult=e}}class Ky extends ie{constructor(e,t,r,n,i){super(i),this._type=Ot.Gridlines,this._id=this._type+Nt(),this._attribute=t,this._channel=e,this._scale=r,this._elems=n,"strokeColor"in i||(this.styles.strokeColor="#ddd"),"opacity"in i||(this.styles.opacity=.5),"values"in i?this._values=i.values:this._scale?this._values=Qt(this._scale,this._channel,this._elems):this._values=this._elems.map((e=>e.dataScope.getAttributeValue(this._attribute))),this._lines=[]}get type(){return this._type}get id(){return this._id}getSVGPathData(){let e="";if("radialDistance"===this._channel)for(let t of this._lines)e+="M "+t.x+" "+t.y+" m -"+t.r+" 0 a "+t.r+" "+t.r+" 0 1 0 "+2*t.r+" 0 a "+t.r+" "+t.r+" 0 1 0 -"+2*t.r+" 0 ";else for(let t of this._lines)e+=["M",t.x1,t.y1].join(" ")+[" L",t.x2,t.y2].join(" ")+" ";return e}_updateBounds(){if("radialDistance"===this._channel){let e=this._lines.map((e=>new c(e.x-e.r,e.y-e.y,2*e.r,2*e.r)));this._bounds=h(e)}else{let e=this._lines.map((e=>e.x1)).concat(this._lines.map((e=>e.x2))),t=this._lines.map((e=>e.y1)).concat(this._lines.map((e=>e.y2))),r=Math.min(...e),n=Math.max(...e),i=Math.min(...t),s=Math.max(...t);this._bounds=new c(r,i,n-r,s-i)}}get elements(){return this._elems}get values(){return this._values}get channel(){return this._channel}get attribute(){return this._attribute}get scale(){return this._scale}get lines(){return this._lines}set lines(e){this._lines=e}}class Zy extends F{constructor(e){super(),this.type=U.STACK,this._orientation=e.orientation,this._direction=e.direction,this._left=e.left,this._top=e.top,this._horzCellAlignment="horzCellAlignment"in e&&e.horzCellAlignment?e.horzCellAlignment:_.LEFT,this._vertCellAlignment="vertCellAlignment"in e&&e.vertCellAlignment?e.vertCellAlignment:_.BOTTOM,this._gap="gap"in e?e.gap:0}clone(){let e=new Zy({orientation:this._orientation,direction:this._direction,left:this._left,top:this._top});return e._horzCellAlignment=this._horzCellAlignment,e._vertCellAlignment=this._vertCellAlignment,e}get horzCellAlignment(){return this._horzCellAlignment}get vertCellAlignment(){return this._vertCellAlignment}get orientation(){return this._orientation}set horzCellAlignment(e){this._horzCellAlignment=e}set vertCellAlignment(e){this._vertCellAlignment=e}set orientation(e){this._orientation=e}}function $y(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=Ae.String&&s!=Ae.Date&&s!=Ae.Integer)throw new Error("Divide only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Ot.Line,Ot.Circle,Ot.Rect,Ot.Area,Ot.Ring,Ot.Pie,Ot.Path].indexOf(e.type)<0)return!1;if(e.type===Ot.Path&&(e.closed||!e.firstVertex.dataScope))return!1;if(e.dataScope){let t=T(e);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 Ot.Line:case Ot.Path:return;case Ot.Circle:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR&&l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];let d=360/u.length,f=90;for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:0,outerRadius:r.radius,x:r.x,y:r.y,startAngle:de(f-d*(e+1)),endAngle:de(f-d*e),strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.ANGULAR,direction:ee.CLOCKWISE}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Rect:return function(e,t,r,n,i){let s,a=T(t),o=r||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);let l=i.getUniqueAttributeValues(n).map((e=>new pe(i).cross(n,e))),u={},c=0;for(let e of a){let t=l;e.dataScope&&(t=l.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>c&&(c=t.length),u[e.id]=t}let h,d=Ct({type:"rect",left:t.bounds.left,top:t.bounds.top,width:t.bounds.width,height:t.bounds.height,strokeColor:t.strokeColor,fillColor:t.fillColor,strokeWidth:t.strokeWidth,opacity:t.opacity});d._classId=d.id;for(let r of a){let n=Rt(e);null==h&&(h=n.id),n._classId=h,n.dataScope=r.dataScope?r.dataScope:new pe(i);let a=r.parent;a.removeChild(r),delete e._itemMap[r.id];let l=u[r.id],c=r.bounds,f=c.left,p=c.top,_=o==J.HORIZONTAL?c.width/l.length:c.width,g=o==J.HORIZONTAL?c.height:c.height/l.length;for(let e=0;e<l.length;e++){let t=St(d);t.dataScope=l[e],t.resize(_,g),t._updateBounds(),t._refBounds=t.bounds.clone(),n.addChild(t)}a.addChild(n),n._layout=new Zy({orientation:o,left:f,top:p}),n._layout.group=n,r==t&&(s=n)}return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Area:return function(e,t,r,n,i){let s,a=T(t),o=r||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);let l,u=i.getUniqueAttributeValues(n).map((e=>new pe(i).cross(n,e))),c={},h=0;for(let e of a){let t=u;e.dataScope&&(t=u.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>h&&(h=t.length),c[e.id]=t}let d=Object.assign({},t.styles);d.vertices=t.vertices.map((e=>[e.x,e.y])),d.type="area",d.orientation=t.orientation,d.baseline=t.baseline;let f=Ct(d);if(f._classId=f.id,t.vertices)for(let e=0;e<t.vertices.length;e++)t.vertices[e].dataScope&&(f.vertices[e]._dataScope=t.vertices[e].dataScope.clone());for(let r of a){let n=Rt(e);null==l&&(l=n.id),n._classId=l,n.dataScope=r.dataScope?r.dataScope:new pe(i);let a=r.parent;a.removeChild(r),delete e._itemMap[r.id];let u=c[r.id],h=r.bounds,d=h.left,p=h.top,_=o==J.HORIZONTAL?h.width/u.length:h.width,g=o==J.HORIZONTAL?h.height:h.height/u.length;for(let e=0;e<u.length;e++){let t=St(f);t.dataScope=u[e],console.log(t.dataScope),t.resize(_,g),t._updateBounds(),t._refBounds=t.bounds.clone(),n.addChild(t);for(let e of t.vertices)e.dataScope?e.dataScope=t.dataScope.merge(e.dataScope):e.dataScope=t.dataScope}a.addChild(n),n._layout=new Zy({orientation:o,left:d,top:p}),n._layout.group=n,r==t&&(s=n)}return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Ring:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR&&l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];let d=360/u.length,f=90;for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:r.innerRadius,outerRadius:r.outerRadius,x:r.x,y:r.y,startAngle:de(f-d*(e+1)),endAngle:de(f-d*e),strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.ANGULAR,direction:ee.CLOCKWISE}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Pie:case Ot.Arc:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR||l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:r.innerRadius+e*(r.outerRadius-r.innerRadius)/u.length,outerRadius:r.innerRadius+(e+1)*(r.outerRadius-r.innerRadius)/u.length,x:r.x,y:r.y,startAngle:r.startAngle,endAngle:r.endAngle,strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.RADIAL}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i)}}function Jy(e,t,r,n){let i=n.getAttributeType(r);if(i!=Ae.String&&i!=Ae.Date&&i!=Ae.Integer)throw new Error("Repopulate only works on a string or date attribute: "+r+" is "+i);let s=T(t);for(let e of s){let t=n.getAttributeSummary(r).unique.map((t=>e.dataScope?e.dataScope.cross(r,t):new pe(n).cross(r,t)));t=t.filter((e=>!e.isEmpty()));let i=e.children.length-t.length,s=t.length-e.children.length;for(let t=0;t<i;t++)e.removeChildAt(e.children.length-1);let a=e._children.length;for(let t=0;t<s;t++){let r=St(e._children[t%a]);e.addChild(r)}e.children.forEach(((e,r)=>e.dataScope=t[r]))}}class Qy{constructor(e,t){this._elem=e,this._base=t,this._id=em(e,t),this._channels={},this._attribute=void 0}get id(){return this._id}get element(){return this._elem}get base(){return this._base}get channels(){return Object.keys(this._channels)}addChannel(e,t){let r={};r.elemAnchor="elementAnchor"in t?t.elementAnchor:"x"==e||"angle"==e?_.CENTER:_.MIDDLE,r.baseAnchor="baseAnchor"in t?t.baseAnchor:"x"==e||"angle"==e?_.CENTER:_.MIDDLE,r.offset="offset"in t?t.offset:0,"attribute"in t&&(this._attribute=t.attribute),this._channels[e]=r}hasChannel(e){return e in this._channels}getElementAnchor(e){return this._channels[e].elemAnchor}getBaseAnchor(e){return this._channels[e].baseAnchor}getOffset(e){return this._channels[e].offset}get attribute(){return this._attribute?this._attribute:Pt}}function em(e,t){return(e.classId?e.classId:e.id)+":"+(t.classId?t.classId:t.id)}function tm(e,t,r,n){e.dataScope&&e.dataScope.dataTable.hasAttribute(t)?function(e,t,r,n){if(!e.dataScope.dataTable.hasAttribute(t))return void console.warn("Cannot order collection children by an non-existent attribute",t);let i;if(t===Pt)i=(e,r)=>parseInt(e.dataScope.getAttributeValue(t).substring(1))-parseInt(r.dataScope.getAttributeValue(t).substring(1));else{switch(e.children[0].dataScope.getAttributeType(t)){case Ae.Date:break;case Ae.Number:case Ae.Integer:i=(e,r)=>e.dataScope.aggregateNumericalAttribute(t)-r.dataScope.aggregateNumericalAttribute(t);break;case Ae.String:i=n?(e,r)=>n.indexOf(e.dataScope.getAttributeValue(t))-n.indexOf(r.dataScope.getAttributeValue(t)):(e,r)=>e.dataScope.getAttributeValue(t)<r.dataScope.getAttributeValue(t)?-1:1}}e.children.sort(i),r&&e.children.reverse()}(e,t,r,n):function(e,t,r){let n;switch(t){case"x":case"y":case"width":case"height":n=(e,r)=>e.bounds[t]-r.bounds[t];break;default:n=(e,r)=>e[t]-r[t]}e._children.sort(n),r&&e.children.reverse()}(e,t,r),e._sortBy={property:t,descending:r,vals:n}}function rm(e,t,r,n){e.vertices[0].dataScope&&e.vertices[0].dataScope.dataTable.hasAttribute(t)?function(e,t,r,n){let i;if(t===Pt)i=(e,r)=>parseInt(e.dataScope.getAttributeValue(t).substring(1))-parseInt(r.dataScope.getAttributeValue(t).substring(1));else{switch(e.vertices[0].dataScope.getAttributeType(t)){case Ae.Date:break;case Ae.Number:case Ae.Integer:i=(e,r)=>e.dataScope.aggregateNumericalAttribute(t)-r.dataScope.aggregateNumericalAttribute(t);break;case Ae.String:i=n?(e,r)=>n.indexOf(e.dataScope.getAttributeValue(t))-n.indexOf(r.dataScope.getAttributeValue(t)):(e,r)=>e.dataScope.getAttributeValue(t)<r.dataScope.getAttributeValue(t)?-1:1}}e.vertices.sort(i),r&&e.vertices.reverse()}(e,t,r,n):function(e,t,r){let n=(e,r)=>e[t]-r[t];e.vertices.sort(n),r&&e.vertices.reverse()}(e,t,r),e._sortBy={property:t,descending:r,vals:n}}class nm extends F{constructor(e){super(),this.type=U.GRID,this._numCols=e.numCols,this._numRows=e.numRows,this._start="start"in e?e.start:$.TopLeft,this._direction="direction"in e?e.direction:Z.RowFirst,this._rowGap="rowGap"in e&&void 0!==e.rowGap?e.rowGap:5,this._colGap="colGap"in e&&void 0!==e.colGap?e.colGap:5,this._cellHorzAlignment="horzCellAlignment"in e&&H("h",e.horzCellAlignment)?e.horzCellAlignment:_.LEFT,this._cellVertAlignment="vertCellAlignment"in e&&H("v",e.vertCellAlignment)?e.vertCellAlignment:_.BOTTOM,this._numCols||this._numRows||(this._numRows=1),this._left=void 0,this._top=void 0,this._cellBounds=void 0,this._grid=void 0}get cellBounds(){return this._cellBounds}get numCols(){return this._numCols?this._numCols:this._numRows?Math.ceil(this.group.children.length/this._numRows):0}get numRows(){return this._numRows?this._numRows:this._numCols?Math.ceil(this.group.children.length/this._numCols):0}clone(){let e=new nm({numCols:this._numCols,numRows:this._numRows,start:this._start,direction:this._direction,colGap:this._colGap,rowGap:this._rowGap,horzCellAlignment:this._cellHorzAlignment,vertCellAlignment:this._cellVertAlignment});return e._left=this._left,e._top=this._top,this._cellBounds&&(e._cellBounds=this._cellBounds.map((e=>e.clone()))),e}getElementsByRow(e,t){let r=[],n=this.group.children;for(let t=0;t<this.numRows;t++){let i=this._grid[t].filter((e=>null!=e)).map((e=>n[e]));if(e){let e=[];for(let t of i)e=e.concat(j(t));r.push(e)}else r.push(i)}return t&&(r=this._filterElementsByExample(r,t)),r}getElementsByCol(e,t){let r=[],n=this.group.children,i=this._grid;for(let t=0;t<this.numCols;t++){let s=i.map((e=>e[t])).filter((e=>null!=e)).map((e=>n[e]));if(e){let e=[];for(let t of s)e=e.concat(j(t));r.push(e)}else r.push(s)}return t&&(r=this._filterElementsByExample(r,t)),r}getElementsByCell(e,t){let r=[],n=this.group.children;for(let t=0;t<n.length;t++)if(e){let e=j(n[t]);r.push(e)}else r.push(n[t]);return t&&(r=this._filterElementsByExample(r,t)),r}_filterElementsByExample(e,t){let r;return"vertex"===t.type?(r=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),r=r.map((e=>O(t,e)))):"segment"===t.type?(r=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),r=r.map((e=>I(t,e)))):r=e.map((e=>e.filter((e=>e.classId===t.classId)))),r}getIndex(e){let t=e;for(;t&&t.parent!==this.group;)t=t.parent;return this.group.children.indexOf(t)}getRowCol(e){let t,r;switch(this._direction){case Z.RowFirst:t=Math.floor(e/this.numCols),r=e%this.numCols;break;case Z.ColumnFirst:t=e%this.numRows,r=Math.floor(e/this.numRows);break;default:throw new Error("Invalid fill direction. Use 'row_first' or 'column_first'.")}return this._start.toLowerCase().includes("bottom")&&(t=this.numRows-1-t),this._start.toLowerCase().includes("right")&&(r=this.numCols-1-r),{row:t,col:r}}}class im extends _t{constructor(e,t){super(),this._type=Ot.Axis,this._id=this._type+Nt(),this._enc=e,this._textColor="textColor"in t?t.textColor:"#555",this._strokeColor="strokeColor"in t?t.strokeColor:"#555",this._fontSize="fontSize"in t?t.fontSize:"12px",this._x="x"in t?t.x:100,this._y="y"in t?t.y:100,this._showTitle=!("showTitle"in t)||t.showTitle,this._orientation="orientation"in t?t.orientation:J.VERTICAL,this._numberFormat=t.numberFormat?t.numberFormat:""}get attribute(){return this._enc.attribute}get channel(){return this._enc.channel}get attributeType(){return Vt(this._enc.element).getFieldType(this.attribute)}get orientation(){return this._orientation}get textColor(){return this._textColor}}class sm extends im{constructor(e,t){super(e,t),"numCols"in t||"numRows"in t?(this._numCols=t.numCols,this._numRows=t.numRows):this._orientation===J.VERTICAL?this._numCols=1:this._numRows=1,this._initialize()}_initialize(){let e=this._enc.element.scene,t=this._enc.attribute,r=this._enc.scales[0],n=new Lt(r.domain.map((e=>({category:e,value:r.map(e)})))),i=n.getUniqueAttributeValues("category").sort(((e,t)=>t.length-e.length))[0],s=this._enc.element,a=s instanceof ie&&s.closed?s.strokeWidth:0;if(this._orientation===J.VERTICAL){let r=0;this._showTitle&&(this.addChild(new Et({fillColor:this._textColor,fontSize:this._fontSize,text:t,x:this._x,y:this._y,anchor:["left","top"]})),r=parseFloat(this._fontSize)+5);let o=e.mark("rect",{top:this._y+2+r,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:s.strokeColor,opacity:s.opacity}),l=e.mark("text",{text:i,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+20,y:this._y+r+12+a,anchor:["left","bottom"]}),u=e.glyph(o,l),c=e.repeat(u,n);e.encode(l,{channel:"text",attribute:"category",forLegend:!0}),e.encode(o,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),c.layout=new nm({numCols:this._numCols,numRows:this._numRows}),this.addChild(c)}else{let t=e.mark("rect",{top:this._y,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:s.strokeColor,opacity:s.opacity}),r=e.mark("text",{text:i,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+15,y:this._y,anchor:["left","top"]}),o=e.glyph(t,r),l=e.repeat(o,n);e.encode(r,{channel:"text",attribute:"category",forLegend:!0}),e.encode(t,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),l.layout=new nm({numCols:this._numCols,numRows:this._numRows,colGap:15}),this.addChild(l)}}}class am extends im{constructor(e,t){super(e,t),this._initialize()}_initialize(){let e,r,n,i=this._enc.element.scene,s=this._enc.attribute;if(this._orientation==J.VERTICAL?(e=15,r=300):(e=300,r=15),this._showTitle){let t=i.mark("text",{fillColor:this._textColor,text:s,x:this._x+e/2,y:this._y,anchor:["center","middle"]});this.addChild(t),n=20}else n=0;let a,o=i.mark("rect",{top:this._y+n,left:this._x,width:e,height:r,strokeWidth:0,opacity:this._enc.element.opacity}),l=Object.values(this._enc.attrValues),u=[Math.min(...l),Math.max(...l)],c=this._enc.mapping,h=[],d=[],f=t.format(this._numberFormat);if(c){let t=Object.keys(c).map((e=>parseFloat(e))).sort(((e,t)=>e-t));this._orientation==J.VERTICAL?(a=new v({x1:0,y1:100,x2:0,y2:0}),t.forEach((t=>{let s=(t-u[0])/(u[1]-u[0]);a.addStop(100*s,c[t],1);let o=i.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+r-s*r+n,y2:this._y+r-s*r+n,strokeColor:this._strokeColor});d.push(o);let l=i.mark("text",{fillColor:this._textColor,text:this._numberFormat?f(t):t.toFixed(0),x:this._x+e+5+5,y:this._y+r-s*r+n,anchor:["left","middle"]});h.push(l)}))):(a=new v({x1:0,y1:0,x2:100,y2:0}),t.forEach((t=>{let s=(t-u[0])/(u[1]-u[0]);a.addStop(100*s,c[t],1);let o=i.mark("line",{x1:this._x+s*e,x2:this._x+s*e,y1:this._y+20-5+n,y2:this._y+r+5+n,strokeColor:this._strokeColor});d.push(o);let l=i.mark("text",{fillColor:this._textColor,text:this._numberFormat?f(t):t.toFixed(0),x:this._x+s*e,y:this._y+r+5+n,anchor:["center","top"]});h.push(l)})))}else{let t=this._enc.scales[0].domain,o=Vt(this._enc.element),l=o.getAttributeType(s),u=[],c=l===Ae.Date?o.getUniqueFieldValues(s):[...new Set(Object.values(this._enc.attrValues))];if(c.length<=10)u=c,u.sort(((e,t)=>e-t));else if(l===Ae.Date){c.sort(((e,t)=>e-t));for(let e=0;e<c.length;e+=Math.ceil(c.length/10))u.push(c[e])}else{let e=(t[1]-t[0])/9;for(let r=0;r<10;r++)u.push(t[0]+r*e)}let p=0,_=(u[u.length-1]-u[0])/u.length;for(;_<1;)_*=10,p++;u=u.map((e=>e.toFixed(p))),this._orientation==J.VERTICAL?(a=new v({x1:0,y1:100,x2:0,y2:0}),u.forEach((u=>{let c=(u-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scales[0].map(u),1);let p=i.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+r-c*r+n,y2:this._y+r-c*r+n,strokeColor:this._strokeColor});d.push(p);let _=i.mark("text",{fillColor:this._textColor,text:l===Ae.Date?o.getRawValue(s,u):this._numberFormat?f(u):u,x:this._x+e+5+5,y:this._y+r-c*r+n,anchor:["left","middle"]});h.push(_)}))):(a=new v({x1:0,y1:0,x2:100,y2:0}),u.forEach((u=>{let c=(u-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scale.map(u),1);let f=i.mark("line",{x1:this._x+c*e,x2:this._x+c*e,y1:this._y+r+n,y2:this._y+r+5+n,strokeColor:this._strokeColor});d.push(f);let p=i.mark("text",{fillColor:this._textColor,text:l===Ae.Date?o.getRawValue(s,u):u,x:this._x+c*e,y:this._y+r+5+n,anchor:["center","top"]});h.push(p)})))}o.styles.fillColor=a,this.addChild(o);for(let e of h)this.addChild(e);for(let e of d)this.addChild(e)}}class om extends _t{constructor(e){super(),this._type=Ot.Composite,this._id=e&&e.id?e.id:this._type+Nt()}addChild(e){let t=e.parent;super.addChild(e);let r=D(e)._depGraph;t&&at(t,e,r),ot(this,e,r)}}class lm{constructor(e,t,r){this._elems=e,this._channel=t,this._anchor=r}get elements(){return this._elems}get channel(){return this._channel}get anchor(){return this._anchor}}class um extends F{constructor(e){super(),this.type=U.STRATA,this._direction=e.direction,this._gap="gap"in e?e.gap:0}clone(){return new um({direction:this._direction,gap:this._gap})}}function cm(e,t,r,n,i,s){switch(t.type){case Ot.Circle:case Ot.Ring:return function(e,t,r,n,i,s){let a,o=r||te.OUTWARD,l=i||50;if(o!==te.INWARD&&o!==te.OUTWARD)throw"Unknown direction to stratify";let u,c=T(t,e),h=Array.isArray(s)?s:[s];if(n){let r=Rt(e);r.dataScope=void 0,null==u&&(u=r.id),r._classId=u;let n=c.map((e=>h[0].getNode(e.dataScope.getAttributeValue(Ee))));hm(c,n,h[0],r,t.classId?t.classId:t.id,400,350,o,l),a=r}else c.forEach(((r,n)=>{let i=Rt(e);i.dataScope=void 0,null==u&&(u=i.id),i._classId=u;let s=r.parent;dm(r,t.id,o,l,h[n],h[n].getRoot(),i,e,!0),i._layout=new um({direction:o}),i._layout.group=i,s.addChild(i),r===t&&(a=i)}));return a}(e,t,r,n,i,s);case Ot.Rect:return function(e,t,r,n,i,s){let a,o,l=r||Q.Top2Bottom,u=i||50;if(!Object.values(Q).includes(l))throw"Unknown direction to stratify";return T(t).forEach((r=>{let n=Rt(e);n.dataScope=void 0,null==o&&(o=n.id),n._classId=o;let i=r.parent;fm(r,t.id,l,u,s,s.getRoot(),n,e,!0),n._layout=new um({direction:l}),n._layout.group=n,i.addChild(n),r===t&&(a=n)})),a}(e,t,r,0,i,s)}}function hm(e,t,r,n,i,s,a,o,l){let u=t.map((e=>r.getParent(e))).filter(((e,t,r)=>r.findIndex((t=>t[Ee]===e[Ee]))===t));if(u=u.filter((e=>e!==r.getRoot())),0===u.length)return;let c=[];for(let t of u){let u,h,d,f=e.filter((e=>r.getParent(r.getNode(e.dataScope.getAttributeValue(Ee)))===t));if(f[0].type===Ot.Circle){let e=f.map((e=>C(s,a,e.bounds.x,e.bounds.y)-e.radius)),t=f.map((e=>C(s,a,e.bounds.x,e.bounds.y)+e.radius));d=o===te.OUTWARD?Math.max(...t):Math.min(...e)-l;let r=f.map((e=>fe(e.bounds.x,e.bounds.y,s,a))),n=f.map((e=>fe(s+C(s,a,e.bounds.x,e.bounds.y),a-e.radius,s,a))),i=r.map(((e,t)=>e-n[t])),c=r.map(((e,t)=>e+n[t])),p=i.concat(c);u=Math.min(...p),h=Math.max(...p)}else f[0].type===Ot.Arc&&(u=360,h=-360,f.forEach((e=>{let t=e.startAngle,r=e.endAngle;r<t&&(r+=360),u=Math.min(u,t),h=Math.max(h,r)})),u=de(u),h=de(h),d=o===te.OUTWARD?Math.max(...f.map((e=>e.outerRadius))):Math.min(...f.map((e=>e.innerRadius)))-l);let p=Ct({type:"arc",innerRadius:d,outerRadius:d+l,x:s,y:a,startAngle:de(u),endAngle:de(h),strokeColor:e[0].strokeColor,fillColor:e[0].fillColor,strokeWidth:e[0].strokeWidth,opacity:e[0].opacity});p._updateBounds(),p.dataScope=r.getNodeDataScope(t),p._classId=i,n.addChild(p),c.push(p)}hm(c,u,r,n,i,s,a,o,l)}function dm(e,t,r,n,i,s,a,o,l){l&&(e.dataScope=i.getNodeDataScope(s),e._classId=t);let u=i.getChildren(s);if(0===u.length)return;let c=e.type===Ot.Circle||e.type===Ot.Ring?60:e.startAngle,h=(e.type===Ot.Circle||e.type===Ot.Ring?360:e.angle)/u.length;for(let s=0;s<u.length;s++){let o,l;l=r===te.OUTWARD?e.type===Ot.Circle?e.radius:e.outerRadius:e.type===Ot.Circle?e.radius-n:e.innerRadius-n,o=Ct(360===h?{type:"ring",innerRadius:l,outerRadius:l+n,x:e.x,y:e.y,strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}:{type:"arc",innerRadius:l,outerRadius:l+n,x:e.x,y:e.y,startAngle:de(c+h*s),endAngle:de(c+h*(s+1)),strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}),o._updateBounds(),o.dataScope=i.getNodeDataScope(u[s]),o._classId=t+"_strata",a.addChild(o),dm(o,t,r,n,i,u[s],a)}}function fm(e,t,r,n,i,s,a,o,l){l&&(e.dataScope=i.getNodeDataScope(s),e._classId=t,a.addChild(e));let u,c,h,d=i.getChildren(s);if(0!==d.length){switch(r){case Q.Top2Bottom:case Q.Bottom2Top:case Q.Left2Right:case Q.Right2Left:}u=e.left,c=e.bottom,h=e.width/d.length;for(let s=0;s<d.length;s++){let o=St(e);ze(o,u-o.left,c-o.top),o.resize(h,n),o._updateBounds(),u+=h,o.dataScope=i.getNodeDataScope(d[s]),o._classId=t,a.addChild(o),fm(o,t,r,n,i,d[s],a)}}}class pm extends Ze{constructor(e,t,r,n){super(e,t),this._elem=r,this._cumulative=n,this._elements=[]}get element(){return this._elem}isCumulative(){return this._cumulative}get elements(){return this._elements}set elements(e){this._elements=e}}class _m extends Ze{constructor(e,t,r){super(e,t),this._key=r}get key(){return this._key}}class gm extends Ze{constructor(e,t,r){super(e,t),this._listener=r,this._elements=[]}get mouseEvent(){return this._mouseEvent}set mouseEvent(e){this._mouseEvent=e}get listener(){return this._listener}get elements(){return this._elements}set elements(e){this._elements=e}}class ym extends Ze{constructor(e,t,r){super(e,t),this._ctrlId=r}get id(){return this._ctrlId}}class mm extends _t{constructor(e){super(),this._itemMap={},this._type=Ot.Scene,this._id=e&&e.id?e.id:this._type+Nt(),e&&e.fillColor&&(this.fillColor=e.fillColor),this._encodings={},this._relations=[],this._triggers={},this._depGraph=new Hy}get depGraph(){return this._depGraph}get interactionTriggers(){return this._triggers}mark(e,t){if(Object.values(Tt).indexOf(e)<0)throw new Error("Mascot does not allow directly creating a "+e);let r=void 0===t?{}:t;r.type=e;let n=Ct(r);return null!==n&&(n._classId=n.id,this.addChild(n),this._itemMap[n.id]=n,tt(n,this._depGraph),ot(this,n,this._depGraph)),n}glyph(...e){let t=[];for(let r of e)t.push([r.parent,r]);let r=kt(e);if(null!==r){r._classId=r.id,this.addChild(r),this._itemMap[r.id]=r;for(let e of t)at(e[0],e[1],this._depGraph);!function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getIncomingDataflowOperator(Y.EVAL_BBOX,r);for(let r of e.children)t.connect(t.getVariable(q.BOUNDS,r),n);t.connect(n,r),n.run()}(r,this._depGraph),ot(this,r,this._depGraph)}return r}composite(){let e=new om;return null!==e&&(e._classId=e.id,this.addChild(e),this._itemMap[e.id]=e,function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.createOneWayDependency(Y.EVAL_BBOX);t.connect(n,o),t.connect(i,o),t.connect(s,o),t.connect(a,o),t.connect(o,r),o.run()}(e,this._depGraph),ot(this,e,this._depGraph)),e}attach(e,t){if(e.type==Ot.Glyph)for(let t of e.children)t._refBounds||(t._refBounds=t.bounds.clone());e.dataScope=new pe(t)}repeat(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ repeat by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do repeat. You must specify an element, a categorical data attribute and a data table");if(t instanceof ye||t instanceof be){if(!Array.isArray(e)||2!==e.length)throw new Error("To repeat with a tree or a network, you need to provide two marks, one for node and one for link")}else t instanceof Lt&&we(r.attribute,t);if(r.layout&&!(r.layout instanceof F))throw new Error("Invalid layout: "+r.layout)}(e,t,n),t instanceof ye||t instanceof be){let r=e[0].parent,n=e[1].parent,[i,s]=function(e,t,r,n){let i=n.nodeTable.getAttributeSummary(Ee).unique.map((e=>t.dataScope?t.dataScope.cross(Ee,e):new pe(n.nodeTable).cross(Ee,e))),s=Rt(e),a=Rt(e),o={};a.dataScope=t.dataScope?t.dataScope.clone():new pe(n.nodeTable),a.addChild(t);for(let e=1;e<i.length;e++){let e=St(t);a.addChild(e)}a.children.forEach(((e,t)=>{e.dataScope=i[t],e.links=[],o[e.dataScope.getAttributeValue(Ee)]=e}));let l=n.linkTable.getAttributeSummary(Pt).unique.map((e=>r.dataScope?r.dataScope.cross(Pt,e):new pe(n.linkTable).cross(Pt,e)));s.dataScope=r.dataScope?r.dataScope.clone():new pe(n.linkTable),s.addChild(r);for(let e=1;e<l.length;e++){let e=St(r);s.addChild(e)}s.children.forEach(((e,t)=>e.dataScope=l[t]));let u=n instanceof ye?"parent":"source",c=n instanceof ye?"child":"target";for(let e of s.children){let t=e.dataScope.getAttributeValue(u),r=e.dataScope.getAttributeValue(c),n=o[t],i=o[r];e.source=n,e.target=i,n.links.push(e),i.links.push(e)}return[a,s]}(this,e[0],e[1],t);return at(r,e[0],this._depGraph),at(n,e[1],this._depGraph),st(i,this._depGraph),st(s,this._depGraph),ot(i,e[0],this._depGraph),ot(i.parent,i,this._depGraph),ot(s,e[1],this._depGraph),ot(s.parent,s,this._depGraph),[i,s]}if(t instanceof Lt){let r=e.parent,i=Yy(this,e,n.attribute,t);return at(r,e,this._depGraph),st(i,this._depGraph),ot(i,e,this._depGraph),ot(i.parent,i,this._depGraph),n.layout&&(i.layout=n.layout),i}}divide(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ divide by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do divide. You must specify an element, a categorical data attribute and a data table");if(t instanceof Lt&&we(r.attribute,t),r.layout&&!(r.layout instanceof F))throw new Error("Invalid layout: "+r.layout)}(e,t,n),t instanceof ye||t instanceof be)throw"Not implemented";if(t instanceof Lt){let{newMark:r,collection:i}=$y(this,e,n.attribute,n.orientation,t);return rt(e,this._depGraph),tt(r,this._depGraph),st(i,this._depGraph),ot(i,r,this._depGraph),i.parent.type!==Ot.Scene&&ot(i.parent,i,this._depGraph),this.onChange(q.CHANNEL,"width",r),{newMark:r,collection:i}}}densify(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ densify by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do densification. You must specify an element, a categorical data attribute and a data table");t instanceof Lt&&we(r.attribute,t)}(e,t,n),t instanceof ye||t instanceof be)throw"Not implemented";if(t instanceof Lt){let r=Se(0,e,n.attribute,n.orientation,t);return rt(e,this._depGraph),tt(r,this._depGraph),r.parent.type!==Ot.Scene&&ot(r.parent,r,this._depGraph),this.onChange(q.CHANNEL,"width",r),r}}stratify(e,t,r){if(!(t instanceof ye||Array.isArray(t)&&t.every((e=>e instanceof ye))))throw"Cannot stratify on a non-tree dataset";if(![Ot.Circle,Ot.Rect,Ot.Ring].includes(e.type))throw"Cannot stratify elements that are not rects, circles, or rings";let n=r||{},i=n.direction,s=n.size,a=e.parent,o=cm(this,e,i,n.startFromLeaf,s,t);return at(a,e,this._depGraph),st(o,this._depGraph),o.children.length>0&&ot(o,o.firstChild,this._depGraph),ot(o.parent,o,this._depGraph),o}repopulate(e,t,r){e.dataScope=void 0;let n=e;for(let e in r){Jy(0,n,r[e],t);let i=Le(n.children[0],!0);for(let e of i){Ne(e,this),nt(e,this._depGraph);for(let t of e.refElements)er(t,this),it(t,this._depGraph);e.clearRefElements()}let s=T(n);for(let e of s)if(e.layout){for(let t of e.layout.refElements)er(t,this),it(t,this._depGraph);e.layout.clearRefElements()}n=n.children[0]}e.dataScope=new pe(t),this.onChange(q.CHANNEL,"width",e.children[0])}classify(e,t){let r=t||{};console.log("------ classify by",r.attribute," ----"),function(e,t,r,n){let i=T(t);for(let t of i){let i,s={},a=t.children;for(let e of a){let t=e.dataScope.getAttributeValue(r);t in s||(s[t]=[]),s[t].push(e)}let o=Vt(a[0]);for(let a in s){let l=Rt(e);t.addChild(l),void 0===i&&(i=l.id),l._classId=i,l.dataScope=t.dataScope?t.dataScope.cross(r,a):new pe(o).cross(r,a);for(let e of s[a])l.addChild(e);n&&(l._layout=n.clone(),l._layout.group=l)}}}(this,e,r.attribute,r.layout),at(e,e.firstChild.firstChild,this._depGraph),st(e.firstChild,this._depGraph),ot(e.firstChild,e.firstChild.firstChild,this._depGraph),ot(e,e.firstChild,this._depGraph),this.onChange(q.CHANNEL,"width",e.firstChild.firstChild)}affix(e,t,r,n){e.dataScope.dataTable!==e.dataScope.dataTable&&console.warn("Affix: elements and base elements are not created from the same table");let i=em(e,t),s=this._relations.find((e=>e.id===i));s||(s=new Qy(e,t),this._relations.push(s)),s.addChannel(r,n||{}),function(e,t){let r=t.getVariable(q.AFFIXATION,e),n=t.getOutgoingDataflowOperator(Y.AFFIXER,r);t.connect(r,n);for(let r of e.channels){let i=t.getVariable(q.CHANNEL,r,e.element),s=t.getVariable(q.CHANNEL,r,e.base);t.connect(s,n),t.connect(n,i)}n.run()}(s,this._depGraph)}align(e,t,r){let n=new lm(e,t,r);!function(e,t){let r=t.createMultiWayDependency(Y.ALIGNER),n=t.getVariable(q.ALIGNMENT,e);t.connect(n,r);for(let n of e.elements){let i=t.getVariable(q.CHANNEL,e.channel,n);t.connect(i,r)}r.run()}(n,this._depGraph),this._relations.push(n)}encode(e,t){if("rowId"===t.attribute&&(t.attribute=Pt),function(e,t){if(!e||!("channel"in t)||!("attribute"in t))throw new Error("Incomplete information to do encoding. You must specify an item, a categorical data attribute and a data table");let r=Vt(e);if(r.tree){let e=t.attribute;if(e.indexOf(".")>0&&!r.tree.nodeTable.hasAttribute(e.split(".")[1]))throw new Error("Data attribute does not exist in the data table")}else if(!r||!r.hasAttribute(t.attribute))throw new Error("Data attribute does not exist in the data table");if(!Object.values(Ie).includes(t.channel))throw new Error("Channel Not Supported")}(e,t),t.shareScale){let e=t.shareScale;if(e.channel!=t.channel&&e.channel.indexOf("Color")<0&&t.channel.indexOf("Color")<0)throw new Error("Cannot share scales between "+e.channel+" and "+t.channel+" encodings");t.scheme=t.shareScale.colorScheme}!function(e){let t;"vertex"===e.type&&e.parent.type===Ot.Area?t=e.parent:e.type===Ot.Area&&(t=e),t&&!t._refBounds&&T(t).forEach((e=>e._refBounds=e.bounds.clone()))}(e);let r=t.aggregator?t.aggregator:"sum";console.log("------ encode",t.channel,t.attribute," --");let n=Pe(e,t.channel);if(n&&t.attribute!==n.attribute){Ne(n,this),nt(n,this._depGraph);for(let e of n.refElements)er(e,this),it(e,this._depGraph);n.clearRefElements()}let i=new Xy(e,t.channel,t.attribute,r,t);return this._addAttributeEncoding(i),function(e,t,r){let n=e.attribute,i=e.channel,s=e.element,a=t.createOneWayDependency(Y.ENCODER);if(["width","height"].includes(e.channel)&&s.type===Ot.Area){let e=t.getVariable(q.PROPERTY,et.BASE_LINE,s);t.connect(e,a)}if(r){let n=t.getVariable(q.DOMAIN,r),o=t.getVariable(q.SCALE,r),l=t.getVariable(q.CHANNEL,i,s);t.connect(o,a),t.connect(a,l),n.addLinkedEncoding(e),o.addLinkedEncoding(e),n.incomingDataflow.run()}else{let r=t.getVariable(q.ATTRIBUTE,n,Vt(s)),o=t.getVariable(q.PROPERTY,et.INCLUDE_ZERO,e),l=t.getVariable(q.DOMAIN,e),u=t.getVariable(q.DATASCOPE,s),c=t.createOneWayDependency(Y.DOMAIN_BUILDER);t.connect(r,c),t.connect(o,c),t.connect(u,c),t.connect(c,l),c.run();let h=t.getVariable(q.PROPERTY,et.RANGE_START,e),d=t.getVariable(q.PROPERTY,et.RANGE_EXTENT,e),f=t.getVariable(q.PROPERTY,et.FLIP_SCALE,e),p=t.getVariable(q.SCALE,e),_=t.createOneWayDependency(Y.SCALE_BUILDER);t.connect(h,_),t.connect(d,_),t.connect(f,_),t.connect(l,_),t.connect(_,p),_.run();let g=t.getVariable(q.CHANNEL,i,s);t.connect(p,a),t.connect(a,g),a.run()}}(i,this._depGraph,t.shareScale),t.shareScale?this.onChange(q.DOMAIN,i):this.onChange(q.CHANNEL,t.channel,e),i}connect(e,t){let r={};e.forEach((e=>r[e.dataScope.getAttributeValue(Ee)]=e));let n=t[0].dataScope.dataTable,i=n.tree?"parent":"source",s=n.tree?"child":"target";for(let t of e)t.links=[];for(let e of t){let t=e.dataScope.getAttributeValue(i),n=e.dataScope.getAttributeValue(s),a=r[t],o=r[n];e.source=a,e.target=o,a.links.push(e),o.links.push(e)}ht(e.find((e=>e.links.length>0)),this._depGraph),this.onChange(q.CHANNEL,"x",e[0])}_addAttributeEncoding(e){let t=De(e.element);t in this._encodings||(this._encodings[t]={}),this._encodings[t][e.channel]=e}activate(e,t,r,n,i){!function(e,t,r,n,i){if(!("event"in e)||!("type"in e))throw"Event and trigger must be specified";if(![$e.WIDGET,$e.KEYBOARD].includes(e.type)){if(!("target"in t)||!("targetChannels"in t))throw"Target must be specified";if("function"!=typeof r)throw"Target evaluator must be a function"}if(e.type===$e.ELEMENT&&!("element"in e))throw"Element must be specified for trigger";if(Array.isArray(n)){if(!n.every((e=>"function"==typeof e)))throw"Effect setter must be a function";if(i&&!Array.isArray(i))throw"An array of effect setters must be accompanied by an array of animation effects";if(i&&Array.isArray(i)&&i.length!==n.length)throw"the length of effect setters is not equal to the length of animation effects"}else if("function"!=typeof n)throw"Effect setter must be a function"}(e,t,r,n,i);let s=e.event,a=function(e){switch(e.type){case $e.ELEMENT:return[e.type,e.element.classId?e.element.classId:e.element.id].join("-");case $e.ATTRIBUTE:return[e.type].join("-");case $e.WIDGET:return[e.type,e.event,e.listener?e.listener.id:"scene",e.id?e.id:""].join("-");case $e.MOUSE:return[e.type,e.event,e.listener?e.listener.id:"scene"].join("-");case $e.KEYBOARD:return[e.type,e.event,e.key].join("-");default:return[e.type,e.event].join("-")}}(e);if(s=0===s.indexOf("brush")?"brush":s,s in this._triggers||(this._triggers[s]={}),a in this._triggers[s]||(this._triggers[s][a]=function(e){switch(e.type){case $e.ELEMENT:return new pm(e.type,e.event,e.element,"cumulative"in e&&e.cumulative);case $e.MOUSE:return new gm(e.type,e.event,e.listener);case $e.KEYBOARD:return new _m(e.type,e.event,e.key);case $e.WIDGET:return new ym(e.type,e.event,e.id)}}(e)),this._triggers[s][a].animation=i,![$e.WIDGET,$e.KEYBOARD].includes(e.type)){let e=this._triggers[s][a],i=new qy(e,t,r,n);return function(e,t,r){let n=e.target,i=r.getVariable(q.COND_ENCODING,e);for(let s of t){let t=r.getVariable(q.TRIGGER,e.trigger),a=r.findIncomingDataflowOperator(Y.TARGET_EVALUATOR,i);a||(a=r.createOneWayDependency(Y.TARGET_EVALUATOR,e._targetEval)),r.connect(t,a),r.connect(a,i);let o=r.getVariable(q.CHANNEL,s,n),l=o.incomingDataflow;if(l&&l instanceof Je&&l.outputVar.channel===s)r.connect(i,l);else if(!l){let e=r.createOneWayDependency(Y.ENCODER);r.connect(i,e),r.connect(e,o),e.storeValues(n,s)}}}(i,t.targetChannels,this._depGraph),i}this._triggers[s][a].callback=n}onChange(e,...t){if(Object.values(q).indexOf(e)<0)throw new Error("Unknown Variable Type: "+e);let r=[];this._depGraph.processChange(e,r,...t);for(let e of r)e.run()}gridlines(e,t,r){let n=r||{},i=n.element?Pe(n.element,e):Ve(t,e,this);if(i){i.attribute!==t&&console.warn("Cannot create a "+e+" axis for "+t);let r=[];if("x"==e)for(let e of i.scales)r.push({scale:e,elems:i.getElements(e)});else if("width"==e){let e=B(i.element),t=i.scales[0];if(e.layout&&e.layout.type==U.GRID&&e.layout.numCols>1){let n=e.layout.getElementsByCol(!0);for(let e of n)r.push({scale:t,elems:e})}else r.push({scale:i.scales[0],elems:i.getElements(i.scales[0])})}else if("y"==e){let e=B(i.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let t=e.layout.getElementsByRow(!0,i.element);for(let e of t)r.push({scale:i.getScale(e[0]),elems:e})}else r.push({scale:i.scales[0],elems:i.getElements(i.scales[0])})}else if("height"==e){let e=B(i.element),t=i.scales[0];if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let n=e.layout.getElementsByRow(!0,i.element);for(let e of n)r.push({scale:t,elems:e})}else r.push({scale:t,elems:i.getElements(t)})}else"radialDistance"==e&&r.push({scale:i.scales[0],elems:T(i.element)});for(let e of r){let t=new Ky(i.channel,i.attribute,e.scale,e.elems,n);this.addChild(t),i.addRefElement(t),pt(t,this._depGraph),ot(this,t,this._depGraph)}}else{let r=n.element?n.element:L(this,t);if(!r)return void console.warn("Cannot create "+e+" gridlines for "+t);let i=V(r.parent);if(!i.layout)return void console.warn("Cannot create "+e+" gridlines for "+t);let s=T(i);for(let r of s){let i=[];r.layout.type==U.GRID&&r.layout.numRows>1&&"x"==e?i=r.layout.getElementsByRow():r.layout.type==U.GRID&&r.layout.numCols>1&&"y"==e?i=r.layout.getElementsByCol():i.push(r.children);for(let s of i){let i=new Ky(e,t,null,s,n);this.addChild(i),r.layout.addRefElement(i),pt(i,this._depGraph),ot(this,i,this._depGraph)}}}}axis(e,t,r){let n=r||{},i="rowId"==t?Pt:t,s=[],a=n.element?Pe(n.element,e):Ve(i,e,this);if(a){a.attribute!==i&&console.warn("Cannot create a "+e+" axis for "+i);let t=[];if("x"==e||"width"==e){let e=B(a.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numCols>1){let r=e.layout.getElementsByCell(!0,a.element);for(let e of r)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else if("y"==e||"height"==e){let e=B(a.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let r=e.layout.getElementsByCell(!0,a.element);for(let e of r)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else"radialDistance"==e&&t.push({scale:a.scales[0],elems:T(a.element)});for(let e of t){let t=new tr(a,e.scale,e.elems,n);this.addChild(t),s.push(t),a.addRefElement(t),ft(t,this._depGraph),ot(this,t,this._depGraph),this.onChange(q.PROPERTY,et.AXIS_PATH_POSITION,t)}}else{let t=n.element?n.element:L(this,i);if(!t)return void console.warn("Cannot create a "+e+" axis for "+i);let r=V(t.parent);if(!r.layout)return void console.warn("Cannot create a "+e+" axis for "+i);let a=T(r);for(let t of a){let r=[];t.layout.type==U.GRID&&t.layout.numRows>1&&"x"==e?r=t.layout.getElementsByRow():t.layout.type==U.GRID&&t.layout.numCols>1&&"y"==e?r=t.layout.getElementsByCol():r.push(t.children);for(let a of r){let r=new rr(a,e,i,n);this.addChild(r),s.push(r),t.layout.addRefElement(r),dt(r,this._depGraph),ot(this,r,this._depGraph),this.onChange(q.PROPERTY,et.AXIS_PATH_POSITION,r)}}}return s}legend(e,t,r){let n=r||{},i="rowId"==t?Pt:t,s=n.element?Pe(n.element,e):Ve(i,e,this);if(s){s.attribute!==t&&console.warn("Cannot create a "+e+" legend for "+t);let r="string"===Vt(s.element).getAttributeType(t)?new sm(s,n):new am(s,n);this.addChild(r),function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.PROPERTY,et.LEGEND_POSITION,e),i=t.getIncomingDataflowOperator(Y.EVAL_BBOX,r);t.connect(n,i),t.connect(i,r)}(r,this._depGraph),ot(this,r,this._depGraph),p(r),this.onChange(q.PROPERTY,et.LEGEND_POSITION,r)}else console.warn("Cannot create a "+e+" legend for "+i)}setLayout(e,t){if(e.layout&&(ut(e,e.layout,this._depGraph),t.type===U.TREEMAP)){let t=e.firstChild;for(;t&&t.type===Ot.Collection&&t.layout;)ut(t,t.layout,this._depGraph),t=t.firstChild}if(T(e).forEach((e=>{let r=t?t.clone():t;e._layout=r,r&&(r.group=e)})),ct(e,t,this._depGraph),e.children&&e.children.length>0){let t=j(e,!0);for(let e of t)this.onChange(q.CHANNEL,"x",e)}}setProperties(e,t,r){let n=r?[e]:T(e);n.forEach((e=>{for(const[r,n]of Object.entries(t))Ue(e,r,n)})),"width"in t&&n.forEach((e=>e._refBounds.setWidth(t.width))),"height"in t&&n.forEach((e=>e._refBounds.setHeight(t.height)));for(let r in t)["vertex","segment"].includes(e.type)&&!["x","y"].includes(r)||(Object.values(Ie).includes(r)?this.onChange(q.CHANNEL,r,e):this.onChange(q.PROPERTY,r,e))}setLayoutParameters(e,t){let r=T(e);for(let e of r)for(let r in t)e.layout[r]=t[r];this.onChange(q.CHANNEL,"width",e.firstChild)}sortChildren(e,t,r,n){if(e instanceof _t)tm(e,t,r,n),this.onChange(q.ORDER,e);else if(e instanceof ie){let i=T(e);for(let e of i)rm(e,t,r,n)}}findElements(e){return N(this,e)}translate(e,t,r){ze(e,t,r);let n=j(e,!0);for(let e of n)p(e);for(let e of n)this.onChange(q.CHANNEL,"x",e)}transform(e,t,r){let n=t.clone();switch(e){case"bin":!function(e,t,r,n,i){let s=i.getVariable(q.ATTRIBUTE,e,r),a=i.getVariable(q.ATTRIBUTE,t,n),o=i.createOneWayDependency(Y.BIN_TRANSFORMER);i.connect(s,o),i.connect(o,a),o.run()}(r.attribute,r.newAttribute,t,n,this._depGraph);break;case"filter":!function(e,t,r,n){let i=n.getVariable(q.ITEMS,void 0,t),s=n.getVariable(q.ITEMS,e,r),a=n.createOneWayDependency(Y.FILTER_TRANSFORMER);n.connect(i,a),n.connect(a,s),a.run()}(l(r),t,n,this._depGraph);break;case"kde":!function(e,t,r,n,i,s){let a=s.getVariable(q.ATTRIBUTE,e,r),o=s.getVariable(q.ATTRIBUTE,t,n),l=s.createOneWayDependency(Y.KDE_TRANSFORMER);l.args=i,s.connect(a,l),s.connect(l,o),l.run()}(r.attribute,r.newAttribute,t,n,r,this._depGraph)}return n}}function bm(e,t){let r=new pe(t.tables[e.dt]);for(let t in e.attr2value)r._attr2value[t]=e.attr2value[t],r._updateTuples(t,e.attr2value[t]);return r}class vm extends F{constructor(e){super(),this.type=U.DIRECTED,this._width="width"in e?e.width:500,this._height="height"in e?e.height:300,this._top="top"in e?e.top:0,this._left="left"in e?e.left:0,this._edgeSep="edgeSep"in e?e.edgeSep:50,this._spreadLinks=!("spreadLinks"in e)||e.spreadLinks,this._direction="direction"in e?e.direction:Q.Top2Bottom}clone(){return new vm({width:this._width,height:this._height,top:this._top,left:this._left,edgeSep:this._edgeSep,spreadLinks:this._spreadLinks,direction:this._direction})}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}get edgeSep(){return this._edgeSep}get spreadLinks(){return this._spreadLinks}get direction(){return this._direction}}class xm extends F{constructor(e){super(),this.type=U.FORCE,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._iterations="iterations"in e?e.iterations:1,this._repulsion="repulsion"in e?e.repulsion:30,this._attraction="attraction"in e?e.attraction:1,this._linkDistance="linkDistance"in e?e.linkDistance:30}clone(){return new xm({x:this._x,y:this._y,iterations:this._iterations,repulsion:this._repulsion,attraction:this._attraction,linkDistance:this._linkDistance})}}class Em extends F{constructor(e){super(),this.type=U.PACKING,this._x="x"in e?e.x:400,this._y="y"in e?e.y:400,this._width=e.width,this._height=e.height}clone(){return new Em({x:this._x,y:this._y,width:this._width,height:this._height})}}class wm extends F{constructor(e){super(),this.type=U.TIDYTREE,this._width="width"in e?e.width:500,this._height="height"in e?e.height:500,this._left="left"in e?e.left:100,this._top="top"in e?e.top:100,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}get orientation(){return this._orientation}clone(){return new wm({width:this._width,height:this._height,top:this._top,left:this._left,orientation:this._orientation})}}class Am extends F{constructor(e){super(),this.type=U.TREEMAP,this._width=e.width,this._height=e.height,this._left=e.left,this._top=e.top}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}clone(){return new Am({width:this._width,height:this._height,top:this._top,left:this._left})}}function Cm(e){switch(e.type){case U.GRID:return function(e){let t=new nm(e.args);return t._left=e.left,t._top=e.top,t._cellBounds=e.cellBounds.map((e=>Rm(e))),t._grid=e.grid,t}(e);case U.STACK:return function(e){let t=new Zy(e.args);return t}(e);case U.PACKING:return function(e){let t=new Em(e.args);return t}(e);case U.FORCE:return function(e){return new xm(e.args)}(e);case U.DIRECTED:return function(e){return new vm(e.args)}(e);case U.TIDYTREE:return function(e){return new wm(e.args)}(e);case U.TREEMAP:return function(e){return new Am(e.args)}(e);case U.STRATA:return function(e){return new um(e.args)}(e);default:return void console.warn("unsupported layout type for deserialization:",e.type)}}function Rm(e){return new c(e.x-e.width/2,e.y-e.height/2,e.width,e.height)}function km(e,t){e.type===Ot.Pie&&(e.type=Ot.Arc),e.args.type=e.type;let r=Ct(e.args);return e.id&&(r._id=e.id),e.classId&&(r._classId=e.classId),e.dataScope&&(r._dataScope=bm(e.dataScope,t)),e.bounds&&(r._bounds=Rm(e.bounds)),e.refBounds&&(r._refBounds=Rm(e.refBounds)),function(e,t,r){if(e.vertices){const n=[];for(let i of e.vertices){const e=Sm(i,t,r);n.push(e)}t.vertices=n,t.segments=[];let i=0;for(let e=1;e<t.vertices.length;e++)t.segments.push(new ne(t.vertices[e-1],t.vertices[e],t,i++));t.type===Ot.Rect&&t.segments.push(new ne(t.vertices[t.vertices.length-1],t.vertices[0],t,i++))}t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}(e,r,t),r}function Sm(e,t,r){let n=new re(e.x,e.y,t,e.id);return e.dataScope&&(n._dataScope=bm(e.dataScope,r)),"polarAngle"in e&&(n._polarAngle=e.polarAngle),n.shape=e.shape,n.width=e.width,n.height=e.height,n.radius=e.radius,n.fillColor=e.fillColor,n.opacity=e.opacity,n.strokeWidth=e.strokeWidth,n.strokeColor=e.strokeColor,n}function Tm(e){let t={};t.fillColor=e.fillColor;let r=new mm(t),n={};if(e.tables)for(let t in e.tables){let r=e.tables[t];n[t]=new Lt(r.data,r.url,r.attributeTypes),n[t]._id=r.id}r.tables=n;let i={};if(e.scales)for(let t in e.scales)i[t]=Lm(e.scales[t]);if(r.scales=i,Nm(e,r,r),Im(e,r),e.encodings)for(let t of e.encodings)r._addAttributeEncoding(Vm(t,r));return delete r.tables,delete r.scales,r._bounds=Rm(e.bounds),r}function Om(e,t,r){if(e.type===Ot.Collection){let n=Rt(r);t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n}else if(e.type===Ot.Glyph){let n=kt();t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n}else if(e.type===Ot.Composite){let n=new om;t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n,n._bounds=Rm(e.bounds)}else if(Object.values(w).includes(e.type)){let n=km(e,r);r._itemMap[n.id]=n,t.addChild(n)}}function Im(e,t){if(e.children)for(let r of e.children)Im(r,t);else if(Object.values(w).includes(e.type)){let r=t._itemMap[e.id];e.links&&(r.links=e.links.map((e=>t._itemMap[e]))),e.source&&(r.source=t._itemMap[e.source]),e.target&&(r.target=t._itemMap[e.target])}}function Nm(e,t,r){if(e.id&&(t._id=e.id),e.classId&&(t._classId=e.classId),e.dataScope&&(t._dataScope=bm(e.dataScope,r)),t._bounds=Rm(e.bounds),e.layout&&(t._layout=Cm(e.layout),t._layout.group=t),t._sortBy=e.sortBy,e.children)for(let n of e.children)Om(n,t,r)}function Lm(e){let t=new Ht(e.type,e.args);return t._id=e.id,t.domain=e.domain,t.range=e.range,t}function Vm(e,t){let r=function(e,t,r){if("vertex"===t){let t=e.split("_v_");return r._itemMap[t[0]].vertices.find((e=>e._id===parseInt(t[1])))}if("segment"===t){let t=e.split("_s_");return r._itemMap[t[0]].segments.find((e=>e._id===parseInt(t[1])))}return r._itemMap[e]}(e.element,e.elementType,t);r||console.warn("element not created:",e.element,e.elementType);let n=new Xy(r,e.channel,e.attr,e.aggregator,e.args);if(e.scales&&(n._scales=e.scales.map((e=>t.scales[e]))),e.elemGroups&&(n._elemGroups=e.elemGroups.map((e=>e.map((e=>t._itemMap[e]))))),e.elem2scale){n._elem2scale={};for(let r in e.elem2scale)n._elem2scale[r]=t.scales[e.elem2scale[r]]}return e.args.startAngle&&(n.startAngle=e.args.startAngle),n}function Pm(e){let t={};return t.id=e._id,t.data=e._rawData,t.attributeTypes=e._attrTypes,t.url=e.url,t}function Dm(e){let t={};return t.dt=e._dt.id,t.attr2value=Object.assign({},e._attr2value),t}function Bm(e,t){t.vertices=[];for(let r of e.vertices)t.vertices.push(Mm(r));t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}function Mm(e){let t={};return t.type=e.type,t.id=e._id,t.x=e.x,t.y=e.y,e._dataScope&&(t.dataScope=Dm(e._dataScope)),void 0!==e._polarAngle&&(t.polarAngle=e._polarAngle),t.shape=e.shape,t.width=e.width,t.height=e.height,t.radius=e.radius,t.fillColor=e.fillColor,t.opacity=e.opacity,t.strokeWidth=e.strokeWidth,t.strokeColor=e.strokeColor,t}function Gm(e){return e.type===Ot.Scene?function(e){let t=Fm(e,{});t.fillColor=e.fillColor,t.scales={},t.encodings=[];for(let r in e._encodings)for(let n in e._encodings[r]){let i=e._encodings[r][n];i._forLegend||t.encodings.push(zm(i));for(let e of i._scales)e.id in t.scales||(t.scales[e.id]=jm(e))}t.tables={};let r=function(e){let t={};for(let r in e._encodings)for(let n in e._encodings[r]){let i=e._encodings[r][n];i.dataTable.id in t||i._forLegend||(t[i.dataTable.id]=i.dataTable)}for(let r of e.children)if(![Ot.Axis,Ot.Legend,Ot.Gridlines].includes(r.type)){if(r.dataScope){t[r.dataScope.dataTable.id]=r.dataScope.dataTable;break}if(r.children&&r.children.length>0){let e=r.firstChild;for(;e;){if(e.dataScope){t[e.dataScope.dataTable.id]=e.dataScope.dataTable;break}e=e.children&&e.children.length>0?e.firstChild:void 0}}}return t}(e);for(let e in r)t.tables[e]=Pm(r[e]);return console.log(t.tables),t}(e):e instanceof _t?Fm(e,{}):e instanceof x?function(e){let t={args:{}};t.type=e.type,t.id=e.id,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Dm(e._dataScope)),e.bounds&&(t.bounds=e.bounds.toJSON()),e.refBounds&&(t.refBounds=e.refBounds.toJSON()),e.links&&(t.links=e.links.map((e=>e.id))),e.source&&(t.source=e.source.id),e.target&&(t.target=e.target.id);for(let r in e.styles)r.indexOf("Color")>0&&e.styles[r]instanceof v?t.args[r]=e.styles[r].toJSON():t.args[r]=e.styles[r];switch(e.type){case Ot.Arc:case Ot.Pie:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.innerRadius=e._innerRadius,t.args.outerRadius=e._outerRadius,t.args.startAngle=e._startAngle,t.args.endAngle=e._endAngle,t.args.direction=e._direction,t.args.thickness=e._thickness}(e,t),Bm(e,t);break;case Ot.Area:!function(e,t){t.args.baseline=e._baseline,t.args.orientation=e._orientation}(e,t),Bm(e,t);break;case Ot.Circle:!function(e,t){t.args.x=e.x,t.args.y=e.y,t.args.radius=e.radius}(e,t);break;case Ot.Image:break;case Ot.Line:case Ot.Path:case Ot.BezierCurve:Bm(e,t);break;case Ot.PointText:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.text=e._text,t.args.anchor=e._anchor}(e,t);break;case Ot.Polygon:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.radius=e._radius}(e,t),Bm(e,t);break;case Ot.Rect:!function(e,t){t.args.width=e.width,t.args.height=e.height,t.args.top=e.top,t.args.left=e.left}(e,t),Bm(e,t);case Ot.Ring:}return t}(e):(console.warn("unsupported serialization",e.type),{type:e.type})}function jm(e){let t={};return t.type=e.type,t.id=e.id,e._args&&(t.args=e._args),t.domain=e.domain,t.range=e.range,t}function zm(e){let t={};t.element=e._elem.id,t.elementType=e._elem.type,e.attrValues&&(t.attrValues=e.attrValues),t.channel=e._channel,t.attr=e._attribute,t.aggregator=e._aggregator,t.args={},t.args.includeZero=e._includeZero,t.args.flipScale=e._flipScale,t.args.mapping=e._mapping,t.args.rangeExtent=e._preferredRangeExtent,t.args.domain=e._preferredDomain,t.args.scaleType=e._scaleType,t.args.scheme=e._colorScheme,t.scales=e._scales.map((e=>e.id)),t.elemGroups=e._elemGroups.map((e=>e.map((e=>e.id)))),t.elem2scale={};for(let r in e._elem2scale)t.elem2scale[r]=e._elem2scale[r].id;return t.refElements=e._refElements.map((e=>e.id)),"angle"==e.channel&&(t.args.startAngle=e.startAngle),t}function Fm(e,t){if(t.id=e.id,t.type=e.type,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Dm(e._dataScope)),t.bounds=e.bounds.toJSON(),e._layout&&(t.layout=function(e){switch(e.type){case U.GRID:return function(e){let t={args:{}};return t.type=e.type,t.args.numCols=e._numCols,t.args.numRows=e._numRows,t.args.start=e._start,t.args.direction=e._direction,t.args.colGap=e._colGap,t.args.rowGap=e._rowGap,t.args.horzCellAlignment=e._cellHorzAlignment,t.args.vertCellAlignment=e._cellVertAlignment,t.left=e._left,t.top=e._top,t.cellBounds=e._cellBounds.map((e=>e.toJSON())),t.group=e.group.id,t.grid=e._grid,t}(e);case U.STACK:return function(e){let t={args:{}};return t.type=e.type,t.args.orientation=e._orientation,t.args.direction=e._direction,t.args.left=e._left,t.args.top=e._top,t.args.horzCellAlignment=e._horzCellAlignment,t.args.vertCellAlignment=e._vertCellAlignment,t.args.gap=e._gap,t.group=e.group.id,t}(e);case U.PACKING:return function(e){let t={args:{}};return t.type=e.type,t.args.x=e._x,t.args.y=e._y,t.args.width=e._width,t.args.height=e._height,t.group=e.group.id,t}(e);case U.FORCE:return function(e){let t={args:{}};return t.type=e.type,t.args.x=e._x,t.args.y=e._y,t.args.iterations=e._iterations,t.args.repulsion=e._repulsion,t.args.attraction=e._attraction,t.args.linkDistance=e._linkDistance,t.group=e.group.id,t}(e);case U.CLUSTER:return function(e){let t={args:{}};return t.type=e.type,t.args.size=e._size,t.args.rootX=e._rootX,t.args.rootY=e._rootY,t}(e);case U.DIRECTED:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t.args.edgeSep=e._edgeSep,t.args.spreadLinks=e._spreadLinks,t.args.direction=e._direction,t}(e);case U.TIDYTREE:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t.args.orientation=e._orientation,t}(e);case U.TREEMAP:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t}(e);case U.STRATA:return function(e){let t={args:{}};return t.type=e.type,t.args.direction=e._direction,t.args.gap=e._gap,t}(e);default:throw new Error("unknow layout type "+e.type)}}(e._layout)),t.children=[],e.children.length>0)for(let r of e.children)t.children.push(Gm(r));return t.sortBy=e._sortBy,t}function Um(e,r,n,i,s){for(let a of e){let e=a.listener?a.listener:n,o=e.type===Ot.Axis?e.boundsWithoutTitle:e.bounds,l=[[o.left,o.top],[o.right,o.bottom]],u="brushX"===a.event?t.brushX():"brushY"===a.event?t.brushY():t.brush();u.extent(l).on("brush end",(e=>{let t,r;if(e&&e.selection)switch(a.event){case"brushX":t=[e.selection[0],e.selection[1]],r=void 0;break;case"brushY":t=void 0,r=[e.selection[0],e.selection[1]];break;default:t=[e.selection[0][0],e.selection[1][0]],r=[e.selection[0][1],e.selection[1][1]]}else t=void 0,r=void 0;a.mouseEvent={xInterval:t,yInterval:r},n.onChange(q.TRIGGER,a),i._render(n,s)})),r.append("g").attr("class","brush").call(u)}}function Hm(e,t,r,n,i){t.on("mousemove",(s=>{for(let n of e){let[e,i]=A(t.attr("id"),s.clientX,s.clientY),a=M(r,n.element.type,e,i);a?n.isCumulative&&!n.elements.includes(a)?n.elements.push(a):n.elements=[a]:n.elements=[],n.mouseEvent={x:e,y:i},r.onChange(q.TRIGGER,n)}n._render(r,i)}))}function Wm(e,r,n,i,s){for(let r of e)if(r.type===$e.WIDGET){console.log(r.id),document.getElementById(r.id).addEventListener("input",(function(){Ym(r,n,i,s)}))}else r.type===$e.KEYBOARD&&t.select("body").on("keydown",(e=>{e.key===r.key&&Ym(r,n,i,s)}))}function Ym(e,t,r,n){if(Array.isArray(e.callback))for(let i=0;i<e.callback.length;i++)e.callback[i](),r._render(t,n,e.animation[i]);else e.callback(),r._render(t,n,e.animation)}function Xm(e,t,r,n,i){t.on("click",(s=>{for(let n of e){let[e,i]=A(t.attr("id"),s.clientX,s.clientY),a=M(r,n.element.type,e,i);a?n.isCumulative&&!n.elements.includes(a)?n.elements.push(a):n.elements=[a]:n.elements=[],n.mouseEvent={x:e,y:i},r.onChange(q.TRIGGER,n)}n._render(r,i)}))}class qm{constructor(e){this._svgId=e,this._compMap={},this._decoMap={},this._brushCreated=0}render(e,r){let n=r||{};t.select("#"+this._svgId).select("defs").empty()&&t.select("#"+this._svgId).append("defs"),this._render(e,n),this._registerEvents(e,n)}_render(e,t,r){for(let e in this._decoMap)this._decoMap[e].remove(),delete this._decoMap[e];this._removed={};for(let e in this._compMap)this._removed[e]=1;this._renderItem(e,t,r);for(let e in this._removed)this._compMap[e].remove(),delete this._compMap[e]}_registerEvents(e,r){let n=t.select("#"+this._svgId);for(let t in e.interactionTriggers){let i=Object.values(e.interactionTriggers[t]);switch(t){case"click":n.on("click",null),Xm(i,n,e,this,r);break;case"brush":case"brushX":case"brushY":Um(i,n,e,this,r);break;case"hover":Hm(i,n,e,this,r);break;case"input":Wm(i,0,e,this,r)}}}clear(){let e=document.getElementById(this._svgId);for(;e.firstChild;)e.firstChild.remove();this._compMap={},this._decoMap={}}_renderItem(e,r,n){this._configSVG(e);let i=this._compMap[e.id];switch(e.type){case Ot.Scene:!function(e,t){t.style("background",e.fillColor?e.fillColor:"#fff")}(e,t.select("#"+this._svgId));break;case Ot.Circle:!function(e,t){t.attr("cx",e.x),t.attr("cy",e.y),t.attr("r",e.radius)}(e,i);break;case Ot.Rect:!function(e,t){let r=e.bounds;t.attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height)}(e,i);break;case Ot.Path:case Ot.BezierCurve:case Ot.BundledPath:case Ot.Chord:case Ot.Polygon:case Ot.Link:case Ot.Pie:case Ot.Line:case Ot.Area:case Ot.Ring:case Ot.Arc:case Ot.Gridlines:!function(e,t){t.attr("d",e.getSVGPathData()),e.closed||t.style("fill","none"),(e.id.includes("axis")||e.id.includes("gridlines"))&&t.style("shape-rendering","crispEdges"),e.type===Ot.BundledPath&&t.style("mix-blend-mode","multiply")}(e,i);break;case Ot.PointText:!function(e,r){if(r.attr("text-anchor",m(e.anchor[0])).attr("alignment-baseline",m(e.anchor[1])).attr("dominant-baseline",m(e.anchor[1])).attr("x",e.x).attr("y",e.y),e.hasBackground()){let r=t.select("#"+g(e)),n=e.bounds;r.attr("x",n.left-5).attr("y",n.top-5).attr("width",n.width+10).attr("height",n.height+10).attr("rx",5).attr("ry",5).style("fill",e.backgroundColor).style("stroke",e.borderColor).style("strokeWidth",e.borderWidth)}e.textPath?(r.select("textPath").empty()&&r.append("textPath"),r.select("textPath").attr("href","#"+y(e)).attr("startOffset",e.textPathOffset).text(e.text)):r.text(e.text)}(e,i);break;case Ot.Image:!function(e,t){t.attr("href",e.src).attr("x",e.x).attr("y",e.y).attr("width",e.width).attr("height",e.height)}(e,i)}if(function(e,r,n){for(let i in e.styles)if(void 0!==e.styles[i])if(i.indexOf("Color")>0&&e.styles[i].type==Ot.LinearGradient){let t=n.select("defs"),s=e.styles[i];if(t.select("#"+s.id).empty()){let e=t.append("linearGradient").attr("id",s.id);e.attr("x1",s.x1+"%").attr("x2",s.x2+"%").attr("y1",s.y1+"%").attr("y2",s.y2+"%");for(let t of s.stops)e.append("stop").attr("offset",t.offset+"%").style("stop-color",t.color).style("stop-opacity",t.opacity)}r.style(b[i],"url(#"+s.id+")")}else r.style(b[i],e.styles[i]),"visibility"===i&&e.type===Ot.PointText&&e.hasBackground()&&t.select("#"+g(e)).style(b[i],e.styles[i])}(e,i,t.select("#"+this._svgId)),e._rotate&&i.attr("transform","rotate("+e._rotate.join(" ")+")"),n&&(i=i.transition().delay(n.delay?n.delay:0).duration(n.duration?n.duration:0)),e.vertices&&this._renderVertices(e),[Ot.Circle].includes(e.type)&&r&&r.bounds?this._renderBounds(e):E(e)&&r&&r.refBounds&&this._renderRefBounds(e),e.children)for(let t of e.children)this._renderItem(t,r,n)}_configSVG(e){let r,n=e.parent;if(r=n&&n.id&&n.id in this._compMap?t.select("#"+this._svgId).select("#"+n.id):t.select("#"+this._svgId),e.id in this._compMap)delete this._removed[e.id],e.type===Ot.PointText&&(e.hasBackground()&&delete this._removed[g(e)],e.textPath&&delete this._removed[y(e)]);else{if(e.type===Ot.PointText&&(e.hasBackground()&&(this._compMap[g(e)]=r.append("rect").attr("id",g(e))),e.textPath)){let r=t.select("#"+this._svgId).select("defs"),n=y(e);r.select("#"+n).empty()&&(this._compMap[n]=r.append("path").attr("id",n)),this._compMap[n].attr("d",e.textPath).style("fill","none")}this._compMap[e.id]=r.append(this._getSVGElementType(e))}e.type==Ot.Gridlines&&this._compMap[e.id].lower(),this._compMap[e.id].attr("id",e.id),e.classId&&this._compMap[e.id].attr("class",e.classId)}_renderBounds(e){let r=e.bounds;e.layout&&"grid"==e.layout.type&&this._renderLayout(e),e.id in this._decoMap||(this._decoMap[e.id]=t.select("#"+this._svgId).append("rect").attr("class","deco")),this._decoMap[e.id].attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height).attr("fill","none").attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5")}_renderRefBounds(e){let r=e.refBounds;r&&(e.id in this._decoMap||(this._decoMap[e.id]=t.select("#"+this._svgId).append("rect").attr("class","deco")),this._decoMap[e.id].attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height).attr("fill","none").attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5"))}_renderVertices(e){let r=e.id+"-vertices";if(r in this._compMap)delete this._removed[r];else{let n=e.parent,i=n?n.id:this._svgId;this._compMap[r]=t.select("#"+i).append("g").attr("id",r)}if(0===e.vertices.map((e=>e.shape)).filter((e=>void 0!==e)).length)return void this._compMap[r].style("visible","hidden");this._compMap[r].style("visible","visible");let n=e.vertices.filter((e=>void 0!==e.shape));for(let e of n){let n=r+"-"+e.id;n in this._compMap?e.shape!==this._compMap[n].node().tagName?(this._compMap[n].remove(),this._compMap[n]=t.select("#"+r).append(e.shape).attr("id",n),delete this._removed[n]):delete this._removed[n]:this._compMap[n]=t.select("#"+r).append(e.shape).attr("id",n),"rect"==e.shape?t.select("#"+n).attr("x",e.x-e.width/2).attr("y",e.y-e.height/2).attr("width",e.width).attr("height",e.height):"circle"==e.shape&&t.select("#"+n).attr("cx",e.x).attr("cy",e.y).attr("r",e.radius),t.select("#"+n).style("fill",e.fillColor).style("opacity",e.opacity).style("stroke-width",e.strokeWidth).style("stroke",e.strokeColor)}}_renderLayout(e){let r=e.id+"-grid";r in this._decoMap||(this._decoMap[r]=t.select("#"+this._svgId).append("g").attr("id",r).attr("class","deco"));let n=e.layout.cellBounds;e.layout.rowGap,this._decoMap[r].selectAll("rect").remove();for(let e of n)this._decoMap[r].append("rect").attr("x",e.left).attr("y",e.top).attr("width",e.width).attr("height",e.height).attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5").attr("fill","none")}_getSVGElementType(e){switch(e.type){case Ot.Rect:return"rect";case Ot.Collection:case Ot.Group:case Ot.Glyph:case Ot.Scene:case Ot.Axis:case Ot.Legend:case Ot.Composite:return"g";case Ot.Area:case Ot.Path:case Ot.Polygon:case Ot.Ring:case Ot.Pie:case Ot.Arc:case Ot.BezierCurve:case Ot.BundledPath:case Ot.Chord:case Ot.Line:case Ot.Gridlines:return"path";case Ot.Circle:return"circle";case Ot.PointText:return"text";case"vertex":if("circle"==e.shape)return"circle";if("rect"==e.shape)return"rect";throw"argument exception";case"image":return"image"}}}function Km(e,t){return void 0===e&&void 0===t||void 0!==e&&void 0!==t}function Zm(e,t){const r=Object.keys(e),n=Object.keys(t);return r.length===n.length&&(0===r.length||r.every((e=>n.includes(e))))}function $m(e,t){if(!Km(e.layout,t.layout))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let r=e.layout,n=t.layout;if(!r&&!n)return!0;if(r.type!==n.type)return console.log("layout types are different:",r,n),!1;switch(r.type){case U.GRID:return function(e,t){e._cellBounds.length!==t._cellBounds.length&&console.log("cell bounds length different:",e,t);for(let r=0;r<e._cellBounds;r++)if(!Qm(e._cellBounds[r],t._cellBounds[r]))return console.log("cell bounds not equal:",e,t),!1;for(let r=0;r<e._grid.length;r++)for(let n=0;n<e._grid[r].length;n++)if(e._grid[r][n]!==t._grid[r][n])return console.log("grid not equal",e,t),!1;return e._numCols===t._numCols&&e._numRows===t._numRows&&e._start===t._start&&e._direction===t._direction&&e._rowGap===t._rowGap&&e._colGap===t._colGap&&e._cellHorzAlignment===t._cellHorzAlignment&&e._cellVertAlignment===t._cellVertAlignment&&e._left===t._left&&e._top===t._top}(r,n);case U.STACK:return function(e,t){return e._orientation===t._orientation&&e._direction===t._direction&&e._left===t._left&&e._top===t._top&&e._horzCellAlignment===t._horzCellAlignment&&e._vertCellAlignment===t._vertCellAlignment&&e._gap===t._gap}(r,n);case U.PACKING:return function(e,t){return e._x===t._x&&e._y===t._y&&e._width===t._width&&e._height===t._height}(r,n);case U.FORCE:return function(e,t){return e._x===t._x&&e._y===t._y&&e._iterations===t._iterations&&e._repulsion===t._repulsion&&e._attraction===t._attraction&&e._linkDistance===t._linkDistance}(r,n);case U.DIRECTED:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left&&e._edgeSep===t._edgeSep&&e._spreadLinks===t._spreadLinks&&e._direction===t._direction}(r,n);case U.TIDYTREE:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left&&e._orientation===t._orientation}(r,n);case U.STRATA:return function(e,t){return e._direction===t._direction&&e._gap===t._gap}(r,n);case U.TREEMAP:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left}(r,n);default:return!1}}function Jm(e,t){if(!Km(e.bounds,t.bounds))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let r=e.bounds,n=t.bounds;return!r&&!n||Qm(r,n)}function Qm(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function eb(e,t){if(!Km(e,t))return console.log("Not both defined or undefined:",e,t),!1;if(e.type!==t.type)return console.log("Different mark types:",e,t),!1;if(e.id!==t.id)return console.log("id not equal:",e,t),!1;if(e.classId!==t.classId)return console.log("class id not equal:",e,t),!1;if(!rb(e,t))return console.log("DataScopes not equal",e,t),!1;if(!Jm(e,t))return console.log("Bounds not equal",e,t),!1;if(!Km(e.links,t.links))return console.log("Not both defined or undefined: links ",e.links,t.links),!1;if(!Km(e.source,t.source))return console.log("Not both defined or undefined: source ",e.source,t.source),!1;if(!Km(e.target,t.target))return console.log("Not both defined or undefined: links ",e.target,t.target),!1;if(e.links&&t.links&&e.links.length!==t.links.length)return console.log("unequal number of links",e,t),!1;if(e.source&&t.source&&!eb(e.source,t.source))return console.log("different sources",e.source,t.source),!1;if(e.target&&t.target&&!eb(e.target,t.target))return console.log("different targets",e.target,t.target),!1;switch(e.type){case Ot.Arc:case Ot.Pie:return tb(e,t)?e.x===t.x&&e.y===t.y&&e.innerRadius===t.innerRadius&&e.outerRadius===t.outerRadius&&e.startAngle===t.startAngle&&e.endAngle===t.endAngle&&e.direction===t.direction&&e.thickness===t.thickness:(console.log("vertices not equal:",e,t),!1);case Ot.Area:return tb(e,t)?e.baseline===t.baseline&&e.orientation===t.orientation:(console.log("vertices not equal:",e,t),!1);case Ot.Circle:return e.x===t.x&&e.y===t.y&&e.radius===t.radius;case Ot.Image:return console.warn("not implemented"),!0;case Ot.Line:case Ot.Path:case Ot.BezierCurve:return!!tb(e,t)||(console.log("vertices not equal:",e,t),!1);case Ot.PointText:return e.x===t.x&&e.y===t.y&&e.text===t.text&&e.anchor[0]===t.anchor[0]&&e.anchor[1]===t.anchor[1];case Ot.Polygon:return tb(e,t)?e.x===t.x&&e.y===t.y&&e.radius===t.radius:(console.log("vertices not equal:",e,t),!1);case Ot.Rect:return tb(e,t)?e.width===t.width&&e.height===t.height&&e.top===t.top&&e.left===t.left:(console.log("vertices not equal:",e,t),!1);case Ot.Ring:default:return console.warn("not implemented"),!0}}function tb(e,t){if(e.vertices.length!==t.vertices.length)return console.log("unequal number of vertices:",e,t),!1;for(let r=0;r<e.vertices.length;r++){let n=e.vertices[r],i=t.vertices[r];return n.id!==i.id?(console.log("vertex id not equal:",n,i),!1):n.x!==i.x||n.y!==i.y?(console.log("vertex position not equal:",n,i),!1):rb(n,i)?n._polarAngle===i._polarAngle&&n.shape===i.shape&&n.width===i.width&&n.height==i.height&&n.radius==i.radius&&n.fillColor==i.fillColor&&n.opacity==i.opacity&&n.strokeWidth==i.strokeWidth&&n.strokeColor==i.strokeColor:(console.log("vertex data scopes not equal:",n.dataScope,i.dataScope),!1)}}function rb(e,t){if(!Km(e.dataScope,t.dataScope))return console.log("Not both defined or undefined:",e.dataScope,t.dataScope),!1;if(!e.dataScope&&!t.dataScope)return!0;let r=e.dataScope,n=t.dataScope;if(!Zm(r._attr2value,n._attr2value))return!1;for(let e in r._attr2value)if(r._attr2value[e]!==n._attr2value[e])return!1;return r._dt.id===n._dt.id&&r._tuples.length===n._tuples.length}function nb(e,t){return e.type!==t.type&&console.log("Different types:",e.type,t.type),[Ot.Collection,Ot.Glyph,Ot.Composite].includes(e.type)?ib(e,t):e instanceof x?eb(e,t):void 0}function ib(e,t){let r=e.children.filter((e=>!Object.values(It).includes(e.type))),n=t.children.filter((e=>!Object.values(It).includes(e.type)));if(r.length!==n.length)return console.log("children length not equal:",r,n),!1;if(e.id!==t.id)return console.log("id not equal:",e,t),!1;if(e.classId!==t.classId)return console.log("class id not equal:",e,t),!1;if(!rb(e,t))return console.log("DataScopes not equal",e.dataScope,t.dataScope),!1;if(!Jm(e,t))return console.log("Bounds not equal",e,t),!1;if(!$m(e,t))return console.log("Layouts not equal",e,t),!1;if(!function(e,t){if(!Zm(e,t))return console.log("different keys",e,t),!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}(e._sortBy,t._sortBy))return console.log("SortBy not equal",e,t),!1;for(let e=0;e<r.length;e++)if(!nb(r[e],n[e]))return console.log("Not equal",r[e],n[e]),!1;return!0}class sb extends F{constructor(e){super(),this.type=U.CIRCULAR,this._x="x"in e?e.x:100,this._y="y"in e?e.y:100,this._radius="radius"in e?e.radius:100}get x(){return this._x}get y(){return this._y}get radius(){return this._radius}clone(){return new sb({x:this._x,y:this._y,radius:this._radius})}}class ab extends F{constructor(e){super(),this.type=U.CLUSTER,this._isRadial="radial"in e&&e.radial,this._angleExtent="angleExtent"in e?e.angleExtent:360,this._radius="radius"in e?e.radius:300,this._rootX="x"in e?e.x:300,this._rootY="y"in e?e.y:300,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL,this._width="width"in e?e.width:800,this._height="height"in e?e.height:600,this._left="left"in e?e.left:60,this._top="top"in e?e.top:100,this._tree="tree"in e?e.tree:void 0}get radius(){return this._radius}get angleExtent(){return this._angleExtent}get x(){return this._rootX}get y(){return this._rootY}get width(){return this._width}get height(){return this._height}get left(){return this._left}get top(){return this._top}isRadial(){return this._isRadial}get orientation(){return this._orientation}clone(){return new ab({radius:this._radius,angleExtent:this._angleExtent,x:this._rootX,y:this._rootY,radial:this._isRadial,orientation:this._orientation,left:this._left,top:this._top,width:this._width,height:this._height,tree:this._tree})}}exports.csv=async function(e){return async function(e){let r=await Dt("GET",e),n=t.csvParse(r.trim(),t.autoType);return new Lt(n,e)}(e)},exports.deserialize=function(e){return Tm(e)},exports.graphJSON=async function(e){return async function(e){let t=await Dt("GET",e);return new be(JSON.parse(t),e)}(e)},exports.isEqual=function(e,t){return function(e,t){return e.fillColor!==t.fillColor?(console.log("fillColor not equal:",e,t),!1):ib(e,t)}(e,t)},exports.layout=function(e,t){let r=t||{};switch(e.toLowerCase()){case U.STACK:return new Zy(r);case U.PACKING:return new Em(r);case U.FORCE:return new xm(r);case U.DIRECTED:return new vm(r);case U.TIDYTREE:return new wm(r);case U.TREEMAP:return new Am(r);case U.CIRCULAR:return new sb(r);case U.CLUSTER:return new ab(r);case U.GRID:default:return new nm(r)}},exports.renderer=function(e,t){return new qm(t)},exports.scene=function(e){return new mm(e)},exports.serialize=function(e){return Gm(e)},exports.treeJSON=async function(e){return async function(e){let t=await Dt("GET",e);return new ye(JSON.parse(t),e)}(e)};
|
|
186
|
+
*/return up=function(n){return r(t(n,void 0,e),n+"")}}()((function(t,r){return null==t?{}:e(t,r)}));return hp=t}(),range:function(){if(mp)return yp;mp=1;var e=qp()();return yp=e}(),reduce:md(),sortBy:function(){if(Sp)return kp;Sp=1;var e=Ed(),t=Zp(),r=Cd(),n=Bp(),i=r((function(r,i){if(null==r)return[];var s=i.length;return s>1&&n(r,i[0],i[1])?i=[]:s>2&&n(i[0],i[1],i[2])&&(i=[i[0]]),t(r,e(i,1),[])}));return kp=i}(),uniqueId:function(){if(Op)return Tp;Op=1;var e=rd(),t=0;return Tp=function(r){var n=++t;return e(r)+n},Tp}(),values:Nd(),zipObject:function(){if(Vp)return Lp;Vp=1;var e=Ki(),t=Np?Ip:(Np=1,Ip=function(e,t,r){for(var n=-1,i=e.length,s=t.length,a={};++n<i;){var o=n<s?t[n]:void 0;r(a,e[n],o)}return a});return Lp=function(r,n){return t(r||[],n||[],e)}}()}}catch(e){}Pp||(Pp=window._);var $p=Pp,Jp=Qp;function Qp(){var e={};e._next=e._prev=e,this._sentinel=e}function e_(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function t_(e,t){if("_next"!==e&&"_prev"!==e)return t}Qp.prototype.dequeue=function(){var e=this._sentinel,t=e._prev;if(t!==e)return e_(t),t},Qp.prototype.enqueue=function(e){var t=this._sentinel;e._prev&&e._next&&e_(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t},Qp.prototype.toString=function(){for(var e=[],t=this._sentinel,r=t._prev;r!==t;)e.push(JSON.stringify(r,t_)),r=r._prev;return"["+e.join(", ")+"]"};var r_=$p,n_=Dp.Graph,i_=Jp,s_=function(e,t){if(e.nodeCount()<=1)return[];var r=function(e,t){var r=new n_,n=0,i=0;r_.forEach(e.nodes(),(function(e){r.setNode(e,{v:e,in:0,out:0})})),r_.forEach(e.edges(),(function(e){var s=r.edge(e.v,e.w)||0,a=t(e),o=s+a;r.setEdge(e.v,e.w,o),i=Math.max(i,r.node(e.v).out+=a),n=Math.max(n,r.node(e.w).in+=a)}));var s=r_.range(i+n+3).map((function(){return new i_})),a=n+1;return r_.forEach(r.nodes(),(function(e){l_(s,a,r.node(e))})),{graph:r,buckets:s,zeroIdx:a}}(e,t||a_),n=function(e,t,r){var n,i=[],s=t[t.length-1],a=t[0];for(;e.nodeCount();){for(;n=a.dequeue();)o_(e,t,r,n);for(;n=s.dequeue();)o_(e,t,r,n);if(e.nodeCount())for(var o=t.length-2;o>0;--o)if(n=t[o].dequeue()){i=i.concat(o_(e,t,r,n,!0));break}}return i}(r.graph,r.buckets,r.zeroIdx);return r_.flatten(r_.map(n,(function(t){return e.outEdges(t.v,t.w)})),!0)},a_=r_.constant(1);function o_(e,t,r,n,i){var s=i?[]:void 0;return r_.forEach(e.inEdges(n.v),(function(n){var a=e.edge(n),o=e.node(n.v);i&&s.push({v:n.v,w:n.w}),o.out-=a,l_(t,r,o)})),r_.forEach(e.outEdges(n.v),(function(n){var i=e.edge(n),s=n.w,a=e.node(s);a.in-=i,l_(t,r,a)})),e.removeNode(n.v),s}function l_(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var u_=$p,c_=s_,h_={run:function(e){var t="greedy"===e.graph().acyclicer?c_(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],r={},n={};function i(s){u_.has(n,s)||(n[s]=!0,r[s]=!0,u_.forEach(e.outEdges(s),(function(e){u_.has(r,e.w)?t.push(e):i(e.w)})),delete r[s])}return u_.forEach(e.nodes(),i),t}(e);u_.forEach(t,(function(t){var r=e.edge(t);e.removeEdge(t),r.forwardName=t.name,r.reversed=!0,e.setEdge(t.w,t.v,r,u_.uniqueId("rev"))}))},undo:function(e){u_.forEach(e.edges(),(function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}}))}};var d_=$p,f_=Dp.Graph,p_={addDummyNode:__,simplify:function(e){var t=(new f_).setGraph(e.graph());return d_.forEach(e.nodes(),(function(r){t.setNode(r,e.node(r))})),d_.forEach(e.edges(),(function(r){var n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})})),t},asNonCompoundGraph:function(e){var t=new f_({multigraph:e.isMultigraph()}).setGraph(e.graph());return d_.forEach(e.nodes(),(function(r){e.children(r).length||t.setNode(r,e.node(r))})),d_.forEach(e.edges(),(function(r){t.setEdge(r,e.edge(r))})),t},successorWeights:function(e){var t=d_.map(e.nodes(),(function(t){var r={};return d_.forEach(e.outEdges(t),(function(t){r[t.w]=(r[t.w]||0)+e.edge(t).weight})),r}));return d_.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=d_.map(e.nodes(),(function(t){var r={};return d_.forEach(e.inEdges(t),(function(t){r[t.v]=(r[t.v]||0)+e.edge(t).weight})),r}));return d_.zipObject(e.nodes(),t)},intersectRect:function(e,t){var r,n,i=e.x,s=e.y,a=t.x-i,o=t.y-s,l=e.width/2,u=e.height/2;if(!a&&!o)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(o)*l>Math.abs(a)*u?(o<0&&(u=-u),r=u*a/o,n=u):(a<0&&(l=-l),r=l,n=l*o/a);return{x:i+r,y:s+n}},buildLayerMatrix:function(e){var t=d_.map(d_.range(g_(e)+1),(function(){return[]}));return d_.forEach(e.nodes(),(function(r){var n=e.node(r),i=n.rank;d_.isUndefined(i)||(t[i][n.order]=r)})),t},normalizeRanks:function(e){var t=d_.min(d_.map(e.nodes(),(function(t){return e.node(t).rank})));d_.forEach(e.nodes(),(function(r){var n=e.node(r);d_.has(n,"rank")&&(n.rank-=t)}))},removeEmptyRanks:function(e){var t=d_.min(d_.map(e.nodes(),(function(t){return e.node(t).rank}))),r=[];d_.forEach(e.nodes(),(function(n){var i=e.node(n).rank-t;r[i]||(r[i]=[]),r[i].push(n)}));var n=0,i=e.graph().nodeRankFactor;d_.forEach(r,(function(t,r){d_.isUndefined(t)&&r%i!=0?--n:n&&d_.forEach(t,(function(t){e.node(t).rank+=n}))}))},addBorderNode:function(e,t,r,n){var i={width:0,height:0};arguments.length>=4&&(i.rank=r,i.order=n);return __(e,"border",i,t)},maxRank:g_,partition:function(e,t){var r={lhs:[],rhs:[]};return d_.forEach(e,(function(e){t(e)?r.lhs.push(e):r.rhs.push(e)})),r},time:function(e,t){var r=d_.now();try{return t()}finally{console.log(e+" time: "+(d_.now()-r)+"ms")}},notime:function(e,t){return t()}};function __(e,t,r,n){var i;do{i=d_.uniqueId(n)}while(e.hasNode(i));return r.dummy=t,e.setNode(i,r),i}function g_(e){return d_.max(d_.map(e.nodes(),(function(t){var r=e.node(t).rank;if(!d_.isUndefined(r))return r})))}var y_=$p,m_=p_,b_={run:function(e){e.graph().dummyChains=[],y_.forEach(e.edges(),(function(t){!function(e,t){var r,n,i,s=t.v,a=e.node(s).rank,o=t.w,l=e.node(o).rank,u=t.name,c=e.edge(t),h=c.labelRank;if(l===a+1)return;for(e.removeEdge(t),i=0,++a;a<l;++i,++a)c.points=[],n={width:0,height:0,edgeLabel:c,edgeObj:t,rank:a},r=m_.addDummyNode(e,"edge",n,"_d"),a===h&&(n.width=c.width,n.height=c.height,n.dummy="edge-label",n.labelpos=c.labelpos),e.setEdge(s,r,{weight:c.weight},u),0===i&&e.graph().dummyChains.push(r),s=r;e.setEdge(s,o,{weight:c.weight},u)}(e,t)}))},undo:function(e){y_.forEach(e.graph().dummyChains,(function(t){var r,n=e.node(t),i=n.edgeLabel;for(e.setEdge(n.edgeObj,i);n.dummy;)r=e.successors(t)[0],e.removeNode(t),i.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(i.x=n.x,i.y=n.y,i.width=n.width,i.height=n.height),t=r,n=e.node(t)}))}};var v_=$p,x_={longestPath:function(e){var t={};v_.forEach(e.sources(),(function r(n){var i=e.node(n);if(v_.has(t,n))return i.rank;t[n]=!0;var s=v_.min(v_.map(e.outEdges(n),(function(t){return r(t.w)-e.edge(t).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),i.rank=s}))},slack:function(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}};var E_=$p,w_=Dp.Graph,A_=x_.slack,C_=function(e){var t,r,n=new w_({directed:!1}),i=e.nodes()[0],s=e.nodeCount();n.setNode(i,{});for(;R_(n,e)<s;)t=k_(n,e),r=n.hasNode(t.v)?A_(e,t):-A_(e,t),S_(n,e,r);return n};function R_(e,t){return E_.forEach(e.nodes(),(function r(n){E_.forEach(t.nodeEdges(n),(function(i){var s=i.v,a=n===s?i.w:s;e.hasNode(a)||A_(t,i)||(e.setNode(a,{}),e.setEdge(n,a,{}),r(a))}))})),e.nodeCount()}function k_(e,t){return E_.minBy(t.edges(),(function(r){if(e.hasNode(r.v)!==e.hasNode(r.w))return A_(t,r)}))}function S_(e,t,r){E_.forEach(e.nodes(),(function(e){t.node(e).rank+=r}))}var T_=$p,O_=C_,I_=x_.slack,N_=x_.longestPath,L_=Dp.alg.preorder,V_=Dp.alg.postorder,P_=p_.simplify,D_=B_;function B_(e){e=P_(e),N_(e);var t,r=O_(e);for(j_(r),M_(r,e);t=F_(r);)H_(r,e,t,U_(r,e,t))}function M_(e,t){var r=V_(e,e.nodes());r=r.slice(0,r.length-1),T_.forEach(r,(function(r){!function(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=G_(e,t,r)}(e,t,r)}))}function G_(e,t,r){var n=e.node(r).parent,i=!0,s=t.edge(r,n),a=0;return s||(i=!1,s=t.edge(n,r)),a=s.weight,T_.forEach(t.nodeEdges(r),(function(s){var o,l,u=s.v===r,c=u?s.w:s.v;if(c!==n){var h=u===i,d=t.edge(s).weight;if(a+=h?d:-d,o=r,l=c,e.hasEdge(o,l)){var f=e.edge(r,c).cutvalue;a+=h?-f:f}}})),a}function j_(e,t){arguments.length<2&&(t=e.nodes()[0]),z_(e,{},1,t)}function z_(e,t,r,n,i){var s=r,a=e.node(n);return t[n]=!0,T_.forEach(e.neighbors(n),(function(i){T_.has(t,i)||(r=z_(e,t,r,i,n))})),a.low=s,a.lim=r++,i?a.parent=i:delete a.parent,r}function F_(e){return T_.find(e.edges(),(function(t){return e.edge(t).cutvalue<0}))}function U_(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var s=e.node(n),a=e.node(i),o=s,l=!1;s.lim>a.lim&&(o=a,l=!0);var u=T_.filter(t.edges(),(function(t){return l===W_(e,e.node(t.v),o)&&l!==W_(e,e.node(t.w),o)}));return T_.minBy(u,(function(e){return I_(t,e)}))}function H_(e,t,r,n){var i=r.v,s=r.w;e.removeEdge(i,s),e.setEdge(n.v,n.w,{}),j_(e),M_(e,t),function(e,t){var r=T_.find(e.nodes(),(function(e){return!t.node(e).parent})),n=L_(e,r);n=n.slice(1),T_.forEach(n,(function(r){var n=e.node(r).parent,i=t.edge(r,n),s=!1;i||(i=t.edge(n,r),s=!0),t.node(r).rank=t.node(n).rank+(s?i.minlen:-i.minlen)}))}(e,t)}function W_(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}B_.initLowLimValues=j_,B_.initCutValues=M_,B_.calcCutValue=G_,B_.leaveEdge=F_,B_.enterEdge=U_,B_.exchangeEdges=H_;var Y_=x_.longestPath,X_=C_,q_=D_,K_=function(e){switch(e.graph().ranker){case"network-simplex":default:$_(e);break;case"tight-tree":!function(e){Y_(e),X_(e)}(e);break;case"longest-path":Z_(e)}};var Z_=Y_;function $_(e){q_(e)}var J_=$p,Q_=function(e){var t=function(e){var t={},r=0;function n(i){var s=r;J_.forEach(e.children(i),n),t[i]={low:s,lim:r++}}return J_.forEach(e.children(),n),t}(e);J_.forEach(e.graph().dummyChains,(function(r){for(var n=e.node(r),i=n.edgeObj,s=function(e,t,r,n){var i,s,a=[],o=[],l=Math.min(t[r].low,t[n].low),u=Math.max(t[r].lim,t[n].lim);i=r;do{i=e.parent(i),a.push(i)}while(i&&(t[i].low>l||u>t[i].lim));s=i,i=n;for(;(i=e.parent(i))!==s;)o.push(i);return{path:a.concat(o.reverse()),lca:s}}(e,t,i.v,i.w),a=s.path,o=s.lca,l=0,u=a[l],c=!0;r!==i.w;){if(n=e.node(r),c){for(;(u=a[l])!==o&&e.node(u).maxRank<n.rank;)l++;u===o&&(c=!1)}if(!c){for(;l<a.length-1&&e.node(u=a[l+1]).minRank<=n.rank;)l++;u=a[l]}e.setParent(r,u),r=e.successors(r)[0]}}))};var eg=$p,tg=p_,rg={run:function(e){var t=tg.addDummyNode(e,"root",{},"_root"),r=function(e){var t={};function r(n,i){var s=e.children(n);s&&s.length&&eg.forEach(s,(function(e){r(e,i+1)})),t[n]=i}return eg.forEach(e.children(),(function(e){r(e,1)})),t}(e),n=eg.max(eg.values(r))-1,i=2*n+1;e.graph().nestingRoot=t,eg.forEach(e.edges(),(function(t){e.edge(t).minlen*=i}));var s=function(e){return eg.reduce(e.edges(),(function(t,r){return t+e.edge(r).weight}),0)}(e)+1;eg.forEach(e.children(),(function(a){ng(e,t,i,s,n,r,a)})),e.graph().nodeRankFactor=i},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,eg.forEach(e.edges(),(function(t){e.edge(t).nestingEdge&&e.removeEdge(t)}))}};function ng(e,t,r,n,i,s,a){var o=e.children(a);if(o.length){var l=tg.addBorderNode(e,"_bt"),u=tg.addBorderNode(e,"_bb"),c=e.node(a);e.setParent(l,a),c.borderTop=l,e.setParent(u,a),c.borderBottom=u,eg.forEach(o,(function(o){ng(e,t,r,n,i,s,o);var c=e.node(o),h=c.borderTop?c.borderTop:o,d=c.borderBottom?c.borderBottom:o,f=c.borderTop?n:2*n,p=h!==d?1:i-s[a]+1;e.setEdge(l,h,{weight:f,minlen:p,nestingEdge:!0}),e.setEdge(d,u,{weight:f,minlen:p,nestingEdge:!0})})),e.parent(a)||e.setEdge(t,l,{weight:0,minlen:i+s[a]})}else a!==t&&e.setEdge(t,a,{weight:0,minlen:r})}var ig=$p,sg=p_,ag=function(e){ig.forEach(e.children(),(function t(r){var n=e.children(r),i=e.node(r);if(n.length&&ig.forEach(n,t),ig.has(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var s=i.minRank,a=i.maxRank+1;s<a;++s)og(e,"borderLeft","_bl",r,i,s),og(e,"borderRight","_br",r,i,s)}}))};function og(e,t,r,n,i,s){var a={width:0,height:0,rank:s,borderType:t},o=i[t][s-1],l=sg.addDummyNode(e,"border",a,r);i[t][s]=l,e.setParent(l,n),o&&e.setEdge(o,l,{weight:1})}var lg=$p,ug={adjust:function(e){var t=e.graph().rankdir.toLowerCase();"lr"!==t&&"rl"!==t||cg(e)},undo:function(e){var t=e.graph().rankdir.toLowerCase();"bt"!==t&&"rl"!==t||function(e){lg.forEach(e.nodes(),(function(t){dg(e.node(t))})),lg.forEach(e.edges(),(function(t){var r=e.edge(t);lg.forEach(r.points,dg),lg.has(r,"y")&&dg(r)}))}(e);"lr"!==t&&"rl"!==t||(!function(e){lg.forEach(e.nodes(),(function(t){fg(e.node(t))})),lg.forEach(e.edges(),(function(t){var r=e.edge(t);lg.forEach(r.points,fg),lg.has(r,"x")&&fg(r)}))}(e),cg(e))}};function cg(e){lg.forEach(e.nodes(),(function(t){hg(e.node(t))})),lg.forEach(e.edges(),(function(t){hg(e.edge(t))}))}function hg(e){var t=e.width;e.width=e.height,e.height=t}function dg(e){e.y=-e.y}function fg(e){var t=e.x;e.x=e.y,e.y=t}var pg=$p,_g=function(e){var t={},r=pg.filter(e.nodes(),(function(t){return!e.children(t).length})),n=pg.max(pg.map(r,(function(t){return e.node(t).rank}))),i=pg.map(pg.range(n+1),(function(){return[]}));function s(r){if(!pg.has(t,r)){t[r]=!0;var n=e.node(r);i[n.rank].push(r),pg.forEach(e.successors(r),s)}}var a=pg.sortBy(r,(function(t){return e.node(t).rank}));return pg.forEach(a,s),i};var gg=$p,yg=function(e,t){for(var r=0,n=1;n<t.length;++n)r+=mg(e,t[n-1],t[n]);return r};function mg(e,t,r){for(var n=gg.zipObject(r,gg.map(r,(function(e,t){return t}))),i=gg.flatten(gg.map(t,(function(t){return gg.sortBy(gg.map(e.outEdges(t),(function(t){return{pos:n[t.w],weight:e.edge(t).weight}})),"pos")})),!0),s=1;s<r.length;)s<<=1;var a=2*s-1;s-=1;var o=gg.map(new Array(a),(function(){return 0})),l=0;return gg.forEach(i.forEach((function(e){var t=e.pos+s;o[t]+=e.weight;for(var r=0;t>0;)t%2&&(r+=o[t+1]),o[t=t-1>>1]+=e.weight;l+=e.weight*r}))),l}var bg=$p;var vg=$p;var xg=$p,Eg=p_;function wg(e,t,r){for(var n;t.length&&(n=xg.last(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}var Ag=$p,Cg=function(e,t){return bg.map(t,(function(t){var r=e.inEdges(t);if(r.length){var n=bg.reduce(r,(function(t,r){var n=e.edge(r),i=e.node(r.v);return{sum:t.sum+n.weight*i.order,weight:t.weight+n.weight}}),{sum:0,weight:0});return{v:t,barycenter:n.sum/n.weight,weight:n.weight}}return{v:t}}))},Rg=function(e,t){var r={};return vg.forEach(e,(function(e,t){var n=r[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};vg.isUndefined(e.barycenter)||(n.barycenter=e.barycenter,n.weight=e.weight)})),vg.forEach(t.edges(),(function(e){var t=r[e.v],n=r[e.w];vg.isUndefined(t)||vg.isUndefined(n)||(n.indegree++,t.out.push(r[e.w]))})),function(e){var t=[];function r(e){return function(t){t.merged||(vg.isUndefined(t.barycenter)||vg.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&function(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight);t.weight&&(r+=t.barycenter*t.weight,n+=t.weight);e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}function n(t){return function(r){r.in.push(t),0==--r.indegree&&e.push(r)}}for(;e.length;){var i=e.pop();t.push(i),vg.forEach(i.in.reverse(),r(i)),vg.forEach(i.out,n(i))}return vg.map(vg.filter(t,(function(e){return!e.merged})),(function(e){return vg.pick(e,["vs","i","barycenter","weight"])}))}(vg.filter(r,(function(e){return!e.indegree})))},kg=function(e,t){var r=Eg.partition(e,(function(e){return xg.has(e,"barycenter")})),n=r.lhs,i=xg.sortBy(r.rhs,(function(e){return-e.i})),s=[],a=0,o=0,l=0;n.sort((u=!!t,function(e,t){return e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:u?t.i-e.i:e.i-t.i})),l=wg(s,i,l),xg.forEach(n,(function(e){l+=e.vs.length,s.push(e.vs),a+=e.barycenter*e.weight,o+=e.weight,l=wg(s,i,l)}));var u;var c={vs:xg.flatten(s,!0)};o&&(c.barycenter=a/o,c.weight=o);return c},Sg=function e(t,r,n,i){var s=t.children(r),a=t.node(r),o=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};o&&(s=Ag.filter(s,(function(e){return e!==o&&e!==l})));var c=Cg(t,s);Ag.forEach(c,(function(r){if(t.children(r.v).length){var s=e(t,r.v,n,i);u[r.v]=s,Ag.has(s,"barycenter")&&(a=r,o=s,Ag.isUndefined(a.barycenter)?(a.barycenter=o.barycenter,a.weight=o.weight):(a.barycenter=(a.barycenter*a.weight+o.barycenter*o.weight)/(a.weight+o.weight),a.weight+=o.weight))}var a,o}));var h=Rg(c,n);!function(e,t){Ag.forEach(e,(function(e){e.vs=Ag.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(h,u);var d=kg(h,i);if(o&&(d.vs=Ag.flatten([o,d.vs,l],!0),t.predecessors(o).length)){var f=t.node(t.predecessors(o)[0]),p=t.node(t.predecessors(l)[0]);Ag.has(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+f.order+p.order)/(d.weight+2),d.weight+=2}return d};var Tg=$p,Og=Dp.Graph,Ig=function(e,t,r){var n=function(e){var t;for(;e.hasNode(t=Tg.uniqueId("_root")););return t}(e),i=new Og({compound:!0}).setGraph({root:n}).setDefaultNodeLabel((function(t){return e.node(t)}));return Tg.forEach(e.nodes(),(function(s){var a=e.node(s),o=e.parent(s);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(i.setNode(s),i.setParent(s,o||n),Tg.forEach(e[r](s),(function(t){var r=t.v===s?t.w:t.v,n=i.edge(r,s),a=Tg.isUndefined(n)?0:n.weight;i.setEdge(r,s,{weight:e.edge(t).weight+a})})),Tg.has(a,"minRank")&&i.setNode(s,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))})),i};var Ng=$p;var Lg=$p,Vg=_g,Pg=yg,Dg=Sg,Bg=Ig,Mg=function(e,t,r){var n,i={};Ng.forEach(r,(function(r){for(var s,a,o=e.parent(r);o;){if((s=e.parent(o))?(a=i[s],i[s]=o):(a=n,n=o),a&&a!==o)return void t.setEdge(a,o);o=s}}))},Gg=Dp.Graph,jg=p_,zg=function(e){var t=jg.maxRank(e),r=Fg(e,Lg.range(1,t+1),"inEdges"),n=Fg(e,Lg.range(t-1,-1,-1),"outEdges"),i=Vg(e);Hg(e,i);for(var s,a=Number.POSITIVE_INFINITY,o=0,l=0;l<4;++o,++l){Ug(o%2?r:n,o%4>=2),i=jg.buildLayerMatrix(e);var u=Pg(e,i);u<a&&(l=0,s=Lg.cloneDeep(i),a=u)}Hg(e,s)};function Fg(e,t,r){return Lg.map(t,(function(t){return Bg(e,t,r)}))}function Ug(e,t){var r=new Gg;Lg.forEach(e,(function(e){var n=e.graph().root,i=Dg(e,n,r,t);Lg.forEach(i.vs,(function(t,r){e.node(t).order=r})),Mg(e,r,i.vs)}))}function Hg(e,t){Lg.forEach(t,(function(t){Lg.forEach(t,(function(t,r){e.node(t).order=r}))}))}var Wg=$p,Yg=Dp.Graph,Xg=p_,qg=function(e){var t,r=Xg.buildLayerMatrix(e),n=Wg.merge(Kg(e,r),Zg(e,r)),i={};Wg.forEach(["u","d"],(function(s){t="u"===s?r:Wg.values(r).reverse(),Wg.forEach(["l","r"],(function(r){"r"===r&&(t=Wg.map(t,(function(e){return Wg.values(e).reverse()})));var a=("u"===s?e.predecessors:e.successors).bind(e),o=Qg(e,t,n,a),l=ey(e,t,o.root,o.align,"r"===r);"r"===r&&(l=Wg.mapValues(l,(function(e){return-e}))),i[s+r]=l}))}));var s=ty(e,i);return ry(i,s),ny(i,e.graph().align)};function Kg(e,t){var r={};return Wg.reduce(t,(function(t,n){var i=0,s=0,a=t.length,o=Wg.last(n);return Wg.forEach(n,(function(t,l){var u=function(e,t){if(e.node(t).dummy)return Wg.find(e.predecessors(t),(function(t){return e.node(t).dummy}))}(e,t),c=u?e.node(u).order:a;(u||t===o)&&(Wg.forEach(n.slice(s,l+1),(function(t){Wg.forEach(e.predecessors(t),(function(n){var s=e.node(n),a=s.order;!(a<i||c<a)||s.dummy&&e.node(t).dummy||$g(r,n,t)}))})),s=l+1,i=c)})),n})),r}function Zg(e,t){var r={};function n(t,n,i,s,a){var o;Wg.forEach(Wg.range(n,i),(function(n){o=t[n],e.node(o).dummy&&Wg.forEach(e.predecessors(o),(function(t){var n=e.node(t);n.dummy&&(n.order<s||n.order>a)&&$g(r,t,o)}))}))}return Wg.reduce(t,(function(t,r){var i,s=-1,a=0;return Wg.forEach(r,(function(o,l){if("border"===e.node(o).dummy){var u=e.predecessors(o);u.length&&(i=e.node(u[0]).order,n(r,a,l,s,i),a=l,s=i)}n(r,a,r.length,i,t.length)})),r})),r}function $g(e,t,r){if(t>r){var n=t;t=r,r=n}var i=e[t];i||(e[t]=i={}),i[r]=!0}function Jg(e,t,r){if(t>r){var n=t;t=r,r=n}return Wg.has(e[t],r)}function Qg(e,t,r,n){var i={},s={},a={};return Wg.forEach(t,(function(e){Wg.forEach(e,(function(e,t){i[e]=e,s[e]=e,a[e]=t}))})),Wg.forEach(t,(function(e){var t=-1;Wg.forEach(e,(function(e){var o=n(e);if(o.length){o=Wg.sortBy(o,(function(e){return a[e]}));for(var l=(o.length-1)/2,u=Math.floor(l),c=Math.ceil(l);u<=c;++u){var h=o[u];s[e]===e&&t<a[h]&&!Jg(r,e,h)&&(s[h]=e,s[e]=i[e]=i[h],t=a[h])}}}))})),{root:i,align:s}}function ey(e,t,r,n,i){var s={},a=function(e,t,r,n){var i=new Yg,s=e.graph(),a=function(e,t,r){return function(n,i,s){var a,o=n.node(i),l=n.node(s),u=0;if(u+=o.width/2,Wg.has(o,"labelpos"))switch(o.labelpos.toLowerCase()){case"l":a=-o.width/2;break;case"r":a=o.width/2}if(a&&(u+=r?a:-a),a=0,u+=(o.dummy?t:e)/2,u+=(l.dummy?t:e)/2,u+=l.width/2,Wg.has(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":a=l.width/2;break;case"r":a=-l.width/2}return a&&(u+=r?a:-a),a=0,u}}(s.nodesep,s.edgesep,n);return Wg.forEach(t,(function(t){var n;Wg.forEach(t,(function(t){var s=r[t];if(i.setNode(s),n){var o=r[n],l=i.edge(o,s);i.setEdge(o,s,Math.max(a(e,t,n),l||0))}n=t}))})),i}(e,t,r,i),o=i?"borderLeft":"borderRight";function l(e,t){for(var r=a.nodes(),n=r.pop(),i={};n;)i[n]?e(n):(i[n]=!0,r.push(n),r=r.concat(t(n))),n=r.pop()}return l((function(e){s[e]=a.inEdges(e).reduce((function(e,t){return Math.max(e,s[t.v]+a.edge(t))}),0)}),a.predecessors.bind(a)),l((function(t){var r=a.outEdges(t).reduce((function(e,t){return Math.min(e,s[t.w]-a.edge(t))}),Number.POSITIVE_INFINITY),n=e.node(t);r!==Number.POSITIVE_INFINITY&&n.borderType!==o&&(s[t]=Math.max(s[t],r))}),a.successors.bind(a)),Wg.forEach(n,(function(e){s[e]=s[r[e]]})),s}function ty(e,t){return Wg.minBy(Wg.values(t),(function(t){var r=Number.NEGATIVE_INFINITY,n=Number.POSITIVE_INFINITY;return Wg.forIn(t,(function(t,i){var s=function(e,t){return e.node(t).width}(e,i)/2;r=Math.max(t+s,r),n=Math.min(t-s,n)})),r-n}))}function ry(e,t){var r=Wg.values(t),n=Wg.min(r),i=Wg.max(r);Wg.forEach(["u","d"],(function(r){Wg.forEach(["l","r"],(function(s){var a,o=r+s,l=e[o];if(l!==t){var u=Wg.values(l);(a="l"===s?n-Wg.min(u):i-Wg.max(u))&&(e[o]=Wg.mapValues(l,(function(e){return e+a})))}}))}))}function ny(e,t){return Wg.mapValues(e.ul,(function(r,n){if(t)return e[t.toLowerCase()][n];var i=Wg.sortBy(Wg.map(e,n));return(i[1]+i[2])/2}))}var iy=$p,sy=p_,ay=qg;var oy=$p,ly=h_,uy=b_,cy=K_,hy=p_.normalizeRanks,dy=Q_,fy=p_.removeEmptyRanks,py=rg,_y=ag,gy=ug,yy=zg,my=function(e){(function(e){var t=sy.buildLayerMatrix(e),r=e.graph().ranksep,n=0;iy.forEach(t,(function(t){var i=iy.max(iy.map(t,(function(t){return e.node(t).height})));iy.forEach(t,(function(t){e.node(t).y=n+i/2})),n+=i+r}))})(e=sy.asNonCompoundGraph(e)),iy.forEach(ay(e),(function(t,r){e.node(r).x=t}))},by=p_,vy=Dp.Graph,xy=function(e,t){var r=t&&t.debugTiming?by.time:by.notime;r("layout",(function(){var t=r(" buildLayoutGraph",(function(){return function(e){var t=new vy({multigraph:!0,compound:!0}),r=Iy(e.graph());return t.setGraph(oy.merge({},wy,Oy(r,Ey),oy.pick(r,Ay))),oy.forEach(e.nodes(),(function(r){var n=Iy(e.node(r));t.setNode(r,oy.defaults(Oy(n,Cy),Ry)),t.setParent(r,e.parent(r))})),oy.forEach(e.edges(),(function(r){var n=Iy(e.edge(r));t.setEdge(r,oy.merge({},Sy,Oy(n,ky),oy.pick(n,Ty)))})),t}(e)}));r(" runLayout",(function(){!function(e,t){t(" makeSpaceForEdgeLabels",(function(){!function(e){var t=e.graph();t.ranksep/=2,oy.forEach(e.edges(),(function(r){var n=e.edge(r);n.minlen*=2,"c"!==n.labelpos.toLowerCase()&&("TB"===t.rankdir||"BT"===t.rankdir?n.width+=n.labeloffset:n.height+=n.labeloffset)}))}(e)})),t(" removeSelfEdges",(function(){!function(e){oy.forEach(e.edges(),(function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}}))}(e)})),t(" acyclic",(function(){ly.run(e)})),t(" nestingGraph.run",(function(){py.run(e)})),t(" rank",(function(){cy(by.asNonCompoundGraph(e))})),t(" injectEdgeLabelProxies",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);if(r.width&&r.height){var n=e.node(t.v),i={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};by.addDummyNode(e,"edge-proxy",i,"_ep")}}))}(e)})),t(" removeEmptyRanks",(function(){fy(e)})),t(" nestingGraph.cleanup",(function(){py.cleanup(e)})),t(" normalizeRanks",(function(){hy(e)})),t(" assignRankMinMax",(function(){!function(e){var t=0;oy.forEach(e.nodes(),(function(r){var n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=oy.max(t,n.maxRank))})),e.graph().maxRank=t}(e)})),t(" removeEdgeLabelProxies",(function(){!function(e){oy.forEach(e.nodes(),(function(t){var r=e.node(t);"edge-proxy"===r.dummy&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))}))}(e)})),t(" normalize.run",(function(){uy.run(e)})),t(" parentDummyChains",(function(){dy(e)})),t(" addBorderSegments",(function(){_y(e)})),t(" order",(function(){yy(e)})),t(" insertSelfEdges",(function(){!function(e){var t=by.buildLayerMatrix(e);oy.forEach(t,(function(t){var r=0;oy.forEach(t,(function(t,n){var i=e.node(t);i.order=n+r,oy.forEach(i.selfEdges,(function(t){by.addDummyNode(e,"selfedge",{width:t.label.width,height:t.label.height,rank:i.rank,order:n+ ++r,e:t.e,label:t.label},"_se")})),delete i.selfEdges}))}))}(e)})),t(" adjustCoordinateSystem",(function(){gy.adjust(e)})),t(" position",(function(){my(e)})),t(" positionSelfEdges",(function(){!function(e){oy.forEach(e.nodes(),(function(t){var r=e.node(t);if("selfedge"===r.dummy){var n=e.node(r.e.v),i=n.x+n.width/2,s=n.y,a=r.x-i,o=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{x:i+a,y:s},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],r.label.x=r.x,r.label.y=r.y}}))}(e)})),t(" removeBorderNodes",(function(){!function(e){oy.forEach(e.nodes(),(function(t){if(e.children(t).length){var r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),s=e.node(oy.last(r.borderLeft)),a=e.node(oy.last(r.borderRight));r.width=Math.abs(a.x-s.x),r.height=Math.abs(i.y-n.y),r.x=s.x+r.width/2,r.y=n.y+r.height/2}})),oy.forEach(e.nodes(),(function(t){"border"===e.node(t).dummy&&e.removeNode(t)}))}(e)})),t(" normalize.undo",(function(){uy.undo(e)})),t(" fixupEdgeLabelCoords",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);if(oy.has(r,"x"))switch("l"!==r.labelpos&&"r"!==r.labelpos||(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset}}))}(e)})),t(" undoCoordinateSystem",(function(){gy.undo(e)})),t(" translateGraph",(function(){!function(e){var t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,s=e.graph(),a=s.marginx||0,o=s.marginy||0;function l(e){var s=e.x,a=e.y,o=e.width,l=e.height;t=Math.min(t,s-o/2),r=Math.max(r,s+o/2),n=Math.min(n,a-l/2),i=Math.max(i,a+l/2)}oy.forEach(e.nodes(),(function(t){l(e.node(t))})),oy.forEach(e.edges(),(function(t){var r=e.edge(t);oy.has(r,"x")&&l(r)})),t-=a,n-=o,oy.forEach(e.nodes(),(function(r){var i=e.node(r);i.x-=t,i.y-=n})),oy.forEach(e.edges(),(function(r){var i=e.edge(r);oy.forEach(i.points,(function(e){e.x-=t,e.y-=n})),oy.has(i,"x")&&(i.x-=t),oy.has(i,"y")&&(i.y-=n)})),s.width=r-t+a,s.height=i-n+o}(e)})),t(" assignNodeIntersects",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r,n,i=e.edge(t),s=e.node(t.v),a=e.node(t.w);i.points?(r=i.points[0],n=i.points[i.points.length-1]):(i.points=[],r=a,n=s),i.points.unshift(by.intersectRect(s,r)),i.points.push(by.intersectRect(a,n))}))}(e)})),t(" reversePoints",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);r.reversed&&r.points.reverse()}))}(e)})),t(" acyclic.undo",(function(){ly.undo(e)}))}(t,r)})),r(" updateInputGraph",(function(){!function(e,t){oy.forEach(e.nodes(),(function(r){var n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,t.children(r).length&&(n.width=i.width,n.height=i.height))})),oy.forEach(e.edges(),(function(r){var n=e.edge(r),i=t.edge(r);n.points=i.points,oy.has(i,"x")&&(n.x=i.x,n.y=i.y)})),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,t)}))}))};var Ey=["nodesep","edgesep","ranksep","marginx","marginy"],wy={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Ay=["acyclicer","ranker","rankdir","align"],Cy=["width","height"],Ry={width:0,height:0},ky=["minlen","weight","width","height","labeloffset"],Sy={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Ty=["labelpos"];function Oy(e,t){return oy.mapValues(oy.pick(e,t),Number)}function Iy(e){var t={};return oy.forEach(e,(function(e,r){t[r.toLowerCase()]=e})),t}var Ny=$p,Ly=p_,Vy=Dp.Graph;var Py={graphlib:Dp,layout:xy,debug:{debugOrdering:function(e){var t=Ly.buildLayerMatrix(e),r=new Vy({compound:!0,multigraph:!0}).setGraph({});return Ny.forEach(e.nodes(),(function(t){r.setNode(t,{label:t}),r.setParent(t,"layer"+e.node(t).rank)})),Ny.forEach(e.edges(),(function(e){r.setEdge(e.v,e.w,{},e.name)})),Ny.forEach(t,(function(e,t){var n="layer"+t;r.setNode(n,{rank:"same"}),Ny.reduce(e,(function(e,t){return r.setEdge(e,t,{style:"invis"}),t}))})),r}},util:{time:p_.time,notime:p_.notime},version:"0.8.5"};class Dy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let n=ve(e.children[0]);if(!n)continue;var r=new Py.graphlib.Graph;r.setGraph({edgesep:t._edgeSep}),r.setDefaultEdgeLabel((function(){return{}})),r.graph().rankdir=this._getDagreDirection(t.direction);let i=new Map;for(let t of e.children){let e=t.dataScope.getAttributeValue(Ee);i.set(e,e+""),r.setNode(e,{label:t.text?t.text:"",width:t.bounds.width,height:t.bounds.height})}for(let e of n.linkList)r.setEdge(e.source,e.target);Py.layout(r);const s={};let a=Math.min(...r.nodes().map((e=>r.node(e).y))),o=Math.min(...r.nodes().map((e=>r.node(e).x))),l=t.left-o,u=t.top-a;for(const e of r.nodes())s[e]={x:r.node(e).x+l,y:r.node(e).y+u};for(let t of e.children){let e=t.dataScope.getAttributeValue(Ee);ze(t,s[i.get(e)].x-t.x,s[i.get(e)].y-t.y)}}let n=j(e,!0);for(let e of n)p(e)}_getDagreDirection(e){switch(e){case Q.Left2Right:return"LR";case Q.Right2Left:return"RL";case Q.Top2Bottom:return"TB";case Q.Bottom2Top:return"BT"}}}class By extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)continue;let n=me(e.children[0]);if(!n)continue;let i=t.hierarchy(n._data),s=Math.max(...e.children.map((e=>e.bounds.width))),a=Math.max(...e.children.map((e=>e.bounds.height))),o=r.orientation==J.HORIZONTAL?[r.height,r.width]:[r.width,r.height],l=t.tree().nodeSize([s,a]).size(o)(i);this._apply(l,r,e)}p(e)}_apply(e,t,r){let n,i,s=r.children.filter((t=>t.dataScope.getAttributeValue(Ee)==e.data[Ee]))[0];switch(t.orientation){case J.HORIZONTAL:n=e.y+t.left,i=e.x+t.top;break;case J.VERTICAL:n=e.x+t.left,i=t.top+e.y}if(ze(s,n-s.x,i-s.y),e.children&&e.children.length>0)for(let n of e.children)this._apply(n,t,r)}}class My extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=this._inputVars.filter((e=>e.type===q.ORDER))[0].element,n=r.layout,i=n.width?n.width:r.bounds.width,s=n.height?n.height:r.bounds.height,a=void 0===n.top?r.bounds.top:n.top,o=void 0===n.left?r.bounds.left:n.left,l=t.hierarchy(r).sum((e=>e.type===Ot.Rect?e.width*e.height:0));t.treemap().size([i,s])(l),this._apply(l,o,a);let u=j(e,!0);for(let e of u)p(e)}_apply(e,t,r){if(e.data.type==Ot.Collection&&e.children)for(let n of e.children)this._apply(n,t,r);else e.data.type==Ot.Rect&&(e.data.resize(e.x1-e.x0,e.y1-e.y0),ze(e.data,e.x0+t-e.data.left,e.y0+r-e.data.top))}}class Gy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){if(!e.layout)continue;if(0===e.children.length)continue;let t=me(e.children[0]);if(!t)continue;let r={};for(let t of e.children)r[t.dataScope.getAttributeValue(Ee)]=t;e.children[0].type===Ot.Rect?this._layoutRects(t.getRoot(),t,r):this._layoutArcs(t.getRoot(),t,r)}p(e)}_layoutArcs(e,t,r){let n=t.getChildren(e);if(0===n.length)return;let i=r[e[Ee]],s=!i||i.type!=Ot.Arc&&i.type!=Ot.Pie?60:i.startAngle;for(let e=0;e<n.length;e++){let i=n[e],a=r[i[Ee]];if(a.type===Ot.Arc){let e=de(s+a.angle);a.setAngles(s,e),s=e}this._layoutArcs(i,t,r)}}_layoutRects(e,t,r){let n=t.getChildren(e);if(0===n.length)return;let i,s,a=r[e[Ee]];this._direction,Q.Top2Bottom,i=a.left,s=a.bottom;for(let e=0;e<n.length;e++){let a=n[e],o=r[a[Ee]];ze(o,i-o.left,s-o.top),i+=o.width,this._layoutRects(a,t,r)}}}class jy extends X{constructor(e,t){super(e),this._trigger=t}get trigger(){return this._trigger}}class zy extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar.condEncoding,t=e.trigger,r=T(e.target),n={};if(t.type===$e.ELEMENT){let i=t.elements.length>0?t.elements:[void 0];r.forEach((t=>n[t.id]=i.map((r=>e._targetEval(r,t))).some((e=>e))))}t.type===$e.MOUSE&&r.forEach((r=>n[r.id]=e._targetEval(t.mouseEvent,r))),e.evalResult=n}}class Fy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let r=360/e.children.length;for(let[n,i]of e.children.entries())ze(i,t.x+t.radius-i.bounds.x,t.y-i.bounds.y),i._rotate=[n*r,t.x,t.y]}let r=j(e,!0);for(let e of r)p(e)}}class Uy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let n of r){let r=n.layout;if(!r)continue;let i=r._tree?r._tree._data:me(n.children[0])._data,s=t.hierarchy(i);if(r.isRadial()){s=t.cluster().size([ce(r.angleExtent),r.radius])(s),r._d3Root=s;const e=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));for(let t of n.children){let n=t.dataScope.getAttributeValue(Ee);ze(t,r.x-t.bounds.x,r.y-e.get(n)[1]-t.bounds.y),t._rotate=[he(e.get(n)[0]),r.x,r.y]}}else if(r.orientation===J.VERTICAL){!r.width||r.width;let i=r.height?r.height:600;s=t.cluster().nodeSize([e.bounds.width+1,i/(s.height+1)])(s),r._d3Root=s;const a=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));let o=1/0,l=-o;s.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),r._x0=o;for(let e of n.children){let t=e.dataScope.getAttributeValue(Ee);ze(e,a.get(t)[0]-o+r.left-e.bounds.x,a.get(t)[1]+r.top-e.bounds.y)}}else if(r.orientation===J.HORIZONTAL){!r.width||r.width;let i=r.height?r.height:600;s=t.cluster().nodeSize([e.bounds.height,i/(s.height+1)])(s),r._d3Root=s;const a=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));let o=1/0,l=-o;s.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),r._x0=o;for(let e of n.children){let t=e.dataScope.getAttributeValue(Ee);ze(e,a.get(t)[1]+r.left-e.bounds.x,a.get(t)[0]-o+r.top-e.bounds.y)}}}let n=j(e,!0);for(let e of n)p(e)}}class Hy{constructor(){this._variables={},this._operators={},this._edges=[]}toJSON(){const e=this._edges.map((e=>({from:e.fromNode.id,to:e.toNode.id,isDirected:e.isDirected}))),t={};for(const e in this._variables)t[e]=Object.values(this._variables[e]).map((e=>{let t={id:e.id,type:e.type,incoming:e.incomingEdges.map((e=>e.id)),outgoing:e.outgoingEdges.map((e=>e.id)),undirected:e.undirectedEdges.map((e=>e.id))};return"ChannelVar"===e.type?(t.channel=e.channel,t.element=e.element):"BoundsVar"===e.type||"DataScopeVar"===e.type?t.element=e.element:"DomainVar"===e.type?(t.scale=e.scale,t.attrValues=e.attrValues):"FieldVar"===e.type?(t.field=e.field,t.dataset=e.dataset):"PropertyVar"===e.type?(t.property=e.property,t.element=e.element):t.scale=e.scale,t}));const r={};for(const e in this._operators)r[e]=Object.values(this._operators[e]).map((e=>{let t={id:e.id,type:e.type,inputVars:e.inputVars.map((e=>e.id)),outputVar:e.outputVar?e.outputVar.id:null};return e.type===Y.DOMAIN_BUILDER?t.aggregator=e.aggregator:e.type===Y.SCALE_BUILDER&&(t.channel=e.channel),t}));return{edges:e,variables:t,operators:r}}getVariable(e,...t){if(Object.values(q).indexOf(e)<0)throw new Error("Variable Type Not Known");let r=this.findVariable(e,t);if(r)return r;switch(e){case q.CHANNEL:r=new Oe(e,t[0],t[1]),"vertex"!=t[1].type&&"segment"!=t[1].type||this._connectPathElement2Size(t[1],r);break;case q.PROPERTY:r=new Qe(e,t[0],t[1]);break;case q.ATTRIBUTE:r=new zt(e,t[0],t[1]);break;case q.ITEMS:r=new dr(e,t[0],t[1]);break;case q.DOMAIN:r=new Ft(e,t[0]);break;case q.DATASCOPE:r=new Mt(e,t[0]);break;case q.BOUNDS:r=new Bt(e,t[0]);break;case q.ORDER:r=new fr(e,t[0]);break;case q.SCALE:r=new Ke(e,t[0]);break;case q.COND_ENCODING:r=new K(e,t[0]);break;case q.AFFIXATION:r=new _r(e,t[0]);break;case q.ALIGNMENT:r=new Er(e,t[0]);break;case q.TRIGGER:r=new jy(e,t[0])}return e in this._variables||(this._variables[e]={}),this._variables[e][r.id]=r,r}_connectPathElement2Size(e,t){let r=e.parent,n=t.channel,i=this.findVariable(q.CHANNEL,["x"===n?"width":"height",r]);if(i){let e=i.incomingDataflow;e||(e=this.createOneWayDependency(Y.CONDUIT)),this.connect(t,e),this.connect(e,i)}}findIncomingDataflowOperator(e,t){return t.incomingDataflow&&t.incomingDataflow.type===e?t.incomingDataflow:void 0}getIncomingDataflowOperator(e,t){let r=this.findIncomingDataflowOperator(e,t);return r||this.createOneWayDependency(e)}getOutgoingDataflowOperator(e,t){for(let r of t.outgoingEdges)if(r.toNode instanceof W&&r.toNode.type===e)return r.toNode;return this.createOneWayDependency(e)}createOneWayDependency(e,...t){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let r;switch(e){case Y.EVAL_BBOX:r=new qt(e);break;case Y.AFFIXER:r=new pr(e);break;case Y.DOMAIN_BUILDER:r=new Ut(e,t[0]);break;case Y.SCALE_BUILDER:r=new Xt(e,t[0]);break;case Y.ENCODER:r=new Je(e,t[0]);break;case Y.AXIS_PATH_PLACER:r=new nr(e);break;case Y.AXIS_TICKS_PLACER:r=new ir(e);break;case Y.AXIS_LABELS_PLACER:r=new sr(e);break;case Y.AXIS_TITLE_PLACER:r=new vr(e);break;case Y.LINK_PLACER:r=new Ar(e);break;case Y.GRID_LAYOUT:r=new ar(e);break;case Y.STACK_LAYOUT:r=new lr(e);break;case Y.PACK_LAYOUT:r=new br(e);break;case Y.FORCE_LAYOUT:r=new wr(e);break;case Y.DIRECTED_LAYOUT:r=new Dy(e);break;case Y.TIDY_TREE_LAYOUT:r=new By(e);break;case Y.TREEMAP_LAYOUT:r=new My(e);break;case Y.STRATA_LAYOUT:r=new Gy(e);break;case Y.CIRCULAR_LAYOUT:r=new Fy(e);break;case Y.CLUSTER_LAYOUT:r=new Uy(e);break;case Y.GRIDLINES_PLACER:r=new or(e);break;case Y.BIN_TRANSFORMER:r=new cr(e);break;case Y.FILTER_TRANSFORMER:r=new hr(e);break;case Y.KDE_TRANSFORMER:r=new gr(e);break;case Y.TARGET_EVALUATOR:r=new zy(e);break;case Y.CONDUIT:default:r=new ur(e)}return e in this._operators||(this._operators[e]={}),this._operators[e][r.id]=r,r}createMultiWayDependency(e){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let t;return Y.ALIGNER,t=new xr(e),e in this._operators||(this._operators[e]={}),this._operators[e][t.id]=t,t}connect(e,t,r=!0){if(e instanceof X&&t instanceof W){if(!t.inputVars.includes(e)){const n=new jt(e,t,r);this._edges.push(n),e.outgoingEdges.push(n),t.inputVars.push(e)}}else if(e instanceof W&&t instanceof X){if(!e.outputVars.includes(t)){const n=new jt(e,t,r);this._edges.push(n),e.outputVars.push(t),t.incomingEdges.push(n)}}else if(e instanceof X&&t instanceof Gt){if(!t.vars.includes(e)){const r=new jt(e,t,!1);this._edges.push(r),t.vars.push(e),t.edges.push(e),e.undirectedEdges.push(r)}}else{if(!(e instanceof Gt&&t instanceof X))throw new Error("An edge must connect a variable and an operator.");if(!e.vars.includes(t)){const r=new jt(t,e,!1);this._edges.push(r),e.vars.push(t),e.edges.push(t),t.undirectedEdges.push(r)}}}disconnectChannelVarFromBBoxOperator(e){let t=this.getOutgoingDataflowOperator(Y.EVAL_BBOX,e),r=e.outgoingEdges.find((r=>r.fromNode===e&&r.toNode===t));r&&this.disconnect(e,t,r)}disconnect(e,t,r){if(e instanceof X&&t instanceof W){let n=e.outgoingEdges.findIndex((e=>e===r));n>=0&&(this._edges.splice(this._edges.indexOf(r),1),e.outgoingEdges.splice(n,1));let i=t.inputVars.findIndex((t=>t==e));i>=0&&t.inputVars.splice(i,1)}else if(e instanceof W&&t instanceof X){let n=t.incomingEdges.findIndex((e=>e===r));n>=0&&(this._edges.splice(this._edges.indexOf(r),1),t.incomingEdges.splice(n,1));let i=e.outputVars.findIndex((e=>e===t));i>=0&&e.outputVars.splice(i,1)}}deleteVariable(e){for(let t=e.incomingEdges.length-1;t>=0;t--){let r=e.incomingEdges[t],n=r.fromNode;this.disconnect(n,e,r),n.isIsolated()&&delete this._operators[n.type][n.id]}for(let t=e.outgoingEdges.length-1;t>=0;t--){let r=e.outgoingEdges[t],n=r.toNode;this.disconnect(e,n,r),n.isIsolated()&&delete this._operators[n.type][n.id]}delete this._variables[e.type][e.id]}deleteOperator(e){for(let t=e.outputVars.length-1;t>=0;t--){let r=e.outputVars[t],n=r.incomingEdges.find((t=>t.fromNode===e&&t.toNode===r));this.disconnect(e,r,n),r.isIsolated()&&delete this._variables[r.type][r.id]}for(let t=e.inputVars.length-1;t>=0;t--){let r=e.inputVars[t],n=r.outgoingEdges.find((t=>t.fromNode===r&&t.toNode===e));this.disconnect(r,e,n),r.isIsolated()&&delete this._variables[r.type][r.id]}delete this._operators[e.type][e.id]}addInteraction(e){}_dfs(e,t,r){if(e&&0!==e.outgoingEdges.length)for(let n of e.outgoingEdges)n.isDirected&&(t.push(n.toNode),this._dfs(n.toNode.outputVars[0],t.slice(),r));else r.push(t)}processChange(e,t,...r){let n=this.findVariable(e,r);if(n){for(let e of n.outgoingEdges)if(e.isDirected){let r=e.toNode;r.run();let n=r.outputVars;if(n.length>0){let e=n[0];switch(e.type){case q.ITEMS:this.processChange(e.type,t,e.predicate,e.dataset);break;case q.ATTRIBUTE:this.processChange(e.type,t,e.attribute,e.dataset);break;case q.BOUNDS:case q.ORDER:this.processChange(e.type,t,e.element);break;case q.CHANNEL:this.processChange(e.type,t,e.channel,e.element);break;case q.PROPERTY:this.processChange(e.type,t,e.property,e.element);break;case q.SCALE:case q.DOMAIN:this.processChange(e.type,t,e.encodings[0]);break;case q.COND_ENCODING:this.processChange(e.type,t,e.condEncoding)}}}for(let e of n.undirectedEdges)t.push(e.operator)}else console.warn("Unable to find variables matching the described change: ",e,r)}findVariable(e,t){if(!(e in this._variables))return null;let r=Object.values(this._variables[e]);switch(e){case q.CHANNEL:return r.find((e=>e.channel==t[0]&&De(e.element)==De(t[1])));case q.PROPERTY:return r.find((e=>e.property==t[0]&&e.element==t[1]));case q.COND_ENCODING:return r.find((e=>e.condEncoding==t[0]));case q.AFFIXATION:return r.find((e=>e.affixation==t[0]));case q.ATTRIBUTE:return r.find((e=>e.attribute==t[0]&&e.dataset==t[1]));case q.ITEMS:return r.find((e=>e.dataset==t[1]));case q.DOMAIN:case q.SCALE:return r.find((e=>e.encodings.includes(t[0])));case q.TRIGGER:return r.find((e=>e.trigger===t[0]));case q.DATASCOPE:default:return t[0].classId?r.find((e=>De(e.element)==De(t[0]))):r.find((e=>e.element.id==t[0].id))}}findVariablesByElement(e){let t={};for(let r in this._variables){let n=Object.values(this._variables[r]).filter((t=>t.element&&De(t.element)==De(e)));n.length>0&&(t[r]=n)}return t}}function Wy(e){return!(!E(e)&&e.type!=Ot.Glyph||e.dataScope)||e.type===Ot.Collection&&e.firstChild.dataScope.numTuples>1}function Yy(e,t,r,n){let i=n.getAttributeType(r);if(i!=Ae.String&&i!=Ae.Date&&i!=Ae.Integer)throw new Error("Repeat only works on a string or date attribute: "+r+" is "+i);if(!function(e){if(Array.isArray(e)){if(1===e.length)return Wy(e[0]);for(let t of e)if(!E(t)||t.dataScope)return!1;return!0}return Wy(e)}(t))throw new Error("The "+t.type+" is not repeatable");return function(e,t,r,n){let i=n.getAttributeSummary(r).unique.map((e=>t.dataScope?t.dataScope.cross(r,e):new pe(n).cross(r,e)));i=i.filter((e=>!e.isEmpty()));let s=Rt(e);s.dataScope=t.dataScope?t.dataScope.clone():new pe(n),s.addChild(t),t._refBounds||(t._refBounds=t.bounds.clone());for(let e=1;e<i.length;e++){let e=St(t);s.addChild(e)}return s.children.forEach(((e,t)=>e.dataScope=i[t])),s}(e,t,r,n)}class Xy{constructor(e,t,r,n,i){this._elem=e,this._channel=t,this._attribute=r,this._aggregator=n,this._includeZero=i.includeZero,this._flipScale=i.flipScale,this._mapping=i.mapping,this._preferredRangeExtent=i.rangeExtent,this._preferredDomain=void 0,this._scaleType=i.scaleType,this._colorScheme=i.scheme,this._forLegend=i.forLegend,this._scales=[],this._elemGroups=[],this._elem2scale={},this._refElements=[],["width","height","radius","angle","thickness","radialDistance","strokeWidth","area"].indexOf(this._channel)>=0&&(this._includeZero=!0),this.initialize()}initialize(){this._scales=[];let e=T(this._elem);if(this._elemGroups=[],"x"===this._channel||"y"===this._channel){let t=this._elem,r=B(t);if(r.layout&&r.layout.type==U.GRID){let e="x"===this._channel?r.layout.getElementsByCol(!0,t):r.layout.getElementsByRow(!0,t);for(let t of e)this._createScaleForElems(t)}else if("vertex"===this._elem.type&&(Ge(this._elem.parent)||Me(this._elem.parent))){let e=T(this._elem.parent).map((e=>O(this._elem,[e])));for(let t of e)this._createScaleForElems(t)}else this._createScaleForElems(e)}else if("angle"===this._channel){let t=e.reduce(((e,t)=>{const r=t.parent.id;return e[r]||(e[r]=[]),e[r].push(t),e}),{}),r=Object.values(t);for(let e of r)this._createScaleForElems(e)}else this._createScaleForElems(e)}_createScaleForElems(e){this._elemGroups.push(e);var t=function(e){if(e.scaleType)return new Ht(e.scaleType);if("text"===e.channel)return new Ht("ordinal");switch(Vt(e.element).getAttributeType(e.attribute)){case Ae.Boolean:break;case Ae.Date:return new Ht("time");case Ae.String:if("count"==e.aggregator)return new Ht("linear");if(e.channel.indexOf("Color")>=0){let t={};return t.scheme=e.colorScheme?e.colorScheme:"schemeCategory10",new Ht("ordinalColor",t)}return"src"===e.channel?new Ht("ordinal"):new Ht("point");default:return["strokeColor","fillColor","fillGradient"].indexOf(e.channel)>=0?e.mapping?new Ht("linear"):new Ht("sequentialColor",{scheme:e.colorScheme}):new Ht("linear")}}(this);this._scales.push(t);for(let r of e)this._elem2scale[r.id]=t}getScale(e){return this._elem2scale[e.id]}getElements(e){let t=this._scales.indexOf(e);return this._elemGroups[t]}get element(){return this._elem}get channel(){return this._channel}get attribute(){return this._attribute}get dataTable(){return Vt(this._elem)}get aggregator(){return this._aggregator}hasMultipleScales(){return this._scales.length>0}get scales(){return this._scales}getRangeStart(e){let t=this.getScale(e);return Math.min(...t.range)}getRangeExtent(e){return this.getScale(e).rangeExtent}get scaleType(){return this._scaleType}set scaleType(e){this._scaleType=e}set domain(e){this._preferredDomain=e;for(let t of this._scales)t._scale.domain(e);for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.DOMAIN,this)}set rangeExtent(e){for(let t of this._scales)t.rangeExtent=e;for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.PROPERTY,et.RANGE_EXTENT,this)}set includeZero(e){this._includeZero=e;for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.PROPERTY,et.INCLUDE_ZERO,this)}get includeZero(){return this._includeZero}set flipScale(e){this._flipScale=e,this._elem.scene.onChange(q.PROPERTY,et.FLIP_SCALE,this)}get flipScale(){return this._flipScale}set mapping(e){this._mapping=e}get mapping(){return this._mapping}set colorScheme(e){this._colorScheme=e}get colorScheme(){return this._colorScheme}addRefElement(e){this._refElements.indexOf(e)<0&&this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}class qy{constructor(e,t,r,n){this._trigger=e,this._target=t.target,this._targetEval=r,this._efxFn=n,this._evalResult={}}get trigger(){return this._trigger}get target(){return this._target}get channels(){return Object.keys(this._rules)}get evalResult(){return this._evalResult}set evalResult(e){this._evalResult=e}}class Ky extends ie{constructor(e,t,r,n,i){super(i),this._type=Ot.Gridlines,this._id=this._type+Nt(),this._attribute=t,this._channel=e,this._scale=r,this._elems=n,"strokeColor"in i||(this.styles.strokeColor="#ddd"),"opacity"in i||(this.styles.opacity=.5),"values"in i?this._values=i.values:this._scale?this._values=Qt(this._scale,this._channel,this._elems):this._values=this._elems.map((e=>e.dataScope.getAttributeValue(this._attribute))),this._lines=[]}get type(){return this._type}get id(){return this._id}getSVGPathData(){let e="";if("radialDistance"===this._channel)for(let t of this._lines)e+="M "+t.x+" "+t.y+" m -"+t.r+" 0 a "+t.r+" "+t.r+" 0 1 0 "+2*t.r+" 0 a "+t.r+" "+t.r+" 0 1 0 -"+2*t.r+" 0 ";else for(let t of this._lines)e+=["M",t.x1,t.y1].join(" ")+[" L",t.x2,t.y2].join(" ")+" ";return e}_updateBounds(){if("radialDistance"===this._channel){let e=this._lines.map((e=>new c(e.x-e.r,e.y-e.y,2*e.r,2*e.r)));this._bounds=h(e)}else{let e=this._lines.map((e=>e.x1)).concat(this._lines.map((e=>e.x2))),t=this._lines.map((e=>e.y1)).concat(this._lines.map((e=>e.y2))),r=Math.min(...e),n=Math.max(...e),i=Math.min(...t),s=Math.max(...t);this._bounds=new c(r,i,n-r,s-i)}}get elements(){return this._elems}get values(){return this._values}get channel(){return this._channel}get attribute(){return this._attribute}get scale(){return this._scale}get lines(){return this._lines}set lines(e){this._lines=e}}class Zy extends F{constructor(e){super(),this.type=U.STACK,this._orientation=e.orientation,this._direction=e.direction,this._left=e.left,this._top=e.top,this._horzCellAlignment="horzCellAlignment"in e&&e.horzCellAlignment?e.horzCellAlignment:_.LEFT,this._vertCellAlignment="vertCellAlignment"in e&&e.vertCellAlignment?e.vertCellAlignment:_.BOTTOM,this._gap="gap"in e?e.gap:0}clone(){let e=new Zy({orientation:this._orientation,direction:this._direction,left:this._left,top:this._top});return e._horzCellAlignment=this._horzCellAlignment,e._vertCellAlignment=this._vertCellAlignment,e}get horzCellAlignment(){return this._horzCellAlignment}get vertCellAlignment(){return this._vertCellAlignment}get orientation(){return this._orientation}set horzCellAlignment(e){this._horzCellAlignment=e}set vertCellAlignment(e){this._vertCellAlignment=e}set orientation(e){this._orientation=e}}function $y(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=Ae.String&&s!=Ae.Date&&s!=Ae.Integer)throw new Error("Divide only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Ot.Line,Ot.Circle,Ot.Rect,Ot.Area,Ot.Ring,Ot.Pie,Ot.Path].indexOf(e.type)<0)return!1;if(e.type===Ot.Path&&(e.closed||!e.firstVertex.dataScope))return!1;if(e.dataScope){let t=T(e);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 Ot.Line:case Ot.Path:return;case Ot.Circle:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR&&l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];let d=360/u.length,f=90;for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:0,outerRadius:r.radius,x:r.x,y:r.y,startAngle:de(f-d*(e+1)),endAngle:de(f-d*e),strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.ANGULAR,direction:ee.CLOCKWISE}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Rect:return function(e,t,r,n,i){let s,a=T(t),o=r||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);let l=i.getUniqueAttributeValues(n).map((e=>new pe(i).cross(n,e))),u={},c=0;for(let e of a){let t=l;e.dataScope&&(t=l.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>c&&(c=t.length),u[e.id]=t}let h,d=Ct({type:"rect",left:t.bounds.left,top:t.bounds.top,width:t.bounds.width,height:t.bounds.height,strokeColor:t.strokeColor,fillColor:t.fillColor,strokeWidth:t.strokeWidth,opacity:t.opacity});d._classId=d.id;for(let r of a){let n=Rt(e);null==h&&(h=n.id),n._classId=h,n.dataScope=r.dataScope?r.dataScope:new pe(i);let a=r.parent;a.removeChild(r),delete e._itemMap[r.id];let l=u[r.id],c=r.bounds,f=c.left,p=c.top,_=o==J.HORIZONTAL?c.width/l.length:c.width,g=o==J.HORIZONTAL?c.height:c.height/l.length;for(let e=0;e<l.length;e++){let t=St(d);t.dataScope=l[e],t.resize(_,g),t._updateBounds(),t._refBounds=t.bounds.clone(),n.addChild(t)}a.addChild(n),n._layout=new Zy({orientation:o,left:f,top:p}),n._layout.group=n,r==t&&(s=n)}return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Area:return function(e,t,r,n,i){let s,a=T(t),o=r||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);let l,u=i.getUniqueAttributeValues(n).map((e=>new pe(i).cross(n,e))),c={},h=0;for(let e of a){let t=u;e.dataScope&&(t=u.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>h&&(h=t.length),c[e.id]=t}let d=Object.assign({},t.styles);d.vertices=t.vertices.map((e=>[e.x,e.y])),d.type="area",d.orientation=t.orientation,d.baseline=t.baseline;let f=Ct(d);if(f._classId=f.id,t.vertices)for(let e=0;e<t.vertices.length;e++)t.vertices[e].dataScope&&(f.vertices[e]._dataScope=t.vertices[e].dataScope.clone());for(let r of a){let n=Rt(e);null==l&&(l=n.id),n._classId=l,n.dataScope=r.dataScope?r.dataScope:new pe(i);let a=r.parent;a.removeChild(r),delete e._itemMap[r.id];let u=c[r.id],h=r.bounds,d=h.left,p=h.top,_=o==J.HORIZONTAL?h.width/u.length:h.width,g=o==J.HORIZONTAL?h.height:h.height/u.length;for(let e=0;e<u.length;e++){let t=St(f);t.dataScope=u[e],console.log(t.dataScope),t.resize(_,g),t._updateBounds(),t._refBounds=t.bounds.clone(),n.addChild(t);for(let e of t.vertices)e.dataScope?e.dataScope=t.dataScope.merge(e.dataScope):e.dataScope=t.dataScope}a.addChild(n),n._layout=new Zy({orientation:o,left:d,top:p}),n._layout.group=n,r==t&&(s=n)}return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Ring:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR&&l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];let d=360/u.length,f=90;for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:r.innerRadius,outerRadius:r.outerRadius,x:r.x,y:r.y,startAngle:de(f-d*(e+1)),endAngle:de(f-d*e),strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.ANGULAR,direction:ee.CLOCKWISE}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Pie:case Ot.Arc:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR||l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:r.innerRadius+e*(r.outerRadius-r.innerRadius)/u.length,outerRadius:r.innerRadius+(e+1)*(r.outerRadius-r.innerRadius)/u.length,x:r.x,y:r.y,startAngle:r.startAngle,endAngle:r.endAngle,strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.RADIAL}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i)}}function Jy(e,t,r,n){let i=n.getAttributeType(r);if(i!=Ae.String&&i!=Ae.Date&&i!=Ae.Integer)throw new Error("Repopulate only works on a string or date attribute: "+r+" is "+i);let s=T(t);for(let e of s){let t=n.getAttributeSummary(r).unique.map((t=>e.dataScope?e.dataScope.cross(r,t):new pe(n).cross(r,t)));t=t.filter((e=>!e.isEmpty()));let i=e.children.length-t.length,s=t.length-e.children.length;for(let t=0;t<i;t++)e.removeChildAt(e.children.length-1);let a=e._children.length;for(let t=0;t<s;t++){let r=St(e._children[t%a]);e.addChild(r)}e.children.forEach(((e,r)=>e.dataScope=t[r]))}}class Qy{constructor(e,t){this._elem=e,this._base=t,this._id=em(e,t),this._channels={},this._attribute=void 0}get id(){return this._id}get element(){return this._elem}get base(){return this._base}get channels(){return Object.keys(this._channels)}addChannel(e,t){let r={};r.elemAnchor="elementAnchor"in t?t.elementAnchor:"x"==e||"angle"==e?_.CENTER:_.MIDDLE,r.baseAnchor="baseAnchor"in t?t.baseAnchor:"x"==e||"angle"==e?_.CENTER:_.MIDDLE,r.offset="offset"in t?t.offset:0,"attribute"in t&&(this._attribute=t.attribute),this._channels[e]=r}hasChannel(e){return e in this._channels}getElementAnchor(e){return this._channels[e].elemAnchor}getBaseAnchor(e){return this._channels[e].baseAnchor}getOffset(e){return this._channels[e].offset}get attribute(){return this._attribute?this._attribute:Pt}}function em(e,t){return(e.classId?e.classId:e.id)+":"+(t.classId?t.classId:t.id)}function tm(e,t,r,n){e.dataScope&&e.dataScope.dataTable.hasAttribute(t)?function(e,t,r,n){if(!e.dataScope.dataTable.hasAttribute(t))return void console.warn("Cannot order collection children by an non-existent attribute",t);let i;if(t===Pt)i=(e,r)=>parseInt(e.dataScope.getAttributeValue(t).substring(1))-parseInt(r.dataScope.getAttributeValue(t).substring(1));else{switch(e.children[0].dataScope.getAttributeType(t)){case Ae.Date:break;case Ae.Number:case Ae.Integer:i=(e,r)=>e.dataScope.aggregateNumericalAttribute(t)-r.dataScope.aggregateNumericalAttribute(t);break;case Ae.String:i=n?(e,r)=>n.indexOf(e.dataScope.getAttributeValue(t))-n.indexOf(r.dataScope.getAttributeValue(t)):(e,r)=>e.dataScope.getAttributeValue(t)<r.dataScope.getAttributeValue(t)?-1:1}}e.children.sort(i),r&&e.children.reverse()}(e,t,r,n):function(e,t,r){let n;switch(t){case"x":case"y":case"width":case"height":n=(e,r)=>e.bounds[t]-r.bounds[t];break;default:n=(e,r)=>e[t]-r[t]}e._children.sort(n),r&&e.children.reverse()}(e,t,r),e._sortBy={property:t,descending:r,vals:n}}function rm(e,t,r,n){e.vertices[0].dataScope&&e.vertices[0].dataScope.dataTable.hasAttribute(t)?function(e,t,r,n){let i;if(t===Pt)i=(e,r)=>parseInt(e.dataScope.getAttributeValue(t).substring(1))-parseInt(r.dataScope.getAttributeValue(t).substring(1));else{switch(e.vertices[0].dataScope.getAttributeType(t)){case Ae.Date:break;case Ae.Number:case Ae.Integer:i=(e,r)=>e.dataScope.aggregateNumericalAttribute(t)-r.dataScope.aggregateNumericalAttribute(t);break;case Ae.String:i=n?(e,r)=>n.indexOf(e.dataScope.getAttributeValue(t))-n.indexOf(r.dataScope.getAttributeValue(t)):(e,r)=>e.dataScope.getAttributeValue(t)<r.dataScope.getAttributeValue(t)?-1:1}}e.vertices.sort(i),r&&e.vertices.reverse()}(e,t,r,n):function(e,t,r){let n=(e,r)=>e[t]-r[t];e.vertices.sort(n),r&&e.vertices.reverse()}(e,t,r),e._sortBy={property:t,descending:r,vals:n}}class nm extends F{constructor(e){super(),this.type=U.GRID,this._numCols=e.numCols,this._numRows=e.numRows,this._start="start"in e?e.start:$.TopLeft,this._direction="direction"in e?e.direction:Z.RowFirst,this._rowGap="rowGap"in e&&void 0!==e.rowGap?e.rowGap:5,this._colGap="colGap"in e&&void 0!==e.colGap?e.colGap:5,this._cellHorzAlignment="horzCellAlignment"in e&&H("h",e.horzCellAlignment)?e.horzCellAlignment:_.LEFT,this._cellVertAlignment="vertCellAlignment"in e&&H("v",e.vertCellAlignment)?e.vertCellAlignment:_.BOTTOM,this._numCols||this._numRows||(this._numRows=1),this._left=void 0,this._top=void 0,this._cellBounds=void 0,this._grid=void 0}get cellBounds(){return this._cellBounds}get numCols(){return this._numCols?this._numCols:this._numRows?Math.ceil(this.group.children.length/this._numRows):0}get numRows(){return this._numRows?this._numRows:this._numCols?Math.ceil(this.group.children.length/this._numCols):0}clone(){let e=new nm({numCols:this._numCols,numRows:this._numRows,start:this._start,direction:this._direction,colGap:this._colGap,rowGap:this._rowGap,horzCellAlignment:this._cellHorzAlignment,vertCellAlignment:this._cellVertAlignment});return e._left=this._left,e._top=this._top,this._cellBounds&&(e._cellBounds=this._cellBounds.map((e=>e.clone()))),e}getElementsByRow(e,t){let r=[],n=this.group.children;for(let t=0;t<this.numRows;t++){let i=this._grid[t].filter((e=>null!=e)).map((e=>n[e]));if(e){let e=[];for(let t of i)e=e.concat(j(t));r.push(e)}else r.push(i)}return t&&(r=this._filterElementsByExample(r,t)),r}getElementsByCol(e,t){let r=[],n=this.group.children,i=this._grid;for(let t=0;t<this.numCols;t++){let s=i.map((e=>e[t])).filter((e=>null!=e)).map((e=>n[e]));if(e){let e=[];for(let t of s)e=e.concat(j(t));r.push(e)}else r.push(s)}return t&&(r=this._filterElementsByExample(r,t)),r}getElementsByCell(e,t){let r=[],n=this.group.children;for(let t=0;t<n.length;t++)if(e){let e=j(n[t]);r.push(e)}else r.push(n[t]);return t&&(r=this._filterElementsByExample(r,t)),r}_filterElementsByExample(e,t){let r;return"vertex"===t.type?(r=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),r=r.map((e=>O(t,e)))):"segment"===t.type?(r=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),r=r.map((e=>I(t,e)))):r=e.map((e=>e.filter((e=>e.classId===t.classId)))),r}getIndex(e){let t=e;for(;t&&t.parent!==this.group;)t=t.parent;return this.group.children.indexOf(t)}getRowCol(e){let t,r;switch(this._direction){case Z.RowFirst:t=Math.floor(e/this.numCols),r=e%this.numCols;break;case Z.ColumnFirst:t=e%this.numRows,r=Math.floor(e/this.numRows);break;default:throw new Error("Invalid fill direction. Use 'row_first' or 'column_first'.")}return this._start.toLowerCase().includes("bottom")&&(t=this.numRows-1-t),this._start.toLowerCase().includes("right")&&(r=this.numCols-1-r),{row:t,col:r}}}class im extends _t{constructor(e,t){super(),this._type=Ot.Axis,this._id=this._type+Nt(),this._enc=e,this._textColor="textColor"in t?t.textColor:"#555",this._strokeColor="strokeColor"in t?t.strokeColor:"#555",this._fontSize="fontSize"in t?t.fontSize:"12px",this._x="x"in t?t.x:100,this._y="y"in t?t.y:100,this._showTitle=!("showTitle"in t)||t.showTitle,this._orientation="orientation"in t?t.orientation:J.VERTICAL,this._numberFormat=t.numberFormat?t.numberFormat:""}get attribute(){return this._enc.attribute}get channel(){return this._enc.channel}get attributeType(){return Vt(this._enc.element).getFieldType(this.attribute)}get orientation(){return this._orientation}get textColor(){return this._textColor}}class sm extends im{constructor(e,t){super(e,t),"numCols"in t||"numRows"in t?(this._numCols=t.numCols,this._numRows=t.numRows):this._orientation===J.VERTICAL?this._numCols=1:this._numRows=1,this._initialize()}_initialize(){let e=this._enc.element.scene,t=this._enc.attribute,r=this._enc.scales[0],n=new Lt(r.domain.map((e=>({category:e,value:r.map(e)})))),i=n.getUniqueAttributeValues("category").sort(((e,t)=>t.length-e.length))[0],s=this._enc.element,a=s instanceof ie&&s.closed?s.strokeWidth:0;if(this._orientation===J.VERTICAL){let r=0;this._showTitle&&(this.addChild(new Et({fillColor:this._textColor,fontSize:this._fontSize,text:t,x:this._x,y:this._y,anchor:["left","top"]})),r=parseFloat(this._fontSize)+5);let o=e.mark("rect",{top:this._y+2+r,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:s.strokeColor,opacity:s.opacity}),l=e.mark("text",{text:i,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+20,y:this._y+r+12+a,anchor:["left","bottom"]}),u=e.glyph(o,l),c=e.repeat(u,n);e.encode(l,{channel:"text",attribute:"category",forLegend:!0}),e.encode(o,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),c.layout=new nm({numCols:this._numCols,numRows:this._numRows}),this.addChild(c)}else{let t=e.mark("rect",{top:this._y,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:s.strokeColor,opacity:s.opacity}),r=e.mark("text",{text:i,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+15,y:this._y,anchor:["left","top"]}),o=e.glyph(t,r),l=e.repeat(o,n);e.encode(r,{channel:"text",attribute:"category",forLegend:!0}),e.encode(t,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),l.layout=new nm({numCols:this._numCols,numRows:this._numRows,colGap:15}),this.addChild(l)}}}class am extends im{constructor(e,t){super(e,t),this._initialize()}_initialize(){let e,r,n,i=this._enc.element.scene,s=this._enc.attribute;if(this._orientation==J.VERTICAL?(e=15,r=300):(e=300,r=15),this._showTitle){let t=i.mark("text",{fillColor:this._textColor,text:s,x:this._x+e/2,y:this._y,anchor:["center","middle"]});this.addChild(t),n=20}else n=0;let a,o=i.mark("rect",{top:this._y+n,left:this._x,width:e,height:r,strokeWidth:0,opacity:this._enc.element.opacity}),l=Object.values(this._enc.attrValues),u=[Math.min(...l),Math.max(...l)],c=this._enc.mapping,h=[],d=[],f=t.format(this._numberFormat);if(c){let t=Object.keys(c).map((e=>parseFloat(e))).sort(((e,t)=>e-t));this._orientation==J.VERTICAL?(a=new v({x1:0,y1:100,x2:0,y2:0}),t.forEach((t=>{let s=(t-u[0])/(u[1]-u[0]);a.addStop(100*s,c[t],1);let o=i.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+r-s*r+n,y2:this._y+r-s*r+n,strokeColor:this._strokeColor});d.push(o);let l=i.mark("text",{fillColor:this._textColor,text:this._numberFormat?f(t):t.toFixed(0),x:this._x+e+5+5,y:this._y+r-s*r+n,anchor:["left","middle"]});h.push(l)}))):(a=new v({x1:0,y1:0,x2:100,y2:0}),t.forEach((t=>{let s=(t-u[0])/(u[1]-u[0]);a.addStop(100*s,c[t],1);let o=i.mark("line",{x1:this._x+s*e,x2:this._x+s*e,y1:this._y+20-5+n,y2:this._y+r+5+n,strokeColor:this._strokeColor});d.push(o);let l=i.mark("text",{fillColor:this._textColor,text:this._numberFormat?f(t):t.toFixed(0),x:this._x+s*e,y:this._y+r+5+n,anchor:["center","top"]});h.push(l)})))}else{let t=this._enc.scales[0].domain,o=Vt(this._enc.element),l=o.getAttributeType(s),u=[],c=l===Ae.Date?o.getUniqueFieldValues(s):[...new Set(Object.values(this._enc.attrValues))];if(c.length<=10)u=c,u.sort(((e,t)=>e-t));else if(l===Ae.Date){c.sort(((e,t)=>e-t));for(let e=0;e<c.length;e+=Math.ceil(c.length/10))u.push(c[e])}else{let e=(t[1]-t[0])/9;for(let r=0;r<10;r++)u.push(t[0]+r*e)}let p=0,_=(u[u.length-1]-u[0])/u.length;for(;_<1;)_*=10,p++;u=u.map((e=>e.toFixed(p))),this._orientation==J.VERTICAL?(a=new v({x1:0,y1:100,x2:0,y2:0}),u.forEach((u=>{let c=(u-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scales[0].map(u),1);let p=i.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+r-c*r+n,y2:this._y+r-c*r+n,strokeColor:this._strokeColor});d.push(p);let _=i.mark("text",{fillColor:this._textColor,text:l===Ae.Date?o.getRawValue(s,u):this._numberFormat?f(u):u,x:this._x+e+5+5,y:this._y+r-c*r+n,anchor:["left","middle"]});h.push(_)}))):(a=new v({x1:0,y1:0,x2:100,y2:0}),u.forEach((u=>{let c=(u-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scale.map(u),1);let f=i.mark("line",{x1:this._x+c*e,x2:this._x+c*e,y1:this._y+r+n,y2:this._y+r+5+n,strokeColor:this._strokeColor});d.push(f);let p=i.mark("text",{fillColor:this._textColor,text:l===Ae.Date?o.getRawValue(s,u):u,x:this._x+c*e,y:this._y+r+5+n,anchor:["center","top"]});h.push(p)})))}o.styles.fillColor=a,this.addChild(o);for(let e of h)this.addChild(e);for(let e of d)this.addChild(e)}}class om extends _t{constructor(e){super(),this._type=Ot.Composite,this._id=e&&e.id?e.id:this._type+Nt()}addChild(e){let t=e.parent;super.addChild(e);let r=D(e)._depGraph;t&&at(t,e,r),ot(this,e,r)}}class lm{constructor(e,t,r){this._elems=e,this._channel=t,this._anchor=r}get elements(){return this._elems}get channel(){return this._channel}get anchor(){return this._anchor}}class um extends F{constructor(e){super(),this.type=U.STRATA,this._direction=e.direction,this._gap="gap"in e?e.gap:0}clone(){return new um({direction:this._direction,gap:this._gap})}}function cm(e,t,r,n,i,s){switch(t.type){case Ot.Circle:case Ot.Ring:return function(e,t,r,n,i,s){let a,o=r||te.OUTWARD,l=i||50;if(o!==te.INWARD&&o!==te.OUTWARD)throw"Unknown direction to stratify";let u,c=T(t,e),h=Array.isArray(s)?s:[s];if(n){let r=Rt(e);r.dataScope=void 0,null==u&&(u=r.id),r._classId=u;let n=c.map((e=>h[0].getNode(e.dataScope.getAttributeValue(Ee))));hm(c,n,h[0],r,t.classId?t.classId:t.id,400,350,o,l),a=r}else c.forEach(((r,n)=>{let i=Rt(e);i.dataScope=void 0,null==u&&(u=i.id),i._classId=u;let s=r.parent;dm(r,t.id,o,l,h[n],h[n].getRoot(),i,e,!0),i._layout=new um({direction:o}),i._layout.group=i,s.addChild(i),r===t&&(a=i)}));return a}(e,t,r,n,i,s);case Ot.Rect:return function(e,t,r,n,i,s){let a,o,l=r||Q.Top2Bottom,u=i||50;if(!Object.values(Q).includes(l))throw"Unknown direction to stratify";return T(t).forEach((r=>{let n=Rt(e);n.dataScope=void 0,null==o&&(o=n.id),n._classId=o;let i=r.parent;fm(r,t.id,l,u,s,s.getRoot(),n,e,!0),n._layout=new um({direction:l}),n._layout.group=n,i.addChild(n),r===t&&(a=n)})),a}(e,t,r,0,i,s)}}function hm(e,t,r,n,i,s,a,o,l){let u=t.map((e=>r.getParent(e))).filter(((e,t,r)=>r.findIndex((t=>t[Ee]===e[Ee]))===t));if(u=u.filter((e=>e!==r.getRoot())),0===u.length)return;let c=[];for(let t of u){let u,h,d,f=e.filter((e=>r.getParent(r.getNode(e.dataScope.getAttributeValue(Ee)))===t));if(f[0].type===Ot.Circle){let e=f.map((e=>C(s,a,e.bounds.x,e.bounds.y)-e.radius)),t=f.map((e=>C(s,a,e.bounds.x,e.bounds.y)+e.radius));d=o===te.OUTWARD?Math.max(...t):Math.min(...e)-l;let r=f.map((e=>fe(e.bounds.x,e.bounds.y,s,a))),n=f.map((e=>fe(s+C(s,a,e.bounds.x,e.bounds.y),a-e.radius,s,a))),i=r.map(((e,t)=>e-n[t])),c=r.map(((e,t)=>e+n[t])),p=i.concat(c);u=Math.min(...p),h=Math.max(...p)}else f[0].type===Ot.Arc&&(u=360,h=-360,f.forEach((e=>{let t=e.startAngle,r=e.endAngle;r<t&&(r+=360),u=Math.min(u,t),h=Math.max(h,r)})),u=de(u),h=de(h),d=o===te.OUTWARD?Math.max(...f.map((e=>e.outerRadius))):Math.min(...f.map((e=>e.innerRadius)))-l);let p=Ct({type:"arc",innerRadius:d,outerRadius:d+l,x:s,y:a,startAngle:de(u),endAngle:de(h),strokeColor:e[0].strokeColor,fillColor:e[0].fillColor,strokeWidth:e[0].strokeWidth,opacity:e[0].opacity});p._updateBounds(),p.dataScope=r.getNodeDataScope(t),p._classId=i,n.addChild(p),c.push(p)}hm(c,u,r,n,i,s,a,o,l)}function dm(e,t,r,n,i,s,a,o,l){l&&(e.dataScope=i.getNodeDataScope(s),e._classId=t);let u=i.getChildren(s);if(0===u.length)return;let c=e.type===Ot.Circle||e.type===Ot.Ring?60:e.startAngle,h=(e.type===Ot.Circle||e.type===Ot.Ring?360:e.angle)/u.length;for(let s=0;s<u.length;s++){let o,l;l=r===te.OUTWARD?e.type===Ot.Circle?e.radius:e.outerRadius:e.type===Ot.Circle?e.radius-n:e.innerRadius-n,o=Ct(360===h?{type:"ring",innerRadius:l,outerRadius:l+n,x:e.x,y:e.y,strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}:{type:"arc",innerRadius:l,outerRadius:l+n,x:e.x,y:e.y,startAngle:de(c+h*s),endAngle:de(c+h*(s+1)),strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}),o._updateBounds(),o.dataScope=i.getNodeDataScope(u[s]),o._classId=t+"_strata",a.addChild(o),dm(o,t,r,n,i,u[s],a)}}function fm(e,t,r,n,i,s,a,o,l){l&&(e.dataScope=i.getNodeDataScope(s),e._classId=t,a.addChild(e));let u,c,h,d=i.getChildren(s);if(0!==d.length){switch(r){case Q.Top2Bottom:case Q.Bottom2Top:case Q.Left2Right:case Q.Right2Left:}u=e.left,c=e.bottom,h=e.width/d.length;for(let s=0;s<d.length;s++){let o=St(e);ze(o,u-o.left,c-o.top),o.resize(h,n),o._updateBounds(),u+=h,o.dataScope=i.getNodeDataScope(d[s]),o._classId=t,a.addChild(o),fm(o,t,r,n,i,d[s],a)}}}class pm extends Ze{constructor(e,t,r,n){super(e,t),this._elem=r,this._cumulative=n,this._selector="class",this._elements=[]}get element(){return this._elem}get selector(){return this._selector}isCumulative(){return this._cumulative}get elements(){return this._elements}set elements(e){this._elements=e}}class _m extends Ze{constructor(e,t,r){super(e,t),this._key=r}get key(){return this._key}}class gm extends Ze{constructor(e,t,r){super(e,t),this._listener=r,this._elements=[]}get mouseEvent(){return this._mouseEvent}set mouseEvent(e){this._mouseEvent=e}get listener(){return this._listener}get elements(){return this._elements}set elements(e){this._elements=e}}class ym extends Ze{constructor(e,t,r){super(e,t),this._ctrlId=r}get id(){return this._ctrlId}}class mm extends _t{constructor(e){super(),this._itemMap={},this._type=Ot.Scene,this._id=e&&e.id?e.id:this._type+Nt(),e&&e.fillColor&&(this.fillColor=e.fillColor),this._encodings={},this._relations=[],this._triggers={},this._depGraph=new Hy}get depGraph(){return this._depGraph}get interactionTriggers(){return this._triggers}mark(e,t){if(Object.values(Tt).indexOf(e)<0)throw new Error("Mascot does not allow directly creating a "+e);let r=void 0===t?{}:t;r.type=e;let n=Ct(r);return null!==n&&(n._classId=n.id,this.addChild(n),this._itemMap[n.id]=n,tt(n,this._depGraph),ot(this,n,this._depGraph)),n}glyph(...e){let t=[];for(let r of e)t.push([r.parent,r]);let r=kt(e);if(null!==r){r._classId=r.id,this.addChild(r),this._itemMap[r.id]=r;for(let e of t)at(e[0],e[1],this._depGraph);!function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getIncomingDataflowOperator(Y.EVAL_BBOX,r);for(let r of e.children)t.connect(t.getVariable(q.BOUNDS,r),n);t.connect(n,r),n.run()}(r,this._depGraph),ot(this,r,this._depGraph)}return r}composite(){let e=new om;return null!==e&&(e._classId=e.id,this.addChild(e),this._itemMap[e.id]=e,function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.createOneWayDependency(Y.EVAL_BBOX);t.connect(n,o),t.connect(i,o),t.connect(s,o),t.connect(a,o),t.connect(o,r),o.run()}(e,this._depGraph),ot(this,e,this._depGraph)),e}attach(e,t){if(e.type==Ot.Glyph)for(let t of e.children)t._refBounds||(t._refBounds=t.bounds.clone());e.dataScope=new pe(t)}repeat(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ repeat by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do repeat. You must specify an element, a categorical data attribute and a data table");if(t instanceof ye||t instanceof be){if(!Array.isArray(e)||2!==e.length)throw new Error("To repeat with a tree or a network, you need to provide two marks, one for node and one for link")}else t instanceof Lt&&we(r.attribute,t);if(r.layout&&!(r.layout instanceof F))throw new Error("Invalid layout: "+r.layout)}(e,t,n),t instanceof ye||t instanceof be){let r=e[0].parent,n=e[1].parent,[i,s]=function(e,t,r,n){let i=n.nodeTable.getAttributeSummary(Ee).unique.map((e=>t.dataScope?t.dataScope.cross(Ee,e):new pe(n.nodeTable).cross(Ee,e))),s=Rt(e),a=Rt(e),o={};a.dataScope=t.dataScope?t.dataScope.clone():new pe(n.nodeTable),a.addChild(t);for(let e=1;e<i.length;e++){let e=St(t);a.addChild(e)}a.children.forEach(((e,t)=>{e.dataScope=i[t],e.links=[],o[e.dataScope.getAttributeValue(Ee)]=e}));let l=n.linkTable.getAttributeSummary(Pt).unique.map((e=>r.dataScope?r.dataScope.cross(Pt,e):new pe(n.linkTable).cross(Pt,e)));s.dataScope=r.dataScope?r.dataScope.clone():new pe(n.linkTable),s.addChild(r);for(let e=1;e<l.length;e++){let e=St(r);s.addChild(e)}s.children.forEach(((e,t)=>e.dataScope=l[t]));let u=n instanceof ye?"parent":"source",c=n instanceof ye?"child":"target";for(let e of s.children){let t=e.dataScope.getAttributeValue(u),r=e.dataScope.getAttributeValue(c),n=o[t],i=o[r];e.source=n,e.target=i,n.links.push(e),i.links.push(e)}return[a,s]}(this,e[0],e[1],t);return at(r,e[0],this._depGraph),at(n,e[1],this._depGraph),st(i,this._depGraph),st(s,this._depGraph),ot(i,e[0],this._depGraph),ot(i.parent,i,this._depGraph),ot(s,e[1],this._depGraph),ot(s.parent,s,this._depGraph),[i,s]}if(t instanceof Lt){let r=e.parent,i=Yy(this,e,n.attribute,t);return at(r,e,this._depGraph),st(i,this._depGraph),ot(i,e,this._depGraph),ot(i.parent,i,this._depGraph),n.layout&&(i.layout=n.layout),i}}divide(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ divide by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do divide. You must specify an element, a categorical data attribute and a data table");if(t instanceof Lt&&we(r.attribute,t),r.layout&&!(r.layout instanceof F))throw new Error("Invalid layout: "+r.layout)}(e,t,n),t instanceof ye||t instanceof be)throw"Not implemented";if(t instanceof Lt){let{newMark:r,collection:i}=$y(this,e,n.attribute,n.orientation,t);return rt(e,this._depGraph),tt(r,this._depGraph),st(i,this._depGraph),ot(i,r,this._depGraph),i.parent.type!==Ot.Scene&&ot(i.parent,i,this._depGraph),this.onChange(q.CHANNEL,"width",r),{newMark:r,collection:i}}}densify(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ densify by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do densification. You must specify an element, a categorical data attribute and a data table");t instanceof Lt&&we(r.attribute,t)}(e,t,n),t instanceof ye||t instanceof be)throw"Not implemented";if(t instanceof Lt){let r=Se(0,e,n.attribute,n.orientation,t);return rt(e,this._depGraph),tt(r,this._depGraph),r.parent.type!==Ot.Scene&&ot(r.parent,r,this._depGraph),this.onChange(q.CHANNEL,"width",r),r}}stratify(e,t,r){if(!(t instanceof ye||Array.isArray(t)&&t.every((e=>e instanceof ye))))throw"Cannot stratify on a non-tree dataset";if(![Ot.Circle,Ot.Rect,Ot.Ring].includes(e.type))throw"Cannot stratify elements that are not rects, circles, or rings";let n=r||{},i=n.direction,s=n.size,a=e.parent,o=cm(this,e,i,n.startFromLeaf,s,t);return at(a,e,this._depGraph),st(o,this._depGraph),o.children.length>0&&ot(o,o.firstChild,this._depGraph),ot(o.parent,o,this._depGraph),o}repopulate(e,t,r){e.dataScope=void 0;let n=e;for(let e in r){Jy(0,n,r[e],t);let i=Le(n.children[0],!0);for(let e of i){Ne(e,this),nt(e,this._depGraph);for(let t of e.refElements)er(t,this),it(t,this._depGraph);e.clearRefElements()}let s=T(n);for(let e of s)if(e.layout){for(let t of e.layout.refElements)er(t,this),it(t,this._depGraph);e.layout.clearRefElements()}n=n.children[0]}e.dataScope=new pe(t),this.onChange(q.CHANNEL,"width",e.children[0])}classify(e,t){let r=t||{};console.log("------ classify by",r.attribute," ----"),function(e,t,r,n){let i=T(t);for(let t of i){let i,s={},a=t.children;for(let e of a){let t=e.dataScope.getAttributeValue(r);t in s||(s[t]=[]),s[t].push(e)}let o=Vt(a[0]);for(let a in s){let l=Rt(e);t.addChild(l),void 0===i&&(i=l.id),l._classId=i,l.dataScope=t.dataScope?t.dataScope.cross(r,a):new pe(o).cross(r,a);for(let e of s[a])l.addChild(e);n&&(l._layout=n.clone(),l._layout.group=l)}}}(this,e,r.attribute,r.layout),at(e,e.firstChild.firstChild,this._depGraph),st(e.firstChild,this._depGraph),ot(e.firstChild,e.firstChild.firstChild,this._depGraph),ot(e,e.firstChild,this._depGraph),this.onChange(q.CHANNEL,"width",e.firstChild.firstChild)}affix(e,t,r,n){e.dataScope.dataTable!==e.dataScope.dataTable&&console.warn("Affix: elements and base elements are not created from the same table");let i=em(e,t),s=this._relations.find((e=>e.id===i));s||(s=new Qy(e,t),this._relations.push(s)),s.addChannel(r,n||{}),function(e,t){let r=t.getVariable(q.AFFIXATION,e),n=t.getOutgoingDataflowOperator(Y.AFFIXER,r);t.connect(r,n);for(let r of e.channels){let i=t.getVariable(q.CHANNEL,r,e.element),s=t.getVariable(q.CHANNEL,r,e.base);t.connect(s,n),t.connect(n,i)}n.run()}(s,this._depGraph)}align(e,t,r){let n=new lm(e,t,r);!function(e,t){let r=t.createMultiWayDependency(Y.ALIGNER),n=t.getVariable(q.ALIGNMENT,e);t.connect(n,r);for(let n of e.elements){let i=t.getVariable(q.CHANNEL,e.channel,n);t.connect(i,r)}r.run()}(n,this._depGraph),this._relations.push(n)}encode(e,t){if("rowId"===t.attribute&&(t.attribute=Pt),function(e,t){if(!e||!("channel"in t)||!("attribute"in t))throw new Error("Incomplete information to do encoding. You must specify an item, a categorical data attribute and a data table");let r=Vt(e);if(r.tree){let e=t.attribute;if(e.indexOf(".")>0&&!r.tree.nodeTable.hasAttribute(e.split(".")[1]))throw new Error("Data attribute does not exist in the data table")}else if(!r||!r.hasAttribute(t.attribute))throw new Error("Data attribute does not exist in the data table");if(!Object.values(Ie).includes(t.channel))throw new Error("Channel Not Supported")}(e,t),t.shareScale){let e=t.shareScale;if(e.channel!=t.channel&&e.channel.indexOf("Color")<0&&t.channel.indexOf("Color")<0)throw new Error("Cannot share scales between "+e.channel+" and "+t.channel+" encodings");t.scheme=t.shareScale.colorScheme}!function(e){let t;"vertex"===e.type&&e.parent.type===Ot.Area?t=e.parent:e.type===Ot.Area&&(t=e),t&&!t._refBounds&&T(t).forEach((e=>e._refBounds=e.bounds.clone()))}(e);let r=t.aggregator?t.aggregator:"sum";console.log("------ encode",t.channel,t.attribute," --");let n=Pe(e,t.channel);if(n&&t.attribute!==n.attribute){Ne(n,this),nt(n,this._depGraph);for(let e of n.refElements)er(e,this),it(e,this._depGraph);n.clearRefElements()}let i=new Xy(e,t.channel,t.attribute,r,t);return this._addAttributeEncoding(i),function(e,t,r){let n=e.attribute,i=e.channel,s=e.element,a=t.createOneWayDependency(Y.ENCODER);if(["width","height"].includes(e.channel)&&s.type===Ot.Area){let e=t.getVariable(q.PROPERTY,et.BASE_LINE,s);t.connect(e,a)}if(r){let n=t.getVariable(q.DOMAIN,r),o=t.getVariable(q.SCALE,r),l=t.getVariable(q.CHANNEL,i,s);t.connect(o,a),t.connect(a,l),n.addLinkedEncoding(e),o.addLinkedEncoding(e),n.incomingDataflow.run()}else{let r=t.getVariable(q.ATTRIBUTE,n,Vt(s)),o=t.getVariable(q.PROPERTY,et.INCLUDE_ZERO,e),l=t.getVariable(q.DOMAIN,e),u=t.getVariable(q.DATASCOPE,s),c=t.createOneWayDependency(Y.DOMAIN_BUILDER);t.connect(r,c),t.connect(o,c),t.connect(u,c),t.connect(c,l),c.run();let h=t.getVariable(q.PROPERTY,et.RANGE_START,e),d=t.getVariable(q.PROPERTY,et.RANGE_EXTENT,e),f=t.getVariable(q.PROPERTY,et.FLIP_SCALE,e),p=t.getVariable(q.SCALE,e),_=t.createOneWayDependency(Y.SCALE_BUILDER);t.connect(h,_),t.connect(d,_),t.connect(f,_),t.connect(l,_),t.connect(_,p),_.run();let g=t.getVariable(q.CHANNEL,i,s);t.connect(p,a),t.connect(a,g),a.run()}}(i,this._depGraph,t.shareScale),t.shareScale?this.onChange(q.DOMAIN,i):this.onChange(q.CHANNEL,t.channel,e),i}connect(e,t){let r={};e.forEach((e=>r[e.dataScope.getAttributeValue(Ee)]=e));let n=t[0].dataScope.dataTable,i=n.tree?"parent":"source",s=n.tree?"child":"target";for(let t of e)t.links=[];for(let e of t){let t=e.dataScope.getAttributeValue(i),n=e.dataScope.getAttributeValue(s),a=r[t],o=r[n];e.source=a,e.target=o,a.links.push(e),o.links.push(e)}ht(e.find((e=>e.links.length>0)),this._depGraph),this.onChange(q.CHANNEL,"x",e[0])}_addAttributeEncoding(e){let t=De(e.element);t in this._encodings||(this._encodings[t]={}),this._encodings[t][e.channel]=e}activate(e,t,r,n,i){!function(e,t,r,n,i){if(!("event"in e)||!("type"in e))throw"Event and trigger must be specified";if(![$e.WIDGET,$e.KEYBOARD].includes(e.type)){if(!("target"in t)||!("targetChannels"in t))throw"Target must be specified";if("function"!=typeof r)throw"Target evaluator must be a function"}if(e.type===$e.ELEMENT&&!("element"in e))throw"Element must be specified for trigger";if(Array.isArray(n)){if(!n.every((e=>"function"==typeof e)))throw"Effect setter must be a function";if(i&&!Array.isArray(i))throw"An array of effect setters must be accompanied by an array of animation effects";if(i&&Array.isArray(i)&&i.length!==n.length)throw"the length of effect setters is not equal to the length of animation effects"}else if("function"!=typeof n)throw"Effect setter must be a function"}(e,t,r,n,i);let s=e.event,a=function(e){switch(e.type){case $e.ELEMENT:return[e.type,e.element.classId?e.element.classId:e.element.id].join("-");case $e.ATTRIBUTE:return[e.type].join("-");case $e.WIDGET:return[e.type,e.event,e.listener?e.listener.id:"scene",e.id?e.id:""].join("-");case $e.MOUSE:return[e.type,e.event,e.listener?e.listener.id:"scene"].join("-");case $e.KEYBOARD:return[e.type,e.event,e.key].join("-");default:return[e.type,e.event].join("-")}}(e);if(s=0===s.indexOf("brush")?"brush":s,s in this._triggers||(this._triggers[s]={}),a in this._triggers[s]||(this._triggers[s][a]=function(e){switch(e.type){case $e.ELEMENT:return new pm(e.type,e.event,e.element,"cumulative"in e&&e.cumulative);case $e.MOUSE:return new gm(e.type,e.event,e.listener);case $e.KEYBOARD:return new _m(e.type,e.event,e.key);case $e.WIDGET:return new ym(e.type,e.event,e.id)}}(e)),this._triggers[s][a].animation=i,![$e.WIDGET,$e.KEYBOARD].includes(e.type)){let e=this._triggers[s][a],i=new qy(e,t,r,n);return function(e,t,r){let n=e.target,i=r.getVariable(q.COND_ENCODING,e);for(let s of t){let t=r.getVariable(q.TRIGGER,e.trigger),a=r.findIncomingDataflowOperator(Y.TARGET_EVALUATOR,i);a||(a=r.createOneWayDependency(Y.TARGET_EVALUATOR,e._targetEval)),r.connect(t,a),r.connect(a,i);let o=r.getVariable(q.CHANNEL,s,n),l=o.incomingDataflow;if(l&&l instanceof Je&&l.outputVar.channel===s)r.connect(i,l);else if(!l){let e=r.createOneWayDependency(Y.ENCODER);r.connect(i,e),r.connect(e,o),e.storeValues(n,s)}}}(i,t.targetChannels,this._depGraph),i}this._triggers[s][a].callback=n}onChange(e,...t){if(Object.values(q).indexOf(e)<0)throw new Error("Unknown Variable Type: "+e);let r=[];this._depGraph.processChange(e,r,...t);for(let e of r)e.run()}gridlines(e,t,r){let n=r||{},i=n.element?Pe(n.element,e):Ve(t,e,this);if(i){i.attribute!==t&&console.warn("Cannot create a "+e+" axis for "+t);let r=[];if("x"==e)for(let e of i.scales)r.push({scale:e,elems:i.getElements(e)});else if("width"==e){let e=B(i.element),t=i.scales[0];if(e.layout&&e.layout.type==U.GRID&&e.layout.numCols>1){let n=e.layout.getElementsByCol(!0);for(let e of n)r.push({scale:t,elems:e})}else r.push({scale:i.scales[0],elems:i.getElements(i.scales[0])})}else if("y"==e){let e=B(i.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let t=e.layout.getElementsByRow(!0,i.element);for(let e of t)r.push({scale:i.getScale(e[0]),elems:e})}else r.push({scale:i.scales[0],elems:i.getElements(i.scales[0])})}else if("height"==e){let e=B(i.element),t=i.scales[0];if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let n=e.layout.getElementsByRow(!0,i.element);for(let e of n)r.push({scale:t,elems:e})}else r.push({scale:t,elems:i.getElements(t)})}else"radialDistance"==e&&r.push({scale:i.scales[0],elems:T(i.element)});for(let e of r){let t=new Ky(i.channel,i.attribute,e.scale,e.elems,n);this.addChild(t),i.addRefElement(t),pt(t,this._depGraph),ot(this,t,this._depGraph)}}else{let r=n.element?n.element:L(this,t);if(!r)return void console.warn("Cannot create "+e+" gridlines for "+t);let i=V(r.parent);if(!i.layout)return void console.warn("Cannot create "+e+" gridlines for "+t);let s=T(i);for(let r of s){let i=[];r.layout.type==U.GRID&&r.layout.numRows>1&&"x"==e?i=r.layout.getElementsByRow():r.layout.type==U.GRID&&r.layout.numCols>1&&"y"==e?i=r.layout.getElementsByCol():i.push(r.children);for(let s of i){let i=new Ky(e,t,null,s,n);this.addChild(i),r.layout.addRefElement(i),pt(i,this._depGraph),ot(this,i,this._depGraph)}}}}axis(e,t,r){let n=r||{},i="rowId"==t?Pt:t,s=[],a=n.element?Pe(n.element,e):Ve(i,e,this);if(a){a.attribute!==i&&console.warn("Cannot create a "+e+" axis for "+i);let t=[];if("x"==e||"width"==e){let e=B(a.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numCols>1){let r=e.layout.getElementsByCell(!0,a.element);for(let e of r)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else if("y"==e||"height"==e){let e=B(a.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let r=e.layout.getElementsByCell(!0,a.element);for(let e of r)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else"radialDistance"==e&&t.push({scale:a.scales[0],elems:T(a.element)});for(let e of t){let t=new tr(a,e.scale,e.elems,n);this.addChild(t),s.push(t),a.addRefElement(t),ft(t,this._depGraph),ot(this,t,this._depGraph),this.onChange(q.PROPERTY,et.AXIS_PATH_POSITION,t)}}else{let t=n.element?n.element:L(this,i);if(!t)return void console.warn("Cannot create a "+e+" axis for "+i);let r=V(t.parent);if(!r.layout)return void console.warn("Cannot create a "+e+" axis for "+i);let a=T(r);for(let t of a){let r=[];t.layout.type==U.GRID&&t.layout.numRows>1&&"x"==e?r=t.layout.getElementsByRow():t.layout.type==U.GRID&&t.layout.numCols>1&&"y"==e?r=t.layout.getElementsByCol():r.push(t.children);for(let a of r){let r=new rr(a,e,i,n);this.addChild(r),s.push(r),t.layout.addRefElement(r),dt(r,this._depGraph),ot(this,r,this._depGraph),this.onChange(q.PROPERTY,et.AXIS_PATH_POSITION,r)}}}return s}legend(e,t,r){let n=r||{},i="rowId"==t?Pt:t,s=n.element?Pe(n.element,e):Ve(i,e,this);if(s){s.attribute!==t&&console.warn("Cannot create a "+e+" legend for "+t);let r="string"===Vt(s.element).getAttributeType(t)?new sm(s,n):new am(s,n);this.addChild(r),function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.PROPERTY,et.LEGEND_POSITION,e),i=t.getIncomingDataflowOperator(Y.EVAL_BBOX,r);t.connect(n,i),t.connect(i,r)}(r,this._depGraph),ot(this,r,this._depGraph),p(r),this.onChange(q.PROPERTY,et.LEGEND_POSITION,r)}else console.warn("Cannot create a "+e+" legend for "+i)}setLayout(e,t){if(e.layout&&(ut(e,e.layout,this._depGraph),t.type===U.TREEMAP)){let t=e.firstChild;for(;t&&t.type===Ot.Collection&&t.layout;)ut(t,t.layout,this._depGraph),t=t.firstChild}if(T(e).forEach((e=>{let r=t?t.clone():t;e._layout=r,r&&(r.group=e)})),ct(e,t,this._depGraph),e.children&&e.children.length>0){let t=j(e,!0);for(let e of t)this.onChange(q.CHANNEL,"x",e)}}setProperties(e,t,r){let n=r?[e]:T(e);n.forEach((e=>{for(const[r,n]of Object.entries(t))Ue(e,r,n)})),"width"in t&&n.forEach((e=>e._refBounds.setWidth(t.width))),"height"in t&&n.forEach((e=>e._refBounds.setHeight(t.height)));for(let r in t)["vertex","segment"].includes(e.type)&&!["x","y"].includes(r)||(Object.values(Ie).includes(r)?this.onChange(q.CHANNEL,r,e):this.onChange(q.PROPERTY,r,e))}setLayoutParameters(e,t){let r=T(e);for(let e of r)for(let r in t)e.layout[r]=t[r];this.onChange(q.CHANNEL,"width",e.firstChild)}sortChildren(e,t,r,n){if(e instanceof _t)tm(e,t,r,n),this.onChange(q.ORDER,e);else if(e instanceof ie){let i=T(e);for(let e of i)rm(e,t,r,n)}}findElements(e){return N(this,e)}translate(e,t,r){ze(e,t,r);let n=j(e,!0);for(let e of n)p(e);for(let e of n)this.onChange(q.CHANNEL,"x",e)}transform(e,t,r){let n=t.clone();switch(e){case"bin":!function(e,t,r,n,i){let s=i.getVariable(q.ATTRIBUTE,e,r),a=i.getVariable(q.ATTRIBUTE,t,n),o=i.createOneWayDependency(Y.BIN_TRANSFORMER);i.connect(s,o),i.connect(o,a),o.run()}(r.attribute,r.newAttribute,t,n,this._depGraph);break;case"filter":!function(e,t,r,n){let i=n.getVariable(q.ITEMS,void 0,t),s=n.getVariable(q.ITEMS,e,r),a=n.createOneWayDependency(Y.FILTER_TRANSFORMER);n.connect(i,a),n.connect(a,s),a.run()}(l(r),t,n,this._depGraph);break;case"kde":!function(e,t,r,n,i,s){let a=s.getVariable(q.ATTRIBUTE,e,r),o=s.getVariable(q.ATTRIBUTE,t,n),l=s.createOneWayDependency(Y.KDE_TRANSFORMER);l.args=i,s.connect(a,l),s.connect(l,o),l.run()}(r.attribute,r.newAttribute,t,n,r,this._depGraph)}return n}}function bm(e,t){let r=new pe(t.tables[e.dt]);for(let t in e.attr2value)r._attr2value[t]=e.attr2value[t],r._updateTuples(t,e.attr2value[t]);return r}class vm extends F{constructor(e){super(),this.type=U.DIRECTED,this._width="width"in e?e.width:500,this._height="height"in e?e.height:300,this._top="top"in e?e.top:0,this._left="left"in e?e.left:0,this._edgeSep="edgeSep"in e?e.edgeSep:50,this._spreadLinks=!("spreadLinks"in e)||e.spreadLinks,this._direction="direction"in e?e.direction:Q.Top2Bottom}clone(){return new vm({width:this._width,height:this._height,top:this._top,left:this._left,edgeSep:this._edgeSep,spreadLinks:this._spreadLinks,direction:this._direction})}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}get edgeSep(){return this._edgeSep}get spreadLinks(){return this._spreadLinks}get direction(){return this._direction}}class xm extends F{constructor(e){super(),this.type=U.FORCE,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._iterations="iterations"in e?e.iterations:1,this._repulsion="repulsion"in e?e.repulsion:30,this._attraction="attraction"in e?e.attraction:1,this._linkDistance="linkDistance"in e?e.linkDistance:30}clone(){return new xm({x:this._x,y:this._y,iterations:this._iterations,repulsion:this._repulsion,attraction:this._attraction,linkDistance:this._linkDistance})}}class Em extends F{constructor(e){super(),this.type=U.PACKING,this._x="x"in e?e.x:400,this._y="y"in e?e.y:400,this._width=e.width,this._height=e.height}clone(){return new Em({x:this._x,y:this._y,width:this._width,height:this._height})}}class wm extends F{constructor(e){super(),this.type=U.TIDYTREE,this._width="width"in e?e.width:500,this._height="height"in e?e.height:500,this._left="left"in e?e.left:100,this._top="top"in e?e.top:100,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}get orientation(){return this._orientation}clone(){return new wm({width:this._width,height:this._height,top:this._top,left:this._left,orientation:this._orientation})}}class Am extends F{constructor(e){super(),this.type=U.TREEMAP,this._width=e.width,this._height=e.height,this._left=e.left,this._top=e.top}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}clone(){return new Am({width:this._width,height:this._height,top:this._top,left:this._left})}}function Cm(e){switch(e.type){case U.GRID:return function(e){let t=new nm(e.args);return t._left=e.left,t._top=e.top,t._cellBounds=e.cellBounds.map((e=>Rm(e))),t._grid=e.grid,t}(e);case U.STACK:return function(e){let t=new Zy(e.args);return t}(e);case U.PACKING:return function(e){let t=new Em(e.args);return t}(e);case U.FORCE:return function(e){return new xm(e.args)}(e);case U.DIRECTED:return function(e){return new vm(e.args)}(e);case U.TIDYTREE:return function(e){return new wm(e.args)}(e);case U.TREEMAP:return function(e){return new Am(e.args)}(e);case U.STRATA:return function(e){return new um(e.args)}(e);default:return void console.warn("unsupported layout type for deserialization:",e.type)}}function Rm(e){return new c(e.x-e.width/2,e.y-e.height/2,e.width,e.height)}function km(e,t){e.type===Ot.Pie&&(e.type=Ot.Arc),e.args.type=e.type;let r=Ct(e.args);return e.id&&(r._id=e.id),e.classId&&(r._classId=e.classId),e.dataScope&&(r._dataScope=bm(e.dataScope,t)),e.bounds&&(r._bounds=Rm(e.bounds)),e.refBounds&&(r._refBounds=Rm(e.refBounds)),function(e,t,r){if(e.vertices){const n=[];for(let i of e.vertices){const e=Sm(i,t,r);n.push(e)}t.vertices=n,t.segments=[];let i=0;for(let e=1;e<t.vertices.length;e++)t.segments.push(new ne(t.vertices[e-1],t.vertices[e],t,i++));t.type===Ot.Rect&&t.segments.push(new ne(t.vertices[t.vertices.length-1],t.vertices[0],t,i++))}t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}(e,r,t),r}function Sm(e,t,r){let n=new re(e.x,e.y,t,e.id);return e.dataScope&&(n._dataScope=bm(e.dataScope,r)),"polarAngle"in e&&(n._polarAngle=e.polarAngle),n.shape=e.shape,n.width=e.width,n.height=e.height,n.radius=e.radius,n.fillColor=e.fillColor,n.opacity=e.opacity,n.strokeWidth=e.strokeWidth,n.strokeColor=e.strokeColor,n}function Tm(e){let t={};t.fillColor=e.fillColor;let r=new mm(t),n={};if(e.tables)for(let t in e.tables){let r=e.tables[t];n[t]=new Lt(r.data,r.url,r.attributeTypes),n[t]._id=r.id}r.tables=n;let i={};if(e.scales)for(let t in e.scales)i[t]=Lm(e.scales[t]);if(r.scales=i,Nm(e,r,r),Im(e,r),e.encodings)for(let t of e.encodings)r._addAttributeEncoding(Vm(t,r));return delete r.tables,delete r.scales,r._bounds=Rm(e.bounds),r}function Om(e,t,r){if(e.type===Ot.Collection){let n=Rt(r);t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n}else if(e.type===Ot.Glyph){let n=kt();t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n}else if(e.type===Ot.Composite){let n=new om;t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n,n._bounds=Rm(e.bounds)}else if(Object.values(w).includes(e.type)){let n=km(e,r);r._itemMap[n.id]=n,t.addChild(n)}}function Im(e,t){if(e.children)for(let r of e.children)Im(r,t);else if(Object.values(w).includes(e.type)){let r=t._itemMap[e.id];e.links&&(r.links=e.links.map((e=>t._itemMap[e]))),e.source&&(r.source=t._itemMap[e.source]),e.target&&(r.target=t._itemMap[e.target])}}function Nm(e,t,r){if(e.id&&(t._id=e.id),e.classId&&(t._classId=e.classId),e.dataScope&&(t._dataScope=bm(e.dataScope,r)),t._bounds=Rm(e.bounds),e.layout&&(t._layout=Cm(e.layout),t._layout.group=t),t._sortBy=e.sortBy,e.children)for(let n of e.children)Om(n,t,r)}function Lm(e){let t=new Ht(e.type,e.args);return t._id=e.id,t.domain=e.domain,t.range=e.range,t}function Vm(e,t){let r=function(e,t,r){if("vertex"===t){let t=e.split("_v_");return r._itemMap[t[0]].vertices.find((e=>e._id===parseInt(t[1])))}if("segment"===t){let t=e.split("_s_");return r._itemMap[t[0]].segments.find((e=>e._id===parseInt(t[1])))}return r._itemMap[e]}(e.element,e.elementType,t);r||console.warn("element not created:",e.element,e.elementType);let n=new Xy(r,e.channel,e.attr,e.aggregator,e.args);if(e.scales&&(n._scales=e.scales.map((e=>t.scales[e]))),e.elemGroups&&(n._elemGroups=e.elemGroups.map((e=>e.map((e=>t._itemMap[e]))))),e.elem2scale){n._elem2scale={};for(let r in e.elem2scale)n._elem2scale[r]=t.scales[e.elem2scale[r]]}return e.args.startAngle&&(n.startAngle=e.args.startAngle),n}function Pm(e){let t={};return t.id=e._id,t.data=e._rawData,t.attributeTypes=e._attrTypes,t.url=e.url,t}function Dm(e){let t={};return t.dt=e._dt.id,t.attr2value=Object.assign({},e._attr2value),t}function Bm(e,t){t.vertices=[];for(let r of e.vertices)t.vertices.push(Mm(r));t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}function Mm(e){let t={};return t.type=e.type,t.id=e._id,t.x=e.x,t.y=e.y,e._dataScope&&(t.dataScope=Dm(e._dataScope)),void 0!==e._polarAngle&&(t.polarAngle=e._polarAngle),t.shape=e.shape,t.width=e.width,t.height=e.height,t.radius=e.radius,t.fillColor=e.fillColor,t.opacity=e.opacity,t.strokeWidth=e.strokeWidth,t.strokeColor=e.strokeColor,t}function Gm(e){return e.type===Ot.Scene?function(e){let t=Fm(e,{});t.fillColor=e.fillColor,t.scales={},t.encodings=[];for(let r in e._encodings)for(let n in e._encodings[r]){let i=e._encodings[r][n];i._forLegend||t.encodings.push(zm(i));for(let e of i._scales)e.id in t.scales||(t.scales[e.id]=jm(e))}t.tables={};let r=function(e){let t={};for(let r in e._encodings)for(let n in e._encodings[r]){let i=e._encodings[r][n];i.dataTable.id in t||i._forLegend||(t[i.dataTable.id]=i.dataTable)}for(let r of e.children)if(![Ot.Axis,Ot.Legend,Ot.Gridlines].includes(r.type)){if(r.dataScope){t[r.dataScope.dataTable.id]=r.dataScope.dataTable;break}if(r.children&&r.children.length>0){let e=r.firstChild;for(;e;){if(e.dataScope){t[e.dataScope.dataTable.id]=e.dataScope.dataTable;break}e=e.children&&e.children.length>0?e.firstChild:void 0}}}return t}(e);for(let e in r)t.tables[e]=Pm(r[e]);return console.log(t.tables),t}(e):e instanceof _t?Fm(e,{}):e instanceof x?function(e){let t={args:{}};t.type=e.type,t.id=e.id,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Dm(e._dataScope)),e.bounds&&(t.bounds=e.bounds.toJSON()),e.refBounds&&(t.refBounds=e.refBounds.toJSON()),e.links&&(t.links=e.links.map((e=>e.id))),e.source&&(t.source=e.source.id),e.target&&(t.target=e.target.id);for(let r in e.styles)r.indexOf("Color")>0&&e.styles[r]instanceof v?t.args[r]=e.styles[r].toJSON():t.args[r]=e.styles[r];switch(e.type){case Ot.Arc:case Ot.Pie:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.innerRadius=e._innerRadius,t.args.outerRadius=e._outerRadius,t.args.startAngle=e._startAngle,t.args.endAngle=e._endAngle,t.args.direction=e._direction,t.args.thickness=e._thickness}(e,t),Bm(e,t);break;case Ot.Area:!function(e,t){t.args.baseline=e._baseline,t.args.orientation=e._orientation}(e,t),Bm(e,t);break;case Ot.Circle:!function(e,t){t.args.x=e.x,t.args.y=e.y,t.args.radius=e.radius}(e,t);break;case Ot.Image:break;case Ot.Line:case Ot.Path:case Ot.BezierCurve:Bm(e,t);break;case Ot.PointText:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.text=e._text,t.args.anchor=e._anchor}(e,t);break;case Ot.Polygon:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.radius=e._radius}(e,t),Bm(e,t);break;case Ot.Rect:!function(e,t){t.args.width=e.width,t.args.height=e.height,t.args.top=e.top,t.args.left=e.left}(e,t),Bm(e,t);case Ot.Ring:}return t}(e):(console.warn("unsupported serialization",e.type),{type:e.type})}function jm(e){let t={};return t.type=e.type,t.id=e.id,e._args&&(t.args=e._args),t.domain=e.domain,t.range=e.range,t}function zm(e){let t={};t.element=e._elem.id,t.elementType=e._elem.type,e.attrValues&&(t.attrValues=e.attrValues),t.channel=e._channel,t.attr=e._attribute,t.aggregator=e._aggregator,t.args={},t.args.includeZero=e._includeZero,t.args.flipScale=e._flipScale,t.args.mapping=e._mapping,t.args.rangeExtent=e._preferredRangeExtent,t.args.domain=e._preferredDomain,t.args.scaleType=e._scaleType,t.args.scheme=e._colorScheme,t.scales=e._scales.map((e=>e.id)),t.elemGroups=e._elemGroups.map((e=>e.map((e=>e.id)))),t.elem2scale={};for(let r in e._elem2scale)t.elem2scale[r]=e._elem2scale[r].id;return t.refElements=e._refElements.map((e=>e.id)),"angle"==e.channel&&(t.args.startAngle=e.startAngle),t}function Fm(e,t){if(t.id=e.id,t.type=e.type,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Dm(e._dataScope)),t.bounds=e.bounds.toJSON(),e._layout&&(t.layout=function(e){switch(e.type){case U.GRID:return function(e){let t={args:{}};return t.type=e.type,t.args.numCols=e._numCols,t.args.numRows=e._numRows,t.args.start=e._start,t.args.direction=e._direction,t.args.colGap=e._colGap,t.args.rowGap=e._rowGap,t.args.horzCellAlignment=e._cellHorzAlignment,t.args.vertCellAlignment=e._cellVertAlignment,t.left=e._left,t.top=e._top,t.cellBounds=e._cellBounds.map((e=>e.toJSON())),t.group=e.group.id,t.grid=e._grid,t}(e);case U.STACK:return function(e){let t={args:{}};return t.type=e.type,t.args.orientation=e._orientation,t.args.direction=e._direction,t.args.left=e._left,t.args.top=e._top,t.args.horzCellAlignment=e._horzCellAlignment,t.args.vertCellAlignment=e._vertCellAlignment,t.args.gap=e._gap,t.group=e.group.id,t}(e);case U.PACKING:return function(e){let t={args:{}};return t.type=e.type,t.args.x=e._x,t.args.y=e._y,t.args.width=e._width,t.args.height=e._height,t.group=e.group.id,t}(e);case U.FORCE:return function(e){let t={args:{}};return t.type=e.type,t.args.x=e._x,t.args.y=e._y,t.args.iterations=e._iterations,t.args.repulsion=e._repulsion,t.args.attraction=e._attraction,t.args.linkDistance=e._linkDistance,t.group=e.group.id,t}(e);case U.CLUSTER:return function(e){let t={args:{}};return t.type=e.type,t.args.size=e._size,t.args.rootX=e._rootX,t.args.rootY=e._rootY,t}(e);case U.DIRECTED:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t.args.edgeSep=e._edgeSep,t.args.spreadLinks=e._spreadLinks,t.args.direction=e._direction,t}(e);case U.TIDYTREE:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t.args.orientation=e._orientation,t}(e);case U.TREEMAP:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t}(e);case U.STRATA:return function(e){let t={args:{}};return t.type=e.type,t.args.direction=e._direction,t.args.gap=e._gap,t}(e);default:throw new Error("unknow layout type "+e.type)}}(e._layout)),t.children=[],e.children.length>0)for(let r of e.children)t.children.push(Gm(r));return t.sortBy=e._sortBy,t}function Um(e,r,n,i,s){for(let a of e){let e=a.listener?a.listener:n,o=e.type===Ot.Axis?e.boundsWithoutTitle:e.bounds,l=[[o.left,o.top],[o.right,o.bottom]],u="brushX"===a.event?t.brushX():"brushY"===a.event?t.brushY():t.brush();u.extent(l).on("brush end",(e=>{let t,r;if(e&&e.selection)switch(a.event){case"brushX":t=[e.selection[0],e.selection[1]],r=void 0;break;case"brushY":t=void 0,r=[e.selection[0],e.selection[1]];break;default:t=[e.selection[0][0],e.selection[1][0]],r=[e.selection[0][1],e.selection[1][1]]}else t=void 0,r=void 0;a.mouseEvent={xInterval:t,yInterval:r},n.onChange(q.TRIGGER,a),i._render(n,s)})),r.append("g").attr("class","brush").call(u)}}function Hm(e,t,r,n,i){t.on("mousemove",(s=>{for(let n of e){let[e,i]=A(t.attr("id"),s.clientX,s.clientY),a=M(r,e,i,n.element.type,n.element.classId);a?n.isCumulative&&!n.elements.includes(a)?n.elements.push(a):n.elements=[a]:n.elements=[],n.mouseEvent={x:e,y:i},r.onChange(q.TRIGGER,n)}n._render(r,i)}))}function Wm(e,r,n,i,s){for(let r of e)if(r.type===$e.WIDGET){console.log(r.id),document.getElementById(r.id).addEventListener("input",(function(){Ym(r,n,i,s)}))}else r.type===$e.KEYBOARD&&t.select("body").on("keydown",(e=>{e.key===r.key&&Ym(r,n,i,s)}))}function Ym(e,t,r,n){if(Array.isArray(e.callback))for(let i=0;i<e.callback.length;i++)e.callback[i](),r._render(t,n,e.animation[i]);else e.callback(),r._render(t,n,e.animation)}function Xm(e,t,r,n,i){t.on("click",(s=>{for(let n of e){let[e,i]=A(t.attr("id"),s.clientX,s.clientY),a=M(r,e,i,n.element.type,n.element.classId);a?n.isCumulative&&!n.elements.includes(a)?n.elements.push(a):n.elements=[a]:n.elements=[],n.mouseEvent={x:e,y:i},r.onChange(q.TRIGGER,n)}n._render(r,i)}))}class qm{constructor(e){this._svgId=e,this._compMap={},this._decoMap={},this._brushCreated=0}render(e,r){let n=r||{};t.select("#"+this._svgId).select("defs").empty()&&t.select("#"+this._svgId).append("defs"),this._render(e,n),this._registerEvents(e,n)}_render(e,t,r){for(let e in this._decoMap)this._decoMap[e].remove(),delete this._decoMap[e];this._removed={};for(let e in this._compMap)this._removed[e]=1;this._renderItem(e,t,r);for(let e in this._removed)this._compMap[e].remove(),delete this._compMap[e]}_registerEvents(e,r){let n=t.select("#"+this._svgId);for(let t in e.interactionTriggers){let i=Object.values(e.interactionTriggers[t]);switch(t){case"click":n.on("click",null),Xm(i,n,e,this,r);break;case"brush":case"brushX":case"brushY":Um(i,n,e,this,r);break;case"hover":Hm(i,n,e,this,r);break;case"input":Wm(i,0,e,this,r)}}}clear(){let e=document.getElementById(this._svgId);for(;e.firstChild;)e.firstChild.remove();this._compMap={},this._decoMap={}}_renderItem(e,r,n){this._configSVG(e);let i=this._compMap[e.id];switch(e.type){case Ot.Scene:!function(e,t){t.style("background",e.fillColor?e.fillColor:"#fff")}(e,t.select("#"+this._svgId));break;case Ot.Circle:!function(e,t){t.attr("cx",e.x),t.attr("cy",e.y),t.attr("r",e.radius)}(e,i);break;case Ot.Rect:!function(e,t){let r=e.bounds;t.attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height)}(e,i);break;case Ot.Path:case Ot.BezierCurve:case Ot.BundledPath:case Ot.Chord:case Ot.Polygon:case Ot.Link:case Ot.Pie:case Ot.Line:case Ot.Area:case Ot.Ring:case Ot.Arc:case Ot.Gridlines:!function(e,t){t.attr("d",e.getSVGPathData()),e.closed||t.style("fill","none"),(e.id.includes("axis")||e.id.includes("gridlines"))&&t.style("shape-rendering","crispEdges"),e.type===Ot.BundledPath&&t.style("mix-blend-mode","multiply")}(e,i);break;case Ot.PointText:!function(e,r){if(r.attr("text-anchor",m(e.anchor[0])).attr("alignment-baseline",m(e.anchor[1])).attr("dominant-baseline",m(e.anchor[1])).attr("x",e.x).attr("y",e.y),e.hasBackground()){e._updateBounds();let r=t.select("#"+g(e)),n=e.bounds;r.attr("x",n.left-5).attr("y",n.top-5).attr("width",n.width+10).attr("height",n.height+10).attr("rx",5).attr("ry",5).style("fill",e.backgroundColor).style("stroke",e.borderColor).style("strokeWidth",e.borderWidth)}e.textPath?(r.select("textPath").empty()&&r.append("textPath"),r.select("textPath").attr("href","#"+y(e)).attr("startOffset",e.textPathOffset).text(e.text)):r.text(e.text)}(e,i);break;case Ot.Image:!function(e,t){t.attr("href",e.src).attr("x",e.x).attr("y",e.y).attr("width",e.width).attr("height",e.height)}(e,i)}if(function(e,r,n){for(let i in e.styles)if(void 0!==e.styles[i])if(i.indexOf("Color")>0&&e.styles[i].type==Ot.LinearGradient){let t=n.select("defs"),s=e.styles[i];if(t.select("#"+s.id).empty()){let e=t.append("linearGradient").attr("id",s.id);e.attr("x1",s.x1+"%").attr("x2",s.x2+"%").attr("y1",s.y1+"%").attr("y2",s.y2+"%");for(let t of s.stops)e.append("stop").attr("offset",t.offset+"%").style("stop-color",t.color).style("stop-opacity",t.opacity)}r.style(b[i],"url(#"+s.id+")")}else r.style(b[i],e.styles[i]),"visibility"===i&&e.type===Ot.PointText&&e.hasBackground()&&t.select("#"+g(e)).style(b[i],e.styles[i])}(e,i,t.select("#"+this._svgId)),e._rotate&&i.attr("transform","rotate("+e._rotate.join(" ")+")"),n&&(i=i.transition().delay(n.delay?n.delay:0).duration(n.duration?n.duration:0)),e.vertices&&this._renderVertices(e),[Ot.Circle].includes(e.type)&&r&&r.bounds?this._renderBounds(e):E(e)&&r&&r.refBounds&&this._renderRefBounds(e),e.children)for(let t of e.children)this._renderItem(t,r,n)}_configSVG(e){let r,n=e.parent;if(r=n&&n.id&&n.id in this._compMap?t.select("#"+this._svgId).select("#"+n.id):t.select("#"+this._svgId),e.id in this._compMap)delete this._removed[e.id],e.type===Ot.PointText&&(e.hasBackground()&&delete this._removed[g(e)],e.textPath&&delete this._removed[y(e)]);else{if(e.type===Ot.PointText&&(e.hasBackground()&&(this._compMap[g(e)]=r.append("rect").attr("id",g(e))),e.textPath)){let r=t.select("#"+this._svgId).select("defs"),n=y(e);r.select("#"+n).empty()&&(this._compMap[n]=r.append("path").attr("id",n)),this._compMap[n].attr("d",e.textPath).style("fill","none")}this._compMap[e.id]=r.append(this._getSVGElementType(e))}e.type==Ot.Gridlines&&this._compMap[e.id].lower(),this._compMap[e.id].attr("id",e.id),e.classId&&this._compMap[e.id].attr("class",e.classId)}_renderBounds(e){let r=e.bounds;e.layout&&"grid"==e.layout.type&&this._renderLayout(e),e.id in this._decoMap||(this._decoMap[e.id]=t.select("#"+this._svgId).append("rect").attr("class","deco")),this._decoMap[e.id].attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height).attr("fill","none").attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5")}_renderRefBounds(e){let r=e.refBounds;r&&(e.id in this._decoMap||(this._decoMap[e.id]=t.select("#"+this._svgId).append("rect").attr("class","deco")),this._decoMap[e.id].attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height).attr("fill","none").attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5"))}_renderVertices(e){let r=e.id+"-vertices";if(r in this._compMap)delete this._removed[r];else{let n=e.parent,i=n?n.id:this._svgId;this._compMap[r]=t.select("#"+i).append("g").attr("id",r)}if(0===e.vertices.map((e=>e.shape)).filter((e=>void 0!==e)).length)return void this._compMap[r].style("visible","hidden");this._compMap[r].style("visible","visible");let n=e.vertices.filter((e=>void 0!==e.shape));for(let e of n){let n=r+"-"+e.id;n in this._compMap?e.shape!==this._compMap[n].node().tagName?(this._compMap[n].remove(),this._compMap[n]=t.select("#"+r).append(e.shape).attr("id",n),delete this._removed[n]):delete this._removed[n]:this._compMap[n]=t.select("#"+r).append(e.shape).attr("id",n),"rect"==e.shape?t.select("#"+n).attr("x",e.x-e.width/2).attr("y",e.y-e.height/2).attr("width",e.width).attr("height",e.height):"circle"==e.shape&&t.select("#"+n).attr("cx",e.x).attr("cy",e.y).attr("r",e.radius),t.select("#"+n).style("fill",e.fillColor).style("opacity",e.opacity).style("stroke-width",e.strokeWidth).style("stroke",e.strokeColor)}}_renderLayout(e){let r=e.id+"-grid";r in this._decoMap||(this._decoMap[r]=t.select("#"+this._svgId).append("g").attr("id",r).attr("class","deco"));let n=e.layout.cellBounds;e.layout.rowGap,this._decoMap[r].selectAll("rect").remove();for(let e of n)this._decoMap[r].append("rect").attr("x",e.left).attr("y",e.top).attr("width",e.width).attr("height",e.height).attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5").attr("fill","none")}_getSVGElementType(e){switch(e.type){case Ot.Rect:return"rect";case Ot.Collection:case Ot.Group:case Ot.Glyph:case Ot.Scene:case Ot.Axis:case Ot.Legend:case Ot.Composite:return"g";case Ot.Area:case Ot.Path:case Ot.Polygon:case Ot.Ring:case Ot.Pie:case Ot.Arc:case Ot.BezierCurve:case Ot.BundledPath:case Ot.Chord:case Ot.Line:case Ot.Gridlines:return"path";case Ot.Circle:return"circle";case Ot.PointText:return"text";case"vertex":if("circle"==e.shape)return"circle";if("rect"==e.shape)return"rect";throw"argument exception";case"image":return"image"}}}function Km(e,t){return void 0===e&&void 0===t||void 0!==e&&void 0!==t}function Zm(e,t){const r=Object.keys(e),n=Object.keys(t);return r.length===n.length&&(0===r.length||r.every((e=>n.includes(e))))}function $m(e,t){if(!Km(e.layout,t.layout))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let r=e.layout,n=t.layout;if(!r&&!n)return!0;if(r.type!==n.type)return console.log("layout types are different:",r,n),!1;switch(r.type){case U.GRID:return function(e,t){e._cellBounds.length!==t._cellBounds.length&&console.log("cell bounds length different:",e,t);for(let r=0;r<e._cellBounds;r++)if(!Qm(e._cellBounds[r],t._cellBounds[r]))return console.log("cell bounds not equal:",e,t),!1;for(let r=0;r<e._grid.length;r++)for(let n=0;n<e._grid[r].length;n++)if(e._grid[r][n]!==t._grid[r][n])return console.log("grid not equal",e,t),!1;return e._numCols===t._numCols&&e._numRows===t._numRows&&e._start===t._start&&e._direction===t._direction&&e._rowGap===t._rowGap&&e._colGap===t._colGap&&e._cellHorzAlignment===t._cellHorzAlignment&&e._cellVertAlignment===t._cellVertAlignment&&e._left===t._left&&e._top===t._top}(r,n);case U.STACK:return function(e,t){return e._orientation===t._orientation&&e._direction===t._direction&&e._left===t._left&&e._top===t._top&&e._horzCellAlignment===t._horzCellAlignment&&e._vertCellAlignment===t._vertCellAlignment&&e._gap===t._gap}(r,n);case U.PACKING:return function(e,t){return e._x===t._x&&e._y===t._y&&e._width===t._width&&e._height===t._height}(r,n);case U.FORCE:return function(e,t){return e._x===t._x&&e._y===t._y&&e._iterations===t._iterations&&e._repulsion===t._repulsion&&e._attraction===t._attraction&&e._linkDistance===t._linkDistance}(r,n);case U.DIRECTED:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left&&e._edgeSep===t._edgeSep&&e._spreadLinks===t._spreadLinks&&e._direction===t._direction}(r,n);case U.TIDYTREE:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left&&e._orientation===t._orientation}(r,n);case U.STRATA:return function(e,t){return e._direction===t._direction&&e._gap===t._gap}(r,n);case U.TREEMAP:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left}(r,n);default:return!1}}function Jm(e,t){if(!Km(e.bounds,t.bounds))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let r=e.bounds,n=t.bounds;return!r&&!n||Qm(r,n)}function Qm(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function eb(e,t){if(!Km(e,t))return console.log("Not both defined or undefined:",e,t),!1;if(e.type!==t.type)return console.log("Different mark types:",e,t),!1;if(e.id!==t.id)return console.log("id not equal:",e,t),!1;if(e.classId!==t.classId)return console.log("class id not equal:",e,t),!1;if(!rb(e,t))return console.log("DataScopes not equal",e,t),!1;if(!Jm(e,t))return console.log("Bounds not equal",e,t),!1;if(!Km(e.links,t.links))return console.log("Not both defined or undefined: links ",e.links,t.links),!1;if(!Km(e.source,t.source))return console.log("Not both defined or undefined: source ",e.source,t.source),!1;if(!Km(e.target,t.target))return console.log("Not both defined or undefined: links ",e.target,t.target),!1;if(e.links&&t.links&&e.links.length!==t.links.length)return console.log("unequal number of links",e,t),!1;if(e.source&&t.source&&!eb(e.source,t.source))return console.log("different sources",e.source,t.source),!1;if(e.target&&t.target&&!eb(e.target,t.target))return console.log("different targets",e.target,t.target),!1;switch(e.type){case Ot.Arc:case Ot.Pie:return tb(e,t)?e.x===t.x&&e.y===t.y&&e.innerRadius===t.innerRadius&&e.outerRadius===t.outerRadius&&e.startAngle===t.startAngle&&e.endAngle===t.endAngle&&e.direction===t.direction&&e.thickness===t.thickness:(console.log("vertices not equal:",e,t),!1);case Ot.Area:return tb(e,t)?e.baseline===t.baseline&&e.orientation===t.orientation:(console.log("vertices not equal:",e,t),!1);case Ot.Circle:return e.x===t.x&&e.y===t.y&&e.radius===t.radius;case Ot.Image:return console.warn("not implemented"),!0;case Ot.Line:case Ot.Path:case Ot.BezierCurve:return!!tb(e,t)||(console.log("vertices not equal:",e,t),!1);case Ot.PointText:return e.x===t.x&&e.y===t.y&&e.text===t.text&&e.anchor[0]===t.anchor[0]&&e.anchor[1]===t.anchor[1];case Ot.Polygon:return tb(e,t)?e.x===t.x&&e.y===t.y&&e.radius===t.radius:(console.log("vertices not equal:",e,t),!1);case Ot.Rect:return tb(e,t)?e.width===t.width&&e.height===t.height&&e.top===t.top&&e.left===t.left:(console.log("vertices not equal:",e,t),!1);case Ot.Ring:default:return console.warn("not implemented"),!0}}function tb(e,t){if(e.vertices.length!==t.vertices.length)return console.log("unequal number of vertices:",e,t),!1;for(let r=0;r<e.vertices.length;r++){let n=e.vertices[r],i=t.vertices[r];return n.id!==i.id?(console.log("vertex id not equal:",n,i),!1):n.x!==i.x||n.y!==i.y?(console.log("vertex position not equal:",n,i),!1):rb(n,i)?n._polarAngle===i._polarAngle&&n.shape===i.shape&&n.width===i.width&&n.height==i.height&&n.radius==i.radius&&n.fillColor==i.fillColor&&n.opacity==i.opacity&&n.strokeWidth==i.strokeWidth&&n.strokeColor==i.strokeColor:(console.log("vertex data scopes not equal:",n.dataScope,i.dataScope),!1)}}function rb(e,t){if(!Km(e.dataScope,t.dataScope))return console.log("Not both defined or undefined:",e.dataScope,t.dataScope),!1;if(!e.dataScope&&!t.dataScope)return!0;let r=e.dataScope,n=t.dataScope;if(!Zm(r._attr2value,n._attr2value))return!1;for(let e in r._attr2value)if(r._attr2value[e]!==n._attr2value[e])return!1;return r._dt.id===n._dt.id&&r._tuples.length===n._tuples.length}function nb(e,t){return e.type!==t.type&&console.log("Different types:",e.type,t.type),[Ot.Collection,Ot.Glyph,Ot.Composite].includes(e.type)?ib(e,t):e instanceof x?eb(e,t):void 0}function ib(e,t){let r=e.children.filter((e=>!Object.values(It).includes(e.type))),n=t.children.filter((e=>!Object.values(It).includes(e.type)));if(r.length!==n.length)return console.log("children length not equal:",r,n),!1;if(e.id!==t.id)return console.log("id not equal:",e,t),!1;if(e.classId!==t.classId)return console.log("class id not equal:",e,t),!1;if(!rb(e,t))return console.log("DataScopes not equal",e.dataScope,t.dataScope),!1;if(!Jm(e,t))return console.log("Bounds not equal",e,t),!1;if(!$m(e,t))return console.log("Layouts not equal",e,t),!1;if(!function(e,t){if(!Zm(e,t))return console.log("different keys",e,t),!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}(e._sortBy,t._sortBy))return console.log("SortBy not equal",e,t),!1;for(let e=0;e<r.length;e++)if(!nb(r[e],n[e]))return console.log("Not equal",r[e],n[e]),!1;return!0}class sb extends F{constructor(e){super(),this.type=U.CIRCULAR,this._x="x"in e?e.x:100,this._y="y"in e?e.y:100,this._radius="radius"in e?e.radius:100}get x(){return this._x}get y(){return this._y}get radius(){return this._radius}clone(){return new sb({x:this._x,y:this._y,radius:this._radius})}}class ab extends F{constructor(e){super(),this.type=U.CLUSTER,this._isRadial="radial"in e&&e.radial,this._angleExtent="angleExtent"in e?e.angleExtent:360,this._radius="radius"in e?e.radius:300,this._rootX="x"in e?e.x:300,this._rootY="y"in e?e.y:300,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL,this._width="width"in e?e.width:800,this._height="height"in e?e.height:600,this._left="left"in e?e.left:60,this._top="top"in e?e.top:100,this._tree="tree"in e?e.tree:void 0}get radius(){return this._radius}get angleExtent(){return this._angleExtent}get x(){return this._rootX}get y(){return this._rootY}get width(){return this._width}get height(){return this._height}get left(){return this._left}get top(){return this._top}isRadial(){return this._isRadial}get orientation(){return this._orientation}clone(){return new ab({radius:this._radius,angleExtent:this._angleExtent,x:this._rootX,y:this._rootY,radial:this._isRadial,orientation:this._orientation,left:this._left,top:this._top,width:this._width,height:this._height,tree:this._tree})}}exports.csv=async function(e){return async function(e){let r=await Dt("GET",e),n=t.csvParse(r.trim(),t.autoType);return new Lt(n,e)}(e)},exports.deserialize=function(e){return Tm(e)},exports.graphJSON=async function(e){return async function(e){let t=await Dt("GET",e);return new be(JSON.parse(t),e)}(e)},exports.isEqual=function(e,t){return function(e,t){return e.fillColor!==t.fillColor?(console.log("fillColor not equal:",e,t),!1):ib(e,t)}(e,t)},exports.layout=function(e,t){let r=t||{};switch(e.toLowerCase()){case U.STACK:return new Zy(r);case U.PACKING:return new Em(r);case U.FORCE:return new xm(r);case U.DIRECTED:return new vm(r);case U.TIDYTREE:return new wm(r);case U.TREEMAP:return new Am(r);case U.CIRCULAR:return new sb(r);case U.CLUSTER:return new ab(r);case U.GRID:default:return new nm(r)}},exports.renderer=function(e,t){return new qm(t)},exports.scene=function(e){return new mm(e)},exports.serialize=function(e){return Gm(e)},exports.table=function(e){return new Lt(e,"")},exports.treeJSON=async function(e){return async function(e){let t=await Dt("GET",e);return new ye(JSON.parse(t),e)}(e)};
|