@amcharts/amcharts5 5.17.0 → 5.17.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 (170) hide show
  1. package/.internal/charts/map/MapSankeySeries.d.ts +29 -0
  2. package/.internal/charts/map/MapSankeySeries.d.ts.map +1 -1
  3. package/.internal/charts/map/MapSankeySeries.js +126 -52
  4. package/.internal/charts/map/MapSankeySeries.js.map +1 -1
  5. package/.internal/core/Registry.js +1 -1
  6. package/.internal/core/Registry.js.map +1 -1
  7. package/CHANGELOG.md +6 -0
  8. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  9. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  10. package/examples/javascript/flow-chord/package.json +1 -1
  11. package/examples/javascript/flow-chord-directed/package.json +1 -1
  12. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  13. package/examples/javascript/flow-sankey/package.json +1 -1
  14. package/examples/javascript/gantt/package.json +1 -1
  15. package/examples/javascript/gantt-multilevel/package.json +1 -1
  16. package/examples/javascript/gantt-simple/package.json +1 -1
  17. package/examples/javascript/gauge/package.json +1 -1
  18. package/examples/javascript/gauge-bands/package.json +1 -1
  19. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  20. package/examples/javascript/hierarchy-pack/package.json +1 -1
  21. package/examples/javascript/hierarchy-partition/package.json +1 -1
  22. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  23. package/examples/javascript/hierarchy-tree/package.json +1 -1
  24. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  25. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  26. package/examples/javascript/jest/package.json +1 -1
  27. package/examples/javascript/json-pie/package.json +1 -1
  28. package/examples/javascript/json-xy/package.json +1 -1
  29. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  30. package/examples/javascript/map-clustered-points/package.json +1 -1
  31. package/examples/javascript/map-day-and-night/package.json +1 -1
  32. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  33. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  34. package/examples/javascript/map-sankey/index.js +48 -55
  35. package/examples/javascript/map-sankey/package.json +1 -1
  36. package/examples/javascript/map-sankey-waypoints/package.json +1 -1
  37. package/examples/javascript/map-with-bubbles/package.json +1 -1
  38. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  39. package/examples/javascript/misc-40-charts/package.json +1 -1
  40. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  41. package/examples/javascript/pie-chart/package.json +1 -1
  42. package/examples/javascript/pie-donut-chart/package.json +1 -1
  43. package/examples/javascript/pie-variable-radius/package.json +1 -1
  44. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  45. package/examples/javascript/radar-heat-map/package.json +1 -1
  46. package/examples/javascript/radar-line/package.json +1 -1
  47. package/examples/javascript/radar-time-line/package.json +1 -1
  48. package/examples/javascript/sliced-funnel/package.json +1 -1
  49. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  50. package/examples/javascript/sliced-pyramid/package.json +1 -1
  51. package/examples/javascript/stock-chart/package.json +1 -1
  52. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  53. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  54. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  55. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  56. package/examples/javascript/stock-chart-live/package.json +1 -1
  57. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  58. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  59. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  60. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  61. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  62. package/examples/javascript/venn-diagram/package.json +1 -1
  63. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  64. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  65. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  66. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  67. package/examples/javascript/xy-bubble/package.json +1 -1
  68. package/examples/javascript/xy-candlestick/package.json +1 -1
  69. package/examples/javascript/xy-clustered-column/package.json +1 -1
  70. package/examples/javascript/xy-column/package.json +1 -1
  71. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  72. package/examples/javascript/xy-data-grouping/package.json +1 -1
  73. package/examples/javascript/xy-draggable-range/package.json +1 -1
  74. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  75. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  76. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  77. package/examples/javascript/xy-line/package.json +1 -1
  78. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  79. package/examples/javascript/xy-live-data/package.json +1 -1
  80. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  81. package/examples/javascript/xy-ohlc/package.json +1 -1
  82. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  83. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  84. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  85. package/examples/javascript/xy-stacked-column/package.json +1 -1
  86. package/examples/javascript/xy-stacked-step/package.json +1 -1
  87. package/examples/javascript/xy-stock/package.json +1 -1
  88. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  89. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  90. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  91. package/examples/typescript/flow-chord/package.json +1 -1
  92. package/examples/typescript/flow-chord-directed/package.json +1 -1
  93. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  94. package/examples/typescript/flow-sankey/package.json +1 -1
  95. package/examples/typescript/gantt/package.json +1 -1
  96. package/examples/typescript/gantt-multilevel/package.json +1 -1
  97. package/examples/typescript/gantt-simple/package.json +1 -1
  98. package/examples/typescript/gauge/package.json +1 -1
  99. package/examples/typescript/gauge-bands/package.json +1 -1
  100. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  101. package/examples/typescript/hierarchy-pack/package.json +1 -1
  102. package/examples/typescript/hierarchy-partition/package.json +1 -1
  103. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  104. package/examples/typescript/hierarchy-tree/package.json +1 -1
  105. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  106. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  107. package/examples/typescript/jest/package.json +1 -1
  108. package/examples/typescript/json-pie/package.json +1 -1
  109. package/examples/typescript/json-xy/package.json +1 -1
  110. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  111. package/examples/typescript/map-clustered-points/package.json +1 -1
  112. package/examples/typescript/map-day-and-night/package.json +1 -1
  113. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  114. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  115. package/examples/typescript/map-sankey/index.ts +48 -55
  116. package/examples/typescript/map-sankey/package.json +1 -1
  117. package/examples/typescript/map-sankey-waypoints/package.json +1 -1
  118. package/examples/typescript/map-with-bubbles/package.json +1 -1
  119. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  120. package/examples/typescript/misc-40-charts/package.json +1 -1
  121. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  122. package/examples/typescript/pie-chart/package.json +1 -1
  123. package/examples/typescript/pie-donut-chart/package.json +1 -1
  124. package/examples/typescript/pie-variable-radius/package.json +1 -1
  125. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  126. package/examples/typescript/radar-heat-map/package.json +1 -1
  127. package/examples/typescript/radar-line/package.json +1 -1
  128. package/examples/typescript/radar-time-line/package.json +1 -1
  129. package/examples/typescript/sliced-funnel/package.json +1 -1
  130. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  131. package/examples/typescript/sliced-pyramid/package.json +1 -1
  132. package/examples/typescript/stock-chart/package.json +1 -1
  133. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  134. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  135. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  136. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  137. package/examples/typescript/stock-chart-live/package.json +1 -1
  138. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  139. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  140. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  141. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  142. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  143. package/examples/typescript/venn-diagram/package.json +1 -1
  144. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  145. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  146. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  147. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  148. package/examples/typescript/xy-bubble/package.json +1 -1
  149. package/examples/typescript/xy-candlestick/package.json +1 -1
  150. package/examples/typescript/xy-clustered-column/package.json +1 -1
  151. package/examples/typescript/xy-column/package.json +1 -1
  152. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  153. package/examples/typescript/xy-data-grouping/package.json +1 -1
  154. package/examples/typescript/xy-draggable-range/package.json +1 -1
  155. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  156. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  157. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  158. package/examples/typescript/xy-line/package.json +1 -1
  159. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  160. package/examples/typescript/xy-live-data/package.json +1 -1
  161. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  162. package/examples/typescript/xy-ohlc/package.json +1 -1
  163. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  164. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  165. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  166. package/examples/typescript/xy-stacked-column/package.json +1 -1
  167. package/examples/typescript/xy-stacked-step/package.json +1 -1
  168. package/examples/typescript/xy-stock/package.json +1 -1
  169. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  170. package/package.json +1 -1
@@ -265,10 +265,28 @@ export declare class MapSankeySeries extends MapPolygonSeries {
265
265
  private _geoNodeRange;
266
266
  private _geoSourceOffsets;
267
267
  private _geoTargetOffsets;
268
+ /**
269
+ * Disposer for the polygonSeries `datavalidated` listener. Re-attached
270
+ * whenever the `polygonSeries` setting changes.
271
+ */
272
+ private _polygonSeriesDP?;
268
273
  /**
269
274
  * @ignore
270
275
  */
271
276
  protected _afterNew(): void;
277
+ /**
278
+ * (Re)subscribes to the current `polygonSeries` `datavalidated` event so
279
+ * that any data items added before the polygon series finished loading
280
+ * its geoJSON get their endpoints resolved automatically.
281
+ */
282
+ private _setupPolygonSeriesListener;
283
+ /**
284
+ * Walks all data items and resolves any whose source/target endpoints
285
+ * weren't resolved during the initial `processDataItem` call (because
286
+ * the polygon series wasn't ready yet). Marks values dirty so the
287
+ * geometries get regenerated.
288
+ */
289
+ private _resolvePendingDataItems;
272
290
  static className: string;
273
291
  static classNames: Array<string>;
274
292
  _settings: IMapSankeySeriesSettings;
@@ -364,6 +382,17 @@ export declare class MapSankeySeries extends MapPolygonSeries {
364
382
  * @param dataItem Data item to process
365
383
  */
366
384
  protected processDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
385
+ /**
386
+ * Resolves the source/target endpoints for a single data item:
387
+ * looks up centroids on the polygon series (if `sourceId`/`targetId` is set),
388
+ * then creates or attaches the appropriate sankey nodes.
389
+ *
390
+ * Returns `true` if anything was newly resolved, so callers can decide
391
+ * whether to mark geometries dirty.
392
+ *
393
+ * Safe to call repeatedly: skips endpoints that are already resolved.
394
+ */
395
+ private _resolveEndpoints;
367
396
  /**
368
397
  * @ignore
369
398
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MapSankeySeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/MapSankeySeries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtI,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAO3E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;CACxE;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IAE1E;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAE7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAE/C;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;CAE/C;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IAE1E;;OAEG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;IAEjC;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEhC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE9C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAExB;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,gBAAgB;IAEpD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE3D;;;;;;;OAOG;IACH,SAAgB,KAAK,EAAE,cAAc,CAEnC;IAEF;;;;OAIG;IACI,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAa;IAEnG;;;;;OAKG;IACI,yBAAyB,EAAE,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAa;IAIhG,OAAO,CAAC,gBAAgB,CAAiE;IACzF,OAAO,CAAC,gBAAgB,CAAiE;IACzF,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,gBAAgB,CAAqE;IAC7F,OAAO,CAAC,gBAAgB,CAAqE;IAC7F,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,iBAAiB,CAA8D;IACvF,OAAO,CAAC,iBAAiB,CAA8D;IAEvF;;OAEG;IACH,SAAS,CAAC,SAAS;IAkBnB,OAAc,SAAS,EAAE,MAAM,CAAqB;IACpD,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAmE;IAE3F,SAAS,EAAE,wBAAwB,CAAC;IACpC,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,iBAAiB,EAAE,wBAAwB,CAAC;IAE3D;;OAEG;IACI,mBAAmB;IAU1B;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS;IAQ/D;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,GAAE,MAAW,GAAG,MAAM;IAe7E;;;;;;OAMG;IACH,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI;IAUxH;;;;;;;;;OASG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAe1J;;;;;;;;;;OAUG;IACI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IA4BlG;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAQzG;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,CAAC,GAAG,MAAM;IAQ1E;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;;;OAIG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IA4BrC;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAMpE;;OAEG;IACH,SAAS,CAAC,QAAQ;IAgBlB;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IA6EvE;;OAEG;IACH,SAAS,CAAC,YAAY;IAetB;;OAEG;IACI,gBAAgB;IAOvB;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB;CAsZ7B"}
1
+ {"version":3,"file":"MapSankeySeries.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/map/MapSankeySeries.ts"],"names":[],"mappings":"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"}
@@ -71,7 +71,58 @@ export class MapSankeySeries extends MapPolygonSeries {
71
71
  this._setRawDefault("valueField", "value");
72
72
  this._setRawDefault("waypointsField", "waypoints");
73
73
  this.nodes.flow = this;
74
+ // Watch for polygonSeries changes — re-attach the datavalidated
75
+ // listener so users don't have to wait for the polygon series to
76
+ // be ready before calling sankey.data.setAll().
77
+ this.on("polygonSeries", () => {
78
+ this._setupPolygonSeriesListener();
79
+ });
74
80
  super._afterNew();
81
+ // Initial setup in case polygonSeries was passed in constructor settings.
82
+ this._setupPolygonSeriesListener();
83
+ }
84
+ /**
85
+ * (Re)subscribes to the current `polygonSeries` `datavalidated` event so
86
+ * that any data items added before the polygon series finished loading
87
+ * its geoJSON get their endpoints resolved automatically.
88
+ */
89
+ _setupPolygonSeriesListener() {
90
+ if (this._polygonSeriesDP) {
91
+ this._polygonSeriesDP.dispose();
92
+ this._polygonSeriesDP = undefined;
93
+ }
94
+ const polygonSeries = this.get("polygonSeries");
95
+ if (polygonSeries) {
96
+ this._polygonSeriesDP = polygonSeries.events.on("datavalidated", () => {
97
+ this._resolvePendingDataItems();
98
+ });
99
+ // If the polygon series already has data items (e.g. it was
100
+ // validated before our data was set), resolve immediately.
101
+ if (polygonSeries.dataItems.length > 0) {
102
+ this._resolvePendingDataItems();
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Walks all data items and resolves any whose source/target endpoints
108
+ * weren't resolved during the initial `processDataItem` call (because
109
+ * the polygon series wasn't ready yet). Marks values dirty so the
110
+ * geometries get regenerated.
111
+ */
112
+ _resolvePendingDataItems() {
113
+ let anyResolved = false;
114
+ $array.each(this.dataItems, (dataItem) => {
115
+ if (this._resolveEndpoints(dataItem)) {
116
+ anyResolved = true;
117
+ }
118
+ });
119
+ if (anyResolved) {
120
+ // Trigger geometry regeneration on next validation cycle.
121
+ // Mirrors Component.markDirtyValues without the parent's
122
+ // MapPolygon geometry sync (handled later in _generateGeometries).
123
+ this._valuesDirty = true;
124
+ this.markDirty();
125
+ }
75
126
  }
76
127
  /**
77
128
  * @ignore
@@ -285,6 +336,10 @@ export class MapSankeySeries extends MapPolygonSeries {
285
336
  */
286
337
  _dispose() {
287
338
  super._dispose();
339
+ if (this._polygonSeriesDP) {
340
+ this._polygonSeriesDP.dispose();
341
+ this._polygonSeriesDP = undefined;
342
+ }
288
343
  this._bezierSegments.clear();
289
344
  this._segmentCumulativeLengths.clear();
290
345
  this._geoSourceCoords.clear();
@@ -311,67 +366,86 @@ export class MapSankeySeries extends MapPolygonSeries {
311
366
  dataItem.set("geometry", { type: "Polygon", coordinates: [] });
312
367
  }
313
368
  super.processDataItem(dataItem);
369
+ this._resolveEndpoints(dataItem);
370
+ }
371
+ /**
372
+ * Resolves the source/target endpoints for a single data item:
373
+ * looks up centroids on the polygon series (if `sourceId`/`targetId` is set),
374
+ * then creates or attaches the appropriate sankey nodes.
375
+ *
376
+ * Returns `true` if anything was newly resolved, so callers can decide
377
+ * whether to mark geometries dirty.
378
+ *
379
+ * Safe to call repeatedly: skips endpoints that are already resolved.
380
+ */
381
+ _resolveEndpoints(dataItem) {
314
382
  const polygonSeries = this.get("polygonSeries");
315
- // Resolve source coordinates
316
- let sourceLon = dataItem.get("sourceLongitude");
317
- let sourceLat = dataItem.get("sourceLatitude");
318
- const sourceId = dataItem.get("sourceId");
319
- if (sourceId && polygonSeries) {
320
- const polygonDI = polygonSeries.getDataItemById(sourceId);
321
- if (polygonDI) {
322
- const geometry = polygonDI.get("geometry");
323
- if (geometry) {
324
- const centroid = getGeoCentroid(geometry);
325
- sourceLon = centroid.longitude;
326
- sourceLat = centroid.latitude;
383
+ let resolved = false;
384
+ // -- Source --
385
+ if (!dataItem.get("sourceNode")) {
386
+ let sourceLon = dataItem.get("sourceLongitude");
387
+ let sourceLat = dataItem.get("sourceLatitude");
388
+ const sourceId = dataItem.get("sourceId");
389
+ if (sourceId && polygonSeries) {
390
+ const polygonDI = polygonSeries.getDataItemById(sourceId);
391
+ if (polygonDI) {
392
+ const geometry = polygonDI.get("geometry");
393
+ if (geometry) {
394
+ const centroid = getGeoCentroid(geometry);
395
+ sourceLon = centroid.longitude;
396
+ sourceLat = centroid.latitude;
397
+ }
327
398
  }
328
399
  }
329
- }
330
- // Resolve target coordinates
331
- let targetLon = dataItem.get("targetLongitude");
332
- let targetLat = dataItem.get("targetLatitude");
333
- const targetId = dataItem.get("targetId");
334
- if (targetId && polygonSeries) {
335
- const polygonDI = polygonSeries.getDataItemById(targetId);
336
- if (polygonDI) {
337
- const geometry = polygonDI.get("geometry");
338
- if (geometry) {
339
- const centroid = getGeoCentroid(geometry);
340
- targetLon = centroid.longitude;
341
- targetLat = centroid.latitude;
400
+ if (sourceLon != null && sourceLat != null) {
401
+ const sourceKey = sourceId !== null && sourceId !== void 0 ? sourceId : (Number(sourceLon) + "," + Number(sourceLat));
402
+ let sourceNode = this.nodes.getDataItemById(sourceKey);
403
+ if (!sourceNode) {
404
+ const ctx = dataItem.dataContext;
405
+ const name = (ctx && ctx.source) || sourceKey;
406
+ this.nodes.data.push({ id: sourceKey, name, longitude: Number(sourceLon), latitude: Number(sourceLat) });
407
+ sourceNode = this.nodes.dataItems[this.nodes.dataItems.length - 1];
408
+ }
409
+ if (sourceNode) {
410
+ dataItem.setRaw("sourceNode", sourceNode);
411
+ this.nodes.addOutgoingLink(sourceNode, dataItem);
412
+ resolved = true;
342
413
  }
343
414
  }
344
415
  }
345
- // Create/find source node
346
- if (sourceLon != null && sourceLat != null) {
347
- const sourceKey = sourceId !== null && sourceId !== void 0 ? sourceId : (Number(sourceLon) + "," + Number(sourceLat));
348
- let sourceNode = this.nodes.getDataItemById(sourceKey);
349
- if (!sourceNode) {
350
- const ctx = dataItem.dataContext;
351
- const name = (ctx && ctx.source) || sourceKey;
352
- this.nodes.data.push({ id: sourceKey, name, longitude: Number(sourceLon), latitude: Number(sourceLat) });
353
- sourceNode = this.nodes.dataItems[this.nodes.dataItems.length - 1];
354
- }
355
- if (sourceNode) {
356
- dataItem.setRaw("sourceNode", sourceNode);
357
- this.nodes.addOutgoingLink(sourceNode, dataItem);
358
- }
359
- }
360
- // Create/find target node
361
- if (targetLon != null && targetLat != null) {
362
- const targetKey = targetId !== null && targetId !== void 0 ? targetId : (Number(targetLon) + "," + Number(targetLat));
363
- let targetNode = this.nodes.getDataItemById(targetKey);
364
- if (!targetNode) {
365
- const ctx = dataItem.dataContext;
366
- const name = (ctx && ctx.target) || targetKey;
367
- this.nodes.data.push({ id: targetKey, name, longitude: Number(targetLon), latitude: Number(targetLat) });
368
- targetNode = this.nodes.dataItems[this.nodes.dataItems.length - 1];
416
+ // -- Target --
417
+ if (!dataItem.get("targetNode")) {
418
+ let targetLon = dataItem.get("targetLongitude");
419
+ let targetLat = dataItem.get("targetLatitude");
420
+ const targetId = dataItem.get("targetId");
421
+ if (targetId && polygonSeries) {
422
+ const polygonDI = polygonSeries.getDataItemById(targetId);
423
+ if (polygonDI) {
424
+ const geometry = polygonDI.get("geometry");
425
+ if (geometry) {
426
+ const centroid = getGeoCentroid(geometry);
427
+ targetLon = centroid.longitude;
428
+ targetLat = centroid.latitude;
429
+ }
430
+ }
369
431
  }
370
- if (targetNode) {
371
- dataItem.setRaw("targetNode", targetNode);
372
- this.nodes.addIncomingLink(targetNode, dataItem);
432
+ if (targetLon != null && targetLat != null) {
433
+ const targetKey = targetId !== null && targetId !== void 0 ? targetId : (Number(targetLon) + "," + Number(targetLat));
434
+ let targetNode = this.nodes.getDataItemById(targetKey);
435
+ if (!targetNode) {
436
+ const ctx = dataItem.dataContext;
437
+ const name = (ctx && ctx.target) || targetKey;
438
+ this.nodes.data.push({ id: targetKey, name, longitude: Number(targetLon), latitude: Number(targetLat) });
439
+ targetNode = this.nodes.dataItems[this.nodes.dataItems.length - 1];
440
+ }
441
+ if (targetNode) {
442
+ dataItem.setRaw("targetNode", targetNode);
443
+ this.nodes.addIncomingLink(targetNode, dataItem);
444
+ resolved = true;
445
+ }
373
446
  }
374
447
  }
448
+ return resolved;
375
449
  }
376
450
  /**
377
451
  * @ignore