@amcharts/amcharts5 5.17.3 → 5.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/.internal/charts/flow/ArcDiagramLink.d.ts +3 -0
  2. package/.internal/charts/flow/ArcDiagramLink.d.ts.map +1 -1
  3. package/.internal/charts/flow/ArcDiagramLink.js +12 -4
  4. package/.internal/charts/flow/ArcDiagramLink.js.map +1 -1
  5. package/.internal/charts/flow/ChordDirected.d.ts.map +1 -1
  6. package/.internal/charts/flow/ChordDirected.js +1 -0
  7. package/.internal/charts/flow/ChordDirected.js.map +1 -1
  8. package/.internal/charts/flow/SankeyLink.d.ts +3 -0
  9. package/.internal/charts/flow/SankeyLink.d.ts.map +1 -1
  10. package/.internal/charts/flow/SankeyLink.js +12 -4
  11. package/.internal/charts/flow/SankeyLink.js.map +1 -1
  12. package/.internal/charts/funnel/PictorialStackedSeries.js +1 -1
  13. package/.internal/charts/funnel/PictorialStackedSeries.js.map +1 -1
  14. package/.internal/charts/hierarchy/BreadcrumbBar.d.ts.map +1 -1
  15. package/.internal/charts/hierarchy/BreadcrumbBar.js +6 -8
  16. package/.internal/charts/hierarchy/BreadcrumbBar.js.map +1 -1
  17. package/.internal/charts/hierarchy/ForceDirected.js +1 -1
  18. package/.internal/charts/hierarchy/ForceDirected.js.map +1 -1
  19. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +1 -1
  20. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
  21. package/.internal/charts/hierarchy/HierarchyLink.d.ts +3 -0
  22. package/.internal/charts/hierarchy/HierarchyLink.d.ts.map +1 -1
  23. package/.internal/charts/hierarchy/HierarchyLink.js +10 -2
  24. package/.internal/charts/hierarchy/HierarchyLink.js.map +1 -1
  25. package/.internal/charts/hierarchy/Tree.d.ts +14 -0
  26. package/.internal/charts/hierarchy/Tree.d.ts.map +1 -1
  27. package/.internal/charts/hierarchy/Tree.js +70 -0
  28. package/.internal/charts/hierarchy/Tree.js.map +1 -1
  29. package/.internal/charts/hierarchy/VoronoiTreemap.d.ts +8 -2
  30. package/.internal/charts/hierarchy/VoronoiTreemap.d.ts.map +1 -1
  31. package/.internal/charts/hierarchy/VoronoiTreemap.js +8 -4
  32. package/.internal/charts/hierarchy/VoronoiTreemap.js.map +1 -1
  33. package/.internal/charts/map/GraticuleSeries.d.ts +2 -0
  34. package/.internal/charts/map/GraticuleSeries.d.ts.map +1 -1
  35. package/.internal/charts/map/GraticuleSeries.js +6 -1
  36. package/.internal/charts/map/GraticuleSeries.js.map +1 -1
  37. package/.internal/charts/map/MapChart.d.ts +59 -0
  38. package/.internal/charts/map/MapChart.d.ts.map +1 -1
  39. package/.internal/charts/map/MapChart.js +43 -0
  40. package/.internal/charts/map/MapChart.js.map +1 -1
  41. package/.internal/charts/map/MapChartProjections.d.ts +3 -0
  42. package/.internal/charts/map/MapChartProjections.d.ts.map +1 -0
  43. package/.internal/charts/map/MapChartProjections.js +20 -0
  44. package/.internal/charts/map/MapChartProjections.js.map +1 -0
  45. package/.internal/charts/map/MapPointSeries.js +1 -1
  46. package/.internal/charts/map/MapPointSeries.js.map +1 -1
  47. package/.internal/charts/map/MapPolygonSeries.d.ts.map +1 -1
  48. package/.internal/charts/map/MapPolygonSeries.js +2 -1
  49. package/.internal/charts/map/MapPolygonSeries.js.map +1 -1
  50. package/.internal/charts/map/MapProjections.d.ts +13 -0
  51. package/.internal/charts/map/MapProjections.d.ts.map +1 -0
  52. package/.internal/charts/map/MapProjections.js +15 -0
  53. package/.internal/charts/map/MapProjections.js.map +1 -0
  54. package/.internal/charts/pie/PieChart.d.ts +1 -0
  55. package/.internal/charts/pie/PieChart.d.ts.map +1 -1
  56. package/.internal/charts/pie/PieChart.js +6 -0
  57. package/.internal/charts/pie/PieChart.js.map +1 -1
  58. package/.internal/charts/stock/SettingsModal.js +1 -1
  59. package/.internal/charts/stock/SettingsModal.js.map +1 -1
  60. package/.internal/charts/stock/StockChartDefaultTheme.js +6 -6
  61. package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
  62. package/.internal/charts/stock/indicators/BollingerBands.js +1 -1
  63. package/.internal/charts/stock/indicators/BollingerBands.js.map +1 -1
  64. package/.internal/charts/stock/indicators/Indicator.d.ts.map +1 -1
  65. package/.internal/charts/stock/indicators/Indicator.js +1 -1
  66. package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
  67. package/.internal/charts/stock/indicators/MovingAverage.d.ts +6 -0
  68. package/.internal/charts/stock/indicators/MovingAverage.d.ts.map +1 -1
  69. package/.internal/charts/stock/indicators/MovingAverage.js +9 -5
  70. package/.internal/charts/stock/indicators/MovingAverage.js.map +1 -1
  71. package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts +6 -0
  72. package/.internal/charts/stock/indicators/MovingAverageDeviation.d.ts.map +1 -1
  73. package/.internal/charts/stock/indicators/MovingAverageDeviation.js +8 -4
  74. package/.internal/charts/stock/indicators/MovingAverageDeviation.js.map +1 -1
  75. package/.internal/charts/stock/indicators/MovingAverageEnvelope.js +1 -1
  76. package/.internal/charts/stock/indicators/MovingAverageEnvelope.js.map +1 -1
  77. package/.internal/charts/stock/toolbar/DrawingControl.js +1 -1
  78. package/.internal/charts/stock/toolbar/DrawingControl.js.map +1 -1
  79. package/.internal/charts/stock/toolbar/StockToolbar.d.ts.map +1 -1
  80. package/.internal/charts/stock/toolbar/StockToolbar.js +3 -0
  81. package/.internal/charts/stock/toolbar/StockToolbar.js.map +1 -1
  82. package/.internal/charts/xy/XYChart.js +5 -5
  83. package/.internal/charts/xy/XYChart.js.map +1 -1
  84. package/.internal/charts/xy/XYCursor.d.ts +2 -0
  85. package/.internal/charts/xy/XYCursor.d.ts.map +1 -1
  86. package/.internal/charts/xy/XYCursor.js +6 -2
  87. package/.internal/charts/xy/XYCursor.js.map +1 -1
  88. package/.internal/charts/xy/axes/Axis.d.ts +7 -0
  89. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  90. package/.internal/charts/xy/axes/Axis.js +33 -20
  91. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  92. package/.internal/charts/xy/axes/CategoryDateAxis.d.ts.map +1 -1
  93. package/.internal/charts/xy/axes/CategoryDateAxis.js +3 -0
  94. package/.internal/charts/xy/axes/CategoryDateAxis.js.map +1 -1
  95. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  96. package/.internal/charts/xy/axes/DateAxis.js +18 -1
  97. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  98. package/.internal/charts/xy/axes/ValueAxis.d.ts +1 -0
  99. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  100. package/.internal/charts/xy/axes/ValueAxis.js +26 -10
  101. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  102. package/.internal/charts/xy/series/StepLineSeries.js +1 -1
  103. package/.internal/charts/xy/series/StepLineSeries.js.map +1 -1
  104. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  105. package/.internal/charts/xy/series/XYSeries.js +10 -4
  106. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  107. package/.internal/core/Registry.js +1 -1
  108. package/.internal/core/Registry.js.map +1 -1
  109. package/.internal/core/Root.d.ts +19 -0
  110. package/.internal/core/Root.d.ts.map +1 -1
  111. package/.internal/core/Root.js +15 -2
  112. package/.internal/core/Root.js.map +1 -1
  113. package/.internal/core/render/Container.d.ts.map +1 -1
  114. package/.internal/core/render/Container.js +1 -0
  115. package/.internal/core/render/Container.js.map +1 -1
  116. package/.internal/core/render/Legend.js +2 -2
  117. package/.internal/core/render/Legend.js.map +1 -1
  118. package/.internal/core/render/backend/CanvasRenderer.d.ts +6 -0
  119. package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
  120. package/.internal/core/render/backend/CanvasRenderer.js +25 -5
  121. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  122. package/.internal/core/util/Entity.d.ts.map +1 -1
  123. package/.internal/core/util/Entity.js +7 -3
  124. package/.internal/core/util/Entity.js.map +1 -1
  125. package/.internal/core/util/Modal.js +2 -2
  126. package/.internal/core/util/Modal.js.map +1 -1
  127. package/.internal/core/util/Utils.d.ts +21 -0
  128. package/.internal/core/util/Utils.d.ts.map +1 -1
  129. package/.internal/core/util/Utils.js +49 -0
  130. package/.internal/core/util/Utils.js.map +1 -1
  131. package/.internal/plugins/exporting/Exporting.d.ts +38 -0
  132. package/.internal/plugins/exporting/Exporting.d.ts.map +1 -1
  133. package/.internal/plugins/exporting/Exporting.js +43 -9
  134. package/.internal/plugins/exporting/Exporting.js.map +1 -1
  135. package/.internal/plugins/exporting/ExportingMenu.js +2 -2
  136. package/.internal/plugins/exporting/ExportingMenu.js.map +1 -1
  137. package/.internal/plugins/json/ChartSerializer.d.ts +0 -9
  138. package/.internal/plugins/json/ChartSerializer.d.ts.map +1 -1
  139. package/.internal/plugins/json/ChartSerializer.js +8 -12
  140. package/.internal/plugins/json/ChartSerializer.js.map +1 -1
  141. package/.internal/plugins/json/Classes-script.js +254 -254
  142. package/.internal/plugins/json/Classes-script.js.map +1 -1
  143. package/.internal/plugins/json/Classes.d.ts.map +1 -1
  144. package/.internal/plugins/json/Classes.js +257 -254
  145. package/.internal/plugins/json/Classes.js.map +1 -1
  146. package/.internal/plugins/json/Json.d.ts.map +1 -1
  147. package/.internal/plugins/json/Json.js +56 -2
  148. package/.internal/plugins/json/Json.js.map +1 -1
  149. package/CHANGELOG.md +38 -0
  150. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  151. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  152. package/examples/javascript/flow-chord/package.json +1 -1
  153. package/examples/javascript/flow-chord-directed/package.json +1 -1
  154. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  155. package/examples/javascript/flow-sankey/package.json +1 -1
  156. package/examples/javascript/gantt/package.json +1 -1
  157. package/examples/javascript/gantt-multilevel/package.json +1 -1
  158. package/examples/javascript/gantt-simple/package.json +1 -1
  159. package/examples/javascript/gauge/package.json +1 -1
  160. package/examples/javascript/gauge-bands/package.json +1 -1
  161. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  162. package/examples/javascript/hierarchy-pack/package.json +1 -1
  163. package/examples/javascript/hierarchy-partition/package.json +1 -1
  164. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  165. package/examples/javascript/hierarchy-tree/package.json +1 -1
  166. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  167. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  168. package/examples/javascript/jest/package.json +1 -1
  169. package/examples/javascript/json-pie/package.json +1 -1
  170. package/examples/javascript/json-xy/package.json +1 -1
  171. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  172. package/examples/javascript/map-clustered-points/package.json +1 -1
  173. package/examples/javascript/map-day-and-night/package.json +1 -1
  174. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  175. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  176. package/examples/javascript/map-sankey/package.json +1 -1
  177. package/examples/javascript/map-sankey-waypoints/package.json +1 -1
  178. package/examples/javascript/map-with-bubbles/package.json +1 -1
  179. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  180. package/examples/javascript/misc-40-charts/package.json +1 -1
  181. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  182. package/examples/javascript/pie-chart/package.json +1 -1
  183. package/examples/javascript/pie-donut-chart/package.json +1 -1
  184. package/examples/javascript/pie-variable-radius/package.json +1 -1
  185. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  186. package/examples/javascript/radar-heat-map/package.json +1 -1
  187. package/examples/javascript/radar-line/package.json +1 -1
  188. package/examples/javascript/radar-time-line/package.json +1 -1
  189. package/examples/javascript/sliced-funnel/package.json +1 -1
  190. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  191. package/examples/javascript/sliced-pyramid/package.json +1 -1
  192. package/examples/javascript/stock-chart/package.json +1 -1
  193. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  194. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  195. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  196. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  197. package/examples/javascript/stock-chart-live/package.json +1 -1
  198. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  199. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  200. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  201. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  202. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  203. package/examples/javascript/venn-diagram/package.json +1 -1
  204. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  205. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  206. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  207. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  208. package/examples/javascript/xy-bubble/package.json +1 -1
  209. package/examples/javascript/xy-candlestick/package.json +1 -1
  210. package/examples/javascript/xy-clustered-column/package.json +1 -1
  211. package/examples/javascript/xy-column/package.json +1 -1
  212. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  213. package/examples/javascript/xy-data-grouping/package.json +1 -1
  214. package/examples/javascript/xy-draggable-range/package.json +1 -1
  215. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  216. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  217. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  218. package/examples/javascript/xy-line/package.json +1 -1
  219. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  220. package/examples/javascript/xy-live-data/package.json +1 -1
  221. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  222. package/examples/javascript/xy-ohlc/package.json +1 -1
  223. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  224. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  225. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  226. package/examples/javascript/xy-stacked-column/package.json +1 -1
  227. package/examples/javascript/xy-stacked-step/package.json +1 -1
  228. package/examples/javascript/xy-stock/package.json +1 -1
  229. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  230. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  231. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  232. package/examples/typescript/flow-chord/package.json +1 -1
  233. package/examples/typescript/flow-chord-directed/package.json +1 -1
  234. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  235. package/examples/typescript/flow-sankey/package.json +1 -1
  236. package/examples/typescript/gantt/package.json +1 -1
  237. package/examples/typescript/gantt-multilevel/package.json +1 -1
  238. package/examples/typescript/gantt-simple/package.json +1 -1
  239. package/examples/typescript/gauge/package.json +1 -1
  240. package/examples/typescript/gauge-bands/package.json +1 -1
  241. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  242. package/examples/typescript/hierarchy-pack/package.json +1 -1
  243. package/examples/typescript/hierarchy-partition/package.json +1 -1
  244. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  245. package/examples/typescript/hierarchy-tree/package.json +1 -1
  246. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  247. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  248. package/examples/typescript/jest/package.json +1 -1
  249. package/examples/typescript/json-pie/package.json +1 -1
  250. package/examples/typescript/json-xy/package.json +1 -1
  251. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  252. package/examples/typescript/map-clustered-points/package.json +1 -1
  253. package/examples/typescript/map-day-and-night/package.json +1 -1
  254. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  255. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  256. package/examples/typescript/map-sankey/package.json +1 -1
  257. package/examples/typescript/map-sankey-waypoints/package.json +1 -1
  258. package/examples/typescript/map-with-bubbles/package.json +1 -1
  259. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  260. package/examples/typescript/misc-40-charts/package.json +1 -1
  261. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  262. package/examples/typescript/pie-chart/package.json +1 -1
  263. package/examples/typescript/pie-donut-chart/package.json +1 -1
  264. package/examples/typescript/pie-variable-radius/package.json +1 -1
  265. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  266. package/examples/typescript/radar-heat-map/package.json +1 -1
  267. package/examples/typescript/radar-line/package.json +1 -1
  268. package/examples/typescript/radar-time-line/package.json +1 -1
  269. package/examples/typescript/sliced-funnel/package.json +1 -1
  270. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  271. package/examples/typescript/sliced-pyramid/package.json +1 -1
  272. package/examples/typescript/stock-chart/package.json +1 -1
  273. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  274. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  275. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  276. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  277. package/examples/typescript/stock-chart-live/package.json +1 -1
  278. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  279. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  280. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  281. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  282. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  283. package/examples/typescript/venn-diagram/package.json +1 -1
  284. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  285. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  286. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  287. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  288. package/examples/typescript/xy-bubble/package.json +1 -1
  289. package/examples/typescript/xy-candlestick/package.json +1 -1
  290. package/examples/typescript/xy-clustered-column/package.json +1 -1
  291. package/examples/typescript/xy-column/package.json +1 -1
  292. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  293. package/examples/typescript/xy-data-grouping/package.json +1 -1
  294. package/examples/typescript/xy-draggable-range/package.json +1 -1
  295. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  296. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  297. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  298. package/examples/typescript/xy-line/package.json +1 -1
  299. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  300. package/examples/typescript/xy-live-data/package.json +1 -1
  301. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  302. package/examples/typescript/xy-ohlc/package.json +1 -1
  303. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  304. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  305. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  306. package/examples/typescript/xy-stacked-column/package.json +1 -1
  307. package/examples/typescript/xy-stacked-step/package.json +1 -1
  308. package/examples/typescript/xy-stock/package.json +1 -1
  309. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  310. package/map.d.ts +2 -3
  311. package/map.d.ts.map +1 -1
  312. package/map.js +2 -3
  313. package/map.js.map +1 -1
  314. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Json.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAmrBxD,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACtB,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;IAEtB;;;;;;;OAOG;gBACS,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IAQvC;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,UAAU,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;IAI1F;;;;;OAKG;IACG,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBzF;;;;;OAKG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;CAG9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAMhE"}
1
+ {"version":3,"file":"Json.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAgvBxD,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACtB,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;IAEtB;;;;;;;OAOG;gBACS,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;IAQvC;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,UAAU,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;IAI1F;;;;;OAKG;IACG,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBzF;;;;;OAKG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;CAG9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAMhE"}
@@ -16,6 +16,26 @@ function isObject(value) {
16
16
  function isObjectParsed(value) {
17
17
  return value instanceof Entity || value instanceof Color || value instanceof Percent || value instanceof Template;
18
18
  }
19
+ // Detects whether a raw setting value references `@self` (the entity itself),
20
+ // which means it must be applied after the entity is constructed.
21
+ //
22
+ // Only recurses into plain JSON objects/arrays (the shapes a parsed config is made of) so that
23
+ // live instances passed programmatically (Entity, DataItem, Sprite, ...) are never walked - those
24
+ // can hold circular references and are never `@self` strings anyway.
25
+ function usesSelfRef(value) {
26
+ if ($type.isString(value)) {
27
+ return value === "@self" || value.indexOf("@self.") === 0;
28
+ }
29
+ else if ($type.isArray(value)) {
30
+ return $array.any(value, usesSelfRef);
31
+ }
32
+ else if (isObject(value) && value.constructor === Object) {
33
+ return $array.any($object.keys(value), (key) => usesSelfRef(value[key]));
34
+ }
35
+ else {
36
+ return false;
37
+ }
38
+ }
19
39
  function lookupRef(refs, name) {
20
40
  let i = refs.length;
21
41
  while (i--) {
@@ -435,12 +455,46 @@ class ParserState {
435
455
  refs = this.parseRefs(root, value.refs, refs);
436
456
  }
437
457
  const construct = (value.type ? this.getClass(value.type) : undefined);
438
- const settings = (value.settings ? this.parseSettings(root, value.settings, refs) : undefined);
458
+ // Settings that reference `@self` (the entity itself) can't be resolved at construction time,
459
+ // so they're split off and applied after the entity is built and its deferred data is set.
460
+ let settingsRaw = value.settings;
461
+ const selfSettings = {};
462
+ let hasSelfSettings = false;
463
+ if (settingsRaw) {
464
+ $array.each($object.keys(settingsRaw), (key) => {
465
+ // `geoJSON`/`geometry` are large opaque settings (same ones `parseAsync` skips) - never
466
+ // scan into them.
467
+ if (key !== "geoJSON" && key !== "geometry" && usesSelfRef(settingsRaw[key])) {
468
+ selfSettings[key] = settingsRaw[key];
469
+ hasSelfSettings = true;
470
+ }
471
+ });
472
+ if (hasSelfSettings) {
473
+ settingsRaw = Object.assign({}, settingsRaw);
474
+ $array.each($object.keys(selfSettings), (key) => {
475
+ delete settingsRaw[key];
476
+ });
477
+ }
478
+ }
479
+ const settings = (settingsRaw ? this.parseSettings(root, settingsRaw, refs) : undefined);
439
480
  const properties = (value.properties ? this.parseProperties(root, value.properties, refs) : undefined);
440
481
  const children = (value.children ? this.parseChildren(root, value.children, refs) : undefined);
441
482
  const states = (value.states ? $array.map(value.states, (value) => this.parseState(root, value, refs)) : undefined);
442
483
  const adapters = (value.adapters ? $array.map(value.adapters, (value) => this.parseAdapter(root, value, refs)) : undefined);
443
484
  const index = (value.index == null ? undefined : value.index);
485
+ let allProperties = properties;
486
+ if (hasSelfSettings) {
487
+ const deferredProp = (entity) => {
488
+ this._delayed.push(() => {
489
+ const newRefs = refs.concat([{ "@self": entity }]);
490
+ $array.each($object.keys(selfSettings), (key) => {
491
+ const parsed = this.parseValue(root, selfSettings[key], newRefs);
492
+ entity.set(key, parsed.isValue ? parsed.value : constructEntity(root, parsed));
493
+ });
494
+ });
495
+ };
496
+ allProperties = allProperties ? allProperties.concat([deferredProp]) : [deferredProp];
497
+ }
444
498
  return {
445
499
  isValue: false,
446
500
  type: value.type,
@@ -449,7 +503,7 @@ class ParserState {
449
503
  adapters,
450
504
  states,
451
505
  children,
452
- properties,
506
+ properties: allProperties,
453
507
  index,
454
508
  value,
455
509
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Json.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Root } from \"../../core/Root\";\n\nimport { Entity } from \"../../core/util/Entity\";\nimport { Sprite } from \"../../core/render/Sprite\";\nimport { Container } from \"../../core/render/Container\";\nimport { Color } from \"../../core/util/Color\";\nimport { Percent } from \"../../core/util/Percent\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListData } from \"../../core/util/Data\";\n\nimport * as $type from \"../../core/util/Type\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $object from \"../../core/util/Object\";\n\nimport type { IClasses } from \"./Classes\";\nimport classes from \"./Classes\";\n\n\ninterface IRef {\n\t[key: string]: any;\n}\n\n\nfunction isObject(value: any): value is { [key: string]: any } {\n\treturn $type.isObject(value);\n}\n\nfunction isObjectParsed(value: object): boolean {\n\treturn value instanceof Entity || value instanceof Color || value instanceof Percent || value instanceof Template;\n}\n\n\nfunction lookupRef(refs: Array<IRef>, name: string): any {\n\tlet i = refs.length;\n\n\twhile (i--) {\n\t\tconst sub = refs[i];\n\n\t\tif (name in sub) {\n\t\t\treturn sub[name];\n\t\t}\n\t}\n\n\tthrow new Error(\"Could not find ref \" + name);\n}\n\n\ninterface IAxisRange<E extends Entity> {\n\t__parseLogic: \"axisRange\" | \"seriesAxisRange\",\n\taxis: string,\n\tseries?: string,\n\tsettings: E[\"_settings\"],\n}\n\ninterface IAdapter<E extends Entity> {\n\tkey: keyof E[\"_settings\"],\n\tcallback: (value: E[\"_settings\"][this[\"key\"]], target: E, key: this[\"key\"]) => E[\"_settings\"][this[\"key\"]],\n}\n\ninterface IState<E extends Entity> {\n\tkey: string,\n\tsettings: E[\"_settings\"],\n}\n\ntype IParsedProperties = Array<(entity: object) => void>;\n\ntype IRefs = { [key: string]: any } | Array<{ [key: string]: any }>;\n\ninterface IChild {\n\tindex: number | undefined,\n\tvalue: Sprite,\n}\n\ninterface IParsedEntity<E extends Entity> {\n\tisValue: false,\n\ttype: string | undefined,\n\tconstruct: typeof Entity | undefined,\n\tsettings: object | undefined,\n\tadapters: Array<IAdapter<E>> | undefined,\n\tstates: Array<IState<E>> | undefined,\n\tchildren: Array<IChild> | undefined,\n\tproperties: IParsedProperties | undefined,\n\tindex: number | undefined,\n\tvalue: object,\n}\n\ntype IParsed<E extends Entity>\n\t= IParsedEntity<E>\n\t| { isValue: true, value: any };\n\n\nfunction parseRef<E extends Entity>(value: string, refs: Array<IRef>): IParsed<E> {\n\tif (value[0] === \"#\" || value[0] === \"@\") {\n\t\tif (value[1] === value[0]) {\n\t\t\t// \"##foo\" or \"@@foo\" gets escaped into the literal strings \"#foo\" or \"@foo\"\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue: value.slice(1),\n\t\t\t};\n\n\t\t} else {\n\t\t\tconst path = value.split(/\\./g);\n\n\t\t\tlet object = lookupRef(refs, path[0]);\n\n\t\t\tfor (let i = 1; i < path.length; ++i) {\n\t\t\t\tconst subpath = path[i];\n\n\t\t\t\t// Supports `#foo.get(\"bar\")` and `#foo.get('bar')` syntax\n\t\t\t\tconst parsed = /get\\(([\"'])([^\\1]*)\\1\\)/.exec(subpath);\n\n\t\t\t\tif (parsed) {\n\t\t\t\t\tobject = object.get(parsed[2]);\n\n\t\t\t\t} else {\n\t\t\t\t\tobject = object[subpath];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue: object,\n\t\t\t};\n\t\t}\n\n\t} else {\n\t\treturn {\n\t\t\tisValue: true,\n\t\t\tvalue,\n\t\t};\n\t}\n}\n\n\nfunction mergeObject<E extends Entity>(entity: object, parsed: IParsedEntity<E>): void {\n\tif (parsed.properties) {\n\t\t$array.each(parsed.properties, (fn) => {\n\t\t\tfn(entity);\n\t\t});\n\t}\n}\n\nfunction mergeEntity<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n\tmergeObject(entity, parsed);\n\n\tif (parsed.adapters) {\n\t\t$array.each(parsed.adapters, (adapter) => {\n\t\t\tentity.adapters.add(adapter.key, adapter.callback);\n\t\t});\n\t}\n\n\tif (parsed.states) {\n\t\t$array.each(parsed.states, (state) => {\n\t\t\tentity.states.create(state.key, state.settings);\n\t\t});\n\t}\n\n\tif (entity instanceof Container) {\n\t\tif (parsed.children) {\n\t\t\tparsed.children.forEach((child) => {\n\t\t\t\tif (child.index == null || child.index >= entity.children.length) {\n\t\t\t\t\tentity.children.push(child.value);\n\n\t\t\t\t} else {\n\t\t\t\t\tentity.children.insertIndex(child.index, child.value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction mergeExisting<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n\tif (parsed.settings) {\n\t\tentity.setAll(parsed.settings);\n\t}\n\n\tmergeEntity(entity, parsed);\n}\n\n\n// TODO replace this with `__parseLogic: \"merge\"`\nfunction mergeExistingAxisRange<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n\tif (parsed.settings) {\n\t\t$object.each(parsed.settings, (key, value: any) => {\n\t\t\tif (value instanceof Entity) {\n\t\t\t\tconst old = entity.get(key) as any;\n\n\t\t\t\tif (old instanceof Entity) {\n\t\t\t\t\told.setAll(value._settings);\n\n\t\t\t\t} else {\n\t\t\t\t\tentity.set(key, value as any);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tentity.set(key, value);\n\t\t\t}\n\t\t});\n\t}\n\n\tmergeEntity(entity, parsed);\n}\n\n\nfunction constructEntity<E extends Entity>(root: Root, parsed: IParsedEntity<E>): E | object {\n\tif (!parsed.construct) {\n\t\treturn parsed.value;\n\t}\n\n\tconst entity = parsed.construct.new(root, parsed.settings || {}) as E;\n\n\tmergeEntity(entity, parsed);\n\n\treturn entity;\n}\n\n\nclass ParserState {\n\tprotected _caching: { [key: string]: Promise<void> } = {};\n\tprotected _cache: { [key: string]: typeof Entity } = {};\n\tprotected _delayed: Array<() => void> = [];\n\n\n\tafterParse(): void {\n\t\tthis._delayed.forEach((f) => {\n\t\t\tf();\n\t\t});\n\t}\n\n\n\tgetClass(name: string): typeof Entity {\n\t\treturn this._cache[name];\n\t}\n\n\tasync storeClass(name: string): Promise<void> {\n\t\tif (name === \"Template\") {\n\t\t\t// Do nothing\n\t\t\treturn;\n\t\t}\n\n\t\tconst promise = classes[name as keyof IClasses];\n\n\t\tif (promise == null) {\n\t\t\tthrow new Error(\"Unknown object type `\" + name + \"`\");\n\t\t}\n\n\t\tthis._cache[name] = await promise() as typeof Entity;\n\t}\n\n\tcacheClass(name: string): Promise<void> {\n\t\tlet promise = this._caching[name];\n\n\t\tif (promise == null) {\n\t\t\tpromise = this._caching[name] = this.storeClass(name);\n\t\t}\n\n\t\treturn promise;\n\t}\n\n\n\tasync parseAsyncArray(array: Array<unknown>): Promise<void> {\n\t\tawait Promise.all($array.map(array, (x) => this.parseAsync(x)));\n\t}\n\n\tasync parseAsyncObjectKey(key: string, value: unknown): Promise<void> {\n\t\tif (key === \"type\") {\n\t\t\tif ($type.isString(value)) {\n\t\t\t\tawait this.cacheClass(value);\n\n\t\t\t} else {\n\t\t\t\tawait this.parseAsync(value);\n\t\t\t}\n\n\t\t} else if (key === \"geoJSON\" || key === \"geometry\") {\n\t\t\t// Do nothing\n\n\t\t} else {\n\t\t\tawait this.parseAsync(value);\n\t\t}\n\t}\n\n\tasync parseAsyncObject(object: object): Promise<void> {\n\t\tswitch ((object as any).type) {\n\t\t\tcase \"Color\":\n\t\t\tcase \"Percent\":\n\t\t\t\t// Do nothing\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait Promise.all($array.map($object.keys(object), (key) => this.parseAsyncObjectKey(key, object[key])));\n\t\t}\n\t}\n\n\tasync parseAsync(value: unknown): Promise<void> {\n\t\tif ($type.isArray(value)) {\n\t\t\tawait this.parseAsyncArray(value);\n\n\t\t} else if (isObject(value)) {\n\t\t\tif (!isObjectParsed(value)) {\n\t\t\t\tif (value.__parse === true || value.__parse !== false) {\n\t\t\t\t\tawait this.parseAsyncObject(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\tparseObject(root: Root, object: object, refs: Array<IRef>): object {\n\t\tconst output: { [key: string]: any } = {};\n\n\t\t$array.each($object.keys(object), (key) => {\n\t\t\toutput[key] = this.parse(root, object[key], refs);\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tparseArray(root: Root, value: Array<unknown>, refs: Array<IRef>): Array<unknown> {\n\t\treturn $array.map(value, (value) => this.parse(root, value, refs));\n\t}\n\n\tparseChildren(root: Root, value: Array<{ [key: string]: any } | string>, refs: Array<IRef>): Array<IChild> {\n\t\treturn $array.map(value, (value) => this.parseChild(root, value, refs));\n\t}\n\n\tparseStops(root: Root, value: Array<object>, refs: Array<IRef>): Array<object> {\n\t\treturn $array.map(value, (value) => this.parseObject(root, value, refs));\n\t}\n\n\tparseSetting(root: Root, key: string, value: unknown, refs: Array<IRef>): unknown {\n\t\tif (key === \"layout\") {\n\t\t\tswitch (value) {\n\t\t\t\tcase \"horizontal\":\n\t\t\t\t\treturn root.horizontalLayout;\n\t\t\t\tcase \"vertical\":\n\t\t\t\t\treturn root.verticalLayout;\n\t\t\t\tcase \"grid\":\n\t\t\t\t\treturn root.gridLayout;\n\t\t\t}\n\t\t}\n\n\t\tif (key === \"clusteredBullet\") {\n\t\t\treturn (_: unknown, series: unknown) => {\n\t\t\t\tconst newRefs = refs.concat([{ \"@series\": series }]);\n\t\t\t\treturn this.parse(root, value, newRefs);\n\t\t\t};\n\t\t}\n\n\t\tif (key === \"projection\") {\n\t\t\t// @todo: implement\n\t\t\treturn value;\n\t\t}\n\n\t\tif (key === \"geoJSON\") {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (key === \"stops\") {\n\t\t\treturn this.parseStops(root, value as Array<object>, refs);\n\t\t}\n\n\t\treturn this.parse(root, value, refs);\n\t}\n\n\tparseSettings<E extends Entity>(root: Root, object: object, refs: Array<IRef>): E[\"_settings\"] {\n\t\tconst settings: { [key: string]: any } = {};\n\n\t\t$array.each($object.keys(object), (key) => {\n\t\t\tsettings[key] = this.parseSetting(root, key, object[key], refs);\n\t\t});\n\n\t\treturn settings;\n\t}\n\n\tparseState<E extends Entity>(root: Root, object: { key: string, settings: Object }, refs: Array<IRef>): { key: string, settings: E[\"_settings\"] } {\n\t\treturn {\n\t\t\tkey: object.key,\n\t\t\tsettings: this.parseSettings(root, object.settings, refs),\n\t\t};\n\t}\n\n\tparseAdapter<E extends Entity>(root: Root, object: { key: keyof E[\"_settings\"], callback: unknown }, refs: Array<IRef>): IAdapter<E> {\n\t\treturn {\n\t\t\tkey: object.key,\n\t\t\tcallback: this.parse(root, object.callback, refs),\n\t\t};\n\t}\n\n\tparseProperties(root: Root, object: object, refs: Array<IRef>): IParsedProperties {\n\t\treturn $array.map($object.keys(object), (key) => {\n\t\t\tconst rawValue = object[key];\n\n\t\t\treturn (entity: object) => {\n\t\t\t\tconst run = () => {\n\t\t\t\t\tconst parsed = this.parseValue(root, rawValue, refs);\n\t\t\t\t\tconst old = entity[key] as unknown;\n\n\t\t\t\t\tif (old) {\n\t\t\t\t\t\tif (parsed.isValue) {\n\t\t\t\t\t\t\t// Merge Array into List\n\t\t\t\t\t\t\tif ($type.isArray(parsed.value)) {\n\t\t\t\t\t\t\t\tif (old instanceof ListData) {\n\t\t\t\t\t\t\t\t\t(old as any).setAll(parsed.value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t$array.each(parsed.value, (value) => {\n\t\t\t\t\t\t\t\t\t\t(old as any).push(value);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t(entity as any)[key] = parsed.value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if (parsed.construct) {\n\t\t\t\t\t\t\t(entity as any)[key] = constructEntity(root, parsed);\n\n\t\t\t\t\t\t\t// Merge into existing Entity or Template\n\t\t\t\t\t\t} else if (old instanceof Entity || old instanceof Template) {\n\t\t\t\t\t\t\tmergeExisting(old as Entity, parsed);\n\n\t\t\t\t\t\t\t// Merge into existing object\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeObject(old as object, parsed);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (parsed.isValue) {\n\t\t\t\t\t\t\t(entity as any)[key] = parsed.value;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t(entity as any)[key] = constructEntity(root, parsed);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (key === \"data\") {\n\t\t\t\t\tthis._delayed.push(run);\n\n\t\t\t\t} else if (key === \"bullets\") {\n\t\t\t\t\tconst old = entity[key] as unknown;\n\n\t\t\t\t\t$type.assert(old != null);\n\t\t\t\t\t$type.assert($type.isArray(rawValue));\n\n\t\t\t\t\t$array.each(rawValue, (value) => {\n\t\t\t\t\t\t(old as any).push((_: unknown, series: unknown) => {\n\t\t\t\t\t\t\tconst newRefs = refs.concat([{ \"@series\": series }]);\n\t\t\t\t\t\t\treturn this.parse(root, value, newRefs);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t} else if (key === \"bullet\") {\n\t\t\t\t\t(entity as any).set(\"bullet\", (_: unknown, axis: unknown) => {\n\t\t\t\t\t\tconst newRefs = refs.concat([{ \"@axis\": axis }]);\n\t\t\t\t\t\treturn this.parse(root, rawValue, newRefs);\n\t\t\t\t\t});\n\n\t\t\t\t} else {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n\tparseAxisRange<E extends Entity>(root: Root, value: IAxisRange<E>, refs: Array<IRef>): IParsedEntity<E> {\n\t\tconst settings = this.parseSettings(root, value.settings, refs);\n\n\t\treturn {\n\t\t\tisValue: false,\n\t\t\ttype: undefined,\n\t\t\tconstruct: undefined,\n\t\t\tsettings,\n\t\t\tadapters: undefined,\n\t\t\tstates: undefined,\n\t\t\tchildren: undefined,\n\t\t\tproperties: undefined,\n\t\t\tindex: undefined,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\tparseRefsObject(root: Root, object: { [key: string]: any }, refs: Array<IRef>): IRef {\n\t\tconst newRefs: IRef = {};\n\n\t\t$object.each(object, (key, value) => {\n\t\t\tif (value.__parseLogic == \"axisRange\" || value.__parseLogic == \"seriesAxisRange\") {\n\t\t\t\t// Parse axis range\n\t\t\t\tconst parsed = this.parseAxisRange(root, value, refs);\n\n\t\t\t\tconst axis = lookupRef(refs, value.axis);\n\t\t\t\tconst axisDataItem = axis.makeDataItem({});\n\n\t\t\t\tlet seriesRange: any | undefined;\n\n\t\t\t\tconst series = value.series ? lookupRef(refs, value.series) : undefined;\n\n\t\t\t\tif (series) {\n\t\t\t\t\tseriesRange = series.createAxisRange(axisDataItem);\n\n\t\t\t\t} else {\n\t\t\t\t\taxis.createAxisRange(axisDataItem);\n\t\t\t\t}\n\n\t\t\t\t// Apply settings to data item\n\t\t\t\tmergeExistingAxisRange(axisDataItem, parsed);\n\n\t\t\t\t// Set series range settings\n\t\t\t\tif (seriesRange) {\n\t\t\t\t\t[\"fills\", \"strokes\", \"graphics\"].forEach((targetKey: string) => {\n\t\t\t\t\t\tif (seriesRange[targetKey] !== undefined && value[targetKey] !== undefined) {\n\t\t\t\t\t\t\tvalue[targetKey].__parse = true;\n\t\t\t\t\t\t\tconst parsedSetting = this.parse(root, value[targetKey], refs);\n\t\t\t\t\t\t\tseriesRange[targetKey].template.setAll(parsedSetting);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tnewRefs[\"#\" + key] = this.parse(root, value, refs);\n\t\t\t}\n\t\t});\n\n\t\treturn newRefs;\n\t}\n\n\tparseRefs(root: Root, object: IRefs, refs: Array<IRef>): Array<IRef> {\n\t\tif ($type.isArray(object)) {\n\t\t\tconst length = object.length;\n\n\t\t\tfor (let i = 0; i < length; ++i) {\n\t\t\t\trefs = refs.concat([this.parseRefsObject(root, object[i] as any, refs)]);\n\t\t\t}\n\n\t\t} else {\n\t\t\trefs = refs.concat([this.parseRefsObject(root, object, refs)]);\n\t\t}\n\n\t\treturn refs;\n\t}\n\n\n\tparseChild(root: Root, value: { [key: string]: any } | string, refs: Array<IRef>): IChild {\n\t\tif ($type.isString(value)) {\n\t\t\treturn {\n\t\t\t\tindex: undefined,\n\t\t\t\tvalue: parseRef<Sprite>(value, refs).value,\n\t\t\t};\n\n\t\t} else if (value.ref != null) {\n\t\t\tconst index = (value.index == null ? undefined : value.index);\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tvalue: parseRef<Sprite>(value.ref, refs).value,\n\t\t\t};\n\n\t\t} else {\n\t\t\tconst parsed = this.parseEntity<Sprite>(root, value, refs);\n\n\t\t\treturn {\n\t\t\t\tindex: parsed.index,\n\t\t\t\tvalue: constructEntity(root, parsed) as Sprite,\n\t\t\t};\n\t\t}\n\t}\n\n\tparseEntity<E extends Entity>(root: Root, value: { [key: string]: any }, refs: Array<IRef>): IParsedEntity<E> {\n\t\tif (value.refs) {\n\t\t\trefs = this.parseRefs(root, value.refs, refs);\n\t\t}\n\n\t\tconst construct = (value.type ? this.getClass(value.type) : undefined);\n\t\tconst settings = (value.settings ? this.parseSettings(root, value.settings, refs) : undefined);\n\t\tconst properties = (value.properties ? this.parseProperties(root, value.properties, refs) : undefined);\n\t\tconst children = (value.children ? this.parseChildren(root, value.children, refs) : undefined);\n\t\tconst states = (value.states ? $array.map(value.states, (value: any) => this.parseState(root, value, refs)) : undefined);\n\t\tconst adapters = (value.adapters ? $array.map(value.adapters, (value: any) => this.parseAdapter(root, value, refs)) : undefined) as any;\n\n\t\tconst index = (value.index == null ? undefined : value.index);\n\n\t\treturn {\n\t\t\tisValue: false,\n\t\t\ttype: value.type,\n\t\t\tconstruct,\n\t\t\tsettings,\n\t\t\tadapters,\n\t\t\tstates,\n\t\t\tchildren,\n\t\t\tproperties,\n\t\t\tindex,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\tparseTemplate<E extends Entity>(root: Root, value: { [key: string]: any }, refs: Array<IRef>): IParsed<E> {\n\t\tif (value.refs) {\n\t\t\trefs = this.parseRefs(root, value.refs, refs);\n\t\t}\n\n\t\tconst settings = (value.settings ? this.parseSettings(root, value.settings, refs) : {});\n\n\t\tconst template = Template.new(settings);\n\n\t\tconst states = (value.states ? $array.map(value.states, (value: any) => this.parseState(root, value, refs)) : undefined);\n\t\tconst adapters = (value.adapters ? $array.map(value.adapters, (value: any) => this.parseAdapter(root, value, refs)) : undefined) as any;\n\n\t\tif (adapters) {\n\t\t\t$array.each(adapters, (adapter: any) => {\n\t\t\t\ttemplate.adapters.add(adapter.key, adapter.callback);\n\t\t\t});\n\t\t}\n\n\t\tif (states) {\n\t\t\t$array.each(states, (state: any) => {\n\t\t\t\ttemplate.states.create(state.key, state.settings);\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tisValue: true,\n\t\t\tvalue: template,\n\t\t};\n\t}\n\n\tparseValue<E extends Entity>(root: Root, value: any, refs: Array<IRef>): IParsed<E> {\n\t\tif (value instanceof Entity) {\n\t\t\treturn { isValue: true, value: value };\n\n\t\t} else if ($type.isArray(value)) {\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue: this.parseArray(root, value, refs),\n\t\t\t};\n\n\t\t} else if (isObject(value)) {\n\t\t\tif (isObjectParsed(value)) {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\n\t\t\t} else if (value.type === \"Color\") {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: Color.fromAny(value.value),\n\t\t\t\t};\n\n\t\t\t} else if (value.type === \"Percent\") {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: new Percent(value.value),\n\t\t\t\t};\n\n\t\t\t} else if (value.type === \"Template\") {\n\t\t\t\treturn this.parseTemplate(root, value, refs);\n\n\t\t\t} else if (value.__parse === true) {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: this.parseObject(root, value, refs),\n\t\t\t\t};\n\n\t\t\t} else if (value.__parse === false) {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\n\t\t\t} else {\n\t\t\t\treturn this.parseEntity(root, value, refs);\n\t\t\t}\n\n\t\t} else if ($type.isString(value)) {\n\t\t\treturn parseRef(value, refs);\n\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue,\n\t\t\t};\n\t\t}\n\t}\n\n\tparse<E extends Entity>(root: Root, value: unknown, refs: Array<IRef>): any {\n\t\tconst parsed = this.parseValue<E>(root, value, refs);\n\n\t\tif (parsed.isValue) {\n\t\t\treturn parsed.value;\n\n\t\t} else {\n\t\t\treturn constructEntity<E>(root, parsed);\n\t\t}\n\t}\n}\n\nexport interface IParseSettings {\n\tparent?: Container;\n}\n\n/**\n * A parser for JSON based chart configs.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/serializing/} for more info\n * @since 5.3.0\n */\nexport class JsonParser {\n\tprotected _root: Root;\n\n\t/**\n\t * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\n\t *\n\t * Use static method `Class.new()` instead.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @ignore\n\t */\n\tconstructor(root: Root, isReal: boolean) {\n\t\tif (!isReal) {\n\t\t\tthrow new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n\t\t}\n\n\t\tthis._root = root;\n\t}\n\n\t/**\n\t * Use this method to create an instance of this class.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @param root Root element\n\t * @return Instantiated object\n\t */\n\tstatic new<C extends typeof JsonParser, T extends InstanceType<C>>(this: C, root: Root): T {\n\t\treturn (new this(root, true)) as T;\n\t}\n\n\t/**\n\t * Parses and creates chart objects from simple objects.\n\t *\n\t * @param object Serialized data\n\t * @return A promise of a target object\n\t */\n\tasync parse<E extends Entity>(object: unknown, settings: IParseSettings = {}): Promise<E> {\n\t\tconst state = new ParserState();\n\n\t\tawait state.parseAsync(object);\n\n\t\tconst output = state.parse(this._root, object, []) as E;\n\n\t\tif (settings.parent) {\n\t\t\tif (output instanceof Sprite) {\n\t\t\t\tsettings.parent.children.push(output);\n\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"When using the parent setting, the entity must be a Sprite\");\n\t\t\t}\n\n\t\t}\n\t\telse if (output instanceof Entity) {\n\t\t\toutput._applyThemes(true);\n\t\t}\n\n\t\tstate.afterParse();\n\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses and creates chart objects from JSON string.\n\t *\n\t * @param string JSON string\n\t * @return A promise of a target object\n\t */\n\tasync parseString<E extends Entity>(string: string, settings: IParseSettings = {}): Promise<E> {\n\t\treturn await this.parse(JSON.parse(string), settings);\n\t}\n}\n\n/**\n * Registers a class so that it can be parsed and instantiated bey JSON parser.\n *\n * @param name Class name\n * @param func Class reference\n * @ignore\n */\nexport function registerCustomClass(name: string, ref: any): void {\n\tif (!(classes as any)[name]) {\n\t\t(classes as any)[name] = () => new Promise((resolve) => {\n\t\t\tresolve(ref);\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Json.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Root } from \"../../core/Root\";\n\nimport { Entity } from \"../../core/util/Entity\";\nimport { Sprite } from \"../../core/render/Sprite\";\nimport { Container } from \"../../core/render/Container\";\nimport { Color } from \"../../core/util/Color\";\nimport { Percent } from \"../../core/util/Percent\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListData } from \"../../core/util/Data\";\n\nimport * as $type from \"../../core/util/Type\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $object from \"../../core/util/Object\";\n\nimport type { IClasses } from \"./Classes\";\nimport classes from \"./Classes\";\n\n\ninterface IRef {\n\t[key: string]: any;\n}\n\n\nfunction isObject(value: any): value is { [key: string]: any } {\n\treturn $type.isObject(value);\n}\n\nfunction isObjectParsed(value: object): boolean {\n\treturn value instanceof Entity || value instanceof Color || value instanceof Percent || value instanceof Template;\n}\n\n\n// Detects whether a raw setting value references `@self` (the entity itself),\n// which means it must be applied after the entity is constructed.\n//\n// Only recurses into plain JSON objects/arrays (the shapes a parsed config is made of) so that\n// live instances passed programmatically (Entity, DataItem, Sprite, ...) are never walked - those\n// can hold circular references and are never `@self` strings anyway.\nfunction usesSelfRef(value: any): boolean {\n\tif ($type.isString(value)) {\n\t\treturn value === \"@self\" || value.indexOf(\"@self.\") === 0;\n\n\t} else if ($type.isArray(value)) {\n\t\treturn $array.any(value, usesSelfRef);\n\n\t} else if (isObject(value) && value.constructor === Object) {\n\t\treturn $array.any($object.keys(value), (key) => usesSelfRef(value[key]));\n\n\t} else {\n\t\treturn false;\n\t}\n}\n\n\nfunction lookupRef(refs: Array<IRef>, name: string): any {\n\tlet i = refs.length;\n\n\twhile (i--) {\n\t\tconst sub = refs[i];\n\n\t\tif (name in sub) {\n\t\t\treturn sub[name];\n\t\t}\n\t}\n\n\tthrow new Error(\"Could not find ref \" + name);\n}\n\n\ninterface IAxisRange<E extends Entity> {\n\t__parseLogic: \"axisRange\" | \"seriesAxisRange\",\n\taxis: string,\n\tseries?: string,\n\tsettings: E[\"_settings\"],\n}\n\ninterface IAdapter<E extends Entity> {\n\tkey: keyof E[\"_settings\"],\n\tcallback: (value: E[\"_settings\"][this[\"key\"]], target: E, key: this[\"key\"]) => E[\"_settings\"][this[\"key\"]],\n}\n\ninterface IState<E extends Entity> {\n\tkey: string,\n\tsettings: E[\"_settings\"],\n}\n\ntype IParsedProperties = Array<(entity: object) => void>;\n\ntype IRefs = { [key: string]: any } | Array<{ [key: string]: any }>;\n\ninterface IChild {\n\tindex: number | undefined,\n\tvalue: Sprite,\n}\n\ninterface IParsedEntity<E extends Entity> {\n\tisValue: false,\n\ttype: string | undefined,\n\tconstruct: typeof Entity | undefined,\n\tsettings: object | undefined,\n\tadapters: Array<IAdapter<E>> | undefined,\n\tstates: Array<IState<E>> | undefined,\n\tchildren: Array<IChild> | undefined,\n\tproperties: IParsedProperties | undefined,\n\tindex: number | undefined,\n\tvalue: object,\n}\n\ntype IParsed<E extends Entity>\n\t= IParsedEntity<E>\n\t| { isValue: true, value: any };\n\n\nfunction parseRef<E extends Entity>(value: string, refs: Array<IRef>): IParsed<E> {\n\tif (value[0] === \"#\" || value[0] === \"@\") {\n\t\tif (value[1] === value[0]) {\n\t\t\t// \"##foo\" or \"@@foo\" gets escaped into the literal strings \"#foo\" or \"@foo\"\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue: value.slice(1),\n\t\t\t};\n\n\t\t} else {\n\t\t\tconst path = value.split(/\\./g);\n\n\t\t\tlet object = lookupRef(refs, path[0]);\n\n\t\t\tfor (let i = 1; i < path.length; ++i) {\n\t\t\t\tconst subpath = path[i];\n\n\t\t\t\t// Supports `#foo.get(\"bar\")` and `#foo.get('bar')` syntax\n\t\t\t\tconst parsed = /get\\(([\"'])([^\\1]*)\\1\\)/.exec(subpath);\n\n\t\t\t\tif (parsed) {\n\t\t\t\t\tobject = object.get(parsed[2]);\n\n\t\t\t\t} else {\n\t\t\t\t\tobject = object[subpath];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue: object,\n\t\t\t};\n\t\t}\n\n\t} else {\n\t\treturn {\n\t\t\tisValue: true,\n\t\t\tvalue,\n\t\t};\n\t}\n}\n\n\nfunction mergeObject<E extends Entity>(entity: object, parsed: IParsedEntity<E>): void {\n\tif (parsed.properties) {\n\t\t$array.each(parsed.properties, (fn) => {\n\t\t\tfn(entity);\n\t\t});\n\t}\n}\n\nfunction mergeEntity<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n\tmergeObject(entity, parsed);\n\n\tif (parsed.adapters) {\n\t\t$array.each(parsed.adapters, (adapter) => {\n\t\t\tentity.adapters.add(adapter.key, adapter.callback);\n\t\t});\n\t}\n\n\tif (parsed.states) {\n\t\t$array.each(parsed.states, (state) => {\n\t\t\tentity.states.create(state.key, state.settings);\n\t\t});\n\t}\n\n\tif (entity instanceof Container) {\n\t\tif (parsed.children) {\n\t\t\tparsed.children.forEach((child) => {\n\t\t\t\tif (child.index == null || child.index >= entity.children.length) {\n\t\t\t\t\tentity.children.push(child.value);\n\n\t\t\t\t} else {\n\t\t\t\t\tentity.children.insertIndex(child.index, child.value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction mergeExisting<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n\tif (parsed.settings) {\n\t\tentity.setAll(parsed.settings);\n\t}\n\n\tmergeEntity(entity, parsed);\n}\n\n\n// TODO replace this with `__parseLogic: \"merge\"`\nfunction mergeExistingAxisRange<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n\tif (parsed.settings) {\n\t\t$object.each(parsed.settings, (key, value: any) => {\n\t\t\tif (value instanceof Entity) {\n\t\t\t\tconst old = entity.get(key) as any;\n\n\t\t\t\tif (old instanceof Entity) {\n\t\t\t\t\told.setAll(value._settings);\n\n\t\t\t\t} else {\n\t\t\t\t\tentity.set(key, value as any);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tentity.set(key, value);\n\t\t\t}\n\t\t});\n\t}\n\n\tmergeEntity(entity, parsed);\n}\n\n\nfunction constructEntity<E extends Entity>(root: Root, parsed: IParsedEntity<E>): E | object {\n\tif (!parsed.construct) {\n\t\treturn parsed.value;\n\t}\n\n\tconst entity = parsed.construct.new(root, parsed.settings || {}) as E;\n\n\tmergeEntity(entity, parsed);\n\n\treturn entity;\n}\n\n\nclass ParserState {\n\tprotected _caching: { [key: string]: Promise<void> } = {};\n\tprotected _cache: { [key: string]: typeof Entity } = {};\n\tprotected _delayed: Array<() => void> = [];\n\n\n\tafterParse(): void {\n\t\tthis._delayed.forEach((f) => {\n\t\t\tf();\n\t\t});\n\t}\n\n\n\tgetClass(name: string): typeof Entity {\n\t\treturn this._cache[name];\n\t}\n\n\tasync storeClass(name: string): Promise<void> {\n\t\tif (name === \"Template\") {\n\t\t\t// Do nothing\n\t\t\treturn;\n\t\t}\n\n\t\tconst promise = classes[name as keyof IClasses];\n\n\t\tif (promise == null) {\n\t\t\tthrow new Error(\"Unknown object type `\" + name + \"`\");\n\t\t}\n\n\t\tthis._cache[name] = await promise() as typeof Entity;\n\t}\n\n\tcacheClass(name: string): Promise<void> {\n\t\tlet promise = this._caching[name];\n\n\t\tif (promise == null) {\n\t\t\tpromise = this._caching[name] = this.storeClass(name);\n\t\t}\n\n\t\treturn promise;\n\t}\n\n\n\tasync parseAsyncArray(array: Array<unknown>): Promise<void> {\n\t\tawait Promise.all($array.map(array, (x) => this.parseAsync(x)));\n\t}\n\n\tasync parseAsyncObjectKey(key: string, value: unknown): Promise<void> {\n\t\tif (key === \"type\") {\n\t\t\tif ($type.isString(value)) {\n\t\t\t\tawait this.cacheClass(value);\n\n\t\t\t} else {\n\t\t\t\tawait this.parseAsync(value);\n\t\t\t}\n\n\t\t} else if (key === \"geoJSON\" || key === \"geometry\") {\n\t\t\t// Do nothing\n\n\t\t} else {\n\t\t\tawait this.parseAsync(value);\n\t\t}\n\t}\n\n\tasync parseAsyncObject(object: object): Promise<void> {\n\t\tswitch ((object as any).type) {\n\t\t\tcase \"Color\":\n\t\t\tcase \"Percent\":\n\t\t\t\t// Do nothing\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait Promise.all($array.map($object.keys(object), (key) => this.parseAsyncObjectKey(key, object[key])));\n\t\t}\n\t}\n\n\tasync parseAsync(value: unknown): Promise<void> {\n\t\tif ($type.isArray(value)) {\n\t\t\tawait this.parseAsyncArray(value);\n\n\t\t} else if (isObject(value)) {\n\t\t\tif (!isObjectParsed(value)) {\n\t\t\t\tif (value.__parse === true || value.__parse !== false) {\n\t\t\t\t\tawait this.parseAsyncObject(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\tparseObject(root: Root, object: object, refs: Array<IRef>): object {\n\t\tconst output: { [key: string]: any } = {};\n\n\t\t$array.each($object.keys(object), (key) => {\n\t\t\toutput[key] = this.parse(root, object[key], refs);\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tparseArray(root: Root, value: Array<unknown>, refs: Array<IRef>): Array<unknown> {\n\t\treturn $array.map(value, (value) => this.parse(root, value, refs));\n\t}\n\n\tparseChildren(root: Root, value: Array<{ [key: string]: any } | string>, refs: Array<IRef>): Array<IChild> {\n\t\treturn $array.map(value, (value) => this.parseChild(root, value, refs));\n\t}\n\n\tparseStops(root: Root, value: Array<object>, refs: Array<IRef>): Array<object> {\n\t\treturn $array.map(value, (value) => this.parseObject(root, value, refs));\n\t}\n\n\tparseSetting(root: Root, key: string, value: unknown, refs: Array<IRef>): unknown {\n\t\tif (key === \"layout\") {\n\t\t\tswitch (value) {\n\t\t\t\tcase \"horizontal\":\n\t\t\t\t\treturn root.horizontalLayout;\n\t\t\t\tcase \"vertical\":\n\t\t\t\t\treturn root.verticalLayout;\n\t\t\t\tcase \"grid\":\n\t\t\t\t\treturn root.gridLayout;\n\t\t\t}\n\t\t}\n\n\t\tif (key === \"clusteredBullet\") {\n\t\t\treturn (_: unknown, series: unknown) => {\n\t\t\t\tconst newRefs = refs.concat([{ \"@series\": series }]);\n\t\t\t\treturn this.parse(root, value, newRefs);\n\t\t\t};\n\t\t}\n\n\t\tif (key === \"projection\") {\n\t\t\t// @todo: implement\n\t\t\treturn value;\n\t\t}\n\n\t\tif (key === \"geoJSON\") {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (key === \"stops\") {\n\t\t\treturn this.parseStops(root, value as Array<object>, refs);\n\t\t}\n\n\t\treturn this.parse(root, value, refs);\n\t}\n\n\tparseSettings<E extends Entity>(root: Root, object: object, refs: Array<IRef>): E[\"_settings\"] {\n\t\tconst settings: { [key: string]: any } = {};\n\n\t\t$array.each($object.keys(object), (key) => {\n\t\t\tsettings[key] = this.parseSetting(root, key, object[key], refs);\n\t\t});\n\n\t\treturn settings;\n\t}\n\n\tparseState<E extends Entity>(root: Root, object: { key: string, settings: Object }, refs: Array<IRef>): { key: string, settings: E[\"_settings\"] } {\n\t\treturn {\n\t\t\tkey: object.key,\n\t\t\tsettings: this.parseSettings(root, object.settings, refs),\n\t\t};\n\t}\n\n\tparseAdapter<E extends Entity>(root: Root, object: { key: keyof E[\"_settings\"], callback: unknown }, refs: Array<IRef>): IAdapter<E> {\n\t\treturn {\n\t\t\tkey: object.key,\n\t\t\tcallback: this.parse(root, object.callback, refs),\n\t\t};\n\t}\n\n\tparseProperties(root: Root, object: object, refs: Array<IRef>): IParsedProperties {\n\t\treturn $array.map($object.keys(object), (key) => {\n\t\t\tconst rawValue = object[key];\n\n\t\t\treturn (entity: object) => {\n\t\t\t\tconst run = () => {\n\t\t\t\t\tconst parsed = this.parseValue(root, rawValue, refs);\n\t\t\t\t\tconst old = entity[key] as unknown;\n\n\t\t\t\t\tif (old) {\n\t\t\t\t\t\tif (parsed.isValue) {\n\t\t\t\t\t\t\t// Merge Array into List\n\t\t\t\t\t\t\tif ($type.isArray(parsed.value)) {\n\t\t\t\t\t\t\t\tif (old instanceof ListData) {\n\t\t\t\t\t\t\t\t\t(old as any).setAll(parsed.value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t$array.each(parsed.value, (value) => {\n\t\t\t\t\t\t\t\t\t\t(old as any).push(value);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t(entity as any)[key] = parsed.value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if (parsed.construct) {\n\t\t\t\t\t\t\t(entity as any)[key] = constructEntity(root, parsed);\n\n\t\t\t\t\t\t\t// Merge into existing Entity or Template\n\t\t\t\t\t\t} else if (old instanceof Entity || old instanceof Template) {\n\t\t\t\t\t\t\tmergeExisting(old as Entity, parsed);\n\n\t\t\t\t\t\t\t// Merge into existing object\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeObject(old as object, parsed);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (parsed.isValue) {\n\t\t\t\t\t\t\t(entity as any)[key] = parsed.value;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t(entity as any)[key] = constructEntity(root, parsed);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tif (key === \"data\") {\n\t\t\t\t\tthis._delayed.push(run);\n\n\t\t\t\t} else if (key === \"bullets\") {\n\t\t\t\t\tconst old = entity[key] as unknown;\n\n\t\t\t\t\t$type.assert(old != null);\n\t\t\t\t\t$type.assert($type.isArray(rawValue));\n\n\t\t\t\t\t$array.each(rawValue, (value) => {\n\t\t\t\t\t\t(old as any).push((_: unknown, series: unknown) => {\n\t\t\t\t\t\t\tconst newRefs = refs.concat([{ \"@series\": series }]);\n\t\t\t\t\t\t\treturn this.parse(root, value, newRefs);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t} else if (key === \"bullet\") {\n\t\t\t\t\t(entity as any).set(\"bullet\", (_: unknown, axis: unknown) => {\n\t\t\t\t\t\tconst newRefs = refs.concat([{ \"@axis\": axis }]);\n\t\t\t\t\t\treturn this.parse(root, rawValue, newRefs);\n\t\t\t\t\t});\n\n\t\t\t\t} else {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n\tparseAxisRange<E extends Entity>(root: Root, value: IAxisRange<E>, refs: Array<IRef>): IParsedEntity<E> {\n\t\tconst settings = this.parseSettings(root, value.settings, refs);\n\n\t\treturn {\n\t\t\tisValue: false,\n\t\t\ttype: undefined,\n\t\t\tconstruct: undefined,\n\t\t\tsettings,\n\t\t\tadapters: undefined,\n\t\t\tstates: undefined,\n\t\t\tchildren: undefined,\n\t\t\tproperties: undefined,\n\t\t\tindex: undefined,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\tparseRefsObject(root: Root, object: { [key: string]: any }, refs: Array<IRef>): IRef {\n\t\tconst newRefs: IRef = {};\n\n\t\t$object.each(object, (key, value) => {\n\t\t\tif (value.__parseLogic == \"axisRange\" || value.__parseLogic == \"seriesAxisRange\") {\n\t\t\t\t// Parse axis range\n\t\t\t\tconst parsed = this.parseAxisRange(root, value, refs);\n\n\t\t\t\tconst axis = lookupRef(refs, value.axis);\n\t\t\t\tconst axisDataItem = axis.makeDataItem({});\n\n\t\t\t\tlet seriesRange: any | undefined;\n\n\t\t\t\tconst series = value.series ? lookupRef(refs, value.series) : undefined;\n\n\t\t\t\tif (series) {\n\t\t\t\t\tseriesRange = series.createAxisRange(axisDataItem);\n\n\t\t\t\t} else {\n\t\t\t\t\taxis.createAxisRange(axisDataItem);\n\t\t\t\t}\n\n\t\t\t\t// Apply settings to data item\n\t\t\t\tmergeExistingAxisRange(axisDataItem, parsed);\n\n\t\t\t\t// Set series range settings\n\t\t\t\tif (seriesRange) {\n\t\t\t\t\t[\"fills\", \"strokes\", \"graphics\"].forEach((targetKey: string) => {\n\t\t\t\t\t\tif (seriesRange[targetKey] !== undefined && value[targetKey] !== undefined) {\n\t\t\t\t\t\t\tvalue[targetKey].__parse = true;\n\t\t\t\t\t\t\tconst parsedSetting = this.parse(root, value[targetKey], refs);\n\t\t\t\t\t\t\tseriesRange[targetKey].template.setAll(parsedSetting);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tnewRefs[\"#\" + key] = this.parse(root, value, refs);\n\t\t\t}\n\t\t});\n\n\t\treturn newRefs;\n\t}\n\n\tparseRefs(root: Root, object: IRefs, refs: Array<IRef>): Array<IRef> {\n\t\tif ($type.isArray(object)) {\n\t\t\tconst length = object.length;\n\n\t\t\tfor (let i = 0; i < length; ++i) {\n\t\t\t\trefs = refs.concat([this.parseRefsObject(root, object[i] as any, refs)]);\n\t\t\t}\n\n\t\t} else {\n\t\t\trefs = refs.concat([this.parseRefsObject(root, object, refs)]);\n\t\t}\n\n\t\treturn refs;\n\t}\n\n\n\tparseChild(root: Root, value: { [key: string]: any } | string, refs: Array<IRef>): IChild {\n\t\tif ($type.isString(value)) {\n\t\t\treturn {\n\t\t\t\tindex: undefined,\n\t\t\t\tvalue: parseRef<Sprite>(value, refs).value,\n\t\t\t};\n\n\t\t} else if (value.ref != null) {\n\t\t\tconst index = (value.index == null ? undefined : value.index);\n\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tvalue: parseRef<Sprite>(value.ref, refs).value,\n\t\t\t};\n\n\t\t} else {\n\t\t\tconst parsed = this.parseEntity<Sprite>(root, value, refs);\n\n\t\t\treturn {\n\t\t\t\tindex: parsed.index,\n\t\t\t\tvalue: constructEntity(root, parsed) as Sprite,\n\t\t\t};\n\t\t}\n\t}\n\n\tparseEntity<E extends Entity>(root: Root, value: { [key: string]: any }, refs: Array<IRef>): IParsedEntity<E> {\n\t\tif (value.refs) {\n\t\t\trefs = this.parseRefs(root, value.refs, refs);\n\t\t}\n\n\t\tconst construct = (value.type ? this.getClass(value.type) : undefined);\n\n\t\t// Settings that reference `@self` (the entity itself) can't be resolved at construction time,\n\t\t// so they're split off and applied after the entity is built and its deferred data is set.\n\t\tlet settingsRaw = value.settings;\n\t\tconst selfSettings: { [key: string]: any } = {};\n\t\tlet hasSelfSettings = false;\n\n\t\tif (settingsRaw) {\n\t\t\t$array.each($object.keys(settingsRaw), (key) => {\n\t\t\t\t// `geoJSON`/`geometry` are large opaque settings (same ones `parseAsync` skips) - never\n\t\t\t\t// scan into them.\n\t\t\t\tif (key !== \"geoJSON\" && key !== \"geometry\" && usesSelfRef(settingsRaw[key])) {\n\t\t\t\t\tselfSettings[key] = settingsRaw[key];\n\t\t\t\t\thasSelfSettings = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (hasSelfSettings) {\n\t\t\t\tsettingsRaw = Object.assign({}, settingsRaw);\n\t\t\t\t$array.each($object.keys(selfSettings), (key) => {\n\t\t\t\t\tdelete settingsRaw[key];\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst settings = (settingsRaw ? this.parseSettings(root, settingsRaw, refs) : undefined);\n\t\tconst properties = (value.properties ? this.parseProperties(root, value.properties, refs) : undefined);\n\t\tconst children = (value.children ? this.parseChildren(root, value.children, refs) : undefined);\n\t\tconst states = (value.states ? $array.map(value.states, (value: any) => this.parseState(root, value, refs)) : undefined);\n\t\tconst adapters = (value.adapters ? $array.map(value.adapters, (value: any) => this.parseAdapter(root, value, refs)) : undefined) as any;\n\n\t\tconst index = (value.index == null ? undefined : value.index);\n\n\t\tlet allProperties = properties;\n\t\tif (hasSelfSettings) {\n\t\t\tconst deferredProp = (entity: object) => {\n\t\t\t\tthis._delayed.push(() => {\n\t\t\t\t\tconst newRefs = refs.concat([{ \"@self\": entity }]);\n\t\t\t\t\t$array.each($object.keys(selfSettings), (key) => {\n\t\t\t\t\t\tconst parsed = this.parseValue(root, selfSettings[key], newRefs);\n\t\t\t\t\t\t(entity as any).set(key, parsed.isValue ? parsed.value : constructEntity(root, parsed));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\t\t\tallProperties = allProperties ? allProperties.concat([deferredProp]) : [deferredProp];\n\t\t}\n\n\t\treturn {\n\t\t\tisValue: false,\n\t\t\ttype: value.type,\n\t\t\tconstruct,\n\t\t\tsettings,\n\t\t\tadapters,\n\t\t\tstates,\n\t\t\tchildren,\n\t\t\tproperties: allProperties,\n\t\t\tindex,\n\t\t\tvalue,\n\t\t};\n\t}\n\n\tparseTemplate<E extends Entity>(root: Root, value: { [key: string]: any }, refs: Array<IRef>): IParsed<E> {\n\t\tif (value.refs) {\n\t\t\trefs = this.parseRefs(root, value.refs, refs);\n\t\t}\n\n\t\tconst settings = (value.settings ? this.parseSettings(root, value.settings, refs) : {});\n\n\t\tconst template = Template.new(settings);\n\n\t\tconst states = (value.states ? $array.map(value.states, (value: any) => this.parseState(root, value, refs)) : undefined);\n\t\tconst adapters = (value.adapters ? $array.map(value.adapters, (value: any) => this.parseAdapter(root, value, refs)) : undefined) as any;\n\n\t\tif (adapters) {\n\t\t\t$array.each(adapters, (adapter: any) => {\n\t\t\t\ttemplate.adapters.add(adapter.key, adapter.callback);\n\t\t\t});\n\t\t}\n\n\t\tif (states) {\n\t\t\t$array.each(states, (state: any) => {\n\t\t\t\ttemplate.states.create(state.key, state.settings);\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tisValue: true,\n\t\t\tvalue: template,\n\t\t};\n\t}\n\n\tparseValue<E extends Entity>(root: Root, value: any, refs: Array<IRef>): IParsed<E> {\n\t\tif (value instanceof Entity) {\n\t\t\treturn { isValue: true, value: value };\n\n\t\t} else if ($type.isArray(value)) {\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue: this.parseArray(root, value, refs),\n\t\t\t};\n\n\t\t} else if (isObject(value)) {\n\t\t\tif (isObjectParsed(value)) {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\n\t\t\t} else if (value.type === \"Color\") {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: Color.fromAny(value.value),\n\t\t\t\t};\n\n\t\t\t} else if (value.type === \"Percent\") {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: new Percent(value.value),\n\t\t\t\t};\n\n\t\t\t} else if (value.type === \"Template\") {\n\t\t\t\treturn this.parseTemplate(root, value, refs);\n\n\t\t\t} else if (value.__parse === true) {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: this.parseObject(root, value, refs),\n\t\t\t\t};\n\n\t\t\t} else if (value.__parse === false) {\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue,\n\t\t\t\t};\n\n\t\t\t} else {\n\t\t\t\treturn this.parseEntity(root, value, refs);\n\t\t\t}\n\n\t\t} else if ($type.isString(value)) {\n\t\t\treturn parseRef(value, refs);\n\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tisValue: true,\n\t\t\t\tvalue,\n\t\t\t};\n\t\t}\n\t}\n\n\tparse<E extends Entity>(root: Root, value: unknown, refs: Array<IRef>): any {\n\t\tconst parsed = this.parseValue<E>(root, value, refs);\n\n\t\tif (parsed.isValue) {\n\t\t\treturn parsed.value;\n\n\t\t} else {\n\t\t\treturn constructEntity<E>(root, parsed);\n\t\t}\n\t}\n}\n\nexport interface IParseSettings {\n\tparent?: Container;\n}\n\n/**\n * A parser for JSON based chart configs.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/serializing/} for more info\n * @since 5.3.0\n */\nexport class JsonParser {\n\tprotected _root: Root;\n\n\t/**\n\t * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\n\t *\n\t * Use static method `Class.new()` instead.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @ignore\n\t */\n\tconstructor(root: Root, isReal: boolean) {\n\t\tif (!isReal) {\n\t\t\tthrow new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n\t\t}\n\n\t\tthis._root = root;\n\t}\n\n\t/**\n\t * Use this method to create an instance of this class.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @param root Root element\n\t * @return Instantiated object\n\t */\n\tstatic new<C extends typeof JsonParser, T extends InstanceType<C>>(this: C, root: Root): T {\n\t\treturn (new this(root, true)) as T;\n\t}\n\n\t/**\n\t * Parses and creates chart objects from simple objects.\n\t *\n\t * @param object Serialized data\n\t * @return A promise of a target object\n\t */\n\tasync parse<E extends Entity>(object: unknown, settings: IParseSettings = {}): Promise<E> {\n\t\tconst state = new ParserState();\n\n\t\tawait state.parseAsync(object);\n\n\t\tconst output = state.parse(this._root, object, []) as E;\n\n\t\tif (settings.parent) {\n\t\t\tif (output instanceof Sprite) {\n\t\t\t\tsettings.parent.children.push(output);\n\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"When using the parent setting, the entity must be a Sprite\");\n\t\t\t}\n\n\t\t}\n\t\telse if (output instanceof Entity) {\n\t\t\toutput._applyThemes(true);\n\t\t}\n\n\t\tstate.afterParse();\n\n\t\treturn output;\n\t}\n\n\t/**\n\t * Parses and creates chart objects from JSON string.\n\t *\n\t * @param string JSON string\n\t * @return A promise of a target object\n\t */\n\tasync parseString<E extends Entity>(string: string, settings: IParseSettings = {}): Promise<E> {\n\t\treturn await this.parse(JSON.parse(string), settings);\n\t}\n}\n\n/**\n * Registers a class so that it can be parsed and instantiated bey JSON parser.\n *\n * @param name Class name\n * @param func Class reference\n * @ignore\n */\nexport function registerCustomClass(name: string, ref: any): void {\n\tif (!(classes as any)[name]) {\n\t\t(classes as any)[name] = () => new Promise((resolve) => {\n\t\t\tresolve(ref);\n\t\t});\n\t}\n}\n"]}
package/CHANGELOG.md CHANGED
@@ -5,6 +5,44 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
5
5
  Please note, that this project, while following numbering syntax, it DOES NOT
6
6
  adhere to [Semantic Versioning](http://semver.org/spec/v2.0.0.html) rules.
7
7
 
8
+ ## [5.19.0] - 2026-06-15
9
+
10
+ ### Added
11
+ - JSON config parser now supports a `@self` reference in settings, pointing to the entity being configured. This makes it possible to reference an entity from within its own settings, e.g. `"selectedDataItem": "@self.dataItems.0"` on a `Hierarchy` series. Such settings are applied after the entity (and its data) are ready.
12
+ - `MapChart` now supports a `projectionName` setting — a string-friendly alternative to `projection` (e.g. `"geoOrthographic"`), primarily for JSON config. The bundled projections are registered automatically when parsing JSON. In code, the `am5map` projection factories (e.g. `am5map.geoOrthographic()`) tag their output with the projection name, so charts that set `projection` directly still serialize back to a matching `projectionName`. Additional projections can be registered with `am5map.registerProjection()`. The bundled projections are no longer eagerly pulled in, so they can be tree-shaken when unused.
13
+
14
+ ### Changed
15
+ - Dynamically-set HTML content (e.g. `html`/`labelHTML` settings, HTML tooltips, modal content, export menu labels) is now sanitized to strip potentially malicious code. Can be disabled via the `sanitizeHTML: false` setting on `Root`.
16
+ - CSV and XLSX data exports now guard against spreadsheet formula injection ("CSV injection"): string cells starting with `=`, `+`, `-`, `@`, tab, or carriage return are prefixed with a single quote so they are imported as plain text. Can be disabled via the `escapeFormulas: false` export option.
17
+
18
+ ### Fixed
19
+ - `ValueAxis` with `syncWithAxis` set could end up with grid lines not aligned with the source axis (depending on data range and `maxPrecision`), and the zoom-out button could remain visible after the chart was fully zoomed out.
20
+ - `ChartSerializer` would error out on a legend with non-Entity items in its data.
21
+ - Changing padding of Container was not causing it to be redrawn.
22
+ - Adding a new series to a `PieChart` at runtime was not resizing already-rendered series until the next chart resize.
23
+ - `MapPointSeries` was not rendering bullets for `MultiPoint` geometries due to an assignment used in place of a comparison.
24
+ - `CommodityChannelIndex` indicator was computing typical price as `(high + low + close) / 2` instead of `/ 3`, producing inflated values.
25
+ - `ForceDirected` was clearing a node's fixed `x` position instead of its fixed `y` when the `y` coordinate was unset, leaving the node pinned vertically.
26
+ - `Legend` was erroring out when sorting its items if its `children` contained extra elements without a data item (e.g. a manually added `Button`).
27
+ - `DateAxis` with `groupData: true` leaked grouped data items (and their bullets) on every regroup — most noticeable with frequent real-time data updates — because the previous grouped data sets were dropped without being disposed.
28
+ - Misc changes to alleviate potential for XSS via user-supplied content.
29
+
30
+
31
+ ## [5.18.0] - 2026-06-04
32
+
33
+ ### Added
34
+ - `fitNodes` (default: `false`) setting added to `Tree` chart. If set to `true`, hidden nodes will excluded from the layout, giving more space for visible ones.
35
+
36
+ ### Changed
37
+ - `pdfmake` dependency updated to `^0.3.9`. For those using only amCharts Exporting API, nothing changes. Only if you are accessing pdfmake object directly, there are some breaking API changes. [More info](https://www.amcharts.com/docs/v5/tutorials/pdfmake-upgrade-notice-02-03/).
38
+ - Renamed `type` setting to `maType` on moving average indicators (`MovingAverage`, `MovingAverageDeviation`, `MovingAverageEnvelope`, `BollingerBands`). (setting `type` will work as well, but it's deprecated)
39
+ - Renamed `type` setting to `shapeType` on `VoronoiTreemap`. (setting `type` will work as well, but it's deprecated)
40
+
41
+ ### Fixed
42
+ - `PictorialStackedSeries` was not correctly guarding against `NaN` scale values, which could result in invalid scale being applied to the series mask and graphics.
43
+ - Saving/serializing `StockChart` now includes `fontFamily`, `fontWeight`, and `fontStyle` settings for labels.
44
+
45
+
8
46
  ## [5.17.3] - 2026-05-29
9
47
 
10
48
  ### Added
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-arc-horizontal",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-arc-vertical",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-chord",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-chord-directed",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-chord-non-ribbon",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-sankey",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gantt",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gantt-multilevel",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gantt-simple",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gauge",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gauge-bands",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-force-directed",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-pack",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-partition",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-sunburst",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-tree",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-treemap",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-voronoi-treemap",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-jest",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-json-pie",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-json-xy",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "source-map-loader": "^4.0.1",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^5.1.1",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-animating-along-lines",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "@amcharts/amcharts5-geodata": "^5.1.5",
8
8
  "source-map-loader": "^4.0.1",
9
9
  "webpack": "^5.1.3",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-clustered-points",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "@amcharts/amcharts5-geodata": "^5.1.5",
8
8
  "source-map-loader": "^4.0.1",
9
9
  "webpack": "^5.1.3",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-day-and-night",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "@amcharts/amcharts5-geodata": "^5.1.5",
8
8
  "source-map-loader": "^4.0.1",
9
9
  "webpack": "^5.1.3",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-globe-rotate-to-country",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.17.3",
6
+ "@amcharts/amcharts5": "^5.19.0",
7
7
  "@amcharts/amcharts5-geodata": "^5.1.5",
8
8
  "source-map-loader": "^4.0.1",
9
9
  "webpack": "^5.1.3",