{"version":3,"sources":["webpack:///./node_modules/@amcharts/amcharts4/.internal/themes/animated.js","webpack:///./src/pages/sircap/sircap.vue?e50d","webpack:///./node_modules/@amcharts/amcharts4/.internal/plugins/forceDirected/ForceDirectedLink.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/plugins/forceDirected/ForceDirectedNode.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-force/src/lcg.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-force/src/constant.js","webpack:///./node_modules/d3-force/src/x.js","webpack:///./node_modules/d3-force/src/y.js","webpack:///./node_modules/d3-force/src/jiggle.js","webpack:///./node_modules/d3-force/src/link.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/collide.js","webpack:///./node_modules/d3-force/src/manyBody.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/plugins/forceDirected/ForceDirectedSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/plugins/forceDirected/ForceDirectedTree.js","webpack:///src/pages/sircap/sircap.vue","webpack:///./src/pages/sircap/sircap.vue?03e2","webpack:///./src/pages/sircap/sircap.vue","webpack:///./src/pages/sircap/sircap.vue?30d1","webpack:///./node_modules/core-js/modules/es.string.fixed.js","webpack:///./node_modules/core-js/modules/es.array.fill.js"],"names":["theme","object","transitionDuration","rangeChangeDuration","interpolationDuration","sequencedInterpolation","defaultState","hiddenState","animationDuration","properties","opacity","showOnInit","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","staticStyle","staticRenderFns","_super","ForceDirectedLink","_this","call","className","interfaceColors","InterfaceColorSet","fillOpacity","strokeOpacity","stroke","getFor","isMeasured","nonScalingStroke","interactionsEnabled","distance","strength","applyTheme","prototype","validate","source","target","path","x","pixelX","y","pixelY","isHidden","isHiding","hide","show","Object","defineProperty","get","_source","set","value","_disposers","push","events","on","invalidate","enumerable","configurable","_target","_adapterO","isEnabled","apply","setPropertyValue","getTooltipX","getPropertyValue","Percent","x1","x2","getTooltipY","y1","y2","Sprite","registeredClasses","ForceDirectedNode","applyOnClones","togglable","draggable","setStateOnChildren","isActive","expandAll","paddingRadius","linksWith","Dictionary","dataItem","component","nodeDragStarted","updateSimulation","outerCircle","createChild","Circle","shouldClone","strokeWidth","bgColor","fill","hoverState","states","create","scale","outerActiveState","visible","activeHoverState","circle","activeState","radius","addDisposer","updateLabelSize","label","Label","horizontalCenter","verticalCenter","textAlign","textValign","nonScaling","adapter","add","pixelRadius","text","ds","dsRadius","parent","width","height","copyFrom","setActive","children","dataItemsInvalid","childrenInited","initNode","updateNodeList","each","child","node","parentLink","dispatchVisibility","restartSimulation","linkWith","link","getKey","uid","links","zIndex","nodeIndex","nodes","indexOf","childIndex","forceLinks","childLinks","setKey","unlinkWith","removeKey","Container","noop","dispatch","t","i","n","arguments","length","_","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","map","name","slice","hasOwnProperty","type","c","callback","concat","constructor","typename","T","copy","that","args","Array","taskHead","taskTail","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","window","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","time","restart","timerFlush","e","wake","nap","poke","t0","t2","t1","Infinity","sleep","clearTimeout","clearInterval","setInterval","TypeError","stop","a","m","s","d","initialRadius","initialAngle","Math","PI","sqrt","simulation","alpha","alphaMin","alphaDecay","pow","alphaTarget","velocityDecay","forces","Map","stepper","step","event","random","lcg","tick","iterations","undefined","k","forEach","force","fx","vx","fy","vy","initializeNodes","index","isNaN","angle","cos","sin","initializeForce","initialize","randomSource","delete","find","dx","dy","d2","closest","strengths","xz","constant","yz","nodeById","nodeId","distances","count","bias","id","defaultStrength","min","l","b","jiggle","initializeStrength","initializeDistance","_nodes","_random","_x","_y","cover","tree","xm","ym","xp","yp","right","bottom","j","_root","leaf","data","x0","_x0","y0","_y0","_x1","_y1","next","addAll","floor","z","visit","q","x3","y3","quads","pop","retainer","previous","removeAll","remove","size","defaultX","defaultY","quadtree","Quadtree","NaN","leaf_copy","treeProto","extent","root","visitAfter","radii","xi","yi","ri","ri2","prepare","quad","rj","r","distanceMin2","distanceMax2","theta2","accumulate","weight","abs","w","distanceMin","distanceMax","theta","ForceDirectedSeriesDataItem","hasChildren","List","duration","fields","_visible","event_1","dispatchImmediately","toValue","event_2","values","setValue","_node","component_1","node_1","Disposer","removeValue","addSprite","itemsFocusable","role","focusable","once","ev","readerTitle","populateString","itemReaderText","hoverable","level","color","colors","getIndex","setProperty","hiddenInLegend","collapsed","fixed","handleFixed","createLegendMarker","marker","_legendDataItem","valueLabel","Series","ForceDirectedSeries","_tick","d3forceSimulation","maxRadius","minRadius","ColorSet","manyBodyStrength","centerStrength","showOnTick","updateRadiuses","dataItems","updateLinksAndNodes","innerWidth","h","innerHeight","getMaxValue","max","cmax","validateDataItems","chart","__disabled","_dataDisposers","_maxValue","reset","xField","propertyFields","yField","dataContext","dataFields","processLinkWith","feedLegend","dragFixedNodes","di","_linkForce","_collisionForce","linkDatum","getDistance","getStrength","disabled","nodeDragEnded","updateRadius","minSide","cursorOverStyle","Mouse","pointer","default","maxLevels","index_1","diColor","dataItemToConnect","getDataItemById","linkWithStrength","createDataItem","createNode","_links","createLink","RoundedRectangle","cornerRadius","legendDataItem","colorOrig","property","ForceDirectedTreeDataItem","SerialChart","ForceDirectedTree","zoomDuration","zoomEasing","minZoomLevel","maxZoomLevel","seriesContainer","layout","mouseWheelBehavior","zoomStep","background","zoomOutButton","ZoomOutButton","valign","Number","MAX_SAFE_INTEGER","marginTop","marginRight","interaction","body","zoomable","svgPoint","point","htmlContainer","svgContainer","dragStart","dragStop","createSeries","legend","legendData_1","series","legendSettings","labelText","labels","template","itemLabelText","valueText","valueLabels","itemValueText","applyInternalDefaults","language","translate","getExporting","exporting","info","format","handleWheel","zoomLevel","shift","zoomToPoint","center","container","maxWidth","maxHeight","animate","to","zoomToDataItem","zoomOut","pixelWidth","pixelHeight","resizable","dragWhileResize","_backgroundZoomoutDisposer","dispose","_mouseWheelDisposer","chartContainer","wheelable","_zoomOutButton","button","components","methods","setChart","dataSircap","fontSize","tooltip","pointerLength","getFillFromObject","getStrokeFromObject","console","log","tooltipPosition","tooltipHTML","fontWeight","clickable","html","res","tooltipY","cursorStyle","innerHTML","document","head","appendChild","getElementById","open","$","createHTML","forcedStringHTMLMethod","proto","forced","addToUnscopables"],"mappings":"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","file":"js/chunk-a63e9580.0a6d8ba7.js","sourcesContent":["import { is } from \"../core/Registry\";\r\nvar theme = function (object) {\r\n if (is(object, \"SpriteState\")) {\r\n object.transitionDuration = 400;\r\n }\r\n if (is(object, \"Component\")) {\r\n object.rangeChangeDuration = 500;\r\n object.interpolationDuration = 500;\r\n object.sequencedInterpolation = false;\r\n if (is(object, \"SankeyDiagram\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n if (is(object, \"FunnelSeries\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n }\r\n if (is(object, \"Chart\")) {\r\n object.defaultState.transitionDuration = 2000;\r\n object.hiddenState.transitionDuration = 1000;\r\n }\r\n if (is(object, \"Tooltip\")) {\r\n object.animationDuration = 400;\r\n object.defaultState.transitionDuration = 400;\r\n object.hiddenState.transitionDuration = 400;\r\n }\r\n if (is(object, \"Scrollbar\")) {\r\n object.animationDuration = 500;\r\n }\r\n if (is(object, \"Series\")) {\r\n object.defaultState.transitionDuration = 1000;\r\n object.hiddenState.transitionDuration = 700;\r\n object.hiddenState.properties.opacity = 1;\r\n object.showOnInit = true;\r\n }\r\n if (is(object, \"MapSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"PercentSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"FunnelSlice\")) {\r\n object.defaultState.transitionDuration = 800;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Slice\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Preloader\")) {\r\n object.hiddenState.transitionDuration = 2000;\r\n }\r\n if (is(object, \"Column\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Column3D\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n};\r\nexport default theme;\r\n//# sourceMappingURL=animated.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',[_c('v-card',{staticClass:\"sircap\"},[_c('v-img',{attrs:{\"height\":\"120px\",\"src\":\"img/sircap-header.png\",\"cover\":\"\"}}),_c('v-card-text',{staticClass:\"pl-10 pr-10 pt-6\"},[_c('div',{staticClass:\"row pb-4 bbd\"},[_c('div',{staticClass:\"col-md-9 mb-0 pb-0\"},[_c('h1',{staticClass:\"title\"},[_vm._v(\" SIRCAP\"),_c('br'),_c('small',[_vm._v(\"Sistema de Rendición de Cuentas del Acuerdo de Paz\")])])]),_c('div',{staticClass:\"col-md-3 pb-0\"},[_c('img',{staticStyle:{\"width\":\"140px\",\"float\":\"right\"},attrs:{\"src\":\"img/sircap-funcion-publica.png\"}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('h4',{staticClass:\"subtitle\"},[_vm._v(\"¿Qué es SIRCAP?\")]),_c('p',{staticClass:\"pt-3\"},[_vm._v(\"Es el mecanismo de transparencia y control social, creado por Función Pública para facilitar la información y el diálogo con la ciudadanía sobre los avances de la implementación del Acuerdo de Paz que incluye los informes anuales de las entidades con compromisos frente al acuerdo, herramientas para el diálogo con las ciudadanías y disposiciones legales, directrices y orientaciones para la rendición de cuentas, en cumplimiento de los compromisos 2.2.5. Control y veeduría ciudadana; 6.1.5. Sistema Integrado de Información; medidas para la transparencia que corresponden al punto 2 de participación política; y punto 6 de Implementación, verificación y refrendación del Acuerdo de Paz. \")]),_c('p',[_vm._v(\"Para conocer el detalle y navegar en el SIRCAP, haga clic en el componente de su interés en el gráfico: \")])]),_c('div',{staticClass:\"col-md-12\"},[_c('div',{attrs:{\"id\":\"chartdiv\"}})])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\r\n * ForceDirectedLink module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class that builds links between [[ForceDirectedNode]] elements.\r\n *\r\n * @see {@link IForceDirectedLinkEvents} for a list of available events\r\n * @see {@link IForceDirectedLinkAdapters} for a list of available Adapters\r\n * @since 4.3.8\r\n * @important\r\n */\r\nvar ForceDirectedLink = /** @class */ (function (_super) {\r\n __extends(ForceDirectedLink, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ForceDirectedLink() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ForceDirectedLink\";\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fillOpacity = 0;\r\n _this.strokeOpacity = 0.5;\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.isMeasured = false;\r\n _this.nonScalingStroke = true;\r\n _this.interactionsEnabled = false;\r\n _this.distance = 1.5;\r\n _this.strength = 1;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Validates element:\r\n * * Triggers events\r\n * * Redraws the element\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ForceDirectedLink.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var source = this.source;\r\n var target = this.target;\r\n if (source && target) {\r\n this.path = $path.moveTo({ x: source.pixelX, y: source.pixelY }) + $path.lineTo({ x: target.pixelX, y: target.pixelY });\r\n if (source.isHidden || target.isHidden || source.isHiding || target.isHiding) {\r\n this.hide();\r\n }\r\n else {\r\n this.show();\r\n }\r\n }\r\n };\r\n Object.defineProperty(ForceDirectedLink.prototype, \"source\", {\r\n /**\r\n * @return Source node\r\n */\r\n get: function () {\r\n return this._source;\r\n },\r\n /**\r\n * Source node - a node link starts from.\r\n *\r\n * @param value Source node\r\n */\r\n set: function (value) {\r\n if (value) {\r\n this._source = value;\r\n this._disposers.push(value.events.on(\"positionchanged\", this.invalidate, this, false));\r\n this._disposers.push(value.events.on(\"validated\", this.invalidate, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedLink.prototype, \"target\", {\r\n /**\r\n * @return Target node\r\n */\r\n get: function () {\r\n return this._target;\r\n },\r\n /**\r\n * Target node - a node link ends at.\r\n *\r\n * @param value Target node\r\n */\r\n set: function (value) {\r\n if (value) {\r\n this._target = value;\r\n this._disposers.push(value.events.on(\"positionchanged\", this.invalidate, this, false));\r\n this._disposers.push(value.events.on(\"validated\", this.invalidate, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedLink.prototype, \"distance\", {\r\n /**\r\n * @return Distance\r\n */\r\n get: function () {\r\n if (this._adapterO) {\r\n if (this._adapterO.isEnabled(\"distance\")) {\r\n return this._adapterO.apply(\"distance\", this.properties.distance);\r\n }\r\n }\r\n return this.properties.distance;\r\n },\r\n /**\r\n * Distance between centers of source and target nodes.\r\n *\r\n * This is relative to the radii to sum of both source and target nodes.\r\n *\r\n * E.g. if this would be set to `1` both nodes would be touching each other.\r\n *\r\n * @default 1.5\r\n * @param value Distance\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"distance\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedLink.prototype, \"strength\", {\r\n /**\r\n * @return Strength\r\n */\r\n get: function () {\r\n if (this._adapterO) {\r\n if (this._adapterO.isEnabled(\"strength\")) {\r\n return this._adapterO.apply(\"strength\", this.properties.strength);\r\n }\r\n }\r\n return this.properties.strength;\r\n },\r\n /**\r\n * Relative \"strength\" of the traction between linked nodes.\r\n *\r\n * Available values: 0 to XX.\r\n *\r\n * The bigger the number, the more rigid the link and the less it will\r\n * stretch when node is dragged.\r\n *\r\n * Carefully with very big numbers: nodes and links might start behaving\r\n * quite \"nerviously\".\r\n *\r\n * @default 1\r\n * @param value Strength\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"strength\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @ignore\r\n * @return X\r\n */\r\n ForceDirectedLink.prototype.getTooltipX = function () {\r\n var x = this.getPropertyValue(\"tooltipX\");\r\n if (!(x instanceof Percent)) {\r\n x = percent(50);\r\n }\r\n if (x instanceof Percent) {\r\n var source = this.source;\r\n var target = this.target;\r\n if (source && target) {\r\n var x1 = source.pixelX;\r\n var x2 = target.pixelX;\r\n return x1 + (x2 - x1) * x.value;\r\n }\r\n }\r\n return 0;\r\n };\r\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @ignore\r\n * @return Y\r\n */\r\n ForceDirectedLink.prototype.getTooltipY = function () {\r\n var y = this.getPropertyValue(\"tooltipY\");\r\n if (!(y instanceof Percent)) {\r\n y = percent(50);\r\n }\r\n if (y instanceof Percent) {\r\n var source = this.source;\r\n var target = this.target;\r\n if (source && target) {\r\n var y1 = source.pixelY;\r\n var y2 = target.pixelY;\r\n return y1 + (y2 - y1) * y.value;\r\n }\r\n }\r\n return 0;\r\n };\r\n return ForceDirectedLink;\r\n}(Sprite));\r\nexport { ForceDirectedLink };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ForceDirectedLink\"] = ForceDirectedLink;\r\n//# sourceMappingURL=ForceDirectedLink.js.map","/**\r\n * Module that defines everything related to building ForceDirectedNodes.\r\n *\r\n * It is a container which has ForceDirectedNode element which is a RoundedRectangle.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Dictionary, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Class used to creates [[ForceDirectedNode]] elements (circles).\r\n *\r\n * @see {@link IForceDirectedNodeEvents} for a list of available events\r\n * @see {@link IForceDirectedNodeAdapters} for a list of available Adapters\r\n * @since 4.3.8\r\n * @important\r\n */\r\nvar ForceDirectedNode = /** @class */ (function (_super) {\r\n __extends(ForceDirectedNode, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ForceDirectedNode() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ForceDirectedNode\";\r\n //this.isMeasured = true; // for correct position of the tooltip\r\n _this.applyOnClones = true;\r\n _this.togglable = true;\r\n _this.draggable = true;\r\n _this.setStateOnChildren = true;\r\n _this.isActive = false;\r\n _this.expandAll = true;\r\n _this.paddingRadius = 0;\r\n _this.linksWith = new Dictionary();\r\n _this._disposers.push(new DictionaryDisposer(_this.linksWith));\r\n _this.events.on(\"dragstart\", function () {\r\n if (_this.dataItem.component) {\r\n _this.dataItem.component.nodeDragStarted();\r\n }\r\n }, _this, false);\r\n _this.events.on(\"drag\", function () {\r\n _this.updateSimulation();\r\n }, _this, false);\r\n var outerCircle = _this.createChild(Circle);\r\n outerCircle.shouldClone = false;\r\n outerCircle.strokeWidth = 2;\r\n outerCircle.nonScalingStroke = true;\r\n var bgColor = new InterfaceColorSet().getFor(\"background\");\r\n outerCircle.fill = bgColor;\r\n _this.outerCircle = outerCircle;\r\n var hoverState = outerCircle.states.create(\"hover\");\r\n hoverState.properties.scale = 1.1;\r\n var outerActiveState = outerCircle.states.create(\"active\");\r\n outerActiveState.properties.scale = 1.1;\r\n outerActiveState.properties.visible = true;\r\n var activeHoverState = outerCircle.states.create(\"hoverActive\");\r\n activeHoverState.properties.scale = 1;\r\n var circle = _this.createChild(Circle);\r\n var activeState = circle.states.create(\"active\");\r\n activeState.properties.visible = true;\r\n circle.shouldClone = false;\r\n circle.interactionsEnabled = false;\r\n circle.hiddenState.properties.radius = 0.01;\r\n circle.events.on(\"validated\", _this.updateSimulation, _this, false);\r\n circle.hiddenState.properties.visible = true;\r\n _this.circle = circle;\r\n _this.addDisposer(circle.events.on(\"validated\", _this.updateLabelSize, _this, false));\r\n _this._disposers.push(_this.circle);\r\n var label = _this.createChild(Label);\r\n label.shouldClone = false;\r\n label.horizontalCenter = \"middle\";\r\n label.verticalCenter = \"middle\";\r\n label.fill = bgColor;\r\n label.strokeOpacity = 0;\r\n label.interactionsEnabled = false;\r\n label.textAlign = \"middle\";\r\n label.textValign = \"middle\";\r\n label.nonScaling = true;\r\n _this.label = label;\r\n _this.adapter.add(\"tooltipY\", function (y, target) {\r\n return -target.circle.pixelRadius;\r\n });\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n ForceDirectedNode.prototype.updateLabelSize = function () {\r\n if (this.label.text) {\r\n var circle = this.circle;\r\n var radius = circle.pixelRadius;\r\n var ds = circle.defaultState;\r\n var dsRadius = ds.properties.radius;\r\n if ($type.isNumber(dsRadius)) {\r\n radius = dsRadius;\r\n }\r\n var scale = 1;\r\n if (this.parent && this.parent.parent) {\r\n scale = this.parent.parent.scale;\r\n }\r\n this.label.width = 2 * radius * scale;\r\n this.label.height = 2 * radius * scale;\r\n }\r\n };\r\n /**\r\n * Copies all parameters from another [[ForceDirectedNode]].\r\n *\r\n * @param source Source ForceDirectedNode\r\n */\r\n ForceDirectedNode.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.circle) {\r\n this.circle.copyFrom(source.circle);\r\n }\r\n if (this.label) {\r\n this.label.copyFrom(source.label);\r\n }\r\n if (this.outerCircle) {\r\n this.outerCircle.copyFrom(source.outerCircle);\r\n }\r\n };\r\n /**\r\n * Sets node as \"active\" (expanded).\r\n *\r\n * @ignore\r\n * @param value Active or not?\r\n */\r\n ForceDirectedNode.prototype.setActive = function (value) {\r\n var _this = this;\r\n _super.prototype.setActive.call(this, value);\r\n var dataItem = this.dataItem;\r\n if (dataItem) {\r\n var children = dataItem.children;\r\n var component = dataItem.component;\r\n if (!component.dataItemsInvalid) {\r\n if (value && children && !dataItem.childrenInited) {\r\n component.initNode(dataItem);\r\n component.updateNodeList();\r\n }\r\n if (value) {\r\n this.show();\r\n if (children) {\r\n children.each(function (child) {\r\n child.node.show();\r\n child.node.interactionsEnabled = true;\r\n if (child.parentLink) {\r\n child.parentLink.show();\r\n }\r\n if (_this.expandAll) {\r\n child.node.isActive = true;\r\n }\r\n else {\r\n child.node.isActive = false;\r\n //child.node.hide(0)\r\n }\r\n });\r\n }\r\n dataItem.dispatchVisibility(true);\r\n }\r\n else {\r\n if (children) {\r\n children.each(function (child) {\r\n if (child.parentLink) {\r\n child.parentLink.hide();\r\n }\r\n child.node.isActive = false;\r\n child.node.interactionsEnabled = false;\r\n child.node.hide();\r\n });\r\n }\r\n dataItem.dispatchVisibility(false);\r\n }\r\n }\r\n }\r\n this.updateSimulation();\r\n };\r\n /**\r\n * @ignore\r\n * @todo description\r\n */\r\n ForceDirectedNode.prototype.updateSimulation = function () {\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.restartSimulation();\r\n }\r\n };\r\n Object.defineProperty(ForceDirectedNode.prototype, \"expandAll\", {\r\n /**\r\n * @return Expand all?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"expandAll\");\r\n },\r\n /**\r\n * If set to `true` (default) toggling a node on will automatically expand\r\n * all nodes across the whole tree (all levels) of its descendants.\r\n *\r\n * Setting to `false` will only expand immediate children (one level).\r\n *\r\n * @default true\r\n * @since 4.4.8\r\n * @param value Expand all?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"expandAll\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new link between two nodes.\r\n *\r\n * Use this method to dynamically add links without requiring to revalidate\r\n * whole of the data.\r\n *\r\n * @since 4.4.8\r\n * @param node Target node\r\n * @param strength Link strength\r\n * @return New link\r\n */\r\n ForceDirectedNode.prototype.linkWith = function (node, strength) {\r\n var link = this.linksWith.getKey(node.uid);\r\n if (!link) {\r\n link = node.linksWith.getKey(this.uid);\r\n }\r\n if (!link) {\r\n var dataItem = this.dataItem;\r\n var component = dataItem.component;\r\n link = component.links.create();\r\n link.parent = component;\r\n link.zIndex = -1;\r\n link.source = this;\r\n link.target = node;\r\n link.stroke = dataItem.node.fill;\r\n link.dataItem = node.dataItem;\r\n if ($type.isNumber(strength)) {\r\n link.strength = strength;\r\n }\r\n var nodeIndex = component.nodes.indexOf(dataItem.node);\r\n var childIndex = component.nodes.indexOf(node);\r\n component.forceLinks.push({ source: nodeIndex, target: childIndex });\r\n component.updateNodeList();\r\n dataItem.childLinks.push(link);\r\n this.linksWith.setKey(node.uid, link);\r\n }\r\n return link;\r\n };\r\n /**\r\n * Removes a link between two nodes.\r\n *\r\n * @since 4.4.8\r\n * @param node Target node\r\n */\r\n ForceDirectedNode.prototype.unlinkWith = function (node) {\r\n this.linksWith.removeKey(node.uid);\r\n };\r\n Object.defineProperty(ForceDirectedNode.prototype, \"paddingRadius\", {\r\n /**\r\n * @return Padding radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"paddingRadius\");\r\n },\r\n /**\r\n * Padding of the nodes, in pixels.\r\n *\r\n * @since 4.6.7\r\n * @default 0\r\n * @param value padding radius\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"paddingRadius\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ForceDirectedNode;\r\n}(Container));\r\nexport { ForceDirectedNode };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ForceDirectedNode\"] = ForceDirectedNode;\r\n//# sourceMappingURL=ForceDirectedNode.js.map","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Series, SeriesDataItem } from \"../../charts/series/Series\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ListTemplate, ListDisposer, List } from \"../../core/utils/List\";\r\nimport { ForceDirectedNode } from \"./ForceDirectedNode\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { ForceDirectedLink } from \"./ForceDirectedLink\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport * as d3force from \"d3-force\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ForceDirectedSeries]].\r\n *\r\n * @see {@link DataItem}\r\n * @since 4.3.8\r\n */\r\nvar ForceDirectedSeriesDataItem = /** @class */ (function (_super) {\r\n __extends(ForceDirectedSeriesDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ForceDirectedSeriesDataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Have all children already been initialized?\r\n */\r\n _this.childrenInited = false;\r\n _this.className = \"ForceDirectedSeriesDataItem\";\r\n _this.hasChildren.children = true;\r\n _this.childLinks = new List();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n ForceDirectedSeriesDataItem.prototype.show = function (duration, delay, fields) {\r\n this._visible = true;\r\n if (this.node) {\r\n this.node.isActive = true;\r\n }\r\n return;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ForceDirectedSeriesDataItem.prototype.dispatchVisibility = function (visible) {\r\n if (this.events.isEnabled(\"visibilitychanged\")) {\r\n var event_1 = {\r\n type: \"visibilitychanged\",\r\n target: this,\r\n visible: visible\r\n };\r\n this.events.dispatchImmediately(\"visibilitychanged\", event_1);\r\n }\r\n };\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n ForceDirectedSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n this._visible = false;\r\n if (this.events.isEnabled(\"visibilitychanged\")) {\r\n var event_2 = {\r\n type: \"visibilitychanged\",\r\n target: this,\r\n visible: false\r\n };\r\n this.events.dispatchImmediately(\"visibilitychanged\", event_2);\r\n }\r\n if (this.node) {\r\n this.node.isActive = false;\r\n }\r\n return;\r\n };\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var value = this.values.value.value;\r\n if (!$type.isNumber(value)) {\r\n if (this.children) {\r\n value = 0;\r\n this.children.each(function (child) {\r\n value += child.value;\r\n });\r\n }\r\n }\r\n return value;\r\n },\r\n /**\r\n * Numeric value of the item.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"node\", {\r\n /**\r\n * An element, related to this data item. (node)\r\n *\r\n * @readonly\r\n * @return node element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._node) {\r\n var component_1 = this.component;\r\n var node_1 = component_1.nodes.create();\r\n node_1.draggable = true;\r\n this._node = node_1;\r\n this._disposers.push(node_1);\r\n this._disposers.push(new Disposer(function () {\r\n component_1.nodes.removeValue(node_1);\r\n }));\r\n this.addSprite(node_1);\r\n node_1.visible = this.visible;\r\n node_1.hiddenState.properties.visible = true;\r\n // Apply accessibility\r\n if (component_1.itemsFocusable()) {\r\n this.component.role = \"menu\";\r\n node_1.role = \"menuitem\";\r\n node_1.focusable = true;\r\n }\r\n else {\r\n this.component.role = \"list\";\r\n node_1.role = \"listitem\";\r\n node_1.focusable = false;\r\n }\r\n // Apply screen reader label\r\n if (node_1.focusable) {\r\n node_1.events.once(\"focus\", function (ev) {\r\n node_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\r\n }, undefined, false);\r\n node_1.events.once(\"blur\", function (ev) {\r\n node_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n if (node_1.hoverable) {\r\n node_1.events.once(\"over\", function (ev) {\r\n node_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\r\n }, undefined, false);\r\n node_1.events.once(\"out\", function (ev) {\r\n node_1.readerTitle = \"\";\r\n }, undefined, false);\r\n }\r\n }\r\n return this._node;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"level\", {\r\n /**\r\n * Depth level in the series hierarchy.\r\n *\r\n * The top-level item will have level set at 0. Its children will have\r\n * level 1, and so on.\r\n *\r\n * @readonly\r\n * @return Level\r\n */\r\n get: function () {\r\n if (!this.parent) {\r\n return 0;\r\n }\r\n else {\r\n return this.parent.level + 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"percent\", {\r\n /**\r\n * Percent value of a node.\r\n *\r\n * @since 4.9.0\r\n * @return Percent\r\n */\r\n get: function () {\r\n if (this.parent) {\r\n return this.value / this.parent.value * 100;\r\n }\r\n return 100;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n var color = this.properties.color;\r\n if (color == undefined) {\r\n if (this.parent) {\r\n color = this.parent.color;\r\n }\r\n }\r\n if (color == undefined) {\r\n if (this.component) {\r\n color = this.component.colors.getIndex(this.component.colors.step * this.index);\r\n }\r\n }\r\n return color;\r\n },\r\n /**\r\n * Item's color.\r\n *\r\n * If not set, will use parent's color, or, if that is not set either,\r\n * automatically assigned color from chart's color set. (`chart.colors`)\r\n *\r\n * @param value : Color | LinearGradient | RadialGradient | Pattern\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"linkWith\", {\r\n /**\r\n * @return Link list\r\n */\r\n get: function () {\r\n return this.properties.linkWith;\r\n },\r\n /**\r\n * An array of id's of other nodes outside of the child/parent tree to link\r\n * with.\r\n *\r\n * @param value Link list\r\n */\r\n set: function (value) {\r\n this.setProperty(\"linkWith\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"hiddenInLegend\", {\r\n /**\r\n * @return Hidden in legend?\r\n */\r\n get: function () {\r\n return this.properties.hiddenInLegend;\r\n },\r\n /**\r\n * Should dataItem (node) be hidden in legend?\r\n *\r\n * @param value Visible in legend?\r\n */\r\n set: function (value) {\r\n this.setProperty(\"hiddenInLegend\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"collapsed\", {\r\n /**\r\n * @return Collapsed?\r\n */\r\n get: function () {\r\n return this.properties.collapsed;\r\n },\r\n /**\r\n * Indicates whether node should start off as collapsed.\r\n *\r\n * This can be used to specify whether node should start off as collapsed\r\n * via data.\r\n *\r\n * To toggle actual node, use its `isActive` property instead.\r\n *\r\n * @param value Collapsed?\r\n */\r\n set: function (value) {\r\n this.setProperty(\"collapsed\", value);\r\n this.node.isActive = !value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"fixed\", {\r\n /**\r\n * @return Fixed?\r\n */\r\n get: function () {\r\n return this.properties.fixed;\r\n },\r\n /**\r\n * Is this node fixed (immovable)?\r\n *\r\n * @since 4.6.2\r\n * @param value Fixed?\r\n */\r\n set: function (value) {\r\n this.setProperty(\"fixed\", value);\r\n if (this.component) {\r\n this.component.handleFixed(this);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"children\", {\r\n /**\r\n * @return Item's children\r\n */\r\n get: function () {\r\n return this.properties.children;\r\n },\r\n /**\r\n * A list of item's sub-children.\r\n *\r\n * @param children Item's children\r\n */\r\n set: function (children) {\r\n this.setProperty(\"children\", children);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a marker used in the legend for this slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Marker container\r\n */\r\n ForceDirectedSeriesDataItem.prototype.createLegendMarker = function (marker) {\r\n this.component.createLegendMarker(marker, this);\r\n if (!this.node.isActive) {\r\n this.hide();\r\n }\r\n };\r\n Object.defineProperty(ForceDirectedSeriesDataItem.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Legend data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n if (value.label) {\r\n value.label.dataItem = this;\r\n }\r\n if (value.valueLabel) {\r\n value.valueLabel.dataItem = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ForceDirectedSeriesDataItem;\r\n}(SeriesDataItem));\r\nexport { ForceDirectedSeriesDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines [[Series]] for a [[ForceDirectedTree]] chart.\r\n *\r\n * @see {@link IForceDirectedSeriesEvents} for a list of available Events\r\n * @see {@link IForceDirectedSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/ForceDirectedTree/} For more information\r\n * @todo Example\r\n * @since 4.3.8\r\n * @important\r\n */\r\nvar ForceDirectedSeries = /** @class */ (function (_super) {\r\n __extends(ForceDirectedSeries, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ForceDirectedSeries() {\r\n var _this = _super.call(this) || this;\r\n _this._tick = 0;\r\n _this.className = \"ForceDirectedSeries\";\r\n _this.d3forceSimulation = d3force.forceSimulation();\r\n _this.maxRadius = percent(8);\r\n _this.minRadius = percent(1);\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.colors = new ColorSet();\r\n _this.colors.step = 2;\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n _this.manyBodyStrength = -15;\r\n _this.centerStrength = 0.8;\r\n _this.showOnTick = 10;\r\n _this.setPropertyValue(\"dragFixedNodes\", false);\r\n _this.setPropertyValue(\"velocityDecay\", 0.4);\r\n _this.events.on(\"maxsizechanged\", function () {\r\n _this.updateRadiuses(_this.dataItems);\r\n _this.updateLinksAndNodes();\r\n _this.dataItems.each(function (dataItem) {\r\n _this.handleFixed(dataItem);\r\n });\r\n var d3forceSimulation = _this.d3forceSimulation;\r\n var w = $math.max($math.max(50, _this.innerWidth), _this.innerWidth);\r\n var h = $math.max($math.max(50, _this.innerHeight), _this.innerHeight);\r\n if (d3forceSimulation) {\r\n d3forceSimulation.force(\"x\", d3force.forceX().x(w / 2).strength(_this.centerStrength * 100 / w));\r\n d3forceSimulation.force(\"y\", d3force.forceY().y(h / 2).strength(_this.centerStrength * 100 / h));\r\n if (d3forceSimulation.alpha() < 0.4) {\r\n d3forceSimulation.alpha(0.4);\r\n d3forceSimulation.restart();\r\n }\r\n }\r\n });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Returns maximum value from all supplied data items.\r\n *\r\n * @ignore\r\n * @param dataItems List of data items\r\n * @param max Default max\r\n * @return Max\r\n */\r\n ForceDirectedSeries.prototype.getMaxValue = function (dataItems, max) {\r\n var _this = this;\r\n dataItems.each(function (dataItem) {\r\n if (dataItem.value > max) {\r\n max = dataItem.value;\r\n }\r\n if (dataItem.children) {\r\n var cmax = _this.getMaxValue(dataItem.children, max);\r\n if (cmax > max) {\r\n max = cmax;\r\n }\r\n }\r\n });\r\n return max;\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ForceDirectedSeries.prototype.validateDataItems = function () {\r\n var _this = this;\r\n if (this.chart.__disabled) {\r\n _super.prototype.validateDataItems.call(this);\r\n return;\r\n }\r\n this._dataDisposers.push(new ListDisposer(this.links));\r\n this._maxValue = this.getMaxValue(this.dataItems, 0);\r\n this.forceLinks = [];\r\n this.colors.reset();\r\n var index = 0;\r\n var radius = Math.min(this.innerHeight / 3, this.innerWidth / 3);\r\n if (this.dataItems.length <= 1) {\r\n radius = 0;\r\n }\r\n this.dataItems.each(function (dataItem) {\r\n var angle = index / _this.dataItems.length * 360;\r\n var node = dataItem.node;\r\n var xField = node.propertyFields.x;\r\n var yField = node.propertyFields.y;\r\n if (xField && $type.hasValue(dataItem.dataContext[xField])) {\r\n node.x = dataItem.dataContext[xField];\r\n }\r\n else {\r\n node.x = _this.innerWidth / 2 + radius * $math.cos(angle);\r\n }\r\n if (yField && $type.hasValue(dataItem.dataContext[yField])) {\r\n node.y = dataItem.dataContext[yField];\r\n }\r\n else {\r\n node.y = _this.innerHeight / 2 + radius * $math.sin(angle);\r\n }\r\n dataItem.node.fill = dataItem.color;\r\n dataItem.node.stroke = dataItem.color;\r\n index++;\r\n _this.initNode(dataItem);\r\n });\r\n if (this.dataFields.linkWith) {\r\n this.dataItems.each(function (dataItem) {\r\n _this.processLinkWith(dataItem);\r\n });\r\n }\r\n var d3forceSimulation = this.d3forceSimulation;\r\n d3forceSimulation.on(\"tick\", function () {\r\n _this.updateLinksAndNodes();\r\n });\r\n // helps to avoid initial scatter\r\n for (var i = 0; i < 10; i++) {\r\n //d3forceSimulation.tick();\r\n }\r\n d3forceSimulation.alphaDecay(1 - Math.pow(0.001, 1 / 600));\r\n this.chart.feedLegend();\r\n _super.prototype.validateDataItems.call(this);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.handleFixed = function (dataItem) {\r\n var _this = this;\r\n var node = dataItem.node;\r\n var xField = node.propertyFields.x;\r\n var yField = node.propertyFields.y;\r\n if (xField && $type.hasValue(dataItem.dataContext[xField])) {\r\n node.x = dataItem.dataContext[xField];\r\n }\r\n if (yField && $type.hasValue(dataItem.dataContext[yField])) {\r\n node.y = dataItem.dataContext[yField];\r\n }\r\n if (dataItem.fixed) {\r\n if (node.x instanceof Percent) {\r\n node.fx = $utils.relativeToValue(node.x, this.innerWidth);\r\n }\r\n else {\r\n node.fx = node.x;\r\n }\r\n if (node.y instanceof Percent) {\r\n node.fy = $utils.relativeToValue(node.y, this.innerHeight);\r\n }\r\n else {\r\n node.fy = node.y;\r\n }\r\n node.draggable = this.dragFixedNodes;\r\n node.validate(); // for links to redraw\r\n }\r\n else {\r\n node.fx = undefined;\r\n node.fy = undefined;\r\n node.draggable = true;\r\n }\r\n if (dataItem && dataItem.children) {\r\n dataItem.children.each(function (di) {\r\n _this.handleFixed(di);\r\n });\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * @todo description\r\n */\r\n ForceDirectedSeries.prototype.updateNodeList = function () {\r\n var d3forceSimulation = this.d3forceSimulation;\r\n d3forceSimulation.nodes(this.nodes.values);\r\n this._linkForce = d3force.forceLink(this.forceLinks);\r\n d3forceSimulation.force(\"link\", this._linkForce);\r\n this._collisionForce = d3force.forceCollide();\r\n d3forceSimulation.force(\"collision\", this._collisionForce);\r\n var w = $math.max(50, this.innerWidth);\r\n var h = $math.max(50, this.innerHeight);\r\n d3forceSimulation.force(\"x\", d3force.forceX().x(w / 2).strength(this.centerStrength * 100 / w));\r\n d3forceSimulation.force(\"y\", d3force.forceY().y(h / 2).strength(this.centerStrength * 100 / h));\r\n };\r\n /**\r\n * @ignore\r\n * @todo description\r\n */\r\n ForceDirectedSeries.prototype.updateLinksAndNodes = function () {\r\n var _this = this;\r\n if (this._tick < this.showOnTick) {\r\n this._tick++;\r\n this.opacity = 0;\r\n }\r\n else if (this._tick == this.showOnTick) {\r\n this.opacity = 1;\r\n this._tick++;\r\n }\r\n if (this._linkForce) {\r\n this._linkForce.distance(function (linkDatum) {\r\n return _this.getDistance(linkDatum);\r\n });\r\n this._linkForce.strength(function (linkDatum) {\r\n return _this.getStrength(linkDatum);\r\n });\r\n }\r\n if (this._collisionForce) {\r\n this._collisionForce.radius(function (node) {\r\n if (node instanceof ForceDirectedNode) {\r\n var radius = node.circle.pixelRadius;\r\n if (!node.outerCircle.__disabled && !node.outerCircle.disabled && node.outerCircle.visible) {\r\n radius = (radius + 3) * node.outerCircle.scale;\r\n }\r\n return radius + node.paddingRadius;\r\n }\r\n return 1;\r\n });\r\n }\r\n this.d3forceSimulation.force(\"manybody\", d3force.forceManyBody().strength(function (node) {\r\n if (node instanceof ForceDirectedNode) {\r\n return node.circle.pixelRadius * _this.manyBodyStrength;\r\n }\r\n return _this.manyBodyStrength;\r\n }));\r\n };\r\n /**\r\n * @ignore\r\n * @todo description\r\n */\r\n ForceDirectedSeries.prototype.getDistance = function (linkDatum) {\r\n var source = linkDatum.source;\r\n var target = linkDatum.target;\r\n var distance = 0;\r\n if (target.dataItem && source.dataItem) {\r\n var link = source.linksWith.getKey(target.uid);\r\n if (link) {\r\n distance = link.distance;\r\n }\r\n if (!source.isActive) {\r\n distance = 1;\r\n }\r\n if (target.isHidden) {\r\n return 0;\r\n }\r\n return (distance * (source.circle.pixelRadius + target.circle.pixelRadius));\r\n }\r\n return distance;\r\n };\r\n /**\r\n * @ignore\r\n * @todo description\r\n */\r\n ForceDirectedSeries.prototype.getStrength = function (linkDatum) {\r\n var source = linkDatum.source;\r\n var target = linkDatum.target;\r\n var strength = 0;\r\n var link = source.linksWith.getKey(target.uid);\r\n if (link) {\r\n strength = link.strength;\r\n }\r\n if (target.isHidden) {\r\n return 0;\r\n }\r\n return strength;\r\n };\r\n /**\r\n * Handler for drag end event.\r\n *\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.nodeDragEnded = function () {\r\n this.d3forceSimulation.alphaTarget(0);\r\n };\r\n /**\r\n * Handler for drag start event.\r\n *\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.nodeDragStarted = function () {\r\n this.d3forceSimulation.alpha(0.1);\r\n this.d3forceSimulation.restart();\r\n };\r\n /**\r\n * Resets positions of whole tree.\r\n *\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.restartSimulation = function () {\r\n if (this.d3forceSimulation.alpha() <= 0.3) {\r\n this.d3forceSimulation.alpha(0.3);\r\n this.d3forceSimulation.restart();\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.updateRadiuses = function (dataItems) {\r\n var _this = this;\r\n dataItems.each(function (dataItem) {\r\n _this.updateRadius(dataItem);\r\n if (dataItem.childrenInited) {\r\n _this.updateRadiuses(dataItem.children);\r\n }\r\n });\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.updateRadius = function (dataItem) {\r\n var node = dataItem.node;\r\n var minSide = (this.innerWidth + this.innerHeight) / 2;\r\n var minRadius = $utils.relativeToValue(this.minRadius, minSide);\r\n var maxRadius = $utils.relativeToValue(this.maxRadius, minSide);\r\n var radius = minRadius + dataItem.value / this._maxValue * (maxRadius - minRadius);\r\n if (!$type.isNumber(radius)) {\r\n radius = minRadius;\r\n }\r\n //if(!node.circle.isHidden){\r\n node.circle.radius = radius;\r\n //}\r\n node.outerCircle.radius = radius + 3;\r\n node.circle.states.getKey(\"active\").properties.radius = radius;\r\n node.circle.defaultState.properties.radius = radius;\r\n };\r\n /**\r\n * Initializes node.\r\n *\r\n * @ignore\r\n */\r\n ForceDirectedSeries.prototype.initNode = function (dataItem) {\r\n var _this = this;\r\n var node = dataItem.node;\r\n node.parent = this;\r\n this.updateRadius(dataItem);\r\n //let nodeIndex = this.nodes.indexOf(dataItem.node);\r\n if (!dataItem.children || dataItem.children.length == 0) {\r\n node.outerCircle.disabled = true;\r\n node.circle.interactionsEnabled = true;\r\n node.cursorOverStyle = MouseCursorStyle.default;\r\n }\r\n else {\r\n node.cursorOverStyle = MouseCursorStyle.pointer;\r\n }\r\n if (this.dataItemsInvalid && (dataItem.level >= this.maxLevels - 1 || dataItem.collapsed)) {\r\n node.isActive = false;\r\n this.updateNodeList();\r\n return;\r\n }\r\n if (!node.isActive) {\r\n node.hide(0);\r\n }\r\n this.handleFixed(dataItem);\r\n if (dataItem.children) {\r\n var index_1 = 0;\r\n dataItem.childrenInited = true;\r\n if (this.dataItems.length == 1 && dataItem.level == 0) {\r\n this.colors.next();\r\n }\r\n dataItem.children.each(function (child) {\r\n /*\r\n let link = this.links.create();\r\n link.parent = this;\r\n link.zIndex = -1;\r\n dataItem.childLinks.push(link);\r\n link.source = dataItem.node;\r\n let childIndex = this.nodes.indexOf(child.node);\r\n link.target = child.node;\r\n child.parentLink = link;\r\n\r\n this._forceLinks.push({ source: nodeIndex, target: childIndex });\r\n */\r\n var link = node.linkWith(child.node);\r\n child.parentLink = link;\r\n var radius = 2 * node.circle.pixelRadius + child.node.circle.pixelRadius;\r\n var angle = index_1 / dataItem.children.length * 360;\r\n child.node.x = node.pixelX + radius * $math.cos(angle);\r\n child.node.y = node.pixelY + radius * $math.sin(angle);\r\n child.node.circle.radius = 0;\r\n var color;\r\n var diColor = child.properties.color;\r\n if ($type.hasValue(diColor)) {\r\n color = diColor;\r\n }\r\n else {\r\n if (_this.dataItems.length == 1 && dataItem.level == 0) {\r\n color = _this.colors.next();\r\n }\r\n else {\r\n color = dataItem.color;\r\n }\r\n }\r\n child.color = color;\r\n child.node.fill = color;\r\n child.node.stroke = color;\r\n child.parentLink.stroke = color;\r\n child.node.fill = child.node.fill;\r\n child.node.stroke = child.node.stroke;\r\n _this.initNode(child);\r\n index_1++;\r\n });\r\n }\r\n node.isActive = true;\r\n node.show(0);\r\n this.updateNodeList();\r\n };\r\n /**\r\n * @ignore\r\n * @todo description\r\n */\r\n ForceDirectedSeries.prototype.processLinkWith = function (dataItem) {\r\n var _this = this;\r\n if (dataItem.linkWith) {\r\n $array.each(dataItem.linkWith, function (id, index) {\r\n var dataItemToConnect = _this.getDataItemById(_this.dataItems, id);\r\n if (dataItemToConnect) {\r\n dataItem.node.linkWith(dataItemToConnect.node, _this.linkWithStrength);\r\n }\r\n });\r\n }\r\n if (dataItem.children) {\r\n dataItem.children.each(function (child) {\r\n _this.processLinkWith(child);\r\n });\r\n }\r\n };\r\n /**\r\n * Returns a [[ForceDirectedSeriesDataItem]] related to node by specific id.\r\n *\r\n * @param dataItems List of data items to search in\r\n * @param id Id to search for\r\n * @return Data item\r\n */\r\n ForceDirectedSeries.prototype.getDataItemById = function (dataItems, id) {\r\n for (var i = dataItems.length - 1; i >= 0; i--) {\r\n var dataItem = dataItems.getIndex(i);\r\n if (dataItem.id == id) {\r\n return dataItem;\r\n }\r\n if (dataItem.children) {\r\n var di = this.getDataItemById(dataItem.children, id);\r\n if (di) {\r\n return di;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n ForceDirectedSeries.prototype.createDataItem = function () {\r\n return new ForceDirectedSeriesDataItem();\r\n };\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"nodes\", {\r\n /**\r\n * A list of nodes in series.\r\n *\r\n * @return Node list\r\n */\r\n get: function () {\r\n if (!this._nodes) {\r\n var node = this.createNode();\r\n node.applyOnClones = true;\r\n this._disposers.push(node);\r\n this._nodes = new ListTemplate(node);\r\n this._disposers.push(new ListDisposer(this._nodes));\r\n }\r\n return this._nodes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"links\", {\r\n /**\r\n * A list of links between nodes.\r\n *\r\n * @return Link list\r\n */\r\n get: function () {\r\n if (!this._links) {\r\n var link = this.createLink();\r\n link.applyOnClones = true;\r\n this._disposers.push(link);\r\n this._links = new ListTemplate(link);\r\n this._disposers.push(new ListDisposer(this._links));\r\n }\r\n return this._links;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new node.\r\n */\r\n ForceDirectedSeries.prototype.createNode = function () {\r\n return new ForceDirectedNode();\r\n };\r\n /**\r\n * Creates a new link.\r\n */\r\n ForceDirectedSeries.prototype.createLink = function () {\r\n return new ForceDirectedLink();\r\n };\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"minRadius\", {\r\n /**\r\n * @return Minimum radius (px or percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minRadius\");\r\n },\r\n /**\r\n * Smallest possible radius in pixels of the node circle.\r\n *\r\n * If set in percent, it radius will be calculated from average width and\r\n * height of series.\r\n *\r\n * @default Percent(1)\r\n * @param value Minimum radius (px or percent)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"maxRadius\", {\r\n /**\r\n * @return Maximum radius (px or Percent)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxRadius\");\r\n },\r\n /**\r\n * Biggest possible radius in pixels of the node circle.\r\n *\r\n * If set in percent, it radius will be calculated from average width and\r\n * height of series.\r\n *\r\n * @default Percent(8)\r\n * @param value Maximum radius (px or Percent)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"colors\", {\r\n /**\r\n * @return Color set\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colors\");\r\n },\r\n /**\r\n * A color set to be used for nodes.\r\n *\r\n * iIt works like this:\r\n *\r\n * The first level with more than one node, assigns different colors to all\r\n * nodes in this list. Their child nodes inherit the color.\r\n *\r\n * For example, if the top level has one node with three children, the top\r\n * node will get first color, the first child will get second color, etc.\r\n *\r\n * If there are two top nodes, the first top node gets first color, the\r\n * second top node gets the second color. Their subsequent children inherit\r\n * colors.\r\n *\r\n * @param value Color set\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"colors\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"maxLevels\", {\r\n /**\r\n * @return Number of levels\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLevels\");\r\n },\r\n /**\r\n * Number of levels to be displayed initially.\r\n *\r\n * @param value Number of levels\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLevels\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"manyBodyStrength\", {\r\n /**\r\n * @return Body push/attrack strength\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"manyBodyStrength\");\r\n },\r\n /**\r\n * Relative strength each node pushes (or attracts) other nodes (it is\r\n * multiplied by `node.circle.radius` for big nodes to push stronger).\r\n *\r\n * Positive value will make nodes attract each other, while negative will\r\n * push away each other. The bigger the negative number is, the more\r\n * scattered nodes will be.\r\n *\r\n * Available value range: `-XX` to `XX`.\r\n *\r\n * @default -15\r\n * @param value Body push/attrack strength\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"manyBodyStrength\", value)) {\r\n this.restartSimulation();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"centerStrength\", {\r\n /**\r\n * @return Stregth of attraction to center\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"centerStrength\");\r\n },\r\n /**\r\n * Relative strength each child node is pushes (or attracted) to the center\r\n * of the chart.\r\n *\r\n * Positive value will make nodes to be attracted to center, while negative\r\n * will push them away.\r\n *\r\n * Available value range: `-50` to `50`.\r\n *\r\n * @default 0.8\r\n * @param value Stregth of attraction to center\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"centerStrength\", value)) {\r\n this.restartSimulation();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"linkWithStrength\", {\r\n /**\r\n * @return Strength\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"linkWithStrength\");\r\n },\r\n /**\r\n * Relative attraction strength between the nodes connected with `linkWith`.\r\n *\r\n * @since 4.4.8\r\n * @param value Strength\r\n * @default undefined\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"linkWithStrength\", value)) {\r\n this.restartSimulation();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"velocityDecay\", {\r\n /**\r\n * @return Velocity decay\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"velocityDecay\");\r\n },\r\n /**\r\n * The bigger the number the more slowly the nodes will move. Think of it as\r\n * friction.\r\n *\r\n * @since 4.9.2\r\n * @param value Velocity decay\r\n * @default 0.4\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"velocityDecay\", value)) {\r\n this.d3forceSimulation.velocityDecay(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"dragFixedNodes\", {\r\n /**\r\n * @return Allow drag fixed nodes?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"dragFixedNodes\");\r\n },\r\n /**\r\n * Specifies if user can drag fixed nodes.\r\n *\r\n * @since 4.9.0\r\n * @default false\r\n * @param value Allow drag fixed nodes?\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"dragFixedNodes\", value)) {\r\n this.dataItems.each(function (dataItem) {\r\n _this.handleFixed(dataItem);\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Container\r\n * @param dataItem Data item\r\n */\r\n ForceDirectedSeries.prototype.createLegendMarker = function (marker, dataItem) {\r\n marker.children.each(function (child) {\r\n var node = dataItem.node;\r\n if (child instanceof RoundedRectangle) {\r\n child.cornerRadius(40, 40, 40, 40);\r\n }\r\n child.defaultState.properties.fill = node.fill;\r\n child.defaultState.properties.stroke = node.stroke;\r\n child.defaultState.properties.fillOpacity = node.fillOpacity;\r\n child.defaultState.properties.strokeOpacity = node.strokeOpacity;\r\n child.fill = node.fill;\r\n child.stroke = node.stroke;\r\n child.fillOpacity = node.fillOpacity;\r\n child.strokeOpacity = node.strokeOpacity;\r\n if (child.fill == undefined) {\r\n child.__disabled = true;\r\n }\r\n var legendDataItem = marker.dataItem;\r\n legendDataItem.color = node.fill;\r\n legendDataItem.colorOrig = node.fill;\r\n node.events.on(\"propertychanged\", function (ev) {\r\n if (ev.property == \"fill\") {\r\n child.__disabled = false;\r\n if (!child.isActive) {\r\n child.fill = node.fill;\r\n }\r\n child.defaultState.properties.fill = node.fill;\r\n legendDataItem.color = node.fill;\r\n legendDataItem.colorOrig = node.fill;\r\n }\r\n if (ev.property == \"stroke\") {\r\n if (!child.isActive) {\r\n child.stroke = node.stroke;\r\n }\r\n child.defaultState.properties.stroke = node.stroke;\r\n }\r\n }, undefined, false);\r\n });\r\n };\r\n Object.defineProperty(ForceDirectedSeries.prototype, \"showOnTick\", {\r\n /**\r\n * @return Number of ticks to delay rendering\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"showOnTick\");\r\n },\r\n /**\r\n * Renders series hidden until Xth tick.\r\n *\r\n * @default 10\r\n * @since 4.10.17\r\n * @param value Number of ticks to delay rendering\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"showOnTick\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ForceDirectedSeries;\r\n}(Series));\r\nexport { ForceDirectedSeries };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ForceDirectedSeries\"] = ForceDirectedSeries;\r\nregistry.registeredClasses[\"ForceDirectedSeriesDataItem\"] = ForceDirectedSeriesDataItem;\r\n//# sourceMappingURL=ForceDirectedSeries.js.map","/**\r\n * ForceDirectedTree chart module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"../../charts/types/SerialChart\";\r\nimport { ForceDirectedSeries } from \"./ForceDirectedSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $ease from \"../../core/utils/Ease\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[ForceDirectedTree]].\r\n *\r\n * @since 4.3.8\r\n * @see {@link DataItem}\r\n */\r\nvar ForceDirectedTreeDataItem = /** @class */ (function (_super) {\r\n __extends(ForceDirectedTreeDataItem, _super);\r\n function ForceDirectedTreeDataItem() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return ForceDirectedTreeDataItem;\r\n}(SerialChartDataItem));\r\nexport { ForceDirectedTreeDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A main class for [[ForceDirectedTree]] chart type.\r\n *\r\n * @see {@link IForceDirectedTreeEvents} for a list of available Events\r\n * @see {@link IForceDirectedTreeAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/force-directed/} For more information\r\n * @since 4.3.8\r\n * @important\r\n */\r\nvar ForceDirectedTree = /** @class */ (function (_super) {\r\n __extends(ForceDirectedTree, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ForceDirectedTree() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Default duration of zoom animations (ms).\r\n */\r\n _this.zoomDuration = 1000;\r\n /**\r\n * Default zooming animation easing function.\r\n */\r\n _this.zoomEasing = $ease.cubicOut;\r\n /**\r\n * Smallest available zoom level. The chart will not allow to zoom out past\r\n * this setting.\r\n *\r\n * NOTE: Should be power of 2.\r\n *\r\n * @default 1\r\n */\r\n _this.minZoomLevel = 1;\r\n /**\r\n * Biggest available zoom level. The chart will not allow to zoom in past\r\n * this setting.\r\n *\r\n * NOTE: Should be power of 2.\r\n *\r\n * @default 32\r\n */\r\n _this.maxZoomLevel = 16;\r\n _this.className = \"ForceDirectedTree\";\r\n _this.seriesContainer.isMeasured = true;\r\n _this.seriesContainer.layout = \"absolute\";\r\n _this.mouseWheelBehavior = \"none\";\r\n _this.zoomStep = 2;\r\n _this.seriesContainer.background.fillOpacity = 0;\r\n _this.seriesContainer.background.fill = color(\"#ffffff\");\r\n var zoomOutButton = _this.createChild(ZoomOutButton);\r\n zoomOutButton.shouldClone = false;\r\n zoomOutButton.x = percent(100);\r\n zoomOutButton.horizontalCenter = \"right\";\r\n zoomOutButton.valign = \"top\";\r\n zoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\r\n zoomOutButton.marginTop = 5;\r\n zoomOutButton.marginRight = 5;\r\n zoomOutButton.isMeasured = false;\r\n zoomOutButton.adapter.add(\"dx\", function (dx, target) {\r\n return -zoomOutButton.marginRight;\r\n });\r\n zoomOutButton.hide(0);\r\n _this.zoomOutButton = zoomOutButton;\r\n _this.addDisposer(_this.seriesContainer.events.on(\"sizechanged\", function () {\r\n if (_this.seriesContainer.scale != 1) {\r\n _this.zoomOutButton.show();\r\n }\r\n else {\r\n _this.zoomOutButton.hide();\r\n }\r\n }));\r\n var interaction = getInteraction();\r\n _this._disposers.push(interaction.body.events.on(\"down\", function (event) {\r\n if (_this.zoomable) {\r\n var svgPoint = $utils.documentPointToSvg(event.pointer.point, _this.htmlContainer);\r\n if (svgPoint.x > 0 && svgPoint.y > 0 && svgPoint.x < _this.svgContainer.width && svgPoint.y < _this.svgContainer.height) {\r\n _this.seriesContainer.dragStart(event.pointer);\r\n }\r\n }\r\n }, _this));\r\n _this._disposers.push(interaction.body.events.on(\"up\", function (event) {\r\n if (_this.zoomable) {\r\n _this.seriesContainer.dragStop(event.pointer, true);\r\n }\r\n }, _this));\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creates and returns a new series of the suitable type.\r\n *\r\n * @return New series\r\n */\r\n ForceDirectedTree.prototype.createSeries = function () {\r\n return new ForceDirectedSeries();\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n ForceDirectedTree.prototype.createDataItem = function () {\r\n return new ForceDirectedTreeDataItem();\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n *\r\n * @ignore\r\n */\r\n ForceDirectedTree.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n this.series.each(function (series) {\r\n if (!series.hiddenInLegend) {\r\n var dataItems = series.dataItems;\r\n if (dataItems.length == 1) {\r\n var children = series.dataItems.getIndex(0).children;\r\n if (children && children.length > 0) {\r\n dataItems = children;\r\n }\r\n }\r\n dataItems.each(function (dataItem) {\r\n if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n var legendSettings = series.legendSettings;\r\n if (legendSettings) {\r\n if (legendSettings.labelText) {\r\n legend.labels.template.text = legendSettings.labelText;\r\n }\r\n if (legendSettings.itemLabelText) {\r\n legend.labels.template.text = legendSettings.itemLabelText;\r\n }\r\n if (legendSettings.valueText) {\r\n legend.valueLabels.template.text = legendSettings.valueText;\r\n }\r\n if (legendSettings.itemValueText) {\r\n legend.valueLabels.template.text = legendSettings.itemValueText;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"name\";\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ForceDirectedTree.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Force directed tree\");\r\n }\r\n };\r\n /**\r\n * Since this chart uses hierarchical data, we need to remove childrent\r\n * dataField from export of non-hierarchical formats such as CSV and XSLX.\r\n *\r\n * @return Export\r\n */\r\n ForceDirectedTree.prototype.getExporting = function () {\r\n var _this = this;\r\n var exporting = _super.prototype.getExporting.call(this);\r\n exporting.adapter.add(\"formatDataFields\", function (info) {\r\n if (info.format == \"csv\" || info.format == \"xlsx\") {\r\n _this.series.each(function (series) {\r\n if ($type.hasValue(series.dataFields.children)) {\r\n delete info.dataFields[series.dataFields.children];\r\n }\r\n });\r\n }\r\n return info;\r\n });\r\n return exporting;\r\n };\r\n /**\r\n * Handles mouse wheel event, e.g. user rotates mouse wheel while over the\r\n * map: zooms in or out depending on the direction of the wheel turn.\r\n *\r\n * @param event Original event\r\n */\r\n ForceDirectedTree.prototype.handleWheel = function (event) {\r\n var point = $utils.documentPointToSprite(event.point, this.seriesContainer);\r\n var zoomLevel = this.seriesContainer.scale;\r\n if (event.shift.y < 0) {\r\n zoomLevel *= this.zoomStep;\r\n }\r\n else {\r\n zoomLevel /= this.zoomStep;\r\n }\r\n zoomLevel = $math.fitToRange(zoomLevel, this.minZoomLevel, this.maxZoomLevel);\r\n this.zoomToPoint(point, zoomLevel);\r\n };\r\n /**\r\n * Zooms the chart to particular point.\r\n *\r\n * @from 4.10.0\r\n * @param point A point to zoom to\r\n * @param zoomLevel Zoom level\r\n * @param center Should the chart center on the target point?\r\n */\r\n ForceDirectedTree.prototype.zoomToPoint = function (point, zoomLevel, center) {\r\n var container = this.seriesContainer;\r\n var svgPoint;\r\n if (center) {\r\n svgPoint = { x: this.maxWidth / 2, y: this.maxHeight / 2 };\r\n }\r\n else {\r\n svgPoint = $utils.spritePointToSvg(point, container);\r\n }\r\n var x = svgPoint.x - point.x * zoomLevel;\r\n var y = svgPoint.y - point.y * zoomLevel;\r\n container.animate([{ property: \"scale\", to: zoomLevel }, { property: \"x\", to: x }, { property: \"y\", to: y }], this.zoomDuration, this.zoomEasing);\r\n };\r\n /**\r\n * Zooms the chart to particular data item (node).\r\n *\r\n * @from 4.10.0\r\n * @param dataItem A data item to zoom to\r\n * @param zoomLevel Zoom level\r\n * @param center Should the chart center on the target point?\r\n */\r\n ForceDirectedTree.prototype.zoomToDataItem = function (dataItem, zoomLevel, center) {\r\n var x = dataItem.node.pixelX;\r\n var y = dataItem.node.pixelY;\r\n if (!$type.isNumber(zoomLevel)) {\r\n zoomLevel = this.seriesContainer.scale * this.zoomStep;\r\n }\r\n this.zoomToPoint({ x: x, y: y }, zoomLevel, center);\r\n };\r\n /**\r\n * Zooms out the chart to initial full view.\r\n *\r\n * @from 4.10.0\r\n */\r\n ForceDirectedTree.prototype.zoomOut = function () {\r\n var container = this.seriesContainer;\r\n this.zoomToPoint({ x: container.pixelWidth / 2, y: container.pixelHeight / 2 }, 1, true);\r\n };\r\n Object.defineProperty(ForceDirectedTree.prototype, \"zoomable\", {\r\n /**\r\n * @return Zoomable\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zoomable\");\r\n },\r\n /**\r\n * When user zooms in or out current zoom level is multiplied or divided\r\n * by value of this setting.\r\n *\r\n * @default false\r\n * @since 4.10.0\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/force-directed/#Zooming} for more information about zooming ForceDirectedTree\r\n * @param value Zoomable\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n if (this.setPropertyValue(\"zoomable\", value)) {\r\n if (value) {\r\n this.seriesContainer.resizable = true;\r\n this.seriesContainer.draggable = true;\r\n this.seriesContainer.dragWhileResize = true;\r\n this.mouseWheelBehavior = \"zoom\";\r\n this._backgroundZoomoutDisposer = this.seriesContainer.background.events.on(\"hit\", function () {\r\n _this.zoomOut();\r\n }, this, false);\r\n this._disposers.push(this._backgroundZoomoutDisposer);\r\n this._disposers.push(this.seriesContainer.events.on(\"sizechanged\", function () {\r\n _this.series.each(function (series) {\r\n series.nodes.each(function (node) {\r\n node.updateLabelSize();\r\n });\r\n });\r\n }));\r\n }\r\n else {\r\n this.seriesContainer.resizable = false;\r\n this.seriesContainer.draggable = false;\r\n this.seriesContainer.dragWhileResize = false;\r\n this.mouseWheelBehavior = \"none\";\r\n if (this._backgroundZoomoutDisposer) {\r\n this._backgroundZoomoutDisposer.dispose();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedTree.prototype, \"mouseWheelBehavior\", {\r\n /**\r\n * @return Mouse wheel behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"mouseWheelBehavior\");\r\n },\r\n /**\r\n * Specifies what should chart do if when mouse wheel is rotated.\r\n *\r\n * @param Mouse wheel behavior\r\n * @since 4.10.0\r\n * @default none\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n if (value != \"none\") {\r\n this._mouseWheelDisposer = this.chartContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer);\r\n }\r\n else {\r\n if (this._mouseWheelDisposer) {\r\n this._mouseWheelDisposer.dispose();\r\n }\r\n this.chartContainer.wheelable = false;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedTree.prototype, \"zoomStep\", {\r\n /**\r\n * @return Zoom factor\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zoomStep\");\r\n },\r\n /**\r\n * When user zooms in or out current zoom level is multiplied or divided\r\n * by value of this setting.\r\n *\r\n * @since 4.10.0\r\n * @default 2\r\n * @param value Zoom factor\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"zoomStep\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ForceDirectedTree.prototype, \"zoomOutButton\", {\r\n /**\r\n * @return Zoom out button\r\n */\r\n get: function () {\r\n return this._zoomOutButton;\r\n },\r\n /**\r\n * A [[Button]] element that is used for zooming out the chart.\r\n *\r\n * This button appears only when chart is zoomed in, and disappears\r\n * autoamatically when it is zoome dout.\r\n *\r\n * @param button Zoom out button\r\n */\r\n set: function (button) {\r\n var _this = this;\r\n this._zoomOutButton = button;\r\n if (button) {\r\n button.events.on(\"hit\", function () {\r\n _this.zoomOut();\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ForceDirectedTree;\r\n}(SerialChart));\r\nexport { ForceDirectedTree };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ForceDirectedTree\"] = ForceDirectedTree;\r\nregistry.registeredClasses[\"ForceDirectedTreeDataItem\"] = ForceDirectedTreeDataItem;\r\n//# sourceMappingURL=ForceDirectedTree.js.map","\r\n\r\n\r\n\r\n","import mod from \"-!C:\\\\Users\\\\sequintero\\\\node_modules\\\\cache-loader\\\\dist\\\\cjs.js??ref--12-0!C:\\\\Users\\\\sequintero\\\\node_modules\\\\thread-loader\\\\dist\\\\cjs.js!C:\\\\Users\\\\sequintero\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\cache-loader\\\\dist\\\\cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sircap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!C:\\\\Users\\\\sequintero\\\\node_modules\\\\cache-loader\\\\dist\\\\cjs.js??ref--12-0!C:\\\\Users\\\\sequintero\\\\node_modules\\\\thread-loader\\\\dist\\\\cjs.js!C:\\\\Users\\\\sequintero\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\cache-loader\\\\dist\\\\cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sircap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./sircap.vue?vue&type=template&id=a9515d1a&\"\nimport script from \"./sircap.vue?vue&type=script&lang=js&\"\nexport * from \"./sircap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./sircap.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\mini-css-extract-plugin\\\\dist\\\\loader.js??ref--8-oneOf-1-0!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\css-loader\\\\dist\\\\cjs.js??ref--8-oneOf-1-1!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader\\\\lib\\\\loaders\\\\stylePostLoader.js!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\postcss-loader\\\\src\\\\index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\cache-loader\\\\dist\\\\cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sircap.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\mini-css-extract-plugin\\\\dist\\\\loader.js??ref--8-oneOf-1-0!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\css-loader\\\\dist\\\\cjs.js??ref--8-oneOf-1-1!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader\\\\lib\\\\loaders\\\\stylePostLoader.js!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\postcss-loader\\\\src\\\\index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!C:\\\\Users\\\\sequintero\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\cache-loader\\\\dist\\\\cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sircap.vue?vue&type=style&index=0&lang=scss&\"","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n"],"sourceRoot":""}