mascot-vis 3.1.7 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +11 -6
- package/README.md +3 -2
- package/dist/mascot-cjs.cjs +2 -0
- package/dist/mascot-esm.js +2 -2
- package/dist/mascot-umd.js +2 -2
- package/package.json +12 -14
- package/dist/mascot-cjs.js +0 -2
package/dist/mascot-cjs.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// version: 3.1.6
|
|
2
|
-
"use strict";function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var r=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("d3"));const i={canvas:void 0,getCanvas:function(){return window?(void 0===this.canvas&&(this.canvas=document.createElement("canvas")),this.canvas):null},getContext:function(){var e=this.getCanvas();return e?e.getContext("2d"):null}};class r{constructor(e,t,i){this._id="predicate_"+Dt(),this._type=e||s.POINT,this._variableType=t,this._variableName=i,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 s=Object.freeze({POINT:"point",INTERVAL:"interval",LIST:"list"});class n extends r{constructor(e,t,i){super(e,t,i)}testElement(e){let t;if("attribute"==this._variableType){if(!e.dataScope)return!1;t=e.dataScope.getAttrVal(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 r{constructor(e,t,i){super(e,t,i)}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 r{constructor(e,t,i){super(e,t,i)}testElement(e){if("attribute"==this._variableType){if(!e.dataScope)return!1;return e.dataScope.getAttrVal(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}equals(e){return this.type===e.type&&this.variableName===e.variableName&&this.value===e.value}}function l(e){let t,i="attribute"in e?"attribute":"property",r=e[i];switch(e.type){case s.LIST:t=new a(e.type,i,r);break;case s.INTERVAL:t=new n(e.type,i,r);break;case s.POINT:default:t=new o(e.type,i,r)}return t.value=e.value,t}function h(e,t){for(let i of t)if(!i.testElement(e))return!1;return!0}class c{constructor(e,t,i,r){this._x=e+i/2,this._y=t+r/2,this._width=i,this._height=r}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),i=Math.min(this.top,e.top),r=Math.max(this.right,e.right),s=Math.max(this.bottom,e.bottom);return new c(t,i,r-t,s-i)}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 g.RIGHT:this._x=this.right-e/2;break;case g.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 g.TOP:this._y=this.top+e/2;break;case g.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 d(e){let t=e[0].clone();for(let i=1;i<e.length;i++)t=t.union(e[i]);return t}function u(e){return d(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.refBounds?e.refBounds:e.bounds)))}function _(e){return d(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.bounds)))}function p(e){let t=k(e);for(let e of t)e._updateBounds();let i=[];for(let e of t)e.parent&&!i.includes(e.parent)&&i.push(e.parent);for(let e of i)p(e)}const g=Object.freeze({TOP:"top",LEFT:"left",RIGHT:"right",BOTTOM:"bottom",CENTER:"center",MIDDLE:"middle"});function f(e){return e.id+"-bg"}function y(e){return e.id+"-path"}function m(e){switch(e){case g.TOP:return"text-before-edge";case g.BOTTOM:return"auto";case g.LEFT:return"start";case g.RIGHT:return"end";case g.CENTER:case g.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",cursor:"cursor"});class x{constructor(e){if(this._dataScope=void 0,this._type="type"in e?e.type:Pt.Mark,this._id=e.id?e.id:this._type+"_"+Dt(),this._classId=void 0,this._bounds=void 0,this._rotate=void 0,this._refBounds=void 0,this._dirty=!0,this._clipMask=void 0,this._cursor=void 0,this._styles={},void 0!==e)for(let t in b)t in e&&(this.styles[t]=e[t])}get scene(){return P(this)}set strokeColor(e){this.styles.strokeColor=e,this._dirty=!0}get strokeColor(){return this.styles.strokeColor}set strokeWidth(e){this.styles.strokeWidth=e,this._dirty=!0}get strokeWidth(){return this.styles.strokeWidth}set strokeDash(e){this.styles.strokeDash=e,this._dirty=!0}get strokeDash(){return this.styles.strokeDash}set fillColor(e){this.styles.fillColor=e,this._dirty=!0}get fillColor(){return this.styles.fillColor}get rotation(){return this._rotate}get cursor(){return this._cursor}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 Pt.Rect:case Pt.SimpleText:return!0;case Pt.Circle:return Math.sqrt(Math.pow(e-this.x,2)+Math.pow(t-this.y,2))<=this.radius+this.strokeWidth;case Pt.Path:{let r=i.getContext(),s=new Path2D(this.getSVGPathData());return r.lineWidth=Math.max(this.strokeWidth,2.5),r.stroke(s),this.closed?r.isPointInPath(s,e,t):r.isPointInStroke(s,e,t)}case Pt.Line:{let r=i.getContext(),s=new Path2D(this.getSVGPathData());return r.lineWidth=Math.max(this.strokeWidth,2.5),r.stroke(s),r.isPointInStroke(s,e,t)}default:{let r=i.getContext(),s=new Path2D(this.getSVGPathData());return r.isPointInPath(s,e,t)}}}set dataScope(e){this._dataScope=e}get dataScope(){return this._dataScope}get styles(){return this._styles}set styles(e){this._styles=e,this._dirty=!0}set visibility(e){this.styles.visibility=e,this._dirty=!0}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,this._dirty=!0}copyPropertiesTo(e){e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone())}createClipMask(){let e=this._bounds;this._clipMask=new c(e.left,e.top,e.width,e.height)}get clipMask(){return this._clipMask}}function v(e){return e instanceof x&&e.type!==Pt.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",SimpleText:"text",RichText:"richText",Polygon:"polygon",BezierCurve:"bezierCurve"});function E(e,t,i){const r=document.getElementById(e),s=r.createSVGPoint();s.x=t,s.y=i;const n=s.matrixTransform(r.getScreenCTM().inverse());return[n.x,n.y]}function A(e,t,i,r){return Math.sqrt(Math.pow(e-i,2)+Math.pow(t-r,2))}function C(e,t,i,r,s){const n=s*Math.PI/180,a=e-i,o=t-r;return{x:a*Math.cos(n)-o*Math.sin(n)+i,y:a*Math.sin(n)+o*Math.cos(n)+r}}const T={svg:void 0,getSVG:function(){return window?(void 0===this.svg&&(this.svg=document.createElement("svg")),this.svg):null}},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}};function k(e,t){let i=P(e);if("vertex"===e.type||"segment"===e.type)return function(e,t){let i=P(e),r=t||i;if("vertex"===e.type){return S(e,I(r,[{property:"classId",value:e.parent.classId}]))}if("segment"===e.type){return O(e,I(r,[{property:"classId",value:e.parent.classId}]))}return e.classId?I(r,[{property:"classId",value:e.classId}]):[e]}(e,t);if(!e.classId)return[e];if(e.classId&&i._peerIndex.has(e.classId)){let r=i._peerIndex.get(e.classId);return t?r.filter((e=>function(e,t){let i=e.parent;for(;i;){if(i===t)return!0;i=i.parent}return!1}(e,t))):r}return[e]}function S(e,t){if(!e.classId){if(e.dataScope){let i=e.parent;if(!i)throw new Error("vertex has no parent mark");let r=[];if(i.type===Pt.Area){let s=i.vertices.indexOf(e)<i.vertices.length/2;for(let e of t){let t=s?e.vertices.slice(0,e.vertices.length/2):e.vertices.slice(e.vertices.length/2);r=r.concat(t.filter((e=>e.dataScope)))}}else for(let e of t)r=r.concat(e.vertices.filter((e=>e.dataScope)));return r}{let i=e.parent;if(!i)throw new Error("vertex has no parent mark");let r=i.vertices.indexOf(e),s=[];for(let e of t)s.push(e.vertices[r]);return s}}}function O(e,t){if(e.dataScope){if(!e.parent)throw new Error("segment has no parent mark");let i=[];for(let e of t)i=i.concat(e.segments);return i}{let i=e.parent;if(!i)throw new Error("segment has no parent mark");let r=i.segments.indexOf(e),s=[];for(let e of t)s.push(e.segments[r]);return s}}function I(e,t){let i=[];return V(e,t.map((e=>l(e))),i),i}function N(e,t){let i=e.children.filter((e=>e.type==Pt.Collection));if(0!==i.length)for(let e of i){let i=e;for(;i&&i.dataScope;){if(i.dataScope.hasAttribute(t))return i;i=i.children?i.children[0]:void 0}}}function L(e){return e.type==Pt.Collection?e:e.parent?L(e.parent):void 0}function V(e,t,i){if(e)if(h(e,t)&&i.push(e),e.vertices)for(let r of e.vertices.concat(e.segments))h(r,t)&&i.push(r);else if(e.children&&e.children.length>0)for(let r of e.children)V(r,t,i)}function P(e){let t=e;for(;t;){if(t.type==Pt.Scene)return t;t=t.parent}}function M(e){let t=e;for("vertex"!=t.type&&"segment"!=t.type||(t=t.parent);t.parent&&[Pt.Collection,Pt.Glyph].includes(t.parent.type);)t=t.parent;return t}function D(e,t,i,r){let s=I(e,r);for(let e of s)if(B(e,t,i))return e}function B(e,t,r){switch(e.type){case Pt.Path:case Pt.Arc:case Pt.BezierCurve:case Pt.Line:{let s=i.getContext(),n=new Path2D(e.getSVGPathData());return s.lineWidth=Math.max(e.strokeWidth,2.5),s.stroke(n),e.closed?s.isPointInPath(n,t,r):s.isPointInStroke(n,t,r)}case Pt.Circle:{let i=e.x,s=e.y;if(e.rotation){let t=C(i,s,e.rotation[1],e.rotation[2],e.rotation[0]);i=t.x,s=t.y}return Math.sqrt(Math.pow(t-i,2)+Math.pow(r-s,2))<=e.radius+e.strokeWidth}default:return e.bounds.contains(t,r)}}function G(e,t){let i=[];if(F(e,i),t){let e={};for(let t of i)e[t.classId]=t;return Object.values(e)}return i}function F(e,t){if(v(e))t.push(e);else if(e.children&&!Object.values(Mt).includes(e.type))for(let i of e.children)F(i,t)}function z(e,t){if(e){if(t(e),e.vertices)for(let i of e.vertices)t(i);if(e.segments)for(let i of e.segments)t(i);if(e.children&&e.children.length>0)for(let i of e.children)z(i,t)}}class H{constructor(){this._refElements=[]}addRefElement(e){this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}const j=Object.freeze({GRID:"grid",STACK:"stack",PACKING:"packing",FORCE:"force",DIRECTED:"directedgraph",TIDYTREE:"tidytree",TREEMAP:"treemap",STRATA:"strata",CIRCULAR:"circular",CLUSTER:"cluster"});function U(e,t){return!!(e.startsWith("h")&&[g.LEFT,g.CENTER,g.RIGHT].indexOf(t)>=0)||(!!(e.startsWith("v")&&[g.TOP,g.MIDDLE,g.BOTTOM].indexOf(t)>=0)||(console.warn("Invalid alignment:",t),!1))}class W{constructor(e){this._id=e+"_"+Dt(),this._type=e,this._inputVars=[],this._outputVars=[]}run(){}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",DATA_EXTRACTOR:"dataExtractor",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",TARGET_UPDATER:"targetUpdater"});class X{constructor(e){let t=e||{};this._stops=[],this.type=Pt.LinearGradient,this.id=this.type+Dt(),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,i){this._stops.push({offset:e,color:t,opacity:i})}get stops(){return this._stops}}const q=Object.freeze({RowFirst:"rowFirst",ColumnFirst:"columnFirst"}),K=Object.freeze({TopLeft:"topLeft",TopRight:"topRight",BottomLeft:"bottomLeft",BottomRight:"bottomRight"}),Z={HORIZONTAL:"horizontal",VERTICAL:"vertical",ANGULAR:"angular",RADIAL:"radial"},$={Left2Right:"l2r",Right2Left:"r2l",Top2Bottom:"t2b",Bottom2Top:"b2t"},J=Object.freeze({CLOCKWISE:"clockwise",ANTI_CLOCKWISE:"anti-clockwise"}),Q=Object.freeze({INWARD:"inward",OUTWARD:"outward"});class ee{constructor(e,t,i,r){this.type="vertex",this._id=r,this._x=e,this._y=t,this._dataScope=void 0,this.parent=i,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 ee(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}}ee.styles=["vxShape","vxWidth","vxHeight","vxRadius","vxFillColor","vxStrokeColor","vxStrokeWidth","vxOpacity"];class te{constructor(e,t,i,r){this.type="segment",this._id=r,this.vertex1=e,this.vertex2=t,this.dataScope=void 0,this.parent=i}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:Pt.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 ee.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 i=0;i<e.length;i++)if(i!=e.length-1||e[i][0]!==e[0][0]||e[i][1]!==e[0][1]||this.type!==Pt.Path){t=new ee(e[i][0],e[i][1],this,this.vertexCounter++);for(let e of ee.styles)if(this[e]){let i=e.replace("vx","");t[i[0].toLowerCase()+i.slice(1)]=this[e]}this.vertices.push(t),i>0&&this.segments.push(new te(this.vertices[i-1],this.vertices[i],this,this.segmentCounter++))}let i=e[0],r=e[e.length-1];(i[0]===r[0]&&i[1]===r[1]||this.type===Pt.Rect)&&(this.closed=!0,"fillColor"in this.styles||(this.styles.fillColor="#fff"),this.segments.push(new te(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++))),this._dirty=!0}copyPropertiesTo(e){e.attrs=Object.assign({},this.attrs),e.styles=Object.assign({},this.styles);for(let t of ee.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 te(e.vertices[t-1],e.vertices[t],e,e.segmentCounter++));e.closed&&e.segments.push(new te(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 strokeDash(){return this.styles.strokeDash}set strokeDash(e){this.styles.strokeDash=e,this._dirty=!0}resize(e,t,i,r){let s=this.bounds,n=0===s.width?1:s.width,a=0===s.height?1:s.height;if("right"===i)for(let t of this.vertices)t._x=s.right-e/n*(s.right-t.x);else for(let t of this.vertices)t._x=s.left+e/n*(t.x-s.left);if("top"===r)for(let e of this.vertices)e._y=s.top+t/a*(e.y-s.top);else for(let e of this.vertices)e._y=s.bottom-t/a*(s.bottom-e.y);this._updateBounds(),this._dirty=!0}_updateBounds(){let e=[],t=[];if(this._d){const i=this._d.match(/[a-zA-Z][^a-zA-Z]*/g),r=" ";i.forEach((i=>{let s=i.slice(1).trim().split(r).map(Number);for(let[i,r]of s.entries())i%2==0?e.push(r):t.push(r)}))}else e=this.vertices.map((e=>e.x)),t=this.vertices.map((e=>e.y));let i=Math.min(...e),r=Math.min(...t),s=Math.max(...e),n=Math.max(...t),a=s-i,o=n-r;if(this._bounds=new c(i,r,a,o),this.type===Pt.Line||this.type===Pt.Path){let e=this.styles.strokeWidth?this.styles.strokeWidth:1;i===s?this._bounds=new c(i-e/2,r,s-i+e,n-r):r===n&&(this._bounds=new c(i,r-e/2,s-i,n-r+e))}}addVertex(e,t,i){let r=new ee(e,t,this,this.vertexCounter++);this.vertices.splice(i,0,r)}sortVertices(e,t){this.vertices.sort(((t,i)=>t[e]-i[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]}this._dirty=!0}sortVerticesByData(e,t,i){let r;r=i?(t,r)=>i.indexOf(t.dataScope.getValue(e))-i.indexOf(r.dataScope.getAttrVal(e)):(t,i)=>t.dataScope.getAttrVal(e)<i.dataScope.getAttrVal(e)?-1:1,this.vertices.sort(r),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]}this._dirty=!0}getSVGPathData(){if(this._d)return this._d;let e=t.path(),i=this._getD3CurveFunction(this.curveMode)(e);i.lineStart();for(let e of this.vertices)i.point(e.x,e.y);return this.closed&&i.point(this.vertices[0].x,this.vertices[0].y),i.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 ne.Natural:return t.curveNatural;case ne.Basis:return t.curveBasis;case ne.BumpX:return t.curveBumpX;case ne.BumpY:return t.curveBumpY;case ne.Linear:return t.curveLinear;case ne.Step:return t.curveStep;case ne.CatmullRom:return t.curveCatmullRom;case ne.Cardinal:return t.curveCardinal;case ne.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 re(e,t){const i=T.getSVG();let r=document.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("d",e.getSVGPathData()),i.appendChild(r);let s=r.getTotalLength();return r.getPointAtLength(s*t)}function se(e){return e instanceof ie&&e.source&&e.target}const ne={Natural:"natural",Basis:"basis",BumpX:"bumpX",BumpY:"bumpY",Bundle:"bundle",Linear:"linear",Step:"step",CatmullRom:"CatmullRom",Cardinal:"cardinal"};function ae(e,t,i){const r=e.match(/[a-zA-Z][^a-zA-Z]*/g),s=",";return r.map((e=>{const r=e[0],n=e.slice(1).trim();if("M"===r||"L"===r||"T"===r){const[e,a]=n.split(s).map(Number);return`${r}${e+t} ${a+i}`}if("C"===r){const e=n.split(s).map(Number);return`${r}${e[0]+t} ${e[1]+i} ${e[2]+t} ${e[3]+i} ${e[4]+t} ${e[5]+i}`}if("Q"===r){const e=n.split(s).map(Number);return`${r}${e[0]+t} ${e[1]+i} ${e[2]+t} ${e[3]+i}`}if("A"===r){const e=n.split(s).map(Number);return`${r}${e[0]} ${e[1]} ${e[2]} ${e[3]} ${e[4]} ${e[5]+t} ${e[6]+i}`}return"Z"===r||"z"===r?r:e})).join(" ")}class oe extends ie{constructor(e){super(e),this._type=Pt.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=le(this._startAngle),this._er=le(this._endAngle),this._direction="direction"in e?e.direction:J.ANTI_CLOCKWISE;let t=this._x+this._innerRadius*Math.cos(this._sr),i=this._y-this._innerRadius*Math.sin(this._sr),r=this._x+this._innerRadius*Math.cos(this._er),s=this._y-this._innerRadius*Math.sin(this._er),n=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,i],[n,a],[o,l],[r,s]])}get type(){return 0===this._innerRadius?Pt.Pie:Pt.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=le(this._startAngle),this._er=le(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),this._dirty=!0}_updateBounds(){let e=this.vertices.map((e=>e.x)),t=this.vertices.map((e=>e.y)),i=Math.min(...e),r=Math.min(...t),s=Math.max(...e)-i,n=Math.max(...t)-r;this._bounds=new c(i,r,s,n)}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 le(e){return e*Math.PI/180}function he(e){return 180*e/Math.PI}function ce(e){return(e%360+360)%360}function de(e,t,i,r){let s=e-i,n=r-t;return Math.atan2(n,s)*(180/Math.PI)}class ue{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 ue(this._dt);for(let e in this._attr2value)t=t.cross(e,this._attr2value[e]);for(let i in e._attr2value)t=t.cross(i,e._attr2value[i]);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 i=this.clone();return i._attr2value[e]=t,i._updateTuples(e,t),i}derive(e){let t=Object.assign({},this._attr2value);for(let i in e)t[i]=e[i];let i=new ue(this._dt);for(let e in t)i._attr2value[e]=t[e],i._updateTuples(e,t[e]);return i}clone(){let e=new ue(this._dt);return e._attr2value=Object.assign({},this._attr2value),e._tuples=this._tuples.map((e=>e)),e}getAttrVal(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,i){let r=this._tuples.map((t=>t[e]));switch(i){case pe.Max:return Math.max(...r);case pe.Min:return Math.min(...r);case pe.Avg:case pe.Mean:return t.mean(r);case pe.Median:return t.median(r);case pe.Count:return r.length;case pe.Percentile25:return t.quantile(r,.25);case pe.Percentile75:return t.quantile(r,.75);case pe.Sum:default:return t.sum(r)}}_updateTuples(e,t){this._tuples=this._tuples.filter((i=>i[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 pe={Max:"max",Min:"min",Avg:"avg",Median:"median",Sum:"sum",Count:"count",Mean:"mean",Percentile25:"percentile 25",Percentile75:"percentile 75"};class ge{constructor(e,t){this._id=Pt.TreeData+Dt(),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 Bt(this._nodeList,"nodes"),this._linkTable=new Bt(this._linkList,"links"),this._nodeTable.tree=this,this._linkTable.tree=this}get nodeTable(){return this._nodeTable}get linkTable(){return this._linkTable}_traverse(e,t,i,r=0){let s={};xe in e||(e[xe]="n"+t.length),t.push(s),e._depth=r;for(let n in e)if("children"==n&&e[n]&&e[n].length>0)for(let s of e[n]){let n=this._traverse(s,t,i,r+1);i.push({parent:e[xe],child:n})}else s[n]=e[n];return this._nodeHash[s[xe]]=s,s[xe]}getNodeDataScope(e){return new ue(this._nodeTable).cross(Ft,e[Ft])}getNode(e){return this._nodeHash[e]}getRoot(){return this._nodeTable.data[0]}getChildren(e){let t=e[xe],i=[],r=this._linkTable.data,s=this._nodeTable.data;for(let e in r)if(r[e].parent==t){let t=r[e].child,n=s.findIndex((e=>e[xe]==t));i.push(s[n])}return i}getParent(e){let t=e[xe],i=this._linkTable.data,r=this._nodeTable.data;for(let e in i)if(i[e].child==t){let t=i[e].parent,s=r.findIndex((e=>e[xe]==t));return r[s]}}}function fe(e){return e.dataScope._dt.tree}class ye{constructor(e,t){this._id=Pt.NetworkData+Dt(),this.initialize(e,t)}initialize(e,t){this.url=t,this._nodeTable=new Bt(e.nodes,this._id+"_nodes"),this._linkTable=new Bt(e.links,this._id+"_links"),this._nodeTable.graph=this,this._linkTable.graph=this,this._rawNodes=e.nodes,this._rawLinks=e.links,this._nodeHash={};for(let t of e.nodes)this._nodeHash[t[xe]]=t}get nodeTable(){return this._nodeTable}get linkTable(){return this._linkTable}get nodeList(){return this._rawNodes}get linkList(){return this._rawLinks}getNode(e){return this._nodeHash[e]}getLinks(e){let t=e[xe],i=this._rawLinks,r=[];for(let e in i)i[e].target!==t&&i[e].source!==t||r.push(i[e]);return r}buildNodeHierarchy(e){let t={};return t[xe]="root",be(t,this._rawNodes,e),new ge(t,this.url)}}function me(e){return e.dataScope._dt.graph}function be(e,t,i){if(0===t.length||0===i.length)return;"children"in e||(e.children=[]);let r={};for(let e of t){let t=e[i[0]];t in r||(r[t]=[]),r[t].push(e)}if(1===i.length)for(let t in r){let i={children:r[t]};i[xe]=t,e.children.push(i)}else for(let t in r){let s={};s[xe]=t,e.children.push(s),be(s,r[t],i.slice(1))}}const xe="id";function ve(e,t){if(t.hasAttribute(e))return!0;if(t.tree&&t.tree.nodeTable.hasAttribute(e.split(".")[1]))return!0;throw new Error(["Attribute",e,"does not exist in the table",t.name].join(" "))}const we=Object.freeze({Boolean:"boolean",Integer:"integer",Number:"number",Date:"date",String:"string"});function Ee(e){var t=Object.values(we);for(let i=0;i<e.length;i++){let r=e[i];if(null!=r){for(let e=0;e<t.length;e++)Ae[t[e]](r)||(t.splice(e,1),e-=1);if(1==t.length)return t[0]}}return t[0]}const Ae={boolean:function(e){return"true"===e||"false"===e||!0===e||!1===e||"[object Boolean]"==toString.call(e)},integer:function(e){return Ae.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 Ce(e,i){let r={};switch(i){case we.Boolean:r.trueCount=e.filter((e=>e)).length,r.falseCount=e.filter((e=>!e)).length;break;case we.Date:r.min=t.min(e),r.max=t.max(e),r.extent=[r.min,r.max],r.unique=[...new Set(e)];break;case we.String:r.unique=[...new Set(e)];break;default:r.min=t.min(e),r.max=t.max(e),r.extent=[r.min,r.max],r.mean=t.mean(e),r.median=t.median(e),r.unique=[...new Set(e)]}return r}function Te(e,t,i,r,s){let n=s.getAttributeType(i);if(n!=we.String&&n!=we.Date&&n!=we.Number&&n!=we.Integer)throw new Error("Densify only works on a string or date attribute: "+i+" is "+n);if(!function(e){if([Pt.Line,Pt.Circle,Pt.Rect,Pt.Area].indexOf(e.type)<0)return!1;if(e.dataScope){let t=k(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 Pt.Line:return function(e,t,i){let r,s,n=k(e);for(let a of n){let n=a.dataScope?a.dataScope:new ue(i),o=i.getUniqueAttributeValues(t).map((e=>n.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 ee.styles)a[e]&&(l[e]=a[e]);let h=a.vertices[0].x,c=a.vertices[0].y,d=[],u=a.vertices[1].x-h,_=a.vertices[1].y-c;for(let e=0;e<o.length;e++)d.push([h+e*u/(o.length-1),c+e*_/(o.length-1)]);l.vertices=d,l.type="path";let p=Ot(l);s||(s=p.id),p._classId=s,p.dataScope=n,p._updateBounds(),p._refBounds=p.bounds.clone();let g=a.parent;g.addChild(p),g.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&&(r=p)}return r}(t,i,s);case Pt.Circle:return function(e,t,i,r,s){let n,a,o=k(e),l=i.getAttributeType(t);for(let h of o){let o=h.dataScope?h.dataScope:new ue(i),c=i.getUniqueAttributeValues(t).map((e=>o.cross(t,e)));c=l==we.Number?c:c.filter((e=>!e.isEmpty()));let d=c.length;if(d<3)throw new Error("INSUFFICIENT_DATA_SCOPES");let u=r||90,_=360/d,p=[],g=[],f="clockwise"==(s||"clockwise")?-1:1;for(let e=0;e<c.length;e++){let t=u+f*e*_;g[e]=t;let i=Re(h.x,h.y,h.radius,g[e]);p.push(i)}let y=Object.assign({},h.styles);y.vertices=p,y.type="polygon",y.x=h.x,y.y=h.y,y.radius=h.radius;let m=Ot(y);a||(a=m.id),m._classId=a,m.dataScope=o;let b=h.parent;b.addChild(m),b.removeChild(h);for(let[e,t]of m.vertices.entries())t._polarAngle=g[e],e>=c.length?t.dataScope=o.merge(c[2*c.length-1-e]):t.dataScope=o.merge(c[e]);h===e&&(n=m)}return n}(t,i,s);case Pt.Rect:return function(e,t,i,r){let s,n,a=k(e),o=t||Z.HORIZONTAL;if(o!=Z.HORIZONTAL&&o!=Z.VERTICAL)throw new Error("Unknown orientation: "+o);for(let t of a){let a=r.getAttributeType(i),l=t.dataScope?t.dataScope:new ue(r),h=r.getUniqueAttributeValues(i).map((e=>l.cross(i,e)));h=a==we.Number?h:h.filter((e=>!e.isEmpty())),1===h.length&&h.push(h[0].clone()),a!=we.Number&&a!=we.Date||h.sort(((e,t)=>e._attr2value[i]>t._attr2value[i]?1:-1));let c=Object.assign({},t.styles),d=t.vertices[0].x,u=t.vertices[0].y,_=t.vertices[t.vertices.length-2].x,p=t.vertices[t.vertices.length-2].y,f=[],y=_-d,m=p-u;for(let e=0;e<h.length;e++)f.push(o==Z.VERTICAL?[_,u+e*m/(h.length-1)]:[d+e*y/(h.length-1),u]);for(let e=0;e<h.length;e++)f.push(o==Z.VERTICAL?[d,u+(h.length-1-e)*m/(h.length-1)]:[d+(h.length-1-e)*y/(h.length-1),p]);c.vertices=f,c.type="area";let b=Ot(c);n||(n=b.id),b._classId=n,b.dataScope=l,b.orientation=o,b.baseline=o===Z.HORIZONTAL?g.BOTTOM:g.LEFT;let x=t.parent;x.addChild(b),x.removeChild(t);for(let[e,t]of b.vertices.entries())e>=h.length?t.dataScope=l.merge(h[2*h.length-1-e]):t.dataScope=l.merge(h[e]);t===e&&(s=b)}return s}(t,r,i,s)}}function Re(e,t,i,r){return[i*Math.cos(le(r))+e,t-i*Math.sin(le(r))]}class ke{constructor(e){this._id="v_"+Dt(),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 Se=Object.freeze({CHANNEL:"channel",PROPERTY:"property",ATTRIBUTE:"attribute",ITEMS:"items",DATASCOPE:"datascope",ATTR_VALUE:"dataValue",BOUNDS:"bounds",SCALE:"scale",CONDITION_RESULT:"conditionResult",AFFIXATION:"affixation",ALIGNMENT:"alignment",EVT_CTX:"evtContext"});class Oe extends ke{constructor(e,t,i){super(e),this._channel=t,this._elem=i}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[Me(e.element)][e.channel]}function Le(e,t){let i=e.scene._encodings[Me(e)],r=[];if(i&&(r=r.concat(Object.values(i))),t){let t=e.scene;for(let i in t._encodings){let s=i.split("_");s.pop(),s.join("_")===e.classId&&(r=r.concat(Object.values(t._encodings[i])))}}return r}function Ve(e,t,i){for(let r in i._encodings){let s=i._encodings[r];if(s[t]&&s[t].attribute==e)return s[t]}return null}function Pe(e,t){let i=e.scene._encodings[Me(e)];return i&&i[t]?i[t]:null}function Me(e){if(Array.isArray(e))return e.map((e=>Me(e))).join("_");if(e.classId)return e.classId;if("vertex"==e.type&&e.dataScope){if(e.parent.type===Pt.Area){let t=e.parent.vertices.indexOf(e)<e.parent.vertices.length/2;return e.parent.classId+"_v"+(t?0:e.parent.vertices.length-1)}return e.parent.classId+"_v"}return"vertex"==e.type?e.parent.classId+"_v"+e.parent.vertices.indexOf(e):"segment"==e.type&&e.dataScope?e.parent.classId+"_s":"segment"==e.type?e.parent.classId+"_s"+e.parent.segments.indexOf(e):null}function De(e,t){if(0==e.children.length)return[];let i=P(e),r=e.type===Pt.Composite?e.children:[e.children[0]],s=Object.keys(i._encodings),n=[];for(let e of r){let t=e;for(;t;){if(t.classId&&n.indexOf(t.classId)<0&&n.push(t.classId),t.type===Pt.Glyph){t.children.forEach((e=>n.push(e.classId)));break}if(!t.children)break;t=t.children[0]}}let a=[];for(let e of s)for(let r of n)0===e.indexOf(r)&&i._encodings[e][t]&&a.push(i._encodings[e][t]);return a}function Be(e){let t=Pe(e,"y"),i=Pe(e,"height");return t||i&&i.scales[0].domain[0]<0}function Ge(e){let t=Pe(e,"x"),i=Pe(e,"width");return t||i&&i.scales[0].domain[0]<0}function Fe(e,t){let i=function(e){let t=e.parent,i=[];for(;t.type!==Pt.Scene;)i.push(t),t=t.parent;return i}(e);for(let e of i)if(Pe(e,t))return!1;return i.length>=2?i[i.length-2]:e}function ze(e,t,i){switch(e.type){case Pt.Rect:case Pt.Path:case Pt.Line:case Pt.Area:!function(e,t,i){for(let r of e.vertices)He(r,t,i);e._updateBounds(),e._refBounds&&e._refBounds.translate(t,i)}(e,t,i),0===t&&0===i||(e._dirty=!0);break;case Pt.Group:case Pt.Collection:case Pt.Glyph:!function(e,t,i){for(let r of e.children)ze(r,t,i);e._layout&&(void 0!==e._layout._left&&(e._layout._left+=t),void 0!==e._layout._top&&(e._layout._top+=i),e._layout._cellBounds&&e._layout._cellBounds.forEach((e=>e.translate(t,i))));e._updateBounds(),e._refBounds&&e._refBounds.translate(t,i)}(e,t,i);break;case"segment":!function(e,t,i){He(e.vertex1,t,i),He(e.vertex2,t,i)}(e,t,i),0===t&&0===i||(e.parent._dirty=!0);break;case"vertex":He(e,t,i),0===t&&0===i||(e.parent._dirty=!0);break;default:!function(e,t,i){e._x+=t,e._y+=i,e._updateBounds(),e._refBounds&&e._refBounds.translate(t,i)}(e,t,i),0===t&&0===i||(e._dirty=!0)}}function He(e,t,i){e._x+=t,e._y+=i}function je(e,t,i){switch(t){case"x":We(e,i);break;case"y":Ye(e,i);break;case"width":!function(e,t){e.resize(t,e.height)}(e,i);break;case"height":!function(e,t){e.resize(e.width,t)}(e,i);break;case"radius":e.radius=i;break;case"strength":e._strength=i;break;case"area":e.type===Pt.Circle?e.radius=Math.sqrt(i/Math.PI):e.type===Pt.Rect&&e.resize(Math.sqrt(i),Math.sqrt(i)),e._updateBounds();break;case"text":e._text=i;break;case"curveMode":e.curveMode=i;break;case"baseline":e.baseline=i;break;case"angle":[Pt.Arc,Pt.Pie].includes(e.type)&&function(e,t){e._endAngle=ce(e._startAngle+t),e._sr=le(e._startAngle),e._er=le(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,i);break;case"startAngle":!function(e,t){let i=e.angle;e._startAngle=t,e._endAngle=ce(e._startAngle+i),e._sr=le(e._startAngle),e._er=le(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,i);break;case"thickness":!function(e,t){Ue(e,e._innerRadius+t)}(e,i);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,i);break;case"outerRadius":Ue(e,i);break;case"radialDistance":{let t=Re(e.parent.x,e.parent.y,i,e.polarAngle);We(e,t[0]),Ye(e,t[1]);break}case"visibility":e.visibility=i;break;case"src":e.src=i;break;default:if("vertex"===e.type)e[t]=i;else if(e instanceof bt)for(let r of e.children)je(r,t,i);else e.styles[t]=i}"vertex"===e.type?e.parent._dirty=!0:e._dirty=!0}function Ue(e,t){e._outerRadius=t,e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er)}function 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,i,r){e!==this.width&&("right"===i?(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"===r?(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)),this._dirty=!0}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=Pt.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 te(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++))}get topLeftVertex(){return this._orientation===Z.HORIZONTAL?this.vertices[0]:this.vertices[this.vertices.length-1]}get bottomLeftVertex(){return this._orientation===Z.HORIZONTAL?this.vertices[this.vertices.length-1]:this.vertices[this.vertices.length/2]}get topRightVertex(){return this._orientation===Z.HORIZONTAL?this.vertices[this.vertices.length/2-1]:this.vertices[0]}get bottomRightVertex(){return this._orientation===Z.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,this._dirty=!0}get orientation(){return this._orientation}set orientation(e){this._orientation=e,this._dirty=!0}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 ke{constructor(e,t){super(e),this._encs={},this._encs[t.channel+"_"+Me(t.element)]=t,this._initialized=!1}addLinkedEncoding(e){this._encs[e.channel+"_"+Me(e.element)]=e}getEncoding(e,t){let i=e+"_"+Me(t);return this._encs[i]}get encodings(){return Object.values(this._encs)}get initialized(){return this._initialized}set initialized(e){this._initialized=e}}class Ze extends ke{constructor(e,t,i){super(e),this._result=t,this._condEnc=i}get result(){return this._result}get conditionalEncoding(){return this._condEnc}}class $e extends W{constructor(e){super(e)}storeValues(e,t){this._storedValues={};let i=k(e);for(let e of i)this._storedValues[e.id]=e[t]}_restoreValues(e){let t=this.outputVar.channel;e.forEach((e=>{e.styles[t]!==this._storedValues[e.id]&&(e._dirty=!0,e.styles[t]=this._storedValues[e.id])}))}run(){super.run();let e=this.inputVars.find((e=>e instanceof Ke)),t=this.outputVar,i=k(t.element),r=["x","y","width","height","radius"].includes(t.channel);if(e){let i=e.getEncoding(t.channel,t.element);for(let e of i.scales){let t=i.getElements(e);this._doMapping(t,e,i.attrValues,i),r&&this._updateRefBounds(t,e,i)}}else this._restoreValues(i);let s=this._getUsableCondEncodings();if(s.length>0&&this._doCondEncoding(i,s.map((e=>e.conditionalEncoding))),r){p(["vertex","segment"].includes(t.element.type)?t.element.parent:t.element)}}_updateRefBounds(e,t,i){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,g.CENTER),e._refBounds.setHeight(2*t.rangeExtent,g.MIDDLE)}));break;case"x":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let r=e.parent._refBounds;e.parent._refBounds=new c(i.flipScale?t.range[1]:t.range[0],r.top,t.rangeExtent,r.height)}));break;case"y":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let r=e.parent._refBounds;e.parent._refBounds=new c(r.left,i.flipScale?t.range[0]:t.range[1],r.width,t.rangeExtent)}))}}_doMapping(e,t,i,r){switch(this.outputVar.channel){case"width":t.domain[0]<0&&e[0]instanceof Xe?function(e,t,i){for(let r=0;r<e.length;r++){let s=e[r],n=s.refBounds.left+t.map(0),a=s.refBounds.left+t.map(i[s.id]);ze(s.leftSegment,n-s.leftSegment.x,0),ze(s.rightSegment,a-s.rightSegment.x,0)}}(e,t,i):t.domain[0]<0&&e[0]instanceof qe||(e[0].type===Pt.Area?function(e,t,i){let r=e[0].baseline;if(e[0].orientation===Z.VERTICAL)switch(r){case"left":for(let r of e)k(r.topLeftVertex,r).forEach((e=>je(e,"x",r.refBounds.left))),k(r.topRightVertex,r).forEach((e=>je(e,"x",r.refBounds.left+t.map(i[e.id]))));break;case"right":for(let r of e)k(r.topLeftVertex,r).forEach((e=>je(e,"x",r.refBounds.right-t.map(i[e.id])))),k(r.topRightVertex,r).forEach((e=>je(e,"x",r.refBounds.right)));break;case"center":console.log("center");for(let r of e)k(r.topLeftVertex,r).forEach((e=>je(e,"x",r.refBounds.center-t.map(i[e.id])/2))),k(r.topRightVertex,r).forEach((e=>je(e,"x",r.refBounds.center+t.map(i[e.id])/2)))}}(e,t,i):this._doStandardMapping(e,t,i));break;case"height":t.domain[0]<0&&e[0]instanceof Xe?function(e,t,i){for(let r=0;r<e.length;r++){let s=e[r],n=s.refBounds.bottom-t.map(0),a=s.refBounds.bottom-t.map(i[s.id]);ze(s.bottomSegment,0,n-s.bottomSegment.y),ze(s.topSegment,0,a-s.topSegment.y)}}(e,t,i):t.domain[0]<0&&e[0]instanceof qe?function(e,t,i){for(let r of e){let e=S(r.topLeftVertex,[r]);for(let s of e)je(s,"y",r.refBounds.bottom-t.map(i[s.id]));S(r.bottomLeftVertex,[r]).forEach((e=>je(e,"y",r.refBounds.bottom-t.map(0))))}}(e,t,i):e[0].type===Pt.Area?function(e,t,i){let r=e[0].baseline;if(e[0].orientation===Z.HORIZONTAL)switch(r){case"top":for(let r of e)k(r.bottomLeftVertex,r).forEach((e=>je(e,"y",r.refBounds.top+t.map(i[e.id])))),k(r.topLeftVertex,r).forEach((e=>je(e,"y",r.refBounds.top)));break;case"middle":for(let r of e)k(r.topLeftVertex,r).forEach((e=>je(e,"y",r.refBounds.middle-t.map(i[e.id])/2))),k(r.bottomLeftVertex,r).forEach((e=>je(e,"y",r.refBounds.middle+t.map(i[e.id])/2)));break;default:for(let r of e)k(r.topLeftVertex,r).forEach((e=>je(e,"y",r.refBounds.bottom-t.map(i[e.id])))),k(r.bottomLeftVertex,r).forEach((e=>je(e,"y",r.refBounds.bottom)))}}(e,t,i):this._doStandardMapping(e,t,i);break;case"text":this._doTextMapping(e,i);break;case"fillGradient":!function(e,t,i,r){for(let s of e){let e=s.vertices.map((e=>i[e.id])),n=Math.min(...e),a=Math.max(...e),o="horizontal"===s.orientation?new X({x1:0,y1:100,x2:0,y2:0}):new X({x1:0,y1:0,x2:100,y2:0});if(o.addStop(0,t.map(n),1),r._mapping){let e=Object.keys(r._mapping).map((e=>parseFloat(e))).sort();for(let i of e)i>n&&i<a&&o.addStop(100*(i-n)/(a-n),t.map(i),1)}else"divergingColor"===t.type&&o.addStop(100*-n/(a-n),t.map(0),1);"sequentialColor"===t.type&&o.addStop(100*-n/(a-n),t.map(0),1),o.addStop(100,t.map(a),1),s.fillColor=o}}(e,t,i,r);break;default:this._doStandardMapping(e,t,i)}}_doTextMapping(e,t){let i=this.outputVar.channel;e.forEach((e=>{je(e,i,t[e.id])}))}_doStandardMapping(e,t,i){let r=this.outputVar.channel;e.forEach((e=>{let s=t.map(i[e.id]);je(e,r,s),e instanceof ie&&e.firstVertex&&e.firstVertex.shape&&"strokeColor"===r&&e.vertices.forEach((e=>e.fillColor=s))}))}_doCondEncoding(e,t){let i=e[0].scene;for(let r of e){let e=t.map((e=>e.evalResult.getValue(r.id))).every((e=>e||void 0===e)),s=t[0].eventContext;t[0].stylingFunction(e,s,r,i)}}_updateElement(e,t,i,r){let s;"object"==typeof r&&e.triggerElement?"property"in r?s=e.triggerElement[r.property]:"attribute"in r&&(s=e.triggerElement.dataScope.getAttrVal(r.attribute)):s=r,["x","y"].includes(i)&&"offset"in r&&(s+=r.offset),je(t,i,s)}_getUsableCondEncodings(){return this.inputVars.filter((e=>e instanceof Ze))}}class Je extends ke{constructor(e,t,i){super(e),this._property=t,this._elem=i}get property(){return this._property}get element(){return this._elem}}function Qe(e){return e in et?et[e]:e}const et=Object.freeze({numCols:"layoutParameter",numRows:"layoutParameter",startCorner:"layoutParameter",direction:"layoutParameter"}),tt=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",LAYOUT_PARAMETER:"layoutParameter",CHILDREN_ORDER:"childrenOrder",TRANSFORM:"transform"});function it(e,t){if(t.findVariable(Se.BOUNDS,[e]))return;let i=t.getVariable(Se.BOUNDS,e),r=t.createOneWayDependency(Y.EVAL_BBOX);switch(t.connect(r,i),e.type){case Pt.Circle:case Pt.Polygon:{let i=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"radius",e),a=t.getVariable(Se.CHANNEL,"area",e);t.connect(n,r),t.connect(i,r),t.connect(s,r),t.connect(a,r);break}case Pt.Area:case Pt.Line:case Pt.BezierCurve:case Pt.Path:case Pt.Image:{let i=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"width",e),a=t.getVariable(Se.CHANNEL,"height",e);t.connect(i,r),t.connect(s,r),t.connect(n,r),t.connect(a,r);break}case Pt.Rect:{let i=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"width",e),a=t.getVariable(Se.CHANNEL,"height",e),o=t.getVariable(Se.CHANNEL,"area",e);t.connect(i,r),t.connect(s,r),t.connect(n,r),t.connect(a,r),t.connect(o,r);break}case Pt.SimpleText:case Pt.RichText:{let i=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"text",e);t.connect(i,r),t.connect(s,r),t.connect(n,r);break}case Pt.Ring:{let i=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"innerRadius",e),a=t.getVariable(Se.CHANNEL,"outerRadius",e);t.connect(i,r),t.connect(s,r),t.connect(n,r),t.connect(a,r);break}case Pt.Pie:case Pt.Arc:{let i=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"innerRadius",e),a=t.getVariable(Se.CHANNEL,"outerRadius",e),o=t.getVariable(Se.CHANNEL,"startAngle",e),l=t.getVariable(Se.CHANNEL,"endAngle",e),h=t.getVariable(Se.CHANNEL,"angle",e),c=t.getVariable(Se.CHANNEL,"thickness",e);t.connect(i,r),t.connect(s,r),t.connect(n,r),t.connect(a,r),t.connect(o,r),t.connect(l,r),t.connect(h,r),t.connect(c,r);break}}r.run()}function rt(e,t){let i=t.findVariablesByElement(e);for(let e in i){let r=i[e];for(let e of r)t.deleteVariable(e)}}function st(e,t){let i=t.findVariable(Se.CHANNEL,[e.channel,e.element]);i||console.warn("cannot find encoding to remove from the dep graph");let r=i.incomingDataflow;t.deleteOperator(r)}function nt(e,t){if(e.type===Pt.Axis){let i=t.findVariable(Se.PROPERTY,[tt.AXIS_PATH_POSITION,e]).incomingDataflow;t.deleteOperator(i),i=t.findVariable(Se.PROPERTY,[tt.AXIS_TICKS_POSITION,e]).incomingDataflow,t.deleteOperator(i),i=t.findVariable(Se.PROPERTY,[tt.AXIS_LABELS_POSITION,e]).incomingDataflow,t.deleteOperator(i)}else if(e.type===Pt.Gridlines){let i=t.findVariable(Se.PROPERTY,[tt.GRIDLINES_POSITION,e]).incomingDataflow;t.deleteOperator(i)}}function at(e,t){if(t.findVariable(Se.BOUNDS,[e]))return;let i=t.getVariable(Se.BOUNDS,e),r=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"width",e),a=t.getVariable(Se.CHANNEL,"height",e),o=t.createOneWayDependency(Y.EVAL_BBOX);t.connect(r,o),t.connect(s,o),t.connect(n,o),t.connect(a,o),t.connect(o,i),o.run()}function ot(e,t){let i=t.getVariable(Se.BOUNDS,e),r=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getVariable(Se.CHANNEL,"width",e),a=t.getVariable(Se.CHANNEL,"height",e),o=t.createOneWayDependency(Y.EVAL_BBOX);t.connect(r,o),t.connect(s,o),t.connect(n,o),t.connect(a,o),t.connect(o,i),o.run()}function lt(e,t,i){let r=i.getVariable(Se.BOUNDS,e),s=i.getVariable(Se.BOUNDS,t),n=i.getIncomingDataflowOperator(Y.EVAL_BBOX,r),a=s.outgoingEdges.find((e=>e.fromNode===s&&e.toNode===n));if(a&&i.disconnect(s,n,a),e.layout){let r=i.getVariable(Se.CHANNEL,"x",t),s=i.getIncomingDataflowOperator(dt(e.layout.type),r);s&&i.deleteOperator(s)}}function ht(e,t,i){let r=i.getVariable(Se.BOUNDS,e),s=i.getVariable(Se.BOUNDS,t),n=i.getIncomingDataflowOperator(Y.EVAL_BBOX,r);i.connect(s,n),i.connect(n,r),e.layout&&_t(e,e.layout,i)}function ct(e,t){let i=t.getVariable(Se.BOUNDS,e),r=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"y",e),n=t.getIncomingDataflowOperator(Y.EVAL_BBOX,i);t.connect(r,n),t.connect(s,n);for(let i of e.children)t.connect(t.getVariable(Se.BOUNDS,i),n);t.connect(n,i),n.run()}function dt(e){switch(e){case j.GRID:return Y.GRID_LAYOUT;case j.STACK:return Y.STACK_LAYOUT;case j.PACKING:return Y.PACK_LAYOUT;case j.FORCE:return Y.FORCE_LAYOUT;case j.DIRECTED:return Y.DIRECTED_LAYOUT;case j.TIDYTREE:return Y.TIDY_TREE_LAYOUT;case j.TREEMAP:return Y.TREEMAP_LAYOUT;case j.STRATA:return Y.STRATA_LAYOUT;case j.CIRCULAR:return Y.CIRCULAR_LAYOUT;case j.CLUSTER:return Y.CLUSTER_LAYOUT}}function ut(e,t,i){let r=i.getVariable(Se.PROPERTY,tt.CHILDREN_ORDER,e),s=i.getOutgoingDataflowOperator(dt(t.type),r);i.deleteOperator(s)}function _t(e,t,i){let r=t?t.type:"none",s=r===j.TREEMAP?G(e)[0]:e.children[0];if(!s)return;let n=i.getVariable(Se.CHANNEL,"width",s),a=i.getVariable(Se.CHANNEL,"height",s),o=i.getVariable(Se.PROPERTY,tt.CHILDREN_ORDER,e),l=i.getVariable(Se.CHANNEL,"x",s),h=i.getVariable(Se.CHANNEL,"y",s),c=i.getVariable(Se.CHANNEL,"visibility",s),d=i.getVariable(Se.PROPERTY,tt.LAYOUT_PARAMETER,t),u=i.getOutgoingDataflowOperator(dt(r),o);if(i.connect(n,u),i.connect(a,u),i.connect(o,u),i.connect(d,u),i.connect(c,u),i.connect(u,l),i.connect(u,h),i.disconnectChannelVarFromBBoxOperator(n),i.disconnectChannelVarFromBBoxOperator(a),s.type===Pt.Arc||s.type===Pt.Pie){let e=i.getVariable(Se.CHANNEL,"angle",s),t=i.getVariable(Se.CHANNEL,"thickness",s);i.connect(e,u),i.connect(t,u)}else if(s.type===Pt.Circle){let e=i.getVariable(Se.CHANNEL,"area",s),t=i.getVariable(Se.CHANNEL,"radius",s);i.connect(e,u),i.connect(t,u),i.disconnectChannelVarFromBBoxOperator(e),i.disconnectChannelVarFromBBoxOperator(t)}else if(s.type===Pt.Rect){let e=i.getVariable(Se.CHANNEL,"area",s);i.connect(e,u),i.disconnectChannelVarFromBBoxOperator(e)}if(u.run(),s.links&&pt(s,i),s.children&&s.children[0]){let e=i.getVariable(Se.BOUNDS,s.children[0]),t=i.getVariable(Se.CHANNEL,"x",s).incomingDataflow;t&&i.connect(e,t),i.disconnectChannelVarFromBBoxOperator(e)}}function pt(e,t){let i=e.links[0],r=t.getVariable(Se.CHANNEL,"x",e),s=t.getVariable(Se.CHANNEL,"x",i),n=t.getVariable(Se.CHANNEL,"strokeWidth",i),a=t.getVariable(Se.CHANNEL,"strength",i),o=t.createOneWayDependency(Y.LINK_PLACER);t.connect(r,o),t.connect(n,o),t.connect(a,o),t.connect(o,s)}function gt(e,t,i){let r=e.attribute,s=e.channel,n=e.element,a=t.createOneWayDependency(Y.ENCODER);if(["width","height"].includes(e.channel)&&n.type===Pt.Area){let e=t.getVariable(Se.PROPERTY,tt.BASE_LINE,n);t.connect(e,a)}if(i){let r=t.getVariable(Se.ATTR_VALUE,i),o=t.getVariable(Se.SCALE,i),l=t.getVariable(Se.CHANNEL,s,n);t.connect(o,a),t.connect(a,l),r.addLinkedEncoding(e),o.addLinkedEncoding(e),r.incomingDataflow.run()}else{let i=t.getVariable(Se.ATTRIBUTE,r,Gt(n)),o=t.getVariable(Se.PROPERTY,tt.INCLUDE_ZERO,e),l=t.getVariable(Se.ATTR_VALUE,e),h=t.getVariable(Se.DATASCOPE,n),c=t.getVariable(Se.PROPERTY,tt.TRANSFORM,e),d=t.createOneWayDependency(Y.DATA_EXTRACTOR);t.connect(i,d),t.connect(o,d),t.connect(h,d),t.connect(c,d),t.connect(d,l),d.run();let u=t.getVariable(Se.PROPERTY,tt.RANGE_START,e),_=t.getVariable(Se.PROPERTY,tt.RANGE_EXTENT,e),p=t.getVariable(Se.PROPERTY,tt.FLIP_SCALE,e),g=t.getVariable(Se.SCALE,e),f=t.createOneWayDependency(Y.SCALE_BUILDER);t.connect(u,f),t.connect(_,f),t.connect(p,f),t.connect(l,f),t.connect(f,g),f.run();let y=t.getVariable(Se.CHANNEL,s,n);t.connect(g,a),t.connect(a,y),a.run()}}function ft(e,t){let i=t.getVariable(Se.PROPERTY,tt.AXIS_ORIENTATION,e),r=t.getVariable(Se.BOUNDS,e.elements[0].parent),s=t.getVariable(Se.PROPERTY,tt.AXIS_PATH_POSITION,e),n=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(i,n),t.connect(r,n),t.connect(n,s),n.run();let a=t.getVariable(Se.PROPERTY,tt.AXIS_TICK_OFFSET,e),o=t.getVariable(Se.PROPERTY,tt.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),h=t.getVariable(Se.PROPERTY,tt.AXIS_TICKS_POSITION,e);t.connect(s,l),t.connect(a,l),t.connect(o,l),t.connect(l,h),l.run();let c=t.getVariable(Se.PROPERTY,tt.AXIS_LABEL_OFFSET,e),d=t.getVariable(Se.PROPERTY,tt.AXIS_LABEL_FORMAT,e),u=t.getVariable(Se.PROPERTY,tt.AXIS_FONT_SIZE,e),_=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(Se.PROPERTY,tt.AXIS_LABELS_POSITION,e);t.connect(s,_),t.connect(c,_),t.connect(d,_),t.connect(u,_),t.connect(_,p),_.run();let g=t.getVariable(Se.PROPERTY,tt.AXIS_TITLE_POSITION,e),f=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(s,f),t.connect(f,g),f.run();let y=t.getVariable(Se.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(h,m),t.connect(p,m),t.connect(m,y)}function yt(e,t){let i=t.getVariable(Se.PROPERTY,tt.AXIS_ORIENTATION,e),r=t.getVariable(Se.BOUNDS,M(e.elements[0])),s=t.getVariable(Se.PROPERTY,tt.AXIS_PATH_POSITION,e),n=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(i,n),t.connect(r,n),t.connect(n,s),n.run();let a=t.getVariable(Se.PROPERTY,tt.AXIS_TICK_OFFSET,e),o=t.getVariable(Se.PROPERTY,tt.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),h=t.getVariable(Se.PROPERTY,tt.AXIS_TICKS_POSITION,e);t.connect(s,l),t.connect(a,l),t.connect(o,l),t.connect(l,h),l.run();let c=t.getVariable(Se.PROPERTY,tt.AXIS_LABEL_OFFSET,e),d=t.getVariable(Se.PROPERTY,tt.AXIS_LABEL_FORMAT,e),u=t.getVariable(Se.PROPERTY,tt.AXIS_FONT_SIZE,e),_=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(Se.PROPERTY,tt.AXIS_LABELS_POSITION,e);t.connect(s,_),t.connect(c,_),t.connect(d,_),t.connect(u,_),t.connect(_,p),_.run();let g=t.getVariable(Se.PROPERTY,tt.AXIS_TITLE_POSITION,e),f=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(s,f),t.connect(f,g),f.run();let y=t.getVariable(Se.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(h,m),t.connect(p,m),t.connect(m,y)}function mt(e,t){let i=t.getVariable(Se.BOUNDS,M(e.elements[0])),r=t.getVariable(Se.PROPERTY,tt.GRIDLINES_POSITION,e),s=t.createOneWayDependency(Y.GRIDLINES_PLACER);t.connect(i,s),t.connect(s,r),s.run();let n=t.getVariable(Se.BOUNDS,e),a=t.getIncomingDataflowOperator(Y.EVAL_BBOX,n);t.connect(r,a),t.connect(a,n)}class bt{constructor(){this._id=this.type+Dt(),this._type=Pt.Group,this._dataScope=void 0,this._bounds=void 0,this._layout=void 0,this._children=[],this._sortBy={property:Ft,descending:!1}}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],i=this.getScene(),r=Object.keys(i.encodings),s=[];for(;t;){if(t.classId&&s.indexOf(t.classId)<0&&s.push(t.classId),t.type===Pt.Glyph){t.children.forEach((e=>s.push(e.classId)));break}if(!t.children)break;t=t.children[0]}let n=[];for(let t of r){let r=t.split("_");for(let a of s)r[0]==a&&i.encodings[t][e]&&n.push(i.encodings[t][e])}return n}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),_t(this,e,this.scene._depGraph),this.children&&this.children.length>0){let e=G(this,!0);for(let t of e)this.scene.onChange(Se.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))),i=Math.min(...e.map((e=>e.top))),r=Math.max(...e.map((e=>e.right))),s=Math.max(...e.map((e=>e.bottom)));return new c(t,i,r-t,s-i)}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 P(this)}get sortBy(){return this._sortBy}}class xt extends bt{constructor(){super(),this._type=Pt.Collection,this._id=this.type+"_"+Dt(),this._classId=this.id,this._childrenOrder=void 0,this._clipMask=void 0}get classId(){return this._classId}contains(e,t){if([Pt.Arc,Pt.Pie,Pt.Polygon,Pt.Area].indexOf(this.firstChild.type)>=0){let r=this.getSVGPathData();if(""!==r){let s=i.getContext(),n=new Path2D(r);return s.lineWidth=Math.max(this.strokeWidth,2.5),s.stroke(n),s.isPointInPath(n,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 i=t.bounds;e+=["M",i.left,i.top].join(" "),e+=["L",i.right,i.top].join(" "),e+=["L",i.right,i.bottom].join(" "),e+=["L",i.left,i.bottom,"Z"].join(" ")}return e}createClipMask(){let e=u(this._children);this._clipMask=new c(e.left,e.top,e.width,e.height)}get clipMask(){return this._clipMask}}class vt extends bt{constructor(e){if(super(),this._type=Pt.Glyph,this._id=this.type+"_"+Dt(),this._classId=this._id,e)for(let t of e)this.addChild(t)}get classId(){return this._classId}}class wt extends ie{constructor(e){super(e),this._type=Pt.BezierCurve,this._orientation="orientation"in e?e.orientation:Z.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 Et extends x{constructor(e){super(e),this._type=Pt.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,this._dirty=!0}get area(){return Math.PI*Math.pow(this._radius,2)}_updateBounds(){if(this._rotate){let e=C(this._x,this._y,this._rotate[1],this._rotate[2],this._rotate[0]);this._bounds=new 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 At extends x{constructor(e){super(e),this._type=Pt.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,this._dirty=!0}get width(){return this._width}set width(e){this._width=e,this._updateBounds(),this._dirty=!0}get height(){return this._height}set height(e){this._height=e,this._updateBounds(),this._dirty=!0}resize(e,t){this._width=e,this._height=t,this._dirty=!0,this._updateBounds()}get x(){return this._x}set x(e){this._x=e,this._dirty=!0,this._updateBounds()}get y(){return this._y}set y(e){this._y=e,this._dirty=!0,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 Ct 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,this._dirty=!0}set y(e){let t=e-this.y;this.vertices[0]._y+=t,this.vertices[1]._y+=t,this._dirty=!0}set x1(e){this.vertices[0]._x=e,this._dirty=!0}set x2(e){this.vertices[1]._x=e,this._dirty=!0}set y1(e){this.vertices[0]._y=e,this._dirty=!0}set y2(e){this.vertices[1]._y=e,this._dirty=!0}}class Tt extends x{constructor(e){super(e),this._type=Pt.SimpleText,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:[g.CENTER,g.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,i=function(e,t,i){let r=R.getContext();r.font=t;let s=r.measureText(e);return s.fontBoundingBoxAscent?{width:s.width,height:s.fontBoundingBoxAscent+s.fontBoundingBoxDescent}:s.actualBoundingBoxAscent?{width:s.width,height:s.actualBoundingBoxAscent+s.actualBoundingBoxDescent}:{width:s.width,height:i}}(this._text,[this.fontWeight,this.fontSize,this.fontFamily].join(" "),parseFloat(this.fontSize)),r=i.width,s=i.height;switch(this._anchor[0]){case g.LEFT:e=this._x;break;case g.RIGHT:e=this._x-r;break;case g.CENTER:e=this._x-r/2;break;default:e=this._x}switch(this._anchor[1]){case g.TOP:t=this._y;break;case g.BOTTOM:t=this._y-s;break;case g.MIDDLE:default:t=this._y-s/2}if(this._rotate&&3===this._rotate.length){let i=[{x:e,y:t},{x:e+r,y:t},{x:e,y:t+s},{x:e+r,y:t+s}].map((e=>C(e.x,e.y,this._rotate[1],this._rotate[2],this._rotate[0]))),n=Math.min(...i.map((e=>e.x))),a=Math.max(...i.map((e=>e.x))),o=Math.min(...i.map((e=>e.y))),l=Math.max(...i.map((e=>e.y)));this._bounds=new c(n,o,a-n,l-o)}else this._bounds=new c(e,t,r,s)}get x(){return this._x}set x(e){this._x=e,this._dirty=!0}get y(){return this._y}set y(e){this._y=e,this._dirty=!0}get text(){return this._text}set text(e){this._text=e,this._dirty=!0}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}set textPath(e){this._textPath=e,this._dirty=!0}get textPathOffset(){return this._textPathOffset}set textPathOffset(e){this._textPathOffset=e,this._dirty=!0}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 Rt extends ie{constructor(e){super(e),this._type=Pt.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}set x(e){this._x=e,this._dirty=!0}set y(e){this._y=e,this._dirty=!0}set radius(e){this._radius=e,this._dirty=!0}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._radius=this._radius}}class kt extends ie{constructor(e){super(e),this._type=Pt.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(" ")}}class St extends x{constructor(e){super(e),this._type=Pt.RichText,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._text="text"in e?e.text:"",this._width="width"in e?e.width:200,this._anchor="anchor"in e?e.anchor:[g.CENTER,g.MIDDLE],"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,i=function(e,t,i){let r=R.getContext();r.font=t;let s=r.measureText(e);return s.fontBoundingBoxAscent?{width:s.width,height:s.fontBoundingBoxAscent+s.fontBoundingBoxDescent}:s.actualBoundingBoxAscent?{width:s.width,height:s.actualBoundingBoxAscent+s.actualBoundingBoxDescent}:{width:s.width,height:i}}(this._text,[this.fontWeight,this.fontSize,this.fontFamily].join(" "),parseFloat(this.fontSize)),r=i.width,s=i.height;switch(this._anchor[0]){case g.LEFT:e=this._x;break;case g.RIGHT:e=this._x-r;break;case g.CENTER:e=this._x-r/2;break;default:e=this._x}switch(this._anchor[1]){case g.TOP:t=this._y;break;case g.BOTTOM:t=this._y-s;break;case g.MIDDLE:default:t=this._y-s/2}if(this._rotate&&3===this._rotate.length){let i=[{x:e,y:t},{x:e+r,y:t},{x:e,y:t+s},{x:e+r,y:t+s}].map((e=>C(e.x,e.y,this._rotate[1],this._rotate[2],this._rotate[0]))),n=Math.min(...i.map((e=>e.x))),a=Math.max(...i.map((e=>e.x))),o=Math.min(...i.map((e=>e.y))),l=Math.max(...i.map((e=>e.y)));this._bounds=new c(n,o,a-n,l-o)}else this._bounds=new c(e,t,r,s)}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}set textPath(e){this._textPath=e,this._dirty=!0}get textPathOffset(){return this._textPathOffset}set textPathOffset(e){this._textPathOffset=e,this._dirty=!0}get backgroundColor(){return this._backgroundColor?this._backgroundColor:"#fff"}get borderColor(){return this._borderColor?this._borderColor:"#ccc"}get borderWidth(){return this._borderWidth?this._borderWidth:1}get width(){return this._width}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}}function Ot(e){let t=null;switch(e.type){case Pt.Circle:t=new Et(e);break;case Pt.Line:var i="x1"in e?e.x1:0,r="y1"in e?e.y1:0,s="x2"in e?e.x2:100,n="y2"in e?e.y2:100;e.vertices=[[i,r],[s,n]],t=new Ct(e);break;case Pt.Rect:var a="top"in e?e.top:0,o="left"in e?e.left:0,l="width"in e?e.width:50,h="height"in e?e.height:30;e.vertices=[[o,a],[o+l,a],[o+l,a+h],[o,a+h]],t=new Xe(e);break;case Pt.SimpleText:t=new Tt(e);break;case Pt.RichText:t=new St(e);break;case Pt.Image:t=new At(e);break;case Pt.BundledPath:case Pt.Chord:case Pt.Path:t=new ie(e);break;case Pt.Area:t=new qe(e);break;case Pt.Ring:t=new kt(e);break;case Pt.Arc:t=new oe(e);break;case Pt.BezierCurve:"vertices"in e||(e.vertices=[[0,100],[20,120],[80,180],[100,200]]),t=new wt(e);break;case Pt.Polygon:t=new Rt(e)}return t&&t._updateBounds(),t}function It(e){let t=new xt;return e.addChild(t),e._itemMap[t.id]=t,t}function Nt(e){return new vt(e)}function Lt(e){switch(e.type){case Pt.Collection:return function(e){let t=It(e.scene);for(let i=0;i<e.children.length;i++){let r=e.children[i];t.addChild(Lt(r))}if(t._classId=e.classId,e._layout){let i=e._layout.clone();t._layout=i,i.group=t}return t._updateBounds(),t}(e);case Pt.Glyph:return function(e){let t=new vt;for(let i of e.children)t.addChild(Lt(i));t._classId=e.classId,e._dataScope&&(t.dataScope=e._dataScope.clone());return t}(e);default:return function(e){let t=Ot({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 i=0;i<e.vertices.length;i++)e.vertices[i].dataScope&&(t.vertices[i]._dataScope=e.vertices[i].dataScope.clone());return t}(e)}}const Vt=Object.freeze({Rect:"rect",Circle:"circle",Line:"line",Ring:"ring",Path:"path",Image:"image",SimpleText:"text",RichText:"richText",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord"}),Pt=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",SimpleText:"text",RichText:"richText",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"}),Mt=Object.freeze({Axis:"axis",Legend:"legend",Gridlines:"gridlines"});function Dt(){return Date.now().toString(36)+"_"+Math.random().toString(36).slice(2)}class Bt{constructor(e,t,i){this._id=Pt.DataTable+Dt(),this.initialize(e,t,i)}initialize(e,t,i){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,i)this._attrTypes=i;else{this._attrTypes={};for(let e of this._attributes)this._attrTypes[e]=Ee(this.data.map((t=>t[e]))),"year"==e.toLowerCase()&&this._attrTypes[e]==we.Integer&&(this._attrTypes[e]=we.Date)}this._validate(this.data,this._attrTypes),this._attrSummaries={};for(let e of this._attributes)this._attrSummaries[e]=Ce(this.data.map((t=>t[e])),this._attrTypes[e]);this._attributes.indexOf(Ft)<0&&this._addAttribute(Ft,we.String,this.data.map(((e,t)=>"r"+t)))}clone(){let e=[];for(let t of this._data)e.push(Object.assign({},t));let t=new Bt(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("/"),i=e.substring(t);0!==i.indexOf("\\")&&0!==i.indexOf("/")||(i=i.substring(1));return i}(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,i){this._data.forEach(((t,r)=>t[e]=i[r])),e!==Ft&&this._rawData.forEach(((t,r)=>t[e]=i[r])),this._attrTypes[e]=t,this._attributes.push(e),this._attrSummaries[e]=Ce(i,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,i){let r=t.timeParse(i);for(let t of this.data){let i=t[e];null==i||null==i?(i="",t[e]=new Date(1899,11,31).getTime()):t[e]=r(i).getTime(),this._dateMap.set(t[e],i)}this._attrTypes[e]=we.Date,this._attrSummaries[e]=Ce(this.data.map((t=>t[e])),we.Date)}getRawValue(e,t){return this.getAttributeType(e)===we.Date?this._dateMap.get(t).toString():t}get nonNumericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!=we.Number&&this._attrTypes[t]!=we.Integer&&t!=Bt.RowID&&e.push(t);return e.sort(((e,t)=>this.getUniqueAttributeValues(e).length-this.getUniqueAttributeValues(t).length)),e}get numericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!==we.Number&&this._attrTypes[t]!==we.Integer||t==Bt.RowID||e.push(t);return e}getAttributesByType(e){let t=[];for(let i in this._attrTypes)this._attrTypes[i]===e&&i!=Bt.RowID&&t.push(i);return t}summarize(){for(let e of this._attributes)this._attrSummaries[e]=Ce(this.data.map((t=>t[e])),this._attrTypes[e])}_validate(e,t){for(let i of e)for(let e in t){let r,s=t[e],n=i[e];if(null==i[e]||null==i[e])switch(s){case we.Boolean:r=!1;break;case we.Date:r=new Date(1899,11,31).getTime();break;case we.String:r="";break;default:r=0}else switch(s){case we.Boolean:r=n;break;case we.Date:r=Number.isInteger(n)?new Date(n,0).getTime():new Date(n+"").getTime(),this._dateMap.set(r,n);break;case we.String:r=n.toString();break;default:r=n}i[e]=r}}}function Gt(e){let t=_e(e);if(t)return t.dataTable}const Ft="mascot_rowId";function zt(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 Ht extends ke{constructor(e,t){super(e),this._elem=t}get element(){return this._elem}}class jt extends ke{constructor(e,t){super(e),this._item=t}get element(){return this._item}}class Ut{constructor(e){this._id=e+"_"+Dt(),this._type=e,this._vars=[],this._edges=[]}get vars(){return this._vars}get edges(){return this._edges}run(){console.log("-",this._type)}}class Wt{constructor(e,t,i=!0){this._id="e_"+Dt(),this._fromNode=e,this._toNode=t,this._isDirected=i}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 Ut?this._fromNode:this._toNode}}class Yt extends ke{constructor(e,t,i){super(e),this._attribute=t,this._dataset=i}get attribute(){return this._attribute}get dataset(){return this._dataset}}class Xt{constructor(e,i){switch(this._id="scale_"+Dt(),this._type=e,i&&(this._args=i),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[i.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":i.scheme?this._scale=t.scaleSequential(t[i.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)}invert(e,t){let i=Math.min(...this._scale.range()),r=Math.max(...this._scale.range()),s=e;return t||(s=Math.max(i,Math.min(e,r))),"time"===this._type?this._scale.invert(s).getTime():this._scale.invert(s)}}const qt=["schemeBrBG","schemePRGn","schemePiYG","schemePuOr","schemeRdBu","schemeRdGy","schemeRdYlBu","schemeRdYlGn","schemeSpectral"],Kt=["schemeBlues","schemeGreens","schemeGreys","schemeOranges","schemePurples","schemeReds","schemeBuGn","schemeBuPu","schemeGnBu","schemeOrRd","schemePuBuGn","schemePuBu","schemePuRd","schemeRdPu","schemeYlGnBu","schemeYlGn","schemeYlOrBr","schemeYlOrRd"];class Zt{constructor(){this._map={}}clear(){this._map={}}setValue(e,t){this._map[e]=t}getValue(e){return this._map[e]}}class $t extends ke{constructor(e,t){super(e),this._encs=[t],this._valueMap=new Zt}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}get attrValues(){return this._valueMap}set attrValues(e){this._valueMap=e}}class Jt extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e instanceof $t)),t=this.outputVar,i=t.encodings,r=i[0],s=r.channel,n=r.attribute,a=e.encodings[0].dataTable.getAttributeType(e.encodings[0].attribute),o=Object.values(e.attrValues);if("angle"===r.channel&&[Pt.Arc,Pt.Pie].indexOf(r.element.type)>=0)for(let t of e.encodings)for(let e of t.scales){let i=t.getElements(e).map((e=>t.attrValues[e.id]));e.domain=r._preferredDomain?r._preferredDomain:t.dataTable.tree?[0,t.dataTable.tree.getRoot()[n]]:this._getDomainForNumbers(i),console.log("domain for",n,e.domain)}else{let t;t=r._preferredDomain?r._preferredDomain:a==we.String||"text"===e.encodings[0].channel?this._getDomainForStrings(o):this._getDomainForNumbers(o);for(let i of e.encodings)for(let e of i.scales)e.domain=t.slice()}for(let e=0;e<r.scales.length;e++){let n=r.scales[e],a=r.getElements(n),o=this._buildRange(s,a,r,t);if(o)for(let t of i)t.scales[e].range=o}t.initialized=!0}_getDomainForNumbers(e){let t=this.outputVar.encodings[0],i=[Math.min(...e),Math.max(...e)];if(t.includeZero&&i[0]>0&&(i=[0,Math.max(...e)]),t.mapping)i=Object.keys(t.mapping),i=i.map((e=>parseFloat(e))),i.sort(((e,t)=>e-t));else if("sequentialColor"===t.scales[0].type){if(i[0]<0&&i[1]>0){let e=Math.max(Math.abs(i[0]),Math.abs(i[1]));i=[-e,e]}}else if("angle"===t.channel){i=[0,Object.values(e).reduce(((e,t)=>e+t),0)]}return i}_getDomainForStrings(e){let t,i=this.outputVar,r=i.encodings[0];return t="count"==i.encodings[0].aggregator?[0,Math.max(...e)]:Array.from(new Set(e)),r.mapping&&(t=Object.keys(r.mapping)),t}_buildRange(e,t,i,r){return"x"===e?this._buildXRange(t,i,r):"y"===e?this._buildYRange(t,i,r):["width","height","radius","area","fontSize","radialDistance","strokeWidth"].includes(e)?this._buildSizeRange(t,i,r):e.indexOf("Color")>0||"fillGradient"===e?this._buildColorRange(t,i):"angle"===e?this._buildAngleRange(t,i):"thickness"===e?this._buildThicknessRange(t,i,r):"src"===e?i.scales[0].domain.slice():void 0}_buildThicknessRange(e,t,i){let r=e.map((e=>e.outerRadius-e.innerRadius));return[0,i.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:Math.max(...r)]}_buildAngleRange(e,t){return[0,360]}_buildColorRange(e,i){if(i.mapping){return i.scales[0].domain.map((e=>i.mapping[e+""]))}if("sequentialColor"===i.scales[0].type){let e=this.outputVar,r=i.scales[0].domain;for(let s of e.encodings)if(!i.colorScheme)for(let e of s.scales){let i=e.domain;e._scale=t.scaleSequential(r[0]<0&&r[1]>0?t.interpolatePuOr:t.interpolateTurbo),e._scale.domain(i)}}if((qt.indexOf(i.colorScheme)>=0||Kt.indexOf(i.colorScheme)>=0)&&"ordinalColor"===i.scales[0].type){let e=this.outputVar,r=i.scales[0].domain;for(let s of e.encodings)for(let e of s.scales){let s=e.domain;e._scale=t.scaleOrdinal(t[i.colorScheme][r.length]),e._scale.domain(s)}}}_buildSizeRange(e,t,i){let r,s;return r=0,s=i.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===Pt.Circle?Math.PI*Math.pow(e.radius,2):e.width*e.height:"fontSize"===t.channel?parseFloat(e.fontSize):e.refBounds[t.channel]))),[0,0+s]}_buildXRange(e,t,i){let r,s;switch(t.scales[0].type,e[0].type){case"vertex":case"segment":var n=e[0].parent.refBounds?e[0].parent.refBounds:e[0].parent.bounds;r=i.initialized?t.getRangeStart(e[0]):n.left,s=i.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:n.width;break;default:r=i.initialized?t.getRangeStart(e[0]):t._preferredRangeStart?t._preferredRangeStart:M(e[0]).bounds.left+e[0].bounds.width/2,s=i.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:Math.max(450,Math.max(...e.map((e=>e.bounds.x)))-Math.min(...e.map((e=>e.bounds.x))))}return t.flipScale?[r+s,r]:[r,r+s]}_buildYRange(e,t,i){let r,s;switch(t.scales[0].type,e[0].type){case"vertex":case"segment":var n=e[0].parent.refBounds?e[0].parent.refBounds:e[0].parent.bounds;r=i.initialized?t.getRangeStart(e[0]):n.top,s=i.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:n.height;break;default:r=i.initialized?t.getRangeStart(e[0]):M(e[0]).bounds.top+e[0].bounds.height/2,s=i.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:450}return t.flipScale?[r,r+s]:[r+s,r]}}class Qt extends W{constructor(e){super(e)}run(){super.run()}}class ei extends bt{constructor(e){super(),this._type=Pt.Axis,this._id=e.id?e.id:this._type+Dt(),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._labelVisible=!("labelVisible"in e)||e.labelVisible,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 bt,this._ticks._id=this._id+"_ticks",this.addChild(this._ticks),this._labels=new bt,this._labels._id=this._id+"_labels",this.addChild(this._labels),this._title=new Tt({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,this._args=e}get id(){return this._id}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!==Pt.SimpleText)),t=e[0].bounds.clone();for(let i=1;i<e.length;i++)"hidden"!=e[i].visibility&&(t=t.union(e[i].bounds));return t}}const ti="top",ii="bottom",ri="left";function si(e,i,r,s){let n,a=e.domain,o=e.range;switch(e.type){case"linear":case"log":{let l=Math.abs(o[0]-o[1]);n="width"==i||"x"==i?45:30;let h,c=Math.max(2,Math.floor(l/n));if("width"==i||"height"==i){let t=!!s&&(s.elements[0].parent.layout&&s.elements[0].parent.layout.type==j.STACK);a[1]=e._scale.invert(t?_(r)[i]:u(r)[i])}if("log"===e.type){h=[];let t=e._scale.ticks();for(let e of t){let i=Math.log(e)/Math.log(10)+1e-6;Math.abs(i-Math.floor(i))<c/t.length&&h.push(e)}}else h=t.ticks(a[0],a[1],c);return h}case"point":{n="width"==i||"x"==i?80:30;let t=Math.floor(e.rangeExtent/a.length),r=Math.ceil(n/t);return"x"==i?a.filter(((e,t)=>t%r==0)):a}case"time":{n="width"==i||"x"==i?80:30;let e,r,s=Math.floor((o[1]-o[0])/n),l=Math.ceil((a[1]-a[0])/s)/1e3,h=[1,60,3600,86400,2628003,31536e3],c=[t.timeSeconds,t.timeMinutes,t.timeHours,t.timeDays,t.timeMonths,t.timeYears];for(let t=0;t<h.length-1;t++)if(l>=h[t]&&l<h[t+1])return e=Math.floor(l/h[t]),r=c[t],r(a[0],a[1],e);return l>h[h.length-1]?(e=Math.floor(l/h[h.length-1]),r=c[h.length-1],r(a[0],a[1],e)):[]}default:return[]}}function ni(e,t){t.removeChild(e)}class ai extends ei{constructor(e,t,i,r){super(r),this._encoding=e,this._attribute=this._encoding.attribute,this._channel=this._encoding.channel,this._scale=t,this._elems=i,this._flip="flip"in r&&r.flip,this._posArg="x"==this._channel||"width"==this._channel?r.pathY:r.pathX,this._orientation="orientation"in r?r.orientation:"x"===this._channel||"width"==this._channel?ii:ri,this._titleText="title"in r?r.title:this._encoding.attribute,this._path="angle"===this._channel?new Et({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(r),e.dataTable.getAttributeType(this._attribute)!==we.Date||"labelFormat"in r||(this._labelFormat="%m/%d/%y"),"radialDistance"===this._channel&&"rotation"in r&&(this._rotate=[-r.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}get encoding(){return this._encoding}createTicksLabels(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.tickValues):(this._tickValues=si(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 i;switch(this._labels.removeAll(),this._encoding.dataTable.getAttributeType(this._attribute)){case we.Date:i=t.utcFormat(this._labelFormat);break;case we.String:i=function(e){return e};break;default:i=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let r=new Tt({text:i(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labelVisible||(r.visibility="hidden"),this._labels.addChild(r)}this._title._text=this._titleText}}class oi extends ei{constructor(e,t,i,r){super(r),this._elems=e,this._attribute=i,this._channel=t,this._posArg="x"==this._channel||"width"==this._channel?r.pathY:r.pathX,this._labelAttribute=r.labelAttribute,this._orientation="orientation"in r?r.orientation:"x"===this._channel||"width"==this._channel?ii:ri,this._titleText="title"in r?r.title:this._attribute,this._path="angle"===this._channel?new Et({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(r),this._elems[0].dataScope.dataTable.getAttributeType(this._attribute)!==we.Date||"labelFormat"in r||(this._labelFormat="%m/%d/%y")}get elements(){if(this.layout.type===j.CLUSTER){const e=new Map(this._elems.map((e=>[e.dataScope.getAttrVal(xe),e])));return this.layout._d3Root.leaves().map((t=>e.get(t.data[xe])))}return this._elems}get layout(){return this._elems[0].parent.layout}createTicksLabels(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.tickValues):(this._tickValues=this.elements.map((e=>e.dataScope.getAttrVal(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 i;switch(this._labels.removeAll(),this._elems[0].dataScope.dataTable.getAttributeType(this._labelAttribute?this._labelAttribute:this._attribute)){case we.Date:i=t.timeFormat(this._labelFormat);break;case we.String:i=function(e){return e};break;default:i=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let r=new Tt({text:i(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(r)}this._title._text=this._titleText}}class li extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e instanceof Je&&e.property==tt.AXIS_ORIENTATION)).element;e.createTicksLabels(e._args),e instanceof ai?this._runForEncoding(e):e instanceof oi&&this._runForLayout(e),p(e._path)}_runForLayout(e){let t=e.channel,i=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==j.STACK?_(e.elements):u(e.elements),r=[];if("x"===t){let t=e.orientation===ti?i.top-2:i.bottom+2;e._pathPos=e._posArg?e._posArg:t,r.push([i.left,e._pathPos]),r.push([i.right,e._pathPos]),e._path._setVertices(r)}else if("y"===t){let t=e.orientation===ri?i.left-2:i.right+2;e._pathPos=e._posArg?e._posArg:t,r.push([e._pathPos,i.top]),r.push([e._pathPos,i.bottom]),e._path._setVertices(r)}else if("angle"===t){let t=e.elements[0].parent.layout;t.type===j.CLUSTER&&(e._path._x=t.x,e._path._y=t.y,e._path._radius=t.radius)}}_runForEncoding(e){let t=e.channel,i=e.elements,r=i[0].parent.layout&&i[0].parent.layout.type==j.STACK?_(i):u(i),s=[],n=M(i[0]);if(n&&n.clipMask&&(r=n.clipMask),"x"===t){let t,n,a=Pe(i[0],"y");a?(t=Math.min(...a.getScale(i[0]).range,r.top),n=Math.max(...a.getScale(i[0]).range,r.bottom)):(t=r.top,n=r.bottom);let o=e.orientation===ti?t-2:n+2;e._pathPos=e._posArg?e._posArg:o,s.push([e.scale.range[0],e._pathPos]),s.push([e.scale.range[1],e._pathPos])}else if("width"===t){let t=e.orientation===ti?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,s.push([r.left,e._pathPos]),s.push([r.right,e._pathPos])}else if("radialDistance"===t){let t=e.elements[0].parent,i=t.y;e._pathPos=e._posArg?e._posArg:i,s.push([e.scale.range[0]+t.x,e._pathPos]),s.push([e.scale.range[1]+t.x,e._pathPos])}else if("y"===t){let t,n,a=Pe(i[0],"x");a?(t=Math.min(...a.getScale(i[0]).range,r.left),n=Math.max(...a.getScale(i[0]).range,r.right)):(t=r.left,n=r.right);let o=e.orientation===ri?t-2:n+2;e._pathPos=e._posArg?e._posArg:o,s.push([e._pathPos,e.scale.range[0]]),s.push([e._pathPos,e.scale.range[1]])}else if("height"===t){let t=e.orientation===ri?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,s.push([e._pathPos,r.bottom]),s.push([e._pathPos,r.top])}e._path._setVertices(s)}}class hi extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e instanceof Je&&e.property==tt.AXIS_PATH_POSITION)).element;e instanceof ai?this._runForEncoding(e):e instanceof oi&&this._runForLayout(e);let t=[];if("width"===e.channel||"x"===e.channel){let i=e._ticks.children.map((e=>e.vertices[0].x)),r=[e._path.vertices[0].x,e._path.vertices[1].x];t.push([Math.min(...i.concat(r)),e._path.vertices[0].y]),t.push([Math.max(...i.concat(r)),e._path.vertices[0].y]),e._path._setVertices(t)}else if("height"===e.channel||"y"===e.channel){let i=e._ticks.children.map((e=>e.vertices[0].y)),r=[e._path.vertices[0].y,e._path.vertices[1].y];t.push([e._pathPos,Math.min(...i.concat(r))]),t.push([e._pathPos,Math.max(...i.concat(r))]),e._path._setVertices(t)}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==ii?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,i=e.orientation==ii?e.tickSize:-e.tickSize;for(let[r,s]of e._ticks.children.entries()){let n=e.elements[r].bounds[e.tickAnchor];s._setVertices([[n,t],[n,t+i]])}}else if("y"===t){let t=e.orientation==ri?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,i=e.orientation==ri?-e.tickSize:e.tickSize;for(let[r,s]of e._ticks.children.entries()){let n=e.elements[r].bounds[e.tickAnchor];s._setVertices([[t,n],[t+i,n]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===j.CLUSTER){let i=t._d3Root.leaves();const r=new Map(i.map((e=>[e.data[xe],[e.x,e.y]])));for(let[i,s]of e._ticks.children.entries()){let n=e.elements[i].dataScope.getAttrVal(xe),a=he(r.get(n)[0])-90;s._setVertices([[t.x+r.get(n)[1]+e.elements[i].bounds.width/2,t.y],[t.x+r.get(n)[1]+e.elements[i].bounds.width/2+e.tickSize,t.y]]),s._rotate=[a,t.x,t.y]}}}}_runForEncoding(e){let t=e.channel,i=u(e.elements);if("x"==t){let t=e.orientation==ii?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,i=e.orientation==ii?e.tickSize:-e.tickSize;for(let[r,s]of e._ticks.children.entries())s._setVertices([[e.scale.map(e._tickValues[r]),t],[e.scale.map(e._tickValues[r]),t+i]])}else if("width"==t){let t=e.orientation==ii?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==ii?e.tickSize:-e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Pt.Area&&"right"===e.elements[0].baseline))for(let[s,n]of e._ticks.children.entries())n._setVertices([[i.left+e.scale.rangeExtent-e.scale.map(e._tickValues[s]),t],[i.left+e.scale.rangeExtent-e.scale.map(e._tickValues[s]),t+r]]);else for(let[s,n]of e._ticks.children.entries())n._setVertices([[e.scale.map(e._tickValues[s])+i.left,t],[e.scale.map(e._tickValues[s])+i.left,t+r]])}else if("y"===t){let t=e.orientation==ri?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,i=e.orientation==ri?-e.tickSize:e.tickSize;for(let[r,s]of e._ticks.children.entries())s._setVertices([[t,e.scale.map(e._tickValues[r])],[t+i,e.scale.map(e._tickValues[r])]])}else if("height"===t){let t=e.orientation==ri?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==ri?-e.tickSize:e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Pt.Area&&"top"===e.elements[0].baseline))for(let[s,n]of e._ticks.children.entries())n._setVertices([[t,i.top+e.scale.map(e._tickValues[s])],[t+r,i.top+e.scale.map(e._tickValues[s])]]);else for(let[s,n]of e._ticks.children.entries()){let a=i.bottom-e.scale.map(e._tickValues[s]);n._setVertices([[t,a],[t+r,a]])}}else if("radialDistance"===t){let t=e.orientation==ii?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,i=e.orientation==ii?e.tickSize:-e.tickSize,r=e.elements[0].parent;for(let[s,n]of e._ticks.children.entries())n._setVertices([[r.x+e.scale.map(e._tickValues[s]),t],[r.x+e.scale.map(e._tickValues[s]),t+i]])}}}class ci extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e instanceof Je&&e.property==tt.AXIS_PATH_POSITION)).element;e instanceof ai?this._runForEncoding(e):e instanceof oi&&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==ii?e.labelOffset:-e.labelOffset,i=e.orientation==ii?[g.CENTER,g.TOP]:[g.CENTER,g.BOTTOM];for(let[r,s]of e._labels.children.entries()){let n=e.elements[r].bounds;s.x=n[e.tickAnchor],s._y=e.pathPos+t,s._anchor=i,e._labelRotation&&(s._rotate=[e._labelRotation,s.x,s.y],s._anchor=[g.RIGHT,g.MIDDLE])}}else if("y"===t){let t=e.orientation==ri?-e.labelOffset:e.labelOffset,i=e.orientation==ri?[g.RIGHT,g.MIDDLE]:[g.LEFT,g.MIDDLE];for(let[r,s]of e._labels.children.entries()){let n=e.elements[r].bounds;s.x=e.pathPos+t,s._y=e.tickAnchor==g.MIDDLE?n.y:n[e.tickAnchor],s._anchor=i,e._labelRotation&&(s._rotate=[e._labelRotation,s.x,s.y],s._anchor=[g.RIGHT,i[1]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===j.CLUSTER){let i=t._d3Root.leaves();const r=new Map(i.map((e=>[e.data[xe],[e.x,e.y]])));let s=5;for(let[i,n]of e._labels.children.entries()){let a=e.elements[i].dataScope.getAttrVal(xe);if(r.get(a)[0]<Math.PI){let o=he(r.get(a)[0])-90;n._anchor=[g.LEFT,g.MIDDLE],n.x=t.x+r.get(a)[1]+e.elements[i].bounds.width/2+s,n._y=t.y,n._rotate=[o,t.x,t.y]}else{let o=he(r.get(a)[0])+90;n._anchor=[g.RIGHT,g.MIDDLE],n.x=t.x-r.get(a)[1]-e.elements[i].bounds.width/2-s,n._y=t.y,n._rotate=[o,t.x,t.y]}}}}}_runForEncoding(e){let t=e.channel,i=u(e.elements);if("x"==t){let t=e.orientation==ii?e.labelOffset:-e.labelOffset,i=e.orientation==ii?[g.CENTER,g.TOP]:[g.CENTER,g.BOTTOM];for(let[r,s]of e._labels.children.entries())s.x=e.scale.map(e.labelValues[r]),s._y=e.pathPos+t,s._anchor=i,e._labelRotation&&(s._rotate=[e._labelRotation,s.x,s.y],s._anchor=[g.RIGHT,i[1]])}else if("width"===t){let t=e.orientation==ii?e.labelOffset:-e.labelOffset,r=e.orientation==ii?[g.CENTER,g.TOP]:[g.CENTER,g.BOTTOM],s=!!(e.isFlipped()||e.elements[0].type===Pt.Area&&"right"===e.elements[0].baseline);for(let[n,a]of e._labels.children.entries())a.x=s?i.left+e.scale.rangeExtent-e.scale.map(e.labelValues[n]):e.scale.map(e.labelValues[n])+i.left,a._y=e.pathPos+t,a._anchor=r,e._labelRotation&&(a._rotate=[e._labelRotation,a.x,a.y],a._anchor=[g.RIGHT,r[1]])}else if("y"===t){let t=e.orientation==ri?-e.labelOffset:e.labelOffset,i=e.orientation==ri?[g.RIGHT,g.MIDDLE]:[g.LEFT,g.MIDDLE];for(let[r,s]of e._labels.children.entries())s.x=e.pathPos+t,s._y=e.scale.map(e.labelValues[r]),s._anchor=i,e._labelRotation&&(s._rotate=[e._labelRotation,s.x,s.y],s._anchor=[g.RIGHT,i[1]])}else if("height"===t){let t=e.orientation==ri?-e.labelOffset:e.labelOffset,r=e.orientation==ri?[g.RIGHT,g.MIDDLE]:[g.LEFT,g.MIDDLE],s=e.elements[0].type===Pt.Area&&"top"===e.elements[0].baseline;for(let[n,a]of e._labels.children.entries())a.x=e.pathPos+t,a._y=s?i.top+e.scale.map(e.labelValues[n]):i.bottom-e.scale.map(e.labelValues[n]),a._anchor=r,e._labelRotation&&(a._rotate=[e._labelRotation,a.x,a.y],a._anchor=[g.RIGHT,r[1]])}else if("radialDistance"==t){let t=e.orientation==ii?e.labelOffset:-e.labelOffset,i=e.orientation==ii?[g.CENTER,g.TOP]:[g.CENTER,g.BOTTOM],r=e.elements[0].parent;for(let[s,n]of e._labels.children.entries())n.x=r.x+e.scale.map(e.labelValues[s]),n._y=e.pathPos+t,n._anchor=i,e._labelRotation&&(n._rotate=[e._labelRotation,n.x,n.y],n._anchor=[g.RIGHT,i[1]])}}}class di extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=k(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 i=G(e,!0);for(let e of i)p(e)}placeElements(e,t){let i=De(e,"x"),r=De(e,"y");for(let i=0;i<e.children.length;i++){let r=e.children[i],s=t.cellBounds[i],n=0,a=0;switch(t._cellHorzAlignment){case g.LEFT:n=s.left-r.refBounds.left;break;case g.CENTER:n=s.x-r.refBounds.x;break;case g.RIGHT:n=s.right-r.refBounds.right}switch(t._cellVertAlignment){case g.TOP:a=s.top-r.refBounds.top;break;case g.MIDDLE:a=s.y-r.refBounds.y;break;case g.BOTTOM:a=s.bottom-r.refBounds.bottom}ze(r,n,a)}if(i.length>0)for(let e of i)for(let i of e.scales){let r=e.getElements(i)[0],s=t.getIndex(r);if(s<0)continue;let n="point"===i.type?t.cellBounds[s].left+r.bounds.width/2:t.cellBounds[s].left,a=n+i.rangeExtent;i.range=i.range[0]<i.range[1]?[n,a]:[a,n]}if(r.length>0)for(let e of r)for(let i of e.scales){let r=e.getElements(i)[0],s=t.getIndex(r);if(s<0)continue;let n="point"===i.type?t.cellBounds[s].top+e.getElements(i)[0].bounds.height/2:t.cellBounds[s].top,a=n+i.rangeExtent;i.range=i.range[0]<i.range[1]?[n,a]:[a,n]}}fillGrid(e,t){t._grid=new Array(t.numRows).fill(null).map((()=>new Array(t.numCols).fill(null)));for(let i=0;i<e.children.length;i++){let e=t.getRowCol(i);t._grid[e.row][e.col]=i}}computeCellBounds(e,t){let i=e.children.map((e=>e.refBounds?e.refBounds:e.bounds)),r=t._colGap,s=t._rowGap;if(void 0===t._left){let e=i.map((e=>e.left)),r=i.map((e=>e.top));t._left=Math.min(...e),t._top=Math.min(...r)}let n=i.map((e=>e.width)),a=i.map((e=>e.height)),o=Math.max(...n),l=Math.max(...a);t._cellBounds=new Array(e.children.length).fill(null);for(let i=0;i<t.numRows;i++)for(let n=0;n<t.numCols;n++){let a=t._grid[i][n];a>=e.children.length||(t._cellBounds[a]=new c(t._left+(o+r)*n+0,t._top+(l+s)*i,o,l))}}}class ui extends W{constructor(e){super(e)}run(){let e=this.outputVar.element;e.updateValues(),e.scale?this._runForEncoding(e):this._runForLayout(e),p(e)}_runForLayout(e){let t=e.channel,i=u(e.elements),r=[];if("x"===t)for(let t=0;t<e.values.length;t++){let s=e.elements[t].refBounds;r.push({x1:s.x,y1:i.bottom,x2:s.x,y2:i.top})}else if("y"===t)for(let t=0;t<e.values.length;t++){let s=e.elements[t].refBounds;r.push({x1:i.left,y1:s.y,x2:i.right,y2:s.y})}e.lines=r,e._dirty=!0}_runForEncoding(e){let t=e.channel,i=u(e.elements),r=[];if("x"===t){let t,s,n=Pe(e.elements[0],"y");n?(t=Math.min(...n.getScale(e.elements[0]).range,i.top),s=Math.max(...n.getScale(e.elements[0]).range,i.bottom)):(t=i.top,s=i.bottom);for(let i of e.values)r.push({x1:e.scale.map(i),y1:s,x2:e.scale.map(i),y2:t})}else if("width"===t)for(let t of e.values)r.push({x1:e.scale.map(t)+i.left,y1:i.bottom,x2:e.scale.map(t)+i.left,y2:i.top});else if("y"===t){let t,s,n=Pe(e.elements[0],"x");n?(t=Math.min(...n.getScale(e.elements[0]).range,i.left),s=Math.max(...n.getScale(e.elements[0]).range,i.right)):(t=i.top,s=i.bottom);for(let i of e.values)r.push({x1:t,y1:e.scale.map(i),x2:s,y2:e.scale.map(i)})}else if("height"===t)for(let t of e.values)r.push({x1:i.left,y1:i.bottom-e.scale.map(t),x2:i.right,y2:i.bottom-e.scale.map(t)});else if("radialDistance"===t){let t=e.elements[0].parent;for(let i=0;i<e.values.length;i++)r.push({x:t.x,y:t.y,r:e.scale.map(e.values[i])})}e.lines=r,e._dirty=!0}}class _i extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=G(e)[0],i=k(e.parent);for(let e of i){let i=e.layout;if(!i)return;switch(t.type){case Pt.Rect:case Pt.Circle:case Pt.Image:this._stackRects(e,i);break;case Pt.Area:e.children[0].orientation===Z.HORIZONTAL?this._stackAreasVert(e,i):this._stackAreasHorz(e,i);break;case Pt.Arc:case Pt.Pie:t.parent.classId===e.classId&&this._stackArcs(e,i)}}p(t)}_stackArcs(e,t){if(t.orientation===Z.ANGULAR){let t=90;if((this._direction?this._direction:J.Clockwise)===J.Clockwise)for(let i of e.children){let e=ce(t-i.angle);je(i,"startAngle",e),t=e}else for(let i of e.children){let e=ce(t+i.angle);je(i,"startAngle",e),t=e}}else if(t.orientation===Z.RADIAL){let t=Math.min(...e.children.map((e=>e.innerRadius)));for(let i of e.children){let e=i.outerRadius-i.innerRadius;je(i,"innerRadius",t),je(i,"outerRadius",t+e),t=i._outerRadius}}}_stackAreasVert(e,t){let i=e.children.filter((e=>"visible"===e.visibility)),r=e.bounds,s=t.vertCellAlignment===g.TOP?r.top:r.bottom,n=t.vertCellAlignment===g.TOP?1:-1;if(0===i.length)return;t.vertCellAlignment===g.BOTTOM&&i.reverse();let a=i[0].vertices.length/2,o=new Array(a).fill(0);for(let e of i){for(let t=0;t<a;t++){let i=e.vertices[t],r=e.vertices[2*a-t-1],l=Math.abs(i.y-r.y),h=s+o[t]*n,c=s+(o[t]+l)*n;ze(i,0,h-i.y),ze(r,0,c-r.y),o[t]+=l}let t=e.bounds.bottom;e._updateBounds(),e._refBounds.translate(0,e.bounds.bottom-t)}if(t.vertCellAlignment===g.MIDDLE)for(let e of i){for(let t=0;t<a;t++){let i=e.vertices[t],s=e.vertices[2*a-t-1],n=r.middle+o[t]/2;ze(i,0,n-r.bottom),ze(s,0,n-r.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 i=t._orientation,r=e.children.map((e=>e.bounds)),s=r.map((e=>e.left)),n=r.map((e=>e.top)),a=r.map((e=>e.width)),o=r.map((e=>e.height)),l=null==t._left?Math.min(...s):t._left,h=null==t._top?Math.min(...n):t._top,c=Math.max(...a),d=Math.max(...o);if(i==Z.VERTICAL)for(let i=0;i<e.children.length;i++){let r=e.children[i],s=0,n=h+r.bounds.height/2-r.bounds.y;h+=r.bounds.height+t._gap,ze(r,s,n),r._updateBounds();let a=0,o=0;if(!Ge(r))switch(t._horzCellAlignment){case g.LEFT:a=l-r.bounds.left;break;case g.CENTER:a=l+c/2-r.bounds.x;break;case g.RIGHT:a=l+c-r.bounds.right}ze(r,a,o)}else for(let i=0;i<e.children.length;i++){let r=e.children[i],s=l+r.bounds.width/2-r.bounds.x,n=0;l+=r.bounds.width+t._gap,ze(r,s,n),r._updateBounds();let a=0,o=0;if(!Be(r))switch(t._vertCellAlignment){case g.TOP:o=h-r.bounds.top;break;case g.MIDDLE:o=h+d/2-r.bounds.y;break;case g.BOTTOM:o=h+d-r.bounds.bottom}ze(r,a,o)}}}class pi extends W{constructor(e){super(e)}run(){super.run()}}class gi extends W{constructor(e){super(e)}run(){let e=this.inputVars[0],i=this.outputVar,r=e.attribute,s=i.attribute,n=e.dataset,a=i.dataset,o=n.getAttributeValues(r),l=t.bin()(o),h=this._findBin,c=o.map((e=>{let t=h(e,l);return(t.x0+t.x1)/2+""})),d=l.map((e=>(e.x0+e.x1)/2+""));a._addAttribute(s,we.String,c),a.orderAttributeValues(s,d)}_findBin(e,t){for(let i of t)if(i.indexOf(e)>=0)return i}}class fi extends W{constructor(e){super(e)}run(){let e=this.outputVar,t=e.dataset,i=e.predicate,r=[];for(let[e,s]of t.data.entries())i.testTuple(s)||r.push(e);r.sort(((e,t)=>t-e)),r.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]=Ce(t.data.map((t=>t[e])),t._attrTypes[e])}}class yi extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e.type===Se.AFFIXATION)).affixation,t=e.base,i=e.element,r=k(t),s=k(i),n=e.channels,a=e.attribute;if(v(i)&&v(t)){let e=r.map((e=>e.dataScope.getAttrVal(a)));s=s.filter((t=>e.includes(t.dataScope.getAttrVal(a))));let t=(e,t)=>e.dataScope.getAttrVal(a)<t.dataScope.getAttrVal(a)?-1:e.dataScope.getAttrVal(a)>t.dataScope.getAttrVal(a)?1:0;s.sort(t),r.sort(t)}if(n.includes("x")||n.includes("y"))for(let t of n)this._handleXY(t,s,r,e.getElementAnchor(t),e.getBaseAnchor(t),e.getOffset(t));(n.includes("radialDistance")||n.includes("angle"))&&this._handlePolar(s,r,e);let o=G(i,!0);for(let e of o)p(e)}_handlePolar(e,t,i){let r=i.hasChannel("radialDistance")?i.getBaseAnchor("radialDistance"):g.MIDDLE,s=i.hasChannel("radialDistance")?i.getElementAnchor("radialDistance"):g.MIDDLE,n=i.hasChannel("angle")?i.getBaseAnchor("angle"):g.CENTER;i.hasChannel("angle")?i.getElementAnchor("angle"):g.CENTER;let a=i.hasChannel("radialDistance")?i.getOffset("radialDistance"):0,o=i.hasChannel("angle")?i.getOffset("angle"):0;if([Pt.Arc,Pt.Ring].indexOf(t[0].type)>=0&&e[0].type==Pt.SimpleText)for(let i=0;i<e.length;i++){let s=t[i],o=e[i],l=r===g.MIDDLE?(s.outerRadius+s.innerRadius)/2:r===g.TOP?s.outerRadius-5:s.innerRadius+5;if(l+=a,s.type===Pt.Arc){let e=Re(s.x,s.y,l,s.startAngle),t=Re(s.x,s.y,l,s.endAngle);s.endAngle>=180&&s.endAngle<=360?o._textPath=["M",e[0],e[1],"A",l,l,s.angle,s.angle>=180?1:0,0,t[0],t[1]].join(" "):o._textPath=["M",t[0],t[1],"A",l,l,s.angle,s.angle>=180?1:0,1,e[0],e[1]].join(" ")}else if(s.type===Pt.Ring){let e=275,t=265,i=350,r=Re(s.x,s.y,l,e),n=Re(s.x,s.y,l,t);o._textPath=["M",n[0],n[1],"A",l,l,i,1,1,r[0],r[1]].join(" ")}o.textPathOffset=n===g.LEFT?"0%":"50%"}else for(let i=0;i<e.length;i++){let l,h,c=t[i],d=e[i];c.type==Pt.Arc||c.type==Pt.Ring?(h="left"==n?c.endAngle+o:"center"==n?c.startAngle+c.angle/2+o:c.startAngle+o,l="top"==r?c.outerRadius+a:"bottom"==r?c.innerRadius+a:(c.outerRadius+c.innerRadius)/2+a):c.type==Pt.Circle&&(h=90,l="top"==r?c.radius+a:"bottom"==r?a:c.radius/2+a),ze(d,c.x-d.x,c.y-l-d.bounds[s]),d._rotate=[90-h,c.x,c.y]}}_handleXY(e,t,i,r,s,n){for(let a=0;a<t.length;a++){let o,l=i[a],h=t[a];if(se(l)){o=re(l,[g.LEFT,g.TOP].includes(s)?0:[g.CENTER,g.MIDDLE].includes(s)?.5:1)[e]}else o=l.bounds[s]+n;t[0].type===Pt.SimpleText?(h.anchor["x"==e?0:1]=r,je(h,e,o)):"x"==e?ze(h,o-h.bounds[r],0):ze(h,0,o-h.bounds[r])}}}class mi extends ke{constructor(e,t){super(e),this._affx=t}get affixation(){return this._affx}}class bi extends W{constructor(e){super(e)}run(){let e=this.inputVars[0],t=this.outputVar,i=e.attribute,r=t.attribute,s=e.dataset,n=t.dataset,a=this.args,o="min"in a?a.min:s.getAttributeSummary(i).min,l="max"in a?a.max:s.getAttributeSummary(i).max,h=o,c=[];for(;h<l;)c.push(h),h+=a.interval;c.push(h);let d={},u={};if(a.groupBy)for(let e of s.data){let t=a.groupBy.map((t=>e[t])).join("-");t in d||(d[t]=[],u[t]=a.groupBy.map((t=>e[t]))),d[t].push(e[i])}else d[""]=s.data.map((e=>e[i])),u[""]="";let _=[];for(let e in u){let t=xi(vi(a.bandwidth),c,d[e]);for(let s of t){let t={};""!==e&&a.groupBy.forEach(((i,r)=>t[i]=u[e][r])),t[i]=s[0],t[r]=s[1],_.push(t)}}let p={};if(p[i]=s.getAttributeType(i),p[r]=we.Number,a.groupBy)for(let e of a.groupBy)p[e]=s.getAttributeType(e);n.initialize(_,n.url,p)}}function xi(e,i,r){return i.map((i=>[i,t.mean(r,(t=>e(i-t)))]))}function vi(e){return t=>Math.abs(t/=e)<=1?.75*(1-t*t)/e:0}class wi extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,i=k(e.parent);for(let e of i){let i=e.layout;if(!i)return;let r=e.children.map((e=>({name:e.id,radius:e.radius,itm:e}))),s=r.reduce(((e,t)=>e+Math.pow(t.radius,2)),0),n=Math.sqrt(s);void 0===i._width&&(i._width=n),void 0===i._height&&(i._height=n);let a=t.hierarchy({name:"root",children:r}).sum((e=>e.radius?e.radius:0)).sort(((e,t)=>t.value-e.value));t.pack().size([i._width,i._height]).radius((e=>e.value))(a);for(let e of a.children){let t=e.data.itm;ze(t,i._x-a.x+e.x-t.x,i._y-a.y+e.y-t.y)}}let r=G(e,!0);for(let e of r)p(e)}}class Ei extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e instanceof Je&&e.property==tt.AXIS_PATH_POSITION)).element;e instanceof ai?this._runForEncoding(e):e instanceof oi&&this._runForLayout(e),p(e._title)}_runForEncoding(e){let t=e.channel,i=u(e.elements);if("x"==t)e._title.x=(e.scale.range[0]+e.scale.range[1])/2,e._title._y=e.orientation==ii?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("width"==t)e._title.x=i.left+e.scale.rangeExtent/2,e._title._y=e.orientation==ii?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._rotateYTitle?(e._title.x=e.orientation==ri?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==ri?[-90,e._title._x,e._title._y]:[90,e._title._x,e._title._y]):(e._title.x=e.orientation==ri?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=i.center,e._title._y=(i.top+i.bottom)/2-i.width/2-e.titleOffset,e._title._rotate=e.orientation==ri?[-90,i.center,i.middle]:[90,i.center,i.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==ii?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset,e._rotate&&(e._title._rotate=e._rotate.slice())}}_runForLayout(e){let t=e.channel,i=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==j.STACK?_(e.elements):u(e.elements);if("x"==t)e._title.x=i.center,e._title._y=e.orientation==ii?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._title.x=i.center,e._title._y=i.middle-i.width/2-e.titleOffset,e._title._rotate=e.orientation==ri?[-90,i.center,i.middle]:[90,i.center,i.middle];else if("angle"===t){let t=e.elements[0].parent.layout;t.type===j.CLUSTER&&(e._title.x=t.x,e._title._y=t.y)}}}class Ai extends Ut{constructor(e){super(e)}run(){super.run();let e,i=this.vars.find((e=>e.type===Se.ALIGNMENT)).alignment,r=i.anchor,s=i.elements;r==g.Top||r==g.LEFT?e=Math.min(...s.map((e=>e.bounds[r]))):r==g.BOTTOM||r==g.RIGHT?e=Math.max(...s.map((e=>e.bounds[r]))):r!=g.CENTER&&r!=g.MIDDLE||(e=t.mean(s.map((e=>e.bounds[r]))));for(let t of s){let s=Fe(t,i.channel);if(s){let n=e-t.bounds[r];ze(s,"x"===i.channel?n:0,"x"===i.channel?0:n)}}for(let e of s)p(e)}}class Ci extends ke{constructor(e,t){super(e),this._aln=t}get alignment(){return this._aln}}class Ti extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,i=k(e.parent);for(let e of i){let i=e.layout;if(!i)continue;let r=me(e.children[0]);if(!r)continue;let s=r.linkList.map((e=>({source:r.getNode(e.source),target:r.getNode(e.target)}))),n=t.forceSimulation(r.nodeList).force("charge",t.forceManyBody().strength(-i._repulsion)).force("link",t.forceLink(s).id((e=>e.id)).distance(i._linkDistance)).force("x",t.forceX()).force("y",t.forceY()).force("center",t.forceCenter(i._x,i._y).strength(i._attraction));n.stop(),n.tick(i._iterations);for(let t=0;t<e.children.length;t++){let i=e.children[t],s=r.nodeList[t];ze(i,s.x-i.x,s.y-i.y)}}let r=G(e,!0);for(let e of r)p(e)}}class Ri extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=k(e);switch(e.type){case Pt.Arc:this._updateArcLinks(t);break;case Pt.BezierCurve:this._updateBezierLinks(t);break;case Pt.BundledPath:this._updateBundledLinks(t);break;case Pt.Chord:this._updateChordLinks(t);break;case Pt.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,i=t.source.x<t.target.x?t.target:t.source;t._x=(e.x+i.x)/2,t._y=(e.y+i.y)/2,t._innerRadius=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2))/2,t._outerRadius=t._innerRadius+t._thickness;let r=de(e.x,e.y,t._x,t._y),s=de(i.x,i.y,t._x,t._y);t.direction===J.CLOCKWISE&&([r,s]=[s,r]),je(t,"startAngle",r),je(t,"angle",Math.abs(s-r))}}_updateBezierLinks(e){let t=this._inputVars[0].element,i=k(t),r=t.parent.layout;r.type===j.DIRECTED||r.type===j.TIDYTREE?this._updateBezierLinksForDirectedGraph(i,e,r):r.type===j.CLUSTER&&this._updateBezierLinksForClusteredGraph(i,e,r)}_updateBezierLinksForClusteredGraph(e,i,r){const s=r._d3Root.descendants(),n=new Map(s.map((e=>[ki(e),e]))),a=new Map(s.map((e=>[e.data[xe],ki(e)])));if(r.isRadial()){const e=t.linkRadial().angle((e=>e.x)).radius((e=>e.y));for(let t of i){let i=t.source,s=t.target,o=i.dataScope.getAttrVal(xe),l=s.dataScope.getAttrVal(xe),h=n.get(a.get(o)),c=n.get(a.get(l));t._d=ae(e({source:h,target:c}),r.x,r.y)}}else if(r.orientation===Z.VERTICAL){const e=t.linkVertical().x((e=>e.x)).y((e=>e.y));for(let t of i){let i=t.source,s=t.target,o=i.dataScope.getAttrVal(xe),l=s.dataScope.getAttrVal(xe),h=n.get(a.get(o)),c=n.get(a.get(l));t._d=ae(e({source:h,target:c}),r.left-r._x0,r.top)}}else if(r.orientation===Z.HORIZONTAL){const e=t.linkHorizontal().x((e=>e.y)).y((e=>e.x));for(let t of i){let i=t.source,s=t.target,o=i.dataScope.getAttrVal(xe),l=s.dataScope.getAttrVal(xe),h=n.get(a.get(o)),c=n.get(a.get(l));t._d=ae(e({source:h,target:c}),r.left,r.top-r._x0)}}}_updateBezierLinksForDirectedGraph(e,t,i){let r={},s={},n={},a={};for(let t of e){s[t.id]=0,r[t.id]=0;let e=t.links.filter((e=>e.source===t)),i=t.links.filter((e=>e.target===t));a[t.id]=i.map((e=>e.strokeWidth)).reduce(((e,t)=>e+t),0),n[t.id]=e.map((e=>e.strokeWidth)).reduce(((e,t)=>e+t),0)}i.spreadLinks&&("LR"===i.direction||"RL"===i.direction?t.sort(((e,t)=>de(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y)-de(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y))):t.sort(((e,t)=>de(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y)-de(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y))));for(let e of t){let t,o,l,h,c=e.source,d=e.target;i.spreadLinks?"LR"===i.direction||"RL"===i.direction?(t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0],l=d.bounds[e.targetAnchor[0]]+e.targetOffset[0],o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1]-n[c.id]/2+r[c.id]+e.strokeWidth/2,h=d.bounds[e.targetAnchor[1]]+e.targetOffset[1]-a[d.id]/2+s[d.id]+e.strokeWidth/2,r[c.id]+=e.strokeWidth,s[d.id]+=e.strokeWidth):(o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1],h=d.bounds[e.targetAnchor[1]]+e.targetOffset[1],t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0]-n[c.id]/2+r[c.id]+e.strokeWidth/2,l=d.bounds[e.targetAnchor[0]]+e.targetOffset[0]-a[d.id]/2+s[d.id]+e.strokeWidth/2,r[c.id]+=e.strokeWidth,s[d.id]+=e.strokeWidth):(t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0],o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1],l=d.bounds[e.targetAnchor[0]]+e.targetOffset[0],h=d.bounds[e.targetAnchor[1]]+e.targetOffset[1]),e.orientation===Z.HORIZONTAL?e._setVertices([[t,o],[(t+l)/2,o],[t,h],[l,h]]):e.orientation===Z.VERTICAL&&e._setVertices([[t,o],[t,(o+h)/2],[l,o],[l,h]])}}_updateBundledLinks(e){let i=this._inputVars[0].element.parent.layout;if(i.type!==j.CLUSTER)throw"Bundled links must work on a cluster layout";let r=i._d3Root.leaves();const s=new Map(r.map((e=>[ki(e),e]))),n=new Map(r.map((e=>[e.data[xe],ki(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.getAttrVal(xe),r=t.target.dataScope.getAttrVal(xe),o=s.get(n.get(e)),l=s.get(n.get(r));(o.outgoing??=[]).push([o,l]),l.incoming??=[];let h=o.path(l);t._d=ae(a(h),i.x,i.y)}}_updateChordLinks(e){for(let t of e){let e=t.source,i=t.target,r=Re(e.x,e.y,e.innerRadius,e.startAngle),s=Re(e.x,e.y,e.innerRadius,e.endAngle),n=Re(i.x,i.y,i.innerRadius,i.startAngle),a=Re(i.x,i.y,i.innerRadius,i.endAngle);t._d=["M",r[0],r[1],"Q",e.x,e.y,a[0],a[1],"A",e.x,e.y,i.angle,i.angle>180?1:0,1,n[0],n[1],"Q",e.x,e.y,s[0],s[1],"A",e.x,e.y,e.angle,e.angle>180?1:0,1,r[0],r[1]].join(" "),t._dirty=!0}}_updateLineLinks(e){for(let t of e){let e=t.source,i=t.target;t.vertices[0]._x=e.bounds.x,t.vertices[0]._y=e.bounds.y,t.vertices[1]._x=i.bounds.x,t.vertices[1]._y=i.bounds.y,t._dirty=!0}}}function ki(e){return`${e.parent?ki(e.parent)+".":""}${e.data[xe]}`}var Si="\0",Oi="\0",Ii="";function Ni(e,t){e[t]?e[t]++:e[t]=1}function Li(e,t){--e[t]||delete e[t]}function Vi(e,t,i,r){var s=""+t,n=""+i;if(!e&&s>n){var a=s;s=n,n=a}return s+Ii+n+Ii+(void 0===r?Si:r)}function Pi(e,t){return Vi(e,t.v,t.w,t.name)}var Mi=class{_isDirected=!0;_isMultigraph=!1;_isCompound=!1;_label;_defaultNodeLabelFn=()=>{};_defaultEdgeLabelFn=()=>{};_nodes={};_in={};_preds={};_out={};_sucs={};_edgeObjs={};_edgeLabels={};_nodeCount=0;_edgeCount=0;_parent;_children;constructor(e){e&&(this._isDirected=!e.hasOwnProperty("directed")||e.directed,this._isMultigraph=!!e.hasOwnProperty("multigraph")&&e.multigraph,this._isCompound=!!e.hasOwnProperty("compound")&&e.compound),this._isCompound&&(this._parent={},this._children={},this._children[Oi]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return this._defaultNodeLabelFn=e,"function"!=typeof e&&(this._defaultNodeLabelFn=()=>e),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var e=this;return this.nodes().filter((t=>0===Object.keys(e._in[t]).length))}sinks(){var e=this;return this.nodes().filter((t=>0===Object.keys(e._out[t]).length))}setNodes(e,t){var i=arguments,r=this;return e.forEach((function(e){i.length>1?r.setNode(e,t):r.setNode(e)})),this}setNode(e,t){return this._nodes.hasOwnProperty(e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=Oi,this._children[e]={},this._children[Oi][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return this._nodes.hasOwnProperty(e)}removeNode(e){var t=this;if(this._nodes.hasOwnProperty(e)){var i=e=>t.removeEdge(t._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach((function(e){t.setParent(e)})),delete this._children[e]),Object.keys(this._in[e]).forEach(i),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(i),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(void 0===t)t=Oi;else{for(var i=t+="";void 0!==i;i=this.parent(i))if(i===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==Oi)return t}}children(e=Oi){if(this._isCompound){var t=this._children[e];if(t)return Object.keys(t)}else{if(e===Oi)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var t=this._preds[e];if(t)return Object.keys(t)}successors(e){var t=this._sucs[e];if(t)return Object.keys(t)}neighbors(e){var t=this.predecessors(e);if(t){const r=new Set(t);for(var i of this.successors(e))r.add(i);return Array.from(r.values())}}isLeaf(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var i=this;Object.entries(this._nodes).forEach((function([i,r]){e(i)&&t.setNode(i,r)})),Object.values(this._edgeObjs).forEach((function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,i.edge(e))}));var r={};function s(e){var n=i.parent(e);return void 0===n||t.hasNode(n)?(r[e]=n,n):n in r?r[n]:s(n)}return this._isCompound&&t.nodes().forEach((e=>t.setParent(e,s(e)))),t}setDefaultEdgeLabel(e){return this._defaultEdgeLabelFn=e,"function"!=typeof e&&(this._defaultEdgeLabelFn=()=>e),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,t){var i=this,r=arguments;return e.reduce((function(e,s){return r.length>1?i.setEdge(e,s,t):i.setEdge(e,s),s})),this}setEdge(){var e,t,i,r,s=!1,n=arguments[0];"object"==typeof n&&null!==n&&"v"in n?(e=n.v,t=n.w,i=n.name,2===arguments.length&&(r=arguments[1],s=!0)):(e=n,t=arguments[1],i=arguments[3],arguments.length>2&&(r=arguments[2],s=!0)),e=""+e,t=""+t,void 0!==i&&(i=""+i);var a=Vi(this._isDirected,e,t,i);if(this._edgeLabels.hasOwnProperty(a))return s&&(this._edgeLabels[a]=r),this;if(void 0!==i&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[a]=s?r:this._defaultEdgeLabelFn(e,t,i);var o=function(e,t,i,r){var s=""+t,n=""+i;if(!e&&s>n){var a=s;s=n,n=a}var o={v:s,w:n};r&&(o.name=r);return o}(this._isDirected,e,t,i);return e=o.v,t=o.w,Object.freeze(o),this._edgeObjs[a]=o,Ni(this._preds[t],e),Ni(this._sucs[e],t),this._in[t][a]=o,this._out[e][a]=o,this._edgeCount++,this}edge(e,t,i){var r=1===arguments.length?Pi(this._isDirected,arguments[0]):Vi(this._isDirected,e,t,i);return this._edgeLabels[r]}edgeAsObj(){const e=this.edge(...arguments);return"object"!=typeof e?{label:e}:e}hasEdge(e,t,i){var r=1===arguments.length?Pi(this._isDirected,arguments[0]):Vi(this._isDirected,e,t,i);return this._edgeLabels.hasOwnProperty(r)}removeEdge(e,t,i){var r=1===arguments.length?Pi(this._isDirected,arguments[0]):Vi(this._isDirected,e,t,i),s=this._edgeObjs[r];return s&&(e=s.v,t=s.w,delete this._edgeLabels[r],delete this._edgeObjs[r],Li(this._preds[t],e),Li(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,t){var i=this._in[e];if(i){var r=Object.values(i);return t?r.filter((e=>e.v===t)):r}}outEdges(e,t){var i=this._out[e];if(i){var r=Object.values(i);return t?r.filter((e=>e.w===t)):r}}nodeEdges(e,t){var i=this.inEdges(e,t);if(i)return i.concat(this.outEdges(e,t))}},Di={Graph:Mi,version:"2.2.2"},Bi=Mi,Gi={write:function(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Fi(e),edges:zi(e)};void 0!==e.graph()&&(t.value=structuredClone(e.graph()));return t},read:function(e){var t=new Bi(e.options).setGraph(e.value);return e.nodes.forEach((function(e){t.setNode(e.v,e.value),e.parent&&t.setParent(e.v,e.parent)})),e.edges.forEach((function(e){t.setEdge({v:e.v,w:e.w,name:e.name},e.value)})),t}};function Fi(e){return e.nodes().map((function(t){var i=e.node(t),r=e.parent(t),s={v:t};return void 0!==i&&(s.value=i),void 0!==r&&(s.parent=r),s}))}function zi(e){return e.edges().map((function(t){var i=e.edge(t),r={v:t.v,w:t.w};return void 0!==t.name&&(r.name=t.name),void 0!==i&&(r.value=i),r}))}var Hi=function(e){var t,i={},r=[];function s(r){i.hasOwnProperty(r)||(i[r]=!0,t.push(r),e.successors(r).forEach(s),e.predecessors(r).forEach(s))}return e.nodes().forEach((function(e){t=[],s(e),t.length&&r.push(t)})),r};var ji=class{_arr=[];_keyIndices={};size(){return this._arr.length}keys(){return this._arr.map((function(e){return e.key}))}has(e){return this._keyIndices.hasOwnProperty(e)}priority(e){var t=this._keyIndices[e];if(void 0!==t)return this._arr[t].priority}min(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key}add(e,t){var i=this._keyIndices;if(e=String(e),!i.hasOwnProperty(e)){var r=this._arr,s=r.length;return i[e]=s,r.push({key:e,priority:t}),this._decrease(s),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,t){var i=this._keyIndices[e];if(t>this._arr[i].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[i].priority+" New: "+t);this._arr[i].priority=t,this._decrease(i)}_heapify(e){var t=this._arr,i=2*e,r=i+1,s=e;i<t.length&&(s=t[i].priority<t[s].priority?i:s,r<t.length&&(s=t[r].priority<t[s].priority?r:s),s!==e&&(this._swap(e,s),this._heapify(s)))}_decrease(e){for(var t,i=this._arr,r=i[e].priority;0!==e&&!(i[t=e>>1].priority<r);)this._swap(e,t),e=t}_swap(e,t){var i=this._arr,r=this._keyIndices,s=i[e],n=i[t];i[e]=n,i[t]=s,r[n.key]=e,r[s.key]=t}},Ui=ji,Wi=function(e,t,i,r){return function(e,t,i,r){var s,n,a={},o=new Ui,l=function(e){var t=e.v!==s?e.v:e.w,r=a[t],l=i(e),h=n.distance+l;if(l<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+e+" Weight: "+l);h<r.distance&&(r.distance=h,r.predecessor=s,o.decrease(t,h))};e.nodes().forEach((function(e){var i=e===t?0:Number.POSITIVE_INFINITY;a[e]={distance:i},o.add(e,i)}));for(;o.size()>0&&(s=o.removeMin(),(n=a[s]).distance!==Number.POSITIVE_INFINITY);)r(s).forEach(l);return a}(e,String(t),i||Yi,r||function(t){return e.outEdges(t)})},Yi=()=>1;var Xi=Wi,qi=function(e,t,i){return e.nodes().reduce((function(r,s){return r[s]=Xi(e,s,t,i),r}),{})};var Ki=function(e){var t=0,i=[],r={},s=[];function n(a){var o=r[a]={onStack:!0,lowlink:t,index:t++};if(i.push(a),e.successors(a).forEach((function(e){r.hasOwnProperty(e)?r[e].onStack&&(o.lowlink=Math.min(o.lowlink,r[e].index)):(n(e),o.lowlink=Math.min(o.lowlink,r[e].lowlink))})),o.lowlink===o.index){var l,h=[];do{l=i.pop(),r[l].onStack=!1,h.push(l)}while(a!==l);s.push(h)}}return e.nodes().forEach((function(e){r.hasOwnProperty(e)||n(e)})),s};var Zi=Ki,$i=function(e){return Zi(e).filter((function(t){return t.length>1||1===t.length&&e.hasEdge(t[0],t[0])}))};var Ji=function(e,t,i){return function(e,t,i){var r={},s=e.nodes();return s.forEach((function(e){r[e]={},r[e][e]={distance:0},s.forEach((function(t){e!==t&&(r[e][t]={distance:Number.POSITIVE_INFINITY})})),i(e).forEach((function(i){var s=i.v===e?i.w:i.v,n=t(i);r[e][s]={distance:n,predecessor:e}}))})),s.forEach((function(e){var t=r[e];s.forEach((function(i){var n=r[i];s.forEach((function(i){var r=n[e],s=t[i],a=n[i],o=r.distance+s.distance;o<a.distance&&(a.distance=o,a.predecessor=s.predecessor)}))}))})),r}(e,t||Qi,i||function(t){return e.outEdges(t)})},Qi=()=>1;function er(e){var t={},i={},r=[];if(e.sinks().forEach((function s(n){if(i.hasOwnProperty(n))throw new tr;t.hasOwnProperty(n)||(i[n]=!0,t[n]=!0,e.predecessors(n).forEach(s),delete i[n],r.push(n))})),Object.keys(t).length!==e.nodeCount())throw new tr;return r}class tr extends Error{constructor(){super(...arguments)}}var ir=er;er.CycleException=tr;var rr=ir;var sr=function(e,t,i){Array.isArray(t)||(t=[t]);var r=e.isDirected()?t=>e.successors(t):t=>e.neighbors(t),s="post"===i?nr:ar,n=[],a={};return t.forEach((t=>{if(!e.hasNode(t))throw new Error("Graph does not have node: "+t);s(t,r,a,n)})),n};function nr(e,t,i,r){for(var s=[[e,!1]];s.length>0;){var n=s.pop();n[1]?r.push(n[0]):i.hasOwnProperty(n[0])||(i[n[0]]=!0,s.push([n[0],!0]),or(t(n[0]),(e=>s.push([e,!1]))))}}function ar(e,t,i,r){for(var s=[e];s.length>0;){var n=s.pop();i.hasOwnProperty(n)||(i[n]=!0,r.push(n),or(t(n),(e=>s.push(e))))}}function or(e,t){for(var i=e.length;i--;)t(e[i],i,e);return e}var lr=sr;var hr=sr;var cr=Mi,dr=ji;var ur={Graph:Di.Graph,json:Gi,alg:{components:Hi,dijkstra:Wi,dijkstraAll:qi,findCycles:$i,floydWarshall:Ji,isAcyclic:function(e){try{rr(e)}catch(e){if(e instanceof rr.CycleException)return!1;throw e}return!0},postorder:function(e,t){return lr(e,t,"post")},preorder:function(e,t){return hr(e,t,"pre")},prim:function(e,t){var i,r=new cr,s={},n=new dr;function a(e){var r=e.v===i?e.w:e.v,a=n.priority(r);if(void 0!==a){var o=t(e);o<a&&(s[r]=i,n.decrease(r,o))}}if(0===e.nodeCount())return r;e.nodes().forEach((function(e){n.add(e,Number.POSITIVE_INFINITY),r.setNode(e)})),n.decrease(e.nodes()[0],0);var o=!1;for(;n.size()>0;){if(i=n.removeMin(),s.hasOwnProperty(i))r.setEdge(i,s[i]);else{if(o)throw new Error("Input graph is not connected: "+e);o=!0}e.nodeEdges(i).forEach(a)}return r},tarjan:Ki,topsort:ir},version:Di.version};function _r(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function pr(e,t){if("_next"!==e&&"_prev"!==e)return t}let gr=ur.Graph,fr=class{constructor(){let e={};e._next=e._prev=e,this._sentinel=e}dequeue(){let e=this._sentinel,t=e._prev;if(t!==e)return _r(t),t}enqueue(e){let t=this._sentinel;e._prev&&e._next&&_r(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t}toString(){let e=[],t=this._sentinel,i=t._prev;for(;i!==t;)e.push(JSON.stringify(i,pr)),i=i._prev;return"["+e.join(", ")+"]"}};var yr=function(e,t){if(e.nodeCount()<=1)return[];let i=function(e,t){let i=new gr,r=0,s=0;e.nodes().forEach((e=>{i.setNode(e,{v:e,in:0,out:0})})),e.edges().forEach((e=>{let n=i.edge(e.v,e.w)||0,a=t(e),o=n+a;i.setEdge(e.v,e.w,o),s=Math.max(s,i.node(e.v).out+=a),r=Math.max(r,i.node(e.w).in+=a)}));let n=function(e){const t=[];for(let i=0;i<e;i++)t.push(i);return t}(s+r+3).map((()=>new fr)),a=r+1;return i.nodes().forEach((e=>{xr(n,a,i.node(e))})),{graph:i,buckets:n,zeroIdx:a}}(e,t||mr);return function(e,t,i){let r,s=[],n=t[t.length-1],a=t[0];for(;e.nodeCount();){for(;r=a.dequeue();)br(e,t,i,r);for(;r=n.dequeue();)br(e,t,i,r);if(e.nodeCount())for(let n=t.length-2;n>0;--n)if(r=t[n].dequeue(),r){s=s.concat(br(e,t,i,r,!0));break}}return s}(i.graph,i.buckets,i.zeroIdx).flatMap((t=>e.outEdges(t.v,t.w)))};let mr=()=>1;function br(e,t,i,r,s){let n=s?[]:void 0;return e.inEdges(r.v).forEach((r=>{let a=e.edge(r),o=e.node(r.v);s&&n.push({v:r.v,w:r.w}),o.out-=a,xr(t,i,o)})),e.outEdges(r.v).forEach((r=>{let s=e.edge(r),n=r.w,a=e.node(n);a.in-=s,xr(t,i,a)})),e.removeNode(r.v),n}function xr(e,t,i){i.out?i.in?e[i.out-i.in+t].enqueue(i):e[e.length-1].enqueue(i):e[0].enqueue(i)}let vr=ur.Graph;var wr={addBorderNode:function(e,t,i,r){let s={width:0,height:0};arguments.length>=4&&(s.rank=i,s.order=r);return Er(e,"border",s,t)},addDummyNode:Er,asNonCompoundGraph:function(e){let t=new vr({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach((i=>{e.children(i).length||t.setNode(i,e.node(i))})),e.edges().forEach((i=>{t.setEdge(i,e.edge(i))})),t},buildLayerMatrix:function(e){let t=Rr(Ar(e)+1).map((()=>[]));return e.nodes().forEach((i=>{let r=e.node(i),s=r.rank;void 0!==s&&(t[s][r.order]=i)})),t},intersectRect:function(e,t){let i,r,s=e.x,n=e.y,a=t.x-s,o=t.y-n,l=e.width/2,h=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)*h?(o<0&&(h=-h),i=h*a/o,r=h):(a<0&&(l=-l),i=l,r=l*o/a);return{x:s+i,y:n+r}},mapValues:function(e,t){let i=t;"string"==typeof t&&(i=e=>e[t]);return Object.entries(e).reduce(((e,[t,r])=>(e[t]=i(r,t),e)),{})},maxRank:Ar,normalizeRanks:function(e){let t=Math.min(...e.nodes().map((t=>{let i=e.node(t).rank;return void 0===i?Number.MAX_VALUE:i})));e.nodes().forEach((i=>{let r=e.node(i);r.hasOwnProperty("rank")&&(r.rank-=t)}))},notime:function(e,t){return t()},partition:function(e,t){let i={lhs:[],rhs:[]};return e.forEach((e=>{t(e)?i.lhs.push(e):i.rhs.push(e)})),i},pick:function(e,t){const i={};for(const r of t)void 0!==e[r]&&(i[r]=e[r]);return i},predecessorWeights:function(e){let t=e.nodes().map((t=>{let i={};return e.inEdges(t).forEach((t=>{i[t.v]=(i[t.v]||0)+e.edge(t).weight})),i}));return kr(e.nodes(),t)},range:Rr,removeEmptyRanks:function(e){let t=Math.min(...e.nodes().map((t=>e.node(t).rank))),i=[];e.nodes().forEach((r=>{let s=e.node(r).rank-t;i[s]||(i[s]=[]),i[s].push(r)}));let r=0,s=e.graph().nodeRankFactor;Array.from(i).forEach(((t,i)=>{void 0===t&&i%s!=0?--r:void 0!==t&&r&&t.forEach((t=>e.node(t).rank+=r))}))},simplify:function(e){let t=(new vr).setGraph(e.graph());return e.nodes().forEach((i=>t.setNode(i,e.node(i)))),e.edges().forEach((i=>{let r=t.edge(i.v,i.w)||{weight:0,minlen:1},s=e.edge(i);t.setEdge(i.v,i.w,{weight:r.weight+s.weight,minlen:Math.max(r.minlen,s.minlen)})})),t},successorWeights:function(e){let t=e.nodes().map((t=>{let i={};return e.outEdges(t).forEach((t=>{i[t.w]=(i[t.w]||0)+e.edge(t).weight})),i}));return kr(e.nodes(),t)},time:function(e,t){let i=Date.now();try{return t()}finally{console.log(e+" time: "+(Date.now()-i)+"ms")}},uniqueId:Tr,zipObject:kr};function Er(e,t,i,r){let s;do{s=Tr(r)}while(e.hasNode(s));return i.dummy=t,e.setNode(s,i),s}function Ar(e){return Math.max(...e.nodes().map((t=>{let i=e.node(t).rank;return void 0===i?Number.MIN_VALUE:i})))}let Cr=0;function Tr(e){var t=++Cr;return toString(e)+t}function Rr(e,t,i=1){null==t&&(t=e,e=0);let r=e=>e<t;i<0&&(r=e=>t<e);const s=[];for(let t=e;r(t);t+=i)s.push(t);return s}function kr(e,t){return e.reduce(((e,i,r)=>(e[i]=t[r],e)),{})}let Sr=yr,Or=wr.uniqueId;var Ir={run:function(e){("greedy"===e.graph().acyclicer?Sr(e,function(e){return t=>e.edge(t).weight}(e)):function(e){let t=[],i={},r={};function s(n){r.hasOwnProperty(n)||(r[n]=!0,i[n]=!0,e.outEdges(n).forEach((e=>{i.hasOwnProperty(e.w)?t.push(e):s(e.w)})),delete i[n])}return e.nodes().forEach(s),t}(e)).forEach((t=>{let i=e.edge(t);e.removeEdge(t),i.forwardName=t.name,i.reversed=!0,e.setEdge(t.w,t.v,i,Or("rev"))}))},undo:function(e){e.edges().forEach((t=>{let i=e.edge(t);if(i.reversed){e.removeEdge(t);let r=i.forwardName;delete i.reversed,delete i.forwardName,e.setEdge(t.w,t.v,i,r)}}))}};let Nr=wr;var Lr={run:function(e){e.graph().dummyChains=[],e.edges().forEach((t=>function(e,t){let i,r,s,n=t.v,a=e.node(n).rank,o=t.w,l=e.node(o).rank,h=t.name,c=e.edge(t),d=c.labelRank;if(l===a+1)return;for(e.removeEdge(t),s=0,++a;a<l;++s,++a)c.points=[],r={width:0,height:0,edgeLabel:c,edgeObj:t,rank:a},i=Nr.addDummyNode(e,"edge",r,"_d"),a===d&&(r.width=c.width,r.height=c.height,r.dummy="edge-label",r.labelpos=c.labelpos),e.setEdge(n,i,{weight:c.weight},h),0===s&&e.graph().dummyChains.push(i),n=i;e.setEdge(n,o,{weight:c.weight},h)}(e,t)))},undo:function(e){e.graph().dummyChains.forEach((t=>{let i,r=e.node(t),s=r.edgeLabel;for(e.setEdge(r.edgeObj,s);r.dummy;)i=e.successors(t)[0],e.removeNode(t),s.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(s.x=r.x,s.y=r.y,s.width=r.width,s.height=r.height),t=i,r=e.node(t)}))}};var Vr={longestPath:function(e){var t={};e.sources().forEach((function i(r){var s=e.node(r);if(t.hasOwnProperty(r))return s.rank;t[r]=!0;var n=Math.min(...e.outEdges(r).map((t=>null==t?Number.POSITIVE_INFINITY:i(t.w)-e.edge(t).minlen)));return n===Number.POSITIVE_INFINITY&&(n=0),s.rank=n}))},slack:function(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}};var Pr=ur.Graph,Mr=Vr.slack,Dr=function(e){var t,i,r=new Pr({directed:!1}),s=e.nodes()[0],n=e.nodeCount();r.setNode(s,{});for(;Br(r,e)<n;)t=Gr(r,e),i=r.hasNode(t.v)?Mr(e,t):-Mr(e,t),Fr(r,e,i);return r};function Br(e,t){return e.nodes().forEach((function i(r){t.nodeEdges(r).forEach((s=>{var n=s.v,a=r===n?s.w:n;e.hasNode(a)||Mr(t,s)||(e.setNode(a,{}),e.setEdge(r,a,{}),i(a))}))})),e.nodeCount()}function Gr(e,t){return t.edges().reduce(((i,r)=>{let s=Number.POSITIVE_INFINITY;return e.hasNode(r.v)!==e.hasNode(r.w)&&(s=Mr(t,r)),s<i[0]?[s,r]:i}),[Number.POSITIVE_INFINITY,null])[1]}function Fr(e,t,i){e.nodes().forEach((e=>t.node(e).rank+=i))}var zr=Dr,Hr=Vr.slack,jr=Vr.longestPath,Ur=ur.alg.preorder,Wr=ur.alg.postorder,Yr=wr.simplify,Xr=qr;function qr(e){e=Yr(e),jr(e);var t,i=zr(e);for($r(i),Kr(i,e);t=Qr(i);)ts(i,e,t,es(i,e,t))}function Kr(e,t){var i=Wr(e,e.nodes());(i=i.slice(0,i.length-1)).forEach((i=>function(e,t,i){var r=e.node(i),s=r.parent;e.edge(i,s).cutvalue=Zr(e,t,i)}(e,t,i)))}function Zr(e,t,i){var r=e.node(i).parent,s=!0,n=t.edge(i,r),a=0;return n||(s=!1,n=t.edge(r,i)),a=n.weight,t.nodeEdges(i).forEach((n=>{var o,l,h=n.v===i,c=h?n.w:n.v;if(c!==r){var d=h===s,u=t.edge(n).weight;if(a+=d?u:-u,o=i,l=c,e.hasEdge(o,l)){var _=e.edge(i,c).cutvalue;a+=d?-_:_}}})),a}function $r(e,t){arguments.length<2&&(t=e.nodes()[0]),Jr(e,{},1,t)}function Jr(e,t,i,r,s){var n=i,a=e.node(r);return t[r]=!0,e.neighbors(r).forEach((s=>{t.hasOwnProperty(s)||(i=Jr(e,t,i,s,r))})),a.low=n,a.lim=i++,s?a.parent=s:delete a.parent,i}function Qr(e){return e.edges().find((t=>e.edge(t).cutvalue<0))}function es(e,t,i){var r=i.v,s=i.w;t.hasEdge(r,s)||(r=i.w,s=i.v);var n=e.node(r),a=e.node(s),o=n,l=!1;n.lim>a.lim&&(o=a,l=!0);var h=t.edges().filter((t=>l===is(e,e.node(t.v),o)&&l!==is(e,e.node(t.w),o)));return h.reduce(((e,i)=>Hr(t,i)<Hr(t,e)?i:e))}function ts(e,t,i,r){var s=i.v,n=i.w;e.removeEdge(s,n),e.setEdge(r.v,r.w,{}),$r(e),Kr(e,t),function(e,t){var i=e.nodes().find((e=>!t.node(e).parent)),r=Ur(e,i);(r=r.slice(1)).forEach((i=>{var r=e.node(i).parent,s=t.edge(i,r),n=!1;s||(s=t.edge(r,i),n=!0),t.node(i).rank=t.node(r).rank+(n?s.minlen:-s.minlen)}))}(e,t)}function is(e,t,i){return i.low<=t.lim&&t.lim<=i.lim}qr.initLowLimValues=$r,qr.initCutValues=Kr,qr.calcCutValue=Zr,qr.leaveEdge=Qr,qr.enterEdge=es,qr.exchangeEdges=ts;var rs=Vr.longestPath,ss=Dr,ns=Xr,as=function(e){switch(e.graph().ranker){case"network-simplex":default:ls(e);break;case"tight-tree":!function(e){rs(e),ss(e)}(e);break;case"longest-path":os(e)}};var os=rs;function ls(e){ns(e)}var hs=function(e){let t=function(e){let t={},i=0;function r(s){let n=i;e.children(s).forEach(r),t[s]={low:n,lim:i++}}return e.children().forEach(r),t}(e);e.graph().dummyChains.forEach((i=>{let r=e.node(i),s=r.edgeObj,n=function(e,t,i,r){let s,n,a=[],o=[],l=Math.min(t[i].low,t[r].low),h=Math.max(t[i].lim,t[r].lim);s=i;do{s=e.parent(s),a.push(s)}while(s&&(t[s].low>l||h>t[s].lim));n=s,s=r;for(;(s=e.parent(s))!==n;)o.push(s);return{path:a.concat(o.reverse()),lca:n}}(e,t,s.v,s.w),a=n.path,o=n.lca,l=0,h=a[l],c=!0;for(;i!==s.w;){if(r=e.node(i),c){for(;(h=a[l])!==o&&e.node(h).maxRank<r.rank;)l++;h===o&&(c=!1)}if(!c){for(;l<a.length-1&&e.node(h=a[l+1]).minRank<=r.rank;)l++;h=a[l]}e.setParent(i,h),i=e.successors(i)[0]}}))};let cs=wr;var ds={run:function(e){let t=cs.addDummyNode(e,"root",{},"_root"),i=function(e){var t={};function i(r,s){var n=e.children(r);n&&n.length&&n.forEach((e=>i(e,s+1))),t[r]=s}return e.children().forEach((e=>i(e,1))),t}(e),r=Math.max(...Object.values(i))-1,s=2*r+1;e.graph().nestingRoot=t,e.edges().forEach((t=>e.edge(t).minlen*=s));let n=function(e){return e.edges().reduce(((t,i)=>t+e.edge(i).weight),0)}(e)+1;e.children().forEach((a=>us(e,t,s,n,r,i,a))),e.graph().nodeRankFactor=s},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach((t=>{e.edge(t).nestingEdge&&e.removeEdge(t)}))}};function us(e,t,i,r,s,n,a){let o=e.children(a);if(!o.length)return void(a!==t&&e.setEdge(t,a,{weight:0,minlen:i}));let l=cs.addBorderNode(e,"_bt"),h=cs.addBorderNode(e,"_bb"),c=e.node(a);e.setParent(l,a),c.borderTop=l,e.setParent(h,a),c.borderBottom=h,o.forEach((o=>{us(e,t,i,r,s,n,o);let c=e.node(o),d=c.borderTop?c.borderTop:o,u=c.borderBottom?c.borderBottom:o,_=c.borderTop?r:2*r,p=d!==u?1:s-n[a]+1;e.setEdge(l,d,{weight:_,minlen:p,nestingEdge:!0}),e.setEdge(u,h,{weight:_,minlen:p,nestingEdge:!0})})),e.parent(a)||e.setEdge(t,l,{weight:0,minlen:s+n[a]})}let _s=wr;var ps=function(e){e.children().forEach((function t(i){let r=e.children(i),s=e.node(i);if(r.length&&r.forEach(t),s.hasOwnProperty("minRank")){s.borderLeft=[],s.borderRight=[];for(let t=s.minRank,r=s.maxRank+1;t<r;++t)gs(e,"borderLeft","_bl",i,s,t),gs(e,"borderRight","_br",i,s,t)}}))};function gs(e,t,i,r,s,n){let a={width:0,height:0,rank:n,borderType:t},o=s[t][n-1],l=_s.addDummyNode(e,"border",a,i);s[t][n]=l,e.setParent(l,r),o&&e.setEdge(o,l,{weight:1})}function fs(e){e.nodes().forEach((t=>ys(e.node(t)))),e.edges().forEach((t=>ys(e.edge(t))))}function ys(e){let t=e.width;e.width=e.height,e.height=t}function ms(e){e.y=-e.y}function bs(e){let t=e.x;e.x=e.y,e.y=t}let xs=wr;var vs=function(e){let t={},i=e.nodes().filter((t=>!e.children(t).length)),r=Math.max(...i.map((t=>e.node(t).rank))),s=xs.range(r+1).map((()=>[]));function n(i){if(t[i])return;t[i]=!0;let r=e.node(i);s[r.rank].push(i),e.successors(i).forEach(n)}return i.sort(((t,i)=>e.node(t).rank-e.node(i).rank)).forEach(n),s};let ws=wr.zipObject;function Es(e,t,i){let r=ws(i,i.map(((e,t)=>t))),s=t.flatMap((t=>e.outEdges(t).map((t=>({pos:r[t.w],weight:e.edge(t).weight}))).sort(((e,t)=>e.pos-t.pos)))),n=1;for(;n<i.length;)n<<=1;let a=2*n-1;n-=1;let o=new Array(a).fill(0),l=0;return s.forEach((e=>{let t=e.pos+n;o[t]+=e.weight;let i=0;for(;t>0;)t%2&&(i+=o[t+1]),t=t-1>>1,o[t]+=e.weight;l+=e.weight*i})),l}let As=wr;let Cs=wr;function Ts(e,t,i){let r;for(;t.length&&(r=t[t.length-1]).i<=i;)t.pop(),e.push(r.vs),i++;return i}let Rs=function(e,t=[]){return t.map((t=>{let i=e.inEdges(t);if(i.length){let r=i.reduce(((t,i)=>{let r=e.edge(i),s=e.node(i.v);return{sum:t.sum+r.weight*s.order,weight:t.weight+r.weight}}),{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}return{v:t}}))},ks=function(e,t){let i={};return e.forEach(((e,t)=>{let r=i[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};void 0!==e.barycenter&&(r.barycenter=e.barycenter,r.weight=e.weight)})),t.edges().forEach((e=>{let t=i[e.v],r=i[e.w];void 0!==t&&void 0!==r&&(r.indegree++,t.out.push(i[e.w]))})),function(e){let t=[];function i(e){return t=>{t.merged||(void 0===t.barycenter||void 0===e.barycenter||t.barycenter>=e.barycenter)&&function(e,t){let i=0,r=0;e.weight&&(i+=e.barycenter*e.weight,r+=e.weight);t.weight&&(i+=t.barycenter*t.weight,r+=t.weight);e.vs=t.vs.concat(e.vs),e.barycenter=i/r,e.weight=r,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}function r(t){return i=>{i.in.push(t),0==--i.indegree&&e.push(i)}}for(;e.length;){let s=e.pop();t.push(s),s.in.reverse().forEach(i(s)),s.out.forEach(r(s))}return t.filter((e=>!e.merged)).map((e=>As.pick(e,["vs","i","barycenter","weight"])))}(Object.values(i).filter((e=>!e.indegree)))},Ss=function(e,t){let i=Cs.partition(e,(e=>e.hasOwnProperty("barycenter"))),r=i.lhs,s=i.rhs.sort(((e,t)=>t.i-e.i)),n=[],a=0,o=0,l=0;r.sort((h=!!t,(e,t)=>e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:h?t.i-e.i:e.i-t.i)),l=Ts(n,s,l),r.forEach((e=>{l+=e.vs.length,n.push(e.vs),a+=e.barycenter*e.weight,o+=e.weight,l=Ts(n,s,l)}));var h;let c={vs:n.flat(!0)};o&&(c.barycenter=a/o,c.weight=o);return c};var Os=function e(t,i,r,s){let n=t.children(i),a=t.node(i),o=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,h={};o&&(n=n.filter((e=>e!==o&&e!==l)));let c=Rs(t,n);c.forEach((i=>{if(t.children(i.v).length){let o=e(t,i.v,r,s);h[i.v]=o,o.hasOwnProperty("barycenter")&&(a=o,void 0!==(n=i).barycenter?(n.barycenter=(n.barycenter*n.weight+a.barycenter*a.weight)/(n.weight+a.weight),n.weight+=a.weight):(n.barycenter=a.barycenter,n.weight=a.weight))}var n,a}));let d=ks(c,r);!function(e,t){e.forEach((e=>{e.vs=e.vs.flatMap((e=>t[e]?t[e].vs:e))}))}(d,h);let u=Ss(d,s);if(o&&(u.vs=[o,u.vs,l].flat(!0),t.predecessors(o).length)){let e=t.node(t.predecessors(o)[0]),i=t.node(t.predecessors(l)[0]);u.hasOwnProperty("barycenter")||(u.barycenter=0,u.weight=0),u.barycenter=(u.barycenter*u.weight+e.order+i.order)/(u.weight+2),u.weight+=2}return u};let Is=ur.Graph,Ns=wr;var Ls=function(e,t,i){let r=function(e){var t;for(;e.hasNode(t=Ns.uniqueId("_root")););return t}(e),s=new Is({compound:!0}).setGraph({root:r}).setDefaultNodeLabel((t=>e.node(t)));return e.nodes().forEach((n=>{let a=e.node(n),o=e.parent(n);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(s.setNode(n),s.setParent(n,o||r),e[i](n).forEach((t=>{let i=t.v===n?t.w:t.v,r=s.edge(i,n),a=void 0!==r?r.weight:0;s.setEdge(i,n,{weight:e.edge(t).weight+a})})),a.hasOwnProperty("minRank")&&s.setNode(n,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))})),s};let Vs=vs,Ps=function(e,t){let i=0;for(let r=1;r<t.length;++r)i+=Es(e,t[r-1],t[r]);return i},Ms=Os,Ds=Ls,Bs=function(e,t,i){let r,s={};i.forEach((i=>{let n,a,o=e.parent(i);for(;o;){if(n=e.parent(o),n?(a=s[n],s[n]=o):(a=r,r=o),a&&a!==o)return void t.setEdge(a,o);o=n}}))},Gs=ur.Graph,Fs=wr;var zs=function e(t,i){if(i&&"function"==typeof i.customOrder)return void i.customOrder(t,e);let r=Fs.maxRank(t),s=Hs(t,Fs.range(1,r+1),"inEdges"),n=Hs(t,Fs.range(r-1,-1,-1),"outEdges"),a=Vs(t);if(Us(t,a),i&&i.disableOptimalOrderHeuristic)return;let o,l=Number.POSITIVE_INFINITY;for(let e=0,i=0;i<4;++e,++i){js(e%2?s:n,e%4>=2),a=Fs.buildLayerMatrix(t);let r=Ps(t,a);r<l&&(i=0,o=Object.assign({},a),l=r)}Us(t,o)};function Hs(e,t,i){return t.map((function(t){return Ds(e,t,i)}))}function js(e,t){let i=new Gs;e.forEach((function(e){let r=e.graph().root,s=Ms(e,r,i,t);s.vs.forEach(((t,i)=>e.node(t).order=i)),Bs(e,i,s.vs)}))}function Us(e,t){Object.values(t).forEach((t=>t.forEach(((t,i)=>e.node(t).order=i))))}let Ws=ur.Graph,Ys=wr;var Xs=function(e){let t,i=Ys.buildLayerMatrix(e),r=Object.assign(qs(e,i),Ks(e,i)),s={};["u","d"].forEach((n=>{t="u"===n?i:Object.values(i).reverse(),["l","r"].forEach((i=>{"r"===i&&(t=t.map((e=>Object.values(e).reverse())));let a=("u"===n?e.predecessors:e.successors).bind(e),o=Js(e,t,r,a),l=Qs(e,t,o.root,o.align,"r"===i);"r"===i&&(l=Ys.mapValues(l,(e=>-e))),s[n+i]=l}))}));let n=en(e,s);return tn(s,n),rn(s,e.graph().align)};function qs(e,t){let i={};return t.length&&t.reduce((function(t,r){let s=0,n=0,a=t.length,o=r[r.length-1];return r.forEach(((t,l)=>{let h=function(e,t){if(e.node(t).dummy)return e.predecessors(t).find((t=>e.node(t).dummy))}(e,t),c=h?e.node(h).order:a;(h||t===o)&&(r.slice(n,l+1).forEach((t=>{e.predecessors(t).forEach((r=>{let n=e.node(r),a=n.order;!(a<s||c<a)||n.dummy&&e.node(t).dummy||Zs(i,r,t)}))})),n=l+1,s=c)})),r})),i}function Ks(e,t){let i={};function r(t,r,s,n,a){let o;Ys.range(r,s).forEach((r=>{o=t[r],e.node(o).dummy&&e.predecessors(o).forEach((t=>{let r=e.node(t);r.dummy&&(r.order<n||r.order>a)&&Zs(i,t,o)}))}))}return t.length&&t.reduce((function(t,i){let s,n=-1,a=0;return i.forEach(((o,l)=>{if("border"===e.node(o).dummy){let t=e.predecessors(o);t.length&&(s=e.node(t[0]).order,r(i,a,l,n,s),a=l,n=s)}r(i,a,i.length,s,t.length)})),i})),i}function Zs(e,t,i){if(t>i){let e=t;t=i,i=e}let r=e[t];r||(e[t]=r={}),r[i]=!0}function $s(e,t,i){if(t>i){let e=t;t=i,i=e}return!!e[t]&&e[t].hasOwnProperty(i)}function Js(e,t,i,r){let s={},n={},a={};return t.forEach((e=>{e.forEach(((e,t)=>{s[e]=e,n[e]=e,a[e]=t}))})),t.forEach((e=>{let t=-1;e.forEach((e=>{let o=r(e);if(o.length){o=o.sort(((e,t)=>a[e]-a[t]));let r=(o.length-1)/2;for(let l=Math.floor(r),h=Math.ceil(r);l<=h;++l){let r=o[l];n[e]===e&&t<a[r]&&!$s(i,e,r)&&(n[r]=e,n[e]=s[e]=s[r],t=a[r])}}}))})),{root:s,align:n}}function Qs(e,t,i,r,s){let n={},a=function(e,t,i,r){let s=new Ws,n=e.graph(),a=function(e,t,i){return(r,s,n)=>{let a,o=r.node(s),l=r.node(n),h=0;if(h+=o.width/2,o.hasOwnProperty("labelpos"))switch(o.labelpos.toLowerCase()){case"l":a=-o.width/2;break;case"r":a=o.width/2}if(a&&(h+=i?a:-a),a=0,h+=(o.dummy?t:e)/2,h+=(l.dummy?t:e)/2,h+=l.width/2,l.hasOwnProperty("labelpos"))switch(l.labelpos.toLowerCase()){case"l":a=l.width/2;break;case"r":a=-l.width/2}return a&&(h+=i?a:-a),a=0,h}}(n.nodesep,n.edgesep,r);return t.forEach((t=>{let r;t.forEach((t=>{let n=i[t];if(s.setNode(n),r){var o=i[r],l=s.edge(o,n);s.setEdge(o,n,Math.max(a(e,t,r),l||0))}r=t}))})),s}(e,t,i,s),o=s?"borderLeft":"borderRight";function l(e,t){let i=a.nodes(),r=i.pop(),s={};for(;r;)s[r]?e(r):(s[r]=!0,i.push(r),i=i.concat(t(r))),r=i.pop()}return l((function(e){n[e]=a.inEdges(e).reduce(((e,t)=>Math.max(e,n[t.v]+a.edge(t))),0)}),a.predecessors.bind(a)),l((function(t){let i=a.outEdges(t).reduce(((e,t)=>Math.min(e,n[t.w]-a.edge(t))),Number.POSITIVE_INFINITY),r=e.node(t);i!==Number.POSITIVE_INFINITY&&r.borderType!==o&&(n[t]=Math.max(n[t],i))}),a.successors.bind(a)),Object.keys(r).forEach((e=>n[e]=n[i[e]])),n}function en(e,t){return Object.values(t).reduce(((t,i)=>{let r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;Object.entries(i).forEach((([t,i])=>{let n=function(e,t){return e.node(t).width}(e,t)/2;r=Math.max(i+n,r),s=Math.min(i-n,s)}));const n=r-s;return n<t[0]&&(t=[n,i]),t}),[Number.POSITIVE_INFINITY,null])[1]}function tn(e,t){let i=Object.values(t),r=Math.min(...i),s=Math.max(...i);["u","d"].forEach((i=>{["l","r"].forEach((n=>{let a=i+n,o=e[a];if(o===t)return;let l=Object.values(o),h=r-Math.min(...l);"l"!==n&&(h=s-Math.max(...l)),h&&(e[a]=Ys.mapValues(o,(e=>e+h)))}))}))}function rn(e,t){return Ys.mapValues(e.ul,((i,r)=>{if(t)return e[t.toLowerCase()][r];{let t=Object.values(e).map((e=>e[r])).sort(((e,t)=>e-t));return(t[1]+t[2])/2}}))}let sn=wr,nn=Xs;let an=Ir,on=Lr,ln=as,hn=wr.normalizeRanks,cn=hs,dn=wr.removeEmptyRanks,un=ds,_n=ps,pn={adjust:function(e){let t=e.graph().rankdir.toLowerCase();"lr"!==t&&"rl"!==t||fs(e)},undo:function(e){let t=e.graph().rankdir.toLowerCase();"bt"!==t&&"rl"!==t||function(e){e.nodes().forEach((t=>ms(e.node(t)))),e.edges().forEach((t=>{let i=e.edge(t);i.points.forEach(ms),i.hasOwnProperty("y")&&ms(i)}))}(e);"lr"!==t&&"rl"!==t||(!function(e){e.nodes().forEach((t=>bs(e.node(t)))),e.edges().forEach((t=>{let i=e.edge(t);i.points.forEach(bs),i.hasOwnProperty("x")&&bs(i)}))}(e),fs(e))}},gn=zs,fn=function(e){(function(e){let t=sn.buildLayerMatrix(e),i=e.graph().ranksep,r=0;t.forEach((t=>{const s=t.reduce(((t,i)=>{const r=e.node(i).height;return t>r?t:r}),0);t.forEach((t=>e.node(t).y=r+s/2)),r+=s+i}))})(e=sn.asNonCompoundGraph(e)),Object.entries(nn(e)).forEach((([t,i])=>e.node(t).x=i))},yn=wr,mn=ur.Graph;var bn=function(e,t){let i=t&&t.debugTiming?yn.time:yn.notime;i("layout",(()=>{let r=i(" buildLayoutGraph",(()=>function(e){let t=new mn({multigraph:!0,compound:!0}),i=Sn(e.graph());return t.setGraph(Object.assign({},vn,kn(i,xn),yn.pick(i,wn))),e.nodes().forEach((i=>{const r=kn(Sn(e.node(i)),En);Object.keys(An).forEach((e=>{void 0===r[e]&&(r[e]=An[e])})),t.setNode(i,r),t.setParent(i,e.parent(i))})),e.edges().forEach((i=>{let r=Sn(e.edge(i));t.setEdge(i,Object.assign({},Tn,kn(r,Cn),yn.pick(r,Rn)))})),t}(e)));i(" runLayout",(()=>function(e,t,i){t(" makeSpaceForEdgeLabels",(()=>function(e){let t=e.graph();t.ranksep/=2,e.edges().forEach((i=>{let r=e.edge(i);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===t.rankdir||"BT"===t.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(e))),t(" removeSelfEdges",(()=>function(e){e.edges().forEach((t=>{if(t.v===t.w){var i=e.node(t.v);i.selfEdges||(i.selfEdges=[]),i.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}}))}(e))),t(" acyclic",(()=>an.run(e))),t(" nestingGraph.run",(()=>un.run(e))),t(" rank",(()=>ln(yn.asNonCompoundGraph(e)))),t(" injectEdgeLabelProxies",(()=>function(e){e.edges().forEach((t=>{let i=e.edge(t);if(i.width&&i.height){let i=e.node(t.v),r={rank:(e.node(t.w).rank-i.rank)/2+i.rank,e:t};yn.addDummyNode(e,"edge-proxy",r,"_ep")}}))}(e))),t(" removeEmptyRanks",(()=>dn(e))),t(" nestingGraph.cleanup",(()=>un.cleanup(e))),t(" normalizeRanks",(()=>hn(e))),t(" assignRankMinMax",(()=>function(e){let t=0;e.nodes().forEach((i=>{let r=e.node(i);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=Math.max(t,r.maxRank))})),e.graph().maxRank=t}(e))),t(" removeEdgeLabelProxies",(()=>function(e){e.nodes().forEach((t=>{let i=e.node(t);"edge-proxy"===i.dummy&&(e.edge(i.e).labelRank=i.rank,e.removeNode(t))}))}(e))),t(" normalize.run",(()=>on.run(e))),t(" parentDummyChains",(()=>cn(e))),t(" addBorderSegments",(()=>_n(e))),t(" order",(()=>gn(e,i))),t(" insertSelfEdges",(()=>function(e){var t=yn.buildLayerMatrix(e);t.forEach((t=>{var i=0;t.forEach(((t,r)=>{var s=e.node(t);s.order=r+i,(s.selfEdges||[]).forEach((t=>{yn.addDummyNode(e,"selfedge",{width:t.label.width,height:t.label.height,rank:s.rank,order:r+ ++i,e:t.e,label:t.label},"_se")})),delete s.selfEdges}))}))}(e))),t(" adjustCoordinateSystem",(()=>pn.adjust(e))),t(" position",(()=>fn(e))),t(" positionSelfEdges",(()=>function(e){e.nodes().forEach((t=>{var i=e.node(t);if("selfedge"===i.dummy){var r=e.node(i.e.v),s=r.x+r.width/2,n=r.y,a=i.x-s,o=r.height/2;e.setEdge(i.e,i.label),e.removeNode(t),i.label.points=[{x:s+2*a/3,y:n-o},{x:s+5*a/6,y:n-o},{x:s+a,y:n},{x:s+5*a/6,y:n+o},{x:s+2*a/3,y:n+o}],i.label.x=i.x,i.label.y=i.y}}))}(e))),t(" removeBorderNodes",(()=>function(e){e.nodes().forEach((t=>{if(e.children(t).length){let i=e.node(t),r=e.node(i.borderTop),s=e.node(i.borderBottom),n=e.node(i.borderLeft[i.borderLeft.length-1]),a=e.node(i.borderRight[i.borderRight.length-1]);i.width=Math.abs(a.x-n.x),i.height=Math.abs(s.y-r.y),i.x=n.x+i.width/2,i.y=r.y+i.height/2}})),e.nodes().forEach((t=>{"border"===e.node(t).dummy&&e.removeNode(t)}))}(e))),t(" normalize.undo",(()=>on.undo(e))),t(" fixupEdgeLabelCoords",(()=>function(e){e.edges().forEach((t=>{let i=e.edge(t);if(i.hasOwnProperty("x"))switch("l"!==i.labelpos&&"r"!==i.labelpos||(i.width-=i.labeloffset),i.labelpos){case"l":i.x-=i.width/2+i.labeloffset;break;case"r":i.x+=i.width/2+i.labeloffset}}))}(e))),t(" undoCoordinateSystem",(()=>pn.undo(e))),t(" translateGraph",(()=>function(e){let t=Number.POSITIVE_INFINITY,i=0,r=Number.POSITIVE_INFINITY,s=0,n=e.graph(),a=n.marginx||0,o=n.marginy||0;function l(e){let n=e.x,a=e.y,o=e.width,l=e.height;t=Math.min(t,n-o/2),i=Math.max(i,n+o/2),r=Math.min(r,a-l/2),s=Math.max(s,a+l/2)}e.nodes().forEach((t=>l(e.node(t)))),e.edges().forEach((t=>{let i=e.edge(t);i.hasOwnProperty("x")&&l(i)})),t-=a,r-=o,e.nodes().forEach((i=>{let s=e.node(i);s.x-=t,s.y-=r})),e.edges().forEach((i=>{let s=e.edge(i);s.points.forEach((e=>{e.x-=t,e.y-=r})),s.hasOwnProperty("x")&&(s.x-=t),s.hasOwnProperty("y")&&(s.y-=r)})),n.width=i-t+a,n.height=s-r+o}(e))),t(" assignNodeIntersects",(()=>function(e){e.edges().forEach((t=>{let i,r,s=e.edge(t),n=e.node(t.v),a=e.node(t.w);s.points?(i=s.points[0],r=s.points[s.points.length-1]):(s.points=[],i=a,r=n),s.points.unshift(yn.intersectRect(n,i)),s.points.push(yn.intersectRect(a,r))}))}(e))),t(" reversePoints",(()=>function(e){e.edges().forEach((t=>{let i=e.edge(t);i.reversed&&i.points.reverse()}))}(e))),t(" acyclic.undo",(()=>an.undo(e)))}(r,i,t))),i(" updateInputGraph",(()=>function(e,t){e.nodes().forEach((i=>{let r=e.node(i),s=t.node(i);r&&(r.x=s.x,r.y=s.y,r.rank=s.rank,t.children(i).length&&(r.width=s.width,r.height=s.height))})),e.edges().forEach((i=>{let r=e.edge(i),s=t.edge(i);r.points=s.points,s.hasOwnProperty("x")&&(r.x=s.x,r.y=s.y)})),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,r)))}))};let xn=["nodesep","edgesep","ranksep","marginx","marginy"],vn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},wn=["acyclicer","ranker","rankdir","align"],En=["width","height"],An={width:0,height:0},Cn=["minlen","weight","width","height","labeloffset"],Tn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Rn=["labelpos"];function kn(e,t){return yn.mapValues(yn.pick(e,t),Number)}function Sn(e){var t={};return e&&Object.entries(e).forEach((([e,i])=>{"string"==typeof e&&(e=e.toLowerCase()),t[e]=i})),t}let On=wr,In=ur.Graph;var Nn={graphlib:ur,layout:bn,debug:{debugOrdering:function(e){let t=On.buildLayerMatrix(e),i=new In({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach((t=>{i.setNode(t,{label:t}),i.setParent(t,"layer"+e.node(t).rank)})),e.edges().forEach((e=>i.setEdge(e.v,e.w,{},e.name))),t.forEach(((e,t)=>{let r="layer"+t;i.setNode(r,{rank:"same"}),e.reduce(((e,t)=>(i.setEdge(e,t,{style:"invis"}),t)))})),i}},util:{time:wr.time,notime:wr.notime},version:"1.1.3"};class Ln extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=k(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let r=me(e.children[0]);if(!r)continue;var i=new Nn.graphlib.Graph;i.setGraph({edgesep:t._edgeSep}),i.setDefaultEdgeLabel((function(){return{}})),i.graph().rankdir=this._getDagreDirection(t.direction);let s=new Map;for(let t of e.children){let e=t.dataScope.getAttrVal(xe);s.set(e,e+""),i.setNode(e,{label:t.text?t.text:"",width:t.bounds.width,height:t.bounds.height})}for(let e of r.linkList)i.setEdge(e.source,e.target);Nn.layout(i);const n={};let a=Math.min(...i.nodes().map((e=>i.node(e).y))),o=Math.min(...i.nodes().map((e=>i.node(e).x))),l=t.left-o,h=t.top-a;for(const e of i.nodes())n[e]={x:i.node(e).x+l,y:i.node(e).y+h};for(let t of e.children){let e=t.dataScope.getAttrVal(xe);ze(t,n[s.get(e)].x-t.x,n[s.get(e)].y-t.y)}}let r=G(e,!0);for(let e of r)p(e)}_getDagreDirection(e){switch(e){case $.Left2Right:return"LR";case $.Right2Left:return"RL";case $.Top2Bottom:return"TB";case $.Bottom2Top:return"BT"}}}class Vn extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,i=k(e.parent);for(let e of i){let i=e.layout;if(!i)continue;let r=fe(e.children[0]);if(!r)continue;let s=t.hierarchy(r._data),n=Math.max(...e.children.map((e=>e.bounds.width))),a=Math.max(...e.children.map((e=>e.bounds.height))),o=i.orientation==Z.HORIZONTAL?[i.height,i.width]:[i.width,i.height],l=t.tree().nodeSize([n,a]).size(o)(s);this._apply(l,i,e)}p(e)}_apply(e,t,i){let r,s,n=i.children.filter((t=>t.dataScope.getAttrVal(xe)==e.data[xe]))[0];switch(t.orientation){case Z.HORIZONTAL:r=e.y+t.left,s=e.x+t.top;break;case Z.VERTICAL:r=e.x+t.left,s=t.top+e.y}if(ze(n,r-n.x,s-n.y),e.children&&e.children.length>0)for(let r of e.children)this._apply(r,t,i)}}class Pn extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,i=this._inputVars.filter((e=>e.type===Se.PROPERTY&&e.property===tt.CHILDREN_ORDER))[0].element,r=i.layout,s=r.width?r.width:i.bounds.width,n=r.height?r.height:i.bounds.height,a=void 0===r.top?i.bounds.top:r.top,o=void 0===r.left?i.bounds.left:r.left,l=t.hierarchy(i).sum((e=>e.type===Pt.Rect?e.width*e.height:0));t.treemap().size([s,n])(l),this._apply(l,o,a);let h=G(e,!0);for(let e of h)p(e)}_apply(e,t,i){if(e.data.type==Pt.Collection&&e.children)for(let r of e.children)this._apply(r,t,i);else e.data.type==Pt.Rect&&(e.data.resize(e.x1-e.x0,e.y1-e.y0),ze(e.data,e.x0+t-e.data.left,e.y0+i-e.data.top))}}class Mn extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=k(e.parent);for(let e of t){if(!e.layout)continue;if(0===e.children.length)continue;let t=fe(e.children[0]);if(!t)continue;let i={};for(let t of e.children)i[t.dataScope.getAttrVal(xe)]=t;e.children[0].type===Pt.Rect?this._layoutRects(t.getRoot(),t,i):this._layoutArcs(t.getRoot(),t,i)}p(e)}_layoutArcs(e,t,i){let r=t.getChildren(e);if(0===r.length)return;let s=i[e[xe]],n=!s||s.type!=Pt.Arc&&s.type!=Pt.Pie?60:s.startAngle;for(let e=0;e<r.length;e++){let s=r[e],a=i[s[xe]];if(a.type===Pt.Arc){let e=ce(n+a.angle);a.setAngles(n,e),n=e}this._layoutArcs(s,t,i)}}_layoutRects(e,t,i){let r=t.getChildren(e);if(0===r.length)return;let s,n,a=i[e[xe]];this._direction,$.Top2Bottom,s=a.left,n=a.bottom;for(let e=0;e<r.length;e++){let a=r[e],o=i[a[xe]];ze(o,s-o.left,n-o.top),s+=o.width,this._layoutRects(a,t,i)}}}class Dn extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=this.inputVars[0],i=e.conditionalEncoding,r=t.context,s=e.result,n=i.responderComponent;s.clear();let a=Array.isArray(n)?n:[n];if(i.evalFunction)for(let e of a){k(e).forEach((e=>s.setValue(e.id,i.evalFunction(r,e))))}}}class Bn extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=k(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let i=360/e.children.length;for(let[r,s]of e.children.entries())ze(s,t.x+t.radius-s.bounds.x,t.y-s.bounds.y),s._rotate=[r*i,t.x,t.y]}let i=G(e,!0);for(let e of i)p(e)}}class Gn extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,i=k(e.parent);for(let r of i){let i=r.layout;if(!i)continue;let s=i._tree?i._tree._data:fe(r.children[0])._data,n=t.hierarchy(s);if(i.isRadial()){n=t.cluster().size([le(i.angleExtent),i.radius])(n),i._d3Root=n;const e=new Map(n.descendants().map((e=>[e.data[xe],[e.x,e.y]])));for(let t of r.children){let r=t.dataScope.getAttrVal(xe);ze(t,i.x-t.bounds.x,i.y-e.get(r)[1]-t.bounds.y),t._rotate=[he(e.get(r)[0]),i.x,i.y]}}else if(i.orientation===Z.VERTICAL){!i.width||i.width;let s=i.height?i.height:600;n=t.cluster().nodeSize([e.bounds.width+1,s/(n.height+1)])(n),i._d3Root=n;const a=new Map(n.descendants().map((e=>[e.data[xe],[e.x,e.y]])));let o=1/0,l=-o;n.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),i._x0=o;for(let e of r.children){let t=e.dataScope.getAttrVal(xe);ze(e,a.get(t)[0]-o+i.left-e.bounds.x,a.get(t)[1]+i.top-e.bounds.y)}}else if(i.orientation===Z.HORIZONTAL){!i.width||i.width;let s=i.height?i.height:600;n=t.cluster().nodeSize([e.bounds.height,s/(n.height+1)])(n),i._d3Root=n;const a=new Map(n.descendants().map((e=>[e.data[xe],[e.x,e.y]])));let o=1/0,l=-o;n.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),i._x0=o;for(let e of r.children){let t=e.dataScope.getAttrVal(xe);ze(e,a.get(t)[1]+i.left-e.bounds.x,a.get(t)[0]-o+i.top-e.bounds.y)}}}let r=G(e,!0);for(let e of r)p(e)}}class Fn extends ke{constructor(e,t){super(e),this._cond=t}get context(){return this._cond}}class zn extends W{constructor(e,t,i){super(e),this._fn=t,this._compnt=i}run(){super.run();let e=this.inputVars.find((e=>e instanceof Fn));this.outputVar,this._fn(void 0,e.context,this._compnt)}}class Hn extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=this.inputVars.find((e=>e instanceof Yt)),i=e.encodings[0].dataTable.getAttributeType(t.attribute),r={};for(let t of e.encodings){let e=this._computeAttrValues(t,i);Object.assign(r,e)}e.attrValues=r}_computeAttrValues(e,t){let i=k(e.element),r={};if(e.element.type===Pt.Area&&["width","height","fillGradient"].indexOf(e.channel)>=0)for(let t of i)for(let i of t.vertices)r[i.id]=_e(i).aggregateNumericalAttribute(e.attribute,e.aggregator);else switch(t){case we.Boolean:break;case we.Date:for(let t of i)r[t.id]=_e(t).getAttrVal(e.attribute);break;case we.String:try{if("count"==e.aggregator)for(let t of i)r[t.id]=_e(t).getAttributeValues(e.attribute).length;else for(let t of i)r[t.id]=_e(t).getAttrVal(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,s=e.attribute.split(".")[0],n=e.attribute.split(".")[1];for(let e of i){let i=_e(e).getAttrVal(s);r[e.id]=new ue(t).cross(xe,i).getAttrVal(n)}}else for(let t of i)r[t.id]=_e(t).aggregateNumericalAttribute(e.attribute,e.aggregator)}if(e.transform)for(let t of i)r[t.id]=e.transform(r[t.id],t);return e.attrValues=r,r}}class jn extends ke{constructor(e,t,i){super(e),this._dataset=i,this._predicate=t}get dataset(){return this._dataset}get predicate(){return this._predicate}}class Un{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:"dataValue"===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 i={};for(const e in this._operators)i[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:i}}getVariable(e,...t){if(Object.values(Se).indexOf(e)<0)throw console.log(e),new Error("Variable Type Not Known");let i=this.findVariable(e,t);if(i)return i;switch(e){case Se.CHANNEL:i=new Oe(e,t[0],t[1]),"vertex"!=t[1].type&&"segment"!=t[1].type||this._connectPathElement2Size(t[1],i);break;case Se.PROPERTY:i=new Je(e,t[0],t[1]);break;case Se.ATTRIBUTE:i=new Yt(e,t[0],t[1]);break;case Se.ITEMS:i=new jn(e,t[0],t[1]);break;case Se.ATTR_VALUE:i=new $t(e,t[0]);break;case Se.DATASCOPE:i=new jt(e,t[0]);break;case Se.BOUNDS:i=new Ht(e,t[0]);break;case Se.SCALE:i=new Ke(e,t[0]);break;case Se.AFFIXATION:i=new mi(e,t[0]);break;case Se.ALIGNMENT:i=new Ci(e,t[0]);break;case Se.EVT_CTX:i=new Fn(e,t[0],t[1]);break;case Se.CONDITION_RESULT:i=new Ze(e,t[0],t[1])}return e in this._variables||(this._variables[e]={}),this._variables[e][i.id]=i,i}_connectPathElement2Size(e,t){let i=e.parent,r=t.channel,s=this.findVariable(Se.CHANNEL,["x"===r?"width":"height",i]);if(s){let e=s.incomingDataflow;e||(e=this.createOneWayDependency(Y.CONDUIT)),this.connect(t,e),this.connect(e,s)}}findIncomingDataflowOperator(e,t){return t.incomingDataflow&&t.incomingDataflow.type===e?t.incomingDataflow:void 0}getIncomingDataflowOperator(e,t){let i=this.findIncomingDataflowOperator(e,t);return i||this.createOneWayDependency(e)}getOutgoingDataflowOperator(e,t){for(let i of t.outgoingEdges)if(i.toNode instanceof W&&i.toNode.type===e)return i.toNode;return this.createOneWayDependency(e)}createOneWayDependency(e,...t){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let i;switch(e){case Y.EVAL_BBOX:i=new Qt(e);break;case Y.AFFIXER:i=new yi(e);break;case Y.DATA_EXTRACTOR:i=new Hn(e,t[0]);break;case Y.SCALE_BUILDER:i=new Jt(e,t[0]);break;case Y.ENCODER:i=new $e(e,t[0]);break;case Y.AXIS_PATH_PLACER:i=new li(e);break;case Y.AXIS_TICKS_PLACER:i=new hi(e);break;case Y.AXIS_LABELS_PLACER:i=new ci(e);break;case Y.AXIS_TITLE_PLACER:i=new Ei(e);break;case Y.LINK_PLACER:i=new Ri(e);break;case Y.GRID_LAYOUT:i=new di(e);break;case Y.STACK_LAYOUT:i=new _i(e);break;case Y.PACK_LAYOUT:i=new wi(e);break;case Y.FORCE_LAYOUT:i=new Ti(e);break;case Y.DIRECTED_LAYOUT:i=new Ln(e);break;case Y.TIDY_TREE_LAYOUT:i=new Vn(e);break;case Y.TREEMAP_LAYOUT:i=new Pn(e);break;case Y.STRATA_LAYOUT:i=new Mn(e);break;case Y.CIRCULAR_LAYOUT:i=new Bn(e);break;case Y.CLUSTER_LAYOUT:i=new Gn(e);break;case Y.GRIDLINES_PLACER:i=new ui(e);break;case Y.BIN_TRANSFORMER:i=new gi(e);break;case Y.FILTER_TRANSFORMER:i=new fi(e);break;case Y.KDE_TRANSFORMER:i=new bi(e);break;case Y.TARGET_EVALUATOR:i=new Dn(e);break;case Y.TARGET_UPDATER:i=new zn(e,t[0],t[1]);break;case Y.CONDUIT:default:i=new pi(e)}return e in this._operators||(this._operators[e]={}),this._operators[e][i.id]=i,i}createMultiWayDependency(e){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let t;return Y.ALIGNER,t=new Ai(e),e in this._operators||(this._operators[e]={}),this._operators[e][t.id]=t,t}connect(e,t,i=!0){if(e instanceof ke&&t instanceof W){if(!t.inputVars.includes(e)){const r=new Wt(e,t,i);this._edges.push(r),e.outgoingEdges.push(r),t.inputVars.push(e)}}else if(e instanceof W&&t instanceof ke){if(!e.outputVars.includes(t)){const r=new Wt(e,t,i);this._edges.push(r),e.outputVars.push(t),t.incomingEdges.push(r)}}else if(e instanceof ke&&t instanceof Ut){if(!t.vars.includes(e)){const i=new Wt(e,t,!1);this._edges.push(i),t.vars.push(e),t.edges.push(e),e.undirectedEdges.push(i)}}else{if(!(e instanceof Ut&&t instanceof ke))throw new Error("An edge must connect a variable and an operator.");if(!e.vars.includes(t)){const i=new Wt(t,e,!1);this._edges.push(i),e.vars.push(t),e.edges.push(t),t.undirectedEdges.push(i)}}}disconnectChannelVarFromBBoxOperator(e){let t=this.getOutgoingDataflowOperator(Y.EVAL_BBOX,e),i=e.outgoingEdges.find((i=>i.fromNode===e&&i.toNode===t));i&&this.disconnect(e,t,i)}disconnect(e,t,i){if(e instanceof ke&&t instanceof W){let r=e.outgoingEdges.findIndex((e=>e===i));r>=0&&(this._edges.splice(this._edges.indexOf(i),1),e.outgoingEdges.splice(r,1));let s=t.inputVars.findIndex((t=>t==e));s>=0&&t.inputVars.splice(s,1)}else if(e instanceof W&&t instanceof ke){let r=t.incomingEdges.findIndex((e=>e===i));r>=0&&(this._edges.splice(this._edges.indexOf(i),1),t.incomingEdges.splice(r,1));let s=e.outputVars.findIndex((e=>e===t));s>=0&&e.outputVars.splice(s,1)}}deleteVariable(e){for(let t=e.incomingEdges.length-1;t>=0;t--){let i=e.incomingEdges[t],r=i.fromNode;this.disconnect(r,e,i),r.isIsolated()&&delete this._operators[r.type][r.id]}for(let t=e.outgoingEdges.length-1;t>=0;t--){let i=e.outgoingEdges[t],r=i.toNode;this.disconnect(e,r,i),r.isIsolated()&&delete this._operators[r.type][r.id]}delete this._variables[e.type][e.id]}deleteOperator(e){for(let t=e.outputVars.length-1;t>=0;t--){let i=e.outputVars[t],r=i.incomingEdges.find((t=>t.fromNode===e&&t.toNode===i));this.disconnect(e,i,r),i.isIsolated()&&delete this._variables[i.type][i.id]}for(let t=e.inputVars.length-1;t>=0;t--){let i=e.inputVars[t],r=i.outgoingEdges.find((t=>t.fromNode===i&&t.toNode===e));this.disconnect(i,e,r),i.isIsolated()&&delete this._variables[i.type][i.id]}delete this._operators[e.type][e.id]}addInteraction(e){}_dfs(e,t,i){if(e&&0!==e.outgoingEdges.length)for(let r of e.outgoingEdges)r.isDirected&&(t.push(r.toNode),this._dfs(r.toNode.outputVars[0],t.slice(),i));else i.push(t)}processChange(e,t,...i){let r=this.findVariable(e,i);if(r){for(let e of r.outgoingEdges)if(e.isDirected){let i=e.toNode;i.run();let r=i.outputVars;if(r.length>0){let e=r[0];switch(e.type){case Se.ITEMS:this.processChange(e.type,t,e.predicate,e.dataset);break;case Se.ATTRIBUTE:this.processChange(e.type,t,e.attribute,e.dataset);break;case Se.BOUNDS:this.processChange(e.type,t,e.element);break;case Se.CHANNEL:this.processChange(e.type,t,e.channel,e.element);break;case Se.PROPERTY:this.processChange(e.type,t,e.property,e.element);break;case Se.SCALE:case Se.ATTR_VALUE:this.processChange(e.type,t,e.encodings[0]);break;case Se.CONDITION_RESULT:this.processChange(e.type,t,e.result)}}}for(let e of r.undirectedEdges)t.push(e.operator)}else console.warn("Unable to find variables matching the described change: ",e,i)}findVariable(e,t){if(!(e in this._variables))return null;let i=Object.values(this._variables[e]);switch(e){case Se.CHANNEL:return i.find((e=>e.channel==t[0]&&Me(e.element)==Me(t[1])));case Se.PROPERTY:return i.find((e=>e.property==t[0]&&e.element==t[1]));case Se.AFFIXATION:return i.find((e=>e.affixation==t[0]));case Se.ATTRIBUTE:return i.find((e=>e.attribute==t[0]&&e.dataset==t[1]));case Se.ITEMS:return i.find((e=>e.dataset==t[1]));case Se.ATTR_VALUE:case Se.SCALE:return i.find((e=>e.encodings.includes(t[0])));case Se.EVT_CTX:return i.find((e=>e.context===t[0]));case Se.CONDITION_RESULT:return i.find((e=>e.result==t[0]));case Se.DATASCOPE:default:return t[0].classId?i.find((e=>Me(e.element)==Me(t[0]))):i.find((e=>e.element.id==t[0].id))}}findVariablesByElement(e){let t={};for(let i in this._variables){let r=Object.values(this._variables[i]).filter((t=>t.element&&Me(t.element)==Me(e)));r.length>0&&(t[i]=r)}return t}}function Wn(e){return!(!v(e)&&e.type!=Pt.Glyph||e.dataScope)||e.type===Pt.Collection&&e.firstChild.dataScope.numTuples>1}function Yn(e,t,i,r){let s=r.getAttributeType(i);if(s!=we.String&&s!=we.Date&&s!=we.Integer)throw new Error("Repeat only works on a string or date attribute: "+i+" is "+s);if(!function(e){if(Array.isArray(e)){if(1===e.length)return Wn(e[0]);for(let t of e)if(!v(t)||t.dataScope)return!1;return!0}return Wn(e)}(t))throw new Error("The "+t.type+" is not repeatable");return function(e,t,i,r){let s=r.getAttributeSummary(i).unique.map((e=>t.dataScope?t.dataScope.cross(i,e):new ue(r).cross(i,e)));s=s.filter((e=>!e.isEmpty()));let n=It(e);n.dataScope=t.dataScope?t.dataScope.clone():new ue(r),n.addChild(t),t._refBounds||(t._refBounds=t.bounds.clone());for(let e=1;e<s.length;e++){let e=Lt(t);n.addChild(e)}return n.children.forEach(((e,t)=>e.dataScope=s[t])),n}(e,t,i,r)}class Xn{constructor(e,t,i,r,s){this._id="encoding_"+Dt(),this._elem=e,this._channel=t,this._attribute=i,this._table=s.table,this._aggregator=r,this._includeZero=s.includeZero,this._flipScale=s.flipScale,this._mapping=s.mapping,this._preferredRangeExtent=s.rangeExtent,this._preferredRangeStart=s.rangeStart,this._preferredDomain=s.domain,this._scaleType=s.scaleType,this._colorScheme=s.scheme,this._forLegend=s.forLegend,this._transform=s.transform,s.shareScale&&(this._baseEnc=s.shareScale),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()}get id(){return this._id}initialize(){this._scales=[];let e=k(this._elem);if(this._elemGroups=[],"x"===this._channel||"y"===this._channel){let t=this._elem,i=M(t);if(i.layout&&i.layout.type==j.GRID){let e="x"===this._channel?i.layout.getElementsByCol(!0,t):i.layout.getElementsByRow(!0,t);for(let t of e)this._createScaleForElems(t)}else if("vertex"===this._elem.type&&(Ge(this._elem.parent)||Be(this._elem.parent))){let e=k(this._elem.parent).map((e=>S(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 i=t.parent.id;return e[i]||(e[i]=[]),e[i].push(t),e}),{}),i=Object.values(t);for(let e of i)this._createScaleForElems(e)}else this._createScaleForElems(e)}_createScaleForElems(e){this._elemGroups.push(e);var t=function(e){if(e.scaleType)return new Xt(e.scaleType);if("text"===e.channel)return new Xt("ordinal");switch(e.dataTable.getAttributeType(e.attribute)){case we.Boolean:break;case we.Date:return new Xt("time");case we.String:if("count"==e.aggregator)return new Xt("linear");if(e.channel.indexOf("Color")>=0){let t={};return t.scheme=e.colorScheme?e.colorScheme:"schemeCategory10",new Xt("ordinalColor",t)}return"src"===e.channel?new Xt("ordinal"):new Xt("point");default:return["strokeColor","fillColor","fillGradient"].indexOf(e.channel)>=0?e.mapping?new Xt("linear"):new Xt("sequentialColor",{scheme:e.colorScheme}):new Xt("linear")}}(this);this._scales.push(t);for(let i of e)this._elem2scale[i.id]=t}getScale(e){return this._elem2scale[e.id]}getAttrValue(e,i,r){let s=this.getScale(i).invert(e,r),n=this._attribute;if(this.dataTable.getAttributeType(n)===we.Date){let e=k(i).map((e=>e.dataScope.getAttrVal(n)));return e.sort(((e,t)=>e-t)),e[t.bisectLeft(e,s)]}return s}getChannelValue(e,t){return this.getScale(t).map(e)}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 this._table}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 domain(){if(1===this._scales.length)return this._scales[0].domain;throw new Error("AttributeEncoding: multiple scales exist, specify element to get domain.")}get rangeExtent(){if(1===this._scales.length)return this._scales[0].rangeExtent;throw new Error("AttributeEncoding: multiple scales exist, specify element to get rangeExtent.")}get scaleType(){return this._scaleType}set scaleType(e){this._scaleType=e}getDomain(e){return this.getScale(e).domain}set domain(e){this._preferredDomain=e;for(let t of this._scales)t._scale.domain(e);for(let e of this._refElements)e instanceof ai&&e.createTicksLabels({});this._elem.scene.onChange(Se.ATTR_VALUE,this)}set rangeExtent(e){for(let t of this._scales)t.rangeExtent=e;for(let e of this._refElements)e instanceof ai&&e.createTicksLabels({});this._elem.scene.onChange(Se.PROPERTY,tt.RANGE_EXTENT,this)}get transform(){return this._transform}set transform(e){this._transform=e,this._elem.scene.onChange(Se.PROPERTY,tt.TRANSFORM,this)}set includeZero(e){this._includeZero=e;for(let e of this._refElements)e instanceof ai&&e.createTicksLabels({});this._elem.scene.onChange(Se.PROPERTY,tt.INCLUDE_ZERO,this)}get includeZero(){return this._includeZero}set flipScale(e){this._flipScale=e,this._elem.scene.onChange(Se.PROPERTY,tt.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=[]}pan(e,t,i){let r=i||this._elem;r.scene.createMask(r);let s=this.getDomain(r),n=Math.min(...s),a=Math.max(...s),o="log"!==this._scales[0].type,l=this.getAttrValue(e,r,o)-this.getAttrValue(e+t,r,o);(o||n+l>0)&&(this.domain=[n+l,a+l])}zoom(e,t,i,r){let s=r||this._elem;s.scene.createMask(s);let n=this.getDomain(s),a=Math.min(...n),o=Math.max(...n),l="log"!==this._scales[0].type,h=this.getAttrValue(t,s,l),c=a-(h-a)*e*i,d=o+(o-h)*e*i;c!==d&&(!l&&c<=0||(this.domain=[c,d]))}}class qn{constructor(){this._vals={},this._vals.elements=[]}set(e,t){this._vals[e]=t}get(e){return this._vals[e]}clear(){this._vals={},this._vals.elements=[]}}Object.freeze({X_INT:"xInterval",Y_INT:"yInterval"});class Kn{constructor(e,t,i,r){this._respCompnt=t,this._responderEval=i,this._efxFn=r,this._evtCtx=e,this._evalResult=new Zt}get responderComponent(){return this._respCompnt}get eventContext(){return this._evtCtx}get evalResult(){return this._evalResult}get evalFunction(){return this._responderEval}get stylingFunction(){return this._efxFn}}class Zn extends ie{constructor(e,t,i,r,s){super(s),this._type=Pt.Gridlines,this._id=this._type+Dt(),this._attribute=t,this._channel=e,this._scale=i,this._elems=r,this._args=s,"strokeColor"in s||(this.styles.strokeColor="#ddd"),"opacity"in s||(this.styles.opacity=.5),this.updateValues(),this._lines=[]}updateValues(){"values"in this._args?this._values=this._args.values:this._scale?this._values=si(this._scale,this._channel,this._elems):this._values=this._elems.map((e=>e.dataScope.getAttrVal(this._attribute)))}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=d(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))),i=Math.min(...e),r=Math.max(...e),s=Math.min(...t),n=Math.max(...t);this._bounds=new c(i,s,r-i,n-s)}}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 $n extends H{constructor(e){super(),this.type=j.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:g.LEFT,this._vertCellAlignment="vertCellAlignment"in e&&e.vertCellAlignment?e.vertCellAlignment:g.BOTTOM,this._gap="gap"in e?e.gap:0}clone(){let e=new $n({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 Jn(e,t,i,r,s){let n=s.getAttributeType(i);if(n!=we.String&&n!=we.Date&&n!=we.Integer)throw new Error("Divide only works on a string or date attribute: "+i+" is "+n);if(!function(e){if([Pt.Line,Pt.Circle,Pt.Rect,Pt.Area,Pt.Ring,Pt.Pie,Pt.Path].indexOf(e.type)<0)return!1;if(e.type===Pt.Path&&(e.closed||!e.firstVertex.dataScope))return!1;if(e.dataScope){let t=k(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 Pt.Line:case Pt.Path:return;case Pt.Circle:return function(e,t,i,r,s){let n,a,o,l=k(t),h=i||Z.ANGULAR;if(h!=Z.ANGULAR&&h!=Z.RADIAL)throw new Error("Unknown orientation: "+h);h===Z.ANGULAR&&l.forEach((i=>{let l=i.dataScope?i.dataScope:new ue(s),h=s.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));h=h.filter((e=>!e.isEmpty()));let c=It(e);null==a&&(a=c.id),c._classId=a,c.dataScope=i.dataScope?i.dataScope:new ue(s);let d=i.parent;d.removeChild(i),delete e._itemMap[i.id];let u=360/h.length,_=90;for(let e=0;e<h.length;e++){let r=Ot({type:"arc",innerRadius:0,outerRadius:i.radius,x:i.x,y:i.y,startAngle:ce(_-u*(e+1)),endAngle:ce(_-u*e),strokeColor:i.strokeColor,fillColor:i.fillColor,strokeWidth:i.strokeWidth,opacity:i.opacity});o||(o=r.id),r.classId=o,r.dataScope=h[e],r._updateBounds(),r._refBounds=r.bounds.clone(),c.addChild(r),c._layout=new $n({orientation:Z.ANGULAR,direction:J.CLOCKWISE}),c._layout.group=c,d.removeChild(i),d.addChild(c),i===t&&(n=c)}}));return{newMark:n.children[0],collection:n}}(e,t,r,i,s);case Pt.Rect:return function(e,t,i,r,s){let n,a=k(t),o=i||Z.HORIZONTAL;if(o!=Z.HORIZONTAL&&o!=Z.VERTICAL)throw new Error("Unknown orientation: "+o);let l=s.getUniqueAttributeValues(r).map((e=>new ue(s).cross(r,e))),h={},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),h[e.id]=t}let d,u=Ot({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});u._classId=u.id;for(let i of a){let r=It(e);null==d&&(d=r.id),r._classId=d,r.dataScope=i.dataScope?i.dataScope:new ue(s);let a=i.parent;a.removeChild(i),delete e._itemMap[i.id];let l=h[i.id],c=i.bounds,_=c.left,p=c.top,g=o==Z.HORIZONTAL?c.width/l.length:c.width,f=o==Z.HORIZONTAL?c.height:c.height/l.length;for(let e=0;e<l.length;e++){let t=Lt(u);t.dataScope=l[e],t.resize(g,f),t._updateBounds(),t._refBounds=t.bounds.clone(),r.addChild(t)}a.addChild(r),r._layout=new $n({orientation:o,left:_,top:p}),r._layout.group=r,i==t&&(n=r)}return{newMark:n.children[0],collection:n}}(e,t,r,i,s);case Pt.Area:return function(e,t,i,r,s){let n,a=k(t),o=i||Z.HORIZONTAL;if(o!=Z.HORIZONTAL&&o!=Z.VERTICAL)throw new Error("Unknown orientation: "+o);let l,h=s.getUniqueAttributeValues(r).map((e=>new ue(s).cross(r,e))),c={},d=0;for(let e of a){let t=h;e.dataScope&&(t=h.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>d&&(d=t.length),c[e.id]=t}let u=Object.assign({},t.styles);u.vertices=t.vertices.map((e=>[e.x,e.y])),u.type="area",u.orientation=t.orientation,u.baseline=t.baseline;let _=Ot(u);if(_._classId=_.id,t.vertices)for(let e=0;e<t.vertices.length;e++)t.vertices[e].dataScope&&(_.vertices[e]._dataScope=t.vertices[e].dataScope.clone());for(let i of a){let r=It(e);null==l&&(l=r.id),r._classId=l,r.dataScope=i.dataScope?i.dataScope:new ue(s);let a=i.parent;a.removeChild(i),delete e._itemMap[i.id];let h=c[i.id],d=i.bounds,u=d.left,p=d.top,g=o==Z.HORIZONTAL?d.width/h.length:d.width,f=o==Z.HORIZONTAL?d.height:d.height/h.length;for(let e=0;e<h.length;e++){let t=Lt(_);t.dataScope=h[e],console.log(t.dataScope),t.resize(g,f),t._updateBounds(),t._refBounds=t.bounds.clone(),r.addChild(t);for(let e of t.vertices)e.dataScope?e.dataScope=t.dataScope.merge(e.dataScope):e.dataScope=t.dataScope}a.addChild(r),r._layout=new $n({orientation:o,left:u,top:p}),r._layout.group=r,i==t&&(n=r)}return{newMark:n.children[0],collection:n}}(e,t,r,i,s);case Pt.Ring:return function(e,t,i,r,s){let n,a,o,l=k(t),h=i||Z.ANGULAR;if(h!=Z.ANGULAR&&h!=Z.RADIAL)throw new Error("Unknown orientation: "+h);h===Z.ANGULAR&&l.forEach((i=>{let l=i.dataScope?i.dataScope:new ue(s),h=s.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));h=h.filter((e=>!e.isEmpty()));let c=It(e);null==a&&(a=c.id),c._classId=a,c.dataScope=i.dataScope?i.dataScope:new ue(s);let d=i.parent;d.removeChild(i),delete e._itemMap[i.id];let u=360/h.length,_=90;for(let e=0;e<h.length;e++){let r=Ot({type:"arc",innerRadius:i.innerRadius,outerRadius:i.outerRadius,x:i.x,y:i.y,startAngle:ce(_-u*(e+1)),endAngle:ce(_-u*e),strokeColor:i.strokeColor,fillColor:i.fillColor,strokeWidth:i.strokeWidth,opacity:i.opacity});o||(o=r.id),r.classId=o,r.dataScope=h[e],r._updateBounds(),r._refBounds=r.bounds.clone(),c.addChild(r),c._layout=new $n({orientation:Z.ANGULAR,direction:J.CLOCKWISE}),c._layout.group=c,d.removeChild(i),d.addChild(c),i===t&&(n=c)}}));return{newMark:n.children[0],collection:n}}(e,t,r,i,s);case Pt.Pie:case Pt.Arc:return function(e,t,i,r,s){let n,a,o,l=k(t),h=i||Z.ANGULAR;if(h!=Z.ANGULAR&&h!=Z.RADIAL)throw new Error("Unknown orientation: "+h);h===Z.ANGULAR||l.forEach((i=>{let l=i.dataScope?i.dataScope:new ue(s),h=s.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));h=h.filter((e=>!e.isEmpty()));let c=It(e);null==a&&(a=c.id),c._classId=a,c.dataScope=i.dataScope?i.dataScope:new ue(s);let d=i.parent;d.removeChild(i),delete e._itemMap[i.id];for(let e=0;e<h.length;e++){let r=Ot({type:"arc",innerRadius:i.innerRadius+e*(i.outerRadius-i.innerRadius)/h.length,outerRadius:i.innerRadius+(e+1)*(i.outerRadius-i.innerRadius)/h.length,x:i.x,y:i.y,startAngle:i.startAngle,endAngle:i.endAngle,strokeColor:i.strokeColor,fillColor:i.fillColor,strokeWidth:i.strokeWidth,opacity:i.opacity});o||(o=r.id),r.classId=o,r.dataScope=h[e],r._updateBounds(),r._refBounds=r.bounds.clone(),c.addChild(r),c._layout=new $n({orientation:Z.RADIAL}),c._layout.group=c,d.removeChild(i),d.addChild(c),i===t&&(n=c)}}));return{newMark:n.children[0],collection:n}}(e,t,r,i,s)}}function Qn(e,t,i,r){let s=r.getAttributeType(i);if(s!=we.String&&s!=we.Date&&s!=we.Integer)throw new Error("Repopulate only works on a string or date attribute: "+i+" is "+s);let n=k(t);for(let e of n){let t=r.getAttributeSummary(i).unique.map((t=>e.dataScope?e.dataScope.cross(i,t):new ue(r).cross(i,t)));t=t.filter((e=>!e.isEmpty()));let s=e.children.length-t.length,n=t.length-e.children.length;for(let t=0;t<s;t++)e.removeChildAt(e.children.length-1);let a=e._children.length;for(let t=0;t<n;t++){let i=Lt(e._children[t%a]);e.addChild(i)}e.children.forEach(((e,i)=>e.dataScope=t[i]))}}class ea{constructor(e,t){this._elem=e,this._base=t,this._id=ta(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 i={};i.elemAnchor="elementAnchor"in t?t.elementAnchor:"x"==e||"angle"==e?g.CENTER:g.MIDDLE,i.baseAnchor="baseAnchor"in t?t.baseAnchor:"x"==e||"angle"==e?g.CENTER:g.MIDDLE,i.offset="offset"in t?t.offset:0,"attribute"in t&&(this._attribute=t.attribute),this._channels[e]=i}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:Ft}}function ta(e,t){return(e.classId?e.classId:e.id)+":"+(t.classId?t.classId:t.id)}function ia(e,t,i,r){e.dataScope&&e.dataScope.dataTable.hasAttribute(t)?function(e,t,i,r){if(!e.dataScope.dataTable.hasAttribute(t))return void console.warn("Cannot order collection children by an non-existent attribute",t);let s;if(t===Ft)s=(e,i)=>parseInt(e.dataScope.getAttrVal(t).substring(1))-parseInt(i.dataScope.getAttrVal(t).substring(1));else{switch(e.children[0].dataScope.getAttributeType(t)){case we.Date:break;case we.Number:case we.Integer:s=(e,i)=>e.dataScope.aggregateNumericalAttribute(t)-i.dataScope.aggregateNumericalAttribute(t);break;case we.String:s=r?(e,i)=>r.indexOf(e.dataScope.getAttrVal(t))-r.indexOf(i.dataScope.getAttrVal(t)):(e,i)=>e.dataScope.getAttrVal(t)<i.dataScope.getAttrVal(t)?-1:1}}e.children.sort(s),i&&e.children.reverse()}(e,t,i,r):function(e,t,i){let r;switch(t){case"x":case"y":case"width":case"height":r=(e,i)=>e.bounds[t]-i.bounds[t];break;default:r=(e,i)=>e[t]-i[t]}e._children.sort(r),i&&e.children.reverse()}(e,t,i),e._sortBy={property:t,descending:i,vals:r}}function ra(e,t,i,r){e.vertices[0].dataScope&&e.vertices[0].dataScope.dataTable.hasAttribute(t)?function(e,t,i,r){let s;if(t===Ft)s=(e,i)=>parseInt(e.dataScope.getAttrVal(t).substring(1))-parseInt(i.dataScope.getAttrVal(t).substring(1));else{switch(e.vertices[0].dataScope.getAttributeType(t)){case we.Date:break;case we.Number:case we.Integer:s=(e,i)=>e.dataScope.aggregateNumericalAttribute(t)-i.dataScope.aggregateNumericalAttribute(t);break;case we.String:s=r?(e,i)=>r.indexOf(e.dataScope.getAttrVal(t))-r.indexOf(i.dataScope.getAttrVal(t)):(e,i)=>e.dataScope.getAttrVal(t)<i.dataScope.getAttrVal(t)?-1:1}}e.vertices.sort(s),i&&e.vertices.reverse()}(e,t,i,r):function(e,t,i){let r=(e,i)=>e[t]-i[t];e.vertices.sort(r),i&&e.vertices.reverse()}(e,t,i),e._sortBy={property:t,descending:i,vals:r}}class sa extends H{constructor(e){super(),this.type=j.GRID,this._numCols=e.numCols,this._numRows=e.numRows,this._start="start"in e?e.start:K.TopLeft,this._direction="direction"in e?e.direction:q.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&&U("h",e.horzCellAlignment)?e.horzCellAlignment:g.LEFT,this._cellVertAlignment="vertCellAlignment"in e&&U("v",e.vertCellAlignment)?e.vertCellAlignment:g.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}set numCols(e){this._numCols=e}set numRows(e){this._numRows=e}get numRows(){return this._numRows?this._numRows:this._numCols?Math.ceil(this.group.children.length/this._numCols):0}clone(){let e=new sa({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 i=[],r=this.group.children;for(let t=0;t<this.numRows;t++){let s=this._grid[t].filter((e=>null!=e)).map((e=>r[e]));if(e){let e=[];for(let t of s)e=e.concat(G(t));i.push(e)}else i.push(s)}return t&&(i=this._filterElementsByExample(i,t)),i}getElementsByCol(e,t){let i=[],r=this.group.children,s=this._grid;for(let t=0;t<this.numCols;t++){let n=s.map((e=>e[t])).filter((e=>null!=e)).map((e=>r[e]));if(e){let e=[];for(let t of n)e=e.concat(G(t));i.push(e)}else i.push(n)}return t&&(i=this._filterElementsByExample(i,t)),i}getElementsByCell(e,t){let i=[],r=this.group.children;for(let t=0;t<r.length;t++)if(e){let e=G(r[t]);i.push(e)}else i.push(r[t]);return t&&(i=this._filterElementsByExample(i,t)),i}_filterElementsByExample(e,t){let i;return"vertex"===t.type?(i=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),i=i.map((e=>S(t,e)))):"segment"===t.type?(i=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),i=i.map((e=>O(t,e)))):i=e.map((e=>e.filter((e=>e.classId===t.classId)))),i}getIndex(e){let t=e;for(;t&&t.parent!==this.group;)t=t.parent;return this.group.children.indexOf(t)}getRowCol(e){let t,i;switch(this._direction){case q.RowFirst:t=Math.floor(e/this.numCols),i=e%this.numCols;break;case q.ColumnFirst:t=e%this.numRows,i=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")&&(i=this.numCols-1-i),{row:t,col:i}}get startCorner(){return this._start}set startCorner(e){this._start=e}get direction(){return this._direction}set direction(e){this._direction=e}}class na extends bt{constructor(e,t){super(),this._type=Pt.Axis,this._id=this._type+Dt(),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:Z.VERTICAL,this._numberFormat=t.numberFormat?t.numberFormat:""}get attribute(){return this._enc.attribute}get channel(){return this._enc.channel}get attributeType(){return Gt(this._enc.element).getFieldType(this.attribute)}get orientation(){return this._orientation}get textColor(){return this._textColor}}class aa extends na{constructor(e,t){super(e,t),"numCols"in t||"numRows"in t?(this._numCols=t.numCols,this._numRows=t.numRows):this._orientation===Z.VERTICAL?this._numCols=1:this._numRows=1,this._initialize()}_initialize(){let e=this._enc.element.scene,t=this._enc.attribute,i=this._enc.scales[0],r=new Bt(i.domain.map((e=>({category:e,value:i.map(e)})))),s=r.getUniqueAttributeValues("category").sort(((e,t)=>t.length-e.length))[0],n=this._enc.element,a=n instanceof ie&&n.closed&&"strokeColor"!==this._enc.channel?n.strokeWidth:0;if(this._orientation===Z.VERTICAL){let i=0;this._showTitle&&(this.addChild(new Tt({fillColor:this._textColor,fontSize:this._fontSize,text:t,x:this._x,y:this._y,anchor:["left","top"]})),i=parseFloat(this._fontSize)+5);let o=e.mark("rect",{top:this._y+2+i,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:n.strokeColor,opacity:n.opacity}),l=e.mark("text",{text:s,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+20,y:this._y+i+12+a,anchor:["left","bottom"]}),h=e.glyph(o,l),c=e.repeat(h,r);e.encode(l,{channel:"text",attribute:"category",forLegend:!0}),e.encode(o,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),c.layout=new sa({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:n.strokeColor,opacity:n.opacity}),i=e.mark("text",{text:s,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+15,y:this._y,anchor:["left","top"]}),o=e.glyph(t,i),l=e.repeat(o,r);e.encode(i,{channel:"text",attribute:"category",forLegend:!0}),e.encode(t,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),l.layout=new sa({numCols:this._numCols,numRows:this._numRows,colGap:15}),this.addChild(l)}}}class oa extends na{constructor(e,t){super(e,t),this._initialize()}_initialize(){let e,i,r,s=this._enc.element.scene,n=this._enc.attribute;if(this._orientation==Z.VERTICAL?(e=15,i=300):(e=300,i=15),this._showTitle){let t=s.mark("text",{fillColor:this._textColor,text:n,x:this._x+e/2,y:this._y,anchor:["center","middle"]});this.addChild(t),r=20}else r=0;let a,o=s.mark("rect",{top:this._y+r,left:this._x,width:e,height:i,strokeWidth:0,opacity:this._enc.element.opacity}),l=Object.values(this._enc.attrValues),h=[Math.min(...l),Math.max(...l)],c=this._enc.mapping,d=[],u=[],_=t.format(this._numberFormat);if(c){let t=Object.keys(c).map((e=>parseFloat(e))).sort(((e,t)=>e-t));this._orientation==Z.VERTICAL?(a=new X({x1:0,y1:100,x2:0,y2:0}),t.forEach((t=>{let n=(t-h[0])/(h[1]-h[0]);a.addStop(100*n,c[t],1);let o=s.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+i-n*i+r,y2:this._y+i-n*i+r,strokeColor:this._strokeColor});u.push(o);let l=s.mark("text",{fillColor:this._textColor,text:this._numberFormat?_(t):t.toFixed(0),x:this._x+e+5+5,y:this._y+i-n*i+r,anchor:["left","middle"]});d.push(l)}))):(a=new X({x1:0,y1:0,x2:100,y2:0}),t.forEach((t=>{let n=(t-h[0])/(h[1]-h[0]);a.addStop(100*n,c[t],1);let o=s.mark("line",{x1:this._x+n*e,x2:this._x+n*e,y1:this._y+20-5+r,y2:this._y+i+5+r,strokeColor:this._strokeColor});u.push(o);let l=s.mark("text",{fillColor:this._textColor,text:this._numberFormat?_(t):t.toFixed(0),x:this._x+n*e,y:this._y+i+5+r,anchor:["center","top"]});d.push(l)})))}else{let t=this._enc.scales[0].domain,o=Gt(this._enc.element),l=o.getAttributeType(n),h=[],c=l===we.Date?o.getUniqueFieldValues(n):[...new Set(Object.values(this._enc.attrValues))];if(c.length<=10)h=c,h.sort(((e,t)=>e-t));else if(l===we.Date){c.sort(((e,t)=>e-t));for(let e=0;e<c.length;e+=Math.ceil(c.length/10))h.push(c[e])}else{let e=(t[1]-t[0])/9;for(let i=0;i<10;i++)h.push(t[0]+i*e)}let p=0,g=(h[h.length-1]-h[0])/h.length;for(;g<1;)g*=10,p++;h=h.map((e=>e.toFixed(p))),this._orientation==Z.VERTICAL?(a=new X({x1:0,y1:100,x2:0,y2:0}),h.forEach((h=>{let c=(h-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scales[0].map(h),1);let p=s.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+i-c*i+r,y2:this._y+i-c*i+r,strokeColor:this._strokeColor});u.push(p);let g=s.mark("text",{fillColor:this._textColor,text:l===we.Date?o.getRawValue(n,h):this._numberFormat?_(h):h,x:this._x+e+5+5,y:this._y+i-c*i+r,anchor:["left","middle"]});d.push(g)}))):(a=new X({x1:0,y1:0,x2:100,y2:0}),h.forEach((h=>{let c=(h-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scale.map(h),1);let _=s.mark("line",{x1:this._x+c*e,x2:this._x+c*e,y1:this._y+i+r,y2:this._y+i+5+r,strokeColor:this._strokeColor});u.push(_);let p=s.mark("text",{fillColor:this._textColor,text:l===we.Date?o.getRawValue(n,h):h,x:this._x+c*e,y:this._y+i+5+r,anchor:["center","top"]});d.push(p)})))}o.styles.fillColor=a,this.addChild(o);for(let e of d)this.addChild(e);for(let e of u)this.addChild(e)}}class la extends bt{constructor(e){super(),this._type=Pt.Composite,this._id=e&&e.id?e.id:this._type+Dt()}addChild(e){let t=e.parent;super.addChild(e);let i=P(e)._depGraph;t&<(t,e,i),ht(this,e,i)}}class ha{constructor(e,t,i){this._elems=e,this._channel=t,this._anchor=i}get elements(){return this._elems}get channel(){return this._channel}get anchor(){return this._anchor}}class ca extends H{constructor(e){super(),this.type=j.STRATA,this._direction=e.direction,this._gap="gap"in e?e.gap:0}clone(){return new ca({direction:this._direction,gap:this._gap})}}function da(e,t,i,r,s,n){switch(t.type){case Pt.Circle:case Pt.Ring:return function(e,t,i,r,s,n){let a,o=i||Q.OUTWARD,l=s||50;if(o!==Q.INWARD&&o!==Q.OUTWARD)throw"Unknown direction to stratify";let h,c=k(t,e),d=Array.isArray(n)?n:[n];if(r){let i=It(e);i.dataScope=void 0,null==h&&(h=i.id),i._classId=h;let r=c.map((e=>d[0].getNode(e.dataScope.getAttrVal(xe))));ua(c,r,d[0],i,t.classId?t.classId:t.id,400,350,o,l),a=i}else c.forEach(((i,r)=>{let s=It(e);s.dataScope=void 0,null==h&&(h=s.id),s._classId=h;let n=i.parent;_a(i,t.id,o,l,d[r],d[r].getRoot(),s,e,!0),s._layout=new ca({direction:o}),s._layout.group=s,n.addChild(s),i===t&&(a=s)}));return a}(e,t,i,r,s,n);case Pt.Rect:return function(e,t,i,r,s,n){let a,o,l=i||$.Top2Bottom,h=s||50;if(!Object.values($).includes(l))throw"Unknown direction to stratify";return k(t).forEach((i=>{let r=It(e);r.dataScope=void 0,null==o&&(o=r.id),r._classId=o;let s=i.parent;pa(i,t.id,l,h,n,n.getRoot(),r,e,!0),r._layout=new ca({direction:l}),r._layout.group=r,s.addChild(r),i===t&&(a=r)})),a}(e,t,i,0,s,n)}}function ua(e,t,i,r,s,n,a,o,l){let h=t.map((e=>i.getParent(e))).filter(((e,t,i)=>i.findIndex((t=>t[xe]===e[xe]))===t));if(h=h.filter((e=>e!==i.getRoot())),0===h.length)return;let c=[];for(let t of h){let h,d,u,_=e.filter((e=>i.getParent(i.getNode(e.dataScope.getAttrVal(xe)))===t));if(_[0].type===Pt.Circle){let e=_.map((e=>A(n,a,e.bounds.x,e.bounds.y)-e.radius)),t=_.map((e=>A(n,a,e.bounds.x,e.bounds.y)+e.radius));u=o===Q.OUTWARD?Math.max(...t):Math.min(...e)-l;let i=_.map((e=>de(e.bounds.x,e.bounds.y,n,a))),r=_.map((e=>de(n+A(n,a,e.bounds.x,e.bounds.y),a-e.radius,n,a))),s=i.map(((e,t)=>e-r[t])),c=i.map(((e,t)=>e+r[t])),p=s.concat(c);h=Math.min(...p),d=Math.max(...p)}else _[0].type===Pt.Arc&&(h=360,d=-360,_.forEach((e=>{let t=e.startAngle,i=e.endAngle;i<t&&(i+=360),h=Math.min(h,t),d=Math.max(d,i)})),h=ce(h),d=ce(d),u=o===Q.OUTWARD?Math.max(..._.map((e=>e.outerRadius))):Math.min(..._.map((e=>e.innerRadius)))-l);let p=Ot({type:"arc",innerRadius:u,outerRadius:u+l,x:n,y:a,startAngle:ce(h),endAngle:ce(d),strokeColor:e[0].strokeColor,fillColor:e[0].fillColor,strokeWidth:e[0].strokeWidth,opacity:e[0].opacity});p._updateBounds(),p.dataScope=i.getNodeDataScope(t),p._classId=s,r.addChild(p),c.push(p)}ua(c,h,i,r,s,n,a,o,l)}function _a(e,t,i,r,s,n,a,o,l){l&&(e.dataScope=s.getNodeDataScope(n),e._classId=t);let h=s.getChildren(n);if(0===h.length)return;let c=e.type===Pt.Circle||e.type===Pt.Ring?60:e.startAngle,d=(e.type===Pt.Circle||e.type===Pt.Ring?360:e.angle)/h.length;for(let n=0;n<h.length;n++){let o,l;l=i===Q.OUTWARD?e.type===Pt.Circle?e.radius:e.outerRadius:e.type===Pt.Circle?e.radius-r:e.innerRadius-r,o=Ot(360===d?{type:"ring",innerRadius:l,outerRadius:l+r,x:e.x,y:e.y,strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}:{type:"arc",innerRadius:l,outerRadius:l+r,x:e.x,y:e.y,startAngle:ce(c+d*n),endAngle:ce(c+d*(n+1)),strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}),o._updateBounds(),o.dataScope=s.getNodeDataScope(h[n]),o._classId=t+"_strata",a.addChild(o),_a(o,t,i,r,s,h[n],a)}}function pa(e,t,i,r,s,n,a,o,l){l&&(e.dataScope=s.getNodeDataScope(n),e._classId=t,a.addChild(e));let h,c,d,u=s.getChildren(n);if(0!==u.length){switch(i){case $.Top2Bottom:case $.Bottom2Top:case $.Left2Right:case $.Right2Left:}h=e.left,c=e.bottom,d=e.width/u.length;for(let n=0;n<u.length;n++){let o=Lt(e);ze(o,h-o.left,c-o.top),o.resize(d,r),o._updateBounds(),h+=d,o.dataScope=s.getNodeDataScope(u[n]),o._classId=t,a.addChild(o),pa(o,t,i,r,s,u[n],a)}}}class ga{constructor(e,t,i,r){this._id=e,this._event=i,this._target=t,this._evtCtx=new qn,this._cumulative=r}get id(){return this._id}get event(){return this._event}get eventContext(){return this._evtCtx}get target(){return this._target}isCumulative(){return this._cumulative}isMouseDriven(){return["brush","brushX","brushY","click","hover"].includes(this._event)}isKeyboardDriven(){return["keydown","keyup"].includes(this._event)}isWidgetDriven(){return["change","input"].includes(this._event)}}class fa extends bt{constructor(e){super(),this._itemMap={},this._peerIndex=new Map,this._type=Pt.Scene,this._id=e&&e.id?e.id:this._type+Dt(),e&&e.fillColor&&(this.fillColor=e.fillColor),this._encodings={},this._relations=[],this._triggers={},this._condEncodings={},this._depGraph=new Un}get depGraph(){return this._depGraph}get interactionTriggers(){return this._triggers}buildPeerIndex(){this._peerIndex=new Map;let e=this._peerIndex;z(this,(t=>{t.classId&&(e.has(t.classId)||e.set(t.classId,[]),e.get(t.classId).push(t))}))}mark(e,t){if(Object.values(Vt).indexOf(e)<0)throw new Error("Mascot does not allow directly creating a "+e);let i=void 0===t?{}:t;i.type=e;let r=Ot(i);return null!==r&&(r._classId=r.id,this.addChild(r),this._itemMap[r.id]=r,it(r,this._depGraph),ht(this,r,this._depGraph)),r}glyph(...e){let t=[];for(let i of e)t.push([i.parent,i]);let i=Nt(e);if(null!==i){i._classId=i.id,this.addChild(i),this._itemMap[i.id]=i;for(let e of t)lt(e[0],e[1],this._depGraph);ct(i,this._depGraph),ht(this,i,this._depGraph)}return i}composite(){let e=new la;return null!==e&&(e._classId=e.id,this.addChild(e),this._itemMap[e.id]=e,ot(e,this._depGraph),ht(this,e,this._depGraph)),e}attach(e,t){if(e.type==Pt.Glyph)for(let t of e.children)t._refBounds||(t._refBounds=t.bounds.clone());e.dataScope=new ue(t)}repeat(e,t,i){let r=i||{};if(r.attribute=r.attribute||Ft,console.log("------ repeat by",r.attribute," ----"),function(e,t,i){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 ge||t instanceof ye){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 Bt&&ve(i.attribute,t);if(i.layout&&!(i.layout instanceof H))throw new Error("Invalid layout: "+i.layout)}(e,t,r),t instanceof ge||t instanceof ye){let i=e[0].parent,r=e[1].parent,[s,n]=function(e,t,i,r){let s=r.nodeTable.getAttributeSummary(xe).unique.map((e=>t.dataScope?t.dataScope.cross(xe,e):new ue(r.nodeTable).cross(xe,e))),n=It(e),a=It(e),o={};a.dataScope=t.dataScope?t.dataScope.clone():new ue(r.nodeTable),a.addChild(t);for(let e=1;e<s.length;e++){let e=Lt(t);a.addChild(e)}a.children.forEach(((e,t)=>{e.dataScope=s[t],e.links=[],o[e.dataScope.getAttrVal(xe)]=e}));let l=r.linkTable.getAttributeSummary(Ft).unique.map((e=>i.dataScope?i.dataScope.cross(Ft,e):new ue(r.linkTable).cross(Ft,e)));n.dataScope=i.dataScope?i.dataScope.clone():new ue(r.linkTable),n.addChild(i);for(let e=1;e<l.length;e++){let e=Lt(i);n.addChild(e)}n.children.forEach(((e,t)=>e.dataScope=l[t]));let h=r instanceof ge?"parent":"source",c=r instanceof ge?"child":"target";for(let e of n.children){let t=e.dataScope.getAttrVal(h),i=e.dataScope.getAttrVal(c),r=o[t],s=o[i];e.source=r,e.target=s,r.links.push(e),s.links.push(e)}return[a,n]}(this,e[0],e[1],t);return this.buildPeerIndex(),lt(i,e[0],this._depGraph),lt(r,e[1],this._depGraph),at(s,this._depGraph),at(n,this._depGraph),ht(s,e[0],this._depGraph),ht(s.parent,s,this._depGraph),ht(n,e[1],this._depGraph),ht(n.parent,n,this._depGraph),[s,n]}if(t instanceof Bt){let i=e.parent,s=Yn(this,e,r.attribute,t);return this.buildPeerIndex(),lt(i,e,this._depGraph),at(s,this._depGraph),ht(s,e,this._depGraph),ht(s.parent,s,this._depGraph),r.layout&&(s.layout=r.layout),s}}divide(e,t,i){let r=i||{};if(r.attribute=r.attribute||Ft,console.log("------ divide by",r.attribute," ----"),function(e,t,i){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 Bt&&ve(i.attribute,t),i.layout&&!(i.layout instanceof H))throw new Error("Invalid layout: "+i.layout)}(e,t,r),t instanceof ge||t instanceof ye)throw"Not implemented";if(t instanceof Bt){let{newMark:i,collection:s}=Jn(this,e,r.attribute,r.orientation,t);return this.buildPeerIndex(),rt(e,this._depGraph),it(i,this._depGraph),at(s,this._depGraph),ht(s,i,this._depGraph),s.parent.type!==Pt.Scene&&ht(s.parent,s,this._depGraph),this.onChange(Se.CHANNEL,"width",i),{newMark:i,collection:s}}}densify(e,t,i){let r=i||{};if(r.attribute=r.attribute||Ft,console.log("------ densify by",r.attribute," ----"),function(e,t,i){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 Bt&&ve(i.attribute,t)}(e,t,r),t instanceof ge||t instanceof ye)throw"Not implemented";if(t instanceof Bt){let i=Te(0,e,r.attribute,r.orientation,t);return this.buildPeerIndex(),rt(e,this._depGraph),it(i,this._depGraph),i.parent.type!==Pt.Scene&&ht(i.parent,i,this._depGraph),this.onChange(Se.CHANNEL,"width",i),i}}stratify(e,t,i){if(!(t instanceof ge||Array.isArray(t)&&t.every((e=>e instanceof ge))))throw"Cannot stratify on a non-tree dataset";if(![Pt.Circle,Pt.Rect,Pt.Ring].includes(e.type))throw"Cannot stratify elements that are not rects, circles, or rings";let r=i||{},s=r.direction,n=r.size,a=e.parent,o=da(this,e,s,r.startFromLeaf,n,t);return this.buildPeerIndex(),lt(a,e,this._depGraph),at(o,this._depGraph),o.children.length>0&&ht(o,o.firstChild,this._depGraph),ht(o.parent,o,this._depGraph),o}repopulate(e,t,i){e.dataScope=void 0;let r=e;for(let e in i){Qn(0,r,i[e],t);let s=Le(r.children[0],!0);for(let e of s){Ne(e,this),st(e,this._depGraph);for(let t of e.refElements)ni(t,this),nt(t,this._depGraph);e.clearRefElements()}let n=k(r);for(let e of n)if(e.layout){for(let t of e.layout.refElements)ni(t,this),nt(t,this._depGraph);e.layout.clearRefElements()}r=r.children[0]}e.dataScope=new ue(t),this.buildPeerIndex(),this.onChange(Se.CHANNEL,"width",e.children[0])}classify(e,t){let i=t||{};console.log("------ classify by",i.attribute," ----"),function(e,t,i,r){let s=k(t);for(let t of s){let s,n={},a=t.children;for(let e of a){let t=e.dataScope.getAttrVal(i);t in n||(n[t]=[]),n[t].push(e)}let o=Gt(a[0]);for(let a in n){let l=It(e);t.addChild(l),void 0===s&&(s=l.id),l._classId=s,l.dataScope=t.dataScope?t.dataScope.cross(i,a):new ue(o).cross(i,a);for(let e of n[a])l.addChild(e);r&&(l._layout=r.clone(),l._layout.group=l)}}}(this,e,i.attribute,i.layout),this.buildPeerIndex(),lt(e,e.firstChild.firstChild,this._depGraph),at(e.firstChild,this._depGraph),ht(e.firstChild,e.firstChild.firstChild,this._depGraph),ht(e,e.firstChild,this._depGraph),this.onChange(Se.CHANNEL,"width",e.firstChild.firstChild)}affix(e,t,i,r){e.dataScope.dataTable!==e.dataScope.dataTable&&console.warn("Affix: elements and base elements are not created from the same table");let s=ta(e,t),n=this._relations.find((e=>e.id===s));n||(n=new ea(e,t),this._relations.push(n)),n.addChannel(i,r||{}),function(e,t){let i=t.getVariable(Se.AFFIXATION,e),r=t.getOutgoingDataflowOperator(Y.AFFIXER,i);t.connect(i,r);for(let i of e.channels){let s=t.getVariable(Se.CHANNEL,i,e.element),n=t.getVariable(Se.CHANNEL,i,e.base);t.connect(n,r),t.connect(r,s)}r.run()}(n,this._depGraph)}align(e,t,i){let r=new ha(e,t,i);!function(e,t){let i=t.createMultiWayDependency(Y.ALIGNER),r=t.getVariable(Se.ALIGNMENT,e);t.connect(r,i);for(let r of e.elements){let s=t.getVariable(Se.CHANNEL,e.channel,r);t.connect(s,i)}i.run()}(r,this._depGraph),this._relations.push(r)}encode(e,t){if("rowId"===t.attribute&&(t.attribute=Ft),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 i=Gt(e);if(i.tree){let e=t.attribute;if(e.indexOf(".")>0&&!i.tree.nodeTable.hasAttribute(e.split(".")[1]))throw new Error("Data attribute does not exist in the data table")}else if(!i||!i.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===Pt.Area?t=e.parent:e.type===Pt.Area&&(t=e),t&&!t._refBounds&&k(t).forEach((e=>e._refBounds=e.bounds.clone()))}(e);let i=t.aggregator?t.aggregator:"sum";console.log("------ encode",t.channel,t.attribute," --");let r=Pe(e,t.channel);if(r&&t.attribute!==r.attribute){Ne(r,this),st(r,this._depGraph);for(let e of r.refElements)ni(e,this),nt(e,this._depGraph);r.clearRefElements()}t.table=Gt(e);let s=new Xn(e,t.channel,t.attribute,i,t);return this._addAttributeEncoding(s),gt(s,this._depGraph,t.shareScale),t.shareScale?this.onChange(Se.ATTR_VALUE,s):this.onChange(Se.CHANNEL,t.channel,e),s}connect(e,t){let i={};e.forEach((e=>i[e.dataScope.getAttrVal(xe)]=e));let r=t[0].dataScope.dataTable,s=r.tree?"parent":"source",n=r.tree?"child":"target";for(let t of e)t.links=[];for(let e of t){let t=e.dataScope.getAttrVal(s),r=e.dataScope.getAttrVal(n),a=i[t],o=i[r];e.source=a,e.target=o,a.links.push(e),o.links.push(e)}pt(e.find((e=>e.links.length>0)),this._depGraph),this.onChange(Se.CHANNEL,"x",e[0])}_addAttributeEncoding(e){let t=Me(e.element);t in this._encodings||(this._encodings[t]={}),this._encodings[t][e.channel]=e}activate(e,t,i,r,s){!function(e,t,i,r,s){if(!("event"in e)||!("target"in e))throw"Target and event must be specified in the trigger";if(!("component"in i))throw"Responder component must be specified";if(Array.isArray(r)){if(!r.every((e=>"function"==typeof e)))throw"Styling rules must be a function";if(s&&!Array.isArray(s))throw"An array of effect setters must be accompanied by an array of animation effects";if(s&&Array.isArray(s)&&s.length!==r.length)throw"the length of effect setters is not equal to the length of animation effects"}else if("function"!=typeof r)throw"Styling rules must be a function"}(e,0,t,r,s);let n=e.event,a=function(e){return["string"==typeof e.target?e.target:e.target.classId?e.target.classId:e.target.id,e.event].join("-")}(e);n=0===n.indexOf("brush")?"brush":0===n.indexOf("drag")?"drag":n,n in this._triggers||(this._triggers[n]={}),a in this._triggers[n]||(this._triggers[n][a]=new ga(a,e.target,e.event,e.cumulative));let o=this._triggers[n][a].eventContext,l=new Kn(o,t.component,i,r);return a in this._condEncodings||(this._condEncodings[a]=[]),this._condEncodings[a].push(l),function(e,t,i,r){let s=t.responderComponent,n=r.getVariable(Se.EVT_CTX,e),a=i.properties?i.properties:i.channels;if(t.evalFunction){let e=r.getVariable(Se.CONDITION_RESULT,t.evalResult,t),i=r.findIncomingDataflowOperator(Y.TARGET_EVALUATOR,e);i||(i=r.createOneWayDependency(Y.TARGET_EVALUATOR,t.evalFunction)),r.connect(n,i),r.connect(i,e);for(let t of a){let i=Array.isArray(s)?s:[s];for(let s of i){let i=r.getVariable(Se.CHANNEL,t,s),n=i.incomingDataflow;if(n&&n instanceof $e&&n.outputVar.channel===t)r.connect(e,n);else if(!n){let n=r.createOneWayDependency(Y.ENCODER);r.connect(e,n),r.connect(n,i),n.storeValues(s,t)}}}}else for(let e of a){Object.values(Ie).includes(e)?r.getVariable(Se.CHANNEL,e,s):r.getVariable(Se.PROPERTY,Qe(e),s);let i=r.createOneWayDependency(Y.TARGET_UPDATER,t.stylingFunction,s);r.connect(n,i)}}(o,l,t,this._depGraph),this._triggers[n][a]}onChange(e,...t){if(Object.values(Se).indexOf(e)<0)throw new Error("Unknown Variable Type: "+e);let i=[];this._depGraph.processChange(e,i,...t);for(let e of i)e.run()}gridlines(e,t,i){let r=i||{},s=r.element?Pe(r.element,e):Ve(t,e,this);if(s){s.attribute!==t&&console.warn("Cannot create a "+e+" axis for "+t);let i=[];if("x"==e)for(let e of s.scales)i.push({scale:e,elems:s.getElements(e)});else if("width"==e){let e=M(s.element),t=s.scales[0];if(e.layout&&e.layout.type==j.GRID&&e.layout.numCols>1){let r=e.layout.getElementsByCol(!0);for(let e of r)i.push({scale:t,elems:e})}else i.push({scale:s.scales[0],elems:s.getElements(s.scales[0])})}else if("y"==e){let e=M(s.element);if(e.layout&&e.layout.type==j.GRID&&e.layout.numRows>1){let t=e.layout.getElementsByRow(!0,s.element);for(let e of t)i.push({scale:s.getScale(e[0]),elems:e})}else i.push({scale:s.scales[0],elems:s.getElements(s.scales[0])})}else if("height"==e){let e=M(s.element),t=s.scales[0];if(e.layout&&e.layout.type==j.GRID&&e.layout.numRows>1){let r=e.layout.getElementsByRow(!0,s.element);for(let e of r)i.push({scale:t,elems:e})}else i.push({scale:t,elems:s.getElements(t)})}else if("radialDistance"==e){let e=r.element?r.element:s.element;i.push({scale:s.scales[0],elems:k(e,e.parent)})}for(let e of i){let t=new Zn(s.channel,s.attribute,e.scale,e.elems,r);this.addChild(t),s.addRefElement(t),mt(t,this._depGraph),ht(this,t,this._depGraph)}}else{let i=r.element?r.element:N(this,t);if(!i)return void console.warn("Cannot create "+e+" gridlines for "+t);let s=L(i.parent);if(!s.layout)return void console.warn("Cannot create "+e+" gridlines for "+t);let n=k(s);for(let i of n){let s=[];i.layout.type==j.GRID&&i.layout.numRows>1&&"x"==e?s=i.layout.getElementsByRow():i.layout.type==j.GRID&&i.layout.numCols>1&&"y"==e?s=i.layout.getElementsByCol():s.push(i.children);for(let n of s){let s=new Zn(e,t,null,n,r);this.addChild(s),i.layout.addRefElement(s),mt(s,this._depGraph),ht(this,s,this._depGraph)}}}}axis(e,t,i){let r=i||{},s="rowId"==t?Ft:t,n=[],a=r.element?Pe(r.element,e):Ve(s,e,this);if(a){a.attribute!==s&&console.warn("Cannot create a "+e+" axis for "+s);let t=[];if("x"==e||"width"==e){let e=M(r.element?r.element:a.element);if(e.layout&&e.layout.type==j.GRID&&e.layout.numCols>1){let i=e.layout.getElementsByCell(!0,a.element);for(let e of i)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=M(r.element?r.element:a.element);if(e.layout&&e.layout.type==j.GRID&&e.layout.numRows>1){let i=e.layout.getElementsByCell(!0,a.element);for(let e of i)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else if("radialDistance"==e){let e=r.element?r.element:a.element;t.push({scale:a.scales[0],elems:k(e,e.parent)})}for(let e of t){let t=new ai(a,e.scale,e.elems,r);this.addChild(t),n.push(t),a.addRefElement(t),yt(t,this._depGraph),ht(this,t,this._depGraph),this.onChange(Se.PROPERTY,tt.AXIS_PATH_POSITION,t)}}else{let t=r.element?r.element:N(this,s);if(!t)return void console.warn("Cannot create a "+e+" axis for "+s);let i=L(t.parent);if(!i.layout)return void console.warn("Cannot create a "+e+" axis for "+s);let a=k(i);for(let t of a){let i=[];t.layout.type==j.GRID&&t.layout.numRows>1&&"x"==e?i=t.layout.getElementsByRow():t.layout.type==j.GRID&&t.layout.numCols>1&&"y"==e?i=t.layout.getElementsByCol():i.push(t.children);for(let a of i){let i=new oi(a.slice(),e,s,r);this.addChild(i),n.push(i),t.layout.addRefElement(i),ft(i,this._depGraph),ht(this,i,this._depGraph),this.onChange(Se.PROPERTY,tt.AXIS_PATH_POSITION,i)}}}return n.length>1?n:n[0]}legend(e,t,i){let r=i||{},s="rowId"==t?Ft:t,n=r.element?Pe(r.element,e):Ve(s,e,this);if(n){n.attribute!==t&&console.warn("Cannot create a "+e+" legend for "+t);let i="string"===Gt(n.element).getAttributeType(t)?new aa(n,r):new oa(n,r);this.addChild(i),function(e,t){let i=t.getVariable(Se.BOUNDS,e),r=t.getVariable(Se.PROPERTY,tt.LEGEND_POSITION,e),s=t.getIncomingDataflowOperator(Y.EVAL_BBOX,i);t.connect(r,s),t.connect(s,i)}(i,this._depGraph),ht(this,i,this._depGraph),p(i),this.onChange(Se.PROPERTY,tt.LEGEND_POSITION,i)}else console.warn("Cannot create a "+e+" legend for "+s)}createMask(e){let t=M(e),i=t||e;i.clipMask||i.createClipMask()}setLayout(e,t){if(e.layout&&(ut(e,e.layout,this._depGraph),t.type===j.TREEMAP)){let t=e.firstChild;for(;t&&t.type===Pt.Collection&&t.layout;)ut(t,t.layout,this._depGraph),t=t.firstChild}if(k(e).forEach((e=>{let i=t?t.clone():t;e._layout=i,i&&(i.group=e)})),_t(e,t,this._depGraph),e.children&&e.children.length>0){let t=G(e,!0);for(let e of t)this.onChange(Se.CHANNEL,"x",e)}}setProperties(e,t,i){let r=i?[e]:k(e);r.forEach((e=>{for(const[i,r]of Object.entries(t))je(e,i,r)})),"width"in t&&r.forEach((e=>{e._refBounds&&e._refBounds.setWidth(t.width)})),"height"in t&&r.forEach((e=>{e._refBounds&&e._refBounds.setHeight(t.height)}));for(let i in t)["vertex","segment"].includes(e.type)&&!["x","y"].includes(i)||(Object.values(Ie).includes(i)?this.onChange(Se.CHANNEL,i,e):this.onChange(Se.PROPERTY,i,e))}setLayoutParameters(e,t){let i=k(e);for(let e of i)for(let i in t)e.layout[i]=t[i];this.onChange(Se.CHANNEL,"width",e.firstChild)}sortChildren(e,t,i,r){if(e instanceof bt)ia(e,t,i,r),this.onChange(Se.PROPERTY,tt.CHILDREN_ORDER,e);else if(e instanceof ie){let s=k(e);for(let e of s)ra(e,t,i,r)}}findElements(e){return I(this,e)}translate(e,t,i){ze(e,t,i);let r=G(e,!0);for(let e of r)p(e);for(let e of r)this.onChange(Se.CHANNEL,"x",e)}transform(e,t,i){let r=t.clone();switch(e){case"bin":!function(e,t,i,r,s){let n=s.getVariable(Se.ATTRIBUTE,e,i),a=s.getVariable(Se.ATTRIBUTE,t,r),o=s.createOneWayDependency(Y.BIN_TRANSFORMER);s.connect(n,o),s.connect(o,a),o.run()}(i.attribute,i.newAttribute,t,r,this._depGraph);break;case"filter":!function(e,t,i,r){let s=r.getVariable(Se.ITEMS,void 0,t),n=r.getVariable(Se.ITEMS,e,i),a=r.createOneWayDependency(Y.FILTER_TRANSFORMER);r.connect(s,a),r.connect(a,n),a.run()}(l(i),t,r,this._depGraph);break;case"kde":!function(e,t,i,r,s,n){let a=n.getVariable(Se.ATTRIBUTE,e,i),o=n.getVariable(Se.ATTRIBUTE,t,r),l=n.createOneWayDependency(Y.KDE_TRANSFORMER);l.args=s,n.connect(a,l),n.connect(l,o),l.run()}(i.attribute,i.newAttribute,t,r,i,this._depGraph)}return r}getEncodingByAttribute(e,t){return Ve(e,t,this)}getEncodingByElement(e,t){return Pe(e,t)}getAxis(e,t){return Ve(e,t,this).refElements[0]}}function ya(e,t){let i=new ue(t.tables[e.dt]);for(let t in e.attr2value)i._attr2value[t]=e.attr2value[t],i._updateTuples(t,e.attr2value[t]);return i}class ma extends H{constructor(e){super(),this.type=j.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:$.Top2Bottom}clone(){return new ma({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 ba extends H{constructor(e){super(),this.type=j.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 ba({x:this._x,y:this._y,iterations:this._iterations,repulsion:this._repulsion,attraction:this._attraction,linkDistance:this._linkDistance})}}class xa extends H{constructor(e){super(),this.type=j.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 xa({x:this._x,y:this._y,width:this._width,height:this._height})}}class va extends H{constructor(e){super(),this.type=j.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:Z.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 va({width:this._width,height:this._height,top:this._top,left:this._left,orientation:this._orientation})}}class wa extends H{constructor(e){super(),this.type=j.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 wa({width:this._width,height:this._height,top:this._top,left:this._left})}}function Ea(e){switch(e.type){case j.GRID:return function(e){let t=new sa(e.args);"left"in e&&(t._left=e.left);"top"in e&&(t._top=e.top);"cellBounds"in e&&(t._cellBounds=e.cellBounds.map((e=>Aa(e))));"grid"in e&&(t._grid=e.grid);return t}(e);case j.STACK:return function(e){let t=new $n(e.args);return t}(e);case j.PACKING:return function(e){let t=new xa(e.args);return t}(e);case j.FORCE:return function(e){return new ba(e.args)}(e);case j.DIRECTED:return function(e){return new ma(e.args)}(e);case j.TIDYTREE:return function(e){return new va(e.args)}(e);case j.TREEMAP:return function(e){return new wa(e.args)}(e);case j.STRATA:return function(e){return new ca(e.args)}(e);default:return void console.warn("unsupported layout type for deserialization:",e.type)}}function Aa(e){return new c(e.x-e.width/2,e.y-e.height/2,e.width,e.height)}function Ca(e,t){e.type===Pt.Pie&&(e.type=Pt.Arc),e.args.type=e.type;let i=Ot(e.args);return e.id&&(i._id=e.id),e.classId&&(i._classId=e.classId),e.dataScope&&(i._dataScope=ya(e.dataScope,t)),e.bounds&&(i._bounds=Aa(e.bounds)),e.refBounds&&(i._refBounds=Aa(e.refBounds)),function(e,t,i){if(e.vertices){const r=[];for(let s of e.vertices){const e=Ta(s,t,i);r.push(e)}t.vertices=r,t.segments=[];let s=0;for(let e=1;e<t.vertices.length;e++)t.segments.push(new te(t.vertices[e-1],t.vertices[e],t,s++));t.type===Pt.Rect&&t.segments.push(new te(t.vertices[t.vertices.length-1],t.vertices[0],t,s++))}t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}(e,i,t),i}function Ta(e,t,i){let r=new ee(e.x,e.y,t,e.id);return e.dataScope&&(r._dataScope=ya(e.dataScope,i)),"polarAngle"in e&&(r._polarAngle=e.polarAngle),r.shape=e.shape,r.width=e.width,r.height=e.height,r.radius=e.radius,r.fillColor=e.fillColor,r.opacity=e.opacity,r.strokeWidth=e.strokeWidth,r.strokeColor=e.strokeColor,r}function Ra(e){let t={};t.fillColor=e.fillColor;let i=new fa(t);console.log("======== deserialization =========");let r={};if(e.tables)for(let t in e.tables){let i=e.tables[t];r[t]=new Bt(i.data,i.url,i.attributeTypes),r[t]._id=i.id}i.tables=r;let s={};if(e.scales)for(let t in e.scales)s[t]=Ia(e.scales[t]);if(i.scales=s,Oa(e,i,i),Sa(e,i),i.buildPeerIndex(),e.encodings){let t={};for(let r of e.encodings){let e=Na(r,i);t[e.id]=e}for(let e in t){i._addAttributeEncoding(t[e]);let r=t[e]._baseEnc?t[t[e]._baseEnc]:void 0;gt(t[e],i._depGraph,r),r?i.onChange(Se.ATTR_VALUE,t[e]):i.onChange(Se.CHANNEL,t[e].channel,t[e].element)}}if(e.axes)for(let t of e.axes){let e=t.args?t.args:{};e.tickValues&&Object.values(i.tables)[0].getAttributeType(t.attr)===we.Date&&(e.tickValues=e.tickValues.map((e=>new Date(new Date(e).toISOString())))),t.id&&(e.id=t.id),i.axis(t.channel,t.attr,e)}if(e.gridlines)for(let t of e.gridlines)i.gridlines(t.channel,t.attr,t.args);return e.bounds&&(i._bounds=Aa(e.bounds)),delete i.tables,delete i.scales,i}function ka(e,t,i){if(e.type===Pt.Collection){let r=It(i);e.classId&&(r._classId=e.classId),t.addChild(r),i._itemMap[r.id]=r,at(r,i._depGraph),ht(t,r,i._depGraph),Oa(e,r,i)}else if(e.type===Pt.Glyph){let r=Nt();e.classId&&(r._classId=e.classId),t.addChild(r),i._itemMap[r.id]=r,ct(r,i._depGraph),ht(t,r,i._depGraph),Oa(e,r,i)}else if(e.type===Pt.Composite){let r=new la;t.addChild(r),i._itemMap[r.id]=r,ot(r,i._depGraph),ht(t,r,i._depGraph),Oa(e,r,i),r._bounds=Aa(e.bounds)}else if(e.type===Pt.Axis){let r=new ei({});t.addChild(r),function(e,t,i){e.id&&(t._id=e.id);if(t._children=[],e.labels){let r=new bt;Oa(e.labels,r,i),t._labels=r,t._children.push(r)}e.path&&(t._path=ka(e.path,t,i));if(e.ticks){let r=new bt;Oa(e.ticks,r,i),t._ticks=r,t._children.push(r)}e.title&&(t._title=ka(e.title,t,i))}(e,r,i),i._itemMap[r.id]=r}else if(Object.values(w).includes(e.type)){let r=Ca(e,i);return i._itemMap[r.id]=r,t.addChild(r),it(r,i._depGraph),ht(t,r,i._depGraph),r}}function Sa(e,t){if(e.children)for(let i of e.children)Sa(i,t);else if(Object.values(w).includes(e.type)){let i=t._itemMap[e.id];e.links&&(i.links=e.links.map((e=>t._itemMap[e]))),e.source&&(i.source=t._itemMap[e.source]),e.target&&(i.target=t._itemMap[e.target])}}function Oa(e,t,i){if(e.id&&(t._id=e.id),e.classId&&(t._classId=e.classId),e.dataScope&&(t._dataScope=ya(e.dataScope,i)),e.bounds&&(t._bounds=Aa(e.bounds)),t._sortBy=e.sortBy,e.children)for(let r of e.children)ka(r,t,i);e.layout&&(t._layout=Ea(e.layout),t._layout.group=t,_t(t,t._layout,i._depGraph))}function Ia(e){let t=new Xt(e.type,e.args);return t._id=e.id,t.domain=e.domain,t.range=e.range,t}function Na(e,t){let i=La(e.element,e.elementType,t);i||console.warn("element not created:",e.element,e.elementType);let r=e.args?e.args:{};e.table&&(r.table=t.tables[e.table]);let s=new Xn(i,e.channel,e.attr,e.aggregator?e.aggregator:"sum",r);if(s._id=e.id,e.scales&&(s._scales=e.scales.map((e=>t.scales[e]))),r.baseEnc&&(s._baseEnc=e.args.baseEnc),e.elemGroups&&(s._elemGroups=e.elemGroups.map((e=>e.map((e=>La(e,i.type,t)))))),e.elem2scale){s._elem2scale={};for(let i in e.elem2scale)s._elem2scale[i]=t.scales[e.elem2scale[i]]}return r.startAngle&&(s.startAngle=r.startAngle),s}function La(e,t,i){if("vertex"===t){let t=e.split("_v_");return i._itemMap[t[0]].vertices.find((e=>e._id===parseInt(t[1])))}if("segment"===t){let t=e.split("_s_");return i._itemMap[t[0]].segments.find((e=>e._id===parseInt(t[1])))}return i._itemMap[e]}function Va(e){let t={};return t.id=e._id,t.data=e._rawData,t.attributeTypes=e._attrTypes,t.url=e.url,t}function Pa(e){let t={};return t.dt=e._dt.id,t.attr2value=Object.assign({},e._attr2value),t}function Ma(e,t){t.vertices=[];for(let i of e.vertices)t.vertices.push(Da(i));t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}function Da(e){let t={};return t.type=e.type,t.id=e._id,t.x=e.x,t.y=e.y,e._dataScope&&(t.dataScope=Pa(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 Ba(e){return e.type===Pt.Scene?function(e){let t=za(e,{});t.fillColor=e.fillColor,t.scales={},t.encodings=[];for(let i in e._encodings)for(let r in e._encodings[i]){let s=e._encodings[i][r];s._forLegend||t.encodings.push(Fa(s));for(let e of s._scales)e.id in t.scales||(t.scales[e.id]=Ga(e))}t.tables={};let i=function(e){let t={};for(let i in e._encodings)for(let r in e._encodings[i]){let s=e._encodings[i][r];s.dataTable.id in t||s._forLegend||(t[s.dataTable.id]=s.dataTable)}for(let i of e.children)if(![Pt.Axis,Pt.Legend,Pt.Gridlines].includes(i.type)){if(i.dataScope){t[i.dataScope.dataTable.id]=i.dataScope.dataTable;break}if(i.children&&i.children.length>0){let e=i.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 i)t.tables[e]=Va(i[e]);return console.log("======== serialization ========="),console.log(t),t}(e):[Pt.Collection,Pt.Glyph,Pt.Composite].includes(e.type)?za(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=Pa(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 i in e.styles)i.indexOf("Color")>0&&e.styles[i]instanceof X?t.args[i]=e.styles[i].toJSON():t.args[i]=e.styles[i];switch(e.type){case Pt.Arc:case Pt.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),Ma(e,t);break;case Pt.Area:!function(e,t){t.args.baseline=e._baseline,t.args.orientation=e._orientation}(e,t),Ma(e,t);break;case Pt.Circle:!function(e,t){t.args.x=e.x,t.args.y=e.y,t.args.radius=e.radius}(e,t);break;case Pt.Image:break;case Pt.Line:case Pt.Path:case Pt.BezierCurve:Ma(e,t);break;case Pt.SimpleText:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.text=e._text,t.args.anchor=e._anchor,e._backgroundColor&&(t.args.backgroundColor=e._backgroundColor),e._borderWidth&&(t.args.borderWidth=e._borderWidth),e._borderColor&&(t.args.borderColor=e._borderColor)}(e,t);break;case Pt.Polygon:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.radius=e._radius}(e,t),Ma(e,t);break;case Pt.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),Ma(e,t);case Pt.Ring:}return t}(e):(console.warn("unsupported serialization",e.type),{type:e.type})}function Ga(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 Fa(e){let t={};t.id=e._id,t.element=e._elem.id,t.elementType=e._elem.type,t.channel=e._channel,t.attr=e._attribute,t.aggregator=e._aggregator,t.table=e._table.id,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,e._baseEnc&&(t.args.baseEnc=e._baseEnc.id),t.scales=e._scales.map((e=>e.id)),t.elemGroups=e._elemGroups.map((e=>e.map((e=>e.id)))),t.elem2scale={};for(let i in e._elem2scale)t.elem2scale[i]=e._elem2scale[i].id;return"angle"==e.channel&&(t.args.startAngle=e.startAngle),t}function za(e,t){if(t.id=e.id,t.type=e.type,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Pa(e._dataScope)),t.bounds=e.bounds.toJSON(),e._layout&&(t.layout=function(e){switch(e.type){case j.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.group=e.group.id,t}(e);case j.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 j.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 j.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 j.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 j.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 j.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 j.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 j.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 i of e.children)i instanceof ei?Ha(i,t):i instanceof Zn?ja(i,t):t.children.push(Ba(i));return t.sortBy=e._sortBy,t}function Ha(e,t){t.axes??=[];let i={};i.type=e._type,i.id=e._id,i.attr=e._attribute,i.channel=e._channel,i.args={},i.args.orientation=e._orientation,i.args.strokeColor=e._strokeColor,i.args.textColor=e._textColor,i.args.fontSize=e._fontSize,i.args.tickOffset=e._tickOffset,i.args.tickSize=e._tickSize,i.args.tickAnchor=e._tickAnchor,i.args.tickVisible=e._tickVisible,i.args.pathVisible=e._pathVisible,i.args.labelOffset=e._labelOffset,i.args.labelFormat=e._labelFormat,i.args.titleOffset=e._titleOffset,i.args.title=e._titleText,i.args.rotateTitle=e._rotateTitle,i.args.titleVisible=e._showTitle,i.args.labelRotation=e._labelRotation,t.axes.push(i)}function ja(e,t){t.gridlines??=[];let i={};i.type=e._type,i.id=e._id,i.attr=e._attribute,i.channel=e._channel,i.args=e._args,t.gridlines.push(i)}function Ua(e,i,r,s,n){for(let o of e){let e="background"===o.target?r:o.target;e=Array.isArray(e)?e:[e];let l="brushX"===o.event?t.brushX():"brushY"===o.event?t.brushY():t.brush();var a;l.on("start",(function(i){a&&e.length>1&&t.select(a).call(l.move,null),a=this})),l.on("brush end",(function(e){let i,a;if(e&&e.selection)switch(o.event){case"brushX":i=[e.selection[0],e.selection[1]],a=void 0;break;case"brushY":i=void 0,a=[e.selection[0],e.selection[1]];break;default:i=[e.selection[0][0],e.selection[1][0]],a=[e.selection[0][1],e.selection[1][1]]}else i=void 0,a=void 0;let l=o.eventContext;l.clear(),l.set("xInterval",i),l.set("yInterval",a),l.set("target",t.select(this).attr("id").replace("brush-","")),r.onChange(Se.EVT_CTX,l),s._render(r,n)}));for(let t of e){let e=t.type===Pt.Axis?t.boundsWithoutTitle:t.bounds,r=[[e.left,e.top],[e.right,e.bottom]];i.append("g").attr("class","brush").attr("id","brush-"+t.id).call(l.extent(r))}}}function Wa(e,i,r,s,n){for(let a of e){let e="background"===a.target?i:i.select("#"+a.target.id),o=t.drag();o.on("drag",(e=>{let[t,o]=E(i.attr("id"),e.sourceEvent.clientX,e.sourceEvent.clientY),l=a.eventContext;l.set("x",t),l.set("y",o),l.set("dx",e.dx),l.set("dy",e.dy),r.onChange(Se.EVT_CTX,l),s._render(r,n)})),e.call(o)}}function Ya(e,t,i,r,s){for(let n of e){let e="background"===n.target?t:n.target.classId?t.selectAll("."+n.target.classId):t.select("#"+n.target.id);e.on("mouseover",(e=>{let[a,o]=E(t.attr("id"),e.clientX,e.clientY),l=n.eventContext;l.set("x",a),l.set("y",o);let h=e.target.__data__;l.set("elements",[h]),l.set("element",h),i.onChange(Se.EVT_CTX,l),r._render(i,s)})),e.on("mouseout",(e=>{let t=n.eventContext;t.set("elements",[]),t.set("element",void 0),i.onChange(Se.EVT_CTX,t),r._render(i,s)}))}}function Xa(e,i,r,s,n){for(let i of e)if(i.isWidgetDriven()){let e=(Array.isArray(i.target)?i.target:[i.target]).map((e=>document.getElementById(e))),t=i.eventContext;for(let a of e)a.addEventListener(i.event,(function(){t.set("inputValue",a.value),"checkbox"===a.type&&t.set("checked",a.checked),r.onChange(Se.EVT_CTX,t),s._render(r,n)}))}else i.isKeyboardDriven()&&t.select("body").on("keydown",(e=>{e.key===i.key&&Ka(i,r,s,n)}))}function qa(e,t,i,r,s){t.on("wheel",(n=>{for(let r of e){n.preventDefault(),n.stopPropagation();let[e,s]=E(t.attr("id"),n.clientX,n.clientY),a=r.eventContext;a.set("deltaX",n.deltaX),a.set("deltaY",n.deltaY),a.set("x",e),a.set("y",s),i.onChange(Se.EVT_CTX,a)}r._render(i,s)}))}function Ka(e,t,i,r){if(Array.isArray(e.callback))for(let s=0;s<e.callback.length;s++)e.callback[s](),i._render(t,r,e.animation[s]);else e.callback(),i._render(t,r,e.animation)}function Za(e,t,i,r,s){t.on("click",(n=>{for(let r of e){let[e,s]=E(t.attr("id"),n.clientX,n.clientY),a=r.eventContext,o=[];r.target.type&&o.push({property:"type",value:r.target.type}),r.target.classId&&o.push({property:"classId",value:r.target.classId});let l=D(i,e,s,o),h=a.get("elements").slice();l?r.isCumulative&&!a.get("elements").includes(l)?h.push(l):h=[l]:h=[],h.length===a.get("elements").length&&h.every(((e,t)=>e===a.get("elements")[t]))||(a.clear(),a.set("x",e),a.set("y",s),a.set("elements",h),a.set("element",h.length>0?h[h.length-1]:void 0),i.onChange(Se.EVT_CTX,a))}r._render(i,s)}))}class $a{constructor(e){this._svgId=e,this._svg=document.getElementById(this._svgId),this._compMap={},this._decoMap={},this._brushCreated=0,this._lastTriggerEvt=void 0}render(e,t){this._compMap={},this._decoMap={},this._brushCreated=0;let i=t||{};if(!this._svg.querySelector("defs")){const e=document.createElementNS("http://www.w3.org/2000/svg","defs");this._svg.appendChild(e)}this._render(e,i),this._registerEvents(e,i)}_render(e,t,i){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,i);for(let e in this._removed)this._compMap[e].remove(),delete this._compMap[e]}_registerEvents(e,i){let r=t.select("#"+this._svgId);for(let t in e.interactionTriggers){let s=Object.values(e.interactionTriggers[t]);switch(t){case"click":r.on("click",null),Za(s,r,e,this,i);break;case"brush":case"brushX":case"brushY":Ua(s,r,e,this,i);break;case"drag":case"dragX":case"dragY":Wa(s,r,e,this,i);break;case"hover":Ya(s,r,e,this,i);break;case"change":case"input":Xa(s,0,e,this,i);break;case"scroll":qa(s,r,e,this,i)}}}clear(){for(;this._svg.firstChild;)this._svg.firstChild.remove();const e=this._svg.cloneNode(!0);this._svg.parentNode.replaceChild(e,this._svg),this._svg=e,this._compMap={},this._decoMap={}}_renderItem(e,t,i){if(this._configSVG(e),!e.children&&!1===e._dirty)return;let r=this._compMap[e.id];if(i){const e=i.delay||0,t=i.duration||0;r.style.transition=`all ${t}ms ease ${e}ms`}switch(e.type){case Pt.Scene:!function(e,t){t.style.background=e.fillColor?e.fillColor:"#fff"}(e,this._svg);break;case Pt.Circle:!function(e,t){t.setAttribute("cx",e.x),t.setAttribute("cy",e.y),t.setAttribute("r",e.radius)}(e,r);break;case Pt.Rect:!function(e,t){let i=e.bounds;t.setAttribute("x",i.left),t.setAttribute("y",i.top),t.setAttribute("width",i.width),t.setAttribute("height",i.height)}(e,r);break;case Pt.Path:case Pt.BezierCurve:case Pt.BundledPath:case Pt.Chord:case Pt.Polygon:case Pt.Link:case Pt.Pie:case Pt.Line:case Pt.Area:case Pt.Ring:case Pt.Arc:case Pt.Gridlines:!function(e,t){t.setAttribute("d",e.getSVGPathData()),e.closed||(t.style.fill="none"),(e.id.includes("axis")||e.id.includes("gridlines"))&&(t.style.shapeRendering="crispEdges"),e.type===Pt.BundledPath&&(t.style.mixBlendMode="multiply")}(e,r);break;case Pt.SimpleText:!function(e,t,i){if(t.setAttribute("text-anchor",m(e.anchor[0])),t.setAttribute("alignment-baseline",m(e.anchor[1])),t.setAttribute("dominant-baseline",m(e.anchor[1])),t.setAttribute("x",e.x),t.setAttribute("y",e.y),i){e._updateBounds();let t=e.bounds;i.setAttribute("x",t.left-5),i.setAttribute("y",t.top-5),i.setAttribute("width",t.width+10),i.setAttribute("height",t.height+10),i.setAttribute("rx",5),i.setAttribute("ry",5),i.style.fill=e.backgroundColor,i.style.stroke=e.borderColor,i.style.strokeWidth=e.borderWidth}if(e.textPath){let i=t.querySelector("textPath");i||(i=document.createElementNS("http://www.w3.org/2000/svg","textPath"),t.appendChild(i)),i.setAttribute("href","#"+y(e)),i.setAttribute("startOffset",e.textPathOffset),i.textContent=e.text}else t.textContent=e.text}(e,r,this._compMap[f(e)]);break;case Pt.RichText:!function(e,t){for(;t.firstChild;)t.firstChild.remove();t.setAttribute("width",e.width),t.setAttribute("x",e.x),t.setAttribute("y",e.y),t.style.border="1px solid #ddd";let i=document.createElementNS("http://www.w3.org/1999/xhtml","div");i.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),i.style.width="100%",i.style.padding="10px",i.style.backgroundColor="rgba(255, 255, 255, 0.85)",i.style.color="black",i.style.visibility="visible",i.style.boxSizing="border-box",i.style.opacity="1",i.innerHTML=e.text,t.appendChild(i),t.setAttribute("height",i.offsetHeight)}(e,r);break;case Pt.Image:!function(e,t){t.setAttribute("href",e.src),t.setAttribute("x",e.x),t.setAttribute("y",e.y),t.setAttribute("width",e.width),t.setAttribute("height",e.height)}(e,r)}if(e._rotate&&r.setAttribute("transform","rotate("+e._rotate.join(" ")+")"),function(e,t,i){if(!e.styles)return;let r=Object.keys(e.styles);e.type===Pt.RichText&&(r=r.filter((e=>["textAnchor","fillColor"].indexOf(e)<0)));for(let s of r)if(void 0!==e.styles[s])if(s.indexOf("Color")>0&&e.styles[s].type==Pt.LinearGradient){const r=i.querySelector("defs"),n=e.styles[s];if(!r.querySelector("#"+n.id)){const e=document.createElementNS("http://www.w3.org/2000/svg","linearGradient");e.setAttribute("id",n.id),e.setAttribute("x1",n.x1+"%"),e.setAttribute("x2",n.x2+"%"),e.setAttribute("y1",n.y1+"%"),e.setAttribute("y2",n.y2+"%");for(let t of n.stops){const i=document.createElementNS("http://www.w3.org/2000/svg","stop");i.setAttribute("offset",t.offset+"%"),i.style.stopColor=t.color,i.style.stopOpacity=t.opacity,e.appendChild(i)}r.appendChild(e)}t.style[b[s]]="url(#"+n.id+")"}else if(t.style[b[s]]=e.styles[s],"visibility"===s)if(e.type===Pt.SimpleText){if(e.hasBackground()){const t=i.querySelector("#"+f(e));t&&(t.style[b[s]]=e.styles[s])}}else if(e.type===Pt.RichText){const i=t.querySelector("div");i&&(i.style.visibility=e.styles[s])}}(e,r,this._svg),e.vertices&&e.vertices.length>0&&e.vertices.map((e=>e.shape)).filter((e=>void 0!==e)).length>0&&this._renderVertices(e),t&&t.bounds?this._renderBounds(e):v(e)&&t&&t.refBounds&&this._renderRefBounds(e),e.clipMask){const t=this._svg.querySelector("defs");let i=t.querySelector("#"+e.id+"-clipPath");i||(i=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),i.setAttribute("id",e.id+"-clipPath"),t.appendChild(i));let s=i.querySelector("rect");s||(s=document.createElementNS("http://www.w3.org/2000/svg","rect"),i.appendChild(s)),s.setAttribute("x",e.clipMask.left),s.setAttribute("y",e.clipMask.top),s.setAttribute("width",e.clipMask.width),s.setAttribute("height",e.clipMask.height),r.setAttribute("clip-path","url(#"+e.id+"-clipPath)")}if(e.children)for(let r of e.children)this._renderItem(r,t,i);else e._dirty=!1}_configSVG(e){if(e.id in this._compMap)delete this._removed[e.id],e.type===Pt.SimpleText&&(e.hasBackground()&&delete this._removed[f(e)],e.textPath&&delete this._removed[y(e)]);else{let t,i=e.parent;if(t=i&&i.id&&i.id in this._compMap?this._svg.querySelector("#"+i.id):this._svg,e.type===Pt.SimpleText){if(e.hasBackground()){const i=document.createElementNS("http://www.w3.org/2000/svg","rect");i.setAttribute("id",f(e)),t.appendChild(i),this._compMap[f(e)]=i}if(e.textPath){const t=this._svg.querySelector("defs"),i=y(e);let r=t.querySelector("#"+i);r||(r=document.createElementNS("http://www.w3.org/2000/svg","path"),r.setAttribute("id",i),t.appendChild(r),this._compMap[i]=r),r.setAttribute("d",e.textPath),r.style.fill="none"}}const r=document.createElementNS("http://www.w3.org/2000/svg",this._getSVGElementType(e));t?t.appendChild(r):console.warn("Parent element not found for ",e),this._compMap[e.id]=r}if(e.type==Pt.Gridlines){const t=this._compMap[e.id].parentNode;t.insertBefore(this._compMap[e.id],t.firstChild)}this._compMap[e.id].setAttribute("id",e.id),this._compMap[e.id].__data__=e;let t=e.type;e.classId&&(t+=" "+e.classId),e.parent&&e.parent.type===Pt.Axis&&(t+=e.id.endsWith("_ticks")?" axis_ticks":e.id.endsWith("_labels")?" axis_labels":""),this._compMap[e.id].setAttribute("class",t)}_renderBounds(e){let t=e.bounds;if(e.layout&&"grid"==e.layout.type&&this._renderLayout(e),!(e.id in this._decoMap)){const t=document.createElementNS("http://www.w3.org/2000/svg","rect");t.setAttribute("class","deco"),this._svg.appendChild(t),this._decoMap[e.id]=t}const i=this._decoMap[e.id];i.setAttribute("x",t.left),i.setAttribute("y",t.top),i.setAttribute("width",t.width),i.setAttribute("height",t.height),i.setAttribute("fill","none"),i.setAttribute("stroke","blue"),i.setAttribute("stroke-width","1px"),i.setAttribute("stroke-dasharray","5,5")}_renderRefBounds(e){let t=e.refBounds;if(t){if(!(e.id in this._decoMap)){const t=document.createElementNS("http://www.w3.org/2000/svg","rect");t.setAttribute("class","deco"),this._svg.appendChild(t),this._decoMap[e.id]=t}const i=this._decoMap[e.id];i.setAttribute("x",t.left),i.setAttribute("y",t.top),i.setAttribute("width",t.width),i.setAttribute("height",t.height),i.setAttribute("fill","none"),i.setAttribute("stroke","blue"),i.setAttribute("stroke-width","1px"),i.setAttribute("stroke-dasharray","5,5")}}_renderVertices(e){let t=e.id+"-vertices";if(t in this._compMap)delete this._removed[t];else{let i=e.parent,r=i?i.id:this._svgId;const s=this._svg.querySelector("#"+r),n=document.createElementNS("http://www.w3.org/2000/svg","g");n.setAttribute("id",t),s.appendChild(n),this._compMap[t]=n}if(0===e.vertices.map((e=>e.shape)).filter((e=>void 0!==e)).length)return void(this._compMap[t].style.visibility="hidden");this._compMap[t].style.visibility="visible";let i=e.vertices.filter((e=>void 0!==e.shape));for(let e of i){let i=t+"-"+e.id;if(i in this._compMap)if(e.shape!==this._compMap[i].tagName){this._compMap[i].remove();const r=document.createElementNS("http://www.w3.org/2000/svg",e.shape);r.setAttribute("id",i),this._compMap[t].appendChild(r),this._compMap[i]=r,delete this._removed[i]}else delete this._removed[i];else{const r=document.createElementNS("http://www.w3.org/2000/svg",e.shape);r.setAttribute("id",i),this._compMap[t].appendChild(r),this._compMap[i]=r}const r=this._compMap[i];"rect"==e.shape?(r.setAttribute("x",e.x-e.width/2),r.setAttribute("y",e.y-e.height/2),r.setAttribute("width",e.width),r.setAttribute("height",e.height)):"circle"==e.shape&&(r.setAttribute("cx",e.x),r.setAttribute("cy",e.y),r.setAttribute("r",e.radius)),r.style.fill=e.fillColor,r.style.opacity=e.opacity,r.style.strokeWidth=e.strokeWidth,r.style.stroke=e.strokeColor}}_renderLayout(e){let t=e.id+"-grid";if(!(t in this._decoMap)){const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.setAttribute("id",t),e.setAttribute("class","deco"),this._svg.appendChild(e),this._decoMap[t]=e}let i=e.layout.cellBounds;e.layout.rowGap;this._decoMap[t].querySelectorAll("rect").forEach((e=>e.remove()));for(let e of i){const i=document.createElementNS("http://www.w3.org/2000/svg","rect");i.setAttribute("x",e.left),i.setAttribute("y",e.top),i.setAttribute("width",e.width),i.setAttribute("height",e.height),i.setAttribute("stroke","blue"),i.setAttribute("stroke-width","1px"),i.setAttribute("stroke-dasharray","5,5"),i.setAttribute("fill","none"),this._decoMap[t].appendChild(i)}}_getSVGElementType(e){switch(e.type){case Pt.Rect:return"rect";case Pt.Collection:case Pt.Group:case Pt.Glyph:case Pt.Scene:case Pt.Axis:case Pt.Legend:case Pt.Composite:return"g";case Pt.Area:case Pt.Path:case Pt.Polygon:case Pt.Ring:case Pt.Pie:case Pt.Arc:case Pt.BezierCurve:case Pt.BundledPath:case Pt.Chord:case Pt.Line:case Pt.Gridlines:return"path";case Pt.Circle:return"circle";case Pt.SimpleText:return"text";case Pt.RichText:return"foreignObject";case"vertex":if("circle"==e.shape)return"circle";if("rect"==e.shape)return"rect";throw"argument exception";case"image":return"image"}}}function Ja(e,t){return void 0===e&&void 0===t||void 0!==e&&void 0!==t}function Qa(e,t){const i=Object.keys(e),r=Object.keys(t);return i.length===r.length&&(0===i.length||i.every((e=>r.includes(e))))}function eo(e,t){if(!Ja(e.layout,t.layout))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let i=e.layout,r=t.layout;if(!i&&!r)return!0;if(i.type!==r.type)return console.log("layout types are different:",i,r),!1;switch(i.type){case j.GRID:return function(e,t){e._cellBounds.length!==t._cellBounds.length&&console.log("cell bounds length different:",e,t);for(let i=0;i<e._cellBounds;i++)if(!io(e._cellBounds[i],t._cellBounds[i]))return console.log("cell bounds not equal:",e,t),!1;for(let i=0;i<e._grid.length;i++)for(let r=0;r<e._grid[i].length;r++)if(e._grid[i][r]!==t._grid[i][r])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}(i,r);case j.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}(i,r);case j.PACKING:return function(e,t){return e._x===t._x&&e._y===t._y&&e._width===t._width&&e._height===t._height}(i,r);case j.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}(i,r);case j.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}(i,r);case j.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}(i,r);case j.STRATA:return function(e,t){return e._direction===t._direction&&e._gap===t._gap}(i,r);case j.TREEMAP:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left}(i,r);default:return!1}}function to(e,t){if(!Ja(e.bounds,t.bounds))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let i=e.bounds,r=t.bounds;return!i&&!r||io(i,r)}function io(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function ro(e,t){if(!Ja(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(!no(e,t))return console.log("DataScopes not equal",e,t),!1;if(!to(e,t))return console.log("Bounds not equal",e,t),!1;if(!Ja(e.links,t.links))return console.log("Not both defined or undefined: links ",e.links,t.links),!1;if(!Ja(e.source,t.source))return console.log("Not both defined or undefined: source ",e.source,t.source),!1;if(!Ja(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&&!ro(e.source,t.source))return console.log("different sources",e.source,t.source),!1;if(e.target&&t.target&&!ro(e.target,t.target))return console.log("different targets",e.target,t.target),!1;switch(e.type){case Pt.Arc:case Pt.Pie:return so(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 Pt.Area:return so(e,t)?e.baseline===t.baseline&&e.orientation===t.orientation:(console.log("vertices not equal:",e,t),!1);case Pt.Circle:return e.x===t.x&&e.y===t.y&&e.radius===t.radius;case Pt.Image:return console.warn("not implemented"),!0;case Pt.Line:case Pt.Path:case Pt.BezierCurve:return!!so(e,t)||(console.log("vertices not equal:",e,t),!1);case Pt.SimpleText: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 Pt.Polygon:return so(e,t)?e.x===t.x&&e.y===t.y&&e.radius===t.radius:(console.log("vertices not equal:",e,t),!1);case Pt.Rect:return so(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 Pt.Ring:default:return console.warn("not implemented"),!0}}function so(e,t){if(e.vertices.length!==t.vertices.length)return console.log("unequal number of vertices:",e,t),!1;for(let i=0;i<e.vertices.length;i++){let r=e.vertices[i],s=t.vertices[i];return r.id!==s.id?(console.log("vertex id not equal:",r,s),!1):r.x!==s.x||r.y!==s.y?(console.log("vertex position not equal:",r,s),!1):no(r,s)?r._polarAngle===s._polarAngle&&r.shape===s.shape&&r.width===s.width&&r.height==s.height&&r.radius==s.radius&&r.fillColor==s.fillColor&&r.opacity==s.opacity&&r.strokeWidth==s.strokeWidth&&r.strokeColor==s.strokeColor:(console.log("vertex data scopes not equal:",r.dataScope,s.dataScope),!1)}}function no(e,t){if(!Ja(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 i=e.dataScope,r=t.dataScope;if(!Qa(i._attr2value,r._attr2value))return!1;for(let e in i._attr2value)if(i._attr2value[e]!==r._attr2value[e])return!1;return i._dt.id===r._dt.id&&i._tuples.length===r._tuples.length}function ao(e,t){return e.type!==t.type&&console.log("Different types:",e.type,t.type),[Pt.Collection,Pt.Glyph,Pt.Composite].includes(e.type)?oo(e,t):e instanceof x?ro(e,t):void 0}function oo(e,t){let i=e.children.filter((e=>!Object.values(Mt).includes(e.type))),r=t.children.filter((e=>!Object.values(Mt).includes(e.type)));if(i.length!==r.length)return console.log("children length not equal:",i,r),!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(!no(e,t))return console.log("DataScopes not equal",e.dataScope,t.dataScope),!1;if(!to(e,t))return console.log("Bounds not equal",e,t),!1;if(!eo(e,t))return console.log("Layouts not equal",e,t),!1;if(!function(e,t){if(!Qa(e,t))return console.log("different keys",e,t),!1;for(let i in e)if(e[i]!==t[i])return!1;return!0}(e._sortBy,t._sortBy))return console.log("SortBy not equal",e,t),!1;for(let e=0;e<i.length;e++)if(!ao(i[e],r[e]))return console.log("Not equal",i[e],r[e]),!1;return!0}class lo extends H{constructor(e){super(),this.type=j.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 lo({x:this._x,y:this._y,radius:this._radius})}}class ho extends H{constructor(e){super(),this.type=j.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:Z.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 ho({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 i=await zt("GET",e),r=t.csvParse(i.trim(),t.autoType);return new Bt(r,e)}(e)},exports.csvString=function(e){return function(e){let i=t.csvParse(e.trim(),t.autoType);return new Bt(i,"fromString")}(e)},exports.deserialize=function(e){return Ra(e)},exports.graphJSON=async function(e){return async function(e){let t=await zt("GET",e);return new ye(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):oo(e,t)}(e,t)},exports.layout=function(e,t){let i=t||{};switch(e.toLowerCase()){case j.STACK:return new $n(i);case j.PACKING:return new xa(i);case j.FORCE:return new ba(i);case j.DIRECTED:return new ma(i);case j.TIDYTREE:return new va(i);case j.TREEMAP:return new wa(i);case j.CIRCULAR:return new lo(i);case j.CLUSTER:return new ho(i);case j.GRID:default:return new sa(i)}},exports.locateElement=function(e,t,i,r,s){return D(e,t,i,r)},exports.renderer=function(e,t){return new $a(t)},exports.scene=function(e){return new fa(e)},exports.serialize=function(e){return Ba(e)},exports.table=function(e){return new Bt(e,"")},exports.treeJSON=async function(e){return async function(e){let t=await zt("GET",e);return new ge(JSON.parse(t),e)}(e)};
|