@amcharts/amcharts5 5.16.0 → 5.16.1

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 (197) hide show
  1. package/.internal/charts/flow/Chord.d.ts.map +1 -1
  2. package/.internal/charts/flow/Chord.js +15 -17
  3. package/.internal/charts/flow/Chord.js.map +1 -1
  4. package/.internal/charts/hierarchy/Treemap.d.ts +1 -1
  5. package/.internal/charts/hierarchy/Treemap.d.ts.map +1 -1
  6. package/.internal/charts/hierarchy/Treemap.js +9 -7
  7. package/.internal/charts/hierarchy/Treemap.js.map +1 -1
  8. package/.internal/charts/map/ClusteredPointSeries.d.ts +0 -2
  9. package/.internal/charts/map/ClusteredPointSeries.d.ts.map +1 -1
  10. package/.internal/charts/map/ClusteredPointSeries.js +117 -55
  11. package/.internal/charts/map/ClusteredPointSeries.js.map +1 -1
  12. package/.internal/charts/map/MapPointSeries.d.ts.map +1 -1
  13. package/.internal/charts/map/MapPointSeries.js +2 -0
  14. package/.internal/charts/map/MapPointSeries.js.map +1 -1
  15. package/.internal/charts/wordcloud/WordCloud.d.ts +1 -1
  16. package/.internal/charts/wordcloud/WordCloud.d.ts.map +1 -1
  17. package/.internal/charts/wordcloud/WordCloud.js +18 -24
  18. package/.internal/charts/wordcloud/WordCloud.js.map +1 -1
  19. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  20. package/.internal/charts/xy/axes/DateAxis.js +7 -3
  21. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  22. package/.internal/charts/xy/axes/GaplessDateAxis.d.ts.map +1 -1
  23. package/.internal/charts/xy/axes/GaplessDateAxis.js +11 -4
  24. package/.internal/charts/xy/axes/GaplessDateAxis.js.map +1 -1
  25. package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
  26. package/.internal/charts/xy/series/LineSeries.js +8 -6
  27. package/.internal/charts/xy/series/LineSeries.js.map +1 -1
  28. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  29. package/.internal/charts/xy/series/XYSeries.js +12 -4
  30. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  31. package/.internal/core/Registry.js +1 -1
  32. package/.internal/core/Registry.js.map +1 -1
  33. package/.internal/core/Root.d.ts +1 -1
  34. package/.internal/core/Root.d.ts.map +1 -1
  35. package/.internal/core/Root.js +12 -10
  36. package/.internal/core/Root.js.map +1 -1
  37. package/.internal/core/util/Array.d.ts.map +1 -1
  38. package/.internal/core/util/Array.js +5 -2
  39. package/.internal/core/util/Array.js.map +1 -1
  40. package/CHANGELOG.md +7 -0
  41. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  42. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  43. package/examples/javascript/flow-chord/package.json +1 -1
  44. package/examples/javascript/flow-chord-directed/package.json +1 -1
  45. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  46. package/examples/javascript/flow-sankey/package.json +1 -1
  47. package/examples/javascript/gantt/package.json +1 -1
  48. package/examples/javascript/gantt-multilevel/package.json +1 -1
  49. package/examples/javascript/gantt-simple/package.json +1 -1
  50. package/examples/javascript/gauge/package.json +1 -1
  51. package/examples/javascript/gauge-bands/package.json +1 -1
  52. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  53. package/examples/javascript/hierarchy-pack/package.json +1 -1
  54. package/examples/javascript/hierarchy-partition/package.json +1 -1
  55. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  56. package/examples/javascript/hierarchy-tree/package.json +1 -1
  57. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  58. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  59. package/examples/javascript/jest/package.json +1 -1
  60. package/examples/javascript/json-pie/package.json +1 -1
  61. package/examples/javascript/json-xy/package.json +1 -1
  62. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  63. package/examples/javascript/map-clustered-points/package.json +1 -1
  64. package/examples/javascript/map-day-and-night/package.json +1 -1
  65. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  66. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  67. package/examples/javascript/map-with-bubbles/package.json +1 -1
  68. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  69. package/examples/javascript/misc-40-charts/package.json +1 -1
  70. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  71. package/examples/javascript/pie-chart/package.json +1 -1
  72. package/examples/javascript/pie-donut-chart/package.json +1 -1
  73. package/examples/javascript/pie-variable-radius/package.json +1 -1
  74. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  75. package/examples/javascript/radar-heat-map/package.json +1 -1
  76. package/examples/javascript/radar-line/package.json +1 -1
  77. package/examples/javascript/radar-time-line/package.json +1 -1
  78. package/examples/javascript/sliced-funnel/package.json +1 -1
  79. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  80. package/examples/javascript/sliced-pyramid/package.json +1 -1
  81. package/examples/javascript/stock-chart/package.json +1 -1
  82. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  83. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  84. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  85. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  86. package/examples/javascript/stock-chart-live/package.json +1 -1
  87. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  88. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  89. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  90. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  91. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  92. package/examples/javascript/venn-diagram/package.json +1 -1
  93. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  94. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  95. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  96. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  97. package/examples/javascript/xy-bubble/package.json +1 -1
  98. package/examples/javascript/xy-candlestick/package.json +1 -1
  99. package/examples/javascript/xy-clustered-column/package.json +1 -1
  100. package/examples/javascript/xy-column/package.json +1 -1
  101. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  102. package/examples/javascript/xy-data-grouping/package.json +1 -1
  103. package/examples/javascript/xy-draggable-range/package.json +1 -1
  104. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  105. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  106. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  107. package/examples/javascript/xy-line/package.json +1 -1
  108. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  109. package/examples/javascript/xy-live-data/package.json +1 -1
  110. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  111. package/examples/javascript/xy-ohlc/package.json +1 -1
  112. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  113. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  114. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  115. package/examples/javascript/xy-stacked-column/package.json +1 -1
  116. package/examples/javascript/xy-stacked-step/package.json +1 -1
  117. package/examples/javascript/xy-stock/package.json +1 -1
  118. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  119. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  120. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  121. package/examples/typescript/flow-chord/package.json +1 -1
  122. package/examples/typescript/flow-chord-directed/package.json +1 -1
  123. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  124. package/examples/typescript/flow-sankey/package.json +1 -1
  125. package/examples/typescript/gantt/package.json +1 -1
  126. package/examples/typescript/gantt-multilevel/package.json +1 -1
  127. package/examples/typescript/gantt-simple/package.json +1 -1
  128. package/examples/typescript/gauge/package.json +1 -1
  129. package/examples/typescript/gauge-bands/package.json +1 -1
  130. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  131. package/examples/typescript/hierarchy-pack/package.json +1 -1
  132. package/examples/typescript/hierarchy-partition/package.json +1 -1
  133. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  134. package/examples/typescript/hierarchy-tree/package.json +1 -1
  135. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  136. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  137. package/examples/typescript/jest/package.json +1 -1
  138. package/examples/typescript/json-pie/package.json +1 -1
  139. package/examples/typescript/json-xy/package.json +1 -1
  140. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  141. package/examples/typescript/map-clustered-points/package.json +1 -1
  142. package/examples/typescript/map-day-and-night/package.json +1 -1
  143. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  144. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  145. package/examples/typescript/map-with-bubbles/package.json +1 -1
  146. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  147. package/examples/typescript/misc-40-charts/package.json +1 -1
  148. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  149. package/examples/typescript/pie-chart/package.json +1 -1
  150. package/examples/typescript/pie-donut-chart/package.json +1 -1
  151. package/examples/typescript/pie-variable-radius/package.json +1 -1
  152. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  153. package/examples/typescript/radar-heat-map/package.json +1 -1
  154. package/examples/typescript/radar-line/package.json +1 -1
  155. package/examples/typescript/radar-time-line/package.json +1 -1
  156. package/examples/typescript/sliced-funnel/package.json +1 -1
  157. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  158. package/examples/typescript/sliced-pyramid/package.json +1 -1
  159. package/examples/typescript/stock-chart/package.json +1 -1
  160. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  161. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  162. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  163. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  164. package/examples/typescript/stock-chart-live/package.json +1 -1
  165. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  166. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  167. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  168. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  169. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  170. package/examples/typescript/venn-diagram/package.json +1 -1
  171. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  172. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  173. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  174. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  175. package/examples/typescript/xy-bubble/package.json +1 -1
  176. package/examples/typescript/xy-candlestick/package.json +1 -1
  177. package/examples/typescript/xy-clustered-column/package.json +1 -1
  178. package/examples/typescript/xy-column/package.json +1 -1
  179. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  180. package/examples/typescript/xy-data-grouping/package.json +1 -1
  181. package/examples/typescript/xy-draggable-range/package.json +1 -1
  182. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  183. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  184. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  185. package/examples/typescript/xy-line/package.json +1 -1
  186. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  187. package/examples/typescript/xy-live-data/package.json +1 -1
  188. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  189. package/examples/typescript/xy-ohlc/package.json +1 -1
  190. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  191. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  192. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  193. package/examples/typescript/xy-stacked-column/package.json +1 -1
  194. package/examples/typescript/xy-stacked-step/package.json +1 -1
  195. package/examples/typescript/xy-stock/package.json +1 -1
  196. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  197. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Chord.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/flow/Chord.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chord.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/flow/Chord.ts"],"names":[],"mappings":"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"}
@@ -62,27 +62,25 @@ export class Chord extends Flow {
62
62
  }
63
63
  _makeMatrix() {
64
64
  const matrix = [];
65
+ const valueSum = this.getPrivate("valueSum", 0);
66
+ const minSize = this.get("minSize", 0);
67
+ const minValue = minSize > 0 ? valueSum * minSize : 0;
65
68
  $array.each(this.nodes.dataItems, (sourceDataItem) => {
66
69
  const group = [];
67
70
  matrix.push(group);
68
- let outgoing = sourceDataItem.get("outgoingLinks");
71
+ const outgoing = sourceDataItem.get("outgoingLinks");
72
+ const outMap = new Map();
73
+ if (outgoing) {
74
+ $array.each(outgoing, (outgoingLink) => {
75
+ let value = outgoingLink.get("valueWorking");
76
+ if (value > 0 && minValue > 0 && value < minValue) {
77
+ value = minValue;
78
+ }
79
+ outMap.set(outgoingLink.get("target"), value);
80
+ });
81
+ }
69
82
  $array.each(this.nodes.dataItems, (targetDataItem) => {
70
- let value = 0;
71
- if (outgoing) {
72
- $array.each(outgoing, (outgoingLink) => {
73
- if (outgoingLink.get("target") === targetDataItem) {
74
- value = outgoingLink.get("valueWorking");
75
- }
76
- let valueSum = this.getPrivate("valueSum", 0);
77
- let minSize = this.get("minSize", 0);
78
- if (value > 0 && minSize > 0) {
79
- if (value < valueSum * minSize) {
80
- value = valueSum * minSize;
81
- }
82
- }
83
- });
84
- }
85
- group.push(value);
83
+ group.push(outMap.get(targetDataItem) || 0);
86
84
  });
87
85
  });
88
86
  return matrix;
@@ -1 +1 @@
1
- {"version":3,"file":"Chord.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/flow/Chord.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\n\nimport { Flow, IFlowSettings, IFlowDataItem, IFlowPrivate, IFlowEvents } from \"./Flow\";\nimport { chord, ribbon, RibbonGenerator, RibbonSubgroup, Ribbon } from \"d3-chord\";\nimport { ascending, descending } from \"d3\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { ChordNodes, IChordNodesDataItem } from \"./ChordNodes\";\nimport { ChordLink } from \"./ChordLink\";\nimport { Percent, p100, p50 } from \"../../core/util/Percent\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $math from \"../../core/util/Math\";\n\n\nexport interface IChordDataItem extends IFlowDataItem {\n\n\t/**\n\t * A link element.\n\t */\n\tlink: ChordLink;\n\n\t/**\n\t * Source node data item.\n\t */\n\tsource: DataItem<IChordNodesDataItem>;\n\n\t/**\n\t * Target node data item.\n\t */\n\ttarget: DataItem<IChordNodesDataItem>;\n\n}\n\nexport interface IChordSettings extends IFlowSettings {\n\n\t/**\n\t * Angle of a gap between each node, in degrees.\n\t *\n\t * @default 1\n\t */\n\tpadAngle?: number;\n\n\t/**\n\t * Radius of the diagram in percent or pixels.\n\t *\n\t * If set in percent, it will be relative to the whole area available for\n\t * the series.\n\t *\n\t * @default 90%\n\t */\n\tradius?: number | Percent;\n\n\t/**\n\t * The thickness of node strip in pixels.\n\t *\n\t * @default 10\n\t */\n\tnodeWidth?: number;\n\n\t/**\n\t * Starting angle in degrees.\n\t *\n\t * @default 0\n\t */\n\tstartAngle?: number;\n\n\t/**\n\t * How to sort nodes by their value.\n\t *\n\t * @default \"descending\"\n\t */\n\tsort?: \"ascending\" | \"descending\" | \"none\"\n\n}\n\nexport interface IChordPrivate extends IFlowPrivate {\n}\n\nexport interface IChordEvents extends IFlowEvents {\n}\n\n/**\n * Regular chord series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/flow-charts/} for more information\n * @important\n */\nexport class Chord extends Flow {\n\n\tpublic static className: string = \"Chord\";\n\tpublic static classNames: Array<string> = Flow.classNames.concat([Chord.className]);\n\n\t/**\n\t * List of link elements.\n\t *\n\t * @default new ListTemplate<ChordLink>\n\t */\n\tpublic readonly links: ListTemplate<ChordLink> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => ChordLink._new(this._root, { themeTags: [\"link\", \"shape\"] }, [this.links.template])\n\t));\n\n\t/**\n\t * A series for all chord nodes.\n\t *\n\t * @default ChordNodes.new()\n\t */\n\tpublic readonly nodes: ChordNodes = this.children.push(ChordNodes.new(this._root, {}));\n\n\tdeclare public _settings: IChordSettings;\n\tdeclare public _privateSettings: IChordPrivate;\n\tdeclare public _dataItemSettings: IChordDataItem;\n\tdeclare public _events: IChordEvents;\n\n\tpublic _d3chord = chord();\n\tpublic _chordLayout: { source: { index: number, startAngle: number, endAngle: number, value: number }, target: { index: number, startAngle: number, endAngle: number, value: number } }[] = [];\n\tpublic _ribbon = ribbon();\n\n\tprotected _afterNew() {\n\t\tthis._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"chord\"]);\n\t\tthis.linksContainer.setAll({ x: p50, y: p50 })\n\t\tthis.bulletsContainer.setAll({ x: p50, y: p50 });\n\t\tsuper._afterNew();\n\t}\n\n\tprotected _fixRibbon(ribbon: RibbonGenerator<any, Ribbon, RibbonSubgroup>) {\n\t\tribbon.startAngle((d) => {\n\t\t\treturn d.startAngle + this.get(\"startAngle\", 0) * $math.RADIANS + Math.PI / 2;\n\t\t})\n\n\t\tribbon.endAngle((d) => {\n\t\t\treturn d.endAngle + this.get(\"startAngle\", 0) * $math.RADIANS + Math.PI / 2;\n\t\t})\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeLink(dataItem: DataItem<this[\"_dataItemSettings\"]>): ChordLink {\n\t\tconst link = this.linksContainer.children.push(this.links.make());\n\t\tthis.links.push(link);\n\t\tlink._setDataItem(dataItem);\n\t\tlink.set(\"source\", dataItem.get(\"source\"));\n\t\tlink.set(\"target\", dataItem.get(\"target\"));\n\t\tlink.series = this;\n\t\treturn link;\n\t}\n\n\tprotected _makeMatrix(): number[][] {\n\t\tconst matrix: number[][] = [];\n\t\t$array.each(this.nodes.dataItems, (sourceDataItem) => {\n\t\t\tconst group: number[] = [];\n\t\t\tmatrix.push(group);\n\t\t\tlet outgoing = sourceDataItem.get(\"outgoingLinks\");\n\n\t\t\t$array.each(this.nodes.dataItems, (targetDataItem) => {\n\t\t\t\tlet value = 0;\n\t\t\t\tif (outgoing) {\n\t\t\t\t\t$array.each(outgoing, (outgoingLink) => {\n\t\t\t\t\t\tif (outgoingLink.get(\"target\") === targetDataItem) {\n\t\t\t\t\t\t\tvalue = outgoingLink.get(\"valueWorking\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet valueSum = this.getPrivate(\"valueSum\", 0);\n\t\t\t\t\t\tlet minSize = this.get(\"minSize\", 0);\n\t\t\t\t\t\tif(value > 0 && minSize > 0){\n\t\t\t\t\t\t\tif(value < valueSum * minSize){\n\t\t\t\t\t\t\t\tvalue = valueSum * minSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tgroup.push(value);\n\t\t\t})\n\t\t})\n\t\treturn matrix;\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tthis._fixRibbon(this._ribbon);\n\n\t\tlet chordChanged = false;\n\n\t\tif (this._valuesDirty || this._sizeDirty || this.isDirty(\"padAngle\") || this.isDirty(\"startAngle\")) {\n\n\t\t\tconst matrix = this._makeMatrix();\n\n\t\t\tthis._d3chord.padAngle(this.get(\"padAngle\", 0) * $math.RADIANS);\n\t\t\tconst sort = this.get(\"sort\");\n\n\t\t\tif (sort === \"ascending\") {\n\t\t\t\tthis._d3chord.sortGroups(ascending);\n\t\t\t}\n\t\t\telse if (sort === \"descending\") {\n\t\t\t\tthis._d3chord.sortGroups(descending);\n\t\t\t}\n/*\n\t\t\tthis._d3chord.sortSubgroups((a, b)=>{\n\t\t\t\tif (a != Math.round(a)) return false\n\t\t\t\tif (b != Math.round(b)) return true\n\t\t\t\treturn b < a ? -1 : b > a ? 1 : 0;\n\t\t\t})\n*/\n\t\t\tthis._chordLayout = this._d3chord(matrix);\n\n\t\t\tchordChanged = true;\n\t\t}\n\n\t\tif (chordChanged || this.isDirty(\"radius\") || this.isDirty(\"nodeWidth\")) {\n\t\t\tlet radius = $utils.relativeToValue(this.get(\"radius\", 0), Math.min(this.innerWidth(), this.innerHeight())) / 2;\n\n\t\t\tlet i = 0;\n\n\t\t\tconst chordStartAngle = this.get(\"startAngle\", 0);\n\t\t\tconst nodeWidth = this.get(\"nodeWidth\", 0);\n\n\t\t\t$array.each(this.nodes.dataItems, (dataItem) => {\n\t\t\t\tconst slice = dataItem.get(\"slice\");\n\t\t\t\tconst chordGroup = (this._chordLayout as any).groups[i];\n\t\t\t\tconst startAngle = chordGroup.startAngle * $math.DEGREES + chordStartAngle;\n\t\t\t\tconst endAngle = chordGroup.endAngle * $math.DEGREES + chordStartAngle;\n\t\t\t\tslice.setAll({ radius: radius, innerRadius: radius - nodeWidth, startAngle: startAngle as number, arc: endAngle - startAngle })\n\n\t\t\t\tconst label = dataItem.get(\"label\");\n\t\t\t\tlabel.setAll({ labelAngle: startAngle + (endAngle - startAngle) / 2 });\n\t\t\t\tlabel.setPrivate(\"radius\", radius);\n\t\t\t\tlabel.setPrivate(\"innerRadius\", 0.1);\n\t\t\t\ti++;\n\t\t\t})\n\n\t\t\tconst linkRadius = radius - this.get(\"nodeWidth\", 0);\n\n\t\t\t$array.each(this._chordLayout, (chord) => {\n\n\t\t\t\tlet dataItem = this._linksByIndex[chord.source.index + \"_\" + chord.target.index];\n\n\t\t\t\tif (!dataItem) {\n\t\t\t\t\tdataItem = this._linksByIndex[chord.target.index + \"_\" + chord.source.index];\n\t\t\t\t}\n\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tconst link = dataItem.get(\"link\");\n\t\t\t\t\tthis._getLinkPoints(link, linkRadius, chord);\n\t\t\t\t\tthis._updateLink(this._ribbon, link, linkRadius, chord);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _getLinkPoints(link: ChordLink, linkRadius: number, chordLayoutItem: any) {\n\t\tconst source = chordLayoutItem.source;\n\t\tconst target = chordLayoutItem.target;\n\n\t\tconst chordStartAngle = this.get(\"startAngle\", 0) * $math.RADIANS;\n\n\t\tif (source && target) {\n\t\t\tconst startAngle0 = source.startAngle;\n\t\t\tconst endAngle0 = source.endAngle\n\t\t\tconst angle0 = startAngle0 + (endAngle0 - startAngle0) / 2 + chordStartAngle;\n\n\t\t\tconst startAngle1 = target.startAngle;\n\t\t\tconst endAngle1 = target.endAngle\n\t\t\tconst angle1 = startAngle1 + (endAngle1 - startAngle1) / 2 + chordStartAngle;\n\n\t\t\tlink._p0 = { x: linkRadius * Math.cos(angle0), y: linkRadius * Math.sin(angle0) };\n\t\t\tlink._p1 = { x: linkRadius * Math.cos(angle1), y: linkRadius * Math.sin(angle1) };\n\t\t}\n\t}\n\n\tprotected _updateLink(ribbon: RibbonGenerator<any, Ribbon, RibbonSubgroup>, link: ChordLink, linkRadius: number, chordLayoutItem: any) {\n\t\tif (chordLayoutItem) {\n\t\t\tribbon.sourceRadius($utils.relativeToValue(link.get(\"sourceRadius\", p100), linkRadius));\n\t\t\tribbon.targetRadius($utils.relativeToValue(link.get(\"targetRadius\", p100), linkRadius));\n\n\t\t\tlink.set(\"draw\", (display) => {\n\t\t\t\tribbon.context(display as any);\n\t\t\t\tribbon(chordLayoutItem);\n\t\t\t})\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"Chord.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/flow/Chord.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\n\nimport { Flow, IFlowSettings, IFlowDataItem, IFlowPrivate, IFlowEvents } from \"./Flow\";\nimport { chord, ribbon, RibbonGenerator, RibbonSubgroup, Ribbon } from \"d3-chord\";\nimport { ascending, descending } from \"d3\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { ChordNodes, IChordNodesDataItem } from \"./ChordNodes\";\nimport { ChordLink } from \"./ChordLink\";\nimport { Percent, p100, p50 } from \"../../core/util/Percent\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $math from \"../../core/util/Math\";\n\n\nexport interface IChordDataItem extends IFlowDataItem {\n\n\t/**\n\t * A link element.\n\t */\n\tlink: ChordLink;\n\n\t/**\n\t * Source node data item.\n\t */\n\tsource: DataItem<IChordNodesDataItem>;\n\n\t/**\n\t * Target node data item.\n\t */\n\ttarget: DataItem<IChordNodesDataItem>;\n\n}\n\nexport interface IChordSettings extends IFlowSettings {\n\n\t/**\n\t * Angle of a gap between each node, in degrees.\n\t *\n\t * @default 1\n\t */\n\tpadAngle?: number;\n\n\t/**\n\t * Radius of the diagram in percent or pixels.\n\t *\n\t * If set in percent, it will be relative to the whole area available for\n\t * the series.\n\t *\n\t * @default 90%\n\t */\n\tradius?: number | Percent;\n\n\t/**\n\t * The thickness of node strip in pixels.\n\t *\n\t * @default 10\n\t */\n\tnodeWidth?: number;\n\n\t/**\n\t * Starting angle in degrees.\n\t *\n\t * @default 0\n\t */\n\tstartAngle?: number;\n\n\t/**\n\t * How to sort nodes by their value.\n\t *\n\t * @default \"descending\"\n\t */\n\tsort?: \"ascending\" | \"descending\" | \"none\"\n\n}\n\nexport interface IChordPrivate extends IFlowPrivate {\n}\n\nexport interface IChordEvents extends IFlowEvents {\n}\n\n/**\n * Regular chord series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/flow-charts/} for more information\n * @important\n */\nexport class Chord extends Flow {\n\n\tpublic static className: string = \"Chord\";\n\tpublic static classNames: Array<string> = Flow.classNames.concat([Chord.className]);\n\n\t/**\n\t * List of link elements.\n\t *\n\t * @default new ListTemplate<ChordLink>\n\t */\n\tpublic readonly links: ListTemplate<ChordLink> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => ChordLink._new(this._root, { themeTags: [\"link\", \"shape\"] }, [this.links.template])\n\t));\n\n\t/**\n\t * A series for all chord nodes.\n\t *\n\t * @default ChordNodes.new()\n\t */\n\tpublic readonly nodes: ChordNodes = this.children.push(ChordNodes.new(this._root, {}));\n\n\tdeclare public _settings: IChordSettings;\n\tdeclare public _privateSettings: IChordPrivate;\n\tdeclare public _dataItemSettings: IChordDataItem;\n\tdeclare public _events: IChordEvents;\n\n\tpublic _d3chord = chord();\n\tpublic _chordLayout: { source: { index: number, startAngle: number, endAngle: number, value: number }, target: { index: number, startAngle: number, endAngle: number, value: number } }[] = [];\n\tpublic _ribbon = ribbon();\n\n\tprotected _afterNew() {\n\t\tthis._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"chord\"]);\n\t\tthis.linksContainer.setAll({ x: p50, y: p50 })\n\t\tthis.bulletsContainer.setAll({ x: p50, y: p50 });\n\t\tsuper._afterNew();\n\t}\n\n\tprotected _fixRibbon(ribbon: RibbonGenerator<any, Ribbon, RibbonSubgroup>) {\n\t\tribbon.startAngle((d) => {\n\t\t\treturn d.startAngle + this.get(\"startAngle\", 0) * $math.RADIANS + Math.PI / 2;\n\t\t})\n\n\t\tribbon.endAngle((d) => {\n\t\t\treturn d.endAngle + this.get(\"startAngle\", 0) * $math.RADIANS + Math.PI / 2;\n\t\t})\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeLink(dataItem: DataItem<this[\"_dataItemSettings\"]>): ChordLink {\n\t\tconst link = this.linksContainer.children.push(this.links.make());\n\t\tthis.links.push(link);\n\t\tlink._setDataItem(dataItem);\n\t\tlink.set(\"source\", dataItem.get(\"source\"));\n\t\tlink.set(\"target\", dataItem.get(\"target\"));\n\t\tlink.series = this;\n\t\treturn link;\n\t}\n\n\tprotected _makeMatrix(): number[][] {\n\t\tconst matrix: number[][] = [];\n\t\tconst valueSum = this.getPrivate(\"valueSum\", 0);\n\t\tconst minSize = this.get(\"minSize\", 0);\n\t\tconst minValue = minSize > 0 ? valueSum * minSize : 0;\n\n\t\t$array.each(this.nodes.dataItems, (sourceDataItem) => {\n\t\t\tconst group: number[] = [];\n\t\t\tmatrix.push(group);\n\t\t\tconst outgoing = sourceDataItem.get(\"outgoingLinks\");\n\n\t\t\tconst outMap = new Map<any, number>();\n\t\t\tif (outgoing) {\n\t\t\t\t$array.each(outgoing, (outgoingLink) => {\n\t\t\t\t\tlet value = outgoingLink.get(\"valueWorking\");\n\t\t\t\t\tif (value > 0 && minValue > 0 && value < minValue) {\n\t\t\t\t\t\tvalue = minValue;\n\t\t\t\t\t}\n\t\t\t\t\toutMap.set(outgoingLink.get(\"target\"), value);\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t$array.each(this.nodes.dataItems, (targetDataItem) => {\n\t\t\t\tgroup.push(outMap.get(targetDataItem) || 0);\n\t\t\t})\n\t\t})\n\t\treturn matrix;\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tthis._fixRibbon(this._ribbon);\n\n\t\tlet chordChanged = false;\n\n\t\tif (this._valuesDirty || this._sizeDirty || this.isDirty(\"padAngle\") || this.isDirty(\"startAngle\")) {\n\n\t\t\tconst matrix = this._makeMatrix();\n\n\t\t\tthis._d3chord.padAngle(this.get(\"padAngle\", 0) * $math.RADIANS);\n\t\t\tconst sort = this.get(\"sort\");\n\n\t\t\tif (sort === \"ascending\") {\n\t\t\t\tthis._d3chord.sortGroups(ascending);\n\t\t\t}\n\t\t\telse if (sort === \"descending\") {\n\t\t\t\tthis._d3chord.sortGroups(descending);\n\t\t\t}\n/*\n\t\t\tthis._d3chord.sortSubgroups((a, b)=>{\n\t\t\t\tif (a != Math.round(a)) return false\n\t\t\t\tif (b != Math.round(b)) return true\n\t\t\t\treturn b < a ? -1 : b > a ? 1 : 0;\n\t\t\t})\n*/\n\t\t\tthis._chordLayout = this._d3chord(matrix);\n\n\t\t\tchordChanged = true;\n\t\t}\n\n\t\tif (chordChanged || this.isDirty(\"radius\") || this.isDirty(\"nodeWidth\")) {\n\t\t\tlet radius = $utils.relativeToValue(this.get(\"radius\", 0), Math.min(this.innerWidth(), this.innerHeight())) / 2;\n\n\t\t\tlet i = 0;\n\n\t\t\tconst chordStartAngle = this.get(\"startAngle\", 0);\n\t\t\tconst nodeWidth = this.get(\"nodeWidth\", 0);\n\n\t\t\t$array.each(this.nodes.dataItems, (dataItem) => {\n\t\t\t\tconst slice = dataItem.get(\"slice\");\n\t\t\t\tconst chordGroup = (this._chordLayout as any).groups[i];\n\t\t\t\tconst startAngle = chordGroup.startAngle * $math.DEGREES + chordStartAngle;\n\t\t\t\tconst endAngle = chordGroup.endAngle * $math.DEGREES + chordStartAngle;\n\t\t\t\tslice.setAll({ radius: radius, innerRadius: radius - nodeWidth, startAngle: startAngle as number, arc: endAngle - startAngle })\n\n\t\t\t\tconst label = dataItem.get(\"label\");\n\t\t\t\tlabel.setAll({ labelAngle: startAngle + (endAngle - startAngle) / 2 });\n\t\t\t\tlabel.setPrivate(\"radius\", radius);\n\t\t\t\tlabel.setPrivate(\"innerRadius\", 0.1);\n\t\t\t\ti++;\n\t\t\t})\n\n\t\t\tconst linkRadius = radius - this.get(\"nodeWidth\", 0);\n\n\t\t\t$array.each(this._chordLayout, (chord) => {\n\n\t\t\t\tlet dataItem = this._linksByIndex[chord.source.index + \"_\" + chord.target.index];\n\n\t\t\t\tif (!dataItem) {\n\t\t\t\t\tdataItem = this._linksByIndex[chord.target.index + \"_\" + chord.source.index];\n\t\t\t\t}\n\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tconst link = dataItem.get(\"link\");\n\t\t\t\t\tthis._getLinkPoints(link, linkRadius, chord);\n\t\t\t\t\tthis._updateLink(this._ribbon, link, linkRadius, chord);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _getLinkPoints(link: ChordLink, linkRadius: number, chordLayoutItem: any) {\n\t\tconst source = chordLayoutItem.source;\n\t\tconst target = chordLayoutItem.target;\n\n\t\tconst chordStartAngle = this.get(\"startAngle\", 0) * $math.RADIANS;\n\n\t\tif (source && target) {\n\t\t\tconst startAngle0 = source.startAngle;\n\t\t\tconst endAngle0 = source.endAngle\n\t\t\tconst angle0 = startAngle0 + (endAngle0 - startAngle0) / 2 + chordStartAngle;\n\n\t\t\tconst startAngle1 = target.startAngle;\n\t\t\tconst endAngle1 = target.endAngle\n\t\t\tconst angle1 = startAngle1 + (endAngle1 - startAngle1) / 2 + chordStartAngle;\n\n\t\t\tlink._p0 = { x: linkRadius * Math.cos(angle0), y: linkRadius * Math.sin(angle0) };\n\t\t\tlink._p1 = { x: linkRadius * Math.cos(angle1), y: linkRadius * Math.sin(angle1) };\n\t\t}\n\t}\n\n\tprotected _updateLink(ribbon: RibbonGenerator<any, Ribbon, RibbonSubgroup>, link: ChordLink, linkRadius: number, chordLayoutItem: any) {\n\t\tif (chordLayoutItem) {\n\t\t\tribbon.sourceRadius($utils.relativeToValue(link.get(\"sourceRadius\", p100), linkRadius));\n\t\t\tribbon.targetRadius($utils.relativeToValue(link.get(\"targetRadius\", p100), linkRadius));\n\n\t\t\tlink.set(\"draw\", (display) => {\n\t\t\t\tribbon.context(display as any);\n\t\t\t\tribbon(chordLayoutItem);\n\t\t\t})\n\t\t}\n\t}\n}\n"]}
@@ -112,6 +112,6 @@ export declare class Treemap extends Hierarchy {
112
112
  makeNode(dataItem: DataItem<this["_dataItemSettings"]>): HierarchyNode;
113
113
  _zoom(dataItem: DataItem<this["_dataItemSettings"]>): void;
114
114
  protected _selectDataItem(dataItem?: DataItem<this["_dataItemSettings"]>, downDepth?: number, skipDisptach?: boolean): void;
115
- protected _getVisibleNodes(dataItem: DataItem<this["_dataItemSettings"]>, maxDepth: number): DataItem<this["_dataItemSettings"]>[];
115
+ protected _getVisibleNodes(dataItem: DataItem<this["_dataItemSettings"]>, maxDepth: number, out?: Array<DataItem<this["_dataItemSettings"]>>): Array<DataItem<this["_dataItemSettings"]>>;
116
116
  }
117
117
  //# sourceMappingURL=Treemap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Treemap.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Treemap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Treemap.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Treemap.ts"],"names":[],"mappings":"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"}
@@ -203,9 +203,9 @@ export class Treemap extends Hierarchy {
203
203
  if (!this.inited) {
204
204
  maxDepth = this.get("initialDepth", 1);
205
205
  }
206
- const visibleNodes = this._getVisibleNodes(dataItem, maxDepth);
206
+ const visibleSet = new Set(this._getVisibleNodes(dataItem, maxDepth));
207
207
  this.nodes.each((node) => {
208
- if (visibleNodes.indexOf(node.dataItem) == -1) {
208
+ if (!visibleSet.has(node.dataItem)) {
209
209
  node.setPrivate("focusable", false);
210
210
  }
211
211
  else {
@@ -215,20 +215,22 @@ export class Treemap extends Hierarchy {
215
215
  }
216
216
  this._root._invalidateTabindexes();
217
217
  }
218
- _getVisibleNodes(dataItem, maxDepth) {
218
+ _getVisibleNodes(dataItem, maxDepth, out) {
219
+ if (!out) {
220
+ out = [];
221
+ }
219
222
  const children = dataItem.get("children");
220
- let includedChildren = [];
221
223
  if (children) {
222
224
  $array.each(children, (child) => {
223
225
  if (child.get("depth") == maxDepth || !child.get("children")) {
224
- includedChildren.push(child);
226
+ out.push(child);
225
227
  }
226
228
  else {
227
- includedChildren = includedChildren.concat(this._getVisibleNodes(child, maxDepth));
229
+ this._getVisibleNodes(child, maxDepth, out);
228
230
  }
229
231
  });
230
232
  }
231
- return includedChildren;
233
+ return out;
232
234
  }
233
235
  }
234
236
  Treemap.className = "Treemap";
@@ -1 +1 @@
1
- {"version":3,"file":"Treemap.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Treemap.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HierarchyNode } from \"./HierarchyNode\";\nimport type { DataItem } from \"../../core/render/Component\";\n\nimport { Hierarchy, IHierarchyPrivate, IHierarchySettings, IHierarchyDataItem, IHierarchyDataObject } from \"./Hierarchy\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as d3hierarchy from \"d3-hierarchy\";\n\nexport interface ITreemapDataObject { name?: string, value?: number, children?: ITreemapDataObject[], dataItem?: DataItem<ITreemapDataItem> };\n\nexport interface ITreemapDataItem extends IHierarchyDataItem {\n\tchildren: Array<DataItem<ITreemapDataItem>>;\n\tparent: DataItem<ITreemapDataItem>;\n\td3HierarchyNode: d3hierarchy.HierarchyRectangularNode<IHierarchyDataObject>;\n\trectangle: RoundedRectangle;\n}\n\nexport interface ITreemapSettings extends IHierarchySettings {\n\n\t/**\n\t * Gap between nodes. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingInner?: number;\n\n\t/**\n\t * Gap between nodes and outer edge of the chart. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingOuter?: number;\n\n\t/**\n\t * Gap between nodes and top edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingTop?: number;\n\n\t/**\n\t * Gap between nodes and bottomedge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingBottom?: number;\n\n\t/**\n\t * Gap between nodes and left edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingLeft?: number;\n\n\t/**\n\t * Gap between nodes and bottom edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingRight?: number;\n\n\t/**\n\t * An algorithm to use when laying out node rectangles.\n\t *\n\t * @see {@link }\n\t * @default \"squarify\"\n\t */\n\tlayoutAlgorithm?: \"binary\" | \"squarify\" | \"slice\" | \"dice\" | \"sliceDice\";\n\n}\n\nexport interface ITreemapPrivate extends IHierarchyPrivate {\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}\n\n/**\n * Treemap series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/} for more info\n */\nexport class Treemap extends Hierarchy {\n\n\tdeclare public _settings: ITreemapSettings;\n\tdeclare public _privateSettings: ITreemapPrivate;\n\tdeclare public _dataItemSettings: ITreemapDataItem;\n\n\tprotected _tag: string = \"treemap\";\n\n\tpublic static className: string = \"Treemap\";\n\tpublic static classNames: Array<string> = Hierarchy.classNames.concat([Treemap.className]);\n\n\tpublic readonly rectangleTemplate: Template<RoundedRectangle> = Template.new({});\n\n\tpublic _treemapLayout = d3hierarchy.treemap().tile(d3hierarchy.treemapSquarify);\n\n\tdeclare public _rootNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject> | undefined;\n\n\t/**\n\t * A list of node rectangle elements in a [[Treemap]] chart.\n\t *\n\t * @default new ListTemplate<RoundedRectangle>\n\t */\n\tpublic readonly rectangles: ListTemplate<RoundedRectangle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => RoundedRectangle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.rectangles.template.get(\"themeTags\", []), [this._tag, \"shape\"])\n\t\t}, [this.rectangles.template])\n\t));\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.setPrivate(\"scaleX\", 1);\n\t\tthis.setPrivate(\"scaleY\", 1);\n\n\t\tthis.nodes.template.setPrivate(\"trustBounds\", true);\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this.isDirty(\"layoutAlgorithm\")) {\n\t\t\tlet algorithm;\n\n\t\t\tswitch (this.get(\"layoutAlgorithm\")) {\n\t\t\t\tcase \"squarify\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSquarify;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"binary\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapBinary;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"slice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSlice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapDice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sliceDice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSliceDice;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (algorithm) {\n\t\t\t\tthis._treemapLayout = d3hierarchy.treemap().tile(algorithm);\n\t\t\t\tthis._updateVisuals();\n\n\t\t\t\tconst selectedDataItem = this.get(\"selectedDataItem\") as DataItem<this[\"_dataItemSettings\"]>;\n\t\t\t\tif (selectedDataItem) {\n\t\t\t\t\tthis._zoom(selectedDataItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"nodePaddingRight\") || this.isDirty(\"nodePaddingLeft\") || this.isDirty(\"nodePaddingTop\") || this.isDirty(\"nodePaddingBottom\") || this.isDirty(\"nodePaddingOuter\") || this.isDirty(\"nodePaddingInner\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodes(this._rootNode);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isPrivateDirty(\"scaleX\") || this.isPrivateDirty(\"scaleY\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodesScale(this._rootNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _updateVisuals() {\n\t\tif (this._rootNode) {\n\t\t\tconst treemapLayout = this._treemapLayout;\n\t\t\ttreemapLayout.size([this.innerWidth(), this.innerHeight()]);\n\n\t\t\tconst paddingLeft = this.get(\"nodePaddingLeft\");\n\t\t\tconst paddingRight = this.get(\"nodePaddingRight\");\n\t\t\tconst paddingTop = this.get(\"nodePaddingTop\");\n\t\t\tconst paddingBottom = this.get(\"nodePaddingBottom\");\n\t\t\tconst paddingInner = this.get(\"nodePaddingInner\");\n\t\t\tconst paddingOuter = this.get(\"nodePaddingOuter\");\n\t\t\tif ($type.isNumber(paddingLeft)) {\n\t\t\t\ttreemapLayout.paddingLeft(paddingLeft);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingRight)) {\n\t\t\t\ttreemapLayout.paddingRight(paddingRight);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingTop)) {\n\t\t\t\ttreemapLayout.paddingTop(paddingTop);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingBottom)) {\n\t\t\t\ttreemapLayout.paddingBottom(paddingBottom);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingInner)) {\n\t\t\t\ttreemapLayout.paddingInner(paddingInner);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingOuter)) {\n\t\t\t\ttreemapLayout.paddingOuter(paddingOuter);\n\t\t\t}\n\n\t\t\ttreemapLayout(this._rootNode);\n\t\t\tthis._updateNodes(this._rootNode);\n\t\t}\n\t}\n\n\tprotected _updateNode(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._updateNode(dataItem);\n\n\t\tconst node = dataItem.get(\"node\");\n\t\tconst rectangle = dataItem.get(\"rectangle\");\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\tconst w = x1 - x0;\n\t\tconst h = y1 - y0;\n\n\t\tconst duration = this.get(\"animationDuration\", 0);\n\t\tconst easing = this.get(\"animationEasing\");\n\n\t\tnode.animate({ key: \"x\", to: x0, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"y\", to: y0, duration: duration, easing: easing })\n\n\t\tnode.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\n\t\tif (rectangle) {\n\t\t\tconst fill = dataItem.get(\"fill\");\n\t\t\tconst fillPattern = dataItem.get(\"fillPattern\");\n\n\t\t\trectangle.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\t\trectangle.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\t\t\trectangle._setDefault(\"fill\", fill);\n\t\t\trectangle._setDefault(\"fillPattern\", fillPattern);\n\t\t\trectangle._setDefault(\"stroke\", fill);\n\t\t}\n\t}\n\n\n\tprotected _updateNodesScale(hierarchyNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject>) {\n\t\tconst dataItem = hierarchyNode.data.dataItem;\n\t\tif (dataItem) {\n\t\t\tconst node = dataItem.get(\"node\");\n\t\t\tconst rectangle = dataItem.get(\"rectangle\");\n\n\t\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\t\tconst w = x1 - x0;\n\t\t\tconst h = y1 - y0;\n\n\t\t\tnode.setAll({ x: x0, y: y0, width: w, height: h });\n\t\t\trectangle.setAll({ width: w, height: h });\n\n\t\t\tconst hierarchyChildren = hierarchyNode.children;\n\t\t\tif (hierarchyChildren) {\n\t\t\t\t$array.each(hierarchyChildren, (hierarchyChild) => {\n\t\t\t\t\tthis._updateNodesScale(hierarchyChild)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeNode(dataItem: DataItem<this[\"_dataItemSettings\"]>): HierarchyNode {\n\t\tconst node = super.makeNode(dataItem);\n\n\t\tconst rectangle = node.children.moveValue(this.rectangles.make(), 0);\n\n\t\tnode.setPrivate(\"tooltipTarget\", rectangle);\n\t\tdataItem.setRaw(\"rectangle\", rectangle);\n\n\t\tconst label = dataItem.get(\"label\");\n\n\t\trectangle.on(\"width\", () => {\n\t\t\tlabel.setPrivate(\"maxWidth\", rectangle.width());\n\t\t})\n\n\t\trectangle.on(\"height\", () => {\n\t\t\tlabel.setPrivate(\"maxHeight\", rectangle.height());\n\t\t})\n\n\t\treturn node;\n\t}\n\n\tpublic _zoom(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tif (this.width() > 0 && this.height() > 0) {\n\t\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\t\tconst nodePaddingOuter = this.get(\"nodePaddingOuter\", 0);\n\n\t\t\tlet x0 = hierarchyNode.x0 + nodePaddingOuter;\n\t\t\tlet x1 = hierarchyNode.x1 - nodePaddingOuter;\n\n\t\t\tlet y0 = hierarchyNode.y0 + nodePaddingOuter;\n\t\t\tlet y1 = hierarchyNode.y1 - nodePaddingOuter;\n\n\t\t\tlet scaleX = (this.innerWidth() - nodePaddingOuter * 2) / (x1 - x0);\n\t\t\tlet scaleY = (this.innerHeight() - nodePaddingOuter * 2) / (y1 - y0);\n\n\t\t\tconst easing = this.get(\"animationEasing\");\n\t\t\tlet duration = this.get(\"animationDuration\", 0);\n\n\t\t\tif (!this.inited) {\n\t\t\t\tduration = 0;\n\t\t\t}\n\n\t\t\tthis.animatePrivate({ key: \"scaleX\", to: scaleX, duration: duration, easing: easing });\n\t\t\tthis.animatePrivate({ key: \"scaleY\", to: scaleY, duration: duration, easing: easing });\n\n\t\t\tthis.nodesContainer.animate({ key: \"x\", to: nodePaddingOuter - x0 * scaleX, duration: duration, easing: easing });\n\t\t\tthis.nodesContainer.animate({ key: \"y\", to: nodePaddingOuter - y0 * scaleY, duration: duration, easing: easing });\n\t\t}\n\t}\n\n\tprotected _selectDataItem(dataItem?: DataItem<this[\"_dataItemSettings\"]>, downDepth?: number, skipDisptach?: boolean) {\n\t\tsuper._selectDataItem(dataItem, downDepth, skipDisptach);\n\n\t\tif (dataItem) {\n\t\t\tlet maxDepth = this.get(\"downDepth\", 1) + dataItem.get(\"depth\");\n\t\t\tif (!this.inited) {\n\t\t\t\tmaxDepth = this.get(\"initialDepth\", 1);\n\t\t\t}\n\t\t\tconst visibleNodes = this._getVisibleNodes(dataItem, maxDepth);\n\t\t\tthis.nodes.each((node) => {\n\t\t\t\tif (visibleNodes.indexOf(node.dataItem as DataItem<this[\"_dataItemSettings\"]>) == -1) {\n\t\t\t\t\tnode.setPrivate(\"focusable\", false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.removePrivate(\"focusable\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis._root._invalidateTabindexes();\n\t}\n\n\tprotected _getVisibleNodes(dataItem: DataItem<this[\"_dataItemSettings\"]>, maxDepth: number) {\n\t\tconst children = dataItem.get(\"children\");\n\t\tlet includedChildren: Array<DataItem<this[\"_dataItemSettings\"]>> = [];\n\t\tif (children) {\n\t\t\t$array.each(children, (child) => {\n\t\t\t\tif (child.get(\"depth\") == maxDepth || !child.get(\"children\")) {\n\t\t\t\t\tincludedChildren.push(child);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tincludedChildren = includedChildren.concat(this._getVisibleNodes(child, maxDepth));\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn includedChildren;\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"Treemap.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/Treemap.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HierarchyNode } from \"./HierarchyNode\";\nimport type { DataItem } from \"../../core/render/Component\";\n\nimport { Hierarchy, IHierarchyPrivate, IHierarchySettings, IHierarchyDataItem, IHierarchyDataObject } from \"./Hierarchy\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as d3hierarchy from \"d3-hierarchy\";\n\nexport interface ITreemapDataObject { name?: string, value?: number, children?: ITreemapDataObject[], dataItem?: DataItem<ITreemapDataItem> };\n\nexport interface ITreemapDataItem extends IHierarchyDataItem {\n\tchildren: Array<DataItem<ITreemapDataItem>>;\n\tparent: DataItem<ITreemapDataItem>;\n\td3HierarchyNode: d3hierarchy.HierarchyRectangularNode<IHierarchyDataObject>;\n\trectangle: RoundedRectangle;\n}\n\nexport interface ITreemapSettings extends IHierarchySettings {\n\n\t/**\n\t * Gap between nodes. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingInner?: number;\n\n\t/**\n\t * Gap between nodes and outer edge of the chart. In pixels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingOuter?: number;\n\n\t/**\n\t * Gap between nodes and top edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingTop?: number;\n\n\t/**\n\t * Gap between nodes and bottomedge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingBottom?: number;\n\n\t/**\n\t * Gap between nodes and left edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingLeft?: number;\n\n\t/**\n\t * Gap between nodes and bottom edge.\n\t *\n\t * Will be ignored if `nodePaddingOuter` is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/#Margins}\n\t */\n\tnodePaddingRight?: number;\n\n\t/**\n\t * An algorithm to use when laying out node rectangles.\n\t *\n\t * @see {@link }\n\t * @default \"squarify\"\n\t */\n\tlayoutAlgorithm?: \"binary\" | \"squarify\" | \"slice\" | \"dice\" | \"sliceDice\";\n\n}\n\nexport interface ITreemapPrivate extends IHierarchyPrivate {\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}\n\n/**\n * Treemap series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/treemap/} for more info\n */\nexport class Treemap extends Hierarchy {\n\n\tdeclare public _settings: ITreemapSettings;\n\tdeclare public _privateSettings: ITreemapPrivate;\n\tdeclare public _dataItemSettings: ITreemapDataItem;\n\n\tprotected _tag: string = \"treemap\";\n\n\tpublic static className: string = \"Treemap\";\n\tpublic static classNames: Array<string> = Hierarchy.classNames.concat([Treemap.className]);\n\n\tpublic readonly rectangleTemplate: Template<RoundedRectangle> = Template.new({});\n\n\tpublic _treemapLayout = d3hierarchy.treemap().tile(d3hierarchy.treemapSquarify);\n\n\tdeclare public _rootNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject> | undefined;\n\n\t/**\n\t * A list of node rectangle elements in a [[Treemap]] chart.\n\t *\n\t * @default new ListTemplate<RoundedRectangle>\n\t */\n\tpublic readonly rectangles: ListTemplate<RoundedRectangle> = this.addDisposer(new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => RoundedRectangle._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.rectangles.template.get(\"themeTags\", []), [this._tag, \"shape\"])\n\t\t}, [this.rectangles.template])\n\t));\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.setPrivate(\"scaleX\", 1);\n\t\tthis.setPrivate(\"scaleY\", 1);\n\n\t\tthis.nodes.template.setPrivate(\"trustBounds\", true);\n\t}\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this.isDirty(\"layoutAlgorithm\")) {\n\t\t\tlet algorithm;\n\n\t\t\tswitch (this.get(\"layoutAlgorithm\")) {\n\t\t\t\tcase \"squarify\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSquarify;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"binary\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapBinary;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"slice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSlice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapDice;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"sliceDice\":\n\t\t\t\t\talgorithm = d3hierarchy.treemapSliceDice;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (algorithm) {\n\t\t\t\tthis._treemapLayout = d3hierarchy.treemap().tile(algorithm);\n\t\t\t\tthis._updateVisuals();\n\n\t\t\t\tconst selectedDataItem = this.get(\"selectedDataItem\") as DataItem<this[\"_dataItemSettings\"]>;\n\t\t\t\tif (selectedDataItem) {\n\t\t\t\t\tthis._zoom(selectedDataItem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"nodePaddingRight\") || this.isDirty(\"nodePaddingLeft\") || this.isDirty(\"nodePaddingTop\") || this.isDirty(\"nodePaddingBottom\") || this.isDirty(\"nodePaddingOuter\") || this.isDirty(\"nodePaddingInner\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodes(this._rootNode);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isPrivateDirty(\"scaleX\") || this.isPrivateDirty(\"scaleY\")) {\n\t\t\tif (this._rootNode) {\n\t\t\t\tthis._updateNodesScale(this._rootNode);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _updateVisuals() {\n\t\tif (this._rootNode) {\n\t\t\tconst treemapLayout = this._treemapLayout;\n\t\t\ttreemapLayout.size([this.innerWidth(), this.innerHeight()]);\n\n\t\t\tconst paddingLeft = this.get(\"nodePaddingLeft\");\n\t\t\tconst paddingRight = this.get(\"nodePaddingRight\");\n\t\t\tconst paddingTop = this.get(\"nodePaddingTop\");\n\t\t\tconst paddingBottom = this.get(\"nodePaddingBottom\");\n\t\t\tconst paddingInner = this.get(\"nodePaddingInner\");\n\t\t\tconst paddingOuter = this.get(\"nodePaddingOuter\");\n\t\t\tif ($type.isNumber(paddingLeft)) {\n\t\t\t\ttreemapLayout.paddingLeft(paddingLeft);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingRight)) {\n\t\t\t\ttreemapLayout.paddingRight(paddingRight);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingTop)) {\n\t\t\t\ttreemapLayout.paddingTop(paddingTop);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingBottom)) {\n\t\t\t\ttreemapLayout.paddingBottom(paddingBottom);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingInner)) {\n\t\t\t\ttreemapLayout.paddingInner(paddingInner);\n\t\t\t}\n\t\t\tif ($type.isNumber(paddingOuter)) {\n\t\t\t\ttreemapLayout.paddingOuter(paddingOuter);\n\t\t\t}\n\n\t\t\ttreemapLayout(this._rootNode);\n\t\t\tthis._updateNodes(this._rootNode);\n\t\t}\n\t}\n\n\tprotected _updateNode(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tsuper._updateNode(dataItem);\n\n\t\tconst node = dataItem.get(\"node\");\n\t\tconst rectangle = dataItem.get(\"rectangle\");\n\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\tconst w = x1 - x0;\n\t\tconst h = y1 - y0;\n\n\t\tconst duration = this.get(\"animationDuration\", 0);\n\t\tconst easing = this.get(\"animationEasing\");\n\n\t\tnode.animate({ key: \"x\", to: x0, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"y\", to: y0, duration: duration, easing: easing })\n\n\t\tnode.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\tnode.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\n\t\tif (rectangle) {\n\t\t\tconst fill = dataItem.get(\"fill\");\n\t\t\tconst fillPattern = dataItem.get(\"fillPattern\");\n\n\t\t\trectangle.animate({ key: \"width\", to: w, duration: duration, easing: easing })\n\t\t\trectangle.animate({ key: \"height\", to: h, duration: duration, easing: easing })\n\t\t\trectangle._setDefault(\"fill\", fill);\n\t\t\trectangle._setDefault(\"fillPattern\", fillPattern);\n\t\t\trectangle._setDefault(\"stroke\", fill);\n\t\t}\n\t}\n\n\n\tprotected _updateNodesScale(hierarchyNode: d3hierarchy.HierarchyRectangularNode<ITreemapDataObject>) {\n\t\tconst dataItem = hierarchyNode.data.dataItem;\n\t\tif (dataItem) {\n\t\t\tconst node = dataItem.get(\"node\");\n\t\t\tconst rectangle = dataItem.get(\"rectangle\");\n\n\t\t\tconst scaleX = this.getPrivate(\"scaleX\", 1);\n\t\t\tconst scaleY = this.getPrivate(\"scaleY\", 1);\n\n\t\t\tconst x0 = hierarchyNode.x0 * scaleX;\n\t\t\tconst x1 = hierarchyNode.x1 * scaleX;\n\t\t\tconst y0 = hierarchyNode.y0 * scaleY;\n\t\t\tconst y1 = hierarchyNode.y1 * scaleY;\n\n\t\t\tconst w = x1 - x0;\n\t\t\tconst h = y1 - y0;\n\n\t\t\tnode.setAll({ x: x0, y: y0, width: w, height: h });\n\t\t\trectangle.setAll({ width: w, height: h });\n\n\t\t\tconst hierarchyChildren = hierarchyNode.children;\n\t\t\tif (hierarchyChildren) {\n\t\t\t\t$array.each(hierarchyChildren, (hierarchyChild) => {\n\t\t\t\t\tthis._updateNodesScale(hierarchyChild)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeNode(dataItem: DataItem<this[\"_dataItemSettings\"]>): HierarchyNode {\n\t\tconst node = super.makeNode(dataItem);\n\n\t\tconst rectangle = node.children.moveValue(this.rectangles.make(), 0);\n\n\t\tnode.setPrivate(\"tooltipTarget\", rectangle);\n\t\tdataItem.setRaw(\"rectangle\", rectangle);\n\n\t\tconst label = dataItem.get(\"label\");\n\n\t\trectangle.on(\"width\", () => {\n\t\t\tlabel.setPrivate(\"maxWidth\", rectangle.width());\n\t\t})\n\n\t\trectangle.on(\"height\", () => {\n\t\t\tlabel.setPrivate(\"maxHeight\", rectangle.height());\n\t\t})\n\n\t\treturn node;\n\t}\n\n\tpublic _zoom(dataItem: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tif (this.width() > 0 && this.height() > 0) {\n\t\t\tconst hierarchyNode = dataItem.get(\"d3HierarchyNode\");\n\n\t\t\tconst nodePaddingOuter = this.get(\"nodePaddingOuter\", 0);\n\n\t\t\tlet x0 = hierarchyNode.x0 + nodePaddingOuter;\n\t\t\tlet x1 = hierarchyNode.x1 - nodePaddingOuter;\n\n\t\t\tlet y0 = hierarchyNode.y0 + nodePaddingOuter;\n\t\t\tlet y1 = hierarchyNode.y1 - nodePaddingOuter;\n\n\t\t\tlet scaleX = (this.innerWidth() - nodePaddingOuter * 2) / (x1 - x0);\n\t\t\tlet scaleY = (this.innerHeight() - nodePaddingOuter * 2) / (y1 - y0);\n\n\t\t\tconst easing = this.get(\"animationEasing\");\n\t\t\tlet duration = this.get(\"animationDuration\", 0);\n\n\t\t\tif (!this.inited) {\n\t\t\t\tduration = 0;\n\t\t\t}\n\n\t\t\tthis.animatePrivate({ key: \"scaleX\", to: scaleX, duration: duration, easing: easing });\n\t\t\tthis.animatePrivate({ key: \"scaleY\", to: scaleY, duration: duration, easing: easing });\n\n\t\t\tthis.nodesContainer.animate({ key: \"x\", to: nodePaddingOuter - x0 * scaleX, duration: duration, easing: easing });\n\t\t\tthis.nodesContainer.animate({ key: \"y\", to: nodePaddingOuter - y0 * scaleY, duration: duration, easing: easing });\n\t\t}\n\t}\n\n\tprotected _selectDataItem(dataItem?: DataItem<this[\"_dataItemSettings\"]>, downDepth?: number, skipDisptach?: boolean) {\n\t\tsuper._selectDataItem(dataItem, downDepth, skipDisptach);\n\n\t\tif (dataItem) {\n\t\t\tlet maxDepth = this.get(\"downDepth\", 1) + dataItem.get(\"depth\");\n\t\t\tif (!this.inited) {\n\t\t\t\tmaxDepth = this.get(\"initialDepth\", 1);\n\t\t\t}\n\t\t\tconst visibleSet = new Set(this._getVisibleNodes(dataItem, maxDepth));\n\t\t\tthis.nodes.each((node) => {\n\t\t\t\tif (!visibleSet.has(node.dataItem as DataItem<this[\"_dataItemSettings\"]>)) {\n\t\t\t\t\tnode.setPrivate(\"focusable\", false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnode.removePrivate(\"focusable\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis._root._invalidateTabindexes();\n\t}\n\n\tprotected _getVisibleNodes(dataItem: DataItem<this[\"_dataItemSettings\"]>, maxDepth: number, out?: Array<DataItem<this[\"_dataItemSettings\"]>>): Array<DataItem<this[\"_dataItemSettings\"]>> {\n\t\tif (!out) { out = []; }\n\t\tconst children = dataItem.get(\"children\");\n\t\tif (children) {\n\t\t\t$array.each(children, (child) => {\n\t\t\t\tif (child.get(\"depth\") == maxDepth || !child.get(\"children\")) {\n\t\t\t\t\tout!.push(child);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._getVisibleNodes(child, maxDepth, out);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn out;\n\t}\n\n}\n"]}
@@ -157,8 +157,6 @@ export declare class ClusteredPointSeries extends MapPointSeries {
157
157
  zoomToCluster(dataItem: DataItem<IClusteredDataItem>, rotate?: boolean): void;
158
158
  protected _clusterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
159
159
  protected _onDataClear(): void;
160
- protected _clusterDataItem(dataItem: DataItem<IClusteredPointSeriesDataItem>, dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
161
160
  protected _scatterGroup(dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
162
- protected _scatterDataItem(dataItem: DataItem<IClusteredPointSeriesDataItem>, dataItems: Array<DataItem<IClusteredPointSeriesDataItem>>): void;
163
161
  }
164
162
  //# sourceMappingURL=ClusteredPointSeries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClusteredPointSeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/ClusteredPointSeries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClusteredPointSeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/ClusteredPointSeries.ts"],"names":[],"mappings":"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"}
@@ -133,22 +133,69 @@ export class ClusteredPointSeries extends MapPointSeries {
133
133
  // void
134
134
  }
135
135
  else {
136
- dataItems.sort((a, b) => {
137
- const pointA = a.get("point");
138
- const pointB = b.get("point");
139
- if (pointA && pointB) {
140
- return Math.hypot(pointA.x - pointB.x, pointA.y - pointB.y);
136
+ const minDistance = this.get("minDistance", 20);
137
+ const minDistSq = minDistance * minDistance;
138
+ // Pre-filter to candidates with valid points
139
+ const candidates = [];
140
+ for (let i = 0; i < dataItems.length; i++) {
141
+ const di = dataItems[i];
142
+ if (!di.get("clipped")) {
143
+ const pt = di.get("point");
144
+ if (pt) {
145
+ candidates.push({ di: di, x: pt.x, y: pt.y });
146
+ }
141
147
  }
142
- return 0;
143
- });
144
- while (dataItems.length > 0) {
148
+ }
149
+ // Spatial grid: cell size = minDistance so neighbors are always in adjacent cells
150
+ const grid = new Map();
151
+ for (let i = 0; i < candidates.length; i++) {
152
+ const c = candidates[i];
153
+ const key = Math.floor(c.x / minDistance) + "," + Math.floor(c.y / minDistance);
154
+ let cell = grid.get(key);
155
+ if (!cell) {
156
+ cell = [];
157
+ grid.set(key, cell);
158
+ }
159
+ cell.push(i);
160
+ }
161
+ const visited = new Uint8Array(candidates.length);
162
+ for (let i = 0; i < candidates.length; i++) {
163
+ if (visited[i])
164
+ continue;
165
+ visited[i] = 1;
145
166
  this._clusterIndex++;
146
167
  this._clusters[this._clusterIndex] = [];
147
168
  const cluster = this._clusters[this._clusterIndex];
148
- const dataItem = dataItems[0];
149
- cluster.push(dataItem);
150
- $array.removeFirst(dataItems, dataItem);
151
- this._clusterDataItem(dataItem, dataItems);
169
+ const seed = candidates[i];
170
+ cluster.push(seed.di);
171
+ // BFS: only check 9 neighboring cells per expansion
172
+ const queue = [seed];
173
+ let head = 0;
174
+ while (head < queue.length) {
175
+ const pt = queue[head++];
176
+ const cx = Math.floor(pt.x / minDistance);
177
+ const cy = Math.floor(pt.y / minDistance);
178
+ for (let dcx = -1; dcx <= 1; dcx++) {
179
+ for (let dcy = -1; dcy <= 1; dcy++) {
180
+ const cell = grid.get((cx + dcx) + "," + (cy + dcy));
181
+ if (cell) {
182
+ for (let k = 0; k < cell.length; k++) {
183
+ const idx = cell[k];
184
+ if (visited[idx])
185
+ continue;
186
+ const c = candidates[idx];
187
+ const dx = c.x - pt.x;
188
+ const dy = c.y - pt.y;
189
+ if (dx * dx + dy * dy < minDistSq) {
190
+ visited[idx] = 1;
191
+ cluster.push(c.di);
192
+ queue.push(c);
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+ }
152
199
  }
153
200
  }
154
201
  let i = 0;
@@ -261,37 +308,71 @@ export class ClusteredPointSeries extends MapPointSeries {
261
308
  });
262
309
  this.clusteredDataItems = [];
263
310
  }
264
- _clusterDataItem(dataItem, dataItems) {
265
- const point = dataItem.get("point");
266
- if (point) {
267
- let minDistance = this.get("minDistance", 20);
268
- const cluster = this._clusters[this._clusterIndex];
269
- for (let i = dataItems.length - 1; i >= 0; i--) {
311
+ _scatterGroup(dataItems) {
312
+ const chart = this.chart;
313
+ if (chart && chart.get("zoomLevel", 1) >= chart.get("maxZoomLevel", 100) * this.get("stopClusterZoom", 0.95)) {
314
+ const scatterDistance = this.get("scatterDistance", 5);
315
+ const scatterDistSq = scatterDistance * scatterDistance;
316
+ // Pre-filter to candidates with valid points
317
+ const candidates = [];
318
+ for (let i = 0; i < dataItems.length; i++) {
270
319
  const di = dataItems[i];
271
- if (di && !di.get("clipped")) {
272
- const diPoint = di.get("point");
273
- if (diPoint) {
274
- if (Math.hypot(diPoint.x - point.x, diPoint.y - point.y) < minDistance) {
275
- cluster.push(di);
276
- $array.removeFirst(dataItems, di);
277
- this._clusterDataItem(di, dataItems);
278
- }
320
+ if (!di.get("clipped")) {
321
+ const pt = di.get("point");
322
+ if (pt) {
323
+ candidates.push({ di: di, x: pt.x, y: pt.y });
279
324
  }
280
325
  }
281
326
  }
282
- }
283
- }
284
- _scatterGroup(dataItems) {
285
- const chart = this.chart;
286
- if (chart && chart.get("zoomLevel", 1) >= chart.get("maxZoomLevel", 100) * this.get("stopClusterZoom", 0.95)) {
287
- while (dataItems.length > 0) {
327
+ // Spatial grid: cell size = scatterDistance
328
+ const grid = new Map();
329
+ for (let i = 0; i < candidates.length; i++) {
330
+ const c = candidates[i];
331
+ const key = Math.floor(c.x / scatterDistance) + "," + Math.floor(c.y / scatterDistance);
332
+ let cell = grid.get(key);
333
+ if (!cell) {
334
+ cell = [];
335
+ grid.set(key, cell);
336
+ }
337
+ cell.push(i);
338
+ }
339
+ const visited = new Uint8Array(candidates.length);
340
+ for (let i = 0; i < candidates.length; i++) {
341
+ if (visited[i])
342
+ continue;
343
+ visited[i] = 1;
288
344
  this._scatterIndex++;
289
345
  this._scatters[this._scatterIndex] = [];
290
346
  const scatter = this._scatters[this._scatterIndex];
291
- const dataItem = dataItems[0];
292
- scatter.push(dataItem);
293
- $array.remove(dataItems, dataItem);
294
- this._scatterDataItem(dataItem, dataItems);
347
+ const seed = candidates[i];
348
+ scatter.push(seed.di);
349
+ const queue = [seed];
350
+ let head = 0;
351
+ while (head < queue.length) {
352
+ const pt = queue[head++];
353
+ const cx = Math.floor(pt.x / scatterDistance);
354
+ const cy = Math.floor(pt.y / scatterDistance);
355
+ for (let dcx = -1; dcx <= 1; dcx++) {
356
+ for (let dcy = -1; dcy <= 1; dcy++) {
357
+ const cell = grid.get((cx + dcx) + "," + (cy + dcy));
358
+ if (cell) {
359
+ for (let k = 0; k < cell.length; k++) {
360
+ const idx = cell[k];
361
+ if (visited[idx])
362
+ continue;
363
+ const c = candidates[idx];
364
+ const dx = c.x - pt.x;
365
+ const dy = c.y - pt.y;
366
+ if (dx * dx + dy * dy < scatterDistSq) {
367
+ visited[idx] = 1;
368
+ scatter.push(c.di);
369
+ queue.push(c);
370
+ }
371
+ }
372
+ }
373
+ }
374
+ }
375
+ }
295
376
  }
296
377
  $array.each(this._scatters, (scatter) => {
297
378
  let len = scatter.length;
@@ -338,25 +419,6 @@ export class ClusteredPointSeries extends MapPointSeries {
338
419
  });
339
420
  }
340
421
  }
341
- _scatterDataItem(dataItem, dataItems) {
342
- const point = dataItem.get("point");
343
- if (point) {
344
- const scatterDistance = this.get("scatterDistance", 5);
345
- const scatter = this._scatters[this._scatterIndex];
346
- $array.each(dataItems, (di) => {
347
- if (di && !di.get("clipped")) {
348
- const diPoint = di.get("point");
349
- if (diPoint) {
350
- if (Math.hypot(diPoint.x - point.x, diPoint.y - point.y) < scatterDistance) {
351
- scatter.push(di);
352
- $array.removeFirst(dataItems, di);
353
- this._scatterDataItem(di, dataItems);
354
- }
355
- }
356
- }
357
- });
358
- }
359
- }
360
422
  }
361
423
  ClusteredPointSeries.className = "ClusteredPointSeries";
362
424
  ClusteredPointSeries.classNames = MapPointSeries.classNames.concat([ClusteredPointSeries.className]);