@amcharts/amcharts5 5.14.3 → 5.15.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.
- package/.internal/charts/flow/FlowNodes.d.ts +1 -0
- package/.internal/charts/flow/FlowNodes.d.ts.map +1 -1
- package/.internal/charts/flow/FlowNodes.js +7 -0
- package/.internal/charts/flow/FlowNodes.js.map +1 -1
- package/.internal/charts/gantt/Gantt.d.ts +1 -0
- package/.internal/charts/gantt/Gantt.d.ts.map +1 -1
- package/.internal/charts/gantt/Gantt.js +7 -0
- package/.internal/charts/gantt/Gantt.js.map +1 -1
- package/.internal/charts/gantt/GanttCategoryAxis.d.ts +1 -0
- package/.internal/charts/gantt/GanttCategoryAxis.d.ts.map +1 -1
- package/.internal/charts/gantt/GanttCategoryAxis.js +7 -0
- package/.internal/charts/gantt/GanttCategoryAxis.js.map +1 -1
- package/.internal/charts/hierarchy/Hierarchy.d.ts +1 -0
- package/.internal/charts/hierarchy/Hierarchy.d.ts.map +1 -1
- package/.internal/charts/hierarchy/Hierarchy.js +7 -0
- package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
- package/.internal/charts/map/ClusteredPointSeries.d.ts +2 -2
- package/.internal/charts/map/ClusteredPointSeries.d.ts.map +1 -1
- package/.internal/charts/map/ClusteredPointSeries.js.map +1 -1
- package/.internal/charts/percent/PercentSeries.d.ts +1 -0
- package/.internal/charts/percent/PercentSeries.d.ts.map +1 -1
- package/.internal/charts/percent/PercentSeries.js +7 -0
- package/.internal/charts/percent/PercentSeries.js.map +1 -1
- package/.internal/charts/stock/StockChart.js +1 -1
- package/.internal/charts/stock/StockChart.js.map +1 -1
- package/.internal/charts/stock/StockChartDefaultTheme.d.ts.map +1 -1
- package/.internal/charts/stock/StockChartDefaultTheme.js +6 -0
- package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
- package/.internal/charts/stock/drawing/DrawingSeries.d.ts.map +1 -1
- package/.internal/charts/stock/drawing/DrawingSeries.js +2 -2
- package/.internal/charts/stock/drawing/DrawingSeries.js.map +1 -1
- package/.internal/charts/stock/drawing/IconSeries.js +1 -1
- package/.internal/charts/stock/drawing/IconSeries.js.map +1 -1
- package/.internal/charts/stock/indicators/AccelerationBands.d.ts +0 -3
- package/.internal/charts/stock/indicators/AccelerationBands.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AccelerationBands.js +19 -19
- package/.internal/charts/stock/indicators/AccelerationBands.js.map +1 -1
- package/.internal/charts/stock/indicators/AccumulationDistribution.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/AccumulationDistribution.js +33 -31
- package/.internal/charts/stock/indicators/AccumulationDistribution.js.map +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.js +1 -1
- package/.internal/charts/stock/indicators/AccumulativeSwingIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/Aroon.js +2 -2
- package/.internal/charts/stock/indicators/Aroon.js.map +1 -1
- package/.internal/charts/stock/indicators/AverageTrueRange.js +1 -1
- package/.internal/charts/stock/indicators/AverageTrueRange.js.map +1 -1
- package/.internal/charts/stock/indicators/AwesomeOscillator.js +1 -1
- package/.internal/charts/stock/indicators/AwesomeOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/BollingerBands.js +2 -2
- package/.internal/charts/stock/indicators/BollingerBands.js.map +1 -1
- package/.internal/charts/stock/indicators/BullBearPower.js +1 -1
- package/.internal/charts/stock/indicators/BullBearPower.js.map +1 -1
- package/.internal/charts/stock/indicators/ChaikinMoneyFlow.js +1 -1
- package/.internal/charts/stock/indicators/ChaikinMoneyFlow.js.map +1 -1
- package/.internal/charts/stock/indicators/ChaikinOscillator.js +1 -1
- package/.internal/charts/stock/indicators/ChaikinOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/CommodityChannelIndex.js +1 -1
- package/.internal/charts/stock/indicators/CommodityChannelIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/DisparityIndex.js +1 -1
- package/.internal/charts/stock/indicators/DisparityIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/HeikinAshi.js +1 -1
- package/.internal/charts/stock/indicators/HeikinAshi.js.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Indicator.js +139 -91
- package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
- package/.internal/charts/stock/indicators/MACD.js +3 -3
- package/.internal/charts/stock/indicators/MACD.js.map +1 -1
- package/.internal/charts/stock/indicators/MACross.js +2 -2
- package/.internal/charts/stock/indicators/MACross.js.map +1 -1
- package/.internal/charts/stock/indicators/MedianPrice.js +1 -1
- package/.internal/charts/stock/indicators/MedianPrice.js.map +1 -1
- package/.internal/charts/stock/indicators/Momentum.js +1 -1
- package/.internal/charts/stock/indicators/Momentum.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverage.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js +1 -1
- package/.internal/charts/stock/indicators/MovingAverageDeviation.js.map +1 -1
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js +2 -2
- package/.internal/charts/stock/indicators/MovingAverageEnvelope.js.map +1 -1
- package/.internal/charts/stock/indicators/OnBalanceVolume.js +1 -1
- package/.internal/charts/stock/indicators/OnBalanceVolume.js.map +1 -1
- package/.internal/charts/stock/indicators/PVT.js +1 -1
- package/.internal/charts/stock/indicators/PVT.js.map +1 -1
- package/.internal/charts/stock/indicators/RelativeStrengthIndex.js +3 -3
- package/.internal/charts/stock/indicators/RelativeStrengthIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/StandardDeviation.js +1 -1
- package/.internal/charts/stock/indicators/StandardDeviation.js.map +1 -1
- package/.internal/charts/stock/indicators/StochasticMomentumIndex.js +2 -2
- package/.internal/charts/stock/indicators/StochasticMomentumIndex.js.map +1 -1
- package/.internal/charts/stock/indicators/StochasticOscillator.js +2 -2
- package/.internal/charts/stock/indicators/StochasticOscillator.js.map +1 -1
- package/.internal/charts/stock/indicators/SuperTrend.js +2 -2
- package/.internal/charts/stock/indicators/SuperTrend.js.map +1 -1
- package/.internal/charts/stock/indicators/Trix.js +2 -2
- package/.internal/charts/stock/indicators/Trix.js.map +1 -1
- package/.internal/charts/stock/indicators/TypicalPrice.js +1 -1
- package/.internal/charts/stock/indicators/TypicalPrice.js.map +1 -1
- package/.internal/charts/stock/indicators/VWAP.js +1 -1
- package/.internal/charts/stock/indicators/VWAP.js.map +1 -1
- package/.internal/charts/stock/indicators/Volume.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/Volume.js +1 -1
- package/.internal/charts/stock/indicators/Volume.js.map +1 -1
- package/.internal/charts/stock/indicators/VolumeProfile.d.ts.map +1 -1
- package/.internal/charts/stock/indicators/VolumeProfile.js +1 -0
- package/.internal/charts/stock/indicators/VolumeProfile.js.map +1 -1
- package/.internal/charts/stock/indicators/WilliamsR.js +1 -1
- package/.internal/charts/stock/indicators/WilliamsR.js.map +1 -1
- package/.internal/charts/stock/indicators/ZigZag.js +1 -1
- package/.internal/charts/stock/indicators/ZigZag.js.map +1 -1
- package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DateRangeSelector.js +1 -1
- package/.internal/charts/stock/toolbar/DateRangeSelector.js.map +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.d.ts +1 -0
- package/.internal/charts/stock/toolbar/DrawingControl.d.ts.map +1 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js +8 -1
- package/.internal/charts/stock/toolbar/DrawingControl.js.map +1 -1
- package/.internal/charts/venn/Venn.d.ts +1 -0
- package/.internal/charts/venn/Venn.d.ts.map +1 -1
- package/.internal/charts/venn/Venn.js +7 -0
- package/.internal/charts/venn/Venn.js.map +1 -1
- package/.internal/charts/xy/XYChart.d.ts +1 -0
- package/.internal/charts/xy/XYChart.d.ts.map +1 -1
- package/.internal/charts/xy/XYChart.js +8 -0
- package/.internal/charts/xy/XYChart.js.map +1 -1
- package/.internal/charts/xy/axes/AxisRenderer.d.ts.map +1 -1
- package/.internal/charts/xy/axes/AxisRenderer.js +6 -1
- package/.internal/charts/xy/axes/AxisRenderer.js.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/DateAxis.js +18 -14
- package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.d.ts.map +1 -1
- package/.internal/charts/xy/axes/GaplessDateAxis.js +6 -4
- package/.internal/charts/xy/axes/GaplessDateAxis.js.map +1 -1
- package/.internal/charts/xy/series/BaseColumnSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/BaseColumnSeries.js +19 -19
- package/.internal/charts/xy/series/BaseColumnSeries.js.map +1 -1
- package/.internal/charts/xy/series/CandlestickSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/CandlestickSeries.js +0 -1
- package/.internal/charts/xy/series/CandlestickSeries.js.map +1 -1
- package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/LineSeries.js +10 -8
- package/.internal/charts/xy/series/LineSeries.js.map +1 -1
- package/.internal/charts/xy/series/XYSeries.d.ts +2 -0
- package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
- package/.internal/charts/xy/series/XYSeries.js +28 -28
- package/.internal/charts/xy/series/XYSeries.js.map +1 -1
- package/.internal/core/Registry.d.ts +7 -1
- package/.internal/core/Registry.d.ts.map +1 -1
- package/.internal/core/Registry.js +14 -3
- package/.internal/core/Registry.js.map +1 -1
- package/.internal/core/Root.d.ts.map +1 -1
- package/.internal/core/Root.js +43 -4
- package/.internal/core/Root.js.map +1 -1
- package/.internal/core/render/Component.d.ts +5 -0
- package/.internal/core/render/Component.d.ts.map +1 -1
- package/.internal/core/render/Component.js +44 -0
- package/.internal/core/render/Component.js.map +1 -1
- package/.internal/core/render/Container.d.ts +1 -1
- package/.internal/core/render/Container.d.ts.map +1 -1
- package/.internal/core/render/Container.js +7 -2
- package/.internal/core/render/Container.js.map +1 -1
- package/.internal/core/render/Series.d.ts +9 -0
- package/.internal/core/render/Series.d.ts.map +1 -1
- package/.internal/core/render/Series.js +89 -74
- package/.internal/core/render/Series.js.map +1 -1
- package/.internal/plugins/exporting/ExportingMenu.d.ts +6 -0
- package/.internal/plugins/exporting/ExportingMenu.d.ts.map +1 -1
- package/.internal/plugins/exporting/ExportingMenu.js +2 -2
- package/.internal/plugins/exporting/ExportingMenu.js.map +1 -1
- package/.internal/plugins/json/ChartSerializer.d.ts +82 -0
- package/.internal/plugins/json/ChartSerializer.d.ts.map +1 -0
- package/.internal/plugins/json/ChartSerializer.js +782 -0
- package/.internal/plugins/json/ChartSerializer.js.map +1 -0
- package/.internal/plugins/json/Json.d.ts.map +1 -1
- package/.internal/plugins/json/Json.js +158 -54
- package/.internal/plugins/json/Json.js.map +1 -1
- package/.internal/plugins/json/Serializer.d.ts +40 -6
- package/.internal/plugins/json/Serializer.d.ts.map +1 -1
- package/.internal/plugins/json/Serializer.js +97 -24
- package/.internal/plugins/json/Serializer.js.map +1 -1
- package/CHANGELOG.md +37 -0
- package/examples/javascript/flow-arc-horizontal/package.json +1 -1
- package/examples/javascript/flow-arc-vertical/package.json +1 -1
- package/examples/javascript/flow-chord/package.json +1 -1
- package/examples/javascript/flow-chord-directed/package.json +1 -1
- package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/javascript/flow-sankey/package.json +1 -1
- package/examples/javascript/gantt/package.json +1 -1
- package/examples/javascript/gantt-multilevel/package.json +1 -1
- package/examples/javascript/gantt-simple/package.json +1 -1
- package/examples/javascript/gauge/package.json +1 -1
- package/examples/javascript/gauge-bands/package.json +1 -1
- package/examples/javascript/hierarchy-force-directed/package.json +1 -1
- package/examples/javascript/hierarchy-pack/package.json +1 -1
- package/examples/javascript/hierarchy-partition/package.json +1 -1
- package/examples/javascript/hierarchy-sunburst/package.json +1 -1
- package/examples/javascript/hierarchy-tree/package.json +1 -1
- package/examples/javascript/hierarchy-treemap/package.json +1 -1
- package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/javascript/jest/package.json +1 -1
- package/examples/javascript/json-pie/package.json +1 -1
- package/examples/javascript/json-xy/package.json +1 -1
- package/examples/javascript/map-animating-along-lines/package.json +1 -1
- package/examples/javascript/map-clustered-points/package.json +1 -1
- package/examples/javascript/map-day-and-night/package.json +1 -1
- package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/javascript/map-with-bubbles/package.json +1 -1
- package/examples/javascript/map-zoom-to-country/package.json +1 -1
- package/examples/javascript/misc-40-charts/package.json +1 -1
- package/examples/javascript/misc-microchart-grid/package.json +1 -1
- package/examples/javascript/pie-chart/package.json +1 -1
- package/examples/javascript/pie-donut-chart/package.json +1 -1
- package/examples/javascript/pie-variable-radius/package.json +1 -1
- package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
- package/examples/javascript/radar-heat-map/package.json +1 -1
- package/examples/javascript/radar-line/package.json +1 -1
- package/examples/javascript/radar-time-line/package.json +1 -1
- package/examples/javascript/sliced-funnel/package.json +1 -1
- package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/javascript/sliced-pyramid/package.json +1 -1
- package/examples/javascript/stock-chart/package.json +1 -1
- package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
- package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
- package/examples/javascript/stock-chart-intraday/package.json +1 -1
- package/examples/javascript/stock-chart-live/package.json +1 -1
- package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
- package/examples/javascript/timeline-spiral-chart/package.json +1 -1
- package/examples/javascript/venn-diagram/package.json +1 -1
- package/examples/javascript/wordcloud-with-data/package.json +1 -1
- package/examples/javascript/wordcloud-with-text/package.json +1 -1
- package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/javascript/xy-bubble/package.json +1 -1
- package/examples/javascript/xy-candlestick/package.json +1 -1
- package/examples/javascript/xy-clustered-column/package.json +1 -1
- package/examples/javascript/xy-column/package.json +1 -1
- package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/javascript/xy-data-grouping/package.json +1 -1
- package/examples/javascript/xy-draggable-range/package.json +1 -1
- package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/javascript/xy-dumbbell plot/package.json +1 -1
- package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/javascript/xy-line/package.json +1 -1
- package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/javascript/xy-live-data/package.json +1 -1
- package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/javascript/xy-ohlc/package.json +1 -1
- package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/javascript/xy-smoothed-line/package.json +1 -1
- package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/javascript/xy-stacked-column/package.json +1 -1
- package/examples/javascript/xy-stacked-step/package.json +1 -1
- package/examples/javascript/xy-stock/package.json +1 -1
- package/examples/javascript/xy-stock-comparing/package.json +1 -1
- package/examples/typescript/flow-arc-horizontal/package.json +1 -1
- package/examples/typescript/flow-arc-vertical/package.json +1 -1
- package/examples/typescript/flow-chord/package.json +1 -1
- package/examples/typescript/flow-chord-directed/package.json +1 -1
- package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
- package/examples/typescript/flow-sankey/package.json +1 -1
- package/examples/typescript/gantt/package.json +1 -1
- package/examples/typescript/gantt-multilevel/package.json +1 -1
- package/examples/typescript/gantt-simple/package.json +1 -1
- package/examples/typescript/gauge/package.json +1 -1
- package/examples/typescript/gauge-bands/package.json +1 -1
- package/examples/typescript/hierarchy-force-directed/package.json +1 -1
- package/examples/typescript/hierarchy-pack/package.json +1 -1
- package/examples/typescript/hierarchy-partition/package.json +1 -1
- package/examples/typescript/hierarchy-sunburst/package.json +1 -1
- package/examples/typescript/hierarchy-tree/package.json +1 -1
- package/examples/typescript/hierarchy-treemap/package.json +1 -1
- package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
- package/examples/typescript/jest/package.json +1 -1
- package/examples/typescript/json-pie/package.json +1 -1
- package/examples/typescript/json-xy/package.json +1 -1
- package/examples/typescript/map-animating-along-lines/package.json +1 -1
- package/examples/typescript/map-clustered-points/package.json +1 -1
- package/examples/typescript/map-day-and-night/package.json +1 -1
- package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
- package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
- package/examples/typescript/map-with-bubbles/package.json +1 -1
- package/examples/typescript/map-zoom-to-country/package.json +1 -1
- package/examples/typescript/misc-40-charts/package.json +1 -1
- package/examples/typescript/misc-microchart-grid/package.json +1 -1
- package/examples/typescript/pie-chart/package.json +1 -1
- package/examples/typescript/pie-donut-chart/package.json +1 -1
- package/examples/typescript/pie-variable-radius/package.json +1 -1
- package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
- package/examples/typescript/radar-heat-map/package.json +1 -1
- package/examples/typescript/radar-line/package.json +1 -1
- package/examples/typescript/radar-time-line/package.json +1 -1
- package/examples/typescript/sliced-funnel/package.json +1 -1
- package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
- package/examples/typescript/sliced-pyramid/package.json +1 -1
- package/examples/typescript/stock-chart/package.json +1 -1
- package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
- package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
- package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
- package/examples/typescript/stock-chart-intraday/package.json +1 -1
- package/examples/typescript/stock-chart-live/package.json +1 -1
- package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
- package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
- package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
- package/examples/typescript/timeline-spiral-chart/package.json +1 -1
- package/examples/typescript/venn-diagram/package.json +1 -1
- package/examples/typescript/wordcloud-with-data/package.json +1 -1
- package/examples/typescript/wordcloud-with-text/package.json +1 -1
- package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
- package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
- package/examples/typescript/xy-bubble/package.json +1 -1
- package/examples/typescript/xy-candlestick/package.json +1 -1
- package/examples/typescript/xy-clustered-column/package.json +1 -1
- package/examples/typescript/xy-column/package.json +1 -1
- package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
- package/examples/typescript/xy-data-grouping/package.json +1 -1
- package/examples/typescript/xy-draggable-range/package.json +1 -1
- package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
- package/examples/typescript/xy-dumbbell plot/package.json +1 -1
- package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
- package/examples/typescript/xy-line/package.json +1 -1
- package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
- package/examples/typescript/xy-live-data/package.json +1 -1
- package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
- package/examples/typescript/xy-ohlc/package.json +1 -1
- package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
- package/examples/typescript/xy-smoothed-line/package.json +1 -1
- package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
- package/examples/typescript/xy-stacked-column/package.json +1 -1
- package/examples/typescript/xy-stacked-step/package.json +1 -1
- package/examples/typescript/xy-stock/package.json +1 -1
- package/examples/typescript/xy-stock-comparing/package.json +1 -1
- package/package.json +4 -4
- package/plugins/json.d.ts +1 -0
- package/plugins/json.d.ts.map +1 -1
- package/plugins/json.js +1 -0
- package/plugins/json.js.map +1 -1
|
@@ -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\";\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\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 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\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\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 (entity instanceof Container) {\n\t\tif (parsed.children) {\n\t\t\tparsed.children.forEach((child) => {\n\t\t\t\tif (child.index == null) {\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\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\tconst promise = classes[name as keyof IClasses];\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 parseAsyncObject(object: object): Promise<void> {\n\t\tawait Promise.all($array.map($object.keys(object), (key) => this.parseAsync(object[key])));\n\t}\n\n\tasync parseAsyncSettings(object: object): Promise<void> {\n\t\tawait Promise.all($array.map($object.keys(object), (key) => this.parseAsyncSetting(key, object[key])));\n\t}\n\n\tasync parseAsyncSetting(key: string, value: unknown): Promise<void> {\n\t\tif (key !== \"geoJSON\") {\n\t\t\tawait this.parseAsync(value);\n\t\t}\n\t}\n\n\tasync parseAsyncRefs(refs: Array<object> | object): Promise<void> {\n\t\tif ($type.isArray(refs)) {\n\t\t\tawait Promise.all($array.map(refs, (x) => this.parseAsyncRefs(x)));\n\n\t\t} else {\n\t\t\tawait this.parseAsyncObject(refs);\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 (value.type === \"Color\" || value.type === \"Percent\") {\n\t\t\t\t// Do nothing\n\n\t\t\t} else if (value.type === \"Template\") {\n\t\t\t\tawait Promise.all([\n\t\t\t\t\t(value.refs ? this.parseAsyncRefs(value.refs) : Promise.resolve(undefined)),\n\t\t\t\t\t(value.settings ? this.parseAsyncObject(value.settings) : Promise.resolve(undefined)),\n\t\t\t\t]);\n\n\t\t\t} else if (value.__parse === true) {\n\t\t\t\tawait this.parseAsyncObject(value);\n\n\t\t\t} else if (value.__parse !== false) {\n\t\t\t\tawait Promise.all([\n\t\t\t\t\t(value.type ? this.cacheClass(value.type) : Promise.resolve(undefined)),\n\t\t\t\t\t(value.refs ? this.parseAsyncRefs(value.refs) : Promise.resolve(undefined)),\n\t\t\t\t\t(value.settings ? this.parseAsyncSettings(value.settings) : Promise.resolve(undefined)),\n\t\t\t\t\t(value.properties ? this.parseAsyncObject(value.properties) : Promise.resolve(undefined)),\n\t\t\t\t\t(value.children ? this.parseAsyncArray(value.children) : Promise.resolve(undefined)),\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\tcase \"horizontal\":\n\t\t\t\treturn root.horizontalLayout;\n\t\t\tcase \"vertical\":\n\t\t\t\treturn root.verticalLayout;\n\t\t\tcase \"grid\":\n\t\t\t\treturn root.gridLayout;\n\t\t\t}\n\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\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\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\t$array.each(parsed.value, (value) => {\n\t\t\t\t\t\t\t\t\t(old as any).push(value);\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// 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// 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 {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n\n\tparseRefsObject(root: Root, object: { [key: string]: any }, refs: Array<IRef>): IRef {\n\t\tconst newRefs: IRef = {};\n\n\t\t$array.each($object.keys(object), (key) => {\n\t\t\tnewRefs[\"#\" + key] = this.parse(root, object[key], refs);\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\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: value.adapters,\n\t\t\tchildren,\n\t\t\tproperties,\n\t\t\tindex,\n\t\t\tvalue,\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 (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\tif (value.refs) {\n\t\t\t\t\trefs = this.parseRefs(root, value.refs, refs);\n\t\t\t\t}\n\n\t\t\t\tconst settings = (value.settings ? this.parseSettings(root, value.settings, refs) : {});\n\n\t\t\t\treturn {\n\t\t\t\t\tisValue: true,\n\t\t\t\t\tvalue: Template.new(settings),\n\t\t\t\t};\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>): E | object {\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}"]}
|
|
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\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\t// Apply settings to data item\n\t\t\t\tmergeExisting(axisDataItem, parsed);\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// 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"]}
|
|
@@ -24,7 +24,7 @@ export interface ISerializerSettings extends IEntitySettings {
|
|
|
24
24
|
* An array of properties to include in the serialized data.
|
|
25
25
|
*
|
|
26
26
|
* @ignore
|
|
27
|
-
* @
|
|
27
|
+
* @since 5.15.0
|
|
28
28
|
*/
|
|
29
29
|
includeProperties?: Array<string>;
|
|
30
30
|
/**
|
|
@@ -33,6 +33,35 @@ export interface ISerializerSettings extends IEntitySettings {
|
|
|
33
33
|
* @default 2
|
|
34
34
|
*/
|
|
35
35
|
maxDepth?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Include states in the output.
|
|
38
|
+
*
|
|
39
|
+
* @default false
|
|
40
|
+
* @since 5.15.0
|
|
41
|
+
*/
|
|
42
|
+
includeStates?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Include adapters in the output.
|
|
45
|
+
*
|
|
46
|
+
* @default false
|
|
47
|
+
* @since 5.15.0
|
|
48
|
+
*/
|
|
49
|
+
includeAdapters?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Include events in the output.
|
|
52
|
+
*
|
|
53
|
+
* @since 5.15.0
|
|
54
|
+
* @default false
|
|
55
|
+
* @todo implement
|
|
56
|
+
* @ignore
|
|
57
|
+
*/
|
|
58
|
+
includeEvents?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Serialize functions as strings or functions.
|
|
61
|
+
*
|
|
62
|
+
* @default "function"
|
|
63
|
+
*/
|
|
64
|
+
functionsAs?: "string" | "function";
|
|
36
65
|
}
|
|
37
66
|
export interface ISerializerPrivate extends IEntityPrivate {
|
|
38
67
|
}
|
|
@@ -57,11 +86,16 @@ export declare class Serializer extends Entity {
|
|
|
57
86
|
/**
|
|
58
87
|
* Serializes target object into a simple object or JSON string.
|
|
59
88
|
*
|
|
60
|
-
* @param source
|
|
61
|
-
* @param depth
|
|
62
|
-
* @param full
|
|
63
|
-
* @
|
|
89
|
+
* @param source Target object
|
|
90
|
+
* @param depth Current depth
|
|
91
|
+
* @param full Serialize object in full (ignoring maxDepth)
|
|
92
|
+
* @param forceParse If true, will add __parse to serialized objects
|
|
93
|
+
* @return Serialized data
|
|
64
94
|
*/
|
|
65
|
-
serialize(source: unknown, depth?: number, full?: boolean): unknown;
|
|
95
|
+
serialize(source: unknown, depth?: number, full?: boolean, forceParse?: boolean): unknown;
|
|
96
|
+
private _processAdapters;
|
|
97
|
+
private _processStates;
|
|
98
|
+
private _filterSettings;
|
|
99
|
+
private _escapeRefs;
|
|
66
100
|
}
|
|
67
101
|
//# sourceMappingURL=Serializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAahG,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAE3D;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhC;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE7B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAEpC;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;CACzD;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;CACvD;AAGD;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,MAAM;IAErC,OAAc,SAAS,EAAE,MAAM,CAAgB;IAC/C,OAAc,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoD;IAE5E,SAAS,EAAE,mBAAmB,CAAC;IAC/B,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,OAAO,EAAE,iBAAiB,CAAC;IAE1C,SAAS,CAAC,KAAK,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAE/C;;;;;;;;OAQG;IACI,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAU,EAAE,IAAI,GAAE,OAAe,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO;IA0IjH,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;CAInB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Entity } from "../../core/util/Entity";
|
|
2
2
|
import { Component } from "../../core/render/Component";
|
|
3
3
|
import { Color } from "../../core/util/Color";
|
|
4
|
+
import { Gradient } from "../../core/render/gradients/Gradient";
|
|
4
5
|
import { Percent } from "../../core/util/Percent";
|
|
5
6
|
import { Template } from "../../core/util/Template";
|
|
6
7
|
import { ListData } from "../../core/util/Data";
|
|
@@ -27,12 +28,13 @@ export class Serializer extends Entity {
|
|
|
27
28
|
/**
|
|
28
29
|
* Serializes target object into a simple object or JSON string.
|
|
29
30
|
*
|
|
30
|
-
* @param source
|
|
31
|
-
* @param depth
|
|
32
|
-
* @param full
|
|
33
|
-
* @
|
|
31
|
+
* @param source Target object
|
|
32
|
+
* @param depth Current depth
|
|
33
|
+
* @param full Serialize object in full (ignoring maxDepth)
|
|
34
|
+
* @param forceParse If true, will add __parse to serialized objects
|
|
35
|
+
* @return Serialized data
|
|
34
36
|
*/
|
|
35
|
-
serialize(source, depth = 0, full = false) {
|
|
37
|
+
serialize(source, depth = 0, full = false, forceParse = false) {
|
|
36
38
|
if (depth > this.get("maxDepth", 2)) {
|
|
37
39
|
return undefined;
|
|
38
40
|
}
|
|
@@ -42,14 +44,14 @@ export class Serializer extends Entity {
|
|
|
42
44
|
if ($type.isArray(source)) {
|
|
43
45
|
const res = [];
|
|
44
46
|
$array.each(source, (arrval) => {
|
|
45
|
-
res.push(this.serialize(arrval, depth, full));
|
|
47
|
+
res.push(this.serialize(arrval, depth, full, forceParse));
|
|
46
48
|
});
|
|
47
49
|
return res;
|
|
48
50
|
}
|
|
49
51
|
else if (source instanceof ListData) {
|
|
50
52
|
const res = [];
|
|
51
53
|
$array.each(source.values, (arrval) => {
|
|
52
|
-
res.push(this.serialize(arrval, depth, full));
|
|
54
|
+
res.push(this.serialize(arrval, depth, full, forceParse));
|
|
53
55
|
});
|
|
54
56
|
return res;
|
|
55
57
|
}
|
|
@@ -59,17 +61,7 @@ export class Serializer extends Entity {
|
|
|
59
61
|
const fullSettings = this.get("fullSettings", []);
|
|
60
62
|
if (source instanceof Entity) {
|
|
61
63
|
res.type = source.className;
|
|
62
|
-
let settings = $object.keys(source._settings);
|
|
63
|
-
const includeSettings = this.get("includeSettings", []);
|
|
64
|
-
const excludeSettings = this.get("excludeSettings", []);
|
|
65
|
-
if (includeSettings.length) {
|
|
66
|
-
settings = includeSettings;
|
|
67
|
-
}
|
|
68
|
-
else if (excludeSettings.length) {
|
|
69
|
-
settings = settings.filter((value) => {
|
|
70
|
-
return excludeSettings.indexOf(value) === -1;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
64
|
+
let settings = this._filterSettings($object.keys(source._settings));
|
|
73
65
|
// Include only user settings
|
|
74
66
|
settings = settings.filter((value) => {
|
|
75
67
|
return source.isUserSetting(value);
|
|
@@ -80,26 +72,35 @@ export class Serializer extends Entity {
|
|
|
80
72
|
const settingValue = source.get(setting);
|
|
81
73
|
if (settingValue !== undefined) {
|
|
82
74
|
res.settings[setting] = this.serialize(settingValue, depth + 1, full || fullSettings.indexOf(setting) !== -1);
|
|
75
|
+
if (source instanceof Gradient && setting === "stops") {
|
|
76
|
+
res.settings[setting] = this.serialize(settingValue, 0, true);
|
|
77
|
+
}
|
|
83
78
|
}
|
|
84
79
|
});
|
|
85
80
|
}
|
|
81
|
+
this._processAdapters(source, res);
|
|
82
|
+
this._processStates(source, res);
|
|
86
83
|
}
|
|
87
84
|
else if (source instanceof Template) {
|
|
88
85
|
res.type = "Template";
|
|
89
|
-
let settings = $object.keys(source._settings);
|
|
86
|
+
let settings = this._filterSettings($object.keys(source._settings));
|
|
90
87
|
if (settings.length) {
|
|
91
88
|
res.settings = {};
|
|
92
89
|
$array.each(settings, (setting) => {
|
|
93
|
-
|
|
90
|
+
if (source._settings[setting] !== undefined) {
|
|
91
|
+
res.settings[setting] = this.serialize(source.get(setting), depth + 1, fullSettings.indexOf(setting) !== -1);
|
|
92
|
+
}
|
|
94
93
|
});
|
|
95
94
|
}
|
|
95
|
+
this._processAdapters(source, res);
|
|
96
|
+
this._processStates(source, res);
|
|
96
97
|
return res;
|
|
97
98
|
}
|
|
98
99
|
// Data
|
|
99
100
|
if (source instanceof Component) {
|
|
100
|
-
if (source.data.length) {
|
|
101
|
+
if (source.data.length && (this.get("excludeProperties") || []).indexOf("data") === -1) {
|
|
101
102
|
res.properties = {
|
|
102
|
-
data: this.serialize(source.data.values,
|
|
103
|
+
data: this.serialize(source.data.values, depth, true)
|
|
103
104
|
};
|
|
104
105
|
}
|
|
105
106
|
}
|
|
@@ -116,7 +117,10 @@ export class Serializer extends Entity {
|
|
|
116
117
|
value: source.percent
|
|
117
118
|
};
|
|
118
119
|
}
|
|
119
|
-
else if ($type.isString(source)
|
|
120
|
+
else if ($type.isString(source)) {
|
|
121
|
+
return this._escapeRefs(source);
|
|
122
|
+
}
|
|
123
|
+
else if ($type.isNumber(source)) {
|
|
120
124
|
return source;
|
|
121
125
|
}
|
|
122
126
|
else if ($type.isObject(source)) {
|
|
@@ -125,7 +129,27 @@ export class Serializer extends Entity {
|
|
|
125
129
|
const excludeProperties = this.get("excludeProperties", []);
|
|
126
130
|
$object.each(source, (key, value) => {
|
|
127
131
|
if (excludeProperties.indexOf(key) === -1 && value !== undefined) {
|
|
128
|
-
res[key] = this.serialize(value, depth + 1, full);
|
|
132
|
+
res[key] = this.serialize(value, depth + 1, full, forceParse);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
if (forceParse) {
|
|
136
|
+
// Add only if there are objects
|
|
137
|
+
$object.each(res, (_key, value) => {
|
|
138
|
+
if ($type.isObject(value)) {
|
|
139
|
+
res.__parse = true;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (am5object) {
|
|
145
|
+
const includeProperties = this.get("includeProperties", []);
|
|
146
|
+
$array.each(includeProperties, (key) => {
|
|
147
|
+
const value = source[key];
|
|
148
|
+
if (value !== undefined) {
|
|
149
|
+
if (res.properties === undefined) {
|
|
150
|
+
res.properties = {};
|
|
151
|
+
}
|
|
152
|
+
res.properties[key] = this.serialize(value, depth + 1, full, forceParse);
|
|
129
153
|
}
|
|
130
154
|
});
|
|
131
155
|
}
|
|
@@ -135,6 +159,55 @@ export class Serializer extends Entity {
|
|
|
135
159
|
}
|
|
136
160
|
return res;
|
|
137
161
|
}
|
|
162
|
+
_processAdapters(source, res) {
|
|
163
|
+
if (this.get("includeAdapters", false)) {
|
|
164
|
+
const asString = this.get("functionsAs", "string") == "string";
|
|
165
|
+
const callbacks = source.adapters._callbacks;
|
|
166
|
+
if (Object.keys(callbacks).length > 0) {
|
|
167
|
+
res.adapters = [];
|
|
168
|
+
$object.each(callbacks, (key, callbackList) => {
|
|
169
|
+
callbackList.forEach((callback) => {
|
|
170
|
+
res.adapters.push({
|
|
171
|
+
key: key,
|
|
172
|
+
callback: asString ? callback.toString() : callback
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
_processStates(source, res) {
|
|
180
|
+
if (this.get("includeStates", false)) {
|
|
181
|
+
const states = source.states._states;
|
|
182
|
+
if (Object.keys(states).length > 0) {
|
|
183
|
+
res.states = [];
|
|
184
|
+
$object.each(states, (key, state) => {
|
|
185
|
+
if (Object.keys(state._settings).length > 0) {
|
|
186
|
+
res.states.push({
|
|
187
|
+
key: key,
|
|
188
|
+
settings: this.serialize(state._settings, 0, true)
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
_filterSettings(settings) {
|
|
196
|
+
const includeSettings = this.get("includeSettings", []);
|
|
197
|
+
const excludeSettings = this.get("excludeSettings", []);
|
|
198
|
+
if (includeSettings.length) {
|
|
199
|
+
settings = includeSettings;
|
|
200
|
+
}
|
|
201
|
+
else if (excludeSettings.length) {
|
|
202
|
+
settings = settings.filter((value) => {
|
|
203
|
+
return excludeSettings.indexOf(value) === -1;
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return settings;
|
|
207
|
+
}
|
|
208
|
+
_escapeRefs(text) {
|
|
209
|
+
return text.replace(/^#/, '##').replace(/^@/, '@@');
|
|
210
|
+
}
|
|
138
211
|
}
|
|
139
212
|
Object.defineProperty(Serializer, "className", {
|
|
140
213
|
enumerable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Serializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Entity, IEntityEvents, IEntitySettings, IEntityPrivate } from \"../../core/util/Entity\";\nimport { Component } from \"../../core/render/Component\";\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\n\nexport interface ISerializerSettings extends IEntitySettings {\n\n\t/**\n\t * An array of settings to not include in the serialized data.\n\t */\n\texcludeSettings?: Array<string>;\n\n\t/**\n\t * An array of settings to include in the serialized data.\n\t */\n\tincludeSettings?: Array<string>;\n\n\t/**\n\t * Include full values of these settings.\n\t *\n\t * @since 6.4.3\n\t */\n\tfullSettings?: Array<string>;\n\n\t/**\n\t * An array of properties to not include in the serialized data.\n\t *\n\t * @since 5.3.2\n\t */\n\texcludeProperties?: Array<string>;\n\n\t/**\n\t * An array of properties to include in the serialized data.\n\t *\n\t * @ignore\n\t * @todo implement\n\t */\n\tincludeProperties?: Array<string>;\n\n\t/**\n\t * Maximum depth of recursion when traversing target object.\n\t *\n\t * @default 2\n\t */\n\tmaxDepth?: number;\n\n}\n\nexport interface ISerializerPrivate extends IEntityPrivate {\n}\n\nexport interface ISerializerEvents extends IEntityEvents {\n}\n\n\n/**\n * Provides functionality to serialize charts or individual elements into simple\n * objects or JSON.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/serializing/} for more info\n * @since 5.3.0\n */\nexport class Serializer extends Entity {\n\n\tpublic static className: string = \"Serializer\";\n\tpublic static classNames: Array<string> = Entity.classNames.concat([Serializer.className]);\n\n\tdeclare public _settings: ISerializerSettings;\n\tdeclare public _privateSettings: ISerializerPrivate;\n\tdeclare public _events: ISerializerEvents;\n\n\tprotected _refs: { [index: string]: any } = {};\n\n\t/**\n\t * Serializes target object into a simple object or JSON string.\n\t *\n\t * @param source Target object\n\t * @param depth Current depth\n\t * @param full Serialize object in full (ignoring maxDepth)\n\t * @return Serialized data\n\t */\n\tpublic serialize(source: unknown, depth: number = 0, full: boolean = false): unknown {\n\t\tif (depth > this.get(\"maxDepth\", 2)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (source === false || source === true) {\n\t\t\treturn source;\n\t\t}\n\n\t\tif ($type.isArray(source)) {\n\t\t\tconst res: any[] = [];\n\t\t\t$array.each(source, (arrval) => {\n\t\t\t\tres.push(this.serialize(arrval, depth, full));\n\t\t\t});\n\t\t\treturn res;\n\t\t}\n\t\telse if (source instanceof ListData) {\n\t\t\tconst res: any[] = [];\n\t\t\t$array.each(source.values, (arrval) => {\n\t\t\t\tres.push(this.serialize(arrval, depth, full));\n\t\t\t});\n\t\t\treturn res;\n\t\t}\n\t\tconst res: any = {};\n\n\t\tconst am5object = source instanceof Entity || source instanceof Template || source instanceof Color || source instanceof Percent ? true : false;\n\n\t\t// Process settings\n\t\tconst fullSettings: any = this.get(\"fullSettings\", []);\n\t\tif (source instanceof Entity) {\n\t\t\tres.type = source.className;\n\n\t\t\tlet settings: Array<string> = $object.keys(source._settings);\n\t\t\tconst includeSettings: Array<string> = this.get(\"includeSettings\", []);\n\t\t\tconst excludeSettings: Array<string> = this.get(\"excludeSettings\", []);\n\t\t\tif (includeSettings.length) {\n\t\t\t\tsettings = includeSettings;\n\t\t\t}\n\t\t\telse if (excludeSettings.length) {\n\t\t\t\tsettings = settings.filter((value) => {\n\t\t\t\t\treturn excludeSettings.indexOf(value) === -1;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Include only user settings\n\t\t\tsettings = settings.filter((value) => {\n\t\t\t\treturn source.isUserSetting(value as any);\n\t\t\t});\n\n\t\t\tif (settings.length) {\n\t\t\t\tres.settings = {};\n\t\t\t\t$array.each(settings, (setting) => {\n\t\t\t\t\tconst settingValue = (<any>source).get(setting);\n\t\t\t\t\tif (settingValue !== undefined) {\n\t\t\t\t\t\tres.settings[setting] = this.serialize(settingValue, depth + 1, full || fullSettings.indexOf(setting) !== -1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse if (source instanceof Template) {\n\t\t\tres.type = \"Template\";\n\t\t\tlet settings: Array<string> = $object.keys(source._settings);\n\t\t\tif (settings.length) {\n\t\t\t\tres.settings = {};\n\t\t\t\t$array.each(settings, (setting) => {\n\t\t\t\t\tres.settings[setting] = this.serialize((<any>source).get(setting), depth + 1, fullSettings.indexOf(setting) !== -1);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\t// Data\n\t\tif (source instanceof Component) {\n\t\t\tif (source.data.length) {\n\t\t\t\tres.properties = {\n\t\t\t\t\tdata: this.serialize(source.data.values, 1, true)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Process the rest\n\t\tif (source instanceof Color) {\n\t\t\treturn {\n\t\t\t\ttype: \"Color\",\n\t\t\t\tvalue: source.toCSSHex()\n\t\t\t};\n\t\t}\n\t\telse if (source instanceof Percent) {\n\t\t\treturn {\n\t\t\t\ttype: \"Percent\",\n\t\t\t\tvalue: source.percent\n\t\t\t};\n\t\t}\n\t\telse if ($type.isString(source) || $type.isNumber(source)) {\n\t\t\treturn source;\n\t\t}\n\t\telse if ($type.isObject(source)) {\n\t\t\t// TODO\n\t\t\tif (full && !am5object) {\n\t\t\t\tconst excludeProperties: Array<string> = this.get(\"excludeProperties\", []);\n\t\t\t\t$object.each(source, (key, value) => {\n\t\t\t\t\tif (excludeProperties.indexOf(key) === -1 && value !== undefined) {\n\t\t\t\t\t\tres[key] = this.serialize(value, depth + 1, full);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (depth == 0 && $object.keys(this._refs).length) {\n\t\t\tres.refs = this._refs;\n\t\t}\n\n\t\treturn res;\n\t}\n}"]}
|
|
1
|
+
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Serializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Entity, IEntityEvents, IEntitySettings, IEntityPrivate } from \"../../core/util/Entity\";\nimport { Component } from \"../../core/render/Component\";\nimport { Color } from \"../../core/util/Color\";\nimport { Gradient } from \"../../core/render/gradients/Gradient\";\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\n\nexport interface ISerializerSettings extends IEntitySettings {\n\n\t/**\n\t * An array of settings to not include in the serialized data.\n\t */\n\texcludeSettings?: Array<string>;\n\n\t/**\n\t * An array of settings to include in the serialized data.\n\t */\n\tincludeSettings?: Array<string>;\n\n\t/**\n\t * Include full values of these settings.\n\t *\n\t * @since 6.4.3\n\t */\n\tfullSettings?: Array<string>;\n\n\t/**\n\t * An array of properties to not include in the serialized data.\n\t *\n\t * @since 5.3.2\n\t */\n\texcludeProperties?: Array<string>;\n\n\t/**\n\t * An array of properties to include in the serialized data.\n\t *\n\t * @ignore\n\t * @since 5.15.0\n\t */\n\tincludeProperties?: Array<string>;\n\n\t/**\n\t * Maximum depth of recursion when traversing target object.\n\t *\n\t * @default 2\n\t */\n\tmaxDepth?: number;\n\n\t/**\n\t * Include states in the output.\n\t *\n\t * @default false\n\t * @since 5.15.0\n\t */\n\tincludeStates?: boolean;\n\n\t/**\n\t * Include adapters in the output.\n\t *\n\t * @default false\n\t * @since 5.15.0\n\t */\n\tincludeAdapters?: boolean;\n\n\t/**\n\t * Include events in the output.\n\t *\n\t * @since 5.15.0\n\t * @default false\n\t * @todo implement\n\t * @ignore\n\t */\n\tincludeEvents?: boolean;\n\n\t/**\n\t * Serialize functions as strings or functions.\n\t *\n\t * @default \"function\"\n\t */\n\tfunctionsAs?: \"string\" | \"function\";\n\n}\n\nexport interface ISerializerPrivate extends IEntityPrivate {\n}\n\nexport interface ISerializerEvents extends IEntityEvents {\n}\n\n\n/**\n * Provides functionality to serialize charts or individual elements into simple\n * objects or JSON.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/serializing/} for more info\n * @since 5.3.0\n */\nexport class Serializer extends Entity {\n\n\tpublic static className: string = \"Serializer\";\n\tpublic static classNames: Array<string> = Entity.classNames.concat([Serializer.className]);\n\n\tdeclare public _settings: ISerializerSettings;\n\tdeclare public _privateSettings: ISerializerPrivate;\n\tdeclare public _events: ISerializerEvents;\n\n\tprotected _refs: { [index: string]: any } = {};\n\n\t/**\n\t * Serializes target object into a simple object or JSON string.\n\t *\n\t * @param source Target object\n\t * @param depth Current depth\n\t * @param full Serialize object in full (ignoring maxDepth)\n\t * @param forceParse If true, will add __parse to serialized objects\n\t * @return Serialized data\n\t */\n\tpublic serialize(source: unknown, depth: number = 0, full: boolean = false, forceParse: boolean = false): unknown {\n\t\tif (depth > this.get(\"maxDepth\", 2)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (source === false || source === true) {\n\t\t\treturn source;\n\t\t}\n\n\t\tif ($type.isArray(source)) {\n\t\t\tconst res: any[] = [];\n\t\t\t$array.each(source, (arrval) => {\n\t\t\t\tres.push(this.serialize(arrval, depth, full, forceParse));\n\t\t\t});\n\t\t\treturn res;\n\t\t}\n\t\telse if (source instanceof ListData) {\n\t\t\tconst res: any[] = [];\n\t\t\t$array.each(source.values, (arrval) => {\n\t\t\t\tres.push(this.serialize(arrval, depth, full, forceParse));\n\t\t\t});\n\t\t\treturn res;\n\t\t}\n\t\tconst res: any = {};\n\n\t\tconst am5object = source instanceof Entity || source instanceof Template || source instanceof Color || source instanceof Percent ? true : false;\n\n\t\t// Process settings\n\t\tconst fullSettings: any = this.get(\"fullSettings\", []);\n\t\tif (source instanceof Entity) {\n\t\t\tres.type = source.className;\n\t\t\tlet settings: Array<string> = this._filterSettings($object.keys(source._settings));\n\n\t\t\t// Include only user settings\n\t\t\tsettings = settings.filter((value) => {\n\t\t\t\treturn source.isUserSetting(value as any);\n\t\t\t});\n\n\t\t\tif (settings.length) {\n\t\t\t\tres.settings = {};\n\t\t\t\t$array.each(settings, (setting) => {\n\t\t\t\t\tconst settingValue = (<any>source).get(setting);\n\t\t\t\t\tif (settingValue !== undefined) {\n\t\t\t\t\t\tres.settings[setting] = this.serialize(settingValue, depth + 1, full || fullSettings.indexOf(setting) !== -1);\n\t\t\t\t\t\tif (source instanceof Gradient && setting === \"stops\") {\n\t\t\t\t\t\t\tres.settings[setting] = this.serialize(settingValue, 0, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._processAdapters(source, res);\n\t\t\tthis._processStates(source, res);\n\t\t}\n\t\telse if (source instanceof Template) {\n\t\t\tres.type = \"Template\";\n\t\t\tlet settings: Array<string> = this._filterSettings($object.keys(source._settings));\n\t\t\tif (settings.length) {\n\t\t\t\tres.settings = {};\n\t\t\t\t$array.each(settings, (setting) => {\n\t\t\t\t\tif ((<any>source)._settings[setting] !== undefined) {\n\t\t\t\t\t\tres.settings[setting] = this.serialize((<any>source).get(setting), depth + 1, fullSettings.indexOf(setting) !== -1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._processAdapters(source, res);\n\t\t\tthis._processStates(source, res);\n\n\t\t\treturn res;\n\t\t}\n\n\t\t// Data\n\t\tif (source instanceof Component) {\n\t\t\tif (source.data.length && (this.get(\"excludeProperties\")! || []).indexOf(\"data\") === -1) {\n\t\t\t\tres.properties = {\n\t\t\t\t\tdata: this.serialize(source.data.values, depth, true)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Process the rest\n\t\tif (source instanceof Color) {\n\t\t\treturn {\n\t\t\t\ttype: \"Color\",\n\t\t\t\tvalue: source.toCSSHex()\n\t\t\t};\n\t\t}\n\t\telse if (source instanceof Percent) {\n\t\t\treturn {\n\t\t\t\ttype: \"Percent\",\n\t\t\t\tvalue: source.percent\n\t\t\t};\n\t\t}\n\t\telse if ($type.isString(source)) {\n\t\t\treturn this._escapeRefs(source);\n\t\t}\n\t\telse if ($type.isNumber(source)) {\n\t\t\treturn source;\n\t\t}\n\t\telse if ($type.isObject(source)) {\n\t\t\t// TODO\n\t\t\tif (full && !am5object) {\n\t\t\t\tconst excludeProperties: Array<string> = this.get(\"excludeProperties\", []);\n\t\t\t\t$object.each(source, (key, value) => {\n\t\t\t\t\tif (excludeProperties.indexOf(key) === -1 && value !== undefined) {\n\t\t\t\t\t\tres[key] = this.serialize(value, depth + 1, full, forceParse);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (forceParse) {\n\t\t\t\t\t// Add only if there are objects\n\t\t\t\t\t$object.each(res, (_key, value) => {\n\t\t\t\t\t\tif ($type.isObject(value)) {\n\t\t\t\t\t\t\tres.__parse = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (am5object) {\n\t\t\t\tconst includeProperties: Array<string> = this.get(\"includeProperties\", []);\n\t\t\t\t$array.each(includeProperties, (key) => {\n\n\t\t\t\t\tconst value: any = (source as any)[key];\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\tif (res.properties === undefined) {\n\t\t\t\t\t\t\tres.properties = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tres.properties[key] = this.serialize(value, depth + 1, full, forceParse);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (depth == 0 && $object.keys(this._refs).length) {\n\t\t\tres.refs = this._refs;\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tprivate _processAdapters(source: any, res: any) {\n\t\tif (this.get(\"includeAdapters\", false)) {\n\t\t\tconst asString = this.get(\"functionsAs\", \"string\") == \"string\";\n\t\t\tconst callbacks = source.adapters._callbacks;\n\t\t\tif (Object.keys(callbacks).length > 0) {\n\t\t\t\tres.adapters = [];\n\t\t\t\t$object.each(callbacks, (key, callbackList) => {\n\t\t\t\t\tcallbackList.forEach((callback: any) => {\n\t\t\t\t\t\tres.adapters.push({\n\t\t\t\t\t\t\tkey: key,\n\t\t\t\t\t\t\tcallback: asString ? callback.toString() : callback\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _processStates(source: any, res: any) {\n\t\tif (this.get(\"includeStates\", false)) {\n\t\t\tconst states = source.states._states;\n\t\t\tif (Object.keys(states).length > 0) {\n\t\t\t\tres.states = [];\n\t\t\t\t$object.each(states, (key: any, state: any) => {\n\t\t\t\t\tif (Object.keys(state._settings).length > 0) {\n\t\t\t\t\t\tres.states.push({\n\t\t\t\t\t\t\tkey: key,\n\t\t\t\t\t\t\tsettings: this.serialize(state._settings, 0, true)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _filterSettings(settings: any) {\n\t\tconst includeSettings: Array<string> = this.get(\"includeSettings\", []);\n\t\tconst excludeSettings: Array<string> = this.get(\"excludeSettings\", []);\n\t\tif (includeSettings.length) {\n\t\t\tsettings = includeSettings;\n\t\t}\n\t\telse if (excludeSettings.length) {\n\t\t\tsettings = settings.filter((value: any) => {\n\t\t\t\treturn excludeSettings.indexOf(value) === -1;\n\t\t\t});\n\t\t}\n\t\treturn settings;\n\t}\n\n\tprivate _escapeRefs(text: string): string {\n\t\treturn text.replace(/^#/, '##').replace(/^@/, '@@');\n\t}\n\n}\n"]}
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,43 @@ 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.15.0] - 2026-01-02
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- `updateData(data)` method added to `Component`. Updates existing data in the component without disposing old data items. If there are more data items than before, new ones will be created. If there are less, old ones will be removed.
|
|
12
|
+
- New class in JSON plugin: `ChartSerializer`. Allows serializing whole chart objects into a JSON. [More info](https://www.amcharts.com/docs/v5/concepts/serializing/chart-serializer/).
|
|
13
|
+
- New functionality in JSON parser: states, adapters, `templateField`, axis bullets, axis ranges. [More info](https://www.amcharts.com/docs/v5/concepts/serializing/).
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Stock indicators now use `updateData()` method which makes them work much faster when data is added or updated.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- `VolumeProfile` indicator was not showing value in legend when hovering columns (since last version).
|
|
20
|
+
- Axis range labels were being drawn in reverse order.
|
|
21
|
+
- Private setting `gridInterval` was not being set on `GaplessDateAxis`.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## [5.14.4] - 2025-11-06
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- Added `ariaLabel` setting to `ExportingMenu`.
|
|
28
|
+
- Added `autoDispose` (default: `false`) property to `Registry`. Set it to `true` to automatically dispose a `Root` element if it exists in the target container when a new `Root` element is being created.
|
|
29
|
+
- Added `exculdeFromAggregate` setting to `XYSeries`, mainly for performance. Use it to remove some data fields from calculation of their aggregate values. On a `StockChart` the setting is set to `["valueX"]`, since X values are not usually used in aggregates, but will save some processing time on large data sets.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- `date` tag added to `DateAxis`.
|
|
33
|
+
- `gapless` tag added to `GaplessDateAxis`.
|
|
34
|
+
- `turboMode` is now set to `true` on all `ColumnSeries`/`CandlestickSeries` by default on all `StockChart` indicator series.
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
- Performance improvements.
|
|
38
|
+
- `zoomable` set on axis to false was ignored by stock chart.
|
|
39
|
+
- Adding an arrow or icon to `StockChart` would dispatch a `"drawingadded"` event with wrong `drawingId`.
|
|
40
|
+
- Focus elements in a scrollable container were sometimes being highlighted incorrectly.
|
|
41
|
+
- `Container` method `scrollToChild()` was not working properly.
|
|
42
|
+
- `DateRangeSelector` was displaying selectable days incorrectly whith some of the locales.
|
|
43
|
+
|
|
44
|
+
|
|
8
45
|
## [5.14.3] - 2025-10-13
|
|
9
46
|
|
|
10
47
|
### Fixed
|