@amcharts/amcharts5 5.16.1 → 5.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/.internal/charts/hierarchy/Hierarchy.d.ts +21 -0
  2. package/.internal/charts/hierarchy/Hierarchy.d.ts.map +1 -1
  3. package/.internal/charts/hierarchy/Hierarchy.js +60 -3
  4. package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
  5. package/.internal/charts/hierarchy/HierarchyDefaultTheme.d.ts.map +1 -1
  6. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +1 -0
  7. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
  8. package/.internal/charts/hierarchy/LinkedHierarchy.d.ts +1 -0
  9. package/.internal/charts/hierarchy/LinkedHierarchy.d.ts.map +1 -1
  10. package/.internal/charts/hierarchy/LinkedHierarchy.js +9 -9
  11. package/.internal/charts/hierarchy/LinkedHierarchy.js.map +1 -1
  12. package/.internal/charts/hierarchy/Tree.d.ts +20 -0
  13. package/.internal/charts/hierarchy/Tree.d.ts.map +1 -1
  14. package/.internal/charts/hierarchy/Tree.js +11 -1
  15. package/.internal/charts/hierarchy/Tree.js.map +1 -1
  16. package/.internal/charts/xy/axes/ValueAxis.d.ts +15 -2
  17. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  18. package/.internal/charts/xy/axes/ValueAxis.js +102 -79
  19. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  20. package/.internal/charts/xy/series/XYSeries.js +1 -1
  21. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  22. package/.internal/core/Registry.js +1 -1
  23. package/.internal/core/Registry.js.map +1 -1
  24. package/.internal/core/util/PopulateString.d.ts +23 -1
  25. package/.internal/core/util/PopulateString.d.ts.map +1 -1
  26. package/.internal/core/util/PopulateString.js +19 -5
  27. package/.internal/core/util/PopulateString.js.map +1 -1
  28. package/CHANGELOG.md +15 -0
  29. package/README.md +12 -0
  30. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  31. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  32. package/examples/javascript/flow-chord/package.json +1 -1
  33. package/examples/javascript/flow-chord-directed/package.json +1 -1
  34. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  35. package/examples/javascript/flow-sankey/package.json +1 -1
  36. package/examples/javascript/gantt/package.json +1 -1
  37. package/examples/javascript/gantt-multilevel/package.json +1 -1
  38. package/examples/javascript/gantt-simple/package.json +1 -1
  39. package/examples/javascript/gauge/package.json +1 -1
  40. package/examples/javascript/gauge-bands/package.json +1 -1
  41. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  42. package/examples/javascript/hierarchy-pack/package.json +1 -1
  43. package/examples/javascript/hierarchy-partition/package.json +1 -1
  44. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  45. package/examples/javascript/hierarchy-tree/package.json +1 -1
  46. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  47. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  48. package/examples/javascript/jest/package.json +1 -1
  49. package/examples/javascript/json-pie/package.json +1 -1
  50. package/examples/javascript/json-xy/package.json +1 -1
  51. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  52. package/examples/javascript/map-clustered-points/package.json +1 -1
  53. package/examples/javascript/map-day-and-night/package.json +1 -1
  54. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  55. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  56. package/examples/javascript/map-with-bubbles/package.json +1 -1
  57. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  58. package/examples/javascript/misc-40-charts/package.json +1 -1
  59. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  60. package/examples/javascript/pie-chart/package.json +1 -1
  61. package/examples/javascript/pie-donut-chart/package.json +1 -1
  62. package/examples/javascript/pie-variable-radius/package.json +1 -1
  63. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  64. package/examples/javascript/radar-heat-map/package.json +1 -1
  65. package/examples/javascript/radar-line/package.json +1 -1
  66. package/examples/javascript/radar-time-line/package.json +1 -1
  67. package/examples/javascript/sliced-funnel/package.json +1 -1
  68. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  69. package/examples/javascript/sliced-pyramid/package.json +1 -1
  70. package/examples/javascript/stock-chart/package.json +1 -1
  71. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  72. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  73. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  74. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  75. package/examples/javascript/stock-chart-live/package.json +1 -1
  76. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  77. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  78. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  79. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  80. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  81. package/examples/javascript/venn-diagram/package.json +1 -1
  82. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  83. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  84. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  85. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  86. package/examples/javascript/xy-bubble/package.json +1 -1
  87. package/examples/javascript/xy-candlestick/package.json +1 -1
  88. package/examples/javascript/xy-clustered-column/package.json +1 -1
  89. package/examples/javascript/xy-column/package.json +1 -1
  90. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  91. package/examples/javascript/xy-data-grouping/package.json +1 -1
  92. package/examples/javascript/xy-draggable-range/package.json +1 -1
  93. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  94. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  95. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  96. package/examples/javascript/xy-line/package.json +1 -1
  97. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  98. package/examples/javascript/xy-live-data/package.json +1 -1
  99. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  100. package/examples/javascript/xy-ohlc/package.json +1 -1
  101. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  102. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  103. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  104. package/examples/javascript/xy-stacked-column/package.json +1 -1
  105. package/examples/javascript/xy-stacked-step/package.json +1 -1
  106. package/examples/javascript/xy-stock/package.json +1 -1
  107. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  108. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  109. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  110. package/examples/typescript/flow-chord/package.json +1 -1
  111. package/examples/typescript/flow-chord-directed/package.json +1 -1
  112. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  113. package/examples/typescript/flow-sankey/package.json +1 -1
  114. package/examples/typescript/gantt/package.json +1 -1
  115. package/examples/typescript/gantt-multilevel/package.json +1 -1
  116. package/examples/typescript/gantt-simple/package.json +1 -1
  117. package/examples/typescript/gauge/package.json +1 -1
  118. package/examples/typescript/gauge-bands/package.json +1 -1
  119. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  120. package/examples/typescript/hierarchy-pack/package.json +1 -1
  121. package/examples/typescript/hierarchy-partition/package.json +1 -1
  122. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  123. package/examples/typescript/hierarchy-tree/package.json +1 -1
  124. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  125. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  126. package/examples/typescript/jest/package.json +1 -1
  127. package/examples/typescript/json-pie/package.json +1 -1
  128. package/examples/typescript/json-xy/package.json +1 -1
  129. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  130. package/examples/typescript/map-clustered-points/package.json +1 -1
  131. package/examples/typescript/map-day-and-night/package.json +1 -1
  132. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  133. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  134. package/examples/typescript/map-with-bubbles/package.json +1 -1
  135. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  136. package/examples/typescript/misc-40-charts/package.json +1 -1
  137. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  138. package/examples/typescript/pie-chart/package.json +1 -1
  139. package/examples/typescript/pie-donut-chart/package.json +1 -1
  140. package/examples/typescript/pie-variable-radius/package.json +1 -1
  141. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  142. package/examples/typescript/radar-heat-map/package.json +1 -1
  143. package/examples/typescript/radar-line/package.json +1 -1
  144. package/examples/typescript/radar-time-line/package.json +1 -1
  145. package/examples/typescript/sliced-funnel/package.json +1 -1
  146. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  147. package/examples/typescript/sliced-pyramid/package.json +1 -1
  148. package/examples/typescript/stock-chart/package.json +1 -1
  149. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  150. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  151. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  152. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  153. package/examples/typescript/stock-chart-live/package.json +1 -1
  154. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  155. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  156. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  157. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  158. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  159. package/examples/typescript/venn-diagram/package.json +1 -1
  160. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  161. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  162. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  163. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  164. package/examples/typescript/xy-bubble/package.json +1 -1
  165. package/examples/typescript/xy-candlestick/package.json +1 -1
  166. package/examples/typescript/xy-clustered-column/package.json +1 -1
  167. package/examples/typescript/xy-column/package.json +1 -1
  168. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  169. package/examples/typescript/xy-data-grouping/package.json +1 -1
  170. package/examples/typescript/xy-draggable-range/package.json +1 -1
  171. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  172. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  173. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  174. package/examples/typescript/xy-line/package.json +1 -1
  175. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  176. package/examples/typescript/xy-live-data/package.json +1 -1
  177. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  178. package/examples/typescript/xy-ohlc/package.json +1 -1
  179. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  180. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  181. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  182. package/examples/typescript/xy-stacked-column/package.json +1 -1
  183. package/examples/typescript/xy-stacked-step/package.json +1 -1
  184. package/examples/typescript/xy-stock/package.json +1 -1
  185. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  186. package/index.d.ts +1 -0
  187. package/index.d.ts.map +1 -1
  188. package/index.js +1 -0
  189. package/index.js.map +1 -1
  190. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedHierarchy.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/LinkedHierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkedHierarchy.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/LinkedHierarchy.ts"],"names":[],"mappings":"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"}
@@ -97,16 +97,23 @@ export class LinkedHierarchy extends Hierarchy {
97
97
  dataItem.setRaw("childLinks", []);
98
98
  dataItem.setRaw("links", []);
99
99
  super.processDataItem(dataItem);
100
+ // Run updateLinkWith once after the entire tree is processed, not per-node
101
+ if (!dataItem.get("parent")) {
102
+ this.updateLinkWith(this.dataItems);
103
+ }
104
+ }
105
+ addChildData(dataItem, data) {
106
+ super.addChildData(dataItem, data);
107
+ this.updateLinkWith(this.dataItems);
100
108
  }
101
109
  _processDataItem(dataItem) {
102
110
  super._processDataItem(dataItem);
103
111
  const parentDataItem = dataItem.get("parent");
104
- if (parentDataItem && parentDataItem.get("depth") >= this.get("topDepth")) {
112
+ if (parentDataItem && parentDataItem.get("depth") >= this.get("topDepth", 0)) {
105
113
  const link = this.linkDataItems(parentDataItem, dataItem);
106
114
  dataItem.setRaw("parentLink", link);
107
115
  }
108
116
  const node = dataItem.get("node");
109
- this.updateLinkWith(this.dataItems);
110
117
  node._updateLinks(0);
111
118
  }
112
119
  /**
@@ -144,13 +151,6 @@ export class LinkedHierarchy extends Hierarchy {
144
151
  _updateNode(dataItem) {
145
152
  super._updateNode(dataItem);
146
153
  this._animatePositions(dataItem);
147
- const hierarchyNode = dataItem.get("d3HierarchyNode");
148
- const hierarchyChildren = hierarchyNode.children;
149
- if (hierarchyChildren) {
150
- $array.each(hierarchyChildren, (hierarchyChild) => {
151
- this._updateNodes(hierarchyChild);
152
- });
153
- }
154
154
  const fill = dataItem.get("fill");
155
155
  const fillPattern = dataItem.get("fillPattern");
156
156
  const circle = dataItem.get("circle");
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedHierarchy.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/LinkedHierarchy.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\nimport type { Bullet } from \"../../core/render/Bullet\";\nimport type { Root } from \"../../core/Root\";\nimport type { IPoint } from \"../../core/util/IPoint\";\nimport type * as d3hierarchy from \"d3-hierarchy\";\n\nimport { Hierarchy, IHierarchySettings, IHierarchyDataItem, IHierarchyPrivate, IHierarchyEvents } from \"./Hierarchy\";\nimport { Container } from \"../../core/render/Container\";\nimport { LinkedHierarchyNode } from \"./LinkedHierarchyNode\";\nimport { HierarchyLink } from \"./HierarchyLink\";\nimport { Template } from \"../../core/util/Template\";\nimport { Circle } from \"../../core/render/Circle\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { List } from \"../../core/util/List\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\n\n/**\n * @ignore\n */\nexport interface ILinkedHierarchyDataObject {\n\tname?: string,\n\tvalue?: number,\n\tchildren?: ILinkedHierarchyDataObject[],\n\tdataItem?: DataItem<ILinkedHierarchyDataItem>\n};\n\nexport interface ILinkedHierarchyDataItem extends IHierarchyDataItem {\n\n\t/**\n\t * An array of child data items.\n\t */\n\tchildren: Array<DataItem<ILinkedHierarchyDataItem>>;\n\n\t/**\n\t * A data item of a parent node.\n\t */\n\tparent: DataItem<ILinkedHierarchyDataItem>;\n\n\t/**\n\t * A related node.\n\t */\n\tnode: LinkedHierarchyNode;\n\n\t/**\n\t * [[Circle]] element of the related node.\n\t */\n\tcircle: Circle;\n\n\t/**\n\t * [[Circle]] element of the related node, representing outer circle.\n\t */\n\touterCircle: Circle;\n\n\t/**\n\t * A [[HierarchyLink]] leading to parent node.\n\t */\n\tparentLink: HierarchyLink;\n\n\t/**\n\t * An [[HierarchyLink]] leading to parent node.\n\t */\n\tlinks: Array<HierarchyLink>;\n\n\t/**\n\t * An array of [[HierarchyLink]] objects leading to child nodes.\n\t */\n\tchildLinks: Array<HierarchyLink>;\n\n\t/**\n\t * An array of IDs of directly linked nodes.\n\t */\n\tlinkWith: Array<string>;\n\n\t/**\n\t * @ignore\n\t */\n\td3HierarchyNode: d3hierarchy.HierarchyPointNode<ILinkedHierarchyDataObject>;\n}\n\nexport interface ILinkedHierarchySettings extends IHierarchySettings {\n\n\t/**\n\t * A field in data which holds IDs of nodes to link with.\n\t */\n\tlinkWithField?: string;\n\n}\n\nexport interface ILinkedHierarchyPrivate extends IHierarchyPrivate {\n}\n\nexport interface ILinkedHierarchyEvents extends IHierarchyEvents {\n}\n\n/**\n * A base class for linked hierarchy series.\n */\nexport abstract class LinkedHierarchy extends Hierarchy {\n\n\tpublic static className: string = \"LinkedHierarchy\";\n\tpublic static classNames: Array<string> = Hierarchy.classNames.concat([LinkedHierarchy.className]);\n\n\tdeclare public _settings: ILinkedHierarchySettings;\n\tdeclare public _privateSettings: ILinkedHierarchyPrivate;\n\tdeclare public _dataItemSettings: ILinkedHierarchyDataItem;\n\tdeclare public _events: ILinkedHierarchyEvents;\n\n\tpublic linkBullets: List<<D extends DataItem<IHierarchyDataItem>>(root: Root, source: D, target:D) => Bullet | undefined> = new List();\n\n\tprotected _afterNew() {\n\t\tthis.fields.push(\"linkWith\", \"x\", \"y\");\n\n\t\tthis._disposers.push(this.linkBullets.events.onAll(() => {\n\t\t\tthis.links.each((link) => {\n\t\t\t\tlink._handleBullets(this.linkBullets);\n\t\t\t})\n\t\t}))\n\n\t\tsuper._afterNew();\n\t}\n\n\t/**\n\t * A list of nodes in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<LinkedHierarchyNode>\n\t */\n\tpublic readonly nodes: ListTemplate<LinkedHierarchyNode> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => LinkedHierarchyNode._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.nodes.template.get(\"themeTags\", []), [this._tag, \"linkedhierarchy\", \"hierarchy\", \"node\"]),\n\t\t\tx: this.width() / 2,\n\t\t\ty: this.height() / 2\n\t\t}, [this.nodes.template])\n\t));\n\n\t/**\n\t * A list of node circle elements in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<Circle>\n\t */\n\tpublic readonly circles: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => Circle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.circles.template.get(\"themeTags\", []), [this._tag, \"shape\"])\n\t\t}, [this.circles.template])\n\t));\n\n\t/**\n\t * A list of node outer circle elements in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<Circle>\n\t */\n\tpublic readonly outerCircles: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => Circle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.outerCircles.template.get(\"themeTags\", []), [this._tag, \"outer\", \"shape\"])\n\t\t}, [this.outerCircles.template])\n\t));\n\n\t/**\n\t * A list of link elements in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<HierarchyLink>\n\t */\n\tpublic readonly links: ListTemplate<HierarchyLink> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => HierarchyLink._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.links.template.get(\"themeTags\", []), [this._tag, \"linkedhierarchy\", \"hierarchy\", \"link\"])\n\t\t}, [this.links.template])\n\t));\n\n\t/**\n\t * A [[Container]] that link elements are placed in.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly linksContainer = this.children.moveValue(Container.new(this._root, {}), 0);\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeNode(dataItem: DataItem<this[\"_dataItemSettings\"]>): LinkedHierarchyNode {\n\t\tconst node = super.makeNode(dataItem) as LinkedHierarchyNode;\n\n\t\tconst circle = node.children.moveValue(this.circles.make(), 0);\n\t\tthis.circles.push(circle);\n\t\tnode.setPrivate(\"tooltipTarget\", circle);\n\t\tdataItem.setRaw(\"circle\", circle);\n\n\t\tconst outerCircle = node.children.moveValue(this.outerCircles.make(), 0);\n\t\tthis.outerCircles.push(outerCircle);\n\t\tdataItem.setRaw(\"outerCircle\", outerCircle);\n\n\t\tconst label = dataItem.get(\"label\");\n\n\t\tcircle.on(\"radius\", () => {\n\t\t\tconst d = circle.get(\"radius\", this.width()) * 2;\n\t\t\tlabel.setAll({ maxWidth: d, maxHeight: d })\n\t\t\touterCircle.set(\"radius\", d / 2);\n\n\t\t\tthis._handleRadiusChange();\n\t\t})\n\n\t\tconst d = circle.get(\"radius\", this.width()) * 2;\n\t\tlabel.setAll({ maxWidth: d, maxHeight: d });\n\n\t\tcircle._setDataItem(dataItem);\n\t\touterCircle._setDataItem(dataItem);\n\n\t\treturn node;\n\t}\n\n\tpublic _handleRadiusChange() {\n\n\t}\n\n\tprotected processDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tdataItem.setRaw(\"childLinks\", []);\n\t\tdataItem.setRaw(\"links\", []);\n\t\tsuper.processDataItem(dataItem);\n\t}\n\n\tprotected _processDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._processDataItem(dataItem);\n\n\t\tconst parentDataItem = dataItem.get(\"parent\");\n\t\tif (parentDataItem && parentDataItem.get(\"depth\") >= this.get(\"topDepth\")) {\n\t\t\tconst link = this.linkDataItems(parentDataItem, dataItem);\n\t\t\tdataItem.setRaw(\"parentLink\", link);\n\t\t}\n\n\t\tconst node = dataItem.get(\"node\");\n\t\tthis.updateLinkWith(this.dataItems);\n\t\tnode._updateLinks(0);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic updateLinkWith(dataItems: Array<DataItem<this[\"_dataItemSettings\"]>>) {\n\t\t$array.each(dataItems, (dataItem) => {\n\t\t\tconst linkWith = dataItem.get(\"linkWith\");\n\t\t\tif (linkWith) {\n\t\t\t\t$array.each(linkWith, (id) => {\n\t\t\t\t\tconst linkWithDataItem = this._getDataItemById(this.dataItems, id);\n\n\t\t\t\t\tif (linkWithDataItem) {\n\t\t\t\t\t\tthis.linkDataItems(dataItem, linkWithDataItem);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst children = dataItem.get(\"children\");\n\t\t\tif (children) {\n\t\t\t\tthis.updateLinkWith(children);\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected _getPoint(hierarchyNode: this[\"_dataItemSettings\"][\"d3HierarchyNode\"]): IPoint {\n\t\treturn { x: hierarchyNode.x, y: hierarchyNode.y };\n\t}\n\n\tprotected _animatePositions(dataItem: DataItem<this[\"_dataItemSettings\"]>){\n\t\tconst node = dataItem.get(\"node\");\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst point = this._getPoint(hierarchyNode);\n\n\t\tconst duration = this.get(\"animationDuration\", 0);\n\t\tconst easing = this.get(\"animationEasing\");\n\n\t\tnode.animate({ key: \"x\", to: point.x, duration: duration, easing: easing });\n\t\tnode.animate({ key: \"y\", to: point.y, duration: duration, easing: easing });\n\t}\n\n\tprotected _updateNode(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._updateNode(dataItem);\n\n\t\tthis._animatePositions(dataItem);\n\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst hierarchyChildren = hierarchyNode.children;\n\t\tif (hierarchyChildren) {\n\t\t\t$array.each(hierarchyChildren, (hierarchyChild) => {\n\t\t\t\tthis._updateNodes(hierarchyChild)\n\t\t\t})\n\t\t}\n\n\t\tconst fill = dataItem.get(\"fill\");\n\t\tconst fillPattern = dataItem.get(\"fillPattern\");\n\t\tconst circle = dataItem.get(\"circle\");\n\t\tconst children = dataItem.get(\"children\");\n\n\t\tif (circle) {\n\t\t\tcircle._setDefault(\"fill\", fill);\n\t\t\tcircle._setDefault(\"fillPattern\", fillPattern);\n\t\t\tcircle._setDefault(\"stroke\", fill);\n\t\t}\n\n\t\tconst outerCircle = dataItem.get(\"outerCircle\");\n\t\tif (outerCircle) {\n\t\t\touterCircle._setDefault(\"fill\", fill);\n\t\t\touterCircle._setDefault(\"stroke\", fill);\n\n\t\t\tif (!children || children.length == 0) {\n\t\t\t\touterCircle.setPrivate(\"visible\", false);\n\t\t\t}\n\t\t\telse{\n\t\t\t\touterCircle.setPrivate(\"visible\", true);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Link two data items with a link element.\n\t *\n\t * @param source Source node data item\n\t * @param target Target node data item\n\t * @param strength Link strength\n\t * @return Link element\n\t */\n\tpublic linkDataItems(source: DataItem<this[\"_dataItemSettings\"]>, target: DataItem<this[\"_dataItemSettings\"]>, strength?: number): HierarchyLink {\n\n\t\tlet link!: HierarchyLink;\n\n\t\tconst sourceLinks = source.get(\"links\");\n\n\t\tif (sourceLinks) {\n\t\t\t$array.each(sourceLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == target) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tconst targetLinks = target.get(\"links\");\n\n\t\tif (targetLinks) {\n\t\t\t$array.each(targetLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == source) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (!link) {\n\t\t\tlink = this.links.make();\n\t\t\tlink.series = this;\n\t\t\tthis.links.push(link);\n\t\t\tthis.linksContainer.children.push(link);\n\t\t\tlink.set(\"source\", source);\n\t\t\tlink.set(\"target\", target);\n\t\t\tlink._setDataItem(source);\n\n\t\t\tlink._handleBullets(this.linkBullets);\n\t\t\tlink.set(\"stroke\", source.get(\"fill\"));\n\t\t\tif (strength != null) {\n\t\t\t\tlink.set(\"strength\", strength)\n\t\t\t}\n\n\t\t\tsource.get(\"childLinks\").push(link);\n\n\t\t\t$array.move(source.get(\"links\"), link);\n\t\t\t$array.move(target.get(\"links\"), link);\n\n\t\t\tthis._processLink(link, source, target);\n\t\t}\n\n\t\treturn link;\n\t}\n\n\n\t/**\n\t * Unlink two linked data items.\n\t *\n\t * @param source Source node data item\n\t * @param target Target node data item\n\t */\n\tpublic unlinkDataItems(source: DataItem<this[\"_dataItemSettings\"]>, target: DataItem<this[\"_dataItemSettings\"]>) {\n\n\t\tlet link!: HierarchyLink;\n\n\t\tconst sourceLinks = source.get(\"links\");\n\n\t\tif (sourceLinks) {\n\t\t\t$array.each(sourceLinks, (lnk) => {\n\t\t\t\tif (lnk && lnk.get(\"target\") == target) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t\t$array.remove(sourceLinks, link);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tconst targetLinks = target.get(\"links\");\n\n\t\tif (targetLinks) {\n\t\t\t$array.each(targetLinks, (lnk) => {\n\t\t\t\tif (lnk && lnk.get(\"target\") == source) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t\t$array.remove(targetLinks, link);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (link) {\n\t\t\tthis._disposeLink(link);\n\t\t}\n\n\t\tthis._handleUnlink();\n\t}\n\n\tprotected _handleUnlink() {\n\n\t}\n\n\tprotected _disposeLink(link: HierarchyLink) {\n\t\tthis.links.removeValue(link);\n\t\tlink.dispose();\n\t}\n\n\t/**\n\t * Returns `true` if two nodes are linked with each other.\n\t */\n\tpublic areLinked(source: DataItem<this[\"_dataItemSettings\"]>, target: DataItem<this[\"_dataItemSettings\"]>): boolean {\n\t\tconst sourceLinks = source.get(\"links\");\n\t\tlet linked = false;\n\t\tif (sourceLinks) {\n\t\t\t$array.each(sourceLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == target) {\n\t\t\t\t\tlinked = true;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tconst targetLinks = target.get(\"links\");\n\n\t\tif (targetLinks) {\n\t\t\t$array.each(targetLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == source) {\n\t\t\t\t\tlinked = true;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\treturn linked;\n\t}\n\n\tprotected _processLink(_link: HierarchyLink, _source: DataItem<this[\"_dataItemSettings\"]>, _target: DataItem<this[\"_dataItemSettings\"]>) {\n\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic disposeDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper.disposeDataItem(dataItem);\n\t\tconst links = dataItem.get(\"links\");\n\t\tif (links) {\n\t\t\t$array.each(links, (link) => {\n\t\t\t\tthis._disposeLink(link)\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Select a data item.\n\t * @param dataItem Data item\n\t */\n\tpublic selectDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tconst parent = dataItem.get(\"parent\");\n\n\t\tif (!dataItem.get(\"disabled\")) {\n\t\t\tthis.set(\"selectedDataItem\", dataItem);\n\t\t}\n\t\telse {\n\t\t\tif (parent) {\n\t\t\t\tthis.setRaw(\"selectedDataItem\", parent);\n\t\t\t\tconst type = \"dataitemselected\";\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this, dataItem: parent });\n\t\t\t\tthis.disableDataItem(dataItem);\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"LinkedHierarchy.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/LinkedHierarchy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAA+E,MAAM,aAAa,CAAC;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAU/C,CAAC;AAsEF;;GAEG;AAEH,MAAM,OAAgB,eAAgB,SAAQ,SAAS;IAAvD;;QAUQ,gBAAW,GAA0G,IAAI,IAAI,EAAE,CAAC;QAcvI;;;;WAIG;QACa,UAAK,GAAsC,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAC3F,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAChB,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC1C,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1H,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;YACnB,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACzB,CAAC,CAAC;QAEH;;;;WAIG;QACa,YAAO,GAAyB,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAChF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC7F,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAC3B,CAAC,CAAC;QAEH;;;;WAIG;QACa,iBAAY,GAAyB,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CACrF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC3G,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAChC,CAAC,CAAC;QAEH;;;;WAIG;QACa,UAAK,GAAgC,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CACrF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAChB,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;SAC1H,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACzB,CAAC,CAAC;QAEH;;;;WAIG;QACa,mBAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAqT5F,CAAC;IAxXU,SAAS;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAC,CAAA;QAEH,KAAK,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IA2DD;;OAEG;IACI,QAAQ,CAAC,QAA6C;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAwB,CAAC;QAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACzC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;YACjD,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;YAC3C,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9B,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,mBAAmB;IAE1B,CAAC;IAES,eAAe,CAAC,QAA6C;QACtE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7B,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEhC,2EAA2E;QAC3E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACpC;IACF,CAAC;IAEM,YAAY,CAAC,QAA6C,EAAE,IAAgB;QAClF,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAES,gBAAgB,CAAC,QAA6C;QACvE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEjC,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;YAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC1D,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;SACpC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,SAAqD;QAC1E,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE;gBACb,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;oBAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBAEnE,IAAI,gBAAgB,EAAE;wBACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;qBAC/C;gBACF,CAAC,CAAC,CAAA;aACF;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE;gBACb,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC9B;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAES,SAAS,CAAC,aAA2D;QAC9E,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;IACnD,CAAC;IAES,iBAAiB,CAAC,QAA6C;QACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE3C,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAES,WAAW,CAAC,QAA6C;QAClE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,MAAM,EAAE;YACX,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC/C,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACnC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE;YAChB,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAExC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aACzC;iBACG;gBACH,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACxC;SACD;IACF,CAAC;IAED;;;;;;;OAOG;IACI,aAAa,CAAC,MAA2C,EAAE,MAA2C,EAAE,QAAiB;QAE/H,IAAI,IAAoB,CAAC;QAEzB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;oBAChC,IAAI,GAAG,GAAG,CAAC;iBACX;YACF,CAAC,CAAC,CAAA;SACF;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;oBAChC,IAAI,GAAG,GAAG,CAAC;iBACX;YACF,CAAC,CAAC,CAAA;SACF;QAED,IAAI,CAAC,IAAI,EAAE;YACV,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;aAC9B;YAED,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;YAEvC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAGD;;;;;OAKG;IACI,eAAe,CAAC,MAA2C,EAAE,MAA2C;QAE9G,IAAI,IAAoB,CAAC;QAEzB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;oBACvC,IAAI,GAAG,GAAG,CAAC;oBACX,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBACjC;YACF,CAAC,CAAC,CAAA;SACF;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;oBACvC,IAAI,GAAG,GAAG,CAAC;oBACX,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBACjC;YACF,CAAC,CAAC,CAAA;SACF;QAED,IAAI,IAAI,EAAE;YACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACxB;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAES,aAAa;IAEvB,CAAC;IAES,YAAY,CAAC,IAAmB;QACzC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,MAA2C,EAAE,MAA2C;QACxG,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;oBAChC,MAAM,GAAG,IAAI,CAAC;iBACd;YACF,CAAC,CAAC,CAAA;SACF;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;oBAChC,MAAM,GAAG,IAAI,CAAC;iBACd;YACF,CAAC,CAAC,CAAA;SACF;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAES,YAAY,CAAC,KAAoB,EAAE,OAA4C,EAAE,OAA4C;IAEvI,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,QAA6C;QACnE,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;SACF;IACF,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,QAA6C;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;SACvC;aACI;YACJ,IAAI,MAAM,EAAE;gBACX,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,kBAAkB,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;aAC/B;SACD;IACF,CAAC;;AAjYa,yBAAS,GAAW,iBAAiB,CAAC;AACtC,0BAAU,GAAkB,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\nimport type { Bullet } from \"../../core/render/Bullet\";\nimport type { Root } from \"../../core/Root\";\nimport type { IPoint } from \"../../core/util/IPoint\";\nimport type * as d3hierarchy from \"d3-hierarchy\";\n\nimport { Hierarchy, IHierarchySettings, IHierarchyDataItem, IHierarchyPrivate, IHierarchyEvents } from \"./Hierarchy\";\nimport { Container } from \"../../core/render/Container\";\nimport { LinkedHierarchyNode } from \"./LinkedHierarchyNode\";\nimport { HierarchyLink } from \"./HierarchyLink\";\nimport { Template } from \"../../core/util/Template\";\nimport { Circle } from \"../../core/render/Circle\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { List } from \"../../core/util/List\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\n\n/**\n * @ignore\n */\nexport interface ILinkedHierarchyDataObject {\n\tname?: string,\n\tvalue?: number,\n\tchildren?: ILinkedHierarchyDataObject[],\n\tdataItem?: DataItem<ILinkedHierarchyDataItem>\n};\n\nexport interface ILinkedHierarchyDataItem extends IHierarchyDataItem {\n\n\t/**\n\t * An array of child data items.\n\t */\n\tchildren: Array<DataItem<ILinkedHierarchyDataItem>>;\n\n\t/**\n\t * A data item of a parent node.\n\t */\n\tparent: DataItem<ILinkedHierarchyDataItem>;\n\n\t/**\n\t * A related node.\n\t */\n\tnode: LinkedHierarchyNode;\n\n\t/**\n\t * [[Circle]] element of the related node.\n\t */\n\tcircle: Circle;\n\n\t/**\n\t * [[Circle]] element of the related node, representing outer circle.\n\t */\n\touterCircle: Circle;\n\n\t/**\n\t * A [[HierarchyLink]] leading to parent node.\n\t */\n\tparentLink: HierarchyLink;\n\n\t/**\n\t * An [[HierarchyLink]] leading to parent node.\n\t */\n\tlinks: Array<HierarchyLink>;\n\n\t/**\n\t * An array of [[HierarchyLink]] objects leading to child nodes.\n\t */\n\tchildLinks: Array<HierarchyLink>;\n\n\t/**\n\t * An array of IDs of directly linked nodes.\n\t */\n\tlinkWith: Array<string>;\n\n\t/**\n\t * @ignore\n\t */\n\td3HierarchyNode: d3hierarchy.HierarchyPointNode<ILinkedHierarchyDataObject>;\n}\n\nexport interface ILinkedHierarchySettings extends IHierarchySettings {\n\n\t/**\n\t * A field in data which holds IDs of nodes to link with.\n\t */\n\tlinkWithField?: string;\n\n}\n\nexport interface ILinkedHierarchyPrivate extends IHierarchyPrivate {\n}\n\nexport interface ILinkedHierarchyEvents extends IHierarchyEvents {\n}\n\n/**\n * A base class for linked hierarchy series.\n */\n\nexport abstract class LinkedHierarchy extends Hierarchy {\n\n\tpublic static className: string = \"LinkedHierarchy\";\n\tpublic static classNames: Array<string> = Hierarchy.classNames.concat([LinkedHierarchy.className]);\n\n\tdeclare public _settings: ILinkedHierarchySettings;\n\tdeclare public _privateSettings: ILinkedHierarchyPrivate;\n\tdeclare public _dataItemSettings: ILinkedHierarchyDataItem;\n\tdeclare public _events: ILinkedHierarchyEvents;\n\n\tpublic linkBullets: List<<D extends DataItem<IHierarchyDataItem>>(root: Root, source: D, target:D) => Bullet | undefined> = new List();\n\n\tprotected _afterNew() {\n\t\tthis.fields.push(\"linkWith\", \"x\", \"y\");\n\n\t\tthis._disposers.push(this.linkBullets.events.onAll(() => {\n\t\t\tthis.links.each((link) => {\n\t\t\t\tlink._handleBullets(this.linkBullets);\n\t\t\t})\n\t\t}))\n\n\t\tsuper._afterNew();\n\t}\n\n\t/**\n\t * A list of nodes in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<LinkedHierarchyNode>\n\t */\n\tpublic readonly nodes: ListTemplate<LinkedHierarchyNode> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => LinkedHierarchyNode._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.nodes.template.get(\"themeTags\", []), [this._tag, \"linkedhierarchy\", \"hierarchy\", \"node\"]),\n\t\t\tx: this.width() / 2,\n\t\t\ty: this.height() / 2\n\t\t}, [this.nodes.template])\n\t));\n\n\t/**\n\t * A list of node circle elements in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<Circle>\n\t */\n\tpublic readonly circles: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => Circle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.circles.template.get(\"themeTags\", []), [this._tag, \"shape\"])\n\t\t}, [this.circles.template])\n\t));\n\n\t/**\n\t * A list of node outer circle elements in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<Circle>\n\t */\n\tpublic readonly outerCircles: ListTemplate<Circle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => Circle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.outerCircles.template.get(\"themeTags\", []), [this._tag, \"outer\", \"shape\"])\n\t\t}, [this.outerCircles.template])\n\t));\n\n\t/**\n\t * A list of link elements in a [[LinkedHierarchy]] chart.\n\t *\n\t * @default new ListTemplate<HierarchyLink>\n\t */\n\tpublic readonly links: ListTemplate<HierarchyLink> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => HierarchyLink._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.links.template.get(\"themeTags\", []), [this._tag, \"linkedhierarchy\", \"hierarchy\", \"link\"])\n\t\t}, [this.links.template])\n\t));\n\n\t/**\n\t * A [[Container]] that link elements are placed in.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly linksContainer = this.children.moveValue(Container.new(this._root, {}), 0);\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeNode(dataItem: DataItem<this[\"_dataItemSettings\"]>): LinkedHierarchyNode {\n\t\tconst node = super.makeNode(dataItem) as LinkedHierarchyNode;\n\n\t\tconst circle = node.children.moveValue(this.circles.make(), 0);\n\t\tthis.circles.push(circle);\n\t\tnode.setPrivate(\"tooltipTarget\", circle);\n\t\tdataItem.setRaw(\"circle\", circle);\n\n\t\tconst outerCircle = node.children.moveValue(this.outerCircles.make(), 0);\n\t\tthis.outerCircles.push(outerCircle);\n\t\tdataItem.setRaw(\"outerCircle\", outerCircle);\n\n\t\tconst label = dataItem.get(\"label\");\n\n\t\tcircle.on(\"radius\", () => {\n\t\t\tconst d = circle.get(\"radius\", this.width()) * 2;\n\t\t\tlabel.setAll({ maxWidth: d, maxHeight: d })\n\t\t\touterCircle.set(\"radius\", d / 2);\n\n\t\t\tthis._handleRadiusChange();\n\t\t})\n\n\t\tconst d = circle.get(\"radius\", this.width()) * 2;\n\t\tlabel.setAll({ maxWidth: d, maxHeight: d });\n\n\t\tcircle._setDataItem(dataItem);\n\t\touterCircle._setDataItem(dataItem);\n\n\t\treturn node;\n\t}\n\n\tpublic _handleRadiusChange() {\n\n\t}\n\n\tprotected processDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tdataItem.setRaw(\"childLinks\", []);\n\t\tdataItem.setRaw(\"links\", []);\n\t\tsuper.processDataItem(dataItem);\n\n\t\t// Run updateLinkWith once after the entire tree is processed, not per-node\n\t\tif (!dataItem.get(\"parent\")) {\n\t\t\tthis.updateLinkWith(this.dataItems);\n\t\t}\n\t}\n\n\tpublic addChildData(dataItem: DataItem<this[\"_dataItemSettings\"]>, data: Array<any>) {\n\t\tsuper.addChildData(dataItem, data);\n\t\tthis.updateLinkWith(this.dataItems);\n\t}\n\n\tprotected _processDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._processDataItem(dataItem);\n\n\t\tconst parentDataItem = dataItem.get(\"parent\");\n\t\tif (parentDataItem && parentDataItem.get(\"depth\") >= this.get(\"topDepth\", 0)) {\n\t\t\tconst link = this.linkDataItems(parentDataItem, dataItem);\n\t\t\tdataItem.setRaw(\"parentLink\", link);\n\t\t}\n\n\t\tconst node = dataItem.get(\"node\");\n\t\tnode._updateLinks(0);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic updateLinkWith(dataItems: Array<DataItem<this[\"_dataItemSettings\"]>>) {\n\t\t$array.each(dataItems, (dataItem) => {\n\t\t\tconst linkWith = dataItem.get(\"linkWith\");\n\t\t\tif (linkWith) {\n\t\t\t\t$array.each(linkWith, (id) => {\n\t\t\t\t\tconst linkWithDataItem = this._getDataItemById(this.dataItems, id);\n\n\t\t\t\t\tif (linkWithDataItem) {\n\t\t\t\t\t\tthis.linkDataItems(dataItem, linkWithDataItem);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst children = dataItem.get(\"children\");\n\t\t\tif (children) {\n\t\t\t\tthis.updateLinkWith(children);\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected _getPoint(hierarchyNode: this[\"_dataItemSettings\"][\"d3HierarchyNode\"]): IPoint {\n\t\treturn { x: hierarchyNode.x, y: hierarchyNode.y };\n\t}\n\n\tprotected _animatePositions(dataItem: DataItem<this[\"_dataItemSettings\"]>){\n\t\tconst node = dataItem.get(\"node\");\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst point = this._getPoint(hierarchyNode);\n\n\t\tconst duration = this.get(\"animationDuration\", 0);\n\t\tconst easing = this.get(\"animationEasing\");\n\n\t\tnode.animate({ key: \"x\", to: point.x, duration: duration, easing: easing });\n\t\tnode.animate({ key: \"y\", to: point.y, duration: duration, easing: easing });\n\t}\n\n\tprotected _updateNode(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._updateNode(dataItem);\n\n\t\tthis._animatePositions(dataItem);\n\n\t\tconst fill = dataItem.get(\"fill\");\n\t\tconst fillPattern = dataItem.get(\"fillPattern\");\n\t\tconst circle = dataItem.get(\"circle\");\n\t\tconst children = dataItem.get(\"children\");\n\n\t\tif (circle) {\n\t\t\tcircle._setDefault(\"fill\", fill);\n\t\t\tcircle._setDefault(\"fillPattern\", fillPattern);\n\t\t\tcircle._setDefault(\"stroke\", fill);\n\t\t}\n\n\t\tconst outerCircle = dataItem.get(\"outerCircle\");\n\t\tif (outerCircle) {\n\t\t\touterCircle._setDefault(\"fill\", fill);\n\t\t\touterCircle._setDefault(\"stroke\", fill);\n\n\t\t\tif (!children || children.length == 0) {\n\t\t\t\touterCircle.setPrivate(\"visible\", false);\n\t\t\t}\n\t\t\telse{\n\t\t\t\touterCircle.setPrivate(\"visible\", true);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Link two data items with a link element.\n\t *\n\t * @param source Source node data item\n\t * @param target Target node data item\n\t * @param strength Link strength\n\t * @return Link element\n\t */\n\tpublic linkDataItems(source: DataItem<this[\"_dataItemSettings\"]>, target: DataItem<this[\"_dataItemSettings\"]>, strength?: number): HierarchyLink {\n\n\t\tlet link!: HierarchyLink;\n\n\t\tconst sourceLinks = source.get(\"links\");\n\n\t\tif (sourceLinks) {\n\t\t\t$array.each(sourceLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == target) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tconst targetLinks = target.get(\"links\");\n\n\t\tif (targetLinks) {\n\t\t\t$array.each(targetLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == source) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (!link) {\n\t\t\tlink = this.links.make();\n\t\t\tlink.series = this;\n\t\t\tthis.links.push(link);\n\t\t\tthis.linksContainer.children.push(link);\n\t\t\tlink.set(\"source\", source);\n\t\t\tlink.set(\"target\", target);\n\t\t\tlink._setDataItem(source);\n\n\t\t\tlink._handleBullets(this.linkBullets);\n\t\t\tlink.set(\"stroke\", source.get(\"fill\"));\n\t\t\tif (strength != null) {\n\t\t\t\tlink.set(\"strength\", strength)\n\t\t\t}\n\n\t\t\tsource.get(\"childLinks\").push(link);\n\n\t\t\t$array.move(source.get(\"links\"), link);\n\t\t\t$array.move(target.get(\"links\"), link);\n\n\t\t\tthis._processLink(link, source, target);\n\t\t}\n\n\t\treturn link;\n\t}\n\n\n\t/**\n\t * Unlink two linked data items.\n\t *\n\t * @param source Source node data item\n\t * @param target Target node data item\n\t */\n\tpublic unlinkDataItems(source: DataItem<this[\"_dataItemSettings\"]>, target: DataItem<this[\"_dataItemSettings\"]>) {\n\n\t\tlet link!: HierarchyLink;\n\n\t\tconst sourceLinks = source.get(\"links\");\n\n\t\tif (sourceLinks) {\n\t\t\t$array.each(sourceLinks, (lnk) => {\n\t\t\t\tif (lnk && lnk.get(\"target\") == target) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t\t$array.remove(sourceLinks, link);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tconst targetLinks = target.get(\"links\");\n\n\t\tif (targetLinks) {\n\t\t\t$array.each(targetLinks, (lnk) => {\n\t\t\t\tif (lnk && lnk.get(\"target\") == source) {\n\t\t\t\t\tlink = lnk;\n\t\t\t\t\t$array.remove(targetLinks, link);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (link) {\n\t\t\tthis._disposeLink(link);\n\t\t}\n\n\t\tthis._handleUnlink();\n\t}\n\n\tprotected _handleUnlink() {\n\n\t}\n\n\tprotected _disposeLink(link: HierarchyLink) {\n\t\tthis.links.removeValue(link);\n\t\tlink.dispose();\n\t}\n\n\t/**\n\t * Returns `true` if two nodes are linked with each other.\n\t */\n\tpublic areLinked(source: DataItem<this[\"_dataItemSettings\"]>, target: DataItem<this[\"_dataItemSettings\"]>): boolean {\n\t\tconst sourceLinks = source.get(\"links\");\n\t\tlet linked = false;\n\t\tif (sourceLinks) {\n\t\t\t$array.each(sourceLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == target) {\n\t\t\t\t\tlinked = true;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tconst targetLinks = target.get(\"links\");\n\n\t\tif (targetLinks) {\n\t\t\t$array.each(targetLinks, (lnk) => {\n\t\t\t\tif (lnk.get(\"target\") == source) {\n\t\t\t\t\tlinked = true;\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\treturn linked;\n\t}\n\n\tprotected _processLink(_link: HierarchyLink, _source: DataItem<this[\"_dataItemSettings\"]>, _target: DataItem<this[\"_dataItemSettings\"]>) {\n\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic disposeDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper.disposeDataItem(dataItem);\n\t\tconst links = dataItem.get(\"links\");\n\t\tif (links) {\n\t\t\t$array.each(links, (link) => {\n\t\t\t\tthis._disposeLink(link)\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Select a data item.\n\t * @param dataItem Data item\n\t */\n\tpublic selectDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tconst parent = dataItem.get(\"parent\");\n\n\t\tif (!dataItem.get(\"disabled\")) {\n\t\t\tthis.set(\"selectedDataItem\", dataItem);\n\t\t}\n\t\telse {\n\t\t\tif (parent) {\n\t\t\t\tthis.setRaw(\"selectedDataItem\", parent);\n\t\t\t\tconst type = \"dataitemselected\";\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this, dataItem: parent });\n\t\t\t\tthis.disableDataItem(dataItem);\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -33,6 +33,26 @@ export interface ITreeSettings extends ILinkedHierarchySettings {
33
33
  * @since 5.2.4
34
34
  */
35
35
  inversed?: boolean;
36
+ /**
37
+ * If set to `true`, will use cluster layout (dendrogram) where all leaf
38
+ * nodes are placed at the same depth.
39
+ *
40
+ * @default false
41
+ * @since 5.16.2
42
+ */
43
+ clustered?: boolean;
44
+ /**
45
+ * A function that returns the desired separation between neighboring
46
+ * nodes. Receives two data items and should return a numeric value.
47
+ *
48
+ * Default is `1` for siblings, `2` for non-siblings.
49
+ *
50
+ * Can be used to create variable node spacing based on value, label
51
+ * size, or other data properties.
52
+ *
53
+ * @since 5.16.2
54
+ */
55
+ nodeSeparation?: (a: DataItem<ITreeDataItem>, b: DataItem<ITreeDataItem>) => number;
36
56
  }
37
57
  export interface ITreePrivate extends ILinkedHierarchyPrivate {
38
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEzJ,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,aAAc,SAAQ,wBAAwB;IAE9D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAEzC;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CAEhC;AAED,MAAM,WAAW,aAAc,SAAQ,wBAAwB;IAE9D;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CAEnB;AAED,MAAM,WAAW,YAAa,SAAQ,uBAAuB;IAE5D;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,sBAAsB;CAC1D;AAED;;;;;GAKG;AACH,qBAAa,IAAK,SAAQ,eAAe;IAEzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,iBAAiB,EAAE,aAAa,CAAC;IAEhD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAU;IAEhC,OAAc,SAAS,EAAE,MAAM,CAAU;IACzC,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAuD;IAEvF,gBAAgB,kCAAsB;IAC9B,SAAS,EAAE,WAAW,CAAC,qBAAqB,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IAClF,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;IAEvC,gBAAgB;IAQvB,SAAS,CAAC,cAAc;IAiBxB,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,GAAG,MAAM;CAoBxF"}
1
+ {"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEzJ,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,aAAc,SAAQ,wBAAwB;IAE9D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAEzC;;;OAGG;IACH,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CAEhC;AAED,MAAM,WAAW,aAAc,SAAQ,wBAAwB;IAE9D;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC;CAEpF;AAED,MAAM,WAAW,YAAa,SAAQ,uBAAuB;IAE5D;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,sBAAsB;CAC1D;AAED;;;;;GAKG;AACH,qBAAa,IAAK,SAAQ,eAAe;IAEzB,SAAS,EAAE,aAAa,CAAC;IACzB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,iBAAiB,EAAE,aAAa,CAAC;IAEhD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAU;IAEhC,OAAc,SAAS,EAAE,MAAM,CAAU;IACzC,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAuD;IAEvF,gBAAgB,kCAAsB;IAC9B,SAAS,EAAE,WAAW,CAAC,qBAAqB,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IAClF,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;IAEvC,gBAAgB;IAavB,SAAS,CAAC,cAAc;IAwBxB,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,GAAG,MAAM;CAoBxF"}
@@ -15,7 +15,11 @@ export class Tree extends LinkedHierarchy {
15
15
  }
16
16
  _prepareChildren() {
17
17
  super._prepareChildren();
18
- if (this.isDirty("orientation") || this.isDirty("inversed")) {
18
+ if (this.isDirty("clustered")) {
19
+ this._hierarchyLayout = this.get("clustered") ? d3hierarchy.cluster() : d3hierarchy.tree();
20
+ this._updateVisuals();
21
+ }
22
+ if (this.isDirty("orientation") || this.isDirty("inversed") || this.isDirty("nodeSeparation")) {
19
23
  this._updateVisuals();
20
24
  }
21
25
  }
@@ -28,6 +32,12 @@ export class Tree extends LinkedHierarchy {
28
32
  else {
29
33
  layout.size([this.innerHeight(), this.innerWidth()]);
30
34
  }
35
+ const nodeSeparation = this.get("nodeSeparation");
36
+ if (nodeSeparation) {
37
+ layout.separation((a, b) => {
38
+ return nodeSeparation(a.data.dataItem, b.data.dataItem);
39
+ });
40
+ }
31
41
  layout(this._rootNode);
32
42
  }
33
43
  super._updateVisuals();
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Tree.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAuG,MAAM,mBAAmB,CAAC;AAEzJ,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAO3C,CAAC;AAoDF;;;;;GAKG;AACH,MAAM,OAAO,IAAK,SAAQ,eAAe;IAAzC;;QAMW,SAAI,GAAW,MAAM,CAAC;QAKzB,qBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAiD9C,CAAC;IA7CO,gBAAgB;QACtB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;SACtB;IACF,CAAC;IAES,cAAc;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAErC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,EAAE;gBAC1C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aACrD;iBACI;gBACJ,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aACrD;YAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvB;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAES,SAAS,CAAC,aAA2D;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,EAAE;YAC1C,IAAI,QAAQ,EAAE;gBACb,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC;aACvE;iBACI;gBACJ,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;aAClD;SACD;aACI;YACJ,IAAI,QAAQ,EAAE;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;aACtE;iBACI;gBACJ,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;aAClD;SACD;IACF,CAAC;;AAlDa,cAAS,GAAW,MAAM,CAAC;AAC3B,eAAU,GAAkB,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\nimport type { IPoint } from \"../../core/util/IPoint\";\n\nimport { LinkedHierarchy, ILinkedHierarchyPrivate, ILinkedHierarchySettings, ILinkedHierarchyDataItem, ILinkedHierarchyEvents } from \"./LinkedHierarchy\";\n\nimport * as d3hierarchy from \"d3-hierarchy\";\n\nexport interface ITreeDataObject {\n\tname?: string,\n\tvalue?: number,\n\tchildren?: ITreeDataObject[],\n\tdataItem?: DataItem<ITreeDataItem>\n};\n\nexport interface ITreeDataItem extends ILinkedHierarchyDataItem {\n\n\t/**\n\t * An array of children data items.\n\t */\n\tchildren: Array<DataItem<ITreeDataItem>>;\n\n\t/**\n\t * Parent data item.\n\t * @type {DataItem<ITreeDataItem>}\n\t */\n\tparent: DataItem<ITreeDataItem>;\n\n}\n\nexport interface ITreeSettings extends ILinkedHierarchySettings {\n\n\t/**\n\t * Orientation of the diagram.\n\t *\n\t * @default \"vertical\"\n\t */\n\torientation?: \"horizontal\" | \"vertical\";\n\n\t/**\n\t * If set to `true`, will flip the tree direction.\n\t *\n\t * @default false\n\t * @since 5.2.4\n\t */\n\tinversed?: boolean;\n\n}\n\nexport interface ITreePrivate extends ILinkedHierarchyPrivate {\n\n\t/**\n\t * Current horizontal scale.\n\t */\n\tscaleX?: number;\n\n\t/**\n\t * Current vertical scale.\n\t */\n\tscaleY?: number;\n}\n\nexport interface ITreeEvents extends ILinkedHierarchyEvents {\n}\n\n/**\n * Displays a tree diagram.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/tree/} for more info\n * @important\n */\nexport class Tree extends LinkedHierarchy {\n\n\tdeclare public _settings: ITreeSettings;\n\tdeclare public _privateSettings: ITreePrivate;\n\tdeclare public _dataItemSettings: ITreeDataItem;\n\n\tprotected _tag: string = \"tree\";\n\n\tpublic static className: string = \"Tree\";\n\tpublic static classNames: Array<string> = LinkedHierarchy.classNames.concat([Tree.className]);\n\n\tpublic _hierarchyLayout = d3hierarchy.tree();\n\tdeclare public _rootNode: d3hierarchy.HierarchyCircularNode<ITreeDataObject> | undefined;\n\tpublic _packData: ITreeDataObject | undefined;\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this.isDirty(\"orientation\") || this.isDirty(\"inversed\")) {\n\t\t\tthis._updateVisuals();\n\t\t}\n\t}\n\n\tprotected _updateVisuals() {\n\t\tif (this._rootNode) {\n\t\t\tconst layout = this._hierarchyLayout;\n\n\t\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\t\tlayout.size([this.innerWidth(), this.innerHeight()]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlayout.size([this.innerHeight(), this.innerWidth()]);\n\t\t\t}\n\n\t\t\tlayout(this._rootNode);\n\t\t}\n\n\t\tsuper._updateVisuals();\n\t}\n\n\tprotected _getPoint(hierarchyNode: this[\"_dataItemSettings\"][\"d3HierarchyNode\"]): IPoint {\n\t\tconst inversed = this.get(\"inversed\");\n\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\tif (inversed) {\n\t\t\t\treturn { x: hierarchyNode.x, y: this.innerHeight() - hierarchyNode.y };\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn { x: hierarchyNode.x, y: hierarchyNode.y };\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (inversed) {\n\t\t\t\treturn { x: this.innerWidth() - hierarchyNode.y, y: hierarchyNode.x };\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn { x: hierarchyNode.y, y: hierarchyNode.x };\n\t\t\t}\n\t\t}\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Tree.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\nimport type { IPoint } from \"../../core/util/IPoint\";\n\nimport { LinkedHierarchy, ILinkedHierarchyPrivate, ILinkedHierarchySettings, ILinkedHierarchyDataItem, ILinkedHierarchyEvents } from \"./LinkedHierarchy\";\n\nimport * as d3hierarchy from \"d3-hierarchy\";\n\nexport interface ITreeDataObject {\n\tname?: string,\n\tvalue?: number,\n\tchildren?: ITreeDataObject[],\n\tdataItem?: DataItem<ITreeDataItem>\n};\n\nexport interface ITreeDataItem extends ILinkedHierarchyDataItem {\n\n\t/**\n\t * An array of children data items.\n\t */\n\tchildren: Array<DataItem<ITreeDataItem>>;\n\n\t/**\n\t * Parent data item.\n\t * @type {DataItem<ITreeDataItem>}\n\t */\n\tparent: DataItem<ITreeDataItem>;\n\n}\n\nexport interface ITreeSettings extends ILinkedHierarchySettings {\n\n\t/**\n\t * Orientation of the diagram.\n\t *\n\t * @default \"vertical\"\n\t */\n\torientation?: \"horizontal\" | \"vertical\";\n\n\t/**\n\t * If set to `true`, will flip the tree direction.\n\t *\n\t * @default false\n\t * @since 5.2.4\n\t */\n\tinversed?: boolean;\n\n\t/**\n\t * If set to `true`, will use cluster layout (dendrogram) where all leaf\n\t * nodes are placed at the same depth.\n\t *\n\t * @default false\n\t * @since 5.16.2\n\t */\n\tclustered?: boolean;\n\n\t/**\n\t * A function that returns the desired separation between neighboring\n\t * nodes. Receives two data items and should return a numeric value.\n\t *\n\t * Default is `1` for siblings, `2` for non-siblings.\n\t *\n\t * Can be used to create variable node spacing based on value, label\n\t * size, or other data properties.\n\t *\n\t * @since 5.16.2\n\t */\n\tnodeSeparation?: (a: DataItem<ITreeDataItem>, b: DataItem<ITreeDataItem>) => number;\n\n}\n\nexport interface ITreePrivate extends ILinkedHierarchyPrivate {\n\n\t/**\n\t * Current horizontal scale.\n\t */\n\tscaleX?: number;\n\n\t/**\n\t * Current vertical scale.\n\t */\n\tscaleY?: number;\n}\n\nexport interface ITreeEvents extends ILinkedHierarchyEvents {\n}\n\n/**\n * Displays a tree diagram.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/tree/} for more info\n * @important\n */\nexport class Tree extends LinkedHierarchy {\n\n\tdeclare public _settings: ITreeSettings;\n\tdeclare public _privateSettings: ITreePrivate;\n\tdeclare public _dataItemSettings: ITreeDataItem;\n\n\tprotected _tag: string = \"tree\";\n\n\tpublic static className: string = \"Tree\";\n\tpublic static classNames: Array<string> = LinkedHierarchy.classNames.concat([Tree.className]);\n\n\tpublic _hierarchyLayout = d3hierarchy.tree();\n\tdeclare public _rootNode: d3hierarchy.HierarchyCircularNode<ITreeDataObject> | undefined;\n\tpublic _packData: ITreeDataObject | undefined;\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this.isDirty(\"clustered\")) {\n\t\t\tthis._hierarchyLayout = this.get(\"clustered\") ? d3hierarchy.cluster() : d3hierarchy.tree();\n\t\t\tthis._updateVisuals();\n\t\t}\n\n\t\tif (this.isDirty(\"orientation\") || this.isDirty(\"inversed\") || this.isDirty(\"nodeSeparation\")) {\n\t\t\tthis._updateVisuals();\n\t\t}\n\t}\n\n\tprotected _updateVisuals() {\n\t\tif (this._rootNode) {\n\t\t\tconst layout = this._hierarchyLayout;\n\n\t\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\t\tlayout.size([this.innerWidth(), this.innerHeight()]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlayout.size([this.innerHeight(), this.innerWidth()]);\n\t\t\t}\n\n\t\t\tconst nodeSeparation = this.get(\"nodeSeparation\");\n\t\t\tif (nodeSeparation) {\n\t\t\t\tlayout.separation((a: any, b: any) => {\n\t\t\t\t\treturn nodeSeparation(a.data.dataItem, b.data.dataItem);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlayout(this._rootNode);\n\t\t}\n\n\t\tsuper._updateVisuals();\n\t}\n\n\tprotected _getPoint(hierarchyNode: this[\"_dataItemSettings\"][\"d3HierarchyNode\"]): IPoint {\n\t\tconst inversed = this.get(\"inversed\");\n\t\tif (this.get(\"orientation\") == \"vertical\") {\n\t\t\tif (inversed) {\n\t\t\t\treturn { x: hierarchyNode.x, y: this.innerHeight() - hierarchyNode.y };\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn { x: hierarchyNode.x, y: hierarchyNode.y };\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (inversed) {\n\t\t\t\treturn { x: this.innerWidth() - hierarchyNode.y, y: hierarchyNode.x };\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn { x: hierarchyNode.y, y: hierarchyNode.x };\n\t\t\t}\n\t\t}\n\t}\n\n}\n"]}
@@ -155,6 +155,18 @@ export interface IValueAxisSettings<R extends AxisRenderer> extends IAxisSetting
155
155
  * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/#Syncing_grid} for more info
156
156
  */
157
157
  syncWithAxis?: ValueAxis<AxisRenderer>;
158
+ /**
159
+ * If set to `true` and `syncWithAxis` is set, the zero line of this axis
160
+ * will be aligned with the zero line of the target axis, and the remaining
161
+ * grid intervals will be distributed proportionally above and below zero.
162
+ *
163
+ * Only takes effect when both axes' ranges include zero.
164
+ *
165
+ * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/#Syncing_grid} for more info
166
+ * @default false
167
+ * @since 5.16.2
168
+ */
169
+ syncZeros?: boolean;
158
170
  /**
159
171
  * If set to `false`, the axis won't be auto-zoomed to a selection (this
160
172
  * works only if the other axis is a `DateAxis` or a `CategoryAxis`).
@@ -440,9 +452,10 @@ export declare class ValueAxis<R extends AxisRenderer> extends Axis<R> {
440
452
  step: number;
441
453
  };
442
454
  /**
443
- * Returns `true` if axis needs to be resunced with some other axis.
455
+ * Rounds a raw step value up to the nearest "nice" number
456
+ * (1, 2, 5, 10, 20, 50, etc.), respecting maxPrecision.
444
457
  */
445
- protected _checkSync(min: number, max: number, step: number, count: number): boolean;
458
+ protected _niceStep(rawStep: number): number;
446
459
  /**
447
460
  * Returns relative position between two grid lines of the axis.
448
461
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ValueAxis.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/xy/axes/ValueAxis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValueAxis.d.ts","sourceRoot":"","sources":["../../../../../../src/.internal/charts/xy/axes/ValueAxis.ts"],"names":[],"mappings":"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"}
@@ -561,38 +561,44 @@ export class ValueAxis extends Axis {
561
561
  }
562
562
  let fieldWorking = field + "Working";
563
563
  if (field) {
564
+ let seriesCount = this.series.length;
565
+ let includedSeries = [];
566
+ let vcValues = [];
567
+ for (let s = 0; s < seriesCount; s++) {
568
+ let ser = this.series[s];
569
+ if (!ser.get("excludeFromTotal")) {
570
+ includedSeries.push(ser);
571
+ vcValues.push(ser.get(vc));
572
+ }
573
+ }
574
+ let len = includedSeries.length;
575
+ let fieldTotal = (field + "Total");
576
+ let fieldSum = (field + "Sum");
577
+ let fieldTotalPercent = (field + "TotalPercent");
564
578
  for (let i = startIndex; i < endIndex; i++) {
565
579
  let sum = 0;
566
580
  let total = 0;
567
- $array.each(this.series, (series) => {
568
- if (!series.get("excludeFromTotal")) {
569
- let dataItem = series.dataItems[i];
570
- if (dataItem) {
571
- let value = dataItem.get(fieldWorking) * series.get(vc);
572
- if (!$type.isNaN(value)) {
573
- sum += value;
574
- total += Math.abs(value);
575
- }
581
+ for (let s = 0; s < len; s++) {
582
+ let dataItem = includedSeries[s].dataItems[i];
583
+ if (dataItem) {
584
+ let value = dataItem.get(fieldWorking) * vcValues[s];
585
+ if (!$type.isNaN(value)) {
586
+ sum += value;
587
+ total += Math.abs(value);
576
588
  }
577
589
  }
578
- });
579
- $array.each(this.series, (series) => {
580
- if (!series.get("excludeFromTotal")) {
581
- let dataItem = series.dataItems[i];
582
- if (dataItem) {
583
- let value = dataItem.get(fieldWorking) * series.get(vc);
584
- if (!$type.isNaN(value)) {
585
- dataItem.set((field + "Total"), total);
586
- dataItem.set((field + "Sum"), sum);
587
- let totalPercent = value / total * 100;
588
- if (total == 0) {
589
- totalPercent = 0;
590
- }
591
- dataItem.set((field + "TotalPercent"), totalPercent);
592
- }
590
+ }
591
+ for (let s = 0; s < len; s++) {
592
+ let dataItem = includedSeries[s].dataItems[i];
593
+ if (dataItem) {
594
+ let value = dataItem.get(fieldWorking) * vcValues[s];
595
+ if (!$type.isNaN(value)) {
596
+ dataItem.set(fieldTotal, total);
597
+ dataItem.set(fieldSum, sum);
598
+ dataItem.set(fieldTotalPercent, total == 0 ? 0 : value / total * 100);
593
599
  }
594
600
  }
595
- });
601
+ }
596
602
  }
597
603
  }
598
604
  }
@@ -731,7 +737,7 @@ export class ValueAxis extends Axis {
731
737
  selectionMax = minMaxStep.max;
732
738
  selectionMin = $math.fitToRange(selectionMin, min, max);
733
739
  selectionMax = $math.fitToRange(selectionMax, min, max);
734
- // do it for the second time !important
740
+ // do it for the second time !important
735
741
  minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);
736
742
  if (!strictMinMax) {
737
743
  selectionMin = minMaxStep.min;
@@ -740,16 +746,10 @@ export class ValueAxis extends Axis {
740
746
  const syncWithAxis = this.get("syncWithAxis");
741
747
  if (syncWithAxis) {
742
748
  minMaxStep = this._syncAxes(selectionMin, selectionMax, minMaxStep.step, syncWithAxis.getPrivate("selectionMinFinal", syncWithAxis.getPrivate("minFinal", 0)), syncWithAxis.getPrivate("selectionMaxFinal", syncWithAxis.getPrivate("maxFinal", 1)), syncWithAxis.getPrivate("selectionStepFinal", syncWithAxis.getPrivate("step", 1)));
743
- if (minMaxStep.min < min) {
744
- minMaxStep.min = min;
745
- }
746
- if (minMaxStep.max > max) {
747
- minMaxStep.max = max;
748
- }
749
749
  selectionMin = minMaxStep.min;
750
750
  selectionMax = minMaxStep.max;
751
751
  }
752
- if (strictMinMax) {
752
+ if (strictMinMax && !syncWithAxis) {
753
753
  if ($type.isNumber(minDefined)) {
754
754
  selectionMin = Math.max(selectionMin, minDefined);
755
755
  }
@@ -757,11 +757,11 @@ export class ValueAxis extends Axis {
757
757
  selectionMax = Math.min(selectionMax, maxDefined);
758
758
  }
759
759
  }
760
- if (selectionStrictMinMax) {
760
+ if (selectionStrictMinMax && !syncWithAxis) {
761
761
  selectionMin = selectionMinReal - (selectionMaxReal - selectionMinReal) * extraMin;
762
762
  selectionMax = selectionMaxReal + (selectionMaxReal - selectionMinReal) * extraMax;
763
763
  }
764
- if (strictMinMax) {
764
+ if (strictMinMax && !syncWithAxis) {
765
765
  if ($type.isNumber(minDefined)) {
766
766
  selectionMin = minDefined;
767
767
  }
@@ -904,7 +904,7 @@ export class ValueAxis extends Axis {
904
904
  // DateAxis does some magic here
905
905
  min = this._fixMin(min);
906
906
  max = this._fixMax(max);
907
- // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date
907
+ // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date
908
908
  if (max - min <= 1 / Math.pow(10, 15)) {
909
909
  if (max - min !== 0) {
910
910
  this._deltaMinMax = (max - min) / 2;
@@ -1192,61 +1192,84 @@ export class ValueAxis extends Axis {
1192
1192
  _syncAxes(min, max, step, syncMin, syncMax, syncStep) {
1193
1193
  let axis = this.get("syncWithAxis");
1194
1194
  if (axis) {
1195
- let count = Math.round(syncMax - syncMin) / syncStep;
1196
- let currentCount = Math.round((max - min) / step);
1197
- let gridCount = this.get("renderer").gridCount();
1198
- if ($type.isNumber(count) && $type.isNumber(currentCount)) {
1199
- let synced = false;
1200
- let c = 0;
1201
- let diff = (max - min) * 0.01;
1202
- let omin = min;
1203
- let omax = max;
1204
- let ostep = step;
1205
- while (synced != true) {
1206
- synced = this._checkSync(omin, omax, ostep, count);
1207
- c++;
1208
- if (c > 500) {
1209
- synced = true;
1195
+ let targetCount = Math.round((syncMax - syncMin) / syncStep);
1196
+ if (targetCount > 0) {
1197
+ if (this.get("syncZeros") && syncMin <= 0 && syncMax >= 0) {
1198
+ // Count intervals below/above zero on source axis
1199
+ let belowCount = Math.round((0 - syncMin) / syncStep);
1200
+ let aboveCount = targetCount - belowCount;
1201
+ // Find the smallest nice step that covers this axis's
1202
+ // data on both sides with the same below/above split
1203
+ let rawStep = 0;
1204
+ if (belowCount > 0 && min < 0) {
1205
+ rawStep = Math.abs(min) / belowCount;
1210
1206
  }
1211
- if (!synced) {
1212
- if (c / 3 == Math.round(c / 3)) {
1213
- omin = min - diff * c;
1214
- if (min >= 0 && omin < 0) {
1215
- omin = 0;
1216
- }
1217
- }
1218
- else {
1219
- omax = max + diff * c;
1220
- if (omax <= 0 && omax > 0) {
1221
- omax = 0;
1222
- }
1223
- }
1224
- let minMaxStep = this._adjustMinMax(omin, omax, gridCount, true);
1225
- omin = minMaxStep.min;
1226
- omax = minMaxStep.max;
1227
- ostep = minMaxStep.step;
1207
+ if (aboveCount > 0 && max > 0) {
1208
+ rawStep = Math.max(rawStep, max / aboveCount);
1228
1209
  }
1229
- else {
1230
- min = omin;
1231
- max = omax;
1232
- step = ostep;
1210
+ // Fallback: if one side has no data but has intervals
1211
+ if (rawStep == 0) {
1212
+ rawStep = (max - min) / targetCount;
1213
+ }
1214
+ step = this._niceStep(rawStep);
1215
+ min = -step * belowCount;
1216
+ max = step * aboveCount;
1217
+ }
1218
+ else {
1219
+ // Regular grid count sync (no zero alignment)
1220
+ let rawStep = (max - min) / targetCount;
1221
+ step = this._niceStep(rawStep);
1222
+ // Snap min/max to step boundaries ensuring data coverage
1223
+ let newMin = Math.floor(min / step) * step;
1224
+ let newMax = newMin + step * targetCount;
1225
+ // Ensure max covers the data
1226
+ if (newMax < max) {
1227
+ newMin = Math.ceil(max / step) * step - step * targetCount;
1228
+ newMax = newMin + step * targetCount;
1229
+ }
1230
+ // Preserve zero boundaries
1231
+ if (min >= 0 && newMin < 0) {
1232
+ newMin = 0;
1233
+ newMax = step * targetCount;
1234
+ }
1235
+ if (max <= 0 && newMax > 0) {
1236
+ newMax = 0;
1237
+ newMin = -(step * targetCount);
1233
1238
  }
1239
+ min = newMin;
1240
+ max = newMax;
1234
1241
  }
1235
1242
  }
1236
1243
  }
1237
1244
  return { min: min, max: max, step: step };
1238
1245
  }
1239
1246
  /**
1240
- * Returns `true` if axis needs to be resunced with some other axis.
1247
+ * Rounds a raw step value up to the nearest "nice" number
1248
+ * (1, 2, 5, 10, 20, 50, etc.), respecting maxPrecision.
1241
1249
  */
1242
- _checkSync(min, max, step, count) {
1243
- let currentCount = (max - min) / step;
1244
- for (let i = 1; i < count; i++) {
1245
- if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {
1246
- return true;
1250
+ _niceStep(rawStep) {
1251
+ let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(rawStep)) * Math.LOG10E));
1252
+ let normalized = rawStep / stepPower;
1253
+ if (normalized <= 1)
1254
+ normalized = 1;
1255
+ else if (normalized <= 2)
1256
+ normalized = 2;
1257
+ else if (normalized <= 5)
1258
+ normalized = 5;
1259
+ else
1260
+ normalized = 10;
1261
+ let step = normalized * stepPower;
1262
+ let maxPrecision = this.get("maxPrecision");
1263
+ if ($type.isNumber(maxPrecision)) {
1264
+ let ceiledStep = $math.ceil(step, maxPrecision);
1265
+ if (maxPrecision < Number.MAX_VALUE && step !== ceiledStep) {
1266
+ step = ceiledStep;
1267
+ if (step == 0) {
1268
+ step = 1;
1269
+ }
1247
1270
  }
1248
1271
  }
1249
- return false;
1272
+ return step;
1250
1273
  }
1251
1274
  /**
1252
1275
  * Returns relative position between two grid lines of the axis.